recode-3.7.15/0000755000175000017500000000000014766021056006620 5recode-3.7.15/build-aux/0000755000175000017500000000000014766021045010510 5recode-3.7.15/build-aux/bootstrap.in0000754000175000017500000023471014371673200013004 #! /bin/sh # Bootstrap an Autotooled package from checked-out sources. # Written by Gary V. Vaughan, 2010 # Inspired by a script written by Paul Eggert. # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2010-2019 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # You should place a copy of this script under version control in the # top-level directory of your project. The intent is that all # customization can be done with a `bootstrap.conf` file also maintained # in your version control. # Please report bugs or propose patches to: # ## ------ ## ## Usage. ## ## ------ ## # Most GNUish projects do not keep all of the generated Autotool # files under version control, but running all of the right tools # with the right arguments, in the correct order to regenerate # all of those files in readiness for configuration and building # can be surprisingly involved! Many projects have a 'bootstrap' # script under version control to invoke Autotools and perform # other assorted book-keeping with version numbers and the like. # # This bootstrap script aims to probe the configure.ac and top # Makefile.am of your project to automatically determine what # the correct ordering and arguments are and then run the tools for # you. In order to use it, you can generate an initial standalone # script with: # # gl/build-aux/inline-source gl/build-aux/bootstrap.in > bootstrap # # You should then store than script in version control for other # developers in you project. It will give you instructions about # how to keep it up to date if the sources change. # # See gl/doc/bootstrap.texi for documentation on how to write # a bootstrap.conf to customize it for your project's # idiosyncracies. ## ================================================================== ## ## ## ## DO NOT EDIT THIS FILE, CUSTOMIZE IT USING A BOOTSTRAP.CONF ## ## ## ## ================================================================== ## ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase denotes values stored in the environment. These # variables should generally be overridden by the user - however, we do # set them to 'true' in some parts of this script to prevent them being # called at the wrong time by other tools that we call ('autoreconf', # for example). # # We also allow 'LIBTOOLIZE', 'M4', 'SHA1SUM' and some others to be # overridden, and export the result for child processes, but they are # handled by the function 'func_find_tool' and not defaulted in this # section. : ${ACLOCAL="aclocal"} : ${AUTOCONF="autoconf"} : ${AUTOHEADER="autoheader"} : ${AUTOM4TE="autom4te"} : ${AUTOHEADER="autoheader"} : ${AUTOMAKE="automake"} : ${AUTOPOINT="autopoint"} : ${AUTORECONF="autoreconf"} : ${CMP="cmp"} : ${CONFIG_SHELL="/bin/sh"} : ${DIFF="diff"} : ${GIT="git"} : ${LN_S="ln -s"} : ${RM="rm"} export ACLOCAL export AUTOCONF export AUTOHEADER export AUTOM4TE export AUTOHEADER export AUTOMAKE export AUTOPOINT export AUTORECONF export CONFIG_SHELL ## -------------- ## ## Configuration. ## ## -------------- ## # A newline delimited list of triples of programs (that respond to # --version), the minimum version numbers required (or just '-' in the # version field if any version will be sufficient) and homepage URLs # to help locate missing packages. buildreq= # Name of a file containing instructions on installing missing packages # required in 'buildreq'. buildreq_readme=README-hacking # These are extracted from AC_INIT in configure.ac, though you can # override those values in 'bootstrap.conf' if you prefer. build_aux= macro_dir= package= package_name= package_version= package_bugreport= # These are extracted from 'gnulib-cache.m4', or else fall-back # automatically on the gnulib defaults; unless you set the values # manually in 'bootstrap.conf'. doc_base= gnulib_mk= gnulib_name= local_gl_path= source_base= tests_base= # The list of gnulib modules required at 'gnulib-tool' time. If you # check 'gnulib-cache.m4' into your repository, then this list will be # extracted automatically. gnulib_modules= # Extra gnulib files that are not in modules, which override files of # the same name installed by other bootstrap tools. gnulib_non_module_files=" build-aux/compile build-aux/install-sh build-aux/mdate-sh build-aux/texinfo.tex build-aux/depcomp build-aux/config.guess build-aux/config.sub doc/INSTALL " # Relative path to the local gnulib submodule, and url to the upstream # git repository. If you have a gnulib entry in your .gitmodules file, # these values are ignored. gnulib_path= gnulib_url= # Date from which to clone github, to avoid a full clone. gnulib_clone_since= # Additional gnulib-tool options to use. gnulib_tool_options=" --no-changelog " # bootstrap removes any macro-files that are not included by aclocal.m4, # except for files listed in this variable that are always kept. gnulib_precious=" gnulib-tool.m4 " # When truncating long commands for display, always allow at least this # many characters before truncating. min_cmd_len=160 # The command to download all .po files for a specified domain into # a specified directory. Fill in the first %s is the domain name, and # the second with the destination directory. Use rsync's -L and -r # options because the latest/%s directory and the .po files within are # all symlinks. po_download_command_format=\ "rsync --delete --exclude '*.s1' -Lrtvz \ 'translationproject.org::tp/latest/%s/' '%s'" # Other locale categories that need message catalogs. extra_locale_categories= # Additional xgettext options to use. Gnulib might provide you with an # extensive list of additional options to append to this, but gettext # 0.16.1 and newer appends them automaticaly, so you can safely ignore # the complaints from 'gnulib-tool' if your $configure_ac states: # # AM_GNU_GETTEXT_VERSION([0.16.1]) xgettext_options=" --flag=_:1:pass-c-format --flag=N_:1:pass-c-format " # Package copyright holder for gettext files. Defaults to FSF if unset. copyright_holder= # File that should exist in the top directory of a checked out hierarchy, # but not in a distribution tarball. checkout_only_file= # Whether to use copies instead of symlinks by default (if set to true, # the --copy option has no effect). copy=false # Set this to ".cvsignore .gitignore" in 'bootstrap.conf' if you want # those files to be generated in directories like 'lib/', 'm4/', and 'po/', # or set it to "auto" to make this script select what to use based # on what version control system (if any) is used in the source directory. # Or set it to "none" to ignore VCS ignore files entirely. Default is # "auto". vc_ignore= ## ------------------- ## ## External Libraries. ## ## ------------------- ## # Source required external libraries: . `echo "$0" |${SED-sed} 's|[^/]*$||'`"funclib.sh" . `echo "$0" |${SED-sed} 's|[^/]*$||'`"options-parser" . `echo "$0" |${SED-sed} 's|[^/]*$||'`"extract-trace" # Set a version string for *this* script. scriptversion=2019-03-22.11; # UTC ## ------------------- ## ## Hookable functions. ## ## ------------------- ## # After 'bootstrap.conf' has been sourced, execution proceeds by calling # 'func_bootstrap'. Wherever a function is decorated with # 'func_hookable func_name', you will find a matching 'func_run_hooks # func_name', which executes all functions added with 'func_add_hook # func_name my_func'. # # You might notice that many of these functions begin with a series of # '$require_foo' lines. See the docu-comments at the start of the # 'Resource management' section for a description of what these are. # func_bootstrap [ARG]... # ----------------------- # All the functions called inside func_bootstrap are hookable. See the # the individual implementations for details. func_bootstrap () { $debug_cmd # Save the current positional parameters to prevent them being # corrupted by calls to 'set' in 'func_init'. func_quote eval ${1+"$@"} _G_saved_positional_parameters=$func_quote_result # Initialisation. func_init # Option processing. eval func_options "$_G_saved_positional_parameters" # Post-option preparation. func_prep # Reconfigure the package. func_reconfigure # Ensure .version is up-to-date. func_update_dotversion # Finalisation. func_fini } # func_init # --------- # Any early initialisations can be hooked to this function. Consider # whether you can hook onto 'func_prep' instead, because if you hook # any slow to execute code in here, it will also add to the time before # './bootstrap --version' can respond. func_hookable func_init func_init () { $debug_cmd func_run_hooks func_init } # func_prep # --------- # Function to perform preparation for remaining bootstrap process. If # your hooked code relies on the outcome of 'func_options' hook it here # rather than to 'func_init'. # # All the functions called inside func_prep are hookable. See the # individual implementations for details. func_hookable func_prep func_prep () { $debug_cmd $require_buildtools_uptodate $require_checkout_only_file $require_gnulib_merge_changelog # Report the results of SED and GREP searches from funclib.sh. func_verbose "GREP='$GREP'" func_verbose "SED='$SED'" # fetch update files from the translation project func_update_translations func_run_hooks func_prep } # func_update_translations # ------------------------ # Update package po files and translations. func_hookable func_update_translations func_update_translations () { $debug_cmd $opt_skip_po || { test -d po && { $require_package func_update_po_files po $package || exit $? } func_run_hooks func_update_translations } } # func_reconfigure # ---------------- # Reconfigure the current package by running the appropriate autotools in a # suitable order. func_hookable func_reconfigure func_reconfigure () { $debug_cmd $require_automake_options # Automake (without 'foreign' option) requires that NEWS & README exist. case " $automake_options " in " foreign ") ;; *) func_ensure_NEWS func_ensure_README ;; esac # Ensure ChangeLog presence. if test -n "$gnulib_modules"; then func_ifcontains "$gnulib_modules" gitlog-to-changelog \ func_ensure_changelog else $require_gnulib_cache if $SED -n '/^gl_MODULES(\[/,/^])$/p' $gnulib_cache 2>/dev/null | func_grep_q gitlog-to-changelog then func_ensure_changelog fi fi # Released 'autopoint' has the tendency to install macros that have # been obsoleted in current 'gnulib', so run this before 'gnulib-tool'. func_autopoint # Autoreconf runs 'aclocal' before 'libtoolize', which causes spurious # warnings if the initial 'aclocal' is confused by the libtoolized # (or worse: out-of-date) macro directory. func_libtoolize # If you need to do anything after 'gnulib-tool' is done, but before # 'autoreconf' runs, you don't need to override this whole function, # because 'func_gnulib_tool' is hookable. func_gnulib_tool func_autoreconf func_run_hooks func_reconfigure } # func_gnulib_tool # ---------------- # Run 'gnulib-tool' to fetch gnulib modules into the current package. # # It's assumed that since you are using gnulib's 'bootstrap' script, # you're also using gnulib elsewhere in your package. If not, then # you can replace this function in 'bootstrap.conf' with: # # func_gnulib_tool () { :; } # # (although the function returns immediately if $gnulib_tool is set to # true in any case). func_hookable func_gnulib_tool func_gnulib_tool () { $debug_cmd $require_gnulib_tool $require_libtoolize test true = "$gnulib_tool" || { $require_gnulib_git_submodules # bootstrap.conf written for gnulib bootstrap expects # gnulib_tool_option_extras to which --no-changelog is appended, # but libtool bootstrap expects you to append to gnulib_tool_options # so that you can override the --no-changelog default: make sure we # support both styles so users can migrate between them easily. gnulib_tool_all_options="$gnulib_tool_options $gnulib_tool_option_extras" if test -n "$gnulib_modules"; then $require_gnulib_cache $require_gnulib_tool_base_options gnulib_mode=--import # Try not to pick up any stale values from 'gnulib-cache.m4'. rm -f "$gnulib_cache" test -n "$gnulib_tool_base_options" \ && func_append_uniq gnulib_tool_all_options " $gnulib_tool_base_options" test -n "$gnulib_mk" \ && func_append_uniq gnulib_tool_all_options " --makefile-name=$gnulib_mk" test -n "$tests_base" && { func_append_uniq gnulib_tool_all_options " --tests-base=$tests_base" func_append_uniq gnulib_tool_all_options " --with-tests" } else # 'gnulib_modules' and others are cached in 'gnulib-cache.m4': # Use 'gnulib --update' to fetch gnulib modules. gnulib_mode=--update fi # Add a sensible default libtool option to gnulib_tool_options. # The embedded echo is to squash whitespace before globbing. case `echo " "$gnulib_tool_all_options" "` in *" --no-libtool "*|*" --libtool "*) ;; *) if test true = "$LIBTOOLIZE"; then func_append_uniq gnulib_tool_all_options " --no-libtool" else func_append_uniq gnulib_tool_all_options " --libtool" fi ;; esac $opt_copy || func_append_uniq gnulib_tool_all_options " --symlink" func_append_uniq gnulib_tool_all_options " $gnulib_mode" func_append gnulib_tool_all_options " $gnulib_modules" # The embedded echo is to squash whitespace before display. gnulib_cmd=`echo $gnulib_tool $gnulib_tool_all_options` func_show_eval "$gnulib_cmd" 'exit $?' # Use 'gnulib-tool --copy-file' to install non-module files. func_install_gnulib_non_module_files } func_run_hooks func_gnulib_tool } # func_fini # --------- # Function to perform all finalisation for the bootstrap process. func_hookable func_fini func_fini () { $debug_cmd func_gettext_configuration func_clean_dangling_symlinks func_clean_unused_macros func_skip_po_recommendation func_run_hooks func_fini $require_bootstrap_uptodate func_echo "Done. Now you can run './configure'." } # func_gettext_configuration # -------------------------- # Edit configuration values into po/Makevars. func_hookable func_gettext_configuration func_gettext_configuration () { $debug_cmd $require_autopoint test true = "$AUTOPOINT" || { $require_copyright_holder $require_extra_locale_categories $require_package_bugreport # Escape xgettext options for sed Makevars generation below. # We have to delete blank lines in a separate script so that we don't # append \\\ to the penultimate line, and then delete the last empty # line, which messes up the variable substitution later in this # function. Note that adding a literal \\\ requires double escaping # here, once for the execution subshell, and again for the assignment, # which is why there are actually 12 (!!) backslashes in the script. _G_xgettext_options=`echo "$xgettext_options$nl" |$SED '/^$/d' |$SED ' $b s|$| \\\\\\\\\\\\|'` # Create gettext configuration. func_echo "Creating po/Makevars from po/Makevars.template ..." $RM -f po/Makevars $SED ' /^EXTRA_LOCALE_CATEGORIES *=/s|=.*|= '"$extra_locale_categories"'| /^COPYRIGHT_HOLDER *=/s|=.*|= '"$copyright_holder"'| /^MSGID_BUGS_ADDRESS *=/s|=.*|= '"$package_bugreport"'| /^XGETTEXT_OPTIONS *=/{ s|$| \\| a\ '"$_G_xgettext_options"' \\\ $${end_of_xgettext_options+} } s/ *$// ' po/Makevars.template >po/Makevars || exit 1 } func_run_hooks func_gettext_configuration } ## --------------- ## ## Core functions. ## ## --------------- ## # This section contains the main functions called from the 'Hookable # functions' (shown above), and are the ones you're most likely # to want to replace with your own implementations in 'bootstrap.conf'. # func_autopoint # -------------- # If this package uses gettext, then run 'autopoint'. func_autopoint () { $debug_cmd $require_autopoint test true = "$AUTOPOINT" \ || func_show_eval "$AUTOPOINT --force" 'exit $?' } # func_libtoolize # --------------- # If this package uses libtool, then run 'libtoolize'. func_libtoolize () { $debug_cmd $require_libtoolize test true = "$LIBTOOLIZE" || { _G_libtoolize_options= $opt_copy && func_append _G_libtoolize_options " --copy" $opt_force && func_append _G_libtoolize_options " --force" $opt_verbose || func_append _G_libtoolize_options " --quiet" func_show_eval "$LIBTOOLIZE$_G_libtoolize_options" 'exit $?' } } # func_gnulib_tool_copy_file SRC DEST # ----------------------------------- # Copy SRC, a path relative to the gnulib sub-tree, to DEST, a path # relative to the top-level source directory using gnulib-tool so that # any patches or replacements in $local_gl_path are applied. func_gnulib_tool_copy_file () { $debug_cmd $require_gnulib_tool $require_patch if test true = "$gnulib_tool"; then # If gnulib-tool is not available (e.g. bootstrapping in a # distribution tarball), make sure that at least we have some # version of the required file already in place. test -f "$2" || func_fatal_error "\ Can't find, copy or download '$2', a required gnulib supplied file, please provide the location of a complete 'gnulib' tree by setting 'gnulib_path' in your 'bootstrap.conf' or with the '--gnulib-srcdir' option - or else specify the location of your 'git' binary by setting 'GIT' in the environment so that a fresh 'gnulib' submodule can be cloned." else $require_gnulib_copy_cmd $gnulib_copy_cmd $1 $2 2>/dev/null || { $require_gnulib_path func_error "'$gnulib_path/$1' does not exist" return 1 } fi } # func_install_gnulib_non_module_files # ------------------------------------ # Get additional non-module files from gnulib, overriding existing files. func_install_gnulib_non_module_files () { $debug_cmd $require_build_aux $require_gnulib_tool test -n "$gnulib_non_module_files" && { maybe_exit_cmd=: for file in $gnulib_non_module_files; do case $file in */COPYING*) dest=COPYING;; */INSTALL) dest=INSTALL;; build-aux/missing) dest= func_warning settings "\ Please remove build-aux/missing from gnulib_module_files in 'bootstrap.conf', as it may clash with Automake's version." ;; build-aux/*) dest=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;; *) dest=$file;; esac # Be sure to show all copying errors before bailing out test -z "$dest" \ || func_gnulib_tool_copy_file "$file" "$dest" \ || maybe_exit_cmd="exit $EXIT_FAILURE" done $maybe_exit_cmd } } # func_ensure_changelog # --------------------- # Even with 'gitlog-to-changelog' generated ChangeLogs, automake # will not run to completion with no ChangeLog file. func_ensure_changelog () { $debug_cmd test -f ChangeLog && mv -f ChangeLog ChangeLog~ cat >ChangeLog <<'EOT' ## ---------------------- ## ## DO NOT EDIT THIS FILE! ## ## ---------------------- ## ChangeLog is generated by gitlog-to-changelog. EOT _G_message="creating dummy 'ChangeLog'" test -f ChangeLog~ \ && func_append _G_message ' (backup in ChangeLog~)' func_verbose "$_G_message" return 0 } # func_ensure_NEWS # ---------------- # Without AM_INIT_AUTOMAKE([foreign]), automake will not run to # completion with no NEWS file, even though NEWS.md or NEWS.txt # is often preferable. func_ensure_NEWS () { $debug_cmd test -f NEWS || { _G_NEWS= for _G_news in NEWS.txt NEWS.md NEWS.rst; do test -f "$_G_news" && break done test -f "$_G_news" && $LN_S $_G_news NEWS func_verbose "$LN_S $_G_news NEWS" } return 0 } # func_ensure_README # ------------------ # Without AM_INIT_AUTOMAKE([foreign]), automake will not run to # completion with no README file, even though README.md or README.txt # is often preferable. func_ensure_README () { $debug_cmd test -f README || { _G_README= for _G_readme in README.txt README.md README.rst; do test -f "$_G_readme" && break done test -f "$_G_readme" && $LN_S $_G_readme README func_verbose "$LN_S $_G_readme README" } return 0 } # func_autoreconf [SUBDIR] # ------------------------ # Being careful not to re-run 'autopoint' or 'libtoolize', and not to # try to run 'autopoint', 'libtoolize' or 'autoheader' on packages that # don't use them, defer to 'autoreconf' for execution of the remaining # autotools to bootstrap this package. # # Projects with multiple trees to reconfigure can hook another call to # this function onto func_reconfigure: # # my_autoreconf_foo () # { # func_autoreconf foo # } # func_add_hook func_reconfigure my_autoreconf_foo func_autoreconf () { $debug_cmd $require_autoheader $require_build_aux # automake and others put files in here $require_macro_dir # aclocal and others put files in here # We ran these manually already, and autoreconf won't exec ':' save_AUTOPOINT=$AUTOPOINT; AUTOPOINT=true save_LIBTOOLIZE=$LIBTOOLIZE; LIBTOOLIZE=true _G_autoreconf_options= $opt_copy || func_append _G_autoreconf_options " --symlink" $opt_force && func_append _G_autoreconf_options " --force" $opt_verbose && func_append _G_autoreconf_options " --verbose" func_show_eval "$AUTORECONF$_G_autoreconf_options --install${1+ $1}" 'exit $?' AUTOPOINT=$save_AUTOPOINT LIBTOOLIZE=$save_LIBTOOLIZE } # func_check_configuration VARNAME [CONFIGURE_MACRO] # -------------------------------------------------- # Exit with a suitable diagnostic for an important configuration change # that needs to be made before bootstrap can run correctly. func_check_configuration () { $debug_cmd $require_configure_ac eval 'test -n "$'$1'"' || { _G_error_msg="please set '$1' in 'bootstrap.conf'" if test -n "$configure_ac" && test -n "$2"; then func_append _G_error_msg " or add the following (or similar) to your '$configure_ac': $2" fi func_fatal_error "$_G_error_msg" } } # func_clean_dangling_symlinks # ---------------------------- # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some # gnulib-populated directories. Such .m4 files would cause aclocal to # fail. The following requires GNU find 4.2.3 or newer. Considering # the usual portability constraints of this script, that may seem a very # demanding requirement, but it should be ok. Ignore any failure, # which is fine, since this is only a convenience to help developers # avoid the relatively unusual case where a symlinked-to .m4 file is # git-removed from gnulib between successive runs of this script. func_clean_dangling_symlinks () { $debug_cmd $require_macro_dir $require_source_base func_verbose "cleaning dangling symlinks" find "$macro_dir" "$source_base" \ -depth \( -name '*.m4' -o -name '*.[ch]' \) \ -type l -xtype l -delete > /dev/null 2>&1 } # func_clean_unused_macros # ------------------------ # Autopoint can result in over-zealously adding macros into $macro_dir # even though they are not actually used, for example tests to help # build the 'intl' directory even though you have specified # 'AM_GNU_GETTEXT([external])' in your configure.ac. This function # looks removes any macro files that can be found in gnulib, but # are not 'm4_include'd by 'aclocal.m4'. func_clean_unused_macros () { $debug_cmd $require_gnulib_path $require_macro_dir test -n "$gnulib_path" && test -f aclocal.m4 && { aclocal_m4s=`find . -name aclocal.m4 -print` # We use 'ls|grep' instead of 'ls *.m4' to avoid exceeding # command line length limits in some shells. for file in `cd "$macro_dir" && ls -1 |$GREP '\.m4$'`; do # Remove a macro file when aclocal.m4 does not m4_include it... func_grep_q 'm4_include([[]'$macro_dir/$file'])' $aclocal_m4s \ || test ! -f "$gnulib_path/m4/$file" || { # ...and there is an identical file in gnulib... if func_cmp_s "$gnulib_path/m4/$file" "$macro_dir/$file"; then # ...and it's not in the precious list ('echo' is needed # here to squash whitespace for the match expression). case " "`echo $gnulib_precious`" " in *" $file "*) ;; *) rm -f "$macro_dir/$file" func_verbose \ "removing unused gnulib file '$macro_dir/$file'" esac fi } done } } # func_skip_po_recommendation # --------------------------- # If there is a po directory, and '--skip-po' wasn't passed, let the # user know that they can use '--skip-po' on subsequent invocations. func_skip_po_recommendation () { $debug_cmd test ! -d po \ || $opt_skip_po \ || func_warning recommend "\ If your pofiles are up-to-date, you can rerun bootstrap as '$progname --skip-po' to avoid redownloading." } # func_update_dotversion # ---------------------- # Even with 'gitlog-to-changelog' generated ChangeLogs, automake # will not run to completion with no ChangeLog file. func_update_dotversion () { $debug_cmd test -f "$build_aux/git-version-gen" && { _G_message="updating .version" test -f .version && { mv .version .version~ func_append _G_message " (backup in .version~)" } func_verbose "updating .version" $build_aux/git-version-gen dummy-arg > .version } } ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Where a variable already has a non- # empty value (as set by the package's 'bootstrap.conf'), that value is # used in preference to deriving the default. Call them using their # associated 'require_*' variable to ensure that they are executed, at # most, once. # require_gnulib_git_submodules # ----------------------------- # Initialize all git modules from $gnulib_git_submodules before we # run 'gnulib-tool'. require_gnulib_git_submodules=func_require_gnulib_git_submodules func_require_gnulib_git_submodules () { test -n "$gnulib_git_submodules" && { for _G_submodule in $gnulib_git_submodules do func_show_eval "git submodule init -- $_G_submodule" \ && func_show_eval "git submodule update -- $_G_submodule" \ || func_fatal_error "Unable to init git module '$_G_submodule'." done } require_gnulib_git_submodules=: } # require_checkout_only_file # -------------------------- # Bail out if this package only bootstraps properly from a repository # checkout. require_checkout_only_file=func_require_checkout_only_file func_require_checkout_only_file () { $debug_cmd $opt_force || { test -n "$checkout_only_file" && test ! -f "$checkout_only_file" \ && func_fatal_error "\ Bootstrapping from a non-checked-out distribution is risky. If you wish to bootstrap anyway, use the '--force' option." } require_checkout_only_file=: } # require_aclocal_amflags # ----------------------- # Ensure '$aclocal_amflags' has a sensible default, extracted from # 'Makefile.am' if necessary. require_aclocal_amflags=func_require_aclocal_amflags func_require_aclocal_amflags () { $debug_cmd $require_makefile_am _G_sed_extract_aclocal_amflags='s|#.*$|| /^[ ]*ACLOCAL_AMFLAGS[ ]*=/ { s|^.*=[ ]*\(.*\)|aclocal_amflags="\1"| p }' _G_aclocal_flags_cmd=`$SED -n "$_G_sed_extract_aclocal_amflags" \ "$makefile_am"` eval "$_G_aclocal_flags_cmd" func_verbose "ACLOCAL_AMFLAGS='$aclocal_amflags'" require_aclocal_amflags=: } # require_autoheader # ------------------ # Skip autoheader if it's not needed. require_autoheader=func_require_autoheader func_require_autoheader () { $debug_cmd test true = "$AUTOHEADER" || { func_extract_trace AC_CONFIG_HEADERS test -n "$func_extract_trace_result" \ || func_extract_trace AC_CONFIG_HEADER test -n "$func_extract_trace_result" || { AUTOHEADER=true func_verbose "export AUTOHEADER='$AUTOHEADER'" # Make sure the search result is visible to subshells export AUTOHEADER } } require_autoheader=: } # require_automake_options # ------------------------ # Extract options from AM_AUTOMAKE_INIT. require_automake_options=func_require_automake_options func_require_automake_options () { $debug_cmd func_extract_trace AM_INIT_AUTOMAKE automake_options=$func_extract_trace_result require_automake_options=: } # require_autopoint # ----------------- # Skip autopoint if it's not needed. require_autopoint=func_require_autopoint func_require_autopoint () { $debug_cmd test true = "$AUTOPOINT" || { func_extract_trace AM_GNU_GETTEXT_VERSION test -n "$func_extract_trace_result" || { AUTOPOINT=true func_verbose "export AUTOPOINT='$AUTOPOINT'" # Make sure the search result is visible to subshells export AUTOPOINT } } require_autopoint=: } # require_bootstrap_uptodate # -------------------------- # Complain if the version of bootstrap in the gnulib directory differs # from the one we are running. require_bootstrap_uptodate=func_require_bootstrap_uptodate func_require_bootstrap_uptodate () { $debug_cmd $require_build_aux _G_bootstrap_sources=" $build_aux/bootstrap.in $build_aux/extract-trace $build_aux/funclib.sh $build_aux/options-parser " _G_missing_bootstrap_sources=false for _G_src in $_G_bootstrap_sources; do test -f "$_G_src" || _G_missing_bootstrap_sources=: done if $_G_missing_bootstrap_sources; then func_warning upgrade "\ Please add bootstrap to your gnulib_modules list in 'bootstrap.conf', so that I can tell you when there are updates available." else rm -f bootstrap.new $build_aux/inline-source $build_aux/bootstrap.in > bootstrap.new if func_cmp_s "$progpath" bootstrap.new; then rm -f bootstrap.new func_verbose "bootstrap script up to date" else chmod 555 bootstrap.new func_warning upgrade "\ An updated bootstrap script has been generated for you in 'bootstrap.new'. After you've verified that you want the changes, you can update with: mv -f bootstrap.new $progname ./$progname Or you can disable this check permanently by adding the following to 'bootstrap.conf': require_bootstrap_uptodate=:" fi fi require_bootstrap_uptodate=: } # require_build_aux # ----------------- # Ensure that '$build_aux' is set, and if it doesn't already point to an # existing directory, create one. require_build_aux=func_require_build_aux func_require_build_aux () { $debug_cmd test -n "$build_aux" || { func_extract_trace_first AC_CONFIG_AUX_DIR build_aux=$func_extract_trace_first_result func_check_configuration build_aux \ "AC_CONFIG_AUX_DIR([name of a directory for build scripts])" func_verbose "build_aux='$build_aux'" } $require_vc_ignore_files # If the build_aux directory doesn't exist, create it now, and mark it # as ignored for the VCS. if test ! -d "$build_aux"; then func_show_eval "mkdir '$build_aux'" test -n "$vc_ignore_files" \ || func_insert_if_absent "$build_aux" $vc_ignore_files fi require_build_aux=: } # require_buildreq_autobuild # -------------------------- # Try to find whether the bootstrap requires autobuild. require_buildreq_autobuild=func_require_buildreq_autobuild func_require_buildreq_autobuild () { $debug_cmd $require_macro_dir test -f "$macro_dir/autobuild.m4" \ || printf '%s\n' "$buildreq" |func_grep_q '^[ ]*autobuild' \ || { func_extract_trace AB_INIT test -n "$func_extract_trace_result" && { func_append buildreq 'autobuild - http://josefsson.org/autobuild/ ' func_verbose "auto-adding 'autobuild' to build requirements" } } require_buildreq_autobuild=: } # require_buildreq_autoconf # require_buildreq_autopoint # require_buildreq_libtoolize # --------------------------- # Try to find the minimum compatible version of autoconf/libtool # required to bootstrap successfully, and add it to '$buildreq'. for tool in autoconf libtoolize autopoint; do b=$tool v=require_buildreq_${tool} f=func_$v case $tool in autoconf) m=AC_PREREQ ;; libtoolize) m=LT_PREREQ; b=libtool ;; autopoint) m=AM_GNU_GETTEXT_VERSION b=gettext ;; esac eval $v'='$f' '$f' () { $debug_cmd # The following is ignored if undefined, but might be necessary # in order for `func_find_tool` to run. ${require_'$tool'-:} printf '\''%s\n'\'' "$buildreq" |func_grep_q '\''^[ ]*'$tool\'' || { func_extract_trace '$m' _G_version=$func_extract_trace_result test -n "$_G_version" && { func_append buildreq "\ '$tool' $_G_version http://www.gnu.org/s/'$b' " func_verbose \ "auto-adding '\'$tool'-$_G_version'\'' to build requirements" } } '$v'=: } ' done # require_buildreq_automake # ------------------------- # Try to find the minimum compatible version of automake required to # bootstrap successfully, and add it to '$buildreq'. require_buildreq_automake=func_require_buildreq_automake func_require_buildreq_automake () { $debug_cmd # if automake is not already listed in $buildreq... printf '%s\n' "$buildreq" |func_grep_q automake || { func_extract_trace AM_INIT_AUTOMAKE # ...and AM_INIT_AUTOMAKE is declared... test -n "$func_extract_trace_result" && { automake_version=`$ECHO "$func_extract_trace_result" \ |$SED -e 's|[^0-9]*||' -e 's| .*$||'` test -n "$automake_version" || automake_version=- func_append buildreq "\ automake $automake_version http://www.gnu.org/s/automake " func_verbose \ "auto-adding 'automake-$automake_version' to build requirements" } } require_buildreq_automake=: } # require_buildreq_patch # ---------------------- # Automatically add a patch build-requirement if there are diff files # in $local_gl_path. require_buildreq_patch=func_require_buildreq_patch func_require_buildreq_patch () { $debug_cmd $require_local_gl_path # This ensures PATCH is set appropriately by the time # func_check_versions enforces $buildreq. $require_patch # If patch is not already listed in $buildreq... printf '%s\n' "$buildreq" |func_grep_q '^[ ]*patch' || { eval "set dummy $local_gl_path_quoted" ; shift for _G_dir do # The ugly find invocation is necessary to exit with non-zero # status for old find binaries that don't support -exec fully. if test ! -d "$_G_dir" \ || find "$_G_dir" -name "*.diff" -exec false {} \; ; then : else func_append buildreq "patch - http://www.gnu.org/s/patch$nl" break fi done } require_buildreq_patch=: } # require_buildtools_uptodate # --------------------------- # Ensure all the packages listed in BUILDREQS are available on the build # machine at the minimum versions or better. require_buildtools_uptodate=func_require_buildtools_uptodate func_require_buildtools_uptodate () { $debug_cmd $require_buildreq_autobuild $require_buildreq_autoconf $require_buildreq_automake $require_buildreq_libtoolize $require_buildreq_autopoint $require_buildreq_patch test -n "$buildreq" && { _G_error_hdr= func_check_versions $buildreq $func_check_versions_result || { test -n "$buildreq_readme" \ && test -f "$buildreq_readme" \ && _G_error_hdr="\ $buildreq_readme explains how to obtain these prerequisite programs: " func_strtable 0 11 12 36 \ "Program" "Min_version" "Homepage" $buildreq func_fatal_error "$_G_error_hdr$func_strtable_result" } } require_buildtools_uptodate=: } # require_copyright_holder # ------------------------ # Ensure there is a sensible non-empty default value in '$copyright_holder'. require_copyright_holder=func_require_copyright_holder func_require_copyright_holder () { $debug_cmd test -n "$copyright_holder" || { copyright_holder='Free Software Foundation, Inc.' func_warning settings "\ Please set copyright_holder explicitly in 'bootstrap.conf'; defaulting to '$copyright_holder'." } require_copyright_holder=: } # require_doc_base # ---------------- # Ensure doc_base has a sensible value, extracted from 'gnulib-cache.m4' # if possible, otherwise letting 'gnulib-tool' pick a default. require_doc_base=func_require_doc_base func_require_doc_base () { $debug_cmd $require_gnulib_cache test -f "$gnulib_cache" && test -z "$doc_base" && { func_extract_trace_first "gl_DOC_BASE" "$gnulib_cache" doc_base=$func_extract_trace_first_result test -n "$doc_base" && func_verbose "doc_base='$doc_base'" } require_doc_base=: } # require_dotgitmodules # --------------------- # Ensure we have a '.gitmodules' file, with appropriate 'gnulib' settings. require_dotgitmodules=func_require_dotgitmodules func_require_dotgitmodules () { $debug_cmd $require_git test true = "$GIT" || { # A gnulib entry in .gitmodules always takes precedence. _G_path=`$GIT config --file .gitmodules submodule.gnulib.path 2>/dev/null` test -n "$_G_path" || { $require_vc_ignore_files func_verbose "creating '.gitmodules'" # If the .gitmodules file doesn't exist, create it now, and mark # it as ignored for the VCS. test -n "$gnulib_path" || gnulib_path=gnulib test -n "$gnulib_url" || gnulib_url=git://git.sv.gnu.org/gnulib { echo '[submodule "gnulib"]' echo " path = $gnulib_path" echo " url = $gnulib_url" } >> .gitmodules test -n "$vc_ignore_files" \ || func_insert_if_absent ".gitmodules" $vc_ignore_files } } require_dotgitmodules=: } # require_extra_locale_categories # ------------------------------- # Ensure there is a default value in '$extra_locale_categories' require_extra_locale_categories=func_require_extra_locale_categories func_require_extra_locale_categories () { $debug_cmd # Defaults to empty, so run with whatever value may have been set in # 'bootstrap.conf'. require_extra_locale_categories=: } # require_git # ----------- # Ignore git if it's not available, or we're not in a git checkout tree. require_git=func_require_git func_require_git () { $debug_cmd $opt_skip_git && GIT=true test true = "$GIT" || { if test -d .git/.; then ($GIT --version) >/dev/null 2>&1 || GIT=true fi } func_verbose "GIT='$GIT'" require_git=: } # require_gnulib_cache # -------------------- # Ensure there is a non-empty default for '$gnulib_cache', and that it # names an existing file. require_gnulib_cache=func_require_gnulib_cache func_require_gnulib_cache () { $debug_cmd $require_macro_dir test -n "$gnulib_cache" \ || gnulib_cache=$macro_dir/gnulib-cache.m4 func_verbose "found '$gnulib_cache'" require_gnulib_cache=: } # require_gnulib_copy_cmd # ----------------------- # Only calculate the options for copying files with gnulib once. require_gnulib_copy_cmd=func_require_gnulib_copy_cmd func_require_gnulib_copy_cmd () { $debug_cmd $require_gnulib_tool $require_gnulib_tool_base_options gnulib_copy_cmd="$gnulib_tool $gnulib_tool_base_options --copy-file" $opt_copy || func_append gnulib_copy_cmd " --symlink" $opt_quiet || func_append gnulib_copy_cmd " --verbose" require_gnulib_copy_cmd=: } # require_gnulib_merge_changelog # ------------------------------ # See if we can use gnulib's git-merge-changelog merge driver. require_gnulib_merge_changelog=func_require_gnulib_merge_changelog func_require_gnulib_merge_changelog () { $debug_cmd test -f ChangeLog && { $require_git func_grep_q '^\(/\|\)ChangeLog$' .gitignore || test true = "$GIT" || { if $GIT config merge.merge-changelog.driver >/dev/null; then : elif (git-merge-changelog --version) >/dev/null 2>&1; then func_echo "initializing git-merge-changelog driver" $GIT config merge.merge-changelog.name 'GNU-style ChangeLog merge driver' $GIT config merge.merge-changelog.driver 'git-merge-changelog %O %A %B' else func_warning recommend \ "Consider installing git-merge-changelog from gnulib." fi } } require_gnulib_merge_changelog=: } # require_gnulib_mk # ----------------- # Ensure gnulib_mk has a sensible value, extracted from 'gnulib-cache.m4' # if possible, otherwise letting 'gnulib-tool' pick a default. require_gnulib_mk=func_require_gnulib_mk func_require_gnulib_mk () { $debug_cmd $require_gnulib_cache test -f "$gnulib_cache" && test -z "$gnulib_mk" && { func_extract_trace_first "gl_MAKEFILE_NAME" "$gnulib_cache" gnulib_mk=$func_extract_trace_first_result test -n "$gnulib_mk" && func_verbose "gnulib_mk='$gnulib_mk'" } require_gnulib_mk=: } # require_gnulib_name # ------------------- # Ensure gnulib_name has a sensible value, extracted from 'gnulib-cache.m4' # if possible, otherwise letting 'gnulib-tool' pick a default. require_gnulib_name=func_require_gnulib_name func_require_gnulib_name () { $debug_cmd $require_gnulib_cache test -f "$gnulib_cache" && test -z "$gnulib_name" && { func_extract_trace_first "gl_LIB" "$gnulib_cache" gnulib_name=$func_extract_trace_first_result test -n "$gnulib_name" && func_verbose "gnulib_name='$gnulib_name'" } require_gnulib_name=: } # require_gnulib_path # require_gnulib_url # ------------------- # Ensure 'gnulib_path' and 'gnulib_url' are set. require_gnulib_path=func_require_dotgitmodules_parameters require_gnulib_url=func_require_dotgitmodules_parameters func_require_dotgitmodules_parameters () { $debug_cmd $require_git test true = "$GIT" && { # If we can't find git (or if the user specified '--skip-git'), # then use an existing gnulib directory specified with # '--gnulib-srcdir' if possible. test -n "$gnulib_path" \ || test ! -x "$opt_gnulib_srcdir/gnulib-tool" \ || gnulib_path=$opt_gnulib_srcdir } $require_dotgitmodules test -f .gitmodules && { # Extract the parameters with sed, since git may be missing test -n "$gnulib_path" \ || gnulib_path=`$SED -e '/^.submodule "gnulib".$/,${ /[ ]*path *= */{ s|[ ]*||g;s|^[^=]*=||;p } } d' .gitmodules |$SED 1q` test -n "$gnulib_url" \ || gnulib_url=`$SED -e '/^.submodule "gnulib".$/,${ /[ ]*url *= */{ s|[ ]*||g;s|^[^=]*=||;p } } d' .gitmodules |$SED 1q` func_verbose "gnulib_path='$gnulib_path'" func_verbose "gnulib_url='$gnulib_url'" } require_gnulib_path=: require_gnulib_url=: } # require_gnulib_submodule # ------------------------ # Ensure that there is a current gnulib submodule at '$gnulib_path'. require_gnulib_submodule=func_require_gnulib_submodule func_require_gnulib_submodule () { $debug_cmd $require_git if test true = "$GIT"; then func_warning recommend \ "No 'git' found; imported gnulib modules may be outdated." else $require_gnulib_path $require_gnulib_url if test -f .gitmodules && test -f "$gnulib_path/gnulib-tool"; then : All present and correct. elif test -n "$opt_gnulib_srcdir"; then # Older git can't clone into an empty directory. rmdir "$gnulib_path" 2>/dev/null func_show_eval "$GIT clone --reference '$opt_gnulib_srcdir' \ '$gnulib_url' '$gnulib_path'" \ || func_fatal_error "Unable to fetch gnulib submodule." # Without --gnulib-srcdir, and no existing checked out submodule, we # create a new shallow clone of the remote gnulib repository. else trap func_cleanup_gnulib 1 2 13 15 shallow= test -n "$gnulib_clone_since" && \ $GIT clone -h 2>&1 |func_grep_q -- --shallow-since \ && shallow="--shallow-since=$gnulib_clone_since" func_show_eval "$GIT clone $shallow '$gnulib_url' '$gnulib_path'" \ func_cleanup_gnulib # FIXME: Solaris /bin/sh will try to execute '-' if any of # these signals are caught after this. trap - 1 2 13 15 fi # Make sure we've checked out the correct revision of gnulib. func_show_eval "$GIT submodule init -- $gnulib_path" \ && func_show_eval "$GIT submodule update -- $gnulib_path" \ || func_fatal_error "Unable to update gnulib submodule." fi require_gnulib_submodule=: } # require_gnulib_tool # ------------------- # Ensure that '$gnulib_tool' is set, and points to an executable file, # or else fall back to using the binary 'true' if the main gnulib # files appear to have been imported already. require_gnulib_tool=func_require_gnulib_tool func_require_gnulib_tool () { $debug_cmd test true = "$gnulib_tool" || { $require_gnulib_submodule $require_gnulib_path test -n "$gnulib_tool" \ || gnulib_tool=$gnulib_path/gnulib-tool test -x "$gnulib_tool" || { gnulib_tool=true func_warning recommend \ "No 'gnulib-tool' found; gnulib modules may be missing." } test true = "$gnulib_tool" \ || func_verbose "found '$gnulib_tool'" } require_gnulib_tool=: } # require_gnulib_tool_base_options # -------------------------------- # Ensure that '$gnulib_tool_base_options' contains all the base options # required according to user configuration from bootstrap.conf. require_gnulib_tool_base_options=func_require_gnulib_tool_base_options func_require_gnulib_tool_base_options () { $debug_cmd $require_gnulib_tool gnulib_tool_base_options= test true = "$gnulib_tool" || { # 'gnulib_modules' and others are maintained in 'bootstrap.conf': # Use 'gnulib --import' to fetch gnulib modules. $require_build_aux test -n "$build_aux" \ && func_append_uniq gnulib_tool_base_options " --aux-dir=$build_aux" $require_macro_dir test -n "$macro_dir" \ && func_append_uniq gnulib_tool_base_options " --m4-base=$macro_dir" $require_doc_base test -n "$doc_base" \ && func_append_uniq gnulib_tool_base_options " --doc-base=$doc_base" $require_gnulib_name test -n "$gnulib_name" \ && func_append_uniq gnulib_tool_base_options " --lib=$gnulib_name" $require_local_gl_path test -n "$local_gl_path" && { eval "set dummy $local_gl_path_quoted" ; shift for _G_dir do func_append_uniq gnulib_tool_base_options " --local-dir=$_G_dir" done } $require_source_base test -n "$source_base" \ && func_append_uniq gnulib_tool_base_options " --source-base=$source_base" } require_gnulib_tool_base_options=: } # require_libtoolize # ------------------ # Skip libtoolize if it's not needed. require_libtoolize=func_require_libtoolize func_require_libtoolize () { $debug_cmd # Unless we're not searching for libtool use by this package, set # LIBTOOLIZE to true if none of 'LT_INIT', 'AC_PROG_LIBTOOL' and # 'AM_PROG_LIBTOOL' are used in configure. test true = "$LIBTOOLIZE" || { func_extract_trace LT_INIT test -n "$func_extract_trace_result" || func_extract_trace AC_PROG_LIBTOOL test -n "$func_extract_trace_result" || func_extract_trace AM_PROG_LIBTOOL test -n "$func_extract_trace_result" || LIBTOOLIZE=true } test -n "$LIBTOOLIZE" || { # Find libtoolize, named glibtoolize in Mac Ports, but prefer # user-installed libtoolize to ancient glibtoolize shipped by # Apple with Mac OS X when Mac Ports is not installed. func_find_tool LIBTOOLIZE libtoolize glibtoolize } test -n "$LIBTOOLIZE" || func_fatal_error "\ Please install GNU Libtool, or 'export LIBTOOLIZE=/path/to/libtoolize'." func_verbose "export LIBTOOLIZE='$LIBTOOLIZE'" # Make sure the search result is visible to subshells export LIBTOOLIZE require_libtoolize=: } # require_local_gl_path # --------------------- # Ensure local_gl_path has a sensible value, extracted from 'gnulib-cache.m4' if # possible, otherwise letting 'gnulib-tool' pick a default. require_local_gl_path=func_require_local_gl_path func_require_local_gl_path () { $debug_cmd $require_gnulib_cache # Compat with older bootstrap versions. test -n "$local_gl_dir" && { func_warning settings "\ Please use 'local_gl_path' instead of 'local_gl_dir' in your 'bootstrap.conf' file." local_gl_path=$local_gl_dir local_gl_dir= } test -f "$gnulib_cache" && test -z "$local_gl_path" && { func_extract_trace_first "gl_LOCAL_DIR" "$gnulib_cache" local_gl_path=$func_extract_trace_first_result test -n "$local_gl_path" && func_verbose "local_gl_path='$local_gl_path'" } test -z "$local_gl_path_quoted" && test -n "$local_gl_path" && { save_IFS=$IFS set dummy # Don't use PATH_SEPARATOR here, gnulib must be fixed to store only ':' as # path separator into gnulib-cache.m4 (consistency reasons among systems). IFS=: for _G_dir in $local_gl_path do set "$@" "$_G_dir" done shift IFS=$save_IFS func_quote eval "$@" local_gl_path_quoted=$func_quote_result } require_local_gl_path=: } # require_macro_dir # ----------------- # Ensure that '$macro_dir' is set, and if it doesn't already point to an # existing directory, create one. require_macro_dir=func_require_macro_dir func_require_macro_dir () { $debug_cmd # Sometimes this is stored in 'configure.ac'. test -n "$macro_dir" || { # AC_CONFIG_MACRO_DIRS takes a space delimited list of directories, # but we only care about the first one in bootstrap. func_extract_trace_first AC_CONFIG_MACRO_DIRS macro_dir=`expr "x$func_extract_trace_first_result" : 'x\([^ ]*\)'` } test -n "$macro_dir" || { func_extract_trace_first AC_CONFIG_MACRO_DIR macro_dir=$func_extract_trace_first_result } # Otherwise we might find it in 'Makefile.am'. test -n "$macro_dir" || { $require_aclocal_amflags # Take the argument following the first '-I', if any. _G_minus_I_seen=false for _G_arg in $aclocal_amflags; do case $_G_minus_I_seen,$_G_arg in :,*) macro_dir=$_G_arg; break ;; *,-I) _G_minus_I_seen=: ;; *,-I*) macro_dir=`expr x$_G_arg : 'x-I\(.*\)$'`; break ;; esac done } func_verbose "macro_dir='$macro_dir'" func_check_configuration macro_dir \ "AC_CONFIG_MACRO_DIRS([name of a directory for configure m4 files])" $require_vc_ignore_files # If the macro_dir directory doesn't exist, create it now, and mark it # as ignored for the VCS. if test ! -d "$macro_dir"; then mkdir "$macro_dir" || func_permissions_error "$macro_dir" test -n "$vc_ignore_files" \ || func_insert_if_absent "$macro_dir" $vc_ignore_files fi require_macro_dir=: } # require_makefile_am # ------------------- # Ensure there is a 'Makefile.am' in the current directory. require_makefile_am=func_require_makefile_am func_require_makefile_am () { $debug_cmd test -n "$makefile_am" \ || makefile_am=Makefile.am <"$makefile_am" func_verbose "found '$makefile_am'" require_makefile_am=: } # require_package # --------------- # Ensure that '$package' contains a sensible default value. require_package=func_require_package func_require_package () { $debug_cmd test -n "$package" || { $require_package_name package=`echo "$package_name" \ |$SED -e 's/GNU //' \ -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` } func_verbose "package='$package'" require_package=: } # require_package_bugreport # ------------------------- # Ensure that this has a sensible value, extracted from 'configure.ac' # if appropriate (and possible!). require_package_bugreport=func_require_package_bugreport func_require_package_bugreport () { $debug_cmd func_extract_trace AC_INIT save_ifs=$IFS IFS=: set dummy $func_extract_trace_result IFS=$save_ifs shift test -n "$package_bugreport" || package_bugreport=$3 func_check_configuration package_bugreport \ "AC_INIT([$package_name], [$package_version], [bug-$package@gnu.org])" func_verbose "package_bugreport='$package_bugreport'" require_package_bugreport=: } # require_package_name # -------------------- # Ensure that this has a sensible value, extracted from 'configure.ac' # if appropriate (and possible!). require_package_name=func_require_package_name func_require_package_name () { $debug_cmd func_extract_trace AC_INIT save_ifs=$IFS IFS=: set dummy $func_extract_trace_result IFS=$save_ifs shift test -n "$package_name" || package_name=$1 func_check_configuration package_name \ "AC_INIT([name of your package], [package version number])" func_verbose "package_name='$package_name'" require_package_name=: } # require_package_version # ----------------------- # Ensure that this has a sensible value, extracted from 'configure.ac' # if appropriate (and possible!). While we might have set all the # parameters extracted from AC_INIT at once, 'package_version' in # particular is not necessarily available as early as the others, since # 'git-version-gen' is often involved, and until then we can't rely on # getting a correct version number from an AC_INIT extraction. require_package_version=func_require_package_version func_require_package_version () { $debug_cmd func_extract_trace AC_INIT save_ifs=$IFS IFS=: set dummy $func_extract_trace_result IFS=$save_ifs shift test -n "$package_version" || package_version=$2 test -n "$package_version" || { # The embedded echo is to squash whitespace before globbing. case " "`echo $gnulib_modules`" " in *" git-version-gen "*) func_fatal_error "\ cannot \$require_package_version in bootstrap.conf before func_gnulib_tool has installed the 'git-version-gen' script." ;; *) func_check_configuration package_version \ "AC_INIT([name of your package], [package version number])" ;; esac } func_verbose "package_version='$package_version'" require_package_version=: } # require_patch # ------------- # Find patch, according to the PATCH environment variable, or else # searching the user's PATH. require_patch=func_require_patch func_require_patch () { $debug_cmd test -n "$PATCH" || { # Find a patch program, preferring gpatch, which is usually better # than the vendor patch. func_find_tool PATCH gpatch patch } test -n "$PATCH" || func_fatal_error "\ Please install GNU Patch, or 'export PATCH=/path/to/gnu/patch'." func_verbose "export PATCH='$PATCH'" # Make sure the search result is visible to subshells export PATCH require_patch=: } # require_source_base # ------------------- # Ensure that source_base has a sensible value, extracted from # 'gnulib-cache.m4' if possible. require_source_base=func_require_source_base func_require_source_base () { $debug_cmd $require_gnulib_cache test -f "$gnulib_cache" && test -z "$source_base" && { func_extract_trace_first "gl_SOURCE_BASE" "$gnulib_cache" source_base=$func_extract_trace_first_result func_verbose "source_base='$source_base'" } require_source_base=: } # require_vc_ignore_files # ----------------------- # Ensure that '$vc_ignore' has been processed to list VCS ignore files # in '$vc_ignore_files' require_vc_ignore_files=func_require_vc_ignore_files func_require_vc_ignore_files () { $debug_cmd test -n "$vc_ignore" || vc_ignore=auto if test auto = "$vc_ignore" && test -z "$vc_ignore_files"; then vc_ignore_files= test -d .git && vc_ignore_files=.gitignore test -d CVS && vc_ignore_files="$vc_ignore_files .cvsignore" else vc_ignore_files=$vc_ignore fi func_verbose "vc_ignore_files='$vc_ignore_files'" require_vc_ignore_files=: } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of 'bootstrap'. # func_len STRING # --------------- # STRING may not start with a hyphen. if (eval 'x=123; test x${#x} = "x3"') 2>/dev/null then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_len () { $debug_cmd func_len_result=${#1} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo 0` } fi # func_cmp_s FILE1 FILE2 # ---------------------- # Return non-zero exit status unless FILE1 and FILE2 are identical, without # any output at all, even error messages. func_cmp_s () { $debug_cmd # This function relies on non-zero exit status, which will cause the # program to exit when running in 'set -e' mode. $CMP "$@" >/dev/null 2>&1 } # func_grep_q EXPRESSION [FILENAME..] # ----------------------------------- # Check whether EXPRESSION matches any line of any listed FILENAME, # without any output at all, even error messages. func_grep_q () { $debug_cmd # This function relies on non-zero exit status, which will cause the # program to exit when running in 'set -e' mode. $GREP "$@" >/dev/null 2>&1 } # func_ifcontains LIST MEMBER YES-CMD [NO-CMD] # -------------------------------------------- # If whitespace-separated LIST contains MEMBER then execute YES-CMD, # otherwise if NO-CMD was given, execute that. func_ifcontains () { $debug_cmd _G_wslist=$1 _G_member=$2 _G_yes_cmd=$3 _G_no_cmd=${4-":"} _G_found=false for _G_item in $_G_wslist; do test "x$_G_item" = "x$_G_member" && { _G_found=: break } done if $_G_found; then eval "$_G_yes_cmd" _G_status=$? else eval "$_G_no_cmd" _G_status=$? fi test 0 -eq "$_G_status" || exit $_G_status } # func_strpad STR WIDTH CHAR # -------------------------- # Trim STR, or pad with CHAR to force a total length of WIDTH. func_strpad () { $debug_cmd _G_width=`expr "$2" - 1` func_strpad_result=`$ECHO "$1" |$SED ' :a s|^.\{0,'"$_G_width"'\}$|&'"$3"'| ta '` } # func_strrpad STR WIDTH CHAR # --------------------------- # Trim STR, or right-justify-pad with CHAR to force a total length of # WIDTH. func_strrpad () { $debug_cmd _G_width=`expr "$2" - 1` func_strrpad_result=`$ECHO "$1" |$SED ' :a s|^.\{0,'"$_G_width"'\}$|'"$3"'&| ta '` } # func_strrow INDENT FIELD WIDTH [FIELDn WIDTHn]... # ------------------------------------------------- # Return a string containing each FIELD left justified to WIDTH, with # the whole thing indented by INDENT spaces. This function is used to # render one row of aligned columns for a table by func_strtable(). func_strrow () { $debug_cmd func_strrow_linelen=$1; shift _G_row= while test $# -gt 0; do func_strrow_linelen=`expr $func_strrow_linelen + $2` func_strpad "$1" $2 " " func_append _G_row "$func_strpad_result" shift; shift done func_strrpad "$_G_row" $func_strrow_linelen " " func_strrow_result=$func_strrpad_result } # func_strtable INDENT WIDTH1...WIDTHn HEADER1...HEADERn FIELD1...FIELDn # ---------------------------------------------------------------------- # Generate a string of newline-separated rows arranged in lined-up # columns of the given WIDTHs, with the entire table indented by INDENT # spaces. The number of columns is determined by the number of integer # valued WIDTH arguments following INDENT. The next set (i.e. a number # of arguments equal to the number of WIDTH arguments) of fields are # treated as the table's column HEADERs, and are separated from the # remainder of the table by an indented row of '-' characters. Remaining # arguments are each aligned below the next available header, wrapping # to a new row as necessary. Finally another row of '-' characters is # added to mark the end of the table. # # For example an unindented 3 column table with 2 rows of data would be # generated by this call: # # func_strtable 3 20 10 25 \ # Header1 Header2 Header3 \ # Row1Col1 Row1Col2 Row1Col3 \ # Row2Col1 Row2Col2 Row2Col3 # # returning the following string: # # " Header1 Header2 Header3 # ------------------------------------------------------- # Row1Col1 Row1Col2 Row1Col3 # Row2Col1 Row2Col2 Row2Col3 # -------------------------------------------------------" func_strtable () { $debug_cmd # Save the indent value, we'll need it for each row we render. _G_indent=$1; shift # Collect remaining numeric args into a list for reuse between # members of each row when we call func_strrow later. _G_widths=$1; shift while test 0 -lt `expr "$1" : '[1-9][0-9]*$'`; do func_append _G_widths " $1"; shift done # Extract the same number of positional parameters as there are # width elements - we'll do the header rows separately so that # we can insert a divider line. _G_header=$_G_indent for _G_width in $_G_widths; do func_append _G_header " $1 $_G_width"; shift done func_strrow $_G_header # Strip off the indent, and make a divider with '-' chars, then # reindent. _G_divider=`$ECHO "$func_strrow_result" \ |$SED 's|[^ ]|-|g :a s|- |--|g ta '` # Append the header and divider to the running result. func_append func_strtable_result "\ $func_strrow_result $_G_divider " # The remaining rows are zipped between the width values we # unwound earlier just like the header row above. while test $# -gt 0; do _G_row=$_G_indent for _G_width in $_G_widths; do func_append _G_row " $1 $_G_width"; shift done func_strrow $_G_row func_append func_strtable_result "\ $func_strrow_result " done # Mark the end of the table with a final divider line. func_append func_strtable_result "$_G_divider" } # func_internal_error ARG... # -------------------------- # Echo program name prefixed message to standard error, and exit. func_internal_error () { func_fatal_error "\ INTERNAL: " ${1+"$@"} " Please report this bug to 'bug-gnulib@gnu.org' in as much detail as possible." } # func_permissions_error FILE-OR-DIRECTORY # ---------------------------------------- # Echo program name prefixed permissions error message to standard # error, and exit. func_permissions_error () { $debug_cmd func_fatal_error "Failed to create '$1', check permissions." } # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd $require_term_colors _G_cmd=$1 _G_fail_exp=${2-':'} ${opt_silent-'false'} || { func_quote eval $_G_cmd eval func_truncate_cmd $func_quote_result func_echo "running: $tc_bold$func_truncate_cmd_result$tc_reset" } ${opt_dry_run-'false'} || { eval "$_G_cmd" _G_status=$? test 0 -eq "$_G_status" || eval "(exit $_G_status); $_G_fail_exp" } } # func_truncate_cmd CMD [ARG]... # ------------------------------ # For unreasonably long commands (such as a gnulib-tool invocation with # the full module list for import), truncate CMD after the second non- # option ARG. func_truncate_cmd () { $debug_cmd _G_last_arg_opt_p=false func_truncate_cmd_result= set dummy "$@"; shift while test $# -gt 0; do _G_opt=$1; shift test -n "$func_truncate_cmd_result" \ && func_append func_truncate_cmd_result ' ' func_append func_truncate_cmd_result "$_G_opt" func_len "x$func_truncate_cmd_result" case $_G_opt in -*) _G_last_arg_opt_p=: ;; *) $_G_last_arg_opt_p \ || test "$min_cmd_len" -gt "$func_len_result" \ || break _G_last_arg_opt_p=false ;; esac done test $# -gt 0 && func_append func_truncate_cmd_result "..." } # func_gitignore_entries FILE... # ------------------------------ # Strip blank and comment lines to leave significant entries. func_gitignore_entries () { $debug_cmd $SED -e '/^#/d' -e '/^$/d' "$@" } # func_insert_if_absent STR FILE... # --------------------------------- # If $STR is not already on a line by itself in $FILE, insert it, at the # start. Entries are inserted at the start of the ignore list to ensure # existing entries starting with ! are not overridden. Such entries # support whilelisting exceptions after a more generic blacklist pattern. # sorting the new contents of the file and replacing $FILE with the result. func_insert_if_absent () { $debug_cmd str=$1 shift for file do test -f "$file" || touch "$file" duplicate_entries=`func_gitignore_entries "$file" |sort |uniq -d` test -n "$duplicate_entries" \ && func_error "duplicate entries in $file: " $duplicate_entries func_grep_q "^$str\$" "$file" \ || func_verbose "inserting '$str' into '$file'" linesold=`func_gitignore_entries "$file" |wc -l` linesnew=`{ $ECHO "$str"; cat "$file"; } \ |func_gitignore_entries |sort -u |wc -l` test "$linesold" -eq "$linesnew" \ || { $SED "1i\\$nl$str$nl" "$file" >"$file"T && mv "$file"T "$file"; } \ || func_permissions_error "$file" done } # func_get_version APP # -------------------- # echo the version number (if any) of APP, which is looked up along your # PATH. func_get_version () { $debug_cmd _G_app=$1 # Rather than uncomment the sed script in-situ, strip the comments # programatically before passing the result to $SED for evaluation. sed_get_version=`$ECHO '# extract version within line s|.*[v ]\{1,\}\([0-9]\{1,\}\.[.a-z0-9-]*\).*|\1| t done # extract version at start of line s|^\([0-9]\{1,\}\.[.a-z0-9-]*\).*|\1| t done d :done # the following essentially does s|5.005|5.5| s|\.0*\([1-9]\)|.\1|g p q' \ |$SED '/^[ ]*#.*$/d'` func_tool_version_output $_G_app >/dev/null _G_status=$? test 0 -ne "$_G_status" \ || $_G_app --version 2>&1 |$SED -n "$sed_get_version" (exit $_G_status) } # func_check_tool APP # ------------------- # Search PATH for an executable at APP. func_check_tool () { $debug_cmd func_check_tool_result= case $1 in *[\\/]*) test -x "$1" && func_check_tool_result=$1 ;; *) save_IFS=$IFS IFS=${PATH_SEPARATOR-:} for _G_check_tool_path in $PATH; do IFS=$save_IFS if test -x "$_G_check_tool_path/$1"; then func_check_tool_result=$_G_check_tool_path/$1 break fi done IFS=$save_IFS ;; esac } # func_check_versions APP1 VER1 URL1 ...[APPN VERN URLN] # ------------------------------------------------------ func_check_versions () { $debug_cmd func_check_versions_result=: while test $# -gt 0; do _G_app=$1; shift _G_reqver=$1; shift _G_url=$1; shift # Diagnose bad buildreq formatting. case $_G_url in [a-z]*://*) ;; # looks like a url *) func_fatal_error "\ '$_G_url' from the buildreq table in 'bootstrap.conf' does not look like the URL for downloading $_G_app. Please ensure that buildreq is a strict newline delimited list of triples; 'program min-version url'." ;; esac # Honor $APP variables ($TAR, $AUTOCONF, etc.) _G_appvar=`echo $_G_app |tr '[a-z]' '[A-Z]'` test TAR = "$_G_appvar" && _G_appvar=AMTAR eval "_G_app=\${$_G_appvar-$_G_app}" # Fail if no version specified, but the program can't be found. if test x- = "x$_G_reqver"; then func_check_tool $_G_app if test -z "$func_check_tool_result"; then func_error "Prerequisite '$_G_app' not not found. Please install it, or 'export $_G_appvar=/path/to/$_G_app'." func_check_versions_result=false else func_verbose "found '$func_check_tool_result' for $_G_appvar." fi else _G_instver=`func_get_version $_G_app` # Fail if --version didn't work. if test -z "$_G_instver"; then func_error "Prerequisite '$_G_app' not found. Please install it, or 'export $_G_appvar=/path/to/$_G_app'." func_check_versions_result=false # Fail if a newer version than what we have is required. else func_verbose "found '$_G_app' version $_G_instver." case $_G_reqver in =*) # If $buildreq version starts with '=', version must # match the installed program exactly. test "x$_G_reqver" = "x=$_G_instver" || { func_error "\ '$_G_app' version == $_G_instver is too old 'exactly $_G_app-$_G_reqver is required" func_check_versions_result=false } ;; *) # Otherwise, anything that is not older is a match. func_lt_ver "$_G_reqver" "$_G_instver" || { func_error "\ '$_G_app' version == $_G_instver is too old '$_G_app' version >= $_G_reqver is required" func_check_versions_result=false } ;; esac fi fi done } # func_cleanup_gnulib # ------------------- # Recursively delete everything below the path in the global variable # GNULIB_PATH. func_cleanup_gnulib () { $debug_cmd _G_status=$? $RM -fr "$gnulib_path" exit $_G_status } # func_download_po_files SUBDIR DOMAIN # ------------------------------------ func_download_po_files () { $debug_cmd func_echo "getting translations into $1 for $2..." _G_cmd=`printf "$po_download_command_format" "$2" "$1"` eval "$_G_cmd" } # func_update_po_files PO_DIR DOMAIN # ---------------------------------- # Mirror .po files to $po_dir/.reference and copy only the new # or modified ones into $po_dir. Also update $po_dir/LINGUAS. # Note po files that exist locally only are left in $po_dir but will # not be included in LINGUAS and hence will not be distributed. func_update_po_files () { $debug_cmd # Directory containing primary .po files. # Overwrite them only when we're sure a .po file is new. _G_po_dir=$1 _G_domain=$2 # Mirror *.po files into this dir. # Usually contains *.s1 checksum files. _G_ref_po_dir=$_G_po_dir/.reference test -d "$_G_ref_po_dir" || mkdir $_G_ref_po_dir || return func_download_po_files $_G_ref_po_dir $_G_domain \ && ls "$_G_ref_po_dir"/*.po 2>/dev/null \ |$SED -e 's|.*/||' -e 's|\.po$||' > "$_G_po_dir/LINGUAS" || return # Find sha1sum, named gsha1sum on MacPorts, and shasum on MacOS 10.6+. func_find_tool SHA1SUM sha1sum gsha1sum shasum sha1 test -n "$SHA1SUM" || func_fatal_error "\ Please install GNU Coreutils, or 'export SHA1SUM=/path/to/sha1sum'." _G_langs=`cd $_G_ref_po_dir && echo *.po|$SED 's|\.po||g'` test '*' = "$_G_langs" && _G_langs=x for _G_po in $_G_langs; do case $_G_po in x) continue;; esac _G_new_po=$_G_ref_po_dir/$_G_po.po _G_cksum_file=$_G_ref_po_dir/$_G_po.s1 if ! test -f "$_G_cksum_file" || ! test -f "$_G_po_dir/$_G_po.po" || ! $SHA1SUM -c "$_G_cksum_file" \ < "$_G_new_po" > /dev/null; then echo "updated $_G_po_dir/$_G_po.po..." cp "$_G_new_po" "$_G_po_dir/$_G_po.po" \ && $SHA1SUM < "$_G_new_po" > "$_G_cksum_file" || return fi done } ## --------------- ## ## Option parsing. ## ## --------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]...' # Short help message in response to '-h'. Add to this in 'bootstrap.conf' # if you accept any additional options. usage_message="Common Bootstrap Options: -c, --copy copy files instead of creating symbolic links. --debug enable verbose shell tracing -n, --dry-run print commands rather than running them -f, --force attempt to bootstrap even if the sources seem not to have been checked out. --gnulib-srcdir=DIRNAME specify a local directory where gnulib sources reside. Use this if you already have the gnulib sources on your machine, and don't want to waste your bandwidth downloading them again. Defaults to \$GNULIB_SRCDIR. --no-warnings equivalent to '-Wnone' --skip-git do not fetch files from remote repositories --skip-po do not download po files. -v, --verbose verbosely report processing --version print version information and exit -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=$long_help_message" 'recommend' show warnings about missing recommended packages 'settings' show warnings about missing '$progname.conf' settings 'upgrade' show warnings about out-dated files If the file '$progname.conf' exists in the same directory as this script, its contents are read as shell variables to configure the bootstrap. For build prerequisites, environment variables like \$AUTOCONF and \$AMTAR are honored. Running without arguments will suffice in most cases. " # Warning categories used by 'bootstrap', append others if you use them # in your 'bootstrap.conf'. warning_categories='recommend settings upgrade' # bootstrap_options_prep [ARG]... # ------------------------------- # Preparation for options parsed by Bootstrap. bootstrap_options_prep () { $debug_cmd # Option defaults: opt_copy=${copy-'false'} opt_dry_run=false opt_force=false opt_gnulib_srcdir=$GNULIB_SRCDIR opt_skip_git=false opt_skip_po=false # Pass back the list of options we consumed. func_quote eval ${1+"$@"} bootstrap_options_prep_result=$func_quote_result } func_add_hook func_options_prep bootstrap_options_prep # bootstrap_parse_options [ARG]... # -------------------------------- # Provide handling for Bootstrap specific options. bootstrap_parse_options () { $debug_cmd # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --copy|-c) opt_copy=: ;; --force|-f) opt_force=: ;; --gnulib-srcdir) test $# = 0 && func_missing_arg $_G_opt && break opt_gnulib_srcdir=$1 shift ;; --skip-git|--no-git) opt_skip_git=: ;; --skip-po|--no-po) opt_skip_po=: ;; # Separate non-argument short options: -c*|-f*|-n*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote eval ${1+"$@"} bootstrap_parse_options_result=$func_quote_result } func_add_hook func_parse_options bootstrap_parse_options # bootstrap_validate_options [ARG]... # ----------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. bootstrap_validate_options () { $debug_cmd # Validate options. test $# -gt 0 \ && func_fatal_help "too many arguments" # Pass back the (empty) list of unconsumed options. func_quote eval ${1+"$@"} bootstrap_validate_options_result=$func_quote_result } func_add_hook func_validate_options bootstrap_validate_options ## -------------------------------------------------- ## ## Source package customisations in 'bootstrap.conf'. ## ## -------------------------------------------------- ## # Override the default configuration, if necessary. # Make sure that bootstrap.conf is sourced from the current directory # if we were invoked as "sh bootstrap". case $0 in */*) test -r "$0.conf" && . "$0.conf" ;; *) test -r "$0.conf" && . ./"$0.conf" ;; esac ## ------------------------------- ## ## Actually perform the bootstrap. ## ## ------------------------------- ## func_bootstrap ${1+"$@"} # The End. exit ${exit_status-$EXIT_SUCCESS} # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "500/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: recode-3.7.15/build-aux/missing0000755000175000017500000001533012676613141012033 #! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: recode-3.7.15/build-aux/compile0000754000175000017500000001645414371444255012023 #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2023 Free Software Foundation, Inc. # Written by Tom Tromey . # # 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN* | MSYS*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ clang-cl | *[/\\]clang-cl | clang-cl.exe | *[/\\]clang-cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: recode-3.7.15/build-aux/options-parser0000644000175000017500000004750214371673200013346 #! /bin/sh # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2010-2019 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # # Set a version string for this script. scriptversion=2019-02-19.15; # UTC ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# Copyright'. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug in processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # in the main code. A hook is just a list of function names that can be # run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of hook functions to be called by # FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_propagate_result FUNC_NAME_A FUNC_NAME_B # --------------------------------------------- # If the *_result variable of FUNC_NAME_A _is set_, assign its value to # *_result variable of FUNC_NAME_B. func_propagate_result () { $debug_cmd func_propagate_result_result=: if eval "test \"\${${1}_result+set}\" = set" then eval "${2}_result=\$${1}_result" else func_propagate_result_result=false fi } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It's assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook functions." ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do func_unset "${_G_hook}_result" eval $_G_hook '${1+"$@"}' func_propagate_result $_G_hook func_run_hooks if $func_propagate_result_result; then eval set dummy "$func_run_hooks_result"; shift fi done } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list from your hook function. You may remove # or edit any options that you action, and then pass back the remaining # unprocessed options in '_result', escaped # suitably for 'eval'. # # The '_result' variable is automatically unset # before your hook gets called; for best performance, only set the # *_result variable when necessary (i.e. don't call the 'func_quote' # function unnecessarily because it can be an expensive operation on some # machines). # # Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # No change in '$@' (ignored completely by this hook). Leave # # my_options_prep_result variable intact. # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # args_changed=false # # # Note that, for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: # args_changed=: # ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # args_changed=: # ;; # *) # Make sure the first unrecognised option "$_G_opt" # # is added back to "$@" in case we need it later, # # if $args_changed was set to 'true'. # set dummy "$_G_opt" ${1+"$@"}; shift; break ;; # esac # done # # # Only call 'func_quote' here if we processed at least one argument. # if $args_changed; then # func_quote eval ${1+"$@"} # my_silent_option_result=$func_quote_result # fi # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # } # func_add_hook func_validate_options my_option_validation # # You'll also need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options_finish [ARG]... # ---------------------------- # Finishing the option parse loop (call 'func_options' hooks ATM). func_options_finish () { $debug_cmd func_run_hooks func_options ${1+"$@"} func_propagate_result func_run_hooks func_options_finish } # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd _G_options_quoted=false for my_func in options_prep parse_options validate_options options_finish do func_unset func_${my_func}_result func_unset func_run_hooks_result eval func_$my_func '${1+"$@"}' func_propagate_result func_$my_func func_options if $func_propagate_result_result; then eval set dummy "$func_options_result"; shift _G_options_quoted=: fi done $_G_options_quoted || { # As we (func_options) are top-level options-parser function and # nobody quoted "$@" for us yet, we need to do it explicitly for # caller. func_quote eval ${1+"$@"} func_options_result=$func_quote_result } } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propagate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} func_propagate_result func_run_hooks func_options_prep } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd _G_parse_options_requote=false # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} func_propagate_result func_run_hooks func_parse_options if $func_propagate_result_result; then eval set dummy "$func_parse_options_result"; shift # Even though we may have changed "$@", we passed the "$@" array # down into the hook and it quoted it for us (because we are in # this if-branch). No need to quote it again. _G_parse_options_requote=false fi # Break out of the loop if we already parsed every option. test $# -gt 0 || break # We expect that one of the options parsed in this function matches # and thus we remove _G_opt from "$@" and need to re-quote. _G_match_parse_options=: _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" >&2 $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) if test $# = 0 && func_missing_arg $_G_opt; then _G_parse_options_requote=: break fi case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) _G_parse_options_requote=: ; break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift _G_match_parse_options=false break ;; esac if $_G_match_parse_options; then _G_parse_options_requote=: fi done if $_G_parse_options_requote; then # save modified positional parameters for caller func_quote eval ${1+"$@"} func_parse_options_result=$func_quote_result fi } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} func_propagate_result func_run_hooks func_validate_options # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables # after splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} if test "x$func_split_equals_lhs" = "x$1"; then func_split_equals_rhs= fi }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. # The version message is extracted from the calling file's header # comments, with leading '# ' stripped: # 1. First display the progname and version # 2. Followed by the header comment line matching /^# Written by / # 3. Then a blank line followed by the first following line matching # /^# Copyright / # 4. Immediately followed by any lines between the previous matches, # except lines preceding the intervening completely blank line. # For example, see the header comments of this file. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /^# Written by /!b s|^# ||; p; n :fwd2blnk /./ { n b fwd2blnk } p; n :holdwrnt s|^# || s|^# *$|| /^Copyright /!{ /./H n b holdwrnt } s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| G s|\(\n\)\n*|\1|g p; q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: recode-3.7.15/build-aux/texinfo.tex0000644000175000017500000134315614371444255012647 % texinfo.tex -- TeX macros to handle Texinfo files. % % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % \def\texinfoversion{2023-01-02.21} % % Copyright 1985, 1986, 1988, 1990-2023 Free Software Foundation, Inc. % % This texinfo.tex file 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 3 of the % License, or (at your option) any later version. % % This texinfo.tex file 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, see . % % As a special exception, when this file is read by TeX when processing % a Texinfo source document, you may use the result without % restriction. This Exception is an additional permission under section 7 % of the GNU General Public License, version 3 ("GPLv3"). % % Please try the latest version of texinfo.tex before submitting bug % reports; you can get the latest version from: % https://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or % https://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or % https://www.gnu.org/software/texinfo/ (the Texinfo home page) % The texinfo.tex in any given distribution could well be out % of date, so if that's what you're using, please check. % % Send bug reports to bug-texinfo@gnu.org. Please include a % complete document in each bug report with which we can reproduce the % problem. Patches are, of course, greatly appreciated. % % To process a Texinfo manual with TeX, it's most reliable to use the % texi2dvi shell script that comes with the distribution. For a simple % manual foo.texi, however, you can get away with this: % tex foo.texi % texindex foo.?? % tex foo.texi % tex foo.texi % dvips foo.dvi -o # or whatever; this makes foo.ps. % The extra TeX runs get the cross-reference information correct. % Sometimes one run after texindex suffices, and sometimes you need more % than two; texi2dvi does it as many times as necessary. % % It is possible to adapt texinfo.tex for other languages, to some % extent. You can get the existing language-specific files from the % full Texinfo distribution. % % The GNU Texinfo home page is https://www.gnu.org/software/texinfo. \message{Loading texinfo [version \texinfoversion]:} % LaTeX's \typeout. This ensures that the messages it is used for % are identical in format to the corresponding ones from latex/pdflatex. \def\typeout{\immediate\write17}% \chardef\other=12 % We never want plain's \outer definition of \+ in Texinfo. % For @tex, we can use \tabalign. \let\+ = \relax % Save some plain tex macros whose names we will redefine. \let\ptexb=\b \let\ptexbullet=\bullet \let\ptexc=\c \let\ptexcomma=\, \let\ptexdot=\. \let\ptexdots=\dots \let\ptexend=\end \let\ptexequiv=\equiv \let\ptexexclam=\! \let\ptexfootnote=\footnote \let\ptexgtr=> \let\ptexhat=^ \let\ptexi=\i \let\ptexindent=\indent \let\ptexinsert=\insert \let\ptexlbrace=\{ \let\ptexless=< \let\ptexnewwrite\newwrite \let\ptexnoindent=\noindent \let\ptexplus=+ \let\ptexraggedright=\raggedright \let\ptexrbrace=\} \let\ptexslash=\/ \let\ptexsp=\sp \let\ptexstar=\* \let\ptexsup=\sup \let\ptext=\t \let\ptextop=\top {\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode % If this character appears in an error message or help string, it % starts a new line in the output. \newlinechar = `^^J % Use TeX 3.0's \inputlineno to get the line number, for better error % messages, but if we're using an old version of TeX, don't do anything. % \ifx\inputlineno\thisisundefined \let\linenumber = \empty % Pre-3.0. \else \def\linenumber{l.\the\inputlineno:\space} \fi % Set up fixed words for English if not already set. \ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi \ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi \ifx\putworderror\undefined \gdef\putworderror{error}\fi \ifx\putwordfile\undefined \gdef\putwordfile{file}\fi \ifx\putwordin\undefined \gdef\putwordin{in}\fi \ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi \ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi \ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi \ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi \ifx\putwordof\undefined \gdef\putwordof{of}\fi \ifx\putwordon\undefined \gdef\putwordon{on}\fi \ifx\putwordpage\undefined \gdef\putwordpage{page}\fi \ifx\putwordsection\undefined \gdef\putwordsection{section}\fi \ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi \ifx\putwordsee\undefined \gdef\putwordsee{see}\fi \ifx\putwordSee\undefined \gdef\putwordSee{See}\fi \ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi \ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi % \ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi \ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi \ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi \ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi \ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi \ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi \ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi \ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi \ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi \ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi \ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi \ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi % \ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi % Give the space character the catcode for a space. \def\spaceisspace{\catcode`\ =10\relax} % Likewise for ^^M, the end of line character. \def\endlineisspace{\catcode13=10\relax} \chardef\dashChar = `\- \chardef\slashChar = `\/ \chardef\underChar = `\_ % Ignore a token. % \def\gobble#1{} % The following is used inside several \edef's. \def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} % Hyphenation fixes. \hyphenation{ Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script ap-pen-dix bit-map bit-maps data-base data-bases eshell fall-ing half-way long-est man-u-script man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces spell-ing spell-ings stand-alone strong-est time-stamp time-stamps which-ever white-space wide-spread wrap-around } % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, % since that produces some useless output on the terminal. We also make % some effort to order the tracing commands to reduce output in the log % file; cf. trace.sty in LaTeX. % \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% \def\loggingall{% \tracingstats2 \tracingpages1 \tracinglostchars2 % 2 gives us more in etex \tracingparagraphs1 \tracingoutput1 \tracingmacros2 \tracingrestores1 \showboxbreadth\maxdimen \showboxdepth\maxdimen \ifx\eTeXversion\thisisundefined\else % etex gives us more logging \tracingscantokens1 \tracingifs1 \tracinggroups1 \tracingnesting2 \tracingassigns1 \fi \tracingcommands3 % 3 gives us more in etex \errorcontextlines16 }% % @errormsg{MSG}. Do the index-like expansions on MSG, but if things % aren't perfect, it's not the end of the world, being an error message, % after all. % \def\errormsg{\begingroup \indexnofonts \doerrormsg} \def\doerrormsg#1{\errmessage{#1}} % add check for \lastpenalty to plain's definitions. If the last thing % we did was a \nobreak, we don't want to insert more space. % \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount \removelastskip\penalty-50\smallskip\fi\fi} \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount \removelastskip\penalty-100\medskip\fi\fi} \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount \removelastskip\penalty-200\bigskip\fi\fi} % Output routine % % For a final copy, take out the rectangles % that mark overfull boxes (in case you have decided % that the text looks ok even though it passes the margin). % \def\finalout{\overfullrule=0pt } % Output a mark which sets \thischapter, \thissection and \thiscolor. % We dump everything together because we only have one kind of mark. % This works because we only use \botmark / \topmark, not \firstmark. % % A mark contains a subexpression of the \ifcase ... \fi construct. % \get*marks macros below extract the needed part using \ifcase. % % Another complication is to let the user choose whether \thischapter % (\thissection) refers to the chapter (section) in effect at the top % of a page, or that at the bottom of a page. % \domark is called twice inside \chapmacro, to add one % mark before the section break, and one after. % In the second call \prevchapterdefs is the same as \currentchapterdefs, % and \prevsectiondefs is the same as \currentsectiondefs. % Then if the page is not broken at the mark, some of the previous % section appears on the page, and we can get the name of this section % from \firstmark for @everyheadingmarks top. % @everyheadingmarks bottom uses \botmark. % % See page 260 of The TeXbook. \def\domark{% \toks0=\expandafter{\currentchapterdefs}% \toks2=\expandafter{\currentsectiondefs}% \toks4=\expandafter{\prevchapterdefs}% \toks6=\expandafter{\prevsectiondefs}% \toks8=\expandafter{\currentcolordefs}% \mark{% \the\toks0 \the\toks2 % 0: marks for @everyheadingmarks top \noexpand\or \the\toks4 \the\toks6 % 1: for @everyheadingmarks bottom \noexpand\else \the\toks8 % 2: color marks }% } % \gettopheadingmarks, \getbottomheadingmarks, % \getcolormarks - extract needed part of mark. % % \topmark doesn't work for the very first chapter (after the title % page or the contents), so we use \firstmark there -- this gets us % the mark with the chapter defs, unless the user sneaks in, e.g., % @setcolor (or @url, or @link, etc.) between @contents and the very % first @chapter. \def\gettopheadingmarks{% \ifcase0\the\savedtopmark\fi \ifx\thischapter\empty \ifcase0\firstmark\fi \fi } \def\getbottomheadingmarks{\ifcase1\botmark\fi} \def\getcolormarks{\ifcase2\the\savedtopmark\fi} % Avoid "undefined control sequence" errors. \def\currentchapterdefs{} \def\currentsectiondefs{} \def\currentsection{} \def\prevchapterdefs{} \def\prevsectiondefs{} \def\currentcolordefs{} % Margin to add to right of even pages, to left of odd pages. \newdimen\bindingoffset \newdimen\normaloffset \newdimen\txipagewidth \newdimen\txipageheight % Main output routine. % \chardef\PAGE = 255 \newtoks\defaultoutput \defaultoutput = {\savetopmark\onepageout{\pagecontents\PAGE}} \output=\expandafter{\the\defaultoutput} \newbox\headlinebox \newbox\footlinebox % When outputting the double column layout for indices, an output routine % is run several times, hiding the original value of \topmark. Hence, save % \topmark at the beginning. % \newtoks\savedtopmark \newif\iftopmarksaved \topmarksavedtrue \def\savetopmark{% \iftopmarksaved\else \global\savedtopmark=\expandafter{\topmark}% \global\topmarksavedtrue \fi } % \onepageout takes a vbox as an argument. % \shipout a vbox for a single page, adding an optional header, footer % and footnote. This also causes index entries for this page to be written % to the auxiliary files. % \def\onepageout#1{% \hoffset=\normaloffset % \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % \checkchapterpage % % Make the heading and footing. \makeheadline and \makefootline % use the contents of \headline and \footline. \def\commonheadfootline{\let\hsize=\txipagewidth \texinfochars} \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \global\setbox\headlinebox = \vbox{\commonheadfootline \makeheadline}% \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi \global\setbox\footlinebox = \vbox{\commonheadfootline \makefootline}% % {% % Set context for writing to auxiliary files like index files. % Have to do this stuff outside the \shipout because we want it to % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. % \atdummies % don't expand commands in the output. \turnoffactive \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi % \unvbox\headlinebox \pagebody{#1}% \ifdim\ht\footlinebox > 0pt % Only leave this space if the footline is nonempty. % (We lessened \vsize for it in \oddfootingyyy.) % The \baselineskip=24pt in plain's \makefootline has no effect. \vskip 24pt \unvbox\footlinebox \fi % }% }% \global\topmarksavedfalse \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi } \newinsert\margin \dimen\margin=\maxdimen % Main part of page, including any footnotes \def\pagebody#1{\vbox to\txipageheight{\boxmaxdepth=\maxdepth #1}} {\catcode`\@ =11 \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi % marginal hacks, juha@viisa.uucp (Juha Takala) \ifvoid\margin\else % marginal info is present \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi \dimen@=\dp#1\relax \unvbox#1\relax \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi \ifr@ggedbottom \kern-\dimen@ \vfil \fi} } % Check if we are on the first page of a chapter. Used for printing headings. \newif\ifchapterpage \def\checkchapterpage{% % Get the chapter that was current at the end of the last page \ifcase1\the\savedtopmark\fi \let\prevchaptername\thischaptername % \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \let\curchaptername\thischaptername % \ifx\curchaptername\prevchaptername \chapterpagefalse \else \chapterpagetrue \fi } % Argument parsing % Parse an argument, then pass it to #1. The argument is the rest of % the input line (except we remove a trailing comment). #1 should be a % macro which expects an ordinary undelimited TeX argument. % For example, \def\foo{\parsearg\fooxxx}. % \def\parsearg{\parseargusing{}} \def\parseargusing#1#2{% \def\argtorun{#2}% \begingroup \obeylines \spaceisspace #1% \parseargline\empty% Insert the \empty token, see \finishparsearg below. } {\obeylines % \gdef\parseargline#1^^M{% \endgroup % End of the group started in \parsearg. \argremovecomment #1\comment\ArgTerm% }% } % First remove any @comment, then any @c comment. Pass the result on to % \argcheckspaces. \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} % Each occurrence of `\^^M' or `\^^M' is replaced by a single space. % % \argremovec might leave us with trailing space, e.g., % @end itemize @c foo % This space token undergoes the same procedure and is eventually removed % by \finishparsearg. % \def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} \def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} \def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% \def\temp{#3}% \ifx\temp\empty % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: \let\temp\finishparsearg \else \let\temp\argcheckspaces \fi % Put the space token in: \temp#1 #3\ArgTerm } % If a _delimited_ argument is enclosed in braces, they get stripped; so % to get _exactly_ the rest of the line, we had to prevent such situation. % We prepended an \empty token at the very beginning and we expand it now, % just before passing the control to \argtorun. % (Similarly, we have to think about #3 of \argcheckspacesY above: it is % either the null string, or it ends with \^^M---thus there is no danger % that a pair of braces would be stripped. % % But first, we have to remove the trailing space token. % \def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} % \parseargdef - define a command taking an argument on the line % % \parseargdef\foo{...} % is roughly equivalent to % \def\foo{\parsearg\Xfoo} % \def\Xfoo#1{...} \def\parseargdef#1{% \expandafter \doparseargdef \csname\string#1\endcsname #1% } \def\doparseargdef#1#2{% \def#2{\parsearg#1}% \def#1##1% } % Several utility definitions with active space: { \obeyspaces \gdef\obeyedspace{ } % Make each space character in the input produce a normal interword % space in the output. Don't allow a line break at this space, as this % is used only in environments like @example, where each line of input % should produce a line of output anyway. % \gdef\sepspaces{\obeyspaces\let =\tie} % If an index command is used in an @example environment, any spaces % therein should become regular spaces in the raw index file, not the % expansion of \tie (\leavevmode \penalty \@M \ ). \gdef\unsepspaces{\let =\space} } \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} % Define the framework for environments in texinfo.tex. It's used like this: % % \envdef\foo{...} % \def\Efoo{...} % % It's the responsibility of \envdef to insert \begingroup before the % actual body; @end closes the group after calling \Efoo. \envdef also % defines \thisenv, so the current environment is known; @end checks % whether the environment name matches. The \checkenv macro can also be % used to check whether the current environment is the one expected. % % Non-false conditionals (@iftex, @ifset) don't fit into this, so they % are not treated as environments; they don't open a group. (The % implementation of @end takes care not to call \endgroup in this % special case.) % At run-time, environments start with this: \def\startenvironment#1{\begingroup\def\thisenv{#1}} % initialize \let\thisenv\empty % ... but they get defined via ``\envdef\foo{...}'': \long\def\envdef#1#2{\def#1{\startenvironment#1#2}} \long\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} % Check whether we're in the right environment: \def\checkenv#1{% \def\temp{#1}% \ifx\thisenv\temp \else \badenverr \fi } % Environment mismatch, #1 expected: \def\badenverr{% \errhelp = \EMsimple \errmessage{This command can appear only \inenvironment\temp, not \inenvironment\thisenv}% } \def\inenvironment#1{% \ifx#1\empty outside of any environment% \else in environment \expandafter\string#1% \fi } % @end foo calls \checkenv and executes the definition of \Efoo. \parseargdef\end{% \if 1\csname iscond.#1\endcsname \else % The general wording of \badenverr may not be ideal. \expandafter\checkenv\csname#1\endcsname \csname E#1\endcsname \endgroup \fi } \newhelp\EMsimple{Press RETURN to continue.} % Be sure we're in horizontal mode when doing a tie, since we make space % equivalent to this in @example-like environments. Otherwise, a space % at the beginning of a line will start with \penalty -- and % since \penalty is valid in vertical mode, we'd end up putting the % penalty on the vertical list instead of in the new paragraph. {\catcode`@ = 11 % Avoid using \@M directly, because that causes trouble % if the definition is written into an index file. \global\let\tiepenalty = \@M \gdef\tie{\leavevmode\penalty\tiepenalty\ } } % @: forces normal size whitespace following. \def\:{\spacefactor=1000 } % @* forces a line break. \def\*{\unskip\hfil\break\hbox{}\ignorespaces} % @/ allows a line break. \let\/=\allowbreak % @- allows explicit insertion of hyphenation points \def\-{\discretionary{\normaldash}{}{}}% % @. is an end-of-sentence period. \def\.{.\spacefactor=\endofsentencespacefactor\space} % @! is an end-of-sentence bang. \def\!{!\spacefactor=\endofsentencespacefactor\space} % @? is an end-of-sentence query. \def\?{?\spacefactor=\endofsentencespacefactor\space} % @w prevents a word break. Without the \leavevmode, @w at the % beginning of a paragraph, when TeX is still in vertical mode, would % produce a whole line of output instead of starting the paragraph. \def\w#1{\leavevmode\hbox{#1}} % @group ... @end group forces ... to be all on one page, by enclosing % it in a TeX vbox. We use \vtop instead of \vbox to construct the box % to keep its height that of a normal line. According to the rules for % \topskip (p.114 of the TeXbook), the glue inserted is % max (\topskip - \ht (first item), 0). If that height is large, % therefore, no glue is inserted, and the space between the headline and % the text is small, which looks bad. % % Another complication is that the group might be very large. This can % cause the glue on the previous page to be unduly stretched, because it % does not have much material. In this case, it's better to add an % explicit \vfill so that the extra space is at the bottom. The % threshold for doing this is if the group is more than \vfilllimit % percent of a page (\vfilllimit can be changed inside of @tex). % \newbox\groupbox \def\vfilllimit{0.7} % \envdef\group{% \ifnum\catcode`\^^M=\active \else \errhelp = \groupinvalidhelp \errmessage{@group invalid in context where filling is enabled}% \fi \startsavinginserts % \setbox\groupbox = \vtop\bgroup % Do @comment since we are called inside an environment such as % @example, where each end-of-line in the input causes an % end-of-line in the output. We don't want the end-of-line after % the `@group' to put extra space in the output. Since @group % should appear on a line by itself (according to the Texinfo % manual), we don't worry about eating any user text. \comment } % % The \vtop produces a box with normal height and large depth; thus, TeX puts % \baselineskip glue before it, and (when the next line of text is done) % \lineskip glue after it. Thus, space below is not quite equal to space % above. But it's pretty close. \def\Egroup{% % To get correct interline space between the last line of the group % and the first line afterwards, we have to propagate \prevdepth. \endgraf % Not \par, as it may have been set to \lisppar. \global\dimen1 = \prevdepth \egroup % End the \vtop. \addgroupbox \prevdepth = \dimen1 \checkinserts } \def\addgroupbox{ % \dimen0 is the vertical size of the group's box. \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox % \dimen2 is how much space is left on the page (more or less). \dimen2 = \txipageheight \advance\dimen2 by -\pagetotal % if the group doesn't fit on the current page, and it's a big big % group, force a page break. \ifdim \dimen0 > \dimen2 \ifdim \pagetotal < \vfilllimit\txipageheight \page \fi \fi \box\groupbox } % % TeX puts in an \escapechar (i.e., `@') at the beginning of the help % message, so this ends up printing `@group can only ...'. % \newhelp\groupinvalidhelp{% group can only be used in environments such as @example,^^J% where each line of input produces a line of output.} % @need space-in-mils % forces a page break if there is not space-in-mils remaining. \newdimen\mil \mil=0.001in \parseargdef\need{% % Ensure vertical mode, so we don't make a big box in the middle of a % paragraph. \par % % If the @need value is less than one line space, it's useless. \dimen0 = #1\mil \dimen2 = \ht\strutbox \advance\dimen2 by \dp\strutbox \ifdim\dimen0 > \dimen2 % This is similar to the 'needspace' module in LaTeX. % The first penalty allows a break if the end of the page is % not too far away. Following penalties and skips are discarded. % Otherwise, require at least \dimen0 of vertical space. % % (We used to use a \vtop to reserve space, but this had spacing issues % when followed by a section heading, as it was not a "discardable item". % This also has the benefit of providing glue before the page break if % there isn't enough space.) \vskip0pt plus \dimen0 \penalty-100 \vskip0pt plus -\dimen0 \vskip \dimen0 \penalty9999 \vskip -\dimen0 \penalty0\relax % this hides the above glue from \safewhatsit and \dobreak \fi } % @br forces paragraph break (and is undocumented). \let\br = \par % @page forces the start of a new page. % \def\page{\par\vfill\supereject} % @exdent text.... % outputs text on separate line in roman font, starting at standard page margin % This records the amount of indent in the innermost environment. % That's how much \exdent should take out. \newskip\exdentamount % This defn is used inside fill environments such as @defun. \parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} % This defn is used inside nofill environments such as @example. \parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount \leftline{\hskip\leftskip{\rm#1}}}} % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current % paragraph. For more general purposes, use the \margin insertion % class. WHICH is `l' or `r'. Not documented, written for gawk manual. % \newskip\inmarginspacing \inmarginspacing=1cm \def\strutdepth{\dp\strutbox} % \def\doinmargin#1#2{\strut\vadjust{% \nobreak \kern-\strutdepth \vtop to \strutdepth{% \baselineskip=\strutdepth \vss % if you have multiple lines of stuff to put here, you'll need to % make the vbox yourself of the appropriate size. \ifx#1l% \llap{\ignorespaces #2\hskip\inmarginspacing}% \else \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% \fi \null }% }} \def\inleftmargin{\doinmargin l} \def\inrightmargin{\doinmargin r} % % @inmargin{TEXT [, RIGHT-TEXT]} % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; % else use TEXT for both). % \def\inmargin#1{\parseinmargin #1,,\finish} \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \def\lefttext{#1}% have both texts \def\righttext{#2}% \else \def\lefttext{#1}% have only one text \def\righttext{#1}% \fi % \ifodd\pageno \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin \else \def\temp{\inleftmargin\lefttext}% \fi \temp } % @include FILE -- \input text of FILE. % \def\include{\parseargusing\filenamecatcodes\includezzz} \def\includezzz#1{% \pushthisfilestack \def\thisfile{#1}% {% \makevalueexpandable % we want to expand any @value in FILE. \turnoffactive % and allow special characters in the expansion \indexnofonts % Allow `@@' and other weird things in file names. \wlog{texinfo.tex: doing @include of #1^^J}% \edef\temp{\noexpand\input #1 }% % % This trickery is to read FILE outside of a group, in case it makes % definitions, etc. \expandafter }\temp \popthisfilestack } \def\filenamecatcodes{% \catcode`\\=\other \catcode`~=\other \catcode`^=\other \catcode`_=\other \catcode`|=\other \catcode`<=\other \catcode`>=\other \catcode`+=\other \catcode`-=\other \catcode`\`=\other \catcode`\'=\other } \def\pushthisfilestack{% \expandafter\pushthisfilestackX\popthisfilestack\StackTerm } \def\pushthisfilestackX{% \expandafter\pushthisfilestackY\thisfile\StackTerm } \def\pushthisfilestackY #1\StackTerm #2\StackTerm {% \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% } \def\popthisfilestack{\errthisfilestackempty} \def\errthisfilestackempty{\errmessage{Internal error: the stack of filenames is empty.}} % \def\thisfile{} % @center line % outputs that line, centered. % \parseargdef\center{% \ifhmode \let\centersub\centerH \else \let\centersub\centerV \fi \centersub{\hfil \ignorespaces#1\unskip \hfil}% \let\centersub\relax % don't let the definition persist, just in case } \def\centerH#1{{% \hfil\break \advance\hsize by -\leftskip \advance\hsize by -\rightskip \line{#1}% \break }} % \newcount\centerpenalty \def\centerV#1{% % The idea here is the same as in \startdefun, \cartouche, etc.: if % @center is the first thing after a section heading, we need to wipe % out the negative parskip inserted by \sectionheading, but still % prevent a page break here. \centerpenalty = \lastpenalty \ifnum\centerpenalty>10000 \vskip\parskip \fi \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi \line{\kern\leftskip #1\kern\rightskip}% } % @sp n outputs n lines of vertical space % \parseargdef\sp{\vskip #1\baselineskip} % @comment ...line which is ignored... % @c is the same as @comment % @ignore ... @end ignore is another way to write a comment \def\c{\begingroup \catcode`\^^M=\active% \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% \cxxx} {\catcode`\^^M=\active \gdef\cxxx#1^^M{\endgroup}} % \let\comment\c % @paragraphindent NCHARS % We'll use ems for NCHARS, close enough. % NCHARS can also be the word `asis' or `none'. % We cannot feasibly implement @paragraphindent asis, though. % \def\asisword{asis} % no translation, these are keywords \def\noneword{none} % \parseargdef\paragraphindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \defaultparindent = 0pt \else \defaultparindent = #1em \fi \fi \parindent = \defaultparindent } % @exampleindent NCHARS % We'll use ems for NCHARS like @paragraphindent. % It seems @exampleindent asis isn't necessary, but % I preserve it to make it similar to @paragraphindent. \parseargdef\exampleindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \lispnarrowing = 0pt \else \lispnarrowing = #1em \fi \fi } % @firstparagraphindent WORD % If WORD is `none', then suppress indentation of the first paragraph % after a section heading. If WORD is `insert', then do indent at such % paragraphs. % % The paragraph indentation is suppressed or not by calling % \suppressfirstparagraphindent, which the sectioning commands do. % We switch the definition of this back and forth according to WORD. % By default, we suppress indentation. % \def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} \def\insertword{insert} % \parseargdef\firstparagraphindent{% \def\temp{#1}% \ifx\temp\noneword \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent \else\ifx\temp\insertword \let\suppressfirstparagraphindent = \relax \else \errhelp = \EMsimple \errmessage{Unknown @firstparagraphindent option `\temp'}% \fi\fi } % Here is how we actually suppress indentation. Redefine \everypar to % \kern backwards by \parindent, and then reset itself to empty. % % We also make \indent itself not actually do anything until the next % paragraph. % \gdef\dosuppressfirstparagraphindent{% \gdef\indent {\restorefirstparagraphindent \indent}% \gdef\noindent{\restorefirstparagraphindent \noindent}% \global\everypar = {\kern -\parindent \restorefirstparagraphindent}% } % \gdef\restorefirstparagraphindent{% \global\let\indent = \ptexindent \global\let\noindent = \ptexnoindent \global\everypar = {}% } % leave vertical mode without cancelling any first paragraph indent \gdef\imageindent{% \toks0=\everypar \everypar={}% \ptexnoindent \global\everypar=\toks0 } % @refill is a no-op. \let\refill=\relax % @setfilename INFO-FILENAME - ignored \let\setfilename=\comment % @bye. \outer\def\bye{\chappager\pagelabels\tracingstats=1\ptexend} \message{pdf,} % adobe `portable' document format \newcount\tempnum \newcount\lnkcount \newtoks\filename \newcount\filenamelength \newcount\pgn \newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD \newbox\boxA \newbox\boxB \newcount\countA \newif\ifpdf \newif\ifpdfmakepagedest % % For LuaTeX % \newif\iftxiuseunicodedestname \txiuseunicodedestnamefalse % For pdfTeX etc. \ifx\luatexversion\thisisundefined \else % Use Unicode destination names \txiuseunicodedestnametrue % Escape PDF strings with converting UTF-16 from UTF-8 \begingroup \catcode`\%=12 \directlua{ function UTF16oct(str) tex.sprint(string.char(0x5c) .. '376' .. string.char(0x5c) .. '377') for c in string.utfvalues(str) do if c < 0x10000 then tex.sprint( string.format(string.char(0x5c) .. string.char(0x25) .. '03o' .. string.char(0x5c) .. string.char(0x25) .. '03o', math.floor(c / 256), math.floor(c % 256))) else c = c - 0x10000 local c_hi = c / 1024 + 0xd800 local c_lo = c % 1024 + 0xdc00 tex.sprint( string.format(string.char(0x5c) .. string.char(0x25) .. '03o' .. string.char(0x5c) .. string.char(0x25) .. '03o' .. string.char(0x5c) .. string.char(0x25) .. '03o' .. string.char(0x5c) .. string.char(0x25) .. '03o', math.floor(c_hi / 256), math.floor(c_hi % 256), math.floor(c_lo / 256), math.floor(c_lo % 256))) end end end } \endgroup \def\pdfescapestrutfsixteen#1{\directlua{UTF16oct('\luaescapestring{#1}')}} % Escape PDF strings without converting \begingroup \directlua{ function PDFescstr(str) for c in string.bytes(str) do if c <= 0x20 or c >= 0x80 or c == 0x28 or c == 0x29 or c == 0x5c then tex.sprint(-2, string.format(string.char(0x5c) .. string.char(0x25) .. '03o', c)) else tex.sprint(-2, string.char(c)) end end end } % The -2 in the arguments here gives all the input to TeX catcode 12 % (other) or 10 (space), preventing undefined control sequence errors. See % https://lists.gnu.org/archive/html/bug-texinfo/2019-08/msg00031.html % \endgroup \def\pdfescapestring#1{\directlua{PDFescstr('\luaescapestring{#1}')}} \ifnum\luatexversion>84 % For LuaTeX >= 0.85 \def\pdfdest{\pdfextension dest} \let\pdfoutput\outputmode \def\pdfliteral{\pdfextension literal} \def\pdfcatalog{\pdfextension catalog} \def\pdftexversion{\numexpr\pdffeedback version\relax} \let\pdfximage\saveimageresource \let\pdfrefximage\useimageresource \let\pdflastximage\lastsavedimageresourceindex \def\pdfendlink{\pdfextension endlink\relax} \def\pdfoutline{\pdfextension outline} \def\pdfstartlink{\pdfextension startlink} \def\pdffontattr{\pdfextension fontattr} \def\pdfobj{\pdfextension obj} \def\pdflastobj{\numexpr\pdffeedback lastobj\relax} \let\pdfpagewidth\pagewidth \let\pdfpageheight\pageheight \edef\pdfhorigin{\pdfvariable horigin} \edef\pdfvorigin{\pdfvariable vorigin} \fi \fi % when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 % can be set). So we test for \relax and 0 as well as being undefined. \ifx\pdfoutput\thisisundefined \else \ifx\pdfoutput\relax \else \ifcase\pdfoutput \else \pdftrue \fi \fi \fi \newif\ifpdforxetex \pdforxetexfalse \ifpdf \pdforxetextrue \fi \ifx\XeTeXrevision\thisisundefined\else \pdforxetextrue \fi % Output page labels information. % See PDF reference v.1.7 p.594, section 8.3.1. \ifpdf \def\pagelabels{% \def\title{0 << /P (T-) /S /D >>}% \edef\roman{\the\romancount << /S /r >>}% \edef\arabic{\the\arabiccount << /S /D >>}% % % Page label ranges must be increasing. Remove any duplicates. % (There is a slight chance of this being wrong if e.g. there is % a @contents but no @titlepage, etc.) % \ifnum\romancount=0 \def\roman{}\fi \ifnum\arabiccount=0 \def\title{}% \else \ifnum\romancount=\arabiccount \def\roman{}\fi \fi % \ifnum\romancount<\arabiccount \pdfcatalog{/PageLabels << /Nums [\title \roman \arabic ] >> }\relax \else \pdfcatalog{/PageLabels << /Nums [\title \arabic \roman ] >> }\relax \fi } \else \let\pagelabels\relax \fi \newcount\pagecount \pagecount=0 \newcount\romancount \romancount=0 \newcount\arabiccount \arabiccount=0 \ifpdf \let\ptxadvancepageno\advancepageno \def\advancepageno{% \ptxadvancepageno\global\advance\pagecount by 1 } \fi % PDF uses PostScript string constants for the names of xref targets, % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be % interpreted as a newline (\n), followed by o, d, e. Not good. % % See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and % related messages. The final outcome is that it is up to the TeX user % to double the backslashes and otherwise make the string valid, so % that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to % do this reliably, so we use it. % #1 is a control sequence in which to do the replacements, % which we \xdef. \def\txiescapepdf#1{% \ifx\pdfescapestring\thisisundefined % No primitive available; should we give a warning or log? % Many times it won't matter. \xdef#1{#1}% \else % The expandable \pdfescapestring primitive escapes parentheses, % backslashes, and other special chars. \xdef#1{\pdfescapestring{#1}}% \fi } \def\txiescapepdfutfsixteen#1{% \ifx\pdfescapestrutfsixteen\thisisundefined % No UTF-16 converting macro available. \txiescapepdf{#1}% \else \xdef#1{\pdfescapestrutfsixteen{#1}}% \fi } \newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images with PDF output, and none of those formats could be found. (.eps cannot be supported due to the design of the PDF format; use regular TeX (DVI output) for that.)} \ifpdf % % Color manipulation macros using ideas from pdfcolor.tex, % except using rgb instead of cmyk; the latter is said to render as a % very dark gray on-screen and a very dark halftone in print, instead % of actual black. The dark red here is dark enough to print on paper as % nearly black, but still distinguishable for online viewing. We use % black by default, though. \def\rgbDarkRed{0.50 0.09 0.12} \def\rgbBlack{0 0 0} % % rg sets the color for filling (usual text, etc.); % RG sets the color for stroking (thin rules, e.g., normal _'s). \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} % % Set color, and create a mark which defines \thiscolor accordingly, % so that \makeheadline knows which color to restore. \def\curcolor{0 0 0}% \def\setcolor#1{% \ifx#1\curcolor\else \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}% \domark \pdfsetcolor{#1}% \xdef\curcolor{#1}% \fi } % \let\maincolor\rgbBlack \pdfsetcolor{\maincolor} \edef\thiscolor{\maincolor} \def\currentcolordefs{} % \def\makefootline{% \baselineskip24pt \line{\pdfsetcolor{\maincolor}\the\footline}% } % \def\makeheadline{% \vbox to 0pt{% \vskip-22.5pt \line{% \vbox to8.5pt{}% % Extract \thiscolor definition from the marks. \getcolormarks % Typeset the headline with \maincolor, then restore the color. \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% }% \vss }% \nointerlineskip } % % \pdfcatalog{/PageMode /UseOutlines} % % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). \def\dopdfimage#1#2#3{% \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% % % pdftex (and the PDF format) support .pdf, .png, .jpg (among % others). Let's try in that order, PDF first since if % someone has a scalable image, presumably better to use that than a % bitmap. \let\pdfimgext=\empty \begingroup \openin 1 #1.pdf \ifeof 1 \openin 1 #1.PDF \ifeof 1 \openin 1 #1.png \ifeof 1 \openin 1 #1.jpg \ifeof 1 \openin 1 #1.jpeg \ifeof 1 \openin 1 #1.JPG \ifeof 1 \errhelp = \nopdfimagehelp \errmessage{Could not find image file #1 for pdf}% \else \gdef\pdfimgext{JPG}% \fi \else \gdef\pdfimgext{jpeg}% \fi \else \gdef\pdfimgext{jpg}% \fi \else \gdef\pdfimgext{png}% \fi \else \gdef\pdfimgext{PDF}% \fi \else \gdef\pdfimgext{pdf}% \fi \closein 1 \endgroup % % without \immediate, ancient pdftex seg faults when the same image is % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) \ifnum\pdftexversion < 14 \immediate\pdfimage \else \immediate\pdfximage \fi \ifdim \wd0 >0pt width \pdfimagewidth \fi \ifdim \wd2 >0pt height \pdfimageheight \fi \ifnum\pdftexversion<13 #1.\pdfimgext \else {#1.\pdfimgext}% \fi \ifnum\pdftexversion < 14 \else \pdfrefximage \pdflastximage \fi} % \def\setpdfdestname#1{{% % We have to set dummies so commands such as @code, and characters % such as \, aren't expanded when present in a section title. \indexnofonts \makevalueexpandable \turnoffactive \iftxiuseunicodedestname \ifx \declaredencoding \latone % Pass through Latin-1 characters. % LuaTeX with byte wise I/O converts Latin-1 characters to Unicode. \else \ifx \declaredencoding \utfeight % Pass through Unicode characters. \else % Use ASCII approximations in destination names. \passthroughcharsfalse \fi \fi \else % Use ASCII approximations in destination names. \passthroughcharsfalse \fi \def\pdfdestname{#1}% \txiescapepdf\pdfdestname }} % \def\setpdfoutlinetext#1{{% \indexnofonts \makevalueexpandable \turnoffactive \ifx \declaredencoding \latone % The PDF format can use an extended form of Latin-1 in bookmark % strings. See Appendix D of the PDF Reference, Sixth Edition, for % the "PDFDocEncoding". \passthroughcharstrue % Pass through Latin-1 characters. % LuaTeX: Convert to Unicode % pdfTeX: Use Latin-1 as PDFDocEncoding \def\pdfoutlinetext{#1}% \else \ifx \declaredencoding \utfeight \ifx\luatexversion\thisisundefined % For pdfTeX with UTF-8. % TODO: the PDF format can use UTF-16 in bookmark strings, % but the code for this isn't done yet. % Use ASCII approximations. \passthroughcharsfalse \def\pdfoutlinetext{#1}% \else % For LuaTeX with UTF-8. % Pass through Unicode characters for title texts. \passthroughcharstrue \def\pdfoutlinetext{#1}% \fi \else % For non-Latin-1 or non-UTF-8 encodings. % Use ASCII approximations. \passthroughcharsfalse \def\pdfoutlinetext{#1}% \fi \fi % LuaTeX: Convert to UTF-16 % pdfTeX: Use Latin-1 as PDFDocEncoding \txiescapepdfutfsixteen\pdfoutlinetext }} % \def\pdfmkdest#1{% \setpdfdestname{#1}% \safewhatsit{\pdfdest name{\pdfdestname} xyz}% } % % used to mark target names; must be expandable. \def\pdfmkpgn#1{#1} % % by default, use black for everything. \def\urlcolor{\rgbBlack} \let\linkcolor\rgbBlack \def\endlink{\setcolor{\maincolor}\pdfendlink} % % Adding outlines to PDF; macros for calculating structure of outlines % come from Petr Olsak \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% \else \csname#1\endcsname \fi} \def\advancenumber#1{\tempnum=\expnumber{#1}\relax \advance\tempnum by 1 \expandafter\xdef\csname#1\endcsname{\the\tempnum}} % % #1 is the section text, which is what will be displayed in the % outline by the pdf viewer. #2 is the pdf expression for the number % of subentries (or empty, for subsubsections). #3 is the node text, % which might be empty if this toc entry had no corresponding node. % #4 is the page number % \def\dopdfoutline#1#2#3#4{% % Generate a link to the node text if that exists; else, use the % page number. We could generate a destination for the section % text in the case where a section has no node, but it doesn't % seem worth the trouble, since most documents are normally structured. \setpdfoutlinetext{#1} \setpdfdestname{#3} \ifx\pdfdestname\empty \def\pdfdestname{#4}% \fi % \pdfoutline goto name{\pdfmkpgn{\pdfdestname}}#2{\pdfoutlinetext}% } % \def\pdfmakeoutlines{% \begingroup % Read toc silently, to get counts of subentries for \pdfoutline. \def\partentry##1##2##3##4{}% ignore parts in the outlines \def\numchapentry##1##2##3##4{% \def\thischapnum{##2}% \def\thissecnum{0}% \def\thissubsecnum{0}% }% \def\numsecentry##1##2##3##4{% \advancenumber{chap\thischapnum}% \def\thissecnum{##2}% \def\thissubsecnum{0}% }% \def\numsubsecentry##1##2##3##4{% \advancenumber{sec\thissecnum}% \def\thissubsecnum{##2}% }% \def\numsubsubsecentry##1##2##3##4{% \advancenumber{subsec\thissubsecnum}% }% \def\thischapnum{0}% \def\thissecnum{0}% \def\thissubsecnum{0}% % % use \def rather than \let here because we redefine \chapentry et % al. a second time, below. \def\appentry{\numchapentry}% \def\appsecentry{\numsecentry}% \def\appsubsecentry{\numsubsecentry}% \def\appsubsubsecentry{\numsubsubsecentry}% \def\unnchapentry{\numchapentry}% \def\unnsecentry{\numsecentry}% \def\unnsubsecentry{\numsubsecentry}% \def\unnsubsubsecentry{\numsubsubsecentry}% \readdatafile{toc}% % % Read toc second time, this time actually producing the outlines. % The `-' means take the \expnumber as the absolute number of % subentries, which we calculated on our first read of the .toc above. % % We use the node names as the destinations. % % Currently we prefix the section name with the section number % for chapter and appendix headings only in order to avoid too much % horizontal space being required in the PDF viewer. \def\numchapentry##1##2##3##4{% \dopdfoutline{##2 ##1}{count-\expnumber{chap##2}}{##3}{##4}}% \def\unnchapentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% \def\numsubsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% \def\numsubsubsecentry##1##2##3##4{% count is always zero \dopdfoutline{##1}{}{##3}{##4}}% % % PDF outlines are displayed using system fonts, instead of % document fonts. Therefore we cannot use special characters, % since the encoding is unknown. For example, the eogonek from % Latin 2 (0xea) gets translated to a | character. Info from % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. % % TODO this right, we have to translate 8-bit characters to % their "best" equivalent, based on the @documentencoding. Too % much work for too little return. Just use the ASCII equivalents % we use for the index sort strings. % \indexnofonts \setupdatafile % We can have normal brace characters in the PDF outlines, unlike % Texinfo index files. So set that up. \def\{{\lbracecharliteral}% \def\}{\rbracecharliteral}% \catcode`\\=\active \otherbackslash \input \tocreadfilename \endgroup } {\catcode`[=1 \catcode`]=2 \catcode`{=\other \catcode`}=\other \gdef\lbracecharliteral[{]% \gdef\rbracecharliteral[}]% ] % \def\skipspaces#1{\def\PP{#1}\def\D{|}% \ifx\PP\D\let\nextsp\relax \else\let\nextsp\skipspaces \addtokens{\filename}{\PP}% \advance\filenamelength by 1 \fi \nextsp} \def\getfilename#1{% \filenamelength=0 % If we don't expand the argument now, \skipspaces will get % snagged on things like "@value{foo}". \edef\temp{#1}% \expandafter\skipspaces\temp|\relax } \ifnum\pdftexversion < 14 \let \startlink \pdfannotlink \else \let \startlink \pdfstartlink \fi % make a live url in pdf output. \def\pdfurl#1{% \begingroup % it seems we really need yet another set of dummies; have not % tried to figure out what each command should do in the context % of @url. for now, just make @/ a no-op, that's the only one % people have actually reported a problem with. % \normalturnoffactive \def\@{@}% \let\/=\empty \makevalueexpandable % do we want to go so far as to use \indexnofonts instead of just % special-casing \var here? \def\var##1{##1}% % \leavevmode\setcolor{\urlcolor}% \startlink attr{/Border [0 0 0]}% user{/Subtype /Link /A << /S /URI /URI (#1) >>}% \endgroup} % \pdfgettoks - Surround page numbers in #1 with @pdflink. #1 may % be a simple number, or a list of numbers in the case of an index % entry. \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} \def\maketoks{% \expandafter\poptoks\the\toksA|ENDTOKS|\relax \ifx\first0\adn0 \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 \else \ifnum0=\countA\else\makelink\fi \ifx\first.\let\next=\done\else \let\next=\maketoks \addtokens{\toksB}{\the\toksD} \ifx\first,\addtokens{\toksB}{\space}\fi \fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} \def\pdflink#1{\pdflinkpage{#1}{#1}}% \def\pdflinkpage#1#2{% \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} \setcolor{\linkcolor}#2\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} \else % non-pdf mode \let\pdfmkdest = \gobble \let\pdfurl = \gobble \let\endlink = \relax \let\setcolor = \gobble \let\pdfsetcolor = \gobble \let\pdfmakeoutlines = \relax \fi % \ifx\pdfoutput % % For XeTeX % \ifx\XeTeXrevision\thisisundefined \else % % XeTeX version check % \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99996}>-1 % TeX Live 2016 contains XeTeX 0.99996 and xdvipdfmx 20160307. % It can use the `dvipdfmx:config' special (from TeX Live SVN r40941). % For avoiding PDF destination name replacement, we use this special % instead of xdvipdfmx's command line option `-C 0x0010'. \special{dvipdfmx:config C 0x0010} % XeTeX 0.99995+ comes with xdvipdfmx 20160307+. % It can handle Unicode destination names for PDF. \txiuseunicodedestnametrue \else % XeTeX < 0.99996 (TeX Live < 2016) cannot use the % `dvipdfmx:config' special. % So for avoiding PDF destination name replacement, % xdvipdfmx's command line option `-C 0x0010' is necessary. % % XeTeX < 0.99995 can not handle Unicode destination names for PDF % because xdvipdfmx 20150315 has a UTF-16 conversion issue. % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). \txiuseunicodedestnamefalse \fi % % Color support % \def\rgbDarkRed{0.50 0.09 0.12} \def\rgbBlack{0 0 0} % \def\pdfsetcolor#1{\special{pdf:scolor [#1]}} % % Set color, and create a mark which defines \thiscolor accordingly, % so that \makeheadline knows which color to restore. \def\setcolor#1{% \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}% \domark \pdfsetcolor{#1}% } % \def\maincolor{\rgbBlack} \pdfsetcolor{\maincolor} \edef\thiscolor{\maincolor} \def\currentcolordefs{} % \def\makefootline{% \baselineskip24pt \line{\pdfsetcolor{\maincolor}\the\footline}% } % \def\makeheadline{% \vbox to 0pt{% \vskip-22.5pt \line{% \vbox to8.5pt{}% % Extract \thiscolor definition from the marks. \getcolormarks % Typeset the headline with \maincolor, then restore the color. \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% }% \vss }% \nointerlineskip } % % PDF outline support % % Emulate pdfTeX primitive \def\pdfdest name#1 xyz{% \special{pdf:dest (#1) [@thispage /XYZ @xpos @ypos null]}% } % \def\setpdfdestname#1{{% % We have to set dummies so commands such as @code, and characters % such as \, aren't expanded when present in a section title. \indexnofonts \makevalueexpandable \turnoffactive \iftxiuseunicodedestname % Pass through Unicode characters. \else % Use ASCII approximations in destination names. \passthroughcharsfalse \fi \def\pdfdestname{#1}% \txiescapepdf\pdfdestname }} % \def\setpdfoutlinetext#1{{% \turnoffactive % Always use Unicode characters in title texts. \def\pdfoutlinetext{#1}% % For XeTeX, xdvipdfmx converts to UTF-16. % So we do not convert. \txiescapepdf\pdfoutlinetext }} % \def\pdfmkdest#1{% \setpdfdestname{#1}% \safewhatsit{\pdfdest name{\pdfdestname} xyz}% } % % by default, use black for everything. \def\urlcolor{\rgbBlack} \def\linkcolor{\rgbBlack} \def\endlink{\setcolor{\maincolor}\pdfendlink} % \def\dopdfoutline#1#2#3#4{% \setpdfoutlinetext{#1} \setpdfdestname{#3} \ifx\pdfdestname\empty \def\pdfdestname{#4}% \fi % \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A << /S /GoTo /D (\pdfdestname) >> >> }% } % \def\pdfmakeoutlines{% \begingroup % % For XeTeX, counts of subentries are not necessary. % Therefore, we read toc only once. % % We use node names as destinations. % % Currently we prefix the section name with the section number % for chapter and appendix headings only in order to avoid too much % horizontal space being required in the PDF viewer. \def\partentry##1##2##3##4{}% ignore parts in the outlines \def\numchapentry##1##2##3##4{% \dopdfoutline{##2 ##1}{1}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{2}{##3}{##4}}% \def\numsubsecentry##1##2##3##4{% \dopdfoutline{##1}{3}{##3}{##4}}% \def\numsubsubsecentry##1##2##3##4{% \dopdfoutline{##1}{4}{##3}{##4}}% % \let\appentry\numchapentry% \let\appsecentry\numsecentry% \let\appsubsecentry\numsubsecentry% \let\appsubsubsecentry\numsubsubsecentry% \def\unnchapentry##1##2##3##4{% \dopdfoutline{##1}{1}{##3}{##4}}% \let\unnsecentry\numsecentry% \let\unnsubsecentry\numsubsecentry% \let\unnsubsubsecentry\numsubsubsecentry% % % For XeTeX, xdvipdfmx converts strings to UTF-16. % Therefore, the encoding and the language may not be considered. % \indexnofonts \setupdatafile % We can have normal brace characters in the PDF outlines, unlike % Texinfo index files. So set that up. \def\{{\lbracecharliteral}% \def\}{\rbracecharliteral}% \catcode`\\=\active \otherbackslash \input \tocreadfilename \endgroup } {\catcode`[=1 \catcode`]=2 \catcode`{=\other \catcode`}=\other \gdef\lbracecharliteral[{]% \gdef\rbracecharliteral[}]% ] \special{pdf:docview << /PageMode /UseOutlines >> } % ``\special{pdf:tounicode ...}'' is not necessary % because xdvipdfmx converts strings from UTF-8 to UTF-16 without it. % However, due to a UTF-16 conversion issue of xdvipdfmx 20150315, % ``\special{pdf:dest ...}'' cannot handle non-ASCII strings. % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). % \def\skipspaces#1{\def\PP{#1}\def\D{|}% \ifx\PP\D\let\nextsp\relax \else\let\nextsp\skipspaces \addtokens{\filename}{\PP}% \advance\filenamelength by 1 \fi \nextsp} \def\getfilename#1{% \filenamelength=0 % If we don't expand the argument now, \skipspaces will get % snagged on things like "@value{foo}". \edef\temp{#1}% \expandafter\skipspaces\temp|\relax } % make a live url in pdf output. \def\pdfurl#1{% \begingroup % it seems we really need yet another set of dummies; have not % tried to figure out what each command should do in the context % of @url. for now, just make @/ a no-op, that's the only one % people have actually reported a problem with. % \normalturnoffactive \def\@{@}% \let\/=\empty \makevalueexpandable % do we want to go so far as to use \indexnofonts instead of just % special-casing \var here? \def\var##1{##1}% % \leavevmode\setcolor{\urlcolor}% \special{pdf:bann << /Border [0 0 0] /Subtype /Link /A << /S /URI /URI (#1) >> >>}% \endgroup} \def\endlink{\setcolor{\maincolor}\special{pdf:eann}} \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} \def\maketoks{% \expandafter\poptoks\the\toksA|ENDTOKS|\relax \ifx\first0\adn0 \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 \else \ifnum0=\countA\else\makelink\fi \ifx\first.\let\next=\done\else \let\next=\maketoks \addtokens{\toksB}{\the\toksD} \ifx\first,\addtokens{\toksB}{\space}\fi \fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} \def\pdflink#1{\pdflinkpage{#1}{#1}}% \def\pdflinkpage#1#2{% \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A << /S /GoTo /D (#1) >> >>}% \setcolor{\linkcolor}#2\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} % % % @image support % % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). \def\doxeteximage#1#2#3{% \def\xeteximagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% \def\xeteximageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% % % XeTeX (and the PDF format) supports .pdf, .png, .jpg (among % others). Let's try in that order, PDF first since if % someone has a scalable image, presumably better to use that than a % bitmap. \let\xeteximgext=\empty \begingroup \openin 1 #1.pdf \ifeof 1 \openin 1 #1.PDF \ifeof 1 \openin 1 #1.png \ifeof 1 \openin 1 #1.jpg \ifeof 1 \openin 1 #1.jpeg \ifeof 1 \openin 1 #1.JPG \ifeof 1 \errmessage{Could not find image file #1 for XeTeX}% \else \gdef\xeteximgext{JPG}% \fi \else \gdef\xeteximgext{jpeg}% \fi \else \gdef\xeteximgext{jpg}% \fi \else \gdef\xeteximgext{png}% \fi \else \gdef\xeteximgext{PDF}% \fi \else \gdef\xeteximgext{pdf}% \fi \closein 1 \endgroup % % Putting an \hbox around the image can prevent an over-long line % after the image. \hbox\bgroup \def\xetexpdfext{pdf}% \ifx\xeteximgext\xetexpdfext \XeTeXpdffile "#1".\xeteximgext "" \else \def\xetexpdfext{PDF}% \ifx\xeteximgext\xetexpdfext \XeTeXpdffile "#1".\xeteximgext "" \else \XeTeXpicfile "#1".\xeteximgext "" \fi \fi \ifdim \wd0 >0pt width \xeteximagewidth \fi \ifdim \wd2 >0pt height \xeteximageheight \fi \relax \egroup } \fi % \message{fonts,} % Set the baselineskip to #1, and the lineskip and strut size % correspondingly. There is no deep meaning behind these magic numbers % used as factors; they just match (closely enough) what Knuth defined. % \def\lineskipfactor{.08333} \def\strutheightpercent{.70833} \def\strutdepthpercent {.29167} % % can get a sort of poor man's double spacing by redefining this. \def\baselinefactor{1} % \newdimen\textleading \def\setleading#1{% \dimen0 = #1\relax \normalbaselineskip = \baselinefactor\dimen0 \normallineskip = \lineskipfactor\normalbaselineskip \normalbaselines \setbox\strutbox =\hbox{% \vrule width0pt height\strutheightpercent\baselineskip depth \strutdepthpercent \baselineskip }% } % PDF CMaps. See also LaTeX's t1.cmap. % % do nothing with this by default. \expandafter\let\csname cmapOT1\endcsname\gobble \expandafter\let\csname cmapOT1IT\endcsname\gobble \expandafter\let\csname cmapOT1TT\endcsname\gobble % if we are producing pdf, and we have \pdffontattr, then define cmaps. % (\pdffontattr was introduced many years ago, but people still run % older pdftex's; it's easy to conditionalize, so we do.) \ifpdf \ifx\pdffontattr\thisisundefined \else \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1-0) %%Title: (TeX-OT1-0 TeX OT1 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1) /Supplement 0 >> def /CMapName /TeX-OT1-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <23> <26> <0023> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 40 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1IT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1IT-0) %%Title: (TeX-OT1IT-0 TeX OT1IT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1IT) /Supplement 0 >> def /CMapName /TeX-OT1IT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <25> <26> <0025> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 42 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <23> <0023> <24> <00A3> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1IT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1TT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1TT-0) %%Title: (TeX-OT1TT-0 TeX OT1TT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1TT) /Supplement 0 >> def /CMapName /TeX-OT1TT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 5 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> endbfrange 32 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <2191> <0C> <2193> <0D> <0027> <0E> <00A1> <0F> <00BF> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <20> <2423> <27> <2019> <60> <2018> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1TT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% \fi\fi % % This is what gets called when #5 of \setfont is empty. \let\cmap\gobble % % (end of cmaps) % Set the font macro #1 to the font named \fontprefix#2. % #3 is the font's design size, #4 is a scale factor, #5 is the CMap % encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). % Example: % #1 = \textrm % #2 = \rmshape % #3 = 10 % #4 = \mainmagstep % #5 = OT1 % \def\setfont#1#2#3#4#5{% \font#1=\fontprefix#2#3 scaled #4 \csname cmap#5\endcsname#1% \ifx#2\ttshape\hyphenchar#1=-1 \fi \ifx#2\ttbshape\hyphenchar#1=-1 \fi \ifx#2\ttslshape\hyphenchar#1=-1 \fi } % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix % before you read in texinfo.tex. \ifx\fontprefix\thisisundefined \def\fontprefix{cm} \fi % Support font families that don't use the same naming scheme as CM. \def\rmshape{r} \def\rmbshape{bx} % where the normal face is bold \def\bfshape{b} \def\bxshape{bx} \def\ttshape{tt} \def\ttbshape{tt} \def\ttslshape{sltt} \def\itshape{ti} \def\itbshape{bxti} \def\slshape{sl} \def\slbshape{bxsl} \def\sfshape{ss} \def\sfbshape{ss} \def\scshape{csc} \def\scbshape{csc} % Definitions for a main text size of 11pt. (The default in Texinfo.) % \def\definetextfontsizexi{% % Text fonts (11.2pt, magstep1). \def\textnominalsize{11pt} \edef\mainmagstep{\magstephalf} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1095} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstep1}{OT1} \setfont\deftt\ttshape{10}{\magstep1}{OT1TT} \setfont\defsl\slshape{10}{\magstep1}{OT1} \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} \def\df{\let\ttfont=\deftt \let\bffont = \defbf \let\ttslfont=\defttsl \let\slfont=\defsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for math mode superscripts (7pt). \def\sevennominalsize{7pt} \setfont\sevenrm\rmshape{7}{1000}{OT1} \setfont\seventt\ttshape{10}{700}{OT1TT} \setfont\sevenbf\bfshape{10}{700}{OT1} \setfont\sevenit\itshape{7}{1000}{OT1IT} \setfont\sevensl\slshape{10}{700}{OT1} \setfont\sevensf\sfshape{10}{700}{OT1} \setfont\sevensc\scshape{10}{700}{OT1} \setfont\seventtsl\ttslshape{10}{700}{OT1TT} \font\seveni=cmmi7 \font\sevensy=cmsy7 \def\sevenecsize{0700} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter (and unnumbered) fonts (17.28pt). \def\chapnominalsize{17pt} \setfont\chaprm\rmbshape{12}{\magstep2}{OT1} \setfont\chapit\itbshape{10}{\magstep3}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep3}{OT1} \setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} \setfont\chapsf\sfbshape{17}{1000}{OT1} \let\chapbf=\chaprm \setfont\chapsc\scbshape{10}{\magstep3}{OT1} \font\chapi=cmmi12 scaled \magstep2 \font\chapsy=cmsy10 scaled \magstep3 \def\chapecsize{1728} % Section fonts (14.4pt). \def\secnominalsize{14pt} \setfont\secrm\rmbshape{12}{\magstep1}{OT1} \setfont\secrmnotbold\rmshape{12}{\magstep1}{OT1} \setfont\secit\itbshape{10}{\magstep2}{OT1IT} \setfont\secsl\slbshape{10}{\magstep2}{OT1} \setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\secsf\sfbshape{12}{\magstep1}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep2}{OT1} \font\seci=cmmi12 scaled \magstep1 \font\secsy=cmsy10 scaled \magstep2 \def\sececsize{1440} % Subsection fonts (13.15pt). \def\ssecnominalsize{13pt} \setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} \setfont\ssecit\itbshape{10}{1315}{OT1IT} \setfont\ssecsl\slbshape{10}{1315}{OT1} \setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} \setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1315}{OT1} \font\sseci=cmmi12 scaled \magstephalf \font\ssecsy=cmsy10 scaled 1315 \def\ssececsize{1200} % Reduced fonts for @acronym in text (10pt). \def\reducednominalsize{10pt} \setfont\reducedrm\rmshape{10}{1000}{OT1} \setfont\reducedtt\ttshape{10}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{1000}{OT1} \setfont\reducedit\itshape{10}{1000}{OT1IT} \setfont\reducedsl\slshape{10}{1000}{OT1} \setfont\reducedsf\sfshape{10}{1000}{OT1} \setfont\reducedsc\scshape{10}{1000}{OT1} \setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} \font\reducedi=cmmi10 \font\reducedsy=cmsy10 \def\reducedecsize{1000} \textleading = 13.2pt % line spacing for 11pt CM \textfonts % reset the current fonts \rm } % end of 11pt text font size definitions, \definetextfontsizexi % Definitions to make the main text be 10pt Computer Modern, with % section, chapter, etc., sizes following suit. This is for the GNU % Press printing of the Emacs 22 manual. Maybe other manuals in the % future. Used with @smallbook, which sets the leading to 12pt. % \def\definetextfontsizex{% % Text fonts (10pt). \def\textnominalsize{10pt} \edef\mainmagstep{1000} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1000} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstephalf}{OT1} \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} \setfont\defsl\slshape{10}{\magstephalf}{OT1} \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} \def\df{\let\ttfont=\deftt \let\bffont = \defbf \let\slfont=\defsl \let\ttslfont=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for math mode superscripts (7pt). \def\sevennominalsize{7pt} \setfont\sevenrm\rmshape{7}{1000}{OT1} \setfont\seventt\ttshape{10}{700}{OT1TT} \setfont\sevenbf\bfshape{10}{700}{OT1} \setfont\sevenit\itshape{7}{1000}{OT1IT} \setfont\sevensl\slshape{10}{700}{OT1} \setfont\sevensf\sfshape{10}{700}{OT1} \setfont\sevensc\scshape{10}{700}{OT1} \setfont\seventtsl\ttslshape{10}{700}{OT1TT} \font\seveni=cmmi7 \font\sevensy=cmsy7 \def\sevenecsize{0700} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter fonts (14.4pt). \def\chapnominalsize{14pt} \setfont\chaprm\rmbshape{12}{\magstep1}{OT1} \setfont\chapit\itbshape{10}{\magstep2}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep2}{OT1} \setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\chapsf\sfbshape{12}{\magstep1}{OT1} \let\chapbf\chaprm \setfont\chapsc\scbshape{10}{\magstep2}{OT1} \font\chapi=cmmi12 scaled \magstep1 \font\chapsy=cmsy10 scaled \magstep2 \def\chapecsize{1440} % Section fonts (12pt). \def\secnominalsize{12pt} \setfont\secrm\rmbshape{12}{1000}{OT1} \setfont\secit\itbshape{10}{\magstep1}{OT1IT} \setfont\secsl\slbshape{10}{\magstep1}{OT1} \setfont\sectt\ttbshape{12}{1000}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} \setfont\secsf\sfbshape{12}{1000}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep1}{OT1} \font\seci=cmmi12 \font\secsy=cmsy10 scaled \magstep1 \def\sececsize{1200} % Subsection fonts (10pt). \def\ssecnominalsize{10pt} \setfont\ssecrm\rmbshape{10}{1000}{OT1} \setfont\ssecit\itbshape{10}{1000}{OT1IT} \setfont\ssecsl\slbshape{10}{1000}{OT1} \setfont\ssectt\ttbshape{10}{1000}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} \setfont\ssecsf\sfbshape{10}{1000}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1000}{OT1} \font\sseci=cmmi10 \font\ssecsy=cmsy10 \def\ssececsize{1000} % Reduced fonts for @acronym in text (9pt). \def\reducednominalsize{9pt} \setfont\reducedrm\rmshape{9}{1000}{OT1} \setfont\reducedtt\ttshape{9}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{900}{OT1} \setfont\reducedit\itshape{9}{1000}{OT1IT} \setfont\reducedsl\slshape{9}{1000}{OT1} \setfont\reducedsf\sfshape{9}{1000}{OT1} \setfont\reducedsc\scshape{10}{900}{OT1} \setfont\reducedttsl\ttslshape{10}{900}{OT1TT} \font\reducedi=cmmi9 \font\reducedsy=cmsy9 \def\reducedecsize{0900} \divide\parskip by 2 % reduce space between paragraphs \textleading = 12pt % line spacing for 10pt CM \textfonts % reset the current fonts \rm } % end of 10pt text font size definitions, \definetextfontsizex % Fonts for short table of contents. \setfont\shortcontrm\rmshape{12}{1000}{OT1} \setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 \setfont\shortcontsl\slshape{12}{1000}{OT1} \setfont\shortconttt\ttshape{12}{1000}{OT1TT} % We provide the user-level command % @fonttextsize 10 % (or 11) to redefine the text font size. pt is assumed. % \def\xiword{11} \def\xword{10} \def\xwordpt{10pt} % \parseargdef\fonttextsize{% \def\textsizearg{#1}% %\wlog{doing @fonttextsize \textsizearg}% % % Set \globaldefs so that documents can use this inside @tex, since % makeinfo 4.8 does not support it, but we need it nonetheless. % \begingroup \globaldefs=1 \ifx\textsizearg\xword \definetextfontsizex \else \ifx\textsizearg\xiword \definetextfontsizexi \else \errhelp=\EMsimple \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} \fi\fi \endgroup } % % Change the current font style to #1, remembering it in \curfontstyle. % For now, we do not accumulate font styles: @b{@i{foo}} prints foo in % italics, not bold italics. % \def\setfontstyle#1{% \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. \csname #1font\endcsname % change the current font } \def\rm{\fam=0 \setfontstyle{rm}} \def\it{\fam=\itfam \setfontstyle{it}} \def\sl{\fam=\slfam \setfontstyle{sl}} \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} \def\tt{\fam=\ttfam \setfontstyle{tt}} % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf. \newfam\sffam \def\sf{\fam=\sffam \setfontstyle{sf}} % We don't need math for this font style. \def\ttsl{\setfontstyle{ttsl}} % In order for the font changes to affect most math symbols and letters, % we have to define the \textfont of the standard families. % We don't bother to reset \scriptscriptfont; awaiting user need. % \def\resetmathfonts{% \textfont0=\rmfont \textfont1=\ifont \textfont2=\syfont \textfont\itfam=\itfont \textfont\slfam=\slfont \textfont\bffam=\bffont \textfont\ttfam=\ttfont \textfont\sffam=\sffont % % Fonts for superscript. Note that the 7pt fonts are used regardless % of the current font size. \scriptfont0=\sevenrm \scriptfont1=\seveni \scriptfont2=\sevensy \scriptfont\itfam=\sevenit \scriptfont\slfam=\sevensl \scriptfont\bffam=\sevenbf \scriptfont\ttfam=\seventt \scriptfont\sffam=\sevensf } % \defineassignfonts{SIZE} - % Define sequence \assignfontsSIZE, which switches between font sizes % by redefining the meanings of \STYLEfont. (Just \STYLE additionally sets % the current \fam for math mode.) % \def\defineassignfonts#1{% \expandafter\edef\csname assignfonts#1\endcsname{% \let\noexpand\rmfont\csname #1rm\endcsname \let\noexpand\itfont\csname #1it\endcsname \let\noexpand\slfont\csname #1sl\endcsname \let\noexpand\bffont\csname #1bf\endcsname \let\noexpand\ttfont\csname #1tt\endcsname \let\noexpand\smallcaps\csname #1sc\endcsname \let\noexpand\sffont \csname #1sf\endcsname \let\noexpand\ifont \csname #1i\endcsname \let\noexpand\syfont \csname #1sy\endcsname \let\noexpand\ttslfont\csname #1ttsl\endcsname } } \def\assignfonts#1{% \csname assignfonts#1\endcsname } \newif\ifrmisbold % Select smaller font size with the current style. Used to change font size % in, e.g., the LaTeX logo and acronyms. If we are using bold fonts for % normal roman text, also use bold fonts for roman text in the smaller size. \def\switchtolllsize{% \expandafter\assignfonts\expandafter{\lllsize}% \ifrmisbold \let\rmfont\bffont \fi \csname\curfontstyle\endcsname }% \def\switchtolsize{% \expandafter\assignfonts\expandafter{\lsize}% \ifrmisbold \let\rmfont\bffont \fi \csname\curfontstyle\endcsname }% % Define the font-changing commands (all called \...fonts). % Each font-changing command also sets the names \lsize (one size lower) % and \lllsize (three sizes lower). These relative commands are used % in, e.g., the LaTeX logo and acronyms. % % Note: The fonts used for \ifont are for "math italics" (\itfont is for % italics in regular text). \syfont is also used in math mode only. % \def\definefontsetatsize#1#2#3#4#5{% \defineassignfonts{#1}% \expandafter\def\csname #1fonts\endcsname{% \def\curfontsize{#1}% \def\lsize{#2}\def\lllsize{#3}% \csname rmisbold#5\endcsname \csname assignfonts#1\endcsname \resetmathfonts \setleading{#4}% }} \definefontsetatsize{text} {reduced}{smaller}{\textleading}{false} \definefontsetatsize{title} {chap} {subsec} {27pt} {true} \definefontsetatsize{chap} {sec} {text} {19pt} {true} \definefontsetatsize{sec} {subsec} {reduced}{17pt} {true} \definefontsetatsize{ssec} {text} {small} {15pt} {true} \definefontsetatsize{reduced}{small} {smaller}{10.5pt}{false} \definefontsetatsize{small} {smaller}{smaller}{10.5pt}{false} \definefontsetatsize{smaller}{smaller}{smaller}{9.5pt} {false} \def\titlefont#1{{\titlefonts\rm #1}} \let\subsecfonts = \ssecfonts \let\subsubsecfonts = \ssecfonts % Define these just so they can be easily changed for other fonts. \def\angleleft{$\langle$} \def\angleright{$\rangle$} % Set the fonts to use with the @small... environments. \let\smallexamplefonts = \smallfonts % About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample % can fit this many characters: % 8.5x11=86 smallbook=72 a4=90 a5=69 % If we use \scriptfonts (8pt), then we can fit this many characters: % 8.5x11=90+ smallbook=80 a4=90+ a5=77 % For me, subjectively, the few extra characters that fit aren't worth % the additional smallness of 8pt. So I'm making the default 9pt. % % By the way, for comparison, here's what fits with @example (10pt): % 8.5x11=71 smallbook=60 a4=75 a5=58 % --karl, 24jan03. % Set up the default fonts, so we can use them for creating boxes. % \definetextfontsizexi % Check if we are currently using a typewriter font. Since all the % Computer Modern typewriter fonts have zero interword stretch (and % shrink), and it is reasonable to expect all typewriter fonts to have % this property, we can check that font parameter. #1 is what to % print if we are indeed using \tt; #2 is what to print otherwise. \def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} % Same as above, but check for italic font. Actually this also catches % non-italic slanted fonts since it is impossible to distinguish them from % italic fonts. But since this is only used by $ and it uses \sl anyway % this is not a problem. \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} % Check if internal flag is clear, i.e. has not been @set. \def\ifflagclear#1#2#3{% \expandafter\ifx\csname SET#1\endcsname\relax #2\else#3\fi } { \catcode`\'=\active \catcode`\`=\active \gdef\setcodequotes{\let`\codequoteleft \let'\codequoteright} \gdef\setregularquotes{\let`\lq \let'\rq} } \setregularquotes % Allow an option to not use regular directed right quote/apostrophe % (char 0x27), but instead the undirected quote from cmtt (char 0x0d). % The undirected quote is ugly, so don't make it the default, but it % works for pasting with more pdf viewers (at least evince), the % lilypond developers report. xpdf does work with the regular 0x27. % \def\codequoteright{% \ifusingtt {\ifflagclear{txicodequoteundirected}% {\ifflagclear{codequoteundirected}% {'}% {\char'15 }}% {\char'15 }}% {'}% } % and a similar option for the left quote char vs. a grave accent. % Modern fonts display ASCII 0x60 as a grave accent, so some people like % the code environments to do likewise. % \relax disables Spanish ligatures ?` and !` of \tt font. % \def\codequoteleft{% \ifusingtt {\ifflagclear{txicodequotebacktick}% {\ifflagclear{codequotebacktick}% {\relax`}% {\char'22 }}% {\char'22 }}% {\relax`}% } % Commands to set the quote options. % \parseargdef\codequoteundirected{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxicodequoteundirected\endcsname = t% \else\ifx\temp\offword \expandafter\let\csname SETtxicodequoteundirected\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% \fi\fi } % \parseargdef\codequotebacktick{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxicodequotebacktick\endcsname = t% \else\ifx\temp\offword \expandafter\let\csname SETtxicodequotebacktick\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% \fi\fi } % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. \def\noligaturesquoteleft{\relax\lq} % Count depth in font-changes, for error checks \newcount\fontdepth \fontdepth=0 % Font commands. % #1 is the font command (\sl or \it), #2 is the text to slant. % If we are in a monospaced environment, however, 1) always use \ttsl, % and 2) do not add an italic correction. \def\dosmartslant#1#2{% \ifusingtt {{\ttsl #2}\let\next=\relax}% {\def\next{{#1#2}\smartitaliccorrection}}% \next } \def\smartslanted{\dosmartslant\sl} \def\smartitalic{\dosmartslant\it} % Output an italic correction unless the following character is such as % not to need one. \def\smartitaliccorrection{\futurelet\next\smartitaliccorrectionx} \def\smartitaliccorrectionx{% \ifx\next,% \else\ifx\next-% \else\ifx\next.% \else\ifx\next\.% \else\ifx\next\comma% \else\ptexslash \fi\fi\fi\fi\fi \aftersmartic } % @cite unconditionally uses \sl with \smartitaliccorrection. \def\cite#1{{\sl #1}\smartitaliccorrection} % @var unconditionally uses \sl. This gives consistency for % parameter names whether they are in @def, @table @code or a % regular paragraph. % To get ttsl font for @var when used in code context, @set txicodevaristt. % The \null is to reset \spacefactor. \def\aftersmartic{} \def\var#1{% \let\saveaftersmartic = \aftersmartic \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% % \ifflagclear{txicodevaristt}% {\def\varnext{{{\sl #1}}\smartitaliccorrection}}% {\def\varnext{\smartslanted{#1}}}% \varnext } % To be removed after next release \def\SETtxicodevaristt{}% @set txicodevaristt \let\i=\smartitalic \let\slanted=\smartslanted \let\dfn=\smartslanted \let\emph=\smartitalic % @r for roman font, used for code comment \def\r#1{{% \usenormaldash % get --, --- ligatures even if in @code \defcharsdefault % in case on def line \rm #1}} {\catcode`-=\active \gdef\usenormaldash{\let-\normaldash}} % @sc, undocumented @ii. \def\sc#1{{\smallcaps#1}} % smallcaps font \def\ii#1{{\it #1}} % italic font % @b, explicit bold. Also @strong. \def\b#1{{\bf #1}} \let\strong=\b % @sansserif, explicit sans. \def\sansserif#1{{\sf #1}} \newif\iffrenchspacing \frenchspacingfalse % Set sfcode to normal for the chars that usually have another value. % Can't use plain's \frenchspacing because it uses the `\x notation, and % sometimes \x has an active definition that messes things up. % \catcode`@=11 \def\plainfrenchspacing{% \iffrenchspacing\else \frenchspacingtrue \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m \def\endofsentencespacefactor{1000}% for @. and friends \fi } \def\plainnonfrenchspacing{% \iffrenchspacing \frenchspacingfalse \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 \def\endofsentencespacefactor{3000}% for @. and friends \fi } \catcode`@=\other \def\endofsentencespacefactor{3000}% default % @frenchspacing on|off says whether to put extra space after punctuation. % \def\onword{on} \def\offword{off} % \let\frenchspacingsetting\plainnonfrenchspacing % used in output routine \parseargdef\frenchspacing{% \def\temp{#1}% \ifx\temp\onword \let\frenchspacingsetting\plainfrenchspacing \else\ifx\temp\offword \let\frenchspacingsetting\plainnonfrenchspacing \else \errhelp = \EMsimple \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% \fi\fi \frenchspacingsetting } % @t, explicit typewriter. \def\t#1{% {\tt \defcharsdefault \plainfrenchspacing #1}% \null } % @samp. \def\samp#1{{\setcodequotes\lq\tclose{#1}\rq\null}} % @indicateurl is \samp, that is, with quotes. \let\indicateurl=\samp % @code (and similar) prints in typewriter, but with spaces the same % size as normal in the surrounding text, without hyphenation, etc. % This is a subroutine for that. \def\tclose#1{% {% % Change normal interword space to be same as for the current font. \spaceskip = \fontdimen2\font % % Switch to typewriter. \tt % % `\ ' produces the large typewriter interword space. \def\ {{\spaceskip = 0pt{} }}% % \plainfrenchspacing #1% }% \null % reset spacefactor to 1000 } % This is for LuaTeX: It is not sufficient to disable hyphenation at % explicit dashes by setting `\hyphenchar` to -1. \def\dashnobreak{% \normaldash \penalty 10000 } % We must turn on hyphenation at `-' and `_' in @code. % Otherwise, it is too hard to avoid overfull hboxes % in the Emacs manual, the Library manual, etc. % We explicitly allow hyphenation at these characters % using \discretionary. % % Hyphenation at - and hyphenation within words was turned off % by default for the tt fonts using the \hyphenchar parameter of TeX. { \catcode`\-=\active \catcode`\_=\active \catcode`\'=\active \catcode`\`=\active \global\let'=\rq \global\let`=\lq % default definitions % \global\def\code{\begingroup \setcodequotes \catcode\dashChar=\active \catcode\underChar=\active \ifallowcodebreaks \let-\codedash \let_\codeunder \else \let-\dashnobreak \let_\realunder \fi % Given -foo (with a single dash), we do not want to allow a break % after the hyphen. \global\let\codedashprev=\codedash % \codex } % \gdef\codedash{\futurelet\next\codedashfinish} \gdef\codedashfinish{% \normaldash % always output the dash character itself. % % Now, output a discretionary to allow a line break, unless % (a) the next character is a -, or % (b) the preceding character is a -. % E.g., given --posix, we do not want to allow a break after either -. % Given --foo-bar, we do want to allow a break between the - and the b. \ifx\next\codedash \else \ifx\codedashprev\codedash \else \discretionary{}{}{}\fi \fi % we need the space after the = for the case when \next itself is a % space token; it would get swallowed otherwise. As in @code{- a}. \global\let\codedashprev= \next } } \def\normaldash{-} % \def\codex #1{\tclose{#1}\endgroup} \def\codeunder{% % this is all so @math{@code{var_name}+1} can work. In math mode, _ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) % will therefore expand the active definition of _, which is us % (inside @code that is), therefore an endless loop. \ifusingtt{\ifmmode \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. \else\normalunderscore \fi \discretionary{}{}{}}% {\_}% } % An additional complication: the above will allow breaks after, e.g., % each of the four underscores in __typeof__. This is bad. % @allowcodebreaks provides a document-level way to turn breaking at - % and _ on and off. % \newif\ifallowcodebreaks \allowcodebreakstrue \def\keywordtrue{true} \def\keywordfalse{false} \parseargdef\allowcodebreaks{% \def\txiarg{#1}% \ifx\txiarg\keywordtrue \allowcodebreakstrue \else\ifx\txiarg\keywordfalse \allowcodebreaksfalse \else \errhelp = \EMsimple \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% \fi\fi } % For @command, @env, @file, @option quotes seem unnecessary, % so use \code rather than \samp. \let\command=\code \let\env=\code \let\file=\code \let\option=\code % @uref (abbreviation for `urlref') aka @url takes an optional % (comma-separated) second argument specifying the text to display and % an optional third arg as text to display instead of (rather than in % addition to) the url itself. First (mandatory) arg is the url. % TeX-only option to allow changing PDF output to show only the second % arg (if given), and not the url (which is then just the link target). \newif\ifurefurlonlylink % The default \pretolerance setting stops the penalty inserted in % \urefallowbreak being a discouragement to line breaking. Set it to % a negative value for this paragraph only. Hopefully this does not % conflict with redefinitions of \par done elsewhere. \def\nopretolerance{% \pretolerance=-1 \def\par{\endgraf\pretolerance=100 \let\par\endgraf}% } % The main macro is \urefbreak, which allows breaking at expected % places within the url. \def\urefbreak{\nopretolerance \begingroup \urefcatcodes \dourefbreak} \let\uref=\urefbreak % \def\dourefbreak#1{\urefbreakfinish #1,,,\finish} \def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% look for second arg \ifdim\wd0 > 0pt \ifpdf % For pdfTeX and LuaTeX \ifurefurlonlylink % PDF plus option to not display url, show just arg \unhbox0 \else % PDF, normally display both arg and url for consistency, % visibility, if the pdf is eventually used to print, etc. \unhbox0\ (\urefcode{#1})% \fi \else \ifx\XeTeXrevision\thisisundefined \unhbox0\ (\urefcode{#1})% DVI, always show arg and url \else % For XeTeX \ifurefurlonlylink % PDF plus option to not display url, show just arg \unhbox0 \else % PDF, normally display both arg and url for consistency, % visibility, if the pdf is eventually used to print, etc. \unhbox0\ (\urefcode{#1})% \fi \fi \fi \else \urefcode{#1}% only url given, so show it \fi \fi \endlink \endgroup} % Allow line breaks around only a few characters (only). \def\urefcatcodes{% \catcode`\&=\active \catcode`\.=\active \catcode`\#=\active \catcode`\?=\active \catcode`\/=\active } { \urefcatcodes % \global\def\urefcode{\begingroup \setcodequotes \urefcatcodes \let&\urefcodeamp \let.\urefcodedot \let#\urefcodehash \let?\urefcodequest \let/\urefcodeslash \codex } % % By default, they are just regular characters. \global\def&{\normalamp} \global\def.{\normaldot} \global\def#{\normalhash} \global\def?{\normalquest} \global\def/{\normalslash} } \def\urefcodeamp{\urefprebreak \&\urefpostbreak} \def\urefcodedot{\urefprebreak .\urefpostbreak} \def\urefcodehash{\urefprebreak \#\urefpostbreak} \def\urefcodequest{\urefprebreak ?\urefpostbreak} \def\urefcodeslash{\futurelet\next\urefcodeslashfinish} { \catcode`\/=\active \global\def\urefcodeslashfinish{% \urefprebreak \slashChar % Allow line break only after the final / in a sequence of % slashes, to avoid line break between the slashes in http://. \ifx\next/\else \urefpostbreak \fi } } % By default we'll break after the special characters, but some people like to % break before the special chars, so allow that. Also allow no breaking at % all, for manual control. % \parseargdef\urefbreakstyle{% \def\txiarg{#1}% \ifx\txiarg\wordnone \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} \else\ifx\txiarg\wordbefore \def\urefprebreak{\urefallowbreak}\def\urefpostbreak{\nobreak} \else\ifx\txiarg\wordafter \def\urefprebreak{\nobreak}\def\urefpostbreak{\urefallowbreak} \else \errhelp = \EMsimple \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% \fi\fi\fi } \def\wordafter{after} \def\wordbefore{before} \def\wordnone{none} % Allow a ragged right output to aid breaking long URL's. There can % be a break at the \allowbreak with no extra glue (if the existing stretch in % the line is sufficient), a break at the \penalty with extra glue added % at the end of the line, or no break at all here. % Changing the value of the penalty and/or the amount of stretch affects how % preferable one choice is over the other. \def\urefallowbreak{% \penalty0\relax \hskip 0pt plus 2 em\relax \penalty1000\relax \hskip 0pt plus -2 em\relax } \urefbreakstyle after % @url synonym for @uref, since that's how everyone uses it. % \let\url=\uref % rms does not like angle brackets --karl, 17may97. % So now @email is just like @uref, unless we are pdf. % %\def\email#1{\angleleft{\tt #1}\angleright} \ifpdforxetex \def\email#1{\doemail#1,,\finish} \def\doemail#1,#2,#3\finish{\begingroup \unsepspaces \pdfurl{mailto:#1}% \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi \endlink \endgroup} \else \let\email=\uref \fi % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), % `example' (@kbd uses ttsl only inside of @example and friends), % or `code' (@kbd uses normal tty font always). \parseargdef\kbdinputstyle{% \def\txiarg{#1}% \ifx\txiarg\worddistinct \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% \else\ifx\txiarg\wordexample \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% \else\ifx\txiarg\wordcode \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% \else \errhelp = \EMsimple \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% \fi\fi\fi } \def\worddistinct{distinct} \def\wordexample{example} \def\wordcode{code} % Default is `distinct'. \kbdinputstyle distinct \def\kbd#1{% \tclose{\kbdfont\setcodequotes#1}% } % definition of @key that produces a lozenge. Doesn't adjust to text size. %\setfont\keyrm\rmshape{8}{1000}{OT1} %\font\keysy=cmsy9 %\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% % \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% % \vbox{\hrule\kern-0.4pt % \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% % \kern-0.4pt\hrule}% % \kern-.06em\raise0.4pt\hbox{\angleright}}}} % definition of @key with no lozenge. % \def\key#1{{\setregularquotes \tt #1}\null} % @clicksequence{File @click{} Open ...} \def\clicksequence#1{\begingroup #1\endgroup} % @clickstyle @arrow (by default) \parseargdef\clickstyle{\def\click{#1}} \def\click{\arrow} % Typeset a dimension, e.g., `in' or `pt'. The only reason for the % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. % \def\dmn#1{\thinspace #1} % @acronym for "FBI", "NATO", and the like. % We print this one point size smaller, since it's intended for % all-uppercase. % \def\acronym#1{\doacronym #1,,\finish} \def\doacronym#1,#2,#3\finish{% {\switchtolsize #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi \null % reset \spacefactor=1000 } % @abbr for "Comput. J." and the like. % No font change, but don't do end-of-sentence spacing. % \def\abbr#1{\doabbr #1,,\finish} \def\doabbr#1,#2,#3\finish{% {\plainfrenchspacing #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi \null % reset \spacefactor=1000 } % @asis just yields its argument. Used with @table, for example. % \def\asis#1{#1} % @math outputs its argument in math mode. % % One complication: _ usually means subscripts, but it could also mean % an actual _ character, as in @math{@var{some_variable} + 1}. So make % _ active, and distinguish by seeing if the current family is \slfam, % which is what @var uses. { \catcode`\_ = \active \gdef\mathunderscore{% \catcode`\_=\active \def_{\ifnum\fam=\slfam \_\else\sb\fi}% } } % Another complication: we want \\ (and @\) to output a math (or tt) \. % FYI, plain.tex uses \\ as a temporary control sequence (for no % particular reason), but this is not advertised and we don't care. % % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} % \def\math{% \ifmmode\else % only go into math if not in math mode already \tex \mathunderscore \let\\ = \mathbackslash \mathactive % make the texinfo accent commands work in math mode \let\"=\ddot \let\'=\acute \let\==\bar \let\^=\hat \let\`=\grave \let\u=\breve \let\v=\check \let\~=\tilde \let\dotaccent=\dot % have to provide another name for sup operator \let\mathopsup=\sup $\expandafter\finishmath\fi } \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. % Some active characters (such as <) are spaced differently in math. % We have to reset their definitions in case the @math was an argument % to a command which sets the catcodes (such as @item or @section). % { \catcode`^ = \active \catcode`< = \active \catcode`> = \active \catcode`+ = \active \catcode`' = \active \gdef\mathactive{% \let^ = \ptexhat \let< = \ptexless \let> = \ptexgtr \let+ = \ptexplus \let' = \ptexquoteright } } % for @sub and @sup, if in math mode, just do a normal sub/superscript. % If in text, use math to place as sub/superscript, but switch % into text mode, with smaller fonts. This is a different font than the % one used for real math sub/superscripts (8pt vs. 7pt), but let's not % fix it (significant additions to font machinery) until someone notices. % \def\sub{\ifmmode \expandafter\sb \else \expandafter\finishsub\fi} \def\finishsub#1{$\sb{\hbox{\switchtolllsize #1}}$}% % \def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} \def\finishsup#1{$\ptexsp{\hbox{\switchtolllsize #1}}$}% % provide this command from LaTeX as it is very common \def\frac#1#2{{{#1}\over{#2}}} % @displaymath. % \globaldefs is needed to recognize the end lines in \tex and % \end tex. Set \thisenv as @end displaymath is seen before @end tex. {\obeylines \globaldefs=1 \envdef\displaymath{% \tex% \def\thisenv{\displaymath}% \begingroup\let\end\displaymathend% $$% } \def\displaymathend{$$\endgroup\end}% \def\Edisplaymath{% \def\thisenv{\tex}% \end tex }} % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, % except specified as a normal braced arg, so no newlines to worry about. % \def\outfmtnametex{tex} % \long\def\inlinefmt#1{\doinlinefmt #1,\finish} \long\def\doinlinefmt#1,#2,\finish{% \def\inlinefmtname{#1}% \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi } % % @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if % FMTNAME is tex, else ELSE-TEXT. \long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish} \long\def\doinlinefmtifelse#1,#2,#3,#4,\finish{% \def\inlinefmtname{#1}% \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\else \ignorespaces #3\fi } % % For raw, must switch into @tex before parsing the argument, to avoid % setting catcodes prematurely. Doing it this way means that, for % example, @inlineraw{html, foo{bar} gets a parse error instead of being % ignored. But this isn't important because if people want a literal % *right* brace they would have to use a command anyway, so they may as % well use a command to get a left brace too. We could re-use the % delimiter character idea from \verb, but it seems like overkill. % \long\def\inlineraw{\tex \doinlineraw} \long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} \def\doinlinerawtwo#1,#2,\finish{% \def\inlinerawname{#1}% \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi \endgroup % close group opened by \tex. } % @inlineifset{VAR, TEXT} expands TEXT if VAR is @set. % \long\def\inlineifset#1{\doinlineifset #1,\finish} \long\def\doinlineifset#1,#2,\finish{% \def\inlinevarname{#1}% \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \else\ignorespaces#2\fi } % @inlineifclear{VAR, TEXT} expands TEXT if VAR is not @set. % \long\def\inlineifclear#1{\doinlineifclear #1,\finish} \long\def\doinlineifclear#1,#2,\finish{% \def\inlinevarname{#1}% \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \ignorespaces#2\fi } \message{glyphs,} % and logos. % @@ prints an @, as does @atchar{}. \def\@{\char64 } \let\atchar=\@ % @{ @} @lbracechar{} @rbracechar{} all generate brace characters. \def\lbracechar{{\ifusingtt{\char123}{\ensuremath\lbrace}}} \def\rbracechar{{\ifusingtt{\char125}{\ensuremath\rbrace}}} \let\{=\lbracechar \let\}=\rbracechar % @comma{} to avoid , parsing problems. \let\comma = , % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent % Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. \let\, = \ptexc \let\dotaccent = \ptexdot \def\ringaccent#1{{\accent23 #1}} \let\tieaccent = \ptext \let\ubaraccent = \ptexb \let\udotaccent = \d % Other special characters: @questiondown @exclamdown @ordf @ordm % Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. \def\questiondown{?`} \def\exclamdown{!`} \def\ordf{\leavevmode\raise1ex\hbox{\switchtolllsize \underbar{a}}} \def\ordm{\leavevmode\raise1ex\hbox{\switchtolllsize \underbar{o}}} % Dotless i and dotless j, used for accents. \def\imacro{i} \def\jmacro{j} \def\dotless#1{% \def\temp{#1}% \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi \else \errmessage{@dotless can be used only with i or j}% \fi\fi } % The \TeX{} logo, as in plain, but resetting the spacing so that a % period following counts as ending a sentence. (Idea found in latex.) % \edef\TeX{\TeX \spacefactor=1000 } % @LaTeX{} logo. Not quite the same results as the definition in % latex.ltx, since we use a different font for the raised A; it's most % convenient for us to use an explicitly smaller font, rather than using % the \scriptstyle font (since we don't reset \scriptstyle and % \scriptscriptstyle). % \def\LaTeX{% L\kern-.36em {\setbox0=\hbox{T}% \vbox to \ht0{\hbox{% \ifx\textnominalsize\xwordpt % for 10pt running text, lllsize (8pt) is too small for the A in LaTeX. % Revert to plain's \scriptsize, which is 7pt. \count255=\the\fam $\fam\count255 \scriptstyle A$% \else \ifx\curfontsize\smallword % For footnotes and indices \count255=\the\fam $\fam\count255 \scriptstyle A$% \else % For 11pt, we can use our lllsize. \switchtolllsize A% \fi \fi }% \vss }}% \kern-.15em \TeX } \def\smallword{small} % Some math mode symbols. Define \ensuremath to switch into math mode % unless we are already there. Expansion tricks may not be needed here, % but safer, and can't hurt. \def\ensuremath{\ifmmode \expandafter\asis \else\expandafter\ensuredmath \fi} \def\ensuredmath#1{$\relax#1$} % \def\bullet{\ensuremath\ptexbullet} \def\geq{\ensuremath\ge} \def\leq{\ensuremath\le} \def\minus{\ensuremath-} % @dots{} outputs an ellipsis using the current font. % We do .5em per period so that it has the same spacing in the cm % typewriter fonts as three actual period characters; on the other hand, % in other typewriter fonts three periods are wider than 1.5em. So do % whichever is larger. % \def\dots{% \leavevmode \setbox0=\hbox{...}% get width of three periods \ifdim\wd0 > 1.5em \dimen0 = \wd0 \else \dimen0 = 1.5em \fi \hbox to \dimen0{% \hskip 0pt plus.25fil .\hskip 0pt plus1fil .\hskip 0pt plus1fil .\hskip 0pt plus.5fil }% } % @enddots{} is an end-of-sentence ellipsis. % \def\enddots{% \dots \spacefactor=\endofsentencespacefactor } % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. % % Since these characters are used in examples, they should be an even number of % \tt widths. Each \tt character is 1en, so two makes it 1em. % \def\point{$\star$} \def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} \def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} \def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} \def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} % The @error{} command. % Adapted from the TeXbook's \boxit. % \newbox\errorbox % {\ttfont \global\dimen0 = 3em}% Width of the box. \dimen2 = .55pt % Thickness of rules % The text. (`r' is open on the right, `e' somewhat less so on the left.) \setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} % \setbox\errorbox=\hbox to \dimen0{\hfil \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. \advance\hsize by -2\dimen2 % Rules. \vbox{% \hrule height\dimen2 \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. \kern3pt\vrule width\dimen2}% Space to right. \hrule height\dimen2} \hfil} % \def\error{\leavevmode\lower.7ex\copy\errorbox} % @pounds{} is a sterling sign, which Knuth put in the CM italic font. % \def\pounds{{\ifusingtt{\ecfont\char"BF}{\it\$}}} % @euro{} comes from a separate font, depending on the current style. % We use the free feym* fonts from the eurosym package by Henrik % Theiling, which support regular, slanted, bold and bold slanted (and % "outlined" (blackboard board, sort of) versions, which we don't need). % It is available from http://www.ctan.org/tex-archive/fonts/eurosym. % % Although only regular is the truly official Euro symbol, we ignore % that. The Euro is designed to be slightly taller than the regular % font height. % % feymr - regular % feymo - slanted % feybr - bold % feybo - bold slanted % % There is no good (free) typewriter version, to my knowledge. % A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. % Hmm. % % Also doesn't work in math. Do we need to do math with euro symbols? % Hope not. % % \def\euro{{\eurofont e}} \def\eurofont{% % We set the font at each command, rather than predefining it in % \textfonts and the other font-switching commands, so that % installations which never need the symbol don't have to have the % font installed. % % There is only one designed size (nominal 10pt), so we always scale % that to the current nominal size. % % By the way, simply using "at 1em" works for cmr10 and the like, but % does not work for cmbx10 and other extended/shrunken fonts. % \def\eurosize{\csname\curfontsize nominalsize\endcsname}% % \ifx\curfontstyle\bfstylename % bold: \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize \else % regular: \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize \fi \thiseurofont } % Glyphs from the EC fonts. We don't use \let for the aliases, because % sometimes we redefine the original macro, and the alias should reflect % the redefinition. % % Use LaTeX names for the Icelandic letters. \def\DH{{\ecfont \char"D0}} % Eth \def\dh{{\ecfont \char"F0}} % eth \def\TH{{\ecfont \char"DE}} % Thorn \def\th{{\ecfont \char"FE}} % thorn % \def\guillemetleft{{\ecfont \char"13}} \def\guillemotleft{\guillemetleft} \def\guillemetright{{\ecfont \char"14}} \def\guillemotright{\guillemetright} \def\guilsinglleft{{\ecfont \char"0E}} \def\guilsinglright{{\ecfont \char"0F}} \def\quotedblbase{{\ecfont \char"12}} \def\quotesinglbase{{\ecfont \char"0D}} % \def\L{{\ecfont \char"8A}} % L with stroke \def\l{{\ecfont \char"AA}} % l with stroke % % This positioning is not perfect (see the ogonek LaTeX package), but % we have the precomposed glyphs for the most common cases. We put the % tests to use those glyphs in the single \ogonek macro so we have fewer % dummy definitions to worry about for index entries, etc. % % ogonek is also used with other letters in Lithuanian (IOU), but using % the precomposed glyphs for those is not so easy since they aren't in % the same EC font. \def\ogonek#1{{% \def\temp{#1}% \ifx\temp\macrocharA\Aogonek \else\ifx\temp\macrochara\aogonek \else\ifx\temp\macrocharE\Eogonek \else\ifx\temp\macrochare\eogonek \else \ecfont \setbox0=\hbox{#1}% \ifdim\ht0=1ex\accent"0C #1% \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% \fi \fi\fi\fi\fi }% } \def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} \def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} \def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} \def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} % % Use the European Computer Modern fonts (cm-super in outline format) % for non-CM glyphs. That is ec* for regular text and tc* for the text % companion symbols (LaTeX TS1 encoding). Both are part of the ec % package and follow the same conventions. % \def\ecfont{\etcfont{e}} \def\tcfont{\etcfont{t}} % \def\etcfont#1{% % We can't distinguish serif/sans and italic/slanted, but this % is used for crude hacks anyway (like adding French and German % quotes to documents typeset with CM, where we lose kerning), so % hopefully nobody will notice/care. \edef\ecsize{\csname\curfontsize ecsize\endcsname}% \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% \ifusingtt % typewriter: {\font\thisecfont = #1ctt\ecsize \space at \nominalsize}% % else {\ifx\curfontstyle\bfstylename % bold: \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize \else % regular: \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize \fi}% \thisecfont } % @registeredsymbol - R in a circle. The font for the R should really % be smaller yet, but lllsize is the best we can do for now. % Adapted from the plain.tex definition of \copyright. % \def\registeredsymbol{% $^{{\ooalign{\hfil\raise.07ex\hbox{\switchtolllsize R}% \hfil\crcr\Orb}}% }$% } % @textdegree - the normal degrees sign. % \def\textdegree{% \ifmmode ^\circ \else {\tcfont \char 176}% \fi} % Laurent Siebenmann reports \Orb undefined with: % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 % so we'll define it if necessary. % \ifx\Orb\thisisundefined \def\Orb{\mathhexbox20D} \fi % Quotes. \chardef\quoteleft=`\` \chardef\quoteright=`\' % only change font for tt for correct kerning and to avoid using % \ecfont unless necessary. \def\quotedblleft{% \ifusingtt{{\ecfont\char"10}}{{\char"5C}}% } \def\quotedblright{% \ifusingtt{{\ecfont\char"11}}{{\char`\"}}% } \message{page headings,} \newskip\titlepagetopglue \titlepagetopglue = 1.5in \newskip\titlepagebottomglue \titlepagebottomglue = 2pc % First the title page. Must do @settitle before @titlepage. \newif\ifseenauthor \newif\iffinishedtitlepage % @setcontentsaftertitlepage used to do an implicit @contents or % @shortcontents after @end titlepage, but it is now obsolete. \def\setcontentsaftertitlepage{% \errmessage{@setcontentsaftertitlepage has been removed as a Texinfo command; move your @contents command if you want the contents after the title page.}}% \def\setshortcontentsaftertitlepage{% \errmessage{@setshortcontentsaftertitlepage has been removed as a Texinfo command; move your @shortcontents and @contents commands if you want the contents after the title page.}}% \parseargdef\shorttitlepage{% {\headingsoff \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% \endgroup\page\hbox{}\page}\pageone} \envdef\titlepage{% % Open one extra group, as we want to close it in the middle of \Etitlepage. \begingroup \parindent=0pt \textfonts \headingsoff % Leave some space at the very top of the page. \vglue\titlepagetopglue % No rule at page bottom unless we print one at the top with @title. \finishedtitlepagetrue % % Most title ``pages'' are actually two pages long, with space % at the top of the second. We don't want the ragged left on the second. \let\oldpage = \page \def\page{% \iffinishedtitlepage\else \finishtitlepage \fi \let\page = \oldpage \page \null }% } \def\Etitlepage{% \iffinishedtitlepage\else \finishtitlepage \fi % It is important to do the page break before ending the group, % because the headline and footline are only empty inside the group. % If we use the new definition of \page, we always get a blank page % after the title page, which we certainly don't want. \oldpage \pageone \endgroup % } \def\finishtitlepage{% \vskip4pt \hrule height 2pt width \hsize \vskip\titlepagebottomglue \finishedtitlepagetrue } % Settings used for typesetting titles: no hyphenation, no indentation, % don't worry much about spacing, ragged right. This should be used % inside a \vbox, and fonts need to be set appropriately first. \par should % be specified before the end of the \vbox, since a vbox is a group. % \def\raggedtitlesettings{% \rm \hyphenpenalty=10000 \parindent=0pt \tolerance=5000 \ptexraggedright } % Macros to be used within @titlepage: \let\subtitlerm=\rmfont \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} \parseargdef\title{% \checkenv\titlepage \vbox{\titlefonts \raggedtitlesettings #1\par}% % print a rule at the page bottom also. \finishedtitlepagefalse \vskip4pt \hrule height 4pt width \hsize \vskip4pt } \parseargdef\subtitle{% \checkenv\titlepage {\subtitlefont \rightline{#1}}% } % @author should come last, but may come many times. % It can also be used inside @quotation. % \parseargdef\author{% \def\temp{\quotation}% \ifx\thisenv\temp \def\quotationauthor{#1}% printed in \Equotation. \else \checkenv\titlepage \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi {\secfonts\rm \leftline{#1}}% \fi } % Set up page headings and footings. \let\thispage=\folio \newtoks\evenheadline % headline on even pages \newtoks\oddheadline % headline on odd pages \newtoks\evenchapheadline% headline on even pages with a new chapter \newtoks\oddchapheadline % headline on odd pages with a new chapter \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages % Now make \makeheadline and \makefootline in Plain TeX use those variables \headline={{\textfonts\rm\frenchspacingsetting \ifchapterpage \ifodd\pageno\the\oddchapheadline\else\the\evenchapheadline\fi \else \ifodd\pageno\the\oddheadline\else\the\evenheadline\fi \fi}} \footline={{\textfonts\rm\frenchspacingsetting \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}% \HEADINGShook} \let\HEADINGShook=\relax % Commands to set those variables. % For example, this is what @headings on does % @evenheading @thistitle|@thispage|@thischapter % @oddheading @thischapter|@thispage|@thistitle % @evenfooting @thisfile|| % @oddfooting ||@thisfile \def\evenheading{\parsearg\evenheadingxxx} \def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} \def\evenheadingyyy #1\|#2\|#3\|#4\finish{% \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}} \global\evenchapheadline=\evenheadline} \def\oddheading{\parsearg\oddheadingxxx} \def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} \def\oddheadingyyy #1\|#2\|#3\|#4\finish{% \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}% \global\oddchapheadline=\oddheadline} \parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% \def\evenfooting{\parsearg\evenfootingxxx} \def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} \def\evenfootingyyy #1\|#2\|#3\|#4\finish{% \global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddfooting{\parsearg\oddfootingxxx} \def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} \def\oddfootingyyy #1\|#2\|#3\|#4\finish{% \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% % % Leave some space for the footline. Hopefully ok to assume % @evenfooting will not be used by itself. \global\advance\txipageheight by -12pt \global\advance\vsize by -12pt } \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} % @evenheadingmarks top \thischapter <- chapter at the top of a page % @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page % % The same set of arguments for: % % @oddheadingmarks % @evenfootingmarks % @oddfootingmarks % @everyheadingmarks % @everyfootingmarks % These define \getoddheadingmarks, \getevenheadingmarks, % \getoddfootingmarks, and \getevenfootingmarks, each to one of % \gettopheadingmarks, \getbottomheadingmarks. % \def\evenheadingmarks{\headingmarks{even}{heading}} \def\oddheadingmarks{\headingmarks{odd}{heading}} \def\evenfootingmarks{\headingmarks{even}{footing}} \def\oddfootingmarks{\headingmarks{odd}{footing}} \parseargdef\everyheadingmarks{\headingmarks{even}{heading}{#1} \headingmarks{odd}{heading}{#1} } \parseargdef\everyfootingmarks{\headingmarks{even}{footing}{#1} \headingmarks{odd}{footing}{#1} } % #1 = even/odd, #2 = heading/footing, #3 = top/bottom. \def\headingmarks#1#2#3 {% \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname \global\expandafter\let\csname get#1#2marks\endcsname \temp } \everyheadingmarks bottom \everyfootingmarks bottom % @headings double turns headings on for double-sided printing. % @headings single turns headings on for single-sided printing. % @headings off turns them off. % @headings on same as @headings double, retained for compatibility. % @headings after turns on double-sided headings after this page. % @headings doubleafter turns on double-sided headings after this page. % @headings singleafter turns on single-sided headings after this page. % By default, they are off at the start of a document, % and turned `on' after @end titlepage. \parseargdef\headings{\csname HEADINGS#1\endcsname} \def\headingsoff{% non-global headings elimination \evenheadline={\hfil}\evenfootline={\hfil}\evenchapheadline={\hfil}% \oddheadline={\hfil}\oddfootline={\hfil}\oddchapheadline={\hfil}% } \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting % When we turn headings on, set the page number to 1. \def\pageone{ \global\pageno=1 \global\arabiccount = \pagecount } % For double-sided printing, put current file name in lower left corner, % chapter name on inside top of right hand pages, document % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{% \pageone \HEADINGSdoublex } \let\contentsalignmacro = \chappager % For single-sided printing, chapter title goes across top left of page, % page number on top right. \def\HEADINGSsingle{% \pageone \HEADINGSsinglex } % \def\HEADINGSon{\HEADINGSdouble} % defined by \CHAPPAGon \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} \let\HEADINGSdoubleafter=\HEADINGSafter \def\HEADINGSdoublex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\evenchapheadline={\line{\folio\hfil\thistitle}} \global\oddchapheadline={\line{\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\evenchapheadline={\line{\hfil\folio}} \global\oddchapheadline={\line{\hfil\folio}} \global\let\contentsalignmacro = \chappager } % for @setchapternewpage off \def\HEADINGSsinglechapoff{% \pageone \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\evenchapheadline=\evenheadline \global\oddchapheadline=\oddheadline \global\let\contentsalignmacro = \chappager } % Subroutines used in generating headings % This produces Day Month Year style of output. % Only define if not already defined, in case a txi-??.tex file has set % up a different format (e.g., txi-cs.tex does this). \ifx\today\thisisundefined \def\today{% \number\day\space \ifcase\month \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec \fi \space\number\year} \fi % @settitle line... specifies the title of the document, for headings. % It generates no output of its own. \def\thistitle{\putwordNoTitle} \def\settitle{\parsearg{\gdef\thistitle}} \message{tables,} % Tables -- @table, @ftable, @vtable, @item(x). % default indentation of table text \newdimen\tableindent \tableindent=.8in % default indentation of @itemize and @enumerate text \newdimen\itemindent \itemindent=.3in % margin between end of table item and start of table text. \newdimen\itemmargin \itemmargin=.1in % used internally for \itemindent minus \itemmargin \newdimen\itemmax % Note @table, @ftable, and @vtable define @item, @itemx, etc., with % these defs. % They also define \itemindex % to index the item name in whatever manner is desired (perhaps none). \newif\ifitemxneedsnegativevskip \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} \def\internalBitem{\smallbreak \parsearg\itemzzz} \def\internalBitemx{\itemxpar \parsearg\itemzzz} \def\itemzzz #1{\begingroup % \advance\hsize by -\rightskip \advance\hsize by -\tableindent \setbox0=\hbox{\itemindicate{#1}}% \itemindex{#1}% \nobreak % This prevents a break before @itemx. % % If the item text does not fit in the space we have, put it on a line % by itself, and do not allow a page break either before or after that % line. We do not start a paragraph here because then if the next % command is, e.g., @kindex, the whatsit would get put into the % horizontal list on a line by itself, resulting in extra blank space. \ifdim \wd0>\itemmax % % Make this a paragraph so we get the \parskip glue and wrapping, % but leave it ragged-right. \begingroup \advance\leftskip by-\tableindent \advance\hsize by\tableindent \advance\rightskip by0pt plus1fil\relax \leavevmode\unhbox0\par \endgroup % % We're going to be starting a paragraph, but we don't want the % \parskip glue -- logically it's part of the @item we just started. \nobreak \vskip-\parskip % % Stop a page break at the \parskip glue coming up. However, if % what follows is an environment such as @example, there will be no % \parskip glue; then the negative vskip we just inserted would % cause the example and the item to crash together. So we use this % bizarre value of 10001 as a signal to \aboveenvbreak to insert % \parskip glue after all. Section titles are handled this way also. % \penalty 10001 \endgroup \itemxneedsnegativevskipfalse \else % The item text fits into the space. Start a paragraph, so that the % following text (if any) will end up on the same line. \noindent % Do this with kerns and \unhbox so that if there is a footnote in % the item text, it can migrate to the main vertical list and % eventually be printed. \nobreak\kern-\tableindent \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 \unhbox0 \nobreak\kern\dimen0 \endgroup \itemxneedsnegativevskiptrue \fi } \def\item{\errmessage{@item while not in a list environment}} \def\itemx{\errmessage{@itemx while not in a list environment}} % @table, @ftable, @vtable. \envdef\table{% \let\itemindex\gobble \tablecheck{table}% } \envdef\ftable{% \def\itemindex ##1{\doind {fn}{\code{##1}}}% \tablecheck{ftable}% } \envdef\vtable{% \def\itemindex ##1{\doind {vr}{\code{##1}}}% \tablecheck{vtable}% } \def\tablecheck#1{% \ifnum \the\catcode`\^^M=\active \endgroup \errmessage{This command won't work in this context; perhaps the problem is that we are \inenvironment\thisenv}% \def\next{\doignore{#1}}% \else \let\next\tablex \fi \next } \def\tablex#1{% \def\itemindicate{#1}% \parsearg\tabley } \def\tabley#1{% {% \makevalueexpandable \edef\temp{\noexpand\tablez #1\space\space\space}% \expandafter }\temp \endtablez } \def\tablez #1 #2 #3 #4\endtablez{% \aboveenvbreak \ifnum 0#1>0 \advance \leftskip by #1\mil \fi \ifnum 0#2>0 \tableindent=#2\mil \fi \ifnum 0#3>0 \advance \rightskip by #3\mil \fi \itemmax=\tableindent \advance \itemmax by -\itemmargin \advance \leftskip by \tableindent \exdentamount=\tableindent \parindent = 0pt \parskip = \smallskipamount \ifdim \parskip=0pt \parskip=2pt \fi \let\item = \internalBitem \let\itemx = \internalBitemx } \def\Etable{\endgraf\afterenvbreak} \let\Eftable\Etable \let\Evtable\Etable \let\Eitemize\Etable \let\Eenumerate\Etable % This is the counter used by @enumerate, which is really @itemize \newcount \itemno \envdef\itemize{\parsearg\doitemize} \def\doitemize#1{% \aboveenvbreak \itemmax=\itemindent \advance\itemmax by -\itemmargin \advance\leftskip by \itemindent \exdentamount=\itemindent \parindent=0pt \parskip=\smallskipamount \ifdim\parskip=0pt \parskip=2pt \fi % % Try typesetting the item mark so that if the document erroneously says % something like @itemize @samp (intending @table), there's an error % right away at the @itemize. It's not the best error message in the % world, but it's better than leaving it to the @item. This means if % the user wants an empty mark, they have to say @w{} not just @w. \def\itemcontents{#1}% \setbox0 = \hbox{\itemcontents}% % % @itemize with no arg is equivalent to @itemize @bullet. \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi % \let\item=\itemizeitem } % Definition of @item while inside @itemize and @enumerate. % \def\itemizeitem{% \advance\itemno by 1 % for enumerations {\let\par=\endgraf \smallbreak}% reasonable place to break {% % If the document has an @itemize directly after a section title, a % \nobreak will be last on the list, and \sectionheading will have % done a \vskip-\parskip. In that case, we don't want to zero % parskip, or the item text will crash with the heading. On the % other hand, when there is normal text preceding the item (as there % usually is), we do want to zero parskip, or there would be too much % space. In that case, we won't have a \nobreak before. At least % that's the theory. \ifnum\lastpenalty<10000 \parskip=0in \fi \noindent \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% % \ifinner\else \vadjust{\penalty 1200}% not good to break after first line of item. \fi % We can be in inner vertical mode in a footnote, although an % @itemize looks awful there. }% \flushcr } % \splitoff TOKENS\endmark defines \first to be the first token in % TOKENS, and \rest to be the remainder. % \def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% % Allow an optional argument of an uppercase letter, lowercase letter, % or number, to specify the first label in the enumerated list. No % argument is the same as `1'. % \envparseargdef\enumerate{\enumeratey #1 \endenumeratey} \def\enumeratey #1 #2\endenumeratey{% % If we were given no argument, pretend we were given `1'. \def\thearg{#1}% \ifx\thearg\empty \def\thearg{1}\fi % % Detect if the argument is a single token. If so, it might be a % letter. Otherwise, the only valid thing it can be is a number. % (We will always have one token, because of the test we just made. % This is a good thing, since \splitoff doesn't work given nothing at % all -- the first parameter is undelimited.) \expandafter\splitoff\thearg\endmark \ifx\rest\empty % Only one token in the argument. It could still be anything. % A ``lowercase letter'' is one whose \lccode is nonzero. % An ``uppercase letter'' is one whose \lccode is both nonzero, and % not equal to itself. % Otherwise, we assume it's a number. % % We need the \relax at the end of the \ifnum lines to stop TeX from % continuing to look for a . % \ifnum\lccode\expandafter`\thearg=0\relax \numericenumerate % a number (we hope) \else % It's a letter. \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax \lowercaseenumerate % lowercase letter \else \uppercaseenumerate % uppercase letter \fi \fi \else % Multiple tokens in the argument. We hope it's a number. \numericenumerate \fi } % An @enumerate whose labels are integers. The starting integer is % given in \thearg. % \def\numericenumerate{% \itemno = \thearg \startenumeration{\the\itemno}% } % The starting (lowercase) letter is in \thearg. \def\lowercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more lowercase letters in @enumerate; get a bigger alphabet}% \fi \char\lccode\itemno }% } % The starting (uppercase) letter is in \thearg. \def\uppercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more uppercase letters in @enumerate; get a bigger alphabet} \fi \char\uccode\itemno }% } % Call \doitemize, adding a period to the first argument and supplying the % common last two arguments. Also subtract one from the initial value in % \itemno, since @item increments \itemno. % \def\startenumeration#1{% \advance\itemno by -1 \doitemize{#1.}\flushcr } % @multitable macros % Macros used to set up halign preamble: % \let\endsetuptable\relax \def\xendsetuptable{\endsetuptable} \let\columnfractions\relax \def\xcolumnfractions{\columnfractions} \newif\ifsetpercent % #1 is the @columnfraction, usually a decimal number like .5, but might % be just 1. We just use it, whatever it is. % \def\pickupwholefraction#1 {% \global\advance\colcount by 1 \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% \setuptable } \newcount\colcount \def\setuptable#1{% \def\firstarg{#1}% \ifx\firstarg\xendsetuptable \let\go = \relax \else \ifx\firstarg\xcolumnfractions \global\setpercenttrue \else \ifsetpercent \let\go\pickupwholefraction \else \global\advance\colcount by 1 \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a % separator; typically that is always in the input, anyway. \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% \fi \fi \ifx\go\pickupwholefraction % Put the argument back for the \pickupwholefraction call, so % we'll always have a period there to be parsed. \def\go{\pickupwholefraction#1}% \else \let\go = \setuptable \fi% \fi \go } % @headitem starts a heading row, which we typeset in bold. Assignments % have to be global since we are inside the implicit group of an % alignment entry. \everycr below resets \everytab so we don't have to % undo it ourselves. \def\headitemfont{\b}% for people to use in the template row; not changeable \def\headitem{% \crcr % must appear first \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings \global\everytab={\bf}% can't use \headitemfont since the parsing differs \the\everytab % for the first item }% % % default for tables with no headings. \let\headitemcrhook=\relax % \def\tab{\checkenv\multitable &\the\everytab}% \newtoks\everytab % insert after every tab. % \envdef\multitable{% \vskip\parskip \startsavinginserts % % @item within a multitable starts a normal row. % We use \def instead of \let so that if one of the multitable entries % contains an @itemize, we don't choke on the \item (seen as \crcr aka % \endtemplate) expanding \doitemize. \def\item{\crcr}% % \tolerance=9500 \hbadness=9500 \parskip=0pt \parindent=6pt \overfullrule=0pt \global\colcount=0 % \everycr = {% \noalign{% \global\everytab={}% Reset from possible headitem. \global\colcount=0 % Reset the column counter. % % Check for saved footnotes, etc.: \checkinserts % % Perhaps a \nobreak, then reset: \headitemcrhook \global\let\headitemcrhook=\relax }% }% % \parsearg\domultitable } \def\domultitable#1{% % To parse everything between @multitable and @item: \setuptable#1 \endsetuptable % % This preamble sets up a generic column definition, which will % be used as many times as user calls for columns. % \vtop will set a single line and will also let text wrap and % continue for many paragraphs if desired. \halign\bgroup &% \global\advance\colcount by 1 \strut \vtop{% \advance\hsize by -1\leftskip % Find the correct column width \hsize=\expandafter\csname col\the\colcount\endcsname % \advance\rightskip by -1\rightskip % Zero leaving only any stretch \ifnum\colcount=1 \advance\hsize by\leftskip % Add indent of surrounding text \else % In order to keep entries from bumping into each other. \leftskip=12pt \ifsetpercent \else % If a template has been used \advance\hsize by \leftskip \fi \fi \noindent\ignorespaces##\unskip\strut }\cr } \def\Emultitable{% \crcr \egroup % end the \halign \global\setpercentfalse } \message{conditionals,} % @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotlatex, @ifnotplaintext, % @ifnotxml always succeed. They currently do nothing; we don't % attempt to check whether the conditionals are properly nested. But we % have to remember that they are conditionals, so that @end doesn't % attempt to close an environment group. % \def\makecond#1{% \expandafter\let\csname #1\endcsname = \relax \expandafter\let\csname iscond.#1\endcsname = 1 } \makecond{iftex} \makecond{ifnotdocbook} \makecond{ifnothtml} \makecond{ifnotinfo} \makecond{ifnotlatex} \makecond{ifnotplaintext} \makecond{ifnotxml} % Ignore @ignore, @ifhtml, @ifinfo, and the like. % \def\direntry{\doignore{direntry}} \def\documentdescription{\doignore{documentdescription}} \def\docbook{\doignore{docbook}} \def\html{\doignore{html}} \def\ifdocbook{\doignore{ifdocbook}} \def\ifhtml{\doignore{ifhtml}} \def\ifinfo{\doignore{ifinfo}} \def\iflatex{\doignore{iflatex}} \def\ifnottex{\doignore{ifnottex}} \def\ifplaintext{\doignore{ifplaintext}} \def\ifxml{\doignore{ifxml}} \def\ignore{\doignore{ignore}} \def\latex{\doignore{latex}} \def\menu{\doignore{menu}} \def\xml{\doignore{xml}} % Ignore text until a line `@end #1', keeping track of nested conditionals. % % A count to remember the depth of nesting. \newcount\doignorecount \def\doignore#1{\begingroup % Scan in ``verbatim'' mode: \obeylines \catcode`\@ = \other \catcode`\{ = \other \catcode`\} = \other % % Make sure that spaces turn into tokens that match what \doignoretext wants. \spaceisspace % % Count number of #1's that we've seen. \doignorecount = 0 % % Swallow text until we reach the matching `@end #1'. \dodoignore{#1}% } { \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. \obeylines % % \gdef\dodoignore#1{% % #1 contains the command name as a string, e.g., `ifinfo'. % % Define a command to find the next `@end #1'. \long\def\doignoretext##1^^M@end #1{% \doignoretextyyy##1^^M@#1\_STOP_}% % % And this command to find another #1 command, at the beginning of a % line. (Otherwise, we would consider a line `@c @ifset', for % example, to count as an @ifset for nesting.) \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% % % And now expand that command. \doignoretext ^^M% }% } \def\doignoreyyy#1{% \def\temp{#1}% \ifx\temp\empty % Nothing found. \let\next\doignoretextzzz \else % Found a nested condition, ... \advance\doignorecount by 1 \let\next\doignoretextyyy % ..., look for another. % If we're here, #1 ends with ^^M\ifinfo (for example). \fi \next #1% the token \_STOP_ is present just after this macro. } % We have to swallow the remaining "\_STOP_". % \def\doignoretextzzz#1{% \ifnum\doignorecount = 0 % We have just found the outermost @end. \let\next\enddoignore \else % Still inside a nested condition. \advance\doignorecount by -1 \let\next\doignoretext % Look for the next @end. \fi \next } % Finish off ignored text. { \obeylines% % Ignore anything after the last `@end #1'; this matters in verbatim % environments, where otherwise the newline after an ignored conditional % would result in a blank line in the output. \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% } % @set VAR sets the variable VAR to an empty value. % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. % % Since we want to separate VAR from REST-OF-LINE (which might be % empty), we can't just use \parsearg; we have to insert a space of our % own to delimit the rest of the line, and then take it out again if we % didn't need it. % We rely on the fact that \parsearg sets \catcode`\ =10. % \parseargdef\set{\setyyy#1 \endsetyyy} \def\setyyy#1 #2\endsetyyy{% {% \makevalueexpandable \def\temp{#2}% \edef\next{\gdef\makecsname{SET#1}}% \ifx\temp\empty \next{}% \else \setzzz#2\endsetzzz \fi }% } % Remove the trailing space \setxxx inserted. \def\setzzz#1 \endsetzzz{\next{#1}} % @clear VAR clears (i.e., unsets) the variable VAR. % \parseargdef\clear{% {% \makevalueexpandable \global\expandafter\let\csname SET#1\endcsname=\relax }% } % @value{foo} gets the text saved in variable foo. \def\value{\begingroup\makevalueexpandable\valuexxx} \def\valuexxx#1{\expandablevalue{#1}\endgroup} { \catcode`\-=\active \catcode`\_=\active % \gdef\makevalueexpandable{% \let\value = \expandablevalue % We don't want these characters active, ... \catcode`\-=\other \catcode`\_=\other % ..., but we might end up with active ones in the argument if % we're called from @code, as @code{@value{foo-bar_}}, though. % So \let them to their normal equivalents. \let-\normaldash \let_\normalunderscore } } \def\expandablevalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax {[No value for ``#1'']}% \message{Variable `#1', used in @value, is not set.}% \else \csname SET#1\endcsname \fi } % Like \expandablevalue, but completely expandable (the \message in the % definition above operates at the execution level of TeX). Used when % writing to auxiliary files, due to the expansion that \write does. % If flag is undefined, pass through an unexpanded @value command: maybe it % will be set by the time it is read back in. % % NB flag names containing - or _ may not work here. \def\dummyvalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax \string\value{#1}% \else \csname SET#1\endcsname \fi } % Used for @value's in index entries to form the sort key: expand the @value % if possible, otherwise sort late. \def\indexnofontsvalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax ZZZZZZZ% \else \csname SET#1\endcsname \fi } % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined % with @set. % % To get the special treatment we need for `@end ifset,' we call % \makecond and then redefine. % \makecond{ifset} \def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} \def\doifset#1#2{% {% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname SET#2\endcsname\relax #1% If not set, redefine \next. \fi \expandafter }\next } \def\ifsetfail{\doignore{ifset}} % @ifclear VAR ... @end executes the `...' iff VAR has never been % defined with @set, or has been undefined with @clear. % % The `\else' inside the `\doifset' parameter is a trick to reuse the % above code: if the variable is not set, do nothing, if it is set, % then redefine \next to \ifclearfail. % \makecond{ifclear} \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} \def\ifclearfail{\doignore{ifclear}} % @ifcommandisdefined CMD ... @end executes the `...' if CMD (written % without the @) is in fact defined. We can only feasibly check at the % TeX level, so something like `mathcode' is going to considered % defined even though it is not a Texinfo command. % \makecond{ifcommanddefined} \def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} % \def\doifcmddefined#1#2{{% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname #2\endcsname\relax #1% If not defined, \let\next as above. \fi \expandafter }\next } \def\ifcmddefinedfail{\doignore{ifcommanddefined}} % @ifcommandnotdefined CMD ... handled similar to @ifclear above. \makecond{ifcommandnotdefined} \def\ifcommandnotdefined{% \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} \def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} % Set the `txicommandconditionals' variable, so documents have a way to % test if the @ifcommand...defined conditionals are available. \set txicommandconditionals % @dircategory CATEGORY -- specify a category of the dir file % which this file should belong to. Ignore this in TeX. \let\dircategory=\comment % @defininfoenclose. \let\definfoenclose=\comment \message{indexing,} % Index generation facilities % Define \newwrite to be identical to plain tex's \newwrite % except not \outer, so it can be used within macros and \if's. \edef\newwrite{\makecsname{ptexnewwrite}} % \newindex {foo} defines an index named IX. % It automatically defines \IXindex such that % \IXindex ...rest of line... puts an entry in the index IX. % It also defines \IXindfile to be the number of the output channel for % the file that accumulates this index. The file's extension is IX. % The name of an index should be no more than 2 characters long % for the sake of vms. % \def\newindex#1{% \expandafter\chardef\csname#1indfile\endcsname=0 \expandafter\xdef\csname#1index\endcsname{% % Define @#1index \noexpand\doindex{#1}} } % @defindex foo == \newindex{foo} % \def\defindex{\parsearg\newindex} % Define @defcodeindex, like @defindex except put all entries in @code. % \def\defcodeindex{\parsearg\newcodeindex} % \def\newcodeindex#1{% \expandafter\chardef\csname#1indfile\endcsname=0 \expandafter\xdef\csname#1index\endcsname{% \noexpand\docodeindex{#1}}% } % The default indices: \newindex{cp}% concepts, \newcodeindex{fn}% functions, \newcodeindex{vr}% variables, \newcodeindex{tp}% types, \newcodeindex{ky}% keys \newcodeindex{pg}% and programs. % @synindex foo bar makes index foo feed into index bar. % Do this instead of @defindex foo if you don't want it as a separate index. % % @syncodeindex foo bar similar, but put all entries made for index foo % inside @code. % \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), % #3 the target index (bar). \def\dosynindex#1#2#3{% \requireopenindexfile{#3}% % redefine \fooindfile: \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname \expandafter\let\csname#2indfile\endcsname=\temp % redefine \fooindex: \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% } % Define \doindex, the driver for all index macros. % Argument #1 is generated by the calling \fooindex macro, % and it is the two-letter name of the index. \def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx} \def\doindexxxx #1{\doind{\indexname}{#1}} % like the previous two, but they put @code around the argument. \def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} \def\docodeindexxxx #1{\docind{\indexname}{#1}} % \definedummyword defines \#1 as \string\#1\space, thus effectively % preventing its expansion. This is used only for control words, % not control letters, because the \space would be incorrect for % control characters, but is needed to separate the control word % from whatever follows. % % These can be used both for control words that take an argument and % those that do not. If it is followed by {arg} in the input, then % that will dutifully get written to the index (or wherever). % % For control letters, we have \definedummyletter, which omits the % space. % \def\definedummyword #1{\def#1{\string#1\space}}% \def\definedummyletter#1{\def#1{\string#1}}% % Used for the aux, toc and index files to prevent expansion of Texinfo % commands. Most of the commands are controlled through the % \ifdummies conditional. % \def\atdummies{% \dummiestrue % \definedummyletter\@% \definedummyletter\ % \definedummyletter\{% \definedummyletter\}% \definedummyletter\&% % \definedummyletter\_% \definedummyletter\-% % \definedummyword\subentry % % We want to disable all macros so that they are not expanded by \write. \let\commondummyword\definedummyword \macrolist \let\value\dummyvalue % \turnoffactive } \newif\ifdummies \newif\ifindexnofonts \def\commondummyletter#1{% \expandafter\let\csname\string#1:impl\endcsname#1% \edef#1{% \noexpand\ifindexnofonts % empty expansion \noexpand\else \noexpand\ifdummies\string#1% \noexpand\else \noexpand\jumptwofi % dispose of the \fi \expandafter\noexpand\csname\string#1:impl\endcsname \noexpand\fi \noexpand\fi}% } \def\commondummyaccent#1{% \expandafter\let\csname\string#1:impl\endcsname#1% \edef#1{% \noexpand\ifindexnofonts \noexpand\expandafter % dispose of \else ... \fi \noexpand\asis \noexpand\else \noexpand\ifdummies\string#1% \noexpand\else \noexpand\jumptwofi % dispose of the \fi \expandafter\noexpand\csname\string#1:impl\endcsname \noexpand\fi \noexpand\fi}% } % Like \commondummyaccent but add a \space at the end of the dummy expansion % #2 is the expansion used for \indexnofonts. #2 is always followed by % \asis to remove a pair of following braces. \def\commondummyword#1#2{% \expandafter\let\csname\string#1:impl\endcsname#1% \expandafter\def\csname\string#1:ixnf\endcsname{#2\asis}% \edef#1{% \noexpand\ifindexnofonts \noexpand\expandafter % dispose of \else ... \fi \expandafter\noexpand\csname\string#1:ixnf\endcsname \noexpand\else \noexpand\ifdummies\string#1\space \noexpand\else \noexpand\jumptwofi % dispose of the \fi \fi \expandafter\noexpand\csname\string#1:impl\endcsname \noexpand\fi \noexpand\fi}% } \def\jumptwofi#1\fi\fi{\fi\fi#1} % For \atdummies and \indexnofonts. \atdummies sets % \dummiestrue and \indexnofonts sets \indexnofontstrue. \def\definedummies{ % @-sign is always an escape character when reading auxiliary files \escapechar = `\@ % \commondummyletter\!% \commondummyaccent\"% \commondummyaccent\'% \commondummyletter\*% \commondummyaccent\,% \commondummyletter\.% \commondummyletter\/% \commondummyletter\:% \commondummyaccent\=% \commondummyletter\?% \commondummyaccent\^% \commondummyaccent\`% \commondummyaccent\~% % % Control letters and accents. \commondummyword\u {}% \commondummyword\v {}% \commondummyword\H {}% \commondummyword\dotaccent {}% \commondummyword\ogonek {}% \commondummyword\ringaccent {}% \commondummyword\tieaccent {}% \commondummyword\ubaraccent {}% \commondummyword\udotaccent {}% \commondummyword\dotless {}% % % Texinfo font commands. \commondummyword\b {}% \commondummyword\i {}% \commondummyword\r {}% \commondummyword\sansserif {}% \commondummyword\sc {}% \commondummyword\slanted {}% \commondummyword\t {}% % % Commands that take arguments. \commondummyword\abbr {}% \commondummyword\acronym {}% \commondummyword\anchor {}% \commondummyword\cite {}% \commondummyword\code {}% \commondummyword\command {}% \commondummyword\dfn {}% \commondummyword\dmn {}% \commondummyword\email {}% \commondummyword\emph {}% \commondummyword\env {}% \commondummyword\file {}% \commondummyword\image {}% \commondummyword\indicateurl{}% \commondummyword\inforef {}% \commondummyword\kbd {}% \commondummyword\key {}% \commondummyword\math {}% \commondummyword\option {}% \commondummyword\pxref {}% \commondummyword\ref {}% \commondummyword\samp {}% \commondummyword\strong {}% \commondummyword\tie {}% \commondummyword\U {}% \commondummyword\uref {}% \commondummyword\url {}% \commondummyword\var {}% \commondummyword\verb {}% \commondummyword\w {}% \commondummyword\xref {}% % \commondummyword\AA {AA}% \commondummyword\AE {AE}% \commondummyword\DH {DZZ}% \commondummyword\L {L}% \commondummyword\O {O}% \commondummyword\OE {OE}% \commondummyword\TH {TH}% \commondummyword\aa {aa}% \commondummyword\ae {ae}% \commondummyword\dh {dzz}% \commondummyword\exclamdown {!}% \commondummyword\l {l}% \commondummyword\o {o}% \commondummyword\oe {oe}% \commondummyword\ordf {a}% \commondummyword\ordm {o}% \commondummyword\questiondown {?}% \commondummyword\ss {ss}% \commondummyword\th {th}% % \commondummyword\LaTeX {LaTeX}% \commondummyword\TeX {TeX}% % % Assorted special characters. \commondummyword\ampchar {\normalamp}% \commondummyword\atchar {\@}% \commondummyword\arrow {->}% \commondummyword\backslashchar {}% \commondummyword\bullet {bullet}% \commondummyword\comma {,}% \commondummyword\copyright {copyright}% \commondummyword\dots {...}% \commondummyword\enddots {...}% \commondummyword\entrybreak {}% \commondummyword\equiv {===}% \commondummyword\error {error}% \commondummyword\euro {euro}% \commondummyword\expansion {==>}% \commondummyword\geq {>=}% \commondummyword\guillemetleft {<<}% \commondummyword\guillemetright {>>}% \commondummyword\guilsinglleft {<}% \commondummyword\guilsinglright {>}% \commondummyword\lbracechar {\{}% \commondummyword\leq {<=}% \commondummyword\mathopsup {sup}% \commondummyword\minus {-}% \commondummyword\pounds {pounds}% \commondummyword\point {.}% \commondummyword\print {-|}% \commondummyword\quotedblbase {"}% \commondummyword\quotedblleft {"}% \commondummyword\quotedblright {"}% \commondummyword\quoteleft {`}% \commondummyword\quoteright {'}% \commondummyword\quotesinglbase {,}% \commondummyword\rbracechar {\}}% \commondummyword\registeredsymbol {R}% \commondummyword\result {=>}% \commondummyword\sub {}% \commondummyword\sup {}% \commondummyword\textdegree {o}% } \let\indexlbrace\relax \let\indexrbrace\relax \let\indexatchar\relax \let\indexbackslash\relax {\catcode`\@=0 \catcode`\\=13 @gdef@backslashdisappear{@def\{}} } { \catcode`\<=13 \catcode`\-=13 \catcode`\`=13 \gdef\indexnonalnumdisappear{% \ifflagclear{txiindexlquoteignore}{}{% % @set txiindexlquoteignore makes us ignore left quotes in the sort term. % (Introduced for FSFS 2nd ed.) \let`=\empty }% % \ifflagclear{txiindexbackslashignore}{}{% \backslashdisappear }% \ifflagclear{txiindexhyphenignore}{}{% \def-{}% }% \ifflagclear{txiindexlessthanignore}{}{% \def<{}% }% \ifflagclear{txiindexatsignignore}{}{% \def\@{}% }% } \gdef\indexnonalnumreappear{% \let-\normaldash \let<\normalless } } % \indexnofonts is used when outputting the strings to sort the index % by, and when constructing control sequence names. It eliminates all % control sequences and just writes whatever the best ASCII sort string % would be for a given command (usually its argument). % \def\indexnofonts{% \indexnofontstrue % \def\ { }% \def\@{@}% \def\_{\normalunderscore}% \def\-{}% @- shouldn't affect sorting % \uccode`\1=`\{ \uppercase{\def\{{1}}% \uccode`\1=`\} \uppercase{\def\}{1}}% \let\lbracechar\{% \let\rbracechar\}% % % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. % makeinfo does not expand macros in the argument to @deffn, which ends up % writing an index entry, and texindex isn't prepared for an index sort entry % that starts with \. % % Since macro invocations are followed by braces, we can just redefine them % to take a single TeX argument. The case of a macro invocation that % goes to end-of-line is not handled. % \def\commondummyword##1{\let##1\asis}% \macrolist \let\value\indexnofontsvalue } % #1 is the index name, #2 is the entry text. \def\doind#1#2{% \iflinks {% % \requireopenindexfile{#1}% \edef\writeto{\csname#1indfile\endcsname}% % \def\indextext{#2}% \safewhatsit\doindwrite }% \fi } % Same as \doind, but for code indices \def\docind#1#2{% \iflinks {% % \requireopenindexfile{#1}% \edef\writeto{\csname#1indfile\endcsname}% % \def\indextext{#2}% \safewhatsit\docindwrite }% \fi } % Check if an index file has been opened, and if not, open it. \def\requireopenindexfile#1{% \ifnum\csname #1indfile\endcsname=0 \expandafter\newwrite \csname#1indfile\endcsname \edef\suffix{#1}% % A .fls suffix would conflict with the file extension for the output % of -recorder, so use .f1s instead. \ifx\suffix\indexisfl\def\suffix{f1}\fi % Open the file \immediate\openout\csname#1indfile\endcsname \jobname.\suffix % Using \immediate above here prevents an object entering into the current % box, which could confound checks such as those in \safewhatsit for % preceding skips. \typeout{Writing index file \jobname.\suffix}% \fi} \def\indexisfl{fl} % Definition for writing index entry sort key. { \catcode`\-=13 \gdef\indexwritesortas{% \begingroup \indexnonalnumreappear \indexwritesortasxxx} \gdef\indexwritesortasxxx#1{% \xdef\indexsortkey{#1}\endgroup} } \def\indexwriteseealso#1{ \gdef\pagenumbertext{\string\seealso{#1}}% } \def\indexwriteseeentry#1{ \gdef\pagenumbertext{\string\seeentry{#1}}% } % The default definitions \def\sortas#1{}% \def\seealso#1{\i{\putwordSeeAlso}\ #1}% for sorted index file only \def\putwordSeeAlso{See also} \def\seeentry#1{\i{\putwordSee}\ #1}% for sorted index file only % Given index entry text like "aaa @subentry bbb @sortas{ZZZ}": % * Set \bracedtext to "{aaa}{bbb}" % * Set \fullindexsortkey to "aaa @subentry ZZZ" % * If @seealso occurs, set \pagenumbertext % \def\splitindexentry#1{% \gdef\fullindexsortkey{}% \xdef\bracedtext{}% \def\sep{}% \def\seealso##1{}% \def\seeentry##1{}% \expandafter\doindexsegment#1\subentry\finish\subentry } % append the results from the next segment \def\doindexsegment#1\subentry{% \def\segment{#1}% \ifx\segment\isfinish \else % % Fully expand the segment, throwing away any @sortas directives, and % trim spaces. \edef\trimmed{\segment}% \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% \ifincodeindex \edef\trimmed{\noexpand\code{\trimmed}}% \fi % \xdef\bracedtext{\bracedtext{\trimmed}}% % % Get the string to sort by. Process the segment with all % font commands turned off. \bgroup \let\sortas\indexwritesortas \let\seealso\indexwriteseealso \let\seeentry\indexwriteseeentry \indexnofonts % The braces around the commands are recognized by texindex. \def\lbracechar{{\string\indexlbrace}}% \def\rbracechar{{\string\indexrbrace}}% \let\{=\lbracechar \let\}=\rbracechar \def\@{{\string\indexatchar}}% \def\atchar##1{\@}% \def\backslashchar{{\string\indexbackslash}}% \uccode`\~=`\\ \uppercase{\let~\backslashchar}% % \let\indexsortkey\empty \global\let\pagenumbertext\empty % Execute the segment and throw away the typeset output. This executes % any @sortas or @seealso commands in this segment. \setbox\dummybox = \hbox{\segment}% \ifx\indexsortkey\empty{% \indexnonalnumdisappear \xdef\trimmed{\segment}% \xdef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% \xdef\indexsortkey{\trimmed}% \ifx\indexsortkey\empty \message{Empty index sort key near line \the\inputlineno}% \xdef\indexsortkey{ }% \fi }\fi % % Append to \fullindexsortkey. \edef\tmp{\gdef\noexpand\fullindexsortkey{% \fullindexsortkey\sep\indexsortkey}}% \tmp \egroup \def\sep{\subentry}% % \expandafter\doindexsegment \fi } \def\isfinish{\finish}% \newbox\dummybox % used above \let\subentry\relax % Use \ instead of @ in index files. To support old texi2dvi and texindex. % This works without changing the escape character used in the toc or aux % files because the index entries are fully expanded here, and \string uses % the current value of \escapechar. \def\escapeisbackslash{\escapechar=`\\} % Use \ in index files by default. texi2dvi didn't support @ as the escape % character (as it checked for "\entry" in the files, and not "@entry"). When % the new version of texi2dvi has had a chance to become more prevalent, then % the escape character can change back to @ again. This should be an easy % change to make now because both @ and \ are only used as escape characters in % index files, never standing for themselves. % \set txiindexescapeisbackslash % Write the entry in \indextext to the index file. % \newif\ifincodeindex \def\doindwrite{\incodeindexfalse\doindwritex} \def\docindwrite{\incodeindextrue\doindwritex} \def\doindwritex{% \maybemarginindex % \atdummies % \ifflagclear{txiindexescapeisbackslash}{}{\escapeisbackslash}% % % For texindex which always views { and } as separators. \def\{{\lbracechar{}}% \def\}{\rbracechar{}}% \uccode`\~=`\\ \uppercase{\def~{\backslashchar{}}}% % % Split the entry into primary entry and any subentries, and get the index % sort key. \splitindexentry\indextext % % Set up the complete index entry, with both the sort key and % the original text, including any font commands. We write % three arguments to \entry to the .?? file (four in the % subentry case), texindex reduces to two when writing the .??s % sorted result. % \edef\temp{% \write\writeto{% \string\entry{\fullindexsortkey}% {\ifx\pagenumbertext\empty\noexpand\folio\else\pagenumbertext\fi}% \bracedtext}% }% \temp } % Put the index entry in the margin if desired (undocumented). \def\maybemarginindex{% \ifx\SETmarginindex\relax\else \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \relax\indextext}}% \fi } \let\SETmarginindex=\relax % Take care of unwanted page breaks/skips around a whatsit: % % If a skip is the last thing on the list now, preserve it % by backing up by \lastskip, doing the \write, then inserting % the skip again. Otherwise, the whatsit generated by the % \write or \pdfdest will make \lastskip zero. The result is that % sequences like this: % @end defun % @tindex whatever % @defun ... % will have extra space inserted, because the \medbreak in the % start of the @defun won't see the skip inserted by the @end of % the previous defun. % % But don't do any of this if we're not in vertical mode. We % don't want to do a \vskip and prematurely end a paragraph. % % Avoid page breaks due to these extra skips, too. % % But wait, there is a catch there: % We'll have to check whether \lastskip is zero skip. \ifdim is not % sufficient for this purpose, as it ignores stretch and shrink parts % of the skip. The only way seems to be to check the textual % representation of the skip. % % The following is almost like \def\zeroskipmacro{0.0pt} except that % the ``p'' and ``t'' characters have catcode \other, not 11 (letter). % \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} % \newskip\whatsitskip \newcount\whatsitpenalty % % ..., ready, GO: % \def\safewhatsit#1{\ifhmode #1% \else % \lastskip and \lastpenalty cannot both be nonzero simultaneously. \whatsitskip = \lastskip \edef\lastskipmacro{\the\lastskip}% \whatsitpenalty = \lastpenalty % % If \lastskip is nonzero, that means the last item was a % skip. And since a skip is discardable, that means this % -\whatsitskip glue we're inserting is preceded by a % non-discardable item, therefore it is not a potential % breakpoint, therefore no \nobreak needed. \ifx\lastskipmacro\zeroskipmacro \else \vskip-\whatsitskip \fi % #1% % \ifx\lastskipmacro\zeroskipmacro % If \lastskip was zero, perhaps the last item was a penalty, and % perhaps it was >=10000, e.g., a \nobreak. In that case, we want % to re-insert the same penalty (values >10000 are used for various % signals); since we just inserted a non-discardable item, any % following glue (such as a \parskip) would be a breakpoint. For example: % @deffn deffn-whatever % @vindex index-whatever % Description. % would allow a break between the index-whatever whatsit % and the "Description." paragraph. \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi \else % On the other hand, if we had a nonzero \lastskip, % this make-up glue would be preceded by a non-discardable item % (the whatsit from the \write), so we must insert a \nobreak. \nobreak\vskip\whatsitskip \fi \fi} % The index entry written in the file actually looks like % \entry {sortstring}{page}{topic} % or % \entry {sortstring}{page}{topic}{subtopic} % The texindex program reads in these files and writes files % containing these kinds of lines: % \initial {c} % before the first topic whose initial is c % \entry {topic}{pagelist} % for a topic that is used without subtopics % \primary {topic} % \entry {topic}{} % for the beginning of a topic that is used with subtopics % \secondary {subtopic}{pagelist} % for each subtopic. % \secondary {subtopic}{} % for a subtopic with sub-subtopics % \tertiary {subtopic}{subsubtopic}{pagelist} % for each sub-subtopic. % Define the user-accessible indexing commands % @findex, @vindex, @kindex, @cindex. \def\findex {\fnindex} \def\kindex {\kyindex} \def\cindex {\cpindex} \def\vindex {\vrindex} \def\tindex {\tpindex} \def\pindex {\pgindex} % Define the macros used in formatting output of the sorted index material. % @printindex causes a particular index (the ??s file) to get printed. % It does not print any chapter heading (usually an @unnumbered). % \parseargdef\printindex{\begingroup \dobreak \chapheadingskip{10000}% % \smallfonts \rm \tolerance = 9500 \plainfrenchspacing \everypar = {}% don't want the \kern\-parindent from indentation suppression. % % See comment in \requireopenindexfile. \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi % % See if the index file exists and is nonempty. \openin 1 \jobname.\indexname s \ifeof 1 % \enddoublecolumns gets confused if there is no text in the index, % and it loses the chapter title and the aux file entries for the % index. The easiest way to prevent this problem is to make sure % there is some text. \putwordIndexNonexistent \typeout{No file \jobname.\indexname s.}% \else % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so % it can discover if there is anything in it. \read 1 to \thisline \ifeof 1 \putwordIndexIsEmpty \else \expandafter\printindexzz\thisline\relax\relax\finish% \fi \fi \closein 1 \endgroup} % If the index file starts with a backslash, forgo reading the index % file altogether. If somebody upgrades texinfo.tex they may still have % old index files using \ as the escape character. Reading this would % at best lead to typesetting garbage, at worst a TeX syntax error. \def\printindexzz#1#2\finish{% \ifflagclear{txiindexescapeisbackslash}{% \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1 \ifflagclear{txiskipindexfileswithbackslash}{% \errmessage{% ERROR: A sorted index file in an obsolete format was skipped. To fix this problem, please upgrade your version of 'texi2dvi' or 'texi2pdf' to that at . If you are using an old version of 'texindex' (part of the Texinfo distribution), you may also need to upgrade to a newer version (at least 6.0). You may be able to typeset the index if you run 'texindex \jobname.\indexname' yourself. You could also try setting the 'txiindexescapeisbackslash' flag by running a command like 'texi2dvi -t "@set txiindexescapeisbackslash" \jobname.texi'. If you do this, Texinfo will try to use index files in the old format. If you continue to have problems, deleting the index files and starting again might help (with 'rm \jobname.?? \jobname.??s')% }% }{% (Skipped sorted index file in obsolete format) }% \else \begindoublecolumns \input \jobname.\indexname s \enddoublecolumns \fi }{% \begindoublecolumns \catcode`\\=0\relax % % Make @ an escape character to give macros a chance to work. This % should work because we (hopefully) don't otherwise use @ in index files. %\catcode`\@=12\relax \catcode`\@=0\relax \input \jobname.\indexname s \enddoublecolumns }% } % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. {\catcode`\/=13 \catcode`\-=13 \catcode`\^=13 \catcode`\~=13 \catcode`\_=13 \catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 \catcode`\$=3 \gdef\initialglyphs{% % special control sequences used in the index sort key \let\indexlbrace\{% \let\indexrbrace\}% \let\indexatchar\@% \def\indexbackslash{\math{\backslash}}% % % Some changes for non-alphabetic characters. Using the glyphs from the % math fonts looks more consistent than the typewriter font used elsewhere % for these characters. \uccode`\~=`\\ \uppercase{\def~{\math{\backslash}}} % % In case @\ is used for backslash \uppercase{\let\\=~} % Can't get bold backslash so don't use bold forward slash \catcode`\/=13 \def/{{\secrmnotbold \normalslash}}% \def-{{\normaldash\normaldash}}% en dash `--' \def^{{\chapbf \normalcaret}}% \def~{{\chapbf \normaltilde}}% \def\_{% \leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }% \def|{$\vert$}% \def<{$\less$}% \def>{$\gtr$}% \def+{$\normalplus$}% }} \def\initial{% \bgroup \initialglyphs \initialx } \def\initialx#1{% % Remove any glue we may have, we'll be inserting our own. \removelastskip % % We like breaks before the index initials, so insert a bonus. % The glue before the bonus allows a little bit of space at the % bottom of a column to reduce an increase in inter-line spacing. \nobreak \vskip 0pt plus 5\baselineskip \penalty -300 \vskip 0pt plus -5\baselineskip % % Typeset the initial. Making this add up to a whole number of % baselineskips increases the chance of the dots lining up from column % to column. It still won't often be perfect, because of the stretch % we need before each entry, but it's better. % % No shrink because it confuses \balancecolumns. \vskip 1.67\baselineskip plus 1\baselineskip \leftline{\secfonts \kern-0.05em \secbf #1}% % \secfonts is inside the argument of \leftline so that the change of % \baselineskip will not affect any glue inserted before the vbox that % \leftline creates. % Do our best not to break after the initial. \nobreak \vskip .33\baselineskip plus .1\baselineskip \egroup % \initialglyphs } \newdimen\entryrightmargin \entryrightmargin=0pt % for PDF output, whether to make the text of the entry a link to the page % number. set for @contents and @shortcontents where there is only one % page number. \newif\iflinkentrytext % \entry typesets a paragraph consisting of the text (#1), dot leaders, and % then page number (#2) flushed to the right margin. It is used for index % and table of contents entries. The paragraph is indented by \leftskip. % \def\entry{% \begingroup % % Start a new paragraph if necessary, so our assignments below can't % affect previous text. \par % % No extra space above this paragraph. \parskip = 0in % % When reading the text of entry, convert explicit line breaks % from @* into spaces. The user might give these in long section % titles, for instance. \def\*{\unskip\space\ignorespaces}% \def\entrybreak{\hfil\break}% An undocumented command % % Swallow the left brace of the text (first parameter): \afterassignment\doentry \let\temp = } \def\entrybreak{\unskip\space\ignorespaces}% \def\doentry{% % Save the text of the entry in \boxA \global\setbox\boxA=\hbox\bgroup \bgroup % Instead of the swallowed brace. \noindent \aftergroup\finishentry % And now comes the text of the entry. % Not absorbing as a macro argument reduces the chance of problems % with catcodes occurring. } {\catcode`\@=11 % #1 is the page number \gdef\finishentry#1{% \egroup % end \boxA \dimen@ = \wd\boxA % Length of text of entry % add any leaders and page number to \boxA. \global\setbox\boxA=\hbox\bgroup \ifpdforxetex \iflinkentrytext \pdflinkpage{#1}{\unhbox\boxA}% \else \unhbox\boxA \fi \else \unhbox\boxA \fi % % Get the width of the page numbers, and only use % leaders if they are present. \global\setbox\boxB = \hbox{#1}% \ifdim\wd\boxB = 0pt \null\nobreak\hfill\ % \else % \null\nobreak\indexdotfill % Have leaders before the page number. % \ifpdforxetex \pdfgettoks#1.% \hskip\skip\thinshrinkable\the\toksA \else \hskip\skip\thinshrinkable #1% \fi \fi \egroup % end \boxA % % now output \ifdim\wd\boxB = 0pt \noindent\unhbox\boxA\par \nobreak \else\bgroup % We want the text of the entries to be aligned to the left, and the % page numbers to be aligned to the right. % \parindent = 0pt \advance\leftskip by 0pt plus 1fil \advance\leftskip by 0pt plus -1fill \rightskip = 0pt plus -1fil \advance\rightskip by 0pt plus 1fill % Cause last line, which could consist of page numbers on their own % if the list of page numbers is long, to be aligned to the right. \parfillskip=0pt plus -1fill % \advance\rightskip by \entryrightmargin % Determine how far we can stretch into the margin. % This allows, e.g., "Appendix H GNU Free Documentation License" to % fit on one line in @letterpaper format. \ifdim\entryrightmargin>2.1em \dimen@i=2.1em \else \dimen@i=0em \fi \advance \parfillskip by 0pt minus 1\dimen@i % \dimen@ii = \hsize \advance\dimen@ii by -1\leftskip \advance\dimen@ii by -1\entryrightmargin \advance\dimen@ii by 1\dimen@i \ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line \ifdim\dimen@ > 0.8\dimen@ii % due to long index text % Try to split the text roughly evenly. \dimen@ will be the length of % the first line. \dimen@ = 0.7\dimen@ \dimen@ii = \hsize \ifnum\dimen@>\dimen@ii % If the entry is too long (for example, if it needs more than % two lines), use all the space in the first line. \dimen@ = \dimen@ii \fi \advance\leftskip by 0pt plus 1fill % ragged right \advance \dimen@ by 1\rightskip \parshape = 2 0pt \dimen@ 0em \dimen@ii % Ideally we'd add a finite glue at the end of the first line only, % instead of using \parshape with explicit line lengths, but TeX % doesn't seem to provide a way to do such a thing. % % Indent all lines but the first one. \advance\leftskip by 1em \advance\parindent by -1em \fi\fi \indent % start paragraph \unhbox\boxA % % Do not prefer a separate line ending with a hyphen to fewer lines. \finalhyphendemerits = 0 % % Word spacing - no stretch \spaceskip=\fontdimen2\font minus \fontdimen4\font % \linepenalty=1000 % Discourage line breaks. \hyphenpenalty=5000 % Discourage hyphenation. % \par % format the paragraph \egroup % The \vbox \fi \endgroup }} \newskip\thinshrinkable \skip\thinshrinkable=.15em minus .15em % Like plain.tex's \dotfill, except uses up at least 1 em. % The filll stretch here overpowers both the fil and fill stretch to push % the page number to the right. \def\indexdotfill{\cleaders \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1filll} \def\primary #1{\line{#1\hfil}} \def\secondary{\indententry{0.5cm}} \def\tertiary{\indententry{1cm}} \def\indententry#1#2#3{% \bgroup \leftskip=#1 \entry{#2}{#3}% \egroup } % Define two-column mode, which we use to typeset indexes. % Adapted from the TeXbook, page 416, which is to say, % the manmac.tex format used to print the TeXbook itself. \catcode`\@=11 % private names \newbox\partialpage \newdimen\doublecolumnhsize \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % If not much space left on page, start a new page. \ifdim\pagetotal>0.8\vsize\vfill\eject\fi % % Grab any single-column material above us. \output = {% \savetopmark % \global\setbox\partialpage = \vbox{% % Unvbox the main output page. \unvbox\PAGE \kern-\topskip \kern\baselineskip }% }% \eject % run that output routine to set \partialpage % % Use the double-column output routine for subsequent pages. \output = {\doublecolumnout}% % % Change the page size parameters. We could do this once outside this % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 % format, but then we repeat the same computation. Repeating a couple % of assignments once per index is clearly meaningless for the % execution time, so we may as well do it in one place. % % First we halve the line length, less a little for the gutter between % the columns. We compute the gutter based on the line length, so it % changes automatically with the paper format. The magic constant % below is chosen so that the gutter has the same value (well, +-<1pt) % as it did when we hard-coded it. % % We put the result in a separate register, \doublecolumhsize, so we % can restore it in \pagesofar, after \hsize itself has (potentially) % been clobbered. % \doublecolumnhsize = \hsize \advance\doublecolumnhsize by -.04154\hsize \divide\doublecolumnhsize by 2 \hsize = \doublecolumnhsize % % Get the available space for the double columns -- the normal % (undoubled) page height minus any material left over from the % previous page. \advance\vsize by -\ht\partialpage \vsize = 2\vsize % % For the benefit of balancing columns \advance\baselineskip by 0pt plus 0.5pt } % The double-column output routine for all double-column pages except % the last, which is done by \balancecolumns. % \def\doublecolumnout{% % \savetopmark \splittopskip=\topskip \splitmaxdepth=\maxdepth \dimen@ = \vsize \divide\dimen@ by 2 % % box0 will be the left-hand column, box2 the right. \setbox0=\vsplit\PAGE to\dimen@ \setbox2=\vsplit\PAGE to\dimen@ \global\advance\vsize by 2\ht\partialpage \onepageout\pagesofar % empty except for the first time we are called \unvbox\PAGE \penalty\outputpenalty } % % Re-output the contents of the output page -- any previous material, % followed by the two boxes we just split, in box0 and box2. \def\pagesofar{% \unvbox\partialpage % \hsize = \doublecolumnhsize \wd0=\hsize \wd2=\hsize \hbox to\txipagewidth{\box0\hfil\box2}% } % Finished with double columns. \def\enddoublecolumns{% % The following penalty ensures that the page builder is exercised % _before_ we change the output routine. This is necessary in the % following situation: % % The last section of the index consists only of a single entry. % Before this section, \pagetotal is less than \pagegoal, so no % break occurs before the last section starts. However, the last % section, consisting of \initial and the single \entry, does not % fit on the page and has to be broken off. Without the following % penalty the page builder will not be exercised until \eject % below, and by that time we'll already have changed the output % routine to the \balancecolumns version, so the next-to-last % double-column page will be processed with \balancecolumns, which % is wrong: The two columns will go to the main vertical list, with % the broken-off section in the recent contributions. As soon as % the output routine finishes, TeX starts reconsidering the page % break. The two columns and the broken-off section both fit on the % page, because the two columns now take up only half of the page % goal. When TeX sees \eject from below which follows the final % section, it invokes the new output routine that we've set after % \balancecolumns below; \onepageout will try to fit the two columns % and the final section into the vbox of \txipageheight (see % \pagebody), causing an overfull box. % % Note that glue won't work here, because glue does not exercise the % page builder, unlike penalties (see The TeXbook, pp. 280-281). \penalty0 % \output = {% % Split the last of the double-column material. \savetopmark \balancecolumns }% \eject % call the \output just set \ifdim\pagetotal=0pt % Having called \balancecolumns once, we do not % want to call it again. Therefore, reset \output to its normal % definition right away. \global\output=\expandafter{\the\defaultoutput} % \endgroup % started in \begindoublecolumns % Leave the double-column material on the current page, no automatic % page break. \box\balancedcolumns % % \pagegoal was set to the doubled \vsize above, since we restarted % the current page. We're now back to normal single-column % typesetting, so reset \pagegoal to the normal \vsize. \global\vsize = \txipageheight % \pagegoal = \txipageheight % \else % We had some left-over material. This might happen when \doublecolumnout % is called in \balancecolumns. Try again. \expandafter\enddoublecolumns \fi } \newbox\balancedcolumns \setbox\balancedcolumns=\vbox{shouldnt see this}% % % Only called for the last of the double column material. \doublecolumnout % does the others. \def\balancecolumns{% \setbox0 = \vbox{\unvbox\PAGE}% like \box255 but more efficient, see p.120. \dimen@ = \ht0 \ifdim\dimen@<7\baselineskip % Don't split a short final column in two. \setbox2=\vbox{}% \global\setbox\balancedcolumns=\vbox{\pagesofar}% \else % double the leading vertical space \advance\dimen@ by \topskip \advance\dimen@ by-\baselineskip \divide\dimen@ by 2 % target to split to \dimen@ii = \dimen@ \splittopskip = \topskip % Loop until left column is at least as high as the right column. {% \vbadness = 10000 \loop \global\setbox3 = \copy0 \global\setbox1 = \vsplit3 to \dimen@ \ifdim\ht1<\ht3 \global\advance\dimen@ by 1pt \repeat }% % Now the left column is in box 1, and the right column in box 3. % % Check whether the left column has come out higher than the page itself. % (Note that we have doubled \vsize for the double columns, so % the actual height of the page is 0.5\vsize). \ifdim2\ht1>\vsize % It appears that we have been called upon to balance too much material. % Output some of it with \doublecolumnout, leaving the rest on the page. \setbox\PAGE=\box0 \doublecolumnout \else % Compare the heights of the two columns. \ifdim4\ht1>5\ht3 % Column heights are too different, so don't make their bottoms % flush with each other. \setbox2=\vbox to \ht1 {\unvbox3\vfill}% \setbox0=\vbox to \ht1 {\unvbox1\vfill}% \else % Make column bottoms flush with each other. \setbox2=\vbox to\ht1{\unvbox3\unskip}% \setbox0=\vbox to\ht1{\unvbox1\unskip}% \fi \global\setbox\balancedcolumns=\vbox{\pagesofar}% \fi \fi % } \catcode`\@ = \other \message{sectioning,} % Chapters, sections, etc. % Let's start with @part. \parseargdef\part{\partzzz{#1}} \def\partzzz#1{% \chapoddpage \null \vskip.3\vsize % move it down on the page a bit \begingroup \noindent \titlefonts\rm #1\par % the text \let\lastnode=\empty % no node to associate with \writetocentry{part}{#1}{}% but put it in the toc \headingsoff % no headline or footline on the part page % This outputs a mark at the end of the page that clears \thischapter % and \thissection, as is done in \startcontents. \let\pchapsepmacro\relax \chapmacro{}{Yomitfromtoc}{}% \chapoddpage \endgroup } % \unnumberedno is an oxymoron. But we count the unnumbered % sections so that we can refer to them unambiguously in the pdf % outlines by their "section number". We avoid collisions with chapter % numbers by starting them at 10000. (If a document ever has 10000 % chapters, we're in trouble anyway, I'm sure.) \newcount\unnumberedno \unnumberedno = 10000 \newcount\chapno \newcount\secno \secno=0 \newcount\subsecno \subsecno=0 \newcount\subsubsecno \subsubsecno=0 % This counter is funny since it counts through charcodes of letters A, B, ... \newcount\appendixno \appendixno = `\@ % % \def\appendixletter{\char\the\appendixno} % We do the following ugly conditional instead of the above simple % construct for the sake of pdftex, which needs the actual % letter in the expansion, not just typeset. % \def\appendixletter{% \ifnum\appendixno=`A A% \else\ifnum\appendixno=`B B% \else\ifnum\appendixno=`C C% \else\ifnum\appendixno=`D D% \else\ifnum\appendixno=`E E% \else\ifnum\appendixno=`F F% \else\ifnum\appendixno=`G G% \else\ifnum\appendixno=`H H% \else\ifnum\appendixno=`I I% \else\ifnum\appendixno=`J J% \else\ifnum\appendixno=`K K% \else\ifnum\appendixno=`L L% \else\ifnum\appendixno=`M M% \else\ifnum\appendixno=`N N% \else\ifnum\appendixno=`O O% \else\ifnum\appendixno=`P P% \else\ifnum\appendixno=`Q Q% \else\ifnum\appendixno=`R R% \else\ifnum\appendixno=`S S% \else\ifnum\appendixno=`T T% \else\ifnum\appendixno=`U U% \else\ifnum\appendixno=`V V% \else\ifnum\appendixno=`W W% \else\ifnum\appendixno=`X X% \else\ifnum\appendixno=`Y Y% \else\ifnum\appendixno=`Z Z% % The \the is necessary, despite appearances, because \appendixletter is % expanded while writing the .toc file. \char\appendixno is not % expandable, thus it is written literally, thus all appendixes come out % with the same letter (or @) in the toc without it. \else\char\the\appendixno \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} % Each @chapter defines these (using marks) as the number+name, number % and name of the chapter. Page headings and footings can use % these. @section does likewise. \def\thischapter{} \def\thischapternum{} \def\thischaptername{} \def\thissection{} \def\thissectionnum{} \def\thissectionname{} \newcount\absseclevel % used to calculate proper heading level \newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count % @raisesections: treat @section as chapter, @subsection as section, etc. \def\raisesections{\global\advance\secbase by -1} % @lowersections: treat @chapter as section, @section as subsection, etc. \def\lowersections{\global\advance\secbase by 1} % we only have subsub. \chardef\maxseclevel = 3 % % A numbered section within an unnumbered changes to unnumbered too. % To achieve this, remember the "biggest" unnum. sec. we are currently in: \chardef\unnlevel = \maxseclevel % % Trace whether the current chapter is an appendix or not: % \chapheadtype is "N" or "A", unnumbered chapters are ignored. \def\chapheadtype{N} % Choose a heading macro % #1 is heading type % #2 is heading level % #3 is text for heading \def\genhead#1#2#3{% % Compute the abs. sec. level: \absseclevel=#2 \advance\absseclevel by \secbase % Make sure \absseclevel doesn't fall outside the range: \ifnum \absseclevel < 0 \absseclevel = 0 \else \ifnum \absseclevel > 3 \absseclevel = 3 \fi \fi % The heading type: \def\headtype{#1}% \if \headtype U% \ifnum \absseclevel < \unnlevel \chardef\unnlevel = \absseclevel \fi \else % Check for appendix sections: \ifnum \absseclevel = 0 \edef\chapheadtype{\headtype}% \else \if \headtype A\if \chapheadtype N% \errmessage{@appendix... within a non-appendix chapter}% \fi\fi \fi % Check for numbered within unnumbered: \ifnum \absseclevel > \unnlevel \def\headtype{U}% \else \chardef\unnlevel = 3 \fi \fi % Now print the heading: \if \headtype U% \ifcase\absseclevel \unnumberedzzz{#3}% \or \unnumberedseczzz{#3}% \or \unnumberedsubseczzz{#3}% \or \unnumberedsubsubseczzz{#3}% \fi \else \if \headtype A% \ifcase\absseclevel \appendixzzz{#3}% \or \appendixsectionzzz{#3}% \or \appendixsubseczzz{#3}% \or \appendixsubsubseczzz{#3}% \fi \else \ifcase\absseclevel \chapterzzz{#3}% \or \seczzz{#3}% \or \numberedsubseczzz{#3}% \or \numberedsubsubseczzz{#3}% \fi \fi \fi \suppressfirstparagraphindent } % an interface: \def\numhead{\genhead N} \def\apphead{\genhead A} \def\unnmhead{\genhead U} % @chapter, @appendix, @unnumbered. Increment top-level counter, reset % all lower-level sectioning counters to zero. % % Also set \chaplevelprefix, which we prepend to @float sequence numbers % (e.g., figures), q.v. By default (before any chapter), that is empty. \let\chaplevelprefix = \empty % \outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz \def\chapterzzz#1{% % section resetting is \global in case the chapter is in a group, such % as an @include file. \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\chapno by 1 % % Used for \float. \gdef\chaplevelprefix{\the\chapno.}% \resetallfloatnos % % \putwordChapter can contain complex things in translations. \toks0=\expandafter{\putwordChapter}% \message{\the\toks0 \space \the\chapno}% % % Write the actual heading. \chapmacro{#1}{Ynumbered}{\the\chapno}% % % So @section and the like are numbered underneath this chapter. \global\let\section = \numberedsec \global\let\subsection = \numberedsubsec \global\let\subsubsection = \numberedsubsubsec } \outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz % \def\appendixzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\appendixno by 1 \gdef\chaplevelprefix{\appendixletter.}% \resetallfloatnos % % \putwordAppendix can contain complex things in translations. \toks0=\expandafter{\putwordAppendix}% \message{\the\toks0 \space \appendixletter}% % \chapmacro{#1}{Yappendix}{\appendixletter}% % \global\let\section = \appendixsec \global\let\subsection = \appendixsubsec \global\let\subsubsection = \appendixsubsubsec } % normally unnmhead0 calls unnumberedzzz: \outer\parseargdef\unnumbered{\unnmhead0{#1}} \def\unnumberedzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\unnumberedno by 1 % % Since an unnumbered has no number, no prefix for figures. \global\let\chaplevelprefix = \empty \resetallfloatnos % % This used to be simply \message{#1}, but TeX fully expands the % argument to \message. Therefore, if #1 contained @-commands, TeX % expanded them. For example, in `@unnumbered The @cite{Book}', TeX % expanded @cite (which turns out to cause errors because \cite is meant % to be executed, not expanded). % % Anyway, we don't want the fully-expanded definition of @cite to appear % as a result of the \message, we just want `@cite' itself. We use % \the to achieve this: TeX expands \the only once, % simply yielding the contents of . (We also do this for % the toc entries.) \toks0 = {#1}% \message{(\the\toks0)}% % \chapmacro{#1}{Ynothing}{\the\unnumberedno}% % \global\let\section = \unnumberedsec \global\let\subsection = \unnumberedsubsec \global\let\subsubsection = \unnumberedsubsubsec } % @centerchap is like @unnumbered, but the heading is centered. \outer\parseargdef\centerchap{% \let\centerparametersmaybe = \centerparameters \unnmhead0{#1}% \let\centerparametersmaybe = \relax } % @top is like @unnumbered. \let\top\unnumbered % Sections. % \outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz \def\seczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% } % normally calls appendixsectionzzz: \outer\parseargdef\appendixsection{\apphead1{#1}} \def\appendixsectionzzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% } \let\appendixsec\appendixsection % normally calls unnumberedseczzz: \outer\parseargdef\unnumberedsec{\unnmhead1{#1}} \def\unnumberedseczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% } % Subsections. % % normally calls numberedsubseczzz: \outer\parseargdef\numberedsubsec{\numhead2{#1}} \def\numberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% } % normally calls appendixsubseczzz: \outer\parseargdef\appendixsubsec{\apphead2{#1}} \def\appendixsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno}% } % normally calls unnumberedsubseczzz: \outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} \def\unnumberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno}% } % Subsubsections. % % normally numberedsubsubseczzz: \outer\parseargdef\numberedsubsubsec{\numhead3{#1}} \def\numberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynumbered}% {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% } % normally appendixsubsubseczzz: \outer\parseargdef\appendixsubsubsec{\apphead3{#1}} \def\appendixsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% } % normally unnumberedsubsubseczzz: \outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} \def\unnumberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% } % These macros control what the section commands do, according % to what kind of chapter we are in (ordinary, appendix, or unnumbered). % Define them by default for a numbered chapter. \let\section = \numberedsec \let\subsection = \numberedsubsec \let\subsubsection = \numberedsubsubsec % Define @majorheading, @heading and @subheading \def\majorheading{% {\advance\chapheadingskip by 10pt \chapbreak }% \parsearg\chapheadingzzz } \def\chapheading{\chapbreak \parsearg\chapheadingzzz} \def\chapheadingzzz#1{% \vbox{\chapfonts \raggedtitlesettings #1\par}% \nobreak\bigskip \nobreak \suppressfirstparagraphindent } % @heading, @subheading, @subsubheading. \parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} % These macros generate a chapter, section, etc. heading only % (including whitespace, linebreaking, etc. around it), % given all the information in convenient, parsed form. % Args are the skip and penalty (usually negative) \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} % Parameter controlling skip before chapter headings (if needed) \newskip\chapheadingskip % Define plain chapter starts, and page on/off switching for it. \def\chapbreak{\dobreak \chapheadingskip {-4000}} % Start a new page \def\chappager{\par\vfill\supereject} % \chapoddpage - start on an odd page for a new chapter % Because \domark is called before \chapoddpage, the filler page will % get the headings for the next chapter, which is wrong. But we don't % care -- we just disable all headings on the filler page. \def\chapoddpage{% \chappager \ifodd\pageno \else \begingroup \headingsoff \null \chappager \endgroup \fi } \parseargdef\setchapternewpage{\csname CHAPPAG#1\endcsname\HEADINGSon} \def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak \global\def\HEADINGSon{\HEADINGSsinglechapoff}} \def\CHAPPAGon{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager \global\def\HEADINGSon{\HEADINGSsingle}} \def\CHAPPAGodd{% \global\let\contentsalignmacro = \chapoddpage \global\let\pchapsepmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} \setchapternewpage on % \chapmacro - Chapter opening. % % #1 is the text, #2 is the section type (Ynumbered, Ynothing, % Yappendix, Yomitfromtoc), #3 the chapter number. % Not used for @heading series. % % To test against our argument. \def\Ynothingkeyword{Ynothing} \def\Yappendixkeyword{Yappendix} \def\Yomitfromtockeyword{Yomitfromtoc} % % % Definitions for @thischapter. These can be overridden in translation % files. \def\thischapterAppendix{% \putwordAppendix{} \thischapternum: \thischaptername} \def\thischapterChapter{% \putwordChapter{} \thischapternum: \thischaptername} % % \def\chapmacro#1#2#3{% \expandafter\ifx\thisenv\titlepage\else \checkenv{}% chapters, etc., should not start inside an environment. \fi % Insert the first mark before the heading break (see notes for \domark). \let\prevchapterdefs=\currentchapterdefs \let\prevsectiondefs=\currentsectiondefs \gdef\currentsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% \gdef\thissection{}}% % \def\temptype{#2}% \ifx\temptype\Ynothingkeyword \gdef\currentchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{\thischaptername}}% \else\ifx\temptype\Yomitfromtockeyword \gdef\currentchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{}}% \else\ifx\temptype\Yappendixkeyword \toks0={#1}% \xdef\currentchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\appendixletter}% \let\noexpand\thischapter\noexpand\thischapterAppendix }% \else \toks0={#1}% \xdef\currentchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\the\chapno}% \let\noexpand\thischapter\noexpand\thischapterChapter }% \fi\fi\fi % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert the chapter heading break. \pchapsepmacro % % Now the second mark, after the heading break. No break points % between here and the heading. \let\prevchapterdefs=\currentchapterdefs \let\prevsectiondefs=\currentsectiondefs \domark % {% \chapfonts \rm \let\footnote=\errfootnoteheading % give better error message % % Have to define \currentsection before calling \donoderef, because the % xref code eventually uses it. On the other hand, it has to be called % after \pchapsepmacro, or the headline will change too soon. \gdef\currentsection{#1}% % % Only insert the separating space if we have a chapter/appendix % number, and don't print the unnumbered ``number''. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unnchap}% \else\ifx\temptype\Yomitfromtockeyword \setbox0 = \hbox{}% contents like unnumbered, but no toc entry \def\toctype{omit}% \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% \def\toctype{app}% \else \setbox0 = \hbox{#3\enspace}% \def\toctype{numchap}% \fi\fi\fi % % Write the toc entry for this chapter. Must come before the % \donoderef, because we include the current node name in the toc % entry, and \donoderef resets it to empty. \writetocentry{\toctype}{#1}{#3}% % % For pdftex, we have to write out the node definition (aka, make % the pdfdest) after any page break, but before the actual text has % been typeset. If the destination for the pdf outline is after the % text, then jumping from the outline may wind up with the text not % being visible, for instance under high magnification. \donoderef{#2}% % % Typeset the actual heading. \nobreak % Avoid page breaks at the interline glue. \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe \unhbox0 #1\par}% }% \nobreak\bigskip % no page break after a chapter title \nobreak } % @centerchap -- centered and unnumbered. \let\centerparametersmaybe = \relax \def\centerparameters{% \advance\rightskip by 3\rightskip \leftskip = \rightskip \parfillskip = 0pt } % Section titles. These macros combine the section number parts and % call the generic \sectionheading to do the printing. % \newskip\secheadingskip \def\secheadingbreak{\dobreak \secheadingskip{-1000}} % Subsection titles. \newskip\subsecheadingskip \def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} % Subsubsection titles. \def\subsubsecheadingskip{\subsecheadingskip} \def\subsubsecheadingbreak{\subsecheadingbreak} % Definition for @thissection. This can be overridden in translation % files. \def\thissectionDef{% \putwordSection{} \thissectionnum: \thissectionname} % % Print any size, any type, section title. % % #1 is the text of the title, % #2 is the section level (sec/subsec/subsubsec), % #3 is the section type (Ynumbered, Ynothing, Yappendix, Yomitfromtoc), % #4 is the section number. % \def\seckeyword{sec} % \def\sectionheading#1#2#3#4{% {% \def\sectionlevel{#2}% \def\temptype{#3}% % % It is ok for the @heading series commands to appear inside an % environment (it's been historically allowed, though the logic is % dubious), but not the others. \ifx\temptype\Yomitfromtockeyword\else \checkenv{}% non-@*heading should not be in an environment. \fi \let\footnote=\errfootnoteheading % % Switch to the right set of fonts. \csname #2fonts\endcsname \rm % % Insert first mark before the heading break (see notes for \domark). \let\prevsectiondefs=\currentsectiondefs \ifx\temptype\Ynothingkeyword \ifx\sectionlevel\seckeyword \gdef\currentsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% \gdef\thissection{\thissectionname}}% \fi \else\ifx\temptype\Yomitfromtockeyword % Don't redefine \thissection. \else\ifx\temptype\Yappendixkeyword \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\currentsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% \let\noexpand\thissection\noexpand\thissectionDef }% \fi \else \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\currentsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% \let\noexpand\thissection\noexpand\thissectionDef }% \fi \fi\fi\fi % % Go into vertical mode. Usually we'll already be there, but we % don't want the following whatsit to end up in a preceding paragraph % if the document didn't happen to have a blank line. \par % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert space above the heading. \csname #2headingbreak\endcsname % % Now the second mark, after the heading break. No break points % between here and the heading. \global\let\prevsectiondefs=\currentsectiondefs \domark % % Only insert the space after the number if we have a section number. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unn}% \gdef\currentsection{#1}% \else\ifx\temptype\Yomitfromtockeyword % for @headings -- no section number, don't include in toc, % and don't redefine \currentsection. \setbox0 = \hbox{}% \def\toctype{omit}% \let\sectionlevel=\empty \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{#4\enspace}% \def\toctype{app}% \gdef\currentsection{#1}% \else \setbox0 = \hbox{#4\enspace}% \def\toctype{num}% \gdef\currentsection{#1}% \fi\fi\fi % % Write the toc entry (before \donoderef). See comments in \chapmacro. \writetocentry{\toctype\sectionlevel}{#1}{#4}% % % Write the node reference (= pdf destination for pdftex). % Again, see comments in \chapmacro. \donoderef{#3}% % % Interline glue will be inserted when the vbox is completed. % That glue will be a valid breakpoint for the page, since it'll be % preceded by a whatsit (usually from the \donoderef, or from the % \writetocentry if there was no node). We don't want to allow that % break, since then the whatsits could end up on page n while the % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. \nobreak % % Output the actual section heading. \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright \hangindent=\wd0 % zero if no section number \unhbox0 #1}% }% % Add extra space after the heading -- half of whatever came above it. % Don't allow stretch, though. \kern .5 \csname #2headingskip\endcsname % % Do not let the kern be a potential breakpoint, as it would be if it % was followed by glue. \nobreak % % We'll almost certainly start a paragraph next, so don't let that % glue accumulate. (Not a breakpoint because it's preceded by a % discardable item.) However, when a paragraph is not started next % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out % or the negative glue will cause weirdly wrong output, typically % obscuring the section heading with something else. \vskip-\parskip % % This is so the last item on the main vertical list is a known % \penalty > 10000, so \startdefun, etc., can recognize the situation % and do the needful. \penalty 10001 } \message{toc,} % Table of contents. \newwrite\tocfile % Write an entry to the toc file, opening it if necessary. % Called from @chapter, etc. % % Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} % We append the current node name (if any) and page number as additional % arguments for the \{chap,sec,...}entry macros which will eventually % read this. The node name is used in the pdf outlines as the % destination to jump to. % % We open the .toc file for writing here instead of at @setfilename (or % any other fixed time) so that @contents can be anywhere in the document. % But if #1 is `omit', then we don't do anything. This is used for the % table of contents chapter openings themselves. % \newif\iftocfileopened \def\omitkeyword{omit}% % \def\writetocentry#1#2#3{% \edef\writetoctype{#1}% \ifx\writetoctype\omitkeyword \else \iftocfileopened\else \immediate\openout\tocfile = \jobname.toc \global\tocfileopenedtrue \fi % \iflinks {\atdummies \edef\temp{% \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% \temp }% \fi \fi % % Tell \shipout to create a pdf destination on each page, if we're % writing pdf. These are used in the table of contents. We can't % just write one on every page because the title pages are numbered % 1 and 2 (the page numbers aren't printed), and so are the first % two pages of the document. Thus, we'd have two destinations named % `1', and two named `2'. \ifpdforxetex \global\pdfmakepagedesttrue \fi } % These characters do not print properly in the Computer Modern roman % fonts, so we must take special care. This is more or less redundant % with the Texinfo input format setup at the end of this file. % \def\activecatcodes{% \catcode`\"=\active \catcode`\$=\active \catcode`\<=\active \catcode`\>=\active \catcode`\\=\active \catcode`\^=\active \catcode`\_=\active \catcode`\|=\active \catcode`\~=\active } % Read the toc file, which is essentially Texinfo input. \def\readtocfile{% \setupdatafile \activecatcodes \input \tocreadfilename } \newskip\contentsrightmargin \contentsrightmargin=1in \newcount\savepageno \newcount\lastnegativepageno \lastnegativepageno = -1 % Prepare to read what we've written to \tocfile. % \def\startcontents#1{% % If @setchapternewpage on, and @headings double, the contents should % start on an odd page, unlike chapters. \contentsalignmacro \immediate\closeout\tocfile % % Don't need to put `Contents' or `Short Contents' in the headline. % It is abundantly clear what they are. \chapmacro{#1}{Yomitfromtoc}{}% % \savepageno = \pageno \begingroup % Set up to handle contents files properly. \raggedbottom % Worry more about breakpoints than the bottom. \entryrightmargin=\contentsrightmargin % Don't use the full line length. % % Roman numerals for page numbers. \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi \def\thistitle{}% no title in double-sided headings % Record where the Roman numerals started. \ifnum\romancount=0 \global\romancount=\pagecount \fi \linkentrytexttrue } % \raggedbottom in plain.tex hardcodes \topskip so override it \catcode`\@=11 \def\raggedbottom{\advance\topskip by 0pt plus60pt \r@ggedbottomtrue} \catcode`\@=\other % redefined for the two-volume lispref. We always output on % \jobname.toc even if this is redefined. % \def\tocreadfilename{\jobname.toc} % Normal (long) toc. % \def\contents{% \startcontents{\putwordTOC}% \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \ifeof 1 \else \pdfmakeoutlines \fi \closein 1 \endgroup \contentsendroman } % And just the chapters. \def\summarycontents{% \startcontents{\putwordShortTOC}% % \let\partentry = \shortpartentry \let\numchapentry = \shortchapentry \let\appentry = \shortchapentry \let\unnchapentry = \shortunnchapentry % We want a true roman here for the page numbers. \secfonts \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl \let\tt=\shortconttt \rm \hyphenpenalty = 10000 \advance\baselineskip by 1pt % Open it up a little. \def\numsecentry##1##2##3##4{} \let\appsecentry = \numsecentry \let\unnsecentry = \numsecentry \let\numsubsecentry = \numsecentry \let\appsubsecentry = \numsecentry \let\unnsubsecentry = \numsecentry \let\numsubsubsecentry = \numsecentry \let\appsubsubsecentry = \numsecentry \let\unnsubsubsecentry = \numsecentry \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \closein 1 \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup \contentsendroman } \let\shortcontents = \summarycontents % Get ready to use Arabic numerals again \def\contentsendroman{% \lastnegativepageno = \pageno \global\pageno = \savepageno % % If \romancount > \arabiccount, the contents are at the end of the % document. Otherwise, advance where the Arabic numerals start for % the page numbers. \ifnum\romancount>\arabiccount\else\global\arabiccount=\pagecount\fi } % Typeset the label for a chapter or appendix for the short contents. % The arg is, e.g., `A' for an appendix, or `3' for a chapter. % \def\shortchaplabel#1{% % This space should be enough, since a single number is .5em, and the % widest letter (M) is 1em, at least in the Computer Modern fonts. % But use \hss just in case. % (This space doesn't include the extra space that gets added after % the label; that gets put in by \shortchapentry above.) % % We'd like to right-justify chapter numbers, but that looks strange % with appendix letters. And right-justifying numbers and % left-justifying letters looks strange when there is less than 10 % chapters. Have to read the whole toc once to know how many chapters % there are before deciding ... \hbox to 1em{#1\hss}% } % These macros generate individual entries in the table of contents. % The first argument is the chapter or section name. % The last argument is the page number. % The arguments in between are the chapter number, section number, ... % Parts, in the main contents. Replace the part number, which doesn't % exist, with an empty box. Let's hope all the numbers have the same width. % Also ignore the page number, which is conventionally not printed. \def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} \def\partentry#1#2#3#4{% % Add stretch and a bonus for breaking the page before the part heading. % This reduces the chance of the page being broken immediately after the % part heading, before a following chapter heading. \vskip 0pt plus 5\baselineskip \penalty-300 \vskip 0pt plus -5\baselineskip \dochapentry{\numeralbox\labelspace#1}{}% } % % Parts, in the short toc. \def\shortpartentry#1#2#3#4{% \penalty-300 \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip \shortchapentry{{\bf #1}}{\numeralbox}{}{}% } % Chapters, in the main contents. \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} % Chapters, in the short toc. % See comments in \dochapentry re vbox and related settings. \def\shortchapentry#1#2#3#4{% \tocentry{\shortchaplabel{#2}\labelspace #1}{#4}% } % Appendices, in the main contents. % Need the word Appendix, and a fixed-size box. % \def\appendixbox#1{% % We use M since it's probably the widest letter. \setbox0 = \hbox{\putwordAppendix{} M}% \hbox to \wd0{\putwordAppendix{} #1\hss}} % \def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\hskip.7em#1}{#4}} % Unnumbered chapters. \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} \def\shortunnchapentry#1#2#3#4{\tocentry{#1}{#4}} % Sections. \def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} \let\appsecentry=\numsecentry \def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} % Subsections. \def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} \let\appsubsecentry=\numsubsecentry \def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} % And subsubsections. \def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} \let\appsubsubsecentry=\numsubsubsecentry \def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} % This parameter controls the indentation of the various levels. % Same as \defaultparindent. \newdimen\tocindent \tocindent = 15pt % Now for the actual typesetting. In all these, #1 is the text and #2 is the % page number. % % If the toc has to be broken over pages, we want it to be at chapters % if at all possible; hence the \penalty. \def\dochapentry#1#2{% \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup % Move the page numbers slightly to the right \advance\entryrightmargin by -0.05em \chapentryfonts \tocentry{#1}{#2}% \endgroup \nobreak\vskip .25\baselineskip plus.1\baselineskip } \def\dosecentry#1#2{\begingroup \secentryfonts \leftskip=\tocindent \tocentry{#1}{#2}% \endgroup} \def\dosubsecentry#1#2{\begingroup \subsecentryfonts \leftskip=2\tocindent \tocentry{#1}{#2}% \endgroup} \def\dosubsubsecentry#1#2{\begingroup \subsubsecentryfonts \leftskip=3\tocindent \tocentry{#1}{#2}% \endgroup} % We use the same \entry macro as for the index entries. \let\tocentry = \entry % Space between chapter (or whatever) number and the title. \def\labelspace{\hskip1em \relax} \def\chapentryfonts{\secfonts \rm} \def\secentryfonts{\textfonts} \def\subsecentryfonts{\textfonts} \def\subsubsecentryfonts{\textfonts} \message{environments,} % @foo ... @end foo. % @tex ... @end tex escapes into raw TeX temporarily. % One exception: @ is still an escape character, so that @end tex works. % But \@ or @@ will get a plain @ character. \envdef\tex{% \setregularquotes \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie \catcode `\%=14 \catcode `\+=\other \catcode `\"=\other \catcode `\|=\other \catcode `\<=\other \catcode `\>=\other \catcode `\`=\other \catcode `\'=\other % % ' is active in math mode (mathcode"8000). So reset it, and all our % other math active characters (just in case), to plain's definitions. \mathactive % % Inverse of the list at the beginning of the file. \let\b=\ptexb \let\bullet=\ptexbullet \let\c=\ptexc \let\,=\ptexcomma \let\.=\ptexdot \let\dots=\ptexdots \let\equiv=\ptexequiv \let\!=\ptexexclam \let\i=\ptexi \let\indent=\ptexindent \let\noindent=\ptexnoindent \let\{=\ptexlbrace \let\+=\tabalign \let\}=\ptexrbrace \let\/=\ptexslash \let\sp=\ptexsp \let\*=\ptexstar %\let\sup=\ptexsup % do not redefine, we want @sup to work in math mode \let\t=\ptext \expandafter \let\csname top\endcsname=\ptextop % we've made it outer \let\frenchspacing=\plainfrenchspacing % \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% \def\@{@}% } % There is no need to define \Etex. % Define @lisp ... @end lisp. % @lisp environment forms a group so it can rebind things, % including the definition of @end lisp (which normally is erroneous). % Amount to narrow the margins by for @lisp. \newskip\lispnarrowing \lispnarrowing=0.4in % This is the definition that ^^M gets inside @lisp, @example, and other % such environments. \null is better than a space, since it doesn't % have any width. \def\lisppar{\null\endgraf} % This space is always present above and below environments. \newskip\envskipamount \envskipamount = 0pt % Make spacing and below environment symmetrical. We use \parskip here % to help in doing that, since in @example-like environments \parskip % is reset to zero; thus the \afterenvbreak inserts no space -- but the % start of the next paragraph will insert \parskip. % \def\aboveenvbreak{{% % =10000 instead of <10000 because of a special case in \itemzzz and % \sectionheading, q.v. \ifnum \lastpenalty=10000 \else \advance\envskipamount by \parskip \endgraf \ifdim\lastskip<\envskipamount \removelastskip \ifnum\lastpenalty<10000 % Penalize breaking before the environment, because preceding text % often leads into it. \penalty100 \fi \vskip\envskipamount \fi \fi }} \def\afterenvbreak{{% % =10000 instead of <10000 because of a special case in \itemzzz and % \sectionheading, q.v. \ifnum \lastpenalty=10000 \else \advance\envskipamount by \parskip \endgraf \ifdim\lastskip<\envskipamount \removelastskip % it's not a good place to break if the last penalty was \nobreak % or better ... \ifnum\lastpenalty<10000 \penalty-50 \fi \vskip\envskipamount \fi \fi }} % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will % also clear it, so that its embedded environments do the narrowing again. \let\nonarrowing=\relax % @cartouche ... @end cartouche: draw rectangle w/rounded corners around % environment contents. % \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth \def\ctr{{\hskip 6pt\circle\char'010}} \def\cbl{{\circle\char'012\hskip -6pt}} \def\cbr{{\hskip 6pt\circle\char'011}} \def\carttop{\hbox to \cartouter{\hskip\lskip \ctl\leaders\hrule height\circthick\hfil\ctr \hskip\rskip}} \def\cartbot{\hbox to \cartouter{\hskip\lskip \cbl\leaders\hrule height\circthick\hfil\cbr \hskip\rskip}} % \newskip\lskip\newskip\rskip % only require the font if @cartouche is actually used \def\cartouchefontdefs{% \font\circle=lcircle10\relax \circthick=\fontdimen8\circle } \newdimen\circthick \newdimen\cartouter\newdimen\cartinner \newskip\normbskip\newskip\normpskip\newskip\normlskip \envparseargdef\cartouche{% \cartouchefontdefs \ifhmode\par\fi % can't be in the midst of a paragraph. \startsavinginserts \lskip=\leftskip \rskip=\rightskip \leftskip=0pt\rightskip=0pt % we want these *outside*. % % Set paragraph width for text inside cartouche. There are % left and right margins of 3pt each plus two vrules 0.4pt each. \cartinner=\hsize \advance\cartinner by-\lskip \advance\cartinner by-\rskip \advance\cartinner by -6.8pt % % For drawing top and bottom of cartouche. Each corner char % adds 6pt and we take off the width of a rule to line up with the % right boundary perfectly. \cartouter=\hsize \advance\cartouter by 11.6pt % \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % % If this cartouche directly follows a sectioning command, we need the % \parskip glue (backspaced over by default) or the cartouche can % collide with the section heading. \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi % \setbox\groupbox=\vtop\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup \hskip\lskip \vrule\kern3pt \vbox\bgroup \hsize=\cartinner \baselineskip=\normbskip \lineskip=\normlskip \parskip=\normpskip \def\arg{#1}% \ifx\arg\empty\else \centerV{\hfil \bf #1 \hfil}% \fi \kern3pt \vskip -\parskip } \def\Ecartouche{% \ifhmode\par\fi \kern3pt \egroup \kern3pt\vrule \hskip\rskip \egroup \cartbot \egroup \addgroupbox \checkinserts } % This macro is called at the beginning of all the @example variants, % inside a group. \newdimen\nonfillparindent \def\nonfillstart{% \aboveenvbreak \ifdim\hfuzz < 12pt \hfuzz = 12pt \fi % Don't be fussy \sepspaces % Make spaces be word-separators rather than space tokens. \let\par = \lisppar % don't ignore blank lines \obeylines % each line of input is a line of output \parskip = 0pt % Turn off paragraph indentation but redefine \indent to emulate % the normal \indent. \nonfillparindent=\parindent \parindent = 0pt \let\indent\nonfillindent % \emergencystretch = 0pt % don't try to avoid overfull boxes \ifx\nonarrowing\relax \advance \leftskip by \lispnarrowing \exdentamount=\lispnarrowing \else \let\nonarrowing = \relax \fi \let\exdent=\nofillexdent } \begingroup \obeyspaces % We want to swallow spaces (but not other tokens) after the fake % @indent in our nonfill-environments, where spaces are normally % active and set to @tie, resulting in them not being ignored after % @indent. \gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% \gdef\nonfillindentcheck{% \ifx\temp % \expandafter\nonfillindentgobble% \else% \leavevmode\nonfillindentbox% \fi% }% \endgroup \def\nonfillindentgobble#1{\nonfillindent} \def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} % If you want all examples etc. small: @set dispenvsize small. % If you want even small examples the full size: @set dispenvsize nosmall. % This affects the following displayed environments: % @example, @display, @format, @lisp, @verbatim % \def\smallword{small} \def\nosmallword{nosmall} \let\SETdispenvsize\relax \def\setnormaldispenv{% \ifx\SETdispenvsize\smallword % end paragraph for sake of leading, in case document has no blank % line. This is redundant with what happens in \aboveenvbreak, but % we need to do it before changing the fonts, and it's inconvenient % to change the fonts afterward. \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } \def\setsmalldispenv{% \ifx\SETdispenvsize\nosmallword \else \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } % We often define two environments, @foo and @smallfoo. % Let's do it in one command. #1 is the env name, #2 the definition. \def\makedispenvdef#1#2{% \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% \expandafter\let\csname E#1\endcsname \afterenvbreak \expandafter\let\csname Esmall#1\endcsname \afterenvbreak } % Define two environment synonyms (#1 and #2) for an environment. \def\maketwodispenvdef#1#2#3{% \makedispenvdef{#1}{#3}% \makedispenvdef{#2}{#3}% } % % @lisp: indented, narrowed, typewriter font; % @example: same as @lisp. % % @smallexample and @smalllisp: use smaller fonts. % Originally contributed by Pavel@xerox. % \maketwodispenvdef{lisp}{example}{% \nonfillstart \tt\setcodequotes \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. \parsearg\gobble } % @display/@smalldisplay: same as @lisp except keep current font. % \makedispenvdef{display}{% \nonfillstart \gobble } % @format/@smallformat: same as @display except don't narrow margins. % \makedispenvdef{format}{% \let\nonarrowing = t% \nonfillstart \gobble } % @flushleft: same as @format, but doesn't obey \SETdispenvsize. \envdef\flushleft{% \let\nonarrowing = t% \nonfillstart \gobble } \let\Eflushleft = \afterenvbreak % @flushright. % \envdef\flushright{% \let\nonarrowing = t% \nonfillstart \advance\leftskip by 0pt plus 1fill\relax \gobble } \let\Eflushright = \afterenvbreak % @raggedright does more-or-less normal line breaking but no right % justification. From plain.tex. \envdef\raggedright{% \rightskip0pt plus2.4em \spaceskip.3333em \xspaceskip.5em\relax } \let\Eraggedright\par % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. We keep \parskip nonzero in general, since % we're doing normal filling. So, when using \aboveenvbreak and % \afterenvbreak, temporarily make \parskip 0. % \makedispenvdef{quotation}{\quotationstart} % \def\quotationstart{% \indentedblockstart % same as \indentedblock, but increase right margin too. \ifx\nonarrowing\relax \advance\rightskip by \lispnarrowing \fi \parsearg\quotationlabel } % We have retained a nonzero parskip for the environment, since we're % doing normal filling. % \def\Equotation{% \par \ifx\quotationauthor\thisisundefined\else % indent a bit. \leftline{\kern 2\leftskip \sl ---\quotationauthor}% \fi {\parskip=0pt \afterenvbreak}% } \def\Esmallquotation{\Equotation} % If we're given an argument, typeset it in bold with a colon after. \def\quotationlabel#1{% \def\temp{#1}% \ifx\temp\empty \else {\bf #1: }% \fi } % @indentedblock is like @quotation, but indents only on the left and % has no optional argument. % \makedispenvdef{indentedblock}{\indentedblockstart} % \def\indentedblockstart{% {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip \parindent=0pt % % @cartouche defines \nonarrowing to inhibit narrowing at next level down. \ifx\nonarrowing\relax \advance\leftskip by \lispnarrowing \exdentamount = \lispnarrowing \else \let\nonarrowing = \relax \fi } % Keep a nonzero parskip for the environment, since we're doing normal filling. % \def\Eindentedblock{% \par {\parskip=0pt \afterenvbreak}% } \def\Esmallindentedblock{\Eindentedblock} % LaTeX-like @verbatim...@end verbatim and @verb{...} % If we want to allow any as delimiter, % we need the curly braces so that makeinfo sees the @verb command, eg: % `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org % % [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. % % [Knuth] p.344; only we need to do the other characters Texinfo sets % active too. Otherwise, they get lost as the first character on a % verbatim line. \def\dospecials{% \do\ \do\\\do\{\do\}\do\$\do\&% \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% \do\<\do\>\do\|\do\@\do+\do\"% % Don't do the quotes -- if we do, @set txicodequoteundirected and % @set txicodequotebacktick will not have effect on @verb and % @verbatim, and ?` and !` ligatures won't get disabled. %\do\`\do\'% } % % [Knuth] p. 380 \def\uncatcodespecials{% \def\do##1{\catcode`##1=\other}\dospecials} % % Setup for the @verb command. % % Eight spaces for a tab \begingroup \catcode`\^^I=\active \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} \endgroup % \def\setupverb{% \tt \def\par{\leavevmode\endgraf}% \setcodequotes \tabeightspaces % Respect line breaks, % print special symbols as themselves, and % make each space count % must do in this order: \obeylines \uncatcodespecials \sepspaces } % Setup for the @verbatim environment % % Real tab expansion. \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % % We typeset each line of the verbatim in an \hbox, so we can handle % tabs. \newbox\verbbox \def\starttabbox{\setbox\verbbox=\hbox\bgroup} % \begingroup \catcode`\^^I=\active \gdef\tabexpand{% \catcode`\^^I=\active \def^^I{\leavevmode\egroup \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab \divide\dimen\verbbox by\tabw \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw \wd\verbbox=\dimen\verbbox \leavevmode\box\verbbox \starttabbox }% } \endgroup % start the verbatim environment. \def\setupverbatim{% \let\nonarrowing = t% \nonfillstart \tt % easiest (and conventionally used) font for verbatim \def\par{\egroup\leavevmode\box\verbbox\endgraf\starttabbox}% \tabexpand \setcodequotes % Respect line breaks, % print special symbols as themselves, and % make each space count. % Must do in this order: \obeylines \uncatcodespecials \sepspaces } % Do the @verb magic: verbatim text is quoted by unique % delimiter characters. Before first delimiter expect a % right brace, after last delimiter expect closing brace: % % \def\doverb'{'#1'}'{#1} % % [Knuth] p. 382; only eat outer {} \begingroup \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] \endgroup % \def\verb{\begingroup\setupverb\doverb} % % % Do the @verbatim magic: define the macro \doverbatim so that % the (first) argument ends when '@end verbatim' is reached, ie: % % \def\doverbatim#1@end verbatim{#1} % % For Texinfo it's a lot easier than for LaTeX, % because texinfo's \verbatim doesn't stop at '\end{verbatim}': % we need not redefine '\', '{' and '}'. % % Inspired by LaTeX's verbatim command set [latex.ltx] % \begingroup \catcode`\ =\active \obeylines % % ignore everything up to the first ^^M, that's the newline at the end % of the @verbatim input line itself. Otherwise we get an extra blank % line in the output. \xdef\doverbatim#1^^M#2@end verbatim{% \starttabbox#2\egroup\noexpand\end\gobble verbatim}% % We really want {...\end verbatim} in the body of the macro, but % without the active space; thus we have to use \xdef and \gobble. % The \egroup ends the \verbbox started at the end of the last line in % the block. \endgroup % \envdef\verbatim{% \setnormaldispenv\setupverbatim\doverbatim } \let\Everbatim = \afterenvbreak % @verbatiminclude FILE - insert text of file in verbatim environment. % \def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} % \def\doverbatiminclude#1{% {% \makevalueexpandable \setupverbatim {% \indexnofonts % Allow `@@' and other weird things in file names. \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% \edef\tmp{\noexpand\input #1 } \expandafter }\expandafter\starttabbox\tmp\egroup \afterenvbreak }% } % @copying ... @end copying. % Save the text away for @insertcopying later. % % We save the uninterpreted tokens, rather than creating a box. % Saving the text in a box would be much easier, but then all the % typesetting commands (@smallbook, font changes, etc.) have to be done % beforehand -- and a) we want @copying to be done first in the source % file; b) letting users define the frontmatter in as flexible order as % possible is desirable. % \def\copying{\checkenv{}\begingroup\macrobodyctxt\docopying} {\catcode`\ =\other \gdef\docopying#1@end copying{\endgroup\def\copyingtext{#1}} } \def\insertcopying{% \begingroup \parindent = 0pt % paragraph indentation looks wrong on title page \scanexp\copyingtext \endgroup } \message{defuns,} % @defun etc. \newskip\defbodyindent \defbodyindent=.4in \newskip\defargsindent \defargsindent=50pt \newskip\deflastargmargin \deflastargmargin=18pt \newcount\defunpenalty % Start the processing of @deffn: \def\startdefun{% \ifnum\lastpenalty<10000 \medbreak \defunpenalty=10003 % Will keep this @deffn together with the % following @def command, see below. \else % If there are two @def commands in a row, we'll have a \nobreak, % which is there to keep the function description together with its % header. But if there's nothing but headers, we need to allow a % break somewhere. Check specifically for penalty 10002, inserted % by \printdefunline, instead of 10000, since the sectioning % commands also insert a nobreak penalty, and we don't want to allow % a break between a section heading and a defun. % % As a further refinement, we avoid "club" headers by signalling % with penalty of 10003 after the very first @deffn in the % sequence (see above), and penalty of 10002 after any following % @def command. \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi % % Similarly, after a section heading, do not allow a break. % But do insert the glue. \medskip % preceded by discardable penalty, so not a breakpoint \fi % \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent } \newtoks\defidx \newtoks\deftext \def\useindex#1{\defidx={#1}\ignorespaces} % Called as \printdefunline \deffooheader{text} % \def\printdefunline#1#2{% \begingroup \plainfrenchspacing % call \deffooheader: #1#2 \endheader % create the index entry \defcharsdefault \edef\temp{\noexpand\doind{\the\defidx}{\the\deftext}}% \temp % common ending: \interlinepenalty = 10000 \advance\rightskip by 0pt plus 1fil\relax \endgraf \nobreak\vskip -\parskip \penalty\defunpenalty % signal to \startdefun and \deffoox % Some of the @defun-type tags do not enable magic parentheses, % rendering the following check redundant. But we don't optimize. \checkparencounts \endgroup } \def\Edefun{\endgraf\medbreak} % \makedefun{deffoo} (\deffooheader parameters) { (\deffooheader expansion) } % % Define \deffoo, \deffoox \Edeffoo and \deffooheader. \def\makedefun#1{% \expandafter\let\csname E#1\endcsname = \Edefun \edef\temp{\noexpand\domakedefun \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% \temp } \def\domakedefun#1#2#3{% \envdef#1{% \startdefun \doingtypefnfalse % distinguish typed functions from all else \parseargusing\activeparens{\printdefunline#3}% }% \def#2{% % First, check whether we are in the right environment: \checkenv#1% % % As in \startdefun, allow line break if we have multiple x headers % in a row. It's not a great place, though. \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi % \doingtypefnfalse % distinguish typed functions from all else \parseargusing\activeparens{\printdefunline#3}% }% \def#3% definition of \deffooheader follows } \newif\ifdoingtypefn % doing typed function? \newif\ifrettypeownline % typeset return type on its own line? % @deftypefnnewline on|off says whether the return type of typed functions % are printed on their own line. This affects @deftypefn, @deftypefun, % @deftypeop, and @deftypemethod. % \parseargdef\deftypefnnewline{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxideftypefnnl\endcsname = \empty \else\ifx\temp\offword \expandafter\let\csname SETtxideftypefnnl\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @txideftypefnnl value `\temp', must be on|off}% \fi\fi } \def\defind#1#2{ \defidx={#1}% \deftext={#2}% } % Untyped functions: % @deffn category name args \makedefun{deffn}#1 #2 #3\endheader{% \defind{fn}{\code{#2}}% \defname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% } % @defop category class name args \makedefun{defop}#1 {\defopheaderx{#1\ \putwordon}} \def\defopheaderx#1#2 #3 #4\endheader{% \defind{fn}{\code{#3}\space\putwordon\ \code{#2}}% \defname{#1\ \code{#2}}{}{#3}\magicamp\defunargs{#4\unskip}% } % Typed functions: % @deftypefn category type name args \makedefun{deftypefn}#1 #2 #3 #4\endheader{% \defind{fn}{\code{#3}}% \doingtypefntrue \defname{#1}{#2}{#3}\defunargs{#4\unskip}% } % @deftypeop category class type name args \makedefun{deftypeop}#1 {\deftypeopheaderx{#1\ \putwordon}} \def\deftypeopheaderx#1#2 #3 #4 #5\endheader{% \defind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}% \doingtypefntrue \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% } % Typed variables: % @deftypevr category type var args \makedefun{deftypevr}#1 #2 #3 #4\endheader{% \defind{vr}{\code{#3}}% \defname{#1}{#2}{#3}\defunargs{#4\unskip}% } % @deftypecv category class type var args \makedefun{deftypecv}#1 {\deftypecvheaderx{#1\ \putwordof}} \def\deftypecvheaderx#1#2 #3 #4 #5\endheader{% \defind{vr}{\code{#4}\space\putwordof\ \code{#2}}% \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% } % Untyped variables: % @defvr category var args \makedefun{defvr}#1 {\deftypevrheader{#1} {} } % @defcv category class var args \makedefun{defcv}#1 {\defcvheaderx{#1\ \putwordof}} \def\defcvheaderx#1#2 {\deftypecvheaderx{#1}#2 {} } % Types: % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% \defind{tp}{\code{#2}}% \defname{#1}{}{#2}\defunargs{#3\unskip}% } % Remaining @defun-like shortcuts: \makedefun{defun}{\deffnheader{\putwordDeffunc} } \makedefun{defmac}{\deffnheader{\putwordDefmac} } \makedefun{defspec}{\deffnheader{\putwordDefspec} } \makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } \makedefun{defvar}{\defvrheader{\putwordDefvar} } \makedefun{defopt}{\defvrheader{\putwordDefopt} } \makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } \makedefun{defmethod}{\defopheaderx\putwordMethodon} \makedefun{deftypemethod}{\deftypeopheaderx\putwordMethodon} \makedefun{defivar}{\defcvheaderx\putwordInstanceVariableof} \makedefun{deftypeivar}{\deftypecvheaderx\putwordInstanceVariableof} % \defname, which formats the name of the @def (not the args). % #1 is the category, such as "Function". % #2 is the return type, if any. % #3 is the function name. % % We are followed by (but not passed) the arguments, if any. % \def\defname#1#2#3{% \par % Get the values of \leftskip and \rightskip as they were outside the @def... \advance\leftskip by -\defbodyindent % % Determine if we are typesetting the return type of a typed function % on a line by itself. \rettypeownlinefalse \ifdoingtypefn % doing a typed function specifically? % then check user option for putting return type on its own line: \ifflagclear{txideftypefnnl}{}{\rettypeownlinetrue}% \fi % % How we'll format the category name. Putting it in brackets helps % distinguish it from the body text that may end up on the next line % just below it. \def\temp{#1}% \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} % % Figure out line sizes for the paragraph shape. We'll always have at % least two. \tempnum = 2 % % The first line needs space for \box0; but if \rightskip is nonzero, % we need only space for the part of \box0 which exceeds it: \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip % % If doing a return type on its own line, we'll have another line. \ifrettypeownline \advance\tempnum by 1 \def\maybeshapeline{0in \hsize}% \else \def\maybeshapeline{}% \fi % % The continuations: \dimen2=\hsize \advance\dimen2 by -\defargsindent % % The final paragraph shape: \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 % % Put the category name at the right margin. \noindent \hbox to 0pt{% \hfil\box0 \kern-\hsize % \hsize has to be shortened this way: \kern\leftskip % Intentionally do not respect \rightskip, since we need the space. }% % % Allow all lines to be underfull without complaint: \tolerance=10000 \hbadness=10000 \exdentamount=\defbodyindent {% % defun fonts. We use typewriter by default (used to be bold) because: % . we're printing identifiers, they should be in tt in principle. % . in languages with many accents, such as Czech or French, it's % common to leave accents off identifiers. The result looks ok in % tt, but exceedingly strange in rm. % . we don't want -- and --- to be treated as ligatures. % . this still does not fix the ?` and !` ligatures, but so far no % one has made identifiers using them :). \df \tt \def\temp{#2}% text of the return type \ifx\temp\empty\else \tclose{\temp}% typeset the return type \ifrettypeownline % put return type on its own line; prohibit line break following: \hfil\vadjust{\nobreak}\break \else \space % type on same line, so just followed by a space \fi \fi % no return type #3% output function name }% \ifflagclear{txidefnamenospace}{% {\rm\enskip}% hskip 0.5 em of \rmfont }{}% % \boldbrax % arguments will be output next, if any. } % Print arguments. Use slanted for @def*, typewriter for @deftype*. \def\defunargs#1{% \bgroup \df \ifdoingtypefn \tt \else \sl \fi \ifflagclear{txicodevaristt}{}% {\def\var##1{{\setregularquotes \ttsl ##1}}}% #1% \egroup } % We want ()&[] to print specially on the defun line. % \def\activeparens{% \catcode`\(=\active \catcode`\)=\active \catcode`\[=\active \catcode`\]=\active \catcode`\&=\active } % Make control sequences which act like normal parenthesis chars. \let\lparen = ( \let\rparen = ) % Be sure that we always have a definition for `(', etc. For example, % if the fn name has parens in it, \boldbrax will not be in effect yet, % so TeX would otherwise complain about undefined control sequence. { \activeparens \gdef\defcharsdefault{% \let(=\lparen \let)=\rparen \let[=\lbrack \let]=\rbrack \let& = \&% } \globaldefs=1 \defcharsdefault \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} \gdef\magicamp{\let&=\amprm} } \let\ampchar\& \newcount\parencount % If we encounter &foo, then turn on ()-hacking afterwards \newif\ifampseen \def\amprm#1 {\ampseentrue{\bf\ }} \def\parenfont{% \ifampseen % At the first level, print parens in roman, % otherwise use the default font. \ifnum \parencount=1 \rm \fi \else % The \sf parens (in \boldbrax) actually are a little bolder than % the contained text. This is especially needed for [ and ] . \sf \fi } \def\infirstlevel#1{% \ifampseen \ifnum\parencount=1 #1% \fi \fi } \def\bfafterword#1 {#1 \bf} \def\opnr{% \global\advance\parencount by 1 {\parenfont(}% \infirstlevel \bfafterword } \def\clnr{% {\parenfont)}% \infirstlevel \sl \global\advance\parencount by -1 } \newcount\brackcount \def\lbrb{% \global\advance\brackcount by 1 {\bf[}% } \def\rbrb{% {\bf]}% \global\advance\brackcount by -1 } \def\checkparencounts{% \ifnum\parencount=0 \else \badparencount \fi \ifnum\brackcount=0 \else \badbrackcount \fi } % these should not use \errmessage; the glibc manual, at least, actually % has such constructs (when documenting function pointers). \def\badparencount{% \message{Warning: unbalanced parentheses in @def...}% \global\parencount=0 } \def\badbrackcount{% \message{Warning: unbalanced square brackets in @def...}% \global\brackcount=0 } \message{macros,} % @macro. % To do this right we need a feature of e-TeX, \scantokens, % which we arrange to emulate with a temporary file in ordinary TeX. \ifx\eTeXversion\thisisundefined \newwrite\macscribble \def\scantokens#1{% \toks0={#1}% \immediate\openout\macscribble=\jobname.tmp \immediate\write\macscribble{\the\toks0}% \immediate\closeout\macscribble \input \jobname.tmp } \fi \let\E=\expandafter % Used at the time of macro expansion. % Argument is macro body with arguments substituted \def\scanmacro#1{% \newlinechar`\^^M % expand the expansion of \eatleadingcr twice to maybe remove a leading % newline (and \else and \fi tokens), then call \eatspaces on the result. \def\xeatspaces##1{% \E\E\E\E\E\E\E\eatspaces\E\E\E\E\E\E\E{\eatleadingcr##1% }}% \def\xempty##1{}% % % Process the macro body under the current catcode regime. \scantokens{#1@comment}% % % The \comment is to remove the \newlinechar added by \scantokens, and % can be noticed by \parsearg. Note \c isn't used because this means cedilla % in math mode. } % Used for copying and captions \def\scanexp#1{% \expandafter\scanmacro\expandafter{#1}% } \newcount\paramno % Count of parameters \newtoks\macname % Macro name \newif\ifrecursive % Is it recursive? % List of all defined macros in the form % \commondummyword\macro1\commondummyword\macro2... % Currently is also contains all @aliases; the list can be split % if there is a need. \def\macrolist{} % Add the macro to \macrolist \def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} \def\addtomacrolistxxx#1{% \toks0 = \expandafter{\macrolist\commondummyword#1}% \xdef\macrolist{\the\toks0}% } % Utility routines. % This does \let #1 = #2, with \csnames; that is, % \let \csname#1\endcsname = \csname#2\endcsname % (except of course we have to play expansion games). % \def\cslet#1#2{% \expandafter\let \csname#1\expandafter\endcsname \csname#2\endcsname } % Trim leading and trailing spaces off a string. % Concepts from aro-bend problem 15 (see CTAN). {\catcode`\@=11 \gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} \gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} \gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} \def\unbrace#1{#1} \unbrace{\gdef\trim@@@ #1 } #2@{#1} } {\catcode`\^^M=\other% \gdef\eatleadingcr#1{\if\noexpand#1\noexpand^^M\else\E#1\fi}}% % Warning: this won't work for a delimited argument % or for an empty argument % Trim a single trailing ^^M off a string. {\catcode`\^^M=\other \catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% \gdef\eatcra#1^^MQ{\eatcrb#1Q}% \gdef\eatcrb#1Q#2Q{#1}% } % Macro bodies are absorbed as an argument in a context where % all characters are catcode 10, 11 or 12, except \ which is active % (as in normal texinfo). It is necessary to change the definition of \ % to recognize macro arguments; this is the job of \mbodybackslash. % % Non-ASCII encodings make 8-bit characters active, so un-activate % them to avoid their expansion. Must do this non-globally, to % confine the change to the current group. % % It's necessary to have hard CRs when the macro is executed. This is % done by making ^^M (\endlinechar) catcode 12 when reading the macro % body, and then making it the \newlinechar in \scanmacro. % \def\scanctxt{% used as subroutine \catcode`\"=\other \catcode`\+=\other \catcode`\<=\other \catcode`\>=\other \catcode`\^=\other \catcode`\_=\other \catcode`\|=\other \catcode`\~=\other \catcode`\@=\other \catcode`\^^M=\other \catcode`\\=\active \passthroughcharstrue } \def\macrobodyctxt{% used for @macro definitions and @copying \scanctxt \catcode`\ =\other \catcode`\{=\other \catcode`\}=\other } % Used when scanning braced macro arguments. Note, however, that catcode % changes here are ineffectual if the macro invocation was nested inside % an argument to another Texinfo command. \def\macroargctxt{% \scanctxt \catcode`\ =\active } \def\macrolineargctxt{% used for whole-line arguments without braces \scanctxt \catcode`\{=\other \catcode`\}=\other } % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N % where N is the macro parameter number. % We define \csname macarg.\endcsname to be \realbackslash, so % \\ in macro replacement text gets you a backslash. % {\catcode`@=0 @catcode`@\=@active @gdef@usembodybackslash{@let\=@mbodybackslash} @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} } \expandafter\def\csname macarg.\endcsname{\realbackslash} \def\margbackslash#1{\char`\#1 } \def\macro{\recursivefalse\parsearg\macroxxx} \def\rmacro{\recursivetrue\parsearg\macroxxx} \def\macroxxx#1{% \getargs{#1}% now \macname is the macname and \argl the arglist \ifx\argl\empty % no arguments \paramno=0\relax \else \expandafter\parsemargdef \argl;% \if\paramno>256\relax \ifx\eTeXversion\thisisundefined \errhelp = \EMsimple \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} \fi \fi \fi \if1\csname ismacro.\the\macname\endcsname \message{Warning: redefining \the\macname}% \else \expandafter\ifx\csname \the\macname\endcsname \relax \else \errmessage{Macro name \the\macname\space already defined}\fi \global\cslet{macsave.\the\macname}{\the\macname}% \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% \addtomacrolist{\the\macname}% \fi \begingroup \macrobodyctxt \usembodybackslash \ifrecursive \expandafter\parsermacbody \else \expandafter\parsemacbody \fi} \parseargdef\unmacro{% \if1\csname ismacro.#1\endcsname \global\cslet{#1}{macsave.#1}% \global\expandafter\let \csname ismacro.#1\endcsname=0% % Remove the macro name from \macrolist: \begingroup \expandafter\let\csname#1\endcsname \relax \let\commondummyword\unmacrodo \xdef\macrolist{\macrolist}% \endgroup \else \errmessage{Macro #1 not defined}% \fi } % Called by \do from \dounmacro on each macro. The idea is to omit any % macro definitions that have been changed to \relax. % \def\unmacrodo#1{% \ifx #1\relax % remove this \else \noexpand\commondummyword \noexpand#1% \fi } % \getargs -- Parse the arguments to a @macro line. Set \macname to % the name of the macro, and \argl to the braced argument list. \def\getargs#1{\getargsxxx#1{}} \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} \def\getmacname#1 #2\relax{\macname={#1}} \def\getmacargs#1{\def\argl{#1}} % This made use of the feature that if the last token of a % is #, then the preceding argument is delimited by % an opening brace, and that opening brace is not consumed. % Parse the optional {params} list to @macro or @rmacro. % Set \paramno to the number of arguments, % and \paramlist to a parameter text for the macro (e.g. #1,#2,#3 for a % three-param macro.) Define \macarg.BLAH for each BLAH in the params % list to some hook where the argument is to be expanded. If there are % less than 10 arguments that hook is to be replaced by ##N where N % is the position in that list, that is to say the macro arguments are to be % defined `a la TeX in the macro body. % % That gets used by \mbodybackslash (above). % % If there are 10 or more arguments, a different technique is used: see % \parsemmanyargdef. % \def\parsemargdef#1;{% \paramno=0\def\paramlist{}% \let\hash\relax % \hash is redefined to `#' later to get it into definitions \let\xeatspaces\relax \let\xempty\relax \parsemargdefxxx#1,;,% \ifnum\paramno<10\relax\else \paramno0\relax \parsemmanyargdef@@#1,;,% 10 or more arguments \fi } \def\parsemargdefxxx#1,{% \if#1;\let\next=\relax \else \let\next=\parsemargdefxxx \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname {\xeatspaces{\hash\the\paramno\noexpand\xempty{}}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} % the \xempty{} is to give \eatleadingcr an argument in the case of an % empty macro argument. % \parsemacbody, \parsermacbody % % Read recursive and nonrecursive macro bodies. (They're different since % rec and nonrec macros end differently.) % % We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro % body to be transformed. % Set \macrobody to the body of the macro, and call \defmacro. % {\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{% \xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% {\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{% \xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% % Make @ a letter, so that we can make private-to-Texinfo macro names. \edef\texiatcatcode{\the\catcode`\@} \catcode `@=11\relax %%%%%%%%%%%%%% Code for > 10 arguments only %%%%%%%%%%%%%%%%%% % If there are 10 or more arguments, a different technique is used, where the % hook remains in the body, and when macro is to be expanded the body is % processed again to replace the arguments. % % In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the % argument N value and then \edef the body (nothing else will expand because of % the catcode regime under which the body was input). % % If you compile with TeX (not eTeX), and you have macros with 10 or more % arguments, no macro can have more than 256 arguments (else error). % % In case that there are 10 or more arguments we parse again the arguments % list to set new definitions for the \macarg.BLAH macros corresponding to % each BLAH argument. It was anyhow needed to parse already once this list % in order to count the arguments, and as macros with at most 9 arguments % are by far more frequent than macro with 10 or more arguments, defining % twice the \macarg.BLAH macros does not cost too much processing power. \def\parsemmanyargdef@@#1,{% \if#1;\let\next=\relax \else \let\next=\parsemmanyargdef@@ \edef\tempb{\eatspaces{#1}}% \expandafter\def\expandafter\tempa \expandafter{\csname macarg.\tempb\endcsname}% % Note that we need some extra \noexpand\noexpand, this is because we % don't want \the to be expanded in the \parsermacbody as it uses an % \xdef . \expandafter\edef\tempa {\noexpand\noexpand\noexpand\the\toks\the\paramno}% \advance\paramno by 1\relax \fi\next} \let\endargs@\relax \let\nil@\relax \def\nilm@{\nil@}% \long\def\nillm@{\nil@}% % This macro is expanded during the Texinfo macro expansion, not during its % definition. It gets all the arguments' values and assigns them to macros % macarg.ARGNAME % % #1 is the macro name % #2 is the list of argument names % #3 is the list of argument values \def\getargvals@#1#2#3{% \def\macargdeflist@{}% \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. \def\paramlist{#2,\nil@}% \def\macroname{#1}% \begingroup \macroargctxt \def\argvaluelist{#3,\nil@}% \def\@tempa{#3}% \ifx\@tempa\empty \setemptyargvalues@ \else \getargvals@@ \fi } \def\getargvals@@{% \ifx\paramlist\nilm@ % Some sanity check needed here that \argvaluelist is also empty. \ifx\argvaluelist\nillm@ \else \errhelp = \EMsimple \errmessage{Too many arguments in macro `\macroname'!}% \fi \let\next\macargexpandinbody@ \else \ifx\argvaluelist\nillm@ % No more arguments values passed to macro. Set remaining named-arg % macros to empty. \let\next\setemptyargvalues@ \else % pop current arg name into \@tempb \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% \expandafter\@tempa\expandafter{\paramlist}% % pop current argument value into \@tempc \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% \expandafter\@tempa\expandafter{\argvaluelist}% % Here \@tempb is the current arg name and \@tempc is the current arg value. % First place the new argument macro definition into \@tempd \expandafter\macname\expandafter{\@tempc}% \expandafter\let\csname macarg.\@tempb\endcsname\relax \expandafter\def\expandafter\@tempe\expandafter{% \csname macarg.\@tempb\endcsname}% \edef\@tempd{\long\def\@tempe{\the\macname}}% \push@\@tempd\macargdeflist@ \let\next\getargvals@@ \fi \fi \next } \def\push@#1#2{% \expandafter\expandafter\expandafter\def \expandafter\expandafter\expandafter#2% \expandafter\expandafter\expandafter{% \expandafter#1#2}% } % Replace arguments by their values in the macro body, and place the result % in macro \@tempa. % \def\macvalstoargs@{% % To do this we use the property that token registers that are \the'ed % within an \edef expand only once. So we are going to place all argument % values into respective token registers. % % First we save the token context, and initialize argument numbering. \begingroup \paramno0\relax % Then, for each argument number #N, we place the corresponding argument % value into a new token list register \toks#N \expandafter\putargsintokens@\saveparamlist@,;,% % Then, we expand the body so that argument are replaced by their % values. The trick for values not to be expanded themselves is that they % are within tokens and that tokens expand only once in an \edef . \edef\@tempc{\csname mac.\macroname .body\endcsname}% % Now we restore the token stack pointer to free the token list registers % which we have used, but we make sure that expanded body is saved after % group. \expandafter \endgroup \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% } % Define the named-macro outside of this group and then close this group. % \def\macargexpandinbody@{% \expandafter \endgroup \macargdeflist@ % First the replace in body the macro arguments by their values, the result % is in \@tempa . \macvalstoargs@ % Then we point at the \norecurse or \gobble (for recursive) macro value % with \@tempb . \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname % Depending on whether it is recursive or not, we need some tailing % \egroup . \ifx\@tempb\gobble \let\@tempc\relax \else \let\@tempc\egroup \fi % And now we do the real job: \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% \@tempd } \def\putargsintokens@#1,{% \if#1;\let\next\relax \else \let\next\putargsintokens@ % First we allocate the new token list register, and give it a temporary % alias \@tempb . \toksdef\@tempb\the\paramno % Then we place the argument value into that token list register. \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname \expandafter\@tempb\expandafter{\@tempa}% \advance\paramno by 1\relax \fi \next } % Trailing missing arguments are set to empty. % \def\setemptyargvalues@{% \ifx\paramlist\nilm@ \let\next\macargexpandinbody@ \else \expandafter\setemptyargvaluesparser@\paramlist\endargs@ \let\next\setemptyargvalues@ \fi \next } \def\setemptyargvaluesparser@#1,#2\endargs@{% \expandafter\def\expandafter\@tempa\expandafter{% \expandafter\def\csname macarg.#1\endcsname{}}% \push@\@tempa\macargdeflist@ \def\paramlist{#2}% } % #1 is the element target macro % #2 is the list macro % #3,#4\endargs@ is the list value \def\pop@#1#2#3,#4\endargs@{% \def#1{#3}% \def#2{#4}% } \long\def\longpop@#1#2#3,#4\endargs@{% \long\def#1{#3}% \long\def#2{#4}% } %%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%% % This defines a Texinfo @macro or @rmacro, called by \parsemacbody. % \macrobody has the body of the macro in it, with placeholders for % its parameters, looking like "\xeatspaces{\hash 1}". % \paramno is the number of parameters % \paramlist is a TeX parameter text, e.g. "#1,#2,#3," % There are four cases: macros of zero, one, up to nine, and many arguments. % \xdef is used so that macro definitions will survive the file % they're defined in: @include reads the file inside a group. % \def\defmacro{% \let\hash=##% convert placeholders to macro parameter chars \ifnum\paramno=1 \def\xeatspaces##1{##1}% % This removes the pair of braces around the argument. We don't % use \eatspaces, because this can cause ends of lines to be lost % when the argument to \eatspaces is read, leading to line-based % commands like "@itemize" not being read correctly. \else \let\xeatspaces\relax % suppress expansion \fi \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \begingroup \noexpand\spaceisspace \noexpand\endlineisspace \noexpand\expandafter % skip any whitespace after the macro name. \expandafter\noexpand\csname\the\macname @@@\endcsname}% \expandafter\xdef\csname\the\macname @@@\endcsname{% \endgroup \noexpand\scanmacro{\macrobody}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \begingroup \noexpand\braceorline \expandafter\noexpand\csname\the\macname @@@\endcsname}% \expandafter\xdef\csname\the\macname @@@\endcsname##1{% \endgroup \noexpand\scanmacro{\macrobody}% }% \else % at most 9 \ifnum\paramno<10\relax % @MACNAME sets the context for reading the macro argument % @MACNAME@@ gets the argument, processes backslashes and appends a % comma. % @MACNAME@@@ removes braces surrounding the argument list. % @MACNAME@@@@ scans the macro body with arguments substituted. \expandafter\xdef\csname\the\macname\endcsname{% \begingroup \noexpand\expandafter % This \expandafter skip any spaces after the \noexpand\macroargctxt % macro before we change the catcode of space. \noexpand\expandafter \expandafter\noexpand\csname\the\macname @@\endcsname}% \expandafter\xdef\csname\the\macname @@\endcsname##1{% \noexpand\passargtomacro \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% \expandafter\xdef\csname\the\macname @@@\endcsname##1{% \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname @@@@\endcsname\paramlist{% \endgroup\noexpand\scanmacro{\macrobody}}% \else % 10 or more: \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble \fi \fi} \catcode `\@\texiatcatcode\relax % end private-to-Texinfo catcodes \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % {\catcode`\@=0 \catcode`\\=13 % We need to manipulate \ so use @ as escape @catcode`@_=11 % private names @catcode`@!=11 % used as argument separator % \passargtomacro#1#2 - % Call #1 with a list of tokens #2, with any doubled backslashes in #2 % compressed to one. % % This implementation works by expansion, and not execution (so we cannot use % \def or similar). This reduces the risk of this failing in contexts where % complete expansion is done with no execution (for example, in writing out to % an auxiliary file for an index entry). % % State is kept in the input stream: the argument passed to % @look_ahead, @gobble_and_check_finish and @add_segment is % % THE_MACRO ARG_RESULT ! {PENDING_BS} NEXT_TOKEN (... rest of input) % % where: % THE_MACRO - name of the macro we want to call % ARG_RESULT - argument list we build to pass to that macro % PENDING_BS - either a backslash or nothing % NEXT_TOKEN - used to look ahead in the input stream to see what's coming next @gdef@passargtomacro#1#2{% @add_segment #1!{}@relax#2\@_finish\% } @gdef@_finish{@_finishx} @global@let@_finishx@relax % #1 - THE_MACRO ARG_RESULT % #2 - PENDING_BS % #3 - NEXT_TOKEN % #4 used to look ahead % % If the next token is not a backslash, process the rest of the argument; % otherwise, remove the next token. @gdef@look_ahead#1!#2#3#4{% @ifx#4\% @expandafter@gobble_and_check_finish @else @expandafter@add_segment @fi#1!{#2}#4#4% } % #1 - THE_MACRO ARG_RESULT % #2 - PENDING_BS % #3 - NEXT_TOKEN % #4 should be a backslash, which is gobbled. % #5 looks ahead % % Double backslash found. Add a single backslash, and look ahead. @gdef@gobble_and_check_finish#1!#2#3#4#5{% @add_segment#1\!{}#5#5% } @gdef@is_fi{@fi} % #1 - THE_MACRO ARG_RESULT % #2 - PENDING_BS % #3 - NEXT_TOKEN % #4 is input stream until next backslash % % Input stream is either at the start of the argument, or just after a % backslash sequence, either a lone backslash, or a doubled backslash. % NEXT_TOKEN contains the first token in the input stream: if it is \finish, % finish; otherwise, append to ARG_RESULT the segment of the argument up until % the next backslash. PENDING_BACKSLASH contains a backslash to represent % a backslash just before the start of the input stream that has not been % added to ARG_RESULT. @gdef@add_segment#1!#2#3#4\{% @ifx#3@_finish @call_the_macro#1!% @else % append the pending backslash to the result, followed by the next segment @expandafter@is_fi@look_ahead#1#2#4!{\}@fi % this @fi is discarded by @look_ahead. % we can't get rid of it with \expandafter because we don't know how % long #4 is. } % #1 - THE_MACRO % #2 - ARG_RESULT % #3 discards the res of the conditional in @add_segment, and @is_fi ends the % conditional. @gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}} } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \braceorline MAC is used for a one-argument macro MAC. It checks % whether the next non-whitespace character is a {. It sets the context % for reading the argument (slightly different in the two cases). Then, % to read the argument, in the whole-line case, it then calls the regular % \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC. % \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} \def\braceorlinexxx{% \ifx\nchar\bgroup \macroargctxt \expandafter\passargtomacro \else \macrolineargctxt\expandafter\parsearg \fi \macnamexxx} % @alias. % We need some trickery to remove the optional spaces around the equal % sign. Make them active and then expand them all to nothing. % \def\alias{\parseargusing\obeyspaces\aliasxxx} \def\aliasxxx #1{\aliasyyy#1\relax} \def\aliasyyy #1=#2\relax{% {% \expandafter\let\obeyedspace=\empty \addtomacrolist{#1}% \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% }% \next } \message{cross references,} \newwrite\auxfile \newif\ifhavexrefs % True if xref values are known. \newif\ifwarnedxrefs % True if we warned once that they aren't known. % @inforef is relatively simple. \def\inforef #1{\inforefzzz #1,,,,**} \def\inforefzzz #1,#2,#3,#4**{% \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, node \samp{\ignorespaces#1{}}} % @node's only job in TeX is to define \lastnode, which is used in % cross-references. The @node line might or might not have commas, and % might or might not have spaces before the first comma, like: % @node foo , bar , ... % We don't want such trailing spaces in the node name. % \parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} % % also remove a trailing comma, in case of something like this: % @node Help-Cross, , , Cross-refs \def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} \def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}\omittopnode} % Used so that the @top node doesn't have to be wrapped in an @ifnottex % conditional. % \doignore goes to more effort to skip nested conditionals but we don't need % that here. \def\omittopnode{% \ifx\lastnode\wordTop \expandafter\ignorenode\fi } \def\wordTop{Top} % Until the next @node, @part or @bye command, divert output to a box that % is not output. \def\ignorenode{\setbox\dummybox\vbox\bgroup \def\part{\egroup\part}% \def\node{\egroup\node}% \ignorenodebye } {\let\bye\relax \gdef\ignorenodebye{\let\bye\ignorenodebyedef} \gdef\ignorenodebyedef{\egroup(`Top' node ignored)\bye}} % The redefinition of \bye here is because it is declared \outer \let\lastnode=\empty % Write a cross-reference definition for the current node. #1 is the % type (Ynumbered, Yappendix, Ynothing). % \def\donoderef#1{% \ifx\lastnode\empty\else \setref{\lastnode}{#1}% \global\let\lastnode=\empty \fi } % @anchor{NAME} -- define xref target at arbitrary point. % \newcount\savesfregister % \def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} \def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} \def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an % anchor), which consists of three parts: % 1) NAME-title - the current sectioning name taken from \currentsection, % or the anchor name. % 2) NAME-snt - section number and type, passed as the SNT arg, or % empty for anchors. % 3) NAME-pg - the page number. % % This is called from \donoderef, \anchor, and \dofloat. In the case of % floats, there is an additional part, which is not written here: % 4) NAME-lof - the text as it should appear in a @listoffloats. % \def\setref#1#2{% \pdfmkdest{#1}% \iflinks {% \requireauxfile \atdummies % preserve commands, but don't expand them % match definition in \xrdef, \refx, \xrefX. \def\value##1{##1}% \edef\writexrdef##1##2{% \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef ##1}{##2}}% these are parameters of \writexrdef }% \toks0 = \expandafter{\currentsection}% \immediate \writexrdef{title}{\the\toks0 }% \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout }% \fi } % @xrefautosectiontitle on|off says whether @section(ing) names are used % automatically in xrefs, if the third arg is not explicitly specified. % This was provided as a "secret" @set xref-automatic-section-title % variable, now it's official. % \parseargdef\xrefautomaticsectiontitle{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETxref-automatic-section-title\endcsname = \empty \else\ifx\temp\offword \expandafter\let\csname SETxref-automatic-section-title\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', must be on|off}% \fi\fi } % % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is % the node name, #2 the name of the Info cross-reference, #3 the printed % node name, #4 the name of the Info file, #5 the name of the printed % manual. All but the node name can be omitted. % \def\pxref{\putwordsee{} \xrefXX} \def\xref{\putwordSee{} \xrefXX} \def\ref{\xrefXX} \def\xrefXX#1{\def\xrefXXarg{#1}\futurelet\tokenafterxref\xrefXXX} \def\xrefXXX{\expandafter\xrefX\expandafter[\xrefXXarg,,,,,,,]} % \newbox\toprefbox \newbox\printedrefnamebox \newbox\infofilenamebox \newbox\printedmanualbox % \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup \unsepspaces % % Get args without leading/trailing spaces. \def\printedrefname{\ignorespaces #3}% \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% % \def\infofilename{\ignorespaces #4}% \setbox\infofilenamebox = \hbox{\infofilename\unskip}% % \def\printedmanual{\ignorespaces #5}% \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% % % If the printed reference name (arg #3) was not explicitly given in % the @xref, figure out what we want to use. \ifdim \wd\printedrefnamebox = 0pt % No printed node name was explicitly given. \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax % Not auto section-title: use node name inside the square brackets. \def\printedrefname{\ignorespaces #1}% \else % Auto section-title: use chapter/section title inside % the square brackets if we have it. \ifdim \wd\printedmanualbox > 0pt % It is in another manual, so we don't have it; use node name. \def\printedrefname{\ignorespaces #1}% \else \ifhavexrefs % We (should) know the real title if we have the xref values. \def\printedrefname{\refx{#1-title}}% \else % Otherwise just copy the Info node name. \def\printedrefname{\ignorespaces #1}% \fi% \fi \fi \fi % % Make link in pdf output. \ifpdf % For pdfTeX and LuaTeX {\indexnofonts \makevalueexpandable \turnoffactive % This expands tokens, so do it after making catcode changes, so _ % etc. don't get their TeX definitions. This ignores all spaces in % #4, including (wrongly) those in the middle of the filename. \getfilename{#4}% % % This (wrongly) does not take account of leading or trailing % spaces in #1, which should be ignored. \setpdfdestname{#1}% % \ifx\pdfdestname\empty \def\pdfdestname{Top}% no empty targets \fi % \leavevmode \startlink attr{/Border [0 0 0]}% \ifnum\filenamelength>0 goto file{\the\filename.pdf} name{\pdfdestname}% \else goto name{\pdfmkpgn{\pdfdestname}}% \fi }% \setcolor{\linkcolor}% \else \ifx\XeTeXrevision\thisisundefined \else % For XeTeX {\indexnofonts \makevalueexpandable \turnoffactive % This expands tokens, so do it after making catcode changes, so _ % etc. don't get their TeX definitions. This ignores all spaces in % #4, including (wrongly) those in the middle of the filename. \getfilename{#4}% % % This (wrongly) does not take account of leading or trailing % spaces in #1, which should be ignored. \setpdfdestname{#1}% % \ifx\pdfdestname\empty \def\pdfdestname{Top}% no empty targets \fi % \leavevmode \ifnum\filenamelength>0 % With default settings, % XeTeX (xdvipdfmx) replaces link destination names with integers. % In this case, the replaced destination names of % remote PDFs are no longer known. In order to avoid a replacement, % you can use xdvipdfmx's command line option `-C 0x0010'. % If you use XeTeX 0.99996+ (TeX Live 2016+), % this command line option is no longer necessary % because we can use the `dvipdfmx:config' special. \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A << /S /GoToR /F (\the\filename.pdf) /D (\pdfdestname) >> >>}% \else \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A << /S /GoTo /D (\pdfdestname) >> >>}% \fi }% \setcolor{\linkcolor}% \fi \fi {% % Have to otherify everything special to allow the \csname to % include an _ in the xref name, etc. \indexnofonts \turnoffactive \def\value##1{##1}% \expandafter\global\expandafter\let\expandafter\Xthisreftitle \csname XR#1-title\endcsname }% % % Float references are printed completely differently: "Figure 1.2" % instead of "[somenode], p.3". \iffloat distinguishes them by % \Xthisreftitle being set to a magic string. \iffloat\Xthisreftitle % If the user specified the print name (third arg) to the ref, % print it instead of our usual "Figure 1.2". \ifdim\wd\printedrefnamebox = 0pt \refx{#1-snt}% \else \printedrefname \fi % % If the user also gave the printed manual name (fifth arg), append % "in MANUALNAME". \ifdim \wd\printedmanualbox > 0pt \space \putwordin{} \cite{\printedmanual}% \fi \else % node/anchor (non-float) references. % % If we use \unhbox to print the node names, TeX does not insert % empty discretionaries after hyphens, which means that it will not % find a line break at a hyphen in a node names. Since some manuals % are best written with fairly long node names, containing hyphens, % this is a loss. Therefore, we give the text of the node name % again, so it is as if TeX is seeing it for the first time. % \ifdim \wd\printedmanualbox > 0pt % Cross-manual reference with a printed manual name. % \crossmanualxref{\cite{\printedmanual\unskip}}% % \else\ifdim \wd\infofilenamebox > 0pt % Cross-manual reference with only an info filename (arg 4), no % printed manual name (arg 5). This is essentially the same as % the case above; we output the filename, since we have nothing else. % \crossmanualxref{\code{\infofilename\unskip}}% % \else % Reference within this manual. % % Only output a following space if the -snt ref is nonempty, as the ref % will be empty for @unnumbered and @anchor. \setbox2 = \hbox{\ignorespaces \refx{#1-snt}}% \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi % % output the `[mynode]' via the macro below so it can be overridden. \xrefprintnodename\printedrefname % \ifflagclear{txiomitxrefpg}{% % We always want a comma ,% % output the `page 3'. \turnoffactive \putpageref{#1}% % Add a , if xref followed by a space \if\space\noexpand\tokenafterxref ,% \else\ifx\ \tokenafterxref ,% @TAB \else\ifx\*\tokenafterxref ,% @* \else\ifx\ \tokenafterxref ,% @SPACE \else\ifx\ \tokenafterxref ,% @NL \else\ifx\tie\tokenafterxref ,% @tie \fi\fi\fi\fi\fi\fi }{}% \fi\fi \fi \endlink \endgroup} % can be overridden in translation files \def\putpageref#1{% \space\putwordpage\tie\refx{#1-pg}} % Output a cross-manual xref to #1. Used just above (twice). % % Only include the text "Section ``foo'' in" if the foo is neither % missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply % "see The Foo Manual", the idea being to refer to the whole manual. % % But, this being TeX, we can't easily compare our node name against the % string "Top" while ignoring the possible spaces before and after in % the input. By adding the arbitrary 7sp below, we make it much less % likely that a real node name would have the same width as "Top" (e.g., % in a monospaced font). Hopefully it will never happen in practice. % % For the same basic reason, we retypeset the "Top" at every % reference, since the current font is indeterminate. % \def\crossmanualxref#1{% \setbox\toprefbox = \hbox{Top\kern7sp}% \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% \ifdim \wd2 > 7sp % nonempty? \ifdim \wd2 = \wd\toprefbox \else % same as Top? \putwordSection{} ``\printedrefname'' \putwordin{}\space \fi \fi #1% } % This macro is called from \xrefX for the `[nodename]' part of xref % output. It's a separate macro only so it can be changed more easily, % since square brackets don't work well in some documents. Particularly % one that Bob is working on :). % \def\xrefprintnodename#1{[#1]} % Things referred to by \setref. % \def\Ynothing{} \def\Yomitfromtoc{} \def\Ynumbered{% \ifnum\secno=0 \putwordChapter@tie \the\chapno \else \ifnum\subsecno=0 \putwordSection@tie \the\chapno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie \the\chapno.\the\secno.\the\subsecno \else \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } \def\Yappendix{% \ifnum\secno=0 \putwordAppendix@tie @char\the\appendixno{}% \else \ifnum\subsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno \else \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } % \refx{NAME} - reference a cross-reference string named NAME. \def\refx#1{% \requireauxfile {% \indexnofonts \turnoffactive \def\value##1{##1}% \expandafter\global\expandafter\let\expandafter\thisrefX \csname XR#1\endcsname }% \ifx\thisrefX\relax % If not defined, say something at least. \angleleft un\-de\-fined\angleright \iflinks \ifhavexrefs {\toks0 = {#1}% avoid expansion of possibly-complex value \message{\linenumber Undefined cross reference `\the\toks0'.}}% \else \ifwarnedxrefs\else \global\warnedxrefstrue \message{Cross reference values unknown; you must run TeX again.}% \fi \fi \fi \else % It's defined, so just use it. \thisrefX \fi } % This is the macro invoked by entries in the aux file. Define a control % sequence for a cross-reference target (we prepend XR to the control sequence % name to avoid collisions). The value is the page number. If this is a float % type, we have more work to do. % \def\xrdef#1#2{% {% Expand the node or anchor name to remove control sequences. % \turnoffactive stops 8-bit characters being changed to commands % like @'e. \refx does the same to retrieve the value in the definition. \indexnofonts \turnoffactive \def\value##1{##1}% \xdef\safexrefname{#1}% }% % \bgroup \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% \egroup % We put the \gdef inside a group to avoid the definitions building up on % TeX's save stack, which can cause it to run out of space for aux files with % thousands of lines. \gdef doesn't use the save stack, but \csname does % when it defines an unknown control sequence as \relax. % % Was that xref control sequence that we just defined for a float? \expandafter\iffloat\csname XR\safexrefname\endcsname % it was a float, and we have the (safe) float type in \iffloattype. \expandafter\let\expandafter\floatlist \csname floatlist\iffloattype\endcsname % % Is this the first time we've seen this float type? \expandafter\ifx\floatlist\relax \toks0 = {\do}% yes, so just \do \else % had it before, so preserve previous elements in list. \toks0 = \expandafter{\floatlist\do}% \fi % % Remember this xref in the control sequence \floatlistFLOATTYPE, % for later use in \listoffloats. \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 {\safexrefname}}% \fi } % If working on a large document in chapters, it is convenient to % be able to disable indexing, cross-referencing, and contents, for test runs. % This is done with @novalidate at the beginning of the file. % \newif\iflinks \linkstrue % by default we want the aux files. \let\novalidate = \linksfalse % Used when writing to the aux file, or when using data from it. \def\requireauxfile{% \iflinks \tryauxfile % Open the new aux file. TeX will close it automatically at exit. \immediate\openout\auxfile=\jobname.aux \fi \global\let\requireauxfile=\relax % Only do this once. } % Read the last existing aux file, if any. No error if none exists. % \def\tryauxfile{% \openin 1 \jobname.aux \ifeof 1 \else \readdatafile{aux}% \global\havexrefstrue \fi \closein 1 } \def\setupdatafile{% \catcode`\^^@=\other \catcode`\^^A=\other \catcode`\^^B=\other \catcode`\^^C=\other \catcode`\^^D=\other \catcode`\^^E=\other \catcode`\^^F=\other \catcode`\^^G=\other \catcode`\^^H=\other \catcode`\^^K=\other \catcode`\^^L=\other \catcode`\^^N=\other \catcode`\^^P=\other \catcode`\^^Q=\other \catcode`\^^R=\other \catcode`\^^S=\other \catcode`\^^T=\other \catcode`\^^U=\other \catcode`\^^V=\other \catcode`\^^W=\other \catcode`\^^X=\other \catcode`\^^Z=\other \catcode`\^^[=\other \catcode`\^^\=\other \catcode`\^^]=\other \catcode`\^^^=\other \catcode`\^^_=\other \catcode`\^=\other % % Special characters. Should be turned off anyway, but... \catcode`\~=\other \catcode`\[=\other \catcode`\]=\other \catcode`\"=\other \catcode`\_=\active \catcode`\|=\active \catcode`\<=\active \catcode`\>=\active \catcode`\$=\other \catcode`\#=\other \catcode`\&=\other \catcode`\%=\other \catcode`+=\other % avoid \+ for paranoia even though we've turned it off % \catcode`\\=\active % % @ is our escape character in .aux files, and we need braces. \catcode`\{=1 \catcode`\}=2 \catcode`\@=0 } \def\readdatafile#1{% \begingroup \setupdatafile \input\jobname.#1 \endgroup} \message{insertions,} % including footnotes. \newcount \footnoteno % The trailing space in the following definition for supereject is % vital for proper filling; pages come out unaligned when you do a % pagealignmacro call if that space before the closing brace is % removed. (Generally, numeric constants should always be followed by a % space to prevent strange expansion errors.) \def\supereject{\par\penalty -20000\footnoteno =0 } % @footnotestyle is meaningful for Info output only. \let\footnotestyle=\comment {\catcode `\@=11 % % Auto-number footnotes. Otherwise like plain. \gdef\footnote{% \global\advance\footnoteno by \@ne \edef\thisfootno{$^{\the\footnoteno}$}% % % In case the footnote comes at the end of a sentence, preserve the % extra spacing after we do the footnote number. \let\@sf\empty \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi % % Remove inadvertent blank space before typesetting the footnote number. \unskip \thisfootno\@sf \dofootnote }% % Don't bother with the trickery in plain.tex to not require the % footnote text as a parameter. Our footnotes don't need to be so general. % % Oh yes, they do; otherwise, @ifset (and anything else that uses % \parseargline) fails inside footnotes because the tokens are fixed when % the footnote is read. --karl, 16nov96. % \gdef\dofootnote{% \insert\footins\bgroup % % Nested footnotes are not supported in TeX, that would take a lot % more work. (\startsavinginserts does not suffice.) \let\footnote=\errfootnotenest % % We want to typeset this text as a normal paragraph, even if the % footnote reference occurs in (for example) a display environment. % So reset some parameters. \hsize=\txipagewidth \interlinepenalty\interfootnotelinepenalty \splittopskip\ht\strutbox % top baseline for broken footnotes \splitmaxdepth\dp\strutbox \floatingpenalty\@MM \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip \parindent\defaultparindent % \smallfonts \rm % % Because we use hanging indentation in footnotes, a @noindent appears % to exdent this text, so make it be a no-op. makeinfo does not use % hanging indentation so @noindent can still be needed within footnote % text after an @example or the like (not that this is good style). \let\noindent = \relax % % Hang the footnote text off the number. Use \everypar in case the % footnote extends for more than one paragraph. \everypar = {\hang}% \textindent{\thisfootno}% % % Don't crash into the line above the footnote text. Since this % expands into a box, it must come within the paragraph, lest it % provide a place where TeX can split the footnote. \footstrut % % Invoke rest of plain TeX footnote routine. \futurelet\next\fo@t } }%end \catcode `\@=11 \def\errfootnotenest{% \errhelp=\EMsimple \errmessage{Nested footnotes not supported in texinfo.tex, even though they work in makeinfo; sorry} } \def\errfootnoteheading{% \errhelp=\EMsimple \errmessage{Footnotes in chapters, sections, etc., are not supported} } % In case a @footnote appears in a vbox, save the footnote text and create % the real \insert just after the vbox finished. Otherwise, the insertion % would be lost. % Similarly, if a @footnote appears inside an alignment, save the footnote % text to a box and make the \insert when a row of the table is finished. % And the same can be done for other insert classes. --kasal, 16nov03. % % Replace the \insert primitive by a cheating macro. % Deeper inside, just make sure that the saved insertions are not spilled % out prematurely. % \def\startsavinginserts{% \ifx \insert\ptexinsert \let\insert\saveinsert \else \let\checkinserts\relax \fi } % This \insert replacement works for both \insert\footins{foo} and % \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. % \def\saveinsert#1{% \edef\next{\noexpand\savetobox \makeSAVEname#1}% \afterassignment\next % swallow the left brace \let\temp = } \def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} \def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} \def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} \def\placesaveins#1{% \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname {\box#1}% } % eat @SAVE -- beware, all of them have catcode \other: { \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) \gdef\gobblesave @SAVE{} } % initialization: \def\newsaveins #1{% \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% \next } \def\newsaveinsX #1{% \csname newbox\endcsname #1% \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts \checksaveins #1}% } % initialize: \let\checkinserts\empty \newsaveins\footins \newsaveins\margin % @image. We use the macros from epsf.tex to support this. % If epsf.tex is not installed and @image is used, we complain. % % Check for and read epsf.tex up front. If we read it only at @image % time, we might be inside a group, and then its definitions would get % undone and the next image would fail. \openin 1 = epsf.tex \ifeof 1 \else % Do not bother showing banner with epsf.tex v2.7k (available in % doc/epsf.tex and on ctan). \def\epsfannounce{\toks0 = }% \input epsf.tex \fi \closein 1 % % We will only complain once about lack of epsf.tex. \newif\ifwarnednoepsf \newhelp\noepsfhelp{epsf.tex must be installed for images to work. It is also included in the Texinfo distribution, or you can get it from https://ctan.org/texarchive/macros/texinfo/texinfo/doc/epsf.tex.} % \def\image#1{% \ifx\epsfbox\thisisundefined \ifwarnednoepsf \else \errhelp = \noepsfhelp \errmessage{epsf.tex not found, images will be ignored}% \global\warnednoepsftrue \fi \else \imagexxx #1,,,,,\finish \fi } % Approximate height of a line in the standard text font. \newdimen\capheight \setbox0=\vbox{\tenrm H} \capheight=\ht0 % % Arguments to @image: % #1 is (mandatory) image filename; we tack on .eps extension. % #2 is (optional) width, #3 is (optional) height. % #4 is (ignored optional) html alt text. % #5 is (ignored optional) extension. % #6 is just the usual extra ignored arg for parsing stuff. \newif\ifimagevmode \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example \normalturnoffactive % allow _ et al. in names \makevalueexpandable \ifvmode \imagevmodetrue \medskip % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space % above and below. \vskip\parskip % % Place image in a \vtop for a top page margin that is (close to) correct, % as \topskip glue is relative to the first baseline. \vtop\bgroup \kern -\capheight \vskip-\parskip \fi % \ifx\centersub\centerV % For @center @image, enter vertical mode and add vertical space % Enter an extra \parskip because @center doesn't add space itself. \vbox\bgroup\vskip\parskip\medskip\vskip\parskip \else % Enter horizontal mode so that indentation from an enclosing % environment such as @quotation is respected. % However, if we're at the top level, we don't want the % normal paragraph indentation. \imageindent \fi % % Output the image. \ifpdf % For pdfTeX and LuaTeX <= 0.80 \dopdfimage{#1}{#2}{#3}% \else \ifx\XeTeXrevision\thisisundefined % For epsf.tex % \epsfbox itself resets \epsf?size at each figure. \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \epsfysize=#3\relax \fi \epsfbox{#1.eps}% \else % For XeTeX \doxeteximage{#1}{#2}{#3}% \fi \fi % \ifimagevmode \egroup \medskip % space after a standalone image \fi \ifx\centersub\centerV % @center @image \medskip \egroup % close \vbox \fi \endgroup} % @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, % etc. We don't actually implement floating yet, we always include the % float "here". But it seemed the best name for the future. % \envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} % There may be a space before second and/or third parameter; delete it. \def\eatcommaspace#1, {#1,} % #1 is the optional FLOATTYPE, the text label for this float, typically % "Figure", "Table", "Example", etc. Can't contain commas. If omitted, % this float will not be numbered and cannot be referred to. % % #2 is the optional xref label. Also must be present for the float to % be referable. % % #3 is the optional positioning argument; for now, it is ignored. It % will somehow specify the positions allowed to float to (here, top, bottom). % % We keep a separate counter for each FLOATTYPE, which we reset at each % chapter-level command. \let\resetallfloatnos=\empty % \def\dofloat#1,#2,#3,#4\finish{% \let\thiscaption=\empty \let\thisshortcaption=\empty % % don't lose footnotes inside @float. % % BEWARE: when the floats start float, we have to issue warning whenever an % insert appears inside a float which could possibly float. --kasal, 26may04 % \startsavinginserts % % We can't be used inside a paragraph. \par % \vtop\bgroup \def\floattype{#1}% \def\floatlabel{#2}% \def\floatloc{#3}% we do nothing with this yet. % \ifx\floattype\empty \let\safefloattype=\empty \else {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% \fi % % If label is given but no type, we handle that as the empty type. \ifx\floatlabel\empty \else % We want each FLOATTYPE to be numbered separately (Figure 1, % Table 1, Figure 2, ...). (And if no label, no number.) % \expandafter\getfloatno\csname\safefloattype floatno\endcsname \global\advance\floatno by 1 % {% % This magic value for \currentsection is output by \setref as the % XREFLABEL-title value. \xrefX uses it to distinguish float % labels (which have a completely different output format) from % node and anchor labels. And \xrdef uses it to construct the % lists of floats. % \edef\currentsection{\floatmagic=\safefloattype}% \setref{\floatlabel}{Yfloat}% }% \fi % % start with \parskip glue, I guess. \vskip\parskip % % Don't suppress indentation if a float happens to start a section. \restorefirstparagraphindent } % we have these possibilities: % @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap % @float Foo,lbl & no caption: Foo 1.1 % @float Foo & @caption{Cap}: Foo: Cap % @float Foo & no caption: Foo % @float ,lbl & Caption{Cap}: 1.1: Cap % @float ,lbl & no caption: 1.1 % @float & @caption{Cap}: Cap % @float & no caption: % \def\Efloat{% \let\floatident = \empty % % In all cases, if we have a float type, it comes first. \ifx\floattype\empty \else \def\floatident{\floattype}\fi % % If we have an xref label, the number comes next. \ifx\floatlabel\empty \else \ifx\floattype\empty \else % if also had float type, need tie first. \appendtomacro\floatident{\tie}% \fi % the number. \appendtomacro\floatident{\chaplevelprefix\the\floatno}% \fi % % Start the printed caption with what we've constructed in % \floatident, but keep it separate; we need \floatident again. \let\captionline = \floatident % \ifx\thiscaption\empty \else \ifx\floatident\empty \else \appendtomacro\captionline{: }% had ident, so need a colon between \fi % % caption text. \appendtomacro\captionline{\scanexp\thiscaption}% \fi % % If we have anything to print, print it, with space before. % Eventually this needs to become an \insert. \ifx\captionline\empty \else \vskip.5\parskip \captionline % % Space below caption. \vskip\parskip \fi % % If have an xref label, write the list of floats info. Do this % after the caption, to avoid chance of it being a breakpoint. \ifx\floatlabel\empty \else % Write the text that goes in the lof to the aux file as % \floatlabel-lof. Besides \floatident, we include the short % caption if specified, else the full caption if specified, else nothing. {% \requireauxfile \atdummies % \ifx\thisshortcaption\empty \def\gtemp{\thiscaption}% \else \def\gtemp{\thisshortcaption}% \fi \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident \ifx\gtemp\empty \else : \gtemp \fi}}% }% \fi \egroup % end of \vtop % \checkinserts } % Append the tokens #2 to the definition of macro #1, not expanding either. % \def\appendtomacro#1#2{% \expandafter\def\expandafter#1\expandafter{#1#2}% } % @caption, @shortcaption % \def\caption{\docaption\thiscaption} \def\shortcaption{\docaption\thisshortcaption} \def\docaption{\checkenv\float \bgroup\scanctxt\defcaption} \def\defcaption#1#2{\egroup \def#1{#2}} % The parameter is the control sequence identifying the counter we are % going to use. Create it if it doesn't exist and assign it to \floatno. \def\getfloatno#1{% \ifx#1\relax % Haven't seen this figure type before. \csname newcount\endcsname #1% % % Remember to reset this floatno at the next chap. \expandafter\gdef\expandafter\resetallfloatnos \expandafter{\resetallfloatnos #1=0 }% \fi \let\floatno#1% } % \setref calls this to get the XREFLABEL-snt value. We want an @xref % to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we % first read the @float command. % \def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% % Magic string used for the XREFLABEL-title value, so \xrefX can % distinguish floats from other xref types. \def\floatmagic{!!float!!} % #1 is the control sequence we are passed; we expand into a conditional % which is true if #1 represents a float ref. That is, the magic % \currentsection value which we \setref above. % \def\iffloat#1{\expandafter\doiffloat#1==\finish} % % #1 is (maybe) the \floatmagic string. If so, #2 will be the % (safe) float type for this float. We set \iffloattype to #2. % \def\doiffloat#1=#2=#3\finish{% \def\temp{#1}% \def\iffloattype{#2}% \ifx\temp\floatmagic } % @listoffloats FLOATTYPE - print a list of floats like a table of contents. % \parseargdef\listoffloats{% \def\floattype{#1}% floattype {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% % % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax \ifhavexrefs % if the user said @listoffloats foo but never @float foo. \message{\linenumber No `\safefloattype' floats to list.}% \fi \else \begingroup \leftskip=\tocindent % indent these entries like a toc \let\do=\listoffloatsdo \csname floatlist\safefloattype\endcsname \endgroup \fi } % This is called on each entry in a list of floats. We're passed the % xref label, in the form LABEL-title, which is how we save it in the % aux file. We strip off the -title and look up \XRLABEL-lof, which % has the text we're supposed to typeset here. % % Figures without xref labels will not be included in the list (since % they won't appear in the aux file). % \def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} \def\listoffloatsdoentry#1-title\finish{{% % Can't fully expand XR#1-lof because it can contain anything. Just % pass the control sequence. On the other hand, XR#1-pg is just the % page number, and we want to fully expand that so we can get a link % in pdf output. \toksA = \expandafter{\csname XR#1-lof\endcsname}% % % use the same \entry macro we use to generate the TOC and index. \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% \writeentry }} \message{localization,} % For single-language documents, @documentlanguage is usually given very % early, just after @documentencoding. Single argument is the language % (de) or locale (de_DE) abbreviation. % { \catcode`\_ = \active \globaldefs=1 \parseargdef\documentlanguage{% \tex % read txi-??.tex file in plain TeX. % Read the file by the name they passed if it exists. \let_ = \normalunderscore % normal _ character for filename test \openin 1 txi-#1.tex \ifeof 1 \documentlanguagetrywithoutunderscore #1_\finish \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 \endgroup % end raw TeX } % % If they passed de_DE, and txi-de_DE.tex doesn't exist, % try txi-de.tex. % \gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% \openin 1 txi-#1.tex \ifeof 1 \errhelp = \nolanghelp \errmessage{Cannot read language file txi-#1.tex}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 } }% end of special _ catcode % \newhelp\nolanghelp{The given language definition file cannot be found or is empty. Maybe you need to install it? Putting it in the current directory should work if nowhere else does.} % This macro is called from txi-??.tex files; the first argument is the % \language name to set (without the "\lang@" prefix), the second and % third args are \{left,right}hyphenmin. % % The language names to pass are determined when the format is built. % See the etex.log file created at that time, e.g., % /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. % % With TeX Live 2008, etex now includes hyphenation patterns for all % available languages. This means we can support hyphenation in % Texinfo, at least to some extent. (This still doesn't solve the % accented characters problem.) % \catcode`@=11 \def\txisetlanguage#1#2#3{% % do not set the language if the name is undefined in the current TeX. \expandafter\ifx\csname lang@#1\endcsname \relax \message{no patterns for #1}% \else \global\language = \csname lang@#1\endcsname \fi % but there is no harm in adjusting the hyphenmin values regardless. \global\lefthyphenmin = #2\relax \global\righthyphenmin = #3\relax } % XeTeX and LuaTeX can handle Unicode natively. % Their default I/O uses UTF-8 sequences instead of a byte-wise operation. % Other TeX engines' I/O (pdfTeX, etc.) is byte-wise. % \newif\iftxinativeunicodecapable \newif\iftxiusebytewiseio \ifx\XeTeXrevision\thisisundefined \ifx\luatexversion\thisisundefined \txinativeunicodecapablefalse \txiusebytewiseiotrue \else \txinativeunicodecapabletrue \txiusebytewiseiofalse \fi \else \txinativeunicodecapabletrue \txiusebytewiseiofalse \fi % Set I/O by bytes instead of UTF-8 sequence for XeTeX and LuaTex % for non-UTF-8 (byte-wise) encodings. % \def\setbytewiseio{% \ifx\XeTeXrevision\thisisundefined \else \XeTeXdefaultencoding "bytes" % For subsequent files to be read \XeTeXinputencoding "bytes" % For document root file % Unfortunately, there seems to be no corresponding XeTeX command for % output encoding. This is a problem for auxiliary index and TOC files. % The only solution would be perhaps to write out @U{...} sequences in % place of non-ASCII characters. \fi \ifx\luatexversion\thisisundefined \else \directlua{ local utf8_char, byte, gsub = unicode.utf8.char, string.byte, string.gsub local function convert_char (char) return utf8_char(byte(char)) end local function convert_line (line) return gsub(line, ".", convert_char) end callback.register("process_input_buffer", convert_line) local function convert_line_out (line) local line_out = "" for c in string.utfvalues(line) do line_out = line_out .. string.char(c) end return line_out end callback.register("process_output_buffer", convert_line_out) } \fi \txiusebytewiseiotrue } % Helpers for encodings. % Set the catcode of characters 128 through 255 to the specified number. % \def\setnonasciicharscatcode#1{% \count255=128 \loop\ifnum\count255<256 \global\catcode\count255=#1\relax \advance\count255 by 1 \repeat } \def\setnonasciicharscatcodenonglobal#1{% \count255=128 \loop\ifnum\count255<256 \catcode\count255=#1\relax \advance\count255 by 1 \repeat } % @documentencoding sets the definition of non-ASCII characters % according to the specified encoding. % \def\documentencoding{\parseargusing\filenamecatcodes\documentencodingzzz} \def\documentencodingzzz#1{% % % Encoding being declared for the document. \def\declaredencoding{\csname #1.enc\endcsname}% % % Supported encodings: names converted to tokens in order to be able % to compare them with \ifx. \def\ascii{\csname US-ASCII.enc\endcsname}% \def\latnine{\csname ISO-8859-15.enc\endcsname}% \def\latone{\csname ISO-8859-1.enc\endcsname}% \def\lattwo{\csname ISO-8859-2.enc\endcsname}% \def\utfeight{\csname UTF-8.enc\endcsname}% % \ifx \declaredencoding \ascii \asciichardefs % \else \ifx \declaredencoding \lattwo \iftxinativeunicodecapable \setbytewiseio \fi \setnonasciicharscatcode\active \lattwochardefs % \else \ifx \declaredencoding \latone \iftxinativeunicodecapable \setbytewiseio \fi \setnonasciicharscatcode\active \latonechardefs % \else \ifx \declaredencoding \latnine \iftxinativeunicodecapable \setbytewiseio \fi \setnonasciicharscatcode\active \latninechardefs % \else \ifx \declaredencoding \utfeight \iftxinativeunicodecapable % For native Unicode handling (XeTeX and LuaTeX) \nativeunicodechardefs \else % For treating UTF-8 as byte sequences (TeX, eTeX and pdfTeX). % Since we already invoke \utfeightchardefs at the top level, % making non-ascii chars active is sufficient. \setnonasciicharscatcode\active \fi % \else \message{Ignoring unknown document encoding: #1.}% % \fi % utfeight \fi % latnine \fi % latone \fi % lattwo \fi % ascii % \ifx\XeTeXrevision\thisisundefined \else \ifx \declaredencoding \utfeight \else \ifx \declaredencoding \ascii \else \message{Warning: XeTeX with non-UTF-8 encodings cannot handle % non-ASCII characters in auxiliary files.}% \fi \fi \fi } % A message to be logged when using a character that isn't available % the default font encoding (OT1). % \def\missingcharmsg#1{\message{Character missing, sorry: #1.}} % Take account of \c (plain) vs. \, (Texinfo) difference. \def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} \def\gdefchar#1#2{% \gdef#1{% \ifpassthroughchars \string#1% \else #2% \fi }} \begingroup % Make non-ASCII characters active for defining the character definition % macros. \setnonasciicharscatcode\active % Latin1 (ISO-8859-1) character definitions. \gdef\latonechardefs{% \gdefchar^^a0{\tie} \gdefchar^^a1{\exclamdown} \gdefchar^^a2{{\tcfont \char162}} % cent \gdefchar^^a3{\pounds{}} \gdefchar^^a4{{\tcfont \char164}} % currency \gdefchar^^a5{{\tcfont \char165}} % yen \gdefchar^^a6{{\tcfont \char166}} % broken bar \gdefchar^^a7{\S} \gdefchar^^a8{\"{}} \gdefchar^^a9{\copyright{}} \gdefchar^^aa{\ordf} \gdefchar^^ab{\guillemetleft{}} \gdefchar^^ac{\ensuremath\lnot} \gdefchar^^ad{\-} \gdefchar^^ae{\registeredsymbol{}} \gdefchar^^af{\={}} % \gdefchar^^b0{\textdegree} \gdefchar^^b1{$\pm$} \gdefchar^^b2{$^2$} \gdefchar^^b3{$^3$} \gdefchar^^b4{\'{}} \gdefchar^^b5{$\mu$} \gdefchar^^b6{\P} \gdefchar^^b7{\ensuremath\cdot} \gdefchar^^b8{\cedilla\ } \gdefchar^^b9{$^1$} \gdefchar^^ba{\ordm} \gdefchar^^bb{\guillemetright{}} \gdefchar^^bc{$1\over4$} \gdefchar^^bd{$1\over2$} \gdefchar^^be{$3\over4$} \gdefchar^^bf{\questiondown} % \gdefchar^^c0{\`A} \gdefchar^^c1{\'A} \gdefchar^^c2{\^A} \gdefchar^^c3{\~A} \gdefchar^^c4{\"A} \gdefchar^^c5{\ringaccent A} \gdefchar^^c6{\AE} \gdefchar^^c7{\cedilla C} \gdefchar^^c8{\`E} \gdefchar^^c9{\'E} \gdefchar^^ca{\^E} \gdefchar^^cb{\"E} \gdefchar^^cc{\`I} \gdefchar^^cd{\'I} \gdefchar^^ce{\^I} \gdefchar^^cf{\"I} % \gdefchar^^d0{\DH} \gdefchar^^d1{\~N} \gdefchar^^d2{\`O} \gdefchar^^d3{\'O} \gdefchar^^d4{\^O} \gdefchar^^d5{\~O} \gdefchar^^d6{\"O} \gdefchar^^d7{$\times$} \gdefchar^^d8{\O} \gdefchar^^d9{\`U} \gdefchar^^da{\'U} \gdefchar^^db{\^U} \gdefchar^^dc{\"U} \gdefchar^^dd{\'Y} \gdefchar^^de{\TH} \gdefchar^^df{\ss} % \gdefchar^^e0{\`a} \gdefchar^^e1{\'a} \gdefchar^^e2{\^a} \gdefchar^^e3{\~a} \gdefchar^^e4{\"a} \gdefchar^^e5{\ringaccent a} \gdefchar^^e6{\ae} \gdefchar^^e7{\cedilla c} \gdefchar^^e8{\`e} \gdefchar^^e9{\'e} \gdefchar^^ea{\^e} \gdefchar^^eb{\"e} \gdefchar^^ec{\`{\dotless i}} \gdefchar^^ed{\'{\dotless i}} \gdefchar^^ee{\^{\dotless i}} \gdefchar^^ef{\"{\dotless i}} % \gdefchar^^f0{\dh} \gdefchar^^f1{\~n} \gdefchar^^f2{\`o} \gdefchar^^f3{\'o} \gdefchar^^f4{\^o} \gdefchar^^f5{\~o} \gdefchar^^f6{\"o} \gdefchar^^f7{$\div$} \gdefchar^^f8{\o} \gdefchar^^f9{\`u} \gdefchar^^fa{\'u} \gdefchar^^fb{\^u} \gdefchar^^fc{\"u} \gdefchar^^fd{\'y} \gdefchar^^fe{\th} \gdefchar^^ff{\"y} } % Latin9 (ISO-8859-15) encoding character definitions. \gdef\latninechardefs{% % Encoding is almost identical to Latin1. \latonechardefs % \gdefchar^^a4{\euro{}} \gdefchar^^a6{\v S} \gdefchar^^a8{\v s} \gdefchar^^b4{\v Z} \gdefchar^^b8{\v z} \gdefchar^^bc{\OE} \gdefchar^^bd{\oe} \gdefchar^^be{\"Y} } % Latin2 (ISO-8859-2) character definitions. \gdef\lattwochardefs{% \gdefchar^^a0{\tie} \gdefchar^^a1{\ogonek{A}} \gdefchar^^a2{\u{}} \gdefchar^^a3{\L} \gdefchar^^a4{\missingcharmsg{CURRENCY SIGN}} \gdefchar^^a5{\v L} \gdefchar^^a6{\'S} \gdefchar^^a7{\S} \gdefchar^^a8{\"{}} \gdefchar^^a9{\v S} \gdefchar^^aa{\cedilla S} \gdefchar^^ab{\v T} \gdefchar^^ac{\'Z} \gdefchar^^ad{\-} \gdefchar^^ae{\v Z} \gdefchar^^af{\dotaccent Z} % \gdefchar^^b0{\textdegree} \gdefchar^^b1{\ogonek{a}} \gdefchar^^b2{\ogonek{ }} \gdefchar^^b3{\l} \gdefchar^^b4{\'{}} \gdefchar^^b5{\v l} \gdefchar^^b6{\'s} \gdefchar^^b7{\v{}} \gdefchar^^b8{\cedilla\ } \gdefchar^^b9{\v s} \gdefchar^^ba{\cedilla s} \gdefchar^^bb{\v t} \gdefchar^^bc{\'z} \gdefchar^^bd{\H{}} \gdefchar^^be{\v z} \gdefchar^^bf{\dotaccent z} % \gdefchar^^c0{\'R} \gdefchar^^c1{\'A} \gdefchar^^c2{\^A} \gdefchar^^c3{\u A} \gdefchar^^c4{\"A} \gdefchar^^c5{\'L} \gdefchar^^c6{\'C} \gdefchar^^c7{\cedilla C} \gdefchar^^c8{\v C} \gdefchar^^c9{\'E} \gdefchar^^ca{\ogonek{E}} \gdefchar^^cb{\"E} \gdefchar^^cc{\v E} \gdefchar^^cd{\'I} \gdefchar^^ce{\^I} \gdefchar^^cf{\v D} % \gdefchar^^d0{\DH} \gdefchar^^d1{\'N} \gdefchar^^d2{\v N} \gdefchar^^d3{\'O} \gdefchar^^d4{\^O} \gdefchar^^d5{\H O} \gdefchar^^d6{\"O} \gdefchar^^d7{$\times$} \gdefchar^^d8{\v R} \gdefchar^^d9{\ringaccent U} \gdefchar^^da{\'U} \gdefchar^^db{\H U} \gdefchar^^dc{\"U} \gdefchar^^dd{\'Y} \gdefchar^^de{\cedilla T} \gdefchar^^df{\ss} % \gdefchar^^e0{\'r} \gdefchar^^e1{\'a} \gdefchar^^e2{\^a} \gdefchar^^e3{\u a} \gdefchar^^e4{\"a} \gdefchar^^e5{\'l} \gdefchar^^e6{\'c} \gdefchar^^e7{\cedilla c} \gdefchar^^e8{\v c} \gdefchar^^e9{\'e} \gdefchar^^ea{\ogonek{e}} \gdefchar^^eb{\"e} \gdefchar^^ec{\v e} \gdefchar^^ed{\'{\dotless{i}}} \gdefchar^^ee{\^{\dotless{i}}} \gdefchar^^ef{\v d} % \gdefchar^^f0{\dh} \gdefchar^^f1{\'n} \gdefchar^^f2{\v n} \gdefchar^^f3{\'o} \gdefchar^^f4{\^o} \gdefchar^^f5{\H o} \gdefchar^^f6{\"o} \gdefchar^^f7{$\div$} \gdefchar^^f8{\v r} \gdefchar^^f9{\ringaccent u} \gdefchar^^fa{\'u} \gdefchar^^fb{\H u} \gdefchar^^fc{\"u} \gdefchar^^fd{\'y} \gdefchar^^fe{\cedilla t} \gdefchar^^ff{\dotaccent{}} } \endgroup % active chars % UTF-8 character definitions. % % This code to support UTF-8 is based on LaTeX's utf8.def, with some % changes for Texinfo conventions. It is included here under the GPL by % permission from Frank Mittelbach and the LaTeX team. % \newcount\countUTFx \newcount\countUTFy \newcount\countUTFz \gdef\UTFviiiTwoOctets#1#2{\expandafter \UTFviiiDefined\csname u8:#1\string #2\endcsname} % \gdef\UTFviiiThreeOctets#1#2#3{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} % \gdef\UTFviiiFourOctets#1#2#3#4{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} \gdef\UTFviiiDefined#1{% \ifx #1\relax \message{\linenumber Unicode char \string #1 not defined for Texinfo}% \else \expandafter #1% \fi } % Give non-ASCII bytes the active definitions for processing UTF-8 sequences \begingroup \catcode`\~13 \catcode`\$12 \catcode`\"12 % Loop from \countUTFx to \countUTFy, performing \UTFviiiTmp % substituting ~ and $ with a character token of that value. \def\UTFviiiLoop{% \global\catcode\countUTFx\active \uccode`\~\countUTFx \uccode`\$\countUTFx \uppercase\expandafter{\UTFviiiTmp}% \advance\countUTFx by 1 \ifnum\countUTFx < \countUTFy \expandafter\UTFviiiLoop \fi} % For bytes other than the first in a UTF-8 sequence. Not expected to % be expanded except when writing to auxiliary files. \countUTFx = "80 \countUTFy = "C2 \def\UTFviiiTmp{% \gdef~{% \ifpassthroughchars $\fi}}% \UTFviiiLoop \countUTFx = "C2 \countUTFy = "E0 \def\UTFviiiTmp{% \gdef~{% \ifpassthroughchars $% \else\expandafter\UTFviiiTwoOctets\expandafter$\fi}}% \UTFviiiLoop \countUTFx = "E0 \countUTFy = "F0 \def\UTFviiiTmp{% \gdef~{% \ifpassthroughchars $% \else\expandafter\UTFviiiThreeOctets\expandafter$\fi}}% \UTFviiiLoop \countUTFx = "F0 \countUTFy = "F4 \def\UTFviiiTmp{% \gdef~{% \ifpassthroughchars $% \else\expandafter\UTFviiiFourOctets\expandafter$\fi }}% \UTFviiiLoop \endgroup \def\globallet{\global\let} % save some \expandafter's below % @U{xxxx} to produce U+xxxx, if we support it. \def\U#1{% \expandafter\ifx\csname uni:#1\endcsname \relax \iftxinativeunicodecapable % All Unicode characters can be used if native Unicode handling is % active. However, if the font does not have the glyph, % letters are missing. \begingroup \uccode`\.="#1\relax \uppercase{.} \endgroup \else \errhelp = \EMsimple \errmessage{Unicode character U+#1 not supported, sorry}% \fi \else \csname uni:#1\endcsname \fi } % These macros are used here to construct the name of a control % sequence to be defined. \def\UTFviiiTwoOctetsName#1#2{% \csname u8:#1\string #2\endcsname}% \def\UTFviiiThreeOctetsName#1#2#3{% \csname u8:#1\string #2\string #3\endcsname}% \def\UTFviiiFourOctetsName#1#2#3#4{% \csname u8:#1\string #2\string #3\string #4\endcsname}% % For UTF-8 byte sequences (TeX, e-TeX and pdfTeX), % provide a definition macro to replace a Unicode character; % this gets used by the @U command % \begingroup \catcode`\"=12 \catcode`\<=12 \catcode`\.=12 \catcode`\,=12 \catcode`\;=12 \catcode`\!=12 \catcode`\~=13 \gdef\DeclareUnicodeCharacterUTFviii#1#2{% \countUTFz = "#1\relax \begingroup \parseXMLCharref % Give \u8:... its definition. The sequence of seven \expandafter's % expands after the \gdef three times, e.g. % % 1. \UTFviiTwoOctetsName B1 B2 % 2. \csname u8:B1 \string B2 \endcsname % 3. \u8: B1 B2 (a single control sequence token) % \expandafter\expandafter \expandafter\expandafter \expandafter\expandafter \expandafter\gdef \UTFviiiTmp{#2}% % \expandafter\ifx\csname uni:#1\endcsname \relax \else \message{Internal error, already defined: #1}% \fi % % define an additional control sequence for this code point. \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp \endgroup} % % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp % to the corresponding UTF-8 sequence. \gdef\parseXMLCharref{% \ifnum\countUTFz < "20\relax \errhelp = \EMsimple \errmessage{Cannot define Unicode char value < 0020}% \else\ifnum\countUTFz < "800\relax \parseUTFviiiA,% \parseUTFviiiB C\UTFviiiTwoOctetsName.,% \else\ifnum\countUTFz < "10000\relax \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiB E\UTFviiiThreeOctetsName.{,;}% \else \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiA!% \parseUTFviiiB F\UTFviiiFourOctetsName.{!,;}% \fi\fi\fi } % Extract a byte from the end of the UTF-8 representation of \countUTFx. % It must be a non-initial byte in the sequence. % Change \uccode of #1 for it to be used in \parseUTFviiiB as one % of the bytes. \gdef\parseUTFviiiA#1{% \countUTFx = \countUTFz \divide\countUTFz by 64 \countUTFy = \countUTFz % Save to be the future value of \countUTFz. \multiply\countUTFz by 64 % \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract % in order to get the last five bits. \advance\countUTFx by -\countUTFz % Convert this to the byte in the UTF-8 sequence. \advance\countUTFx by 128 \uccode `#1\countUTFx \countUTFz = \countUTFy} % Used to put a UTF-8 byte sequence into \UTFviiiTmp % #1 is the increment for \countUTFz to yield a the first byte of the UTF-8 % sequence. % #2 is one of the \UTFviii*OctetsName macros. % #3 is always a full stop (.) % #4 is a template for the other bytes in the sequence. The values for these % bytes is substituted in here with \uppercase using the \uccode's. \gdef\parseUTFviiiB#1#2#3#4{% \advance\countUTFz by "#10\relax \uccode `#3\countUTFz \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} \endgroup % For native Unicode handling (XeTeX and LuaTeX), % provide a definition macro that sets a catcode to `other' non-globally % \def\DeclareUnicodeCharacterNativeOther#1#2{% \catcode"#1=\other } % https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M % U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block) % U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block) % U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A % U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B % % Many of our renditions are less than wonderful, and all the missing % characters are available somewhere. Loading the necessary fonts % awaits user request. We can't truly support Unicode without % reimplementing everything that's been done in LaTeX for many years, % plus probably using luatex or xetex, and who knows what else. % We won't be doing that here in this simple file. But we can try to at % least make most of the characters not bomb out. % \def\unicodechardefs{% \DeclareUnicodeCharacter{0020}{ } % space \DeclareUnicodeCharacter{0021}{\char"21 }% % space to terminate number \DeclareUnicodeCharacter{0022}{\char"22 }% \DeclareUnicodeCharacter{0023}{\char"23 }% \DeclareUnicodeCharacter{0024}{\char"24 }% \DeclareUnicodeCharacter{0025}{\char"25 }% \DeclareUnicodeCharacter{0026}{\char"26 }% \DeclareUnicodeCharacter{0027}{\char"27 }% \DeclareUnicodeCharacter{0028}{\char"28 }% \DeclareUnicodeCharacter{0029}{\char"29 }% \DeclareUnicodeCharacter{002A}{\char"2A }% \DeclareUnicodeCharacter{002B}{\char"2B }% \DeclareUnicodeCharacter{002C}{\char"2C }% \DeclareUnicodeCharacter{002D}{\char"2D }% \DeclareUnicodeCharacter{002E}{\char"2E }% \DeclareUnicodeCharacter{002F}{\char"2F }% \DeclareUnicodeCharacter{0030}{0}% \DeclareUnicodeCharacter{0031}{1}% \DeclareUnicodeCharacter{0032}{2}% \DeclareUnicodeCharacter{0033}{3}% \DeclareUnicodeCharacter{0034}{4}% \DeclareUnicodeCharacter{0035}{5}% \DeclareUnicodeCharacter{0036}{6}% \DeclareUnicodeCharacter{0037}{7}% \DeclareUnicodeCharacter{0038}{8}% \DeclareUnicodeCharacter{0039}{9}% \DeclareUnicodeCharacter{003A}{\char"3A }% \DeclareUnicodeCharacter{003B}{\char"3B }% \DeclareUnicodeCharacter{003C}{\char"3C }% \DeclareUnicodeCharacter{003D}{\char"3D }% \DeclareUnicodeCharacter{003E}{\char"3E }% \DeclareUnicodeCharacter{003F}{\char"3F }% \DeclareUnicodeCharacter{0040}{\char"40 }% \DeclareUnicodeCharacter{0041}{A}% \DeclareUnicodeCharacter{0042}{B}% \DeclareUnicodeCharacter{0043}{C}% \DeclareUnicodeCharacter{0044}{D}% \DeclareUnicodeCharacter{0045}{E}% \DeclareUnicodeCharacter{0046}{F}% \DeclareUnicodeCharacter{0047}{G}% \DeclareUnicodeCharacter{0048}{H}% \DeclareUnicodeCharacter{0049}{I}% \DeclareUnicodeCharacter{004A}{J}% \DeclareUnicodeCharacter{004B}{K}% \DeclareUnicodeCharacter{004C}{L}% \DeclareUnicodeCharacter{004D}{M}% \DeclareUnicodeCharacter{004E}{N}% \DeclareUnicodeCharacter{004F}{O}% \DeclareUnicodeCharacter{0050}{P}% \DeclareUnicodeCharacter{0051}{Q}% \DeclareUnicodeCharacter{0052}{R}% \DeclareUnicodeCharacter{0053}{S}% \DeclareUnicodeCharacter{0054}{T}% \DeclareUnicodeCharacter{0055}{U}% \DeclareUnicodeCharacter{0056}{V}% \DeclareUnicodeCharacter{0057}{W}% \DeclareUnicodeCharacter{0058}{X}% \DeclareUnicodeCharacter{0059}{Y}% \DeclareUnicodeCharacter{005A}{Z}% \DeclareUnicodeCharacter{005B}{\char"5B }% \DeclareUnicodeCharacter{005C}{\char"5C }% \DeclareUnicodeCharacter{005D}{\char"5D }% \DeclareUnicodeCharacter{005E}{\char"5E }% \DeclareUnicodeCharacter{005F}{\char"5F }% \DeclareUnicodeCharacter{0060}{\char"60 }% \DeclareUnicodeCharacter{0061}{a}% \DeclareUnicodeCharacter{0062}{b}% \DeclareUnicodeCharacter{0063}{c}% \DeclareUnicodeCharacter{0064}{d}% \DeclareUnicodeCharacter{0065}{e}% \DeclareUnicodeCharacter{0066}{f}% \DeclareUnicodeCharacter{0067}{g}% \DeclareUnicodeCharacter{0068}{h}% \DeclareUnicodeCharacter{0069}{i}% \DeclareUnicodeCharacter{006A}{j}% \DeclareUnicodeCharacter{006B}{k}% \DeclareUnicodeCharacter{006C}{l}% \DeclareUnicodeCharacter{006D}{m}% \DeclareUnicodeCharacter{006E}{n}% \DeclareUnicodeCharacter{006F}{o}% \DeclareUnicodeCharacter{0070}{p}% \DeclareUnicodeCharacter{0071}{q}% \DeclareUnicodeCharacter{0072}{r}% \DeclareUnicodeCharacter{0073}{s}% \DeclareUnicodeCharacter{0074}{t}% \DeclareUnicodeCharacter{0075}{u}% \DeclareUnicodeCharacter{0076}{v}% \DeclareUnicodeCharacter{0077}{w}% \DeclareUnicodeCharacter{0078}{x}% \DeclareUnicodeCharacter{0079}{y}% \DeclareUnicodeCharacter{007A}{z}% \DeclareUnicodeCharacter{007B}{\char"7B }% \DeclareUnicodeCharacter{007C}{\char"7C }% \DeclareUnicodeCharacter{007D}{\char"7D }% \DeclareUnicodeCharacter{007E}{\char"7E }% % \DeclareUnicodeCharacter{007F}{} % DEL % \DeclareUnicodeCharacter{00A0}{\tie}% \DeclareUnicodeCharacter{00A1}{\exclamdown}% \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent \DeclareUnicodeCharacter{00A3}{\pounds{}}% \DeclareUnicodeCharacter{00A4}{{\tcfont \char164}}% 0244=currency \DeclareUnicodeCharacter{00A5}{{\tcfont \char165}}% 0245=yen \DeclareUnicodeCharacter{00A6}{{\tcfont \char166}}% 0246=brokenbar \DeclareUnicodeCharacter{00A7}{\S}% \DeclareUnicodeCharacter{00A8}{\"{ }}% \DeclareUnicodeCharacter{00A9}{\copyright{}}% \DeclareUnicodeCharacter{00AA}{\ordf}% \DeclareUnicodeCharacter{00AB}{\guillemetleft{}}% \DeclareUnicodeCharacter{00AC}{\ensuremath\lnot}% \DeclareUnicodeCharacter{00AD}{\-}% \DeclareUnicodeCharacter{00AE}{\registeredsymbol{}}% \DeclareUnicodeCharacter{00AF}{\={ }}% % \DeclareUnicodeCharacter{00B0}{\textdegree}% \DeclareUnicodeCharacter{00B1}{\ensuremath\pm}% \DeclareUnicodeCharacter{00B2}{$^2$}% \DeclareUnicodeCharacter{00B3}{$^3$}% \DeclareUnicodeCharacter{00B4}{\'{ }}% \DeclareUnicodeCharacter{00B5}{$\mu$}% \DeclareUnicodeCharacter{00B6}{\P}% \DeclareUnicodeCharacter{00B7}{\ensuremath\cdot}% \DeclareUnicodeCharacter{00B8}{\cedilla{ }}% \DeclareUnicodeCharacter{00B9}{$^1$}% \DeclareUnicodeCharacter{00BA}{\ordm}% \DeclareUnicodeCharacter{00BB}{\guillemetright{}}% \DeclareUnicodeCharacter{00BC}{$1\over4$}% \DeclareUnicodeCharacter{00BD}{$1\over2$}% \DeclareUnicodeCharacter{00BE}{$3\over4$}% \DeclareUnicodeCharacter{00BF}{\questiondown}% % \DeclareUnicodeCharacter{00C0}{\`A}% \DeclareUnicodeCharacter{00C1}{\'A}% \DeclareUnicodeCharacter{00C2}{\^A}% \DeclareUnicodeCharacter{00C3}{\~A}% \DeclareUnicodeCharacter{00C4}{\"A}% \DeclareUnicodeCharacter{00C5}{\AA}% \DeclareUnicodeCharacter{00C6}{\AE}% \DeclareUnicodeCharacter{00C7}{\cedilla{C}}% \DeclareUnicodeCharacter{00C8}{\`E}% \DeclareUnicodeCharacter{00C9}{\'E}% \DeclareUnicodeCharacter{00CA}{\^E}% \DeclareUnicodeCharacter{00CB}{\"E}% \DeclareUnicodeCharacter{00CC}{\`I}% \DeclareUnicodeCharacter{00CD}{\'I}% \DeclareUnicodeCharacter{00CE}{\^I}% \DeclareUnicodeCharacter{00CF}{\"I}% % \DeclareUnicodeCharacter{00D0}{\DH}% \DeclareUnicodeCharacter{00D1}{\~N}% \DeclareUnicodeCharacter{00D2}{\`O}% \DeclareUnicodeCharacter{00D3}{\'O}% \DeclareUnicodeCharacter{00D4}{\^O}% \DeclareUnicodeCharacter{00D5}{\~O}% \DeclareUnicodeCharacter{00D6}{\"O}% \DeclareUnicodeCharacter{00D7}{\ensuremath\times}% \DeclareUnicodeCharacter{00D8}{\O}% \DeclareUnicodeCharacter{00D9}{\`U}% \DeclareUnicodeCharacter{00DA}{\'U}% \DeclareUnicodeCharacter{00DB}{\^U}% \DeclareUnicodeCharacter{00DC}{\"U}% \DeclareUnicodeCharacter{00DD}{\'Y}% \DeclareUnicodeCharacter{00DE}{\TH}% \DeclareUnicodeCharacter{00DF}{\ss}% % \DeclareUnicodeCharacter{00E0}{\`a}% \DeclareUnicodeCharacter{00E1}{\'a}% \DeclareUnicodeCharacter{00E2}{\^a}% \DeclareUnicodeCharacter{00E3}{\~a}% \DeclareUnicodeCharacter{00E4}{\"a}% \DeclareUnicodeCharacter{00E5}{\aa}% \DeclareUnicodeCharacter{00E6}{\ae}% \DeclareUnicodeCharacter{00E7}{\cedilla{c}}% \DeclareUnicodeCharacter{00E8}{\`e}% \DeclareUnicodeCharacter{00E9}{\'e}% \DeclareUnicodeCharacter{00EA}{\^e}% \DeclareUnicodeCharacter{00EB}{\"e}% \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}% \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}% \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}% \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}% % \DeclareUnicodeCharacter{00F0}{\dh}% \DeclareUnicodeCharacter{00F1}{\~n}% \DeclareUnicodeCharacter{00F2}{\`o}% \DeclareUnicodeCharacter{00F3}{\'o}% \DeclareUnicodeCharacter{00F4}{\^o}% \DeclareUnicodeCharacter{00F5}{\~o}% \DeclareUnicodeCharacter{00F6}{\"o}% \DeclareUnicodeCharacter{00F7}{\ensuremath\div}% \DeclareUnicodeCharacter{00F8}{\o}% \DeclareUnicodeCharacter{00F9}{\`u}% \DeclareUnicodeCharacter{00FA}{\'u}% \DeclareUnicodeCharacter{00FB}{\^u}% \DeclareUnicodeCharacter{00FC}{\"u}% \DeclareUnicodeCharacter{00FD}{\'y}% \DeclareUnicodeCharacter{00FE}{\th}% \DeclareUnicodeCharacter{00FF}{\"y}% % \DeclareUnicodeCharacter{0100}{\=A}% \DeclareUnicodeCharacter{0101}{\=a}% \DeclareUnicodeCharacter{0102}{\u{A}}% \DeclareUnicodeCharacter{0103}{\u{a}}% \DeclareUnicodeCharacter{0104}{\ogonek{A}}% \DeclareUnicodeCharacter{0105}{\ogonek{a}}% \DeclareUnicodeCharacter{0106}{\'C}% \DeclareUnicodeCharacter{0107}{\'c}% \DeclareUnicodeCharacter{0108}{\^C}% \DeclareUnicodeCharacter{0109}{\^c}% \DeclareUnicodeCharacter{010A}{\dotaccent{C}}% \DeclareUnicodeCharacter{010B}{\dotaccent{c}}% \DeclareUnicodeCharacter{010C}{\v{C}}% \DeclareUnicodeCharacter{010D}{\v{c}}% \DeclareUnicodeCharacter{010E}{\v{D}}% \DeclareUnicodeCharacter{010F}{d'}% % \DeclareUnicodeCharacter{0110}{\DH}% \DeclareUnicodeCharacter{0111}{\dh}% \DeclareUnicodeCharacter{0112}{\=E}% \DeclareUnicodeCharacter{0113}{\=e}% \DeclareUnicodeCharacter{0114}{\u{E}}% \DeclareUnicodeCharacter{0115}{\u{e}}% \DeclareUnicodeCharacter{0116}{\dotaccent{E}}% \DeclareUnicodeCharacter{0117}{\dotaccent{e}}% \DeclareUnicodeCharacter{0118}{\ogonek{E}}% \DeclareUnicodeCharacter{0119}{\ogonek{e}}% \DeclareUnicodeCharacter{011A}{\v{E}}% \DeclareUnicodeCharacter{011B}{\v{e}}% \DeclareUnicodeCharacter{011C}{\^G}% \DeclareUnicodeCharacter{011D}{\^g}% \DeclareUnicodeCharacter{011E}{\u{G}}% \DeclareUnicodeCharacter{011F}{\u{g}}% % \DeclareUnicodeCharacter{0120}{\dotaccent{G}}% \DeclareUnicodeCharacter{0121}{\dotaccent{g}}% \DeclareUnicodeCharacter{0122}{\cedilla{G}}% \DeclareUnicodeCharacter{0123}{\cedilla{g}}% \DeclareUnicodeCharacter{0124}{\^H}% \DeclareUnicodeCharacter{0125}{\^h}% \DeclareUnicodeCharacter{0126}{\missingcharmsg{H WITH STROKE}}% \DeclareUnicodeCharacter{0127}{\missingcharmsg{h WITH STROKE}}% \DeclareUnicodeCharacter{0128}{\~I}% \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}% \DeclareUnicodeCharacter{012A}{\=I}% \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}% \DeclareUnicodeCharacter{012C}{\u{I}}% \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}% \DeclareUnicodeCharacter{012E}{\ogonek{I}}% \DeclareUnicodeCharacter{012F}{\ogonek{i}}% % \DeclareUnicodeCharacter{0130}{\dotaccent{I}}% \DeclareUnicodeCharacter{0131}{\dotless{i}}% \DeclareUnicodeCharacter{0132}{IJ}% \DeclareUnicodeCharacter{0133}{ij}% \DeclareUnicodeCharacter{0134}{\^J}% \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}% \DeclareUnicodeCharacter{0136}{\cedilla{K}}% \DeclareUnicodeCharacter{0137}{\cedilla{k}}% \DeclareUnicodeCharacter{0138}{\ensuremath\kappa}% \DeclareUnicodeCharacter{0139}{\'L}% \DeclareUnicodeCharacter{013A}{\'l}% \DeclareUnicodeCharacter{013B}{\cedilla{L}}% \DeclareUnicodeCharacter{013C}{\cedilla{l}}% \DeclareUnicodeCharacter{013D}{L'}% should kern \DeclareUnicodeCharacter{013E}{l'}% should kern \DeclareUnicodeCharacter{013F}{L\U{00B7}}% % \DeclareUnicodeCharacter{0140}{l\U{00B7}}% \DeclareUnicodeCharacter{0141}{\L}% \DeclareUnicodeCharacter{0142}{\l}% \DeclareUnicodeCharacter{0143}{\'N}% \DeclareUnicodeCharacter{0144}{\'n}% \DeclareUnicodeCharacter{0145}{\cedilla{N}}% \DeclareUnicodeCharacter{0146}{\cedilla{n}}% \DeclareUnicodeCharacter{0147}{\v{N}}% \DeclareUnicodeCharacter{0148}{\v{n}}% \DeclareUnicodeCharacter{0149}{'n}% \DeclareUnicodeCharacter{014A}{\missingcharmsg{ENG}}% \DeclareUnicodeCharacter{014B}{\missingcharmsg{eng}}% \DeclareUnicodeCharacter{014C}{\=O}% \DeclareUnicodeCharacter{014D}{\=o}% \DeclareUnicodeCharacter{014E}{\u{O}}% \DeclareUnicodeCharacter{014F}{\u{o}}% % \DeclareUnicodeCharacter{0150}{\H{O}}% \DeclareUnicodeCharacter{0151}{\H{o}}% \DeclareUnicodeCharacter{0152}{\OE}% \DeclareUnicodeCharacter{0153}{\oe}% \DeclareUnicodeCharacter{0154}{\'R}% \DeclareUnicodeCharacter{0155}{\'r}% \DeclareUnicodeCharacter{0156}{\cedilla{R}}% \DeclareUnicodeCharacter{0157}{\cedilla{r}}% \DeclareUnicodeCharacter{0158}{\v{R}}% \DeclareUnicodeCharacter{0159}{\v{r}}% \DeclareUnicodeCharacter{015A}{\'S}% \DeclareUnicodeCharacter{015B}{\'s}% \DeclareUnicodeCharacter{015C}{\^S}% \DeclareUnicodeCharacter{015D}{\^s}% \DeclareUnicodeCharacter{015E}{\cedilla{S}}% \DeclareUnicodeCharacter{015F}{\cedilla{s}}% % \DeclareUnicodeCharacter{0160}{\v{S}}% \DeclareUnicodeCharacter{0161}{\v{s}}% \DeclareUnicodeCharacter{0162}{\cedilla{T}}% \DeclareUnicodeCharacter{0163}{\cedilla{t}}% \DeclareUnicodeCharacter{0164}{\v{T}}% \DeclareUnicodeCharacter{0165}{\v{t}}% \DeclareUnicodeCharacter{0166}{\missingcharmsg{H WITH STROKE}}% \DeclareUnicodeCharacter{0167}{\missingcharmsg{h WITH STROKE}}% \DeclareUnicodeCharacter{0168}{\~U}% \DeclareUnicodeCharacter{0169}{\~u}% \DeclareUnicodeCharacter{016A}{\=U}% \DeclareUnicodeCharacter{016B}{\=u}% \DeclareUnicodeCharacter{016C}{\u{U}}% \DeclareUnicodeCharacter{016D}{\u{u}}% \DeclareUnicodeCharacter{016E}{\ringaccent{U}}% \DeclareUnicodeCharacter{016F}{\ringaccent{u}}% % \DeclareUnicodeCharacter{0170}{\H{U}}% \DeclareUnicodeCharacter{0171}{\H{u}}% \DeclareUnicodeCharacter{0172}{\ogonek{U}}% \DeclareUnicodeCharacter{0173}{\ogonek{u}}% \DeclareUnicodeCharacter{0174}{\^W}% \DeclareUnicodeCharacter{0175}{\^w}% \DeclareUnicodeCharacter{0176}{\^Y}% \DeclareUnicodeCharacter{0177}{\^y}% \DeclareUnicodeCharacter{0178}{\"Y}% \DeclareUnicodeCharacter{0179}{\'Z}% \DeclareUnicodeCharacter{017A}{\'z}% \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}% \DeclareUnicodeCharacter{017C}{\dotaccent{z}}% \DeclareUnicodeCharacter{017D}{\v{Z}}% \DeclareUnicodeCharacter{017E}{\v{z}}% \DeclareUnicodeCharacter{017F}{\missingcharmsg{LONG S}}% % \DeclareUnicodeCharacter{01C4}{D\v{Z}}% \DeclareUnicodeCharacter{01C5}{D\v{z}}% \DeclareUnicodeCharacter{01C6}{d\v{z}}% \DeclareUnicodeCharacter{01C7}{LJ}% \DeclareUnicodeCharacter{01C8}{Lj}% \DeclareUnicodeCharacter{01C9}{lj}% \DeclareUnicodeCharacter{01CA}{NJ}% \DeclareUnicodeCharacter{01CB}{Nj}% \DeclareUnicodeCharacter{01CC}{nj}% \DeclareUnicodeCharacter{01CD}{\v{A}}% \DeclareUnicodeCharacter{01CE}{\v{a}}% \DeclareUnicodeCharacter{01CF}{\v{I}}% % \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}% \DeclareUnicodeCharacter{01D1}{\v{O}}% \DeclareUnicodeCharacter{01D2}{\v{o}}% \DeclareUnicodeCharacter{01D3}{\v{U}}% \DeclareUnicodeCharacter{01D4}{\v{u}}% % \DeclareUnicodeCharacter{01E2}{\={\AE}}% \DeclareUnicodeCharacter{01E3}{\={\ae}}% \DeclareUnicodeCharacter{01E6}{\v{G}}% \DeclareUnicodeCharacter{01E7}{\v{g}}% \DeclareUnicodeCharacter{01E8}{\v{K}}% \DeclareUnicodeCharacter{01E9}{\v{k}}% % \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}% \DeclareUnicodeCharacter{01F1}{DZ}% \DeclareUnicodeCharacter{01F2}{Dz}% \DeclareUnicodeCharacter{01F3}{dz}% \DeclareUnicodeCharacter{01F4}{\'G}% \DeclareUnicodeCharacter{01F5}{\'g}% \DeclareUnicodeCharacter{01F8}{\`N}% \DeclareUnicodeCharacter{01F9}{\`n}% \DeclareUnicodeCharacter{01FC}{\'{\AE}}% \DeclareUnicodeCharacter{01FD}{\'{\ae}}% \DeclareUnicodeCharacter{01FE}{\'{\O}}% \DeclareUnicodeCharacter{01FF}{\'{\o}}% % \DeclareUnicodeCharacter{021E}{\v{H}}% \DeclareUnicodeCharacter{021F}{\v{h}}% % \DeclareUnicodeCharacter{0226}{\dotaccent{A}}% \DeclareUnicodeCharacter{0227}{\dotaccent{a}}% \DeclareUnicodeCharacter{0228}{\cedilla{E}}% \DeclareUnicodeCharacter{0229}{\cedilla{e}}% \DeclareUnicodeCharacter{022E}{\dotaccent{O}}% \DeclareUnicodeCharacter{022F}{\dotaccent{o}}% % \DeclareUnicodeCharacter{0232}{\=Y}% \DeclareUnicodeCharacter{0233}{\=y}% \DeclareUnicodeCharacter{0237}{\dotless{j}}% % \DeclareUnicodeCharacter{02BC}{'}% % \DeclareUnicodeCharacter{02DB}{\ogonek{ }}% % % Greek letters upper case \DeclareUnicodeCharacter{0391}{{\it A}}% \DeclareUnicodeCharacter{0392}{{\it B}}% \DeclareUnicodeCharacter{0393}{\ensuremath{\mit\Gamma}}% \DeclareUnicodeCharacter{0394}{\ensuremath{\mit\Delta}}% \DeclareUnicodeCharacter{0395}{{\it E}}% \DeclareUnicodeCharacter{0396}{{\it Z}}% \DeclareUnicodeCharacter{0397}{{\it H}}% \DeclareUnicodeCharacter{0398}{\ensuremath{\mit\Theta}}% \DeclareUnicodeCharacter{0399}{{\it I}}% \DeclareUnicodeCharacter{039A}{{\it K}}% \DeclareUnicodeCharacter{039B}{\ensuremath{\mit\Lambda}}% \DeclareUnicodeCharacter{039C}{{\it M}}% \DeclareUnicodeCharacter{039D}{{\it N}}% \DeclareUnicodeCharacter{039E}{\ensuremath{\mit\Xi}}% \DeclareUnicodeCharacter{039F}{{\it O}}% \DeclareUnicodeCharacter{03A0}{\ensuremath{\mit\Pi}}% \DeclareUnicodeCharacter{03A1}{{\it P}}% %\DeclareUnicodeCharacter{03A2}{} % none - corresponds to final sigma \DeclareUnicodeCharacter{03A3}{\ensuremath{\mit\Sigma}}% \DeclareUnicodeCharacter{03A4}{{\it T}}% \DeclareUnicodeCharacter{03A5}{\ensuremath{\mit\Upsilon}}% \DeclareUnicodeCharacter{03A6}{\ensuremath{\mit\Phi}}% \DeclareUnicodeCharacter{03A7}{{\it X}}% \DeclareUnicodeCharacter{03A8}{\ensuremath{\mit\Psi}}% \DeclareUnicodeCharacter{03A9}{\ensuremath{\mit\Omega}}% % % Vowels with accents \DeclareUnicodeCharacter{0390}{\ensuremath{\ddot{\acute\iota}}}% \DeclareUnicodeCharacter{03AC}{\ensuremath{\acute\alpha}}% \DeclareUnicodeCharacter{03AD}{\ensuremath{\acute\epsilon}}% \DeclareUnicodeCharacter{03AE}{\ensuremath{\acute\eta}}% \DeclareUnicodeCharacter{03AF}{\ensuremath{\acute\iota}}% \DeclareUnicodeCharacter{03B0}{\ensuremath{\acute{\ddot\upsilon}}}% % % Standalone accent \DeclareUnicodeCharacter{0384}{\ensuremath{\acute{\ }}}% % % Greek letters lower case \DeclareUnicodeCharacter{03B1}{\ensuremath\alpha}% \DeclareUnicodeCharacter{03B2}{\ensuremath\beta}% \DeclareUnicodeCharacter{03B3}{\ensuremath\gamma}% \DeclareUnicodeCharacter{03B4}{\ensuremath\delta}% \DeclareUnicodeCharacter{03B5}{\ensuremath\epsilon}% \DeclareUnicodeCharacter{03B6}{\ensuremath\zeta}% \DeclareUnicodeCharacter{03B7}{\ensuremath\eta}% \DeclareUnicodeCharacter{03B8}{\ensuremath\theta}% \DeclareUnicodeCharacter{03B9}{\ensuremath\iota}% \DeclareUnicodeCharacter{03BA}{\ensuremath\kappa}% \DeclareUnicodeCharacter{03BB}{\ensuremath\lambda}% \DeclareUnicodeCharacter{03BC}{\ensuremath\mu}% \DeclareUnicodeCharacter{03BD}{\ensuremath\nu}% \DeclareUnicodeCharacter{03BE}{\ensuremath\xi}% \DeclareUnicodeCharacter{03BF}{{\it o}}% omicron \DeclareUnicodeCharacter{03C0}{\ensuremath\pi}% \DeclareUnicodeCharacter{03C1}{\ensuremath\rho}% \DeclareUnicodeCharacter{03C2}{\ensuremath\varsigma}% \DeclareUnicodeCharacter{03C3}{\ensuremath\sigma}% \DeclareUnicodeCharacter{03C4}{\ensuremath\tau}% \DeclareUnicodeCharacter{03C5}{\ensuremath\upsilon}% \DeclareUnicodeCharacter{03C6}{\ensuremath\phi}% \DeclareUnicodeCharacter{03C7}{\ensuremath\chi}% \DeclareUnicodeCharacter{03C8}{\ensuremath\psi}% \DeclareUnicodeCharacter{03C9}{\ensuremath\omega}% % % More Greek vowels with accents \DeclareUnicodeCharacter{03CA}{\ensuremath{\ddot\iota}}% \DeclareUnicodeCharacter{03CB}{\ensuremath{\ddot\upsilon}}% \DeclareUnicodeCharacter{03CC}{\ensuremath{\acute o}}% \DeclareUnicodeCharacter{03CD}{\ensuremath{\acute\upsilon}}% \DeclareUnicodeCharacter{03CE}{\ensuremath{\acute\omega}}% % % Variant Greek letters \DeclareUnicodeCharacter{03D1}{\ensuremath\vartheta}% \DeclareUnicodeCharacter{03D6}{\ensuremath\varpi}% \DeclareUnicodeCharacter{03F1}{\ensuremath\varrho}% % \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}% \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}% \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}% \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}% \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}% \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}% \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}% \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}% \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}% \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}% \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}% \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}% % \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}% \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}% % \DeclareUnicodeCharacter{1E20}{\=G}% \DeclareUnicodeCharacter{1E21}{\=g}% \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}% \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}% \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}% \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}% \DeclareUnicodeCharacter{1E26}{\"H}% \DeclareUnicodeCharacter{1E27}{\"h}% % \DeclareUnicodeCharacter{1E30}{\'K}% \DeclareUnicodeCharacter{1E31}{\'k}% \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}% \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}% \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}% \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}% \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}% \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}% \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}% \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}% \DeclareUnicodeCharacter{1E3E}{\'M}% \DeclareUnicodeCharacter{1E3F}{\'m}% % \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}% \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}% \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}% \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}% \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}% \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}% \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}% \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}% \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}% \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}% % \DeclareUnicodeCharacter{1E54}{\'P}% \DeclareUnicodeCharacter{1E55}{\'p}% \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}% \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}% \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}% \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}% \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}% \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}% \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}% \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}% % \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}% \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}% \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}% \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}% \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}% \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}% \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}% \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}% \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}% \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}% % \DeclareUnicodeCharacter{1E7C}{\~V}% \DeclareUnicodeCharacter{1E7D}{\~v}% \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}% \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}% % \DeclareUnicodeCharacter{1E80}{\`W}% \DeclareUnicodeCharacter{1E81}{\`w}% \DeclareUnicodeCharacter{1E82}{\'W}% \DeclareUnicodeCharacter{1E83}{\'w}% \DeclareUnicodeCharacter{1E84}{\"W}% \DeclareUnicodeCharacter{1E85}{\"w}% \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}% \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}% \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}% \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}% \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}% \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}% \DeclareUnicodeCharacter{1E8C}{\"X}% \DeclareUnicodeCharacter{1E8D}{\"x}% \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}% \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}% % \DeclareUnicodeCharacter{1E90}{\^Z}% \DeclareUnicodeCharacter{1E91}{\^z}% \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}% \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}% \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}% \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}% \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}% \DeclareUnicodeCharacter{1E97}{\"t}% \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}% \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}% % \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}% \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}% % \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}% \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}% \DeclareUnicodeCharacter{1EBC}{\~E}% \DeclareUnicodeCharacter{1EBD}{\~e}% % \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}% \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}% \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}% \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}% % \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}% \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}% % \DeclareUnicodeCharacter{1EF2}{\`Y}% \DeclareUnicodeCharacter{1EF3}{\`y}% \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}% % \DeclareUnicodeCharacter{1EF8}{\~Y}% \DeclareUnicodeCharacter{1EF9}{\~y}% % % Exotic spaces \DeclareUnicodeCharacter{2007}{\hphantom{0}}% % % Punctuation \DeclareUnicodeCharacter{2013}{--}% \DeclareUnicodeCharacter{2014}{---}% \DeclareUnicodeCharacter{2018}{\quoteleft{}}% \DeclareUnicodeCharacter{2019}{\quoteright{}}% \DeclareUnicodeCharacter{201A}{\quotesinglbase{}}% \DeclareUnicodeCharacter{201C}{\quotedblleft{}}% \DeclareUnicodeCharacter{201D}{\quotedblright{}}% \DeclareUnicodeCharacter{201E}{\quotedblbase{}}% \DeclareUnicodeCharacter{2020}{\ensuremath\dagger}% \DeclareUnicodeCharacter{2021}{\ensuremath\ddagger}% \DeclareUnicodeCharacter{2022}{\bullet{}}% \DeclareUnicodeCharacter{202F}{\thinspace}% \DeclareUnicodeCharacter{2026}{\dots{}}% \DeclareUnicodeCharacter{2039}{\guilsinglleft{}}% \DeclareUnicodeCharacter{203A}{\guilsinglright{}}% % \DeclareUnicodeCharacter{20AC}{\euro{}}% % \DeclareUnicodeCharacter{2192}{\arrow}% \DeclareUnicodeCharacter{21D2}{\result{}}% % % Mathematical symbols \DeclareUnicodeCharacter{2200}{\ensuremath\forall}% \DeclareUnicodeCharacter{2203}{\ensuremath\exists}% \DeclareUnicodeCharacter{2208}{\ensuremath\in}% \DeclareUnicodeCharacter{2212}{\minus{}}% \DeclareUnicodeCharacter{2217}{\ast}% \DeclareUnicodeCharacter{221E}{\ensuremath\infty}% \DeclareUnicodeCharacter{2225}{\ensuremath\parallel}% \DeclareUnicodeCharacter{2227}{\ensuremath\wedge}% \DeclareUnicodeCharacter{2229}{\ensuremath\cap}% \DeclareUnicodeCharacter{2261}{\equiv{}}% \DeclareUnicodeCharacter{2264}{\ensuremath\leq}% \DeclareUnicodeCharacter{2265}{\ensuremath\geq}% \DeclareUnicodeCharacter{2282}{\ensuremath\subset}% \DeclareUnicodeCharacter{2287}{\ensuremath\supseteq}% % \DeclareUnicodeCharacter{2016}{\ensuremath\Vert}% \DeclareUnicodeCharacter{2032}{\ensuremath\prime}% \DeclareUnicodeCharacter{210F}{\ensuremath\hbar}% \DeclareUnicodeCharacter{2111}{\ensuremath\Im}% \DeclareUnicodeCharacter{2113}{\ensuremath\ell}% \DeclareUnicodeCharacter{2118}{\ensuremath\wp}% \DeclareUnicodeCharacter{211C}{\ensuremath\Re}% \DeclareUnicodeCharacter{2135}{\ensuremath\aleph}% \DeclareUnicodeCharacter{2190}{\ensuremath\leftarrow}% \DeclareUnicodeCharacter{2191}{\ensuremath\uparrow}% \DeclareUnicodeCharacter{2193}{\ensuremath\downarrow}% \DeclareUnicodeCharacter{2194}{\ensuremath\leftrightarrow}% \DeclareUnicodeCharacter{2195}{\ensuremath\updownarrow}% \DeclareUnicodeCharacter{2196}{\ensuremath\nwarrow}% \DeclareUnicodeCharacter{2197}{\ensuremath\nearrow}% \DeclareUnicodeCharacter{2198}{\ensuremath\searrow}% \DeclareUnicodeCharacter{2199}{\ensuremath\swarrow}% \DeclareUnicodeCharacter{21A6}{\ensuremath\mapsto}% \DeclareUnicodeCharacter{21A9}{\ensuremath\hookleftarrow}% \DeclareUnicodeCharacter{21AA}{\ensuremath\hookrightarrow}% \DeclareUnicodeCharacter{21BC}{\ensuremath\leftharpoonup}% \DeclareUnicodeCharacter{21BD}{\ensuremath\leftharpoondown}% \DeclareUnicodeCharacter{21C0}{\ensuremath\rightharpoonup}% \DeclareUnicodeCharacter{21C1}{\ensuremath\rightharpoondown}% \DeclareUnicodeCharacter{21CC}{\ensuremath\rightleftharpoons}% \DeclareUnicodeCharacter{21D0}{\ensuremath\Leftarrow}% \DeclareUnicodeCharacter{21D1}{\ensuremath\Uparrow}% \DeclareUnicodeCharacter{21D3}{\ensuremath\Downarrow}% \DeclareUnicodeCharacter{21D4}{\ensuremath\Leftrightarrow}% \DeclareUnicodeCharacter{21D5}{\ensuremath\Updownarrow}% \DeclareUnicodeCharacter{2202}{\ensuremath\partial}% \DeclareUnicodeCharacter{2205}{\ensuremath\emptyset}% \DeclareUnicodeCharacter{2207}{\ensuremath\nabla}% \DeclareUnicodeCharacter{2209}{\ensuremath\notin}% \DeclareUnicodeCharacter{220B}{\ensuremath\owns}% \DeclareUnicodeCharacter{220F}{\ensuremath\prod}% \DeclareUnicodeCharacter{2210}{\ensuremath\coprod}% \DeclareUnicodeCharacter{2211}{\ensuremath\sum}% \DeclareUnicodeCharacter{2213}{\ensuremath\mp}% \DeclareUnicodeCharacter{2218}{\ensuremath\circ}% \DeclareUnicodeCharacter{221A}{\ensuremath\surd}% \DeclareUnicodeCharacter{221D}{\ensuremath\propto}% \DeclareUnicodeCharacter{2220}{\ensuremath\angle}% \DeclareUnicodeCharacter{2223}{\ensuremath\mid}% \DeclareUnicodeCharacter{2228}{\ensuremath\vee}% \DeclareUnicodeCharacter{222A}{\ensuremath\cup}% \DeclareUnicodeCharacter{222B}{\ensuremath\smallint}% \DeclareUnicodeCharacter{222E}{\ensuremath\oint}% \DeclareUnicodeCharacter{223C}{\ensuremath\sim}% \DeclareUnicodeCharacter{2240}{\ensuremath\wr}% \DeclareUnicodeCharacter{2243}{\ensuremath\simeq}% \DeclareUnicodeCharacter{2245}{\ensuremath\cong}% \DeclareUnicodeCharacter{2248}{\ensuremath\approx}% \DeclareUnicodeCharacter{224D}{\ensuremath\asymp}% \DeclareUnicodeCharacter{2250}{\ensuremath\doteq}% \DeclareUnicodeCharacter{2260}{\ensuremath\neq}% \DeclareUnicodeCharacter{226A}{\ensuremath\ll}% \DeclareUnicodeCharacter{226B}{\ensuremath\gg}% \DeclareUnicodeCharacter{227A}{\ensuremath\prec}% \DeclareUnicodeCharacter{227B}{\ensuremath\succ}% \DeclareUnicodeCharacter{2283}{\ensuremath\supset}% \DeclareUnicodeCharacter{2286}{\ensuremath\subseteq}% \DeclareUnicodeCharacter{228E}{\ensuremath\uplus}% \DeclareUnicodeCharacter{2291}{\ensuremath\sqsubseteq}% \DeclareUnicodeCharacter{2292}{\ensuremath\sqsupseteq}% \DeclareUnicodeCharacter{2293}{\ensuremath\sqcap}% \DeclareUnicodeCharacter{2294}{\ensuremath\sqcup}% \DeclareUnicodeCharacter{2295}{\ensuremath\oplus}% \DeclareUnicodeCharacter{2296}{\ensuremath\ominus}% \DeclareUnicodeCharacter{2297}{\ensuremath\otimes}% \DeclareUnicodeCharacter{2298}{\ensuremath\oslash}% \DeclareUnicodeCharacter{2299}{\ensuremath\odot}% \DeclareUnicodeCharacter{22A2}{\ensuremath\vdash}% \DeclareUnicodeCharacter{22A3}{\ensuremath\dashv}% \DeclareUnicodeCharacter{22A4}{\ensuremath\ptextop}% \DeclareUnicodeCharacter{22A5}{\ensuremath\bot}% \DeclareUnicodeCharacter{22A8}{\ensuremath\models}% \DeclareUnicodeCharacter{22C0}{\ensuremath\bigwedge}% \DeclareUnicodeCharacter{22C1}{\ensuremath\bigvee}% \DeclareUnicodeCharacter{22C2}{\ensuremath\bigcap}% \DeclareUnicodeCharacter{22C3}{\ensuremath\bigcup}% \DeclareUnicodeCharacter{22C4}{\ensuremath\diamond}% \DeclareUnicodeCharacter{22C5}{\ensuremath\cdot}% \DeclareUnicodeCharacter{22C6}{\ensuremath\star}% \DeclareUnicodeCharacter{22C8}{\ensuremath\bowtie}% \DeclareUnicodeCharacter{2308}{\ensuremath\lceil}% \DeclareUnicodeCharacter{2309}{\ensuremath\rceil}% \DeclareUnicodeCharacter{230A}{\ensuremath\lfloor}% \DeclareUnicodeCharacter{230B}{\ensuremath\rfloor}% \DeclareUnicodeCharacter{2322}{\ensuremath\frown}% \DeclareUnicodeCharacter{2323}{\ensuremath\smile}% % \DeclareUnicodeCharacter{25B3}{\ensuremath\triangle}% \DeclareUnicodeCharacter{25B7}{\ensuremath\triangleright}% \DeclareUnicodeCharacter{25BD}{\ensuremath\bigtriangledown}% \DeclareUnicodeCharacter{25C1}{\ensuremath\triangleleft}% \DeclareUnicodeCharacter{25C7}{\ensuremath\diamond}% \DeclareUnicodeCharacter{2660}{\ensuremath\spadesuit}% \DeclareUnicodeCharacter{2661}{\ensuremath\heartsuit}% \DeclareUnicodeCharacter{2662}{\ensuremath\diamondsuit}% \DeclareUnicodeCharacter{2663}{\ensuremath\clubsuit}% \DeclareUnicodeCharacter{266D}{\ensuremath\flat}% \DeclareUnicodeCharacter{266E}{\ensuremath\natural}% \DeclareUnicodeCharacter{266F}{\ensuremath\sharp}% \DeclareUnicodeCharacter{26AA}{\ensuremath\bigcirc}% \DeclareUnicodeCharacter{27B9}{\ensuremath\rangle}% \DeclareUnicodeCharacter{27C2}{\ensuremath\perp}% \DeclareUnicodeCharacter{27E8}{\ensuremath\langle}% \DeclareUnicodeCharacter{27F5}{\ensuremath\longleftarrow}% \DeclareUnicodeCharacter{27F6}{\ensuremath\longrightarrow}% \DeclareUnicodeCharacter{27F7}{\ensuremath\longleftrightarrow}% \DeclareUnicodeCharacter{27FC}{\ensuremath\longmapsto}% \DeclareUnicodeCharacter{29F5}{\ensuremath\setminus}% \DeclareUnicodeCharacter{2A00}{\ensuremath\bigodot}% \DeclareUnicodeCharacter{2A01}{\ensuremath\bigoplus}% \DeclareUnicodeCharacter{2A02}{\ensuremath\bigotimes}% \DeclareUnicodeCharacter{2A04}{\ensuremath\biguplus}% \DeclareUnicodeCharacter{2A06}{\ensuremath\bigsqcup}% \DeclareUnicodeCharacter{2A3F}{\ensuremath\amalg}% \DeclareUnicodeCharacter{2AAF}{\ensuremath\preceq}% \DeclareUnicodeCharacter{2AB0}{\ensuremath\succeq}% % \global\mathchardef\checkmark="1370% actually the square root sign \DeclareUnicodeCharacter{2713}{\ensuremath\checkmark}% }% end of \unicodechardefs % UTF-8 byte sequence (pdfTeX) definitions (replacing and @U command) % It makes the setting that replace UTF-8 byte sequence. \def\utfeightchardefs{% \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterUTFviii \unicodechardefs } % Whether the active definitions of non-ASCII characters expand to % non-active tokens with the same character code. This is used to % write characters literally, instead of using active definitions for % printing the correct glyphs. \newif\ifpassthroughchars \passthroughcharsfalse % For native Unicode handling (XeTeX and LuaTeX), % provide a definition macro to replace/pass-through a Unicode character % \def\DeclareUnicodeCharacterNative#1#2{% \ifnum"#1>"7F % only make non-ASCII chars active \catcode"#1=\active \def\dodeclareunicodecharacternative##1##2##3{% \begingroup \uccode`\~="##2\relax \uppercase{\gdef~}{% \ifpassthroughchars ##1% \else ##3% \fi } \endgroup } \begingroup \uccode`\.="#1\relax \uppercase{\def\UTFNativeTmp{.}}% \expandafter\dodeclareunicodecharacternative\UTFNativeTmp{#1}{#2}% \endgroup \fi } % Native Unicode handling (XeTeX and LuaTeX) character replacing definition. % It activates the setting that replaces Unicode characters. \def\nativeunicodechardefs{% \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNative \unicodechardefs } % For native Unicode handling (XeTeX and LuaTeX), % make the character token expand % to the sequences given in \unicodechardefs for printing. \def\DeclareUnicodeCharacterNativeAtU#1#2{% \def\UTFAtUTmp{#2} \expandafter\globallet\csname uni:#1\endcsname \UTFAtUTmp } % @U command definitions for native Unicode handling (XeTeX and LuaTeX). \def\nativeunicodechardefsatu{% \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNativeAtU \unicodechardefs } % US-ASCII character definitions. \def\asciichardefs{% nothing need be done \relax } % Define all Unicode characters we know about \iftxinativeunicodecapable \nativeunicodechardefsatu \else \utfeightchardefs \fi \message{formatting,} \newdimen\defaultparindent \defaultparindent = 15pt \chapheadingskip = 15pt plus 4pt minus 2pt \secheadingskip = 12pt plus 3pt minus 2pt \subsecheadingskip = 9pt plus 2pt minus 2pt % Prevent underfull vbox error messages. \vbadness = 10000 % Don't be very finicky about underfull hboxes, either. \hbadness = 6666 % Following George Bush, get rid of widows and orphans. \widowpenalty=10000 \clubpenalty=10000 % Use TeX 3.0's \emergencystretch to help line breaking, but if we're % using an old version of TeX, don't do anything. We want the amount of % stretch added to depend on the line length, hence the dependence on % \hsize. We call this whenever the paper size is set. % \def\setemergencystretch{% \ifx\emergencystretch\thisisundefined % Allow us to assign to \emergencystretch anyway. \def\emergencystretch{\dimen0}% \else \emergencystretch = .15\hsize \fi } % Parameters in order: 1) textheight; 2) textwidth; % 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; % 7) physical page height; 8) physical page width. % % We also call \setleading{\textleading}, so the caller should define % \textleading. The caller should also set \parskip. % \def\internalpagesizes#1#2#3#4#5#6#7#8{% \voffset = #3\relax \topskip = #6\relax \splittopskip = \topskip % \vsize = #1\relax \advance\vsize by \topskip \txipageheight = \vsize % \hsize = #2\relax \txipagewidth = \hsize % \normaloffset = #4\relax \bindingoffset = #5\relax % \ifpdf \pdfpageheight #7\relax \pdfpagewidth #8\relax % if we don't reset these, they will remain at "1 true in" of % whatever layout pdftex was dumped with. \pdfhorigin = 1 true in \pdfvorigin = 1 true in \else \ifx\XeTeXrevision\thisisundefined \special{papersize=#8,#7}% \else \pdfpageheight #7\relax \pdfpagewidth #8\relax % XeTeX does not have \pdfhorigin and \pdfvorigin. \fi \fi % \setleading{\textleading} % \parindent = \defaultparindent \setemergencystretch } % @letterpaper (the default). \def\letterpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % If page is nothing but text, make it come out even. \internalpagesizes{607.2pt}{6in}% that's 46 lines {\voffset}{.25in}% {\bindingoffset}{36pt}% {11in}{8.5in}% }} % Use @smallbook to reset parameters for 7x9.25 trim size. \def\smallbook{{\globaldefs = 1 \parskip = 2pt plus 1pt \textleading = 12pt % \internalpagesizes{7.5in}{5in}% {-.2in}{0in}% {\bindingoffset}{16pt}% {9.25in}{7in}% % \lispnarrowing = 0.3in \tolerance = 700 \contentsrightmargin = 0pt \defbodyindent = .5cm }} % Use @afourpaper to print on European A4 paper. \def\afourpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % Double-side printing via postscript on Laserjet 4050 % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. % To change the settings for a different printer or situation, adjust % \normaloffset until the front-side and back-side texts align. Then % do the same for \bindingoffset. You can set these for testing in % your texinfo source file like this: % @tex % \global\normaloffset = -6mm % \global\bindingoffset = 10mm % @end tex \internalpagesizes{673.2pt}{160mm}% that's 51 lines {\voffset}{\hoffset}% {\bindingoffset}{44pt}% {297mm}{210mm}% % \tolerance = 700 \contentsrightmargin = 0pt \defbodyindent = 5mm }} % Use @afivepaper to print on European A5 paper. % From romildo@urano.iceb.ufop.br, 2 July 2000. % He also recommends making @example and @lisp be small. \def\afivepaper{{\globaldefs = 1 \parskip = 2pt plus 1pt minus 0.1pt \textleading = 12.5pt % \internalpagesizes{160mm}{120mm}% {\voffset}{-11.4mm}% {\bindingoffset}{8pt}% {210mm}{148mm}% % \lispnarrowing = 0.2in \tolerance = 800 \contentsrightmargin = 0pt \defbodyindent = 2mm \tableindent = 12mm }} % A specific text layout, 24x15cm overall, intended for A4 paper. \def\afourlatex{{\globaldefs = 1 \afourpaper \internalpagesizes{237mm}{150mm}% {\voffset}{4.6mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% % % Must explicitly reset to 0 because we call \afourpaper. \globaldefs = 0 }} % Use @afourwide to print on A4 paper in landscape format. \def\afourwide{{\globaldefs = 1 \afourpaper \internalpagesizes{241mm}{165mm}% {\voffset}{-2.95mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% \globaldefs = 0 }} \def\bsixpaper{{\globaldefs = 1 \afourpaper \internalpagesizes{140mm}{100mm}% {-6.35mm}{-12.7mm}% {\bindingoffset}{14pt}% {176mm}{125mm}% \let\SETdispenvsize=\smallword \lispnarrowing = 0.2in \globaldefs = 0 }} % @pagesizes TEXTHEIGHT[,TEXTWIDTH] % Perhaps we should allow setting the margins, \topskip, \parskip, % and/or leading, also. Or perhaps we should compute them somehow. % \parseargdef\pagesizes{\pagesizesyyy #1,,\finish} \def\pagesizesyyy#1,#2,#3\finish{{% \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi \globaldefs = 1 % \parskip = 3pt plus 2pt minus 1pt \setleading{\textleading}% % \dimen0 = #1\relax \advance\dimen0 by 2.5in % default 1in margin above heading line % and 1.5in to include heading, footing and % bottom margin % \dimen2 = \hsize \advance\dimen2 by 2in % default to 1 inch margin on each side % \internalpagesizes{#1}{\hsize}% {\voffset}{\normaloffset}% {\bindingoffset}{44pt}% {\dimen0}{\dimen2}% }} % Set default to letter. % \letterpaper % Default value of \hfuzz, for suppressing warnings about overfull hboxes. \hfuzz = 1pt \message{microtype,} % protrusion, from Thanh's protcode.tex. \def\mtsetprotcode#1{% \rpcode#1`\!=200 \rpcode#1`\,=700 \rpcode#1`\-=700 \rpcode#1`\.=700 \rpcode#1`\;=500 \rpcode#1`\:=500 \rpcode#1`\?=200 \rpcode#1`\'=700 \rpcode#1 34=500 % '' \rpcode#1 123=300 % -- \rpcode#1 124=200 % --- \rpcode#1`\)=50 \rpcode#1`\A=50 \rpcode#1`\F=50 \rpcode#1`\K=50 \rpcode#1`\L=50 \rpcode#1`\T=50 \rpcode#1`\V=50 \rpcode#1`\W=50 \rpcode#1`\X=50 \rpcode#1`\Y=50 \rpcode#1`\k=50 \rpcode#1`\r=50 \rpcode#1`\t=50 \rpcode#1`\v=50 \rpcode#1`\w=50 \rpcode#1`\x=50 \rpcode#1`\y=50 % \lpcode#1`\`=700 \lpcode#1 92=500 % `` \lpcode#1`\(=50 \lpcode#1`\A=50 \lpcode#1`\J=50 \lpcode#1`\T=50 \lpcode#1`\V=50 \lpcode#1`\W=50 \lpcode#1`\X=50 \lpcode#1`\Y=50 \lpcode#1`\v=50 \lpcode#1`\w=50 \lpcode#1`\x=50 \lpcode#1`\y=0 % \mtadjustprotcode#1\relax } \newcount\countC \def\mtadjustprotcode#1{% \countC=0 \loop \ifcase\lpcode#1\countC\else \mtadjustcp\lpcode#1\countC \fi \ifcase\rpcode#1\countC\else \mtadjustcp\rpcode#1\countC \fi \advance\countC 1 \ifnum\countC < 256 \repeat } \newcount\countB \def\mtadjustcp#1#2#3{% \setbox\boxA=\hbox{% \ifx#2\font\else#2\fi \char#3}% \countB=\wd\boxA \multiply\countB #1#2#3\relax \divide\countB \fontdimen6 #2\relax #1#2#3=\countB\relax } \ifx\XeTeXrevision\thisisundefined \ifx\luatexversion\thisisundefined \ifpdf % pdfTeX \mtsetprotcode\textrm \def\mtfontexpand#1{\pdffontexpand#1 20 20 1 autoexpand\relax} \else % TeX \def\mtfontexpand#1{} \fi \else % LuaTeX \mtsetprotcode\textrm \def\mtfontexpand#1{\expandglyphsinfont#1 20 20 1\relax} \fi \else % XeTeX \mtsetprotcode\textrm \def\mtfontexpand#1{} \fi \newif\ifmicrotype \def\microtypeON{% \microtypetrue % \ifx\XeTeXrevision\thisisundefined \ifx\luatexversion\thisisundefined \ifpdf % pdfTeX \pdfadjustspacing=2 \pdfprotrudechars=2 \fi \else % LuaTeX \adjustspacing=2 \protrudechars=2 \fi \else % XeTeX \XeTeXprotrudechars=2 \fi % \mtfontexpand\textrm \mtfontexpand\textsl \mtfontexpand\textbf } \def\microtypeOFF{% \microtypefalse % \ifx\XeTeXrevision\thisisundefined \ifx\luatexversion\thisisundefined \ifpdf % pdfTeX \pdfadjustspacing=0 \pdfprotrudechars=0 \fi \else % LuaTeX \adjustspacing=0 \protrudechars=0 \fi \else % XeTeX \XeTeXprotrudechars=0 \fi } \microtypeOFF \parseargdef\microtype{% \def\txiarg{#1}% \ifx\txiarg\onword \microtypeON \else\ifx\txiarg\offword \microtypeOFF \else \errhelp = \EMsimple \errmessage{Unknown @microtype option `\txiarg', must be on|off}% \fi\fi } \message{and turning on texinfo input format.} % Make UTF-8 the default encoding. \documentencodingzzz{UTF-8} \def^^L{\par} % remove \outer, so ^L can appear in an @comment \catcode`\^^K = 10 % treat vertical tab as whitespace % DEL is a comment character, in case @c does not suffice. \catcode`\^^? = 14 % Define macros to output various characters with catcode for normal text. \catcode`\"=\other \def\normaldoublequote{"} \catcode`\$=\other \def\normaldollar{$}%$ font-lock fix \catcode`\+=\other \def\normalplus{+} \catcode`\<=\other \def\normalless{<} \catcode`\>=\other \def\normalgreater{>} \catcode`\^=\other \def\normalcaret{^} \catcode`\_=\other \def\normalunderscore{_} \catcode`\|=\other \def\normalverticalbar{|} \catcode`\~=\other \def\normaltilde{~} % Set catcodes for Texinfo file % Active characters for printing the wanted glyph. % Most of these we simply print from the \tt font, but for some, we can % use math or other variants that look better in normal text. % \catcode`\"=\active \def\activedoublequote{{\tt\char34}} \let"=\activedoublequote \catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde \chardef\hatchar=`\^ \catcode`\^=\active \def\activehat{{\tt \hatchar}} \let^ = \activehat \catcode`\_=\active \def_{\ifusingtt\normalunderscore\_} \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } \let\realunder=_ \catcode`\|=\active \def|{{\tt\char124}} \chardef \less=`\< \catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless \chardef \gtr=`\> \catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr \catcode`\+=\active \def+{{\tt \char 43}} \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix \catcode`\-=\active \let-=\normaldash % used for headline/footline in the output routine, in case the page % breaks in the middle of an @tex block. \def\texinfochars{% \let< = \activeless \let> = \activegtr \let~ = \activetilde \let^ = \activehat \setregularquotes \let\b = \strong \let\i = \smartitalic % in principle, all other definitions in \tex have to be undone too. } % Used sometimes to turn off (effectively) the active characters even after % parsing them. \def\turnoffactive{% \passthroughcharstrue \let-=\normaldash \let"=\normaldoublequote \let$=\normaldollar %$ font-lock fix \let+=\normalplus \let<=\normalless \let>=\normalgreater \let^=\normalcaret \let_=\normalunderscore \let|=\normalverticalbar \let~=\normaltilde \otherbackslash \setregularquotes \unsepspaces } % If a .fmt file is being used, characters that might appear in a file % name cannot be active until we have parsed the command line. % So turn them off again, and have \loadconf turn them back on. \catcode`+=\other \catcode`\_=\other % \backslashcurfont outputs one backslash character in current font, % as in \char`\\. \global\chardef\backslashcurfont=`\\ % Print a typewriter backslash. For math mode, we can't simply use % \backslashcurfont: the story here is that in math mode, the \char % of \backslashcurfont ends up printing the roman \ from the math symbol % font (because \char in math mode uses the \mathcode, and plain.tex % sets \mathcode`\\="026E). Hence we use an explicit \mathchar, % which is the decimal equivalent of "715c (class 7, e.g., use \fam; % ignored family value; char position "5C). We can't use " for the % usual hex value because it has already been made active. \def\ttbackslash{{\tt \ifmmode \mathchar29020 \else \backslashcurfont \fi}} \let\backslashchar = \ttbackslash % \backslashchar{} is for user documents. % These are made active for url-breaking, so need % active definitions as the normal characters. \def\normaldot{.} \def\normalquest{?} \def\normalslash{/} % \newlinesloadsconf - call \loadconf as soon as possible in the % file, e.g. at the first newline. % {\catcode`\^=7 \catcode`\^^M=13 \gdef\newlineloadsconf{% \catcode`\^^M=13 % \newlineloadsconfzz% } \gdef\newlineloadsconfzz#1^^M{% \def\c{\loadconf\c}% % Definition for the first newline read in the file \def ^^M{\loadconf}% % In case the first line has a whole-line command on it \let\originalparsearg\parsearg% \def\parsearg{\loadconf\originalparsearg}% }} % Emergency active definition of newline, in case an active newline token % appears by mistake. {\catcode`\^=7 \catcode13=13% \gdef\enableemergencynewline{% \gdef^^M{% \par% %\par% }}} % \loadconf gets called at the beginning of every Texinfo file. % If texinfo.cnf is present on the system, read it. Useful for site-wide % @afourpaper, etc. Not opening texinfo.cnf directly in texinfo.tex % makes it possible to make a format file for Texinfo. % \gdef\loadconf{% \relax % Terminate the filename if running as "tex '&texinfo' FILE.texi". % % Turn off the definitions that trigger \loadconf \everyjobreset \catcode13=5 % regular end of line \enableemergencynewline \let\c=\comment \let\parsearg\originalparsearg % % Also turn back on active characters that might appear in the input % file name, in case not using a pre-dumped format. \catcode`+=\active \catcode`\_=\active % \openin 1 texinfo.cnf \ifeof 1 \else \input texinfo.cnf \fi \closein 1 } % Redefine some control sequences to be controlled by the \ifdummies % and \ifindexnofonts switches. Do this at the end so that the control % sequences are all defined. \definedummies \catcode`\@=0 % \realbackslash is an actual character `\' with catcode other. {\catcode`\\=\other @gdef@realbackslash{\}} % In Texinfo, backslash is an active character; it prints the backslash % in fixed width font. \catcode`\\=\active % @ for escape char from now on. @let\ = @ttbackslash % If in a .fmt file, print the version number. % \eatinput stops the `\input texinfo' from showing up. % After that, `\' should revert to printing a backslash. % Turn on active characters that we couldn't do earlier because % they might have appeared in the input file name. % @everyjob{@message{[Texinfo version @texinfoversion]}% @global@let\ = @eatinput @catcode`+=@active @catcode`@_=@active} {@catcode`@^=7 @catcode`@^^M=13% @gdef@eatinput input texinfo#1^^M{@loadconf}} @def@everyjobreset{@ifx\@eatinput @let\ = @ttbackslash @fi} % \otherbackslash defines an active \ to be a literal `\' character with % catcode other. @gdef@otherbackslash{@let\=@realbackslash} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of % the literal character `\'. % {@catcode`- = @active @gdef@normalturnoffactive{% @turnoffactive @let\=@ttbackslash } } % Say @foo, not \foo, in error messages. @escapechar = `@@ % These look ok in all fonts, so just make them not special. % @hashchar{} gets its own user-level command, because of #line. @catcode`@& = @other @def@normalamp{&} @catcode`@# = @other @def@normalhash{#} @catcode`@% = @other @def@normalpercent{%} @let @hashchar = @normalhash @c Finally, make ` and ' active, so that txicodequoteundirected and @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we @c don't make ` and ' active, @code will not get them as active chars. @c Do this last of all since we use ` in the previous @catcode assignments. @catcode`@'=@active @catcode`@`=@active @c Local variables: @c eval: (add-hook 'before-save-hook 'time-stamp nil t) @c time-stamp-pattern: "texinfoversion{%Y-%02m-%02d.%02H}" @c page-delimiter: "^\\\\message" @c End: @newlineloadsconf recode-3.7.15/build-aux/config.rpath0000754000175000017500000004425414371444255012754 #! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2023 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's _LT_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; mingw* | cygwin* | pw32* | os2* | cegcc*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in ecc*) wl='-Wl,' ;; icc* | ifort*) wl='-Wl,' ;; lf95*) wl='-Wl,' ;; nagfor*) wl='-Wl,-Wl,,' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; xl* | bgxl* | bgf* | mpixl*) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ F* | *Sun*Fortran*) wl= ;; *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; newsos6) ;; *nto* | *qnx*) ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; rdos*) ;; solaris*) case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) wl='-Qoption ld ' ;; *) wl='-Wl,' ;; esac ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3*) wl='-Wl,' ;; sysv4*MP*) ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) wl='-Wl,' ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's _LT_LINKER_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' case "$host_os" in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) case "$host_cpu" in powerpc) ;; m68k) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; haiku*) ;; interix[3-9]*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) case "$host_cpu" in powerpc) ;; m68k) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then : else ld_shlibs=no fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd2.[01]*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | dragonfly* | midnightbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no ;; *) hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. # Unlike libtool.m4, here we don't care about _all_ names of the library, but # only about the one the linker finds when passed -lNAME. This is the last # element of library_names_spec in libtool.m4, or possibly two of them if the # linker has special search rules. library_names_spec= # the last element of library_names_spec in libtool.m4 libname_spec='lib$name' case "$host_os" in aix3*) library_names_spec='$libname.a' ;; aix[4-9]*) library_names_spec='$libname$shrext' ;; amigaos*) case "$host_cpu" in powerpc*) library_names_spec='$libname$shrext' ;; m68k) library_names_spec='$libname.a' ;; esac ;; beos*) library_names_spec='$libname$shrext' ;; bsdi[45]*) library_names_spec='$libname$shrext' ;; cygwin* | mingw* | pw32* | cegcc*) shrext=.dll library_names_spec='$libname.dll.a $libname.lib' ;; darwin* | rhapsody*) shrext=.dylib library_names_spec='$libname$shrext' ;; dgux*) library_names_spec='$libname$shrext' ;; freebsd[23].*) library_names_spec='$libname$shrext$versuffix' ;; freebsd* | dragonfly* | midnightbsd*) library_names_spec='$libname$shrext' ;; gnu*) library_names_spec='$libname$shrext' ;; haiku*) library_names_spec='$libname$shrext' ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac library_names_spec='$libname$shrext' ;; interix[3-9]*) library_names_spec='$libname$shrext' ;; irix5* | irix6* | nonstopux*) library_names_spec='$libname$shrext' case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) library_names_spec='$libname$shrext' ;; knetbsd*-gnu) library_names_spec='$libname$shrext' ;; netbsd*) library_names_spec='$libname$shrext' ;; newsos6) library_names_spec='$libname$shrext' ;; *nto* | *qnx*) library_names_spec='$libname$shrext' ;; openbsd*) library_names_spec='$libname$shrext$versuffix' ;; os2*) libname_spec='$name' shrext=.dll library_names_spec='$libname.a' ;; osf3* | osf4* | osf5*) library_names_spec='$libname$shrext' ;; rdos*) ;; solaris*) library_names_spec='$libname$shrext' ;; sunos4*) library_names_spec='$libname$shrext$versuffix' ;; sysv4 | sysv4.3*) library_names_spec='$libname$shrext' ;; sysv4*MP*) library_names_spec='$libname$shrext' ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) library_names_spec='$libname$shrext' ;; tpf*) library_names_spec='$libname$shrext' ;; uts4*) library_names_spec='$libname$shrext' ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <, and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # # Source required external libraries: . `echo "$0" |${SED-sed} 's|[^/]*$||'`"funclib.sh" . `echo "$0" |${SED-sed} 's|[^/]*$||'`"options-parser" # Set a version string for *this* script. scriptversion=2019-02-19.15; # UTC ## ------ ## ## Usage. ## ## ------ ## # Run 'build-aux/inline-source --help' for help with using this script # from the command line. # Recursively scan through a FILE passed on the command line, replacing # either of the following: # . "relative/file" # . `echo "$0" |edit`"relative/file" # with the contents of the referenced files. ## ---------------- ## ## Options parsing. ## ## ---------------- ## usage='$progpath [OPTION]... FILE' # Short help message in response to '-h'. usage_message='Options: --debug enable verbose shell tracing --version print version information and exit -h, --help print help message and exit ' long_help_message="\ Report bugs to General help using GNU software: ." func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## -------------------- ## ## Resource management. ## ## -------------------- ## # require_AWK # ----------- # Search for a "not hopeless" awk. require_AWK=func_require_AWK func_require_AWK () { $debug_cmd test -n "$AWK" || { # Find the first executable in the list. for _G_prog in gawk mawk nawk awk do require_AWK_IFS=$IFS IFS=${PATH_SEPARATOR-:} for _G_dir in $PATH do IFS=$require_AWK_IFS if test -f "$_G_dir/$_G_prog" && test -x "$_G_dir/$_G_prog" then AWK=$_G_dir/$_G_prog break 2 fi done IFS=$require_AWK_IFS done } test -n "$AWK" || func_fatal_error "\ Please install GNU Awk, or 'export AWK=/path/to/gnu/awk'." func_verbose "found '$AWK'." require_AWK=: } ## --------------- ## ## Core functions. ## ## --------------- ## # func_include LINE # ----------------- # Output the contents of file included by LINE. func_include () { $require_AWK test -f "$1" \ || func_fatal_error "file '$1' not found" _G_scriptdir=`echo "$1" |$SED 's|[^/]*$||'` test -n "$_G_scriptdir" || _G_scriptdir="./" $AWK ' BEGIN { magic = '${_RECURSE_MAGIC-0}'; } /^#!/ && magic == 0 { print $0; print "## DO NOT EDIT - This file generated from '$1'"; print "## by '$progname' v'$scriptversion'"; magic++; next; } /^\. ['\''"].*['\''"]$/ { file = substr ($2, 2, length ($2) -2); system (sprintf ("env _RECURSE_MAGIC=%d '$progpath' %s", magic, file)); next; } /^\. `echo [^`]*`['\''"][^'\''"]*['\''"]$/ { tail = substr ($0, match ($0, /`['\''"]/)); file = substr (tail, 3, length (tail) -3); system (sprintf ("env _RECURSE_MAGIC=%d '$progpath' '"$_G_scriptdir"'%s", magic, file)); next; } { print; } ' < "$1" } func_include "$1" exit 0 # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: recode-3.7.15/build-aux/install-sh0000754000175000017500000003577614165516547012466 #!/bin/sh # install - install a program, script, or datafile scriptversion=2020-11-14.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 # Create dirs (including intermediate dirs) using mode 755. # This is like GNU 'install' as of coreutils 8.32 (2020). mkdir_umask=22 backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -p pass -p to $cpprog. -s $stripprog installed files. -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG By default, rm is invoked with -f; when overridden with RMPROG, it's up to you to specify -f if you want it. If -S is not specified, no backups are attempted. Email bug reports to bug-automake@gnu.org. Automake home page: https://www.gnu.org/software/automake/ " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -p) cpprog="$cpprog -p";; -s) stripcmd=$stripprog;; -S) backupsuffix="$2" shift;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? # Don't chown directories that already exist. if test $dstdir_status = 0; then chowncmd="" fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false # The $RANDOM variable is not portable (e.g., dash). Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap ' ret=$? rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null exit $ret ' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writeable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p'. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && { test -z "$stripcmd" || { # Create $dsttmp read-write so that cp doesn't create it read-only, # which would cause strip to fail. if test -z "$doit"; then : >"$dsttmp" # No need to fork-exec 'touch'. else $doit touch "$dsttmp" fi } } && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # If $backupsuffix is set, and the file being installed # already exists, attempt a backup. Don't worry if it fails, # e.g., if mv doesn't support -f. if test -n "$backupsuffix" && test -f "$dst"; then $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null fi # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: recode-3.7.15/build-aux/config.guess0000754000175000017500000014142214371444255012757 #! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2023 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2023-01-01' # This file 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 3 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi # Just in case it came from the environment. GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver break fi done if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac } # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case $UNAME_SYSTEM in Linux|GNU|GNU/*) LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu #else #include /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl #endif #endif EOF cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` eval "$cc_set_libc" # Second heuristic to detect musl libc. if [ "$LIBC" = unknown ] && command -v ldd >/dev/null && ldd --version 2>&1 | grep -q ^musl; then LIBC=musl fi # If the system lacks a compiler, then just pick glibc. # We could probably try harder. if [ "$LIBC" = unknown ]; then LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` case $UNAME_MACHINE_ARCH in aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case $UNAME_VERSION in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. GUESS=$machine-${os}${release}${abi-} ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE ;; *:SecBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE ;; *:MidnightBSD:*:*) GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE ;; *:ekkoBSD:*:*) GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE ;; *:SolidBSD:*:*) GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE ;; *:OS108:*:*) GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE ;; macppc:MirBSD:*:*) GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE ;; *:MirBSD:*:*) GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE ;; *:Sortix:*:*) GUESS=$UNAME_MACHINE-unknown-sortix ;; *:Twizzler:*:*) GUESS=$UNAME_MACHINE-unknown-twizzler ;; *:Redox:*:*) GUESS=$UNAME_MACHINE-unknown-redox ;; mips:OSF1:*.*) GUESS=mips-dec-osf1 ;; alpha:OSF1:*:*) # Reset EXIT trap before exiting to avoid spurious non-zero exit code. trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` GUESS=$UNAME_MACHINE-dec-osf$OSF_REL ;; Amiga*:UNIX_System_V:4.0:*) GUESS=m68k-unknown-sysv4 ;; *:[Aa]miga[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-amigaos ;; *:[Mm]orph[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-morphos ;; *:OS/390:*:*) GUESS=i370-ibm-openedition ;; *:z/VM:*:*) GUESS=s390-ibm-zvmoe ;; *:OS400:*:*) GUESS=powerpc-ibm-os400 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) GUESS=arm-acorn-riscix$UNAME_RELEASE ;; arm*:riscos:*:*|arm*:RISCOS:*:*) GUESS=arm-unknown-riscos ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) GUESS=hppa1.1-hitachi-hiuxmpp ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. case `(/bin/universe) 2>/dev/null` in att) GUESS=pyramid-pyramid-sysv3 ;; *) GUESS=pyramid-pyramid-bsd ;; esac ;; NILE*:*:*:dcosx) GUESS=pyramid-pyramid-svr4 ;; DRS?6000:unix:4.0:6*) GUESS=sparc-icl-nx6 ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) GUESS=sparc-icl-nx7 ;; esac ;; s390x:SunOS:*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL ;; sun4H:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-hal-solaris2$SUN_REL ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris2$SUN_REL ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) GUESS=i386-pc-auroraux$UNAME_RELEASE ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$SUN_ARCH-pc-solaris2$SUN_REL ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris3$SUN_REL ;; sun4*:SunOS:*:*) case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` GUESS=sparc-sun-sunos$SUN_REL ;; sun3*:SunOS:*:*) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case `/bin/arch` in sun3) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac ;; aushp:SunOS:*:*) GUESS=sparc-auspex-sunos$UNAME_RELEASE ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) GUESS=m68k-milan-mint$UNAME_RELEASE ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) GUESS=m68k-hades-mint$UNAME_RELEASE ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) GUESS=m68k-unknown-mint$UNAME_RELEASE ;; m68k:machten:*:*) GUESS=m68k-apple-machten$UNAME_RELEASE ;; powerpc:machten:*:*) GUESS=powerpc-apple-machten$UNAME_RELEASE ;; RISC*:Mach:*:*) GUESS=mips-dec-mach_bsd4.3 ;; RISC*:ULTRIX:*:*) GUESS=mips-dec-ultrix$UNAME_RELEASE ;; VAX*:ULTRIX*:*:*) GUESS=vax-dec-ultrix$UNAME_RELEASE ;; 2020:CLIX:*:* | 2430:CLIX:*:*) GUESS=clipper-intergraph-clix$UNAME_RELEASE ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } GUESS=mips-mips-riscos$UNAME_RELEASE ;; Motorola:PowerMAX_OS:*:*) GUESS=powerpc-motorola-powermax ;; Motorola:*:4.3:PL8-*) GUESS=powerpc-harris-powermax ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) GUESS=powerpc-harris-powermax ;; Night_Hawk:Power_UNIX:*:*) GUESS=powerpc-harris-powerunix ;; m88k:CX/UX:7*:*) GUESS=m88k-harris-cxux7 ;; m88k:*:4*:R4*) GUESS=m88k-motorola-sysv4 ;; m88k:*:3*:R3*) GUESS=m88k-motorola-sysv3 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then GUESS=m88k-dg-dgux$UNAME_RELEASE else GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else GUESS=i586-dg-dgux$UNAME_RELEASE fi ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) GUESS=m88k-dolphin-sysv3 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 GUESS=m88k-motorola-sysv3 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) GUESS=m88k-tektronix-sysv3 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) GUESS=m68k-tektronix-bsd ;; *:IRIX*:*:*) IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` GUESS=mips-sgi-irix$IRIX_REL ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) GUESS=i386-ibm-aix ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then GUESS=$SYSTEM_NAME else GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then GUESS=rs6000-ibm-aix3.2.4 else GUESS=rs6000-ibm-aix3.2 fi ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$IBM_ARCH-ibm-aix$IBM_REV ;; *:AIX:*:*) GUESS=rs6000-ibm-aix ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) GUESS=romp-ibm-bsd4.4 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) GUESS=rs6000-bull-bosx ;; DPX/2?00:B.O.S.:*:*) GUESS=m68k-bull-sysv3 ;; 9000/[34]??:4.3bsd:1.*:*) GUESS=m68k-hp-bsd ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) GUESS=m68k-hp-bsd4.4 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if test "$HP_ARCH" = hppa2.0w then set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi GUESS=$HP_ARCH-hp-hpux$HPUX_REV ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` GUESS=ia64-hp-hpux$HPUX_REV ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } GUESS=unknown-hitachi-hiuxwe2 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) GUESS=hppa1.1-hp-bsd ;; 9000/8??:4.3bsd:*:*) GUESS=hppa1.0-hp-bsd ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) GUESS=hppa1.0-hp-mpeix ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) GUESS=hppa1.1-hp-osf ;; hp8??:OSF1:*:*) GUESS=hppa1.0-hp-osf ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then GUESS=$UNAME_MACHINE-unknown-osf1mk else GUESS=$UNAME_MACHINE-unknown-osf1 fi ;; parisc*:Lites*:*:*) GUESS=hppa1.1-hp-lites ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) GUESS=c1-convex-bsd ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) GUESS=c34-convex-bsd ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) GUESS=c38-convex-bsd ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) GUESS=c4-convex-bsd ;; CRAY*Y-MP:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=ymp-cray-unicos$CRAY_REL ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=t90-cray-unicos$CRAY_REL ;; CRAY*T3E:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=alphaev5-cray-unicosmk$CRAY_REL ;; CRAY*SV1:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=sv1-cray-unicos$CRAY_REL ;; *:UNICOS/mp:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=craynv-cray-unicosmp$CRAY_REL ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE ;; sparc*:BSD/OS:*:*) GUESS=sparc-unknown-bsdi$UNAME_RELEASE ;; *:BSD/OS:*:*) GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL ;; i*:CYGWIN*:*) GUESS=$UNAME_MACHINE-pc-cygwin ;; *:MINGW64*:*) GUESS=$UNAME_MACHINE-pc-mingw64 ;; *:MINGW*:*) GUESS=$UNAME_MACHINE-pc-mingw32 ;; *:MSYS*:*) GUESS=$UNAME_MACHINE-pc-msys ;; i*:PW*:*) GUESS=$UNAME_MACHINE-pc-pw32 ;; *:SerenityOS:*:*) GUESS=$UNAME_MACHINE-pc-serenity ;; *:Interix*:*) case $UNAME_MACHINE in x86) GUESS=i586-pc-interix$UNAME_RELEASE ;; authenticamd | genuineintel | EM64T) GUESS=x86_64-unknown-interix$UNAME_RELEASE ;; IA64) GUESS=ia64-unknown-interix$UNAME_RELEASE ;; esac ;; i*:UWIN*:*) GUESS=$UNAME_MACHINE-pc-uwin ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) GUESS=x86_64-pc-cygwin ;; prep*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=powerpcle-unknown-solaris2$SUN_REL ;; *:GNU:*:*) # the GNU system GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL ;; *:GNU/*:*:*) # other systems with GNU libc and userland GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ;; x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) GUESS="$UNAME_MACHINE-pc-managarm-mlibc" ;; *:[Mm]anagarm:*:*) GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" ;; *:Minix:*:*) GUESS=$UNAME_MACHINE-unknown-minix ;; aarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi ;; avr32*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; cris:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; crisv32:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; e2k:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; frv:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; hexagon:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:Linux:*:*) GUESS=$UNAME_MACHINE-pc-linux-$LIBC ;; ia64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; loongarch32:Linux:*:* | loongarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m32r*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m68*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef mips #undef mipsel #undef mips64 #undef mips64el #if ${IS_GLIBC} && defined(_ABI64) LIBCABI=gnuabi64 #else #if ${IS_GLIBC} && defined(_ABIN32) LIBCABI=gnuabin32 #else LIBCABI=${LIBC} #endif #endif #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa64r6 #else #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa32r6 #else #if defined(__mips64) CPU=mips64 #else CPU=mips #endif #endif #endif #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) MIPS_ENDIAN= #else MIPS_ENDIAN= #endif #endif EOF cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; openrisc*:Linux:*:*) GUESS=or1k-unknown-linux-$LIBC ;; or32:Linux:*:* | or1k*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; padre:Linux:*:*) GUESS=sparc-unknown-linux-$LIBC ;; parisc64:Linux:*:* | hppa64:Linux:*:*) GUESS=hppa64-unknown-linux-$LIBC ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; *) GUESS=hppa-unknown-linux-$LIBC ;; esac ;; ppc64:Linux:*:*) GUESS=powerpc64-unknown-linux-$LIBC ;; ppc:Linux:*:*) GUESS=powerpc-unknown-linux-$LIBC ;; ppc64le:Linux:*:*) GUESS=powerpc64le-unknown-linux-$LIBC ;; ppcle:Linux:*:*) GUESS=powerpcle-unknown-linux-$LIBC ;; riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; s390:Linux:*:* | s390x:Linux:*:*) GUESS=$UNAME_MACHINE-ibm-linux-$LIBC ;; sh64*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sh*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sparc:Linux:*:* | sparc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; tile*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; vax:Linux:*:*) GUESS=$UNAME_MACHINE-dec-linux-$LIBC ;; x86_64:Linux:*:*) set_cc_for_build CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then ABI=64 sed 's/^ //' << EOF > "$dummy.c" #ifdef __i386__ ABI=x86 #else #ifdef __ILP32__ ABI=x32 #endif #endif EOF cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` eval "$cc_set_abi" case $ABI in x86) CPU=i686 ;; x32) LIBCABI=${LIBC}x32 ;; esac fi GUESS=$CPU-pc-linux-$LIBCABI ;; xtensa*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. GUESS=i386-sequent-sysv4 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. GUESS=$UNAME_MACHINE-pc-os2-emx ;; i*86:XTS-300:*:STOP) GUESS=$UNAME_MACHINE-unknown-stop ;; i*86:atheos:*:*) GUESS=$UNAME_MACHINE-unknown-atheos ;; i*86:syllable:*:*) GUESS=$UNAME_MACHINE-pc-syllable ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) GUESS=i386-unknown-lynxos$UNAME_RELEASE ;; i*86:*DOS:*:*) GUESS=$UNAME_MACHINE-pc-msdosdjgpp ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv32 fi ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. GUESS=i586-pc-msdosdjgpp ;; Intel:Mach:3*:*) GUESS=i386-pc-mach3 ;; paragon:*:*:*) GUESS=i860-intel-osf1 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi ;; mini*:CTIX:SYS*5:*) # "miniframe" GUESS=m68010-convergent-sysv ;; mc68k:UNIX:SYSTEM5:3.51m) GUESS=m68k-convergent-sysv ;; M680?0:D-NIX:5.3:*) GUESS=m68k-diab-dnix ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) GUESS=m68k-unknown-lynxos$UNAME_RELEASE ;; mc68030:UNIX_System_V:4.*:*) GUESS=m68k-atari-sysv4 ;; TSUNAMI:LynxOS:2.*:*) GUESS=sparc-unknown-lynxos$UNAME_RELEASE ;; rs6000:LynxOS:2.*:*) GUESS=rs6000-unknown-lynxos$UNAME_RELEASE ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) GUESS=powerpc-unknown-lynxos$UNAME_RELEASE ;; SM[BE]S:UNIX_SV:*:*) GUESS=mips-dde-sysv$UNAME_RELEASE ;; RM*:ReliantUNIX-*:*:*) GUESS=mips-sni-sysv4 ;; RM*:SINIX-*:*:*) GUESS=mips-sni-sysv4 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` GUESS=$UNAME_MACHINE-sni-sysv4 else GUESS=ns32k-sni-sysv fi ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says GUESS=i586-unisys-sysv4 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm GUESS=hppa1.1-stratus-sysv4 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. GUESS=i860-stratus-sysv4 ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. GUESS=$UNAME_MACHINE-stratus-vos ;; *:VOS:*:*) # From Paul.Green@stratus.com. GUESS=hppa1.1-stratus-vos ;; mc68*:A/UX:*:*) GUESS=m68k-apple-aux$UNAME_RELEASE ;; news*:NEWS-OS:6*:*) GUESS=mips-sony-newsos6 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then GUESS=mips-nec-sysv$UNAME_RELEASE else GUESS=mips-unknown-sysv$UNAME_RELEASE fi ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. GUESS=powerpc-be-beos ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. GUESS=powerpc-apple-beos ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. GUESS=i586-pc-beos ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. GUESS=i586-pc-haiku ;; ppc:Haiku:*:*) # Haiku running on Apple PowerPC GUESS=powerpc-apple-haiku ;; *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) GUESS=$UNAME_MACHINE-unknown-haiku ;; SX-4:SUPER-UX:*:*) GUESS=sx4-nec-superux$UNAME_RELEASE ;; SX-5:SUPER-UX:*:*) GUESS=sx5-nec-superux$UNAME_RELEASE ;; SX-6:SUPER-UX:*:*) GUESS=sx6-nec-superux$UNAME_RELEASE ;; SX-7:SUPER-UX:*:*) GUESS=sx7-nec-superux$UNAME_RELEASE ;; SX-8:SUPER-UX:*:*) GUESS=sx8-nec-superux$UNAME_RELEASE ;; SX-8R:SUPER-UX:*:*) GUESS=sx8r-nec-superux$UNAME_RELEASE ;; SX-ACE:SUPER-UX:*:*) GUESS=sxace-nec-superux$UNAME_RELEASE ;; Power*:Rhapsody:*:*) GUESS=powerpc-apple-rhapsody$UNAME_RELEASE ;; *:Rhapsody:*:*) GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE ;; arm64:Darwin:*:*) GUESS=aarch64-apple-darwin$UNAME_RELEASE ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac if command -v xcode-select > /dev/null 2> /dev/null && \ ! xcode-select --print-path > /dev/null 2> /dev/null ; then # Avoid executing cc if there is no toolchain installed as # cc will be a stub that puts up a graphical alert # prompting the user to install developer tools. CC_FOR_BUILD=no_compiler_found else set_cc_for_build fi if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE ;; *:QNX:*:4*) GUESS=i386-pc-qnx ;; NEO-*:NONSTOP_KERNEL:*:*) GUESS=neo-tandem-nsk$UNAME_RELEASE ;; NSE-*:NONSTOP_KERNEL:*:*) GUESS=nse-tandem-nsk$UNAME_RELEASE ;; NSR-*:NONSTOP_KERNEL:*:*) GUESS=nsr-tandem-nsk$UNAME_RELEASE ;; NSV-*:NONSTOP_KERNEL:*:*) GUESS=nsv-tandem-nsk$UNAME_RELEASE ;; NSX-*:NONSTOP_KERNEL:*:*) GUESS=nsx-tandem-nsk$UNAME_RELEASE ;; *:NonStop-UX:*:*) GUESS=mips-compaq-nonstopux ;; BS2000:POSIX*:*:*) GUESS=bs2000-siemens-sysv ;; DS/*:UNIX_System_V:*:*) GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "${cputype-}" = 386; then UNAME_MACHINE=i386 elif test "x${cputype-}" != x; then UNAME_MACHINE=$cputype fi GUESS=$UNAME_MACHINE-unknown-plan9 ;; *:TOPS-10:*:*) GUESS=pdp10-unknown-tops10 ;; *:TENEX:*:*) GUESS=pdp10-unknown-tenex ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) GUESS=pdp10-dec-tops20 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) GUESS=pdp10-xkl-tops20 ;; *:TOPS-20:*:*) GUESS=pdp10-unknown-tops20 ;; *:ITS:*:*) GUESS=pdp10-unknown-its ;; SEI:*:*:SEIUX) GUESS=mips-sei-seiux$UNAME_RELEASE ;; *:DragonFly:*:*) DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case $UNAME_MACHINE in A*) GUESS=alpha-dec-vms ;; I*) GUESS=ia64-dec-vms ;; V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) GUESS=i386-pc-xenix ;; i*86:skyos:*:*) SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL ;; i*86:rdos:*:*) GUESS=$UNAME_MACHINE-pc-rdos ;; i*86:Fiwix:*:*) GUESS=$UNAME_MACHINE-pc-fiwix ;; *:AROS:*:*) GUESS=$UNAME_MACHINE-unknown-aros ;; x86_64:VMkernel:*:*) GUESS=$UNAME_MACHINE-unknown-esx ;; amd64:Isilon\ OneFS:*:*) GUESS=x86_64-unknown-onefs ;; *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; esac # Do we have a guess based on uname results? if test "x$GUESS" != x; then echo "$GUESS" exit fi # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" < #include #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #include #if defined(_SIZE_T_) || defined(SIGLOST) #include #endif #endif #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) #if !defined (ultrix) #include #if defined (BSD) #if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); #else #if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); #else printf ("vax-dec-bsd\n"); exit (0); #endif #endif #else printf ("vax-dec-bsd\n"); exit (0); #endif #else #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname un; uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname *un; uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF fi exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: recode-3.7.15/build-aux/depcomp0000754000175000017500000005577614371444255012034 #! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2022-09-18.14; # UTC # Copyright (C) 1999-2023 Free Software Foundation, Inc. # 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsolete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: recode-3.7.15/build-aux/ltmain.sh0000755000175000017500000121237514605013133012255 #! /usr/bin/env sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2019-02-19.15 # libtool (GNU libtool) 2.4.7 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2019, 2021-2022 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool 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. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool 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, see . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.7 Debian-2.4.7-7build1" package_revision=2.4.7 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2019-02-19.15; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2004-2019, 2021 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # These NLS vars are set unconditionally (bootstrap issue #24). Unset those # in case the environment reset is needed later and the $save_* variant is not # defined (see the code above). LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # func_unset VAR # -------------- # Portably unset VAR. # In some shells, an 'unset VAR' statement leaves a non-zero return # status if VAR is already unset, which might be problematic if the # statement is used at the end of a function (thus poisoning its return # value) or when 'set -e' is active (causing even a spurious abort of # the script in this case). func_unset () { { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } } # Make sure CDPATH doesn't cause `cd` commands to output the target dir. func_unset CDPATH # Make sure ${,E,F}GREP behave sanely. func_unset GREP_OPTIONS ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin" rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin" GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" # require_check_ifs_backslash # --------------------------- # Check if we can use backslash as IFS='\' separator, and set # $check_ifs_backshlash_broken to ':' or 'false'. require_check_ifs_backslash=func_require_check_ifs_backslash func_require_check_ifs_backslash () { _G_save_IFS=$IFS IFS='\' _G_check_ifs_backshlash='a\\b' for _G_i in $_G_check_ifs_backshlash do case $_G_i in a) check_ifs_backshlash_broken=false ;; '') break ;; *) check_ifs_backshlash_broken=: break ;; esac done IFS=$_G_save_IFS require_check_ifs_backslash=: } ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. if test -z "$_G_HAVE_PLUSEQ_OP" && \ __PLUSEQ_TEST="a" && \ __PLUSEQ_TEST+=" b" 2>/dev/null && \ test "a b" = "$__PLUSEQ_TEST"; then _G_HAVE_PLUSEQ_OP=yes fi if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_arg pretty "$2" eval "$1+=\\ \$func_quote_arg_result" }' else func_append_quoted () { $debug_cmd func_quote_arg pretty "$2" eval "$1=\$$1\\ \$func_quote_arg_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_portable EVAL ARG # ---------------------------- # Internal function to portably implement func_quote_arg. Note that we still # keep attention to performance here so we as much as possible try to avoid # calling sed binary (so far O(N) complexity as long as func_append is O(1)). func_quote_portable () { $debug_cmd $require_check_ifs_backslash func_quote_portable_result=$2 # one-time-loop (easy break) while true do if $1; then func_quote_portable_result=`$ECHO "$2" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` break fi # Quote for eval. case $func_quote_portable_result in *[\\\`\"\$]*) # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string # contains the shell wildcard characters. case $check_ifs_backshlash_broken$func_quote_portable_result in :*|*[\[\*\?]*) func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ | $SED "$sed_quote_subst"` break ;; esac func_quote_portable_old_IFS=$IFS for _G_char in '\' '`' '"' '$' do # STATE($1) PREV($2) SEPARATOR($3) set start "" "" func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy IFS=$_G_char for _G_part in $func_quote_portable_result do case $1 in quote) func_append func_quote_portable_result "$3$2" set quote "$_G_part" "\\$_G_char" ;; start) set first "" "" func_quote_portable_result= ;; first) set quote "$_G_part" "" ;; esac done done IFS=$func_quote_portable_old_IFS ;; *) ;; esac break done func_quote_portable_unquoted_result=$func_quote_portable_result case $func_quote_portable_result in # double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # many bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_portable_result=\"$func_quote_portable_result\" ;; esac } # func_quotefast_eval ARG # ----------------------- # Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', # but optimized for speed. Result is stored in $func_quotefast_eval. if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then printf -v _GL_test_printf_tilde %q '~' if test '\~' = "$_GL_test_printf_tilde"; then func_quotefast_eval () { printf -v func_quotefast_eval_result %q "$1" } else # Broken older Bash implementations. Make those faster too if possible. func_quotefast_eval () { case $1 in '~'*) func_quote_portable false "$1" func_quotefast_eval_result=$func_quote_portable_result ;; *) printf -v func_quotefast_eval_result %q "$1" ;; esac } fi else func_quotefast_eval () { func_quote_portable false "$1" func_quotefast_eval_result=$func_quote_portable_result } fi # func_quote_arg MODEs ARG # ------------------------ # Quote one ARG to be evaled later. MODEs argument may contain zero or more # specifiers listed below separated by ',' character. This function returns two # values: # i) func_quote_arg_result # double-quoted (when needed), suitable for a subsequent eval # ii) func_quote_arg_unquoted_result # has all characters that are still active within double # quotes backslashified. Available only if 'unquoted' is specified. # # Available modes: # ---------------- # 'eval' (default) # - escape shell special characters # 'expand' # - the same as 'eval'; but do not quote variable references # 'pretty' # - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might # be used later in func_quote to get output like: 'echo "a b"' instead # of 'echo a\ b'. This is slower than default on some shells. # 'unquoted' # - produce also $func_quote_arg_unquoted_result which does not contain # wrapping double-quotes. # # Examples for 'func_quote_arg pretty,unquoted string': # # string | *_result | *_unquoted_result # ------------+-----------------------+------------------- # " | \" | \" # a b | "a b" | a b # "a b" | "\"a b\"" | \"a b\" # * | "*" | * # z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" # # Examples for 'func_quote_arg pretty,unquoted,expand string': # # string | *_result | *_unquoted_result # --------------+---------------------+-------------------- # z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" func_quote_arg () { _G_quote_expand=false case ,$1, in *,expand,*) _G_quote_expand=: ;; esac case ,$1, in *,pretty,*|*,expand,*|*,unquoted,*) func_quote_portable $_G_quote_expand "$2" func_quote_arg_result=$func_quote_portable_result func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result ;; *) # Faster quote-for-eval for some shells. func_quotefast_eval "$2" func_quote_arg_result=$func_quotefast_eval_result ;; esac } # func_quote MODEs ARGs... # ------------------------ # Quote all ARGs to be evaled later and join them into single command. See # func_quote_arg's description for more info. func_quote () { $debug_cmd _G_func_quote_mode=$1 ; shift func_quote_result= while test 0 -lt $#; do func_quote_arg "$_G_func_quote_mode" "$1" if test -n "$func_quote_result"; then func_append func_quote_result " $func_quote_arg_result" else func_append func_quote_result "$func_quote_arg_result" fi shift done } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_arg pretty,expand "$_G_cmd" eval "func_notquiet $func_quote_arg_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_arg expand,pretty "$_G_cmd" eval "func_echo $func_quote_arg_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2010-2019, 2021 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # # Set a version string for this script. scriptversion=2019-02-19.15; # UTC ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# Copyright'. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug in processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # in the main code. A hook is just a list of function names that can be # run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of hook functions to be called by # FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_propagate_result FUNC_NAME_A FUNC_NAME_B # --------------------------------------------- # If the *_result variable of FUNC_NAME_A _is set_, assign its value to # *_result variable of FUNC_NAME_B. func_propagate_result () { $debug_cmd func_propagate_result_result=: if eval "test \"\${${1}_result+set}\" = set" then eval "${2}_result=\$${1}_result" else func_propagate_result_result=false fi } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It's assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd _G_rc_run_hooks=false case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook functions." ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do func_unset "${_G_hook}_result" eval $_G_hook '${1+"$@"}' func_propagate_result $_G_hook func_run_hooks if $func_propagate_result_result; then eval set dummy "$func_run_hooks_result"; shift fi done } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list from your hook function. You may remove # or edit any options that you action, and then pass back the remaining # unprocessed options in '_result', escaped # suitably for 'eval'. # # The '_result' variable is automatically unset # before your hook gets called; for best performance, only set the # *_result variable when necessary (i.e. don't call the 'func_quote' # function unnecessarily because it can be an expensive operation on some # machines). # # Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # No change in '$@' (ignored completely by this hook). Leave # # my_options_prep_result variable intact. # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # args_changed=false # # # Note that, for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: # args_changed=: # ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # args_changed=: # ;; # *) # Make sure the first unrecognised option "$_G_opt" # # is added back to "$@" in case we need it later, # # if $args_changed was set to 'true'. # set dummy "$_G_opt" ${1+"$@"}; shift; break ;; # esac # done # # # Only call 'func_quote' here if we processed at least one argument. # if $args_changed; then # func_quote eval ${1+"$@"} # my_silent_option_result=$func_quote_result # fi # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # } # func_add_hook func_validate_options my_option_validation # # You'll also need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options_finish [ARG]... # ---------------------------- # Finishing the option parse loop (call 'func_options' hooks ATM). func_options_finish () { $debug_cmd func_run_hooks func_options ${1+"$@"} func_propagate_result func_run_hooks func_options_finish } # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd _G_options_quoted=false for my_func in options_prep parse_options validate_options options_finish do func_unset func_${my_func}_result func_unset func_run_hooks_result eval func_$my_func '${1+"$@"}' func_propagate_result func_$my_func func_options if $func_propagate_result_result; then eval set dummy "$func_options_result"; shift _G_options_quoted=: fi done $_G_options_quoted || { # As we (func_options) are top-level options-parser function and # nobody quoted "$@" for us yet, we need to do it explicitly for # caller. func_quote eval ${1+"$@"} func_options_result=$func_quote_result } } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propagate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} func_propagate_result func_run_hooks func_options_prep } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd _G_parse_options_requote=false # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} func_propagate_result func_run_hooks func_parse_options if $func_propagate_result_result; then eval set dummy "$func_parse_options_result"; shift # Even though we may have changed "$@", we passed the "$@" array # down into the hook and it quoted it for us (because we are in # this if-branch). No need to quote it again. _G_parse_options_requote=false fi # Break out of the loop if we already parsed every option. test $# -gt 0 || break # We expect that one of the options parsed in this function matches # and thus we remove _G_opt from "$@" and need to re-quote. _G_match_parse_options=: _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" >&2 $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) if test $# = 0 && func_missing_arg $_G_opt; then _G_parse_options_requote=: break fi case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) _G_parse_options_requote=: ; break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift _G_match_parse_options=false break ;; esac if $_G_match_parse_options; then _G_parse_options_requote=: fi done if $_G_parse_options_requote; then # save modified positional parameters for caller func_quote eval ${1+"$@"} func_parse_options_result=$func_quote_result fi } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} func_propagate_result func_run_hooks func_validate_options # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables # after splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} if test "x$func_split_equals_lhs" = "x$1"; then func_split_equals_rhs= fi }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs=" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. # The version message is extracted from the calling file's header # comments, with leading '# ' stripped: # 1. First display the progname and version # 2. Followed by the header comment line matching /^# Written by / # 3. Then a blank line followed by the first following line matching # /^# Copyright / # 4. Immediately followed by any lines between the previous matches, # except lines preceding the intervening completely blank line. # For example, see the header comments of this file. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /^# Written by /!b s|^# ||; p; n :fwd2blnk /./ { n b fwd2blnk } p; n :holdwrnt s|^# || s|^# *$|| /^Copyright /!{ /./H n b holdwrnt } s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| G s|\(\n\)\n*|\1|g p; q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.7' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname $scriptversion Debian-2.4.7-7build1 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= _G_rc_lt_options_prep=: _G_rc_lt_options_prep=: # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; *) _G_rc_lt_options_prep=false ;; esac if $_G_rc_lt_options_prep; then # Pass back the list of options. func_quote eval ${1+"$@"} libtool_options_prep_result=$func_quote_result fi } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd _G_rc_lt_parse_options=false # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_match_lt_parse_options=: _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"} ; shift _G_match_lt_parse_options=false break ;; esac $_G_match_lt_parse_options && _G_rc_lt_parse_options=: done if $_G_rc_lt_parse_options; then # save modified positional parameters for caller func_quote eval ${1+"$@"} libtool_parse_options_result=$func_quote_result fi } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote eval ${1+"$@"} libtool_validate_options_result=$func_quote_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_arg pretty "$libobj" test "X$libobj" != "X$func_quote_arg_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_arg pretty "$srcfile" qsrcfile=$func_quote_arg_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG -Xcompiler FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wa,FLAG -Xassembler FLAG pass linker-specific FLAG directly to the assembler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_arg pretty "$nonopt" install_prog="$func_quote_arg_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_arg pretty "$arg" func_append install_prog "$func_quote_arg_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_arg pretty "$arg" func_append install_prog " $func_quote_arg_result" if test -n "$arg2"; then func_quote_arg pretty "$arg2" fi func_append install_shared_prog " $func_quote_arg_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_arg pretty "$install_override_mode" func_append install_shared_prog " -m $func_quote_arg_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_arg expand,pretty "$relink_command" eval "func_echo $func_quote_arg_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" func_quote_arg pretty "$ECHO" qECHO=$func_quote_arg_result $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=$qECHO fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_arg pretty,unquoted "$arg" qarg=$func_quote_arg_unquoted_result func_append libtool_args " $func_quote_arg_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xassembler) func_append compiler_flags " -Xassembler $qarg" prev= func_append compile_command " -Xassembler $qarg" func_append finalize_command " -Xassembler $qarg" continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; # Solaris ld rejects as of 11.4. Refer to Oracle bug 22985199. -pthread) case $host in *solaris2*) ;; *) case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac ;; esac continue ;; -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_arg pretty "$flag" func_append arg " $func_quote_arg_result" func_append compiler_flags " $func_quote_arg_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_arg pretty "$flag" func_append arg " $wl$func_quote_arg_result" func_append compiler_flags " $wl$func_quote_arg_result" func_append linker_flags " $func_quote_arg_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xassembler) prev=xassembler continue ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_arg pretty "$arg" arg=$func_quote_arg_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer # -fuse-ld=* Linker select flags for GCC # -static-* direct GCC to link specific libraries statically # -fcilkplus Cilk Plus language extension features for C/C++ # -Wa,* Pass flags directly to the assembler -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus|-Wa,*) func_quote_arg pretty "$arg" arg=$func_quote_arg_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_arg pretty "$arg" arg=$func_quote_arg_result fi ;; # Some other compiler flag. -* | +*) func_quote_arg pretty "$arg" arg=$func_quote_arg_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_arg pretty "$arg" arg=$func_quote_arg_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type '$version_type'" ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf | midnightbsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_arg expand,pretty "$cmd" eval "func_echo $func_quote_arg_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_arg expand,pretty "$cmd" eval "func_echo $func_quote_arg_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_arg pretty "$var_value" relink_command="$var=$func_quote_arg_result; export $var; $relink_command" fi done func_quote eval cd "`pwd`" func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)" relink_command=$func_quote_arg_unquoted_result fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_arg pretty,unquoted "$var_value" relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command" fi done # Quote the link command for shipping. func_quote eval cd "`pwd`" relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" func_quote_arg pretty,unquoted "$relink_command" relink_command=$func_quote_arg_unquoted_result if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: recode-3.7.15/build-aux/extract-trace0000754000175000017500000003607614371673200013135 #! /bin/sh # Extract macro arguments from autotools input with GNU M4. # Written by Gary V. Vaughan, 2010 # # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2010-2019 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # # Make sure we've evaluated scripts we depend on. test -z "$progpath" && . `echo "$0" |${SED-sed} 's|[^/]*$||'`/funclib.sh test extract-trace = "$progname" && . `echo "$0" |${SED-sed} 's|[^/]*$||'`/options-parser # Set a version string. scriptversion=2019-02-19.15; # UTC ## ------ ## ## Usage. ## ## ------ ## # Run './extract-trace --help' for help with using this script from the # command line. # # Or source first 'options-parser' and then this file into your own # scripts in order to make use of the function and variable framework # they define, and also to avoid the overhead of forking to run this # script in its own process on every call. ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of # 'extract-trace'. # func_autoconf_configure MAYBE-CONFIGURE-FILE # -------------------------------------------- # Ensure that MAYBE-CONFIGURE-FILE is the name of a file in the current # directory that contains an uncommented call to AC_INIT. func_autoconf_configure () { $debug_cmd _G_sed_no_comment=' s|#.*$|| s|^dnl .*$|| s| dnl .*$||' _G_ac_init= # If we were passed a genuine file, make sure it calls AC_INIT. test -f "$1" \ && _G_ac_init=`$SED "$_G_sed_no_comment" "$1" |$GREP AC_INIT` # Otherwise it is not a genuine Autoconf input file. test -n "$_G_ac_init" _G_status=$? test 0 -ne "$_G_status" \ && func_verbose "'$1' not using Autoconf" (exit $_G_status) } # func_tool_version_output CMD [FATAL-ERROR-MSG] # ---------------------------------------------- # Attempt to run 'CMD --version', discarding errors. The output can be # ignored by redirecting stdout, and this function used simply to test # whether the command exists and exits normally when passed a # '--version' argument. # When FATAL-ERROR-MSG is given, then this function will display the # message and exit if running 'CMD --version' returns a non-zero exit # status. func_tool_version_output () { $debug_cmd _G_cmd=$1 _G_fatal_error_msg=$2 # Some tools, like 'git2cl' produce thousands of lines of output # unless stdin is /dev/null - in that case we want to return # successfully without saving all of that output. Other tools, # such as 'help2man' exit with a non-zero status when stdin comes # from /dev/null, so we re-execute without /dev/null if that # happens. This means that occasionally, the output from both calls # ends up in the result, but the alternative would be to discard the # output from one call, and hope the other produces something useful. { $_G_cmd --version /dev/null _G_status=$? test 0 -ne "$_G_status" && test -n "$_G_fatal_error_msg" \ && func_fatal_error "$_G_fatal_error_msg" (exit $_G_status) } # func_tool_version_number CMD [FATAL-ERROR-MSG] # ---------------------------------------------- # Pass arguments to func_tool_version_output, but set # $func_tool_version_number_result to the last dot delimited digit string # on the first line of output. func_tool_version_number () { $debug_cmd _G_verout=`func_tool_version_output "$@"` _G_status=$? # A version number starts with a digit following a space on the first # line of output from `--version`. _G_verout=`echo "$_G_verout" |sed 1q` if test -n "$_G_verout"; then _G_vernum=`expr "$_G_verout" : '.* \([0-9][^ ]*\)'` fi if test -n "$_G_vernum"; then printf '%s\n' "$_G_vernum" else printf '%s\n' "$_G_verout" fi (exit $_G_status) } # func_find_tool ENVVAR NAMES... # ------------------------------ # Search for a required program. Use the value of ENVVAR, if set, # otherwise find the first of the NAMES that can be run (i.e., # supports --version). If found, set ENVVAR to the program name, # die otherwise. func_find_tool () { $debug_cmd _G_find_tool_envvar=$1 shift _G_find_tool_names=$@ eval "_G_find_tool_res=\$$_G_find_tool_envvar" if test -n "$_G_find_tool_res"; then _G_find_tool_error_prefix="\$$find_tool_envvar: " else _G_find_tool_res= _G_bestver= for _G_prog do _G_find_tool_save_IFS=$IFS IFS=${PATH_SEPARATOR-:} for _G_dir in $PATH; do IFS=$_G_find_tool_save_IFS _G_progpath=$_G_dir/$_G_prog test -r "$_G_progpath" && { _G_curver=`func_tool_version_number $_G_progpath` case $_G_bestver,$_G_curver in ,) # first non--version responsive prog sticks! test -n "$_G_progpath" || _G_find_tool_res=$_G_progpath ;; ,*) # first --version responsive prog beats non--version responsive! _G_find_tool_res=$_G_progpath _G_bestver=$_G_curver ;; *,*) # another --version responsive prog must be newer to beat previous one! test "x$_G_curver" = "x$_G_bestver" \ || func_lt_ver "$_G_curver" "$_G_bestver" \ || { _G_find_tool_res=$_G_progpath _G_bestver=$_G_curver } ;; esac } done IFS=$_G_find_tool_save_IFS done fi if test -n "$_G_find_tool_res"; then func_tool_version_number >/dev/null $_G_find_tool_res "\ ${_G_find_tool_error_prefix}Cannot run '$_G_find_tool_res --version'" # Make sure the result is exported to the environment for children # to use. eval "$_G_find_tool_envvar=\$_G_find_tool_res" eval "export $_G_find_tool_envvar" else func_error "\ One of these is required: $_G_find_tool_names" fi } ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Where a variable already has a non- # empty value (as set by the package's 'bootstrap.conf'), that value is # used in preference to deriving the default. Call them using their # associated 'require_*' variable to ensure that they are executed, at # most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_configure_ac # -------------------- # Ensure that there is a 'configure.ac' or 'configure.in' file in the # current directory that contains an uncommented call to AC_INIT, and # that '$configure_ac' contains its name. require_configure_ac=func_require_configure_ac func_require_configure_ac () { $debug_cmd test -z "$configure_ac" \ && func_autoconf_configure configure.ac && configure_ac=configure.ac test -z "$configure_ac" \ && func_autoconf_configure configure.in && configure_ac=configure.in test -z "$configure_ac" \ || func_verbose "found '$configure_ac'" require_configure_ac=: } # require_gnu_m4 # -------------- # Search for GNU M4, and export it in $M4. require_gnu_m4=func_require_gnu_m4 func_require_gnu_m4 () { $debug_cmd test -n "$M4" || { # Find the first m4 binary that responds to --version. func_find_tool M4 gm4 gnum4 m4 } test -n "$M4" || func_fatal_error "\ Please install GNU M4, or 'export M4=/path/to/gnu/m4'." func_verbose "export M4='$M4'" # Make sure the search result is visible to subshells export M4 require_gnu_m4=: } ## --------------- ## ## Core functions. ## ## --------------- ## # This section contains the high level functions used when calling this # file as a script. 'func_extract_trace' is probably the only one that you # won't want to replace if you source this file into your own script. # func_extract_trace MACRO_NAMES [FILENAME]... # -------------------------------------------- # set '$func_extract_trace_result' to a colon delimited list of arguments # to any of the comma separated list of MACRO_NAMES in FILENAME. If no # FILENAME is given, then '$configure_ac' is assumed. func_extract_trace () { $debug_cmd $require_configure_ac $require_gnu_m4 _G_m4_traces=`$ECHO "--trace=$1" |$SED 's%,% --trace=%g'` _G_re_macros=`$ECHO "($1)" |$SED 's%,%|%g'` _G_macros="$1"; shift test $# -gt 0 || { set dummy $configure_ac shift } # Generate an error if the first file is missing <"$1" # Sadly, we can't use 'autom4te' tracing to extract macro arguments, # because it complains about things we want to ignore at bootstrap # time - like missing m4_include files; AC_PREREQ being newer than # the installed autoconf; and returns nothing when tracing # 'AM_INIT_AUTOMAKE' when aclocal hasn't been generated yet. # # The following tries to emulate a less persnickety version of (and # due to not having to wait for Perl startup on every invocation, # it's probably faster too): # # autom4te --language=Autoconf --trace=$my_macro:\$% "$@" # # First we give a minimal set of macro declarations to M4 to prime # it for reading Autoconf macros, while still providing some of the # functionality generally used at m4-time to supply dynamic # arguments to Autocof functions, but without following # 'm4_s?include' files. _G_mini=' dnl Initialisation. m4_changequote([,]) m4_define([m4_copy], [m4_define([$2], m4_defn([$1]))]) m4_define([m4_rename], [m4_copy([$1], [$2])m4_undefine([$1])]) dnl Replace macros which may abort m4 with a no-op variant. m4_pushdef([m4_assert]) m4_pushdef([m4_exit]) m4_pushdef([m4_fatal]) m4_pushdef([m4_m4exit]) dnl Replace macros that might break stderr of m4. m4_pushdef([m4_errprint]) m4_pushdef([m4_errprintn]) m4_pushdef([m4_include]) m4_pushdef([m4_warn]) dnl Avoid side-effects of tracing by extract-trace. m4_pushdef([m4_maketemp]) m4_pushdef([m4_mkstemp]) dnl TODO: reasons for this m4_pushdef([m4_dnl]) m4_pushdef([m4_m4wrap]) dnl Copy and rename macros not handled by "m4 --prefix". m4_define([dnl], [m4_builtin([dnl])]) m4_copy([m4_define], [m4_defun]) m4_rename([m4_ifelse], [m4_if]) m4_rename([m4_patsubst], [m4_bpatsubst]) m4_rename([m4_regexp], [m4_bregexp]) dnl "m4sugar.mini" - useful m4-time macros for dynamic arguments. dnl If we discover packages that need more m4 macros defined in dnl order to bootstrap correctly, add them here: m4_define([m4_bmatch], [m4_if([$#], 0, [], [$#], 1, [], [$#], 2, [$2], [m4_if(m4_bregexp([$1], [$2]), -1, [$0([$1], m4_shift3($@))], [$3])])]) m4_define([m4_ifndef], [m4_ifdef([$1], [$3], [$2])]) m4_define([m4_ifset], [m4_ifdef([$1], [m4_ifval(m4_defn([$1]), [$2], [$3])], [$3])]) m4_define([m4_require], [$1]) m4_define([m4_shift3], [m4_shift(m4shift(m4shift($@)))]) dnl "autoconf.mini" - things from autoconf macros we care about. m4_copy([m4_defun], [AC_DEFUN]) dnl Dummy definitions for the macros we want to trace. dnl AM_INIT_AUTOMAKE at least produces no trace without this. ' _G_save=$IFS IFS=, for _G_macro in $_G_macros; do IFS=$_G_save func_append _G_mini "AC_DEFUN([$_G_macro])$nl" done IFS=$_G_save # We discard M4's stdout, but the M4 trace output from reading our # "autoconf.mini" followed by any other files passed to this # function is then scanned by sed to transform it into a colon # delimited argument list assigned to a shell variable. _G_transform='s|#.*$||; s|^dnl .*$||; s| dnl .*$||;' # Unfortunately, alternation in regexp addresses doesn't work in at # least BSD (and hence Mac OS X) sed, so we have to append a capture # and print block for each traced macro to the sed transform script. _G_save=$IFS IFS=, for _G_macro in $_G_macros; do IFS=$_G_save func_append _G_transform ' /^m4trace: -1- '"$_G_macro"'/ { s|^m4trace: -1- '"$_G_macro"'[([]*|| s|], [[]|:|g s|[])]*$|:| s|\(.\):$|\1| p }' done IFS=$_G_save # Save the command pipeline results for further use by callers of # this function. func_extract_trace_result=`$ECHO "$_G_mini" \ |$M4 -daq --prefix $_G_m4_traces - "$@" 2>&1 1>/dev/null \ |$SED -n -e "$_G_transform"` } # func_extract_trace_first MACRO_NAMES [FILENAME]... # -------------------------------------------------- # Exactly like func_extract_trace, except that only the first argument # to the first invocation of one of the comma separated MACRO_NAMES is # returned in '$func_extract_trace_first_result'. func_extract_trace_first () { $debug_cmd func_extract_trace ${1+"$@"} func_extract_trace_first_result=`$ECHO "$func_extract_trace_result" \ |$SED -e 's|:.*$||g' -e 1q` } # func_main [ARG]... # ------------------ func_main () { $debug_cmd # Configuration. usage='$progname MACRO_NAME FILE [...]' long_help_message=' The first argument to this program is the name of an autotools macro whose arguments you want to extract by examining the files listed in the remaining arguments using the same tool that Autoconf and Automake use, GNU M4. The arguments are returned separated by colons, with each traced call on a separate line.' # Option processing. func_options "$@" eval set dummy "$func_options_result"; shift # Validate remaining non-option arguments. test $# -gt 1 \ || func_fatal_help "not enough arguments" # Pass non-option arguments to extraction function. func_extract_trace "$@" # Display results. test -n "$func_extract_trace_result" \ && $ECHO "$func_extract_trace_result" # The End. exit $EXIT_SUCCESS } ## --------------------------- ## ## Actually perform the trace. ## ## --------------------------- ## # Only call 'func_main' if this script was called directly. test extract-trace = "$progname" && func_main "$@" # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "50/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: recode-3.7.15/build-aux/funclib.sh0000644000175000017500000012164614371673200012416 # Set a version string for this script. scriptversion=2019-02-19.15; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2004-2019 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 2 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # func_unset VAR # -------------- # Portably unset VAR. # In some shells, an 'unset VAR' statement leaves a non-zero return # status if VAR is already unset, which might be problematic if the # statement is used at the end of a function (thus poisoning its return # value) or when 'set -e' is active (causing even a spurious abort of # the script in this case). func_unset () { { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } } # Make sure CDPATH doesn't cause `cd` commands to output the target dir. func_unset CDPATH # Make sure ${,E,F}GREP behave sanely. func_unset GREP_OPTIONS ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin" rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin" GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_arg pretty "$2" eval "$1+=\\ \$func_quote_arg_result" }' else func_append_quoted () { $debug_cmd func_quote_arg pretty "$2" eval "$1=\$$1\\ \$func_quote_arg_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_portable EVAL ARG # ---------------------------- # Internal function to portably implement func_quote_arg. Note that we still # keep attention to performance here so we as much as possible try to avoid # calling sed binary (so far O(N) complexity as long as func_append is O(1)). func_quote_portable () { $debug_cmd func_quote_portable_result=$2 # one-time-loop (easy break) while true do if $1; then func_quote_portable_result=`$ECHO "$2" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` break fi # Quote for eval. case $func_quote_portable_result in *[\\\`\"\$]*) case $func_quote_portable_result in *[\[\*\?]*) func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ | $SED "$sed_quote_subst"` break ;; esac func_quote_portable_old_IFS=$IFS for _G_char in '\' '`' '"' '$' do # STATE($1) PREV($2) SEPARATOR($3) set start "" "" func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy IFS=$_G_char for _G_part in $func_quote_portable_result do case $1 in quote) func_append func_quote_portable_result "$3$2" set quote "$_G_part" "\\$_G_char" ;; start) set first "" "" func_quote_portable_result= ;; first) set quote "$_G_part" "" ;; esac done done IFS=$func_quote_portable_old_IFS ;; *) ;; esac break done func_quote_portable_unquoted_result=$func_quote_portable_result case $func_quote_portable_result in # double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # many bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_portable_result=\"$func_quote_portable_result\" ;; esac } # func_quotefast_eval ARG # ----------------------- # Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', # but optimized for speed. Result is stored in $func_quotefast_eval. if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then printf -v _GL_test_printf_tilde %q '~' if test '\~' = "$_GL_test_printf_tilde"; then func_quotefast_eval () { printf -v func_quotefast_eval_result %q "$1" } else # Broken older Bash implementations. Make those faster too if possible. func_quotefast_eval () { case $1 in '~'*) func_quote_portable false "$1" func_quotefast_eval_result=$func_quote_portable_result ;; *) printf -v func_quotefast_eval_result %q "$1" ;; esac } fi else func_quotefast_eval () { func_quote_portable false "$1" func_quotefast_eval_result=$func_quote_portable_result } fi # func_quote_arg MODEs ARG # ------------------------ # Quote one ARG to be evaled later. MODEs argument may contain zero or more # specifiers listed below separated by ',' character. This function returns two # values: # i) func_quote_arg_result # double-quoted (when needed), suitable for a subsequent eval # ii) func_quote_arg_unquoted_result # has all characters that are still active within double # quotes backslashified. Available only if 'unquoted' is specified. # # Available modes: # ---------------- # 'eval' (default) # - escape shell special characters # 'expand' # - the same as 'eval'; but do not quote variable references # 'pretty' # - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might # be used later in func_quote to get output like: 'echo "a b"' instead # of 'echo a\ b'. This is slower than default on some shells. # 'unquoted' # - produce also $func_quote_arg_unquoted_result which does not contain # wrapping double-quotes. # # Examples for 'func_quote_arg pretty,unquoted string': # # string | *_result | *_unquoted_result # ------------+-----------------------+------------------- # " | \" | \" # a b | "a b" | a b # "a b" | "\"a b\"" | \"a b\" # * | "*" | * # z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" # # Examples for 'func_quote_arg pretty,unquoted,expand string': # # string | *_result | *_unquoted_result # --------------+---------------------+-------------------- # z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" func_quote_arg () { _G_quote_expand=false case ,$1, in *,expand,*) _G_quote_expand=: ;; esac case ,$1, in *,pretty,*|*,expand,*|*,unquoted,*) func_quote_portable $_G_quote_expand "$2" func_quote_arg_result=$func_quote_portable_result func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result ;; *) # Faster quote-for-eval for some shells. func_quotefast_eval "$2" func_quote_arg_result=$func_quotefast_eval_result ;; esac } # func_quote MODEs ARGs... # ------------------------ # Quote all ARGs to be evaled later and join them into single command. See # func_quote_arg's description for more info. func_quote () { $debug_cmd _G_func_quote_mode=$1 ; shift func_quote_result= while test 0 -lt $#; do func_quote_arg "$_G_func_quote_mode" "$1" if test -n "$func_quote_result"; then func_append func_quote_result " $func_quote_arg_result" else func_append func_quote_result "$func_quote_arg_result" fi shift done } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_arg pretty,expand "$_G_cmd" eval "func_notquiet $func_quote_arg_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_arg expand,pretty "$_G_cmd" eval "func_echo $func_quote_arg_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: recode-3.7.15/build-aux/mdate-sh0000754000175000017500000001373214371444255012071 #!/bin/sh # Get modification time of a file or directory and pretty-print it. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1995-2023 Free Software Foundation, Inc. # written by Ulrich Drepper , June 1995 # # 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST fi case $1 in '') echo "$0: No file. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: mdate-sh [--help] [--version] FILE Pretty-print the modification day of FILE, in the format: 1 January 1970 Report bugs to . EOF exit $? ;; -v | --v*) echo "mdate-sh $scriptversion" exit $? ;; esac error () { echo "$0: $1" >&2 exit 1 } # Prevent date giving response in another language. LANG=C export LANG LC_ALL=C export LC_ALL LC_TIME=C export LC_TIME # Use UTC to get reproducible result. TZ=UTC0 export TZ # GNU ls changes its time format in response to the TIME_STYLE # variable. Since we cannot assume 'unset' works, revert this # variable to its documented default. if test "${TIME_STYLE+set}" = set; then TIME_STYLE=posix-long-iso export TIME_STYLE fi save_arg1=$1 # Find out how to get the extended ls output of a file or directory. if ls -L /dev/null 1>/dev/null 2>&1; then ls_command='ls -L -l -d' else ls_command='ls -l -d' fi # Avoid user/group names that might have spaces, when possible. if ls -n /dev/null 1>/dev/null 2>&1; then ls_command="$ls_command -n" fi # A 'ls -l' line looks as follows on OS/2. # drwxrwx--- 0 Aug 11 2001 foo # This differs from Unix, which adds ownership information. # drwxrwx--- 2 root root 4096 Aug 11 2001 foo # # To find the date, we split the line on spaces and iterate on words # until we find a month. This cannot work with files whose owner is a # user named "Jan", or "Feb", etc. However, it's unlikely that '/' # will be owned by a user whose name is a month. So we first look at # the extended ls output of the root directory to decide how many # words should be skipped to get the date. # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. set x`$ls_command /` # Find which argument is the month. month= command= until test $month do test $# -gt 0 || error "failed parsing '$ls_command /' output" shift # Add another shift to the command. command="$command shift;" case $1 in Jan) month=January; nummonth=1;; Feb) month=February; nummonth=2;; Mar) month=March; nummonth=3;; Apr) month=April; nummonth=4;; May) month=May; nummonth=5;; Jun) month=June; nummonth=6;; Jul) month=July; nummonth=7;; Aug) month=August; nummonth=8;; Sep) month=September; nummonth=9;; Oct) month=October; nummonth=10;; Nov) month=November; nummonth=11;; Dec) month=December; nummonth=12;; esac done test -n "$month" || error "failed parsing '$ls_command /' output" # Get the extended ls output of the file or directory. set dummy x`eval "$ls_command \"\\\$save_arg1\""` # Remove all preceding arguments eval $command # Because of the dummy argument above, month is in $2. # # On a POSIX system, we should have # # $# = 5 # $1 = file size # $2 = month # $3 = day # $4 = year or time # $5 = filename # # On Darwin 7.7.0 and 7.6.0, we have # # $# = 4 # $1 = day # $2 = month # $3 = year or time # $4 = filename # Get the month. case $2 in Jan) month=January; nummonth=1;; Feb) month=February; nummonth=2;; Mar) month=March; nummonth=3;; Apr) month=April; nummonth=4;; May) month=May; nummonth=5;; Jun) month=June; nummonth=6;; Jul) month=July; nummonth=7;; Aug) month=August; nummonth=8;; Sep) month=September; nummonth=9;; Oct) month=October; nummonth=10;; Nov) month=November; nummonth=11;; Dec) month=December; nummonth=12;; esac case $3 in ???*) day=$1;; *) day=$3; shift;; esac # Here we have to deal with the problem that the ls output gives either # the time of day or the year. case $3 in *:*) set `date`; eval year=\$$# case $2 in Jan) nummonthtod=1;; Feb) nummonthtod=2;; Mar) nummonthtod=3;; Apr) nummonthtod=4;; May) nummonthtod=5;; Jun) nummonthtod=6;; Jul) nummonthtod=7;; Aug) nummonthtod=8;; Sep) nummonthtod=9;; Oct) nummonthtod=10;; Nov) nummonthtod=11;; Dec) nummonthtod=12;; esac # For the first six month of the year the time notation can also # be used for files modified in the last year. if (expr $nummonth \> $nummonthtod) > /dev/null; then year=`expr $year - 1` fi;; *) year=$3;; esac # The result. echo $day $month $year # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: recode-3.7.15/build-aux/x-to-1.in0000644000175000017500000001111214371444255012005 #! /bin/sh # # Copyright (C) 2001-2023 Free Software Foundation, Inc. # # 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 3 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, see . # # This program creates a program's manual from the .x skeleton and its --help # output. # # Usage: x-to-1 [OPTIONS] PERL HELP2MAN [HELP2MAN-OPTIONS] EXECUTABLE PROGRAM.x PROGRAM.1 # where # # PERL The file name of the perl program. # HELP2MAN Either the file name of the help2man perl script, or a complete # command such as "$PERL -w -- help2man". # HELP2MAN-OPTIONS Options to pass to the help2man perl script. # EXECUTABLE The file name of the program to invoke with --help. # PROGRAM The name of the program. # PROGRAM.x The .x skeleton is a file containing manual page text that is # not part of the --help output. It is passed to help2man via # its --include option. Its format is described in the help2man # documentation. # PROGRAM.1 The output file, a manual page in mandoc format. # # Options: # --update Don't overwrite the output if nothing would change. # # Configure-time prerequisites: # # PERL Can be set through # ac_aux_dir_abs=`cd $ac_aux_dir && pwd` # AC_PATH_PROG([PERL], [perl], [$ac_aux_dir_abs/missing perl]) # or, alternatively, by the Gnulib 'perl' module. # # CROSS_COMPILING Can be set through # CROSS_COMPILING=$cross_compiling # AC_SUBST([CROSS_COMPILING]) # The variable 'cross_compiling' is set by AC_PROG_CC. update= while true; do case "$1" in --update) update=yes; shift;; *) break;; esac done if test $# -lt 5; then echo "Usage: x-to-1 [OPTIONS] PERL HELP2MAN [HELP2MAN-OPTIONS] executable program.x program.1" 1>&2 exit 1 fi # In order to construct a command that invokes HELP2MAN [HELP2MAN-OPTIONS] ... # we need 'eval'. command_for_print= command_for_eval= # Protecting special characters, hiding them from 'eval': # Double each backslash. sed_protect_1='s/\\/\\\\/g' # Escape each dollar, backquote, double-quote. sed_protect_2a='s/\$/\\$/g' sed_protect_2b='s/`/\\`/g' sed_protect_2c='s/"/\\"/g' # Add double-quotes at the beginning and end of the word. sed_protect_3a='1s/^/"/' sed_protect_3b='$s/$/"/' func_add_word_to_command () { command_for_print="${command_for_print:+$command_for_print }$1" word_protected=`echo "$1" | sed -e "$sed_protect_1" -e "$sed_protect_2a" -e "$sed_protect_2b" -e "$sed_protect_2c" -e "$sed_protect_3a" -e "$sed_protect_3b"` command_for_eval="${command_for_eval:+$command_for_eval }$word_protected" } PERL="$1"; shift HELP2MAN="$1"; shift # Accommodate both possible forms of the HELP2MAN argument. case "$HELP2MAN" in "$PERL "*) ;; *) HELP2MAN="$PERL $HELP2MAN" ;; esac # Do word-splitting of $HELP2MAN, but carefully. for word in $HELP2MAN; do func_add_word_to_command "$word" done # Now grok the HELP2MAN-OPTIONS. while test $# -gt 3; do arg="$1"; shift func_add_word_to_command "$arg" done # Grok the final arguments. executable="$1" aux="$2" output="$3" progname=`basename $aux .x` # configure determined whether perl exists. case "$PERL" in *"/missing perl") perlok=no ;; *) # Determine whether all the perl modules that help2man needs are installed. if $HELP2MAN --help >/dev/null 2>/dev/null; then perlok=yes else perlok=no fi ;; esac if test @CROSS_COMPILING@ = no && test -f $executable && test $perlok = yes; then echo "Updating man page $output" func_add_word_to_command "--include=$aux" func_add_word_to_command "$executable" echo "$command_for_print > $output" rm -f t-$progname.1 eval "$command_for_eval" > t-$progname.1 || exit 1 if test -n "$update"; then # In --update mode, don't overwrite the output if nothing would change. if cmp t-$progname.1 $output >/dev/null 2>&1; then rm -f t-$progname.1 else mv t-$progname.1 $output fi else mv t-$progname.1 $output fi else echo "WARNING: The man page $output cannot be updated yet." fi recode-3.7.15/build-aux/config.sub0000754000175000017500000010575214371444255012430 #! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2023 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2023-01-21' # This file 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 3 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Split fields of configuration type # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 basic_os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) basic_machine=$field1 basic_os=$maybe_os ;; android-linux) basic_machine=$field1-unknown basic_os=linux-android ;; *) basic_machine=$field1-$field2 basic_os=$field3 ;; esac ;; *-*) # A lone config we happen to match not fitting any pattern case $field1-$field2 in decstation-3100) basic_machine=mips-dec basic_os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 basic_os=$field2 ;; zephyr*) basic_machine=$field1-unknown basic_os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ | convergent* | ncr* | news | 32* | 3600* | 3100* \ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ | ultra | tti* | harris | dolphin | highlevel | gould \ | cbm | ns | masscomp | apple | axis | knuth | cray \ | microblaze* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 basic_os= ;; *) basic_machine=$field1 basic_os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc basic_os=bsd ;; a29khif) basic_machine=a29k-amd basic_os=udi ;; adobe68k) basic_machine=m68010-adobe basic_os=scout ;; alliant) basic_machine=fx80-alliant basic_os= ;; altos | altos3068) basic_machine=m68k-altos basic_os= ;; am29k) basic_machine=a29k-none basic_os=bsd ;; amdahl) basic_machine=580-amdahl basic_os=sysv ;; amiga) basic_machine=m68k-unknown basic_os= ;; amigaos | amigados) basic_machine=m68k-unknown basic_os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown basic_os=sysv4 ;; apollo68) basic_machine=m68k-apollo basic_os=sysv ;; apollo68bsd) basic_machine=m68k-apollo basic_os=bsd ;; aros) basic_machine=i386-pc basic_os=aros ;; aux) basic_machine=m68k-apple basic_os=aux ;; balance) basic_machine=ns32k-sequent basic_os=dynix ;; blackfin) basic_machine=bfin-unknown basic_os=linux ;; cegcc) basic_machine=arm-unknown basic_os=cegcc ;; convex-c1) basic_machine=c1-convex basic_os=bsd ;; convex-c2) basic_machine=c2-convex basic_os=bsd ;; convex-c32) basic_machine=c32-convex basic_os=bsd ;; convex-c34) basic_machine=c34-convex basic_os=bsd ;; convex-c38) basic_machine=c38-convex basic_os=bsd ;; cray) basic_machine=j90-cray basic_os=unicos ;; crds | unos) basic_machine=m68k-crds basic_os= ;; da30) basic_machine=m68k-da30 basic_os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec basic_os= ;; delta88) basic_machine=m88k-motorola basic_os=sysv3 ;; dicos) basic_machine=i686-pc basic_os=dicos ;; djgpp) basic_machine=i586-pc basic_os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd basic_os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson basic_os=ose ;; gmicro) basic_machine=tron-gmicro basic_os=sysv ;; go32) basic_machine=i386-pc basic_os=go32 ;; h8300hms) basic_machine=h8300-hitachi basic_os=hms ;; h8300xray) basic_machine=h8300-hitachi basic_os=xray ;; h8500hms) basic_machine=h8500-hitachi basic_os=hms ;; harris) basic_machine=m88k-harris basic_os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp basic_os=hpux ;; hp300bsd) basic_machine=m68k-hp basic_os=bsd ;; hppaosf) basic_machine=hppa1.1-hp basic_os=osf ;; hppro) basic_machine=hppa1.1-hp basic_os=proelf ;; i386mach) basic_machine=i386-mach basic_os=mach ;; isi68 | isi) basic_machine=m68k-isi basic_os=sysv ;; m68knommu) basic_machine=m68k-unknown basic_os=linux ;; magnum | m3230) basic_machine=mips-mips basic_os=sysv ;; merlin) basic_machine=ns32k-utek basic_os=sysv ;; mingw64) basic_machine=x86_64-pc basic_os=mingw64 ;; mingw32) basic_machine=i686-pc basic_os=mingw32 ;; mingw32ce) basic_machine=arm-unknown basic_os=mingw32ce ;; monitor) basic_machine=m68k-rom68k basic_os=coff ;; morphos) basic_machine=powerpc-unknown basic_os=morphos ;; moxiebox) basic_machine=moxie-unknown basic_os=moxiebox ;; msdos) basic_machine=i386-pc basic_os=msdos ;; msys) basic_machine=i686-pc basic_os=msys ;; mvs) basic_machine=i370-ibm basic_os=mvs ;; nacl) basic_machine=le32-unknown basic_os=nacl ;; ncr3000) basic_machine=i486-ncr basic_os=sysv4 ;; netbsd386) basic_machine=i386-pc basic_os=netbsd ;; netwinder) basic_machine=armv4l-rebel basic_os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony basic_os=newsos ;; news1000) basic_machine=m68030-sony basic_os=newsos ;; necv70) basic_machine=v70-nec basic_os=sysv ;; nh3000) basic_machine=m68k-harris basic_os=cxux ;; nh[45]000) basic_machine=m88k-harris basic_os=cxux ;; nindy960) basic_machine=i960-intel basic_os=nindy ;; mon960) basic_machine=i960-intel basic_os=mon960 ;; nonstopux) basic_machine=mips-compaq basic_os=nonstopux ;; os400) basic_machine=powerpc-ibm basic_os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson basic_os=ose ;; os68k) basic_machine=m68k-none basic_os=os68k ;; paragon) basic_machine=i860-intel basic_os=osf ;; parisc) basic_machine=hppa-unknown basic_os=linux ;; psp) basic_machine=mipsallegrexel-sony basic_os=psp ;; pw32) basic_machine=i586-unknown basic_os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc basic_os=rdos ;; rdos32) basic_machine=i386-pc basic_os=rdos ;; rom68k) basic_machine=m68k-rom68k basic_os=coff ;; sa29200) basic_machine=a29k-amd basic_os=udi ;; sei) basic_machine=mips-sei basic_os=seiux ;; sequent) basic_machine=i386-sequent basic_os= ;; sps7) basic_machine=m68k-bull basic_os=sysv2 ;; st2000) basic_machine=m68k-tandem basic_os= ;; stratus) basic_machine=i860-stratus basic_os=sysv4 ;; sun2) basic_machine=m68000-sun basic_os= ;; sun2os3) basic_machine=m68000-sun basic_os=sunos3 ;; sun2os4) basic_machine=m68000-sun basic_os=sunos4 ;; sun3) basic_machine=m68k-sun basic_os= ;; sun3os3) basic_machine=m68k-sun basic_os=sunos3 ;; sun3os4) basic_machine=m68k-sun basic_os=sunos4 ;; sun4) basic_machine=sparc-sun basic_os= ;; sun4os3) basic_machine=sparc-sun basic_os=sunos3 ;; sun4os4) basic_machine=sparc-sun basic_os=sunos4 ;; sun4sol2) basic_machine=sparc-sun basic_os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun basic_os= ;; sv1) basic_machine=sv1-cray basic_os=unicos ;; symmetry) basic_machine=i386-sequent basic_os=dynix ;; t3e) basic_machine=alphaev5-cray basic_os=unicos ;; t90) basic_machine=t90-cray basic_os=unicos ;; toad1) basic_machine=pdp10-xkl basic_os=tops20 ;; tpf) basic_machine=s390x-ibm basic_os=tpf ;; udi29k) basic_machine=a29k-amd basic_os=udi ;; ultra3) basic_machine=a29k-nyu basic_os=sym1 ;; v810 | necv810) basic_machine=v810-nec basic_os=none ;; vaxv) basic_machine=vax-dec basic_os=sysv ;; vms) basic_machine=vax-dec basic_os=vms ;; vsta) basic_machine=i386-pc basic_os=vsta ;; vxworks960) basic_machine=i960-wrs basic_os=vxworks ;; vxworks68) basic_machine=m68k-wrs basic_os=vxworks ;; vxworks29k) basic_machine=a29k-wrs basic_os=vxworks ;; xbox) basic_machine=i686-pc basic_os=mingw32 ;; ymp) basic_machine=ymp-cray basic_os=unicos ;; *) basic_machine=$1 basic_os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm basic_os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec basic_os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec basic_os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) cpu=m68k vendor=motorola ;; dpx2*) cpu=m68k vendor=bull basic_os=sysv3 ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi basic_os=${basic_os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray basic_os=${basic_os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $basic_os in irix*) ;; *) basic_os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari basic_os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony basic_os=newsos ;; next | m*-next) cpu=m68k vendor=next case $basic_os in openstep*) ;; nextstep*) ;; ns2*) basic_os=nextstep2 ;; *) basic_os=nextstep3 ;; esac ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki basic_os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde basic_os=${basic_os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs basic_os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond basic_os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if test x$basic_os != x then # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. case $basic_os in gnu/linux*) kernel=linux os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` ;; os2-emx) kernel=os2 os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read kernel os <&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. case $kernel-$os in linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) ;; uclinux-uclibc* ) ;; managarm-mlibc* | managarm-kernel* ) ;; -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 exit 1 ;; -kernel* ) echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 exit 1 ;; *-kernel* ) echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 exit 1 ;; kfreebsd*-gnu* | kopensolaris*-gnu*) ;; vxworks-simlinux | vxworks-simwindows | vxworks-spe) ;; nto-qnx*) ;; os2-emx) ;; *-eabi* | *-gnueabi*) ;; -*) # Blank kernel with real OS is always fine. ;; *-*) echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 exit 1 ;; esac # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $cpu-$os in *-riscix*) vendor=acorn ;; *-sunos*) vendor=sun ;; *-cnk* | *-aix*) vendor=ibm ;; *-beos*) vendor=be ;; *-hpux*) vendor=hp ;; *-mpeix*) vendor=hp ;; *-hiux*) vendor=hitachi ;; *-unos*) vendor=crds ;; *-dgux*) vendor=dg ;; *-luna*) vendor=omron ;; *-genix*) vendor=ns ;; *-clix*) vendor=intergraph ;; *-mvs* | *-opened*) vendor=ibm ;; *-os400*) vendor=ibm ;; s390-* | s390x-*) vendor=ibm ;; *-ptx*) vendor=sequent ;; *-tpf*) vendor=ibm ;; *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; *-aux*) vendor=apple ;; *-hms*) vendor=hitachi ;; *-mpw* | *-macos*) vendor=apple ;; *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; *-vos*) vendor=stratus ;; esac ;; esac echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: recode-3.7.15/COPYING0000644000175000017500000010451313324403130007561 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 3 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, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . recode-3.7.15/Makefile.in0000644000175000017500000023346014766020637010621 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Main Makefile for Recode. # Copyright © 1992-2018 Free Software Foundation, Inc. # François Pinard , 1992. # 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 3, 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, see . VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ $(top_srcdir)/m4/__inline.m4 \ $(top_srcdir)/m4/absolute-header.m4 $(top_srcdir)/m4/alloca.m4 \ $(top_srcdir)/m4/assert_h.m4 \ $(top_srcdir)/m4/builtin-expect.m4 $(top_srcdir)/m4/c-bool.m4 \ $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \ $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/close.m4 \ $(top_srcdir)/m4/codeset.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/error_h.m4 \ $(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/exponentf.m4 \ $(top_srcdir)/m4/exponentl.m4 $(top_srcdir)/m4/extensions.m4 \ $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \ $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \ $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fpieee.m4 \ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/frexp.m4 \ $(top_srcdir)/m4/frexpl.m4 $(top_srcdir)/m4/fseterr.m4 \ $(top_srcdir)/m4/fstat.m4 $(top_srcdir)/m4/getdtablesize.m4 \ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getprogname.m4 \ $(top_srcdir)/m4/getrandom.m4 $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gnulib-common.m4 \ $(top_srcdir)/m4/gnulib-comp.m4 \ $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/include_next.m4 \ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ $(top_srcdir)/m4/isatty.m4 $(top_srcdir)/m4/isnand.m4 \ $(top_srcdir)/m4/isnanf.m4 $(top_srcdir)/m4/isnanl.m4 \ $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/ldexpl.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/localcharset.m4 \ $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \ $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/locale_h.m4 \ $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \ $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \ $(top_srcdir)/m4/math_h.m4 $(top_srcdir)/m4/mbrtowc.m4 \ $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \ $(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mkdir.m4 \ $(top_srcdir)/m4/mkstemps.m4 $(top_srcdir)/m4/mmap-anon.m4 \ $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \ $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \ $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open-cloexec.m4 \ $(top_srcdir)/m4/open-slash.m4 $(top_srcdir)/m4/open.m4 \ $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/pipe.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-frexp.m4 \ $(top_srcdir)/m4/printf-frexpl.m4 $(top_srcdir)/m4/printf.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/raise.m4 \ $(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/readlink.m4 \ $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/reallocarray.m4 \ $(top_srcdir)/m4/setlocale_null.m4 \ $(top_srcdir)/m4/sigaction.m4 $(top_srcdir)/m4/signal_h.m4 \ $(top_srcdir)/m4/signalblocking.m4 $(top_srcdir)/m4/signbit.m4 \ $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/ssize_t.m4 \ $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \ $(top_srcdir)/m4/stdalign.m4 $(top_srcdir)/m4/stddef_h.m4 \ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \ $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \ $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \ $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \ $(top_srcdir)/m4/sys_random_h.m4 \ $(top_srcdir)/m4/sys_socket_h.m4 \ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_types_h.m4 \ $(top_srcdir)/m4/sys_wait_h.m4 $(top_srcdir)/m4/tempname.m4 \ $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/utime.m4 \ $(top_srcdir)/m4/utime_h.m4 $(top_srcdir)/m4/vasnprintf.m4 \ $(top_srcdir)/m4/vasprintf.m4 \ $(top_srcdir)/m4/vfprintf-posix.m4 \ $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/m4/vprintf-posix.m4 \ $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \ $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \ $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wint_t.m4 \ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xsize.m4 \ $(top_srcdir)/m4/zzgnulib.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = build-aux/x-to-1 CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir distdir-am dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/build-aux/compile \ $(top_srcdir)/build-aux/config.guess \ $(top_srcdir)/build-aux/config.rpath \ $(top_srcdir)/build-aux/config.sub \ $(top_srcdir)/build-aux/install-sh \ $(top_srcdir)/build-aux/ltmain.sh \ $(top_srcdir)/build-aux/missing \ $(top_srcdir)/build-aux/x-to-1.in ABOUT-NLS AUTHORS COPYING \ ChangeLog INSTALL NEWS README THANKS TODO build-aux/compile \ build-aux/config.guess build-aux/config.rpath \ build-aux/config.sub build-aux/depcomp build-aux/install-sh \ build-aux/ltmain.sh build-aux/mdate-sh build-aux/missing \ build-aux/texinfo.tex DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ ALLOCA_H = @ALLOCA_H@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ ASSERT_H = @ASSERT_H@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CLOCK_TIME_LIB = @CLOCK_TIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CROSS_COMPILING = @CROSS_COMPILING@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ CYTHON = @CYTHON@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ ERROR_H = @ERROR_H@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ FLOAT_H = @FLOAT_H@ GETOPT_CDEFS_H = @GETOPT_CDEFS_H@ GETOPT_H = @GETOPT_H@ GETRANDOM_LIB = @GETRANDOM_LIB@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@ GL_CFLAG_GNULIB_WARNINGS = @GL_CFLAG_GNULIB_WARNINGS@ GL_GNULIB_ACCESS = @GL_GNULIB_ACCESS@ GL_GNULIB_ACOSF = @GL_GNULIB_ACOSF@ GL_GNULIB_ACOSL = @GL_GNULIB_ACOSL@ GL_GNULIB_ALIGNED_ALLOC = @GL_GNULIB_ALIGNED_ALLOC@ GL_GNULIB_ASINF = @GL_GNULIB_ASINF@ GL_GNULIB_ASINL = @GL_GNULIB_ASINL@ GL_GNULIB_ATAN2F = @GL_GNULIB_ATAN2F@ GL_GNULIB_ATANF = @GL_GNULIB_ATANF@ GL_GNULIB_ATANL = @GL_GNULIB_ATANL@ GL_GNULIB_ATOLL = @GL_GNULIB_ATOLL@ GL_GNULIB_BTOWC = @GL_GNULIB_BTOWC@ GL_GNULIB_CALLOC_GNU = @GL_GNULIB_CALLOC_GNU@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CBRT = @GL_GNULIB_CBRT@ GL_GNULIB_CBRTF = @GL_GNULIB_CBRTF@ GL_GNULIB_CBRTL = @GL_GNULIB_CBRTL@ GL_GNULIB_CEIL = @GL_GNULIB_CEIL@ GL_GNULIB_CEILF = @GL_GNULIB_CEILF@ GL_GNULIB_CEILL = @GL_GNULIB_CEILL@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_COPYSIGN = @GL_GNULIB_COPYSIGN@ GL_GNULIB_COPYSIGNF = @GL_GNULIB_COPYSIGNF@ GL_GNULIB_COPYSIGNL = @GL_GNULIB_COPYSIGNL@ GL_GNULIB_COPY_FILE_RANGE = @GL_GNULIB_COPY_FILE_RANGE@ GL_GNULIB_COSF = @GL_GNULIB_COSF@ GL_GNULIB_COSHF = @GL_GNULIB_COSHF@ GL_GNULIB_COSL = @GL_GNULIB_COSL@ GL_GNULIB_CREAT = @GL_GNULIB_CREAT@ GL_GNULIB_CTIME = @GL_GNULIB_CTIME@ GL_GNULIB_DPRINTF = @GL_GNULIB_DPRINTF@ GL_GNULIB_DUP = @GL_GNULIB_DUP@ GL_GNULIB_DUP2 = @GL_GNULIB_DUP2@ GL_GNULIB_DUP3 = @GL_GNULIB_DUP3@ GL_GNULIB_DUPLOCALE = @GL_GNULIB_DUPLOCALE@ GL_GNULIB_ENVIRON = @GL_GNULIB_ENVIRON@ GL_GNULIB_EUIDACCESS = @GL_GNULIB_EUIDACCESS@ GL_GNULIB_EXECL = @GL_GNULIB_EXECL@ GL_GNULIB_EXECLE = @GL_GNULIB_EXECLE@ GL_GNULIB_EXECLP = @GL_GNULIB_EXECLP@ GL_GNULIB_EXECV = @GL_GNULIB_EXECV@ GL_GNULIB_EXECVE = @GL_GNULIB_EXECVE@ GL_GNULIB_EXECVP = @GL_GNULIB_EXECVP@ GL_GNULIB_EXECVPE = @GL_GNULIB_EXECVPE@ GL_GNULIB_EXP2 = @GL_GNULIB_EXP2@ GL_GNULIB_EXP2F = @GL_GNULIB_EXP2F@ GL_GNULIB_EXP2L = @GL_GNULIB_EXP2L@ GL_GNULIB_EXPF = @GL_GNULIB_EXPF@ GL_GNULIB_EXPL = @GL_GNULIB_EXPL@ GL_GNULIB_EXPLICIT_BZERO = @GL_GNULIB_EXPLICIT_BZERO@ GL_GNULIB_EXPM1 = @GL_GNULIB_EXPM1@ GL_GNULIB_EXPM1F = @GL_GNULIB_EXPM1F@ GL_GNULIB_EXPM1L = @GL_GNULIB_EXPM1L@ GL_GNULIB_FABSF = @GL_GNULIB_FABSF@ GL_GNULIB_FABSL = @GL_GNULIB_FABSL@ GL_GNULIB_FACCESSAT = @GL_GNULIB_FACCESSAT@ GL_GNULIB_FCHDIR = @GL_GNULIB_FCHDIR@ GL_GNULIB_FCHMODAT = @GL_GNULIB_FCHMODAT@ GL_GNULIB_FCHOWNAT = @GL_GNULIB_FCHOWNAT@ GL_GNULIB_FCLOSE = @GL_GNULIB_FCLOSE@ GL_GNULIB_FCNTL = @GL_GNULIB_FCNTL@ GL_GNULIB_FDATASYNC = @GL_GNULIB_FDATASYNC@ GL_GNULIB_FDOPEN = @GL_GNULIB_FDOPEN@ GL_GNULIB_FFLUSH = @GL_GNULIB_FFLUSH@ GL_GNULIB_FFSL = @GL_GNULIB_FFSL@ GL_GNULIB_FFSLL = @GL_GNULIB_FFSLL@ GL_GNULIB_FGETC = @GL_GNULIB_FGETC@ GL_GNULIB_FGETS = @GL_GNULIB_FGETS@ GL_GNULIB_FLOOR = @GL_GNULIB_FLOOR@ GL_GNULIB_FLOORF = @GL_GNULIB_FLOORF@ GL_GNULIB_FLOORL = @GL_GNULIB_FLOORL@ GL_GNULIB_FMA = @GL_GNULIB_FMA@ GL_GNULIB_FMAF = @GL_GNULIB_FMAF@ GL_GNULIB_FMAL = @GL_GNULIB_FMAL@ GL_GNULIB_FMOD = @GL_GNULIB_FMOD@ GL_GNULIB_FMODF = @GL_GNULIB_FMODF@ GL_GNULIB_FMODL = @GL_GNULIB_FMODL@ GL_GNULIB_FOPEN = @GL_GNULIB_FOPEN@ GL_GNULIB_FOPEN_GNU = @GL_GNULIB_FOPEN_GNU@ GL_GNULIB_FPRINTF = @GL_GNULIB_FPRINTF@ GL_GNULIB_FPRINTF_POSIX = @GL_GNULIB_FPRINTF_POSIX@ GL_GNULIB_FPURGE = @GL_GNULIB_FPURGE@ GL_GNULIB_FPUTC = @GL_GNULIB_FPUTC@ GL_GNULIB_FPUTS = @GL_GNULIB_FPUTS@ GL_GNULIB_FREAD = @GL_GNULIB_FREAD@ GL_GNULIB_FREE_POSIX = @GL_GNULIB_FREE_POSIX@ GL_GNULIB_FREOPEN = @GL_GNULIB_FREOPEN@ GL_GNULIB_FREXP = @GL_GNULIB_FREXP@ GL_GNULIB_FREXPF = @GL_GNULIB_FREXPF@ GL_GNULIB_FREXPL = @GL_GNULIB_FREXPL@ GL_GNULIB_FSCANF = @GL_GNULIB_FSCANF@ GL_GNULIB_FSEEK = @GL_GNULIB_FSEEK@ GL_GNULIB_FSEEKO = @GL_GNULIB_FSEEKO@ GL_GNULIB_FSTAT = @GL_GNULIB_FSTAT@ GL_GNULIB_FSTATAT = @GL_GNULIB_FSTATAT@ GL_GNULIB_FSYNC = @GL_GNULIB_FSYNC@ GL_GNULIB_FTELL = @GL_GNULIB_FTELL@ GL_GNULIB_FTELLO = @GL_GNULIB_FTELLO@ GL_GNULIB_FTRUNCATE = @GL_GNULIB_FTRUNCATE@ GL_GNULIB_FUTIMENS = @GL_GNULIB_FUTIMENS@ GL_GNULIB_FWRITE = @GL_GNULIB_FWRITE@ GL_GNULIB_GETC = @GL_GNULIB_GETC@ GL_GNULIB_GETCHAR = @GL_GNULIB_GETCHAR@ GL_GNULIB_GETCWD = @GL_GNULIB_GETCWD@ GL_GNULIB_GETDELIM = @GL_GNULIB_GETDELIM@ GL_GNULIB_GETDOMAINNAME = @GL_GNULIB_GETDOMAINNAME@ GL_GNULIB_GETDTABLESIZE = @GL_GNULIB_GETDTABLESIZE@ GL_GNULIB_GETENTROPY = @GL_GNULIB_GETENTROPY@ GL_GNULIB_GETGROUPS = @GL_GNULIB_GETGROUPS@ GL_GNULIB_GETHOSTNAME = @GL_GNULIB_GETHOSTNAME@ GL_GNULIB_GETLINE = @GL_GNULIB_GETLINE@ GL_GNULIB_GETLOADAVG = @GL_GNULIB_GETLOADAVG@ GL_GNULIB_GETLOGIN = @GL_GNULIB_GETLOGIN@ GL_GNULIB_GETLOGIN_R = @GL_GNULIB_GETLOGIN_R@ GL_GNULIB_GETOPT_POSIX = @GL_GNULIB_GETOPT_POSIX@ GL_GNULIB_GETPAGESIZE = @GL_GNULIB_GETPAGESIZE@ GL_GNULIB_GETPASS = @GL_GNULIB_GETPASS@ GL_GNULIB_GETPASS_GNU = @GL_GNULIB_GETPASS_GNU@ GL_GNULIB_GETPROGNAME = @GL_GNULIB_GETPROGNAME@ GL_GNULIB_GETRANDOM = @GL_GNULIB_GETRANDOM@ GL_GNULIB_GETSUBOPT = @GL_GNULIB_GETSUBOPT@ GL_GNULIB_GETUMASK = @GL_GNULIB_GETUMASK@ GL_GNULIB_GETUSERSHELL = @GL_GNULIB_GETUSERSHELL@ GL_GNULIB_GRANTPT = @GL_GNULIB_GRANTPT@ GL_GNULIB_GROUP_MEMBER = @GL_GNULIB_GROUP_MEMBER@ GL_GNULIB_HYPOT = @GL_GNULIB_HYPOT@ GL_GNULIB_HYPOTF = @GL_GNULIB_HYPOTF@ GL_GNULIB_HYPOTL = @GL_GNULIB_HYPOTL@ GL_GNULIB_ILOGB = @GL_GNULIB_ILOGB@ GL_GNULIB_ILOGBF = @GL_GNULIB_ILOGBF@ GL_GNULIB_ILOGBL = @GL_GNULIB_ILOGBL@ GL_GNULIB_IMAXABS = @GL_GNULIB_IMAXABS@ GL_GNULIB_IMAXDIV = @GL_GNULIB_IMAXDIV@ GL_GNULIB_ISATTY = @GL_GNULIB_ISATTY@ GL_GNULIB_ISFINITE = @GL_GNULIB_ISFINITE@ GL_GNULIB_ISINF = @GL_GNULIB_ISINF@ GL_GNULIB_ISNAN = @GL_GNULIB_ISNAN@ GL_GNULIB_ISNAND = @GL_GNULIB_ISNAND@ GL_GNULIB_ISNANF = @GL_GNULIB_ISNANF@ GL_GNULIB_ISNANL = @GL_GNULIB_ISNANL@ GL_GNULIB_ISWBLANK = @GL_GNULIB_ISWBLANK@ GL_GNULIB_ISWCTYPE = @GL_GNULIB_ISWCTYPE@ GL_GNULIB_ISWDIGIT = @GL_GNULIB_ISWDIGIT@ GL_GNULIB_ISWXDIGIT = @GL_GNULIB_ISWXDIGIT@ GL_GNULIB_LCHMOD = @GL_GNULIB_LCHMOD@ GL_GNULIB_LCHOWN = @GL_GNULIB_LCHOWN@ GL_GNULIB_LDEXPF = @GL_GNULIB_LDEXPF@ GL_GNULIB_LDEXPL = @GL_GNULIB_LDEXPL@ GL_GNULIB_LINK = @GL_GNULIB_LINK@ GL_GNULIB_LINKAT = @GL_GNULIB_LINKAT@ GL_GNULIB_LOCALECONV = @GL_GNULIB_LOCALECONV@ GL_GNULIB_LOCALENAME = @GL_GNULIB_LOCALENAME@ GL_GNULIB_LOCALTIME = @GL_GNULIB_LOCALTIME@ GL_GNULIB_LOG = @GL_GNULIB_LOG@ GL_GNULIB_LOG10 = @GL_GNULIB_LOG10@ GL_GNULIB_LOG10F = @GL_GNULIB_LOG10F@ GL_GNULIB_LOG10L = @GL_GNULIB_LOG10L@ GL_GNULIB_LOG1P = @GL_GNULIB_LOG1P@ GL_GNULIB_LOG1PF = @GL_GNULIB_LOG1PF@ GL_GNULIB_LOG1PL = @GL_GNULIB_LOG1PL@ GL_GNULIB_LOG2 = @GL_GNULIB_LOG2@ GL_GNULIB_LOG2F = @GL_GNULIB_LOG2F@ GL_GNULIB_LOG2L = @GL_GNULIB_LOG2L@ GL_GNULIB_LOGB = @GL_GNULIB_LOGB@ GL_GNULIB_LOGBF = @GL_GNULIB_LOGBF@ GL_GNULIB_LOGBL = @GL_GNULIB_LOGBL@ GL_GNULIB_LOGF = @GL_GNULIB_LOGF@ GL_GNULIB_LOGL = @GL_GNULIB_LOGL@ GL_GNULIB_LSEEK = @GL_GNULIB_LSEEK@ GL_GNULIB_LSTAT = @GL_GNULIB_LSTAT@ GL_GNULIB_MALLOC_GNU = @GL_GNULIB_MALLOC_GNU@ GL_GNULIB_MALLOC_POSIX = @GL_GNULIB_MALLOC_POSIX@ GL_GNULIB_MBRLEN = @GL_GNULIB_MBRLEN@ GL_GNULIB_MBRTOWC = @GL_GNULIB_MBRTOWC@ GL_GNULIB_MBSCASECMP = @GL_GNULIB_MBSCASECMP@ GL_GNULIB_MBSCASESTR = @GL_GNULIB_MBSCASESTR@ GL_GNULIB_MBSCHR = @GL_GNULIB_MBSCHR@ GL_GNULIB_MBSCSPN = @GL_GNULIB_MBSCSPN@ GL_GNULIB_MBSINIT = @GL_GNULIB_MBSINIT@ GL_GNULIB_MBSLEN = @GL_GNULIB_MBSLEN@ GL_GNULIB_MBSNCASECMP = @GL_GNULIB_MBSNCASECMP@ GL_GNULIB_MBSNLEN = @GL_GNULIB_MBSNLEN@ GL_GNULIB_MBSNRTOWCS = @GL_GNULIB_MBSNRTOWCS@ GL_GNULIB_MBSPBRK = @GL_GNULIB_MBSPBRK@ GL_GNULIB_MBSPCASECMP = @GL_GNULIB_MBSPCASECMP@ GL_GNULIB_MBSRCHR = @GL_GNULIB_MBSRCHR@ GL_GNULIB_MBSRTOWCS = @GL_GNULIB_MBSRTOWCS@ GL_GNULIB_MBSSEP = @GL_GNULIB_MBSSEP@ GL_GNULIB_MBSSPN = @GL_GNULIB_MBSSPN@ GL_GNULIB_MBSSTR = @GL_GNULIB_MBSSTR@ GL_GNULIB_MBSTOK_R = @GL_GNULIB_MBSTOK_R@ GL_GNULIB_MBTOWC = @GL_GNULIB_MBTOWC@ GL_GNULIB_MDA_ACCESS = @GL_GNULIB_MDA_ACCESS@ GL_GNULIB_MDA_CHDIR = @GL_GNULIB_MDA_CHDIR@ GL_GNULIB_MDA_CHMOD = @GL_GNULIB_MDA_CHMOD@ GL_GNULIB_MDA_CLOSE = @GL_GNULIB_MDA_CLOSE@ GL_GNULIB_MDA_CREAT = @GL_GNULIB_MDA_CREAT@ GL_GNULIB_MDA_DUP = @GL_GNULIB_MDA_DUP@ GL_GNULIB_MDA_DUP2 = @GL_GNULIB_MDA_DUP2@ GL_GNULIB_MDA_ECVT = @GL_GNULIB_MDA_ECVT@ GL_GNULIB_MDA_EXECL = @GL_GNULIB_MDA_EXECL@ GL_GNULIB_MDA_EXECLE = @GL_GNULIB_MDA_EXECLE@ GL_GNULIB_MDA_EXECLP = @GL_GNULIB_MDA_EXECLP@ GL_GNULIB_MDA_EXECV = @GL_GNULIB_MDA_EXECV@ GL_GNULIB_MDA_EXECVE = @GL_GNULIB_MDA_EXECVE@ GL_GNULIB_MDA_EXECVP = @GL_GNULIB_MDA_EXECVP@ GL_GNULIB_MDA_EXECVPE = @GL_GNULIB_MDA_EXECVPE@ GL_GNULIB_MDA_FCLOSEALL = @GL_GNULIB_MDA_FCLOSEALL@ GL_GNULIB_MDA_FCVT = @GL_GNULIB_MDA_FCVT@ GL_GNULIB_MDA_FDOPEN = @GL_GNULIB_MDA_FDOPEN@ GL_GNULIB_MDA_FILENO = @GL_GNULIB_MDA_FILENO@ GL_GNULIB_MDA_GCVT = @GL_GNULIB_MDA_GCVT@ GL_GNULIB_MDA_GETCWD = @GL_GNULIB_MDA_GETCWD@ GL_GNULIB_MDA_GETPID = @GL_GNULIB_MDA_GETPID@ GL_GNULIB_MDA_GETW = @GL_GNULIB_MDA_GETW@ GL_GNULIB_MDA_ISATTY = @GL_GNULIB_MDA_ISATTY@ GL_GNULIB_MDA_J0 = @GL_GNULIB_MDA_J0@ GL_GNULIB_MDA_J1 = @GL_GNULIB_MDA_J1@ GL_GNULIB_MDA_JN = @GL_GNULIB_MDA_JN@ GL_GNULIB_MDA_LSEEK = @GL_GNULIB_MDA_LSEEK@ GL_GNULIB_MDA_MEMCCPY = @GL_GNULIB_MDA_MEMCCPY@ GL_GNULIB_MDA_MKDIR = @GL_GNULIB_MDA_MKDIR@ GL_GNULIB_MDA_MKTEMP = @GL_GNULIB_MDA_MKTEMP@ GL_GNULIB_MDA_OPEN = @GL_GNULIB_MDA_OPEN@ GL_GNULIB_MDA_PUTENV = @GL_GNULIB_MDA_PUTENV@ GL_GNULIB_MDA_PUTW = @GL_GNULIB_MDA_PUTW@ GL_GNULIB_MDA_READ = @GL_GNULIB_MDA_READ@ GL_GNULIB_MDA_RMDIR = @GL_GNULIB_MDA_RMDIR@ GL_GNULIB_MDA_STRDUP = @GL_GNULIB_MDA_STRDUP@ GL_GNULIB_MDA_SWAB = @GL_GNULIB_MDA_SWAB@ GL_GNULIB_MDA_TEMPNAM = @GL_GNULIB_MDA_TEMPNAM@ GL_GNULIB_MDA_TZSET = @GL_GNULIB_MDA_TZSET@ GL_GNULIB_MDA_UMASK = @GL_GNULIB_MDA_UMASK@ GL_GNULIB_MDA_UNLINK = @GL_GNULIB_MDA_UNLINK@ GL_GNULIB_MDA_UTIME = @GL_GNULIB_MDA_UTIME@ GL_GNULIB_MDA_WCSDUP = @GL_GNULIB_MDA_WCSDUP@ GL_GNULIB_MDA_WRITE = @GL_GNULIB_MDA_WRITE@ GL_GNULIB_MDA_Y0 = @GL_GNULIB_MDA_Y0@ GL_GNULIB_MDA_Y1 = @GL_GNULIB_MDA_Y1@ GL_GNULIB_MDA_YN = @GL_GNULIB_MDA_YN@ GL_GNULIB_MEMCHR = @GL_GNULIB_MEMCHR@ GL_GNULIB_MEMMEM = @GL_GNULIB_MEMMEM@ GL_GNULIB_MEMPCPY = @GL_GNULIB_MEMPCPY@ GL_GNULIB_MEMRCHR = @GL_GNULIB_MEMRCHR@ GL_GNULIB_MEMSET_EXPLICIT = @GL_GNULIB_MEMSET_EXPLICIT@ GL_GNULIB_MKDIR = @GL_GNULIB_MKDIR@ GL_GNULIB_MKDIRAT = @GL_GNULIB_MKDIRAT@ GL_GNULIB_MKDTEMP = @GL_GNULIB_MKDTEMP@ GL_GNULIB_MKFIFO = @GL_GNULIB_MKFIFO@ GL_GNULIB_MKFIFOAT = @GL_GNULIB_MKFIFOAT@ GL_GNULIB_MKNOD = @GL_GNULIB_MKNOD@ GL_GNULIB_MKNODAT = @GL_GNULIB_MKNODAT@ GL_GNULIB_MKOSTEMP = @GL_GNULIB_MKOSTEMP@ GL_GNULIB_MKOSTEMPS = @GL_GNULIB_MKOSTEMPS@ GL_GNULIB_MKSTEMP = @GL_GNULIB_MKSTEMP@ GL_GNULIB_MKSTEMPS = @GL_GNULIB_MKSTEMPS@ GL_GNULIB_MKTIME = @GL_GNULIB_MKTIME@ GL_GNULIB_MODF = @GL_GNULIB_MODF@ GL_GNULIB_MODFF = @GL_GNULIB_MODFF@ GL_GNULIB_MODFL = @GL_GNULIB_MODFL@ GL_GNULIB_NANOSLEEP = @GL_GNULIB_NANOSLEEP@ GL_GNULIB_NONBLOCKING = @GL_GNULIB_NONBLOCKING@ GL_GNULIB_OBSTACK_PRINTF = @GL_GNULIB_OBSTACK_PRINTF@ GL_GNULIB_OBSTACK_PRINTF_POSIX = @GL_GNULIB_OBSTACK_PRINTF_POSIX@ GL_GNULIB_OPEN = @GL_GNULIB_OPEN@ GL_GNULIB_OPENAT = @GL_GNULIB_OPENAT@ GL_GNULIB_OVERRIDES_STRUCT_STAT = @GL_GNULIB_OVERRIDES_STRUCT_STAT@ GL_GNULIB_PCLOSE = @GL_GNULIB_PCLOSE@ GL_GNULIB_PERROR = @GL_GNULIB_PERROR@ GL_GNULIB_PIPE = @GL_GNULIB_PIPE@ GL_GNULIB_PIPE2 = @GL_GNULIB_PIPE2@ GL_GNULIB_POPEN = @GL_GNULIB_POPEN@ GL_GNULIB_POSIX_MEMALIGN = @GL_GNULIB_POSIX_MEMALIGN@ GL_GNULIB_POSIX_OPENPT = @GL_GNULIB_POSIX_OPENPT@ GL_GNULIB_POWF = @GL_GNULIB_POWF@ GL_GNULIB_PREAD = @GL_GNULIB_PREAD@ GL_GNULIB_PRINTF = @GL_GNULIB_PRINTF@ GL_GNULIB_PRINTF_POSIX = @GL_GNULIB_PRINTF_POSIX@ GL_GNULIB_PTHREAD_SIGMASK = @GL_GNULIB_PTHREAD_SIGMASK@ GL_GNULIB_PTSNAME = @GL_GNULIB_PTSNAME@ GL_GNULIB_PTSNAME_R = @GL_GNULIB_PTSNAME_R@ GL_GNULIB_PUTC = @GL_GNULIB_PUTC@ GL_GNULIB_PUTCHAR = @GL_GNULIB_PUTCHAR@ GL_GNULIB_PUTENV = @GL_GNULIB_PUTENV@ GL_GNULIB_PUTS = @GL_GNULIB_PUTS@ GL_GNULIB_PWRITE = @GL_GNULIB_PWRITE@ GL_GNULIB_QSORT_R = @GL_GNULIB_QSORT_R@ GL_GNULIB_RAISE = @GL_GNULIB_RAISE@ GL_GNULIB_RANDOM = @GL_GNULIB_RANDOM@ GL_GNULIB_RANDOM_R = @GL_GNULIB_RANDOM_R@ GL_GNULIB_RAWMEMCHR = @GL_GNULIB_RAWMEMCHR@ GL_GNULIB_READ = @GL_GNULIB_READ@ GL_GNULIB_READLINK = @GL_GNULIB_READLINK@ GL_GNULIB_READLINKAT = @GL_GNULIB_READLINKAT@ GL_GNULIB_REALLOCARRAY = @GL_GNULIB_REALLOCARRAY@ GL_GNULIB_REALLOC_GNU = @GL_GNULIB_REALLOC_GNU@ GL_GNULIB_REALLOC_POSIX = @GL_GNULIB_REALLOC_POSIX@ GL_GNULIB_REALPATH = @GL_GNULIB_REALPATH@ GL_GNULIB_REMAINDER = @GL_GNULIB_REMAINDER@ GL_GNULIB_REMAINDERF = @GL_GNULIB_REMAINDERF@ GL_GNULIB_REMAINDERL = @GL_GNULIB_REMAINDERL@ GL_GNULIB_REMOVE = @GL_GNULIB_REMOVE@ GL_GNULIB_RENAME = @GL_GNULIB_RENAME@ GL_GNULIB_RENAMEAT = @GL_GNULIB_RENAMEAT@ GL_GNULIB_RINT = @GL_GNULIB_RINT@ GL_GNULIB_RINTF = @GL_GNULIB_RINTF@ GL_GNULIB_RINTL = @GL_GNULIB_RINTL@ GL_GNULIB_RMDIR = @GL_GNULIB_RMDIR@ GL_GNULIB_ROUND = @GL_GNULIB_ROUND@ GL_GNULIB_ROUNDF = @GL_GNULIB_ROUNDF@ GL_GNULIB_ROUNDL = @GL_GNULIB_ROUNDL@ GL_GNULIB_RPMATCH = @GL_GNULIB_RPMATCH@ GL_GNULIB_SCANF = @GL_GNULIB_SCANF@ GL_GNULIB_SECURE_GETENV = @GL_GNULIB_SECURE_GETENV@ GL_GNULIB_SETENV = @GL_GNULIB_SETENV@ GL_GNULIB_SETHOSTNAME = @GL_GNULIB_SETHOSTNAME@ GL_GNULIB_SETLOCALE = @GL_GNULIB_SETLOCALE@ GL_GNULIB_SETLOCALE_NULL = @GL_GNULIB_SETLOCALE_NULL@ GL_GNULIB_SIGABBREV_NP = @GL_GNULIB_SIGABBREV_NP@ GL_GNULIB_SIGACTION = @GL_GNULIB_SIGACTION@ GL_GNULIB_SIGDESCR_NP = @GL_GNULIB_SIGDESCR_NP@ GL_GNULIB_SIGNAL_H_SIGPIPE = @GL_GNULIB_SIGNAL_H_SIGPIPE@ GL_GNULIB_SIGNBIT = @GL_GNULIB_SIGNBIT@ GL_GNULIB_SIGPROCMASK = @GL_GNULIB_SIGPROCMASK@ GL_GNULIB_SINF = @GL_GNULIB_SINF@ GL_GNULIB_SINHF = @GL_GNULIB_SINHF@ GL_GNULIB_SINL = @GL_GNULIB_SINL@ GL_GNULIB_SLEEP = @GL_GNULIB_SLEEP@ GL_GNULIB_SNPRINTF = @GL_GNULIB_SNPRINTF@ GL_GNULIB_SPRINTF_POSIX = @GL_GNULIB_SPRINTF_POSIX@ GL_GNULIB_SQRTF = @GL_GNULIB_SQRTF@ GL_GNULIB_SQRTL = @GL_GNULIB_SQRTL@ GL_GNULIB_STAT = @GL_GNULIB_STAT@ GL_GNULIB_STDIO_H_NONBLOCKING = @GL_GNULIB_STDIO_H_NONBLOCKING@ GL_GNULIB_STDIO_H_SIGPIPE = @GL_GNULIB_STDIO_H_SIGPIPE@ GL_GNULIB_STPCPY = @GL_GNULIB_STPCPY@ GL_GNULIB_STPNCPY = @GL_GNULIB_STPNCPY@ GL_GNULIB_STRCASESTR = @GL_GNULIB_STRCASESTR@ GL_GNULIB_STRCHRNUL = @GL_GNULIB_STRCHRNUL@ GL_GNULIB_STRDUP = @GL_GNULIB_STRDUP@ GL_GNULIB_STRERROR = @GL_GNULIB_STRERROR@ GL_GNULIB_STRERRORNAME_NP = @GL_GNULIB_STRERRORNAME_NP@ GL_GNULIB_STRERROR_R = @GL_GNULIB_STRERROR_R@ GL_GNULIB_STRFTIME = @GL_GNULIB_STRFTIME@ GL_GNULIB_STRNCAT = @GL_GNULIB_STRNCAT@ GL_GNULIB_STRNDUP = @GL_GNULIB_STRNDUP@ GL_GNULIB_STRNLEN = @GL_GNULIB_STRNLEN@ GL_GNULIB_STRPBRK = @GL_GNULIB_STRPBRK@ GL_GNULIB_STRPTIME = @GL_GNULIB_STRPTIME@ GL_GNULIB_STRSEP = @GL_GNULIB_STRSEP@ GL_GNULIB_STRSIGNAL = @GL_GNULIB_STRSIGNAL@ GL_GNULIB_STRSTR = @GL_GNULIB_STRSTR@ GL_GNULIB_STRTOD = @GL_GNULIB_STRTOD@ GL_GNULIB_STRTOIMAX = @GL_GNULIB_STRTOIMAX@ GL_GNULIB_STRTOK_R = @GL_GNULIB_STRTOK_R@ GL_GNULIB_STRTOL = @GL_GNULIB_STRTOL@ GL_GNULIB_STRTOLD = @GL_GNULIB_STRTOLD@ GL_GNULIB_STRTOLL = @GL_GNULIB_STRTOLL@ GL_GNULIB_STRTOUL = @GL_GNULIB_STRTOUL@ GL_GNULIB_STRTOULL = @GL_GNULIB_STRTOULL@ GL_GNULIB_STRTOUMAX = @GL_GNULIB_STRTOUMAX@ GL_GNULIB_STRVERSCMP = @GL_GNULIB_STRVERSCMP@ GL_GNULIB_SYMLINK = @GL_GNULIB_SYMLINK@ GL_GNULIB_SYMLINKAT = @GL_GNULIB_SYMLINKAT@ GL_GNULIB_SYSTEM_POSIX = @GL_GNULIB_SYSTEM_POSIX@ GL_GNULIB_TANF = @GL_GNULIB_TANF@ GL_GNULIB_TANHF = @GL_GNULIB_TANHF@ GL_GNULIB_TANL = @GL_GNULIB_TANL@ GL_GNULIB_TIMEGM = @GL_GNULIB_TIMEGM@ GL_GNULIB_TIMESPEC_GET = @GL_GNULIB_TIMESPEC_GET@ GL_GNULIB_TIMESPEC_GETRES = @GL_GNULIB_TIMESPEC_GETRES@ GL_GNULIB_TIME_R = @GL_GNULIB_TIME_R@ GL_GNULIB_TIME_RZ = @GL_GNULIB_TIME_RZ@ GL_GNULIB_TMPFILE = @GL_GNULIB_TMPFILE@ GL_GNULIB_TOWCTRANS = @GL_GNULIB_TOWCTRANS@ GL_GNULIB_TRUNC = @GL_GNULIB_TRUNC@ GL_GNULIB_TRUNCATE = @GL_GNULIB_TRUNCATE@ GL_GNULIB_TRUNCF = @GL_GNULIB_TRUNCF@ GL_GNULIB_TRUNCL = @GL_GNULIB_TRUNCL@ GL_GNULIB_TTYNAME_R = @GL_GNULIB_TTYNAME_R@ GL_GNULIB_TZSET = @GL_GNULIB_TZSET@ GL_GNULIB_UNISTD_H_GETOPT = @GL_GNULIB_UNISTD_H_GETOPT@ GL_GNULIB_UNISTD_H_NONBLOCKING = @GL_GNULIB_UNISTD_H_NONBLOCKING@ GL_GNULIB_UNISTD_H_SIGPIPE = @GL_GNULIB_UNISTD_H_SIGPIPE@ GL_GNULIB_UNLINK = @GL_GNULIB_UNLINK@ GL_GNULIB_UNLINKAT = @GL_GNULIB_UNLINKAT@ GL_GNULIB_UNLOCKPT = @GL_GNULIB_UNLOCKPT@ GL_GNULIB_UNSETENV = @GL_GNULIB_UNSETENV@ GL_GNULIB_USLEEP = @GL_GNULIB_USLEEP@ GL_GNULIB_UTIME = @GL_GNULIB_UTIME@ GL_GNULIB_UTIMENSAT = @GL_GNULIB_UTIMENSAT@ GL_GNULIB_VASPRINTF = @GL_GNULIB_VASPRINTF@ GL_GNULIB_VDPRINTF = @GL_GNULIB_VDPRINTF@ GL_GNULIB_VFPRINTF = @GL_GNULIB_VFPRINTF@ GL_GNULIB_VFPRINTF_POSIX = @GL_GNULIB_VFPRINTF_POSIX@ GL_GNULIB_VFSCANF = @GL_GNULIB_VFSCANF@ GL_GNULIB_VPRINTF = @GL_GNULIB_VPRINTF@ GL_GNULIB_VPRINTF_POSIX = @GL_GNULIB_VPRINTF_POSIX@ GL_GNULIB_VSCANF = @GL_GNULIB_VSCANF@ GL_GNULIB_VSNPRINTF = @GL_GNULIB_VSNPRINTF@ GL_GNULIB_VSPRINTF_POSIX = @GL_GNULIB_VSPRINTF_POSIX@ GL_GNULIB_WAITPID = @GL_GNULIB_WAITPID@ GL_GNULIB_WCPCPY = @GL_GNULIB_WCPCPY@ GL_GNULIB_WCPNCPY = @GL_GNULIB_WCPNCPY@ GL_GNULIB_WCRTOMB = @GL_GNULIB_WCRTOMB@ GL_GNULIB_WCSCASECMP = @GL_GNULIB_WCSCASECMP@ GL_GNULIB_WCSCAT = @GL_GNULIB_WCSCAT@ GL_GNULIB_WCSCHR = @GL_GNULIB_WCSCHR@ GL_GNULIB_WCSCMP = @GL_GNULIB_WCSCMP@ GL_GNULIB_WCSCOLL = @GL_GNULIB_WCSCOLL@ GL_GNULIB_WCSCPY = @GL_GNULIB_WCSCPY@ GL_GNULIB_WCSCSPN = @GL_GNULIB_WCSCSPN@ GL_GNULIB_WCSDUP = @GL_GNULIB_WCSDUP@ GL_GNULIB_WCSFTIME = @GL_GNULIB_WCSFTIME@ GL_GNULIB_WCSLEN = @GL_GNULIB_WCSLEN@ GL_GNULIB_WCSNCASECMP = @GL_GNULIB_WCSNCASECMP@ GL_GNULIB_WCSNCAT = @GL_GNULIB_WCSNCAT@ GL_GNULIB_WCSNCMP = @GL_GNULIB_WCSNCMP@ GL_GNULIB_WCSNCPY = @GL_GNULIB_WCSNCPY@ GL_GNULIB_WCSNLEN = @GL_GNULIB_WCSNLEN@ GL_GNULIB_WCSNRTOMBS = @GL_GNULIB_WCSNRTOMBS@ GL_GNULIB_WCSPBRK = @GL_GNULIB_WCSPBRK@ GL_GNULIB_WCSRCHR = @GL_GNULIB_WCSRCHR@ GL_GNULIB_WCSRTOMBS = @GL_GNULIB_WCSRTOMBS@ GL_GNULIB_WCSSPN = @GL_GNULIB_WCSSPN@ GL_GNULIB_WCSSTR = @GL_GNULIB_WCSSTR@ GL_GNULIB_WCSTOK = @GL_GNULIB_WCSTOK@ GL_GNULIB_WCSWIDTH = @GL_GNULIB_WCSWIDTH@ GL_GNULIB_WCSXFRM = @GL_GNULIB_WCSXFRM@ GL_GNULIB_WCTOB = @GL_GNULIB_WCTOB@ GL_GNULIB_WCTOMB = @GL_GNULIB_WCTOMB@ GL_GNULIB_WCTRANS = @GL_GNULIB_WCTRANS@ GL_GNULIB_WCTYPE = @GL_GNULIB_WCTYPE@ GL_GNULIB_WCWIDTH = @GL_GNULIB_WCWIDTH@ GL_GNULIB_WMEMCHR = @GL_GNULIB_WMEMCHR@ GL_GNULIB_WMEMCMP = @GL_GNULIB_WMEMCMP@ GL_GNULIB_WMEMCPY = @GL_GNULIB_WMEMCPY@ GL_GNULIB_WMEMMOVE = @GL_GNULIB_WMEMMOVE@ GL_GNULIB_WMEMPCPY = @GL_GNULIB_WMEMPCPY@ GL_GNULIB_WMEMSET = @GL_GNULIB_WMEMSET@ GL_GNULIB_WRITE = @GL_GNULIB_WRITE@ GL_GNULIB__EXIT = @GL_GNULIB__EXIT@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNULIBHEADERS_OVERRIDE_WINT_T = @GNULIBHEADERS_OVERRIDE_WINT_T@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GREP = @GREP@ HARD_LOCALE_LIB = @HARD_LOCALE_LIB@ HAVE_ACOSF = @HAVE_ACOSF@ HAVE_ACOSL = @HAVE_ACOSL@ HAVE_ALIGNED_ALLOC = @HAVE_ALIGNED_ALLOC@ HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ HAVE_ASINF = @HAVE_ASINF@ HAVE_ASINL = @HAVE_ASINL@ HAVE_ATAN2F = @HAVE_ATAN2F@ HAVE_ATANF = @HAVE_ATANF@ HAVE_ATANL = @HAVE_ATANL@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CBRT = @HAVE_CBRT@ HAVE_CBRTF = @HAVE_CBRTF@ HAVE_CBRTL = @HAVE_CBRTL@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_COPYSIGN = @HAVE_COPYSIGN@ HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@ HAVE_COSF = @HAVE_COSF@ HAVE_COSHF = @HAVE_COSHF@ HAVE_COSL = @HAVE_COSL@ HAVE_CRTDEFS_H = @HAVE_CRTDEFS_H@ HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ HAVE_DECL_COSL = @HAVE_DECL_COSL@ HAVE_DECL_ECVT = @HAVE_DECL_ECVT@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_EXECVPE = @HAVE_DECL_EXECVPE@ HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FCLOSEALL = @HAVE_DECL_FCLOSEALL@ HAVE_DECL_FCVT = @HAVE_DECL_FCVT@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GCVT = @HAVE_DECL_GCVT@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_GETW = @HAVE_DECL_GETW@ HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@ HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_PUTW = @HAVE_DECL_PUTW@ HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@ HAVE_DECL_SINL = @HAVE_DECL_SINL@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ HAVE_DECL_TANL = @HAVE_DECL_TANL@ HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@ HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DECL_WCSDUP = @HAVE_DECL_WCSDUP@ HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ HAVE_ERROR = @HAVE_ERROR@ HAVE_ERROR_AT_LINE = @HAVE_ERROR_AT_LINE@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_EXECVPE = @HAVE_EXECVPE@ HAVE_EXPF = @HAVE_EXPF@ HAVE_EXPL = @HAVE_EXPL@ HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@ HAVE_EXPM1 = @HAVE_EXPM1@ HAVE_EXPM1F = @HAVE_EXPM1F@ HAVE_FABSF = @HAVE_FABSF@ HAVE_FABSL = @HAVE_FABSL@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FCNTL = @HAVE_FCNTL@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FMA = @HAVE_FMA@ HAVE_FMAF = @HAVE_FMAF@ HAVE_FMAL = @HAVE_FMAL@ HAVE_FMODF = @HAVE_FMODF@ HAVE_FMODL = @HAVE_FMODL@ HAVE_FREELOCALE = @HAVE_FREELOCALE@ HAVE_FREXPF = @HAVE_FREXPF@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETENTROPY = @HAVE_GETENTROPY@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETPASS = @HAVE_GETPASS@ HAVE_GETPROGNAME = @HAVE_GETPROGNAME@ HAVE_GETRANDOM = @HAVE_GETRANDOM@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETUMASK = @HAVE_GETUMASK@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_HYPOTF = @HAVE_HYPOTF@ HAVE_HYPOTL = @HAVE_HYPOTL@ HAVE_ILOGB = @HAVE_ILOGB@ HAVE_ILOGBF = @HAVE_ILOGBF@ HAVE_ILOGBL = @HAVE_ILOGBL@ HAVE_IMAXABS = @HAVE_IMAXABS@ HAVE_IMAXDIV = @HAVE_IMAXDIV@ HAVE_IMAXDIV_T = @HAVE_IMAXDIV_T@ HAVE_INITSTATE = @HAVE_INITSTATE@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_ISNAND = @HAVE_ISNAND@ HAVE_ISNANF = @HAVE_ISNANF@ HAVE_ISNANL = @HAVE_ISNANL@ HAVE_ISWBLANK = @HAVE_ISWBLANK@ HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LDEXPF = @HAVE_LDEXPF@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LOG10F = @HAVE_LOG10F@ HAVE_LOG10L = @HAVE_LOG10L@ HAVE_LOG1P = @HAVE_LOG1P@ HAVE_LOG1PF = @HAVE_LOG1PF@ HAVE_LOG1PL = @HAVE_LOG1PL@ HAVE_LOGBF = @HAVE_LOGBF@ HAVE_LOGBL = @HAVE_LOGBL@ HAVE_LOGF = @HAVE_LOGF@ HAVE_LOGL = @HAVE_LOGL@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ HAVE_MBRLEN = @HAVE_MBRLEN@ HAVE_MBRTOWC = @HAVE_MBRTOWC@ HAVE_MBSINIT = @HAVE_MBSINIT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ HAVE_MBTOWC = @HAVE_MBTOWC@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MEMSET_EXPLICIT = @HAVE_MEMSET_EXPLICIT@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MODFF = @HAVE_MODFF@ HAVE_MODFL = @HAVE_MODFL@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ HAVE_OPENAT = @HAVE_OPENAT@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_MEMALIGN = @HAVE_POSIX_MEMALIGN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@ HAVE_POWF = @HAVE_POWF@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_QSORT_R = @HAVE_QSORT_R@ HAVE_RAISE = @HAVE_RAISE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_REMAINDER = @HAVE_REMAINDER@ HAVE_REMAINDERF = @HAVE_REMAINDERF@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RINT = @HAVE_RINT@ HAVE_RINTL = @HAVE_RINTL@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SETSTATE = @HAVE_SETSTATE@ HAVE_SIGABBREV_NP = @HAVE_SIGABBREV_NP@ HAVE_SIGACTION = @HAVE_SIGACTION@ HAVE_SIGDESCR_NP = @HAVE_SIGDESCR_NP@ HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@ HAVE_SIGINFO_T = @HAVE_SIGINFO_T@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SIGSET_T = @HAVE_SIGSET_T@ HAVE_SINF = @HAVE_SINF@ HAVE_SINHF = @HAVE_SINHF@ HAVE_SINL = @HAVE_SINL@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_SQRTF = @HAVE_SQRTF@ HAVE_SQRTL = @HAVE_SQRTL@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRERRORNAME_NP = @HAVE_STRERRORNAME_NP@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOL = @HAVE_STRTOL@ HAVE_STRTOLD = @HAVE_STRTOLD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOUL = @HAVE_STRTOUL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_CDEFS_H = @HAVE_SYS_CDEFS_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_RANDOM_H = @HAVE_SYS_RANDOM_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TANF = @HAVE_TANF@ HAVE_TANHF = @HAVE_TANHF@ HAVE_TANL = @HAVE_TANL@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_TIMESPEC_GET = @HAVE_TIMESPEC_GET@ HAVE_TIMESPEC_GETRES = @HAVE_TIMESPEC_GETRES@ HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIME = @HAVE_UTIME@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_UTIME_H = @HAVE_UTIME_H@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WCPCPY = @HAVE_WCPCPY@ HAVE_WCPNCPY = @HAVE_WCPNCPY@ HAVE_WCRTOMB = @HAVE_WCRTOMB@ HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ HAVE_WCSCAT = @HAVE_WCSCAT@ HAVE_WCSCHR = @HAVE_WCSCHR@ HAVE_WCSCMP = @HAVE_WCSCMP@ HAVE_WCSCOLL = @HAVE_WCSCOLL@ HAVE_WCSCPY = @HAVE_WCSCPY@ HAVE_WCSCSPN = @HAVE_WCSCSPN@ HAVE_WCSDUP = @HAVE_WCSDUP@ HAVE_WCSFTIME = @HAVE_WCSFTIME@ HAVE_WCSLEN = @HAVE_WCSLEN@ HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ HAVE_WCSNCAT = @HAVE_WCSNCAT@ HAVE_WCSNCMP = @HAVE_WCSNCMP@ HAVE_WCSNCPY = @HAVE_WCSNCPY@ HAVE_WCSNLEN = @HAVE_WCSNLEN@ HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ HAVE_WCSPBRK = @HAVE_WCSPBRK@ HAVE_WCSRCHR = @HAVE_WCSRCHR@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ HAVE_WCSSPN = @HAVE_WCSSPN@ HAVE_WCSSTR = @HAVE_WCSSTR@ HAVE_WCSTOK = @HAVE_WCSTOK@ HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ HAVE_WCSXFRM = @HAVE_WCSXFRM@ HAVE_WCTRANS_T = @HAVE_WCTRANS_T@ HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ HAVE_WCTYPE_T = @HAVE_WCTYPE_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE_WINT_T = @HAVE_WINT_T@ HAVE_WMEMCHR = @HAVE_WMEMCHR@ HAVE_WMEMCMP = @HAVE_WMEMCMP@ HAVE_WMEMCPY = @HAVE_WMEMCPY@ HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ HAVE_WMEMPCPY = @HAVE_WMEMPCPY@ HAVE_WMEMSET = @HAVE_WMEMSET@ HAVE_XLOCALE_H = @HAVE_XLOCALE_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ ISYSTEM = @ISYSTEM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBPMULTITHREAD = @LIBPMULTITHREAD@ LIBPTHREAD = @LIBPTHREAD@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIB_GETRANDOM = @LIB_GETRANDOM@ LIB_HARD_LOCALE = @LIB_HARD_LOCALE@ LIB_MBRTOWC = @LIB_MBRTOWC@ LIB_SCHED_YIELD = @LIB_SCHED_YIELD@ LIB_SETLOCALE_NULL = @LIB_SETLOCALE_NULL@ LIMITS_H = @LIMITS_H@ LIPO = @LIPO@ LN_S = @LN_S@ LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ LOCALENAME_ENHANCE_LOCALE_FUNCS = @LOCALENAME_ENHANCE_LOCALE_FUNCS@ LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ LOCALE_JA = @LOCALE_JA@ LOCALE_ZH_CN = @LOCALE_ZH_CN@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MBRTOWC_LIB = @MBRTOWC_LIB@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NEXT_ASSERT_H = @NEXT_ASSERT_H@ NEXT_AS_FIRST_DIRECTIVE_ASSERT_H = @NEXT_AS_FIRST_DIRECTIVE_ASSERT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@ NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_UTIME_H = @NEXT_AS_FIRST_DIRECTIVE_UTIME_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ NEXT_FLOAT_H = @NEXT_FLOAT_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ NEXT_LIMITS_H = @NEXT_LIMITS_H@ NEXT_LOCALE_H = @NEXT_LOCALE_H@ NEXT_MATH_H = @NEXT_MATH_H@ NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_RANDOM_H = @NEXT_SYS_RANDOM_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_SYS_WAIT_H = @NEXT_SYS_WAIT_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NEXT_UTIME_H = @NEXT_UTIME_H@ NEXT_WCHAR_H = @NEXT_WCHAR_H@ NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ POSUB = @POSUB@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PRIPTR_PREFIX = @PRIPTR_PREFIX@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REPLACE_ACCESS = @REPLACE_ACCESS@ REPLACE_ACOSF = @REPLACE_ACOSF@ REPLACE_ALIGNED_ALLOC = @REPLACE_ALIGNED_ALLOC@ REPLACE_ASINF = @REPLACE_ASINF@ REPLACE_ATAN2F = @REPLACE_ATAN2F@ REPLACE_ATANF = @REPLACE_ATANF@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CBRTF = @REPLACE_CBRTF@ REPLACE_CBRTL = @REPLACE_CBRTL@ REPLACE_CEIL = @REPLACE_CEIL@ REPLACE_CEILF = @REPLACE_CEILF@ REPLACE_CEILL = @REPLACE_CEILL@ REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ REPLACE_COSF = @REPLACE_COSF@ REPLACE_COSHF = @REPLACE_COSHF@ REPLACE_CREAT = @REPLACE_CREAT@ REPLACE_CTIME = @REPLACE_CTIME@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_DUP3 = @REPLACE_DUP3@ REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ REPLACE_ERROR = @REPLACE_ERROR@ REPLACE_ERROR_AT_LINE = @REPLACE_ERROR_AT_LINE@ REPLACE_EXECL = @REPLACE_EXECL@ REPLACE_EXECLE = @REPLACE_EXECLE@ REPLACE_EXECLP = @REPLACE_EXECLP@ REPLACE_EXECV = @REPLACE_EXECV@ REPLACE_EXECVE = @REPLACE_EXECVE@ REPLACE_EXECVP = @REPLACE_EXECVP@ REPLACE_EXECVPE = @REPLACE_EXECVPE@ REPLACE_EXP2 = @REPLACE_EXP2@ REPLACE_EXP2L = @REPLACE_EXP2L@ REPLACE_EXPF = @REPLACE_EXPF@ REPLACE_EXPL = @REPLACE_EXPL@ REPLACE_EXPM1 = @REPLACE_EXPM1@ REPLACE_EXPM1F = @REPLACE_EXPM1F@ REPLACE_EXPM1L = @REPLACE_EXPM1L@ REPLACE_FABSL = @REPLACE_FABSL@ REPLACE_FACCESSAT = @REPLACE_FACCESSAT@ REPLACE_FCHMODAT = @REPLACE_FCHMODAT@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDATASYNC = @REPLACE_FDATASYNC@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FFSLL = @REPLACE_FFSLL@ REPLACE_FLOOR = @REPLACE_FLOOR@ REPLACE_FLOORF = @REPLACE_FLOORF@ REPLACE_FLOORL = @REPLACE_FLOORL@ REPLACE_FMA = @REPLACE_FMA@ REPLACE_FMAF = @REPLACE_FMAF@ REPLACE_FMAL = @REPLACE_FMAL@ REPLACE_FMOD = @REPLACE_FMOD@ REPLACE_FMODF = @REPLACE_FMODF@ REPLACE_FMODL = @REPLACE_FMODL@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FOPEN_FOR_FOPEN_GNU = @REPLACE_FOPEN_FOR_FOPEN_GNU@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREE = @REPLACE_FREE@ REPLACE_FREELOCALE = @REPLACE_FREELOCALE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FREXP = @REPLACE_FREXP@ REPLACE_FREXPF = @REPLACE_FREXPF@ REPLACE_FREXPL = @REPLACE_FREXPL@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETENTROPY = @REPLACE_GETENTROPY@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOADAVG = @REPLACE_GETLOADAVG@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETPASS = @REPLACE_GETPASS@ REPLACE_GETPASS_FOR_GETPASS_GNU = @REPLACE_GETPASS_FOR_GETPASS_GNU@ REPLACE_GETPROGNAME = @REPLACE_GETPROGNAME@ REPLACE_GETRANDOM = @REPLACE_GETRANDOM@ REPLACE_GETSUBOPT = @REPLACE_GETSUBOPT@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ REPLACE_HYPOT = @REPLACE_HYPOT@ REPLACE_HYPOTF = @REPLACE_HYPOTF@ REPLACE_HYPOTL = @REPLACE_HYPOTL@ REPLACE_ILOGB = @REPLACE_ILOGB@ REPLACE_ILOGBF = @REPLACE_ILOGBF@ REPLACE_ILOGBL = @REPLACE_ILOGBL@ REPLACE_IMAXABS = @REPLACE_IMAXABS@ REPLACE_IMAXDIV = @REPLACE_IMAXDIV@ REPLACE_INITSTATE = @REPLACE_INITSTATE@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_ISFINITE = @REPLACE_ISFINITE@ REPLACE_ISINF = @REPLACE_ISINF@ REPLACE_ISNAN = @REPLACE_ISNAN@ REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ REPLACE_ISWDIGIT = @REPLACE_ISWDIGIT@ REPLACE_ISWXDIGIT = @REPLACE_ISWXDIGIT@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LOG = @REPLACE_LOG@ REPLACE_LOG10 = @REPLACE_LOG10@ REPLACE_LOG10F = @REPLACE_LOG10F@ REPLACE_LOG10L = @REPLACE_LOG10L@ REPLACE_LOG1P = @REPLACE_LOG1P@ REPLACE_LOG1PF = @REPLACE_LOG1PF@ REPLACE_LOG1PL = @REPLACE_LOG1PL@ REPLACE_LOG2 = @REPLACE_LOG2@ REPLACE_LOG2F = @REPLACE_LOG2F@ REPLACE_LOG2L = @REPLACE_LOG2L@ REPLACE_LOGB = @REPLACE_LOGB@ REPLACE_LOGBF = @REPLACE_LOGBF@ REPLACE_LOGBL = @REPLACE_LOGBL@ REPLACE_LOGF = @REPLACE_LOGF@ REPLACE_LOGL = @REPLACE_LOGL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC_FOR_MALLOC_GNU = @REPLACE_MALLOC_FOR_MALLOC_GNU@ REPLACE_MALLOC_FOR_MALLOC_POSIX = @REPLACE_MALLOC_FOR_MALLOC_POSIX@ REPLACE_MBRLEN = @REPLACE_MBRLEN@ REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ REPLACE_MBSINIT = @REPLACE_MBSINIT@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MEMPCPY = @REPLACE_MEMPCPY@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKFIFOAT = @REPLACE_MKFIFOAT@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKNODAT = @REPLACE_MKNODAT@ REPLACE_MKOSTEMP = @REPLACE_MKOSTEMP@ REPLACE_MKOSTEMPS = @REPLACE_MKOSTEMPS@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_MODF = @REPLACE_MODF@ REPLACE_MODFF = @REPLACE_MODFF@ REPLACE_MODFL = @REPLACE_MODFL@ REPLACE_NAN = @REPLACE_NAN@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NEWLOCALE = @REPLACE_NEWLOCALE@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_OPEN = @REPLACE_OPEN@ REPLACE_OPENAT = @REPLACE_OPENAT@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_PIPE2 = @REPLACE_PIPE2@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_POSIX_MEMALIGN = @REPLACE_POSIX_MEMALIGN@ REPLACE_POSIX_OPENPT = @REPLACE_POSIX_OPENPT@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_QSORT_R = @REPLACE_QSORT_R@ REPLACE_RAISE = @REPLACE_RAISE@ REPLACE_RANDOM = @REPLACE_RANDOM@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_READLINKAT = @REPLACE_READLINKAT@ REPLACE_REALLOCARRAY = @REPLACE_REALLOCARRAY@ REPLACE_REALLOC_FOR_REALLOC_GNU = @REPLACE_REALLOC_FOR_REALLOC_GNU@ REPLACE_REALLOC_FOR_REALLOC_POSIX = @REPLACE_REALLOC_FOR_REALLOC_POSIX@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMAINDER = @REPLACE_REMAINDER@ REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RINTL = @REPLACE_RINTL@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_ROUND = @REPLACE_ROUND@ REPLACE_ROUNDF = @REPLACE_ROUNDF@ REPLACE_ROUNDL = @REPLACE_ROUNDL@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SETHOSTNAME = @REPLACE_SETHOSTNAME@ REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ REPLACE_SETSTATE = @REPLACE_SETSTATE@ REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ REPLACE_SIGNBIT_USING_BUILTINS = @REPLACE_SIGNBIT_USING_BUILTINS@ REPLACE_SINF = @REPLACE_SINF@ REPLACE_SINHF = @REPLACE_SINHF@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_SQRTF = @REPLACE_SQRTF@ REPLACE_SQRTL = @REPLACE_SQRTL@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPCPY = @REPLACE_STPCPY@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERRORNAME_NP = @REPLACE_STRERRORNAME_NP@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRFTIME = @REPLACE_STRFTIME@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRTOL = @REPLACE_STRTOL@ REPLACE_STRTOLD = @REPLACE_STRTOLD@ REPLACE_STRTOLL = @REPLACE_STRTOLL@ REPLACE_STRTOUL = @REPLACE_STRTOUL@ REPLACE_STRTOULL = @REPLACE_STRTOULL@ REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ REPLACE_TANF = @REPLACE_TANF@ REPLACE_TANHF = @REPLACE_TANHF@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TIMESPEC_GET = @REPLACE_TIMESPEC_GET@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ REPLACE_TRUNC = @REPLACE_TRUNC@ REPLACE_TRUNCATE = @REPLACE_TRUNCATE@ REPLACE_TRUNCF = @REPLACE_TRUNCF@ REPLACE_TRUNCL = @REPLACE_TRUNCL@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_TZSET = @REPLACE_TZSET@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIME = @REPLACE_UTIME@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ REPLACE_WCSFTIME = @REPLACE_WCSFTIME@ REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ REPLACE_WCSTOK = @REPLACE_WCSTOK@ REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ REPLACE_WCTOB = @REPLACE_WCTOB@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ REPLACE_WMEMPCPY = @REPLACE_WMEMPCPY@ REPLACE_WRITE = @REPLACE_WRITE@ REPLACE__EXIT = @REPLACE__EXIT@ SCHED_YIELD_LIB = @SCHED_YIELD_LIB@ SED = @SED@ SETLOCALE_NULL_LIB = @SETLOCALE_NULL_LIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TESTS_ENVIRONMENT_EXTRA = @TESTS_ENVIRONMENT_EXTRA@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_TIME_UTC = @TIME_H_DEFINES_TIME_UTC@ UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_DEFINES_STRUCT_TIMESPEC = @UNISTD_H_DEFINES_STRUCT_TIMESPEC@ UNISTD_H_HAVE_SYS_RANDOM_H = @UNISTD_H_HAVE_SYS_RANDOM_H@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSION_INFO = @VERSION_INFO@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@ WINDOWS_STAT_TIMESPEC = @WINDOWS_STAT_TIMESPEC@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ objdir = @objdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyextext = @pyextext@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = gnits ACLOCAL_AMFLAGS = -I m4 SUBDIRS = doc lib src po tests contrib EXTRA_DIST = COPYING-LIB \ m4/gnulib-cache.m4 tables.py \ keld/NomsSeulsfinal.lst keld/charsets.def keld/control.def \ keld/iso10646.def keld/other.def keld/rfc1345.txt # Ignore built files that are part of the distribution (specifically, # src/recode.1). distcleancheck_listfiles = \ find . -type f -exec sh -c 'test -f $(srcdir)/$$1 || echo $$1' \ sh '{}' ';' all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnits'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnits \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 build-aux/x-to-1: $(top_builddir)/config.status $(top_srcdir)/build-aux/x-to-1.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @case `sed 15q $(srcdir)/NEWS` in \ *"$(VERSION)"*) : ;; \ *) \ echo "NEWS not updated; not releasing" 1>&2; \ exit 1;; \ esac $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-zstd: distdir tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_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 case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ dist-xz dist-zip dist-zstd distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile release: distcheck git diff --exit-code && \ git tag -a -m "Release tag" "v$(VERSION)" && \ git push && git push --tags && \ woger github \ github_user=rrthomas \ package=$(PACKAGE) \ version=$(VERSION) \ dist_type=tar.gz # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: recode-3.7.15/Makefile.am0000644000175000017500000000266014765654444010614 # Main Makefile for Recode. # Copyright © 1992-2018 Free Software Foundation, Inc. # François Pinard , 1992. # 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 3, 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, see . AUTOMAKE_OPTIONS = gnits ACLOCAL_AMFLAGS = -I m4 SUBDIRS = doc lib src po tests contrib EXTRA_DIST = COPYING-LIB \ m4/gnulib-cache.m4 tables.py \ keld/NomsSeulsfinal.lst keld/charsets.def keld/control.def \ keld/iso10646.def keld/other.def keld/rfc1345.txt release: distcheck git diff --exit-code && \ git tag -a -m "Release tag" "v$(VERSION)" && \ git push && git push --tags && \ woger github \ github_user=rrthomas \ package=$(PACKAGE) \ version=$(VERSION) \ dist_type=tar.gz # Ignore built files that are part of the distribution (specifically, # src/recode.1). distcleancheck_listfiles = \ find . -type f -exec sh -c 'test -f $(srcdir)/$$1 || echo $$1' \ sh '{}' ';' recode-3.7.15/contrib/0000755000175000017500000000000014766021056010260 5recode-3.7.15/contrib/Makefile.in0000644000175000017500000017625114766020640012257 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Makefile for Recode related contributions. # Copyright © 1997-2018 Free Software Foundation, Inc. # François Pinard # 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 3, 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, see . VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = contrib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ $(top_srcdir)/m4/__inline.m4 \ $(top_srcdir)/m4/absolute-header.m4 $(top_srcdir)/m4/alloca.m4 \ $(top_srcdir)/m4/assert_h.m4 \ $(top_srcdir)/m4/builtin-expect.m4 $(top_srcdir)/m4/c-bool.m4 \ $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \ $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/close.m4 \ $(top_srcdir)/m4/codeset.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/error_h.m4 \ $(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/exponentf.m4 \ $(top_srcdir)/m4/exponentl.m4 $(top_srcdir)/m4/extensions.m4 \ $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \ $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \ $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fpieee.m4 \ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/frexp.m4 \ $(top_srcdir)/m4/frexpl.m4 $(top_srcdir)/m4/fseterr.m4 \ $(top_srcdir)/m4/fstat.m4 $(top_srcdir)/m4/getdtablesize.m4 \ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getprogname.m4 \ $(top_srcdir)/m4/getrandom.m4 $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gnulib-common.m4 \ $(top_srcdir)/m4/gnulib-comp.m4 \ $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/include_next.m4 \ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ $(top_srcdir)/m4/isatty.m4 $(top_srcdir)/m4/isnand.m4 \ $(top_srcdir)/m4/isnanf.m4 $(top_srcdir)/m4/isnanl.m4 \ $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/ldexpl.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/localcharset.m4 \ $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \ $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/locale_h.m4 \ $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \ $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \ $(top_srcdir)/m4/math_h.m4 $(top_srcdir)/m4/mbrtowc.m4 \ $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \ $(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mkdir.m4 \ $(top_srcdir)/m4/mkstemps.m4 $(top_srcdir)/m4/mmap-anon.m4 \ $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \ $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \ $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open-cloexec.m4 \ $(top_srcdir)/m4/open-slash.m4 $(top_srcdir)/m4/open.m4 \ $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/pipe.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-frexp.m4 \ $(top_srcdir)/m4/printf-frexpl.m4 $(top_srcdir)/m4/printf.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/raise.m4 \ $(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/readlink.m4 \ $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/reallocarray.m4 \ $(top_srcdir)/m4/setlocale_null.m4 \ $(top_srcdir)/m4/sigaction.m4 $(top_srcdir)/m4/signal_h.m4 \ $(top_srcdir)/m4/signalblocking.m4 $(top_srcdir)/m4/signbit.m4 \ $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/ssize_t.m4 \ $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \ $(top_srcdir)/m4/stdalign.m4 $(top_srcdir)/m4/stddef_h.m4 \ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \ $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \ $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \ $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \ $(top_srcdir)/m4/sys_random_h.m4 \ $(top_srcdir)/m4/sys_socket_h.m4 \ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_types_h.m4 \ $(top_srcdir)/m4/sys_wait_h.m4 $(top_srcdir)/m4/tempname.m4 \ $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/utime.m4 \ $(top_srcdir)/m4/utime_h.m4 $(top_srcdir)/m4/vasnprintf.m4 \ $(top_srcdir)/m4/vasprintf.m4 \ $(top_srcdir)/m4/vfprintf-posix.m4 \ $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/m4/vprintf-posix.m4 \ $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \ $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \ $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wint_t.m4 \ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xsize.m4 \ $(top_srcdir)/m4/zzgnulib.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ ALLOCA_H = @ALLOCA_H@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ ASSERT_H = @ASSERT_H@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CLOCK_TIME_LIB = @CLOCK_TIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CROSS_COMPILING = @CROSS_COMPILING@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ CYTHON = @CYTHON@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ ERROR_H = @ERROR_H@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ FLOAT_H = @FLOAT_H@ GETOPT_CDEFS_H = @GETOPT_CDEFS_H@ GETOPT_H = @GETOPT_H@ GETRANDOM_LIB = @GETRANDOM_LIB@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@ GL_CFLAG_GNULIB_WARNINGS = @GL_CFLAG_GNULIB_WARNINGS@ GL_GNULIB_ACCESS = @GL_GNULIB_ACCESS@ GL_GNULIB_ACOSF = @GL_GNULIB_ACOSF@ GL_GNULIB_ACOSL = @GL_GNULIB_ACOSL@ GL_GNULIB_ALIGNED_ALLOC = @GL_GNULIB_ALIGNED_ALLOC@ GL_GNULIB_ASINF = @GL_GNULIB_ASINF@ GL_GNULIB_ASINL = @GL_GNULIB_ASINL@ GL_GNULIB_ATAN2F = @GL_GNULIB_ATAN2F@ GL_GNULIB_ATANF = @GL_GNULIB_ATANF@ GL_GNULIB_ATANL = @GL_GNULIB_ATANL@ GL_GNULIB_ATOLL = @GL_GNULIB_ATOLL@ GL_GNULIB_BTOWC = @GL_GNULIB_BTOWC@ GL_GNULIB_CALLOC_GNU = @GL_GNULIB_CALLOC_GNU@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CBRT = @GL_GNULIB_CBRT@ GL_GNULIB_CBRTF = @GL_GNULIB_CBRTF@ GL_GNULIB_CBRTL = @GL_GNULIB_CBRTL@ GL_GNULIB_CEIL = @GL_GNULIB_CEIL@ GL_GNULIB_CEILF = @GL_GNULIB_CEILF@ GL_GNULIB_CEILL = @GL_GNULIB_CEILL@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_COPYSIGN = @GL_GNULIB_COPYSIGN@ GL_GNULIB_COPYSIGNF = @GL_GNULIB_COPYSIGNF@ GL_GNULIB_COPYSIGNL = @GL_GNULIB_COPYSIGNL@ GL_GNULIB_COPY_FILE_RANGE = @GL_GNULIB_COPY_FILE_RANGE@ GL_GNULIB_COSF = @GL_GNULIB_COSF@ GL_GNULIB_COSHF = @GL_GNULIB_COSHF@ GL_GNULIB_COSL = @GL_GNULIB_COSL@ GL_GNULIB_CREAT = @GL_GNULIB_CREAT@ GL_GNULIB_CTIME = @GL_GNULIB_CTIME@ GL_GNULIB_DPRINTF = @GL_GNULIB_DPRINTF@ GL_GNULIB_DUP = @GL_GNULIB_DUP@ GL_GNULIB_DUP2 = @GL_GNULIB_DUP2@ GL_GNULIB_DUP3 = @GL_GNULIB_DUP3@ GL_GNULIB_DUPLOCALE = @GL_GNULIB_DUPLOCALE@ GL_GNULIB_ENVIRON = @GL_GNULIB_ENVIRON@ GL_GNULIB_EUIDACCESS = @GL_GNULIB_EUIDACCESS@ GL_GNULIB_EXECL = @GL_GNULIB_EXECL@ GL_GNULIB_EXECLE = @GL_GNULIB_EXECLE@ GL_GNULIB_EXECLP = @GL_GNULIB_EXECLP@ GL_GNULIB_EXECV = @GL_GNULIB_EXECV@ GL_GNULIB_EXECVE = @GL_GNULIB_EXECVE@ GL_GNULIB_EXECVP = @GL_GNULIB_EXECVP@ GL_GNULIB_EXECVPE = @GL_GNULIB_EXECVPE@ GL_GNULIB_EXP2 = @GL_GNULIB_EXP2@ GL_GNULIB_EXP2F = @GL_GNULIB_EXP2F@ GL_GNULIB_EXP2L = @GL_GNULIB_EXP2L@ GL_GNULIB_EXPF = @GL_GNULIB_EXPF@ GL_GNULIB_EXPL = @GL_GNULIB_EXPL@ GL_GNULIB_EXPLICIT_BZERO = @GL_GNULIB_EXPLICIT_BZERO@ GL_GNULIB_EXPM1 = @GL_GNULIB_EXPM1@ GL_GNULIB_EXPM1F = @GL_GNULIB_EXPM1F@ GL_GNULIB_EXPM1L = @GL_GNULIB_EXPM1L@ GL_GNULIB_FABSF = @GL_GNULIB_FABSF@ GL_GNULIB_FABSL = @GL_GNULIB_FABSL@ GL_GNULIB_FACCESSAT = @GL_GNULIB_FACCESSAT@ GL_GNULIB_FCHDIR = @GL_GNULIB_FCHDIR@ GL_GNULIB_FCHMODAT = @GL_GNULIB_FCHMODAT@ GL_GNULIB_FCHOWNAT = @GL_GNULIB_FCHOWNAT@ GL_GNULIB_FCLOSE = @GL_GNULIB_FCLOSE@ GL_GNULIB_FCNTL = @GL_GNULIB_FCNTL@ GL_GNULIB_FDATASYNC = @GL_GNULIB_FDATASYNC@ GL_GNULIB_FDOPEN = @GL_GNULIB_FDOPEN@ GL_GNULIB_FFLUSH = @GL_GNULIB_FFLUSH@ GL_GNULIB_FFSL = @GL_GNULIB_FFSL@ GL_GNULIB_FFSLL = @GL_GNULIB_FFSLL@ GL_GNULIB_FGETC = @GL_GNULIB_FGETC@ GL_GNULIB_FGETS = @GL_GNULIB_FGETS@ GL_GNULIB_FLOOR = @GL_GNULIB_FLOOR@ GL_GNULIB_FLOORF = @GL_GNULIB_FLOORF@ GL_GNULIB_FLOORL = @GL_GNULIB_FLOORL@ GL_GNULIB_FMA = @GL_GNULIB_FMA@ GL_GNULIB_FMAF = @GL_GNULIB_FMAF@ GL_GNULIB_FMAL = @GL_GNULIB_FMAL@ GL_GNULIB_FMOD = @GL_GNULIB_FMOD@ GL_GNULIB_FMODF = @GL_GNULIB_FMODF@ GL_GNULIB_FMODL = @GL_GNULIB_FMODL@ GL_GNULIB_FOPEN = @GL_GNULIB_FOPEN@ GL_GNULIB_FOPEN_GNU = @GL_GNULIB_FOPEN_GNU@ GL_GNULIB_FPRINTF = @GL_GNULIB_FPRINTF@ GL_GNULIB_FPRINTF_POSIX = @GL_GNULIB_FPRINTF_POSIX@ GL_GNULIB_FPURGE = @GL_GNULIB_FPURGE@ GL_GNULIB_FPUTC = @GL_GNULIB_FPUTC@ GL_GNULIB_FPUTS = @GL_GNULIB_FPUTS@ GL_GNULIB_FREAD = @GL_GNULIB_FREAD@ GL_GNULIB_FREE_POSIX = @GL_GNULIB_FREE_POSIX@ GL_GNULIB_FREOPEN = @GL_GNULIB_FREOPEN@ GL_GNULIB_FREXP = @GL_GNULIB_FREXP@ GL_GNULIB_FREXPF = @GL_GNULIB_FREXPF@ GL_GNULIB_FREXPL = @GL_GNULIB_FREXPL@ GL_GNULIB_FSCANF = @GL_GNULIB_FSCANF@ GL_GNULIB_FSEEK = @GL_GNULIB_FSEEK@ GL_GNULIB_FSEEKO = @GL_GNULIB_FSEEKO@ GL_GNULIB_FSTAT = @GL_GNULIB_FSTAT@ GL_GNULIB_FSTATAT = @GL_GNULIB_FSTATAT@ GL_GNULIB_FSYNC = @GL_GNULIB_FSYNC@ GL_GNULIB_FTELL = @GL_GNULIB_FTELL@ GL_GNULIB_FTELLO = @GL_GNULIB_FTELLO@ GL_GNULIB_FTRUNCATE = @GL_GNULIB_FTRUNCATE@ GL_GNULIB_FUTIMENS = @GL_GNULIB_FUTIMENS@ GL_GNULIB_FWRITE = @GL_GNULIB_FWRITE@ GL_GNULIB_GETC = @GL_GNULIB_GETC@ GL_GNULIB_GETCHAR = @GL_GNULIB_GETCHAR@ GL_GNULIB_GETCWD = @GL_GNULIB_GETCWD@ GL_GNULIB_GETDELIM = @GL_GNULIB_GETDELIM@ GL_GNULIB_GETDOMAINNAME = @GL_GNULIB_GETDOMAINNAME@ GL_GNULIB_GETDTABLESIZE = @GL_GNULIB_GETDTABLESIZE@ GL_GNULIB_GETENTROPY = @GL_GNULIB_GETENTROPY@ GL_GNULIB_GETGROUPS = @GL_GNULIB_GETGROUPS@ GL_GNULIB_GETHOSTNAME = @GL_GNULIB_GETHOSTNAME@ GL_GNULIB_GETLINE = @GL_GNULIB_GETLINE@ GL_GNULIB_GETLOADAVG = @GL_GNULIB_GETLOADAVG@ GL_GNULIB_GETLOGIN = @GL_GNULIB_GETLOGIN@ GL_GNULIB_GETLOGIN_R = @GL_GNULIB_GETLOGIN_R@ GL_GNULIB_GETOPT_POSIX = @GL_GNULIB_GETOPT_POSIX@ GL_GNULIB_GETPAGESIZE = @GL_GNULIB_GETPAGESIZE@ GL_GNULIB_GETPASS = @GL_GNULIB_GETPASS@ GL_GNULIB_GETPASS_GNU = @GL_GNULIB_GETPASS_GNU@ GL_GNULIB_GETPROGNAME = @GL_GNULIB_GETPROGNAME@ GL_GNULIB_GETRANDOM = @GL_GNULIB_GETRANDOM@ GL_GNULIB_GETSUBOPT = @GL_GNULIB_GETSUBOPT@ GL_GNULIB_GETUMASK = @GL_GNULIB_GETUMASK@ GL_GNULIB_GETUSERSHELL = @GL_GNULIB_GETUSERSHELL@ GL_GNULIB_GRANTPT = @GL_GNULIB_GRANTPT@ GL_GNULIB_GROUP_MEMBER = @GL_GNULIB_GROUP_MEMBER@ GL_GNULIB_HYPOT = @GL_GNULIB_HYPOT@ GL_GNULIB_HYPOTF = @GL_GNULIB_HYPOTF@ GL_GNULIB_HYPOTL = @GL_GNULIB_HYPOTL@ GL_GNULIB_ILOGB = @GL_GNULIB_ILOGB@ GL_GNULIB_ILOGBF = @GL_GNULIB_ILOGBF@ GL_GNULIB_ILOGBL = @GL_GNULIB_ILOGBL@ GL_GNULIB_IMAXABS = @GL_GNULIB_IMAXABS@ GL_GNULIB_IMAXDIV = @GL_GNULIB_IMAXDIV@ GL_GNULIB_ISATTY = @GL_GNULIB_ISATTY@ GL_GNULIB_ISFINITE = @GL_GNULIB_ISFINITE@ GL_GNULIB_ISINF = @GL_GNULIB_ISINF@ GL_GNULIB_ISNAN = @GL_GNULIB_ISNAN@ GL_GNULIB_ISNAND = @GL_GNULIB_ISNAND@ GL_GNULIB_ISNANF = @GL_GNULIB_ISNANF@ GL_GNULIB_ISNANL = @GL_GNULIB_ISNANL@ GL_GNULIB_ISWBLANK = @GL_GNULIB_ISWBLANK@ GL_GNULIB_ISWCTYPE = @GL_GNULIB_ISWCTYPE@ GL_GNULIB_ISWDIGIT = @GL_GNULIB_ISWDIGIT@ GL_GNULIB_ISWXDIGIT = @GL_GNULIB_ISWXDIGIT@ GL_GNULIB_LCHMOD = @GL_GNULIB_LCHMOD@ GL_GNULIB_LCHOWN = @GL_GNULIB_LCHOWN@ GL_GNULIB_LDEXPF = @GL_GNULIB_LDEXPF@ GL_GNULIB_LDEXPL = @GL_GNULIB_LDEXPL@ GL_GNULIB_LINK = @GL_GNULIB_LINK@ GL_GNULIB_LINKAT = @GL_GNULIB_LINKAT@ GL_GNULIB_LOCALECONV = @GL_GNULIB_LOCALECONV@ GL_GNULIB_LOCALENAME = @GL_GNULIB_LOCALENAME@ GL_GNULIB_LOCALTIME = @GL_GNULIB_LOCALTIME@ GL_GNULIB_LOG = @GL_GNULIB_LOG@ GL_GNULIB_LOG10 = @GL_GNULIB_LOG10@ GL_GNULIB_LOG10F = @GL_GNULIB_LOG10F@ GL_GNULIB_LOG10L = @GL_GNULIB_LOG10L@ GL_GNULIB_LOG1P = @GL_GNULIB_LOG1P@ GL_GNULIB_LOG1PF = @GL_GNULIB_LOG1PF@ GL_GNULIB_LOG1PL = @GL_GNULIB_LOG1PL@ GL_GNULIB_LOG2 = @GL_GNULIB_LOG2@ GL_GNULIB_LOG2F = @GL_GNULIB_LOG2F@ GL_GNULIB_LOG2L = @GL_GNULIB_LOG2L@ GL_GNULIB_LOGB = @GL_GNULIB_LOGB@ GL_GNULIB_LOGBF = @GL_GNULIB_LOGBF@ GL_GNULIB_LOGBL = @GL_GNULIB_LOGBL@ GL_GNULIB_LOGF = @GL_GNULIB_LOGF@ GL_GNULIB_LOGL = @GL_GNULIB_LOGL@ GL_GNULIB_LSEEK = @GL_GNULIB_LSEEK@ GL_GNULIB_LSTAT = @GL_GNULIB_LSTAT@ GL_GNULIB_MALLOC_GNU = @GL_GNULIB_MALLOC_GNU@ GL_GNULIB_MALLOC_POSIX = @GL_GNULIB_MALLOC_POSIX@ GL_GNULIB_MBRLEN = @GL_GNULIB_MBRLEN@ GL_GNULIB_MBRTOWC = @GL_GNULIB_MBRTOWC@ GL_GNULIB_MBSCASECMP = @GL_GNULIB_MBSCASECMP@ GL_GNULIB_MBSCASESTR = @GL_GNULIB_MBSCASESTR@ GL_GNULIB_MBSCHR = @GL_GNULIB_MBSCHR@ GL_GNULIB_MBSCSPN = @GL_GNULIB_MBSCSPN@ GL_GNULIB_MBSINIT = @GL_GNULIB_MBSINIT@ GL_GNULIB_MBSLEN = @GL_GNULIB_MBSLEN@ GL_GNULIB_MBSNCASECMP = @GL_GNULIB_MBSNCASECMP@ GL_GNULIB_MBSNLEN = @GL_GNULIB_MBSNLEN@ GL_GNULIB_MBSNRTOWCS = @GL_GNULIB_MBSNRTOWCS@ GL_GNULIB_MBSPBRK = @GL_GNULIB_MBSPBRK@ GL_GNULIB_MBSPCASECMP = @GL_GNULIB_MBSPCASECMP@ GL_GNULIB_MBSRCHR = @GL_GNULIB_MBSRCHR@ GL_GNULIB_MBSRTOWCS = @GL_GNULIB_MBSRTOWCS@ GL_GNULIB_MBSSEP = @GL_GNULIB_MBSSEP@ GL_GNULIB_MBSSPN = @GL_GNULIB_MBSSPN@ GL_GNULIB_MBSSTR = @GL_GNULIB_MBSSTR@ GL_GNULIB_MBSTOK_R = @GL_GNULIB_MBSTOK_R@ GL_GNULIB_MBTOWC = @GL_GNULIB_MBTOWC@ GL_GNULIB_MDA_ACCESS = @GL_GNULIB_MDA_ACCESS@ GL_GNULIB_MDA_CHDIR = @GL_GNULIB_MDA_CHDIR@ GL_GNULIB_MDA_CHMOD = @GL_GNULIB_MDA_CHMOD@ GL_GNULIB_MDA_CLOSE = @GL_GNULIB_MDA_CLOSE@ GL_GNULIB_MDA_CREAT = @GL_GNULIB_MDA_CREAT@ GL_GNULIB_MDA_DUP = @GL_GNULIB_MDA_DUP@ GL_GNULIB_MDA_DUP2 = @GL_GNULIB_MDA_DUP2@ GL_GNULIB_MDA_ECVT = @GL_GNULIB_MDA_ECVT@ GL_GNULIB_MDA_EXECL = @GL_GNULIB_MDA_EXECL@ GL_GNULIB_MDA_EXECLE = @GL_GNULIB_MDA_EXECLE@ GL_GNULIB_MDA_EXECLP = @GL_GNULIB_MDA_EXECLP@ GL_GNULIB_MDA_EXECV = @GL_GNULIB_MDA_EXECV@ GL_GNULIB_MDA_EXECVE = @GL_GNULIB_MDA_EXECVE@ GL_GNULIB_MDA_EXECVP = @GL_GNULIB_MDA_EXECVP@ GL_GNULIB_MDA_EXECVPE = @GL_GNULIB_MDA_EXECVPE@ GL_GNULIB_MDA_FCLOSEALL = @GL_GNULIB_MDA_FCLOSEALL@ GL_GNULIB_MDA_FCVT = @GL_GNULIB_MDA_FCVT@ GL_GNULIB_MDA_FDOPEN = @GL_GNULIB_MDA_FDOPEN@ GL_GNULIB_MDA_FILENO = @GL_GNULIB_MDA_FILENO@ GL_GNULIB_MDA_GCVT = @GL_GNULIB_MDA_GCVT@ GL_GNULIB_MDA_GETCWD = @GL_GNULIB_MDA_GETCWD@ GL_GNULIB_MDA_GETPID = @GL_GNULIB_MDA_GETPID@ GL_GNULIB_MDA_GETW = @GL_GNULIB_MDA_GETW@ GL_GNULIB_MDA_ISATTY = @GL_GNULIB_MDA_ISATTY@ GL_GNULIB_MDA_J0 = @GL_GNULIB_MDA_J0@ GL_GNULIB_MDA_J1 = @GL_GNULIB_MDA_J1@ GL_GNULIB_MDA_JN = @GL_GNULIB_MDA_JN@ GL_GNULIB_MDA_LSEEK = @GL_GNULIB_MDA_LSEEK@ GL_GNULIB_MDA_MEMCCPY = @GL_GNULIB_MDA_MEMCCPY@ GL_GNULIB_MDA_MKDIR = @GL_GNULIB_MDA_MKDIR@ GL_GNULIB_MDA_MKTEMP = @GL_GNULIB_MDA_MKTEMP@ GL_GNULIB_MDA_OPEN = @GL_GNULIB_MDA_OPEN@ GL_GNULIB_MDA_PUTENV = @GL_GNULIB_MDA_PUTENV@ GL_GNULIB_MDA_PUTW = @GL_GNULIB_MDA_PUTW@ GL_GNULIB_MDA_READ = @GL_GNULIB_MDA_READ@ GL_GNULIB_MDA_RMDIR = @GL_GNULIB_MDA_RMDIR@ GL_GNULIB_MDA_STRDUP = @GL_GNULIB_MDA_STRDUP@ GL_GNULIB_MDA_SWAB = @GL_GNULIB_MDA_SWAB@ GL_GNULIB_MDA_TEMPNAM = @GL_GNULIB_MDA_TEMPNAM@ GL_GNULIB_MDA_TZSET = @GL_GNULIB_MDA_TZSET@ GL_GNULIB_MDA_UMASK = @GL_GNULIB_MDA_UMASK@ GL_GNULIB_MDA_UNLINK = @GL_GNULIB_MDA_UNLINK@ GL_GNULIB_MDA_UTIME = @GL_GNULIB_MDA_UTIME@ GL_GNULIB_MDA_WCSDUP = @GL_GNULIB_MDA_WCSDUP@ GL_GNULIB_MDA_WRITE = @GL_GNULIB_MDA_WRITE@ GL_GNULIB_MDA_Y0 = @GL_GNULIB_MDA_Y0@ GL_GNULIB_MDA_Y1 = @GL_GNULIB_MDA_Y1@ GL_GNULIB_MDA_YN = @GL_GNULIB_MDA_YN@ GL_GNULIB_MEMCHR = @GL_GNULIB_MEMCHR@ GL_GNULIB_MEMMEM = @GL_GNULIB_MEMMEM@ GL_GNULIB_MEMPCPY = @GL_GNULIB_MEMPCPY@ GL_GNULIB_MEMRCHR = @GL_GNULIB_MEMRCHR@ GL_GNULIB_MEMSET_EXPLICIT = @GL_GNULIB_MEMSET_EXPLICIT@ GL_GNULIB_MKDIR = @GL_GNULIB_MKDIR@ GL_GNULIB_MKDIRAT = @GL_GNULIB_MKDIRAT@ GL_GNULIB_MKDTEMP = @GL_GNULIB_MKDTEMP@ GL_GNULIB_MKFIFO = @GL_GNULIB_MKFIFO@ GL_GNULIB_MKFIFOAT = @GL_GNULIB_MKFIFOAT@ GL_GNULIB_MKNOD = @GL_GNULIB_MKNOD@ GL_GNULIB_MKNODAT = @GL_GNULIB_MKNODAT@ GL_GNULIB_MKOSTEMP = @GL_GNULIB_MKOSTEMP@ GL_GNULIB_MKOSTEMPS = @GL_GNULIB_MKOSTEMPS@ GL_GNULIB_MKSTEMP = @GL_GNULIB_MKSTEMP@ GL_GNULIB_MKSTEMPS = @GL_GNULIB_MKSTEMPS@ GL_GNULIB_MKTIME = @GL_GNULIB_MKTIME@ GL_GNULIB_MODF = @GL_GNULIB_MODF@ GL_GNULIB_MODFF = @GL_GNULIB_MODFF@ GL_GNULIB_MODFL = @GL_GNULIB_MODFL@ GL_GNULIB_NANOSLEEP = @GL_GNULIB_NANOSLEEP@ GL_GNULIB_NONBLOCKING = @GL_GNULIB_NONBLOCKING@ GL_GNULIB_OBSTACK_PRINTF = @GL_GNULIB_OBSTACK_PRINTF@ GL_GNULIB_OBSTACK_PRINTF_POSIX = @GL_GNULIB_OBSTACK_PRINTF_POSIX@ GL_GNULIB_OPEN = @GL_GNULIB_OPEN@ GL_GNULIB_OPENAT = @GL_GNULIB_OPENAT@ GL_GNULIB_OVERRIDES_STRUCT_STAT = @GL_GNULIB_OVERRIDES_STRUCT_STAT@ GL_GNULIB_PCLOSE = @GL_GNULIB_PCLOSE@ GL_GNULIB_PERROR = @GL_GNULIB_PERROR@ GL_GNULIB_PIPE = @GL_GNULIB_PIPE@ GL_GNULIB_PIPE2 = @GL_GNULIB_PIPE2@ GL_GNULIB_POPEN = @GL_GNULIB_POPEN@ GL_GNULIB_POSIX_MEMALIGN = @GL_GNULIB_POSIX_MEMALIGN@ GL_GNULIB_POSIX_OPENPT = @GL_GNULIB_POSIX_OPENPT@ GL_GNULIB_POWF = @GL_GNULIB_POWF@ GL_GNULIB_PREAD = @GL_GNULIB_PREAD@ GL_GNULIB_PRINTF = @GL_GNULIB_PRINTF@ GL_GNULIB_PRINTF_POSIX = @GL_GNULIB_PRINTF_POSIX@ GL_GNULIB_PTHREAD_SIGMASK = @GL_GNULIB_PTHREAD_SIGMASK@ GL_GNULIB_PTSNAME = @GL_GNULIB_PTSNAME@ GL_GNULIB_PTSNAME_R = @GL_GNULIB_PTSNAME_R@ GL_GNULIB_PUTC = @GL_GNULIB_PUTC@ GL_GNULIB_PUTCHAR = @GL_GNULIB_PUTCHAR@ GL_GNULIB_PUTENV = @GL_GNULIB_PUTENV@ GL_GNULIB_PUTS = @GL_GNULIB_PUTS@ GL_GNULIB_PWRITE = @GL_GNULIB_PWRITE@ GL_GNULIB_QSORT_R = @GL_GNULIB_QSORT_R@ GL_GNULIB_RAISE = @GL_GNULIB_RAISE@ GL_GNULIB_RANDOM = @GL_GNULIB_RANDOM@ GL_GNULIB_RANDOM_R = @GL_GNULIB_RANDOM_R@ GL_GNULIB_RAWMEMCHR = @GL_GNULIB_RAWMEMCHR@ GL_GNULIB_READ = @GL_GNULIB_READ@ GL_GNULIB_READLINK = @GL_GNULIB_READLINK@ GL_GNULIB_READLINKAT = @GL_GNULIB_READLINKAT@ GL_GNULIB_REALLOCARRAY = @GL_GNULIB_REALLOCARRAY@ GL_GNULIB_REALLOC_GNU = @GL_GNULIB_REALLOC_GNU@ GL_GNULIB_REALLOC_POSIX = @GL_GNULIB_REALLOC_POSIX@ GL_GNULIB_REALPATH = @GL_GNULIB_REALPATH@ GL_GNULIB_REMAINDER = @GL_GNULIB_REMAINDER@ GL_GNULIB_REMAINDERF = @GL_GNULIB_REMAINDERF@ GL_GNULIB_REMAINDERL = @GL_GNULIB_REMAINDERL@ GL_GNULIB_REMOVE = @GL_GNULIB_REMOVE@ GL_GNULIB_RENAME = @GL_GNULIB_RENAME@ GL_GNULIB_RENAMEAT = @GL_GNULIB_RENAMEAT@ GL_GNULIB_RINT = @GL_GNULIB_RINT@ GL_GNULIB_RINTF = @GL_GNULIB_RINTF@ GL_GNULIB_RINTL = @GL_GNULIB_RINTL@ GL_GNULIB_RMDIR = @GL_GNULIB_RMDIR@ GL_GNULIB_ROUND = @GL_GNULIB_ROUND@ GL_GNULIB_ROUNDF = @GL_GNULIB_ROUNDF@ GL_GNULIB_ROUNDL = @GL_GNULIB_ROUNDL@ GL_GNULIB_RPMATCH = @GL_GNULIB_RPMATCH@ GL_GNULIB_SCANF = @GL_GNULIB_SCANF@ GL_GNULIB_SECURE_GETENV = @GL_GNULIB_SECURE_GETENV@ GL_GNULIB_SETENV = @GL_GNULIB_SETENV@ GL_GNULIB_SETHOSTNAME = @GL_GNULIB_SETHOSTNAME@ GL_GNULIB_SETLOCALE = @GL_GNULIB_SETLOCALE@ GL_GNULIB_SETLOCALE_NULL = @GL_GNULIB_SETLOCALE_NULL@ GL_GNULIB_SIGABBREV_NP = @GL_GNULIB_SIGABBREV_NP@ GL_GNULIB_SIGACTION = @GL_GNULIB_SIGACTION@ GL_GNULIB_SIGDESCR_NP = @GL_GNULIB_SIGDESCR_NP@ GL_GNULIB_SIGNAL_H_SIGPIPE = @GL_GNULIB_SIGNAL_H_SIGPIPE@ GL_GNULIB_SIGNBIT = @GL_GNULIB_SIGNBIT@ GL_GNULIB_SIGPROCMASK = @GL_GNULIB_SIGPROCMASK@ GL_GNULIB_SINF = @GL_GNULIB_SINF@ GL_GNULIB_SINHF = @GL_GNULIB_SINHF@ GL_GNULIB_SINL = @GL_GNULIB_SINL@ GL_GNULIB_SLEEP = @GL_GNULIB_SLEEP@ GL_GNULIB_SNPRINTF = @GL_GNULIB_SNPRINTF@ GL_GNULIB_SPRINTF_POSIX = @GL_GNULIB_SPRINTF_POSIX@ GL_GNULIB_SQRTF = @GL_GNULIB_SQRTF@ GL_GNULIB_SQRTL = @GL_GNULIB_SQRTL@ GL_GNULIB_STAT = @GL_GNULIB_STAT@ GL_GNULIB_STDIO_H_NONBLOCKING = @GL_GNULIB_STDIO_H_NONBLOCKING@ GL_GNULIB_STDIO_H_SIGPIPE = @GL_GNULIB_STDIO_H_SIGPIPE@ GL_GNULIB_STPCPY = @GL_GNULIB_STPCPY@ GL_GNULIB_STPNCPY = @GL_GNULIB_STPNCPY@ GL_GNULIB_STRCASESTR = @GL_GNULIB_STRCASESTR@ GL_GNULIB_STRCHRNUL = @GL_GNULIB_STRCHRNUL@ GL_GNULIB_STRDUP = @GL_GNULIB_STRDUP@ GL_GNULIB_STRERROR = @GL_GNULIB_STRERROR@ GL_GNULIB_STRERRORNAME_NP = @GL_GNULIB_STRERRORNAME_NP@ GL_GNULIB_STRERROR_R = @GL_GNULIB_STRERROR_R@ GL_GNULIB_STRFTIME = @GL_GNULIB_STRFTIME@ GL_GNULIB_STRNCAT = @GL_GNULIB_STRNCAT@ GL_GNULIB_STRNDUP = @GL_GNULIB_STRNDUP@ GL_GNULIB_STRNLEN = @GL_GNULIB_STRNLEN@ GL_GNULIB_STRPBRK = @GL_GNULIB_STRPBRK@ GL_GNULIB_STRPTIME = @GL_GNULIB_STRPTIME@ GL_GNULIB_STRSEP = @GL_GNULIB_STRSEP@ GL_GNULIB_STRSIGNAL = @GL_GNULIB_STRSIGNAL@ GL_GNULIB_STRSTR = @GL_GNULIB_STRSTR@ GL_GNULIB_STRTOD = @GL_GNULIB_STRTOD@ GL_GNULIB_STRTOIMAX = @GL_GNULIB_STRTOIMAX@ GL_GNULIB_STRTOK_R = @GL_GNULIB_STRTOK_R@ GL_GNULIB_STRTOL = @GL_GNULIB_STRTOL@ GL_GNULIB_STRTOLD = @GL_GNULIB_STRTOLD@ GL_GNULIB_STRTOLL = @GL_GNULIB_STRTOLL@ GL_GNULIB_STRTOUL = @GL_GNULIB_STRTOUL@ GL_GNULIB_STRTOULL = @GL_GNULIB_STRTOULL@ GL_GNULIB_STRTOUMAX = @GL_GNULIB_STRTOUMAX@ GL_GNULIB_STRVERSCMP = @GL_GNULIB_STRVERSCMP@ GL_GNULIB_SYMLINK = @GL_GNULIB_SYMLINK@ GL_GNULIB_SYMLINKAT = @GL_GNULIB_SYMLINKAT@ GL_GNULIB_SYSTEM_POSIX = @GL_GNULIB_SYSTEM_POSIX@ GL_GNULIB_TANF = @GL_GNULIB_TANF@ GL_GNULIB_TANHF = @GL_GNULIB_TANHF@ GL_GNULIB_TANL = @GL_GNULIB_TANL@ GL_GNULIB_TIMEGM = @GL_GNULIB_TIMEGM@ GL_GNULIB_TIMESPEC_GET = @GL_GNULIB_TIMESPEC_GET@ GL_GNULIB_TIMESPEC_GETRES = @GL_GNULIB_TIMESPEC_GETRES@ GL_GNULIB_TIME_R = @GL_GNULIB_TIME_R@ GL_GNULIB_TIME_RZ = @GL_GNULIB_TIME_RZ@ GL_GNULIB_TMPFILE = @GL_GNULIB_TMPFILE@ GL_GNULIB_TOWCTRANS = @GL_GNULIB_TOWCTRANS@ GL_GNULIB_TRUNC = @GL_GNULIB_TRUNC@ GL_GNULIB_TRUNCATE = @GL_GNULIB_TRUNCATE@ GL_GNULIB_TRUNCF = @GL_GNULIB_TRUNCF@ GL_GNULIB_TRUNCL = @GL_GNULIB_TRUNCL@ GL_GNULIB_TTYNAME_R = @GL_GNULIB_TTYNAME_R@ GL_GNULIB_TZSET = @GL_GNULIB_TZSET@ GL_GNULIB_UNISTD_H_GETOPT = @GL_GNULIB_UNISTD_H_GETOPT@ GL_GNULIB_UNISTD_H_NONBLOCKING = @GL_GNULIB_UNISTD_H_NONBLOCKING@ GL_GNULIB_UNISTD_H_SIGPIPE = @GL_GNULIB_UNISTD_H_SIGPIPE@ GL_GNULIB_UNLINK = @GL_GNULIB_UNLINK@ GL_GNULIB_UNLINKAT = @GL_GNULIB_UNLINKAT@ GL_GNULIB_UNLOCKPT = @GL_GNULIB_UNLOCKPT@ GL_GNULIB_UNSETENV = @GL_GNULIB_UNSETENV@ GL_GNULIB_USLEEP = @GL_GNULIB_USLEEP@ GL_GNULIB_UTIME = @GL_GNULIB_UTIME@ GL_GNULIB_UTIMENSAT = @GL_GNULIB_UTIMENSAT@ GL_GNULIB_VASPRINTF = @GL_GNULIB_VASPRINTF@ GL_GNULIB_VDPRINTF = @GL_GNULIB_VDPRINTF@ GL_GNULIB_VFPRINTF = @GL_GNULIB_VFPRINTF@ GL_GNULIB_VFPRINTF_POSIX = @GL_GNULIB_VFPRINTF_POSIX@ GL_GNULIB_VFSCANF = @GL_GNULIB_VFSCANF@ GL_GNULIB_VPRINTF = @GL_GNULIB_VPRINTF@ GL_GNULIB_VPRINTF_POSIX = @GL_GNULIB_VPRINTF_POSIX@ GL_GNULIB_VSCANF = @GL_GNULIB_VSCANF@ GL_GNULIB_VSNPRINTF = @GL_GNULIB_VSNPRINTF@ GL_GNULIB_VSPRINTF_POSIX = @GL_GNULIB_VSPRINTF_POSIX@ GL_GNULIB_WAITPID = @GL_GNULIB_WAITPID@ GL_GNULIB_WCPCPY = @GL_GNULIB_WCPCPY@ GL_GNULIB_WCPNCPY = @GL_GNULIB_WCPNCPY@ GL_GNULIB_WCRTOMB = @GL_GNULIB_WCRTOMB@ GL_GNULIB_WCSCASECMP = @GL_GNULIB_WCSCASECMP@ GL_GNULIB_WCSCAT = @GL_GNULIB_WCSCAT@ GL_GNULIB_WCSCHR = @GL_GNULIB_WCSCHR@ GL_GNULIB_WCSCMP = @GL_GNULIB_WCSCMP@ GL_GNULIB_WCSCOLL = @GL_GNULIB_WCSCOLL@ GL_GNULIB_WCSCPY = @GL_GNULIB_WCSCPY@ GL_GNULIB_WCSCSPN = @GL_GNULIB_WCSCSPN@ GL_GNULIB_WCSDUP = @GL_GNULIB_WCSDUP@ GL_GNULIB_WCSFTIME = @GL_GNULIB_WCSFTIME@ GL_GNULIB_WCSLEN = @GL_GNULIB_WCSLEN@ GL_GNULIB_WCSNCASECMP = @GL_GNULIB_WCSNCASECMP@ GL_GNULIB_WCSNCAT = @GL_GNULIB_WCSNCAT@ GL_GNULIB_WCSNCMP = @GL_GNULIB_WCSNCMP@ GL_GNULIB_WCSNCPY = @GL_GNULIB_WCSNCPY@ GL_GNULIB_WCSNLEN = @GL_GNULIB_WCSNLEN@ GL_GNULIB_WCSNRTOMBS = @GL_GNULIB_WCSNRTOMBS@ GL_GNULIB_WCSPBRK = @GL_GNULIB_WCSPBRK@ GL_GNULIB_WCSRCHR = @GL_GNULIB_WCSRCHR@ GL_GNULIB_WCSRTOMBS = @GL_GNULIB_WCSRTOMBS@ GL_GNULIB_WCSSPN = @GL_GNULIB_WCSSPN@ GL_GNULIB_WCSSTR = @GL_GNULIB_WCSSTR@ GL_GNULIB_WCSTOK = @GL_GNULIB_WCSTOK@ GL_GNULIB_WCSWIDTH = @GL_GNULIB_WCSWIDTH@ GL_GNULIB_WCSXFRM = @GL_GNULIB_WCSXFRM@ GL_GNULIB_WCTOB = @GL_GNULIB_WCTOB@ GL_GNULIB_WCTOMB = @GL_GNULIB_WCTOMB@ GL_GNULIB_WCTRANS = @GL_GNULIB_WCTRANS@ GL_GNULIB_WCTYPE = @GL_GNULIB_WCTYPE@ GL_GNULIB_WCWIDTH = @GL_GNULIB_WCWIDTH@ GL_GNULIB_WMEMCHR = @GL_GNULIB_WMEMCHR@ GL_GNULIB_WMEMCMP = @GL_GNULIB_WMEMCMP@ GL_GNULIB_WMEMCPY = @GL_GNULIB_WMEMCPY@ GL_GNULIB_WMEMMOVE = @GL_GNULIB_WMEMMOVE@ GL_GNULIB_WMEMPCPY = @GL_GNULIB_WMEMPCPY@ GL_GNULIB_WMEMSET = @GL_GNULIB_WMEMSET@ GL_GNULIB_WRITE = @GL_GNULIB_WRITE@ GL_GNULIB__EXIT = @GL_GNULIB__EXIT@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNULIBHEADERS_OVERRIDE_WINT_T = @GNULIBHEADERS_OVERRIDE_WINT_T@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GREP = @GREP@ HARD_LOCALE_LIB = @HARD_LOCALE_LIB@ HAVE_ACOSF = @HAVE_ACOSF@ HAVE_ACOSL = @HAVE_ACOSL@ HAVE_ALIGNED_ALLOC = @HAVE_ALIGNED_ALLOC@ HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ HAVE_ASINF = @HAVE_ASINF@ HAVE_ASINL = @HAVE_ASINL@ HAVE_ATAN2F = @HAVE_ATAN2F@ HAVE_ATANF = @HAVE_ATANF@ HAVE_ATANL = @HAVE_ATANL@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CBRT = @HAVE_CBRT@ HAVE_CBRTF = @HAVE_CBRTF@ HAVE_CBRTL = @HAVE_CBRTL@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_COPYSIGN = @HAVE_COPYSIGN@ HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@ HAVE_COSF = @HAVE_COSF@ HAVE_COSHF = @HAVE_COSHF@ HAVE_COSL = @HAVE_COSL@ HAVE_CRTDEFS_H = @HAVE_CRTDEFS_H@ HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ HAVE_DECL_COSL = @HAVE_DECL_COSL@ HAVE_DECL_ECVT = @HAVE_DECL_ECVT@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_EXECVPE = @HAVE_DECL_EXECVPE@ HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FCLOSEALL = @HAVE_DECL_FCLOSEALL@ HAVE_DECL_FCVT = @HAVE_DECL_FCVT@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GCVT = @HAVE_DECL_GCVT@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_GETW = @HAVE_DECL_GETW@ HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@ HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_PUTW = @HAVE_DECL_PUTW@ HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@ HAVE_DECL_SINL = @HAVE_DECL_SINL@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ HAVE_DECL_TANL = @HAVE_DECL_TANL@ HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@ HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DECL_WCSDUP = @HAVE_DECL_WCSDUP@ HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ HAVE_ERROR = @HAVE_ERROR@ HAVE_ERROR_AT_LINE = @HAVE_ERROR_AT_LINE@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_EXECVPE = @HAVE_EXECVPE@ HAVE_EXPF = @HAVE_EXPF@ HAVE_EXPL = @HAVE_EXPL@ HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@ HAVE_EXPM1 = @HAVE_EXPM1@ HAVE_EXPM1F = @HAVE_EXPM1F@ HAVE_FABSF = @HAVE_FABSF@ HAVE_FABSL = @HAVE_FABSL@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FCNTL = @HAVE_FCNTL@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FMA = @HAVE_FMA@ HAVE_FMAF = @HAVE_FMAF@ HAVE_FMAL = @HAVE_FMAL@ HAVE_FMODF = @HAVE_FMODF@ HAVE_FMODL = @HAVE_FMODL@ HAVE_FREELOCALE = @HAVE_FREELOCALE@ HAVE_FREXPF = @HAVE_FREXPF@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETENTROPY = @HAVE_GETENTROPY@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETPASS = @HAVE_GETPASS@ HAVE_GETPROGNAME = @HAVE_GETPROGNAME@ HAVE_GETRANDOM = @HAVE_GETRANDOM@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETUMASK = @HAVE_GETUMASK@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_HYPOTF = @HAVE_HYPOTF@ HAVE_HYPOTL = @HAVE_HYPOTL@ HAVE_ILOGB = @HAVE_ILOGB@ HAVE_ILOGBF = @HAVE_ILOGBF@ HAVE_ILOGBL = @HAVE_ILOGBL@ HAVE_IMAXABS = @HAVE_IMAXABS@ HAVE_IMAXDIV = @HAVE_IMAXDIV@ HAVE_IMAXDIV_T = @HAVE_IMAXDIV_T@ HAVE_INITSTATE = @HAVE_INITSTATE@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_ISNAND = @HAVE_ISNAND@ HAVE_ISNANF = @HAVE_ISNANF@ HAVE_ISNANL = @HAVE_ISNANL@ HAVE_ISWBLANK = @HAVE_ISWBLANK@ HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LDEXPF = @HAVE_LDEXPF@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LOG10F = @HAVE_LOG10F@ HAVE_LOG10L = @HAVE_LOG10L@ HAVE_LOG1P = @HAVE_LOG1P@ HAVE_LOG1PF = @HAVE_LOG1PF@ HAVE_LOG1PL = @HAVE_LOG1PL@ HAVE_LOGBF = @HAVE_LOGBF@ HAVE_LOGBL = @HAVE_LOGBL@ HAVE_LOGF = @HAVE_LOGF@ HAVE_LOGL = @HAVE_LOGL@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ HAVE_MBRLEN = @HAVE_MBRLEN@ HAVE_MBRTOWC = @HAVE_MBRTOWC@ HAVE_MBSINIT = @HAVE_MBSINIT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ HAVE_MBTOWC = @HAVE_MBTOWC@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MEMSET_EXPLICIT = @HAVE_MEMSET_EXPLICIT@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MODFF = @HAVE_MODFF@ HAVE_MODFL = @HAVE_MODFL@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ HAVE_OPENAT = @HAVE_OPENAT@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_MEMALIGN = @HAVE_POSIX_MEMALIGN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@ HAVE_POWF = @HAVE_POWF@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_QSORT_R = @HAVE_QSORT_R@ HAVE_RAISE = @HAVE_RAISE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_REMAINDER = @HAVE_REMAINDER@ HAVE_REMAINDERF = @HAVE_REMAINDERF@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RINT = @HAVE_RINT@ HAVE_RINTL = @HAVE_RINTL@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SETSTATE = @HAVE_SETSTATE@ HAVE_SIGABBREV_NP = @HAVE_SIGABBREV_NP@ HAVE_SIGACTION = @HAVE_SIGACTION@ HAVE_SIGDESCR_NP = @HAVE_SIGDESCR_NP@ HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@ HAVE_SIGINFO_T = @HAVE_SIGINFO_T@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SIGSET_T = @HAVE_SIGSET_T@ HAVE_SINF = @HAVE_SINF@ HAVE_SINHF = @HAVE_SINHF@ HAVE_SINL = @HAVE_SINL@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_SQRTF = @HAVE_SQRTF@ HAVE_SQRTL = @HAVE_SQRTL@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRERRORNAME_NP = @HAVE_STRERRORNAME_NP@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOL = @HAVE_STRTOL@ HAVE_STRTOLD = @HAVE_STRTOLD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOUL = @HAVE_STRTOUL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_CDEFS_H = @HAVE_SYS_CDEFS_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_RANDOM_H = @HAVE_SYS_RANDOM_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TANF = @HAVE_TANF@ HAVE_TANHF = @HAVE_TANHF@ HAVE_TANL = @HAVE_TANL@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_TIMESPEC_GET = @HAVE_TIMESPEC_GET@ HAVE_TIMESPEC_GETRES = @HAVE_TIMESPEC_GETRES@ HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIME = @HAVE_UTIME@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_UTIME_H = @HAVE_UTIME_H@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WCPCPY = @HAVE_WCPCPY@ HAVE_WCPNCPY = @HAVE_WCPNCPY@ HAVE_WCRTOMB = @HAVE_WCRTOMB@ HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ HAVE_WCSCAT = @HAVE_WCSCAT@ HAVE_WCSCHR = @HAVE_WCSCHR@ HAVE_WCSCMP = @HAVE_WCSCMP@ HAVE_WCSCOLL = @HAVE_WCSCOLL@ HAVE_WCSCPY = @HAVE_WCSCPY@ HAVE_WCSCSPN = @HAVE_WCSCSPN@ HAVE_WCSDUP = @HAVE_WCSDUP@ HAVE_WCSFTIME = @HAVE_WCSFTIME@ HAVE_WCSLEN = @HAVE_WCSLEN@ HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ HAVE_WCSNCAT = @HAVE_WCSNCAT@ HAVE_WCSNCMP = @HAVE_WCSNCMP@ HAVE_WCSNCPY = @HAVE_WCSNCPY@ HAVE_WCSNLEN = @HAVE_WCSNLEN@ HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ HAVE_WCSPBRK = @HAVE_WCSPBRK@ HAVE_WCSRCHR = @HAVE_WCSRCHR@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ HAVE_WCSSPN = @HAVE_WCSSPN@ HAVE_WCSSTR = @HAVE_WCSSTR@ HAVE_WCSTOK = @HAVE_WCSTOK@ HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ HAVE_WCSXFRM = @HAVE_WCSXFRM@ HAVE_WCTRANS_T = @HAVE_WCTRANS_T@ HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ HAVE_WCTYPE_T = @HAVE_WCTYPE_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE_WINT_T = @HAVE_WINT_T@ HAVE_WMEMCHR = @HAVE_WMEMCHR@ HAVE_WMEMCMP = @HAVE_WMEMCMP@ HAVE_WMEMCPY = @HAVE_WMEMCPY@ HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ HAVE_WMEMPCPY = @HAVE_WMEMPCPY@ HAVE_WMEMSET = @HAVE_WMEMSET@ HAVE_XLOCALE_H = @HAVE_XLOCALE_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ ISYSTEM = @ISYSTEM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBPMULTITHREAD = @LIBPMULTITHREAD@ LIBPTHREAD = @LIBPTHREAD@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIB_GETRANDOM = @LIB_GETRANDOM@ LIB_HARD_LOCALE = @LIB_HARD_LOCALE@ LIB_MBRTOWC = @LIB_MBRTOWC@ LIB_SCHED_YIELD = @LIB_SCHED_YIELD@ LIB_SETLOCALE_NULL = @LIB_SETLOCALE_NULL@ LIMITS_H = @LIMITS_H@ LIPO = @LIPO@ LN_S = @LN_S@ LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ LOCALENAME_ENHANCE_LOCALE_FUNCS = @LOCALENAME_ENHANCE_LOCALE_FUNCS@ LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ LOCALE_JA = @LOCALE_JA@ LOCALE_ZH_CN = @LOCALE_ZH_CN@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MBRTOWC_LIB = @MBRTOWC_LIB@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NEXT_ASSERT_H = @NEXT_ASSERT_H@ NEXT_AS_FIRST_DIRECTIVE_ASSERT_H = @NEXT_AS_FIRST_DIRECTIVE_ASSERT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@ NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_UTIME_H = @NEXT_AS_FIRST_DIRECTIVE_UTIME_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ NEXT_FLOAT_H = @NEXT_FLOAT_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ NEXT_LIMITS_H = @NEXT_LIMITS_H@ NEXT_LOCALE_H = @NEXT_LOCALE_H@ NEXT_MATH_H = @NEXT_MATH_H@ NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_RANDOM_H = @NEXT_SYS_RANDOM_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_SYS_WAIT_H = @NEXT_SYS_WAIT_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NEXT_UTIME_H = @NEXT_UTIME_H@ NEXT_WCHAR_H = @NEXT_WCHAR_H@ NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ POSUB = @POSUB@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PRIPTR_PREFIX = @PRIPTR_PREFIX@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REPLACE_ACCESS = @REPLACE_ACCESS@ REPLACE_ACOSF = @REPLACE_ACOSF@ REPLACE_ALIGNED_ALLOC = @REPLACE_ALIGNED_ALLOC@ REPLACE_ASINF = @REPLACE_ASINF@ REPLACE_ATAN2F = @REPLACE_ATAN2F@ REPLACE_ATANF = @REPLACE_ATANF@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CBRTF = @REPLACE_CBRTF@ REPLACE_CBRTL = @REPLACE_CBRTL@ REPLACE_CEIL = @REPLACE_CEIL@ REPLACE_CEILF = @REPLACE_CEILF@ REPLACE_CEILL = @REPLACE_CEILL@ REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ REPLACE_COSF = @REPLACE_COSF@ REPLACE_COSHF = @REPLACE_COSHF@ REPLACE_CREAT = @REPLACE_CREAT@ REPLACE_CTIME = @REPLACE_CTIME@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_DUP3 = @REPLACE_DUP3@ REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ REPLACE_ERROR = @REPLACE_ERROR@ REPLACE_ERROR_AT_LINE = @REPLACE_ERROR_AT_LINE@ REPLACE_EXECL = @REPLACE_EXECL@ REPLACE_EXECLE = @REPLACE_EXECLE@ REPLACE_EXECLP = @REPLACE_EXECLP@ REPLACE_EXECV = @REPLACE_EXECV@ REPLACE_EXECVE = @REPLACE_EXECVE@ REPLACE_EXECVP = @REPLACE_EXECVP@ REPLACE_EXECVPE = @REPLACE_EXECVPE@ REPLACE_EXP2 = @REPLACE_EXP2@ REPLACE_EXP2L = @REPLACE_EXP2L@ REPLACE_EXPF = @REPLACE_EXPF@ REPLACE_EXPL = @REPLACE_EXPL@ REPLACE_EXPM1 = @REPLACE_EXPM1@ REPLACE_EXPM1F = @REPLACE_EXPM1F@ REPLACE_EXPM1L = @REPLACE_EXPM1L@ REPLACE_FABSL = @REPLACE_FABSL@ REPLACE_FACCESSAT = @REPLACE_FACCESSAT@ REPLACE_FCHMODAT = @REPLACE_FCHMODAT@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDATASYNC = @REPLACE_FDATASYNC@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FFSLL = @REPLACE_FFSLL@ REPLACE_FLOOR = @REPLACE_FLOOR@ REPLACE_FLOORF = @REPLACE_FLOORF@ REPLACE_FLOORL = @REPLACE_FLOORL@ REPLACE_FMA = @REPLACE_FMA@ REPLACE_FMAF = @REPLACE_FMAF@ REPLACE_FMAL = @REPLACE_FMAL@ REPLACE_FMOD = @REPLACE_FMOD@ REPLACE_FMODF = @REPLACE_FMODF@ REPLACE_FMODL = @REPLACE_FMODL@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FOPEN_FOR_FOPEN_GNU = @REPLACE_FOPEN_FOR_FOPEN_GNU@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREE = @REPLACE_FREE@ REPLACE_FREELOCALE = @REPLACE_FREELOCALE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FREXP = @REPLACE_FREXP@ REPLACE_FREXPF = @REPLACE_FREXPF@ REPLACE_FREXPL = @REPLACE_FREXPL@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETENTROPY = @REPLACE_GETENTROPY@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOADAVG = @REPLACE_GETLOADAVG@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETPASS = @REPLACE_GETPASS@ REPLACE_GETPASS_FOR_GETPASS_GNU = @REPLACE_GETPASS_FOR_GETPASS_GNU@ REPLACE_GETPROGNAME = @REPLACE_GETPROGNAME@ REPLACE_GETRANDOM = @REPLACE_GETRANDOM@ REPLACE_GETSUBOPT = @REPLACE_GETSUBOPT@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ REPLACE_HYPOT = @REPLACE_HYPOT@ REPLACE_HYPOTF = @REPLACE_HYPOTF@ REPLACE_HYPOTL = @REPLACE_HYPOTL@ REPLACE_ILOGB = @REPLACE_ILOGB@ REPLACE_ILOGBF = @REPLACE_ILOGBF@ REPLACE_ILOGBL = @REPLACE_ILOGBL@ REPLACE_IMAXABS = @REPLACE_IMAXABS@ REPLACE_IMAXDIV = @REPLACE_IMAXDIV@ REPLACE_INITSTATE = @REPLACE_INITSTATE@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_ISFINITE = @REPLACE_ISFINITE@ REPLACE_ISINF = @REPLACE_ISINF@ REPLACE_ISNAN = @REPLACE_ISNAN@ REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ REPLACE_ISWDIGIT = @REPLACE_ISWDIGIT@ REPLACE_ISWXDIGIT = @REPLACE_ISWXDIGIT@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LOG = @REPLACE_LOG@ REPLACE_LOG10 = @REPLACE_LOG10@ REPLACE_LOG10F = @REPLACE_LOG10F@ REPLACE_LOG10L = @REPLACE_LOG10L@ REPLACE_LOG1P = @REPLACE_LOG1P@ REPLACE_LOG1PF = @REPLACE_LOG1PF@ REPLACE_LOG1PL = @REPLACE_LOG1PL@ REPLACE_LOG2 = @REPLACE_LOG2@ REPLACE_LOG2F = @REPLACE_LOG2F@ REPLACE_LOG2L = @REPLACE_LOG2L@ REPLACE_LOGB = @REPLACE_LOGB@ REPLACE_LOGBF = @REPLACE_LOGBF@ REPLACE_LOGBL = @REPLACE_LOGBL@ REPLACE_LOGF = @REPLACE_LOGF@ REPLACE_LOGL = @REPLACE_LOGL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC_FOR_MALLOC_GNU = @REPLACE_MALLOC_FOR_MALLOC_GNU@ REPLACE_MALLOC_FOR_MALLOC_POSIX = @REPLACE_MALLOC_FOR_MALLOC_POSIX@ REPLACE_MBRLEN = @REPLACE_MBRLEN@ REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ REPLACE_MBSINIT = @REPLACE_MBSINIT@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MEMPCPY = @REPLACE_MEMPCPY@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKFIFOAT = @REPLACE_MKFIFOAT@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKNODAT = @REPLACE_MKNODAT@ REPLACE_MKOSTEMP = @REPLACE_MKOSTEMP@ REPLACE_MKOSTEMPS = @REPLACE_MKOSTEMPS@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_MODF = @REPLACE_MODF@ REPLACE_MODFF = @REPLACE_MODFF@ REPLACE_MODFL = @REPLACE_MODFL@ REPLACE_NAN = @REPLACE_NAN@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NEWLOCALE = @REPLACE_NEWLOCALE@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_OPEN = @REPLACE_OPEN@ REPLACE_OPENAT = @REPLACE_OPENAT@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_PIPE2 = @REPLACE_PIPE2@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_POSIX_MEMALIGN = @REPLACE_POSIX_MEMALIGN@ REPLACE_POSIX_OPENPT = @REPLACE_POSIX_OPENPT@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_QSORT_R = @REPLACE_QSORT_R@ REPLACE_RAISE = @REPLACE_RAISE@ REPLACE_RANDOM = @REPLACE_RANDOM@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_READLINKAT = @REPLACE_READLINKAT@ REPLACE_REALLOCARRAY = @REPLACE_REALLOCARRAY@ REPLACE_REALLOC_FOR_REALLOC_GNU = @REPLACE_REALLOC_FOR_REALLOC_GNU@ REPLACE_REALLOC_FOR_REALLOC_POSIX = @REPLACE_REALLOC_FOR_REALLOC_POSIX@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMAINDER = @REPLACE_REMAINDER@ REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RINTL = @REPLACE_RINTL@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_ROUND = @REPLACE_ROUND@ REPLACE_ROUNDF = @REPLACE_ROUNDF@ REPLACE_ROUNDL = @REPLACE_ROUNDL@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SETHOSTNAME = @REPLACE_SETHOSTNAME@ REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ REPLACE_SETSTATE = @REPLACE_SETSTATE@ REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ REPLACE_SIGNBIT_USING_BUILTINS = @REPLACE_SIGNBIT_USING_BUILTINS@ REPLACE_SINF = @REPLACE_SINF@ REPLACE_SINHF = @REPLACE_SINHF@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_SQRTF = @REPLACE_SQRTF@ REPLACE_SQRTL = @REPLACE_SQRTL@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPCPY = @REPLACE_STPCPY@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERRORNAME_NP = @REPLACE_STRERRORNAME_NP@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRFTIME = @REPLACE_STRFTIME@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRTOL = @REPLACE_STRTOL@ REPLACE_STRTOLD = @REPLACE_STRTOLD@ REPLACE_STRTOLL = @REPLACE_STRTOLL@ REPLACE_STRTOUL = @REPLACE_STRTOUL@ REPLACE_STRTOULL = @REPLACE_STRTOULL@ REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ REPLACE_TANF = @REPLACE_TANF@ REPLACE_TANHF = @REPLACE_TANHF@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TIMESPEC_GET = @REPLACE_TIMESPEC_GET@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ REPLACE_TRUNC = @REPLACE_TRUNC@ REPLACE_TRUNCATE = @REPLACE_TRUNCATE@ REPLACE_TRUNCF = @REPLACE_TRUNCF@ REPLACE_TRUNCL = @REPLACE_TRUNCL@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_TZSET = @REPLACE_TZSET@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIME = @REPLACE_UTIME@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ REPLACE_WCSFTIME = @REPLACE_WCSFTIME@ REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ REPLACE_WCSTOK = @REPLACE_WCSTOK@ REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ REPLACE_WCTOB = @REPLACE_WCTOB@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ REPLACE_WMEMPCPY = @REPLACE_WMEMPCPY@ REPLACE_WRITE = @REPLACE_WRITE@ REPLACE__EXIT = @REPLACE__EXIT@ SCHED_YIELD_LIB = @SCHED_YIELD_LIB@ SED = @SED@ SETLOCALE_NULL_LIB = @SETLOCALE_NULL_LIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TESTS_ENVIRONMENT_EXTRA = @TESTS_ENVIRONMENT_EXTRA@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_TIME_UTC = @TIME_H_DEFINES_TIME_UTC@ UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_DEFINES_STRUCT_TIMESPEC = @UNISTD_H_DEFINES_STRUCT_TIMESPEC@ UNISTD_H_HAVE_SYS_RANDOM_H = @UNISTD_H_HAVE_SYS_RANDOM_H@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSION_INFO = @VERSION_INFO@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@ WINDOWS_STAT_TIMESPEC = @WINDOWS_STAT_TIMESPEC@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ objdir = @objdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyextext = @pyextext@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = gnits ELISP_FILES = recode.el EXTRA_DIST = $(ELISP_FILES) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits contrib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits contrib/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: recode-3.7.15/contrib/Makefile.am0000644000175000017500000000151414355773256012247 # Makefile for Recode related contributions. # Copyright © 1997-2018 Free Software Foundation, Inc. # François Pinard # 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 3, 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, see . AUTOMAKE_OPTIONS = gnits ELISP_FILES = recode.el EXTRA_DIST = $(ELISP_FILES) recode-3.7.15/contrib/recode.el0000644000175000017500000005202614355772510011772 ;;; recode.el --- Outils divers autour des jeux de caractères nationaux. ;;; Copyright © 1995-1997 Progiciels Bourbeau-Pinard inc. ;;; François Pinard , Mars 1995. ;; Ce programme est un logiciel libre; vous pouvez le redistribuer ou le ;; modifier selon les termes de la License Publique Générale de GNU, publiée ;; par la Free Software Foundation (soit la version 3 ou soit, à votre ;; discrétion, toute version ultérieure). ;; Ce programme est distribué pour être utile, mais SANS AUCUNE GARANTIE; ;; sans même la garantie implicite qu'il est DE QUALITÉ LOYALE ET MARCHANDE ;; ou APPROPRIÉ POUR UN BUT PARTICULIER. Voir la Licence Publique Générale ;; de GNU pour plus de détails. ;; Vous devriez avoir reçu copie de la Licence Publique Générale de GNU ;; avec ce programme; sinon, voir . ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Les outils sont regroupés par thème fonctionnel, un par page. ;;; ;;; La documentation est au début de chacune de ces pages. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Ces outils ne fonctionnent pleinement qu'avec Emacs 19. Dans la ;;; mesure où ces corrections ne brisent rien qui fonctionne déjà, ;;; j'accepterai avec plaisir vos corrections pour les autres Emacs, ;;; mais je ne prendrai pas le temps de les développer moi-même. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Installation rapide. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Voici une recette d'installation rapide, à l'intention d'usagers ;;; placés dans un environnement où les administrateurs des systèmes ;;; ont une attitude amicale. Elle présume qu'ils ont déjà installé ;;; Emacs 19, metamail, procmail et recode dans le système, et qu'ils ;;; ont aussi placé charset.el, mime.el, rmailmime.el et metamail.el ;;; dans les répertoires déjà fouillés par Emacs pour son code LISP. ;;; Cela suffira probablement aux débrouillards. Je vous invite ;;; néanmoins à lire la documentation détaillée qui apparaît, dans les ;;; pages subséquentes de ce fichier. ;;; Voici donc, succintement, une liste des ajouts que vous avez à ;;; faire à quelques fichiers pour activer le tout au mieux (à mon ;;; avis). Il vous faut éliminer le «;;; » au début de chaque ligne. ;;; Dans ~/.procmailrc: ;;; ======================================================================> ;;; :0 fbw ;;; * ^Content-Transfer-Encoding:.*quoted-printable ;;; | recode /qp.. ;;; :0 Afhw ;;; | formail -i 'Content-Transfer-Encoding: 8bit' ;;; ======================================================================< ;;; Dans ~/.forward (remplacer "pinard" par votre login): ;;; ======================================================================> ;;; "|IFS=' ' && exec /usr/local/bin/procmail -f- || exit 75 #pinard" ;;; ======================================================================< ;;; Dans ~/.emacs: ;;; ======================================================================> ;;; (setq extended-charset t) ;;; (require 'charset) ;;; (standard-display-european 1) ;;; (require 'iso-syntax)) ;;; (global-set-key "\C-cB" 'recode-base64) ;;; (global-set-key "\C-cI" 'recode-ibmpc) ;;; ;; (global-set-key "\C-cL" 'recode-latin1) ;;; (global-set-key "\C-cM" 'recode-macintosh) ;;; (global-set-key "\C-cQ" 'recode-quoted-printable) ;;; (global-set-key "\C-cT" 'recode-texte) ;;; (global-set-key "\C-cE" 'toggle-extended-charset) ;;; (global-set-key "\C-cK" 'toggle-sentence-spacing) ;;; (global-set-key "\C-cL" 'toggle-sorting-charset) ;;; (global-set-key "\C-cR" 'toggle-case-replace) ;;; (global-set-key "\C-cS" 'toggle-case-fold-search) ;;; ======================================================================< ;;; Assurez-vous que ~/.forward et ~/.procmailrc sont lisibles par tout le ;;; monde, avec la commande: ;;; chmod 644 ~/.forward ~/.procmailrc ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Préparation générale. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Pour préparer Emacs à travailler en français avec vous et avec ;;; l'aide des outils documentés ici, il faut copier ce fichier ;;; «recode.el» dans un répertoire où vous placez vos fichiers «.el». ;;; Si vous n'avez pas un tel répertoire, fabriquez-vous en un. Pour ;;; un, j'utilise ~pinard/share/site-lisp/ à cet effet. Faites le ;;; remplacement qui s'impose dans l'exemple qui suit. Ajouter les ;;; lignes suivantes dans votre fichier .emacs (sans les «;;;»), ou si ;;; vous n'en avez pas, créez-le au besoin: ;;; (setq load-path ;;; (cons (expand-file-name "~pinard/share/site-lisp") ;;; load-path)) ;;; (setq extended-charset t) ;;; (standard-display-european 1) ;;; (require 'iso-syntax) ;;; Vous n'avez pas à ajouter les lignes suivantes: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Décodages et réencodages de régions. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Fonctionne avec Emacs 18, Emacs 19, et probablement XEmacs. ;;; Les outils suivants exigent la préinstallation de recode, qui peut être ;;; obtenu de gnu.org, dans le répertoire pub/gnu, sous le nom ;;; recode-3.4.tar.gz ou mieux, de ftp.iro.umontreal.ca, dans le répertoire ;;; pub/contrib/pinard/gnu, sous le nom recode-3.4d.tar.gz. ;;; Pour décoder une région Emacs vers le Latin-1, il faut utiliser ;;; l'une des commandes suivantes (attention aux majuscules): ;;; C-c B si le texte est codé en Base64 de MIME ;;; C-c I si le texte est codé en code d'IBM-PC ;;; C-c L si le texte est codé en Latin-1 (avec demacs sur MSDOS) ;;; C-c M si le texte est codé en code de Macintosh ;;; C-c Q si le texte est codé en quoted-printable ;;; C-c T si le texte est codé en texte (ou easy-french) ;;; Pour encoder une région de Latin-1 vers l'un des codes indiqués, ;;; il suffit de préfixer la commande par «C-u», ce qui a pour effet ;;; de provoquer le codage contraire, si l'on peut dire. Undo («C-x u» ;;; ou «C-_») permet de reculer sur un mauvais choix de décodage. ;;; Pour décoder un message lu par RMAIL, il faut utiliser les ;;; commandes d'édition de message du format RMAIL: d'abord «w» ;;; pour éditer, «C-x h» pour placer la région autour du message ;;; entier, puis la commande de décodage, et «C-c C-c» pour finir. ;;; Par exemple, pour décoder un message en quoted-printable, faire: ;;; w C-x h C-c Q C-c C-c ;;; Ces techniques n'ajustent pas les en-têtes MIME du message. ;;; Pour toutes ces fonctions, dans votre .emacs, placez: ;;; (global-set-key "\C-cB" 'recode-base64) ;;; (global-set-key "\C-cI" 'recode-ibmpc) ;;; ;; (global-set-key "\C-cL" 'recode-latin1) ;;; (global-set-key "\C-cM" 'recode-macintosh) ;;; (global-set-key "\C-cQ" 'recode-quoted-printable) ;;; (global-set-key "\C-cT" 'recode-texte) ;;; (autoload 'recode-base64 "recode" nil t) ;;; (autoload 'recode-ibmpc "recode" nil t) ;;; (autoload 'recode-latin1 "recode" nil t) ;;; (autoload 'recode-macintosh "recode" nil t) ;;; (autoload 'recode-quoted-printable "recode" nil t) ;;; (autoload 'recode-texte "recode" nil t) ;;; Vous n'avez pas à ajouter les lignes suivantes: (defun recode-base64 (flag) "Décoder la région courante qui se trouve déjà en base64 de MIME. Si cette commande est préfixée (par «C-u»), encoder la région courante en base64 de MIME." (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "../64" "/64..")) t) (exchange-point-and-mark)) (defun recode-ibmpc (flag) "Décoder la région courante qui se trouve déjà exprimée avec le jeu de caractères de l'IBM-PC. Si cette commande est préfixée (par «C-u»), encoder la région courante dans le jeu de caractères de l'IBM-PC." (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "..437" "437..")) t) (exchange-point-and-mark)) (defun recode-latin1 (flag) "Décoder la région courante qui se trouve déjà exprimée avec le jeu de caractères ISO 8859-1 (ou Latin-1). Si cette commande est préfixée (par «C-u»), encoder la région courante dans le jeu de caractères ISO 8859-1 (ou Latin-1)." (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "..l1" "l1..")) t) (exchange-point-and-mark)) (defun recode-macintosh (flag) "Décoder la région courante qui se trouve déjà exprimée avec le jeu de caractères du Macintosh. Si cette commande est préfixée (par «C-u»), encoder la région courante dans le jeu de caractères du Macintosh." (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "..mac" "mac..")) t) (exchange-point-and-mark)) (defun recode-quoted-printable (flag) "Décoder la région courante qui se trouve déjà en quoted-printable de MIME. Si cette commande est préfixée (par «C-u»), encoder la région courante en quoted-printable de MIME." (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "../qp" "/qp..")) t) (exchange-point-and-mark)) (defun recode-texte (flag) "Décoder la région courante qui se trouve déjà exprimée avec la convention Easy French, où l'accent est placée après la lettre plutôt qu'au-dessus. Si cette commande est préfixée (par «C-u»), encoder la région courante avec la convention Easy French." (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "..txte" "txte..")) t) (exchange-point-and-mark)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Affichage, fouilles, remplacements et tris français. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Fonctionne généralement avec Emacs 18 sauf pour «C-c K»; «C-c E» ;;; ne fonctionne que des versions spécialement modifiées par moi, ;;; versions plutôt rares de nos jours. Fonctionne avec Emacs 19. ;;; J'ignore pour XEmacs. ;;; Ces outils contrôlent l'effet de la capitalisation et des diacritiques ;;; sur l'affichage, sur les fouilles avec ou sans remplacement, et ;;; sur les tris dans Emacs. Notez les majuscules dans les clefs de ;;; commande décrites ci-après. ;;; La commande «C-c E» est une bascule entre l'affichage français ou ;;; l'affichage avec des séquences d'échappement en octal, dans les ;;; fenêtres de Emacs. ;;; La commande «C-c S» est une bascule entre le fait que les divers ;;; outils de fouilles de Emacs ignoreront, ou non, la distinction ;;; entre majuscules et minuscules. Les diacritiques ne sont pas ignorés. ;;; La commande «C-c R» est une bascule entre le fait que les ;;; commandes de fouille et remplacement de Emacs essaient, ou non, de ;;; rétablir dans la chaîne remplacée la capitalisation de la chaîne ;;; appariant le gabarit de fouille. Les diacritiques ne sont pas ignorés. ;;; La commande «C-c K» est une bascule entre le fait que les ;;; commandes de tri de Emacs utiliseront, ou non, l'ordre ;;; lexicographique français. Dans les comparaisons françaises, les ;;; diacritiques ne sont pris en considération que si les chaînes comparées ;;; sont par ailleurs identiques. Les commandes Emacs affectées par ;;; cette bascule sont: ;;; Fonction Emacs Unité de tri Clef ;;; sort-lines lignes toute la ligne ;;; sort-columns lignes le contenu entre deux colonnes ;;; sort-fields lignes le champ indiqué en argument ;;; sort-pages pages toute la page ;;; sort-paragraphs paragraphes tout le paragraphe ;;; sort-regexp-fields occurrences toute l'occurrence ou \N ;;; Pour toutes ces fonctions, dans votre .emacs, placez: ;;; (global-set-key "\C-cE" 'toggle-extended-charset) ;;; (global-set-key "\C-cK" 'toggle-sentence-spacing) ;;; (global-set-key "\C-cL" 'toggle-sorting-charset) ;;; (global-set-key "\C-cR" 'toggle-case-replace) ;;; (global-set-key "\C-cS" 'toggle-case-fold-search) ;;; (autoload 'toggle-extended-charset "charset" nil t) ;;; (autoload 'toggle-sentence-spacing "charset" nil t) ;;; (autoload 'toggle-sorting-charset "charset" nil t) ;;; (autoload 'toggle-case-replace "charset" nil t) ;;; (autoload 'toggle-case-fold-search "charset" nil t) ;;; Vous n'avez pas à ajouter les lignes suivantes: (defun toggle-variable (variable message-on message-off) (if (eval variable) (progn (set variable nil) (message message-off)) (set variable t) (message message-on))) (defun toggle-extended-charset () "Basculer entre le mode d'affichage 8bit pour l'ISO 8859-1 (ou Latin-1) et le mode d'affichage 7bit, où les caractères dépassant 127 sont exprimés par un «\\» suivi de la valeur octale du caractère." (interactive) (toggle-variable 'extended-charset "Mode d'affichage 8bit pour l'ISO Latin-1" "Mode d'affichage 7bit pour l'ASCII") (standard-display-european (if extended-charset 1 -1)) (redraw-display)) ;; N'est utile que sur des versions récentes de Emacs. 1995-05-04. ;; (defun toggle-sentence-spacing () "Basculer entre deux espaces requis, ou un espace suffisant, à la fin d'une phrase, pour les commandes de GNU Emacs opérant sur des phrases." (interactive) (toggle-variable 'sentence-end-double-space "Plus d'un espace requis pour terminer une phrase" "Une fin de phrase peut n'être suivie que d'un espace")) (defun toggle-sorting-charset () "Basculer l'ordre lexicographique utilisé pour les tris entre la convention utilisée pour ordonner des mots français, et la convention se basant uniquement sur la valeur numérique binaire des caractères." (interactive) (toggle-variable 'sorting-charset "Tris en ordre lexicographique français" "Tris en ordre lexicographique binaire") (charset-sorts sorting-charset)) (defun toggle-case-fold-search () "Basculer entre le repli des majuscules/minuscules durant les fouilles, et l'absence de tels replis." (interactive) (toggle-variable 'case-fold-search "Fouilles avec repli majuscules/minuscules" "Fouilles sans repli majuscules/minuscules")) (defun toggle-case-replace () "Basculer entre le fait que les remplacements cherchent, ou non, à réajuster les majuscules/minuscules selon la capitalisation de chaque chaîne à remplacer." (interactive) (toggle-variable 'case-replace "Remplacements avec majuscules/minuscules réajustées" "Remplacements sans ajustement de majuscule/minuscule")) (setq charset-to-base (concat "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0ABCDEFGHIJKLMNOPQRSTUVWXYZ\0\0\0\0\0" "\0abcdefghijklmnopqrstuvwxyz\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "AAAAAAACEEEEIIII\0NOOOOO\0OUUUUY\0\0" "aaaaaaaceeeeiiii\0nooooo\0ouuuuy\0y")) (setq charset-to-diac (concat "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0" "\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\3\2\4\6\5\8\1\7\3\2\4\5\3\2\4\5\0\6\3\2\4\6\5\0\9\3\2\4\5\2\0\0" "\3\2\4\6\5\8\1\7\3\2\4\5\3\2\4\5\0\6\3\2\4\6\5\0\9\3\2\4\5\2\0\0")) (let ((counter 0)) (while (< counter 256) (if (= (aref charset-to-base counter) 0) (aset charset-to-base counter counter)) (setq counter (1+ counter)))) (defvar sorting-charset nil) (or (fboundp 'builtin-compare-buffer-substrings) (fset 'builtin-compare-buffer-substrings (symbol-function 'compare-buffer-substrings))) (defun charset-compare-buffer-substrings (left-buffer left-start left-end right-buffer right-start right-end) (or left-buffer (setq left-buffer (current-buffer))) (or right-buffer (setq right-buffer (current-buffer))) (let (lstart lend rstart rend result) (save-excursion ;; Préparer le tampon de gauche avec les bases. (set-buffer charset-sorts-left-buffer) (erase-buffer) (insert-buffer-substring left-buffer left-start left-end) (setq lstart (point-min)) (setq lend (point-max)) (translate-region lstart lend charset-to-base) (and case-fold-search (upcase-region lstart lend)) ;; Préparer le tampon de droite avec les bases. (set-buffer charset-sorts-right-buffer) (erase-buffer) (insert-buffer-substring right-buffer right-start right-end) (setq rstart (point-min)) (setq rend (point-max)) (translate-region rstart rend charset-to-base) (and case-fold-search (upcase-region rstart rend)) ;; Comparer les bases. (setq result (builtin-compare-buffer-substrings charset-sorts-left-buffer lstart lend charset-sorts-right-buffer rstart rend)) (if (= result 0) (progn ;; Préparer le tampon de gauche avec les diacritiques. (set-buffer charset-sorts-left-buffer) (erase-buffer) (insert-buffer-substring left-buffer left-start left-end) (setq lstart (point-min)) (setq lend (point-max)) (translate-region lstart lend charset-to-diac) ;; Préparer le tampon de droite avec les diacritiques. (set-buffer charset-sorts-right-buffer) (erase-buffer) (insert-buffer-substring right-buffer right-start right-end) (setq rstart (point-min)) (setq rend (point-max)) (translate-region rstart rend charset-to-diac) ;; Comparer les diacritiques. (setq result (builtin-compare-buffer-substrings charset-sorts-left-buffer lstart lend charset-sorts-right-buffer rstart rend))))) ;; Retourner le résultat de la comparaison. result)) ;;; Faire en sorte que les tris utilisent l'ordre lexicographique ;;; français sous-jacent à l'ISO Latin-1. Ne comparer les ;;; diacritiques qu'en dernier ressort, lorsque la comparaison donne ;;; égal par ailleurs. Un argument nil rétablit le traitement ;;; implicite du départ. (defun charset-sorts (latin1) (if latin1 (progn (fset 'compare-buffer-substrings 'charset-compare-buffer-substrings) (setq charset-sorts-left-buffer (get-buffer-create "*Latin1 sorts left*")) (setq charset-sorts-right-buffer (get-buffer-create "*Latin1 sorts right*"))) (fset 'compare-buffer-substrings 'builtin-compare-buffer-substrings) (kill-buffer charset-sorts-left-buffer) (kill-buffer charset-sorts-right-buffer))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Interfaces pour les codages MIME. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Fonctionne avec Emacs 19. J'ignore pour les autres. ;;; Trois produits différents vous faciliteront l'usage de MIME dans ;;; Emacs: ce sont metamail, procmail et emacs-mime. Nous les ;;; discutons séparément. ;;; -------- ;;; ;;; metamail ;;; ;;; -------- ;;; ;;; Le metamail de Nathaniel Boreinstein est absolument requis, pour ;;; fournir, entre autres choses, les convertions de format de base. ;;; Nous en avons déjà discuté, ailleurs dans ce fichier. metamail ;;; est disponible au site thumper.bellcore.com, dans le répertoire ;;; pub/nsb, sous le nom mm2.7.tar.Z. Il suffit de l'installer pour ;;; que les binaires soient accessibles de votre PATH. ;;; -------- ;;; ;;; procmail ;;; ;;; -------- ;;; ;;; Le procmail de Stephen R. van den Berg, n'est pas requis, mais ;;; c'est un outil luxueux que je vous recommande beaucoup. Il ;;; convertira automatiquement les messages MIME en quoted-printable, ;;; format simple mais habituel, directement en Latin-1, avant même ;;; que vous récupériez vos messages. procmail peut être obtenu de ;;; ftp.informatik.rwth-aachen.de, dans pub/packages/procmail, sous le ;;; nom procmail.tar.gz. Il vous suffit de l'installer quelque part. ;;; Pour activer procmail, vous n'avez rien à faire dans Emacs à ;;; proprement parler. Fabriquez-vous un fichier ~/.forward, lisible ;;; par tout le monde, et contenant (y compris les guillemets): ;;; "|IFS=' ' && exec /usr/local/bin/procmail -f- || exit 75 #pinard" ;;; en remplacant «pinard» par votre nom login et «/usr/local/bin» par ;;; le répertoire contenant le binaire exécutable de procmail. ;;; Fabriquez-vous ensuite un fichier ~/.procmailrc contenant: ;;; :0 fbw ;;; * ^Content-Transfer-Encoding:.*quoted-printable ;;; | recode /qp.. ;;; :0 Afhw ;;; | formail -i 'Content-Transfer-Encoding: 8bit' ;;; Il est possible qu'il faille remplacer les appels à «recode» et ;;; «formail» (distribué dans procmail) en y adjoignant le *path* complet, ;;; puisque ces programmes seront exécutés par le système en dehors de votre ;;; environnement habituel. ;;; Compatibilité avec versions précédentes de ce fichier. (fset 'toggle-sorting-latin1 (symbol-function 'toggle-sorting-charset)) ;;; Annoncer que le chargement est complet. (provide 'recode) recode-3.7.15/contrib/README0000644000175000017500000000311613226751246011062 .. role:: code(strong) .. role:: file(literal) ======================================= README file for :file:`recode/contrib/` ======================================= The :file:`contrib/` directory of the Recode distribution contains a few miscellaneous tools, which have been collected here and there, a bit randomly, for your possible entertainment or use. Beware that nothing here is supported by the Recode maintainer, you might have to contact the authors directly to get support. There is no guarantee that any file in this directory will still exist in subsequent releases. Finally, there is no guarantee either that I will accept to include contributions, unless I find them very good or very small. But I'm quite willing to give `URL pointers`__ to other tools. __ /index.html#external-pointers To the best of my knowledge, all included files are free, and already available widely by other means. I did not collect any kind legalistic papers proving that the contained material is indeed free. In case of a dispute, or at the mere request of the author, I'll quickly remove any dubious material. So, do not consider the files here as being as *safe* as the things you usually get from the Free Software Foundation. Please drop me a note about what you found to be useful, in here, to help me at deciding what should be kept and what should go away. + Emacs Lisp files + :file:`recode.el` This is a miscellaneous collection of tools, documented in French, for using Recode from Emacs, when Latin-1 is in use. Submitted by François Pinard , 1994-12. recode-3.7.15/lib/0000755000175000017500000000000014766021045007364 5recode-3.7.15/lib/setlocale_null.h0000644000175000017500000000666414371444255012502 /* Query the name of the current global locale. Copyright (C) 2019-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2019. */ #ifndef _SETLOCALE_NULL_H #define _SETLOCALE_NULL_H #include #include "arg-nonnull.h" #ifdef __cplusplus extern "C" { #endif /* Recommended size of a buffer for a locale name for a single category. On glibc systems, you can have locale names that are relative file names; assume a maximum length 256. In native Windows, in 2018 the longest locale name was of length 58 ("FYRO Macedonian_Former Yugoslav Republic of Macedonia.1251"). */ #define SETLOCALE_NULL_MAX (256+1) /* Recommended size of a buffer for a locale name with all categories. On glibc systems, you can have locale names that are relative file names; assume maximum length 256 for each. There are 12 categories; so, the maximum total length is 148+12*256. In native Windows, there are 5 categories, and the maximum total length is 55+5*58. */ #define SETLOCALE_NULL_ALL_MAX (148+12*256+1) /* setlocale_null_r (CATEGORY, BUF, BUFSIZE) is like setlocale (CATEGORY, NULL), except that - it is guaranteed to be multithread-safe, - it returns the resulting locale category name or locale name in the user-supplied buffer BUF, which must be BUFSIZE bytes long. The recommended minimum buffer size is - SETLOCALE_NULL_MAX for CATEGORY != LC_ALL, and - SETLOCALE_NULL_ALL_MAX for CATEGORY == LC_ALL. The return value is an error code: 0 if the call is successful, EINVAL if CATEGORY is invalid, or ERANGE if BUFSIZE is smaller than the length needed size (including the trailing NUL byte). In the latter case, a truncated result is returned in BUF, but still NUL-terminated if BUFSIZE > 0. For this call to be multithread-safe, *all* calls to setlocale (CATEGORY, NULL) in all other threads must have been converted to use setlocale_null_r or setlocale_null as well, and the other threads must not make other setlocale invocations (since changing the global locale has side effects on all threads). */ extern int setlocale_null_r (int category, char *buf, size_t bufsize) _GL_ARG_NONNULL ((2)); /* setlocale_null (CATEGORY) is like setlocale (CATEGORY, NULL), except that it is guaranteed to be multithread-safe. The return value is NULL if CATEGORY is invalid. For this call to be multithread-safe, *all* calls to setlocale (CATEGORY, NULL) in all other threads must have been converted to use setlocale_null_r or setlocale_null as well, and the other threads must not make other setlocale invocations (since changing the global locale has side effects on all threads). */ extern const char *setlocale_null (int category); #ifdef __cplusplus } #endif #endif /* _SETLOCALE_NULL_H */ recode-3.7.15/lib/itold.c0000644000175000017500000000203214371444255010564 /* Replacement for 'int' to 'long double' conversion routine. Copyright (C) 2011-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2011. This file 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. This file 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 . */ #include /* Specification. */ #include void _Qp_itoq (long double *result, int a) { /* Convert from 'int' to 'double', then from 'double' to 'long double'. */ *result = (double) a; } recode-3.7.15/lib/signbitl.c0000644000175000017500000000416414371444255011274 /* signbit() macro: Determine the sign bit of a floating-point number. Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include #include #include "isnanl-nolibm.h" #include "float+.h" #ifdef gl_signbitl_OPTIMIZED_MACRO # undef gl_signbitl #endif int gl_signbitl (long double arg) { #if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT /* The use of a union to extract the bits of the representation of a 'long double' is safe in practice, despite of the "aliasing rules" of C99, because the GCC docs say "Even with '-fstrict-aliasing', type-punning is allowed, provided the memory is accessed through the union type." and similarly for other compilers. */ # define NWORDS \ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) union { long double value; unsigned int word[NWORDS]; } m; m.value = arg; return (m.word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1; #elif HAVE_COPYSIGNL_IN_LIBC return copysignl (1.0L, arg) < 0; #else /* This does not do the right thing for NaN, but this is irrelevant for most use cases. */ if (isnanl (arg)) return 0; if (arg < 0.0L) return 1; else if (arg == 0.0L) { /* Distinguish 0.0L and -0.0L. */ static long double plus_zero = 0.0L; long double arg_mem = arg; return (memcmp (&plus_zero, &arg_mem, SIZEOF_LDBL) != 0); } else return 0; #endif } recode-3.7.15/lib/isnand-nolibm.h0000644000175000017500000000230614371444255012214 /* Test for NaN that does not need libm. Copyright (C) 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #if HAVE_ISNAND_IN_LIBC /* Get declaration of isnan macro. */ # include # if (__GNUC__ >= 4) || (__clang_major__ >= 4) /* GCC >= 4.0 and clang provide a type-generic built-in for isnan. */ # undef isnand # define isnand(x) __builtin_isnan ((double)(x)) # else # undef isnand # define isnand(x) isnan ((double)(x)) # endif #else /* Test whether X is a NaN. */ # undef isnand # define isnand rpl_isnand extern int isnand (double x); #endif recode-3.7.15/lib/stat-time.c0000644000175000017500000000152014371444255011361 /* stat-related time functions. Copyright (C) 2012-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #define _GL_STAT_TIME_INLINE _GL_EXTERN_INLINE #include "stat-time.h" recode-3.7.15/lib/binary-io.h0000644000175000017500000000462014371444255011354 /* Binary mode I/O. Copyright (C) 2001, 2003, 2005, 2008-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _BINARY_H #define _BINARY_H /* For systems that distinguish between text and binary I/O. O_BINARY is guaranteed by the gnulib . */ #include /* The MSVC7 doesn't like to be included after '#define fileno ...', so we include it here first. */ #include #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef BINARY_IO_INLINE # define BINARY_IO_INLINE _GL_INLINE #endif #if O_BINARY # if defined __EMX__ || defined __DJGPP__ || defined __CYGWIN__ # include /* declares setmode() */ # define __gl_setmode setmode # else # define __gl_setmode _setmode # undef fileno # define fileno _fileno # endif #else /* On reasonable systems, binary I/O is the only choice. */ /* Use a function rather than a macro, to avoid gcc warnings "warning: statement with no effect". */ BINARY_IO_INLINE int __gl_setmode (_GL_UNUSED int fd, _GL_UNUSED int mode) { return O_BINARY; } #endif /* Set FD's mode to MODE, which should be either O_TEXT or O_BINARY. Return the old mode if successful, -1 (setting errno) on failure. Ordinarily this function would be called 'setmode', since that is its old name on MS-Windows, but it is called 'set_binary_mode' here to avoid colliding with a BSD function of another name. */ #if defined __DJGPP__ || defined __EMX__ extern int set_binary_mode (int fd, int mode); #else BINARY_IO_INLINE int set_binary_mode (int fd, int mode) { return __gl_setmode (fd, mode); } #endif /* This macro is obsolescent. */ #define SET_BINARY(fd) ((void) set_binary_mode (fd, O_BINARY)) _GL_INLINE_HEADER_END #endif /* _BINARY_H */ recode-3.7.15/lib/fd-hook.c0000644000175000017500000000702514371444255011007 /* Hook for making file descriptor functions close(), ioctl() extensible. Copyright (C) 2009-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2009. This file 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. This file 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 . */ #include /* Specification. */ #include "fd-hook.h" #include /* Currently, this entire code is only needed for the handling of sockets on native Windows platforms. */ #if WINDOWS_SOCKETS /* The first and last link in the doubly linked list. Initially the list is empty. */ static struct fd_hook anchor = { &anchor, &anchor, NULL, NULL }; int execute_close_hooks (const struct fd_hook *remaining_list, gl_close_fn primary, int fd) { if (remaining_list == &anchor) /* End of list reached. */ return primary (fd); else return remaining_list->private_close_fn (remaining_list->private_next, primary, fd); } int execute_all_close_hooks (gl_close_fn primary, int fd) { return execute_close_hooks (anchor.private_next, primary, fd); } int execute_ioctl_hooks (const struct fd_hook *remaining_list, gl_ioctl_fn primary, int fd, int request, void *arg) { if (remaining_list == &anchor) /* End of list reached. */ return primary (fd, request, arg); else return remaining_list->private_ioctl_fn (remaining_list->private_next, primary, fd, request, arg); } int execute_all_ioctl_hooks (gl_ioctl_fn primary, int fd, int request, void *arg) { return execute_ioctl_hooks (anchor.private_next, primary, fd, request, arg); } void register_fd_hook (close_hook_fn close_hook, ioctl_hook_fn ioctl_hook, struct fd_hook *link) { if (close_hook == NULL) close_hook = execute_close_hooks; if (ioctl_hook == NULL) ioctl_hook = execute_ioctl_hooks; if (link->private_next == NULL && link->private_prev == NULL) { /* Add the link to the doubly linked list. */ link->private_next = anchor.private_next; link->private_prev = &anchor; link->private_close_fn = close_hook; link->private_ioctl_fn = ioctl_hook; anchor.private_next->private_prev = link; anchor.private_next = link; } else { /* The link is already in use. */ if (link->private_close_fn != close_hook || link->private_ioctl_fn != ioctl_hook) abort (); } } void unregister_fd_hook (struct fd_hook *link) { struct fd_hook *next = link->private_next; struct fd_hook *prev = link->private_prev; if (next != NULL && prev != NULL) { /* The link is in use. Remove it from the doubly linked list. */ prev->private_next = next; next->private_prev = prev; /* Clear the link, to mark it unused. */ link->private_next = NULL; link->private_prev = NULL; link->private_close_fn = NULL; link->private_ioctl_fn = NULL; } } #endif recode-3.7.15/lib/sys_stat.in.h0000644000175000017500000006466714371444255011762 /* Provide a more complete sys/stat.h header file. Copyright (C) 2005-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Eric Blake, Paul Eggert, and Jim Meyering. */ /* This file is supposed to be used on platforms where is incomplete. It is intended to provide definitions and prototypes needed by an application. Start with what the system provides. */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_system_sys_stat_h /* Special invocation convention. */ #@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_SYS_STAT_H /* Get nlink_t. May also define off_t to a 64-bit type on native Windows. */ #include /* Get struct timespec. */ #include /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@ #ifndef _@GUARD_PREFIX@_SYS_STAT_H #define _@GUARD_PREFIX@_SYS_STAT_H /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Before doing "#define mknod rpl_mknod" below, we need to include all headers that may declare mknod(). OS/2 kLIBC declares mknod() in , not in . */ #ifdef __KLIBC__ # include #endif /* Before doing "#define mkdir rpl_mkdir" below, we need to include all headers that may declare mkdir(). Native Windows platforms declare mkdir in and/or , not in . */ #if defined _WIN32 && ! defined __CYGWIN__ # include /* mingw32, mingw64 */ # include /* mingw64, MSVC 9 */ #endif /* Native Windows platforms declare umask() in . */ #if 0 && (defined _WIN32 && ! defined __CYGWIN__) # include #endif /* Large File Support on native Windows. */ #if @WINDOWS_64_BIT_ST_SIZE@ # define stat _stati64 #endif /* Optionally, override 'struct stat' on native Windows. */ #if @GNULIB_OVERRIDES_STRUCT_STAT@ # undef stat # if @GNULIB_STAT@ # define stat rpl_stat # else /* Provoke a clear link error if stat() is used as a function and module 'stat' is not in use. */ # define stat stat_used_without_requesting_gnulib_module_stat # endif # if !GNULIB_defined_struct_stat struct stat { dev_t st_dev; ino_t st_ino; mode_t st_mode; nlink_t st_nlink; # if 0 uid_t st_uid; # else /* uid_t is not defined by default on native Windows. */ short st_uid; # endif # if 0 gid_t st_gid; # else /* gid_t is not defined by default on native Windows. */ short st_gid; # endif dev_t st_rdev; off_t st_size; # if 0 blksize_t st_blksize; blkcnt_t st_blocks; # endif # if @WINDOWS_STAT_TIMESPEC@ struct timespec st_atim; struct timespec st_mtim; struct timespec st_ctim; # else time_t st_atime; time_t st_mtime; time_t st_ctime; # endif }; # if @WINDOWS_STAT_TIMESPEC@ # define st_atime st_atim.tv_sec # define st_mtime st_mtim.tv_sec # define st_ctime st_ctim.tv_sec /* Indicator, for gnulib internal purposes. */ # define _GL_WINDOWS_STAT_TIMESPEC 1 # endif # define GNULIB_defined_struct_stat 1 # endif /* Other possible values of st_mode. */ # if 0 # define _S_IFBLK 0x6000 # endif # if 0 # define _S_IFLNK 0xA000 # endif # if 0 # define _S_IFSOCK 0xC000 # endif #endif #ifndef S_IFIFO # ifdef _S_IFIFO # define S_IFIFO _S_IFIFO # endif #endif #ifndef S_IFMT # define S_IFMT 0170000 #endif #if STAT_MACROS_BROKEN # undef S_ISBLK # undef S_ISCHR # undef S_ISDIR # undef S_ISFIFO # undef S_ISLNK # undef S_ISNAM # undef S_ISMPB # undef S_ISMPC # undef S_ISNWK # undef S_ISREG # undef S_ISSOCK #endif #ifndef S_ISBLK # ifdef S_IFBLK # define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) # else # define S_ISBLK(m) 0 # endif #endif #ifndef S_ISCHR # ifdef S_IFCHR # define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) # else # define S_ISCHR(m) 0 # endif #endif #ifndef S_ISDIR # ifdef S_IFDIR # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) # else # define S_ISDIR(m) 0 # endif #endif #ifndef S_ISDOOR /* Solaris 2.5 and up */ # define S_ISDOOR(m) 0 #endif #ifndef S_ISFIFO # ifdef S_IFIFO # define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) # else # define S_ISFIFO(m) 0 # endif #endif #ifndef S_ISLNK # ifdef S_IFLNK # define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) # else # define S_ISLNK(m) 0 # endif #endif #ifndef S_ISMPB /* V7 */ # ifdef S_IFMPB # define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB) # define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC) # else # define S_ISMPB(m) 0 # define S_ISMPC(m) 0 # endif #endif #ifndef S_ISMPX /* AIX */ # define S_ISMPX(m) 0 #endif #ifndef S_ISNAM /* Xenix */ # ifdef S_IFNAM # define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM) # else # define S_ISNAM(m) 0 # endif #endif #ifndef S_ISNWK /* HP/UX */ # ifdef S_IFNWK # define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK) # else # define S_ISNWK(m) 0 # endif #endif #ifndef S_ISPORT /* Solaris 10 and up */ # define S_ISPORT(m) 0 #endif #ifndef S_ISREG # ifdef S_IFREG # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) # else # define S_ISREG(m) 0 # endif #endif #ifndef S_ISSOCK # ifdef S_IFSOCK # define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) # else # define S_ISSOCK(m) 0 # endif #endif #ifndef S_TYPEISMQ # define S_TYPEISMQ(p) 0 #endif #ifndef S_TYPEISTMO # define S_TYPEISTMO(p) 0 #endif #ifndef S_TYPEISSEM # ifdef S_INSEM # define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM) # else # define S_TYPEISSEM(p) 0 # endif #endif #ifndef S_TYPEISSHM # ifdef S_INSHD # define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD) # else # define S_TYPEISSHM(p) 0 # endif #endif /* high performance ("contiguous data") */ #ifndef S_ISCTG # define S_ISCTG(p) 0 #endif /* Cray DMF (data migration facility): off line, with data */ #ifndef S_ISOFD # define S_ISOFD(p) 0 #endif /* Cray DMF (data migration facility): off line, with no data */ #ifndef S_ISOFL # define S_ISOFL(p) 0 #endif /* 4.4BSD whiteout */ #ifndef S_ISWHT # define S_ISWHT(m) 0 #endif /* If any of the following are undefined, define them to their de facto standard values. */ #if !S_ISUID # define S_ISUID 04000 #endif #if !S_ISGID # define S_ISGID 02000 #endif /* S_ISVTX is a common extension to POSIX. */ #ifndef S_ISVTX # define S_ISVTX 01000 #endif #if !S_IRUSR && S_IREAD # define S_IRUSR S_IREAD #endif #if !S_IRUSR # define S_IRUSR 00400 #endif #if !S_IRGRP # define S_IRGRP (S_IRUSR >> 3) #endif #if !S_IROTH # define S_IROTH (S_IRUSR >> 6) #endif #if !S_IWUSR && S_IWRITE # define S_IWUSR S_IWRITE #endif #if !S_IWUSR # define S_IWUSR 00200 #endif #if !S_IWGRP # define S_IWGRP (S_IWUSR >> 3) #endif #if !S_IWOTH # define S_IWOTH (S_IWUSR >> 6) #endif #if !S_IXUSR && S_IEXEC # define S_IXUSR S_IEXEC #endif #if !S_IXUSR # define S_IXUSR 00100 #endif #if !S_IXGRP # define S_IXGRP (S_IXUSR >> 3) #endif #if !S_IXOTH # define S_IXOTH (S_IXUSR >> 6) #endif #if !S_IRWXU # define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) #endif #if !S_IRWXG # define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) #endif #if !S_IRWXO # define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) #endif /* Although S_IXUGO and S_IRWXUGO are not specified by POSIX and are not implemented in GNU/Linux, some Gnulib-using apps use the macros. */ #if !S_IXUGO # define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) #endif #ifndef S_IRWXUGO # define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO) #endif /* Macros for futimens and utimensat. */ #ifndef UTIME_NOW # define UTIME_NOW (-1) # define UTIME_OMIT (-2) #endif #if @GNULIB_CHMOD@ # if @REPLACE_CHMOD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef chmod # define chmod rpl_chmod # endif _GL_FUNCDECL_RPL (chmod, int, (const char *filename, mode_t mode) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (chmod, int, (const char *filename, mode_t mode)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef chmod # define chmod _chmod # endif /* Need to cast, because in mingw the last argument is 'int mode'. */ _GL_CXXALIAS_MDA_CAST (chmod, int, (const char *filename, mode_t mode)); # else _GL_CXXALIAS_SYS (chmod, int, (const char *filename, mode_t mode)); # endif _GL_CXXALIASWARN (chmod); #elif defined GNULIB_POSIXCHECK # undef chmod # if HAVE_RAW_DECL_CHMOD _GL_WARN_ON_USE (chmod, "chmod has portability problems - " "use gnulib module chmod for portability"); # endif #elif @GNULIB_MDA_CHMOD@ /* On native Windows, map 'chmod' to '_chmod', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::chmod always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef chmod # define chmod _chmod # endif /* Need to cast, because in mingw the last argument is 'int mode'. */ _GL_CXXALIAS_MDA_CAST (chmod, int, (const char *filename, mode_t mode)); # else _GL_CXXALIAS_SYS (chmod, int, (const char *filename, mode_t mode)); # endif _GL_CXXALIASWARN (chmod); #endif #if @GNULIB_FCHMODAT@ # if @REPLACE_FCHMODAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fchmodat # define fchmodat rpl_fchmodat # endif _GL_FUNCDECL_RPL (fchmodat, int, (int fd, char const *file, mode_t mode, int flag) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fchmodat, int, (int fd, char const *file, mode_t mode, int flag)); # else # if !@HAVE_FCHMODAT@ _GL_FUNCDECL_SYS (fchmodat, int, (int fd, char const *file, mode_t mode, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (fchmodat, int, (int fd, char const *file, mode_t mode, int flag)); # endif _GL_CXXALIASWARN (fchmodat); #elif defined GNULIB_POSIXCHECK # undef fchmodat # if HAVE_RAW_DECL_FCHMODAT _GL_WARN_ON_USE (fchmodat, "fchmodat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_FSTAT@ # if @REPLACE_FSTAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fstat # define fstat rpl_fstat # endif _GL_FUNCDECL_RPL (fstat, int, (int fd, struct stat *buf) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fstat, int, (int fd, struct stat *buf)); # else _GL_CXXALIAS_SYS (fstat, int, (int fd, struct stat *buf)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fstat); # endif #elif @GNULIB_OVERRIDES_STRUCT_STAT@ # undef fstat # define fstat fstat_used_without_requesting_gnulib_module_fstat #elif @WINDOWS_64_BIT_ST_SIZE@ /* Above, we define stat to _stati64. */ # define fstat _fstati64 #elif defined GNULIB_POSIXCHECK # undef fstat # if HAVE_RAW_DECL_FSTAT _GL_WARN_ON_USE (fstat, "fstat has portability problems - " "use gnulib module fstat for portability"); # endif #endif #if @GNULIB_FSTATAT@ # if @REPLACE_FSTATAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fstatat # define fstatat rpl_fstatat # endif _GL_FUNCDECL_RPL (fstatat, int, (int fd, char const *restrict name, struct stat *restrict st, int flags) _GL_ARG_NONNULL ((2, 3))); _GL_CXXALIAS_RPL (fstatat, int, (int fd, char const *restrict name, struct stat *restrict st, int flags)); # else # if !@HAVE_FSTATAT@ _GL_FUNCDECL_SYS (fstatat, int, (int fd, char const *restrict name, struct stat *restrict st, int flags) _GL_ARG_NONNULL ((2, 3))); # endif _GL_CXXALIAS_SYS (fstatat, int, (int fd, char const *restrict name, struct stat *restrict st, int flags)); # endif _GL_CXXALIASWARN (fstatat); #elif @GNULIB_OVERRIDES_STRUCT_STAT@ # undef fstatat # define fstatat fstatat_used_without_requesting_gnulib_module_fstatat #elif defined GNULIB_POSIXCHECK # undef fstatat # if HAVE_RAW_DECL_FSTATAT _GL_WARN_ON_USE (fstatat, "fstatat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_FUTIMENS@ /* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our futimens implementation relies on futimesat, which on Solaris 10 makes an invocation to futimens that is meant to invoke the libc's futimens(), not gnulib's futimens(). */ # if @REPLACE_FUTIMENS@ || (!@HAVE_FUTIMENS@ && defined __sun) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef futimens # define futimens rpl_futimens # endif _GL_FUNCDECL_RPL (futimens, int, (int fd, struct timespec const times[2])); _GL_CXXALIAS_RPL (futimens, int, (int fd, struct timespec const times[2])); # else # if !@HAVE_FUTIMENS@ _GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2])); # endif _GL_CXXALIAS_SYS (futimens, int, (int fd, struct timespec const times[2])); # endif # if __GLIBC__ >= 2 && @HAVE_FUTIMENS@ _GL_CXXALIASWARN (futimens); # endif #elif defined GNULIB_POSIXCHECK # undef futimens # if HAVE_RAW_DECL_FUTIMENS _GL_WARN_ON_USE (futimens, "futimens is not portable - " "use gnulib module futimens for portability"); # endif #endif #if @GNULIB_GETUMASK@ # if !@HAVE_GETUMASK@ _GL_FUNCDECL_SYS (getumask, mode_t, (void)); # endif _GL_CXXALIAS_SYS (getumask, mode_t, (void)); # if @HAVE_GETUMASK@ _GL_CXXALIASWARN (getumask); # endif #elif defined GNULIB_POSIXCHECK # undef getumask # if HAVE_RAW_DECL_GETUMASK _GL_WARN_ON_USE (getumask, "getumask is not portable - " "use gnulib module getumask for portability"); # endif #endif #if @GNULIB_LCHMOD@ /* Change the mode of FILENAME to MODE, without dereferencing it if FILENAME denotes a symbolic link. */ # if !@HAVE_LCHMOD@ || defined __hpux _GL_FUNCDECL_SYS (lchmod, int, (const char *filename, mode_t mode) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (lchmod, int, (const char *filename, mode_t mode)); _GL_CXXALIASWARN (lchmod); #elif defined GNULIB_POSIXCHECK # undef lchmod # if HAVE_RAW_DECL_LCHMOD _GL_WARN_ON_USE (lchmod, "lchmod is unportable - " "use gnulib module lchmod for portability"); # endif #endif #if @GNULIB_MKDIR@ # if @REPLACE_MKDIR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mkdir # define mkdir rpl_mkdir # endif _GL_FUNCDECL_RPL (mkdir, int, (char const *name, mode_t mode) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); # elif defined _WIN32 && !defined __CYGWIN__ /* mingw's _mkdir() function has 1 argument, but we pass 2 arguments. Additionally, it declares _mkdir (and depending on compile flags, an alias mkdir), only in the nonstandard includes and , which are included above. */ # if !GNULIB_defined_rpl_mkdir static int rpl_mkdir (char const *name, mode_t mode) { return _mkdir (name); } # define GNULIB_defined_rpl_mkdir 1 # endif # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mkdir # define mkdir rpl_mkdir # endif _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); # else _GL_CXXALIAS_SYS (mkdir, int, (char const *name, mode_t mode)); # endif _GL_CXXALIASWARN (mkdir); #elif defined GNULIB_POSIXCHECK # undef mkdir # if HAVE_RAW_DECL_MKDIR _GL_WARN_ON_USE (mkdir, "mkdir does not always support two parameters - " "use gnulib module mkdir for portability"); # endif #elif @GNULIB_MDA_MKDIR@ /* On native Windows, map 'mkdir' to '_mkdir', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::mkdir always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !GNULIB_defined_rpl_mkdir static int rpl_mkdir (char const *name, mode_t mode) { return _mkdir (name); } # define GNULIB_defined_rpl_mkdir 1 # endif # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mkdir # define mkdir rpl_mkdir # endif _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); # else _GL_CXXALIAS_SYS (mkdir, int, (char const *name, mode_t mode)); # endif _GL_CXXALIASWARN (mkdir); #endif #if @GNULIB_MKDIRAT@ # if !@HAVE_MKDIRAT@ _GL_FUNCDECL_SYS (mkdirat, int, (int fd, char const *file, mode_t mode) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mkdirat, int, (int fd, char const *file, mode_t mode)); _GL_CXXALIASWARN (mkdirat); #elif defined GNULIB_POSIXCHECK # undef mkdirat # if HAVE_RAW_DECL_MKDIRAT _GL_WARN_ON_USE (mkdirat, "mkdirat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_MKFIFO@ # if @REPLACE_MKFIFO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mkfifo # define mkfifo rpl_mkfifo # endif _GL_FUNCDECL_RPL (mkfifo, int, (char const *file, mode_t mode) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mkfifo, int, (char const *file, mode_t mode)); # else # if !@HAVE_MKFIFO@ _GL_FUNCDECL_SYS (mkfifo, int, (char const *file, mode_t mode) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkfifo, int, (char const *file, mode_t mode)); # endif _GL_CXXALIASWARN (mkfifo); #elif defined GNULIB_POSIXCHECK # undef mkfifo # if HAVE_RAW_DECL_MKFIFO _GL_WARN_ON_USE (mkfifo, "mkfifo is not portable - " "use gnulib module mkfifo for portability"); # endif #endif #if @GNULIB_MKFIFOAT@ # if @REPLACE_MKFIFOAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mkfifoat # define mkfifoat rpl_mkfifoat # endif _GL_FUNCDECL_RPL (mkfifoat, int, (int fd, char const *file, mode_t mode) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (mkfifoat, int, (int fd, char const *file, mode_t mode)); # else # if !@HAVE_MKFIFOAT@ _GL_FUNCDECL_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (mkfifoat); # endif #elif defined GNULIB_POSIXCHECK # undef mkfifoat # if HAVE_RAW_DECL_MKFIFOAT _GL_WARN_ON_USE (mkfifoat, "mkfifoat is not portable - " "use gnulib module mkfifoat for portability"); # endif #endif #if @GNULIB_MKNOD@ # if @REPLACE_MKNOD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mknod # define mknod rpl_mknod # endif _GL_FUNCDECL_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev)); # else # if !@HAVE_MKNOD@ _GL_FUNCDECL_SYS (mknod, int, (char const *file, mode_t mode, dev_t dev) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on OSF/1 5.1, the third parameter is '...'. */ _GL_CXXALIAS_SYS_CAST (mknod, int, (char const *file, mode_t mode, dev_t dev)); # endif _GL_CXXALIASWARN (mknod); #elif defined GNULIB_POSIXCHECK # undef mknod # if HAVE_RAW_DECL_MKNOD _GL_WARN_ON_USE (mknod, "mknod is not portable - " "use gnulib module mknod for portability"); # endif #endif #if @GNULIB_MKNODAT@ # if @REPLACE_MKNODAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mknodat # define mknodat rpl_mknodat # endif _GL_FUNCDECL_RPL (mknodat, int, (int fd, char const *file, mode_t mode, dev_t dev) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (mknodat, int, (int fd, char const *file, mode_t mode, dev_t dev)); # else # if !@HAVE_MKNODAT@ _GL_FUNCDECL_SYS (mknodat, int, (int fd, char const *file, mode_t mode, dev_t dev) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mknodat, int, (int fd, char const *file, mode_t mode, dev_t dev)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (mknodat); # endif #elif defined GNULIB_POSIXCHECK # undef mknodat # if HAVE_RAW_DECL_MKNODAT _GL_WARN_ON_USE (mknodat, "mknodat is not portable - " "use gnulib module mkfifoat for portability"); # endif #endif #if @GNULIB_STAT@ # if @REPLACE_STAT@ # if !@GNULIB_OVERRIDES_STRUCT_STAT@ /* We can't use the object-like #define stat rpl_stat, because of struct stat. This means that rpl_stat will not be used if the user does (stat)(a,b). Oh well. */ # if defined _AIX && defined stat && defined _LARGE_FILES /* With _LARGE_FILES defined, AIX (only) defines stat to stat64, so we have to replace stat64() instead of stat(). */ # undef stat64 # define stat64(name, st) rpl_stat (name, st) # elif @WINDOWS_64_BIT_ST_SIZE@ /* Above, we define stat to _stati64. */ # if defined __MINGW32__ && defined _stati64 # ifndef _USE_32BIT_TIME_T /* The system headers define _stati64 to _stat64. */ # undef _stat64 # define _stat64(name, st) rpl_stat (name, st) # endif # elif defined _MSC_VER && defined _stati64 # ifdef _USE_32BIT_TIME_T /* The system headers define _stati64 to _stat32i64. */ # undef _stat32i64 # define _stat32i64(name, st) rpl_stat (name, st) # else /* The system headers define _stati64 to _stat64. */ # undef _stat64 # define _stat64(name, st) rpl_stat (name, st) # endif # else # undef _stati64 # define _stati64(name, st) rpl_stat (name, st) # endif # elif defined __MINGW32__ && defined stat # ifdef _USE_32BIT_TIME_T /* The system headers define stat to _stat32i64. */ # undef _stat32i64 # define _stat32i64(name, st) rpl_stat (name, st) # else /* The system headers define stat to _stat64. */ # undef _stat64 # define _stat64(name, st) rpl_stat (name, st) # endif # elif defined _MSC_VER && defined stat # ifdef _USE_32BIT_TIME_T /* The system headers define stat to _stat32. */ # undef _stat32 # define _stat32(name, st) rpl_stat (name, st) # else /* The system headers define stat to _stat64i32. */ # undef _stat64i32 # define _stat64i32(name, st) rpl_stat (name, st) # endif # else /* !(_AIX || __MINGW32__ || _MSC_VER) */ # undef stat # define stat(name, st) rpl_stat (name, st) # endif /* !_LARGE_FILES */ # endif /* !@GNULIB_OVERRIDES_STRUCT_STAT@ */ _GL_EXTERN_C int stat (const char *restrict name, struct stat *restrict buf) _GL_ARG_NONNULL ((1, 2)); # endif #elif @GNULIB_OVERRIDES_STRUCT_STAT@ /* see above: #define stat stat_used_without_requesting_gnulib_module_stat */ #elif defined GNULIB_POSIXCHECK # undef stat # if HAVE_RAW_DECL_STAT _GL_WARN_ON_USE (stat, "stat is unportable - " "use gnulib module stat for portability"); # endif #endif #if @GNULIB_LSTAT@ # if ! @HAVE_LSTAT@ /* mingw does not support symlinks, therefore it does not have lstat. But without links, stat does just fine. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define lstat stat # endif _GL_CXXALIAS_RPL_1 (lstat, stat, int, (const char *restrict name, struct stat *restrict buf)); # elif @REPLACE_LSTAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef lstat # define lstat rpl_lstat # endif _GL_FUNCDECL_RPL (lstat, int, (const char *restrict name, struct stat *restrict buf) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (lstat, int, (const char *restrict name, struct stat *restrict buf)); # else _GL_CXXALIAS_SYS (lstat, int, (const char *restrict name, struct stat *restrict buf)); # endif # if @HAVE_LSTAT@ _GL_CXXALIASWARN (lstat); # endif #elif @GNULIB_OVERRIDES_STRUCT_STAT@ # undef lstat # define lstat lstat_used_without_requesting_gnulib_module_lstat #elif defined GNULIB_POSIXCHECK # undef lstat # if HAVE_RAW_DECL_LSTAT _GL_WARN_ON_USE (lstat, "lstat is unportable - " "use gnulib module lstat for portability"); # endif #endif #if @GNULIB_MDA_UMASK@ /* On native Windows, map 'umask' to '_umask', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::umask always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef umask # define umask _umask # endif /* Need to cast, because in mingw the last argument is 'int mode'. */ _GL_CXXALIAS_MDA_CAST (umask, mode_t, (mode_t mask)); # else _GL_CXXALIAS_SYS (umask, mode_t, (mode_t mask)); # endif _GL_CXXALIASWARN (umask); #endif #if @GNULIB_UTIMENSAT@ /* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our utimensat implementation relies on futimesat, which on Solaris 10 makes an invocation to utimensat that is meant to invoke the libc's utimensat(), not gnulib's utimensat(). */ # if @REPLACE_UTIMENSAT@ || (!@HAVE_UTIMENSAT@ && defined __sun) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef utimensat # define utimensat rpl_utimensat # endif _GL_FUNCDECL_RPL (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag)); # else # if !@HAVE_UTIMENSAT@ _GL_FUNCDECL_SYS (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag)); # endif # if __GLIBC__ >= 2 && @HAVE_UTIMENSAT@ _GL_CXXALIASWARN (utimensat); # endif #elif defined GNULIB_POSIXCHECK # undef utimensat # if HAVE_RAW_DECL_UTIMENSAT _GL_WARN_ON_USE (utimensat, "utimensat is not portable - " "use gnulib module utimensat for portability"); # endif #endif #endif /* _@GUARD_PREFIX@_SYS_STAT_H */ #endif /* _@GUARD_PREFIX@_SYS_STAT_H */ #endif recode-3.7.15/lib/mbtowc-lock.h0000644000175000017500000000630414371444255011705 /* Use the internal lock used by mbrtowc and mbrtoc32. Copyright (C) 2019-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2019-2020. */ /* Use a lock, so that no two threads can invoke mbtowc at the same time. */ static inline int mbtowc_unlocked (wchar_t *pwc, const char *p, size_t m) { /* Put the hidden internal state of mbtowc into its initial state. This is needed at least with glibc, uClibc, and MSVC CRT. See . */ mbtowc (NULL, NULL, 0); return mbtowc (pwc, p, m); } /* Prohibit renaming this symbol. */ #undef gl_get_mbtowc_lock #if GNULIB_MBRTOWC_SINGLE_THREAD /* All uses of this function are in a single thread. No locking needed. */ static int mbtowc_with_lock (wchar_t *pwc, const char *p, size_t m) { return mbtowc_unlocked (pwc, p, m); } #elif defined _WIN32 && !defined __CYGWIN__ extern __declspec(dllimport) CRITICAL_SECTION *gl_get_mbtowc_lock (void); static int mbtowc_with_lock (wchar_t *pwc, const char *p, size_t m) { CRITICAL_SECTION *lock = gl_get_mbtowc_lock (); int ret; EnterCriticalSection (lock); ret = mbtowc_unlocked (pwc, p, m); LeaveCriticalSection (lock); return ret; } #elif HAVE_PTHREAD_API /* AIX, IRIX, Cygwin */ extern # if defined _WIN32 || defined __CYGWIN__ __declspec(dllimport) # endif pthread_mutex_t *gl_get_mbtowc_lock (void); # if HAVE_WEAK_SYMBOLS /* IRIX */ /* Avoid the need to link with '-lpthread'. */ # pragma weak pthread_mutex_lock # pragma weak pthread_mutex_unlock /* Determine whether libpthread is in use. */ # pragma weak pthread_mutexattr_gettype /* See the comments in lock.h. */ # define pthread_in_use() \ (pthread_mutexattr_gettype != NULL || c11_threads_in_use ()) # else # define pthread_in_use() 1 # endif static int mbtowc_with_lock (wchar_t *pwc, const char *p, size_t m) { if (pthread_in_use()) { pthread_mutex_t *lock = gl_get_mbtowc_lock (); int ret; if (pthread_mutex_lock (lock)) abort (); ret = mbtowc_unlocked (pwc, p, m); if (pthread_mutex_unlock (lock)) abort (); return ret; } else return mbtowc_unlocked (pwc, p, m); } #elif HAVE_THREADS_H extern mtx_t *gl_get_mbtowc_lock (void); static int mbtowc_with_lock (wchar_t *pwc, const char *p, size_t m) { mtx_t *lock = gl_get_mbtowc_lock (); int ret; if (mtx_lock (lock) != thrd_success) abort (); ret = mbtowc_unlocked (pwc, p, m); if (mtx_unlock (lock) != thrd_success) abort (); return ret; } #endif recode-3.7.15/lib/mbsinit.c0000644000175000017500000000453214371444255011125 /* Test for initial conversion state. Copyright (C) 2008-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2008. This file 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. This file 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 . */ #include /* Specification. */ #include #if GNULIB_defined_mbstate_t /* Platforms that lack mbsinit() also lack mbrlen(), mbrtowc(), mbsrtowcs() and wcrtomb(), wcsrtombs(). We assume that - sizeof (mbstate_t) >= 4, - only stateless encodings are supported (such as UTF-8 and EUC-JP, but not ISO-2022 variants), - for each encoding, the number of bytes for a wide character is <= 4. (This maximum is attained for UTF-8, GB18030, EUC-TW.) We define the meaning of mbstate_t as follows: - In mb -> wc direction, mbstate_t's first byte contains the number of buffered bytes (in the range 0..3), followed by up to 3 buffered bytes. See mbrtowc.c. - In wc -> mb direction, mbstate_t contains no information. In other words, it is always in the initial state. */ static_assert (sizeof (mbstate_t) >= 4); int mbsinit (const mbstate_t *ps) { const char *pstate = (const char *)ps; return pstate == NULL || pstate[0] == 0; } #else int mbsinit (const mbstate_t *ps) { # if defined _WIN32 && !defined __CYGWIN__ /* Native Windows. */ /* MSVC defines 'mbstate_t' as an 8-byte struct; the first 4 bytes matter. On mingw, 'mbstate_t' is sometimes defined as 'int', sometimes defined as an 8-byte struct, of which the first 4 bytes matter. */ return ps == NULL || *(const unsigned int *)ps == 0; # else /* Minix, HP-UX 11.00, Solaris 2.6, Interix, ... */ /* Maybe this definition works, maybe not... */ return ps == NULL || *(const char *)ps == 0; # endif } #endif recode-3.7.15/lib/argmatch.c0000644000175000017500000001774514371444255011260 /* argmatch.c -- find a match for a string in an array Copyright (C) 1990, 1998-1999, 2001-2007, 2009-2023 Free Software Foundation, Inc. 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 3 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, see . */ /* Written by David MacKenzie Modified by Akim Demaille */ #include /* Specification. */ #include "argmatch.h" #include #include #include #define _(msgid) gettext (msgid) #include "error.h" #include "quotearg.h" #if USE_UNLOCKED_IO # include "unlocked-io.h" #endif /* When reporting an invalid argument, show nonprinting characters by using the quoting style ARGMATCH_QUOTING_STYLE. Do not use literal_quoting_style. */ #ifndef ARGMATCH_QUOTING_STYLE # define ARGMATCH_QUOTING_STYLE locale_quoting_style #endif /* Non failing version of argmatch call this function after failing. */ #ifndef ARGMATCH_DIE # include "exitfail.h" # define ARGMATCH_DIE exit (exit_failure) #endif #ifdef ARGMATCH_DIE_DECL ARGMATCH_DIE_DECL; #endif static void __argmatch_die (void) { ARGMATCH_DIE; } /* Used by XARGMATCH. See description in argmatch.h. Default to __argmatch_die, but allow caller to change this at run-time. */ argmatch_exit_fn argmatch_die = __argmatch_die; /* If ARG is an unambiguous match for an element of the NULL-terminated array ARGLIST, return the index in ARGLIST of the matched element, else -1 if it does not match any element or -2 if it is ambiguous (is a prefix of more than one element). If VALLIST is none null, use it to resolve ambiguities limited to synonyms, i.e., for "yes", "yop" -> 0 "no", "nope" -> 1 "y" is a valid argument, for 0, and "n" for 1. */ ptrdiff_t argmatch (const char *arg, const char *const *arglist, const void *vallist, size_t valsize) { size_t i; /* Temporary index in ARGLIST. */ size_t arglen; /* Length of ARG. */ ptrdiff_t matchind = -1; /* Index of first nonexact match. */ bool ambiguous = false; /* If true, multiple nonexact match(es). */ arglen = strlen (arg); /* Test all elements for either exact match or abbreviated matches. */ for (i = 0; arglist[i]; i++) { if (!strncmp (arglist[i], arg, arglen)) { if (strlen (arglist[i]) == arglen) /* Exact match found. */ return i; else if (matchind == -1) /* First nonexact match found. */ matchind = i; else { /* Second nonexact match found. */ if (vallist == NULL || memcmp ((char const *) vallist + valsize * matchind, (char const *) vallist + valsize * i, valsize)) { /* There is a real ambiguity, or we could not disambiguate. */ ambiguous = true; } } } } if (ambiguous) return -2; else return matchind; } ptrdiff_t argmatch_exact (const char *arg, const char *const *arglist) { size_t i; /* Test elements for exact match. */ for (i = 0; arglist[i]; i++) { if (!strcmp (arglist[i], arg)) return i; } return -1; } /* Error reporting for argmatch. CONTEXT is a description of the type of entity that was being matched. VALUE is the invalid value that was given. PROBLEM is the return value from argmatch. */ void argmatch_invalid (const char *context, const char *value, ptrdiff_t problem) { char const *format = (problem == -1 ? _("invalid argument %s for %s") : _("ambiguous argument %s for %s")); error (0, 0, format, quotearg_n_style (0, ARGMATCH_QUOTING_STYLE, value), quote_n (1, context)); } /* List the valid arguments for argmatch. ARGLIST is the same as in argmatch. VALLIST is a pointer to an array of values. VALSIZE is the size of the elements of VALLIST */ void argmatch_valid (const char *const *arglist, const void *vallist, size_t valsize) { size_t i; const char *last_val = NULL; /* We try to put synonyms on the same line. The assumption is that synonyms follow each other */ fputs (_("Valid arguments are:"), stderr); for (i = 0; arglist[i]; i++) if ((i == 0) || memcmp (last_val, (char const *) vallist + valsize * i, valsize)) { fprintf (stderr, "\n - %s", quote (arglist[i])); last_val = (char const *) vallist + valsize * i; } else { fprintf (stderr, ", %s", quote (arglist[i])); } putc ('\n', stderr); } /* Never failing versions of the previous functions. CONTEXT is the context for which argmatch is called (e.g., "--version-control", or "$VERSION_CONTROL" etc.). Upon failure, calls the (supposed never to return) function EXIT_FN. */ ptrdiff_t __xargmatch_internal (const char *context, const char *arg, const char *const *arglist, const void *vallist, size_t valsize, argmatch_exit_fn exit_fn, bool allow_abbreviation) { ptrdiff_t res; if (allow_abbreviation) res = argmatch (arg, arglist, vallist, valsize); else res = argmatch_exact (arg, arglist); if (res >= 0) /* Success. */ return res; /* We failed. Explain why. */ argmatch_invalid (context, arg, res); argmatch_valid (arglist, vallist, valsize); (*exit_fn) (); return -1; /* To please the compilers. */ } /* Look for VALUE in VALLIST, an array of objects of size VALSIZE and return the first corresponding argument in ARGLIST */ const char * argmatch_to_argument (const void *value, const char *const *arglist, const void *vallist, size_t valsize) { size_t i; for (i = 0; arglist[i]; i++) if (!memcmp (value, (char const *) vallist + valsize * i, valsize)) return arglist[i]; return NULL; } #ifdef TEST /* * Based on "getversion.c" by David MacKenzie */ /* When to make backup files. */ enum backup_type { /* Never make backups. */ no_backups, /* Make simple backups of every file. */ simple_backups, /* Make numbered backups of files that already have numbered backups, and simple backups of the others. */ numbered_existing_backups, /* Make numbered backups of every file. */ numbered_backups }; /* Two tables describing arguments (keys) and their corresponding values */ static const char *const backup_args[] = { "no", "none", "off", "simple", "never", "existing", "nil", "numbered", "t", 0 }; static const enum backup_type backup_vals[] = { no_backups, no_backups, no_backups, simple_backups, simple_backups, numbered_existing_backups, numbered_existing_backups, numbered_backups, numbered_backups }; int main (int argc, const char *const *argv) { const char *cp; enum backup_type backup_type = no_backups; if (argc > 2) { fprintf (stderr, "Usage: %s [VERSION_CONTROL]\n", getprogname ()); exit (1); } if ((cp = getenv ("VERSION_CONTROL"))) backup_type = XARGMATCH ("$VERSION_CONTROL", cp, backup_args, backup_vals); if (argc == 2) backup_type = XARGMATCH (getprogname (), argv[1], backup_args, backup_vals); printf ("The version control is '%s'\n", ARGMATCH_TO_ARGUMENT (&backup_type, backup_args, backup_vals)); return 0; } #endif recode-3.7.15/lib/getopt-ext.h0000644000175000017500000000575314371444255011573 /* Declarations for getopt (GNU extensions). Copyright (C) 1989-2023 Free Software Foundation, Inc. This file is part of the GNU C Library and is also part of gnulib. Patches to this file should be submitted to both projects. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ #ifndef _GETOPT_EXT_H #define _GETOPT_EXT_H 1 /* This header should not be used directly; include getopt.h instead. Unlike most bits headers, it does not have a protective #error, because the guard macro for getopt.h in gnulib is not fixed. */ __BEGIN_DECLS /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of 'struct option' terminated by an element containing a name which is zero. The field 'has_arg' is: no_argument (or 0) if the option does not take an argument, required_argument (or 1) if the option requires an argument, optional_argument (or 2) if the option takes an optional argument. If the field 'flag' is not NULL, it points to a variable that is set to the value given in the field 'val' when the option is found, but left unchanged if the option is not found. To have a long-named option do something other than set an 'int' to a compiled-in constant, such as set a value from 'optarg', set the option's 'flag' field to zero and its 'val' field to a nonzero value (the equivalent single-letter option character, if there is one). For long options that have a zero 'flag' field, 'getopt' returns the contents of the 'val' field. */ struct option { const char *name; /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; int *flag; int val; }; /* Names for the values of the 'has_arg' field of 'struct option'. */ #define no_argument 0 #define required_argument 1 #define optional_argument 2 extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind) __THROW _GL_ARG_NONNULL ((2, 3)); extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind) __THROW _GL_ARG_NONNULL ((2, 3)); __END_DECLS #endif /* _GETOPT_EXT_H */ recode-3.7.15/lib/hard-locale.c0000644000175000017500000000272214371444255011632 /* hard-locale.c -- Determine whether a locale is hard. Copyright (C) 1997-1999, 2002-2004, 2006-2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #include "hard-locale.h" #include #include #include bool hard_locale (int category) { char locale[SETLOCALE_NULL_MAX]; if (setlocale_null_r (category, locale, sizeof (locale))) return false; if (!(strcmp (locale, "C") == 0 || strcmp (locale, "POSIX") == 0)) return true; #if defined __ANDROID__ /* On Android 5.0 or newer, it is possible to set a locale that has the same name as the "C" locale but in fact uses UTF-8 encoding. Cf. test case 2 in . */ if (MB_CUR_MAX > 1) return true; #endif return false; } recode-3.7.15/lib/minmax.h0000644000175000017500000000453214371444255010756 /* MIN, MAX macros. Copyright (C) 1995, 1998, 2001, 2003, 2005, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _MINMAX_H #define _MINMAX_H /* Note: MIN, MAX are also defined in on some systems (glibc, IRIX, HP-UX, OSF/1). Therefore you might get warnings about MIN, MAX macro redefinitions on some systems; the workaround is to #include this file as the last one among the #include list. */ /* Before we define the following symbols we get the file since otherwise we get redefinitions on some systems if is included after this file. Likewise for . If more than one of these system headers define MIN and MAX, pick just one of the headers (because the definitions most likely are the same). */ #if HAVE_MINMAX_IN_LIMITS_H # include #elif HAVE_MINMAX_IN_SYS_PARAM_H # include #endif /* Note: MIN and MAX should be used with two arguments of the same type. They might not return the minimum and maximum of their two arguments, if the arguments have different types or have unusual floating-point values. For example, on a typical host with 32-bit 'int', 64-bit 'long long', and 64-bit IEEE 754 'double' types: MAX (-1, 2147483648) returns 4294967295. MAX (9007199254740992.0, 9007199254740993) returns 9007199254740992.0. MAX (NaN, 0.0) returns 0.0. MAX (+0.0, -0.0) returns -0.0. and in each case the answer is in some sense bogus. */ /* MAX(a,b) returns the maximum of A and B. */ #ifndef MAX # define MAX(a,b) ((a) > (b) ? (a) : (b)) #endif /* MIN(a,b) returns the minimum of A and B. */ #ifndef MIN # define MIN(a,b) ((a) < (b) ? (a) : (b)) #endif #endif /* _MINMAX_H */ recode-3.7.15/lib/isatty.c0000644000175000017500000001351414371444255010775 /* isatty() replacement. Copyright (C) 2012-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include /* This replacement is enabled on native Windows. */ #include #include /* Get declarations of the Win32 API functions. */ #define WIN32_LEAN_AND_MEAN #include #if HAVE_MSVC_INVALID_PARAMETER_HANDLER # include "msvc-inval.h" #endif /* Get _get_osfhandle(). */ #if GNULIB_MSVC_NOTHROW # include "msvc-nothrow.h" #else # include #endif /* Don't assume that UNICODE is not defined. */ #undef LoadLibrary #define LoadLibrary LoadLibraryA #undef QueryFullProcessImageName #define QueryFullProcessImageName QueryFullProcessImageNameA #if !(_WIN32_WINNT >= _WIN32_WINNT_VISTA) /* Avoid warnings from gcc -Wcast-function-type. */ # define GetProcAddress \ (void *) GetProcAddress /* GetNamedPipeClientProcessId was introduced only in Windows Vista. */ typedef BOOL (WINAPI * GetNamedPipeClientProcessIdFuncType) (HANDLE hPipe, PULONG pClientProcessId); static GetNamedPipeClientProcessIdFuncType GetNamedPipeClientProcessIdFunc = NULL; /* QueryFullProcessImageName was introduced only in Windows Vista. */ typedef BOOL (WINAPI * QueryFullProcessImageNameFuncType) (HANDLE hProcess, DWORD dwFlags, LPSTR lpExeName, PDWORD pdwSize); static QueryFullProcessImageNameFuncType QueryFullProcessImageNameFunc = NULL; static BOOL initialized = FALSE; static void initialize (void) { HMODULE kernel32 = LoadLibrary ("kernel32.dll"); if (kernel32 != NULL) { GetNamedPipeClientProcessIdFunc = (GetNamedPipeClientProcessIdFuncType) GetProcAddress (kernel32, "GetNamedPipeClientProcessId"); QueryFullProcessImageNameFunc = (QueryFullProcessImageNameFuncType) GetProcAddress (kernel32, "QueryFullProcessImageNameA"); } initialized = TRUE; } #else # define GetNamedPipeClientProcessIdFunc GetNamedPipeClientProcessId # define QueryFullProcessImageNameFunc QueryFullProcessImageName #endif static BOOL IsConsoleHandle (HANDLE h) { DWORD mode; /* GetConsoleMode */ return GetConsoleMode (h, &mode) != 0; } static BOOL IsCygwinConsoleHandle (HANDLE h) { /* A handle to a Cygwin console is in fact a named pipe whose client process and server process is \bin\mintty.exe. */ BOOL result = FALSE; ULONG processId; #if !(_WIN32_WINNT >= _WIN32_WINNT_VISTA) if (!initialized) initialize (); #endif /* GetNamedPipeClientProcessId It requires -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher. */ if (GetNamedPipeClientProcessIdFunc && QueryFullProcessImageNameFunc && GetNamedPipeClientProcessIdFunc (h, &processId)) { /* OpenProcess */ HANDLE processHandle = OpenProcess (PROCESS_QUERY_LIMITED_INFORMATION, FALSE, processId); if (processHandle != NULL) { char buf[1024]; DWORD bufsize = sizeof (buf); /* The file name can be determined through GetProcessImageFileName or QueryFullProcessImageName The former returns a file name in non-standard notation (it starts with '\Device\') and may require linking with psapi.dll. The latter is better, but requires -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher. */ if (QueryFullProcessImageNameFunc (processHandle, 0, buf, &bufsize)) { if (strlen (buf) >= 11 && strcmp (buf + strlen (buf) - 11, "\\mintty.exe") == 0) result = TRUE; } CloseHandle (processHandle); } } return result; } #if HAVE_MSVC_INVALID_PARAMETER_HANDLER static int _isatty_nothrow (int fd) { int result; TRY_MSVC_INVAL { result = _isatty (fd); } CATCH_MSVC_INVAL { result = 0; } DONE_MSVC_INVAL; return result; } #else # define _isatty_nothrow _isatty #endif /* Determine whether FD refers to a console device. Return 1 if yes. Return 0 and set errno if no. (ptsname_r relies on the errno value.) */ int isatty (int fd) { HANDLE h = (HANDLE) _get_osfhandle (fd); if (h == INVALID_HANDLE_VALUE) { errno = EBADF; return 0; } /* _isatty (fd) tests whether GetFileType of the handle is FILE_TYPE_CHAR. But it does not set errno when it returns 0. */ if (_isatty_nothrow (fd)) { if (IsConsoleHandle (h)) return 1; } if (IsCygwinConsoleHandle (h)) return 1; errno = ENOTTY; return 0; } recode-3.7.15/lib/localcharset.c0000644000175000017500000011572214371444255012130 /* Determine a canonical name for the current locale's character encoding. Copyright (C) 2000-2006, 2008-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible . */ #include /* Specification. */ #include "localcharset.h" #include #include #include #include #if defined __APPLE__ && defined __MACH__ && HAVE_LANGINFO_CODESET # define DARWIN7 /* Darwin 7 or newer, i.e. Mac OS X 10.3 or newer */ #endif #if defined _WIN32 && !defined __CYGWIN__ # define WINDOWS_NATIVE # include #endif #if defined __EMX__ /* Assume EMX program runs on OS/2, even if compiled under DOS. */ # ifndef OS2 # define OS2 # endif #endif #if !defined WINDOWS_NATIVE # if HAVE_LANGINFO_CODESET # include # else # if 0 /* see comment regarding use of setlocale(), below */ # include # endif # endif # ifdef __CYGWIN__ # define WIN32_LEAN_AND_MEAN # include # endif #elif defined WINDOWS_NATIVE # define WIN32_LEAN_AND_MEAN # include /* For the use of setlocale() below, the Gnulib override in setlocale.c is not needed; see the platform lists in setlocale_null.m4. */ # undef setlocale #endif #if defined OS2 # define INCL_DOS # include #endif /* For MB_CUR_MAX_L */ #if defined DARWIN7 # include #endif #if HAVE_LANGINFO_CODESET || defined WINDOWS_NATIVE || defined OS2 /* On these platforms, we use a mapping from non-canonical encoding name to GNU canonical encoding name. */ /* With glibc-2.1 or newer, we don't need any canonicalization, because glibc has iconv and both glibc and libiconv support all GNU canonical names directly. */ # if !((defined __GNU_LIBRARY__ && __GLIBC__ >= 2) || defined __UCLIBC__) struct table_entry { const char alias[11+1]; const char canonical[11+1]; }; /* Table of platform-dependent mappings, sorted in ascending order. */ static const struct table_entry alias_table[] = { # if defined __FreeBSD__ /* FreeBSD */ /*{ "ARMSCII-8", "ARMSCII-8" },*/ { "Big5", "BIG5" }, { "C", "ASCII" }, /*{ "CP1131", "CP1131" },*/ /*{ "CP1251", "CP1251" },*/ /*{ "CP866", "CP866" },*/ /*{ "GB18030", "GB18030" },*/ /*{ "GB2312", "GB2312" },*/ /*{ "GBK", "GBK" },*/ /*{ "ISCII-DEV", "?" },*/ { "ISO8859-1", "ISO-8859-1" }, { "ISO8859-13", "ISO-8859-13" }, { "ISO8859-15", "ISO-8859-15" }, { "ISO8859-2", "ISO-8859-2" }, { "ISO8859-5", "ISO-8859-5" }, { "ISO8859-7", "ISO-8859-7" }, { "ISO8859-9", "ISO-8859-9" }, /*{ "KOI8-R", "KOI8-R" },*/ /*{ "KOI8-U", "KOI8-U" },*/ { "SJIS", "SHIFT_JIS" }, { "US-ASCII", "ASCII" }, { "eucCN", "GB2312" }, { "eucJP", "EUC-JP" }, { "eucKR", "EUC-KR" } # define alias_table_defined # endif # if defined __NetBSD__ /* NetBSD */ { "646", "ASCII" }, /*{ "ARMSCII-8", "ARMSCII-8" },*/ /*{ "BIG5", "BIG5" },*/ { "Big5-HKSCS", "BIG5-HKSCS" }, /*{ "CP1251", "CP1251" },*/ /*{ "CP866", "CP866" },*/ /*{ "GB18030", "GB18030" },*/ /*{ "GB2312", "GB2312" },*/ { "ISO8859-1", "ISO-8859-1" }, { "ISO8859-13", "ISO-8859-13" }, { "ISO8859-15", "ISO-8859-15" }, { "ISO8859-2", "ISO-8859-2" }, { "ISO8859-4", "ISO-8859-4" }, { "ISO8859-5", "ISO-8859-5" }, { "ISO8859-7", "ISO-8859-7" }, /*{ "KOI8-R", "KOI8-R" },*/ /*{ "KOI8-U", "KOI8-U" },*/ /*{ "PT154", "PT154" },*/ { "SJIS", "SHIFT_JIS" }, { "eucCN", "GB2312" }, { "eucJP", "EUC-JP" }, { "eucKR", "EUC-KR" }, { "eucTW", "EUC-TW" } # define alias_table_defined # endif # if defined __OpenBSD__ /* OpenBSD */ { "646", "ASCII" }, { "ISO8859-1", "ISO-8859-1" }, { "ISO8859-13", "ISO-8859-13" }, { "ISO8859-15", "ISO-8859-15" }, { "ISO8859-2", "ISO-8859-2" }, { "ISO8859-4", "ISO-8859-4" }, { "ISO8859-5", "ISO-8859-5" }, { "ISO8859-7", "ISO-8859-7" }, { "US-ASCII", "ASCII" } # define alias_table_defined # endif # if defined __APPLE__ && defined __MACH__ /* Mac OS X */ /* Darwin 7.5 has nl_langinfo(CODESET), but sometimes its value is useless: - It returns the empty string when LANG is set to a locale of the form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8 LC_CTYPE file. - The environment variables LANG, LC_CTYPE, LC_ALL are not set by the system; nl_langinfo(CODESET) returns "US-ASCII" in this case. - The documentation says: "... all code that calls BSD system routines should ensure that the const *char parameters of these routines are in UTF-8 encoding. All BSD system functions expect their string parameters to be in UTF-8 encoding and nothing else." It also says "An additional caveat is that string parameters for files, paths, and other file-system entities must be in canonical UTF-8. In a canonical UTF-8 Unicode string, all decomposable characters are decomposed ..." but this is not true: You can pass non-decomposed UTF-8 strings to file system functions, and it is the OS which will convert them to decomposed UTF-8 before accessing the file system. - The Apple Terminal application displays UTF-8 by default. - However, other applications are free to use different encodings: - xterm uses ISO-8859-1 by default. - TextEdit uses MacRoman by default. We prefer UTF-8 over decomposed UTF-8-MAC because one should minimize the use of decomposed Unicode. Unfortunately, through the Darwin file system, decomposed UTF-8 strings are leaked into user space nevertheless. Then there are also the locales with encodings other than US-ASCII and UTF-8. These locales can be occasionally useful to users (e.g. when grepping through ISO-8859-1 encoded text files), when all their file names are in US-ASCII. */ { "ARMSCII-8", "ARMSCII-8" }, { "Big5", "BIG5" }, { "Big5HKSCS", "BIG5-HKSCS" }, { "CP1131", "CP1131" }, { "CP1251", "CP1251" }, { "CP866", "CP866" }, { "CP949", "CP949" }, { "GB18030", "GB18030" }, { "GB2312", "GB2312" }, { "GBK", "GBK" }, /*{ "ISCII-DEV", "?" },*/ { "ISO8859-1", "ISO-8859-1" }, { "ISO8859-13", "ISO-8859-13" }, { "ISO8859-15", "ISO-8859-15" }, { "ISO8859-2", "ISO-8859-2" }, { "ISO8859-4", "ISO-8859-4" }, { "ISO8859-5", "ISO-8859-5" }, { "ISO8859-7", "ISO-8859-7" }, { "ISO8859-9", "ISO-8859-9" }, { "KOI8-R", "KOI8-R" }, { "KOI8-U", "KOI8-U" }, { "PT154", "PT154" }, { "SJIS", "SHIFT_JIS" }, { "eucCN", "GB2312" }, { "eucJP", "EUC-JP" }, { "eucKR", "EUC-KR" } # define alias_table_defined # endif # if defined _AIX /* AIX */ /*{ "GBK", "GBK" },*/ { "IBM-1046", "CP1046" }, { "IBM-1124", "CP1124" }, { "IBM-1129", "CP1129" }, { "IBM-1252", "CP1252" }, { "IBM-850", "CP850" }, { "IBM-856", "CP856" }, { "IBM-921", "ISO-8859-13" }, { "IBM-922", "CP922" }, { "IBM-932", "CP932" }, { "IBM-943", "CP943" }, { "IBM-eucCN", "GB2312" }, { "IBM-eucJP", "EUC-JP" }, { "IBM-eucKR", "EUC-KR" }, { "IBM-eucTW", "EUC-TW" }, { "ISO8859-1", "ISO-8859-1" }, { "ISO8859-15", "ISO-8859-15" }, { "ISO8859-2", "ISO-8859-2" }, { "ISO8859-5", "ISO-8859-5" }, { "ISO8859-6", "ISO-8859-6" }, { "ISO8859-7", "ISO-8859-7" }, { "ISO8859-8", "ISO-8859-8" }, { "ISO8859-9", "ISO-8859-9" }, { "TIS-620", "TIS-620" }, /*{ "UTF-8", "UTF-8" },*/ { "big5", "BIG5" } # define alias_table_defined # endif # if defined __hpux /* HP-UX */ { "SJIS", "SHIFT_JIS" }, { "arabic8", "HP-ARABIC8" }, { "big5", "BIG5" }, { "cp1251", "CP1251" }, { "eucJP", "EUC-JP" }, { "eucKR", "EUC-KR" }, { "eucTW", "EUC-TW" }, { "gb18030", "GB18030" }, { "greek8", "HP-GREEK8" }, { "hebrew8", "HP-HEBREW8" }, { "hkbig5", "BIG5-HKSCS" }, { "hp15CN", "GB2312" }, { "iso88591", "ISO-8859-1" }, { "iso885913", "ISO-8859-13" }, { "iso885915", "ISO-8859-15" }, { "iso88592", "ISO-8859-2" }, { "iso88594", "ISO-8859-4" }, { "iso88595", "ISO-8859-5" }, { "iso88596", "ISO-8859-6" }, { "iso88597", "ISO-8859-7" }, { "iso88598", "ISO-8859-8" }, { "iso88599", "ISO-8859-9" }, { "kana8", "HP-KANA8" }, { "koi8r", "KOI8-R" }, { "roman8", "HP-ROMAN8" }, { "tis620", "TIS-620" }, { "turkish8", "HP-TURKISH8" }, { "utf8", "UTF-8" } # define alias_table_defined # endif # if defined __sgi /* IRIX */ { "ISO8859-1", "ISO-8859-1" }, { "ISO8859-15", "ISO-8859-15" }, { "ISO8859-2", "ISO-8859-2" }, { "ISO8859-5", "ISO-8859-5" }, { "ISO8859-7", "ISO-8859-7" }, { "ISO8859-9", "ISO-8859-9" }, { "eucCN", "GB2312" }, { "eucJP", "EUC-JP" }, { "eucKR", "EUC-KR" }, { "eucTW", "EUC-TW" } # define alias_table_defined # endif # if defined __osf__ /* OSF/1 */ /*{ "GBK", "GBK" },*/ { "ISO8859-1", "ISO-8859-1" }, { "ISO8859-15", "ISO-8859-15" }, { "ISO8859-2", "ISO-8859-2" }, { "ISO8859-4", "ISO-8859-4" }, { "ISO8859-5", "ISO-8859-5" }, { "ISO8859-7", "ISO-8859-7" }, { "ISO8859-8", "ISO-8859-8" }, { "ISO8859-9", "ISO-8859-9" }, { "KSC5601", "CP949" }, { "SJIS", "SHIFT_JIS" }, { "TACTIS", "TIS-620" }, /*{ "UTF-8", "UTF-8" },*/ { "big5", "BIG5" }, { "cp850", "CP850" }, { "dechanyu", "DEC-HANYU" }, { "dechanzi", "GB2312" }, { "deckanji", "DEC-KANJI" }, { "deckorean", "EUC-KR" }, { "eucJP", "EUC-JP" }, { "eucKR", "EUC-KR" }, { "eucTW", "EUC-TW" }, { "sdeckanji", "EUC-JP" } # define alias_table_defined # endif # if defined __sun /* Solaris */ { "5601", "EUC-KR" }, { "646", "ASCII" }, /*{ "BIG5", "BIG5" },*/ { "Big5-HKSCS", "BIG5-HKSCS" }, { "GB18030", "GB18030" }, /*{ "GBK", "GBK" },*/ { "ISO8859-1", "ISO-8859-1" }, { "ISO8859-11", "TIS-620" }, { "ISO8859-13", "ISO-8859-13" }, { "ISO8859-15", "ISO-8859-15" }, { "ISO8859-2", "ISO-8859-2" }, { "ISO8859-3", "ISO-8859-3" }, { "ISO8859-4", "ISO-8859-4" }, { "ISO8859-5", "ISO-8859-5" }, { "ISO8859-6", "ISO-8859-6" }, { "ISO8859-7", "ISO-8859-7" }, { "ISO8859-8", "ISO-8859-8" }, { "ISO8859-9", "ISO-8859-9" }, { "PCK", "SHIFT_JIS" }, { "TIS620.2533", "TIS-620" }, /*{ "UTF-8", "UTF-8" },*/ { "ansi-1251", "CP1251" }, { "cns11643", "EUC-TW" }, { "eucJP", "EUC-JP" }, { "gb2312", "GB2312" }, { "koi8-r", "KOI8-R" } # define alias_table_defined # endif # if defined __minix /* Minix */ { "646", "ASCII" } # define alias_table_defined # endif # if defined WINDOWS_NATIVE || defined __CYGWIN__ /* Windows */ { "CP1361", "JOHAB" }, { "CP20127", "ASCII" }, { "CP20866", "KOI8-R" }, { "CP20936", "GB2312" }, { "CP21866", "KOI8-RU" }, { "CP28591", "ISO-8859-1" }, { "CP28592", "ISO-8859-2" }, { "CP28593", "ISO-8859-3" }, { "CP28594", "ISO-8859-4" }, { "CP28595", "ISO-8859-5" }, { "CP28596", "ISO-8859-6" }, { "CP28597", "ISO-8859-7" }, { "CP28598", "ISO-8859-8" }, { "CP28599", "ISO-8859-9" }, { "CP28605", "ISO-8859-15" }, { "CP38598", "ISO-8859-8" }, { "CP51932", "EUC-JP" }, { "CP51936", "GB2312" }, { "CP51949", "EUC-KR" }, { "CP51950", "EUC-TW" }, { "CP54936", "GB18030" }, { "CP65001", "UTF-8" }, { "CP936", "GBK" } # define alias_table_defined # endif # if defined OS2 /* OS/2 */ /* The list of encodings is taken from "List of OS/2 Codepages" by Alex Taylor: . See also "__convcp() of kLIBC": . */ { "CP1004", "CP1252" }, /*{ "CP1041", "CP943" },*/ /*{ "CP1088", "CP949" },*/ { "CP1089", "ISO-8859-6" }, /*{ "CP1114", "CP950" },*/ /*{ "CP1115", "GB2312" },*/ { "CP1208", "UTF-8" }, /*{ "CP1380", "GB2312" },*/ { "CP1381", "GB2312" }, { "CP1383", "GB2312" }, { "CP1386", "GBK" }, /*{ "CP301", "CP943" },*/ { "CP3372", "EUC-JP" }, { "CP4946", "CP850" }, /*{ "CP5048", "JIS_X0208-1990" },*/ /*{ "CP5049", "JIS_X0212-1990" },*/ /*{ "CP5067", "KS_C_5601-1987" },*/ { "CP813", "ISO-8859-7" }, { "CP819", "ISO-8859-1" }, { "CP878", "KOI8-R" }, /*{ "CP897", "CP943" },*/ { "CP912", "ISO-8859-2" }, { "CP913", "ISO-8859-3" }, { "CP914", "ISO-8859-4" }, { "CP915", "ISO-8859-5" }, { "CP916", "ISO-8859-8" }, { "CP920", "ISO-8859-9" }, { "CP921", "ISO-8859-13" }, { "CP923", "ISO-8859-15" }, /*{ "CP941", "CP943" },*/ /*{ "CP947", "CP950" },*/ /*{ "CP951", "CP949" },*/ /*{ "CP952", "JIS_X0208-1990" },*/ /*{ "CP953", "JIS_X0212-1990" },*/ { "CP954", "EUC-JP" }, { "CP964", "EUC-TW" }, { "CP970", "EUC-KR" }, /*{ "CP971", "KS_C_5601-1987" },*/ { "IBM-1004", "CP1252" }, /*{ "IBM-1006", "?" },*/ /*{ "IBM-1008", "?" },*/ /*{ "IBM-1041", "CP943" },*/ /*{ "IBM-1051", "?" },*/ /*{ "IBM-1088", "CP949" },*/ { "IBM-1089", "ISO-8859-6" }, /*{ "IBM-1098", "?" },*/ /*{ "IBM-1114", "CP950" },*/ /*{ "IBM-1115", "GB2312" },*/ /*{ "IBM-1116", "?" },*/ /*{ "IBM-1117", "?" },*/ /*{ "IBM-1118", "?" },*/ /*{ "IBM-1119", "?" },*/ { "IBM-1124", "CP1124" }, { "IBM-1125", "CP1125" }, { "IBM-1131", "CP1131" }, { "IBM-1208", "UTF-8" }, { "IBM-1250", "CP1250" }, { "IBM-1251", "CP1251" }, { "IBM-1252", "CP1252" }, { "IBM-1253", "CP1253" }, { "IBM-1254", "CP1254" }, { "IBM-1255", "CP1255" }, { "IBM-1256", "CP1256" }, { "IBM-1257", "CP1257" }, /*{ "IBM-1275", "?" },*/ /*{ "IBM-1276", "?" },*/ /*{ "IBM-1277", "?" },*/ /*{ "IBM-1280", "?" },*/ /*{ "IBM-1281", "?" },*/ /*{ "IBM-1282", "?" },*/ /*{ "IBM-1283", "?" },*/ /*{ "IBM-1380", "GB2312" },*/ { "IBM-1381", "GB2312" }, { "IBM-1383", "GB2312" }, { "IBM-1386", "GBK" }, /*{ "IBM-301", "CP943" },*/ { "IBM-3372", "EUC-JP" }, { "IBM-367", "ASCII" }, { "IBM-437", "CP437" }, { "IBM-4946", "CP850" }, /*{ "IBM-5048", "JIS_X0208-1990" },*/ /*{ "IBM-5049", "JIS_X0212-1990" },*/ /*{ "IBM-5067", "KS_C_5601-1987" },*/ { "IBM-813", "ISO-8859-7" }, { "IBM-819", "ISO-8859-1" }, { "IBM-850", "CP850" }, /*{ "IBM-851", "?" },*/ { "IBM-852", "CP852" }, { "IBM-855", "CP855" }, { "IBM-856", "CP856" }, { "IBM-857", "CP857" }, /*{ "IBM-859", "?" },*/ { "IBM-860", "CP860" }, { "IBM-861", "CP861" }, { "IBM-862", "CP862" }, { "IBM-863", "CP863" }, { "IBM-864", "CP864" }, { "IBM-865", "CP865" }, { "IBM-866", "CP866" }, /*{ "IBM-868", "?" },*/ { "IBM-869", "CP869" }, { "IBM-874", "CP874" }, { "IBM-878", "KOI8-R" }, /*{ "IBM-895", "?" },*/ /*{ "IBM-897", "CP943" },*/ /*{ "IBM-907", "?" },*/ /*{ "IBM-909", "?" },*/ { "IBM-912", "ISO-8859-2" }, { "IBM-913", "ISO-8859-3" }, { "IBM-914", "ISO-8859-4" }, { "IBM-915", "ISO-8859-5" }, { "IBM-916", "ISO-8859-8" }, { "IBM-920", "ISO-8859-9" }, { "IBM-921", "ISO-8859-13" }, { "IBM-922", "CP922" }, { "IBM-923", "ISO-8859-15" }, { "IBM-932", "CP932" }, /*{ "IBM-941", "CP943" },*/ /*{ "IBM-942", "?" },*/ { "IBM-943", "CP943" }, /*{ "IBM-947", "CP950" },*/ { "IBM-949", "CP949" }, { "IBM-950", "CP950" }, /*{ "IBM-951", "CP949" },*/ /*{ "IBM-952", "JIS_X0208-1990" },*/ /*{ "IBM-953", "JIS_X0212-1990" },*/ { "IBM-954", "EUC-JP" }, /*{ "IBM-955", "?" },*/ { "IBM-964", "EUC-TW" }, { "IBM-970", "EUC-KR" }, /*{ "IBM-971", "KS_C_5601-1987" },*/ { "IBM-eucCN", "GB2312" }, { "IBM-eucJP", "EUC-JP" }, { "IBM-eucKR", "EUC-KR" }, { "IBM-eucTW", "EUC-TW" }, { "IBM33722", "EUC-JP" }, { "ISO8859-1", "ISO-8859-1" }, { "ISO8859-2", "ISO-8859-2" }, { "ISO8859-3", "ISO-8859-3" }, { "ISO8859-4", "ISO-8859-4" }, { "ISO8859-5", "ISO-8859-5" }, { "ISO8859-6", "ISO-8859-6" }, { "ISO8859-7", "ISO-8859-7" }, { "ISO8859-8", "ISO-8859-8" }, { "ISO8859-9", "ISO-8859-9" }, /*{ "JISX0201-1976", "JISX0201-1976" },*/ /*{ "JISX0208-1978", "?" },*/ /*{ "JISX0208-1983", "JIS_X0208-1983" },*/ /*{ "JISX0208-1990", "JIS_X0208-1990" },*/ /*{ "JISX0212-1990", "JIS_X0212-1990" },*/ /*{ "KSC5601-1987", "KS_C_5601-1987" },*/ { "SJIS-1", "CP943" }, { "SJIS-2", "CP943" }, { "eucJP", "EUC-JP" }, { "eucKR", "EUC-KR" }, { "eucTW-1993", "EUC-TW" } # define alias_table_defined # endif # if defined VMS /* OpenVMS */ /* The list of encodings is taken from the OpenVMS 7.3-1 documentation "Compaq C Run-Time Library Reference Manual for OpenVMS systems" section 10.7 "Handling Different Character Sets". */ { "DECHANYU", "DEC-HANYU" }, { "DECHANZI", "GB2312" }, { "DECKANJI", "DEC-KANJI" }, { "DECKOREAN", "EUC-KR" }, { "ISO8859-1", "ISO-8859-1" }, { "ISO8859-2", "ISO-8859-2" }, { "ISO8859-5", "ISO-8859-5" }, { "ISO8859-7", "ISO-8859-7" }, { "ISO8859-8", "ISO-8859-8" }, { "ISO8859-9", "ISO-8859-9" }, { "SDECKANJI", "EUC-JP" }, { "SJIS", "SHIFT_JIS" }, { "eucJP", "EUC-JP" }, { "eucTW", "EUC-TW" } # define alias_table_defined # endif # ifndef alias_table_defined /* Just a dummy entry, to avoid a C syntax error. */ { "", "" } # endif }; # endif #else /* On these platforms, we use a mapping from locale name to GNU canonical encoding name. */ struct table_entry { const char locale[17+1]; const char canonical[11+1]; }; /* Table of platform-dependent mappings, sorted in ascending order. */ static const struct table_entry locale_table[] = { # if defined __FreeBSD__ /* FreeBSD 4.2 */ { "cs_CZ.ISO_8859-2", "ISO-8859-2" }, { "da_DK.DIS_8859-15", "ISO-8859-15" }, { "da_DK.ISO_8859-1", "ISO-8859-1" }, { "de_AT.DIS_8859-15", "ISO-8859-15" }, { "de_AT.ISO_8859-1", "ISO-8859-1" }, { "de_CH.DIS_8859-15", "ISO-8859-15" }, { "de_CH.ISO_8859-1", "ISO-8859-1" }, { "de_DE.DIS_8859-15", "ISO-8859-15" }, { "de_DE.ISO_8859-1", "ISO-8859-1" }, { "en_AU.DIS_8859-15", "ISO-8859-15" }, { "en_AU.ISO_8859-1", "ISO-8859-1" }, { "en_CA.DIS_8859-15", "ISO-8859-15" }, { "en_CA.ISO_8859-1", "ISO-8859-1" }, { "en_GB.DIS_8859-15", "ISO-8859-15" }, { "en_GB.ISO_8859-1", "ISO-8859-1" }, { "en_US.DIS_8859-15", "ISO-8859-15" }, { "en_US.ISO_8859-1", "ISO-8859-1" }, { "es_ES.DIS_8859-15", "ISO-8859-15" }, { "es_ES.ISO_8859-1", "ISO-8859-1" }, { "fi_FI.DIS_8859-15", "ISO-8859-15" }, { "fi_FI.ISO_8859-1", "ISO-8859-1" }, { "fr_BE.DIS_8859-15", "ISO-8859-15" }, { "fr_BE.ISO_8859-1", "ISO-8859-1" }, { "fr_CA.DIS_8859-15", "ISO-8859-15" }, { "fr_CA.ISO_8859-1", "ISO-8859-1" }, { "fr_CH.DIS_8859-15", "ISO-8859-15" }, { "fr_CH.ISO_8859-1", "ISO-8859-1" }, { "fr_FR.DIS_8859-15", "ISO-8859-15" }, { "fr_FR.ISO_8859-1", "ISO-8859-1" }, { "hr_HR.ISO_8859-2", "ISO-8859-2" }, { "hu_HU.ISO_8859-2", "ISO-8859-2" }, { "is_IS.DIS_8859-15", "ISO-8859-15" }, { "is_IS.ISO_8859-1", "ISO-8859-1" }, { "it_CH.DIS_8859-15", "ISO-8859-15" }, { "it_CH.ISO_8859-1", "ISO-8859-1" }, { "it_IT.DIS_8859-15", "ISO-8859-15" }, { "it_IT.ISO_8859-1", "ISO-8859-1" }, { "ja_JP.EUC", "EUC-JP" }, { "ja_JP.SJIS", "SHIFT_JIS" }, { "ja_JP.Shift_JIS", "SHIFT_JIS" }, { "ko_KR.EUC", "EUC-KR" }, { "la_LN.ASCII", "ASCII" }, { "la_LN.DIS_8859-15", "ISO-8859-15" }, { "la_LN.ISO_8859-1", "ISO-8859-1" }, { "la_LN.ISO_8859-2", "ISO-8859-2" }, { "la_LN.ISO_8859-4", "ISO-8859-4" }, { "lt_LN.ASCII", "ASCII" }, { "lt_LN.DIS_8859-15", "ISO-8859-15" }, { "lt_LN.ISO_8859-1", "ISO-8859-1" }, { "lt_LN.ISO_8859-2", "ISO-8859-2" }, { "lt_LT.ISO_8859-4", "ISO-8859-4" }, { "nl_BE.DIS_8859-15", "ISO-8859-15" }, { "nl_BE.ISO_8859-1", "ISO-8859-1" }, { "nl_NL.DIS_8859-15", "ISO-8859-15" }, { "nl_NL.ISO_8859-1", "ISO-8859-1" }, { "no_NO.DIS_8859-15", "ISO-8859-15" }, { "no_NO.ISO_8859-1", "ISO-8859-1" }, { "pl_PL.ISO_8859-2", "ISO-8859-2" }, { "pt_PT.DIS_8859-15", "ISO-8859-15" }, { "pt_PT.ISO_8859-1", "ISO-8859-1" }, { "ru_RU.CP866", "CP866" }, { "ru_RU.ISO_8859-5", "ISO-8859-5" }, { "ru_RU.KOI8-R", "KOI8-R" }, { "ru_SU.CP866", "CP866" }, { "ru_SU.ISO_8859-5", "ISO-8859-5" }, { "ru_SU.KOI8-R", "KOI8-R" }, { "sl_SI.ISO_8859-2", "ISO-8859-2" }, { "sv_SE.DIS_8859-15", "ISO-8859-15" }, { "sv_SE.ISO_8859-1", "ISO-8859-1" }, { "uk_UA.KOI8-U", "KOI8-U" }, { "zh_CN.EUC", "GB2312" }, { "zh_TW.BIG5", "BIG5" }, { "zh_TW.Big5", "BIG5" } # define locale_table_defined # endif # if defined __DJGPP__ /* DOS / DJGPP 2.03 */ /* The encodings given here may not all be correct. If you find that the encoding given for your language and country is not the one your DOS machine actually uses, just correct it in this file, and send a mail to Juan Manuel Guerrero and . */ { "C", "ASCII" }, { "ar", "CP864" }, { "ar_AE", "CP864" }, { "ar_DZ", "CP864" }, { "ar_EG", "CP864" }, { "ar_IQ", "CP864" }, { "ar_IR", "CP864" }, { "ar_JO", "CP864" }, { "ar_KW", "CP864" }, { "ar_MA", "CP864" }, { "ar_OM", "CP864" }, { "ar_QA", "CP864" }, { "ar_SA", "CP864" }, { "ar_SY", "CP864" }, { "be", "CP866" }, { "be_BE", "CP866" }, { "bg", "CP866" }, /* not CP855 ?? */ { "bg_BG", "CP866" }, /* not CP855 ?? */ { "ca", "CP850" }, { "ca_ES", "CP850" }, { "cs", "CP852" }, { "cs_CZ", "CP852" }, { "da", "CP865" }, /* not CP850 ?? */ { "da_DK", "CP865" }, /* not CP850 ?? */ { "de", "CP850" }, { "de_AT", "CP850" }, { "de_CH", "CP850" }, { "de_DE", "CP850" }, { "el", "CP869" }, { "el_GR", "CP869" }, { "en", "CP850" }, { "en_AU", "CP850" }, /* not CP437 ?? */ { "en_CA", "CP850" }, { "en_GB", "CP850" }, { "en_NZ", "CP437" }, { "en_US", "CP437" }, { "en_ZA", "CP850" }, /* not CP437 ?? */ { "eo", "CP850" }, { "eo_EO", "CP850" }, { "es", "CP850" }, { "es_AR", "CP850" }, { "es_BO", "CP850" }, { "es_CL", "CP850" }, { "es_CO", "CP850" }, { "es_CR", "CP850" }, { "es_CU", "CP850" }, { "es_DO", "CP850" }, { "es_EC", "CP850" }, { "es_ES", "CP850" }, { "es_GT", "CP850" }, { "es_HN", "CP850" }, { "es_MX", "CP850" }, { "es_NI", "CP850" }, { "es_PA", "CP850" }, { "es_PE", "CP850" }, { "es_PY", "CP850" }, { "es_SV", "CP850" }, { "es_UY", "CP850" }, { "es_VE", "CP850" }, { "et", "CP850" }, { "et_EE", "CP850" }, { "eu", "CP850" }, { "eu_ES", "CP850" }, { "fi", "CP850" }, { "fi_FI", "CP850" }, { "fr", "CP850" }, { "fr_BE", "CP850" }, { "fr_CA", "CP850" }, { "fr_CH", "CP850" }, { "fr_FR", "CP850" }, { "ga", "CP850" }, { "ga_IE", "CP850" }, { "gd", "CP850" }, { "gd_GB", "CP850" }, { "gl", "CP850" }, { "gl_ES", "CP850" }, { "he", "CP862" }, { "he_IL", "CP862" }, { "hr", "CP852" }, { "hr_HR", "CP852" }, { "hu", "CP852" }, { "hu_HU", "CP852" }, { "id", "CP850" }, /* not CP437 ?? */ { "id_ID", "CP850" }, /* not CP437 ?? */ { "is", "CP861" }, /* not CP850 ?? */ { "is_IS", "CP861" }, /* not CP850 ?? */ { "it", "CP850" }, { "it_CH", "CP850" }, { "it_IT", "CP850" }, { "ja", "CP932" }, { "ja_JP", "CP932" }, { "kr", "CP949" }, /* not CP934 ?? */ { "kr_KR", "CP949" }, /* not CP934 ?? */ { "lt", "CP775" }, { "lt_LT", "CP775" }, { "lv", "CP775" }, { "lv_LV", "CP775" }, { "mk", "CP866" }, /* not CP855 ?? */ { "mk_MK", "CP866" }, /* not CP855 ?? */ { "mt", "CP850" }, { "mt_MT", "CP850" }, { "nb", "CP865" }, /* not CP850 ?? */ { "nb_NO", "CP865" }, /* not CP850 ?? */ { "nl", "CP850" }, { "nl_BE", "CP850" }, { "nl_NL", "CP850" }, { "nn", "CP865" }, /* not CP850 ?? */ { "nn_NO", "CP865" }, /* not CP850 ?? */ { "no", "CP865" }, /* not CP850 ?? */ { "no_NO", "CP865" }, /* not CP850 ?? */ { "pl", "CP852" }, { "pl_PL", "CP852" }, { "pt", "CP850" }, { "pt_BR", "CP850" }, { "pt_PT", "CP850" }, { "ro", "CP852" }, { "ro_RO", "CP852" }, { "ru", "CP866" }, { "ru_RU", "CP866" }, { "sk", "CP852" }, { "sk_SK", "CP852" }, { "sl", "CP852" }, { "sl_SI", "CP852" }, { "sq", "CP852" }, { "sq_AL", "CP852" }, { "sr", "CP852" }, /* CP852 or CP866 or CP855 ?? */ { "sr_CS", "CP852" }, /* CP852 or CP866 or CP855 ?? */ { "sr_YU", "CP852" }, /* CP852 or CP866 or CP855 ?? */ { "sv", "CP850" }, { "sv_SE", "CP850" }, { "th", "CP874" }, { "th_TH", "CP874" }, { "tr", "CP857" }, { "tr_TR", "CP857" }, { "uk", "CP1125" }, { "uk_UA", "CP1125" }, { "zh_CN", "GBK" }, { "zh_TW", "CP950" } /* not CP938 ?? */ # define locale_table_defined # endif # ifndef locale_table_defined /* Just a dummy entry, to avoid a C syntax error. */ { "", "" } # endif }; #endif /* Determine the current locale's character encoding, and canonicalize it into one of the canonical names listed below. The result must not be freed; it is statically allocated. The result becomes invalid when setlocale() is used to change the global locale, or when the value of one of the environment variables LC_ALL, LC_CTYPE, LANG is changed; threads in multithreaded programs should not do this. If the canonical name cannot be determined, the result is a non-canonical name. */ #ifdef STATIC STATIC #endif const char * locale_charset (void) { const char *codeset; /* This function must be multithread-safe. To achieve this without using thread-local storage, we use a simple strcpy or memcpy to fill this static buffer. Filling it through, for example, strcpy + strcat would not be guaranteed to leave the buffer's contents intact if another thread is currently accessing it. If necessary, the contents is first assembled in a stack-allocated buffer. */ #if HAVE_LANGINFO_CODESET || defined WINDOWS_NATIVE || defined OS2 # if HAVE_LANGINFO_CODESET /* Most systems support nl_langinfo (CODESET) nowadays. */ codeset = nl_langinfo (CODESET); # ifdef __CYGWIN__ /* Cygwin < 1.7 does not have locales. nl_langinfo (CODESET) always returns "US-ASCII". Return the suffix of the locale name from the environment variables (if present) or the codepage as a number. */ if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0) { const char *locale; static char resultbuf[2 + 10 + 1]; locale = getenv ("LC_ALL"); if (locale == NULL || locale[0] == '\0') { locale = getenv ("LC_CTYPE"); if (locale == NULL || locale[0] == '\0') locale = getenv ("LANG"); } if (locale != NULL && locale[0] != '\0') { /* If the locale name contains an encoding after the dot, return it. */ const char *dot = strchr (locale, '.'); if (dot != NULL) { const char *modifier; dot++; /* Look for the possible @... trailer and remove it, if any. */ modifier = strchr (dot, '@'); if (modifier == NULL) return dot; if (modifier - dot < sizeof (resultbuf)) { /* This way of filling resultbuf is multithread-safe. */ memcpy (resultbuf, dot, modifier - dot); resultbuf [modifier - dot] = '\0'; return resultbuf; } } } /* The Windows API has a function returning the locale's codepage as a number: GetACP(). This encoding is used by Cygwin, unless the user has set the environment variable CYGWIN=codepage:oem (which very few people do). Output directed to console windows needs to be converted (to GetOEMCP() if the console is using a raster font, or to GetConsoleOutputCP() if it is using a TrueType font). Cygwin does this conversion transparently (see winsup/cygwin/fhandler_console.cc), converting to GetConsoleOutputCP(). This leads to correct results, except when SetConsoleOutputCP has been called and a raster font is in use. */ { char buf[2 + 10 + 1]; sprintf (buf, "CP%u", GetACP ()); strcpy (resultbuf, buf); codeset = resultbuf; } } # endif if (codeset == NULL) /* The canonical name cannot be determined. */ codeset = ""; # elif defined WINDOWS_NATIVE char buf[2 + 10 + 1]; static char resultbuf[2 + 10 + 1]; /* The Windows API has a function returning the locale's codepage as a number, but the value doesn't change according to what the 'setlocale' call specified. So we use it as a last resort, in case the string returned by 'setlocale' doesn't specify the codepage. */ char *current_locale = setlocale (LC_CTYPE, NULL); char *pdot = strrchr (current_locale, '.'); if (pdot && 2 + strlen (pdot + 1) + 1 <= sizeof (buf)) sprintf (buf, "CP%s", pdot + 1); else { /* The Windows API has a function returning the locale's codepage as a number: GetACP(). When the output goes to a console window, it needs to be provided in GetOEMCP() encoding if the console is using a raster font, or in GetConsoleOutputCP() encoding if it is using a TrueType font. But in GUI programs and for output sent to files and pipes, GetACP() encoding is the best bet. */ sprintf (buf, "CP%u", GetACP ()); } /* For a locale name such as "French_France.65001", in Windows 10, setlocale now returns "French_France.utf8" instead. */ if (strcmp (buf + 2, "65001") == 0 || strcmp (buf + 2, "utf8") == 0) codeset = "UTF-8"; else { strcpy (resultbuf, buf); codeset = resultbuf; } # elif defined OS2 const char *locale; static char resultbuf[2 + 10 + 1]; ULONG cp[3]; ULONG cplen; codeset = NULL; /* Allow user to override the codeset, as set in the operating system, with standard language environment variables. */ locale = getenv ("LC_ALL"); if (locale == NULL || locale[0] == '\0') { locale = getenv ("LC_CTYPE"); if (locale == NULL || locale[0] == '\0') locale = getenv ("LANG"); } if (locale != NULL && locale[0] != '\0') { /* If the locale name contains an encoding after the dot, return it. */ const char *dot = strchr (locale, '.'); if (dot != NULL) { const char *modifier; dot++; /* Look for the possible @... trailer and remove it, if any. */ modifier = strchr (dot, '@'); if (modifier == NULL) return dot; if (modifier - dot < sizeof (resultbuf)) { /* This way of filling resultbuf is multithread-safe. */ memcpy (resultbuf, dot, modifier - dot); resultbuf [modifier - dot] = '\0'; return resultbuf; } } /* For the POSIX locale, don't use the system's codepage. */ if (strcmp (locale, "C") == 0 || strcmp (locale, "POSIX") == 0) codeset = ""; } if (codeset == NULL) { /* OS/2 has a function returning the locale's codepage as a number. */ if (DosQueryCp (sizeof (cp), cp, &cplen)) codeset = ""; else { char buf[2 + 10 + 1]; sprintf (buf, "CP%u", cp[0]); strcpy (resultbuf, buf); codeset = resultbuf; } } # else # error "Add code for other platforms here." # endif /* Resolve alias. */ { # ifdef alias_table_defined /* On some platforms, UTF-8 locales are the most frequently used ones. Speed up the common case and slow down the less common cases by testing for this case first. */ # if defined __OpenBSD__ || (defined __APPLE__ && defined __MACH__) || defined __sun || defined __CYGWIN__ if (strcmp (codeset, "UTF-8") == 0) goto done_table_lookup; else # endif { const struct table_entry * const table = alias_table; size_t const table_size = sizeof (alias_table) / sizeof (struct table_entry); /* The table is sorted. Perform a binary search. */ size_t hi = table_size; size_t lo = 0; while (lo < hi) { /* Invariant: for i < lo, strcmp (table[i].alias, codeset) < 0, for i >= hi, strcmp (table[i].alias, codeset) > 0. */ size_t mid = (hi + lo) >> 1; /* >= lo, < hi */ int cmp = strcmp (table[mid].alias, codeset); if (cmp < 0) lo = mid + 1; else if (cmp > 0) hi = mid; else { /* Found an i with strcmp (table[i].alias, codeset) == 0. */ codeset = table[mid].canonical; goto done_table_lookup; } } } if (0) done_table_lookup: ; else # endif { /* Did not find it in the table. */ /* On Mac OS X, all modern locales use the UTF-8 encoding. BeOS and Haiku have a single locale, and it has UTF-8 encoding. */ # if (defined __APPLE__ && defined __MACH__) || defined __BEOS__ || defined __HAIKU__ codeset = "UTF-8"; # else /* Don't return an empty string. GNU libc and GNU libiconv interpret the empty string as denoting "the locale's character encoding", thus GNU libiconv would call this function a second time. */ if (codeset[0] == '\0') codeset = "ASCII"; # endif } } #else /* On old systems which lack it, use setlocale or getenv. */ const char *locale = NULL; /* But most old systems don't have a complete set of locales. Some (like DJGPP) have only the C locale. Therefore we don't use setlocale here; it would return "C" when it doesn't support the locale name the user has set. */ # if 0 locale = setlocale (LC_CTYPE, NULL); # endif if (locale == NULL || locale[0] == '\0') { locale = getenv ("LC_ALL"); if (locale == NULL || locale[0] == '\0') { locale = getenv ("LC_CTYPE"); if (locale == NULL || locale[0] == '\0') locale = getenv ("LANG"); if (locale == NULL) locale = ""; } } /* Map locale name to canonical encoding name. */ { # ifdef locale_table_defined const struct table_entry * const table = locale_table; size_t const table_size = sizeof (locale_table) / sizeof (struct table_entry); /* The table is sorted. Perform a binary search. */ size_t hi = table_size; size_t lo = 0; while (lo < hi) { /* Invariant: for i < lo, strcmp (table[i].locale, locale) < 0, for i >= hi, strcmp (table[i].locale, locale) > 0. */ size_t mid = (hi + lo) >> 1; /* >= lo, < hi */ int cmp = strcmp (table[mid].locale, locale); if (cmp < 0) lo = mid + 1; else if (cmp > 0) hi = mid; else { /* Found an i with strcmp (table[i].locale, locale) == 0. */ codeset = table[mid].canonical; goto done_table_lookup; } } if (0) done_table_lookup: ; else # endif { /* Did not find it in the table. */ /* On Mac OS X, all modern locales use the UTF-8 encoding. BeOS and Haiku have a single locale, and it has UTF-8 encoding. */ # if (defined __APPLE__ && defined __MACH__) || defined __BEOS__ || defined __HAIKU__ codeset = "UTF-8"; # else /* The canonical name cannot be determined. */ /* Don't return an empty string. GNU libc and GNU libiconv interpret the empty string as denoting "the locale's character encoding", thus GNU libiconv would call this function a second time. */ codeset = "ASCII"; # endif } } #endif #ifdef DARWIN7 /* Mac OS X sets MB_CUR_MAX to 1 when LC_ALL=C, and "UTF-8" (the default codeset) does not work when MB_CUR_MAX is 1. */ if (strcmp (codeset, "UTF-8") == 0 && MB_CUR_MAX_L (uselocale (NULL)) <= 1) codeset = "ASCII"; #endif return codeset; } recode-3.7.15/lib/getprogname.c0000644000175000017500000002230614371444255011767 /* Program name management. Copyright (C) 2016-2023 Free Software Foundation, Inc. This program 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. 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 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 . */ #include /* Specification. Also get __argv declaration. */ #include #include /* get program_invocation_name declaration */ #ifdef _AIX # include # include # include #endif #ifdef __MVS__ # ifndef _OPEN_SYS # define _OPEN_SYS # endif # include # include #endif #ifdef __hpux # include # include # include # include #endif #if defined __sgi || defined __osf__ # include # include # include # include # include #endif #if defined __SCO_VERSION__ || defined __sysv5__ # include # include #endif #include "basename-lgpl.h" #ifndef HAVE_GETPROGNAME /* not Mac OS X, FreeBSD, NetBSD, OpenBSD >= 5.4, Solaris >= 11, Cygwin, Android API level >= 21 */ char const * getprogname (void) { # if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME /* glibc, BeOS */ /* https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html */ return program_invocation_short_name; # elif HAVE_DECL_PROGRAM_INVOCATION_NAME /* glibc, BeOS */ /* https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html */ return last_component (program_invocation_name); # elif HAVE_GETEXECNAME /* Solaris */ /* https://docs.oracle.com/cd/E19253-01/816-5168/6mbb3hrb1/index.html */ const char *p = getexecname (); if (!p) p = "?"; return last_component (p); # elif HAVE_DECL___ARGV /* mingw, MSVC */ /* https://docs.microsoft.com/en-us/cpp/c-runtime-library/argc-argv-wargv */ const char *p = __argv && __argv[0] ? __argv[0] : "?"; return last_component (p); # elif HAVE_VAR___PROGNAME /* OpenBSD, Android, QNX */ /* https://man.openbsd.org/style.9 */ /* http://www.qnx.de/developers/docs/6.5.0/index.jsp?topic=%2Fcom.qnx.doc.neutrino_lib_ref%2Fp%2F__progname.html */ /* Be careful to declare this only when we absolutely need it (OpenBSD 5.1), rather than when it's available. Otherwise, its mere declaration makes program_invocation_short_name malfunction (have zero length) with Fedora 25's glibc. */ extern char *__progname; const char *p = __progname; # if defined __ANDROID__ return last_component (p); # else return p && p[0] ? p : "?"; # endif # elif _AIX /* AIX */ /* Idea by Bastien ROUCARIÈS, https://lists.gnu.org/r/bug-gnulib/2010-12/msg00095.html Reference: https://www.ibm.com/support/knowledgecenter/en/ssw_aix_61/com.ibm.aix.basetrf1/getprocs.htm */ static char *p; static int first = 1; if (first) { first = 0; pid_t pid = getpid (); struct procentry64 procs; p = (0 < getprocs64 (&procs, sizeof procs, NULL, 0, &pid, 1) ? strdup (procs.pi_comm) : NULL); if (!p) p = "?"; } return p; # elif defined __hpux static char *p; static int first = 1; if (first) { first = 0; pid_t pid = getpid (); struct pst_status status; if (pstat_getproc (&status, sizeof status, 0, pid) > 0) { char *ucomm = status.pst_ucomm; char *cmd = status.pst_cmd; if (strlen (ucomm) < PST_UCOMMLEN - 1) p = ucomm; else { /* ucomm is truncated to length PST_UCOMMLEN - 1. Look at cmd instead. */ char *space = strchr (cmd, ' '); if (space != NULL) *space = '\0'; p = strrchr (cmd, '/'); if (p != NULL) p++; else p = cmd; if (strlen (p) > PST_UCOMMLEN - 1 && memcmp (p, ucomm, PST_UCOMMLEN - 1) == 0) /* p is less truncated than ucomm. */ ; else p = ucomm; } p = strdup (p); } else { # if !defined __LP64__ /* Support for 32-bit programs running in 64-bit HP-UX. The documented way to do this is to use the same source code as above, but in a compilation unit where '#define _PSTAT64 1' is in effect. I prefer a single compilation unit; the struct size and the offsets are not going to change. */ char status64[1216]; if (__pstat_getproc64 (status64, sizeof status64, 0, pid) > 0) { char *ucomm = status64 + 288; char *cmd = status64 + 168; if (strlen (ucomm) < PST_UCOMMLEN - 1) p = ucomm; else { /* ucomm is truncated to length PST_UCOMMLEN - 1. Look at cmd instead. */ char *space = strchr (cmd, ' '); if (space != NULL) *space = '\0'; p = strrchr (cmd, '/'); if (p != NULL) p++; else p = cmd; if (strlen (p) > PST_UCOMMLEN - 1 && memcmp (p, ucomm, PST_UCOMMLEN - 1) == 0) /* p is less truncated than ucomm. */ ; else p = ucomm; } p = strdup (p); } else # endif p = NULL; } if (!p) p = "?"; } return p; # elif __MVS__ /* z/OS */ /* https://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxbd00/rtwgetp.htm */ static char *p = "?"; static int first = 1; if (first) { pid_t pid = getpid (); int token; W_PSPROC buf; first = 0; memset (&buf, 0, sizeof(buf)); buf.ps_cmdptr = (char *) malloc (buf.ps_cmdlen = PS_CMDBLEN_LONG); buf.ps_conttyptr = (char *) malloc (buf.ps_conttylen = PS_CONTTYBLEN); buf.ps_pathptr = (char *) malloc (buf.ps_pathlen = PS_PATHBLEN); if (buf.ps_cmdptr && buf.ps_conttyptr && buf.ps_pathptr) { for (token = 0; token >= 0; token = w_getpsent (token, &buf, sizeof(buf))) { if (token > 0 && buf.ps_pid == pid) { char *s = strdup (last_component (buf.ps_pathptr)); if (s) p = s; break; } } } free (buf.ps_cmdptr); free (buf.ps_conttyptr); free (buf.ps_pathptr); } return p; # elif defined __sgi || defined __osf__ /* IRIX or Tru64 */ char filename[50]; int fd; # if defined __sgi sprintf (filename, "/proc/pinfo/%d", (int) getpid ()); # else sprintf (filename, "/proc/%d", (int) getpid ()); # endif fd = open (filename, O_RDONLY | O_CLOEXEC); if (0 <= fd) { prpsinfo_t buf; int ioctl_ok = 0 <= ioctl (fd, PIOCPSINFO, &buf); close (fd); if (ioctl_ok) { char *name = buf.pr_fname; size_t namesize = sizeof buf.pr_fname; /* It may not be NUL-terminated. */ char *namenul = memchr (name, '\0', namesize); size_t namelen = namenul ? namenul - name : namesize; char *namecopy = malloc (namelen + 1); if (namecopy) { namecopy[namelen] = '\0'; return memcpy (namecopy, name, namelen); } } } return NULL; # elif defined __SCO_VERSION__ || defined __sysv5__ /* SCO OpenServer6/UnixWare */ char buf[80]; int fd; sprintf (buf, "/proc/%d/cmdline", getpid()); fd = open (buf, O_RDONLY); if (0 <= fd) { size_t n = read (fd, buf, 79); if (n > 0) { buf[n] = '\0'; /* Guarantee null-termination */ char *progname; progname = strrchr (buf, '/'); if (progname) { progname = progname + 1; /* Skip the '/' */ } else { progname = buf; } char *ret; ret = malloc (strlen (progname) + 1); if (ret) { strcpy (ret, progname); return ret; } } close (fd); } return "?"; # else # error "getprogname module not ported to this OS" # endif } #endif /* * Hey Emacs! * Local Variables: * coding: utf-8 * End: */ recode-3.7.15/lib/close.c0000644000175000017500000000314314371444255010562 /* close replacement. Copyright (C) 2008-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include #include #include "fd-hook.h" #if HAVE_MSVC_INVALID_PARAMETER_HANDLER # include "msvc-inval.h" #endif #undef close #if defined _WIN32 && !defined __CYGWIN__ # if HAVE_MSVC_INVALID_PARAMETER_HANDLER static int close_nothrow (int fd) { int result; TRY_MSVC_INVAL { result = _close (fd); } CATCH_MSVC_INVAL { result = -1; errno = EBADF; } DONE_MSVC_INVAL; return result; } # else # define close_nothrow _close # endif #else # define close_nothrow close #endif /* Override close() to call into other gnulib modules. */ int rpl_close (int fd) { #if WINDOWS_SOCKETS int retval = execute_all_close_hooks (close_nothrow, fd); #else int retval = close_nothrow (fd); #endif #if REPLACE_FCHDIR if (retval >= 0) _gl_unregister_fd (fd); #endif return retval; } recode-3.7.15/lib/cloexec.c0000644000175000017500000000445414371444255011105 /* cloexec.c - set or clear the close-on-exec descriptor flag Copyright (C) 1991, 2004-2006, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* The code is taken from glibc/manual/llio.texi */ #include #include "cloexec.h" #include #include #include /* Set the 'FD_CLOEXEC' flag of DESC if VALUE is true, or clear the flag if VALUE is false. Return 0 on success, or -1 on error with 'errno' set. Note that on MingW, this function does NOT protect DESC from being inherited into spawned children. Instead, either use dup_cloexec followed by closing the original DESC, or use interfaces such as open or pipe2 that accept flags like O_CLOEXEC to create DESC non-inheritable in the first place. */ int set_cloexec_flag (int desc, bool value) { #ifdef F_SETFD int flags = fcntl (desc, F_GETFD, 0); if (0 <= flags) { int newflags = (value ? flags | FD_CLOEXEC : flags & ~FD_CLOEXEC); if (flags == newflags || fcntl (desc, F_SETFD, newflags) != -1) return 0; } return -1; #else /* !F_SETFD */ /* Use dup2 to reject invalid file descriptors; the cloexec flag will be unaffected. */ if (desc < 0) { errno = EBADF; return -1; } if (dup2 (desc, desc) < 0) /* errno is EBADF here. */ return -1; /* There is nothing we can do on this kind of platform. Punt. */ return 0; #endif /* !F_SETFD */ } /* Duplicates a file handle FD, while marking the copy to be closed prior to exec or spawn. Returns -1 and sets errno if FD could not be duplicated. */ int dup_cloexec (int fd) { return fcntl (fd, F_DUPFD_CLOEXEC, 0); } recode-3.7.15/lib/Makefile.in0000644000175000017500000114240214766020640011355 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright (C) 2002-2023 Free Software Foundation, Inc. # # This file 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 3 of the License, or # (at your option) any later version. # # This file 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # Reproduce by: # gnulib-tool --import --local-dir=gl-mod/bootstrap --local-dir=gl \ # --lib=libgnu \ # --source-base=lib \ # --m4-base=m4 \ # --doc-base=doc \ # --tests-base=tests \ # --aux-dir=build-aux \ # --no-conditional-dependencies \ # --libtool \ # --macro-prefix=gl \ # argmatch \ # bootstrap \ # canonicalize-lgpl \ # dirname \ # error \ # getopt-posix \ # gettext-h \ # hash \ # iconv \ # isatty \ # localcharset \ # manywarnings \ # minmax \ # mkstemps \ # pathmax \ # pipe-posix \ # quotearg \ # sigaction \ # strndup \ # sys_wait \ # unistd \ # utime \ # vasprintf \ # vprintf-posix \ # xalloc \ # xbinary-io VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @GL_COND_OBJ_CANONICALIZE_LGPL_TRUE@am__append_1 = canonicalize-lgpl.c @GL_COND_OBJ_CLOSE_TRUE@am__append_2 = close.c @GL_COND_OBJ_DUP2_TRUE@am__append_3 = dup2.c @GL_COND_OBJ_ERROR_TRUE@am__append_4 = error.c @GL_COND_OBJ_FCNTL_TRUE@am__append_5 = fcntl.c @GL_COND_OBJ_FLOAT_TRUE@am__append_6 = float.c @GL_COND_OBJ_ITOLD_TRUE@am__append_7 = itold.c @GL_COND_OBJ_FREE_TRUE@am__append_8 = free.c @GL_COND_OBJ_FSETERR_TRUE@am__append_9 = fseterr.c @GL_COND_OBJ_FSTAT_TRUE@am__append_10 = fstat.c @GL_COND_OBJ_GETDTABLESIZE_TRUE@am__append_11 = getdtablesize.c @GL_COND_OBJ_GETOPT_TRUE@am__append_12 = getopt.c getopt1.c @GL_COND_OBJ_GETPROGNAME_TRUE@am__append_13 = getprogname.c @GL_COND_OBJ_GETRANDOM_TRUE@am__append_14 = getrandom.c @GL_COND_OBJ_ISATTY_TRUE@am__append_15 = isatty.c @GL_COND_OBJ_LSTAT_TRUE@am__append_16 = lstat.c @GL_COND_OBJ_MBRTOWC_TRUE@am__append_17 = mbrtowc.c @GL_COND_OBJ_MBSINIT_TRUE@am__append_18 = mbsinit.c @GL_COND_OBJ_MEMCHR_TRUE@am__append_19 = memchr.c @GL_COND_OBJ_MEMPCPY_TRUE@am__append_20 = mempcpy.c @GL_COND_OBJ_MKDIR_TRUE@am__append_21 = mkdir.c @GL_COND_OBJ_MKSTEMPS_TRUE@am__append_22 = mkstemps.c @GL_COND_OBJ_MSVC_INVAL_TRUE@am__append_23 = msvc-inval.c @GL_COND_OBJ_MSVC_NOTHROW_TRUE@am__append_24 = msvc-nothrow.c @GL_COND_OBJ_OPEN_TRUE@am__append_25 = open.c @GL_COND_OBJ_PIPE_TRUE@am__append_26 = pipe.c @GL_COND_OBJ_RAISE_TRUE@am__append_27 = raise.c @GL_COND_OBJ_RAWMEMCHR_TRUE@am__append_28 = rawmemchr.c @GL_COND_OBJ_READLINK_TRUE@am__append_29 = readlink.c @GL_COND_OBJ_REALLOCARRAY_TRUE@am__append_30 = reallocarray.c @GL_COND_OBJ_SETLOCALE_LOCK_TRUE@am__append_31 = setlocale-lock.c @GL_COND_OBJ_SIGACTION_TRUE@am__append_32 = sigaction.c @GL_COND_OBJ_SIGNBIT3_TRUE@am__append_33 = signbitf.c signbitd.c signbitl.c @GL_COND_OBJ_SIGPROCMASK_TRUE@am__append_34 = sigprocmask.c @GL_COND_OBJ_STAT_TRUE@am__append_35 = stat.c @GL_COND_OBJ_STDIO_READ_TRUE@am__append_36 = stdio-read.c @GL_COND_OBJ_STDIO_WRITE_TRUE@am__append_37 = stdio-write.c @GL_COND_OBJ_STRERROR_TRUE@am__append_38 = strerror.c @GL_COND_OBJ_STRERROR_OVERRIDE_TRUE@am__append_39 = strerror-override.c @GL_COND_OBJ_STRNDUP_TRUE@am__append_40 = strndup.c @GL_COND_OBJ_STRNLEN_TRUE@am__append_41 = strnlen.c @GL_COND_OBJ_UTIME_TRUE@am__append_42 = utime.c subdir = lib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ $(top_srcdir)/m4/__inline.m4 \ $(top_srcdir)/m4/absolute-header.m4 $(top_srcdir)/m4/alloca.m4 \ $(top_srcdir)/m4/assert_h.m4 \ $(top_srcdir)/m4/builtin-expect.m4 $(top_srcdir)/m4/c-bool.m4 \ $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \ $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/close.m4 \ $(top_srcdir)/m4/codeset.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/error_h.m4 \ $(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/exponentf.m4 \ $(top_srcdir)/m4/exponentl.m4 $(top_srcdir)/m4/extensions.m4 \ $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \ $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \ $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fpieee.m4 \ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/frexp.m4 \ $(top_srcdir)/m4/frexpl.m4 $(top_srcdir)/m4/fseterr.m4 \ $(top_srcdir)/m4/fstat.m4 $(top_srcdir)/m4/getdtablesize.m4 \ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getprogname.m4 \ $(top_srcdir)/m4/getrandom.m4 $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gnulib-common.m4 \ $(top_srcdir)/m4/gnulib-comp.m4 \ $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/include_next.m4 \ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ $(top_srcdir)/m4/isatty.m4 $(top_srcdir)/m4/isnand.m4 \ $(top_srcdir)/m4/isnanf.m4 $(top_srcdir)/m4/isnanl.m4 \ $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/ldexpl.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/localcharset.m4 \ $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \ $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/locale_h.m4 \ $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \ $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \ $(top_srcdir)/m4/math_h.m4 $(top_srcdir)/m4/mbrtowc.m4 \ $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \ $(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mkdir.m4 \ $(top_srcdir)/m4/mkstemps.m4 $(top_srcdir)/m4/mmap-anon.m4 \ $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \ $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \ $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open-cloexec.m4 \ $(top_srcdir)/m4/open-slash.m4 $(top_srcdir)/m4/open.m4 \ $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/pipe.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-frexp.m4 \ $(top_srcdir)/m4/printf-frexpl.m4 $(top_srcdir)/m4/printf.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/raise.m4 \ $(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/readlink.m4 \ $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/reallocarray.m4 \ $(top_srcdir)/m4/setlocale_null.m4 \ $(top_srcdir)/m4/sigaction.m4 $(top_srcdir)/m4/signal_h.m4 \ $(top_srcdir)/m4/signalblocking.m4 $(top_srcdir)/m4/signbit.m4 \ $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/ssize_t.m4 \ $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \ $(top_srcdir)/m4/stdalign.m4 $(top_srcdir)/m4/stddef_h.m4 \ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \ $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \ $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \ $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \ $(top_srcdir)/m4/sys_random_h.m4 \ $(top_srcdir)/m4/sys_socket_h.m4 \ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_types_h.m4 \ $(top_srcdir)/m4/sys_wait_h.m4 $(top_srcdir)/m4/tempname.m4 \ $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/utime.m4 \ $(top_srcdir)/m4/utime_h.m4 $(top_srcdir)/m4/vasnprintf.m4 \ $(top_srcdir)/m4/vasprintf.m4 \ $(top_srcdir)/m4/vfprintf-posix.m4 \ $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/m4/vprintf-posix.m4 \ $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \ $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \ $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wint_t.m4 \ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xsize.m4 \ $(top_srcdir)/m4/zzgnulib.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) LTLIBRARIES = $(noinst_LTLIBRARIES) am__DEPENDENCIES_1 = am__libgnu_la_SOURCES_DIST = argmatch.c basename-lgpl.c binary-io.h \ binary-io.c bitrotate.h bitrotate.c c-ctype.h c-ctype.c \ c-strcase.h c-strcasecmp.c c-strncasecmp.c canonicalize-lgpl.c \ cloexec.c close.c dirname.c basename.c dirname-lgpl.c \ stripslash.c dup2.c error.c exitfail.c fcntl.c fd-hook.c \ float.c itold.c free.c fseterr.c fstat.c getdtablesize.c \ getopt.c getopt1.c getprogname.c getrandom.c gettext.h \ malloc/scratch_buffer_grow.c \ malloc/scratch_buffer_grow_preserve.c \ malloc/scratch_buffer_set_array_size.c hard-locale.c hash.c \ ialloc.c idx.h isatty.c localcharset.c lstat.c malloca.c \ math.c mbrtowc.c mbsinit.c memchr.c mempcpy.c minmax.h mkdir.c \ mkstemps.c msvc-inval.c msvc-nothrow.c open.c pipe.c \ printf-frexp.c printf-frexpl.c quotearg.c raise.c rawmemchr.c \ readlink.c reallocarray.c setlocale_null.c setlocale-lock.c \ sigaction.c sig-handler.c signbitf.c signbitd.c signbitl.c \ sigprocmask.c size_max.h stat.c stat-time.c stdio-read.c \ stdio-write.c strerror.c strerror-override.c strndup.c \ strnlen.c tempname.c unistd.c utime.c wctype-h.c xmalloc.c \ xalloc-die.c xbinary-io.h xbinary-io.c xsize.h xsize.c @GL_COND_OBJ_CANONICALIZE_LGPL_TRUE@am__objects_1 = libgnu_la-canonicalize-lgpl.lo @GL_COND_OBJ_CLOSE_TRUE@am__objects_2 = libgnu_la-close.lo @GL_COND_OBJ_DUP2_TRUE@am__objects_3 = libgnu_la-dup2.lo @GL_COND_OBJ_ERROR_TRUE@am__objects_4 = libgnu_la-error.lo @GL_COND_OBJ_FCNTL_TRUE@am__objects_5 = libgnu_la-fcntl.lo @GL_COND_OBJ_FLOAT_TRUE@am__objects_6 = libgnu_la-float.lo @GL_COND_OBJ_ITOLD_TRUE@am__objects_7 = libgnu_la-itold.lo @GL_COND_OBJ_FREE_TRUE@am__objects_8 = libgnu_la-free.lo @GL_COND_OBJ_FSETERR_TRUE@am__objects_9 = libgnu_la-fseterr.lo @GL_COND_OBJ_FSTAT_TRUE@am__objects_10 = libgnu_la-fstat.lo @GL_COND_OBJ_GETDTABLESIZE_TRUE@am__objects_11 = \ @GL_COND_OBJ_GETDTABLESIZE_TRUE@ libgnu_la-getdtablesize.lo @GL_COND_OBJ_GETOPT_TRUE@am__objects_12 = libgnu_la-getopt.lo \ @GL_COND_OBJ_GETOPT_TRUE@ libgnu_la-getopt1.lo @GL_COND_OBJ_GETPROGNAME_TRUE@am__objects_13 = \ @GL_COND_OBJ_GETPROGNAME_TRUE@ libgnu_la-getprogname.lo @GL_COND_OBJ_GETRANDOM_TRUE@am__objects_14 = libgnu_la-getrandom.lo am__dirstamp = $(am__leading_dot)dirstamp @GL_COND_OBJ_ISATTY_TRUE@am__objects_15 = libgnu_la-isatty.lo @GL_COND_OBJ_LSTAT_TRUE@am__objects_16 = libgnu_la-lstat.lo @GL_COND_OBJ_MBRTOWC_TRUE@am__objects_17 = libgnu_la-mbrtowc.lo @GL_COND_OBJ_MBSINIT_TRUE@am__objects_18 = libgnu_la-mbsinit.lo @GL_COND_OBJ_MEMCHR_TRUE@am__objects_19 = libgnu_la-memchr.lo @GL_COND_OBJ_MEMPCPY_TRUE@am__objects_20 = libgnu_la-mempcpy.lo @GL_COND_OBJ_MKDIR_TRUE@am__objects_21 = libgnu_la-mkdir.lo @GL_COND_OBJ_MKSTEMPS_TRUE@am__objects_22 = libgnu_la-mkstemps.lo @GL_COND_OBJ_MSVC_INVAL_TRUE@am__objects_23 = libgnu_la-msvc-inval.lo @GL_COND_OBJ_MSVC_NOTHROW_TRUE@am__objects_24 = \ @GL_COND_OBJ_MSVC_NOTHROW_TRUE@ libgnu_la-msvc-nothrow.lo @GL_COND_OBJ_OPEN_TRUE@am__objects_25 = libgnu_la-open.lo @GL_COND_OBJ_PIPE_TRUE@am__objects_26 = libgnu_la-pipe.lo @GL_COND_OBJ_RAISE_TRUE@am__objects_27 = libgnu_la-raise.lo @GL_COND_OBJ_RAWMEMCHR_TRUE@am__objects_28 = libgnu_la-rawmemchr.lo @GL_COND_OBJ_READLINK_TRUE@am__objects_29 = libgnu_la-readlink.lo @GL_COND_OBJ_REALLOCARRAY_TRUE@am__objects_30 = \ @GL_COND_OBJ_REALLOCARRAY_TRUE@ libgnu_la-reallocarray.lo @GL_COND_OBJ_SETLOCALE_LOCK_TRUE@am__objects_31 = \ @GL_COND_OBJ_SETLOCALE_LOCK_TRUE@ libgnu_la-setlocale-lock.lo @GL_COND_OBJ_SIGACTION_TRUE@am__objects_32 = libgnu_la-sigaction.lo @GL_COND_OBJ_SIGNBIT3_TRUE@am__objects_33 = libgnu_la-signbitf.lo \ @GL_COND_OBJ_SIGNBIT3_TRUE@ libgnu_la-signbitd.lo \ @GL_COND_OBJ_SIGNBIT3_TRUE@ libgnu_la-signbitl.lo @GL_COND_OBJ_SIGPROCMASK_TRUE@am__objects_34 = \ @GL_COND_OBJ_SIGPROCMASK_TRUE@ libgnu_la-sigprocmask.lo @GL_COND_OBJ_STAT_TRUE@am__objects_35 = libgnu_la-stat.lo @GL_COND_OBJ_STDIO_READ_TRUE@am__objects_36 = libgnu_la-stdio-read.lo @GL_COND_OBJ_STDIO_WRITE_TRUE@am__objects_37 = \ @GL_COND_OBJ_STDIO_WRITE_TRUE@ libgnu_la-stdio-write.lo @GL_COND_OBJ_STRERROR_TRUE@am__objects_38 = libgnu_la-strerror.lo @GL_COND_OBJ_STRERROR_OVERRIDE_TRUE@am__objects_39 = libgnu_la-strerror-override.lo @GL_COND_OBJ_STRNDUP_TRUE@am__objects_40 = libgnu_la-strndup.lo @GL_COND_OBJ_STRNLEN_TRUE@am__objects_41 = libgnu_la-strnlen.lo @GL_COND_OBJ_UTIME_TRUE@am__objects_42 = libgnu_la-utime.lo am_libgnu_la_OBJECTS = libgnu_la-argmatch.lo \ libgnu_la-basename-lgpl.lo libgnu_la-binary-io.lo \ libgnu_la-bitrotate.lo libgnu_la-c-ctype.lo \ libgnu_la-c-strcasecmp.lo libgnu_la-c-strncasecmp.lo \ $(am__objects_1) libgnu_la-cloexec.lo $(am__objects_2) \ libgnu_la-dirname.lo libgnu_la-basename.lo \ libgnu_la-dirname-lgpl.lo libgnu_la-stripslash.lo \ $(am__objects_3) $(am__objects_4) libgnu_la-exitfail.lo \ $(am__objects_5) libgnu_la-fd-hook.lo $(am__objects_6) \ $(am__objects_7) $(am__objects_8) $(am__objects_9) \ $(am__objects_10) $(am__objects_11) $(am__objects_12) \ $(am__objects_13) $(am__objects_14) \ malloc/libgnu_la-scratch_buffer_grow.lo \ malloc/libgnu_la-scratch_buffer_grow_preserve.lo \ malloc/libgnu_la-scratch_buffer_set_array_size.lo \ libgnu_la-hard-locale.lo libgnu_la-hash.lo libgnu_la-ialloc.lo \ $(am__objects_15) libgnu_la-localcharset.lo $(am__objects_16) \ libgnu_la-malloca.lo libgnu_la-math.lo $(am__objects_17) \ $(am__objects_18) $(am__objects_19) $(am__objects_20) \ $(am__objects_21) $(am__objects_22) $(am__objects_23) \ $(am__objects_24) $(am__objects_25) $(am__objects_26) \ libgnu_la-printf-frexp.lo libgnu_la-printf-frexpl.lo \ libgnu_la-quotearg.lo $(am__objects_27) $(am__objects_28) \ $(am__objects_29) $(am__objects_30) \ libgnu_la-setlocale_null.lo $(am__objects_31) \ $(am__objects_32) libgnu_la-sig-handler.lo $(am__objects_33) \ $(am__objects_34) $(am__objects_35) libgnu_la-stat-time.lo \ $(am__objects_36) $(am__objects_37) $(am__objects_38) \ $(am__objects_39) $(am__objects_40) $(am__objects_41) \ libgnu_la-tempname.lo libgnu_la-unistd.lo $(am__objects_42) \ libgnu_la-wctype-h.lo libgnu_la-xmalloc.lo \ libgnu_la-xalloc-die.lo libgnu_la-xbinary-io.lo \ libgnu_la-xsize.lo libgnu_la_OBJECTS = $(am_libgnu_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libgnu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libgnu_la_CFLAGS) \ $(CFLAGS) $(libgnu_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/libgnu_la-argmatch.Plo \ ./$(DEPDIR)/libgnu_la-asnprintf.Plo \ ./$(DEPDIR)/libgnu_la-asprintf.Plo \ ./$(DEPDIR)/libgnu_la-basename-lgpl.Plo \ ./$(DEPDIR)/libgnu_la-basename.Plo \ ./$(DEPDIR)/libgnu_la-binary-io.Plo \ ./$(DEPDIR)/libgnu_la-bitrotate.Plo \ ./$(DEPDIR)/libgnu_la-c-ctype.Plo \ ./$(DEPDIR)/libgnu_la-c-strcasecmp.Plo \ ./$(DEPDIR)/libgnu_la-c-strncasecmp.Plo \ ./$(DEPDIR)/libgnu_la-calloc.Plo \ ./$(DEPDIR)/libgnu_la-canonicalize-lgpl.Plo \ ./$(DEPDIR)/libgnu_la-cloexec.Plo \ ./$(DEPDIR)/libgnu_la-close.Plo \ ./$(DEPDIR)/libgnu_la-dirname-lgpl.Plo \ ./$(DEPDIR)/libgnu_la-dirname.Plo \ ./$(DEPDIR)/libgnu_la-dup2.Plo ./$(DEPDIR)/libgnu_la-error.Plo \ ./$(DEPDIR)/libgnu_la-exitfail.Plo \ ./$(DEPDIR)/libgnu_la-fcntl.Plo \ ./$(DEPDIR)/libgnu_la-fd-hook.Plo \ ./$(DEPDIR)/libgnu_la-float.Plo ./$(DEPDIR)/libgnu_la-free.Plo \ ./$(DEPDIR)/libgnu_la-frexp.Plo \ ./$(DEPDIR)/libgnu_la-frexpl.Plo \ ./$(DEPDIR)/libgnu_la-fseterr.Plo \ ./$(DEPDIR)/libgnu_la-fstat.Plo \ ./$(DEPDIR)/libgnu_la-getdtablesize.Plo \ ./$(DEPDIR)/libgnu_la-getopt.Plo \ ./$(DEPDIR)/libgnu_la-getopt1.Plo \ ./$(DEPDIR)/libgnu_la-getprogname.Plo \ ./$(DEPDIR)/libgnu_la-getrandom.Plo \ ./$(DEPDIR)/libgnu_la-hard-locale.Plo \ ./$(DEPDIR)/libgnu_la-hash.Plo \ ./$(DEPDIR)/libgnu_la-ialloc.Plo \ ./$(DEPDIR)/libgnu_la-isatty.Plo \ ./$(DEPDIR)/libgnu_la-isnan.Plo \ ./$(DEPDIR)/libgnu_la-isnand.Plo \ ./$(DEPDIR)/libgnu_la-isnanf.Plo \ ./$(DEPDIR)/libgnu_la-isnanl.Plo \ ./$(DEPDIR)/libgnu_la-itold.Plo \ ./$(DEPDIR)/libgnu_la-lc-charset-dispatch.Plo \ ./$(DEPDIR)/libgnu_la-localcharset.Plo \ ./$(DEPDIR)/libgnu_la-lstat.Plo \ ./$(DEPDIR)/libgnu_la-malloc.Plo \ ./$(DEPDIR)/libgnu_la-malloca.Plo \ ./$(DEPDIR)/libgnu_la-math.Plo \ ./$(DEPDIR)/libgnu_la-mbrtowc.Plo \ ./$(DEPDIR)/libgnu_la-mbsinit.Plo \ ./$(DEPDIR)/libgnu_la-mbtowc-lock.Plo \ ./$(DEPDIR)/libgnu_la-memchr.Plo \ ./$(DEPDIR)/libgnu_la-mempcpy.Plo \ ./$(DEPDIR)/libgnu_la-mkdir.Plo \ ./$(DEPDIR)/libgnu_la-mkstemps.Plo \ ./$(DEPDIR)/libgnu_la-msvc-inval.Plo \ ./$(DEPDIR)/libgnu_la-msvc-nothrow.Plo \ ./$(DEPDIR)/libgnu_la-open.Plo ./$(DEPDIR)/libgnu_la-pipe.Plo \ ./$(DEPDIR)/libgnu_la-printf-args.Plo \ ./$(DEPDIR)/libgnu_la-printf-frexp.Plo \ ./$(DEPDIR)/libgnu_la-printf-frexpl.Plo \ ./$(DEPDIR)/libgnu_la-printf-parse.Plo \ ./$(DEPDIR)/libgnu_la-quotearg.Plo \ ./$(DEPDIR)/libgnu_la-raise.Plo \ ./$(DEPDIR)/libgnu_la-rawmemchr.Plo \ ./$(DEPDIR)/libgnu_la-readlink.Plo \ ./$(DEPDIR)/libgnu_la-realloc.Plo \ ./$(DEPDIR)/libgnu_la-reallocarray.Plo \ ./$(DEPDIR)/libgnu_la-setlocale-lock.Plo \ ./$(DEPDIR)/libgnu_la-setlocale_null.Plo \ ./$(DEPDIR)/libgnu_la-sig-handler.Plo \ ./$(DEPDIR)/libgnu_la-sigaction.Plo \ ./$(DEPDIR)/libgnu_la-signbitd.Plo \ ./$(DEPDIR)/libgnu_la-signbitf.Plo \ ./$(DEPDIR)/libgnu_la-signbitl.Plo \ ./$(DEPDIR)/libgnu_la-sigprocmask.Plo \ ./$(DEPDIR)/libgnu_la-stat-time.Plo \ ./$(DEPDIR)/libgnu_la-stat-w32.Plo \ ./$(DEPDIR)/libgnu_la-stat.Plo \ ./$(DEPDIR)/libgnu_la-stdio-read.Plo \ ./$(DEPDIR)/libgnu_la-stdio-write.Plo \ ./$(DEPDIR)/libgnu_la-strerror-override.Plo \ ./$(DEPDIR)/libgnu_la-strerror.Plo \ ./$(DEPDIR)/libgnu_la-stripslash.Plo \ ./$(DEPDIR)/libgnu_la-strndup.Plo \ ./$(DEPDIR)/libgnu_la-strnlen.Plo \ ./$(DEPDIR)/libgnu_la-tempname.Plo \ ./$(DEPDIR)/libgnu_la-unistd.Plo \ ./$(DEPDIR)/libgnu_la-utime.Plo \ ./$(DEPDIR)/libgnu_la-vasnprintf.Plo \ ./$(DEPDIR)/libgnu_la-vasprintf.Plo \ ./$(DEPDIR)/libgnu_la-vfprintf.Plo \ ./$(DEPDIR)/libgnu_la-vprintf.Plo \ ./$(DEPDIR)/libgnu_la-wctype-h.Plo \ ./$(DEPDIR)/libgnu_la-xalloc-die.Plo \ ./$(DEPDIR)/libgnu_la-xbinary-io.Plo \ ./$(DEPDIR)/libgnu_la-xmalloc.Plo \ ./$(DEPDIR)/libgnu_la-xsize.Plo \ malloc/$(DEPDIR)/libgnu_la-scratch_buffer_grow.Plo \ malloc/$(DEPDIR)/libgnu_la-scratch_buffer_grow_preserve.Plo \ malloc/$(DEPDIR)/libgnu_la-scratch_buffer_set_array_size.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_SOURCES) DIST_SOURCES = $(am__libgnu_la_SOURCES_DIST) \ $(EXTRA_libgnu_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/build-aux/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ ALLOCA_H = @ALLOCA_H@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ ASSERT_H = @ASSERT_H@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CLOCK_TIME_LIB = @CLOCK_TIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CROSS_COMPILING = @CROSS_COMPILING@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ CYTHON = @CYTHON@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ ERROR_H = @ERROR_H@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ FLOAT_H = @FLOAT_H@ GETOPT_CDEFS_H = @GETOPT_CDEFS_H@ GETOPT_H = @GETOPT_H@ GETRANDOM_LIB = @GETRANDOM_LIB@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@ GL_CFLAG_GNULIB_WARNINGS = @GL_CFLAG_GNULIB_WARNINGS@ GL_GNULIB_ACCESS = @GL_GNULIB_ACCESS@ GL_GNULIB_ACOSF = @GL_GNULIB_ACOSF@ GL_GNULIB_ACOSL = @GL_GNULIB_ACOSL@ GL_GNULIB_ALIGNED_ALLOC = @GL_GNULIB_ALIGNED_ALLOC@ GL_GNULIB_ASINF = @GL_GNULIB_ASINF@ GL_GNULIB_ASINL = @GL_GNULIB_ASINL@ GL_GNULIB_ATAN2F = @GL_GNULIB_ATAN2F@ GL_GNULIB_ATANF = @GL_GNULIB_ATANF@ GL_GNULIB_ATANL = @GL_GNULIB_ATANL@ GL_GNULIB_ATOLL = @GL_GNULIB_ATOLL@ GL_GNULIB_BTOWC = @GL_GNULIB_BTOWC@ GL_GNULIB_CALLOC_GNU = @GL_GNULIB_CALLOC_GNU@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CBRT = @GL_GNULIB_CBRT@ GL_GNULIB_CBRTF = @GL_GNULIB_CBRTF@ GL_GNULIB_CBRTL = @GL_GNULIB_CBRTL@ GL_GNULIB_CEIL = @GL_GNULIB_CEIL@ GL_GNULIB_CEILF = @GL_GNULIB_CEILF@ GL_GNULIB_CEILL = @GL_GNULIB_CEILL@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_COPYSIGN = @GL_GNULIB_COPYSIGN@ GL_GNULIB_COPYSIGNF = @GL_GNULIB_COPYSIGNF@ GL_GNULIB_COPYSIGNL = @GL_GNULIB_COPYSIGNL@ GL_GNULIB_COPY_FILE_RANGE = @GL_GNULIB_COPY_FILE_RANGE@ GL_GNULIB_COSF = @GL_GNULIB_COSF@ GL_GNULIB_COSHF = @GL_GNULIB_COSHF@ GL_GNULIB_COSL = @GL_GNULIB_COSL@ GL_GNULIB_CREAT = @GL_GNULIB_CREAT@ GL_GNULIB_CTIME = @GL_GNULIB_CTIME@ GL_GNULIB_DPRINTF = @GL_GNULIB_DPRINTF@ GL_GNULIB_DUP = @GL_GNULIB_DUP@ GL_GNULIB_DUP2 = @GL_GNULIB_DUP2@ GL_GNULIB_DUP3 = @GL_GNULIB_DUP3@ GL_GNULIB_DUPLOCALE = @GL_GNULIB_DUPLOCALE@ GL_GNULIB_ENVIRON = @GL_GNULIB_ENVIRON@ GL_GNULIB_EUIDACCESS = @GL_GNULIB_EUIDACCESS@ GL_GNULIB_EXECL = @GL_GNULIB_EXECL@ GL_GNULIB_EXECLE = @GL_GNULIB_EXECLE@ GL_GNULIB_EXECLP = @GL_GNULIB_EXECLP@ GL_GNULIB_EXECV = @GL_GNULIB_EXECV@ GL_GNULIB_EXECVE = @GL_GNULIB_EXECVE@ GL_GNULIB_EXECVP = @GL_GNULIB_EXECVP@ GL_GNULIB_EXECVPE = @GL_GNULIB_EXECVPE@ GL_GNULIB_EXP2 = @GL_GNULIB_EXP2@ GL_GNULIB_EXP2F = @GL_GNULIB_EXP2F@ GL_GNULIB_EXP2L = @GL_GNULIB_EXP2L@ GL_GNULIB_EXPF = @GL_GNULIB_EXPF@ GL_GNULIB_EXPL = @GL_GNULIB_EXPL@ GL_GNULIB_EXPLICIT_BZERO = @GL_GNULIB_EXPLICIT_BZERO@ GL_GNULIB_EXPM1 = @GL_GNULIB_EXPM1@ GL_GNULIB_EXPM1F = @GL_GNULIB_EXPM1F@ GL_GNULIB_EXPM1L = @GL_GNULIB_EXPM1L@ GL_GNULIB_FABSF = @GL_GNULIB_FABSF@ GL_GNULIB_FABSL = @GL_GNULIB_FABSL@ GL_GNULIB_FACCESSAT = @GL_GNULIB_FACCESSAT@ GL_GNULIB_FCHDIR = @GL_GNULIB_FCHDIR@ GL_GNULIB_FCHMODAT = @GL_GNULIB_FCHMODAT@ GL_GNULIB_FCHOWNAT = @GL_GNULIB_FCHOWNAT@ GL_GNULIB_FCLOSE = @GL_GNULIB_FCLOSE@ GL_GNULIB_FCNTL = @GL_GNULIB_FCNTL@ GL_GNULIB_FDATASYNC = @GL_GNULIB_FDATASYNC@ GL_GNULIB_FDOPEN = @GL_GNULIB_FDOPEN@ GL_GNULIB_FFLUSH = @GL_GNULIB_FFLUSH@ GL_GNULIB_FFSL = @GL_GNULIB_FFSL@ GL_GNULIB_FFSLL = @GL_GNULIB_FFSLL@ GL_GNULIB_FGETC = @GL_GNULIB_FGETC@ GL_GNULIB_FGETS = @GL_GNULIB_FGETS@ GL_GNULIB_FLOOR = @GL_GNULIB_FLOOR@ GL_GNULIB_FLOORF = @GL_GNULIB_FLOORF@ GL_GNULIB_FLOORL = @GL_GNULIB_FLOORL@ GL_GNULIB_FMA = @GL_GNULIB_FMA@ GL_GNULIB_FMAF = @GL_GNULIB_FMAF@ GL_GNULIB_FMAL = @GL_GNULIB_FMAL@ GL_GNULIB_FMOD = @GL_GNULIB_FMOD@ GL_GNULIB_FMODF = @GL_GNULIB_FMODF@ GL_GNULIB_FMODL = @GL_GNULIB_FMODL@ GL_GNULIB_FOPEN = @GL_GNULIB_FOPEN@ GL_GNULIB_FOPEN_GNU = @GL_GNULIB_FOPEN_GNU@ GL_GNULIB_FPRINTF = @GL_GNULIB_FPRINTF@ GL_GNULIB_FPRINTF_POSIX = @GL_GNULIB_FPRINTF_POSIX@ GL_GNULIB_FPURGE = @GL_GNULIB_FPURGE@ GL_GNULIB_FPUTC = @GL_GNULIB_FPUTC@ GL_GNULIB_FPUTS = @GL_GNULIB_FPUTS@ GL_GNULIB_FREAD = @GL_GNULIB_FREAD@ GL_GNULIB_FREE_POSIX = @GL_GNULIB_FREE_POSIX@ GL_GNULIB_FREOPEN = @GL_GNULIB_FREOPEN@ GL_GNULIB_FREXP = @GL_GNULIB_FREXP@ GL_GNULIB_FREXPF = @GL_GNULIB_FREXPF@ GL_GNULIB_FREXPL = @GL_GNULIB_FREXPL@ GL_GNULIB_FSCANF = @GL_GNULIB_FSCANF@ GL_GNULIB_FSEEK = @GL_GNULIB_FSEEK@ GL_GNULIB_FSEEKO = @GL_GNULIB_FSEEKO@ GL_GNULIB_FSTAT = @GL_GNULIB_FSTAT@ GL_GNULIB_FSTATAT = @GL_GNULIB_FSTATAT@ GL_GNULIB_FSYNC = @GL_GNULIB_FSYNC@ GL_GNULIB_FTELL = @GL_GNULIB_FTELL@ GL_GNULIB_FTELLO = @GL_GNULIB_FTELLO@ GL_GNULIB_FTRUNCATE = @GL_GNULIB_FTRUNCATE@ GL_GNULIB_FUTIMENS = @GL_GNULIB_FUTIMENS@ GL_GNULIB_FWRITE = @GL_GNULIB_FWRITE@ GL_GNULIB_GETC = @GL_GNULIB_GETC@ GL_GNULIB_GETCHAR = @GL_GNULIB_GETCHAR@ GL_GNULIB_GETCWD = @GL_GNULIB_GETCWD@ GL_GNULIB_GETDELIM = @GL_GNULIB_GETDELIM@ GL_GNULIB_GETDOMAINNAME = @GL_GNULIB_GETDOMAINNAME@ GL_GNULIB_GETDTABLESIZE = @GL_GNULIB_GETDTABLESIZE@ GL_GNULIB_GETENTROPY = @GL_GNULIB_GETENTROPY@ GL_GNULIB_GETGROUPS = @GL_GNULIB_GETGROUPS@ GL_GNULIB_GETHOSTNAME = @GL_GNULIB_GETHOSTNAME@ GL_GNULIB_GETLINE = @GL_GNULIB_GETLINE@ GL_GNULIB_GETLOADAVG = @GL_GNULIB_GETLOADAVG@ GL_GNULIB_GETLOGIN = @GL_GNULIB_GETLOGIN@ GL_GNULIB_GETLOGIN_R = @GL_GNULIB_GETLOGIN_R@ GL_GNULIB_GETOPT_POSIX = @GL_GNULIB_GETOPT_POSIX@ GL_GNULIB_GETPAGESIZE = @GL_GNULIB_GETPAGESIZE@ GL_GNULIB_GETPASS = @GL_GNULIB_GETPASS@ GL_GNULIB_GETPASS_GNU = @GL_GNULIB_GETPASS_GNU@ GL_GNULIB_GETPROGNAME = @GL_GNULIB_GETPROGNAME@ GL_GNULIB_GETRANDOM = @GL_GNULIB_GETRANDOM@ GL_GNULIB_GETSUBOPT = @GL_GNULIB_GETSUBOPT@ GL_GNULIB_GETUMASK = @GL_GNULIB_GETUMASK@ GL_GNULIB_GETUSERSHELL = @GL_GNULIB_GETUSERSHELL@ GL_GNULIB_GRANTPT = @GL_GNULIB_GRANTPT@ GL_GNULIB_GROUP_MEMBER = @GL_GNULIB_GROUP_MEMBER@ GL_GNULIB_HYPOT = @GL_GNULIB_HYPOT@ GL_GNULIB_HYPOTF = @GL_GNULIB_HYPOTF@ GL_GNULIB_HYPOTL = @GL_GNULIB_HYPOTL@ GL_GNULIB_ILOGB = @GL_GNULIB_ILOGB@ GL_GNULIB_ILOGBF = @GL_GNULIB_ILOGBF@ GL_GNULIB_ILOGBL = @GL_GNULIB_ILOGBL@ GL_GNULIB_IMAXABS = @GL_GNULIB_IMAXABS@ GL_GNULIB_IMAXDIV = @GL_GNULIB_IMAXDIV@ GL_GNULIB_ISATTY = @GL_GNULIB_ISATTY@ GL_GNULIB_ISFINITE = @GL_GNULIB_ISFINITE@ GL_GNULIB_ISINF = @GL_GNULIB_ISINF@ GL_GNULIB_ISNAN = @GL_GNULIB_ISNAN@ GL_GNULIB_ISNAND = @GL_GNULIB_ISNAND@ GL_GNULIB_ISNANF = @GL_GNULIB_ISNANF@ GL_GNULIB_ISNANL = @GL_GNULIB_ISNANL@ GL_GNULIB_ISWBLANK = @GL_GNULIB_ISWBLANK@ GL_GNULIB_ISWCTYPE = @GL_GNULIB_ISWCTYPE@ GL_GNULIB_ISWDIGIT = @GL_GNULIB_ISWDIGIT@ GL_GNULIB_ISWXDIGIT = @GL_GNULIB_ISWXDIGIT@ GL_GNULIB_LCHMOD = @GL_GNULIB_LCHMOD@ GL_GNULIB_LCHOWN = @GL_GNULIB_LCHOWN@ GL_GNULIB_LDEXPF = @GL_GNULIB_LDEXPF@ GL_GNULIB_LDEXPL = @GL_GNULIB_LDEXPL@ GL_GNULIB_LINK = @GL_GNULIB_LINK@ GL_GNULIB_LINKAT = @GL_GNULIB_LINKAT@ GL_GNULIB_LOCALECONV = @GL_GNULIB_LOCALECONV@ GL_GNULIB_LOCALENAME = @GL_GNULIB_LOCALENAME@ GL_GNULIB_LOCALTIME = @GL_GNULIB_LOCALTIME@ GL_GNULIB_LOG = @GL_GNULIB_LOG@ GL_GNULIB_LOG10 = @GL_GNULIB_LOG10@ GL_GNULIB_LOG10F = @GL_GNULIB_LOG10F@ GL_GNULIB_LOG10L = @GL_GNULIB_LOG10L@ GL_GNULIB_LOG1P = @GL_GNULIB_LOG1P@ GL_GNULIB_LOG1PF = @GL_GNULIB_LOG1PF@ GL_GNULIB_LOG1PL = @GL_GNULIB_LOG1PL@ GL_GNULIB_LOG2 = @GL_GNULIB_LOG2@ GL_GNULIB_LOG2F = @GL_GNULIB_LOG2F@ GL_GNULIB_LOG2L = @GL_GNULIB_LOG2L@ GL_GNULIB_LOGB = @GL_GNULIB_LOGB@ GL_GNULIB_LOGBF = @GL_GNULIB_LOGBF@ GL_GNULIB_LOGBL = @GL_GNULIB_LOGBL@ GL_GNULIB_LOGF = @GL_GNULIB_LOGF@ GL_GNULIB_LOGL = @GL_GNULIB_LOGL@ GL_GNULIB_LSEEK = @GL_GNULIB_LSEEK@ GL_GNULIB_LSTAT = @GL_GNULIB_LSTAT@ GL_GNULIB_MALLOC_GNU = @GL_GNULIB_MALLOC_GNU@ GL_GNULIB_MALLOC_POSIX = @GL_GNULIB_MALLOC_POSIX@ GL_GNULIB_MBRLEN = @GL_GNULIB_MBRLEN@ GL_GNULIB_MBRTOWC = @GL_GNULIB_MBRTOWC@ GL_GNULIB_MBSCASECMP = @GL_GNULIB_MBSCASECMP@ GL_GNULIB_MBSCASESTR = @GL_GNULIB_MBSCASESTR@ GL_GNULIB_MBSCHR = @GL_GNULIB_MBSCHR@ GL_GNULIB_MBSCSPN = @GL_GNULIB_MBSCSPN@ GL_GNULIB_MBSINIT = @GL_GNULIB_MBSINIT@ GL_GNULIB_MBSLEN = @GL_GNULIB_MBSLEN@ GL_GNULIB_MBSNCASECMP = @GL_GNULIB_MBSNCASECMP@ GL_GNULIB_MBSNLEN = @GL_GNULIB_MBSNLEN@ GL_GNULIB_MBSNRTOWCS = @GL_GNULIB_MBSNRTOWCS@ GL_GNULIB_MBSPBRK = @GL_GNULIB_MBSPBRK@ GL_GNULIB_MBSPCASECMP = @GL_GNULIB_MBSPCASECMP@ GL_GNULIB_MBSRCHR = @GL_GNULIB_MBSRCHR@ GL_GNULIB_MBSRTOWCS = @GL_GNULIB_MBSRTOWCS@ GL_GNULIB_MBSSEP = @GL_GNULIB_MBSSEP@ GL_GNULIB_MBSSPN = @GL_GNULIB_MBSSPN@ GL_GNULIB_MBSSTR = @GL_GNULIB_MBSSTR@ GL_GNULIB_MBSTOK_R = @GL_GNULIB_MBSTOK_R@ GL_GNULIB_MBTOWC = @GL_GNULIB_MBTOWC@ GL_GNULIB_MDA_ACCESS = @GL_GNULIB_MDA_ACCESS@ GL_GNULIB_MDA_CHDIR = @GL_GNULIB_MDA_CHDIR@ GL_GNULIB_MDA_CHMOD = @GL_GNULIB_MDA_CHMOD@ GL_GNULIB_MDA_CLOSE = @GL_GNULIB_MDA_CLOSE@ GL_GNULIB_MDA_CREAT = @GL_GNULIB_MDA_CREAT@ GL_GNULIB_MDA_DUP = @GL_GNULIB_MDA_DUP@ GL_GNULIB_MDA_DUP2 = @GL_GNULIB_MDA_DUP2@ GL_GNULIB_MDA_ECVT = @GL_GNULIB_MDA_ECVT@ GL_GNULIB_MDA_EXECL = @GL_GNULIB_MDA_EXECL@ GL_GNULIB_MDA_EXECLE = @GL_GNULIB_MDA_EXECLE@ GL_GNULIB_MDA_EXECLP = @GL_GNULIB_MDA_EXECLP@ GL_GNULIB_MDA_EXECV = @GL_GNULIB_MDA_EXECV@ GL_GNULIB_MDA_EXECVE = @GL_GNULIB_MDA_EXECVE@ GL_GNULIB_MDA_EXECVP = @GL_GNULIB_MDA_EXECVP@ GL_GNULIB_MDA_EXECVPE = @GL_GNULIB_MDA_EXECVPE@ GL_GNULIB_MDA_FCLOSEALL = @GL_GNULIB_MDA_FCLOSEALL@ GL_GNULIB_MDA_FCVT = @GL_GNULIB_MDA_FCVT@ GL_GNULIB_MDA_FDOPEN = @GL_GNULIB_MDA_FDOPEN@ GL_GNULIB_MDA_FILENO = @GL_GNULIB_MDA_FILENO@ GL_GNULIB_MDA_GCVT = @GL_GNULIB_MDA_GCVT@ GL_GNULIB_MDA_GETCWD = @GL_GNULIB_MDA_GETCWD@ GL_GNULIB_MDA_GETPID = @GL_GNULIB_MDA_GETPID@ GL_GNULIB_MDA_GETW = @GL_GNULIB_MDA_GETW@ GL_GNULIB_MDA_ISATTY = @GL_GNULIB_MDA_ISATTY@ GL_GNULIB_MDA_J0 = @GL_GNULIB_MDA_J0@ GL_GNULIB_MDA_J1 = @GL_GNULIB_MDA_J1@ GL_GNULIB_MDA_JN = @GL_GNULIB_MDA_JN@ GL_GNULIB_MDA_LSEEK = @GL_GNULIB_MDA_LSEEK@ GL_GNULIB_MDA_MEMCCPY = @GL_GNULIB_MDA_MEMCCPY@ GL_GNULIB_MDA_MKDIR = @GL_GNULIB_MDA_MKDIR@ GL_GNULIB_MDA_MKTEMP = @GL_GNULIB_MDA_MKTEMP@ GL_GNULIB_MDA_OPEN = @GL_GNULIB_MDA_OPEN@ GL_GNULIB_MDA_PUTENV = @GL_GNULIB_MDA_PUTENV@ GL_GNULIB_MDA_PUTW = @GL_GNULIB_MDA_PUTW@ GL_GNULIB_MDA_READ = @GL_GNULIB_MDA_READ@ GL_GNULIB_MDA_RMDIR = @GL_GNULIB_MDA_RMDIR@ GL_GNULIB_MDA_STRDUP = @GL_GNULIB_MDA_STRDUP@ GL_GNULIB_MDA_SWAB = @GL_GNULIB_MDA_SWAB@ GL_GNULIB_MDA_TEMPNAM = @GL_GNULIB_MDA_TEMPNAM@ GL_GNULIB_MDA_TZSET = @GL_GNULIB_MDA_TZSET@ GL_GNULIB_MDA_UMASK = @GL_GNULIB_MDA_UMASK@ GL_GNULIB_MDA_UNLINK = @GL_GNULIB_MDA_UNLINK@ GL_GNULIB_MDA_UTIME = @GL_GNULIB_MDA_UTIME@ GL_GNULIB_MDA_WCSDUP = @GL_GNULIB_MDA_WCSDUP@ GL_GNULIB_MDA_WRITE = @GL_GNULIB_MDA_WRITE@ GL_GNULIB_MDA_Y0 = @GL_GNULIB_MDA_Y0@ GL_GNULIB_MDA_Y1 = @GL_GNULIB_MDA_Y1@ GL_GNULIB_MDA_YN = @GL_GNULIB_MDA_YN@ GL_GNULIB_MEMCHR = @GL_GNULIB_MEMCHR@ GL_GNULIB_MEMMEM = @GL_GNULIB_MEMMEM@ GL_GNULIB_MEMPCPY = @GL_GNULIB_MEMPCPY@ GL_GNULIB_MEMRCHR = @GL_GNULIB_MEMRCHR@ GL_GNULIB_MEMSET_EXPLICIT = @GL_GNULIB_MEMSET_EXPLICIT@ GL_GNULIB_MKDIR = @GL_GNULIB_MKDIR@ GL_GNULIB_MKDIRAT = @GL_GNULIB_MKDIRAT@ GL_GNULIB_MKDTEMP = @GL_GNULIB_MKDTEMP@ GL_GNULIB_MKFIFO = @GL_GNULIB_MKFIFO@ GL_GNULIB_MKFIFOAT = @GL_GNULIB_MKFIFOAT@ GL_GNULIB_MKNOD = @GL_GNULIB_MKNOD@ GL_GNULIB_MKNODAT = @GL_GNULIB_MKNODAT@ GL_GNULIB_MKOSTEMP = @GL_GNULIB_MKOSTEMP@ GL_GNULIB_MKOSTEMPS = @GL_GNULIB_MKOSTEMPS@ GL_GNULIB_MKSTEMP = @GL_GNULIB_MKSTEMP@ GL_GNULIB_MKSTEMPS = @GL_GNULIB_MKSTEMPS@ GL_GNULIB_MKTIME = @GL_GNULIB_MKTIME@ GL_GNULIB_MODF = @GL_GNULIB_MODF@ GL_GNULIB_MODFF = @GL_GNULIB_MODFF@ GL_GNULIB_MODFL = @GL_GNULIB_MODFL@ GL_GNULIB_NANOSLEEP = @GL_GNULIB_NANOSLEEP@ GL_GNULIB_NONBLOCKING = @GL_GNULIB_NONBLOCKING@ GL_GNULIB_OBSTACK_PRINTF = @GL_GNULIB_OBSTACK_PRINTF@ GL_GNULIB_OBSTACK_PRINTF_POSIX = @GL_GNULIB_OBSTACK_PRINTF_POSIX@ GL_GNULIB_OPEN = @GL_GNULIB_OPEN@ GL_GNULIB_OPENAT = @GL_GNULIB_OPENAT@ GL_GNULIB_OVERRIDES_STRUCT_STAT = @GL_GNULIB_OVERRIDES_STRUCT_STAT@ GL_GNULIB_PCLOSE = @GL_GNULIB_PCLOSE@ GL_GNULIB_PERROR = @GL_GNULIB_PERROR@ GL_GNULIB_PIPE = @GL_GNULIB_PIPE@ GL_GNULIB_PIPE2 = @GL_GNULIB_PIPE2@ GL_GNULIB_POPEN = @GL_GNULIB_POPEN@ GL_GNULIB_POSIX_MEMALIGN = @GL_GNULIB_POSIX_MEMALIGN@ GL_GNULIB_POSIX_OPENPT = @GL_GNULIB_POSIX_OPENPT@ GL_GNULIB_POWF = @GL_GNULIB_POWF@ GL_GNULIB_PREAD = @GL_GNULIB_PREAD@ GL_GNULIB_PRINTF = @GL_GNULIB_PRINTF@ GL_GNULIB_PRINTF_POSIX = @GL_GNULIB_PRINTF_POSIX@ GL_GNULIB_PTHREAD_SIGMASK = @GL_GNULIB_PTHREAD_SIGMASK@ GL_GNULIB_PTSNAME = @GL_GNULIB_PTSNAME@ GL_GNULIB_PTSNAME_R = @GL_GNULIB_PTSNAME_R@ GL_GNULIB_PUTC = @GL_GNULIB_PUTC@ GL_GNULIB_PUTCHAR = @GL_GNULIB_PUTCHAR@ GL_GNULIB_PUTENV = @GL_GNULIB_PUTENV@ GL_GNULIB_PUTS = @GL_GNULIB_PUTS@ GL_GNULIB_PWRITE = @GL_GNULIB_PWRITE@ GL_GNULIB_QSORT_R = @GL_GNULIB_QSORT_R@ GL_GNULIB_RAISE = @GL_GNULIB_RAISE@ GL_GNULIB_RANDOM = @GL_GNULIB_RANDOM@ GL_GNULIB_RANDOM_R = @GL_GNULIB_RANDOM_R@ GL_GNULIB_RAWMEMCHR = @GL_GNULIB_RAWMEMCHR@ GL_GNULIB_READ = @GL_GNULIB_READ@ GL_GNULIB_READLINK = @GL_GNULIB_READLINK@ GL_GNULIB_READLINKAT = @GL_GNULIB_READLINKAT@ GL_GNULIB_REALLOCARRAY = @GL_GNULIB_REALLOCARRAY@ GL_GNULIB_REALLOC_GNU = @GL_GNULIB_REALLOC_GNU@ GL_GNULIB_REALLOC_POSIX = @GL_GNULIB_REALLOC_POSIX@ GL_GNULIB_REALPATH = @GL_GNULIB_REALPATH@ GL_GNULIB_REMAINDER = @GL_GNULIB_REMAINDER@ GL_GNULIB_REMAINDERF = @GL_GNULIB_REMAINDERF@ GL_GNULIB_REMAINDERL = @GL_GNULIB_REMAINDERL@ GL_GNULIB_REMOVE = @GL_GNULIB_REMOVE@ GL_GNULIB_RENAME = @GL_GNULIB_RENAME@ GL_GNULIB_RENAMEAT = @GL_GNULIB_RENAMEAT@ GL_GNULIB_RINT = @GL_GNULIB_RINT@ GL_GNULIB_RINTF = @GL_GNULIB_RINTF@ GL_GNULIB_RINTL = @GL_GNULIB_RINTL@ GL_GNULIB_RMDIR = @GL_GNULIB_RMDIR@ GL_GNULIB_ROUND = @GL_GNULIB_ROUND@ GL_GNULIB_ROUNDF = @GL_GNULIB_ROUNDF@ GL_GNULIB_ROUNDL = @GL_GNULIB_ROUNDL@ GL_GNULIB_RPMATCH = @GL_GNULIB_RPMATCH@ GL_GNULIB_SCANF = @GL_GNULIB_SCANF@ GL_GNULIB_SECURE_GETENV = @GL_GNULIB_SECURE_GETENV@ GL_GNULIB_SETENV = @GL_GNULIB_SETENV@ GL_GNULIB_SETHOSTNAME = @GL_GNULIB_SETHOSTNAME@ GL_GNULIB_SETLOCALE = @GL_GNULIB_SETLOCALE@ GL_GNULIB_SETLOCALE_NULL = @GL_GNULIB_SETLOCALE_NULL@ GL_GNULIB_SIGABBREV_NP = @GL_GNULIB_SIGABBREV_NP@ GL_GNULIB_SIGACTION = @GL_GNULIB_SIGACTION@ GL_GNULIB_SIGDESCR_NP = @GL_GNULIB_SIGDESCR_NP@ GL_GNULIB_SIGNAL_H_SIGPIPE = @GL_GNULIB_SIGNAL_H_SIGPIPE@ GL_GNULIB_SIGNBIT = @GL_GNULIB_SIGNBIT@ GL_GNULIB_SIGPROCMASK = @GL_GNULIB_SIGPROCMASK@ GL_GNULIB_SINF = @GL_GNULIB_SINF@ GL_GNULIB_SINHF = @GL_GNULIB_SINHF@ GL_GNULIB_SINL = @GL_GNULIB_SINL@ GL_GNULIB_SLEEP = @GL_GNULIB_SLEEP@ GL_GNULIB_SNPRINTF = @GL_GNULIB_SNPRINTF@ GL_GNULIB_SPRINTF_POSIX = @GL_GNULIB_SPRINTF_POSIX@ GL_GNULIB_SQRTF = @GL_GNULIB_SQRTF@ GL_GNULIB_SQRTL = @GL_GNULIB_SQRTL@ GL_GNULIB_STAT = @GL_GNULIB_STAT@ GL_GNULIB_STDIO_H_NONBLOCKING = @GL_GNULIB_STDIO_H_NONBLOCKING@ GL_GNULIB_STDIO_H_SIGPIPE = @GL_GNULIB_STDIO_H_SIGPIPE@ GL_GNULIB_STPCPY = @GL_GNULIB_STPCPY@ GL_GNULIB_STPNCPY = @GL_GNULIB_STPNCPY@ GL_GNULIB_STRCASESTR = @GL_GNULIB_STRCASESTR@ GL_GNULIB_STRCHRNUL = @GL_GNULIB_STRCHRNUL@ GL_GNULIB_STRDUP = @GL_GNULIB_STRDUP@ GL_GNULIB_STRERROR = @GL_GNULIB_STRERROR@ GL_GNULIB_STRERRORNAME_NP = @GL_GNULIB_STRERRORNAME_NP@ GL_GNULIB_STRERROR_R = @GL_GNULIB_STRERROR_R@ GL_GNULIB_STRFTIME = @GL_GNULIB_STRFTIME@ GL_GNULIB_STRNCAT = @GL_GNULIB_STRNCAT@ GL_GNULIB_STRNDUP = @GL_GNULIB_STRNDUP@ GL_GNULIB_STRNLEN = @GL_GNULIB_STRNLEN@ GL_GNULIB_STRPBRK = @GL_GNULIB_STRPBRK@ GL_GNULIB_STRPTIME = @GL_GNULIB_STRPTIME@ GL_GNULIB_STRSEP = @GL_GNULIB_STRSEP@ GL_GNULIB_STRSIGNAL = @GL_GNULIB_STRSIGNAL@ GL_GNULIB_STRSTR = @GL_GNULIB_STRSTR@ GL_GNULIB_STRTOD = @GL_GNULIB_STRTOD@ GL_GNULIB_STRTOIMAX = @GL_GNULIB_STRTOIMAX@ GL_GNULIB_STRTOK_R = @GL_GNULIB_STRTOK_R@ GL_GNULIB_STRTOL = @GL_GNULIB_STRTOL@ GL_GNULIB_STRTOLD = @GL_GNULIB_STRTOLD@ GL_GNULIB_STRTOLL = @GL_GNULIB_STRTOLL@ GL_GNULIB_STRTOUL = @GL_GNULIB_STRTOUL@ GL_GNULIB_STRTOULL = @GL_GNULIB_STRTOULL@ GL_GNULIB_STRTOUMAX = @GL_GNULIB_STRTOUMAX@ GL_GNULIB_STRVERSCMP = @GL_GNULIB_STRVERSCMP@ GL_GNULIB_SYMLINK = @GL_GNULIB_SYMLINK@ GL_GNULIB_SYMLINKAT = @GL_GNULIB_SYMLINKAT@ GL_GNULIB_SYSTEM_POSIX = @GL_GNULIB_SYSTEM_POSIX@ GL_GNULIB_TANF = @GL_GNULIB_TANF@ GL_GNULIB_TANHF = @GL_GNULIB_TANHF@ GL_GNULIB_TANL = @GL_GNULIB_TANL@ GL_GNULIB_TIMEGM = @GL_GNULIB_TIMEGM@ GL_GNULIB_TIMESPEC_GET = @GL_GNULIB_TIMESPEC_GET@ GL_GNULIB_TIMESPEC_GETRES = @GL_GNULIB_TIMESPEC_GETRES@ GL_GNULIB_TIME_R = @GL_GNULIB_TIME_R@ GL_GNULIB_TIME_RZ = @GL_GNULIB_TIME_RZ@ GL_GNULIB_TMPFILE = @GL_GNULIB_TMPFILE@ GL_GNULIB_TOWCTRANS = @GL_GNULIB_TOWCTRANS@ GL_GNULIB_TRUNC = @GL_GNULIB_TRUNC@ GL_GNULIB_TRUNCATE = @GL_GNULIB_TRUNCATE@ GL_GNULIB_TRUNCF = @GL_GNULIB_TRUNCF@ GL_GNULIB_TRUNCL = @GL_GNULIB_TRUNCL@ GL_GNULIB_TTYNAME_R = @GL_GNULIB_TTYNAME_R@ GL_GNULIB_TZSET = @GL_GNULIB_TZSET@ GL_GNULIB_UNISTD_H_GETOPT = @GL_GNULIB_UNISTD_H_GETOPT@ GL_GNULIB_UNISTD_H_NONBLOCKING = @GL_GNULIB_UNISTD_H_NONBLOCKING@ GL_GNULIB_UNISTD_H_SIGPIPE = @GL_GNULIB_UNISTD_H_SIGPIPE@ GL_GNULIB_UNLINK = @GL_GNULIB_UNLINK@ GL_GNULIB_UNLINKAT = @GL_GNULIB_UNLINKAT@ GL_GNULIB_UNLOCKPT = @GL_GNULIB_UNLOCKPT@ GL_GNULIB_UNSETENV = @GL_GNULIB_UNSETENV@ GL_GNULIB_USLEEP = @GL_GNULIB_USLEEP@ GL_GNULIB_UTIME = @GL_GNULIB_UTIME@ GL_GNULIB_UTIMENSAT = @GL_GNULIB_UTIMENSAT@ GL_GNULIB_VASPRINTF = @GL_GNULIB_VASPRINTF@ GL_GNULIB_VDPRINTF = @GL_GNULIB_VDPRINTF@ GL_GNULIB_VFPRINTF = @GL_GNULIB_VFPRINTF@ GL_GNULIB_VFPRINTF_POSIX = @GL_GNULIB_VFPRINTF_POSIX@ GL_GNULIB_VFSCANF = @GL_GNULIB_VFSCANF@ GL_GNULIB_VPRINTF = @GL_GNULIB_VPRINTF@ GL_GNULIB_VPRINTF_POSIX = @GL_GNULIB_VPRINTF_POSIX@ GL_GNULIB_VSCANF = @GL_GNULIB_VSCANF@ GL_GNULIB_VSNPRINTF = @GL_GNULIB_VSNPRINTF@ GL_GNULIB_VSPRINTF_POSIX = @GL_GNULIB_VSPRINTF_POSIX@ GL_GNULIB_WAITPID = @GL_GNULIB_WAITPID@ GL_GNULIB_WCPCPY = @GL_GNULIB_WCPCPY@ GL_GNULIB_WCPNCPY = @GL_GNULIB_WCPNCPY@ GL_GNULIB_WCRTOMB = @GL_GNULIB_WCRTOMB@ GL_GNULIB_WCSCASECMP = @GL_GNULIB_WCSCASECMP@ GL_GNULIB_WCSCAT = @GL_GNULIB_WCSCAT@ GL_GNULIB_WCSCHR = @GL_GNULIB_WCSCHR@ GL_GNULIB_WCSCMP = @GL_GNULIB_WCSCMP@ GL_GNULIB_WCSCOLL = @GL_GNULIB_WCSCOLL@ GL_GNULIB_WCSCPY = @GL_GNULIB_WCSCPY@ GL_GNULIB_WCSCSPN = @GL_GNULIB_WCSCSPN@ GL_GNULIB_WCSDUP = @GL_GNULIB_WCSDUP@ GL_GNULIB_WCSFTIME = @GL_GNULIB_WCSFTIME@ GL_GNULIB_WCSLEN = @GL_GNULIB_WCSLEN@ GL_GNULIB_WCSNCASECMP = @GL_GNULIB_WCSNCASECMP@ GL_GNULIB_WCSNCAT = @GL_GNULIB_WCSNCAT@ GL_GNULIB_WCSNCMP = @GL_GNULIB_WCSNCMP@ GL_GNULIB_WCSNCPY = @GL_GNULIB_WCSNCPY@ GL_GNULIB_WCSNLEN = @GL_GNULIB_WCSNLEN@ GL_GNULIB_WCSNRTOMBS = @GL_GNULIB_WCSNRTOMBS@ GL_GNULIB_WCSPBRK = @GL_GNULIB_WCSPBRK@ GL_GNULIB_WCSRCHR = @GL_GNULIB_WCSRCHR@ GL_GNULIB_WCSRTOMBS = @GL_GNULIB_WCSRTOMBS@ GL_GNULIB_WCSSPN = @GL_GNULIB_WCSSPN@ GL_GNULIB_WCSSTR = @GL_GNULIB_WCSSTR@ GL_GNULIB_WCSTOK = @GL_GNULIB_WCSTOK@ GL_GNULIB_WCSWIDTH = @GL_GNULIB_WCSWIDTH@ GL_GNULIB_WCSXFRM = @GL_GNULIB_WCSXFRM@ GL_GNULIB_WCTOB = @GL_GNULIB_WCTOB@ GL_GNULIB_WCTOMB = @GL_GNULIB_WCTOMB@ GL_GNULIB_WCTRANS = @GL_GNULIB_WCTRANS@ GL_GNULIB_WCTYPE = @GL_GNULIB_WCTYPE@ GL_GNULIB_WCWIDTH = @GL_GNULIB_WCWIDTH@ GL_GNULIB_WMEMCHR = @GL_GNULIB_WMEMCHR@ GL_GNULIB_WMEMCMP = @GL_GNULIB_WMEMCMP@ GL_GNULIB_WMEMCPY = @GL_GNULIB_WMEMCPY@ GL_GNULIB_WMEMMOVE = @GL_GNULIB_WMEMMOVE@ GL_GNULIB_WMEMPCPY = @GL_GNULIB_WMEMPCPY@ GL_GNULIB_WMEMSET = @GL_GNULIB_WMEMSET@ GL_GNULIB_WRITE = @GL_GNULIB_WRITE@ GL_GNULIB__EXIT = @GL_GNULIB__EXIT@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNULIBHEADERS_OVERRIDE_WINT_T = @GNULIBHEADERS_OVERRIDE_WINT_T@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GREP = @GREP@ HARD_LOCALE_LIB = @HARD_LOCALE_LIB@ HAVE_ACOSF = @HAVE_ACOSF@ HAVE_ACOSL = @HAVE_ACOSL@ HAVE_ALIGNED_ALLOC = @HAVE_ALIGNED_ALLOC@ HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ HAVE_ASINF = @HAVE_ASINF@ HAVE_ASINL = @HAVE_ASINL@ HAVE_ATAN2F = @HAVE_ATAN2F@ HAVE_ATANF = @HAVE_ATANF@ HAVE_ATANL = @HAVE_ATANL@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CBRT = @HAVE_CBRT@ HAVE_CBRTF = @HAVE_CBRTF@ HAVE_CBRTL = @HAVE_CBRTL@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_COPYSIGN = @HAVE_COPYSIGN@ HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@ HAVE_COSF = @HAVE_COSF@ HAVE_COSHF = @HAVE_COSHF@ HAVE_COSL = @HAVE_COSL@ HAVE_CRTDEFS_H = @HAVE_CRTDEFS_H@ HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ HAVE_DECL_COSL = @HAVE_DECL_COSL@ HAVE_DECL_ECVT = @HAVE_DECL_ECVT@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_EXECVPE = @HAVE_DECL_EXECVPE@ HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FCLOSEALL = @HAVE_DECL_FCLOSEALL@ HAVE_DECL_FCVT = @HAVE_DECL_FCVT@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GCVT = @HAVE_DECL_GCVT@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_GETW = @HAVE_DECL_GETW@ HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@ HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_PUTW = @HAVE_DECL_PUTW@ HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@ HAVE_DECL_SINL = @HAVE_DECL_SINL@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ HAVE_DECL_TANL = @HAVE_DECL_TANL@ HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@ HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DECL_WCSDUP = @HAVE_DECL_WCSDUP@ HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ HAVE_ERROR = @HAVE_ERROR@ HAVE_ERROR_AT_LINE = @HAVE_ERROR_AT_LINE@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_EXECVPE = @HAVE_EXECVPE@ HAVE_EXPF = @HAVE_EXPF@ HAVE_EXPL = @HAVE_EXPL@ HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@ HAVE_EXPM1 = @HAVE_EXPM1@ HAVE_EXPM1F = @HAVE_EXPM1F@ HAVE_FABSF = @HAVE_FABSF@ HAVE_FABSL = @HAVE_FABSL@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FCNTL = @HAVE_FCNTL@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FMA = @HAVE_FMA@ HAVE_FMAF = @HAVE_FMAF@ HAVE_FMAL = @HAVE_FMAL@ HAVE_FMODF = @HAVE_FMODF@ HAVE_FMODL = @HAVE_FMODL@ HAVE_FREELOCALE = @HAVE_FREELOCALE@ HAVE_FREXPF = @HAVE_FREXPF@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETENTROPY = @HAVE_GETENTROPY@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETPASS = @HAVE_GETPASS@ HAVE_GETPROGNAME = @HAVE_GETPROGNAME@ HAVE_GETRANDOM = @HAVE_GETRANDOM@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETUMASK = @HAVE_GETUMASK@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_HYPOTF = @HAVE_HYPOTF@ HAVE_HYPOTL = @HAVE_HYPOTL@ HAVE_ILOGB = @HAVE_ILOGB@ HAVE_ILOGBF = @HAVE_ILOGBF@ HAVE_ILOGBL = @HAVE_ILOGBL@ HAVE_IMAXABS = @HAVE_IMAXABS@ HAVE_IMAXDIV = @HAVE_IMAXDIV@ HAVE_IMAXDIV_T = @HAVE_IMAXDIV_T@ HAVE_INITSTATE = @HAVE_INITSTATE@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_ISNAND = @HAVE_ISNAND@ HAVE_ISNANF = @HAVE_ISNANF@ HAVE_ISNANL = @HAVE_ISNANL@ HAVE_ISWBLANK = @HAVE_ISWBLANK@ HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LDEXPF = @HAVE_LDEXPF@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LOG10F = @HAVE_LOG10F@ HAVE_LOG10L = @HAVE_LOG10L@ HAVE_LOG1P = @HAVE_LOG1P@ HAVE_LOG1PF = @HAVE_LOG1PF@ HAVE_LOG1PL = @HAVE_LOG1PL@ HAVE_LOGBF = @HAVE_LOGBF@ HAVE_LOGBL = @HAVE_LOGBL@ HAVE_LOGF = @HAVE_LOGF@ HAVE_LOGL = @HAVE_LOGL@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ HAVE_MBRLEN = @HAVE_MBRLEN@ HAVE_MBRTOWC = @HAVE_MBRTOWC@ HAVE_MBSINIT = @HAVE_MBSINIT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ HAVE_MBTOWC = @HAVE_MBTOWC@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MEMSET_EXPLICIT = @HAVE_MEMSET_EXPLICIT@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MODFF = @HAVE_MODFF@ HAVE_MODFL = @HAVE_MODFL@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ HAVE_OPENAT = @HAVE_OPENAT@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_MEMALIGN = @HAVE_POSIX_MEMALIGN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@ HAVE_POWF = @HAVE_POWF@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_QSORT_R = @HAVE_QSORT_R@ HAVE_RAISE = @HAVE_RAISE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_REMAINDER = @HAVE_REMAINDER@ HAVE_REMAINDERF = @HAVE_REMAINDERF@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RINT = @HAVE_RINT@ HAVE_RINTL = @HAVE_RINTL@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SETSTATE = @HAVE_SETSTATE@ HAVE_SIGABBREV_NP = @HAVE_SIGABBREV_NP@ HAVE_SIGACTION = @HAVE_SIGACTION@ HAVE_SIGDESCR_NP = @HAVE_SIGDESCR_NP@ HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@ HAVE_SIGINFO_T = @HAVE_SIGINFO_T@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SIGSET_T = @HAVE_SIGSET_T@ HAVE_SINF = @HAVE_SINF@ HAVE_SINHF = @HAVE_SINHF@ HAVE_SINL = @HAVE_SINL@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_SQRTF = @HAVE_SQRTF@ HAVE_SQRTL = @HAVE_SQRTL@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRERRORNAME_NP = @HAVE_STRERRORNAME_NP@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOL = @HAVE_STRTOL@ HAVE_STRTOLD = @HAVE_STRTOLD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOUL = @HAVE_STRTOUL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_CDEFS_H = @HAVE_SYS_CDEFS_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_RANDOM_H = @HAVE_SYS_RANDOM_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TANF = @HAVE_TANF@ HAVE_TANHF = @HAVE_TANHF@ HAVE_TANL = @HAVE_TANL@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_TIMESPEC_GET = @HAVE_TIMESPEC_GET@ HAVE_TIMESPEC_GETRES = @HAVE_TIMESPEC_GETRES@ HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIME = @HAVE_UTIME@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_UTIME_H = @HAVE_UTIME_H@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WCPCPY = @HAVE_WCPCPY@ HAVE_WCPNCPY = @HAVE_WCPNCPY@ HAVE_WCRTOMB = @HAVE_WCRTOMB@ HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ HAVE_WCSCAT = @HAVE_WCSCAT@ HAVE_WCSCHR = @HAVE_WCSCHR@ HAVE_WCSCMP = @HAVE_WCSCMP@ HAVE_WCSCOLL = @HAVE_WCSCOLL@ HAVE_WCSCPY = @HAVE_WCSCPY@ HAVE_WCSCSPN = @HAVE_WCSCSPN@ HAVE_WCSDUP = @HAVE_WCSDUP@ HAVE_WCSFTIME = @HAVE_WCSFTIME@ HAVE_WCSLEN = @HAVE_WCSLEN@ HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ HAVE_WCSNCAT = @HAVE_WCSNCAT@ HAVE_WCSNCMP = @HAVE_WCSNCMP@ HAVE_WCSNCPY = @HAVE_WCSNCPY@ HAVE_WCSNLEN = @HAVE_WCSNLEN@ HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ HAVE_WCSPBRK = @HAVE_WCSPBRK@ HAVE_WCSRCHR = @HAVE_WCSRCHR@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ HAVE_WCSSPN = @HAVE_WCSSPN@ HAVE_WCSSTR = @HAVE_WCSSTR@ HAVE_WCSTOK = @HAVE_WCSTOK@ HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ HAVE_WCSXFRM = @HAVE_WCSXFRM@ HAVE_WCTRANS_T = @HAVE_WCTRANS_T@ HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ HAVE_WCTYPE_T = @HAVE_WCTYPE_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE_WINT_T = @HAVE_WINT_T@ HAVE_WMEMCHR = @HAVE_WMEMCHR@ HAVE_WMEMCMP = @HAVE_WMEMCMP@ HAVE_WMEMCPY = @HAVE_WMEMCPY@ HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ HAVE_WMEMPCPY = @HAVE_WMEMPCPY@ HAVE_WMEMSET = @HAVE_WMEMSET@ HAVE_XLOCALE_H = @HAVE_XLOCALE_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ ISYSTEM = @ISYSTEM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBPMULTITHREAD = @LIBPMULTITHREAD@ LIBPTHREAD = @LIBPTHREAD@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIB_GETRANDOM = @LIB_GETRANDOM@ LIB_HARD_LOCALE = @LIB_HARD_LOCALE@ LIB_MBRTOWC = @LIB_MBRTOWC@ LIB_SCHED_YIELD = @LIB_SCHED_YIELD@ LIB_SETLOCALE_NULL = @LIB_SETLOCALE_NULL@ LIMITS_H = @LIMITS_H@ LIPO = @LIPO@ LN_S = @LN_S@ LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ LOCALENAME_ENHANCE_LOCALE_FUNCS = @LOCALENAME_ENHANCE_LOCALE_FUNCS@ LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ LOCALE_JA = @LOCALE_JA@ LOCALE_ZH_CN = @LOCALE_ZH_CN@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MBRTOWC_LIB = @MBRTOWC_LIB@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NEXT_ASSERT_H = @NEXT_ASSERT_H@ NEXT_AS_FIRST_DIRECTIVE_ASSERT_H = @NEXT_AS_FIRST_DIRECTIVE_ASSERT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@ NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_UTIME_H = @NEXT_AS_FIRST_DIRECTIVE_UTIME_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ NEXT_FLOAT_H = @NEXT_FLOAT_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ NEXT_LIMITS_H = @NEXT_LIMITS_H@ NEXT_LOCALE_H = @NEXT_LOCALE_H@ NEXT_MATH_H = @NEXT_MATH_H@ NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_RANDOM_H = @NEXT_SYS_RANDOM_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_SYS_WAIT_H = @NEXT_SYS_WAIT_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NEXT_UTIME_H = @NEXT_UTIME_H@ NEXT_WCHAR_H = @NEXT_WCHAR_H@ NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ POSUB = @POSUB@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PRIPTR_PREFIX = @PRIPTR_PREFIX@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REPLACE_ACCESS = @REPLACE_ACCESS@ REPLACE_ACOSF = @REPLACE_ACOSF@ REPLACE_ALIGNED_ALLOC = @REPLACE_ALIGNED_ALLOC@ REPLACE_ASINF = @REPLACE_ASINF@ REPLACE_ATAN2F = @REPLACE_ATAN2F@ REPLACE_ATANF = @REPLACE_ATANF@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CBRTF = @REPLACE_CBRTF@ REPLACE_CBRTL = @REPLACE_CBRTL@ REPLACE_CEIL = @REPLACE_CEIL@ REPLACE_CEILF = @REPLACE_CEILF@ REPLACE_CEILL = @REPLACE_CEILL@ REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ REPLACE_COSF = @REPLACE_COSF@ REPLACE_COSHF = @REPLACE_COSHF@ REPLACE_CREAT = @REPLACE_CREAT@ REPLACE_CTIME = @REPLACE_CTIME@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_DUP3 = @REPLACE_DUP3@ REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ REPLACE_ERROR = @REPLACE_ERROR@ REPLACE_ERROR_AT_LINE = @REPLACE_ERROR_AT_LINE@ REPLACE_EXECL = @REPLACE_EXECL@ REPLACE_EXECLE = @REPLACE_EXECLE@ REPLACE_EXECLP = @REPLACE_EXECLP@ REPLACE_EXECV = @REPLACE_EXECV@ REPLACE_EXECVE = @REPLACE_EXECVE@ REPLACE_EXECVP = @REPLACE_EXECVP@ REPLACE_EXECVPE = @REPLACE_EXECVPE@ REPLACE_EXP2 = @REPLACE_EXP2@ REPLACE_EXP2L = @REPLACE_EXP2L@ REPLACE_EXPF = @REPLACE_EXPF@ REPLACE_EXPL = @REPLACE_EXPL@ REPLACE_EXPM1 = @REPLACE_EXPM1@ REPLACE_EXPM1F = @REPLACE_EXPM1F@ REPLACE_EXPM1L = @REPLACE_EXPM1L@ REPLACE_FABSL = @REPLACE_FABSL@ REPLACE_FACCESSAT = @REPLACE_FACCESSAT@ REPLACE_FCHMODAT = @REPLACE_FCHMODAT@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDATASYNC = @REPLACE_FDATASYNC@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FFSLL = @REPLACE_FFSLL@ REPLACE_FLOOR = @REPLACE_FLOOR@ REPLACE_FLOORF = @REPLACE_FLOORF@ REPLACE_FLOORL = @REPLACE_FLOORL@ REPLACE_FMA = @REPLACE_FMA@ REPLACE_FMAF = @REPLACE_FMAF@ REPLACE_FMAL = @REPLACE_FMAL@ REPLACE_FMOD = @REPLACE_FMOD@ REPLACE_FMODF = @REPLACE_FMODF@ REPLACE_FMODL = @REPLACE_FMODL@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FOPEN_FOR_FOPEN_GNU = @REPLACE_FOPEN_FOR_FOPEN_GNU@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREE = @REPLACE_FREE@ REPLACE_FREELOCALE = @REPLACE_FREELOCALE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FREXP = @REPLACE_FREXP@ REPLACE_FREXPF = @REPLACE_FREXPF@ REPLACE_FREXPL = @REPLACE_FREXPL@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETENTROPY = @REPLACE_GETENTROPY@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOADAVG = @REPLACE_GETLOADAVG@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETPASS = @REPLACE_GETPASS@ REPLACE_GETPASS_FOR_GETPASS_GNU = @REPLACE_GETPASS_FOR_GETPASS_GNU@ REPLACE_GETPROGNAME = @REPLACE_GETPROGNAME@ REPLACE_GETRANDOM = @REPLACE_GETRANDOM@ REPLACE_GETSUBOPT = @REPLACE_GETSUBOPT@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ REPLACE_HYPOT = @REPLACE_HYPOT@ REPLACE_HYPOTF = @REPLACE_HYPOTF@ REPLACE_HYPOTL = @REPLACE_HYPOTL@ REPLACE_ILOGB = @REPLACE_ILOGB@ REPLACE_ILOGBF = @REPLACE_ILOGBF@ REPLACE_ILOGBL = @REPLACE_ILOGBL@ REPLACE_IMAXABS = @REPLACE_IMAXABS@ REPLACE_IMAXDIV = @REPLACE_IMAXDIV@ REPLACE_INITSTATE = @REPLACE_INITSTATE@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_ISFINITE = @REPLACE_ISFINITE@ REPLACE_ISINF = @REPLACE_ISINF@ REPLACE_ISNAN = @REPLACE_ISNAN@ REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ REPLACE_ISWDIGIT = @REPLACE_ISWDIGIT@ REPLACE_ISWXDIGIT = @REPLACE_ISWXDIGIT@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LOG = @REPLACE_LOG@ REPLACE_LOG10 = @REPLACE_LOG10@ REPLACE_LOG10F = @REPLACE_LOG10F@ REPLACE_LOG10L = @REPLACE_LOG10L@ REPLACE_LOG1P = @REPLACE_LOG1P@ REPLACE_LOG1PF = @REPLACE_LOG1PF@ REPLACE_LOG1PL = @REPLACE_LOG1PL@ REPLACE_LOG2 = @REPLACE_LOG2@ REPLACE_LOG2F = @REPLACE_LOG2F@ REPLACE_LOG2L = @REPLACE_LOG2L@ REPLACE_LOGB = @REPLACE_LOGB@ REPLACE_LOGBF = @REPLACE_LOGBF@ REPLACE_LOGBL = @REPLACE_LOGBL@ REPLACE_LOGF = @REPLACE_LOGF@ REPLACE_LOGL = @REPLACE_LOGL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC_FOR_MALLOC_GNU = @REPLACE_MALLOC_FOR_MALLOC_GNU@ REPLACE_MALLOC_FOR_MALLOC_POSIX = @REPLACE_MALLOC_FOR_MALLOC_POSIX@ REPLACE_MBRLEN = @REPLACE_MBRLEN@ REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ REPLACE_MBSINIT = @REPLACE_MBSINIT@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MEMPCPY = @REPLACE_MEMPCPY@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKFIFOAT = @REPLACE_MKFIFOAT@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKNODAT = @REPLACE_MKNODAT@ REPLACE_MKOSTEMP = @REPLACE_MKOSTEMP@ REPLACE_MKOSTEMPS = @REPLACE_MKOSTEMPS@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_MODF = @REPLACE_MODF@ REPLACE_MODFF = @REPLACE_MODFF@ REPLACE_MODFL = @REPLACE_MODFL@ REPLACE_NAN = @REPLACE_NAN@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NEWLOCALE = @REPLACE_NEWLOCALE@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_OPEN = @REPLACE_OPEN@ REPLACE_OPENAT = @REPLACE_OPENAT@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_PIPE2 = @REPLACE_PIPE2@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_POSIX_MEMALIGN = @REPLACE_POSIX_MEMALIGN@ REPLACE_POSIX_OPENPT = @REPLACE_POSIX_OPENPT@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_QSORT_R = @REPLACE_QSORT_R@ REPLACE_RAISE = @REPLACE_RAISE@ REPLACE_RANDOM = @REPLACE_RANDOM@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_READLINKAT = @REPLACE_READLINKAT@ REPLACE_REALLOCARRAY = @REPLACE_REALLOCARRAY@ REPLACE_REALLOC_FOR_REALLOC_GNU = @REPLACE_REALLOC_FOR_REALLOC_GNU@ REPLACE_REALLOC_FOR_REALLOC_POSIX = @REPLACE_REALLOC_FOR_REALLOC_POSIX@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMAINDER = @REPLACE_REMAINDER@ REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RINTL = @REPLACE_RINTL@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_ROUND = @REPLACE_ROUND@ REPLACE_ROUNDF = @REPLACE_ROUNDF@ REPLACE_ROUNDL = @REPLACE_ROUNDL@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SETHOSTNAME = @REPLACE_SETHOSTNAME@ REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ REPLACE_SETSTATE = @REPLACE_SETSTATE@ REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ REPLACE_SIGNBIT_USING_BUILTINS = @REPLACE_SIGNBIT_USING_BUILTINS@ REPLACE_SINF = @REPLACE_SINF@ REPLACE_SINHF = @REPLACE_SINHF@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_SQRTF = @REPLACE_SQRTF@ REPLACE_SQRTL = @REPLACE_SQRTL@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPCPY = @REPLACE_STPCPY@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERRORNAME_NP = @REPLACE_STRERRORNAME_NP@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRFTIME = @REPLACE_STRFTIME@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRTOL = @REPLACE_STRTOL@ REPLACE_STRTOLD = @REPLACE_STRTOLD@ REPLACE_STRTOLL = @REPLACE_STRTOLL@ REPLACE_STRTOUL = @REPLACE_STRTOUL@ REPLACE_STRTOULL = @REPLACE_STRTOULL@ REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ REPLACE_TANF = @REPLACE_TANF@ REPLACE_TANHF = @REPLACE_TANHF@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TIMESPEC_GET = @REPLACE_TIMESPEC_GET@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ REPLACE_TRUNC = @REPLACE_TRUNC@ REPLACE_TRUNCATE = @REPLACE_TRUNCATE@ REPLACE_TRUNCF = @REPLACE_TRUNCF@ REPLACE_TRUNCL = @REPLACE_TRUNCL@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_TZSET = @REPLACE_TZSET@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIME = @REPLACE_UTIME@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ REPLACE_WCSFTIME = @REPLACE_WCSFTIME@ REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ REPLACE_WCSTOK = @REPLACE_WCSTOK@ REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ REPLACE_WCTOB = @REPLACE_WCTOB@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ REPLACE_WMEMPCPY = @REPLACE_WMEMPCPY@ REPLACE_WRITE = @REPLACE_WRITE@ REPLACE__EXIT = @REPLACE__EXIT@ SCHED_YIELD_LIB = @SCHED_YIELD_LIB@ SED = @SED@ SETLOCALE_NULL_LIB = @SETLOCALE_NULL_LIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TESTS_ENVIRONMENT_EXTRA = @TESTS_ENVIRONMENT_EXTRA@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_TIME_UTC = @TIME_H_DEFINES_TIME_UTC@ UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_DEFINES_STRUCT_TIMESPEC = @UNISTD_H_DEFINES_STRUCT_TIMESPEC@ UNISTD_H_HAVE_SYS_RANDOM_H = @UNISTD_H_HAVE_SYS_RANDOM_H@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSION_INFO = @VERSION_INFO@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@ WINDOWS_STAT_TIMESPEC = @WINDOWS_STAT_TIMESPEC@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ objdir = @objdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyextext = @pyextext@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = 1.14 gnits subdir-objects SUBDIRS = noinst_HEADERS = noinst_LIBRARIES = noinst_LTLIBRARIES = libgnu.la EXTRA_DIST = alloca.in.h argmatch.h assert.in.h verify.h attribute.h \ basename-lgpl.h $(top_srcdir)/build-aux/bootstrap.in \ c-strcaseeq.h calloc.c calloc.c cloexec.h stripslash.c \ dirname.h eloop-threshold.h errno.in.h error.in.h exitfail.h \ $(top_srcdir)/build-aux/extract-trace fcntl.in.h fd-hook.h \ filename.h float.in.h fpucw.h frexp.c frexp.c frexpl.c \ fseterr.h stdio-impl.h stat-w32.c stat-w32.h \ $(top_srcdir)/build-aux/funclib.sh getopt-cdefs.in.h \ getopt-core.h getopt-ext.h getopt-pfx-core.h getopt-pfx-ext.h \ getopt.in.h getopt_int.h getprogname.h malloc/scratch_buffer.h \ scratch_buffer.h hard-locale.h hash.h \ $(top_srcdir)/build-aux/config.rpath ialloc.h \ $(top_srcdir)/build-aux/inline-source intprops-internal.h \ intprops.h inttypes.in.h float+.h isnan.c isnand-nolibm.h \ isnand.c float+.h isnan.c isnanf-nolibm.h isnanf.c float+.h \ isnan.c isnanl-nolibm.h isnanl.c cdefs.h libc-config.h \ limits.in.h localcharset.h locale.in.h malloc.c malloc.c \ malloca.h math.in.h lc-charset-dispatch.c \ lc-charset-dispatch.h mbrtowc-impl-utf8.h mbrtowc-impl.h \ mbtowc-lock.c mbtowc-lock.h windows-initguard.h \ memchr.valgrind msvc-inval.h msvc-nothrow.h \ $(top_srcdir)/build-aux/options-parser pathmax.h \ printf-frexp.h printf-frexp.c printf-frexpl.h quote.h quote.h \ quotearg.h rawmemchr.valgrind realloc.c realloc.c \ setlocale_null.h windows-initguard.h sig-handler.h signal.in.h \ float+.h _Noreturn.h arg-nonnull.h c++defs.h warn-on-use.h \ stat-w32.c stat-w32.h stat-time.h intprops-internal.h \ stdckdint.in.h stddef.in.h stdint.in.h stdio.in.h stdlib.in.h \ streq.h strerror-override.h string.in.h sys_random.in.h \ sys_stat.in.h sys_types.in.h sys_wait.in.h tempname.h \ time.in.h unistd.in.h utime.in.h asnprintf.c float+.h \ printf-args.c printf-args.h printf-parse.c printf-parse.h \ vasnprintf.c vasnprintf.h asprintf.c vasprintf.c verify.h \ vfprintf.c vprintf.c wchar.in.h wctype.in.h xalloc.h xalloc.h \ xalloc-oversized.h BUILT_SOURCES = $(ALLOCA_H) $(ASSERT_H) $(ERRNO_H) $(ERROR_H) fcntl.h \ $(FLOAT_H) $(GETOPT_H) $(GETOPT_CDEFS_H) \ malloc/scratch_buffer.gl.h inttypes.h $(LIMITS_H) locale.h \ math.h signal.h $(STDCKDINT_H) $(STDDEF_H) $(STDINT_H) stdio.h \ stdlib.h string.h sys/random.h sys/stat.h sys/types.h \ sys/wait.h time.h unistd.h utime.h wchar.h wctype.h SUFFIXES = MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t assert.h \ assert.h-t errno.h errno.h-t error.h error.h-t fcntl.h \ fcntl.h-t float.h float.h-t getopt.h getopt.h-t getopt-cdefs.h \ getopt-cdefs.h-t malloc/scratch_buffer.gl.h \ malloc/scratch_buffer.gl.h-t inttypes.h inttypes.h-t limits.h \ limits.h-t locale.h locale.h-t math.h math.h-t signal.h \ signal.h-t stdckdint.h stdckdint.h-t stddef.h stddef.h-t \ stdint.h stdint.h-t stdio.h stdio.h-t stdlib.h stdlib.h-t \ string.h string.h-t sys/random.h sys/random.h-t sys/stat.h \ sys/stat.h-t sys/types.h sys/types.h-t sys/wait.h sys/wait.h-t \ time.h time.h-t unistd.h unistd.h-t utime.h utime.h-t wchar.h \ wchar.h-t wctype.h wctype.h-t MOSTLYCLEANDIRS = sys sys sys CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = # No GNU Make output. AM_CPPFLAGS = AM_CFLAGS = libgnu_la_SOURCES = argmatch.c basename-lgpl.c binary-io.h binary-io.c \ bitrotate.h bitrotate.c c-ctype.h c-ctype.c c-strcase.h \ c-strcasecmp.c c-strncasecmp.c $(am__append_1) cloexec.c \ $(am__append_2) dirname.c basename.c dirname-lgpl.c \ stripslash.c $(am__append_3) $(am__append_4) exitfail.c \ $(am__append_5) fd-hook.c $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_9) $(am__append_10) \ $(am__append_11) $(am__append_12) $(am__append_13) \ $(am__append_14) gettext.h malloc/scratch_buffer_grow.c \ malloc/scratch_buffer_grow_preserve.c \ malloc/scratch_buffer_set_array_size.c hard-locale.c hash.c \ ialloc.c idx.h $(am__append_15) localcharset.c \ $(am__append_16) malloca.c math.c $(am__append_17) \ $(am__append_18) $(am__append_19) $(am__append_20) minmax.h \ $(am__append_21) $(am__append_22) $(am__append_23) \ $(am__append_24) $(am__append_25) $(am__append_26) \ printf-frexp.c printf-frexpl.c quotearg.c $(am__append_27) \ $(am__append_28) $(am__append_29) $(am__append_30) \ setlocale_null.c $(am__append_31) $(am__append_32) \ sig-handler.c $(am__append_33) $(am__append_34) size_max.h \ $(am__append_35) stat-time.c $(am__append_36) $(am__append_37) \ $(am__append_38) $(am__append_39) $(am__append_40) \ $(am__append_41) tempname.c unistd.c $(am__append_42) \ wctype-h.c xmalloc.c xalloc-die.c xbinary-io.h xbinary-io.c \ xsize.h xsize.c libgnu_la_CFLAGS = $(AM_CFLAGS) $(GL_CFLAG_GNULIB_WARNINGS) libgnu_la_LIBADD = $(gl_LTLIBOBJS) libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS) EXTRA_libgnu_la_SOURCES = calloc.c calloc.c stripslash.c frexp.c \ frexp.c frexpl.c stat-w32.c isnan.c isnand.c isnan.c isnanf.c \ isnan.c isnanl.c malloc.c malloc.c lc-charset-dispatch.c \ mbtowc-lock.c printf-frexp.c realloc.c realloc.c stat-w32.c \ asnprintf.c printf-args.c printf-parse.c vasnprintf.c \ asprintf.c vasprintf.c vfprintf.c vprintf.c libgnu_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(CLOCK_TIME_LIB) \ $(GETRANDOM_LIB) $(HARD_LOCALE_LIB) $(LTLIBICONV) $(LTLIBINTL) \ $(MBRTOWC_LIB) $(SETLOCALE_NULL_LIB) # Use this preprocessor expression to decide whether #include_next works. # Do not rely on a 'configure'-time test for this, since the expression # might appear in an installed header, which is used by some other compiler. HAVE_INCLUDE_NEXT = (__GNUC__ || __clang__ || 60000000 <= __DECC_VER) # In 'sed', replace the pattern space with a "DO NOT EDIT" comment. SED_HEADER_NOEDIT = s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */, # '$(SED_HEADER_STDOUT) -e "..."' runs 'sed' but first outputs "DO NOT EDIT". SED_HEADER_STDOUT = sed -e 1h -e '1$(SED_HEADER_NOEDIT)' -e 1G # '$(SED_HEADER_TO_AT_t) FILE' copies FILE to $@-t, prepending a leading # "DO_NOT_EDIT". Although this could be done more simply via: # SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) > $@-t # the -n and 'w' avoid a fork+exec, at least when GNU Make is used. SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) -n -e 'w $@-t' # Use $(gl_V_at) instead of $(AM_V_GEN) or $(AM_V_at) on a line that gl_V_at = $(AM_V_GEN) # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all makefiles that # need it. This is ensured by the applicability 'all' defined above. _NORETURN_H = $(srcdir)/_Noreturn.h # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all makefiles that # need it. This is ensured by the applicability 'all' defined above. ARG_NONNULL_H = $(srcdir)/arg-nonnull.h # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all makefiles that # need it. This is ensured by the applicability 'all' defined above. CXXDEFS_H = $(srcdir)/c++defs.h # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all makefiles that # need it. This is ensured by the applicability 'all' defined above. WARN_ON_USE_H = $(srcdir)/warn-on-use.h all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits lib/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } malloc/$(am__dirstamp): @$(MKDIR_P) malloc @: > malloc/$(am__dirstamp) malloc/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) malloc/$(DEPDIR) @: > malloc/$(DEPDIR)/$(am__dirstamp) malloc/libgnu_la-scratch_buffer_grow.lo: malloc/$(am__dirstamp) \ malloc/$(DEPDIR)/$(am__dirstamp) malloc/libgnu_la-scratch_buffer_grow_preserve.lo: \ malloc/$(am__dirstamp) malloc/$(DEPDIR)/$(am__dirstamp) malloc/libgnu_la-scratch_buffer_set_array_size.lo: \ malloc/$(am__dirstamp) malloc/$(DEPDIR)/$(am__dirstamp) libgnu.la: $(libgnu_la_OBJECTS) $(libgnu_la_DEPENDENCIES) $(EXTRA_libgnu_la_DEPENDENCIES) $(AM_V_CCLD)$(libgnu_la_LINK) $(libgnu_la_OBJECTS) $(libgnu_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f malloc/*.$(OBJEXT) -rm -f malloc/*.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-argmatch.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-asnprintf.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-asprintf.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-basename-lgpl.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-basename.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-binary-io.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-bitrotate.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-c-ctype.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-c-strcasecmp.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-c-strncasecmp.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-calloc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-canonicalize-lgpl.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-cloexec.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-close.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-dirname-lgpl.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-dirname.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-dup2.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-error.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-exitfail.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-fcntl.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-fd-hook.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-float.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-free.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-frexp.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-frexpl.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-fseterr.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-fstat.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-getdtablesize.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-getopt.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-getopt1.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-getprogname.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-getrandom.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-hard-locale.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-hash.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-ialloc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-isatty.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-isnan.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-isnand.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-isnanf.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-isnanl.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-itold.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-lc-charset-dispatch.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-localcharset.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-lstat.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-malloc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-malloca.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-math.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-mbrtowc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-mbsinit.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-mbtowc-lock.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-memchr.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-mempcpy.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-mkdir.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-mkstemps.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-msvc-inval.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-msvc-nothrow.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-open.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-pipe.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-printf-args.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-printf-frexp.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-printf-frexpl.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-printf-parse.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-quotearg.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-raise.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-rawmemchr.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-readlink.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-realloc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-reallocarray.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-setlocale-lock.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-setlocale_null.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-sig-handler.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-sigaction.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-signbitd.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-signbitf.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-signbitl.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-sigprocmask.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-stat-time.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-stat-w32.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-stat.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-stdio-read.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-stdio-write.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-strerror-override.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-strerror.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-stripslash.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-strndup.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-strnlen.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-tempname.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-unistd.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-utime.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-vasnprintf.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-vasprintf.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-vfprintf.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-vprintf.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-wctype-h.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-xalloc-die.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-xbinary-io.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-xmalloc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_la-xsize.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_la-scratch_buffer_grow.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_la-scratch_buffer_grow_preserve.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@malloc/$(DEPDIR)/libgnu_la-scratch_buffer_set_array_size.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libgnu_la-argmatch.lo: argmatch.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-argmatch.lo -MD -MP -MF $(DEPDIR)/libgnu_la-argmatch.Tpo -c -o libgnu_la-argmatch.lo `test -f 'argmatch.c' || echo '$(srcdir)/'`argmatch.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-argmatch.Tpo $(DEPDIR)/libgnu_la-argmatch.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='argmatch.c' object='libgnu_la-argmatch.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-argmatch.lo `test -f 'argmatch.c' || echo '$(srcdir)/'`argmatch.c libgnu_la-basename-lgpl.lo: basename-lgpl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-basename-lgpl.lo -MD -MP -MF $(DEPDIR)/libgnu_la-basename-lgpl.Tpo -c -o libgnu_la-basename-lgpl.lo `test -f 'basename-lgpl.c' || echo '$(srcdir)/'`basename-lgpl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-basename-lgpl.Tpo $(DEPDIR)/libgnu_la-basename-lgpl.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='basename-lgpl.c' object='libgnu_la-basename-lgpl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-basename-lgpl.lo `test -f 'basename-lgpl.c' || echo '$(srcdir)/'`basename-lgpl.c libgnu_la-binary-io.lo: binary-io.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-binary-io.lo -MD -MP -MF $(DEPDIR)/libgnu_la-binary-io.Tpo -c -o libgnu_la-binary-io.lo `test -f 'binary-io.c' || echo '$(srcdir)/'`binary-io.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-binary-io.Tpo $(DEPDIR)/libgnu_la-binary-io.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='binary-io.c' object='libgnu_la-binary-io.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-binary-io.lo `test -f 'binary-io.c' || echo '$(srcdir)/'`binary-io.c libgnu_la-bitrotate.lo: bitrotate.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-bitrotate.lo -MD -MP -MF $(DEPDIR)/libgnu_la-bitrotate.Tpo -c -o libgnu_la-bitrotate.lo `test -f 'bitrotate.c' || echo '$(srcdir)/'`bitrotate.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-bitrotate.Tpo $(DEPDIR)/libgnu_la-bitrotate.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bitrotate.c' object='libgnu_la-bitrotate.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-bitrotate.lo `test -f 'bitrotate.c' || echo '$(srcdir)/'`bitrotate.c libgnu_la-c-ctype.lo: c-ctype.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-c-ctype.lo -MD -MP -MF $(DEPDIR)/libgnu_la-c-ctype.Tpo -c -o libgnu_la-c-ctype.lo `test -f 'c-ctype.c' || echo '$(srcdir)/'`c-ctype.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-c-ctype.Tpo $(DEPDIR)/libgnu_la-c-ctype.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='c-ctype.c' object='libgnu_la-c-ctype.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-c-ctype.lo `test -f 'c-ctype.c' || echo '$(srcdir)/'`c-ctype.c libgnu_la-c-strcasecmp.lo: c-strcasecmp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-c-strcasecmp.lo -MD -MP -MF $(DEPDIR)/libgnu_la-c-strcasecmp.Tpo -c -o libgnu_la-c-strcasecmp.lo `test -f 'c-strcasecmp.c' || echo '$(srcdir)/'`c-strcasecmp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-c-strcasecmp.Tpo $(DEPDIR)/libgnu_la-c-strcasecmp.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='c-strcasecmp.c' object='libgnu_la-c-strcasecmp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-c-strcasecmp.lo `test -f 'c-strcasecmp.c' || echo '$(srcdir)/'`c-strcasecmp.c libgnu_la-c-strncasecmp.lo: c-strncasecmp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-c-strncasecmp.lo -MD -MP -MF $(DEPDIR)/libgnu_la-c-strncasecmp.Tpo -c -o libgnu_la-c-strncasecmp.lo `test -f 'c-strncasecmp.c' || echo '$(srcdir)/'`c-strncasecmp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-c-strncasecmp.Tpo $(DEPDIR)/libgnu_la-c-strncasecmp.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='c-strncasecmp.c' object='libgnu_la-c-strncasecmp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-c-strncasecmp.lo `test -f 'c-strncasecmp.c' || echo '$(srcdir)/'`c-strncasecmp.c libgnu_la-canonicalize-lgpl.lo: canonicalize-lgpl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-canonicalize-lgpl.lo -MD -MP -MF $(DEPDIR)/libgnu_la-canonicalize-lgpl.Tpo -c -o libgnu_la-canonicalize-lgpl.lo `test -f 'canonicalize-lgpl.c' || echo '$(srcdir)/'`canonicalize-lgpl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-canonicalize-lgpl.Tpo $(DEPDIR)/libgnu_la-canonicalize-lgpl.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canonicalize-lgpl.c' object='libgnu_la-canonicalize-lgpl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-canonicalize-lgpl.lo `test -f 'canonicalize-lgpl.c' || echo '$(srcdir)/'`canonicalize-lgpl.c libgnu_la-cloexec.lo: cloexec.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-cloexec.lo -MD -MP -MF $(DEPDIR)/libgnu_la-cloexec.Tpo -c -o libgnu_la-cloexec.lo `test -f 'cloexec.c' || echo '$(srcdir)/'`cloexec.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-cloexec.Tpo $(DEPDIR)/libgnu_la-cloexec.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cloexec.c' object='libgnu_la-cloexec.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-cloexec.lo `test -f 'cloexec.c' || echo '$(srcdir)/'`cloexec.c libgnu_la-close.lo: close.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-close.lo -MD -MP -MF $(DEPDIR)/libgnu_la-close.Tpo -c -o libgnu_la-close.lo `test -f 'close.c' || echo '$(srcdir)/'`close.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-close.Tpo $(DEPDIR)/libgnu_la-close.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='close.c' object='libgnu_la-close.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-close.lo `test -f 'close.c' || echo '$(srcdir)/'`close.c libgnu_la-dirname.lo: dirname.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-dirname.lo -MD -MP -MF $(DEPDIR)/libgnu_la-dirname.Tpo -c -o libgnu_la-dirname.lo `test -f 'dirname.c' || echo '$(srcdir)/'`dirname.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-dirname.Tpo $(DEPDIR)/libgnu_la-dirname.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dirname.c' object='libgnu_la-dirname.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-dirname.lo `test -f 'dirname.c' || echo '$(srcdir)/'`dirname.c libgnu_la-basename.lo: basename.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-basename.lo -MD -MP -MF $(DEPDIR)/libgnu_la-basename.Tpo -c -o libgnu_la-basename.lo `test -f 'basename.c' || echo '$(srcdir)/'`basename.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-basename.Tpo $(DEPDIR)/libgnu_la-basename.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='basename.c' object='libgnu_la-basename.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-basename.lo `test -f 'basename.c' || echo '$(srcdir)/'`basename.c libgnu_la-dirname-lgpl.lo: dirname-lgpl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-dirname-lgpl.lo -MD -MP -MF $(DEPDIR)/libgnu_la-dirname-lgpl.Tpo -c -o libgnu_la-dirname-lgpl.lo `test -f 'dirname-lgpl.c' || echo '$(srcdir)/'`dirname-lgpl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-dirname-lgpl.Tpo $(DEPDIR)/libgnu_la-dirname-lgpl.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dirname-lgpl.c' object='libgnu_la-dirname-lgpl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-dirname-lgpl.lo `test -f 'dirname-lgpl.c' || echo '$(srcdir)/'`dirname-lgpl.c libgnu_la-stripslash.lo: stripslash.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-stripslash.lo -MD -MP -MF $(DEPDIR)/libgnu_la-stripslash.Tpo -c -o libgnu_la-stripslash.lo `test -f 'stripslash.c' || echo '$(srcdir)/'`stripslash.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-stripslash.Tpo $(DEPDIR)/libgnu_la-stripslash.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stripslash.c' object='libgnu_la-stripslash.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-stripslash.lo `test -f 'stripslash.c' || echo '$(srcdir)/'`stripslash.c libgnu_la-dup2.lo: dup2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-dup2.lo -MD -MP -MF $(DEPDIR)/libgnu_la-dup2.Tpo -c -o libgnu_la-dup2.lo `test -f 'dup2.c' || echo '$(srcdir)/'`dup2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-dup2.Tpo $(DEPDIR)/libgnu_la-dup2.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dup2.c' object='libgnu_la-dup2.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-dup2.lo `test -f 'dup2.c' || echo '$(srcdir)/'`dup2.c libgnu_la-error.lo: error.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-error.lo -MD -MP -MF $(DEPDIR)/libgnu_la-error.Tpo -c -o libgnu_la-error.lo `test -f 'error.c' || echo '$(srcdir)/'`error.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-error.Tpo $(DEPDIR)/libgnu_la-error.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='error.c' object='libgnu_la-error.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-error.lo `test -f 'error.c' || echo '$(srcdir)/'`error.c libgnu_la-exitfail.lo: exitfail.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-exitfail.lo -MD -MP -MF $(DEPDIR)/libgnu_la-exitfail.Tpo -c -o libgnu_la-exitfail.lo `test -f 'exitfail.c' || echo '$(srcdir)/'`exitfail.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-exitfail.Tpo $(DEPDIR)/libgnu_la-exitfail.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='exitfail.c' object='libgnu_la-exitfail.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-exitfail.lo `test -f 'exitfail.c' || echo '$(srcdir)/'`exitfail.c libgnu_la-fcntl.lo: fcntl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-fcntl.lo -MD -MP -MF $(DEPDIR)/libgnu_la-fcntl.Tpo -c -o libgnu_la-fcntl.lo `test -f 'fcntl.c' || echo '$(srcdir)/'`fcntl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-fcntl.Tpo $(DEPDIR)/libgnu_la-fcntl.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fcntl.c' object='libgnu_la-fcntl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-fcntl.lo `test -f 'fcntl.c' || echo '$(srcdir)/'`fcntl.c libgnu_la-fd-hook.lo: fd-hook.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-fd-hook.lo -MD -MP -MF $(DEPDIR)/libgnu_la-fd-hook.Tpo -c -o libgnu_la-fd-hook.lo `test -f 'fd-hook.c' || echo '$(srcdir)/'`fd-hook.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-fd-hook.Tpo $(DEPDIR)/libgnu_la-fd-hook.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fd-hook.c' object='libgnu_la-fd-hook.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-fd-hook.lo `test -f 'fd-hook.c' || echo '$(srcdir)/'`fd-hook.c libgnu_la-float.lo: float.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-float.lo -MD -MP -MF $(DEPDIR)/libgnu_la-float.Tpo -c -o libgnu_la-float.lo `test -f 'float.c' || echo '$(srcdir)/'`float.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-float.Tpo $(DEPDIR)/libgnu_la-float.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='float.c' object='libgnu_la-float.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-float.lo `test -f 'float.c' || echo '$(srcdir)/'`float.c libgnu_la-itold.lo: itold.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-itold.lo -MD -MP -MF $(DEPDIR)/libgnu_la-itold.Tpo -c -o libgnu_la-itold.lo `test -f 'itold.c' || echo '$(srcdir)/'`itold.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-itold.Tpo $(DEPDIR)/libgnu_la-itold.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='itold.c' object='libgnu_la-itold.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-itold.lo `test -f 'itold.c' || echo '$(srcdir)/'`itold.c libgnu_la-free.lo: free.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-free.lo -MD -MP -MF $(DEPDIR)/libgnu_la-free.Tpo -c -o libgnu_la-free.lo `test -f 'free.c' || echo '$(srcdir)/'`free.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-free.Tpo $(DEPDIR)/libgnu_la-free.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='free.c' object='libgnu_la-free.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-free.lo `test -f 'free.c' || echo '$(srcdir)/'`free.c libgnu_la-fseterr.lo: fseterr.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-fseterr.lo -MD -MP -MF $(DEPDIR)/libgnu_la-fseterr.Tpo -c -o libgnu_la-fseterr.lo `test -f 'fseterr.c' || echo '$(srcdir)/'`fseterr.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-fseterr.Tpo $(DEPDIR)/libgnu_la-fseterr.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fseterr.c' object='libgnu_la-fseterr.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-fseterr.lo `test -f 'fseterr.c' || echo '$(srcdir)/'`fseterr.c libgnu_la-fstat.lo: fstat.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-fstat.lo -MD -MP -MF $(DEPDIR)/libgnu_la-fstat.Tpo -c -o libgnu_la-fstat.lo `test -f 'fstat.c' || echo '$(srcdir)/'`fstat.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-fstat.Tpo $(DEPDIR)/libgnu_la-fstat.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstat.c' object='libgnu_la-fstat.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-fstat.lo `test -f 'fstat.c' || echo '$(srcdir)/'`fstat.c libgnu_la-getdtablesize.lo: getdtablesize.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-getdtablesize.lo -MD -MP -MF $(DEPDIR)/libgnu_la-getdtablesize.Tpo -c -o libgnu_la-getdtablesize.lo `test -f 'getdtablesize.c' || echo '$(srcdir)/'`getdtablesize.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-getdtablesize.Tpo $(DEPDIR)/libgnu_la-getdtablesize.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getdtablesize.c' object='libgnu_la-getdtablesize.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-getdtablesize.lo `test -f 'getdtablesize.c' || echo '$(srcdir)/'`getdtablesize.c libgnu_la-getopt.lo: getopt.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-getopt.lo -MD -MP -MF $(DEPDIR)/libgnu_la-getopt.Tpo -c -o libgnu_la-getopt.lo `test -f 'getopt.c' || echo '$(srcdir)/'`getopt.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-getopt.Tpo $(DEPDIR)/libgnu_la-getopt.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getopt.c' object='libgnu_la-getopt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-getopt.lo `test -f 'getopt.c' || echo '$(srcdir)/'`getopt.c libgnu_la-getopt1.lo: getopt1.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-getopt1.lo -MD -MP -MF $(DEPDIR)/libgnu_la-getopt1.Tpo -c -o libgnu_la-getopt1.lo `test -f 'getopt1.c' || echo '$(srcdir)/'`getopt1.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-getopt1.Tpo $(DEPDIR)/libgnu_la-getopt1.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getopt1.c' object='libgnu_la-getopt1.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-getopt1.lo `test -f 'getopt1.c' || echo '$(srcdir)/'`getopt1.c libgnu_la-getprogname.lo: getprogname.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-getprogname.lo -MD -MP -MF $(DEPDIR)/libgnu_la-getprogname.Tpo -c -o libgnu_la-getprogname.lo `test -f 'getprogname.c' || echo '$(srcdir)/'`getprogname.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-getprogname.Tpo $(DEPDIR)/libgnu_la-getprogname.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getprogname.c' object='libgnu_la-getprogname.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-getprogname.lo `test -f 'getprogname.c' || echo '$(srcdir)/'`getprogname.c libgnu_la-getrandom.lo: getrandom.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-getrandom.lo -MD -MP -MF $(DEPDIR)/libgnu_la-getrandom.Tpo -c -o libgnu_la-getrandom.lo `test -f 'getrandom.c' || echo '$(srcdir)/'`getrandom.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-getrandom.Tpo $(DEPDIR)/libgnu_la-getrandom.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getrandom.c' object='libgnu_la-getrandom.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-getrandom.lo `test -f 'getrandom.c' || echo '$(srcdir)/'`getrandom.c malloc/libgnu_la-scratch_buffer_grow.lo: malloc/scratch_buffer_grow.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT malloc/libgnu_la-scratch_buffer_grow.lo -MD -MP -MF malloc/$(DEPDIR)/libgnu_la-scratch_buffer_grow.Tpo -c -o malloc/libgnu_la-scratch_buffer_grow.lo `test -f 'malloc/scratch_buffer_grow.c' || echo '$(srcdir)/'`malloc/scratch_buffer_grow.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) malloc/$(DEPDIR)/libgnu_la-scratch_buffer_grow.Tpo malloc/$(DEPDIR)/libgnu_la-scratch_buffer_grow.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='malloc/scratch_buffer_grow.c' object='malloc/libgnu_la-scratch_buffer_grow.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o malloc/libgnu_la-scratch_buffer_grow.lo `test -f 'malloc/scratch_buffer_grow.c' || echo '$(srcdir)/'`malloc/scratch_buffer_grow.c malloc/libgnu_la-scratch_buffer_grow_preserve.lo: malloc/scratch_buffer_grow_preserve.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT malloc/libgnu_la-scratch_buffer_grow_preserve.lo -MD -MP -MF malloc/$(DEPDIR)/libgnu_la-scratch_buffer_grow_preserve.Tpo -c -o malloc/libgnu_la-scratch_buffer_grow_preserve.lo `test -f 'malloc/scratch_buffer_grow_preserve.c' || echo '$(srcdir)/'`malloc/scratch_buffer_grow_preserve.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) malloc/$(DEPDIR)/libgnu_la-scratch_buffer_grow_preserve.Tpo malloc/$(DEPDIR)/libgnu_la-scratch_buffer_grow_preserve.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='malloc/scratch_buffer_grow_preserve.c' object='malloc/libgnu_la-scratch_buffer_grow_preserve.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o malloc/libgnu_la-scratch_buffer_grow_preserve.lo `test -f 'malloc/scratch_buffer_grow_preserve.c' || echo '$(srcdir)/'`malloc/scratch_buffer_grow_preserve.c malloc/libgnu_la-scratch_buffer_set_array_size.lo: malloc/scratch_buffer_set_array_size.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT malloc/libgnu_la-scratch_buffer_set_array_size.lo -MD -MP -MF malloc/$(DEPDIR)/libgnu_la-scratch_buffer_set_array_size.Tpo -c -o malloc/libgnu_la-scratch_buffer_set_array_size.lo `test -f 'malloc/scratch_buffer_set_array_size.c' || echo '$(srcdir)/'`malloc/scratch_buffer_set_array_size.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) malloc/$(DEPDIR)/libgnu_la-scratch_buffer_set_array_size.Tpo malloc/$(DEPDIR)/libgnu_la-scratch_buffer_set_array_size.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='malloc/scratch_buffer_set_array_size.c' object='malloc/libgnu_la-scratch_buffer_set_array_size.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o malloc/libgnu_la-scratch_buffer_set_array_size.lo `test -f 'malloc/scratch_buffer_set_array_size.c' || echo '$(srcdir)/'`malloc/scratch_buffer_set_array_size.c libgnu_la-hard-locale.lo: hard-locale.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-hard-locale.lo -MD -MP -MF $(DEPDIR)/libgnu_la-hard-locale.Tpo -c -o libgnu_la-hard-locale.lo `test -f 'hard-locale.c' || echo '$(srcdir)/'`hard-locale.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-hard-locale.Tpo $(DEPDIR)/libgnu_la-hard-locale.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hard-locale.c' object='libgnu_la-hard-locale.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-hard-locale.lo `test -f 'hard-locale.c' || echo '$(srcdir)/'`hard-locale.c libgnu_la-hash.lo: hash.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-hash.lo -MD -MP -MF $(DEPDIR)/libgnu_la-hash.Tpo -c -o libgnu_la-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-hash.Tpo $(DEPDIR)/libgnu_la-hash.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hash.c' object='libgnu_la-hash.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c libgnu_la-ialloc.lo: ialloc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-ialloc.lo -MD -MP -MF $(DEPDIR)/libgnu_la-ialloc.Tpo -c -o libgnu_la-ialloc.lo `test -f 'ialloc.c' || echo '$(srcdir)/'`ialloc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-ialloc.Tpo $(DEPDIR)/libgnu_la-ialloc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ialloc.c' object='libgnu_la-ialloc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-ialloc.lo `test -f 'ialloc.c' || echo '$(srcdir)/'`ialloc.c libgnu_la-isatty.lo: isatty.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-isatty.lo -MD -MP -MF $(DEPDIR)/libgnu_la-isatty.Tpo -c -o libgnu_la-isatty.lo `test -f 'isatty.c' || echo '$(srcdir)/'`isatty.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-isatty.Tpo $(DEPDIR)/libgnu_la-isatty.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='isatty.c' object='libgnu_la-isatty.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-isatty.lo `test -f 'isatty.c' || echo '$(srcdir)/'`isatty.c libgnu_la-localcharset.lo: localcharset.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-localcharset.lo -MD -MP -MF $(DEPDIR)/libgnu_la-localcharset.Tpo -c -o libgnu_la-localcharset.lo `test -f 'localcharset.c' || echo '$(srcdir)/'`localcharset.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-localcharset.Tpo $(DEPDIR)/libgnu_la-localcharset.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='localcharset.c' object='libgnu_la-localcharset.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-localcharset.lo `test -f 'localcharset.c' || echo '$(srcdir)/'`localcharset.c libgnu_la-lstat.lo: lstat.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-lstat.lo -MD -MP -MF $(DEPDIR)/libgnu_la-lstat.Tpo -c -o libgnu_la-lstat.lo `test -f 'lstat.c' || echo '$(srcdir)/'`lstat.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-lstat.Tpo $(DEPDIR)/libgnu_la-lstat.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lstat.c' object='libgnu_la-lstat.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-lstat.lo `test -f 'lstat.c' || echo '$(srcdir)/'`lstat.c libgnu_la-malloca.lo: malloca.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-malloca.lo -MD -MP -MF $(DEPDIR)/libgnu_la-malloca.Tpo -c -o libgnu_la-malloca.lo `test -f 'malloca.c' || echo '$(srcdir)/'`malloca.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-malloca.Tpo $(DEPDIR)/libgnu_la-malloca.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='malloca.c' object='libgnu_la-malloca.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-malloca.lo `test -f 'malloca.c' || echo '$(srcdir)/'`malloca.c libgnu_la-math.lo: math.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-math.lo -MD -MP -MF $(DEPDIR)/libgnu_la-math.Tpo -c -o libgnu_la-math.lo `test -f 'math.c' || echo '$(srcdir)/'`math.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-math.Tpo $(DEPDIR)/libgnu_la-math.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='math.c' object='libgnu_la-math.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-math.lo `test -f 'math.c' || echo '$(srcdir)/'`math.c libgnu_la-mbrtowc.lo: mbrtowc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-mbrtowc.lo -MD -MP -MF $(DEPDIR)/libgnu_la-mbrtowc.Tpo -c -o libgnu_la-mbrtowc.lo `test -f 'mbrtowc.c' || echo '$(srcdir)/'`mbrtowc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-mbrtowc.Tpo $(DEPDIR)/libgnu_la-mbrtowc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mbrtowc.c' object='libgnu_la-mbrtowc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-mbrtowc.lo `test -f 'mbrtowc.c' || echo '$(srcdir)/'`mbrtowc.c libgnu_la-mbsinit.lo: mbsinit.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-mbsinit.lo -MD -MP -MF $(DEPDIR)/libgnu_la-mbsinit.Tpo -c -o libgnu_la-mbsinit.lo `test -f 'mbsinit.c' || echo '$(srcdir)/'`mbsinit.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-mbsinit.Tpo $(DEPDIR)/libgnu_la-mbsinit.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mbsinit.c' object='libgnu_la-mbsinit.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-mbsinit.lo `test -f 'mbsinit.c' || echo '$(srcdir)/'`mbsinit.c libgnu_la-memchr.lo: memchr.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-memchr.lo -MD -MP -MF $(DEPDIR)/libgnu_la-memchr.Tpo -c -o libgnu_la-memchr.lo `test -f 'memchr.c' || echo '$(srcdir)/'`memchr.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-memchr.Tpo $(DEPDIR)/libgnu_la-memchr.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='memchr.c' object='libgnu_la-memchr.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-memchr.lo `test -f 'memchr.c' || echo '$(srcdir)/'`memchr.c libgnu_la-mempcpy.lo: mempcpy.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-mempcpy.lo -MD -MP -MF $(DEPDIR)/libgnu_la-mempcpy.Tpo -c -o libgnu_la-mempcpy.lo `test -f 'mempcpy.c' || echo '$(srcdir)/'`mempcpy.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-mempcpy.Tpo $(DEPDIR)/libgnu_la-mempcpy.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mempcpy.c' object='libgnu_la-mempcpy.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-mempcpy.lo `test -f 'mempcpy.c' || echo '$(srcdir)/'`mempcpy.c libgnu_la-mkdir.lo: mkdir.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-mkdir.lo -MD -MP -MF $(DEPDIR)/libgnu_la-mkdir.Tpo -c -o libgnu_la-mkdir.lo `test -f 'mkdir.c' || echo '$(srcdir)/'`mkdir.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-mkdir.Tpo $(DEPDIR)/libgnu_la-mkdir.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mkdir.c' object='libgnu_la-mkdir.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-mkdir.lo `test -f 'mkdir.c' || echo '$(srcdir)/'`mkdir.c libgnu_la-mkstemps.lo: mkstemps.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-mkstemps.lo -MD -MP -MF $(DEPDIR)/libgnu_la-mkstemps.Tpo -c -o libgnu_la-mkstemps.lo `test -f 'mkstemps.c' || echo '$(srcdir)/'`mkstemps.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-mkstemps.Tpo $(DEPDIR)/libgnu_la-mkstemps.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mkstemps.c' object='libgnu_la-mkstemps.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-mkstemps.lo `test -f 'mkstemps.c' || echo '$(srcdir)/'`mkstemps.c libgnu_la-msvc-inval.lo: msvc-inval.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-msvc-inval.lo -MD -MP -MF $(DEPDIR)/libgnu_la-msvc-inval.Tpo -c -o libgnu_la-msvc-inval.lo `test -f 'msvc-inval.c' || echo '$(srcdir)/'`msvc-inval.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-msvc-inval.Tpo $(DEPDIR)/libgnu_la-msvc-inval.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='msvc-inval.c' object='libgnu_la-msvc-inval.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-msvc-inval.lo `test -f 'msvc-inval.c' || echo '$(srcdir)/'`msvc-inval.c libgnu_la-msvc-nothrow.lo: msvc-nothrow.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-msvc-nothrow.lo -MD -MP -MF $(DEPDIR)/libgnu_la-msvc-nothrow.Tpo -c -o libgnu_la-msvc-nothrow.lo `test -f 'msvc-nothrow.c' || echo '$(srcdir)/'`msvc-nothrow.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-msvc-nothrow.Tpo $(DEPDIR)/libgnu_la-msvc-nothrow.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='msvc-nothrow.c' object='libgnu_la-msvc-nothrow.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-msvc-nothrow.lo `test -f 'msvc-nothrow.c' || echo '$(srcdir)/'`msvc-nothrow.c libgnu_la-open.lo: open.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-open.lo -MD -MP -MF $(DEPDIR)/libgnu_la-open.Tpo -c -o libgnu_la-open.lo `test -f 'open.c' || echo '$(srcdir)/'`open.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-open.Tpo $(DEPDIR)/libgnu_la-open.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='open.c' object='libgnu_la-open.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-open.lo `test -f 'open.c' || echo '$(srcdir)/'`open.c libgnu_la-pipe.lo: pipe.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-pipe.lo -MD -MP -MF $(DEPDIR)/libgnu_la-pipe.Tpo -c -o libgnu_la-pipe.lo `test -f 'pipe.c' || echo '$(srcdir)/'`pipe.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-pipe.Tpo $(DEPDIR)/libgnu_la-pipe.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipe.c' object='libgnu_la-pipe.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-pipe.lo `test -f 'pipe.c' || echo '$(srcdir)/'`pipe.c libgnu_la-printf-frexp.lo: printf-frexp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-printf-frexp.lo -MD -MP -MF $(DEPDIR)/libgnu_la-printf-frexp.Tpo -c -o libgnu_la-printf-frexp.lo `test -f 'printf-frexp.c' || echo '$(srcdir)/'`printf-frexp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-printf-frexp.Tpo $(DEPDIR)/libgnu_la-printf-frexp.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printf-frexp.c' object='libgnu_la-printf-frexp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-printf-frexp.lo `test -f 'printf-frexp.c' || echo '$(srcdir)/'`printf-frexp.c libgnu_la-printf-frexpl.lo: printf-frexpl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-printf-frexpl.lo -MD -MP -MF $(DEPDIR)/libgnu_la-printf-frexpl.Tpo -c -o libgnu_la-printf-frexpl.lo `test -f 'printf-frexpl.c' || echo '$(srcdir)/'`printf-frexpl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-printf-frexpl.Tpo $(DEPDIR)/libgnu_la-printf-frexpl.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printf-frexpl.c' object='libgnu_la-printf-frexpl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-printf-frexpl.lo `test -f 'printf-frexpl.c' || echo '$(srcdir)/'`printf-frexpl.c libgnu_la-quotearg.lo: quotearg.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-quotearg.lo -MD -MP -MF $(DEPDIR)/libgnu_la-quotearg.Tpo -c -o libgnu_la-quotearg.lo `test -f 'quotearg.c' || echo '$(srcdir)/'`quotearg.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-quotearg.Tpo $(DEPDIR)/libgnu_la-quotearg.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='quotearg.c' object='libgnu_la-quotearg.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-quotearg.lo `test -f 'quotearg.c' || echo '$(srcdir)/'`quotearg.c libgnu_la-raise.lo: raise.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-raise.lo -MD -MP -MF $(DEPDIR)/libgnu_la-raise.Tpo -c -o libgnu_la-raise.lo `test -f 'raise.c' || echo '$(srcdir)/'`raise.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-raise.Tpo $(DEPDIR)/libgnu_la-raise.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='raise.c' object='libgnu_la-raise.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-raise.lo `test -f 'raise.c' || echo '$(srcdir)/'`raise.c libgnu_la-rawmemchr.lo: rawmemchr.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-rawmemchr.lo -MD -MP -MF $(DEPDIR)/libgnu_la-rawmemchr.Tpo -c -o libgnu_la-rawmemchr.lo `test -f 'rawmemchr.c' || echo '$(srcdir)/'`rawmemchr.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-rawmemchr.Tpo $(DEPDIR)/libgnu_la-rawmemchr.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rawmemchr.c' object='libgnu_la-rawmemchr.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-rawmemchr.lo `test -f 'rawmemchr.c' || echo '$(srcdir)/'`rawmemchr.c libgnu_la-readlink.lo: readlink.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-readlink.lo -MD -MP -MF $(DEPDIR)/libgnu_la-readlink.Tpo -c -o libgnu_la-readlink.lo `test -f 'readlink.c' || echo '$(srcdir)/'`readlink.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-readlink.Tpo $(DEPDIR)/libgnu_la-readlink.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='readlink.c' object='libgnu_la-readlink.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-readlink.lo `test -f 'readlink.c' || echo '$(srcdir)/'`readlink.c libgnu_la-reallocarray.lo: reallocarray.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-reallocarray.lo -MD -MP -MF $(DEPDIR)/libgnu_la-reallocarray.Tpo -c -o libgnu_la-reallocarray.lo `test -f 'reallocarray.c' || echo '$(srcdir)/'`reallocarray.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-reallocarray.Tpo $(DEPDIR)/libgnu_la-reallocarray.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='reallocarray.c' object='libgnu_la-reallocarray.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-reallocarray.lo `test -f 'reallocarray.c' || echo '$(srcdir)/'`reallocarray.c libgnu_la-setlocale_null.lo: setlocale_null.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-setlocale_null.lo -MD -MP -MF $(DEPDIR)/libgnu_la-setlocale_null.Tpo -c -o libgnu_la-setlocale_null.lo `test -f 'setlocale_null.c' || echo '$(srcdir)/'`setlocale_null.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-setlocale_null.Tpo $(DEPDIR)/libgnu_la-setlocale_null.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='setlocale_null.c' object='libgnu_la-setlocale_null.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-setlocale_null.lo `test -f 'setlocale_null.c' || echo '$(srcdir)/'`setlocale_null.c libgnu_la-setlocale-lock.lo: setlocale-lock.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-setlocale-lock.lo -MD -MP -MF $(DEPDIR)/libgnu_la-setlocale-lock.Tpo -c -o libgnu_la-setlocale-lock.lo `test -f 'setlocale-lock.c' || echo '$(srcdir)/'`setlocale-lock.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-setlocale-lock.Tpo $(DEPDIR)/libgnu_la-setlocale-lock.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='setlocale-lock.c' object='libgnu_la-setlocale-lock.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-setlocale-lock.lo `test -f 'setlocale-lock.c' || echo '$(srcdir)/'`setlocale-lock.c libgnu_la-sigaction.lo: sigaction.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-sigaction.lo -MD -MP -MF $(DEPDIR)/libgnu_la-sigaction.Tpo -c -o libgnu_la-sigaction.lo `test -f 'sigaction.c' || echo '$(srcdir)/'`sigaction.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-sigaction.Tpo $(DEPDIR)/libgnu_la-sigaction.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sigaction.c' object='libgnu_la-sigaction.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-sigaction.lo `test -f 'sigaction.c' || echo '$(srcdir)/'`sigaction.c libgnu_la-sig-handler.lo: sig-handler.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-sig-handler.lo -MD -MP -MF $(DEPDIR)/libgnu_la-sig-handler.Tpo -c -o libgnu_la-sig-handler.lo `test -f 'sig-handler.c' || echo '$(srcdir)/'`sig-handler.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-sig-handler.Tpo $(DEPDIR)/libgnu_la-sig-handler.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sig-handler.c' object='libgnu_la-sig-handler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-sig-handler.lo `test -f 'sig-handler.c' || echo '$(srcdir)/'`sig-handler.c libgnu_la-signbitf.lo: signbitf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-signbitf.lo -MD -MP -MF $(DEPDIR)/libgnu_la-signbitf.Tpo -c -o libgnu_la-signbitf.lo `test -f 'signbitf.c' || echo '$(srcdir)/'`signbitf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-signbitf.Tpo $(DEPDIR)/libgnu_la-signbitf.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='signbitf.c' object='libgnu_la-signbitf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-signbitf.lo `test -f 'signbitf.c' || echo '$(srcdir)/'`signbitf.c libgnu_la-signbitd.lo: signbitd.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-signbitd.lo -MD -MP -MF $(DEPDIR)/libgnu_la-signbitd.Tpo -c -o libgnu_la-signbitd.lo `test -f 'signbitd.c' || echo '$(srcdir)/'`signbitd.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-signbitd.Tpo $(DEPDIR)/libgnu_la-signbitd.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='signbitd.c' object='libgnu_la-signbitd.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-signbitd.lo `test -f 'signbitd.c' || echo '$(srcdir)/'`signbitd.c libgnu_la-signbitl.lo: signbitl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-signbitl.lo -MD -MP -MF $(DEPDIR)/libgnu_la-signbitl.Tpo -c -o libgnu_la-signbitl.lo `test -f 'signbitl.c' || echo '$(srcdir)/'`signbitl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-signbitl.Tpo $(DEPDIR)/libgnu_la-signbitl.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='signbitl.c' object='libgnu_la-signbitl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-signbitl.lo `test -f 'signbitl.c' || echo '$(srcdir)/'`signbitl.c libgnu_la-sigprocmask.lo: sigprocmask.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-sigprocmask.lo -MD -MP -MF $(DEPDIR)/libgnu_la-sigprocmask.Tpo -c -o libgnu_la-sigprocmask.lo `test -f 'sigprocmask.c' || echo '$(srcdir)/'`sigprocmask.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-sigprocmask.Tpo $(DEPDIR)/libgnu_la-sigprocmask.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sigprocmask.c' object='libgnu_la-sigprocmask.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-sigprocmask.lo `test -f 'sigprocmask.c' || echo '$(srcdir)/'`sigprocmask.c libgnu_la-stat.lo: stat.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-stat.lo -MD -MP -MF $(DEPDIR)/libgnu_la-stat.Tpo -c -o libgnu_la-stat.lo `test -f 'stat.c' || echo '$(srcdir)/'`stat.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-stat.Tpo $(DEPDIR)/libgnu_la-stat.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stat.c' object='libgnu_la-stat.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-stat.lo `test -f 'stat.c' || echo '$(srcdir)/'`stat.c libgnu_la-stat-time.lo: stat-time.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-stat-time.lo -MD -MP -MF $(DEPDIR)/libgnu_la-stat-time.Tpo -c -o libgnu_la-stat-time.lo `test -f 'stat-time.c' || echo '$(srcdir)/'`stat-time.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-stat-time.Tpo $(DEPDIR)/libgnu_la-stat-time.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stat-time.c' object='libgnu_la-stat-time.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-stat-time.lo `test -f 'stat-time.c' || echo '$(srcdir)/'`stat-time.c libgnu_la-stdio-read.lo: stdio-read.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-stdio-read.lo -MD -MP -MF $(DEPDIR)/libgnu_la-stdio-read.Tpo -c -o libgnu_la-stdio-read.lo `test -f 'stdio-read.c' || echo '$(srcdir)/'`stdio-read.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-stdio-read.Tpo $(DEPDIR)/libgnu_la-stdio-read.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdio-read.c' object='libgnu_la-stdio-read.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-stdio-read.lo `test -f 'stdio-read.c' || echo '$(srcdir)/'`stdio-read.c libgnu_la-stdio-write.lo: stdio-write.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-stdio-write.lo -MD -MP -MF $(DEPDIR)/libgnu_la-stdio-write.Tpo -c -o libgnu_la-stdio-write.lo `test -f 'stdio-write.c' || echo '$(srcdir)/'`stdio-write.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-stdio-write.Tpo $(DEPDIR)/libgnu_la-stdio-write.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdio-write.c' object='libgnu_la-stdio-write.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-stdio-write.lo `test -f 'stdio-write.c' || echo '$(srcdir)/'`stdio-write.c libgnu_la-strerror.lo: strerror.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-strerror.lo -MD -MP -MF $(DEPDIR)/libgnu_la-strerror.Tpo -c -o libgnu_la-strerror.lo `test -f 'strerror.c' || echo '$(srcdir)/'`strerror.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-strerror.Tpo $(DEPDIR)/libgnu_la-strerror.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='strerror.c' object='libgnu_la-strerror.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-strerror.lo `test -f 'strerror.c' || echo '$(srcdir)/'`strerror.c libgnu_la-strerror-override.lo: strerror-override.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-strerror-override.lo -MD -MP -MF $(DEPDIR)/libgnu_la-strerror-override.Tpo -c -o libgnu_la-strerror-override.lo `test -f 'strerror-override.c' || echo '$(srcdir)/'`strerror-override.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-strerror-override.Tpo $(DEPDIR)/libgnu_la-strerror-override.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='strerror-override.c' object='libgnu_la-strerror-override.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-strerror-override.lo `test -f 'strerror-override.c' || echo '$(srcdir)/'`strerror-override.c libgnu_la-strndup.lo: strndup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-strndup.lo -MD -MP -MF $(DEPDIR)/libgnu_la-strndup.Tpo -c -o libgnu_la-strndup.lo `test -f 'strndup.c' || echo '$(srcdir)/'`strndup.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-strndup.Tpo $(DEPDIR)/libgnu_la-strndup.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='strndup.c' object='libgnu_la-strndup.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-strndup.lo `test -f 'strndup.c' || echo '$(srcdir)/'`strndup.c libgnu_la-strnlen.lo: strnlen.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-strnlen.lo -MD -MP -MF $(DEPDIR)/libgnu_la-strnlen.Tpo -c -o libgnu_la-strnlen.lo `test -f 'strnlen.c' || echo '$(srcdir)/'`strnlen.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-strnlen.Tpo $(DEPDIR)/libgnu_la-strnlen.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='strnlen.c' object='libgnu_la-strnlen.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-strnlen.lo `test -f 'strnlen.c' || echo '$(srcdir)/'`strnlen.c libgnu_la-tempname.lo: tempname.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-tempname.lo -MD -MP -MF $(DEPDIR)/libgnu_la-tempname.Tpo -c -o libgnu_la-tempname.lo `test -f 'tempname.c' || echo '$(srcdir)/'`tempname.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-tempname.Tpo $(DEPDIR)/libgnu_la-tempname.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tempname.c' object='libgnu_la-tempname.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-tempname.lo `test -f 'tempname.c' || echo '$(srcdir)/'`tempname.c libgnu_la-unistd.lo: unistd.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-unistd.lo -MD -MP -MF $(DEPDIR)/libgnu_la-unistd.Tpo -c -o libgnu_la-unistd.lo `test -f 'unistd.c' || echo '$(srcdir)/'`unistd.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-unistd.Tpo $(DEPDIR)/libgnu_la-unistd.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unistd.c' object='libgnu_la-unistd.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-unistd.lo `test -f 'unistd.c' || echo '$(srcdir)/'`unistd.c libgnu_la-utime.lo: utime.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-utime.lo -MD -MP -MF $(DEPDIR)/libgnu_la-utime.Tpo -c -o libgnu_la-utime.lo `test -f 'utime.c' || echo '$(srcdir)/'`utime.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-utime.Tpo $(DEPDIR)/libgnu_la-utime.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utime.c' object='libgnu_la-utime.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-utime.lo `test -f 'utime.c' || echo '$(srcdir)/'`utime.c libgnu_la-wctype-h.lo: wctype-h.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-wctype-h.lo -MD -MP -MF $(DEPDIR)/libgnu_la-wctype-h.Tpo -c -o libgnu_la-wctype-h.lo `test -f 'wctype-h.c' || echo '$(srcdir)/'`wctype-h.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-wctype-h.Tpo $(DEPDIR)/libgnu_la-wctype-h.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wctype-h.c' object='libgnu_la-wctype-h.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-wctype-h.lo `test -f 'wctype-h.c' || echo '$(srcdir)/'`wctype-h.c libgnu_la-xmalloc.lo: xmalloc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-xmalloc.lo -MD -MP -MF $(DEPDIR)/libgnu_la-xmalloc.Tpo -c -o libgnu_la-xmalloc.lo `test -f 'xmalloc.c' || echo '$(srcdir)/'`xmalloc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-xmalloc.Tpo $(DEPDIR)/libgnu_la-xmalloc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xmalloc.c' object='libgnu_la-xmalloc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-xmalloc.lo `test -f 'xmalloc.c' || echo '$(srcdir)/'`xmalloc.c libgnu_la-xalloc-die.lo: xalloc-die.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-xalloc-die.lo -MD -MP -MF $(DEPDIR)/libgnu_la-xalloc-die.Tpo -c -o libgnu_la-xalloc-die.lo `test -f 'xalloc-die.c' || echo '$(srcdir)/'`xalloc-die.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-xalloc-die.Tpo $(DEPDIR)/libgnu_la-xalloc-die.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xalloc-die.c' object='libgnu_la-xalloc-die.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-xalloc-die.lo `test -f 'xalloc-die.c' || echo '$(srcdir)/'`xalloc-die.c libgnu_la-xbinary-io.lo: xbinary-io.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-xbinary-io.lo -MD -MP -MF $(DEPDIR)/libgnu_la-xbinary-io.Tpo -c -o libgnu_la-xbinary-io.lo `test -f 'xbinary-io.c' || echo '$(srcdir)/'`xbinary-io.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-xbinary-io.Tpo $(DEPDIR)/libgnu_la-xbinary-io.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xbinary-io.c' object='libgnu_la-xbinary-io.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-xbinary-io.lo `test -f 'xbinary-io.c' || echo '$(srcdir)/'`xbinary-io.c libgnu_la-xsize.lo: xsize.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-xsize.lo -MD -MP -MF $(DEPDIR)/libgnu_la-xsize.Tpo -c -o libgnu_la-xsize.lo `test -f 'xsize.c' || echo '$(srcdir)/'`xsize.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-xsize.Tpo $(DEPDIR)/libgnu_la-xsize.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xsize.c' object='libgnu_la-xsize.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-xsize.lo `test -f 'xsize.c' || echo '$(srcdir)/'`xsize.c libgnu_la-calloc.lo: calloc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-calloc.lo -MD -MP -MF $(DEPDIR)/libgnu_la-calloc.Tpo -c -o libgnu_la-calloc.lo `test -f 'calloc.c' || echo '$(srcdir)/'`calloc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-calloc.Tpo $(DEPDIR)/libgnu_la-calloc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='calloc.c' object='libgnu_la-calloc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-calloc.lo `test -f 'calloc.c' || echo '$(srcdir)/'`calloc.c libgnu_la-frexp.lo: frexp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-frexp.lo -MD -MP -MF $(DEPDIR)/libgnu_la-frexp.Tpo -c -o libgnu_la-frexp.lo `test -f 'frexp.c' || echo '$(srcdir)/'`frexp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-frexp.Tpo $(DEPDIR)/libgnu_la-frexp.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='frexp.c' object='libgnu_la-frexp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-frexp.lo `test -f 'frexp.c' || echo '$(srcdir)/'`frexp.c libgnu_la-frexpl.lo: frexpl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-frexpl.lo -MD -MP -MF $(DEPDIR)/libgnu_la-frexpl.Tpo -c -o libgnu_la-frexpl.lo `test -f 'frexpl.c' || echo '$(srcdir)/'`frexpl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-frexpl.Tpo $(DEPDIR)/libgnu_la-frexpl.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='frexpl.c' object='libgnu_la-frexpl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-frexpl.lo `test -f 'frexpl.c' || echo '$(srcdir)/'`frexpl.c libgnu_la-stat-w32.lo: stat-w32.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-stat-w32.lo -MD -MP -MF $(DEPDIR)/libgnu_la-stat-w32.Tpo -c -o libgnu_la-stat-w32.lo `test -f 'stat-w32.c' || echo '$(srcdir)/'`stat-w32.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-stat-w32.Tpo $(DEPDIR)/libgnu_la-stat-w32.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stat-w32.c' object='libgnu_la-stat-w32.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-stat-w32.lo `test -f 'stat-w32.c' || echo '$(srcdir)/'`stat-w32.c libgnu_la-isnan.lo: isnan.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-isnan.lo -MD -MP -MF $(DEPDIR)/libgnu_la-isnan.Tpo -c -o libgnu_la-isnan.lo `test -f 'isnan.c' || echo '$(srcdir)/'`isnan.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-isnan.Tpo $(DEPDIR)/libgnu_la-isnan.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='isnan.c' object='libgnu_la-isnan.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-isnan.lo `test -f 'isnan.c' || echo '$(srcdir)/'`isnan.c libgnu_la-isnand.lo: isnand.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-isnand.lo -MD -MP -MF $(DEPDIR)/libgnu_la-isnand.Tpo -c -o libgnu_la-isnand.lo `test -f 'isnand.c' || echo '$(srcdir)/'`isnand.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-isnand.Tpo $(DEPDIR)/libgnu_la-isnand.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='isnand.c' object='libgnu_la-isnand.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-isnand.lo `test -f 'isnand.c' || echo '$(srcdir)/'`isnand.c libgnu_la-isnanf.lo: isnanf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-isnanf.lo -MD -MP -MF $(DEPDIR)/libgnu_la-isnanf.Tpo -c -o libgnu_la-isnanf.lo `test -f 'isnanf.c' || echo '$(srcdir)/'`isnanf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-isnanf.Tpo $(DEPDIR)/libgnu_la-isnanf.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='isnanf.c' object='libgnu_la-isnanf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-isnanf.lo `test -f 'isnanf.c' || echo '$(srcdir)/'`isnanf.c libgnu_la-isnanl.lo: isnanl.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-isnanl.lo -MD -MP -MF $(DEPDIR)/libgnu_la-isnanl.Tpo -c -o libgnu_la-isnanl.lo `test -f 'isnanl.c' || echo '$(srcdir)/'`isnanl.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-isnanl.Tpo $(DEPDIR)/libgnu_la-isnanl.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='isnanl.c' object='libgnu_la-isnanl.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-isnanl.lo `test -f 'isnanl.c' || echo '$(srcdir)/'`isnanl.c libgnu_la-malloc.lo: malloc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-malloc.lo -MD -MP -MF $(DEPDIR)/libgnu_la-malloc.Tpo -c -o libgnu_la-malloc.lo `test -f 'malloc.c' || echo '$(srcdir)/'`malloc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-malloc.Tpo $(DEPDIR)/libgnu_la-malloc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='malloc.c' object='libgnu_la-malloc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-malloc.lo `test -f 'malloc.c' || echo '$(srcdir)/'`malloc.c libgnu_la-lc-charset-dispatch.lo: lc-charset-dispatch.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-lc-charset-dispatch.lo -MD -MP -MF $(DEPDIR)/libgnu_la-lc-charset-dispatch.Tpo -c -o libgnu_la-lc-charset-dispatch.lo `test -f 'lc-charset-dispatch.c' || echo '$(srcdir)/'`lc-charset-dispatch.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-lc-charset-dispatch.Tpo $(DEPDIR)/libgnu_la-lc-charset-dispatch.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lc-charset-dispatch.c' object='libgnu_la-lc-charset-dispatch.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-lc-charset-dispatch.lo `test -f 'lc-charset-dispatch.c' || echo '$(srcdir)/'`lc-charset-dispatch.c libgnu_la-mbtowc-lock.lo: mbtowc-lock.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-mbtowc-lock.lo -MD -MP -MF $(DEPDIR)/libgnu_la-mbtowc-lock.Tpo -c -o libgnu_la-mbtowc-lock.lo `test -f 'mbtowc-lock.c' || echo '$(srcdir)/'`mbtowc-lock.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-mbtowc-lock.Tpo $(DEPDIR)/libgnu_la-mbtowc-lock.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mbtowc-lock.c' object='libgnu_la-mbtowc-lock.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-mbtowc-lock.lo `test -f 'mbtowc-lock.c' || echo '$(srcdir)/'`mbtowc-lock.c libgnu_la-realloc.lo: realloc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-realloc.lo -MD -MP -MF $(DEPDIR)/libgnu_la-realloc.Tpo -c -o libgnu_la-realloc.lo `test -f 'realloc.c' || echo '$(srcdir)/'`realloc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-realloc.Tpo $(DEPDIR)/libgnu_la-realloc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='realloc.c' object='libgnu_la-realloc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-realloc.lo `test -f 'realloc.c' || echo '$(srcdir)/'`realloc.c libgnu_la-asnprintf.lo: asnprintf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-asnprintf.lo -MD -MP -MF $(DEPDIR)/libgnu_la-asnprintf.Tpo -c -o libgnu_la-asnprintf.lo `test -f 'asnprintf.c' || echo '$(srcdir)/'`asnprintf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-asnprintf.Tpo $(DEPDIR)/libgnu_la-asnprintf.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='asnprintf.c' object='libgnu_la-asnprintf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-asnprintf.lo `test -f 'asnprintf.c' || echo '$(srcdir)/'`asnprintf.c libgnu_la-printf-args.lo: printf-args.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-printf-args.lo -MD -MP -MF $(DEPDIR)/libgnu_la-printf-args.Tpo -c -o libgnu_la-printf-args.lo `test -f 'printf-args.c' || echo '$(srcdir)/'`printf-args.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-printf-args.Tpo $(DEPDIR)/libgnu_la-printf-args.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printf-args.c' object='libgnu_la-printf-args.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-printf-args.lo `test -f 'printf-args.c' || echo '$(srcdir)/'`printf-args.c libgnu_la-printf-parse.lo: printf-parse.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-printf-parse.lo -MD -MP -MF $(DEPDIR)/libgnu_la-printf-parse.Tpo -c -o libgnu_la-printf-parse.lo `test -f 'printf-parse.c' || echo '$(srcdir)/'`printf-parse.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-printf-parse.Tpo $(DEPDIR)/libgnu_la-printf-parse.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printf-parse.c' object='libgnu_la-printf-parse.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-printf-parse.lo `test -f 'printf-parse.c' || echo '$(srcdir)/'`printf-parse.c libgnu_la-vasnprintf.lo: vasnprintf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-vasnprintf.lo -MD -MP -MF $(DEPDIR)/libgnu_la-vasnprintf.Tpo -c -o libgnu_la-vasnprintf.lo `test -f 'vasnprintf.c' || echo '$(srcdir)/'`vasnprintf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-vasnprintf.Tpo $(DEPDIR)/libgnu_la-vasnprintf.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vasnprintf.c' object='libgnu_la-vasnprintf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-vasnprintf.lo `test -f 'vasnprintf.c' || echo '$(srcdir)/'`vasnprintf.c libgnu_la-asprintf.lo: asprintf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-asprintf.lo -MD -MP -MF $(DEPDIR)/libgnu_la-asprintf.Tpo -c -o libgnu_la-asprintf.lo `test -f 'asprintf.c' || echo '$(srcdir)/'`asprintf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-asprintf.Tpo $(DEPDIR)/libgnu_la-asprintf.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='asprintf.c' object='libgnu_la-asprintf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-asprintf.lo `test -f 'asprintf.c' || echo '$(srcdir)/'`asprintf.c libgnu_la-vasprintf.lo: vasprintf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-vasprintf.lo -MD -MP -MF $(DEPDIR)/libgnu_la-vasprintf.Tpo -c -o libgnu_la-vasprintf.lo `test -f 'vasprintf.c' || echo '$(srcdir)/'`vasprintf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-vasprintf.Tpo $(DEPDIR)/libgnu_la-vasprintf.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vasprintf.c' object='libgnu_la-vasprintf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-vasprintf.lo `test -f 'vasprintf.c' || echo '$(srcdir)/'`vasprintf.c libgnu_la-vfprintf.lo: vfprintf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-vfprintf.lo -MD -MP -MF $(DEPDIR)/libgnu_la-vfprintf.Tpo -c -o libgnu_la-vfprintf.lo `test -f 'vfprintf.c' || echo '$(srcdir)/'`vfprintf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-vfprintf.Tpo $(DEPDIR)/libgnu_la-vfprintf.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vfprintf.c' object='libgnu_la-vfprintf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-vfprintf.lo `test -f 'vfprintf.c' || echo '$(srcdir)/'`vfprintf.c libgnu_la-vprintf.lo: vprintf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -MT libgnu_la-vprintf.lo -MD -MP -MF $(DEPDIR)/libgnu_la-vprintf.Tpo -c -o libgnu_la-vprintf.lo `test -f 'vprintf.c' || echo '$(srcdir)/'`vprintf.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_la-vprintf.Tpo $(DEPDIR)/libgnu_la-vprintf.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vprintf.c' object='libgnu_la-vprintf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_la_CFLAGS) $(CFLAGS) -c -o libgnu_la-vprintf.lo `test -f 'vprintf.c' || echo '$(srcdir)/'`vprintf.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -rm -rf malloc/.libs malloc/_libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) installdirs: installdirs-recursive installdirs-am: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive install-exec: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f malloc/$(DEPDIR)/$(am__dirstamp) -rm -f malloc/$(am__dirstamp) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ clean-noinstLTLIBRARIES mostlyclean-am distclean: distclean-recursive -rm -f ./$(DEPDIR)/libgnu_la-argmatch.Plo -rm -f ./$(DEPDIR)/libgnu_la-asnprintf.Plo -rm -f ./$(DEPDIR)/libgnu_la-asprintf.Plo -rm -f ./$(DEPDIR)/libgnu_la-basename-lgpl.Plo -rm -f ./$(DEPDIR)/libgnu_la-basename.Plo -rm -f ./$(DEPDIR)/libgnu_la-binary-io.Plo -rm -f ./$(DEPDIR)/libgnu_la-bitrotate.Plo -rm -f ./$(DEPDIR)/libgnu_la-c-ctype.Plo -rm -f ./$(DEPDIR)/libgnu_la-c-strcasecmp.Plo -rm -f ./$(DEPDIR)/libgnu_la-c-strncasecmp.Plo -rm -f ./$(DEPDIR)/libgnu_la-calloc.Plo -rm -f ./$(DEPDIR)/libgnu_la-canonicalize-lgpl.Plo -rm -f ./$(DEPDIR)/libgnu_la-cloexec.Plo -rm -f ./$(DEPDIR)/libgnu_la-close.Plo -rm -f ./$(DEPDIR)/libgnu_la-dirname-lgpl.Plo -rm -f ./$(DEPDIR)/libgnu_la-dirname.Plo -rm -f ./$(DEPDIR)/libgnu_la-dup2.Plo -rm -f ./$(DEPDIR)/libgnu_la-error.Plo -rm -f ./$(DEPDIR)/libgnu_la-exitfail.Plo -rm -f ./$(DEPDIR)/libgnu_la-fcntl.Plo -rm -f ./$(DEPDIR)/libgnu_la-fd-hook.Plo -rm -f ./$(DEPDIR)/libgnu_la-float.Plo -rm -f ./$(DEPDIR)/libgnu_la-free.Plo -rm -f ./$(DEPDIR)/libgnu_la-frexp.Plo -rm -f ./$(DEPDIR)/libgnu_la-frexpl.Plo -rm -f ./$(DEPDIR)/libgnu_la-fseterr.Plo -rm -f ./$(DEPDIR)/libgnu_la-fstat.Plo -rm -f ./$(DEPDIR)/libgnu_la-getdtablesize.Plo -rm -f ./$(DEPDIR)/libgnu_la-getopt.Plo -rm -f ./$(DEPDIR)/libgnu_la-getopt1.Plo -rm -f ./$(DEPDIR)/libgnu_la-getprogname.Plo -rm -f ./$(DEPDIR)/libgnu_la-getrandom.Plo -rm -f ./$(DEPDIR)/libgnu_la-hard-locale.Plo -rm -f ./$(DEPDIR)/libgnu_la-hash.Plo -rm -f ./$(DEPDIR)/libgnu_la-ialloc.Plo -rm -f ./$(DEPDIR)/libgnu_la-isatty.Plo -rm -f ./$(DEPDIR)/libgnu_la-isnan.Plo -rm -f ./$(DEPDIR)/libgnu_la-isnand.Plo -rm -f ./$(DEPDIR)/libgnu_la-isnanf.Plo -rm -f ./$(DEPDIR)/libgnu_la-isnanl.Plo -rm -f ./$(DEPDIR)/libgnu_la-itold.Plo -rm -f ./$(DEPDIR)/libgnu_la-lc-charset-dispatch.Plo -rm -f ./$(DEPDIR)/libgnu_la-localcharset.Plo -rm -f ./$(DEPDIR)/libgnu_la-lstat.Plo -rm -f ./$(DEPDIR)/libgnu_la-malloc.Plo -rm -f ./$(DEPDIR)/libgnu_la-malloca.Plo -rm -f ./$(DEPDIR)/libgnu_la-math.Plo -rm -f ./$(DEPDIR)/libgnu_la-mbrtowc.Plo -rm -f ./$(DEPDIR)/libgnu_la-mbsinit.Plo -rm -f ./$(DEPDIR)/libgnu_la-mbtowc-lock.Plo -rm -f ./$(DEPDIR)/libgnu_la-memchr.Plo -rm -f ./$(DEPDIR)/libgnu_la-mempcpy.Plo -rm -f ./$(DEPDIR)/libgnu_la-mkdir.Plo -rm -f ./$(DEPDIR)/libgnu_la-mkstemps.Plo -rm -f ./$(DEPDIR)/libgnu_la-msvc-inval.Plo -rm -f ./$(DEPDIR)/libgnu_la-msvc-nothrow.Plo -rm -f ./$(DEPDIR)/libgnu_la-open.Plo -rm -f ./$(DEPDIR)/libgnu_la-pipe.Plo -rm -f ./$(DEPDIR)/libgnu_la-printf-args.Plo -rm -f ./$(DEPDIR)/libgnu_la-printf-frexp.Plo -rm -f ./$(DEPDIR)/libgnu_la-printf-frexpl.Plo -rm -f ./$(DEPDIR)/libgnu_la-printf-parse.Plo -rm -f ./$(DEPDIR)/libgnu_la-quotearg.Plo -rm -f ./$(DEPDIR)/libgnu_la-raise.Plo -rm -f ./$(DEPDIR)/libgnu_la-rawmemchr.Plo -rm -f ./$(DEPDIR)/libgnu_la-readlink.Plo -rm -f ./$(DEPDIR)/libgnu_la-realloc.Plo -rm -f ./$(DEPDIR)/libgnu_la-reallocarray.Plo -rm -f ./$(DEPDIR)/libgnu_la-setlocale-lock.Plo -rm -f ./$(DEPDIR)/libgnu_la-setlocale_null.Plo -rm -f ./$(DEPDIR)/libgnu_la-sig-handler.Plo -rm -f ./$(DEPDIR)/libgnu_la-sigaction.Plo -rm -f ./$(DEPDIR)/libgnu_la-signbitd.Plo -rm -f ./$(DEPDIR)/libgnu_la-signbitf.Plo -rm -f ./$(DEPDIR)/libgnu_la-signbitl.Plo -rm -f ./$(DEPDIR)/libgnu_la-sigprocmask.Plo -rm -f ./$(DEPDIR)/libgnu_la-stat-time.Plo -rm -f ./$(DEPDIR)/libgnu_la-stat-w32.Plo -rm -f ./$(DEPDIR)/libgnu_la-stat.Plo -rm -f ./$(DEPDIR)/libgnu_la-stdio-read.Plo -rm -f ./$(DEPDIR)/libgnu_la-stdio-write.Plo -rm -f ./$(DEPDIR)/libgnu_la-strerror-override.Plo -rm -f ./$(DEPDIR)/libgnu_la-strerror.Plo -rm -f ./$(DEPDIR)/libgnu_la-stripslash.Plo -rm -f ./$(DEPDIR)/libgnu_la-strndup.Plo -rm -f ./$(DEPDIR)/libgnu_la-strnlen.Plo -rm -f ./$(DEPDIR)/libgnu_la-tempname.Plo -rm -f ./$(DEPDIR)/libgnu_la-unistd.Plo -rm -f ./$(DEPDIR)/libgnu_la-utime.Plo -rm -f ./$(DEPDIR)/libgnu_la-vasnprintf.Plo -rm -f ./$(DEPDIR)/libgnu_la-vasprintf.Plo -rm -f ./$(DEPDIR)/libgnu_la-vfprintf.Plo -rm -f ./$(DEPDIR)/libgnu_la-vprintf.Plo -rm -f ./$(DEPDIR)/libgnu_la-wctype-h.Plo -rm -f ./$(DEPDIR)/libgnu_la-xalloc-die.Plo -rm -f ./$(DEPDIR)/libgnu_la-xbinary-io.Plo -rm -f ./$(DEPDIR)/libgnu_la-xmalloc.Plo -rm -f ./$(DEPDIR)/libgnu_la-xsize.Plo -rm -f malloc/$(DEPDIR)/libgnu_la-scratch_buffer_grow.Plo -rm -f malloc/$(DEPDIR)/libgnu_la-scratch_buffer_grow_preserve.Plo -rm -f malloc/$(DEPDIR)/libgnu_la-scratch_buffer_set_array_size.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-local distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/libgnu_la-argmatch.Plo -rm -f ./$(DEPDIR)/libgnu_la-asnprintf.Plo -rm -f ./$(DEPDIR)/libgnu_la-asprintf.Plo -rm -f ./$(DEPDIR)/libgnu_la-basename-lgpl.Plo -rm -f ./$(DEPDIR)/libgnu_la-basename.Plo -rm -f ./$(DEPDIR)/libgnu_la-binary-io.Plo -rm -f ./$(DEPDIR)/libgnu_la-bitrotate.Plo -rm -f ./$(DEPDIR)/libgnu_la-c-ctype.Plo -rm -f ./$(DEPDIR)/libgnu_la-c-strcasecmp.Plo -rm -f ./$(DEPDIR)/libgnu_la-c-strncasecmp.Plo -rm -f ./$(DEPDIR)/libgnu_la-calloc.Plo -rm -f ./$(DEPDIR)/libgnu_la-canonicalize-lgpl.Plo -rm -f ./$(DEPDIR)/libgnu_la-cloexec.Plo -rm -f ./$(DEPDIR)/libgnu_la-close.Plo -rm -f ./$(DEPDIR)/libgnu_la-dirname-lgpl.Plo -rm -f ./$(DEPDIR)/libgnu_la-dirname.Plo -rm -f ./$(DEPDIR)/libgnu_la-dup2.Plo -rm -f ./$(DEPDIR)/libgnu_la-error.Plo -rm -f ./$(DEPDIR)/libgnu_la-exitfail.Plo -rm -f ./$(DEPDIR)/libgnu_la-fcntl.Plo -rm -f ./$(DEPDIR)/libgnu_la-fd-hook.Plo -rm -f ./$(DEPDIR)/libgnu_la-float.Plo -rm -f ./$(DEPDIR)/libgnu_la-free.Plo -rm -f ./$(DEPDIR)/libgnu_la-frexp.Plo -rm -f ./$(DEPDIR)/libgnu_la-frexpl.Plo -rm -f ./$(DEPDIR)/libgnu_la-fseterr.Plo -rm -f ./$(DEPDIR)/libgnu_la-fstat.Plo -rm -f ./$(DEPDIR)/libgnu_la-getdtablesize.Plo -rm -f ./$(DEPDIR)/libgnu_la-getopt.Plo -rm -f ./$(DEPDIR)/libgnu_la-getopt1.Plo -rm -f ./$(DEPDIR)/libgnu_la-getprogname.Plo -rm -f ./$(DEPDIR)/libgnu_la-getrandom.Plo -rm -f ./$(DEPDIR)/libgnu_la-hard-locale.Plo -rm -f ./$(DEPDIR)/libgnu_la-hash.Plo -rm -f ./$(DEPDIR)/libgnu_la-ialloc.Plo -rm -f ./$(DEPDIR)/libgnu_la-isatty.Plo -rm -f ./$(DEPDIR)/libgnu_la-isnan.Plo -rm -f ./$(DEPDIR)/libgnu_la-isnand.Plo -rm -f ./$(DEPDIR)/libgnu_la-isnanf.Plo -rm -f ./$(DEPDIR)/libgnu_la-isnanl.Plo -rm -f ./$(DEPDIR)/libgnu_la-itold.Plo -rm -f ./$(DEPDIR)/libgnu_la-lc-charset-dispatch.Plo -rm -f ./$(DEPDIR)/libgnu_la-localcharset.Plo -rm -f ./$(DEPDIR)/libgnu_la-lstat.Plo -rm -f ./$(DEPDIR)/libgnu_la-malloc.Plo -rm -f ./$(DEPDIR)/libgnu_la-malloca.Plo -rm -f ./$(DEPDIR)/libgnu_la-math.Plo -rm -f ./$(DEPDIR)/libgnu_la-mbrtowc.Plo -rm -f ./$(DEPDIR)/libgnu_la-mbsinit.Plo -rm -f ./$(DEPDIR)/libgnu_la-mbtowc-lock.Plo -rm -f ./$(DEPDIR)/libgnu_la-memchr.Plo -rm -f ./$(DEPDIR)/libgnu_la-mempcpy.Plo -rm -f ./$(DEPDIR)/libgnu_la-mkdir.Plo -rm -f ./$(DEPDIR)/libgnu_la-mkstemps.Plo -rm -f ./$(DEPDIR)/libgnu_la-msvc-inval.Plo -rm -f ./$(DEPDIR)/libgnu_la-msvc-nothrow.Plo -rm -f ./$(DEPDIR)/libgnu_la-open.Plo -rm -f ./$(DEPDIR)/libgnu_la-pipe.Plo -rm -f ./$(DEPDIR)/libgnu_la-printf-args.Plo -rm -f ./$(DEPDIR)/libgnu_la-printf-frexp.Plo -rm -f ./$(DEPDIR)/libgnu_la-printf-frexpl.Plo -rm -f ./$(DEPDIR)/libgnu_la-printf-parse.Plo -rm -f ./$(DEPDIR)/libgnu_la-quotearg.Plo -rm -f ./$(DEPDIR)/libgnu_la-raise.Plo -rm -f ./$(DEPDIR)/libgnu_la-rawmemchr.Plo -rm -f ./$(DEPDIR)/libgnu_la-readlink.Plo -rm -f ./$(DEPDIR)/libgnu_la-realloc.Plo -rm -f ./$(DEPDIR)/libgnu_la-reallocarray.Plo -rm -f ./$(DEPDIR)/libgnu_la-setlocale-lock.Plo -rm -f ./$(DEPDIR)/libgnu_la-setlocale_null.Plo -rm -f ./$(DEPDIR)/libgnu_la-sig-handler.Plo -rm -f ./$(DEPDIR)/libgnu_la-sigaction.Plo -rm -f ./$(DEPDIR)/libgnu_la-signbitd.Plo -rm -f ./$(DEPDIR)/libgnu_la-signbitf.Plo -rm -f ./$(DEPDIR)/libgnu_la-signbitl.Plo -rm -f ./$(DEPDIR)/libgnu_la-sigprocmask.Plo -rm -f ./$(DEPDIR)/libgnu_la-stat-time.Plo -rm -f ./$(DEPDIR)/libgnu_la-stat-w32.Plo -rm -f ./$(DEPDIR)/libgnu_la-stat.Plo -rm -f ./$(DEPDIR)/libgnu_la-stdio-read.Plo -rm -f ./$(DEPDIR)/libgnu_la-stdio-write.Plo -rm -f ./$(DEPDIR)/libgnu_la-strerror-override.Plo -rm -f ./$(DEPDIR)/libgnu_la-strerror.Plo -rm -f ./$(DEPDIR)/libgnu_la-stripslash.Plo -rm -f ./$(DEPDIR)/libgnu_la-strndup.Plo -rm -f ./$(DEPDIR)/libgnu_la-strnlen.Plo -rm -f ./$(DEPDIR)/libgnu_la-tempname.Plo -rm -f ./$(DEPDIR)/libgnu_la-unistd.Plo -rm -f ./$(DEPDIR)/libgnu_la-utime.Plo -rm -f ./$(DEPDIR)/libgnu_la-vasnprintf.Plo -rm -f ./$(DEPDIR)/libgnu_la-vasprintf.Plo -rm -f ./$(DEPDIR)/libgnu_la-vfprintf.Plo -rm -f ./$(DEPDIR)/libgnu_la-vprintf.Plo -rm -f ./$(DEPDIR)/libgnu_la-wctype-h.Plo -rm -f ./$(DEPDIR)/libgnu_la-xalloc-die.Plo -rm -f ./$(DEPDIR)/libgnu_la-xbinary-io.Plo -rm -f ./$(DEPDIR)/libgnu_la-xmalloc.Plo -rm -f ./$(DEPDIR)/libgnu_la-xsize.Plo -rm -f malloc/$(DEPDIR)/libgnu_la-scratch_buffer_grow.Plo -rm -f malloc/$(DEPDIR)/libgnu_la-scratch_buffer_grow_preserve.Plo -rm -f malloc/$(DEPDIR)/libgnu_la-scratch_buffer_set_array_size.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic \ maintainer-clean-local mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool mostlyclean-local pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) all check install install-am \ install-exec install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--depfiles check check-am clean clean-generic clean-libtool \ clean-noinstLIBRARIES clean-noinstLTLIBRARIES cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-local distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic \ maintainer-clean-local mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_ALLOCA_H_TRUE@alloca.h: alloca.in.h $(top_builddir)/config.status @GL_GENERATE_ALLOCA_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ @GL_GENERATE_ALLOCA_H_TRUE@ -e 's|@''HAVE_ALLOCA_H''@|$(HAVE_ALLOCA_H)|g' \ @GL_GENERATE_ALLOCA_H_TRUE@ $(srcdir)/alloca.in.h > $@-t @GL_GENERATE_ALLOCA_H_TRUE@ $(AM_V_at)mv $@-t $@ @GL_GENERATE_ALLOCA_H_FALSE@alloca.h: $(top_builddir)/config.status @GL_GENERATE_ALLOCA_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_ASSERT_H_TRUE@assert.h: assert.in.h verify.h $(top_builddir)/config.status @GL_GENERATE_ASSERT_H_TRUE@ $(gl_V_at){ $(SED_HEADER_STDOUT) \ @GL_GENERATE_ASSERT_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_ASSERT_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_ASSERT_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_ASSERT_H_TRUE@ -e 's|@''NEXT_ASSERT_H''@|$(NEXT_ASSERT_H)|g' \ @GL_GENERATE_ASSERT_H_TRUE@ < $(srcdir)/assert.in.h && \ @GL_GENERATE_ASSERT_H_TRUE@ sed -e '/@assert.h omit start@/,/@assert.h omit end@/d' \ @GL_GENERATE_ASSERT_H_TRUE@ -e 's|_gl_verify|_gl_static_assert|g' \ @GL_GENERATE_ASSERT_H_TRUE@ -e 's|_GL_VERIFY|_GL_STATIC_ASSERT|g' \ @GL_GENERATE_ASSERT_H_TRUE@ -e 's|_GL\(_STATIC_ASSERT_H\)|_GL\1|g' \ @GL_GENERATE_ASSERT_H_TRUE@ < $(srcdir)/verify.h; \ @GL_GENERATE_ASSERT_H_TRUE@ } > $@-t @GL_GENERATE_ASSERT_H_TRUE@ $(AM_V_at)mv $@-t $@ @GL_GENERATE_ASSERT_H_FALSE@assert.h: $(top_builddir)/config.status @GL_GENERATE_ASSERT_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that is POSIX compliant. @GL_GENERATE_ERRNO_H_TRUE@errno.h: errno.in.h $(top_builddir)/config.status @GL_GENERATE_ERRNO_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ $(srcdir)/errno.in.h > $@-t @GL_GENERATE_ERRNO_H_TRUE@ $(AM_V_at)mv $@-t $@ @GL_GENERATE_ERRNO_H_FALSE@errno.h: $(top_builddir)/config.status @GL_GENERATE_ERRNO_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works. @GL_GENERATE_ERROR_H_TRUE@error.h: error.in.h $(top_builddir)/config.status $(CXXDEFS_H) @GL_GENERATE_ERROR_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ @GL_GENERATE_ERROR_H_TRUE@ -e 's|@''HAVE_ERROR''@|$(HAVE_ERROR)|g' \ @GL_GENERATE_ERROR_H_TRUE@ -e 's|@''HAVE_ERROR_AT_LINE''@|$(HAVE_ERROR_AT_LINE)|g' \ @GL_GENERATE_ERROR_H_TRUE@ -e 's|@''REPLACE_ERROR''@|$(REPLACE_ERROR)|g' \ @GL_GENERATE_ERROR_H_TRUE@ -e 's|@''REPLACE_ERROR_AT_LINE''@|$(REPLACE_ERROR_AT_LINE)|g' \ @GL_GENERATE_ERROR_H_TRUE@ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ @GL_GENERATE_ERROR_H_TRUE@ $(srcdir)/error.in.h > $@-t @GL_GENERATE_ERROR_H_TRUE@ $(AM_V_at)mv $@-t $@ @GL_GENERATE_ERROR_H_FALSE@error.h: $(top_builddir)/config.status @GL_GENERATE_ERROR_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. fcntl.h: fcntl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \ -e 's/@''GNULIB_CREAT''@/$(GL_GNULIB_CREAT)/g' \ -e 's/@''GNULIB_FCNTL''@/$(GL_GNULIB_FCNTL)/g' \ -e 's/@''GNULIB_NONBLOCKING''@/$(GL_GNULIB_NONBLOCKING)/g' \ -e 's/@''GNULIB_OPEN''@/$(GL_GNULIB_OPEN)/g' \ -e 's/@''GNULIB_OPENAT''@/$(GL_GNULIB_OPENAT)/g' \ -e 's/@''GNULIB_MDA_CREAT''@/$(GL_GNULIB_MDA_CREAT)/g' \ -e 's/@''GNULIB_MDA_OPEN''@/$(GL_GNULIB_MDA_OPEN)/g' \ -e 's|@''HAVE_FCNTL''@|$(HAVE_FCNTL)|g' \ -e 's|@''HAVE_OPENAT''@|$(HAVE_OPENAT)|g' \ -e 's|@''REPLACE_CREAT''@|$(REPLACE_CREAT)|g' \ -e 's|@''REPLACE_FCNTL''@|$(REPLACE_FCNTL)|g' \ -e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \ -e 's|@''REPLACE_OPENAT''@|$(REPLACE_OPENAT)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/fcntl.in.h > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_FLOAT_H_TRUE@float.h: float.in.h $(top_builddir)/config.status @GL_GENERATE_FLOAT_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ @GL_GENERATE_FLOAT_H_TRUE@ -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_FLOAT_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_FLOAT_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_FLOAT_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_FLOAT_H_TRUE@ -e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \ @GL_GENERATE_FLOAT_H_TRUE@ -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \ @GL_GENERATE_FLOAT_H_TRUE@ $(srcdir)/float.in.h > $@-t @GL_GENERATE_FLOAT_H_TRUE@ $(AM_V_at)mv $@-t $@ @GL_GENERATE_FLOAT_H_FALSE@float.h: $(top_builddir)/config.status @GL_GENERATE_FLOAT_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_GETOPT_H_TRUE@getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H) @GL_GENERATE_GETOPT_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ @GL_GENERATE_GETOPT_H_TRUE@ -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_GETOPT_H_TRUE@ -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \ @GL_GENERATE_GETOPT_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_GETOPT_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_GETOPT_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_GETOPT_H_TRUE@ -e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \ @GL_GENERATE_GETOPT_H_TRUE@ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ @GL_GENERATE_GETOPT_H_TRUE@ $(srcdir)/getopt.in.h > $@-t @GL_GENERATE_GETOPT_H_TRUE@ $(AM_V_at)mv $@-t $@ @GL_GENERATE_GETOPT_H_FALSE@getopt.h: $(top_builddir)/config.status @GL_GENERATE_GETOPT_H_FALSE@ rm -f $@ @GL_GENERATE_GETOPT_CDEFS_H_TRUE@getopt-cdefs.h: getopt-cdefs.in.h $(top_builddir)/config.status @GL_GENERATE_GETOPT_CDEFS_H_TRUE@ $(AM_V_GEN)$(SED_HEADER_STDOUT) \ @GL_GENERATE_GETOPT_CDEFS_H_TRUE@ -e 's|@''HAVE_SYS_CDEFS_H''@|$(HAVE_SYS_CDEFS_H)|g' \ @GL_GENERATE_GETOPT_CDEFS_H_TRUE@ $(srcdir)/getopt-cdefs.in.h > $@-t @GL_GENERATE_GETOPT_CDEFS_H_TRUE@ $(AM_V_at)mv $@-t $@ @GL_GENERATE_GETOPT_CDEFS_H_FALSE@getopt-cdefs.h: $(top_builddir)/config.status @GL_GENERATE_GETOPT_CDEFS_H_FALSE@ rm -f $@ malloc/scratch_buffer.gl.h: malloc/scratch_buffer.h $(AM_V_GEN)$(MKDIR_P) 'malloc' $(AM_V_at)$(SED_HEADER_STDOUT) \ -e 's|__always_inline|inline _GL_ATTRIBUTE_ALWAYS_INLINE|g' \ -e 's|__glibc_likely|_GL_LIKELY|g' \ -e 's|__glibc_unlikely|_GL_UNLIKELY|g' \ -e '/libc_hidden_proto/d' \ $(srcdir)/malloc/scratch_buffer.h > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. inttypes.h: inttypes.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_INTTYPES_H''@|$(NEXT_INTTYPES_H)|g' \ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ -e 's/@''PRIPTR_PREFIX''@/$(PRIPTR_PREFIX)/g' \ -e 's/@''GNULIB_IMAXABS''@/$(GL_GNULIB_IMAXABS)/g' \ -e 's/@''GNULIB_IMAXDIV''@/$(GL_GNULIB_IMAXDIV)/g' \ -e 's/@''GNULIB_STRTOIMAX''@/$(GL_GNULIB_STRTOIMAX)/g' \ -e 's/@''GNULIB_STRTOUMAX''@/$(GL_GNULIB_STRTOUMAX)/g' \ -e 's/@''HAVE_DECL_IMAXABS''@/$(HAVE_DECL_IMAXABS)/g' \ -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \ -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \ -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \ -e 's/@''HAVE_IMAXDIV_T''@/$(HAVE_IMAXDIV_T)/g' \ -e 's/@''REPLACE_IMAXABS''@/$(REPLACE_IMAXABS)/g' \ -e 's/@''REPLACE_IMAXDIV''@/$(REPLACE_IMAXDIV)/g' \ -e 's/@''REPLACE_STRTOIMAX''@/$(REPLACE_STRTOIMAX)/g' \ -e 's/@''REPLACE_STRTOUMAX''@/$(REPLACE_STRTOUMAX)/g' \ -e 's/@''INT32_MAX_LT_INTMAX_MAX''@/$(INT32_MAX_LT_INTMAX_MAX)/g' \ -e 's/@''INT64_MAX_EQ_LONG_MAX''@/$(INT64_MAX_EQ_LONG_MAX)/g' \ -e 's/@''UINT32_MAX_LT_UINTMAX_MAX''@/$(UINT32_MAX_LT_UINTMAX_MAX)/g' \ -e 's/@''UINT64_MAX_EQ_ULONG_MAX''@/$(UINT64_MAX_EQ_ULONG_MAX)/g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/inttypes.in.h > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # doesn't have one that is compatible with GNU. @GL_GENERATE_LIMITS_H_TRUE@limits.h: limits.in.h $(top_builddir)/config.status @GL_GENERATE_LIMITS_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ @GL_GENERATE_LIMITS_H_TRUE@ -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_LIMITS_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_LIMITS_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_LIMITS_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_LIMITS_H_TRUE@ -e 's|@''NEXT_LIMITS_H''@|$(NEXT_LIMITS_H)|g' \ @GL_GENERATE_LIMITS_H_TRUE@ $(srcdir)/limits.in.h > $@-t @GL_GENERATE_LIMITS_H_TRUE@ $(AM_V_at)mv $@-t $@ @GL_GENERATE_LIMITS_H_FALSE@limits.h: $(top_builddir)/config.status @GL_GENERATE_LIMITS_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that provides all definitions. locale.h: locale.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_LOCALE_H''@|$(NEXT_LOCALE_H)|g' \ -e 's/@''GNULIB_LOCALECONV''@/$(GL_GNULIB_LOCALECONV)/g' \ -e 's/@''GNULIB_SETLOCALE''@/$(GL_GNULIB_SETLOCALE)/g' \ -e 's/@''GNULIB_SETLOCALE_NULL''@/$(GL_GNULIB_SETLOCALE_NULL)/g' \ -e 's/@''GNULIB_DUPLOCALE''@/$(GL_GNULIB_DUPLOCALE)/g' \ -e 's/@''GNULIB_LOCALENAME''@/$(GL_GNULIB_LOCALENAME)/g' \ -e 's|@''HAVE_NEWLOCALE''@|$(HAVE_NEWLOCALE)|g' \ -e 's|@''HAVE_DUPLOCALE''@|$(HAVE_DUPLOCALE)|g' \ -e 's|@''HAVE_FREELOCALE''@|$(HAVE_FREELOCALE)|g' \ -e 's|@''HAVE_XLOCALE_H''@|$(HAVE_XLOCALE_H)|g' \ -e 's|@''REPLACE_LOCALECONV''@|$(REPLACE_LOCALECONV)|g' \ -e 's|@''REPLACE_SETLOCALE''@|$(REPLACE_SETLOCALE)|g' \ -e 's|@''REPLACE_NEWLOCALE''@|$(REPLACE_NEWLOCALE)|g' \ -e 's|@''REPLACE_DUPLOCALE''@|$(REPLACE_DUPLOCALE)|g' \ -e 's|@''REPLACE_FREELOCALE''@|$(REPLACE_FREELOCALE)|g' \ -e 's|@''REPLACE_STRUCT_LCONV''@|$(REPLACE_STRUCT_LCONV)|g' \ -e 's|@''LOCALENAME_ENHANCE_LOCALE_FUNCS''@|$(LOCALENAME_ENHANCE_LOCALE_FUNCS)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/locale.in.h > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. math.h: math.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT_AS_FIRST_DIRECTIVE''@|$(INCLUDE_NEXT_AS_FIRST_DIRECTIVE)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_AS_FIRST_DIRECTIVE_MATH_H''@|$(NEXT_AS_FIRST_DIRECTIVE_MATH_H)|g' \ -e 's/@''GNULIB_ACOSF''@/$(GL_GNULIB_ACOSF)/g' \ -e 's/@''GNULIB_ACOSL''@/$(GL_GNULIB_ACOSL)/g' \ -e 's/@''GNULIB_ASINF''@/$(GL_GNULIB_ASINF)/g' \ -e 's/@''GNULIB_ASINL''@/$(GL_GNULIB_ASINL)/g' \ -e 's/@''GNULIB_ATANF''@/$(GL_GNULIB_ATANF)/g' \ -e 's/@''GNULIB_ATANL''@/$(GL_GNULIB_ATANL)/g' \ -e 's/@''GNULIB_ATAN2F''@/$(GL_GNULIB_ATAN2F)/g' \ -e 's/@''GNULIB_CBRT''@/$(GL_GNULIB_CBRT)/g' \ -e 's/@''GNULIB_CBRTF''@/$(GL_GNULIB_CBRTF)/g' \ -e 's/@''GNULIB_CBRTL''@/$(GL_GNULIB_CBRTL)/g' \ -e 's/@''GNULIB_CEIL''@/$(GL_GNULIB_CEIL)/g' \ -e 's/@''GNULIB_CEILF''@/$(GL_GNULIB_CEILF)/g' \ -e 's/@''GNULIB_CEILL''@/$(GL_GNULIB_CEILL)/g' \ -e 's/@''GNULIB_COPYSIGN''@/$(GL_GNULIB_COPYSIGN)/g' \ -e 's/@''GNULIB_COPYSIGNF''@/$(GL_GNULIB_COPYSIGNF)/g' \ -e 's/@''GNULIB_COPYSIGNL''@/$(GL_GNULIB_COPYSIGNL)/g' \ -e 's/@''GNULIB_COSF''@/$(GL_GNULIB_COSF)/g' \ -e 's/@''GNULIB_COSL''@/$(GL_GNULIB_COSL)/g' \ -e 's/@''GNULIB_COSHF''@/$(GL_GNULIB_COSHF)/g' \ -e 's/@''GNULIB_EXPF''@/$(GL_GNULIB_EXPF)/g' \ -e 's/@''GNULIB_EXPL''@/$(GL_GNULIB_EXPL)/g' \ -e 's/@''GNULIB_EXP2''@/$(GL_GNULIB_EXP2)/g' \ -e 's/@''GNULIB_EXP2F''@/$(GL_GNULIB_EXP2F)/g' \ -e 's/@''GNULIB_EXP2L''@/$(GL_GNULIB_EXP2L)/g' \ -e 's/@''GNULIB_EXPM1''@/$(GL_GNULIB_EXPM1)/g' \ -e 's/@''GNULIB_EXPM1F''@/$(GL_GNULIB_EXPM1F)/g' \ -e 's/@''GNULIB_EXPM1L''@/$(GL_GNULIB_EXPM1L)/g' \ -e 's/@''GNULIB_FABSF''@/$(GL_GNULIB_FABSF)/g' \ -e 's/@''GNULIB_FABSL''@/$(GL_GNULIB_FABSL)/g' \ -e 's/@''GNULIB_FLOOR''@/$(GL_GNULIB_FLOOR)/g' \ -e 's/@''GNULIB_FLOORF''@/$(GL_GNULIB_FLOORF)/g' \ -e 's/@''GNULIB_FLOORL''@/$(GL_GNULIB_FLOORL)/g' \ -e 's/@''GNULIB_FMA''@/$(GL_GNULIB_FMA)/g' \ -e 's/@''GNULIB_FMAF''@/$(GL_GNULIB_FMAF)/g' \ -e 's/@''GNULIB_FMAL''@/$(GL_GNULIB_FMAL)/g' \ -e 's/@''GNULIB_FMOD''@/$(GL_GNULIB_FMOD)/g' \ -e 's/@''GNULIB_FMODF''@/$(GL_GNULIB_FMODF)/g' \ -e 's/@''GNULIB_FMODL''@/$(GL_GNULIB_FMODL)/g' \ -e 's/@''GNULIB_FREXPF''@/$(GL_GNULIB_FREXPF)/g' \ -e 's/@''GNULIB_FREXP''@/$(GL_GNULIB_FREXP)/g' \ -e 's/@''GNULIB_FREXPL''@/$(GL_GNULIB_FREXPL)/g' \ -e 's/@''GNULIB_HYPOT''@/$(GL_GNULIB_HYPOT)/g' \ -e 's/@''GNULIB_HYPOTF''@/$(GL_GNULIB_HYPOTF)/g' \ -e 's/@''GNULIB_HYPOTL''@/$(GL_GNULIB_HYPOTL)/g' \ < $(srcdir)/math.in.h | \ sed -e 's/@''GNULIB_ILOGB''@/$(GL_GNULIB_ILOGB)/g' \ -e 's/@''GNULIB_ILOGBF''@/$(GL_GNULIB_ILOGBF)/g' \ -e 's/@''GNULIB_ILOGBL''@/$(GL_GNULIB_ILOGBL)/g' \ -e 's/@''GNULIB_ISFINITE''@/$(GL_GNULIB_ISFINITE)/g' \ -e 's/@''GNULIB_ISINF''@/$(GL_GNULIB_ISINF)/g' \ -e 's/@''GNULIB_ISNAN''@/$(GL_GNULIB_ISNAN)/g' \ -e 's/@''GNULIB_ISNANF''@/$(GL_GNULIB_ISNANF)/g' \ -e 's/@''GNULIB_ISNAND''@/$(GL_GNULIB_ISNAND)/g' \ -e 's/@''GNULIB_ISNANL''@/$(GL_GNULIB_ISNANL)/g' \ -e 's/@''GNULIB_LDEXPF''@/$(GL_GNULIB_LDEXPF)/g' \ -e 's/@''GNULIB_LDEXPL''@/$(GL_GNULIB_LDEXPL)/g' \ -e 's/@''GNULIB_LOG''@/$(GL_GNULIB_LOG)/g' \ -e 's/@''GNULIB_LOGF''@/$(GL_GNULIB_LOGF)/g' \ -e 's/@''GNULIB_LOGL''@/$(GL_GNULIB_LOGL)/g' \ -e 's/@''GNULIB_LOG10''@/$(GL_GNULIB_LOG10)/g' \ -e 's/@''GNULIB_LOG10F''@/$(GL_GNULIB_LOG10F)/g' \ -e 's/@''GNULIB_LOG10L''@/$(GL_GNULIB_LOG10L)/g' \ -e 's/@''GNULIB_LOG1P''@/$(GL_GNULIB_LOG1P)/g' \ -e 's/@''GNULIB_LOG1PF''@/$(GL_GNULIB_LOG1PF)/g' \ -e 's/@''GNULIB_LOG1PL''@/$(GL_GNULIB_LOG1PL)/g' \ -e 's/@''GNULIB_LOG2''@/$(GL_GNULIB_LOG2)/g' \ -e 's/@''GNULIB_LOG2F''@/$(GL_GNULIB_LOG2F)/g' \ -e 's/@''GNULIB_LOG2L''@/$(GL_GNULIB_LOG2L)/g' \ -e 's/@''GNULIB_LOGB''@/$(GL_GNULIB_LOGB)/g' \ -e 's/@''GNULIB_LOGBF''@/$(GL_GNULIB_LOGBF)/g' \ -e 's/@''GNULIB_LOGBL''@/$(GL_GNULIB_LOGBL)/g' \ -e 's/@''GNULIB_MODF''@/$(GL_GNULIB_MODF)/g' \ -e 's/@''GNULIB_MODFF''@/$(GL_GNULIB_MODFF)/g' \ -e 's/@''GNULIB_MODFL''@/$(GL_GNULIB_MODFL)/g' \ -e 's/@''GNULIB_POWF''@/$(GL_GNULIB_POWF)/g' \ -e 's/@''GNULIB_REMAINDER''@/$(GL_GNULIB_REMAINDER)/g' \ -e 's/@''GNULIB_REMAINDERF''@/$(GL_GNULIB_REMAINDERF)/g' \ -e 's/@''GNULIB_REMAINDERL''@/$(GL_GNULIB_REMAINDERL)/g' \ -e 's/@''GNULIB_RINT''@/$(GL_GNULIB_RINT)/g' \ -e 's/@''GNULIB_RINTF''@/$(GL_GNULIB_RINTF)/g' \ -e 's/@''GNULIB_RINTL''@/$(GL_GNULIB_RINTL)/g' \ -e 's/@''GNULIB_ROUND''@/$(GL_GNULIB_ROUND)/g' \ -e 's/@''GNULIB_ROUNDF''@/$(GL_GNULIB_ROUNDF)/g' \ -e 's/@''GNULIB_ROUNDL''@/$(GL_GNULIB_ROUNDL)/g' \ -e 's/@''GNULIB_SIGNBIT''@/$(GL_GNULIB_SIGNBIT)/g' \ -e 's/@''GNULIB_SINF''@/$(GL_GNULIB_SINF)/g' \ -e 's/@''GNULIB_SINL''@/$(GL_GNULIB_SINL)/g' \ -e 's/@''GNULIB_SINHF''@/$(GL_GNULIB_SINHF)/g' \ -e 's/@''GNULIB_SQRTF''@/$(GL_GNULIB_SQRTF)/g' \ -e 's/@''GNULIB_SQRTL''@/$(GL_GNULIB_SQRTL)/g' \ -e 's/@''GNULIB_TANF''@/$(GL_GNULIB_TANF)/g' \ -e 's/@''GNULIB_TANL''@/$(GL_GNULIB_TANL)/g' \ -e 's/@''GNULIB_TANHF''@/$(GL_GNULIB_TANHF)/g' \ -e 's/@''GNULIB_TRUNC''@/$(GL_GNULIB_TRUNC)/g' \ -e 's/@''GNULIB_TRUNCF''@/$(GL_GNULIB_TRUNCF)/g' \ -e 's/@''GNULIB_TRUNCL''@/$(GL_GNULIB_TRUNCL)/g' \ -e 's/@''GNULIB_MDA_J0''@/$(GL_GNULIB_MDA_J0)/g' \ -e 's/@''GNULIB_MDA_J1''@/$(GL_GNULIB_MDA_J1)/g' \ -e 's/@''GNULIB_MDA_JN''@/$(GL_GNULIB_MDA_JN)/g' \ -e 's/@''GNULIB_MDA_Y0''@/$(GL_GNULIB_MDA_Y0)/g' \ -e 's/@''GNULIB_MDA_Y1''@/$(GL_GNULIB_MDA_Y1)/g' \ -e 's/@''GNULIB_MDA_YN''@/$(GL_GNULIB_MDA_YN)/g' \ | \ sed -e 's|@''HAVE_ACOSF''@|$(HAVE_ACOSF)|g' \ -e 's|@''HAVE_ACOSL''@|$(HAVE_ACOSL)|g' \ -e 's|@''HAVE_ASINF''@|$(HAVE_ASINF)|g' \ -e 's|@''HAVE_ASINL''@|$(HAVE_ASINL)|g' \ -e 's|@''HAVE_ATANF''@|$(HAVE_ATANF)|g' \ -e 's|@''HAVE_ATANL''@|$(HAVE_ATANL)|g' \ -e 's|@''HAVE_ATAN2F''@|$(HAVE_ATAN2F)|g' \ -e 's|@''HAVE_CBRT''@|$(HAVE_CBRT)|g' \ -e 's|@''HAVE_CBRTF''@|$(HAVE_CBRTF)|g' \ -e 's|@''HAVE_CBRTL''@|$(HAVE_CBRTL)|g' \ -e 's|@''HAVE_COPYSIGN''@|$(HAVE_COPYSIGN)|g' \ -e 's|@''HAVE_COPYSIGNL''@|$(HAVE_COPYSIGNL)|g' \ -e 's|@''HAVE_COSF''@|$(HAVE_COSF)|g' \ -e 's|@''HAVE_COSL''@|$(HAVE_COSL)|g' \ -e 's|@''HAVE_COSHF''@|$(HAVE_COSHF)|g' \ -e 's|@''HAVE_EXPF''@|$(HAVE_EXPF)|g' \ -e 's|@''HAVE_EXPL''@|$(HAVE_EXPL)|g' \ -e 's|@''HAVE_EXPM1''@|$(HAVE_EXPM1)|g' \ -e 's|@''HAVE_EXPM1F''@|$(HAVE_EXPM1F)|g' \ -e 's|@''HAVE_FABSF''@|$(HAVE_FABSF)|g' \ -e 's|@''HAVE_FABSL''@|$(HAVE_FABSL)|g' \ -e 's|@''HAVE_FMA''@|$(HAVE_FMA)|g' \ -e 's|@''HAVE_FMAF''@|$(HAVE_FMAF)|g' \ -e 's|@''HAVE_FMAL''@|$(HAVE_FMAL)|g' \ -e 's|@''HAVE_FMODF''@|$(HAVE_FMODF)|g' \ -e 's|@''HAVE_FMODL''@|$(HAVE_FMODL)|g' \ -e 's|@''HAVE_FREXPF''@|$(HAVE_FREXPF)|g' \ -e 's|@''HAVE_HYPOTF''@|$(HAVE_HYPOTF)|g' \ -e 's|@''HAVE_HYPOTL''@|$(HAVE_HYPOTL)|g' \ -e 's|@''HAVE_ILOGB''@|$(HAVE_ILOGB)|g' \ -e 's|@''HAVE_ILOGBF''@|$(HAVE_ILOGBF)|g' \ -e 's|@''HAVE_ILOGBL''@|$(HAVE_ILOGBL)|g' \ -e 's|@''HAVE_ISNANF''@|$(HAVE_ISNANF)|g' \ -e 's|@''HAVE_ISNAND''@|$(HAVE_ISNAND)|g' \ -e 's|@''HAVE_ISNANL''@|$(HAVE_ISNANL)|g' \ -e 's|@''HAVE_LDEXPF''@|$(HAVE_LDEXPF)|g' \ -e 's|@''HAVE_LOGF''@|$(HAVE_LOGF)|g' \ -e 's|@''HAVE_LOGL''@|$(HAVE_LOGL)|g' \ -e 's|@''HAVE_LOG10F''@|$(HAVE_LOG10F)|g' \ -e 's|@''HAVE_LOG10L''@|$(HAVE_LOG10L)|g' \ -e 's|@''HAVE_LOG1P''@|$(HAVE_LOG1P)|g' \ -e 's|@''HAVE_LOG1PF''@|$(HAVE_LOG1PF)|g' \ -e 's|@''HAVE_LOG1PL''@|$(HAVE_LOG1PL)|g' \ -e 's|@''HAVE_LOGBF''@|$(HAVE_LOGBF)|g' \ -e 's|@''HAVE_LOGBL''@|$(HAVE_LOGBL)|g' \ -e 's|@''HAVE_MODFF''@|$(HAVE_MODFF)|g' \ -e 's|@''HAVE_MODFL''@|$(HAVE_MODFL)|g' \ -e 's|@''HAVE_POWF''@|$(HAVE_POWF)|g' \ -e 's|@''HAVE_REMAINDER''@|$(HAVE_REMAINDER)|g' \ -e 's|@''HAVE_REMAINDERF''@|$(HAVE_REMAINDERF)|g' \ -e 's|@''HAVE_RINT''@|$(HAVE_RINT)|g' \ -e 's|@''HAVE_RINTL''@|$(HAVE_RINTL)|g' \ -e 's|@''HAVE_SINF''@|$(HAVE_SINF)|g' \ -e 's|@''HAVE_SINL''@|$(HAVE_SINL)|g' \ -e 's|@''HAVE_SINHF''@|$(HAVE_SINHF)|g' \ -e 's|@''HAVE_SQRTF''@|$(HAVE_SQRTF)|g' \ -e 's|@''HAVE_SQRTL''@|$(HAVE_SQRTL)|g' \ -e 's|@''HAVE_TANF''@|$(HAVE_TANF)|g' \ -e 's|@''HAVE_TANL''@|$(HAVE_TANL)|g' \ -e 's|@''HAVE_TANHF''@|$(HAVE_TANHF)|g' \ -e 's|@''HAVE_DECL_ACOSL''@|$(HAVE_DECL_ACOSL)|g' \ -e 's|@''HAVE_DECL_ASINL''@|$(HAVE_DECL_ASINL)|g' \ -e 's|@''HAVE_DECL_ATANL''@|$(HAVE_DECL_ATANL)|g' \ -e 's|@''HAVE_DECL_CBRTF''@|$(HAVE_DECL_CBRTF)|g' \ -e 's|@''HAVE_DECL_CBRTL''@|$(HAVE_DECL_CBRTL)|g' \ -e 's|@''HAVE_DECL_CEILF''@|$(HAVE_DECL_CEILF)|g' \ -e 's|@''HAVE_DECL_CEILL''@|$(HAVE_DECL_CEILL)|g' \ -e 's|@''HAVE_DECL_COPYSIGNF''@|$(HAVE_DECL_COPYSIGNF)|g' \ -e 's|@''HAVE_DECL_COSL''@|$(HAVE_DECL_COSL)|g' \ -e 's|@''HAVE_DECL_EXPL''@|$(HAVE_DECL_EXPL)|g' \ -e 's|@''HAVE_DECL_EXP2''@|$(HAVE_DECL_EXP2)|g' \ -e 's|@''HAVE_DECL_EXP2F''@|$(HAVE_DECL_EXP2F)|g' \ -e 's|@''HAVE_DECL_EXP2L''@|$(HAVE_DECL_EXP2L)|g' \ -e 's|@''HAVE_DECL_EXPM1L''@|$(HAVE_DECL_EXPM1L)|g' \ -e 's|@''HAVE_DECL_FLOORF''@|$(HAVE_DECL_FLOORF)|g' \ -e 's|@''HAVE_DECL_FLOORL''@|$(HAVE_DECL_FLOORL)|g' \ -e 's|@''HAVE_DECL_FREXPL''@|$(HAVE_DECL_FREXPL)|g' \ -e 's|@''HAVE_DECL_LDEXPL''@|$(HAVE_DECL_LDEXPL)|g' \ -e 's|@''HAVE_DECL_LOGL''@|$(HAVE_DECL_LOGL)|g' \ -e 's|@''HAVE_DECL_LOG10L''@|$(HAVE_DECL_LOG10L)|g' \ -e 's|@''HAVE_DECL_LOG2''@|$(HAVE_DECL_LOG2)|g' \ -e 's|@''HAVE_DECL_LOG2F''@|$(HAVE_DECL_LOG2F)|g' \ -e 's|@''HAVE_DECL_LOG2L''@|$(HAVE_DECL_LOG2L)|g' \ -e 's|@''HAVE_DECL_LOGB''@|$(HAVE_DECL_LOGB)|g' \ -e 's|@''HAVE_DECL_REMAINDER''@|$(HAVE_DECL_REMAINDER)|g' \ -e 's|@''HAVE_DECL_REMAINDERL''@|$(HAVE_DECL_REMAINDERL)|g' \ -e 's|@''HAVE_DECL_RINTF''@|$(HAVE_DECL_RINTF)|g' \ -e 's|@''HAVE_DECL_ROUND''@|$(HAVE_DECL_ROUND)|g' \ -e 's|@''HAVE_DECL_ROUNDF''@|$(HAVE_DECL_ROUNDF)|g' \ -e 's|@''HAVE_DECL_ROUNDL''@|$(HAVE_DECL_ROUNDL)|g' \ -e 's|@''HAVE_DECL_SINL''@|$(HAVE_DECL_SINL)|g' \ -e 's|@''HAVE_DECL_SQRTL''@|$(HAVE_DECL_SQRTL)|g' \ -e 's|@''HAVE_DECL_TANL''@|$(HAVE_DECL_TANL)|g' \ -e 's|@''HAVE_DECL_TRUNC''@|$(HAVE_DECL_TRUNC)|g' \ -e 's|@''HAVE_DECL_TRUNCF''@|$(HAVE_DECL_TRUNCF)|g' \ -e 's|@''HAVE_DECL_TRUNCL''@|$(HAVE_DECL_TRUNCL)|g' \ | \ sed -e 's|@''REPLACE_ACOSF''@|$(REPLACE_ACOSF)|g' \ -e 's|@''REPLACE_ASINF''@|$(REPLACE_ASINF)|g' \ -e 's|@''REPLACE_ATANF''@|$(REPLACE_ATANF)|g' \ -e 's|@''REPLACE_ATAN2F''@|$(REPLACE_ATAN2F)|g' \ -e 's|@''REPLACE_CBRTF''@|$(REPLACE_CBRTF)|g' \ -e 's|@''REPLACE_CBRTL''@|$(REPLACE_CBRTL)|g' \ -e 's|@''REPLACE_CEIL''@|$(REPLACE_CEIL)|g' \ -e 's|@''REPLACE_CEILF''@|$(REPLACE_CEILF)|g' \ -e 's|@''REPLACE_CEILL''@|$(REPLACE_CEILL)|g' \ -e 's|@''REPLACE_COSF''@|$(REPLACE_COSF)|g' \ -e 's|@''REPLACE_COSHF''@|$(REPLACE_COSHF)|g' \ -e 's|@''REPLACE_EXPF''@|$(REPLACE_EXPF)|g' \ -e 's|@''REPLACE_EXPL''@|$(REPLACE_EXPL)|g' \ -e 's|@''REPLACE_EXPM1''@|$(REPLACE_EXPM1)|g' \ -e 's|@''REPLACE_EXPM1F''@|$(REPLACE_EXPM1F)|g' \ -e 's|@''REPLACE_EXPM1L''@|$(REPLACE_EXPM1L)|g' \ -e 's|@''REPLACE_EXP2''@|$(REPLACE_EXP2)|g' \ -e 's|@''REPLACE_EXP2L''@|$(REPLACE_EXP2L)|g' \ -e 's|@''REPLACE_FABSL''@|$(REPLACE_FABSL)|g' \ -e 's|@''REPLACE_FLOOR''@|$(REPLACE_FLOOR)|g' \ -e 's|@''REPLACE_FLOORF''@|$(REPLACE_FLOORF)|g' \ -e 's|@''REPLACE_FLOORL''@|$(REPLACE_FLOORL)|g' \ -e 's|@''REPLACE_FMA''@|$(REPLACE_FMA)|g' \ -e 's|@''REPLACE_FMAF''@|$(REPLACE_FMAF)|g' \ -e 's|@''REPLACE_FMAL''@|$(REPLACE_FMAL)|g' \ -e 's|@''REPLACE_FMOD''@|$(REPLACE_FMOD)|g' \ -e 's|@''REPLACE_FMODF''@|$(REPLACE_FMODF)|g' \ -e 's|@''REPLACE_FMODL''@|$(REPLACE_FMODL)|g' \ -e 's|@''REPLACE_FREXPF''@|$(REPLACE_FREXPF)|g' \ -e 's|@''REPLACE_FREXP''@|$(REPLACE_FREXP)|g' \ -e 's|@''REPLACE_FREXPL''@|$(REPLACE_FREXPL)|g' \ -e 's|@''REPLACE_HUGE_VAL''@|$(REPLACE_HUGE_VAL)|g' \ -e 's|@''REPLACE_HYPOT''@|$(REPLACE_HYPOT)|g' \ -e 's|@''REPLACE_HYPOTF''@|$(REPLACE_HYPOTF)|g' \ -e 's|@''REPLACE_HYPOTL''@|$(REPLACE_HYPOTL)|g' \ -e 's|@''REPLACE_ILOGB''@|$(REPLACE_ILOGB)|g' \ -e 's|@''REPLACE_ILOGBF''@|$(REPLACE_ILOGBF)|g' \ -e 's|@''REPLACE_ILOGBL''@|$(REPLACE_ILOGBL)|g' \ -e 's|@''REPLACE_ISFINITE''@|$(REPLACE_ISFINITE)|g' \ -e 's|@''REPLACE_ISINF''@|$(REPLACE_ISINF)|g' \ -e 's|@''REPLACE_ISNAN''@|$(REPLACE_ISNAN)|g' \ -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \ -e 's|@''REPLACE_LDEXPL''@|$(REPLACE_LDEXPL)|g' \ -e 's|@''REPLACE_LOG''@|$(REPLACE_LOG)|g' \ -e 's|@''REPLACE_LOGF''@|$(REPLACE_LOGF)|g' \ -e 's|@''REPLACE_LOGL''@|$(REPLACE_LOGL)|g' \ -e 's|@''REPLACE_LOG10''@|$(REPLACE_LOG10)|g' \ -e 's|@''REPLACE_LOG10F''@|$(REPLACE_LOG10F)|g' \ -e 's|@''REPLACE_LOG10L''@|$(REPLACE_LOG10L)|g' \ -e 's|@''REPLACE_LOG1P''@|$(REPLACE_LOG1P)|g' \ -e 's|@''REPLACE_LOG1PF''@|$(REPLACE_LOG1PF)|g' \ -e 's|@''REPLACE_LOG1PL''@|$(REPLACE_LOG1PL)|g' \ -e 's|@''REPLACE_LOG2''@|$(REPLACE_LOG2)|g' \ -e 's|@''REPLACE_LOG2F''@|$(REPLACE_LOG2F)|g' \ -e 's|@''REPLACE_LOG2L''@|$(REPLACE_LOG2L)|g' \ -e 's|@''REPLACE_LOGB''@|$(REPLACE_LOGB)|g' \ -e 's|@''REPLACE_LOGBF''@|$(REPLACE_LOGBF)|g' \ -e 's|@''REPLACE_LOGBL''@|$(REPLACE_LOGBL)|g' \ -e 's|@''REPLACE_MODF''@|$(REPLACE_MODF)|g' \ -e 's|@''REPLACE_MODFF''@|$(REPLACE_MODFF)|g' \ -e 's|@''REPLACE_MODFL''@|$(REPLACE_MODFL)|g' \ -e 's|@''REPLACE_NAN''@|$(REPLACE_NAN)|g' \ -e 's|@''REPLACE_REMAINDER''@|$(REPLACE_REMAINDER)|g' \ -e 's|@''REPLACE_REMAINDERF''@|$(REPLACE_REMAINDERF)|g' \ -e 's|@''REPLACE_REMAINDERL''@|$(REPLACE_REMAINDERL)|g' \ -e 's|@''REPLACE_RINTL''@|$(REPLACE_RINTL)|g' \ -e 's|@''REPLACE_ROUND''@|$(REPLACE_ROUND)|g' \ -e 's|@''REPLACE_ROUNDF''@|$(REPLACE_ROUNDF)|g' \ -e 's|@''REPLACE_ROUNDL''@|$(REPLACE_ROUNDL)|g' \ -e 's|@''REPLACE_SIGNBIT''@|$(REPLACE_SIGNBIT)|g' \ -e 's|@''REPLACE_SIGNBIT_USING_BUILTINS''@|$(REPLACE_SIGNBIT_USING_BUILTINS)|g' \ -e 's|@''REPLACE_SINF''@|$(REPLACE_SINF)|g' \ -e 's|@''REPLACE_SINHF''@|$(REPLACE_SINHF)|g' \ -e 's|@''REPLACE_SQRTF''@|$(REPLACE_SQRTF)|g' \ -e 's|@''REPLACE_SQRTL''@|$(REPLACE_SQRTL)|g' \ -e 's|@''REPLACE_TANF''@|$(REPLACE_TANF)|g' \ -e 's|@''REPLACE_TANHF''@|$(REPLACE_TANHF)|g' \ -e 's|@''REPLACE_TRUNC''@|$(REPLACE_TRUNC)|g' \ -e 's|@''REPLACE_TRUNCF''@|$(REPLACE_TRUNCF)|g' \ -e 's|@''REPLACE_TRUNCL''@|$(REPLACE_TRUNCL)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # doesn't have a complete one. signal.h: signal.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SIGNAL_H''@|$(NEXT_SIGNAL_H)|g' \ -e 's/@''GNULIB_PTHREAD_SIGMASK''@/$(GL_GNULIB_PTHREAD_SIGMASK)/g' \ -e 's/@''GNULIB_RAISE''@/$(GL_GNULIB_RAISE)/g' \ -e 's/@''GNULIB_SIGNAL_H_SIGPIPE''@/$(GL_GNULIB_SIGNAL_H_SIGPIPE)/g' \ -e 's/@''GNULIB_SIGPROCMASK''@/$(GL_GNULIB_SIGPROCMASK)/g' \ -e 's/@''GNULIB_SIGACTION''@/$(GL_GNULIB_SIGACTION)/g' \ -e 's|@''HAVE_POSIX_SIGNALBLOCKING''@|$(HAVE_POSIX_SIGNALBLOCKING)|g' \ -e 's|@''HAVE_PTHREAD_SIGMASK''@|$(HAVE_PTHREAD_SIGMASK)|g' \ -e 's|@''HAVE_RAISE''@|$(HAVE_RAISE)|g' \ -e 's|@''HAVE_SIGSET_T''@|$(HAVE_SIGSET_T)|g' \ -e 's|@''HAVE_SIGINFO_T''@|$(HAVE_SIGINFO_T)|g' \ -e 's|@''HAVE_SIGACTION''@|$(HAVE_SIGACTION)|g' \ -e 's|@''HAVE_STRUCT_SIGACTION_SA_SIGACTION''@|$(HAVE_STRUCT_SIGACTION_SA_SIGACTION)|g' \ -e 's|@''HAVE_TYPE_VOLATILE_SIG_ATOMIC_T''@|$(HAVE_TYPE_VOLATILE_SIG_ATOMIC_T)|g' \ -e 's|@''HAVE_SIGHANDLER_T''@|$(HAVE_SIGHANDLER_T)|g' \ -e 's|@''REPLACE_PTHREAD_SIGMASK''@|$(REPLACE_PTHREAD_SIGMASK)|g' \ -e 's|@''REPLACE_RAISE''@|$(REPLACE_RAISE)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/signal.in.h > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDCKDINT_H_TRUE@stdckdint.h: stdckdint.in.h $(top_builddir)/config.status @GL_GENERATE_STDCKDINT_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ @GL_GENERATE_STDCKDINT_H_TRUE@ $(srcdir)/stdckdint.in.h > $@-t @GL_GENERATE_STDCKDINT_H_TRUE@ $(AM_V_at)mv $@-t $@ @GL_GENERATE_STDCKDINT_H_FALSE@stdckdint.h: $(top_builddir)/config.status @GL_GENERATE_STDCKDINT_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDDEF_H_TRUE@stddef.h: stddef.in.h $(top_builddir)/config.status @GL_GENERATE_STDDEF_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''HAVE_MAX_ALIGN_T''@|$(HAVE_MAX_ALIGN_T)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ $(srcdir)/stddef.in.h > $@-t @GL_GENERATE_STDDEF_H_TRUE@ $(AM_V_at)mv $@-t $@ @GL_GENERATE_STDDEF_H_FALSE@stddef.h: $(top_builddir)/config.status @GL_GENERATE_STDDEF_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDINT_H_TRUE@stdint.h: stdint.in.h $(top_builddir)/config.status @GL_GENERATE_STDINT_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_C99_STDINT_H''@/$(HAVE_C99_STDINT_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''GNULIBHEADERS_OVERRIDE_WINT_T''@/$(GNULIBHEADERS_OVERRIDE_WINT_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ $(srcdir)/stdint.in.h > $@-t @GL_GENERATE_STDINT_H_TRUE@ $(AM_V_at)mv $@-t $@ @GL_GENERATE_STDINT_H_FALSE@stdint.h: $(top_builddir)/config.status @GL_GENERATE_STDINT_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \ -e 's/@''GNULIB_DPRINTF''@/$(GL_GNULIB_DPRINTF)/g' \ -e 's/@''GNULIB_FCLOSE''@/$(GL_GNULIB_FCLOSE)/g' \ -e 's/@''GNULIB_FDOPEN''@/$(GL_GNULIB_FDOPEN)/g' \ -e 's/@''GNULIB_FFLUSH''@/$(GL_GNULIB_FFLUSH)/g' \ -e 's/@''GNULIB_FGETC''@/$(GL_GNULIB_FGETC)/g' \ -e 's/@''GNULIB_FGETS''@/$(GL_GNULIB_FGETS)/g' \ -e 's/@''GNULIB_FOPEN''@/$(GL_GNULIB_FOPEN)/g' \ -e 's/@''GNULIB_FOPEN_GNU''@/$(GL_GNULIB_FOPEN_GNU)/g' \ -e 's/@''GNULIB_FPRINTF''@/$(GL_GNULIB_FPRINTF)/g' \ -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GL_GNULIB_FPRINTF_POSIX)/g' \ -e 's/@''GNULIB_FPURGE''@/$(GL_GNULIB_FPURGE)/g' \ -e 's/@''GNULIB_FPUTC''@/$(GL_GNULIB_FPUTC)/g' \ -e 's/@''GNULIB_FPUTS''@/$(GL_GNULIB_FPUTS)/g' \ -e 's/@''GNULIB_FREAD''@/$(GL_GNULIB_FREAD)/g' \ -e 's/@''GNULIB_FREOPEN''@/$(GL_GNULIB_FREOPEN)/g' \ -e 's/@''GNULIB_FSCANF''@/$(GL_GNULIB_FSCANF)/g' \ -e 's/@''GNULIB_FSEEK''@/$(GL_GNULIB_FSEEK)/g' \ -e 's/@''GNULIB_FSEEKO''@/$(GL_GNULIB_FSEEKO)/g' \ -e 's/@''GNULIB_FTELL''@/$(GL_GNULIB_FTELL)/g' \ -e 's/@''GNULIB_FTELLO''@/$(GL_GNULIB_FTELLO)/g' \ -e 's/@''GNULIB_FWRITE''@/$(GL_GNULIB_FWRITE)/g' \ -e 's/@''GNULIB_GETC''@/$(GL_GNULIB_GETC)/g' \ -e 's/@''GNULIB_GETCHAR''@/$(GL_GNULIB_GETCHAR)/g' \ -e 's/@''GNULIB_GETDELIM''@/$(GL_GNULIB_GETDELIM)/g' \ -e 's/@''GNULIB_GETLINE''@/$(GL_GNULIB_GETLINE)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GL_GNULIB_OBSTACK_PRINTF)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GL_GNULIB_OBSTACK_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PCLOSE''@/$(GL_GNULIB_PCLOSE)/g' \ -e 's/@''GNULIB_PERROR''@/$(GL_GNULIB_PERROR)/g' \ -e 's/@''GNULIB_POPEN''@/$(GL_GNULIB_POPEN)/g' \ -e 's/@''GNULIB_PRINTF''@/$(GL_GNULIB_PRINTF)/g' \ -e 's/@''GNULIB_PRINTF_POSIX''@/$(GL_GNULIB_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PUTC''@/$(GL_GNULIB_PUTC)/g' \ -e 's/@''GNULIB_PUTCHAR''@/$(GL_GNULIB_PUTCHAR)/g' \ -e 's/@''GNULIB_PUTS''@/$(GL_GNULIB_PUTS)/g' \ -e 's/@''GNULIB_REMOVE''@/$(GL_GNULIB_REMOVE)/g' \ -e 's/@''GNULIB_RENAME''@/$(GL_GNULIB_RENAME)/g' \ -e 's/@''GNULIB_RENAMEAT''@/$(GL_GNULIB_RENAMEAT)/g' \ -e 's/@''GNULIB_SCANF''@/$(GL_GNULIB_SCANF)/g' \ -e 's/@''GNULIB_SNPRINTF''@/$(GL_GNULIB_SNPRINTF)/g' \ -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GL_GNULIB_SPRINTF_POSIX)/g' \ -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GL_GNULIB_STDIO_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GL_GNULIB_STDIO_H_SIGPIPE)/g' \ -e 's/@''GNULIB_TMPFILE''@/$(GL_GNULIB_TMPFILE)/g' \ -e 's/@''GNULIB_VASPRINTF''@/$(GL_GNULIB_VASPRINTF)/g' \ -e 's/@''GNULIB_VDPRINTF''@/$(GL_GNULIB_VDPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF''@/$(GL_GNULIB_VFPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GL_GNULIB_VFPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VFSCANF''@/$(GL_GNULIB_VFSCANF)/g' \ -e 's/@''GNULIB_VSCANF''@/$(GL_GNULIB_VSCANF)/g' \ -e 's/@''GNULIB_VPRINTF''@/$(GL_GNULIB_VPRINTF)/g' \ -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GL_GNULIB_VPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VSNPRINTF''@/$(GL_GNULIB_VSNPRINTF)/g' \ -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GL_GNULIB_VSPRINTF_POSIX)/g' \ -e 's/@''GNULIB_MDA_FCLOSEALL''@/$(GL_GNULIB_MDA_FCLOSEALL)/g' \ -e 's/@''GNULIB_MDA_FDOPEN''@/$(GL_GNULIB_MDA_FDOPEN)/g' \ -e 's/@''GNULIB_MDA_FILENO''@/$(GL_GNULIB_MDA_FILENO)/g' \ -e 's/@''GNULIB_MDA_GETW''@/$(GL_GNULIB_MDA_GETW)/g' \ -e 's/@''GNULIB_MDA_PUTW''@/$(GL_GNULIB_MDA_PUTW)/g' \ -e 's/@''GNULIB_MDA_TEMPNAM''@/$(GL_GNULIB_MDA_TEMPNAM)/g' \ < $(srcdir)/stdio.in.h | \ sed -e 's|@''HAVE_DECL_FCLOSEALL''@|$(HAVE_DECL_FCLOSEALL)|g' \ -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \ -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \ -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \ -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \ -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \ -e 's|@''HAVE_DECL_GETW''@|$(HAVE_DECL_GETW)|g' \ -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \ -e 's|@''HAVE_DECL_PUTW''@|$(HAVE_DECL_PUTW)|g' \ -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \ -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \ -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \ -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \ -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \ -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \ -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \ -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \ -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \ -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \ -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \ -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \ -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \ -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \ -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \ -e 's|@''REPLACE_FOPEN_FOR_FOPEN_GNU''@|$(REPLACE_FOPEN_FOR_FOPEN_GNU)|g' \ -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \ -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \ -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \ -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \ -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \ -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \ -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \ -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \ -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \ -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \ -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \ -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \ -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \ -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \ -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \ -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \ -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \ -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \ -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \ -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \ -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \ -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \ -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \ -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \ -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \ -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \ -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \ -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \ $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \ -e 's/@''GNULIB__EXIT''@/$(GL_GNULIB__EXIT)/g' \ -e 's/@''GNULIB_ALIGNED_ALLOC''@/$(GL_GNULIB_ALIGNED_ALLOC)/g' \ -e 's/@''GNULIB_ATOLL''@/$(GL_GNULIB_ATOLL)/g' \ -e 's/@''GNULIB_CALLOC_GNU''@/$(GL_GNULIB_CALLOC_GNU)/g' \ -e 's/@''GNULIB_CALLOC_POSIX''@/$(GL_GNULIB_CALLOC_POSIX)/g' \ -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GL_GNULIB_CANONICALIZE_FILE_NAME)/g' \ -e 's/@''GNULIB_FREE_POSIX''@/$(GL_GNULIB_FREE_POSIX)/g' \ -e 's/@''GNULIB_GETLOADAVG''@/$(GL_GNULIB_GETLOADAVG)/g' \ -e 's/@''GNULIB_GETPROGNAME''@/$(GL_GNULIB_GETPROGNAME)/g' \ -e 's/@''GNULIB_GETSUBOPT''@/$(GL_GNULIB_GETSUBOPT)/g' \ -e 's/@''GNULIB_GRANTPT''@/$(GL_GNULIB_GRANTPT)/g' \ -e 's/@''GNULIB_MALLOC_GNU''@/$(GL_GNULIB_MALLOC_GNU)/g' \ -e 's/@''GNULIB_MALLOC_POSIX''@/$(GL_GNULIB_MALLOC_POSIX)/g' \ -e 's/@''GNULIB_MBTOWC''@/$(GL_GNULIB_MBTOWC)/g' \ -e 's/@''GNULIB_MKDTEMP''@/$(GL_GNULIB_MKDTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMP''@/$(GL_GNULIB_MKOSTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMPS''@/$(GL_GNULIB_MKOSTEMPS)/g' \ -e 's/@''GNULIB_MKSTEMP''@/$(GL_GNULIB_MKSTEMP)/g' \ -e 's/@''GNULIB_MKSTEMPS''@/$(GL_GNULIB_MKSTEMPS)/g' \ -e 's/@''GNULIB_POSIX_MEMALIGN''@/$(GL_GNULIB_POSIX_MEMALIGN)/g' \ -e 's/@''GNULIB_POSIX_OPENPT''@/$(GL_GNULIB_POSIX_OPENPT)/g' \ -e 's/@''GNULIB_PTSNAME''@/$(GL_GNULIB_PTSNAME)/g' \ -e 's/@''GNULIB_PTSNAME_R''@/$(GL_GNULIB_PTSNAME_R)/g' \ -e 's/@''GNULIB_PUTENV''@/$(GL_GNULIB_PUTENV)/g' \ -e 's/@''GNULIB_QSORT_R''@/$(GL_GNULIB_QSORT_R)/g' \ -e 's/@''GNULIB_RANDOM''@/$(GL_GNULIB_RANDOM)/g' \ -e 's/@''GNULIB_RANDOM_R''@/$(GL_GNULIB_RANDOM_R)/g' \ -e 's/@''GNULIB_REALLOC_GNU''@/$(GL_GNULIB_REALLOC_GNU)/g' \ -e 's/@''GNULIB_REALLOC_POSIX''@/$(GL_GNULIB_REALLOC_POSIX)/g' \ -e 's/@''GNULIB_REALLOCARRAY''@/$(GL_GNULIB_REALLOCARRAY)/g' \ -e 's/@''GNULIB_REALPATH''@/$(GL_GNULIB_REALPATH)/g' \ -e 's/@''GNULIB_RPMATCH''@/$(GL_GNULIB_RPMATCH)/g' \ -e 's/@''GNULIB_SECURE_GETENV''@/$(GL_GNULIB_SECURE_GETENV)/g' \ -e 's/@''GNULIB_SETENV''@/$(GL_GNULIB_SETENV)/g' \ -e 's/@''GNULIB_STRTOD''@/$(GL_GNULIB_STRTOD)/g' \ -e 's/@''GNULIB_STRTOL''@/$(GL_GNULIB_STRTOL)/g' \ -e 's/@''GNULIB_STRTOLD''@/$(GL_GNULIB_STRTOLD)/g' \ -e 's/@''GNULIB_STRTOLL''@/$(GL_GNULIB_STRTOLL)/g' \ -e 's/@''GNULIB_STRTOUL''@/$(GL_GNULIB_STRTOUL)/g' \ -e 's/@''GNULIB_STRTOULL''@/$(GL_GNULIB_STRTOULL)/g' \ -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GL_GNULIB_SYSTEM_POSIX)/g' \ -e 's/@''GNULIB_UNLOCKPT''@/$(GL_GNULIB_UNLOCKPT)/g' \ -e 's/@''GNULIB_UNSETENV''@/$(GL_GNULIB_UNSETENV)/g' \ -e 's/@''GNULIB_WCTOMB''@/$(GL_GNULIB_WCTOMB)/g' \ -e 's/@''GNULIB_MDA_ECVT''@/$(GL_GNULIB_MDA_ECVT)/g' \ -e 's/@''GNULIB_MDA_FCVT''@/$(GL_GNULIB_MDA_FCVT)/g' \ -e 's/@''GNULIB_MDA_GCVT''@/$(GL_GNULIB_MDA_GCVT)/g' \ -e 's/@''GNULIB_MDA_MKTEMP''@/$(GL_GNULIB_MDA_MKTEMP)/g' \ -e 's/@''GNULIB_MDA_PUTENV''@/$(GL_GNULIB_MDA_PUTENV)/g' \ < $(srcdir)/stdlib.in.h | \ sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \ -e 's|@''HAVE_ALIGNED_ALLOC''@|$(HAVE_ALIGNED_ALLOC)|g' \ -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \ -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''HAVE_DECL_ECVT''@|$(HAVE_DECL_ECVT)|g' \ -e 's|@''HAVE_DECL_FCVT''@|$(HAVE_DECL_FCVT)|g' \ -e 's|@''HAVE_DECL_GCVT''@|$(HAVE_DECL_GCVT)|g' \ -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \ -e 's|@''HAVE_GETPROGNAME''@|$(HAVE_GETPROGNAME)|g' \ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \ -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \ -e 's|@''HAVE_INITSTATE''@|$(HAVE_INITSTATE)|g' \ -e 's|@''HAVE_DECL_INITSTATE''@|$(HAVE_DECL_INITSTATE)|g' \ -e 's|@''HAVE_MBTOWC''@|$(HAVE_MBTOWC)|g' \ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \ -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \ -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \ -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \ -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \ -e 's|@''HAVE_POSIX_MEMALIGN''@|$(HAVE_POSIX_MEMALIGN)|g' \ -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \ -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \ -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \ -e 's|@''HAVE_QSORT_R''@|$(HAVE_QSORT_R)|g' \ -e 's|@''HAVE_RANDOM''@|$(HAVE_RANDOM)|g' \ -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \ -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \ -e 's|@''HAVE_REALLOCARRAY''@|$(HAVE_REALLOCARRAY)|g' \ -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \ -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \ -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \ -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \ -e 's|@''HAVE_SETSTATE''@|$(HAVE_SETSTATE)|g' \ -e 's|@''HAVE_DECL_SETSTATE''@|$(HAVE_DECL_SETSTATE)|g' \ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \ -e 's|@''HAVE_STRTOL''@|$(HAVE_STRTOL)|g' \ -e 's|@''HAVE_STRTOLD''@|$(HAVE_STRTOLD)|g' \ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \ -e 's|@''HAVE_STRTOUL''@|$(HAVE_STRTOUL)|g' \ -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \ -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \ -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \ -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \ -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \ -e 's|@''REPLACE__EXIT''@|$(REPLACE__EXIT)|g' \ -e 's|@''REPLACE_ALIGNED_ALLOC''@|$(REPLACE_ALIGNED_ALLOC)|g' \ -e 's|@''REPLACE_CALLOC_FOR_CALLOC_GNU''@|$(REPLACE_CALLOC_FOR_CALLOC_GNU)|g' \ -e 's|@''REPLACE_CALLOC_FOR_CALLOC_POSIX''@|$(REPLACE_CALLOC_FOR_CALLOC_POSIX)|g' \ -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''REPLACE_FREE''@|$(REPLACE_FREE)|g' \ -e 's|@''REPLACE_GETLOADAVG''@|$(REPLACE_GETLOADAVG)|g' \ -e 's|@''REPLACE_GETPROGNAME''@|$(REPLACE_GETPROGNAME)|g' \ -e 's|@''REPLACE_GETSUBOPT''@|$(REPLACE_GETSUBOPT)|g' \ -e 's|@''REPLACE_INITSTATE''@|$(REPLACE_INITSTATE)|g' \ -e 's|@''REPLACE_MALLOC_FOR_MALLOC_GNU''@|$(REPLACE_MALLOC_FOR_MALLOC_GNU)|g' \ -e 's|@''REPLACE_MALLOC_FOR_MALLOC_POSIX''@|$(REPLACE_MALLOC_FOR_MALLOC_POSIX)|g' \ -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \ -e 's|@''REPLACE_MKOSTEMP''@|$(REPLACE_MKOSTEMP)|g' \ -e 's|@''REPLACE_MKOSTEMPS''@|$(REPLACE_MKOSTEMPS)|g' \ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \ -e 's|@''REPLACE_POSIX_MEMALIGN''@|$(REPLACE_POSIX_MEMALIGN)|g' \ -e 's|@''REPLACE_POSIX_OPENPT''@|$(REPLACE_POSIX_OPENPT)|g' \ -e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \ -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \ -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \ -e 's|@''REPLACE_QSORT_R''@|$(REPLACE_QSORT_R)|g' \ -e 's|@''REPLACE_RANDOM''@|$(REPLACE_RANDOM)|g' \ -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \ -e 's|@''REPLACE_REALLOC_FOR_REALLOC_GNU''@|$(REPLACE_REALLOC_FOR_REALLOC_GNU)|g' \ -e 's|@''REPLACE_REALLOC_FOR_REALLOC_POSIX''@|$(REPLACE_REALLOC_FOR_REALLOC_POSIX)|g' \ -e 's|@''REPLACE_REALLOCARRAY''@|$(REPLACE_REALLOCARRAY)|g' \ -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \ -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \ -e 's|@''REPLACE_SETSTATE''@|$(REPLACE_SETSTATE)|g' \ -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \ -e 's|@''REPLACE_STRTOL''@|$(REPLACE_STRTOL)|g' \ -e 's|@''REPLACE_STRTOLD''@|$(REPLACE_STRTOLD)|g' \ -e 's|@''REPLACE_STRTOLL''@|$(REPLACE_STRTOLL)|g' \ -e 's|@''REPLACE_STRTOUL''@|$(REPLACE_STRTOUL)|g' \ -e 's|@''REPLACE_STRTOULL''@|$(REPLACE_STRTOULL)|g' \ -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \ -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _Noreturn/r $(_NORETURN_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \ -e 's/@''GNULIB_EXPLICIT_BZERO''@/$(GL_GNULIB_EXPLICIT_BZERO)/g' \ -e 's/@''GNULIB_FFSL''@/$(GL_GNULIB_FFSL)/g' \ -e 's/@''GNULIB_FFSLL''@/$(GL_GNULIB_FFSLL)/g' \ -e 's/@''GNULIB_MBSLEN''@/$(GL_GNULIB_MBSLEN)/g' \ -e 's/@''GNULIB_MBSNLEN''@/$(GL_GNULIB_MBSNLEN)/g' \ -e 's/@''GNULIB_MBSCHR''@/$(GL_GNULIB_MBSCHR)/g' \ -e 's/@''GNULIB_MBSRCHR''@/$(GL_GNULIB_MBSRCHR)/g' \ -e 's/@''GNULIB_MBSSTR''@/$(GL_GNULIB_MBSSTR)/g' \ -e 's/@''GNULIB_MBSCASECMP''@/$(GL_GNULIB_MBSCASECMP)/g' \ -e 's/@''GNULIB_MBSNCASECMP''@/$(GL_GNULIB_MBSNCASECMP)/g' \ -e 's/@''GNULIB_MBSPCASECMP''@/$(GL_GNULIB_MBSPCASECMP)/g' \ -e 's/@''GNULIB_MBSCASESTR''@/$(GL_GNULIB_MBSCASESTR)/g' \ -e 's/@''GNULIB_MBSCSPN''@/$(GL_GNULIB_MBSCSPN)/g' \ -e 's/@''GNULIB_MBSPBRK''@/$(GL_GNULIB_MBSPBRK)/g' \ -e 's/@''GNULIB_MBSSPN''@/$(GL_GNULIB_MBSSPN)/g' \ -e 's/@''GNULIB_MBSSEP''@/$(GL_GNULIB_MBSSEP)/g' \ -e 's/@''GNULIB_MBSTOK_R''@/$(GL_GNULIB_MBSTOK_R)/g' \ -e 's/@''GNULIB_MEMCHR''@/$(GL_GNULIB_MEMCHR)/g' \ -e 's/@''GNULIB_MEMMEM''@/$(GL_GNULIB_MEMMEM)/g' \ -e 's/@''GNULIB_MEMPCPY''@/$(GL_GNULIB_MEMPCPY)/g' \ -e 's/@''GNULIB_MEMRCHR''@/$(GL_GNULIB_MEMRCHR)/g' \ -e 's/@''GNULIB_MEMSET_EXPLICIT''@/$(GL_GNULIB_MEMSET_EXPLICIT)/g' \ -e 's/@''GNULIB_RAWMEMCHR''@/$(GL_GNULIB_RAWMEMCHR)/g' \ -e 's/@''GNULIB_STPCPY''@/$(GL_GNULIB_STPCPY)/g' \ -e 's/@''GNULIB_STPNCPY''@/$(GL_GNULIB_STPNCPY)/g' \ -e 's/@''GNULIB_STRCHRNUL''@/$(GL_GNULIB_STRCHRNUL)/g' \ -e 's/@''GNULIB_STRDUP''@/$(GL_GNULIB_STRDUP)/g' \ -e 's/@''GNULIB_STRNCAT''@/$(GL_GNULIB_STRNCAT)/g' \ -e 's/@''GNULIB_STRNDUP''@/$(GL_GNULIB_STRNDUP)/g' \ -e 's/@''GNULIB_STRNLEN''@/$(GL_GNULIB_STRNLEN)/g' \ -e 's/@''GNULIB_STRPBRK''@/$(GL_GNULIB_STRPBRK)/g' \ -e 's/@''GNULIB_STRSEP''@/$(GL_GNULIB_STRSEP)/g' \ -e 's/@''GNULIB_STRSTR''@/$(GL_GNULIB_STRSTR)/g' \ -e 's/@''GNULIB_STRCASESTR''@/$(GL_GNULIB_STRCASESTR)/g' \ -e 's/@''GNULIB_STRTOK_R''@/$(GL_GNULIB_STRTOK_R)/g' \ -e 's/@''GNULIB_STRERROR''@/$(GL_GNULIB_STRERROR)/g' \ -e 's/@''GNULIB_STRERROR_R''@/$(GL_GNULIB_STRERROR_R)/g' \ -e 's/@''GNULIB_STRERRORNAME_NP''@/$(GL_GNULIB_STRERRORNAME_NP)/g' \ -e 's/@''GNULIB_SIGABBREV_NP''@/$(GL_GNULIB_SIGABBREV_NP)/g' \ -e 's/@''GNULIB_SIGDESCR_NP''@/$(GL_GNULIB_SIGDESCR_NP)/g' \ -e 's/@''GNULIB_STRSIGNAL''@/$(GL_GNULIB_STRSIGNAL)/g' \ -e 's/@''GNULIB_STRVERSCMP''@/$(GL_GNULIB_STRVERSCMP)/g' \ -e 's/@''GNULIB_MDA_MEMCCPY''@/$(GL_GNULIB_MDA_MEMCCPY)/g' \ -e 's/@''GNULIB_MDA_STRDUP''@/$(GL_GNULIB_MDA_STRDUP)/g' \ -e 's/@''GNULIB_FREE_POSIX''@/$(GL_GNULIB_FREE_POSIX)/g' \ < $(srcdir)/string.in.h | \ sed -e 's|@''HAVE_EXPLICIT_BZERO''@|$(HAVE_EXPLICIT_BZERO)|g' \ -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \ -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \ -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ -e 's|@''HAVE_MEMSET_EXPLICIT''@|$(HAVE_MEMSET_EXPLICIT)|g' \ -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \ -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \ -e 's|@''HAVE_STRERRORNAME_NP''@|$(HAVE_STRERRORNAME_NP)|g' \ -e 's|@''HAVE_SIGABBREV_NP''@|$(HAVE_SIGABBREV_NP)|g' \ -e 's|@''HAVE_SIGDESCR_NP''@|$(HAVE_SIGDESCR_NP)|g' \ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ -e 's|@''REPLACE_FFSLL''@|$(REPLACE_FFSLL)|g' \ -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ -e 's|@''REPLACE_MEMPCPY''@|$(REPLACE_MEMPCPY)|g' \ -e 's|@''REPLACE_FREE''@|$(REPLACE_FREE)|g' \ -e 's|@''REPLACE_STPCPY''@|$(REPLACE_STPCPY)|g' \ -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \ -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \ -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \ -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \ -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \ -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \ -e 's|@''REPLACE_STRERRORNAME_NP''@|$(REPLACE_STRERRORNAME_NP)|g' \ -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # doesn't have one. sys/random.h: sys_random.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)$(MKDIR_P) 'sys' $(AM_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_RANDOM_H''@|$(NEXT_SYS_RANDOM_H)|g' \ -e 's|@''HAVE_SYS_RANDOM_H''@|$(HAVE_SYS_RANDOM_H)|g' \ -e 's/@''GNULIB_GETRANDOM''@/$(GL_GNULIB_GETRANDOM)/g' \ -e 's/@''HAVE_GETRANDOM''@/$(HAVE_GETRANDOM)/g' \ -e 's/@''REPLACE_GETRANDOM''@/$(REPLACE_GETRANDOM)/g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/sys_random.in.h > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # has one that is incomplete. sys/stat.h: sys_stat.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)$(MKDIR_P) 'sys' $(AM_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \ -e 's|@''WINDOWS_64_BIT_ST_SIZE''@|$(WINDOWS_64_BIT_ST_SIZE)|g' \ -e 's|@''WINDOWS_STAT_TIMESPEC''@|$(WINDOWS_STAT_TIMESPEC)|g' \ -e 's/@''GNULIB_CHMOD''@/$(GL_GNULIB_CHMOD)/g' \ -e 's/@''GNULIB_FCHMODAT''@/$(GL_GNULIB_FCHMODAT)/g' \ -e 's/@''GNULIB_FSTAT''@/$(GL_GNULIB_FSTAT)/g' \ -e 's/@''GNULIB_FSTATAT''@/$(GL_GNULIB_FSTATAT)/g' \ -e 's/@''GNULIB_FUTIMENS''@/$(GL_GNULIB_FUTIMENS)/g' \ -e 's/@''GNULIB_GETUMASK''@/$(GL_GNULIB_GETUMASK)/g' \ -e 's/@''GNULIB_LCHMOD''@/$(GL_GNULIB_LCHMOD)/g' \ -e 's/@''GNULIB_LSTAT''@/$(GL_GNULIB_LSTAT)/g' \ -e 's/@''GNULIB_MKDIR''@/$(GL_GNULIB_MKDIR)/g' \ -e 's/@''GNULIB_MKDIRAT''@/$(GL_GNULIB_MKDIRAT)/g' \ -e 's/@''GNULIB_MKFIFO''@/$(GL_GNULIB_MKFIFO)/g' \ -e 's/@''GNULIB_MKFIFOAT''@/$(GL_GNULIB_MKFIFOAT)/g' \ -e 's/@''GNULIB_MKNOD''@/$(GL_GNULIB_MKNOD)/g' \ -e 's/@''GNULIB_MKNODAT''@/$(GL_GNULIB_MKNODAT)/g' \ -e 's/@''GNULIB_STAT''@/$(GL_GNULIB_STAT)/g' \ -e 's/@''GNULIB_UTIMENSAT''@/$(GL_GNULIB_UTIMENSAT)/g' \ -e 's/@''GNULIB_OVERRIDES_STRUCT_STAT''@/$(GL_GNULIB_OVERRIDES_STRUCT_STAT)/g' \ -e 's/@''GNULIB_MDA_CHMOD''@/$(GL_GNULIB_MDA_CHMOD)/g' \ -e 's/@''GNULIB_MDA_MKDIR''@/$(GL_GNULIB_MDA_MKDIR)/g' \ -e 's/@''GNULIB_MDA_UMASK''@/$(GL_GNULIB_MDA_UMASK)/g' \ -e 's|@''HAVE_FCHMODAT''@|$(HAVE_FCHMODAT)|g' \ -e 's|@''HAVE_FSTATAT''@|$(HAVE_FSTATAT)|g' \ -e 's|@''HAVE_FUTIMENS''@|$(HAVE_FUTIMENS)|g' \ -e 's|@''HAVE_GETUMASK''@|$(HAVE_GETUMASK)|g' \ -e 's|@''HAVE_LCHMOD''@|$(HAVE_LCHMOD)|g' \ -e 's|@''HAVE_LSTAT''@|$(HAVE_LSTAT)|g' \ -e 's|@''HAVE_MKDIRAT''@|$(HAVE_MKDIRAT)|g' \ -e 's|@''HAVE_MKFIFO''@|$(HAVE_MKFIFO)|g' \ -e 's|@''HAVE_MKFIFOAT''@|$(HAVE_MKFIFOAT)|g' \ -e 's|@''HAVE_MKNOD''@|$(HAVE_MKNOD)|g' \ -e 's|@''HAVE_MKNODAT''@|$(HAVE_MKNODAT)|g' \ -e 's|@''HAVE_UTIMENSAT''@|$(HAVE_UTIMENSAT)|g' \ -e 's|@''REPLACE_CHMOD''@|$(REPLACE_CHMOD)|g' \ -e 's|@''REPLACE_FCHMODAT''@|$(REPLACE_FCHMODAT)|g' \ -e 's|@''REPLACE_FSTAT''@|$(REPLACE_FSTAT)|g' \ -e 's|@''REPLACE_FSTATAT''@|$(REPLACE_FSTATAT)|g' \ -e 's|@''REPLACE_FUTIMENS''@|$(REPLACE_FUTIMENS)|g' \ -e 's|@''REPLACE_LSTAT''@|$(REPLACE_LSTAT)|g' \ -e 's|@''REPLACE_MKDIR''@|$(REPLACE_MKDIR)|g' \ -e 's|@''REPLACE_MKFIFO''@|$(REPLACE_MKFIFO)|g' \ -e 's|@''REPLACE_MKFIFOAT''@|$(REPLACE_MKFIFOAT)|g' \ -e 's|@''REPLACE_MKNOD''@|$(REPLACE_MKNOD)|g' \ -e 's|@''REPLACE_MKNODAT''@|$(REPLACE_MKNODAT)|g' \ -e 's|@''REPLACE_STAT''@|$(REPLACE_STAT)|g' \ -e 's|@''REPLACE_UTIMENSAT''@|$(REPLACE_UTIMENSAT)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/sys_stat.in.h > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/types.h: sys_types.in.h $(top_builddir)/config.status $(AM_V_GEN)$(MKDIR_P) 'sys' $(AM_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ -e 's|@''WINDOWS_STAT_INODES''@|$(WINDOWS_STAT_INODES)|g' \ $(srcdir)/sys_types.in.h > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # has one that is incomplete. sys/wait.h: sys_wait.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(AM_V_GEN)$(MKDIR_P) 'sys' $(AM_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_WAIT_H''@|$(NEXT_SYS_WAIT_H)|g' \ -e 's/@''GNULIB_WAITPID''@/$(GL_GNULIB_WAITPID)/g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/sys_wait.in.h > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \ -e 's/@''GNULIB_CTIME''@/$(GL_GNULIB_CTIME)/g' \ -e 's/@''GNULIB_LOCALTIME''@/$(GL_GNULIB_LOCALTIME)/g' \ -e 's/@''GNULIB_MKTIME''@/$(GL_GNULIB_MKTIME)/g' \ -e 's/@''GNULIB_NANOSLEEP''@/$(GL_GNULIB_NANOSLEEP)/g' \ -e 's/@''GNULIB_STRFTIME''@/$(GL_GNULIB_STRFTIME)/g' \ -e 's/@''GNULIB_STRPTIME''@/$(GL_GNULIB_STRPTIME)/g' \ -e 's/@''GNULIB_TIMEGM''@/$(GL_GNULIB_TIMEGM)/g' \ -e 's/@''GNULIB_TIMESPEC_GET''@/$(GL_GNULIB_TIMESPEC_GET)/g' \ -e 's/@''GNULIB_TIMESPEC_GETRES''@/$(GL_GNULIB_TIMESPEC_GETRES)/g' \ -e 's/@''GNULIB_TIME_R''@/$(GL_GNULIB_TIME_R)/g' \ -e 's/@''GNULIB_TIME_RZ''@/$(GL_GNULIB_TIME_RZ)/g' \ -e 's/@''GNULIB_TZSET''@/$(GL_GNULIB_TZSET)/g' \ -e 's/@''GNULIB_MDA_TZSET''@/$(GL_GNULIB_MDA_TZSET)/g' \ -e 's|@''HAVE_DECL_LOCALTIME_R''@|$(HAVE_DECL_LOCALTIME_R)|g' \ -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \ -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \ -e 's|@''HAVE_TIMEGM''@|$(HAVE_TIMEGM)|g' \ -e 's|@''HAVE_TIMESPEC_GET''@|$(HAVE_TIMESPEC_GET)|g' \ -e 's|@''HAVE_TIMESPEC_GETRES''@|$(HAVE_TIMESPEC_GETRES)|g' \ -e 's|@''HAVE_TIMEZONE_T''@|$(HAVE_TIMEZONE_T)|g' \ -e 's|@''REPLACE_CTIME''@|$(REPLACE_CTIME)|g' \ -e 's|@''REPLACE_GMTIME''@|$(REPLACE_GMTIME)|g' \ -e 's|@''REPLACE_LOCALTIME''@|$(REPLACE_LOCALTIME)|g' \ -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \ -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \ -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \ -e 's|@''REPLACE_STRFTIME''@|$(REPLACE_STRFTIME)|g' \ -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \ -e 's|@''REPLACE_TIMESPEC_GET''@|$(REPLACE_TIMESPEC_GET)|g' \ -e 's|@''REPLACE_TZSET''@|$(REPLACE_TZSET)|g' \ -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''UNISTD_H_DEFINES_STRUCT_TIMESPEC''@|$(UNISTD_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''TIME_H_DEFINES_TIME_UTC''@|$(TIME_H_DEFINES_TIME_UTC)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/time.in.h > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create an empty placeholder for # when the system doesn't have one. unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ -e 's/@''GNULIB_ACCESS''@/$(GL_GNULIB_ACCESS)/g' \ -e 's/@''GNULIB_CHDIR''@/$(GL_GNULIB_CHDIR)/g' \ -e 's/@''GNULIB_CHOWN''@/$(GL_GNULIB_CHOWN)/g' \ -e 's/@''GNULIB_CLOSE''@/$(GL_GNULIB_CLOSE)/g' \ -e 's/@''GNULIB_COPY_FILE_RANGE''@/$(GL_GNULIB_COPY_FILE_RANGE)/g' \ -e 's/@''GNULIB_DUP''@/$(GL_GNULIB_DUP)/g' \ -e 's/@''GNULIB_DUP2''@/$(GL_GNULIB_DUP2)/g' \ -e 's/@''GNULIB_DUP3''@/$(GL_GNULIB_DUP3)/g' \ -e 's/@''GNULIB_ENVIRON''@/$(GL_GNULIB_ENVIRON)/g' \ -e 's/@''GNULIB_EUIDACCESS''@/$(GL_GNULIB_EUIDACCESS)/g' \ -e 's/@''GNULIB_EXECL''@/$(GL_GNULIB_EXECL)/g' \ -e 's/@''GNULIB_EXECLE''@/$(GL_GNULIB_EXECLE)/g' \ -e 's/@''GNULIB_EXECLP''@/$(GL_GNULIB_EXECLP)/g' \ -e 's/@''GNULIB_EXECV''@/$(GL_GNULIB_EXECV)/g' \ -e 's/@''GNULIB_EXECVE''@/$(GL_GNULIB_EXECVE)/g' \ -e 's/@''GNULIB_EXECVP''@/$(GL_GNULIB_EXECVP)/g' \ -e 's/@''GNULIB_EXECVPE''@/$(GL_GNULIB_EXECVPE)/g' \ -e 's/@''GNULIB_FACCESSAT''@/$(GL_GNULIB_FACCESSAT)/g' \ -e 's/@''GNULIB_FCHDIR''@/$(GL_GNULIB_FCHDIR)/g' \ -e 's/@''GNULIB_FCHOWNAT''@/$(GL_GNULIB_FCHOWNAT)/g' \ -e 's/@''GNULIB_FDATASYNC''@/$(GL_GNULIB_FDATASYNC)/g' \ -e 's/@''GNULIB_FSYNC''@/$(GL_GNULIB_FSYNC)/g' \ -e 's/@''GNULIB_FTRUNCATE''@/$(GL_GNULIB_FTRUNCATE)/g' \ -e 's/@''GNULIB_GETCWD''@/$(GL_GNULIB_GETCWD)/g' \ -e 's/@''GNULIB_GETDOMAINNAME''@/$(GL_GNULIB_GETDOMAINNAME)/g' \ -e 's/@''GNULIB_GETDTABLESIZE''@/$(GL_GNULIB_GETDTABLESIZE)/g' \ -e 's/@''GNULIB_GETENTROPY''@/$(GL_GNULIB_GETENTROPY)/g' \ -e 's/@''GNULIB_GETGROUPS''@/$(GL_GNULIB_GETGROUPS)/g' \ -e 's/@''GNULIB_GETHOSTNAME''@/$(GL_GNULIB_GETHOSTNAME)/g' \ -e 's/@''GNULIB_GETLOGIN''@/$(GL_GNULIB_GETLOGIN)/g' \ -e 's/@''GNULIB_GETLOGIN_R''@/$(GL_GNULIB_GETLOGIN_R)/g' \ -e 's/@''GNULIB_GETOPT_POSIX''@/$(GL_GNULIB_GETOPT_POSIX)/g' \ -e 's/@''GNULIB_GETPAGESIZE''@/$(GL_GNULIB_GETPAGESIZE)/g' \ -e 's/@''GNULIB_GETPASS''@/$(GL_GNULIB_GETPASS)/g' \ -e 's/@''GNULIB_GETPASS_GNU''@/$(GL_GNULIB_GETPASS_GNU)/g' \ -e 's/@''GNULIB_GETUSERSHELL''@/$(GL_GNULIB_GETUSERSHELL)/g' \ -e 's/@''GNULIB_GROUP_MEMBER''@/$(GL_GNULIB_GROUP_MEMBER)/g' \ -e 's/@''GNULIB_ISATTY''@/$(GL_GNULIB_ISATTY)/g' \ -e 's/@''GNULIB_LCHOWN''@/$(GL_GNULIB_LCHOWN)/g' \ -e 's/@''GNULIB_LINK''@/$(GL_GNULIB_LINK)/g' \ -e 's/@''GNULIB_LINKAT''@/$(GL_GNULIB_LINKAT)/g' \ -e 's/@''GNULIB_LSEEK''@/$(GL_GNULIB_LSEEK)/g' \ -e 's/@''GNULIB_PIPE''@/$(GL_GNULIB_PIPE)/g' \ -e 's/@''GNULIB_PIPE2''@/$(GL_GNULIB_PIPE2)/g' \ -e 's/@''GNULIB_PREAD''@/$(GL_GNULIB_PREAD)/g' \ -e 's/@''GNULIB_PWRITE''@/$(GL_GNULIB_PWRITE)/g' \ -e 's/@''GNULIB_READ''@/$(GL_GNULIB_READ)/g' \ -e 's/@''GNULIB_READLINK''@/$(GL_GNULIB_READLINK)/g' \ -e 's/@''GNULIB_READLINKAT''@/$(GL_GNULIB_READLINKAT)/g' \ -e 's/@''GNULIB_RMDIR''@/$(GL_GNULIB_RMDIR)/g' \ -e 's/@''GNULIB_SETHOSTNAME''@/$(GL_GNULIB_SETHOSTNAME)/g' \ -e 's/@''GNULIB_SLEEP''@/$(GL_GNULIB_SLEEP)/g' \ -e 's/@''GNULIB_SYMLINK''@/$(GL_GNULIB_SYMLINK)/g' \ -e 's/@''GNULIB_SYMLINKAT''@/$(GL_GNULIB_SYMLINKAT)/g' \ -e 's/@''GNULIB_TRUNCATE''@/$(GL_GNULIB_TRUNCATE)/g' \ -e 's/@''GNULIB_TTYNAME_R''@/$(GL_GNULIB_TTYNAME_R)/g' \ -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GL_GNULIB_UNISTD_H_GETOPT)/g' \ -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GL_GNULIB_UNISTD_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GL_GNULIB_UNISTD_H_SIGPIPE)/g' \ -e 's/@''GNULIB_UNLINK''@/$(GL_GNULIB_UNLINK)/g' \ -e 's/@''GNULIB_UNLINKAT''@/$(GL_GNULIB_UNLINKAT)/g' \ -e 's/@''GNULIB_USLEEP''@/$(GL_GNULIB_USLEEP)/g' \ -e 's/@''GNULIB_WRITE''@/$(GL_GNULIB_WRITE)/g' \ -e 's/@''GNULIB_MDA_ACCESS''@/$(GL_GNULIB_MDA_ACCESS)/g' \ -e 's/@''GNULIB_MDA_CHDIR''@/$(GL_GNULIB_MDA_CHDIR)/g' \ -e 's/@''GNULIB_MDA_CLOSE''@/$(GL_GNULIB_MDA_CLOSE)/g' \ -e 's/@''GNULIB_MDA_DUP''@/$(GL_GNULIB_MDA_DUP)/g' \ -e 's/@''GNULIB_MDA_DUP2''@/$(GL_GNULIB_MDA_DUP2)/g' \ -e 's/@''GNULIB_MDA_EXECL''@/$(GL_GNULIB_MDA_EXECL)/g' \ -e 's/@''GNULIB_MDA_EXECLE''@/$(GL_GNULIB_MDA_EXECLE)/g' \ -e 's/@''GNULIB_MDA_EXECLP''@/$(GL_GNULIB_MDA_EXECLP)/g' \ -e 's/@''GNULIB_MDA_EXECV''@/$(GL_GNULIB_MDA_EXECV)/g' \ -e 's/@''GNULIB_MDA_EXECVE''@/$(GL_GNULIB_MDA_EXECVE)/g' \ -e 's/@''GNULIB_MDA_EXECVP''@/$(GL_GNULIB_MDA_EXECVP)/g' \ -e 's/@''GNULIB_MDA_EXECVPE''@/$(GL_GNULIB_MDA_EXECVPE)/g' \ -e 's/@''GNULIB_MDA_GETCWD''@/$(GL_GNULIB_MDA_GETCWD)/g' \ -e 's/@''GNULIB_MDA_GETPID''@/$(GL_GNULIB_MDA_GETPID)/g' \ -e 's/@''GNULIB_MDA_ISATTY''@/$(GL_GNULIB_MDA_ISATTY)/g' \ -e 's/@''GNULIB_MDA_LSEEK''@/$(GL_GNULIB_MDA_LSEEK)/g' \ -e 's/@''GNULIB_MDA_READ''@/$(GL_GNULIB_MDA_READ)/g' \ -e 's/@''GNULIB_MDA_RMDIR''@/$(GL_GNULIB_MDA_RMDIR)/g' \ -e 's/@''GNULIB_MDA_SWAB''@/$(GL_GNULIB_MDA_SWAB)/g' \ -e 's/@''GNULIB_MDA_UNLINK''@/$(GL_GNULIB_MDA_UNLINK)/g' \ -e 's/@''GNULIB_MDA_WRITE''@/$(GL_GNULIB_MDA_WRITE)/g' \ < $(srcdir)/unistd.in.h | \ sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \ -e 's|@''HAVE_COPY_FILE_RANGE''@|$(HAVE_COPY_FILE_RANGE)|g' \ -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \ -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \ -e 's|@''HAVE_EXECVPE''@|$(HAVE_EXECVPE)|g' \ -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \ -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \ -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \ -e 's|@''HAVE_FDATASYNC''@|$(HAVE_FDATASYNC)|g' \ -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \ -e 's|@''HAVE_GETENTROPY''@|$(HAVE_GETENTROPY)|g' \ -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \ -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \ -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \ -e 's|@''HAVE_GETPASS''@|$(HAVE_GETPASS)|g' \ -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \ -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \ -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \ -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \ -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \ -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \ -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \ -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \ -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \ -e 's|@''HAVE_SETHOSTNAME''@|$(HAVE_SETHOSTNAME)|g' \ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \ -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \ -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \ -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \ -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \ -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \ -e 's|@''HAVE_DECL_EXECVPE''@|$(HAVE_DECL_EXECVPE)|g' \ -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \ -e 's|@''HAVE_DECL_FDATASYNC''@|$(HAVE_DECL_FDATASYNC)|g' \ -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \ -e 's|@''HAVE_DECL_GETLOGIN''@|$(HAVE_DECL_GETLOGIN)|g' \ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \ -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \ -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \ -e 's|@''HAVE_DECL_SETHOSTNAME''@|$(HAVE_DECL_SETHOSTNAME)|g' \ -e 's|@''HAVE_DECL_TRUNCATE''@|$(HAVE_DECL_TRUNCATE)|g' \ -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \ -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ | \ sed -e 's|@''REPLACE_ACCESS''@|$(REPLACE_ACCESS)|g' \ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ -e 's|@''REPLACE_COPY_FILE_RANGE''@|$(REPLACE_COPY_FILE_RANGE)|g' \ -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \ -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \ -e 's|@''REPLACE_DUP3''@|$(REPLACE_DUP3)|g' \ -e 's|@''REPLACE_EXECL''@|$(REPLACE_EXECL)|g' \ -e 's|@''REPLACE_EXECLE''@|$(REPLACE_EXECLE)|g' \ -e 's|@''REPLACE_EXECLP''@|$(REPLACE_EXECLP)|g' \ -e 's|@''REPLACE_EXECV''@|$(REPLACE_EXECV)|g' \ -e 's|@''REPLACE_EXECVE''@|$(REPLACE_EXECVE)|g' \ -e 's|@''REPLACE_EXECVP''@|$(REPLACE_EXECVP)|g' \ -e 's|@''REPLACE_EXECVPE''@|$(REPLACE_EXECVPE)|g' \ -e 's|@''REPLACE_FACCESSAT''@|$(REPLACE_FACCESSAT)|g' \ -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \ -e 's|@''REPLACE_FDATASYNC''@|$(REPLACE_FDATASYNC)|g' \ -e 's|@''REPLACE_FTRUNCATE''@|$(REPLACE_FTRUNCATE)|g' \ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \ -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \ -e 's|@''REPLACE_GETDTABLESIZE''@|$(REPLACE_GETDTABLESIZE)|g' \ -e 's|@''REPLACE_GETENTROPY''@|$(REPLACE_GETENTROPY)|g' \ -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \ -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \ -e 's|@''REPLACE_GETPASS''@|$(REPLACE_GETPASS)|g' \ -e 's|@''REPLACE_GETPASS_FOR_GETPASS_GNU''@|$(REPLACE_GETPASS_FOR_GETPASS_GNU)|g' \ -e 's|@''REPLACE_ISATTY''@|$(REPLACE_ISATTY)|g' \ -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \ -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \ -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ -e 's|@''REPLACE_PIPE2''@|$(REPLACE_PIPE2)|g' \ -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \ -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \ -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \ -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \ -e 's|@''REPLACE_READLINKAT''@|$(REPLACE_READLINKAT)|g' \ -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \ -e 's|@''REPLACE_SETHOSTNAME''@|$(REPLACE_SETHOSTNAME)|g' \ -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \ -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \ -e 's|@''REPLACE_SYMLINKAT''@|$(REPLACE_SYMLINKAT)|g' \ -e 's|@''REPLACE_TRUNCATE''@|$(REPLACE_TRUNCATE)|g' \ -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \ -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \ -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \ -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \ -e 's|@''UNISTD_H_HAVE_SYS_RANDOM_H''@|$(UNISTD_H_HAVE_SYS_RANDOM_H)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. utime.h: utime.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_UTIME_H''@/$(HAVE_UTIME_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_UTIME_H''@|$(NEXT_UTIME_H)|g' \ -e 's/@''GNULIB_UTIME''@/$(GL_GNULIB_UTIME)/g' \ -e 's/@''GNULIB_MDA_UTIME''@/$(GL_GNULIB_MDA_UTIME)/g' \ -e 's|@''HAVE_UTIME''@|$(HAVE_UTIME)|g' \ -e 's|@''REPLACE_UTIME''@|$(REPLACE_UTIME)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/utime.in.h > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # version does not work standalone. wchar.h: wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''HAVE_FEATURES_H''@|$(HAVE_FEATURES_H)|g' \ -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \ -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \ -e 's/@''HAVE_CRTDEFS_H''@/$(HAVE_CRTDEFS_H)/g' \ -e 's/@''GNULIBHEADERS_OVERRIDE_WINT_T''@/$(GNULIBHEADERS_OVERRIDE_WINT_T)/g' \ -e 's/@''GNULIB_BTOWC''@/$(GL_GNULIB_BTOWC)/g' \ -e 's/@''GNULIB_WCTOB''@/$(GL_GNULIB_WCTOB)/g' \ -e 's/@''GNULIB_MBSINIT''@/$(GL_GNULIB_MBSINIT)/g' \ -e 's/@''GNULIB_MBRTOWC''@/$(GL_GNULIB_MBRTOWC)/g' \ -e 's/@''GNULIB_MBRLEN''@/$(GL_GNULIB_MBRLEN)/g' \ -e 's/@''GNULIB_MBSRTOWCS''@/$(GL_GNULIB_MBSRTOWCS)/g' \ -e 's/@''GNULIB_MBSNRTOWCS''@/$(GL_GNULIB_MBSNRTOWCS)/g' \ -e 's/@''GNULIB_WCRTOMB''@/$(GL_GNULIB_WCRTOMB)/g' \ -e 's/@''GNULIB_WCSRTOMBS''@/$(GL_GNULIB_WCSRTOMBS)/g' \ -e 's/@''GNULIB_WCSNRTOMBS''@/$(GL_GNULIB_WCSNRTOMBS)/g' \ -e 's/@''GNULIB_WCWIDTH''@/$(GL_GNULIB_WCWIDTH)/g' \ -e 's/@''GNULIB_WMEMCHR''@/$(GL_GNULIB_WMEMCHR)/g' \ -e 's/@''GNULIB_WMEMCMP''@/$(GL_GNULIB_WMEMCMP)/g' \ -e 's/@''GNULIB_WMEMCPY''@/$(GL_GNULIB_WMEMCPY)/g' \ -e 's/@''GNULIB_WMEMMOVE''@/$(GL_GNULIB_WMEMMOVE)/g' \ -e 's/@''GNULIB_WMEMPCPY''@/$(GL_GNULIB_WMEMPCPY)/g' \ -e 's/@''GNULIB_WMEMSET''@/$(GL_GNULIB_WMEMSET)/g' \ -e 's/@''GNULIB_WCSLEN''@/$(GL_GNULIB_WCSLEN)/g' \ -e 's/@''GNULIB_WCSNLEN''@/$(GL_GNULIB_WCSNLEN)/g' \ -e 's/@''GNULIB_WCSCPY''@/$(GL_GNULIB_WCSCPY)/g' \ -e 's/@''GNULIB_WCPCPY''@/$(GL_GNULIB_WCPCPY)/g' \ -e 's/@''GNULIB_WCSNCPY''@/$(GL_GNULIB_WCSNCPY)/g' \ -e 's/@''GNULIB_WCPNCPY''@/$(GL_GNULIB_WCPNCPY)/g' \ -e 's/@''GNULIB_WCSCAT''@/$(GL_GNULIB_WCSCAT)/g' \ -e 's/@''GNULIB_WCSNCAT''@/$(GL_GNULIB_WCSNCAT)/g' \ -e 's/@''GNULIB_WCSCMP''@/$(GL_GNULIB_WCSCMP)/g' \ -e 's/@''GNULIB_WCSNCMP''@/$(GL_GNULIB_WCSNCMP)/g' \ -e 's/@''GNULIB_WCSCASECMP''@/$(GL_GNULIB_WCSCASECMP)/g' \ -e 's/@''GNULIB_WCSNCASECMP''@/$(GL_GNULIB_WCSNCASECMP)/g' \ -e 's/@''GNULIB_WCSCOLL''@/$(GL_GNULIB_WCSCOLL)/g' \ -e 's/@''GNULIB_WCSXFRM''@/$(GL_GNULIB_WCSXFRM)/g' \ -e 's/@''GNULIB_WCSDUP''@/$(GL_GNULIB_WCSDUP)/g' \ -e 's/@''GNULIB_WCSCHR''@/$(GL_GNULIB_WCSCHR)/g' \ -e 's/@''GNULIB_WCSRCHR''@/$(GL_GNULIB_WCSRCHR)/g' \ -e 's/@''GNULIB_WCSCSPN''@/$(GL_GNULIB_WCSCSPN)/g' \ -e 's/@''GNULIB_WCSSPN''@/$(GL_GNULIB_WCSSPN)/g' \ -e 's/@''GNULIB_WCSPBRK''@/$(GL_GNULIB_WCSPBRK)/g' \ -e 's/@''GNULIB_WCSSTR''@/$(GL_GNULIB_WCSSTR)/g' \ -e 's/@''GNULIB_WCSTOK''@/$(GL_GNULIB_WCSTOK)/g' \ -e 's/@''GNULIB_WCSWIDTH''@/$(GL_GNULIB_WCSWIDTH)/g' \ -e 's/@''GNULIB_WCSFTIME''@/$(GL_GNULIB_WCSFTIME)/g' \ -e 's/@''GNULIB_MDA_WCSDUP''@/$(GL_GNULIB_MDA_WCSDUP)/g' \ -e 's/@''GNULIB_FREE_POSIX''@/$(GL_GNULIB_FREE_POSIX)/g' \ < $(srcdir)/wchar.in.h | \ sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \ -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \ -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \ -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \ -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \ -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \ -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \ -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \ -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \ -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \ -e 's|@''HAVE_WMEMCHR''@|$(HAVE_WMEMCHR)|g' \ -e 's|@''HAVE_WMEMCMP''@|$(HAVE_WMEMCMP)|g' \ -e 's|@''HAVE_WMEMCPY''@|$(HAVE_WMEMCPY)|g' \ -e 's|@''HAVE_WMEMMOVE''@|$(HAVE_WMEMMOVE)|g' \ -e 's|@''HAVE_WMEMPCPY''@|$(HAVE_WMEMPCPY)|g' \ -e 's|@''HAVE_WMEMSET''@|$(HAVE_WMEMSET)|g' \ -e 's|@''HAVE_WCSLEN''@|$(HAVE_WCSLEN)|g' \ -e 's|@''HAVE_WCSNLEN''@|$(HAVE_WCSNLEN)|g' \ -e 's|@''HAVE_WCSCPY''@|$(HAVE_WCSCPY)|g' \ -e 's|@''HAVE_WCPCPY''@|$(HAVE_WCPCPY)|g' \ -e 's|@''HAVE_WCSNCPY''@|$(HAVE_WCSNCPY)|g' \ -e 's|@''HAVE_WCPNCPY''@|$(HAVE_WCPNCPY)|g' \ -e 's|@''HAVE_WCSCAT''@|$(HAVE_WCSCAT)|g' \ -e 's|@''HAVE_WCSNCAT''@|$(HAVE_WCSNCAT)|g' \ -e 's|@''HAVE_WCSCMP''@|$(HAVE_WCSCMP)|g' \ -e 's|@''HAVE_WCSNCMP''@|$(HAVE_WCSNCMP)|g' \ -e 's|@''HAVE_WCSCASECMP''@|$(HAVE_WCSCASECMP)|g' \ -e 's|@''HAVE_WCSNCASECMP''@|$(HAVE_WCSNCASECMP)|g' \ -e 's|@''HAVE_WCSCOLL''@|$(HAVE_WCSCOLL)|g' \ -e 's|@''HAVE_WCSXFRM''@|$(HAVE_WCSXFRM)|g' \ -e 's|@''HAVE_WCSDUP''@|$(HAVE_WCSDUP)|g' \ -e 's|@''HAVE_WCSCHR''@|$(HAVE_WCSCHR)|g' \ -e 's|@''HAVE_WCSRCHR''@|$(HAVE_WCSRCHR)|g' \ -e 's|@''HAVE_WCSCSPN''@|$(HAVE_WCSCSPN)|g' \ -e 's|@''HAVE_WCSSPN''@|$(HAVE_WCSSPN)|g' \ -e 's|@''HAVE_WCSPBRK''@|$(HAVE_WCSPBRK)|g' \ -e 's|@''HAVE_WCSSTR''@|$(HAVE_WCSSTR)|g' \ -e 's|@''HAVE_WCSTOK''@|$(HAVE_WCSTOK)|g' \ -e 's|@''HAVE_WCSWIDTH''@|$(HAVE_WCSWIDTH)|g' \ -e 's|@''HAVE_WCSFTIME''@|$(HAVE_WCSFTIME)|g' \ -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \ -e 's|@''HAVE_DECL_WCSDUP''@|$(HAVE_DECL_WCSDUP)|g' \ -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \ | \ sed -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \ -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \ -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \ -e 's|@''REPLACE_FREE''@|$(REPLACE_FREE)|g' \ -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \ -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \ -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \ -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \ -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \ -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \ -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \ -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \ -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \ -e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \ -e 's|@''REPLACE_WCSFTIME''@|$(REPLACE_WCSFTIME)|g' \ -e 's|@''REPLACE_WCSTOK''@|$(REPLACE_WCSTOK)|g' \ -e 's|@''REPLACE_WMEMPCPY''@|$(REPLACE_WMEMPCPY)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ > $@-t $(AM_V_at)mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. wctype.h: wctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \ -e 's/@''HAVE_CRTDEFS_H''@/$(HAVE_CRTDEFS_H)/g' \ -e 's/@''GNULIBHEADERS_OVERRIDE_WINT_T''@/$(GNULIBHEADERS_OVERRIDE_WINT_T)/g' \ -e 's/@''GNULIB_ISWBLANK''@/$(GL_GNULIB_ISWBLANK)/g' \ -e 's/@''GNULIB_ISWDIGIT''@/$(GL_GNULIB_ISWDIGIT)/g' \ -e 's/@''GNULIB_ISWXDIGIT''@/$(GL_GNULIB_ISWXDIGIT)/g' \ -e 's/@''GNULIB_WCTYPE''@/$(GL_GNULIB_WCTYPE)/g' \ -e 's/@''GNULIB_ISWCTYPE''@/$(GL_GNULIB_ISWCTYPE)/g' \ -e 's/@''GNULIB_WCTRANS''@/$(GL_GNULIB_WCTRANS)/g' \ -e 's/@''GNULIB_TOWCTRANS''@/$(GL_GNULIB_TOWCTRANS)/g' \ -e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \ -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \ -e 's/@''HAVE_WCTYPE_T''@/$(HAVE_WCTYPE_T)/g' \ -e 's/@''HAVE_WCTRANS_T''@/$(HAVE_WCTRANS_T)/g' \ -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \ -e 's/@''REPLACE_ISWBLANK''@/$(REPLACE_ISWBLANK)/g' \ -e 's/@''REPLACE_ISWDIGIT''@/$(REPLACE_ISWDIGIT)/g' \ -e 's/@''REPLACE_ISWXDIGIT''@/$(REPLACE_ISWXDIGIT)/g' \ -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \ -e 's/@''REPLACE_TOWLOWER''@/$(REPLACE_TOWLOWER)/g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/wctype.in.h > $@-t $(AM_V_at)mv $@-t $@ mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ if test -n "$$dir" && test -d $$dir; then \ echo "rmdir $$dir"; rmdir $$dir; \ fi; \ done; \ : distclean-local: distclean-gnulib-libobjs distclean-gnulib-libobjs: -rm -f @gl_LIBOBJDEPS@ maintainer-clean-local: distclean-gnulib-libobjs # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: recode-3.7.15/lib/sys_random.in.h0000644000175000017500000000616214371444255012251 /* Substitute for . Copyright (C) 2020-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ # if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ # endif @PRAGMA_COLUMNS@ #ifndef _@GUARD_PREFIX@_SYS_RANDOM_H #if @HAVE_SYS_RANDOM_H@ /* On uClibc < 1.0.35, assumes prior inclusion of . Do not use __UCLIBC__ here, as it might not be defined yet. But avoid namespace pollution on glibc systems. */ # ifndef __GLIBC__ # include # endif /* On Mac OS X 10.5, assumes prior inclusion of . On Max OS X 10.13, assumes prior inclusion of a file that includes , such as or . */ # if defined __APPLE__ && defined __MACH__ /* Mac OS X */ # include # include # endif /* The include_next requires a split double-inclusion guard. */ # @INCLUDE_NEXT@ @NEXT_SYS_RANDOM_H@ #endif #ifndef _@GUARD_PREFIX@_SYS_RANDOM_H #define _@GUARD_PREFIX@_SYS_RANDOM_H #include /* Define the GRND_* constants. */ #ifndef GRND_NONBLOCK # define GRND_NONBLOCK 1 # define GRND_RANDOM 2 #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Declare overridden functions. */ #if @GNULIB_GETRANDOM@ /* Fill a buffer with random bytes. */ # if @REPLACE_GETRANDOM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getrandom # define getrandom rpl_getrandom # endif _GL_FUNCDECL_RPL (getrandom, ssize_t, (void *buffer, size_t length, unsigned int flags) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (getrandom, ssize_t, (void *buffer, size_t length, unsigned int flags)); # else # if !@HAVE_GETRANDOM@ _GL_FUNCDECL_SYS (getrandom, ssize_t, (void *buffer, size_t length, unsigned int flags) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (getrandom, ssize_t, (void *buffer, size_t length, unsigned int flags)); # endif # if __GLIBC__ + (__GLIBC_MINOR__ >= 25) > 2 _GL_CXXALIASWARN (getrandom); # endif #elif defined GNULIB_POSIXCHECK # undef getrandom # if HAVE_RAW_DECL_GETRANDOM _GL_WARN_ON_USE (getrandom, "getrandom is unportable - " "use gnulib module getrandom for portability"); # endif #endif #endif /* _@GUARD_PREFIX@_SYS_RANDOM_H */ #endif /* _@GUARD_PREFIX@_SYS_RANDOM_H */ recode-3.7.15/lib/sys_types.in.h0000644000175000017500000000617114371444255012135 /* Provide a more complete sys/types.h. Copyright (C) 2011-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined _WIN32 && !defined __CYGWIN__ \ && (defined __need_off_t || defined __need___off64_t \ || defined __need_ssize_t || defined __need_time_t) /* Special invocation convention inside mingw header files. */ #@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_SYS_TYPES_H /* The include_next requires a split double-inclusion guard. */ # define _GL_INCLUDING_SYS_TYPES_H #@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@ # undef _GL_INCLUDING_SYS_TYPES_H #ifndef _@GUARD_PREFIX@_SYS_TYPES_H #define _@GUARD_PREFIX@_SYS_TYPES_H /* Override off_t if Large File Support is requested on native Windows. */ #if @WINDOWS_64_BIT_OFF_T@ /* Same as int64_t in . */ # if defined _MSC_VER # define off_t __int64 # else # define off_t long long int # endif /* Indicator, for gnulib internal purposes. */ # define _GL_WINDOWS_64_BIT_OFF_T 1 #endif /* Override dev_t and ino_t if distinguishable inodes support is requested on native Windows. */ #if @WINDOWS_STAT_INODES@ # if @WINDOWS_STAT_INODES@ == 2 /* Experimental, not useful in Windows 10. */ /* Define dev_t to a 64-bit type. */ # if !defined GNULIB_defined_dev_t typedef unsigned long long int rpl_dev_t; # undef dev_t # define dev_t rpl_dev_t # define GNULIB_defined_dev_t 1 # endif /* Define ino_t to a 128-bit type. */ # if !defined GNULIB_defined_ino_t /* MSVC does not have a 128-bit integer type. GCC has a 128-bit integer type __int128, but only on 64-bit targets. */ typedef struct { unsigned long long int _gl_ino[2]; } rpl_ino_t; # undef ino_t # define ino_t rpl_ino_t # define GNULIB_defined_ino_t 1 # endif # else /* @WINDOWS_STAT_INODES@ == 1 */ /* Define ino_t to a 64-bit type. */ # if !defined GNULIB_defined_ino_t typedef unsigned long long int rpl_ino_t; # undef ino_t # define ino_t rpl_ino_t # define GNULIB_defined_ino_t 1 # endif # endif /* Indicator, for gnulib internal purposes. */ # define _GL_WINDOWS_STAT_INODES @WINDOWS_STAT_INODES@ #endif /* MSVC 9 defines size_t in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if (defined _WIN32 && ! defined __CYGWIN__) && ! defined __GLIBC__ # include #endif #endif /* _@GUARD_PREFIX@_SYS_TYPES_H */ #endif /* _@GUARD_PREFIX@_SYS_TYPES_H */ #endif /* __need_XXX */ recode-3.7.15/lib/Makefile.am0000644000175000017500000033034014574045633011351 ## DO NOT EDIT! GENERATED AUTOMATICALLY! ## Process this file with automake to produce Makefile.in. # Copyright (C) 2002-2023 Free Software Foundation, Inc. # # This file 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 3 of the License, or # (at your option) any later version. # # This file 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # Reproduce by: # gnulib-tool --import --local-dir=gl-mod/bootstrap --local-dir=gl \ # --lib=libgnu \ # --source-base=lib \ # --m4-base=m4 \ # --doc-base=doc \ # --tests-base=tests \ # --aux-dir=build-aux \ # --no-conditional-dependencies \ # --libtool \ # --macro-prefix=gl \ # argmatch \ # bootstrap \ # canonicalize-lgpl \ # dirname \ # error \ # getopt-posix \ # gettext-h \ # hash \ # iconv \ # isatty \ # localcharset \ # manywarnings \ # minmax \ # mkstemps \ # pathmax \ # pipe-posix \ # quotearg \ # sigaction \ # strndup \ # sys_wait \ # unistd \ # utime \ # vasprintf \ # vprintf-posix \ # xalloc \ # xbinary-io AUTOMAKE_OPTIONS = 1.14 gnits subdir-objects SUBDIRS = noinst_HEADERS = noinst_LIBRARIES = noinst_LTLIBRARIES = EXTRA_DIST = BUILT_SOURCES = SUFFIXES = MOSTLYCLEANFILES = core *.stackdump MOSTLYCLEANDIRS = CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = # No GNU Make output. AM_CPPFLAGS = AM_CFLAGS = noinst_LTLIBRARIES += libgnu.la libgnu_la_SOURCES = libgnu_la_CFLAGS = $(AM_CFLAGS) $(GL_CFLAG_GNULIB_WARNINGS) libgnu_la_LIBADD = $(gl_LTLIBOBJS) libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS) EXTRA_libgnu_la_SOURCES = libgnu_la_LDFLAGS = $(AM_LDFLAGS) libgnu_la_LDFLAGS += -no-undefined libgnu_la_LDFLAGS += $(CLOCK_TIME_LIB) libgnu_la_LDFLAGS += $(GETRANDOM_LIB) libgnu_la_LDFLAGS += $(HARD_LOCALE_LIB) libgnu_la_LDFLAGS += $(LTLIBICONV) libgnu_la_LDFLAGS += $(LTLIBINTL) libgnu_la_LDFLAGS += $(MBRTOWC_LIB) libgnu_la_LDFLAGS += $(SETLOCALE_NULL_LIB) ## begin gnulib module absolute-header # Use this preprocessor expression to decide whether #include_next works. # Do not rely on a 'configure'-time test for this, since the expression # might appear in an installed header, which is used by some other compiler. HAVE_INCLUDE_NEXT = (__GNUC__ || __clang__ || 60000000 <= __DECC_VER) ## end gnulib module absolute-header ## begin gnulib module alloca-opt BUILT_SOURCES += $(ALLOCA_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_ALLOCA_H alloca.h: alloca.in.h $(top_builddir)/config.status $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''HAVE_ALLOCA_H''@|$(HAVE_ALLOCA_H)|g' \ $(srcdir)/alloca.in.h > $@-t $(AM_V_at)mv $@-t $@ else alloca.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += alloca.h alloca.h-t EXTRA_DIST += alloca.in.h ## end gnulib module alloca-opt ## begin gnulib module argmatch libgnu_la_SOURCES += argmatch.c EXTRA_DIST += argmatch.h ## end gnulib module argmatch ## begin gnulib module assert-h BUILT_SOURCES += $(ASSERT_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_ASSERT_H assert.h: assert.in.h verify.h $(top_builddir)/config.status $(gl_V_at){ $(SED_HEADER_STDOUT) \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_ASSERT_H''@|$(NEXT_ASSERT_H)|g' \ < $(srcdir)/assert.in.h && \ sed -e '/@assert.h omit start@/,/@assert.h omit end@/d' \ -e 's|_gl_verify|_gl_static_assert|g' \ -e 's|_GL_VERIFY|_GL_STATIC_ASSERT|g' \ -e 's|_GL\(_STATIC_ASSERT_H\)|_GL\1|g' \ < $(srcdir)/verify.h; \ } > $@-t $(AM_V_at)mv $@-t $@ else assert.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += assert.h assert.h-t EXTRA_DIST += assert.in.h verify.h ## end gnulib module assert-h ## begin gnulib module attribute EXTRA_DIST += attribute.h ## end gnulib module attribute ## begin gnulib module basename-lgpl libgnu_la_SOURCES += basename-lgpl.c EXTRA_DIST += basename-lgpl.h ## end gnulib module basename-lgpl ## begin gnulib module binary-io libgnu_la_SOURCES += binary-io.h binary-io.c ## end gnulib module binary-io ## begin gnulib module bitrotate libgnu_la_SOURCES += bitrotate.h bitrotate.c ## end gnulib module bitrotate ## begin gnulib module bootstrap EXTRA_DIST += $(top_srcdir)/build-aux/bootstrap.in ## end gnulib module bootstrap ## begin gnulib module c-ctype libgnu_la_SOURCES += c-ctype.h c-ctype.c ## end gnulib module c-ctype ## begin gnulib module c-strcase libgnu_la_SOURCES += c-strcase.h c-strcasecmp.c c-strncasecmp.c ## end gnulib module c-strcase ## begin gnulib module c-strcaseeq EXTRA_DIST += c-strcaseeq.h ## end gnulib module c-strcaseeq ## begin gnulib module calloc-gnu EXTRA_DIST += calloc.c EXTRA_libgnu_la_SOURCES += calloc.c ## end gnulib module calloc-gnu ## begin gnulib module calloc-posix EXTRA_DIST += calloc.c EXTRA_libgnu_la_SOURCES += calloc.c ## end gnulib module calloc-posix ## begin gnulib module canonicalize-lgpl if GL_COND_OBJ_CANONICALIZE_LGPL libgnu_la_SOURCES += canonicalize-lgpl.c endif ## end gnulib module canonicalize-lgpl ## begin gnulib module cloexec libgnu_la_SOURCES += cloexec.c EXTRA_DIST += cloexec.h ## end gnulib module cloexec ## begin gnulib module close if GL_COND_OBJ_CLOSE libgnu_la_SOURCES += close.c endif ## end gnulib module close ## begin gnulib module dirname libgnu_la_SOURCES += dirname.c basename.c EXTRA_DIST += stripslash.c EXTRA_libgnu_la_SOURCES += stripslash.c ## end gnulib module dirname ## begin gnulib module dirname-lgpl libgnu_la_SOURCES += dirname-lgpl.c stripslash.c EXTRA_DIST += dirname.h ## end gnulib module dirname-lgpl ## begin gnulib module dup2 if GL_COND_OBJ_DUP2 libgnu_la_SOURCES += dup2.c endif ## end gnulib module dup2 ## begin gnulib module eloop-threshold EXTRA_DIST += eloop-threshold.h ## end gnulib module eloop-threshold ## begin gnulib module errno BUILT_SOURCES += $(ERRNO_H) # We need the following in order to create when the system # doesn't have one that is POSIX compliant. if GL_GENERATE_ERRNO_H errno.h: errno.in.h $(top_builddir)/config.status $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \ -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \ -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \ -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \ -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \ -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \ -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \ $(srcdir)/errno.in.h > $@-t $(AM_V_at)mv $@-t $@ else errno.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += errno.h errno.h-t EXTRA_DIST += errno.in.h ## end gnulib module errno ## begin gnulib module error if GL_COND_OBJ_ERROR libgnu_la_SOURCES += error.c endif ## end gnulib module error ## begin gnulib module error-h BUILT_SOURCES += $(ERROR_H) # We need the following in order to create when the system # doesn't have one that works. if GL_GENERATE_ERROR_H error.h: error.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''HAVE_ERROR''@|$(HAVE_ERROR)|g' \ -e 's|@''HAVE_ERROR_AT_LINE''@|$(HAVE_ERROR_AT_LINE)|g' \ -e 's|@''REPLACE_ERROR''@|$(REPLACE_ERROR)|g' \ -e 's|@''REPLACE_ERROR_AT_LINE''@|$(REPLACE_ERROR_AT_LINE)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ $(srcdir)/error.in.h > $@-t $(AM_V_at)mv $@-t $@ else error.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += error.h error.h-t EXTRA_DIST += error.in.h ## end gnulib module error-h ## begin gnulib module exitfail libgnu_la_SOURCES += exitfail.c EXTRA_DIST += exitfail.h ## end gnulib module exitfail ## begin gnulib module extract-trace EXTRA_DIST += $(top_srcdir)/build-aux/extract-trace ## end gnulib module extract-trace ## begin gnulib module fcntl if GL_COND_OBJ_FCNTL libgnu_la_SOURCES += fcntl.c endif ## end gnulib module fcntl ## begin gnulib module fcntl-h BUILT_SOURCES += fcntl.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. fcntl.h: fcntl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \ -e 's/@''GNULIB_CREAT''@/$(GL_GNULIB_CREAT)/g' \ -e 's/@''GNULIB_FCNTL''@/$(GL_GNULIB_FCNTL)/g' \ -e 's/@''GNULIB_NONBLOCKING''@/$(GL_GNULIB_NONBLOCKING)/g' \ -e 's/@''GNULIB_OPEN''@/$(GL_GNULIB_OPEN)/g' \ -e 's/@''GNULIB_OPENAT''@/$(GL_GNULIB_OPENAT)/g' \ -e 's/@''GNULIB_MDA_CREAT''@/$(GL_GNULIB_MDA_CREAT)/g' \ -e 's/@''GNULIB_MDA_OPEN''@/$(GL_GNULIB_MDA_OPEN)/g' \ -e 's|@''HAVE_FCNTL''@|$(HAVE_FCNTL)|g' \ -e 's|@''HAVE_OPENAT''@|$(HAVE_OPENAT)|g' \ -e 's|@''REPLACE_CREAT''@|$(REPLACE_CREAT)|g' \ -e 's|@''REPLACE_FCNTL''@|$(REPLACE_FCNTL)|g' \ -e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \ -e 's|@''REPLACE_OPENAT''@|$(REPLACE_OPENAT)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/fcntl.in.h > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += fcntl.h fcntl.h-t EXTRA_DIST += fcntl.in.h ## end gnulib module fcntl-h ## begin gnulib module fd-hook libgnu_la_SOURCES += fd-hook.c EXTRA_DIST += fd-hook.h ## end gnulib module fd-hook ## begin gnulib module filename EXTRA_DIST += filename.h ## end gnulib module filename ## begin gnulib module float BUILT_SOURCES += $(FLOAT_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_FLOAT_H float.h: float.in.h $(top_builddir)/config.status $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_FLOAT_H''@|$(NEXT_FLOAT_H)|g' \ -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \ $(srcdir)/float.in.h > $@-t $(AM_V_at)mv $@-t $@ else float.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += float.h float.h-t if GL_COND_OBJ_FLOAT libgnu_la_SOURCES += float.c endif if GL_COND_OBJ_ITOLD libgnu_la_SOURCES += itold.c endif EXTRA_DIST += float.in.h ## end gnulib module float ## begin gnulib module fpucw EXTRA_DIST += fpucw.h ## end gnulib module fpucw ## begin gnulib module free-posix if GL_COND_OBJ_FREE libgnu_la_SOURCES += free.c endif ## end gnulib module free-posix ## begin gnulib module frexp-nolibm EXTRA_DIST += frexp.c EXTRA_libgnu_la_SOURCES += frexp.c ## end gnulib module frexp-nolibm ## begin gnulib module frexpl-nolibm EXTRA_DIST += frexp.c frexpl.c EXTRA_libgnu_la_SOURCES += frexp.c frexpl.c ## end gnulib module frexpl-nolibm ## begin gnulib module fseterr if GL_COND_OBJ_FSETERR libgnu_la_SOURCES += fseterr.c endif EXTRA_DIST += fseterr.h stdio-impl.h ## end gnulib module fseterr ## begin gnulib module fstat if GL_COND_OBJ_FSTAT libgnu_la_SOURCES += fstat.c endif EXTRA_DIST += stat-w32.c stat-w32.h EXTRA_libgnu_la_SOURCES += stat-w32.c ## end gnulib module fstat ## begin gnulib module funclib.sh EXTRA_DIST += $(top_srcdir)/build-aux/funclib.sh ## end gnulib module funclib.sh ## begin gnulib module gen-header # In 'sed', replace the pattern space with a "DO NOT EDIT" comment. SED_HEADER_NOEDIT = s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */, # '$(SED_HEADER_STDOUT) -e "..."' runs 'sed' but first outputs "DO NOT EDIT". SED_HEADER_STDOUT = sed -e 1h -e '1$(SED_HEADER_NOEDIT)' -e 1G # '$(SED_HEADER_TO_AT_t) FILE' copies FILE to $@-t, prepending a leading # "DO_NOT_EDIT". Although this could be done more simply via: # SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) > $@-t # the -n and 'w' avoid a fork+exec, at least when GNU Make is used. SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) -n -e 'w $@-t' # Use $(gl_V_at) instead of $(AM_V_GEN) or $(AM_V_at) on a line that gl_V_at = $(AM_V_GEN) ## end gnulib module gen-header ## begin gnulib module getdtablesize if GL_COND_OBJ_GETDTABLESIZE libgnu_la_SOURCES += getdtablesize.c endif ## end gnulib module getdtablesize ## begin gnulib module getopt-posix BUILT_SOURCES += $(GETOPT_H) $(GETOPT_CDEFS_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_GETOPT_H getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ $(srcdir)/getopt.in.h > $@-t $(AM_V_at)mv $@-t $@ else getopt.h: $(top_builddir)/config.status rm -f $@ endif if GL_GENERATE_GETOPT_CDEFS_H getopt-cdefs.h: getopt-cdefs.in.h $(top_builddir)/config.status $(AM_V_GEN)$(SED_HEADER_STDOUT) \ -e 's|@''HAVE_SYS_CDEFS_H''@|$(HAVE_SYS_CDEFS_H)|g' \ $(srcdir)/getopt-cdefs.in.h > $@-t $(AM_V_at)mv $@-t $@ else getopt-cdefs.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += getopt.h getopt.h-t getopt-cdefs.h getopt-cdefs.h-t if GL_COND_OBJ_GETOPT libgnu_la_SOURCES += getopt.c getopt1.c endif EXTRA_DIST += getopt-cdefs.in.h getopt-core.h getopt-ext.h getopt-pfx-core.h getopt-pfx-ext.h getopt.in.h getopt_int.h ## end gnulib module getopt-posix ## begin gnulib module getprogname if GL_COND_OBJ_GETPROGNAME libgnu_la_SOURCES += getprogname.c endif EXTRA_DIST += getprogname.h ## end gnulib module getprogname ## begin gnulib module getrandom if GL_COND_OBJ_GETRANDOM libgnu_la_SOURCES += getrandom.c endif ## end gnulib module getrandom ## begin gnulib module gettext-h libgnu_la_SOURCES += gettext.h ## end gnulib module gettext-h ## begin gnulib module glibc-internal/scratch_buffer BUILT_SOURCES += malloc/scratch_buffer.gl.h malloc/scratch_buffer.gl.h: malloc/scratch_buffer.h $(AM_V_GEN)$(MKDIR_P) '%reldir%/malloc' $(AM_V_at)$(SED_HEADER_STDOUT) \ -e 's|__always_inline|inline _GL_ATTRIBUTE_ALWAYS_INLINE|g' \ -e 's|__glibc_likely|_GL_LIKELY|g' \ -e 's|__glibc_unlikely|_GL_UNLIKELY|g' \ -e '/libc_hidden_proto/d' \ $(srcdir)/malloc/scratch_buffer.h > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += malloc/scratch_buffer.gl.h malloc/scratch_buffer.gl.h-t libgnu_la_SOURCES += malloc/scratch_buffer_grow.c malloc/scratch_buffer_grow_preserve.c malloc/scratch_buffer_set_array_size.c EXTRA_DIST += malloc/scratch_buffer.h scratch_buffer.h ## end gnulib module glibc-internal/scratch_buffer ## begin gnulib module hard-locale libgnu_la_SOURCES += hard-locale.c EXTRA_DIST += hard-locale.h ## end gnulib module hard-locale ## begin gnulib module hash libgnu_la_SOURCES += hash.c EXTRA_DIST += hash.h ## end gnulib module hash ## begin gnulib module havelib EXTRA_DIST += $(top_srcdir)/build-aux/config.rpath ## end gnulib module havelib ## begin gnulib module ialloc libgnu_la_SOURCES += ialloc.c EXTRA_DIST += ialloc.h ## end gnulib module ialloc ## begin gnulib module idx libgnu_la_SOURCES += idx.h ## end gnulib module idx ## begin gnulib module inline-source EXTRA_DIST += $(top_srcdir)/build-aux/inline-source ## end gnulib module inline-source ## begin gnulib module intprops EXTRA_DIST += intprops-internal.h intprops.h ## end gnulib module intprops ## begin gnulib module inttypes-incomplete BUILT_SOURCES += inttypes.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. inttypes.h: inttypes.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_INTTYPES_H''@|$(NEXT_INTTYPES_H)|g' \ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ -e 's/@''PRIPTR_PREFIX''@/$(PRIPTR_PREFIX)/g' \ -e 's/@''GNULIB_IMAXABS''@/$(GL_GNULIB_IMAXABS)/g' \ -e 's/@''GNULIB_IMAXDIV''@/$(GL_GNULIB_IMAXDIV)/g' \ -e 's/@''GNULIB_STRTOIMAX''@/$(GL_GNULIB_STRTOIMAX)/g' \ -e 's/@''GNULIB_STRTOUMAX''@/$(GL_GNULIB_STRTOUMAX)/g' \ -e 's/@''HAVE_DECL_IMAXABS''@/$(HAVE_DECL_IMAXABS)/g' \ -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \ -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \ -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \ -e 's/@''HAVE_IMAXDIV_T''@/$(HAVE_IMAXDIV_T)/g' \ -e 's/@''REPLACE_IMAXABS''@/$(REPLACE_IMAXABS)/g' \ -e 's/@''REPLACE_IMAXDIV''@/$(REPLACE_IMAXDIV)/g' \ -e 's/@''REPLACE_STRTOIMAX''@/$(REPLACE_STRTOIMAX)/g' \ -e 's/@''REPLACE_STRTOUMAX''@/$(REPLACE_STRTOUMAX)/g' \ -e 's/@''INT32_MAX_LT_INTMAX_MAX''@/$(INT32_MAX_LT_INTMAX_MAX)/g' \ -e 's/@''INT64_MAX_EQ_LONG_MAX''@/$(INT64_MAX_EQ_LONG_MAX)/g' \ -e 's/@''UINT32_MAX_LT_UINTMAX_MAX''@/$(UINT32_MAX_LT_UINTMAX_MAX)/g' \ -e 's/@''UINT64_MAX_EQ_ULONG_MAX''@/$(UINT64_MAX_EQ_ULONG_MAX)/g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/inttypes.in.h > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += inttypes.h inttypes.h-t EXTRA_DIST += inttypes.in.h ## end gnulib module inttypes-incomplete ## begin gnulib module isatty if GL_COND_OBJ_ISATTY libgnu_la_SOURCES += isatty.c endif ## end gnulib module isatty ## begin gnulib module isnand-nolibm EXTRA_DIST += float+.h isnan.c isnand-nolibm.h isnand.c EXTRA_libgnu_la_SOURCES += isnan.c isnand.c ## end gnulib module isnand-nolibm ## begin gnulib module isnanf-nolibm EXTRA_DIST += float+.h isnan.c isnanf-nolibm.h isnanf.c EXTRA_libgnu_la_SOURCES += isnan.c isnanf.c ## end gnulib module isnanf-nolibm ## begin gnulib module isnanl-nolibm EXTRA_DIST += float+.h isnan.c isnanl-nolibm.h isnanl.c EXTRA_libgnu_la_SOURCES += isnan.c isnanl.c ## end gnulib module isnanl-nolibm ## begin gnulib module libc-config EXTRA_DIST += cdefs.h libc-config.h ## end gnulib module libc-config ## begin gnulib module limits-h BUILT_SOURCES += $(LIMITS_H) # We need the following in order to create when the system # doesn't have one that is compatible with GNU. if GL_GENERATE_LIMITS_H limits.h: limits.in.h $(top_builddir)/config.status $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_LIMITS_H''@|$(NEXT_LIMITS_H)|g' \ $(srcdir)/limits.in.h > $@-t $(AM_V_at)mv $@-t $@ else limits.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += limits.h limits.h-t EXTRA_DIST += limits.in.h ## end gnulib module limits-h ## begin gnulib module localcharset libgnu_la_SOURCES += localcharset.c EXTRA_DIST += localcharset.h ## end gnulib module localcharset ## begin gnulib module locale BUILT_SOURCES += locale.h # We need the following in order to create when the system # doesn't have one that provides all definitions. locale.h: locale.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_LOCALE_H''@|$(NEXT_LOCALE_H)|g' \ -e 's/@''GNULIB_LOCALECONV''@/$(GL_GNULIB_LOCALECONV)/g' \ -e 's/@''GNULIB_SETLOCALE''@/$(GL_GNULIB_SETLOCALE)/g' \ -e 's/@''GNULIB_SETLOCALE_NULL''@/$(GL_GNULIB_SETLOCALE_NULL)/g' \ -e 's/@''GNULIB_DUPLOCALE''@/$(GL_GNULIB_DUPLOCALE)/g' \ -e 's/@''GNULIB_LOCALENAME''@/$(GL_GNULIB_LOCALENAME)/g' \ -e 's|@''HAVE_NEWLOCALE''@|$(HAVE_NEWLOCALE)|g' \ -e 's|@''HAVE_DUPLOCALE''@|$(HAVE_DUPLOCALE)|g' \ -e 's|@''HAVE_FREELOCALE''@|$(HAVE_FREELOCALE)|g' \ -e 's|@''HAVE_XLOCALE_H''@|$(HAVE_XLOCALE_H)|g' \ -e 's|@''REPLACE_LOCALECONV''@|$(REPLACE_LOCALECONV)|g' \ -e 's|@''REPLACE_SETLOCALE''@|$(REPLACE_SETLOCALE)|g' \ -e 's|@''REPLACE_NEWLOCALE''@|$(REPLACE_NEWLOCALE)|g' \ -e 's|@''REPLACE_DUPLOCALE''@|$(REPLACE_DUPLOCALE)|g' \ -e 's|@''REPLACE_FREELOCALE''@|$(REPLACE_FREELOCALE)|g' \ -e 's|@''REPLACE_STRUCT_LCONV''@|$(REPLACE_STRUCT_LCONV)|g' \ -e 's|@''LOCALENAME_ENHANCE_LOCALE_FUNCS''@|$(LOCALENAME_ENHANCE_LOCALE_FUNCS)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/locale.in.h > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += locale.h locale.h-t EXTRA_DIST += locale.in.h ## end gnulib module locale ## begin gnulib module lstat if GL_COND_OBJ_LSTAT libgnu_la_SOURCES += lstat.c endif ## end gnulib module lstat ## begin gnulib module malloc-gnu EXTRA_DIST += malloc.c EXTRA_libgnu_la_SOURCES += malloc.c ## end gnulib module malloc-gnu ## begin gnulib module malloc-posix EXTRA_DIST += malloc.c EXTRA_libgnu_la_SOURCES += malloc.c ## end gnulib module malloc-posix ## begin gnulib module malloca libgnu_la_SOURCES += malloca.c EXTRA_DIST += malloca.h ## end gnulib module malloca ## begin gnulib module math BUILT_SOURCES += math.h libgnu_la_SOURCES += math.c # We need the following in order to create when the system # doesn't have one that works with the given compiler. math.h: math.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT_AS_FIRST_DIRECTIVE''@|$(INCLUDE_NEXT_AS_FIRST_DIRECTIVE)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_AS_FIRST_DIRECTIVE_MATH_H''@|$(NEXT_AS_FIRST_DIRECTIVE_MATH_H)|g' \ -e 's/@''GNULIB_ACOSF''@/$(GL_GNULIB_ACOSF)/g' \ -e 's/@''GNULIB_ACOSL''@/$(GL_GNULIB_ACOSL)/g' \ -e 's/@''GNULIB_ASINF''@/$(GL_GNULIB_ASINF)/g' \ -e 's/@''GNULIB_ASINL''@/$(GL_GNULIB_ASINL)/g' \ -e 's/@''GNULIB_ATANF''@/$(GL_GNULIB_ATANF)/g' \ -e 's/@''GNULIB_ATANL''@/$(GL_GNULIB_ATANL)/g' \ -e 's/@''GNULIB_ATAN2F''@/$(GL_GNULIB_ATAN2F)/g' \ -e 's/@''GNULIB_CBRT''@/$(GL_GNULIB_CBRT)/g' \ -e 's/@''GNULIB_CBRTF''@/$(GL_GNULIB_CBRTF)/g' \ -e 's/@''GNULIB_CBRTL''@/$(GL_GNULIB_CBRTL)/g' \ -e 's/@''GNULIB_CEIL''@/$(GL_GNULIB_CEIL)/g' \ -e 's/@''GNULIB_CEILF''@/$(GL_GNULIB_CEILF)/g' \ -e 's/@''GNULIB_CEILL''@/$(GL_GNULIB_CEILL)/g' \ -e 's/@''GNULIB_COPYSIGN''@/$(GL_GNULIB_COPYSIGN)/g' \ -e 's/@''GNULIB_COPYSIGNF''@/$(GL_GNULIB_COPYSIGNF)/g' \ -e 's/@''GNULIB_COPYSIGNL''@/$(GL_GNULIB_COPYSIGNL)/g' \ -e 's/@''GNULIB_COSF''@/$(GL_GNULIB_COSF)/g' \ -e 's/@''GNULIB_COSL''@/$(GL_GNULIB_COSL)/g' \ -e 's/@''GNULIB_COSHF''@/$(GL_GNULIB_COSHF)/g' \ -e 's/@''GNULIB_EXPF''@/$(GL_GNULIB_EXPF)/g' \ -e 's/@''GNULIB_EXPL''@/$(GL_GNULIB_EXPL)/g' \ -e 's/@''GNULIB_EXP2''@/$(GL_GNULIB_EXP2)/g' \ -e 's/@''GNULIB_EXP2F''@/$(GL_GNULIB_EXP2F)/g' \ -e 's/@''GNULIB_EXP2L''@/$(GL_GNULIB_EXP2L)/g' \ -e 's/@''GNULIB_EXPM1''@/$(GL_GNULIB_EXPM1)/g' \ -e 's/@''GNULIB_EXPM1F''@/$(GL_GNULIB_EXPM1F)/g' \ -e 's/@''GNULIB_EXPM1L''@/$(GL_GNULIB_EXPM1L)/g' \ -e 's/@''GNULIB_FABSF''@/$(GL_GNULIB_FABSF)/g' \ -e 's/@''GNULIB_FABSL''@/$(GL_GNULIB_FABSL)/g' \ -e 's/@''GNULIB_FLOOR''@/$(GL_GNULIB_FLOOR)/g' \ -e 's/@''GNULIB_FLOORF''@/$(GL_GNULIB_FLOORF)/g' \ -e 's/@''GNULIB_FLOORL''@/$(GL_GNULIB_FLOORL)/g' \ -e 's/@''GNULIB_FMA''@/$(GL_GNULIB_FMA)/g' \ -e 's/@''GNULIB_FMAF''@/$(GL_GNULIB_FMAF)/g' \ -e 's/@''GNULIB_FMAL''@/$(GL_GNULIB_FMAL)/g' \ -e 's/@''GNULIB_FMOD''@/$(GL_GNULIB_FMOD)/g' \ -e 's/@''GNULIB_FMODF''@/$(GL_GNULIB_FMODF)/g' \ -e 's/@''GNULIB_FMODL''@/$(GL_GNULIB_FMODL)/g' \ -e 's/@''GNULIB_FREXPF''@/$(GL_GNULIB_FREXPF)/g' \ -e 's/@''GNULIB_FREXP''@/$(GL_GNULIB_FREXP)/g' \ -e 's/@''GNULIB_FREXPL''@/$(GL_GNULIB_FREXPL)/g' \ -e 's/@''GNULIB_HYPOT''@/$(GL_GNULIB_HYPOT)/g' \ -e 's/@''GNULIB_HYPOTF''@/$(GL_GNULIB_HYPOTF)/g' \ -e 's/@''GNULIB_HYPOTL''@/$(GL_GNULIB_HYPOTL)/g' \ < $(srcdir)/math.in.h | \ sed -e 's/@''GNULIB_ILOGB''@/$(GL_GNULIB_ILOGB)/g' \ -e 's/@''GNULIB_ILOGBF''@/$(GL_GNULIB_ILOGBF)/g' \ -e 's/@''GNULIB_ILOGBL''@/$(GL_GNULIB_ILOGBL)/g' \ -e 's/@''GNULIB_ISFINITE''@/$(GL_GNULIB_ISFINITE)/g' \ -e 's/@''GNULIB_ISINF''@/$(GL_GNULIB_ISINF)/g' \ -e 's/@''GNULIB_ISNAN''@/$(GL_GNULIB_ISNAN)/g' \ -e 's/@''GNULIB_ISNANF''@/$(GL_GNULIB_ISNANF)/g' \ -e 's/@''GNULIB_ISNAND''@/$(GL_GNULIB_ISNAND)/g' \ -e 's/@''GNULIB_ISNANL''@/$(GL_GNULIB_ISNANL)/g' \ -e 's/@''GNULIB_LDEXPF''@/$(GL_GNULIB_LDEXPF)/g' \ -e 's/@''GNULIB_LDEXPL''@/$(GL_GNULIB_LDEXPL)/g' \ -e 's/@''GNULIB_LOG''@/$(GL_GNULIB_LOG)/g' \ -e 's/@''GNULIB_LOGF''@/$(GL_GNULIB_LOGF)/g' \ -e 's/@''GNULIB_LOGL''@/$(GL_GNULIB_LOGL)/g' \ -e 's/@''GNULIB_LOG10''@/$(GL_GNULIB_LOG10)/g' \ -e 's/@''GNULIB_LOG10F''@/$(GL_GNULIB_LOG10F)/g' \ -e 's/@''GNULIB_LOG10L''@/$(GL_GNULIB_LOG10L)/g' \ -e 's/@''GNULIB_LOG1P''@/$(GL_GNULIB_LOG1P)/g' \ -e 's/@''GNULIB_LOG1PF''@/$(GL_GNULIB_LOG1PF)/g' \ -e 's/@''GNULIB_LOG1PL''@/$(GL_GNULIB_LOG1PL)/g' \ -e 's/@''GNULIB_LOG2''@/$(GL_GNULIB_LOG2)/g' \ -e 's/@''GNULIB_LOG2F''@/$(GL_GNULIB_LOG2F)/g' \ -e 's/@''GNULIB_LOG2L''@/$(GL_GNULIB_LOG2L)/g' \ -e 's/@''GNULIB_LOGB''@/$(GL_GNULIB_LOGB)/g' \ -e 's/@''GNULIB_LOGBF''@/$(GL_GNULIB_LOGBF)/g' \ -e 's/@''GNULIB_LOGBL''@/$(GL_GNULIB_LOGBL)/g' \ -e 's/@''GNULIB_MODF''@/$(GL_GNULIB_MODF)/g' \ -e 's/@''GNULIB_MODFF''@/$(GL_GNULIB_MODFF)/g' \ -e 's/@''GNULIB_MODFL''@/$(GL_GNULIB_MODFL)/g' \ -e 's/@''GNULIB_POWF''@/$(GL_GNULIB_POWF)/g' \ -e 's/@''GNULIB_REMAINDER''@/$(GL_GNULIB_REMAINDER)/g' \ -e 's/@''GNULIB_REMAINDERF''@/$(GL_GNULIB_REMAINDERF)/g' \ -e 's/@''GNULIB_REMAINDERL''@/$(GL_GNULIB_REMAINDERL)/g' \ -e 's/@''GNULIB_RINT''@/$(GL_GNULIB_RINT)/g' \ -e 's/@''GNULIB_RINTF''@/$(GL_GNULIB_RINTF)/g' \ -e 's/@''GNULIB_RINTL''@/$(GL_GNULIB_RINTL)/g' \ -e 's/@''GNULIB_ROUND''@/$(GL_GNULIB_ROUND)/g' \ -e 's/@''GNULIB_ROUNDF''@/$(GL_GNULIB_ROUNDF)/g' \ -e 's/@''GNULIB_ROUNDL''@/$(GL_GNULIB_ROUNDL)/g' \ -e 's/@''GNULIB_SIGNBIT''@/$(GL_GNULIB_SIGNBIT)/g' \ -e 's/@''GNULIB_SINF''@/$(GL_GNULIB_SINF)/g' \ -e 's/@''GNULIB_SINL''@/$(GL_GNULIB_SINL)/g' \ -e 's/@''GNULIB_SINHF''@/$(GL_GNULIB_SINHF)/g' \ -e 's/@''GNULIB_SQRTF''@/$(GL_GNULIB_SQRTF)/g' \ -e 's/@''GNULIB_SQRTL''@/$(GL_GNULIB_SQRTL)/g' \ -e 's/@''GNULIB_TANF''@/$(GL_GNULIB_TANF)/g' \ -e 's/@''GNULIB_TANL''@/$(GL_GNULIB_TANL)/g' \ -e 's/@''GNULIB_TANHF''@/$(GL_GNULIB_TANHF)/g' \ -e 's/@''GNULIB_TRUNC''@/$(GL_GNULIB_TRUNC)/g' \ -e 's/@''GNULIB_TRUNCF''@/$(GL_GNULIB_TRUNCF)/g' \ -e 's/@''GNULIB_TRUNCL''@/$(GL_GNULIB_TRUNCL)/g' \ -e 's/@''GNULIB_MDA_J0''@/$(GL_GNULIB_MDA_J0)/g' \ -e 's/@''GNULIB_MDA_J1''@/$(GL_GNULIB_MDA_J1)/g' \ -e 's/@''GNULIB_MDA_JN''@/$(GL_GNULIB_MDA_JN)/g' \ -e 's/@''GNULIB_MDA_Y0''@/$(GL_GNULIB_MDA_Y0)/g' \ -e 's/@''GNULIB_MDA_Y1''@/$(GL_GNULIB_MDA_Y1)/g' \ -e 's/@''GNULIB_MDA_YN''@/$(GL_GNULIB_MDA_YN)/g' \ | \ sed -e 's|@''HAVE_ACOSF''@|$(HAVE_ACOSF)|g' \ -e 's|@''HAVE_ACOSL''@|$(HAVE_ACOSL)|g' \ -e 's|@''HAVE_ASINF''@|$(HAVE_ASINF)|g' \ -e 's|@''HAVE_ASINL''@|$(HAVE_ASINL)|g' \ -e 's|@''HAVE_ATANF''@|$(HAVE_ATANF)|g' \ -e 's|@''HAVE_ATANL''@|$(HAVE_ATANL)|g' \ -e 's|@''HAVE_ATAN2F''@|$(HAVE_ATAN2F)|g' \ -e 's|@''HAVE_CBRT''@|$(HAVE_CBRT)|g' \ -e 's|@''HAVE_CBRTF''@|$(HAVE_CBRTF)|g' \ -e 's|@''HAVE_CBRTL''@|$(HAVE_CBRTL)|g' \ -e 's|@''HAVE_COPYSIGN''@|$(HAVE_COPYSIGN)|g' \ -e 's|@''HAVE_COPYSIGNL''@|$(HAVE_COPYSIGNL)|g' \ -e 's|@''HAVE_COSF''@|$(HAVE_COSF)|g' \ -e 's|@''HAVE_COSL''@|$(HAVE_COSL)|g' \ -e 's|@''HAVE_COSHF''@|$(HAVE_COSHF)|g' \ -e 's|@''HAVE_EXPF''@|$(HAVE_EXPF)|g' \ -e 's|@''HAVE_EXPL''@|$(HAVE_EXPL)|g' \ -e 's|@''HAVE_EXPM1''@|$(HAVE_EXPM1)|g' \ -e 's|@''HAVE_EXPM1F''@|$(HAVE_EXPM1F)|g' \ -e 's|@''HAVE_FABSF''@|$(HAVE_FABSF)|g' \ -e 's|@''HAVE_FABSL''@|$(HAVE_FABSL)|g' \ -e 's|@''HAVE_FMA''@|$(HAVE_FMA)|g' \ -e 's|@''HAVE_FMAF''@|$(HAVE_FMAF)|g' \ -e 's|@''HAVE_FMAL''@|$(HAVE_FMAL)|g' \ -e 's|@''HAVE_FMODF''@|$(HAVE_FMODF)|g' \ -e 's|@''HAVE_FMODL''@|$(HAVE_FMODL)|g' \ -e 's|@''HAVE_FREXPF''@|$(HAVE_FREXPF)|g' \ -e 's|@''HAVE_HYPOTF''@|$(HAVE_HYPOTF)|g' \ -e 's|@''HAVE_HYPOTL''@|$(HAVE_HYPOTL)|g' \ -e 's|@''HAVE_ILOGB''@|$(HAVE_ILOGB)|g' \ -e 's|@''HAVE_ILOGBF''@|$(HAVE_ILOGBF)|g' \ -e 's|@''HAVE_ILOGBL''@|$(HAVE_ILOGBL)|g' \ -e 's|@''HAVE_ISNANF''@|$(HAVE_ISNANF)|g' \ -e 's|@''HAVE_ISNAND''@|$(HAVE_ISNAND)|g' \ -e 's|@''HAVE_ISNANL''@|$(HAVE_ISNANL)|g' \ -e 's|@''HAVE_LDEXPF''@|$(HAVE_LDEXPF)|g' \ -e 's|@''HAVE_LOGF''@|$(HAVE_LOGF)|g' \ -e 's|@''HAVE_LOGL''@|$(HAVE_LOGL)|g' \ -e 's|@''HAVE_LOG10F''@|$(HAVE_LOG10F)|g' \ -e 's|@''HAVE_LOG10L''@|$(HAVE_LOG10L)|g' \ -e 's|@''HAVE_LOG1P''@|$(HAVE_LOG1P)|g' \ -e 's|@''HAVE_LOG1PF''@|$(HAVE_LOG1PF)|g' \ -e 's|@''HAVE_LOG1PL''@|$(HAVE_LOG1PL)|g' \ -e 's|@''HAVE_LOGBF''@|$(HAVE_LOGBF)|g' \ -e 's|@''HAVE_LOGBL''@|$(HAVE_LOGBL)|g' \ -e 's|@''HAVE_MODFF''@|$(HAVE_MODFF)|g' \ -e 's|@''HAVE_MODFL''@|$(HAVE_MODFL)|g' \ -e 's|@''HAVE_POWF''@|$(HAVE_POWF)|g' \ -e 's|@''HAVE_REMAINDER''@|$(HAVE_REMAINDER)|g' \ -e 's|@''HAVE_REMAINDERF''@|$(HAVE_REMAINDERF)|g' \ -e 's|@''HAVE_RINT''@|$(HAVE_RINT)|g' \ -e 's|@''HAVE_RINTL''@|$(HAVE_RINTL)|g' \ -e 's|@''HAVE_SINF''@|$(HAVE_SINF)|g' \ -e 's|@''HAVE_SINL''@|$(HAVE_SINL)|g' \ -e 's|@''HAVE_SINHF''@|$(HAVE_SINHF)|g' \ -e 's|@''HAVE_SQRTF''@|$(HAVE_SQRTF)|g' \ -e 's|@''HAVE_SQRTL''@|$(HAVE_SQRTL)|g' \ -e 's|@''HAVE_TANF''@|$(HAVE_TANF)|g' \ -e 's|@''HAVE_TANL''@|$(HAVE_TANL)|g' \ -e 's|@''HAVE_TANHF''@|$(HAVE_TANHF)|g' \ -e 's|@''HAVE_DECL_ACOSL''@|$(HAVE_DECL_ACOSL)|g' \ -e 's|@''HAVE_DECL_ASINL''@|$(HAVE_DECL_ASINL)|g' \ -e 's|@''HAVE_DECL_ATANL''@|$(HAVE_DECL_ATANL)|g' \ -e 's|@''HAVE_DECL_CBRTF''@|$(HAVE_DECL_CBRTF)|g' \ -e 's|@''HAVE_DECL_CBRTL''@|$(HAVE_DECL_CBRTL)|g' \ -e 's|@''HAVE_DECL_CEILF''@|$(HAVE_DECL_CEILF)|g' \ -e 's|@''HAVE_DECL_CEILL''@|$(HAVE_DECL_CEILL)|g' \ -e 's|@''HAVE_DECL_COPYSIGNF''@|$(HAVE_DECL_COPYSIGNF)|g' \ -e 's|@''HAVE_DECL_COSL''@|$(HAVE_DECL_COSL)|g' \ -e 's|@''HAVE_DECL_EXPL''@|$(HAVE_DECL_EXPL)|g' \ -e 's|@''HAVE_DECL_EXP2''@|$(HAVE_DECL_EXP2)|g' \ -e 's|@''HAVE_DECL_EXP2F''@|$(HAVE_DECL_EXP2F)|g' \ -e 's|@''HAVE_DECL_EXP2L''@|$(HAVE_DECL_EXP2L)|g' \ -e 's|@''HAVE_DECL_EXPM1L''@|$(HAVE_DECL_EXPM1L)|g' \ -e 's|@''HAVE_DECL_FLOORF''@|$(HAVE_DECL_FLOORF)|g' \ -e 's|@''HAVE_DECL_FLOORL''@|$(HAVE_DECL_FLOORL)|g' \ -e 's|@''HAVE_DECL_FREXPL''@|$(HAVE_DECL_FREXPL)|g' \ -e 's|@''HAVE_DECL_LDEXPL''@|$(HAVE_DECL_LDEXPL)|g' \ -e 's|@''HAVE_DECL_LOGL''@|$(HAVE_DECL_LOGL)|g' \ -e 's|@''HAVE_DECL_LOG10L''@|$(HAVE_DECL_LOG10L)|g' \ -e 's|@''HAVE_DECL_LOG2''@|$(HAVE_DECL_LOG2)|g' \ -e 's|@''HAVE_DECL_LOG2F''@|$(HAVE_DECL_LOG2F)|g' \ -e 's|@''HAVE_DECL_LOG2L''@|$(HAVE_DECL_LOG2L)|g' \ -e 's|@''HAVE_DECL_LOGB''@|$(HAVE_DECL_LOGB)|g' \ -e 's|@''HAVE_DECL_REMAINDER''@|$(HAVE_DECL_REMAINDER)|g' \ -e 's|@''HAVE_DECL_REMAINDERL''@|$(HAVE_DECL_REMAINDERL)|g' \ -e 's|@''HAVE_DECL_RINTF''@|$(HAVE_DECL_RINTF)|g' \ -e 's|@''HAVE_DECL_ROUND''@|$(HAVE_DECL_ROUND)|g' \ -e 's|@''HAVE_DECL_ROUNDF''@|$(HAVE_DECL_ROUNDF)|g' \ -e 's|@''HAVE_DECL_ROUNDL''@|$(HAVE_DECL_ROUNDL)|g' \ -e 's|@''HAVE_DECL_SINL''@|$(HAVE_DECL_SINL)|g' \ -e 's|@''HAVE_DECL_SQRTL''@|$(HAVE_DECL_SQRTL)|g' \ -e 's|@''HAVE_DECL_TANL''@|$(HAVE_DECL_TANL)|g' \ -e 's|@''HAVE_DECL_TRUNC''@|$(HAVE_DECL_TRUNC)|g' \ -e 's|@''HAVE_DECL_TRUNCF''@|$(HAVE_DECL_TRUNCF)|g' \ -e 's|@''HAVE_DECL_TRUNCL''@|$(HAVE_DECL_TRUNCL)|g' \ | \ sed -e 's|@''REPLACE_ACOSF''@|$(REPLACE_ACOSF)|g' \ -e 's|@''REPLACE_ASINF''@|$(REPLACE_ASINF)|g' \ -e 's|@''REPLACE_ATANF''@|$(REPLACE_ATANF)|g' \ -e 's|@''REPLACE_ATAN2F''@|$(REPLACE_ATAN2F)|g' \ -e 's|@''REPLACE_CBRTF''@|$(REPLACE_CBRTF)|g' \ -e 's|@''REPLACE_CBRTL''@|$(REPLACE_CBRTL)|g' \ -e 's|@''REPLACE_CEIL''@|$(REPLACE_CEIL)|g' \ -e 's|@''REPLACE_CEILF''@|$(REPLACE_CEILF)|g' \ -e 's|@''REPLACE_CEILL''@|$(REPLACE_CEILL)|g' \ -e 's|@''REPLACE_COSF''@|$(REPLACE_COSF)|g' \ -e 's|@''REPLACE_COSHF''@|$(REPLACE_COSHF)|g' \ -e 's|@''REPLACE_EXPF''@|$(REPLACE_EXPF)|g' \ -e 's|@''REPLACE_EXPL''@|$(REPLACE_EXPL)|g' \ -e 's|@''REPLACE_EXPM1''@|$(REPLACE_EXPM1)|g' \ -e 's|@''REPLACE_EXPM1F''@|$(REPLACE_EXPM1F)|g' \ -e 's|@''REPLACE_EXPM1L''@|$(REPLACE_EXPM1L)|g' \ -e 's|@''REPLACE_EXP2''@|$(REPLACE_EXP2)|g' \ -e 's|@''REPLACE_EXP2L''@|$(REPLACE_EXP2L)|g' \ -e 's|@''REPLACE_FABSL''@|$(REPLACE_FABSL)|g' \ -e 's|@''REPLACE_FLOOR''@|$(REPLACE_FLOOR)|g' \ -e 's|@''REPLACE_FLOORF''@|$(REPLACE_FLOORF)|g' \ -e 's|@''REPLACE_FLOORL''@|$(REPLACE_FLOORL)|g' \ -e 's|@''REPLACE_FMA''@|$(REPLACE_FMA)|g' \ -e 's|@''REPLACE_FMAF''@|$(REPLACE_FMAF)|g' \ -e 's|@''REPLACE_FMAL''@|$(REPLACE_FMAL)|g' \ -e 's|@''REPLACE_FMOD''@|$(REPLACE_FMOD)|g' \ -e 's|@''REPLACE_FMODF''@|$(REPLACE_FMODF)|g' \ -e 's|@''REPLACE_FMODL''@|$(REPLACE_FMODL)|g' \ -e 's|@''REPLACE_FREXPF''@|$(REPLACE_FREXPF)|g' \ -e 's|@''REPLACE_FREXP''@|$(REPLACE_FREXP)|g' \ -e 's|@''REPLACE_FREXPL''@|$(REPLACE_FREXPL)|g' \ -e 's|@''REPLACE_HUGE_VAL''@|$(REPLACE_HUGE_VAL)|g' \ -e 's|@''REPLACE_HYPOT''@|$(REPLACE_HYPOT)|g' \ -e 's|@''REPLACE_HYPOTF''@|$(REPLACE_HYPOTF)|g' \ -e 's|@''REPLACE_HYPOTL''@|$(REPLACE_HYPOTL)|g' \ -e 's|@''REPLACE_ILOGB''@|$(REPLACE_ILOGB)|g' \ -e 's|@''REPLACE_ILOGBF''@|$(REPLACE_ILOGBF)|g' \ -e 's|@''REPLACE_ILOGBL''@|$(REPLACE_ILOGBL)|g' \ -e 's|@''REPLACE_ISFINITE''@|$(REPLACE_ISFINITE)|g' \ -e 's|@''REPLACE_ISINF''@|$(REPLACE_ISINF)|g' \ -e 's|@''REPLACE_ISNAN''@|$(REPLACE_ISNAN)|g' \ -e 's|@''REPLACE_ITOLD''@|$(REPLACE_ITOLD)|g' \ -e 's|@''REPLACE_LDEXPL''@|$(REPLACE_LDEXPL)|g' \ -e 's|@''REPLACE_LOG''@|$(REPLACE_LOG)|g' \ -e 's|@''REPLACE_LOGF''@|$(REPLACE_LOGF)|g' \ -e 's|@''REPLACE_LOGL''@|$(REPLACE_LOGL)|g' \ -e 's|@''REPLACE_LOG10''@|$(REPLACE_LOG10)|g' \ -e 's|@''REPLACE_LOG10F''@|$(REPLACE_LOG10F)|g' \ -e 's|@''REPLACE_LOG10L''@|$(REPLACE_LOG10L)|g' \ -e 's|@''REPLACE_LOG1P''@|$(REPLACE_LOG1P)|g' \ -e 's|@''REPLACE_LOG1PF''@|$(REPLACE_LOG1PF)|g' \ -e 's|@''REPLACE_LOG1PL''@|$(REPLACE_LOG1PL)|g' \ -e 's|@''REPLACE_LOG2''@|$(REPLACE_LOG2)|g' \ -e 's|@''REPLACE_LOG2F''@|$(REPLACE_LOG2F)|g' \ -e 's|@''REPLACE_LOG2L''@|$(REPLACE_LOG2L)|g' \ -e 's|@''REPLACE_LOGB''@|$(REPLACE_LOGB)|g' \ -e 's|@''REPLACE_LOGBF''@|$(REPLACE_LOGBF)|g' \ -e 's|@''REPLACE_LOGBL''@|$(REPLACE_LOGBL)|g' \ -e 's|@''REPLACE_MODF''@|$(REPLACE_MODF)|g' \ -e 's|@''REPLACE_MODFF''@|$(REPLACE_MODFF)|g' \ -e 's|@''REPLACE_MODFL''@|$(REPLACE_MODFL)|g' \ -e 's|@''REPLACE_NAN''@|$(REPLACE_NAN)|g' \ -e 's|@''REPLACE_REMAINDER''@|$(REPLACE_REMAINDER)|g' \ -e 's|@''REPLACE_REMAINDERF''@|$(REPLACE_REMAINDERF)|g' \ -e 's|@''REPLACE_REMAINDERL''@|$(REPLACE_REMAINDERL)|g' \ -e 's|@''REPLACE_RINTL''@|$(REPLACE_RINTL)|g' \ -e 's|@''REPLACE_ROUND''@|$(REPLACE_ROUND)|g' \ -e 's|@''REPLACE_ROUNDF''@|$(REPLACE_ROUNDF)|g' \ -e 's|@''REPLACE_ROUNDL''@|$(REPLACE_ROUNDL)|g' \ -e 's|@''REPLACE_SIGNBIT''@|$(REPLACE_SIGNBIT)|g' \ -e 's|@''REPLACE_SIGNBIT_USING_BUILTINS''@|$(REPLACE_SIGNBIT_USING_BUILTINS)|g' \ -e 's|@''REPLACE_SINF''@|$(REPLACE_SINF)|g' \ -e 's|@''REPLACE_SINHF''@|$(REPLACE_SINHF)|g' \ -e 's|@''REPLACE_SQRTF''@|$(REPLACE_SQRTF)|g' \ -e 's|@''REPLACE_SQRTL''@|$(REPLACE_SQRTL)|g' \ -e 's|@''REPLACE_TANF''@|$(REPLACE_TANF)|g' \ -e 's|@''REPLACE_TANHF''@|$(REPLACE_TANHF)|g' \ -e 's|@''REPLACE_TRUNC''@|$(REPLACE_TRUNC)|g' \ -e 's|@''REPLACE_TRUNCF''@|$(REPLACE_TRUNCF)|g' \ -e 's|@''REPLACE_TRUNCL''@|$(REPLACE_TRUNCL)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += math.h math.h-t EXTRA_DIST += math.in.h ## end gnulib module math ## begin gnulib module mbrtowc if GL_COND_OBJ_MBRTOWC libgnu_la_SOURCES += mbrtowc.c endif EXTRA_DIST += lc-charset-dispatch.c lc-charset-dispatch.h mbrtowc-impl-utf8.h mbrtowc-impl.h mbtowc-lock.c mbtowc-lock.h windows-initguard.h EXTRA_libgnu_la_SOURCES += lc-charset-dispatch.c mbtowc-lock.c ## end gnulib module mbrtowc ## begin gnulib module mbsinit if GL_COND_OBJ_MBSINIT libgnu_la_SOURCES += mbsinit.c endif ## end gnulib module mbsinit ## begin gnulib module memchr if GL_COND_OBJ_MEMCHR libgnu_la_SOURCES += memchr.c endif EXTRA_DIST += memchr.valgrind ## end gnulib module memchr ## begin gnulib module mempcpy if GL_COND_OBJ_MEMPCPY libgnu_la_SOURCES += mempcpy.c endif ## end gnulib module mempcpy ## begin gnulib module minmax libgnu_la_SOURCES += minmax.h ## end gnulib module minmax ## begin gnulib module mkdir if GL_COND_OBJ_MKDIR libgnu_la_SOURCES += mkdir.c endif ## end gnulib module mkdir ## begin gnulib module mkstemps if GL_COND_OBJ_MKSTEMPS libgnu_la_SOURCES += mkstemps.c endif ## end gnulib module mkstemps ## begin gnulib module msvc-inval if GL_COND_OBJ_MSVC_INVAL libgnu_la_SOURCES += msvc-inval.c endif EXTRA_DIST += msvc-inval.h ## end gnulib module msvc-inval ## begin gnulib module msvc-nothrow if GL_COND_OBJ_MSVC_NOTHROW libgnu_la_SOURCES += msvc-nothrow.c endif EXTRA_DIST += msvc-nothrow.h ## end gnulib module msvc-nothrow ## begin gnulib module open if GL_COND_OBJ_OPEN libgnu_la_SOURCES += open.c endif ## end gnulib module open ## begin gnulib module options-parser EXTRA_DIST += $(top_srcdir)/build-aux/options-parser ## end gnulib module options-parser ## begin gnulib module pathmax EXTRA_DIST += pathmax.h ## end gnulib module pathmax ## begin gnulib module pipe-posix if GL_COND_OBJ_PIPE libgnu_la_SOURCES += pipe.c endif ## end gnulib module pipe-posix ## begin gnulib module printf-frexp libgnu_la_SOURCES += printf-frexp.c EXTRA_DIST += printf-frexp.h ## end gnulib module printf-frexp ## begin gnulib module printf-frexpl libgnu_la_SOURCES += printf-frexpl.c EXTRA_DIST += printf-frexp.c printf-frexpl.h EXTRA_libgnu_la_SOURCES += printf-frexp.c ## end gnulib module printf-frexpl ## begin gnulib module quote EXTRA_DIST += quote.h ## end gnulib module quote ## begin gnulib module quotearg libgnu_la_SOURCES += quotearg.c EXTRA_DIST += quote.h quotearg.h ## end gnulib module quotearg ## begin gnulib module raise if GL_COND_OBJ_RAISE libgnu_la_SOURCES += raise.c endif ## end gnulib module raise ## begin gnulib module rawmemchr if GL_COND_OBJ_RAWMEMCHR libgnu_la_SOURCES += rawmemchr.c endif EXTRA_DIST += rawmemchr.valgrind ## end gnulib module rawmemchr ## begin gnulib module readlink if GL_COND_OBJ_READLINK libgnu_la_SOURCES += readlink.c endif ## end gnulib module readlink ## begin gnulib module realloc-gnu EXTRA_DIST += realloc.c EXTRA_libgnu_la_SOURCES += realloc.c ## end gnulib module realloc-gnu ## begin gnulib module realloc-posix EXTRA_DIST += realloc.c EXTRA_libgnu_la_SOURCES += realloc.c ## end gnulib module realloc-posix ## begin gnulib module reallocarray if GL_COND_OBJ_REALLOCARRAY libgnu_la_SOURCES += reallocarray.c endif ## end gnulib module reallocarray ## begin gnulib module setlocale-null libgnu_la_SOURCES += setlocale_null.c if GL_COND_OBJ_SETLOCALE_LOCK libgnu_la_SOURCES += setlocale-lock.c endif EXTRA_DIST += setlocale_null.h windows-initguard.h ## end gnulib module setlocale-null ## begin gnulib module sigaction if GL_COND_OBJ_SIGACTION libgnu_la_SOURCES += sigaction.c endif libgnu_la_SOURCES += sig-handler.c EXTRA_DIST += sig-handler.h ## end gnulib module sigaction ## begin gnulib module signal-h BUILT_SOURCES += signal.h # We need the following in order to create when the system # doesn't have a complete one. signal.h: signal.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SIGNAL_H''@|$(NEXT_SIGNAL_H)|g' \ -e 's/@''GNULIB_PTHREAD_SIGMASK''@/$(GL_GNULIB_PTHREAD_SIGMASK)/g' \ -e 's/@''GNULIB_RAISE''@/$(GL_GNULIB_RAISE)/g' \ -e 's/@''GNULIB_SIGNAL_H_SIGPIPE''@/$(GL_GNULIB_SIGNAL_H_SIGPIPE)/g' \ -e 's/@''GNULIB_SIGPROCMASK''@/$(GL_GNULIB_SIGPROCMASK)/g' \ -e 's/@''GNULIB_SIGACTION''@/$(GL_GNULIB_SIGACTION)/g' \ -e 's|@''HAVE_POSIX_SIGNALBLOCKING''@|$(HAVE_POSIX_SIGNALBLOCKING)|g' \ -e 's|@''HAVE_PTHREAD_SIGMASK''@|$(HAVE_PTHREAD_SIGMASK)|g' \ -e 's|@''HAVE_RAISE''@|$(HAVE_RAISE)|g' \ -e 's|@''HAVE_SIGSET_T''@|$(HAVE_SIGSET_T)|g' \ -e 's|@''HAVE_SIGINFO_T''@|$(HAVE_SIGINFO_T)|g' \ -e 's|@''HAVE_SIGACTION''@|$(HAVE_SIGACTION)|g' \ -e 's|@''HAVE_STRUCT_SIGACTION_SA_SIGACTION''@|$(HAVE_STRUCT_SIGACTION_SA_SIGACTION)|g' \ -e 's|@''HAVE_TYPE_VOLATILE_SIG_ATOMIC_T''@|$(HAVE_TYPE_VOLATILE_SIG_ATOMIC_T)|g' \ -e 's|@''HAVE_SIGHANDLER_T''@|$(HAVE_SIGHANDLER_T)|g' \ -e 's|@''REPLACE_PTHREAD_SIGMASK''@|$(REPLACE_PTHREAD_SIGMASK)|g' \ -e 's|@''REPLACE_RAISE''@|$(REPLACE_RAISE)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/signal.in.h > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += signal.h signal.h-t EXTRA_DIST += signal.in.h ## end gnulib module signal-h ## begin gnulib module signbit if GL_COND_OBJ_SIGNBIT3 libgnu_la_SOURCES += signbitf.c signbitd.c signbitl.c endif EXTRA_DIST += float+.h ## end gnulib module signbit ## begin gnulib module sigprocmask if GL_COND_OBJ_SIGPROCMASK libgnu_la_SOURCES += sigprocmask.c endif ## end gnulib module sigprocmask ## begin gnulib module size_max libgnu_la_SOURCES += size_max.h ## end gnulib module size_max ## begin gnulib module snippet/_Noreturn # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all makefiles that # need it. This is ensured by the applicability 'all' defined above. _NORETURN_H=$(srcdir)/_Noreturn.h EXTRA_DIST += _Noreturn.h ## end gnulib module snippet/_Noreturn ## begin gnulib module snippet/arg-nonnull # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all makefiles that # need it. This is ensured by the applicability 'all' defined above. ARG_NONNULL_H=$(srcdir)/arg-nonnull.h EXTRA_DIST += arg-nonnull.h ## end gnulib module snippet/arg-nonnull ## begin gnulib module snippet/c++defs # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all makefiles that # need it. This is ensured by the applicability 'all' defined above. CXXDEFS_H=$(srcdir)/c++defs.h EXTRA_DIST += c++defs.h ## end gnulib module snippet/c++defs ## begin gnulib module snippet/warn-on-use # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all makefiles that # need it. This is ensured by the applicability 'all' defined above. WARN_ON_USE_H=$(srcdir)/warn-on-use.h EXTRA_DIST += warn-on-use.h ## end gnulib module snippet/warn-on-use ## begin gnulib module stat if GL_COND_OBJ_STAT libgnu_la_SOURCES += stat.c endif EXTRA_DIST += stat-w32.c stat-w32.h EXTRA_libgnu_la_SOURCES += stat-w32.c ## end gnulib module stat ## begin gnulib module stat-time libgnu_la_SOURCES += stat-time.c EXTRA_DIST += stat-time.h ## end gnulib module stat-time ## begin gnulib module stdckdint BUILT_SOURCES += $(STDCKDINT_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDCKDINT_H stdckdint.h: stdckdint.in.h $(top_builddir)/config.status $(gl_V_at)$(SED_HEADER_STDOUT) \ $(srcdir)/stdckdint.in.h > $@-t $(AM_V_at)mv $@-t $@ else stdckdint.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stdckdint.h stdckdint.h-t EXTRA_DIST += intprops-internal.h stdckdint.in.h ## end gnulib module stdckdint ## begin gnulib module stddef BUILT_SOURCES += $(STDDEF_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDDEF_H stddef.h: stddef.in.h $(top_builddir)/config.status $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \ -e 's|@''HAVE_MAX_ALIGN_T''@|$(HAVE_MAX_ALIGN_T)|g' \ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \ $(srcdir)/stddef.in.h > $@-t $(AM_V_at)mv $@-t $@ else stddef.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stddef.h stddef.h-t EXTRA_DIST += stddef.in.h ## end gnulib module stddef ## begin gnulib module stdint BUILT_SOURCES += $(STDINT_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDINT_H stdint.h: stdint.in.h $(top_builddir)/config.status $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ -e 's/@''HAVE_C99_STDINT_H''@/$(HAVE_C99_STDINT_H)/g' \ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ -e 's/@''GNULIBHEADERS_OVERRIDE_WINT_T''@/$(GNULIBHEADERS_OVERRIDE_WINT_T)/g' \ $(srcdir)/stdint.in.h > $@-t $(AM_V_at)mv $@-t $@ else stdint.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stdint.h stdint.h-t EXTRA_DIST += stdint.in.h ## end gnulib module stdint ## begin gnulib module stdio BUILT_SOURCES += stdio.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \ -e 's/@''GNULIB_DPRINTF''@/$(GL_GNULIB_DPRINTF)/g' \ -e 's/@''GNULIB_FCLOSE''@/$(GL_GNULIB_FCLOSE)/g' \ -e 's/@''GNULIB_FDOPEN''@/$(GL_GNULIB_FDOPEN)/g' \ -e 's/@''GNULIB_FFLUSH''@/$(GL_GNULIB_FFLUSH)/g' \ -e 's/@''GNULIB_FGETC''@/$(GL_GNULIB_FGETC)/g' \ -e 's/@''GNULIB_FGETS''@/$(GL_GNULIB_FGETS)/g' \ -e 's/@''GNULIB_FOPEN''@/$(GL_GNULIB_FOPEN)/g' \ -e 's/@''GNULIB_FOPEN_GNU''@/$(GL_GNULIB_FOPEN_GNU)/g' \ -e 's/@''GNULIB_FPRINTF''@/$(GL_GNULIB_FPRINTF)/g' \ -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GL_GNULIB_FPRINTF_POSIX)/g' \ -e 's/@''GNULIB_FPURGE''@/$(GL_GNULIB_FPURGE)/g' \ -e 's/@''GNULIB_FPUTC''@/$(GL_GNULIB_FPUTC)/g' \ -e 's/@''GNULIB_FPUTS''@/$(GL_GNULIB_FPUTS)/g' \ -e 's/@''GNULIB_FREAD''@/$(GL_GNULIB_FREAD)/g' \ -e 's/@''GNULIB_FREOPEN''@/$(GL_GNULIB_FREOPEN)/g' \ -e 's/@''GNULIB_FSCANF''@/$(GL_GNULIB_FSCANF)/g' \ -e 's/@''GNULIB_FSEEK''@/$(GL_GNULIB_FSEEK)/g' \ -e 's/@''GNULIB_FSEEKO''@/$(GL_GNULIB_FSEEKO)/g' \ -e 's/@''GNULIB_FTELL''@/$(GL_GNULIB_FTELL)/g' \ -e 's/@''GNULIB_FTELLO''@/$(GL_GNULIB_FTELLO)/g' \ -e 's/@''GNULIB_FWRITE''@/$(GL_GNULIB_FWRITE)/g' \ -e 's/@''GNULIB_GETC''@/$(GL_GNULIB_GETC)/g' \ -e 's/@''GNULIB_GETCHAR''@/$(GL_GNULIB_GETCHAR)/g' \ -e 's/@''GNULIB_GETDELIM''@/$(GL_GNULIB_GETDELIM)/g' \ -e 's/@''GNULIB_GETLINE''@/$(GL_GNULIB_GETLINE)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GL_GNULIB_OBSTACK_PRINTF)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GL_GNULIB_OBSTACK_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PCLOSE''@/$(GL_GNULIB_PCLOSE)/g' \ -e 's/@''GNULIB_PERROR''@/$(GL_GNULIB_PERROR)/g' \ -e 's/@''GNULIB_POPEN''@/$(GL_GNULIB_POPEN)/g' \ -e 's/@''GNULIB_PRINTF''@/$(GL_GNULIB_PRINTF)/g' \ -e 's/@''GNULIB_PRINTF_POSIX''@/$(GL_GNULIB_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PUTC''@/$(GL_GNULIB_PUTC)/g' \ -e 's/@''GNULIB_PUTCHAR''@/$(GL_GNULIB_PUTCHAR)/g' \ -e 's/@''GNULIB_PUTS''@/$(GL_GNULIB_PUTS)/g' \ -e 's/@''GNULIB_REMOVE''@/$(GL_GNULIB_REMOVE)/g' \ -e 's/@''GNULIB_RENAME''@/$(GL_GNULIB_RENAME)/g' \ -e 's/@''GNULIB_RENAMEAT''@/$(GL_GNULIB_RENAMEAT)/g' \ -e 's/@''GNULIB_SCANF''@/$(GL_GNULIB_SCANF)/g' \ -e 's/@''GNULIB_SNPRINTF''@/$(GL_GNULIB_SNPRINTF)/g' \ -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GL_GNULIB_SPRINTF_POSIX)/g' \ -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GL_GNULIB_STDIO_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GL_GNULIB_STDIO_H_SIGPIPE)/g' \ -e 's/@''GNULIB_TMPFILE''@/$(GL_GNULIB_TMPFILE)/g' \ -e 's/@''GNULIB_VASPRINTF''@/$(GL_GNULIB_VASPRINTF)/g' \ -e 's/@''GNULIB_VDPRINTF''@/$(GL_GNULIB_VDPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF''@/$(GL_GNULIB_VFPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GL_GNULIB_VFPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VFSCANF''@/$(GL_GNULIB_VFSCANF)/g' \ -e 's/@''GNULIB_VSCANF''@/$(GL_GNULIB_VSCANF)/g' \ -e 's/@''GNULIB_VPRINTF''@/$(GL_GNULIB_VPRINTF)/g' \ -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GL_GNULIB_VPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VSNPRINTF''@/$(GL_GNULIB_VSNPRINTF)/g' \ -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GL_GNULIB_VSPRINTF_POSIX)/g' \ -e 's/@''GNULIB_MDA_FCLOSEALL''@/$(GL_GNULIB_MDA_FCLOSEALL)/g' \ -e 's/@''GNULIB_MDA_FDOPEN''@/$(GL_GNULIB_MDA_FDOPEN)/g' \ -e 's/@''GNULIB_MDA_FILENO''@/$(GL_GNULIB_MDA_FILENO)/g' \ -e 's/@''GNULIB_MDA_GETW''@/$(GL_GNULIB_MDA_GETW)/g' \ -e 's/@''GNULIB_MDA_PUTW''@/$(GL_GNULIB_MDA_PUTW)/g' \ -e 's/@''GNULIB_MDA_TEMPNAM''@/$(GL_GNULIB_MDA_TEMPNAM)/g' \ < $(srcdir)/stdio.in.h | \ sed -e 's|@''HAVE_DECL_FCLOSEALL''@|$(HAVE_DECL_FCLOSEALL)|g' \ -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \ -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \ -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \ -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \ -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \ -e 's|@''HAVE_DECL_GETW''@|$(HAVE_DECL_GETW)|g' \ -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \ -e 's|@''HAVE_DECL_PUTW''@|$(HAVE_DECL_PUTW)|g' \ -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \ -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \ -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \ -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \ -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \ -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \ -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \ -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \ -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \ -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \ -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \ -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \ -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \ -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \ -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \ -e 's|@''REPLACE_FOPEN_FOR_FOPEN_GNU''@|$(REPLACE_FOPEN_FOR_FOPEN_GNU)|g' \ -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \ -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \ -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \ -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \ -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \ -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \ -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \ -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \ -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \ -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \ -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \ -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \ -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \ -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \ -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \ -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \ -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \ -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \ -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \ -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \ -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \ -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \ -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \ -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \ -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \ -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \ -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \ -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += stdio.h stdio.h-t if GL_COND_OBJ_STDIO_READ libgnu_la_SOURCES += stdio-read.c endif if GL_COND_OBJ_STDIO_WRITE libgnu_la_SOURCES += stdio-write.c endif EXTRA_DIST += stdio.in.h ## end gnulib module stdio ## begin gnulib module stdlib BUILT_SOURCES += stdlib.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \ $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \ -e 's/@''GNULIB__EXIT''@/$(GL_GNULIB__EXIT)/g' \ -e 's/@''GNULIB_ALIGNED_ALLOC''@/$(GL_GNULIB_ALIGNED_ALLOC)/g' \ -e 's/@''GNULIB_ATOLL''@/$(GL_GNULIB_ATOLL)/g' \ -e 's/@''GNULIB_CALLOC_GNU''@/$(GL_GNULIB_CALLOC_GNU)/g' \ -e 's/@''GNULIB_CALLOC_POSIX''@/$(GL_GNULIB_CALLOC_POSIX)/g' \ -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GL_GNULIB_CANONICALIZE_FILE_NAME)/g' \ -e 's/@''GNULIB_FREE_POSIX''@/$(GL_GNULIB_FREE_POSIX)/g' \ -e 's/@''GNULIB_GETLOADAVG''@/$(GL_GNULIB_GETLOADAVG)/g' \ -e 's/@''GNULIB_GETPROGNAME''@/$(GL_GNULIB_GETPROGNAME)/g' \ -e 's/@''GNULIB_GETSUBOPT''@/$(GL_GNULIB_GETSUBOPT)/g' \ -e 's/@''GNULIB_GRANTPT''@/$(GL_GNULIB_GRANTPT)/g' \ -e 's/@''GNULIB_MALLOC_GNU''@/$(GL_GNULIB_MALLOC_GNU)/g' \ -e 's/@''GNULIB_MALLOC_POSIX''@/$(GL_GNULIB_MALLOC_POSIX)/g' \ -e 's/@''GNULIB_MBTOWC''@/$(GL_GNULIB_MBTOWC)/g' \ -e 's/@''GNULIB_MKDTEMP''@/$(GL_GNULIB_MKDTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMP''@/$(GL_GNULIB_MKOSTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMPS''@/$(GL_GNULIB_MKOSTEMPS)/g' \ -e 's/@''GNULIB_MKSTEMP''@/$(GL_GNULIB_MKSTEMP)/g' \ -e 's/@''GNULIB_MKSTEMPS''@/$(GL_GNULIB_MKSTEMPS)/g' \ -e 's/@''GNULIB_POSIX_MEMALIGN''@/$(GL_GNULIB_POSIX_MEMALIGN)/g' \ -e 's/@''GNULIB_POSIX_OPENPT''@/$(GL_GNULIB_POSIX_OPENPT)/g' \ -e 's/@''GNULIB_PTSNAME''@/$(GL_GNULIB_PTSNAME)/g' \ -e 's/@''GNULIB_PTSNAME_R''@/$(GL_GNULIB_PTSNAME_R)/g' \ -e 's/@''GNULIB_PUTENV''@/$(GL_GNULIB_PUTENV)/g' \ -e 's/@''GNULIB_QSORT_R''@/$(GL_GNULIB_QSORT_R)/g' \ -e 's/@''GNULIB_RANDOM''@/$(GL_GNULIB_RANDOM)/g' \ -e 's/@''GNULIB_RANDOM_R''@/$(GL_GNULIB_RANDOM_R)/g' \ -e 's/@''GNULIB_REALLOC_GNU''@/$(GL_GNULIB_REALLOC_GNU)/g' \ -e 's/@''GNULIB_REALLOC_POSIX''@/$(GL_GNULIB_REALLOC_POSIX)/g' \ -e 's/@''GNULIB_REALLOCARRAY''@/$(GL_GNULIB_REALLOCARRAY)/g' \ -e 's/@''GNULIB_REALPATH''@/$(GL_GNULIB_REALPATH)/g' \ -e 's/@''GNULIB_RPMATCH''@/$(GL_GNULIB_RPMATCH)/g' \ -e 's/@''GNULIB_SECURE_GETENV''@/$(GL_GNULIB_SECURE_GETENV)/g' \ -e 's/@''GNULIB_SETENV''@/$(GL_GNULIB_SETENV)/g' \ -e 's/@''GNULIB_STRTOD''@/$(GL_GNULIB_STRTOD)/g' \ -e 's/@''GNULIB_STRTOL''@/$(GL_GNULIB_STRTOL)/g' \ -e 's/@''GNULIB_STRTOLD''@/$(GL_GNULIB_STRTOLD)/g' \ -e 's/@''GNULIB_STRTOLL''@/$(GL_GNULIB_STRTOLL)/g' \ -e 's/@''GNULIB_STRTOUL''@/$(GL_GNULIB_STRTOUL)/g' \ -e 's/@''GNULIB_STRTOULL''@/$(GL_GNULIB_STRTOULL)/g' \ -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GL_GNULIB_SYSTEM_POSIX)/g' \ -e 's/@''GNULIB_UNLOCKPT''@/$(GL_GNULIB_UNLOCKPT)/g' \ -e 's/@''GNULIB_UNSETENV''@/$(GL_GNULIB_UNSETENV)/g' \ -e 's/@''GNULIB_WCTOMB''@/$(GL_GNULIB_WCTOMB)/g' \ -e 's/@''GNULIB_MDA_ECVT''@/$(GL_GNULIB_MDA_ECVT)/g' \ -e 's/@''GNULIB_MDA_FCVT''@/$(GL_GNULIB_MDA_FCVT)/g' \ -e 's/@''GNULIB_MDA_GCVT''@/$(GL_GNULIB_MDA_GCVT)/g' \ -e 's/@''GNULIB_MDA_MKTEMP''@/$(GL_GNULIB_MDA_MKTEMP)/g' \ -e 's/@''GNULIB_MDA_PUTENV''@/$(GL_GNULIB_MDA_PUTENV)/g' \ < $(srcdir)/stdlib.in.h | \ sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \ -e 's|@''HAVE_ALIGNED_ALLOC''@|$(HAVE_ALIGNED_ALLOC)|g' \ -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \ -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''HAVE_DECL_ECVT''@|$(HAVE_DECL_ECVT)|g' \ -e 's|@''HAVE_DECL_FCVT''@|$(HAVE_DECL_FCVT)|g' \ -e 's|@''HAVE_DECL_GCVT''@|$(HAVE_DECL_GCVT)|g' \ -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \ -e 's|@''HAVE_GETPROGNAME''@|$(HAVE_GETPROGNAME)|g' \ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \ -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \ -e 's|@''HAVE_INITSTATE''@|$(HAVE_INITSTATE)|g' \ -e 's|@''HAVE_DECL_INITSTATE''@|$(HAVE_DECL_INITSTATE)|g' \ -e 's|@''HAVE_MBTOWC''@|$(HAVE_MBTOWC)|g' \ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \ -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \ -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \ -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \ -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \ -e 's|@''HAVE_POSIX_MEMALIGN''@|$(HAVE_POSIX_MEMALIGN)|g' \ -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \ -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \ -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \ -e 's|@''HAVE_QSORT_R''@|$(HAVE_QSORT_R)|g' \ -e 's|@''HAVE_RANDOM''@|$(HAVE_RANDOM)|g' \ -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \ -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \ -e 's|@''HAVE_REALLOCARRAY''@|$(HAVE_REALLOCARRAY)|g' \ -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \ -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \ -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \ -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \ -e 's|@''HAVE_SETSTATE''@|$(HAVE_SETSTATE)|g' \ -e 's|@''HAVE_DECL_SETSTATE''@|$(HAVE_DECL_SETSTATE)|g' \ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \ -e 's|@''HAVE_STRTOL''@|$(HAVE_STRTOL)|g' \ -e 's|@''HAVE_STRTOLD''@|$(HAVE_STRTOLD)|g' \ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \ -e 's|@''HAVE_STRTOUL''@|$(HAVE_STRTOUL)|g' \ -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \ -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \ -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \ -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \ -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \ -e 's|@''REPLACE__EXIT''@|$(REPLACE__EXIT)|g' \ -e 's|@''REPLACE_ALIGNED_ALLOC''@|$(REPLACE_ALIGNED_ALLOC)|g' \ -e 's|@''REPLACE_CALLOC_FOR_CALLOC_GNU''@|$(REPLACE_CALLOC_FOR_CALLOC_GNU)|g' \ -e 's|@''REPLACE_CALLOC_FOR_CALLOC_POSIX''@|$(REPLACE_CALLOC_FOR_CALLOC_POSIX)|g' \ -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''REPLACE_FREE''@|$(REPLACE_FREE)|g' \ -e 's|@''REPLACE_GETLOADAVG''@|$(REPLACE_GETLOADAVG)|g' \ -e 's|@''REPLACE_GETPROGNAME''@|$(REPLACE_GETPROGNAME)|g' \ -e 's|@''REPLACE_GETSUBOPT''@|$(REPLACE_GETSUBOPT)|g' \ -e 's|@''REPLACE_INITSTATE''@|$(REPLACE_INITSTATE)|g' \ -e 's|@''REPLACE_MALLOC_FOR_MALLOC_GNU''@|$(REPLACE_MALLOC_FOR_MALLOC_GNU)|g' \ -e 's|@''REPLACE_MALLOC_FOR_MALLOC_POSIX''@|$(REPLACE_MALLOC_FOR_MALLOC_POSIX)|g' \ -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \ -e 's|@''REPLACE_MKOSTEMP''@|$(REPLACE_MKOSTEMP)|g' \ -e 's|@''REPLACE_MKOSTEMPS''@|$(REPLACE_MKOSTEMPS)|g' \ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \ -e 's|@''REPLACE_POSIX_MEMALIGN''@|$(REPLACE_POSIX_MEMALIGN)|g' \ -e 's|@''REPLACE_POSIX_OPENPT''@|$(REPLACE_POSIX_OPENPT)|g' \ -e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \ -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \ -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \ -e 's|@''REPLACE_QSORT_R''@|$(REPLACE_QSORT_R)|g' \ -e 's|@''REPLACE_RANDOM''@|$(REPLACE_RANDOM)|g' \ -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \ -e 's|@''REPLACE_REALLOC_FOR_REALLOC_GNU''@|$(REPLACE_REALLOC_FOR_REALLOC_GNU)|g' \ -e 's|@''REPLACE_REALLOC_FOR_REALLOC_POSIX''@|$(REPLACE_REALLOC_FOR_REALLOC_POSIX)|g' \ -e 's|@''REPLACE_REALLOCARRAY''@|$(REPLACE_REALLOCARRAY)|g' \ -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \ -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \ -e 's|@''REPLACE_SETSTATE''@|$(REPLACE_SETSTATE)|g' \ -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \ -e 's|@''REPLACE_STRTOL''@|$(REPLACE_STRTOL)|g' \ -e 's|@''REPLACE_STRTOLD''@|$(REPLACE_STRTOLD)|g' \ -e 's|@''REPLACE_STRTOLL''@|$(REPLACE_STRTOLL)|g' \ -e 's|@''REPLACE_STRTOUL''@|$(REPLACE_STRTOUL)|g' \ -e 's|@''REPLACE_STRTOULL''@|$(REPLACE_STRTOULL)|g' \ -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \ -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _Noreturn/r $(_NORETURN_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += stdlib.h stdlib.h-t EXTRA_DIST += stdlib.in.h ## end gnulib module stdlib ## begin gnulib module streq EXTRA_DIST += streq.h ## end gnulib module streq ## begin gnulib module strerror if GL_COND_OBJ_STRERROR libgnu_la_SOURCES += strerror.c endif ## end gnulib module strerror ## begin gnulib module strerror-override if GL_COND_OBJ_STRERROR_OVERRIDE libgnu_la_SOURCES += strerror-override.c endif EXTRA_DIST += strerror-override.h ## end gnulib module strerror-override ## begin gnulib module string BUILT_SOURCES += string.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \ -e 's/@''GNULIB_EXPLICIT_BZERO''@/$(GL_GNULIB_EXPLICIT_BZERO)/g' \ -e 's/@''GNULIB_FFSL''@/$(GL_GNULIB_FFSL)/g' \ -e 's/@''GNULIB_FFSLL''@/$(GL_GNULIB_FFSLL)/g' \ -e 's/@''GNULIB_MBSLEN''@/$(GL_GNULIB_MBSLEN)/g' \ -e 's/@''GNULIB_MBSNLEN''@/$(GL_GNULIB_MBSNLEN)/g' \ -e 's/@''GNULIB_MBSCHR''@/$(GL_GNULIB_MBSCHR)/g' \ -e 's/@''GNULIB_MBSRCHR''@/$(GL_GNULIB_MBSRCHR)/g' \ -e 's/@''GNULIB_MBSSTR''@/$(GL_GNULIB_MBSSTR)/g' \ -e 's/@''GNULIB_MBSCASECMP''@/$(GL_GNULIB_MBSCASECMP)/g' \ -e 's/@''GNULIB_MBSNCASECMP''@/$(GL_GNULIB_MBSNCASECMP)/g' \ -e 's/@''GNULIB_MBSPCASECMP''@/$(GL_GNULIB_MBSPCASECMP)/g' \ -e 's/@''GNULIB_MBSCASESTR''@/$(GL_GNULIB_MBSCASESTR)/g' \ -e 's/@''GNULIB_MBSCSPN''@/$(GL_GNULIB_MBSCSPN)/g' \ -e 's/@''GNULIB_MBSPBRK''@/$(GL_GNULIB_MBSPBRK)/g' \ -e 's/@''GNULIB_MBSSPN''@/$(GL_GNULIB_MBSSPN)/g' \ -e 's/@''GNULIB_MBSSEP''@/$(GL_GNULIB_MBSSEP)/g' \ -e 's/@''GNULIB_MBSTOK_R''@/$(GL_GNULIB_MBSTOK_R)/g' \ -e 's/@''GNULIB_MEMCHR''@/$(GL_GNULIB_MEMCHR)/g' \ -e 's/@''GNULIB_MEMMEM''@/$(GL_GNULIB_MEMMEM)/g' \ -e 's/@''GNULIB_MEMPCPY''@/$(GL_GNULIB_MEMPCPY)/g' \ -e 's/@''GNULIB_MEMRCHR''@/$(GL_GNULIB_MEMRCHR)/g' \ -e 's/@''GNULIB_MEMSET_EXPLICIT''@/$(GL_GNULIB_MEMSET_EXPLICIT)/g' \ -e 's/@''GNULIB_RAWMEMCHR''@/$(GL_GNULIB_RAWMEMCHR)/g' \ -e 's/@''GNULIB_STPCPY''@/$(GL_GNULIB_STPCPY)/g' \ -e 's/@''GNULIB_STPNCPY''@/$(GL_GNULIB_STPNCPY)/g' \ -e 's/@''GNULIB_STRCHRNUL''@/$(GL_GNULIB_STRCHRNUL)/g' \ -e 's/@''GNULIB_STRDUP''@/$(GL_GNULIB_STRDUP)/g' \ -e 's/@''GNULIB_STRNCAT''@/$(GL_GNULIB_STRNCAT)/g' \ -e 's/@''GNULIB_STRNDUP''@/$(GL_GNULIB_STRNDUP)/g' \ -e 's/@''GNULIB_STRNLEN''@/$(GL_GNULIB_STRNLEN)/g' \ -e 's/@''GNULIB_STRPBRK''@/$(GL_GNULIB_STRPBRK)/g' \ -e 's/@''GNULIB_STRSEP''@/$(GL_GNULIB_STRSEP)/g' \ -e 's/@''GNULIB_STRSTR''@/$(GL_GNULIB_STRSTR)/g' \ -e 's/@''GNULIB_STRCASESTR''@/$(GL_GNULIB_STRCASESTR)/g' \ -e 's/@''GNULIB_STRTOK_R''@/$(GL_GNULIB_STRTOK_R)/g' \ -e 's/@''GNULIB_STRERROR''@/$(GL_GNULIB_STRERROR)/g' \ -e 's/@''GNULIB_STRERROR_R''@/$(GL_GNULIB_STRERROR_R)/g' \ -e 's/@''GNULIB_STRERRORNAME_NP''@/$(GL_GNULIB_STRERRORNAME_NP)/g' \ -e 's/@''GNULIB_SIGABBREV_NP''@/$(GL_GNULIB_SIGABBREV_NP)/g' \ -e 's/@''GNULIB_SIGDESCR_NP''@/$(GL_GNULIB_SIGDESCR_NP)/g' \ -e 's/@''GNULIB_STRSIGNAL''@/$(GL_GNULIB_STRSIGNAL)/g' \ -e 's/@''GNULIB_STRVERSCMP''@/$(GL_GNULIB_STRVERSCMP)/g' \ -e 's/@''GNULIB_MDA_MEMCCPY''@/$(GL_GNULIB_MDA_MEMCCPY)/g' \ -e 's/@''GNULIB_MDA_STRDUP''@/$(GL_GNULIB_MDA_STRDUP)/g' \ -e 's/@''GNULIB_FREE_POSIX''@/$(GL_GNULIB_FREE_POSIX)/g' \ < $(srcdir)/string.in.h | \ sed -e 's|@''HAVE_EXPLICIT_BZERO''@|$(HAVE_EXPLICIT_BZERO)|g' \ -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \ -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \ -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ -e 's|@''HAVE_MEMSET_EXPLICIT''@|$(HAVE_MEMSET_EXPLICIT)|g' \ -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \ -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \ -e 's|@''HAVE_STRERRORNAME_NP''@|$(HAVE_STRERRORNAME_NP)|g' \ -e 's|@''HAVE_SIGABBREV_NP''@|$(HAVE_SIGABBREV_NP)|g' \ -e 's|@''HAVE_SIGDESCR_NP''@|$(HAVE_SIGDESCR_NP)|g' \ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ -e 's|@''REPLACE_FFSLL''@|$(REPLACE_FFSLL)|g' \ -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ -e 's|@''REPLACE_MEMPCPY''@|$(REPLACE_MEMPCPY)|g' \ -e 's|@''REPLACE_FREE''@|$(REPLACE_FREE)|g' \ -e 's|@''REPLACE_STPCPY''@|$(REPLACE_STPCPY)|g' \ -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \ -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \ -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \ -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \ -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \ -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \ -e 's|@''REPLACE_STRERRORNAME_NP''@|$(REPLACE_STRERRORNAME_NP)|g' \ -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += string.h string.h-t EXTRA_DIST += string.in.h ## end gnulib module string ## begin gnulib module strndup if GL_COND_OBJ_STRNDUP libgnu_la_SOURCES += strndup.c endif ## end gnulib module strndup ## begin gnulib module strnlen if GL_COND_OBJ_STRNLEN libgnu_la_SOURCES += strnlen.c endif ## end gnulib module strnlen ## begin gnulib module sys_random BUILT_SOURCES += sys/random.h # We need the following in order to create when the system # doesn't have one. sys/random.h: sys_random.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys' $(AM_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_RANDOM_H''@|$(NEXT_SYS_RANDOM_H)|g' \ -e 's|@''HAVE_SYS_RANDOM_H''@|$(HAVE_SYS_RANDOM_H)|g' \ -e 's/@''GNULIB_GETRANDOM''@/$(GL_GNULIB_GETRANDOM)/g' \ -e 's/@''HAVE_GETRANDOM''@/$(HAVE_GETRANDOM)/g' \ -e 's/@''REPLACE_GETRANDOM''@/$(REPLACE_GETRANDOM)/g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/sys_random.in.h > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += sys/random.h sys/random.h-t MOSTLYCLEANDIRS += sys EXTRA_DIST += sys_random.in.h ## end gnulib module sys_random ## begin gnulib module sys_stat BUILT_SOURCES += sys/stat.h # We need the following in order to create when the system # has one that is incomplete. sys/stat.h: sys_stat.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys' $(AM_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \ -e 's|@''WINDOWS_64_BIT_ST_SIZE''@|$(WINDOWS_64_BIT_ST_SIZE)|g' \ -e 's|@''WINDOWS_STAT_TIMESPEC''@|$(WINDOWS_STAT_TIMESPEC)|g' \ -e 's/@''GNULIB_CHMOD''@/$(GL_GNULIB_CHMOD)/g' \ -e 's/@''GNULIB_FCHMODAT''@/$(GL_GNULIB_FCHMODAT)/g' \ -e 's/@''GNULIB_FSTAT''@/$(GL_GNULIB_FSTAT)/g' \ -e 's/@''GNULIB_FSTATAT''@/$(GL_GNULIB_FSTATAT)/g' \ -e 's/@''GNULIB_FUTIMENS''@/$(GL_GNULIB_FUTIMENS)/g' \ -e 's/@''GNULIB_GETUMASK''@/$(GL_GNULIB_GETUMASK)/g' \ -e 's/@''GNULIB_LCHMOD''@/$(GL_GNULIB_LCHMOD)/g' \ -e 's/@''GNULIB_LSTAT''@/$(GL_GNULIB_LSTAT)/g' \ -e 's/@''GNULIB_MKDIR''@/$(GL_GNULIB_MKDIR)/g' \ -e 's/@''GNULIB_MKDIRAT''@/$(GL_GNULIB_MKDIRAT)/g' \ -e 's/@''GNULIB_MKFIFO''@/$(GL_GNULIB_MKFIFO)/g' \ -e 's/@''GNULIB_MKFIFOAT''@/$(GL_GNULIB_MKFIFOAT)/g' \ -e 's/@''GNULIB_MKNOD''@/$(GL_GNULIB_MKNOD)/g' \ -e 's/@''GNULIB_MKNODAT''@/$(GL_GNULIB_MKNODAT)/g' \ -e 's/@''GNULIB_STAT''@/$(GL_GNULIB_STAT)/g' \ -e 's/@''GNULIB_UTIMENSAT''@/$(GL_GNULIB_UTIMENSAT)/g' \ -e 's/@''GNULIB_OVERRIDES_STRUCT_STAT''@/$(GL_GNULIB_OVERRIDES_STRUCT_STAT)/g' \ -e 's/@''GNULIB_MDA_CHMOD''@/$(GL_GNULIB_MDA_CHMOD)/g' \ -e 's/@''GNULIB_MDA_MKDIR''@/$(GL_GNULIB_MDA_MKDIR)/g' \ -e 's/@''GNULIB_MDA_UMASK''@/$(GL_GNULIB_MDA_UMASK)/g' \ -e 's|@''HAVE_FCHMODAT''@|$(HAVE_FCHMODAT)|g' \ -e 's|@''HAVE_FSTATAT''@|$(HAVE_FSTATAT)|g' \ -e 's|@''HAVE_FUTIMENS''@|$(HAVE_FUTIMENS)|g' \ -e 's|@''HAVE_GETUMASK''@|$(HAVE_GETUMASK)|g' \ -e 's|@''HAVE_LCHMOD''@|$(HAVE_LCHMOD)|g' \ -e 's|@''HAVE_LSTAT''@|$(HAVE_LSTAT)|g' \ -e 's|@''HAVE_MKDIRAT''@|$(HAVE_MKDIRAT)|g' \ -e 's|@''HAVE_MKFIFO''@|$(HAVE_MKFIFO)|g' \ -e 's|@''HAVE_MKFIFOAT''@|$(HAVE_MKFIFOAT)|g' \ -e 's|@''HAVE_MKNOD''@|$(HAVE_MKNOD)|g' \ -e 's|@''HAVE_MKNODAT''@|$(HAVE_MKNODAT)|g' \ -e 's|@''HAVE_UTIMENSAT''@|$(HAVE_UTIMENSAT)|g' \ -e 's|@''REPLACE_CHMOD''@|$(REPLACE_CHMOD)|g' \ -e 's|@''REPLACE_FCHMODAT''@|$(REPLACE_FCHMODAT)|g' \ -e 's|@''REPLACE_FSTAT''@|$(REPLACE_FSTAT)|g' \ -e 's|@''REPLACE_FSTATAT''@|$(REPLACE_FSTATAT)|g' \ -e 's|@''REPLACE_FUTIMENS''@|$(REPLACE_FUTIMENS)|g' \ -e 's|@''REPLACE_LSTAT''@|$(REPLACE_LSTAT)|g' \ -e 's|@''REPLACE_MKDIR''@|$(REPLACE_MKDIR)|g' \ -e 's|@''REPLACE_MKFIFO''@|$(REPLACE_MKFIFO)|g' \ -e 's|@''REPLACE_MKFIFOAT''@|$(REPLACE_MKFIFOAT)|g' \ -e 's|@''REPLACE_MKNOD''@|$(REPLACE_MKNOD)|g' \ -e 's|@''REPLACE_MKNODAT''@|$(REPLACE_MKNODAT)|g' \ -e 's|@''REPLACE_STAT''@|$(REPLACE_STAT)|g' \ -e 's|@''REPLACE_UTIMENSAT''@|$(REPLACE_UTIMENSAT)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/sys_stat.in.h > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += sys/stat.h sys/stat.h-t MOSTLYCLEANDIRS += sys EXTRA_DIST += sys_stat.in.h ## end gnulib module sys_stat ## begin gnulib module sys_types BUILT_SOURCES += sys/types.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/types.h: sys_types.in.h $(top_builddir)/config.status $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys' $(AM_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ -e 's|@''WINDOWS_STAT_INODES''@|$(WINDOWS_STAT_INODES)|g' \ $(srcdir)/sys_types.in.h > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += sys/types.h sys/types.h-t EXTRA_DIST += sys_types.in.h ## end gnulib module sys_types ## begin gnulib module sys_wait BUILT_SOURCES += sys/wait.h # We need the following in order to create when the system # has one that is incomplete. sys/wait.h: sys_wait.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys' $(AM_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_WAIT_H''@|$(NEXT_SYS_WAIT_H)|g' \ -e 's/@''GNULIB_WAITPID''@/$(GL_GNULIB_WAITPID)/g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/sys_wait.in.h > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += sys/wait.h sys/wait.h-t MOSTLYCLEANDIRS += sys EXTRA_DIST += sys_wait.in.h ## end gnulib module sys_wait ## begin gnulib module tempname libgnu_la_SOURCES += tempname.c EXTRA_DIST += tempname.h ## end gnulib module tempname ## begin gnulib module time BUILT_SOURCES += time.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \ -e 's/@''GNULIB_CTIME''@/$(GL_GNULIB_CTIME)/g' \ -e 's/@''GNULIB_LOCALTIME''@/$(GL_GNULIB_LOCALTIME)/g' \ -e 's/@''GNULIB_MKTIME''@/$(GL_GNULIB_MKTIME)/g' \ -e 's/@''GNULIB_NANOSLEEP''@/$(GL_GNULIB_NANOSLEEP)/g' \ -e 's/@''GNULIB_STRFTIME''@/$(GL_GNULIB_STRFTIME)/g' \ -e 's/@''GNULIB_STRPTIME''@/$(GL_GNULIB_STRPTIME)/g' \ -e 's/@''GNULIB_TIMEGM''@/$(GL_GNULIB_TIMEGM)/g' \ -e 's/@''GNULIB_TIMESPEC_GET''@/$(GL_GNULIB_TIMESPEC_GET)/g' \ -e 's/@''GNULIB_TIMESPEC_GETRES''@/$(GL_GNULIB_TIMESPEC_GETRES)/g' \ -e 's/@''GNULIB_TIME_R''@/$(GL_GNULIB_TIME_R)/g' \ -e 's/@''GNULIB_TIME_RZ''@/$(GL_GNULIB_TIME_RZ)/g' \ -e 's/@''GNULIB_TZSET''@/$(GL_GNULIB_TZSET)/g' \ -e 's/@''GNULIB_MDA_TZSET''@/$(GL_GNULIB_MDA_TZSET)/g' \ -e 's|@''HAVE_DECL_LOCALTIME_R''@|$(HAVE_DECL_LOCALTIME_R)|g' \ -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \ -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \ -e 's|@''HAVE_TIMEGM''@|$(HAVE_TIMEGM)|g' \ -e 's|@''HAVE_TIMESPEC_GET''@|$(HAVE_TIMESPEC_GET)|g' \ -e 's|@''HAVE_TIMESPEC_GETRES''@|$(HAVE_TIMESPEC_GETRES)|g' \ -e 's|@''HAVE_TIMEZONE_T''@|$(HAVE_TIMEZONE_T)|g' \ -e 's|@''REPLACE_CTIME''@|$(REPLACE_CTIME)|g' \ -e 's|@''REPLACE_GMTIME''@|$(REPLACE_GMTIME)|g' \ -e 's|@''REPLACE_LOCALTIME''@|$(REPLACE_LOCALTIME)|g' \ -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \ -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \ -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \ -e 's|@''REPLACE_STRFTIME''@|$(REPLACE_STRFTIME)|g' \ -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \ -e 's|@''REPLACE_TIMESPEC_GET''@|$(REPLACE_TIMESPEC_GET)|g' \ -e 's|@''REPLACE_TZSET''@|$(REPLACE_TZSET)|g' \ -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''UNISTD_H_DEFINES_STRUCT_TIMESPEC''@|$(UNISTD_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''TIME_H_DEFINES_TIME_UTC''@|$(TIME_H_DEFINES_TIME_UTC)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/time.in.h > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += time.h time.h-t EXTRA_DIST += time.in.h ## end gnulib module time ## begin gnulib module unistd BUILT_SOURCES += unistd.h libgnu_la_SOURCES += unistd.c # We need the following in order to create an empty placeholder for # when the system doesn't have one. unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ -e 's/@''GNULIB_ACCESS''@/$(GL_GNULIB_ACCESS)/g' \ -e 's/@''GNULIB_CHDIR''@/$(GL_GNULIB_CHDIR)/g' \ -e 's/@''GNULIB_CHOWN''@/$(GL_GNULIB_CHOWN)/g' \ -e 's/@''GNULIB_CLOSE''@/$(GL_GNULIB_CLOSE)/g' \ -e 's/@''GNULIB_COPY_FILE_RANGE''@/$(GL_GNULIB_COPY_FILE_RANGE)/g' \ -e 's/@''GNULIB_DUP''@/$(GL_GNULIB_DUP)/g' \ -e 's/@''GNULIB_DUP2''@/$(GL_GNULIB_DUP2)/g' \ -e 's/@''GNULIB_DUP3''@/$(GL_GNULIB_DUP3)/g' \ -e 's/@''GNULIB_ENVIRON''@/$(GL_GNULIB_ENVIRON)/g' \ -e 's/@''GNULIB_EUIDACCESS''@/$(GL_GNULIB_EUIDACCESS)/g' \ -e 's/@''GNULIB_EXECL''@/$(GL_GNULIB_EXECL)/g' \ -e 's/@''GNULIB_EXECLE''@/$(GL_GNULIB_EXECLE)/g' \ -e 's/@''GNULIB_EXECLP''@/$(GL_GNULIB_EXECLP)/g' \ -e 's/@''GNULIB_EXECV''@/$(GL_GNULIB_EXECV)/g' \ -e 's/@''GNULIB_EXECVE''@/$(GL_GNULIB_EXECVE)/g' \ -e 's/@''GNULIB_EXECVP''@/$(GL_GNULIB_EXECVP)/g' \ -e 's/@''GNULIB_EXECVPE''@/$(GL_GNULIB_EXECVPE)/g' \ -e 's/@''GNULIB_FACCESSAT''@/$(GL_GNULIB_FACCESSAT)/g' \ -e 's/@''GNULIB_FCHDIR''@/$(GL_GNULIB_FCHDIR)/g' \ -e 's/@''GNULIB_FCHOWNAT''@/$(GL_GNULIB_FCHOWNAT)/g' \ -e 's/@''GNULIB_FDATASYNC''@/$(GL_GNULIB_FDATASYNC)/g' \ -e 's/@''GNULIB_FSYNC''@/$(GL_GNULIB_FSYNC)/g' \ -e 's/@''GNULIB_FTRUNCATE''@/$(GL_GNULIB_FTRUNCATE)/g' \ -e 's/@''GNULIB_GETCWD''@/$(GL_GNULIB_GETCWD)/g' \ -e 's/@''GNULIB_GETDOMAINNAME''@/$(GL_GNULIB_GETDOMAINNAME)/g' \ -e 's/@''GNULIB_GETDTABLESIZE''@/$(GL_GNULIB_GETDTABLESIZE)/g' \ -e 's/@''GNULIB_GETENTROPY''@/$(GL_GNULIB_GETENTROPY)/g' \ -e 's/@''GNULIB_GETGROUPS''@/$(GL_GNULIB_GETGROUPS)/g' \ -e 's/@''GNULIB_GETHOSTNAME''@/$(GL_GNULIB_GETHOSTNAME)/g' \ -e 's/@''GNULIB_GETLOGIN''@/$(GL_GNULIB_GETLOGIN)/g' \ -e 's/@''GNULIB_GETLOGIN_R''@/$(GL_GNULIB_GETLOGIN_R)/g' \ -e 's/@''GNULIB_GETOPT_POSIX''@/$(GL_GNULIB_GETOPT_POSIX)/g' \ -e 's/@''GNULIB_GETPAGESIZE''@/$(GL_GNULIB_GETPAGESIZE)/g' \ -e 's/@''GNULIB_GETPASS''@/$(GL_GNULIB_GETPASS)/g' \ -e 's/@''GNULIB_GETPASS_GNU''@/$(GL_GNULIB_GETPASS_GNU)/g' \ -e 's/@''GNULIB_GETUSERSHELL''@/$(GL_GNULIB_GETUSERSHELL)/g' \ -e 's/@''GNULIB_GROUP_MEMBER''@/$(GL_GNULIB_GROUP_MEMBER)/g' \ -e 's/@''GNULIB_ISATTY''@/$(GL_GNULIB_ISATTY)/g' \ -e 's/@''GNULIB_LCHOWN''@/$(GL_GNULIB_LCHOWN)/g' \ -e 's/@''GNULIB_LINK''@/$(GL_GNULIB_LINK)/g' \ -e 's/@''GNULIB_LINKAT''@/$(GL_GNULIB_LINKAT)/g' \ -e 's/@''GNULIB_LSEEK''@/$(GL_GNULIB_LSEEK)/g' \ -e 's/@''GNULIB_PIPE''@/$(GL_GNULIB_PIPE)/g' \ -e 's/@''GNULIB_PIPE2''@/$(GL_GNULIB_PIPE2)/g' \ -e 's/@''GNULIB_PREAD''@/$(GL_GNULIB_PREAD)/g' \ -e 's/@''GNULIB_PWRITE''@/$(GL_GNULIB_PWRITE)/g' \ -e 's/@''GNULIB_READ''@/$(GL_GNULIB_READ)/g' \ -e 's/@''GNULIB_READLINK''@/$(GL_GNULIB_READLINK)/g' \ -e 's/@''GNULIB_READLINKAT''@/$(GL_GNULIB_READLINKAT)/g' \ -e 's/@''GNULIB_RMDIR''@/$(GL_GNULIB_RMDIR)/g' \ -e 's/@''GNULIB_SETHOSTNAME''@/$(GL_GNULIB_SETHOSTNAME)/g' \ -e 's/@''GNULIB_SLEEP''@/$(GL_GNULIB_SLEEP)/g' \ -e 's/@''GNULIB_SYMLINK''@/$(GL_GNULIB_SYMLINK)/g' \ -e 's/@''GNULIB_SYMLINKAT''@/$(GL_GNULIB_SYMLINKAT)/g' \ -e 's/@''GNULIB_TRUNCATE''@/$(GL_GNULIB_TRUNCATE)/g' \ -e 's/@''GNULIB_TTYNAME_R''@/$(GL_GNULIB_TTYNAME_R)/g' \ -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GL_GNULIB_UNISTD_H_GETOPT)/g' \ -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GL_GNULIB_UNISTD_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GL_GNULIB_UNISTD_H_SIGPIPE)/g' \ -e 's/@''GNULIB_UNLINK''@/$(GL_GNULIB_UNLINK)/g' \ -e 's/@''GNULIB_UNLINKAT''@/$(GL_GNULIB_UNLINKAT)/g' \ -e 's/@''GNULIB_USLEEP''@/$(GL_GNULIB_USLEEP)/g' \ -e 's/@''GNULIB_WRITE''@/$(GL_GNULIB_WRITE)/g' \ -e 's/@''GNULIB_MDA_ACCESS''@/$(GL_GNULIB_MDA_ACCESS)/g' \ -e 's/@''GNULIB_MDA_CHDIR''@/$(GL_GNULIB_MDA_CHDIR)/g' \ -e 's/@''GNULIB_MDA_CLOSE''@/$(GL_GNULIB_MDA_CLOSE)/g' \ -e 's/@''GNULIB_MDA_DUP''@/$(GL_GNULIB_MDA_DUP)/g' \ -e 's/@''GNULIB_MDA_DUP2''@/$(GL_GNULIB_MDA_DUP2)/g' \ -e 's/@''GNULIB_MDA_EXECL''@/$(GL_GNULIB_MDA_EXECL)/g' \ -e 's/@''GNULIB_MDA_EXECLE''@/$(GL_GNULIB_MDA_EXECLE)/g' \ -e 's/@''GNULIB_MDA_EXECLP''@/$(GL_GNULIB_MDA_EXECLP)/g' \ -e 's/@''GNULIB_MDA_EXECV''@/$(GL_GNULIB_MDA_EXECV)/g' \ -e 's/@''GNULIB_MDA_EXECVE''@/$(GL_GNULIB_MDA_EXECVE)/g' \ -e 's/@''GNULIB_MDA_EXECVP''@/$(GL_GNULIB_MDA_EXECVP)/g' \ -e 's/@''GNULIB_MDA_EXECVPE''@/$(GL_GNULIB_MDA_EXECVPE)/g' \ -e 's/@''GNULIB_MDA_GETCWD''@/$(GL_GNULIB_MDA_GETCWD)/g' \ -e 's/@''GNULIB_MDA_GETPID''@/$(GL_GNULIB_MDA_GETPID)/g' \ -e 's/@''GNULIB_MDA_ISATTY''@/$(GL_GNULIB_MDA_ISATTY)/g' \ -e 's/@''GNULIB_MDA_LSEEK''@/$(GL_GNULIB_MDA_LSEEK)/g' \ -e 's/@''GNULIB_MDA_READ''@/$(GL_GNULIB_MDA_READ)/g' \ -e 's/@''GNULIB_MDA_RMDIR''@/$(GL_GNULIB_MDA_RMDIR)/g' \ -e 's/@''GNULIB_MDA_SWAB''@/$(GL_GNULIB_MDA_SWAB)/g' \ -e 's/@''GNULIB_MDA_UNLINK''@/$(GL_GNULIB_MDA_UNLINK)/g' \ -e 's/@''GNULIB_MDA_WRITE''@/$(GL_GNULIB_MDA_WRITE)/g' \ < $(srcdir)/unistd.in.h | \ sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \ -e 's|@''HAVE_COPY_FILE_RANGE''@|$(HAVE_COPY_FILE_RANGE)|g' \ -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \ -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \ -e 's|@''HAVE_EXECVPE''@|$(HAVE_EXECVPE)|g' \ -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \ -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \ -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \ -e 's|@''HAVE_FDATASYNC''@|$(HAVE_FDATASYNC)|g' \ -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \ -e 's|@''HAVE_GETENTROPY''@|$(HAVE_GETENTROPY)|g' \ -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \ -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \ -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \ -e 's|@''HAVE_GETPASS''@|$(HAVE_GETPASS)|g' \ -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \ -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \ -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \ -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \ -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \ -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \ -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \ -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \ -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \ -e 's|@''HAVE_SETHOSTNAME''@|$(HAVE_SETHOSTNAME)|g' \ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \ -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \ -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \ -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \ -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \ -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \ -e 's|@''HAVE_DECL_EXECVPE''@|$(HAVE_DECL_EXECVPE)|g' \ -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \ -e 's|@''HAVE_DECL_FDATASYNC''@|$(HAVE_DECL_FDATASYNC)|g' \ -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \ -e 's|@''HAVE_DECL_GETLOGIN''@|$(HAVE_DECL_GETLOGIN)|g' \ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \ -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \ -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \ -e 's|@''HAVE_DECL_SETHOSTNAME''@|$(HAVE_DECL_SETHOSTNAME)|g' \ -e 's|@''HAVE_DECL_TRUNCATE''@|$(HAVE_DECL_TRUNCATE)|g' \ -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \ -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ | \ sed -e 's|@''REPLACE_ACCESS''@|$(REPLACE_ACCESS)|g' \ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ -e 's|@''REPLACE_COPY_FILE_RANGE''@|$(REPLACE_COPY_FILE_RANGE)|g' \ -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \ -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \ -e 's|@''REPLACE_DUP3''@|$(REPLACE_DUP3)|g' \ -e 's|@''REPLACE_EXECL''@|$(REPLACE_EXECL)|g' \ -e 's|@''REPLACE_EXECLE''@|$(REPLACE_EXECLE)|g' \ -e 's|@''REPLACE_EXECLP''@|$(REPLACE_EXECLP)|g' \ -e 's|@''REPLACE_EXECV''@|$(REPLACE_EXECV)|g' \ -e 's|@''REPLACE_EXECVE''@|$(REPLACE_EXECVE)|g' \ -e 's|@''REPLACE_EXECVP''@|$(REPLACE_EXECVP)|g' \ -e 's|@''REPLACE_EXECVPE''@|$(REPLACE_EXECVPE)|g' \ -e 's|@''REPLACE_FACCESSAT''@|$(REPLACE_FACCESSAT)|g' \ -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \ -e 's|@''REPLACE_FDATASYNC''@|$(REPLACE_FDATASYNC)|g' \ -e 's|@''REPLACE_FTRUNCATE''@|$(REPLACE_FTRUNCATE)|g' \ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \ -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \ -e 's|@''REPLACE_GETDTABLESIZE''@|$(REPLACE_GETDTABLESIZE)|g' \ -e 's|@''REPLACE_GETENTROPY''@|$(REPLACE_GETENTROPY)|g' \ -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \ -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \ -e 's|@''REPLACE_GETPASS''@|$(REPLACE_GETPASS)|g' \ -e 's|@''REPLACE_GETPASS_FOR_GETPASS_GNU''@|$(REPLACE_GETPASS_FOR_GETPASS_GNU)|g' \ -e 's|@''REPLACE_ISATTY''@|$(REPLACE_ISATTY)|g' \ -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \ -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \ -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ -e 's|@''REPLACE_PIPE2''@|$(REPLACE_PIPE2)|g' \ -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \ -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \ -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \ -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \ -e 's|@''REPLACE_READLINKAT''@|$(REPLACE_READLINKAT)|g' \ -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \ -e 's|@''REPLACE_SETHOSTNAME''@|$(REPLACE_SETHOSTNAME)|g' \ -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \ -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \ -e 's|@''REPLACE_SYMLINKAT''@|$(REPLACE_SYMLINKAT)|g' \ -e 's|@''REPLACE_TRUNCATE''@|$(REPLACE_TRUNCATE)|g' \ -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \ -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \ -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \ -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \ -e 's|@''UNISTD_H_HAVE_SYS_RANDOM_H''@|$(UNISTD_H_HAVE_SYS_RANDOM_H)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += unistd.h unistd.h-t EXTRA_DIST += unistd.in.h ## end gnulib module unistd ## begin gnulib module utime if GL_COND_OBJ_UTIME libgnu_la_SOURCES += utime.c endif ## end gnulib module utime ## begin gnulib module utime-h BUILT_SOURCES += utime.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. utime.h: utime.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_UTIME_H''@/$(HAVE_UTIME_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_UTIME_H''@|$(NEXT_UTIME_H)|g' \ -e 's/@''GNULIB_UTIME''@/$(GL_GNULIB_UTIME)/g' \ -e 's/@''GNULIB_MDA_UTIME''@/$(GL_GNULIB_MDA_UTIME)/g' \ -e 's|@''HAVE_UTIME''@|$(HAVE_UTIME)|g' \ -e 's|@''REPLACE_UTIME''@|$(REPLACE_UTIME)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/utime.in.h > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += utime.h utime.h-t EXTRA_DIST += utime.in.h ## end gnulib module utime-h ## begin gnulib module vasnprintf EXTRA_DIST += asnprintf.c float+.h printf-args.c printf-args.h printf-parse.c printf-parse.h vasnprintf.c vasnprintf.h EXTRA_libgnu_la_SOURCES += asnprintf.c printf-args.c printf-parse.c vasnprintf.c ## end gnulib module vasnprintf ## begin gnulib module vasprintf EXTRA_DIST += asprintf.c vasprintf.c EXTRA_libgnu_la_SOURCES += asprintf.c vasprintf.c ## end gnulib module vasprintf ## begin gnulib module verify EXTRA_DIST += verify.h ## end gnulib module verify ## begin gnulib module vfprintf-posix EXTRA_DIST += vfprintf.c EXTRA_libgnu_la_SOURCES += vfprintf.c ## end gnulib module vfprintf-posix ## begin gnulib module vprintf-posix EXTRA_DIST += vprintf.c EXTRA_libgnu_la_SOURCES += vprintf.c ## end gnulib module vprintf-posix ## begin gnulib module wchar BUILT_SOURCES += wchar.h # We need the following in order to create when the system # version does not work standalone. wchar.h: wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''HAVE_FEATURES_H''@|$(HAVE_FEATURES_H)|g' \ -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \ -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \ -e 's/@''HAVE_CRTDEFS_H''@/$(HAVE_CRTDEFS_H)/g' \ -e 's/@''GNULIBHEADERS_OVERRIDE_WINT_T''@/$(GNULIBHEADERS_OVERRIDE_WINT_T)/g' \ -e 's/@''GNULIB_BTOWC''@/$(GL_GNULIB_BTOWC)/g' \ -e 's/@''GNULIB_WCTOB''@/$(GL_GNULIB_WCTOB)/g' \ -e 's/@''GNULIB_MBSINIT''@/$(GL_GNULIB_MBSINIT)/g' \ -e 's/@''GNULIB_MBRTOWC''@/$(GL_GNULIB_MBRTOWC)/g' \ -e 's/@''GNULIB_MBRLEN''@/$(GL_GNULIB_MBRLEN)/g' \ -e 's/@''GNULIB_MBSRTOWCS''@/$(GL_GNULIB_MBSRTOWCS)/g' \ -e 's/@''GNULIB_MBSNRTOWCS''@/$(GL_GNULIB_MBSNRTOWCS)/g' \ -e 's/@''GNULIB_WCRTOMB''@/$(GL_GNULIB_WCRTOMB)/g' \ -e 's/@''GNULIB_WCSRTOMBS''@/$(GL_GNULIB_WCSRTOMBS)/g' \ -e 's/@''GNULIB_WCSNRTOMBS''@/$(GL_GNULIB_WCSNRTOMBS)/g' \ -e 's/@''GNULIB_WCWIDTH''@/$(GL_GNULIB_WCWIDTH)/g' \ -e 's/@''GNULIB_WMEMCHR''@/$(GL_GNULIB_WMEMCHR)/g' \ -e 's/@''GNULIB_WMEMCMP''@/$(GL_GNULIB_WMEMCMP)/g' \ -e 's/@''GNULIB_WMEMCPY''@/$(GL_GNULIB_WMEMCPY)/g' \ -e 's/@''GNULIB_WMEMMOVE''@/$(GL_GNULIB_WMEMMOVE)/g' \ -e 's/@''GNULIB_WMEMPCPY''@/$(GL_GNULIB_WMEMPCPY)/g' \ -e 's/@''GNULIB_WMEMSET''@/$(GL_GNULIB_WMEMSET)/g' \ -e 's/@''GNULIB_WCSLEN''@/$(GL_GNULIB_WCSLEN)/g' \ -e 's/@''GNULIB_WCSNLEN''@/$(GL_GNULIB_WCSNLEN)/g' \ -e 's/@''GNULIB_WCSCPY''@/$(GL_GNULIB_WCSCPY)/g' \ -e 's/@''GNULIB_WCPCPY''@/$(GL_GNULIB_WCPCPY)/g' \ -e 's/@''GNULIB_WCSNCPY''@/$(GL_GNULIB_WCSNCPY)/g' \ -e 's/@''GNULIB_WCPNCPY''@/$(GL_GNULIB_WCPNCPY)/g' \ -e 's/@''GNULIB_WCSCAT''@/$(GL_GNULIB_WCSCAT)/g' \ -e 's/@''GNULIB_WCSNCAT''@/$(GL_GNULIB_WCSNCAT)/g' \ -e 's/@''GNULIB_WCSCMP''@/$(GL_GNULIB_WCSCMP)/g' \ -e 's/@''GNULIB_WCSNCMP''@/$(GL_GNULIB_WCSNCMP)/g' \ -e 's/@''GNULIB_WCSCASECMP''@/$(GL_GNULIB_WCSCASECMP)/g' \ -e 's/@''GNULIB_WCSNCASECMP''@/$(GL_GNULIB_WCSNCASECMP)/g' \ -e 's/@''GNULIB_WCSCOLL''@/$(GL_GNULIB_WCSCOLL)/g' \ -e 's/@''GNULIB_WCSXFRM''@/$(GL_GNULIB_WCSXFRM)/g' \ -e 's/@''GNULIB_WCSDUP''@/$(GL_GNULIB_WCSDUP)/g' \ -e 's/@''GNULIB_WCSCHR''@/$(GL_GNULIB_WCSCHR)/g' \ -e 's/@''GNULIB_WCSRCHR''@/$(GL_GNULIB_WCSRCHR)/g' \ -e 's/@''GNULIB_WCSCSPN''@/$(GL_GNULIB_WCSCSPN)/g' \ -e 's/@''GNULIB_WCSSPN''@/$(GL_GNULIB_WCSSPN)/g' \ -e 's/@''GNULIB_WCSPBRK''@/$(GL_GNULIB_WCSPBRK)/g' \ -e 's/@''GNULIB_WCSSTR''@/$(GL_GNULIB_WCSSTR)/g' \ -e 's/@''GNULIB_WCSTOK''@/$(GL_GNULIB_WCSTOK)/g' \ -e 's/@''GNULIB_WCSWIDTH''@/$(GL_GNULIB_WCSWIDTH)/g' \ -e 's/@''GNULIB_WCSFTIME''@/$(GL_GNULIB_WCSFTIME)/g' \ -e 's/@''GNULIB_MDA_WCSDUP''@/$(GL_GNULIB_MDA_WCSDUP)/g' \ -e 's/@''GNULIB_FREE_POSIX''@/$(GL_GNULIB_FREE_POSIX)/g' \ < $(srcdir)/wchar.in.h | \ sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \ -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \ -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \ -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \ -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \ -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \ -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \ -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \ -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \ -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \ -e 's|@''HAVE_WMEMCHR''@|$(HAVE_WMEMCHR)|g' \ -e 's|@''HAVE_WMEMCMP''@|$(HAVE_WMEMCMP)|g' \ -e 's|@''HAVE_WMEMCPY''@|$(HAVE_WMEMCPY)|g' \ -e 's|@''HAVE_WMEMMOVE''@|$(HAVE_WMEMMOVE)|g' \ -e 's|@''HAVE_WMEMPCPY''@|$(HAVE_WMEMPCPY)|g' \ -e 's|@''HAVE_WMEMSET''@|$(HAVE_WMEMSET)|g' \ -e 's|@''HAVE_WCSLEN''@|$(HAVE_WCSLEN)|g' \ -e 's|@''HAVE_WCSNLEN''@|$(HAVE_WCSNLEN)|g' \ -e 's|@''HAVE_WCSCPY''@|$(HAVE_WCSCPY)|g' \ -e 's|@''HAVE_WCPCPY''@|$(HAVE_WCPCPY)|g' \ -e 's|@''HAVE_WCSNCPY''@|$(HAVE_WCSNCPY)|g' \ -e 's|@''HAVE_WCPNCPY''@|$(HAVE_WCPNCPY)|g' \ -e 's|@''HAVE_WCSCAT''@|$(HAVE_WCSCAT)|g' \ -e 's|@''HAVE_WCSNCAT''@|$(HAVE_WCSNCAT)|g' \ -e 's|@''HAVE_WCSCMP''@|$(HAVE_WCSCMP)|g' \ -e 's|@''HAVE_WCSNCMP''@|$(HAVE_WCSNCMP)|g' \ -e 's|@''HAVE_WCSCASECMP''@|$(HAVE_WCSCASECMP)|g' \ -e 's|@''HAVE_WCSNCASECMP''@|$(HAVE_WCSNCASECMP)|g' \ -e 's|@''HAVE_WCSCOLL''@|$(HAVE_WCSCOLL)|g' \ -e 's|@''HAVE_WCSXFRM''@|$(HAVE_WCSXFRM)|g' \ -e 's|@''HAVE_WCSDUP''@|$(HAVE_WCSDUP)|g' \ -e 's|@''HAVE_WCSCHR''@|$(HAVE_WCSCHR)|g' \ -e 's|@''HAVE_WCSRCHR''@|$(HAVE_WCSRCHR)|g' \ -e 's|@''HAVE_WCSCSPN''@|$(HAVE_WCSCSPN)|g' \ -e 's|@''HAVE_WCSSPN''@|$(HAVE_WCSSPN)|g' \ -e 's|@''HAVE_WCSPBRK''@|$(HAVE_WCSPBRK)|g' \ -e 's|@''HAVE_WCSSTR''@|$(HAVE_WCSSTR)|g' \ -e 's|@''HAVE_WCSTOK''@|$(HAVE_WCSTOK)|g' \ -e 's|@''HAVE_WCSWIDTH''@|$(HAVE_WCSWIDTH)|g' \ -e 's|@''HAVE_WCSFTIME''@|$(HAVE_WCSFTIME)|g' \ -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \ -e 's|@''HAVE_DECL_WCSDUP''@|$(HAVE_DECL_WCSDUP)|g' \ -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \ | \ sed -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \ -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \ -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \ -e 's|@''REPLACE_FREE''@|$(REPLACE_FREE)|g' \ -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \ -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \ -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \ -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \ -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \ -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \ -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \ -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \ -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \ -e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \ -e 's|@''REPLACE_WCSFTIME''@|$(REPLACE_WCSFTIME)|g' \ -e 's|@''REPLACE_WCSTOK''@|$(REPLACE_WCSTOK)|g' \ -e 's|@''REPLACE_WMEMPCPY''@|$(REPLACE_WMEMPCPY)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += wchar.h wchar.h-t EXTRA_DIST += wchar.in.h ## end gnulib module wchar ## begin gnulib module wctype-h BUILT_SOURCES += wctype.h libgnu_la_SOURCES += wctype-h.c # We need the following in order to create when the system # doesn't have one that works with the given compiler. wctype.h: wctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(gl_V_at)$(SED_HEADER_STDOUT) \ -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \ -e 's/@''HAVE_CRTDEFS_H''@/$(HAVE_CRTDEFS_H)/g' \ -e 's/@''GNULIBHEADERS_OVERRIDE_WINT_T''@/$(GNULIBHEADERS_OVERRIDE_WINT_T)/g' \ -e 's/@''GNULIB_ISWBLANK''@/$(GL_GNULIB_ISWBLANK)/g' \ -e 's/@''GNULIB_ISWDIGIT''@/$(GL_GNULIB_ISWDIGIT)/g' \ -e 's/@''GNULIB_ISWXDIGIT''@/$(GL_GNULIB_ISWXDIGIT)/g' \ -e 's/@''GNULIB_WCTYPE''@/$(GL_GNULIB_WCTYPE)/g' \ -e 's/@''GNULIB_ISWCTYPE''@/$(GL_GNULIB_ISWCTYPE)/g' \ -e 's/@''GNULIB_WCTRANS''@/$(GL_GNULIB_WCTRANS)/g' \ -e 's/@''GNULIB_TOWCTRANS''@/$(GL_GNULIB_TOWCTRANS)/g' \ -e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \ -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \ -e 's/@''HAVE_WCTYPE_T''@/$(HAVE_WCTYPE_T)/g' \ -e 's/@''HAVE_WCTRANS_T''@/$(HAVE_WCTRANS_T)/g' \ -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \ -e 's/@''REPLACE_ISWBLANK''@/$(REPLACE_ISWBLANK)/g' \ -e 's/@''REPLACE_ISWDIGIT''@/$(REPLACE_ISWDIGIT)/g' \ -e 's/@''REPLACE_ISWXDIGIT''@/$(REPLACE_ISWXDIGIT)/g' \ -e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \ -e 's/@''REPLACE_TOWLOWER''@/$(REPLACE_TOWLOWER)/g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ $(srcdir)/wctype.in.h > $@-t $(AM_V_at)mv $@-t $@ MOSTLYCLEANFILES += wctype.h wctype.h-t EXTRA_DIST += wctype.in.h ## end gnulib module wctype-h ## begin gnulib module xalloc libgnu_la_SOURCES += xmalloc.c EXTRA_DIST += xalloc.h ## end gnulib module xalloc ## begin gnulib module xalloc-die libgnu_la_SOURCES += xalloc-die.c EXTRA_DIST += xalloc.h ## end gnulib module xalloc-die ## begin gnulib module xalloc-oversized EXTRA_DIST += xalloc-oversized.h ## end gnulib module xalloc-oversized ## begin gnulib module xbinary-io libgnu_la_SOURCES += xbinary-io.h xbinary-io.c ## end gnulib module xbinary-io ## begin gnulib module xsize libgnu_la_SOURCES += xsize.h xsize.c ## end gnulib module xsize mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ if test -n "$$dir" && test -d $$dir; then \ echo "rmdir $$dir"; rmdir $$dir; \ fi; \ done; \ : distclean-local: distclean-gnulib-libobjs distclean-gnulib-libobjs: -rm -f @gl_LIBOBJDEPS@ maintainer-clean-local: distclean-gnulib-libobjs recode-3.7.15/lib/bitrotate.h0000644000175000017500000001103014371444255011451 /* bitrotate.h - Rotate bits in integers Copyright (C) 2008-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Simon Josefsson , 2008. */ #ifndef _GL_BITROTATE_H #define _GL_BITROTATE_H #include #include #include #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef BITROTATE_INLINE # define BITROTATE_INLINE _GL_INLINE #endif #ifdef UINT64_MAX /* Given an unsigned 64-bit argument X, return the value corresponding to rotating the bits N steps to the left. N must be between 1 and 63 inclusive. */ BITROTATE_INLINE uint64_t rotl64 (uint64_t x, int n) { return ((x << n) | (x >> (64 - n))) & UINT64_MAX; } /* Given an unsigned 64-bit argument X, return the value corresponding to rotating the bits N steps to the right. N must be between 1 to 63 inclusive.*/ BITROTATE_INLINE uint64_t rotr64 (uint64_t x, int n) { return ((x >> n) | (x << (64 - n))) & UINT64_MAX; } #endif /* Given an unsigned 32-bit argument X, return the value corresponding to rotating the bits N steps to the left. N must be between 1 and 31 inclusive. */ BITROTATE_INLINE uint32_t rotl32 (uint32_t x, int n) { return ((x << n) | (x >> (32 - n))) & UINT32_MAX; } /* Given an unsigned 32-bit argument X, return the value corresponding to rotating the bits N steps to the right. N must be between 1 to 31 inclusive.*/ BITROTATE_INLINE uint32_t rotr32 (uint32_t x, int n) { return ((x >> n) | (x << (32 - n))) & UINT32_MAX; } /* Given a size_t argument X, return the value corresponding to rotating the bits N steps to the left. N must be between 1 and (CHAR_BIT * sizeof (size_t) - 1) inclusive. */ BITROTATE_INLINE size_t rotl_sz (size_t x, int n) { return ((x << n) | (x >> ((CHAR_BIT * sizeof x) - n))) & SIZE_MAX; } /* Given a size_t argument X, return the value corresponding to rotating the bits N steps to the right. N must be between 1 to (CHAR_BIT * sizeof (size_t) - 1) inclusive. */ BITROTATE_INLINE size_t rotr_sz (size_t x, int n) { return ((x >> n) | (x << ((CHAR_BIT * sizeof x) - n))) & SIZE_MAX; } /* Given an unsigned 16-bit argument X, return the value corresponding to rotating the bits N steps to the left. N must be between 1 to 15 inclusive, but on most relevant targets N can also be 0 and 16 because 'int' is at least 32 bits and the arguments must widen before shifting. */ BITROTATE_INLINE uint16_t rotl16 (uint16_t x, int n) { return (((unsigned int) x << n) | ((unsigned int) x >> (16 - n))) & UINT16_MAX; } /* Given an unsigned 16-bit argument X, return the value corresponding to rotating the bits N steps to the right. N must be in 1 to 15 inclusive, but on most relevant targets N can also be 0 and 16 because 'int' is at least 32 bits and the arguments must widen before shifting. */ BITROTATE_INLINE uint16_t rotr16 (uint16_t x, int n) { return (((unsigned int) x >> n) | ((unsigned int) x << (16 - n))) & UINT16_MAX; } /* Given an unsigned 8-bit argument X, return the value corresponding to rotating the bits N steps to the left. N must be between 1 to 7 inclusive, but on most relevant targets N can also be 0 and 8 because 'int' is at least 32 bits and the arguments must widen before shifting. */ BITROTATE_INLINE uint8_t rotl8 (uint8_t x, int n) { return (((unsigned int) x << n) | ((unsigned int) x >> (8 - n))) & UINT8_MAX; } /* Given an unsigned 8-bit argument X, return the value corresponding to rotating the bits N steps to the right. N must be in 1 to 7 inclusive, but on most relevant targets N can also be 0 and 8 because 'int' is at least 32 bits and the arguments must widen before shifting. */ BITROTATE_INLINE uint8_t rotr8 (uint8_t x, int n) { return (((unsigned int) x >> n) | ((unsigned int) x << (8 - n))) & UINT8_MAX; } _GL_INLINE_HEADER_END #endif /* _GL_BITROTATE_H */ recode-3.7.15/lib/attribute.h0000644000175000017500000002137614371444255011475 /* ATTRIBUTE_* macros for using attributes in GCC and similar compilers Copyright 2020-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Paul Eggert. */ /* Provide public ATTRIBUTE_* names for the private _GL_ATTRIBUTE_* macros used within Gnulib. */ /* These attributes can be placed in two ways: - At the start of a declaration (i.e. even before storage-class specifiers!); then they apply to all entities that are declared by the declaration. - Immediately after the name of an entity being declared by the declaration; then they apply to that entity only. */ #ifndef _GL_ATTRIBUTE_H #define _GL_ATTRIBUTE_H /* This file defines two types of attributes: * C23 standard attributes. These have macro names that do not begin with 'ATTRIBUTE_'. * Selected GCC attributes; see: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html https://gcc.gnu.org/onlinedocs/gcc/Common-Type-Attributes.html These names begin with 'ATTRIBUTE_' to avoid name clashes. */ /* =============== Attributes for specific kinds of functions =============== */ /* Attributes for functions that should not be used. */ /* Warn if the entity is used. */ /* Applies to: - function, variable, - struct, union, struct/union member, - enumeration, enumeration item, - typedef, in C++ also: namespace, class, template specialization. */ #define DEPRECATED _GL_ATTRIBUTE_DEPRECATED /* If a function call is not optimized way, warn with MSG. */ /* Applies to: functions. */ #define ATTRIBUTE_WARNING(msg) _GL_ATTRIBUTE_WARNING (msg) /* If a function call is not optimized way, report an error with MSG. */ /* Applies to: functions. */ #define ATTRIBUTE_ERROR(msg) _GL_ATTRIBUTE_ERROR (msg) /* Attributes for memory-allocating functions. */ /* The function returns a pointer to freshly allocated memory. */ /* Applies to: functions. */ #define ATTRIBUTE_MALLOC _GL_ATTRIBUTE_MALLOC /* ATTRIBUTE_ALLOC_SIZE ((N)) - The Nth argument of the function is the size of the returned memory block. ATTRIBUTE_ALLOC_SIZE ((M, N)) - Multiply the Mth and Nth arguments to determine the size of the returned memory block. */ /* Applies to: function, pointer to function, function types. */ #define ATTRIBUTE_ALLOC_SIZE(args) _GL_ATTRIBUTE_ALLOC_SIZE (args) /* ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers that can be freed by passing them as the Ith argument to the function F. ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that can be freed via 'free'; it can be used only after declaring 'free'. */ /* Applies to: functions. Cannot be used on inline functions. */ #define ATTRIBUTE_DEALLOC(f, i) _GL_ATTRIBUTE_DEALLOC(f, i) #define ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC_FREE /* Attributes for variadic functions. */ /* The variadic function expects a trailing NULL argument. ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ /* Applies to: functions. */ #define ATTRIBUTE_SENTINEL(pos) _GL_ATTRIBUTE_SENTINEL (pos) /* ================== Attributes for compiler diagnostics ================== */ /* Attributes that help the compiler diagnose programmer mistakes. Some of them may also help for some compiler optimizations. */ /* ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) - The STRING-INDEXth function argument is a format string of style ARCHETYPE, which is one of: printf, gnu_printf scanf, gnu_scanf, strftime, gnu_strftime, strfmon, or the same thing prefixed and suffixed with '__'. If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK are suitable for the format string. */ /* Applies to: functions. */ #define ATTRIBUTE_FORMAT(spec) _GL_ATTRIBUTE_FORMAT (spec) /* ATTRIBUTE_NONNULL ((N1, N2,...)) - Arguments N1, N2,... must not be NULL. ATTRIBUTE_NONNULL () - All pointer arguments must not be null. */ /* Applies to: functions. */ #define ATTRIBUTE_NONNULL(args) _GL_ATTRIBUTE_NONNULL (args) /* The function's return value is a non-NULL pointer. */ /* Applies to: functions. */ #define ATTRIBUTE_RETURNS_NONNULL _GL_ATTRIBUTE_RETURNS_NONNULL /* Warn if the caller does not use the return value, unless the caller uses something like ignore_value. */ /* Applies to: function, enumeration, class. */ #define NODISCARD _GL_ATTRIBUTE_NODISCARD /* Attributes that disable false alarms when the compiler diagnoses programmer "mistakes". */ /* Do not warn if the entity is not used. */ /* Applies to: - function, variable, - struct, union, struct/union member, - enumeration, enumeration item, - typedef, in C++ also: class. */ #define MAYBE_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED /* The contents of a character array is not meant to be NUL-terminated. */ /* Applies to: struct/union members and variables that are arrays of element type '[[un]signed] char'. */ #define ATTRIBUTE_NONSTRING _GL_ATTRIBUTE_NONSTRING /* Do not warn if control flow falls through to the immediately following 'case' or 'default' label. */ /* Applies to: Empty statement (;), inside a 'switch' statement. */ #define FALLTHROUGH _GL_ATTRIBUTE_FALLTHROUGH /* ================== Attributes for debugging information ================== */ /* Attributes regarding debugging information emitted by the compiler. */ /* Omit the function from stack traces when debugging. */ /* Applies to: function. */ #define ATTRIBUTE_ARTIFICIAL _GL_ATTRIBUTE_ARTIFICIAL /* Make the entity visible to debuggers etc., even with '-fwhole-program'. */ /* Applies to: functions, variables. */ #define ATTRIBUTE_EXTERNALLY_VISIBLE _GL_ATTRIBUTE_EXTERNALLY_VISIBLE /* ========== Attributes that mainly direct compiler optimizations ========== */ /* The function does not throw exceptions. */ /* Applies to: functions. */ #define ATTRIBUTE_NOTHROW _GL_ATTRIBUTE_NOTHROW /* Do not inline the function. */ /* Applies to: functions. */ #define ATTRIBUTE_NOINLINE _GL_ATTRIBUTE_NOINLINE /* Always inline the function, and report an error if the compiler cannot inline. */ /* Applies to: function. */ #define ATTRIBUTE_ALWAYS_INLINE _GL_ATTRIBUTE_ALWAYS_INLINE /* It is OK for a compiler to omit duplicate calls with the same arguments. This attribute is safe for a function that neither depends on nor affects observable state, and always returns exactly once - e.g., does not loop forever, and does not call longjmp. (This attribute is stricter than ATTRIBUTE_PURE.) */ /* Applies to: functions. */ #define ATTRIBUTE_CONST _GL_ATTRIBUTE_CONST /* It is OK for a compiler to omit duplicate calls with the same arguments if observable state is not changed between calls. This attribute is safe for a function that does not affect observable state, and always returns exactly once. (This attribute is looser than ATTRIBUTE_CONST.) */ /* Applies to: functions. */ #define ATTRIBUTE_PURE _GL_ATTRIBUTE_PURE /* The function is rarely executed. */ /* Applies to: functions. */ #define ATTRIBUTE_COLD _GL_ATTRIBUTE_COLD /* If called from some other compilation unit, the function executes code from that unit only by return or by exception handling, letting the compiler optimize that unit more aggressively. */ /* Applies to: functions. */ #define ATTRIBUTE_LEAF _GL_ATTRIBUTE_LEAF /* For struct members: The member has the smallest possible alignment. For struct, union, class: All members have the smallest possible alignment, minimizing the memory required. */ /* Applies to: struct members, struct, union, in C++ also: class. */ #define ATTRIBUTE_PACKED _GL_ATTRIBUTE_PACKED /* ================ Attributes that make invalid code valid ================ */ /* Attributes that prevent fatal compiler optimizations for code that is not fully ISO C compliant. */ /* Pointers to the type may point to the same storage as pointers to other types, thus disabling strict aliasing optimization. */ /* Applies to: types. */ #define ATTRIBUTE_MAY_ALIAS _GL_ATTRIBUTE_MAY_ALIAS #endif /* _GL_ATTRIBUTE_H */ recode-3.7.15/lib/intprops-internal.h0000644000175000017500000004255514371444255013164 /* intprops-internal.h -- properties of integer types not visible to users Copyright (C) 2001-2023 Free Software Foundation, Inc. This program 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. 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 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 . */ #ifndef _GL_INTPROPS_INTERNAL_H #define _GL_INTPROPS_INTERNAL_H #include /* Return a value with the common real type of E and V and the value of V. Do not evaluate E. */ #define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v)) /* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see . */ #define _GL_INT_NEGATE_CONVERT(e, v) ((1 ? 0 : (e)) - (v)) /* The extra casts in the following macros work around compiler bugs, e.g., in Cray C 5.0.3.0. */ /* True if the real type T is signed. */ #define _GL_TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) /* Return 1 if the real expression E, after promotion, has a signed or floating type. Do not evaluate E. */ #define _GL_EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) /* Minimum and maximum values for integer types and expressions. */ /* The width in bits of the integer type or expression T. Do not evaluate T. T must not be a bit-field expression. Padding bits are not supported; this is checked at compile-time below. */ #define _GL_TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) /* The maximum and minimum values for the type of the expression E, after integer promotion. E is not evaluated. */ #define _GL_INT_MINIMUM(e) \ (_GL_EXPR_SIGNED (e) \ ? ~ _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_CONVERT (e, 0)) #define _GL_INT_MAXIMUM(e) \ (_GL_EXPR_SIGNED (e) \ ? _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_NEGATE_CONVERT (e, 1)) #define _GL_SIGNED_INT_MAXIMUM(e) \ (((_GL_INT_CONVERT (e, 1) << (_GL_TYPE_WIDTH (+ (e)) - 2)) - 1) * 2 + 1) /* Work around OpenVMS incompatibility with C99. */ #if !defined LLONG_MAX && defined __INT64_MAX # define LLONG_MAX __INT64_MAX # define LLONG_MIN __INT64_MIN #endif /* This include file assumes that signed types are two's complement without padding bits; the above macros have undefined behavior otherwise. If this is a problem for you, please let us know how to fix it for your host. This assumption is tested by the intprops-tests module. */ /* Does the __typeof__ keyword work? This could be done by 'configure', but for now it's easier to do it by hand. */ #if (2 <= __GNUC__ \ || (4 <= __clang_major__) \ || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ || (0x5110 <= __SUNPRO_C && !__STDC__)) # define _GL_HAVE___TYPEOF__ 1 #else # define _GL_HAVE___TYPEOF__ 0 #endif /* Return 1 if the integer type or expression T might be signed. Return 0 if it is definitely unsigned. T must not be a bit-field expression. This macro does not evaluate its argument, and expands to an integer constant expression. */ #if _GL_HAVE___TYPEOF__ # define _GL_SIGNED_TYPE_OR_EXPR(t) _GL_TYPE_SIGNED (__typeof__ (t)) #else # define _GL_SIGNED_TYPE_OR_EXPR(t) 1 #endif /* Return 1 if - A would overflow in [MIN,MAX] arithmetic. A should not have side effects, and A's type should be an integer with minimum value MIN and maximum MAX. */ #define _GL_INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ ((min) < 0 ? (a) < - (max) : 0 < (a)) /* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow (A, B, P) work when P is non-null. */ #ifdef __EDG__ /* EDG-based compilers like nvc 22.1 cannot add 64-bit signed to unsigned . */ # define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 #elif defined __has_builtin # define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) /* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x, see . */ #elif 7 <= __GNUC__ # define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 #else # define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 #endif /* True if __builtin_mul_overflow (A, B, P) works when P is non-null. */ #if defined __clang_major__ && __clang_major__ < 14 /* Work around Clang bug . */ # define _GL_HAS_BUILTIN_MUL_OVERFLOW 0 #else # define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW #endif /* True if __builtin_add_overflow_p (A, B, C) works, and similarly for __builtin_sub_overflow_p and __builtin_mul_overflow_p. */ #ifdef __EDG__ /* In EDG-based compilers like ICC 2021.3 and earlier, __builtin_add_overflow_p etc. are not treated as integral constant expressions even when all arguments are. */ # define _GL_HAS_BUILTIN_OVERFLOW_P 0 #elif defined __has_builtin # define _GL_HAS_BUILTIN_OVERFLOW_P __has_builtin (__builtin_mul_overflow_p) #else # define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) #endif #if (!defined _GL_STDCKDINT_H && 202311 <= __STDC_VERSION__ \ && ! (_GL_HAS_BUILTIN_ADD_OVERFLOW && _GL_HAS_BUILTIN_MUL_OVERFLOW)) # include #endif /* Store the low-order bits of A + B, A - B, A * B, respectively, into *R. Return 1 if the result overflows. Arguments should not have side effects and A, B and *R can be of any integer type other than char, bool, a bit-precise integer type, or an enumeration type. */ #if _GL_HAS_BUILTIN_ADD_OVERFLOW # define _GL_INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r) # define _GL_INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r) #elif defined ckd_add && defined ckd_sub && !defined _GL_STDCKDINT_H # define _GL_INT_ADD_WRAPV(a, b, r) ckd_add (r, + (a), + (b)) # define _GL_INT_SUBTRACT_WRAPV(a, b, r) ckd_sub (r, + (a), + (b)) #else # define _GL_INT_ADD_WRAPV(a, b, r) \ _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW) # define _GL_INT_SUBTRACT_WRAPV(a, b, r) \ _GL_INT_OP_WRAPV (a, b, r, -, _GL_INT_SUBTRACT_RANGE_OVERFLOW) #endif #if _GL_HAS_BUILTIN_MUL_OVERFLOW # if ((9 < __GNUC__ + (3 <= __GNUC_MINOR__) \ || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__)) \ && !defined __EDG__) # define _GL_INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r) # else /* Work around GCC bug 91450. */ # define _GL_INT_MULTIPLY_WRAPV(a, b, r) \ ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && _GL_EXPR_SIGNED (a) && _GL_EXPR_SIGNED (b) \ && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \ ? ((void) __builtin_mul_overflow (a, b, r), 1) \ : __builtin_mul_overflow (a, b, r)) # endif #elif defined ckd_mul && !defined _GL_STDCKDINT_H # define _GL_INT_MULTIPLY_WRAPV(a, b, r) ckd_mul (r, + (a), + (b)) #else # define _GL_INT_MULTIPLY_WRAPV(a, b, r) \ _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW) #endif /* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 https://llvm.org/bugs/show_bug.cgi?id=25390 For now, assume all versions of GCC-like compilers generate bogus warnings for _Generic. This matters only for compilers that lack relevant builtins. */ #if __GNUC__ || defined __clang__ # define _GL__GENERIC_BOGUS 1 #else # define _GL__GENERIC_BOGUS 0 #endif /* Store the low-order bits of A B into *R, where OP specifies the operation and OVERFLOW the overflow predicate. Return 1 if the result overflows. Arguments should not have side effects, and A, B and *R can be of any integer type other than char, bool, a bit-precise integer type, or an enumeration type. */ #if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS # define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ (_Generic \ (*(r), \ signed char: \ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ signed char, SCHAR_MIN, SCHAR_MAX), \ unsigned char: \ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ unsigned char, 0, UCHAR_MAX), \ short int: \ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ short int, SHRT_MIN, SHRT_MAX), \ unsigned short int: \ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ unsigned short int, 0, USHRT_MAX), \ int: \ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ int, INT_MIN, INT_MAX), \ unsigned int: \ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ unsigned int, 0, UINT_MAX), \ long int: \ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ long int, LONG_MIN, LONG_MAX), \ unsigned long int: \ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ unsigned long int, 0, ULONG_MAX), \ long long int: \ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ long long int, LLONG_MIN, LLONG_MAX), \ unsigned long long int: \ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ unsigned long long int, 0, ULLONG_MAX))) #else /* Store the low-order bits of A B into *R, where OP specifies the operation and OVERFLOW the overflow predicate. If *R is signed, its type is ST with bounds SMIN..SMAX; otherwise its type is UT with bounds U..UMAX. ST and UT are narrower than int. Return 1 if the result overflows. Arguments should not have side effects, and A, B and *R can be of any integer type other than char, bool, a bit-precise integer type, or an enumeration type. */ # if _GL_HAVE___TYPEOF__ # define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ (_GL_TYPE_SIGNED (__typeof__ (*(r))) \ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax)) # else # define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ (overflow (a, b, smin, smax) \ ? (overflow (a, b, 0, umax) \ ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \ : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \ : (overflow (a, b, 0, umax) \ ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \ : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0))) # endif # define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ (sizeof *(r) == sizeof (signed char) \ ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ signed char, SCHAR_MIN, SCHAR_MAX, \ unsigned char, UCHAR_MAX) \ : sizeof *(r) == sizeof (short int) \ ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ short int, SHRT_MIN, SHRT_MAX, \ unsigned short int, USHRT_MAX) \ : sizeof *(r) == sizeof (int) \ ? (_GL_EXPR_SIGNED (*(r)) \ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ int, INT_MIN, INT_MAX) \ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ unsigned int, 0, UINT_MAX)) \ : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow)) # ifdef LLONG_MAX # define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ (sizeof *(r) == sizeof (long int) \ ? (_GL_EXPR_SIGNED (*(r)) \ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ long int, LONG_MIN, LONG_MAX) \ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ unsigned long int, 0, ULONG_MAX)) \ : (_GL_EXPR_SIGNED (*(r)) \ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ long long int, LLONG_MIN, LLONG_MAX) \ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ unsigned long long int, 0, ULLONG_MAX))) # else # define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ (_GL_EXPR_SIGNED (*(r)) \ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ long int, LONG_MIN, LONG_MAX) \ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ unsigned long int, 0, ULONG_MAX)) # endif #endif /* Store the low-order bits of A B into *R, where the operation is given by OP. Use the unsigned type UT for calculation to avoid overflow problems. *R's type is T, with extrema TMIN and TMAX. T can be any signed integer type other than char, bool, a bit-precise integer type, or an enumeration type. Return 1 if the result overflows. */ #define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ (overflow (a, b, tmin, tmax) \ ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \ : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0)) /* Return 1 if the integer expressions A - B and -A would overflow, respectively. Arguments should not have side effects, and can be any signed integer type other than char, bool, a bit-precise integer type, or an enumeration type. These macros are tuned for their last input argument being a constant. */ #if _GL_HAS_BUILTIN_OVERFLOW_P # define _GL_INT_NEGATE_OVERFLOW(a) \ __builtin_sub_overflow_p (0, a, (__typeof__ (- (a))) 0) #else # define _GL_INT_NEGATE_OVERFLOW(a) \ _GL_INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) #endif /* Return the low-order bits of A B, where the operation is given by OP. Use the unsigned type UT for calculation to avoid undefined behavior on signed integer overflow, and convert the result to type T. UT is at least as wide as T and is no narrower than unsigned int, T is two's complement, and there is no padding or trap representations. Assume that converting UT to T yields the low-order bits, as is done in all known two's-complement C compilers. E.g., see: https://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html According to the C standard, converting UT to T yields an implementation-defined result or signal for values outside T's range. However, code that works around this theoretical problem runs afoul of a compiler bug in Oracle Studio 12.3 x86. See: https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html As the compiler bug is real, don't try to work around the theoretical problem. */ #define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \ ((t) ((ut) (a) op (ut) (b))) /* Return true if the numeric values A + B, A - B, A * B fall outside the range TMIN..TMAX. Arguments should not have side effects and can be any integer type other than char, bool, a bit-precise integer type, or an enumeration type. TMIN should be signed and nonpositive. TMAX should be positive, and should be signed unless TMIN is zero. */ #define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \ ((b) < 0 \ ? (((tmin) \ ? ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < (tmin)) \ && (a) < (tmin) - (b)) \ : (a) <= -1 - (b)) \ || ((_GL_EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + (b))) \ : (a) < 0 \ ? (((tmin) \ ? ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < (tmin)) \ && (b) < (tmin) - (a)) \ : (b) <= -1 - (a)) \ || ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \ && (tmax) < (a) + (b))) \ : (tmax) < (b) || (tmax) - (b) < (a)) #define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \ (((a) < 0) == ((b) < 0) \ ? ((a) < (b) \ ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \ : (tmax) < (a) - (b)) \ : (a) < 0 \ ? ((!_GL_EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 0) \ || (a) - (tmin) < (b)) \ : ((! (_GL_EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ && _GL_EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \ && (tmax) <= -1 - (b)) \ || (tmax) + (b) < (a))) #define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \ ((b) < 0 \ ? ((a) < 0 \ ? (_GL_EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ ? (a) < (tmax) / (b) \ : ((_GL_INT_NEGATE_OVERFLOW (b) \ ? _GL_INT_CONVERT (b, tmax) >> (_GL_TYPE_WIDTH (+ (b)) - 1) \ : (tmax) / -(b)) \ <= -1 - (a))) \ : _GL_INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \ ? (_GL_EXPR_SIGNED (a) \ ? 0 < (a) + (tmin) \ : 0 < (a) && -1 - (tmin) < (a) - 1) \ : (tmin) / (b) < (a)) \ : (b) == 0 \ ? 0 \ : ((a) < 0 \ ? (_GL_INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \ ? (_GL_EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \ : (tmin) / (a) < (b)) \ : (tmax) / (b) < (a))) #endif /* _GL_INTPROPS_INTERNAL_H */ recode-3.7.15/lib/setlocale-lock.c0000644000175000017500000001053014371444255012354 /* Return the internal lock used by setlocale_null_r. Copyright (C) 2019-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2019. */ #include /* When it is known that the gl_get_setlocale_null_lock function is defined by a dependency library, it should not be defined here. */ #if OMIT_SETLOCALE_LOCK /* This declaration is solely to ensure that after preprocessing this file is never empty. */ typedef int dummy; #else /* This file defines the internal lock used by setlocale_null_r. It is a separate compilation unit, so that only one copy of it is present when linking statically. */ /* Prohibit renaming this symbol. */ # undef gl_get_setlocale_null_lock /* Macro for exporting a symbol (function, not variable) defined in this file, when compiled into a shared library. */ # ifndef DLL_EXPORTED # if HAVE_VISIBILITY /* Override the effect of the compiler option '-fvisibility=hidden'. */ # define DLL_EXPORTED __attribute__((__visibility__("default"))) # elif defined _WIN32 || defined __CYGWIN__ # define DLL_EXPORTED __declspec(dllexport) # else # define DLL_EXPORTED # endif # endif # if defined _WIN32 && !defined __CYGWIN__ # define WIN32_LEAN_AND_MEAN /* avoid including junk */ # include # include "windows-initguard.h" /* The return type is a 'CRITICAL_SECTION *', not a 'glwthread_mutex_t *', because the latter is not guaranteed to be a stable ABI in the future. */ /* Make sure the function gets exported from DLLs. */ DLL_EXPORTED CRITICAL_SECTION *gl_get_setlocale_null_lock (void); static glwthread_initguard_t guard = GLWTHREAD_INITGUARD_INIT; static CRITICAL_SECTION lock; /* Returns the internal lock used by setlocale_null_r. */ CRITICAL_SECTION * gl_get_setlocale_null_lock (void) { if (!guard.done) { if (InterlockedIncrement (&guard.started) == 0) { /* This thread is the first one to need the lock. Initialize it. */ InitializeCriticalSection (&lock); guard.done = 1; } else { /* Don't let guard.started grow and wrap around. */ InterlockedDecrement (&guard.started); /* Yield the CPU while waiting for another thread to finish initializing this mutex. */ while (!guard.done) Sleep (0); } } return &lock; } # elif HAVE_PTHREAD_API # include static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; /* Make sure the function gets exported from shared libraries. */ DLL_EXPORTED pthread_mutex_t *gl_get_setlocale_null_lock (void); /* Returns the internal lock used by setlocale_null_r. */ pthread_mutex_t * gl_get_setlocale_null_lock (void) { return &mutex; } # elif HAVE_THREADS_H # include # include static int volatile init_needed = 1; static once_flag init_once = ONCE_FLAG_INIT; static mtx_t mutex; static void atomic_init (void) { if (mtx_init (&mutex, mtx_plain) != thrd_success) abort (); init_needed = 0; } /* Make sure the function gets exported from shared libraries. */ DLL_EXPORTED mtx_t *gl_get_setlocale_null_lock (void); /* Returns the internal lock used by setlocale_null_r. */ mtx_t * gl_get_setlocale_null_lock (void) { if (init_needed) call_once (&init_once, atomic_init); return &mutex; } # endif # if (defined _WIN32 || defined __CYGWIN__) && !defined _MSC_VER /* Make sure the '__declspec(dllimport)' in setlocale_null.c does not cause a link failure when no DLLs are involved. */ # if defined _WIN64 || defined _LP64 # define IMP(x) __imp_##x # else # define IMP(x) _imp__##x # endif void * IMP(gl_get_setlocale_null_lock) = &gl_get_setlocale_null_lock; # endif #endif recode-3.7.15/lib/memchr.valgrind0000644000175000017500000000216314371444255012315 # Suppress a valgrind message about use of uninitialized memory in memchr(). # Copyright (C) 2009-2023 Free Software Foundation, Inc. # # This file 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. # # This file 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 . # POSIX states that when the character is found, memchr must not read extra # bytes in an overestimated length (for example, where memchr is used to # implement strnlen). However, we use a safe word read to provide a speedup. { memchr-value4 Memcheck:Value4 fun:rpl_memchr } { memchr-value8 Memcheck:Value8 fun:rpl_memchr } recode-3.7.15/lib/utime.c0000644000175000017500000002077014371444255010605 /* Work around platform bugs in utime. Copyright (C) 2017-2023 Free Software Foundation, Inc. This file 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 3 of the License, or (at your option) any later version. This file 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 . */ /* Written by Bruno Haible. */ #include /* Specification. */ #include #if defined _WIN32 && ! defined __CYGWIN__ # include # include # include "filename.h" # include "malloca.h" /* Don't assume that UNICODE is not defined. */ # undef CreateFile # define CreateFile CreateFileA # undef GetFileAttributes # define GetFileAttributes GetFileAttributesA int _gl_utimens_windows (const char *name, struct timespec ts[2]) { /* POSIX specifies: "More than two leading characters shall be treated as a single character." */ if (ISSLASH (name[0]) && ISSLASH (name[1]) && ISSLASH (name[2])) { name += 2; while (ISSLASH (name[1])) name++; } size_t len = strlen (name); size_t drive_prefix_len = (HAS_DEVICE (name) ? 2 : 0); /* Remove trailing slashes (except the very first one, at position drive_prefix_len), but remember their presence. */ size_t rlen; bool check_dir = false; rlen = len; while (rlen > drive_prefix_len && ISSLASH (name[rlen-1])) { check_dir = true; if (rlen == drive_prefix_len + 1) break; rlen--; } const char *rname; char *malloca_rname; if (rlen == len) { rname = name; malloca_rname = NULL; } else { malloca_rname = malloca (rlen + 1); if (malloca_rname == NULL) { errno = ENOMEM; return -1; } memcpy (malloca_rname, name, rlen); malloca_rname[rlen] = '\0'; rname = malloca_rname; } DWORD error; /* Open a handle to the file. CreateFile */ HANDLE handle = CreateFile (rname, FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, /* FILE_FLAG_POSIX_SEMANTICS (treat file names that differ only in case as different) makes sense only when applied to *all* filesystem operations. */ FILE_FLAG_BACKUP_SEMANTICS /* | FILE_FLAG_POSIX_SEMANTICS */, NULL); if (handle == INVALID_HANDLE_VALUE) { error = GetLastError (); goto failed; } if (check_dir) { /* GetFileAttributes */ DWORD attributes = GetFileAttributes (rname); if (attributes == INVALID_FILE_ATTRIBUTES) { error = GetLastError (); CloseHandle (handle); goto failed; } if ((attributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { CloseHandle (handle); if (malloca_rname != NULL) freea (malloca_rname); errno = ENOTDIR; return -1; } } { /* Use SetFileTime(). See */ FILETIME last_access_time; FILETIME last_write_time; if (ts == NULL) { /* GetSystemTimeAsFileTime is the same as GetSystemTime followed by SystemTimeToFileTime. . It would be overkill to use GetSystemTimePreciseAsFileTime . */ FILETIME current_time; GetSystemTimeAsFileTime (¤t_time); last_access_time = current_time; last_write_time = current_time; } else { { ULONGLONG time_since_16010101 = (ULONGLONG) ts[0].tv_sec * 10000000 + ts[0].tv_nsec / 100 + 116444736000000000LL; last_access_time.dwLowDateTime = (DWORD) time_since_16010101; last_access_time.dwHighDateTime = time_since_16010101 >> 32; } { ULONGLONG time_since_16010101 = (ULONGLONG) ts[1].tv_sec * 10000000 + ts[1].tv_nsec / 100 + 116444736000000000LL; last_write_time.dwLowDateTime = (DWORD) time_since_16010101; last_write_time.dwHighDateTime = time_since_16010101 >> 32; } } if (SetFileTime (handle, NULL, &last_access_time, &last_write_time)) { CloseHandle (handle); if (malloca_rname != NULL) freea (malloca_rname); return 0; } else { #if 0 DWORD sft_error = GetLastError (); fprintf (stderr, "utimens SetFileTime error 0x%x\n", (unsigned int) sft_error); #endif CloseHandle (handle); if (malloca_rname != NULL) freea (malloca_rname); errno = EINVAL; return -1; } } failed: { #if 0 fprintf (stderr, "utimens CreateFile/GetFileAttributes error 0x%x\n", (unsigned int) error); #endif if (malloca_rname != NULL) freea (malloca_rname); switch (error) { /* Some of these errors probably cannot happen with the specific flags that we pass to CreateFile. But who knows... */ case ERROR_FILE_NOT_FOUND: /* The last component of rname does not exist. */ case ERROR_PATH_NOT_FOUND: /* Some directory component in rname does not exist. */ case ERROR_BAD_PATHNAME: /* rname is such as '\\server'. */ case ERROR_BAD_NETPATH: /* rname is such as '\\nonexistentserver\share'. */ case ERROR_BAD_NET_NAME: /* rname is such as '\\server\nonexistentshare'. */ case ERROR_INVALID_NAME: /* rname contains wildcards, misplaced colon, etc. */ case ERROR_DIRECTORY: errno = ENOENT; break; case ERROR_ACCESS_DENIED: /* rname is such as 'C:\System Volume Information\foo'. */ case ERROR_SHARING_VIOLATION: /* rname is such as 'C:\pagefile.sys'. */ errno = (ts != NULL ? EPERM : EACCES); break; case ERROR_OUTOFMEMORY: errno = ENOMEM; break; case ERROR_WRITE_PROTECT: errno = EROFS; break; case ERROR_WRITE_FAULT: case ERROR_READ_FAULT: case ERROR_GEN_FAILURE: errno = EIO; break; case ERROR_BUFFER_OVERFLOW: case ERROR_FILENAME_EXCED_RANGE: errno = ENAMETOOLONG; break; case ERROR_DELETE_PENDING: /* XXX map to EACCES or EPERM? */ errno = EPERM; break; default: errno = EINVAL; break; } return -1; } } int utime (const char *name, const struct utimbuf *ts) { if (ts == NULL) return _gl_utimens_windows (name, NULL); else { struct timespec ts_with_nanoseconds[2]; ts_with_nanoseconds[0].tv_sec = ts->actime; ts_with_nanoseconds[0].tv_nsec = 0; ts_with_nanoseconds[1].tv_sec = ts->modtime; ts_with_nanoseconds[1].tv_nsec = 0; return _gl_utimens_windows (name, ts_with_nanoseconds); } } #else # include # include # include "filename.h" int utime (const char *name, const struct utimbuf *ts) #undef utime { # if REPLACE_FUNC_UTIME_FILE /* macOS 10.13 mistakenly succeeds when given a symbolic link to a non-directory with a trailing slash. */ size_t len = strlen (name); if (len > 0 && ISSLASH (name[len - 1])) { struct stat buf; if (stat (name, &buf) == -1 && errno != EOVERFLOW) return -1; } # endif /* REPLACE_FUNC_UTIME_FILE */ return utime (name, ts); } #endif recode-3.7.15/lib/open.c0000644000175000017500000001537714371444255010432 /* Open a descriptor to a file. Copyright (C) 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2007. */ /* If the user's config.h happens to include , let it include only the system's here, so that orig_open doesn't recurse to rpl_open. */ #define __need_system_fcntl_h #include /* Get the original definition of open. It might be defined as a macro. */ #include #include #undef __need_system_fcntl_h static int orig_open (const char *filename, int flags, mode_t mode) { #if defined _WIN32 && !defined __CYGWIN__ return _open (filename, flags, mode); #else return open (filename, flags, mode); #endif } /* Specification. */ /* Write "fcntl.h" here, not , otherwise OSF/1 5.1 DTK cc eliminates this include because of the preliminary #include above. */ #include "fcntl.h" #include "cloexec.h" #include #include #include #include #include #include #ifndef REPLACE_OPEN_DIRECTORY # define REPLACE_OPEN_DIRECTORY 0 #endif int open (const char *filename, int flags, ...) { /* 0 = unknown, 1 = yes, -1 = no. */ #if GNULIB_defined_O_CLOEXEC int have_cloexec = -1; #else static int have_cloexec; #endif mode_t mode; int fd; mode = 0; if (flags & O_CREAT) { va_list arg; va_start (arg, flags); /* We have to use PROMOTED_MODE_T instead of mode_t, otherwise GCC 4 creates crashing code when 'mode_t' is smaller than 'int'. */ mode = va_arg (arg, PROMOTED_MODE_T); va_end (arg); } #if GNULIB_defined_O_NONBLOCK /* The only known platform that lacks O_NONBLOCK is mingw, but it also lacks named pipes and Unix sockets, which are the only two file types that require non-blocking handling in open(). Therefore, it is safe to ignore O_NONBLOCK here. It is handy that mingw also lacks openat(), so that is also covered here. */ flags &= ~O_NONBLOCK; #endif #if defined _WIN32 && ! defined __CYGWIN__ if (strcmp (filename, "/dev/null") == 0) filename = "NUL"; #endif #if OPEN_TRAILING_SLASH_BUG /* Fail if one of O_CREAT, O_WRONLY, O_RDWR is specified and the filename ends in a slash, as POSIX says such a filename must name a directory : "A pathname that contains at least one non- character and that ends with one or more trailing characters shall not be resolved successfully unless the last pathname component before the trailing characters names an existing directory" If the named file already exists as a directory, then - if O_CREAT is specified, open() must fail because of the semantics of O_CREAT, - if O_WRONLY or O_RDWR is specified, open() must fail because POSIX says that it fails with errno = EISDIR in this case. If the named file does not exist or does not name a directory, then - if O_CREAT is specified, open() must fail since open() cannot create directories, - if O_WRONLY or O_RDWR is specified, open() must fail because the file does not contain a '.' directory. */ if ((flags & O_CREAT) || (flags & O_ACCMODE) == O_RDWR || (flags & O_ACCMODE) == O_WRONLY) { size_t len = strlen (filename); if (len > 0 && filename[len - 1] == '/') { errno = EISDIR; return -1; } } #endif fd = orig_open (filename, flags & ~(have_cloexec < 0 ? O_CLOEXEC : 0), mode); if (flags & O_CLOEXEC) { if (! have_cloexec) { if (0 <= fd) have_cloexec = 1; else if (errno == EINVAL) { fd = orig_open (filename, flags & ~O_CLOEXEC, mode); have_cloexec = -1; } } if (have_cloexec < 0 && 0 <= fd) set_cloexec_flag (fd, true); } #if REPLACE_FCHDIR /* Implementing fchdir and fdopendir requires the ability to open a directory file descriptor. If open doesn't support that (as on mingw), we use a dummy file that behaves the same as directories on Linux (ie. always reports EOF on attempts to read()), and override fstat() in fchdir.c to hide the fact that we have a dummy. */ if (REPLACE_OPEN_DIRECTORY && fd < 0 && errno == EACCES && ((flags & O_ACCMODE) == O_RDONLY || (O_SEARCH != O_RDONLY && (flags & O_ACCMODE) == O_SEARCH))) { struct stat statbuf; if (stat (filename, &statbuf) == 0 && S_ISDIR (statbuf.st_mode)) { /* Maximum recursion depth of 1. */ fd = open ("/dev/null", flags, mode); if (0 <= fd) fd = _gl_register_fd (fd, filename); } else errno = EACCES; } #endif #if OPEN_TRAILING_SLASH_BUG /* If the filename ends in a slash and fd does not refer to a directory, then fail. Rationale: POSIX says such a filename must name a directory : "A pathname that contains at least one non- character and that ends with one or more trailing characters shall not be resolved successfully unless the last pathname component before the trailing characters names an existing directory" If the named file without the slash is not a directory, open() must fail with ENOTDIR. */ if (fd >= 0) { /* We know len is positive, since open did not fail with ENOENT. */ size_t len = strlen (filename); if (filename[len - 1] == '/') { struct stat statbuf; if (fstat (fd, &statbuf) >= 0 && !S_ISDIR (statbuf.st_mode)) { close (fd); errno = ENOTDIR; return -1; } } } #endif #if REPLACE_FCHDIR if (!REPLACE_OPEN_DIRECTORY && 0 <= fd) fd = _gl_register_fd (fd, filename); #endif return fd; } recode-3.7.15/lib/bitrotate.c0000644000175000017500000000151014371444255011446 /* Rotate bits in integers. Copyright (C) 2012-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #define BITROTATE_INLINE _GL_EXTERN_INLINE #include "bitrotate.h" recode-3.7.15/lib/malloca.c0000644000175000017500000000716514371444255011075 /* Safe automatic memory allocation. Copyright (C) 2003, 2006-2007, 2009-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2003, 2018. This file 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. This file 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 . */ #define _GL_USE_STDLIB_ALLOC 1 #include /* Specification. */ #include "malloca.h" #include #include "idx.h" /* The speed critical point in this file is freea() applied to an alloca() result: it must be fast, to match the speed of alloca(). The speed of mmalloca() and freea() in the other case are not critical, because they are only invoked for big memory sizes. Here we use a bit in the address as an indicator, an idea by OndÅ™ej Bílka. malloca() can return three types of pointers: - Pointers ≡ 0 mod 2*sa_alignment_max come from stack allocation. - Pointers ≡ sa_alignment_max mod 2*sa_alignment_max come from heap allocation. - NULL comes from a failed heap allocation. */ /* Type for holding very small pointer differences. */ typedef unsigned char small_t; /* Verify that it is wide enough. */ static_assert (2 * sa_alignment_max - 1 <= (small_t) -1); void * mmalloca (size_t n) { #if HAVE_ALLOCA /* Allocate one more word, used to determine the address to pass to freea(), and room for the alignment ≡ sa_alignment_max mod 2*sa_alignment_max. */ uintptr_t alignment2_mask = 2 * sa_alignment_max - 1; int plus = sizeof (small_t) + alignment2_mask; idx_t nplus; if (!ckd_add (&nplus, n, plus) && !xalloc_oversized (nplus, 1)) { char *mem = (char *) malloc (nplus); if (mem != NULL) { uintptr_t umem = (uintptr_t)mem, umemplus; /* The ckd_add avoids signed integer overflow on theoretical platforms where UINTPTR_MAX <= INT_MAX. */ ckd_add (&umemplus, umem, sizeof (small_t) + sa_alignment_max - 1); idx_t offset = ((umemplus & ~alignment2_mask) + sa_alignment_max - umem); void *vp = mem + offset; small_t *p = vp; /* Here p >= mem + sizeof (small_t), and p <= mem + sizeof (small_t) + 2 * sa_alignment_max - 1 hence p + n <= mem + nplus. So, the memory range [p, p+n) lies in the allocated memory range [mem, mem + nplus). */ p[-1] = offset; /* p ≡ sa_alignment_max mod 2*sa_alignment_max. */ return p; } } /* Out of memory. */ return NULL; #else # if !MALLOC_0_IS_NONNULL if (n == 0) n = 1; # endif return malloc (n); #endif } #if HAVE_ALLOCA void freea (void *p) { /* Check argument. */ if ((uintptr_t) p & (sa_alignment_max - 1)) { /* p was not the result of a malloca() call. Invalid argument. */ abort (); } /* Determine whether p was a non-NULL pointer returned by mmalloca(). */ if ((uintptr_t) p & sa_alignment_max) { void *mem = (char *) p - ((small_t *) p)[-1]; free (mem); } } #endif /* * Hey Emacs! * Local Variables: * coding: utf-8 * End: */ recode-3.7.15/lib/printf-args.h0000644000175000017500000000740614371444255011724 /* Decomposed printf argument list. Copyright (C) 1999, 2002-2003, 2006-2007, 2011-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _PRINTF_ARGS_H #define _PRINTF_ARGS_H /* This file can be parametrized with the following macros: ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. PRINTF_FETCHARGS Name of the function to be declared. STATIC Set to 'static' to declare the function static. */ /* Default parameters. */ #ifndef PRINTF_FETCHARGS # define PRINTF_FETCHARGS printf_fetchargs #endif /* Get size_t. */ #include /* Get wchar_t. */ #if HAVE_WCHAR_T # include #endif /* Get wint_t. */ #if HAVE_WINT_T # include #endif /* Get va_list. */ #include /* Argument types */ typedef enum { TYPE_NONE, TYPE_SCHAR, TYPE_UCHAR, TYPE_SHORT, TYPE_USHORT, TYPE_INT, TYPE_UINT, TYPE_LONGINT, TYPE_ULONGINT, TYPE_LONGLONGINT, TYPE_ULONGLONGINT, TYPE_DOUBLE, TYPE_LONGDOUBLE, TYPE_CHAR, #if HAVE_WINT_T TYPE_WIDE_CHAR, #endif TYPE_STRING, #if HAVE_WCHAR_T TYPE_WIDE_STRING, #endif TYPE_POINTER, TYPE_COUNT_SCHAR_POINTER, TYPE_COUNT_SHORT_POINTER, TYPE_COUNT_INT_POINTER, TYPE_COUNT_LONGINT_POINTER, TYPE_COUNT_LONGLONGINT_POINTER #if ENABLE_UNISTDIO /* The unistdio extensions. */ , TYPE_U8_STRING , TYPE_U16_STRING , TYPE_U32_STRING #endif } arg_type; /* Polymorphic argument */ typedef struct { arg_type type; union { signed char a_schar; unsigned char a_uchar; short a_short; unsigned short a_ushort; int a_int; unsigned int a_uint; long int a_longint; unsigned long int a_ulongint; long long int a_longlongint; unsigned long long int a_ulonglongint; float a_float; double a_double; long double a_longdouble; int a_char; #if HAVE_WINT_T wint_t a_wide_char; #endif const char* a_string; #if HAVE_WCHAR_T const wchar_t* a_wide_string; #endif void* a_pointer; signed char * a_count_schar_pointer; short * a_count_short_pointer; int * a_count_int_pointer; long int * a_count_longint_pointer; long long int * a_count_longlongint_pointer; #if ENABLE_UNISTDIO /* The unistdio extensions. */ const uint8_t * a_u8_string; const uint16_t * a_u16_string; const uint32_t * a_u32_string; #endif } a; } argument; /* Number of directly allocated arguments (no malloc() needed). */ #define N_DIRECT_ALLOC_ARGUMENTS 7 typedef struct { size_t count; argument *arg; argument direct_alloc_arg[N_DIRECT_ALLOC_ARGUMENTS]; } arguments; /* Fetch the arguments, putting them into a. */ #ifdef STATIC STATIC #else extern #endif int PRINTF_FETCHARGS (va_list args, arguments *a); #endif /* _PRINTF_ARGS_H */ recode-3.7.15/lib/printf-frexpl.h0000644000175000017500000000212514371444255012261 /* Split a 'long double' into fraction and mantissa, for hexadecimal printf. Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Write a finite, positive number x as x = mantissa * 2^exp where exp >= LDBL_MIN_EXP - 1, mantissa < 2.0, if x is not a denormalized number then mantissa >= 1.0. Store exp in *EXPPTR and return mantissa. */ extern long double printf_frexpl (long double x, int *expptr); recode-3.7.15/lib/xsize.c0000644000175000017500000000150414371444255010616 /* Checked size_t computations. Copyright (C) 2012-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #define XSIZE_INLINE _GL_EXTERN_INLINE #include "xsize.h" recode-3.7.15/lib/strndup.c0000644000175000017500000000206614371444255011157 /* A replacement function, for systems that lack strndup. Copyright (C) 1996-1998, 2001-2003, 2005-2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #include #include char * strndup (char const *s, size_t n) { size_t len = strnlen (s, n); char *new = malloc (len + 1); if (new == NULL) return NULL; new[len] = '\0'; return memcpy (new, s, len); } recode-3.7.15/lib/stdint.in.h0000644000175000017500000005475414371444255011412 /* Copyright (C) 2001-2002, 2004-2023 Free Software Foundation, Inc. Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood. This file is part of gnulib. This file 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. This file 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 . */ /* * ISO C 99 for platforms that lack it. * */ #ifndef _@GUARD_PREFIX@_STDINT_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* When including a system file that in turn includes , use the system , not our substitute. This avoids problems with (for example) VMS, whose includes . */ #define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H /* On Android (Bionic libc), includes this file before having defined 'time_t'. Therefore in this case avoid including other system header files; just include the system's . Ideally we should test __BIONIC__ here, but it is only defined after has been included; hence test __ANDROID__ instead. */ #if defined __ANDROID__ && defined _GL_INCLUDING_SYS_TYPES_H # @INCLUDE_NEXT@ @NEXT_STDINT_H@ #else /* Get those types that are already defined in other system include files, so that we can "#define int8_t signed char" below without worrying about a later system include file containing a "typedef signed char int8_t;" that will get messed up by our macro. Our macros should all be consistent with the system versions, except for the "fast" types and macros, which we recommend against using in public interfaces due to compiler differences. */ #if @HAVE_STDINT_H@ # if defined __sgi && ! defined __c99 /* Bypass IRIX's if in C89 mode, since it merely annoys users with "This header file is to be used only for c99 mode compilations" diagnostics. */ # define __STDINT_H__ # endif /* Some pre-C++11 implementations need this. */ # ifdef __cplusplus # ifndef __STDC_CONSTANT_MACROS # define __STDC_CONSTANT_MACROS 1 # endif # ifndef __STDC_LIMIT_MACROS # define __STDC_LIMIT_MACROS 1 # endif # endif /* Other systems may have an incomplete or buggy . Include it before , since any "#include " in would reinclude us, skipping our contents because _@GUARD_PREFIX@_STDINT_H is defined. The include_next requires a split double-inclusion guard. */ # @INCLUDE_NEXT@ @NEXT_STDINT_H@ #endif #if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H #define _@GUARD_PREFIX@_STDINT_H /* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX, LONG_MIN, LONG_MAX, ULONG_MAX, _GL_INTEGER_WIDTH. */ #include /* Override WINT_MIN and WINT_MAX if gnulib's or overrides wint_t. */ #if @GNULIBHEADERS_OVERRIDE_WINT_T@ # undef WINT_MIN # undef WINT_MAX # define WINT_MIN 0x0U # define WINT_MAX 0xffffffffU #endif #if ! @HAVE_C99_STDINT_H@ /* defines some of the stdint.h types as well, on glibc, IRIX 6.5, and OpenBSD 3.8 (via ). AIX 5.2 isn't needed and causes troubles. Mac OS X 10.4.6 includes (which is us), but relies on the system definitions, so include after @NEXT_STDINT_H@. */ # if @HAVE_SYS_TYPES_H@ && ! defined _AIX # include # endif # if @HAVE_INTTYPES_H@ /* In OpenBSD 3.8, includes , which defines int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__. also defines intptr_t and uintptr_t. */ # include # elif @HAVE_SYS_INTTYPES_H@ /* Solaris 7 has the types except the *_fast*_t types, and the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */ # include # endif # if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__ /* Linux libc4 >= 4.6.7 and libc5 have a that defines int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is included by . */ # include # endif # undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H /* Minimum and maximum values for an integer type under the usual assumption. Return an unspecified value if BITS == 0, adding a check to pacify picky compilers. */ /* These are separate macros, because if you try to merge these macros into a single one, HP-UX cc rejects the resulting expression in constant expressions. */ # define _STDINT_UNSIGNED_MIN(bits, zero) \ (zero) # define _STDINT_SIGNED_MIN(bits, zero) \ (~ _STDINT_MAX (1, bits, zero)) # define _STDINT_MAX(signed, bits, zero) \ (((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1) #if !GNULIB_defined_stdint_types /* 7.18.1.1. Exact-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. */ # undef int8_t # undef uint8_t typedef signed char gl_int8_t; typedef unsigned char gl_uint8_t; # define int8_t gl_int8_t # define uint8_t gl_uint8_t # undef int16_t # undef uint16_t typedef short int gl_int16_t; typedef unsigned short int gl_uint16_t; # define int16_t gl_int16_t # define uint16_t gl_uint16_t # undef int32_t # undef uint32_t typedef int gl_int32_t; typedef unsigned int gl_uint32_t; # define int32_t gl_int32_t # define uint32_t gl_uint32_t /* If the system defines INT64_MAX, assume int64_t works. That way, if the underlying platform defines int64_t to be a 64-bit long long int, the code below won't mistakenly define it to be a 64-bit long int, which would mess up C++ name mangling. We must use #ifdef rather than #if, to avoid an error with HP-UX 10.20 cc. */ # ifdef INT64_MAX # define GL_INT64_T # else /* Do not undefine int64_t if gnulib is not being used with 64-bit types, since otherwise it breaks platforms like Tandem/NSK. */ # if LONG_MAX >> 31 >> 31 == 1 # undef int64_t typedef long int gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # elif defined _MSC_VER # undef int64_t typedef __int64 gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # else # undef int64_t typedef long long int gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # endif # endif # ifdef UINT64_MAX # define GL_UINT64_T # else # if ULONG_MAX >> 31 >> 31 >> 1 == 1 # undef uint64_t typedef unsigned long int gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # elif defined _MSC_VER # undef uint64_t typedef unsigned __int64 gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # else # undef uint64_t typedef unsigned long long int gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # endif # endif /* Avoid collision with Solaris 2.5.1 etc. */ # define _UINT8_T # define _UINT32_T # define _UINT64_T /* 7.18.1.2. Minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types are the same as the corresponding N_t types. */ # undef int_least8_t # undef uint_least8_t # undef int_least16_t # undef uint_least16_t # undef int_least32_t # undef uint_least32_t # undef int_least64_t # undef uint_least64_t # define int_least8_t int8_t # define uint_least8_t uint8_t # define int_least16_t int16_t # define uint_least16_t uint16_t # define int_least32_t int32_t # define uint_least32_t uint32_t # ifdef GL_INT64_T # define int_least64_t int64_t # endif # ifdef GL_UINT64_T # define uint_least64_t uint64_t # endif /* 7.18.1.3. Fastest minimum-width integer types */ /* Note: Other substitutes may define these types differently. It is not recommended to use these types in public header files. */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types are taken from the same list of types. The following code normally uses types consistent with glibc, as that lessens the chance of incompatibility with older GNU hosts. */ # undef int_fast8_t # undef uint_fast8_t # undef int_fast16_t # undef uint_fast16_t # undef int_fast32_t # undef uint_fast32_t # undef int_fast64_t # undef uint_fast64_t typedef signed char gl_int_fast8_t; typedef unsigned char gl_uint_fast8_t; # ifdef __sun /* Define types compatible with SunOS 5.10, so that code compiled under earlier SunOS versions works with code compiled under SunOS 5.10. */ typedef int gl_int_fast32_t; typedef unsigned int gl_uint_fast32_t; # else typedef long int gl_int_fast32_t; typedef unsigned long int gl_uint_fast32_t; # endif typedef gl_int_fast32_t gl_int_fast16_t; typedef gl_uint_fast32_t gl_uint_fast16_t; # define int_fast8_t gl_int_fast8_t # define uint_fast8_t gl_uint_fast8_t # define int_fast16_t gl_int_fast16_t # define uint_fast16_t gl_uint_fast16_t # define int_fast32_t gl_int_fast32_t # define uint_fast32_t gl_uint_fast32_t # ifdef GL_INT64_T # define int_fast64_t int64_t # endif # ifdef GL_UINT64_T # define uint_fast64_t uint64_t # endif /* 7.18.1.4. Integer types capable of holding object pointers */ /* kLIBC's defines _INTPTR_T_DECLARED and needs its own definitions of intptr_t and uintptr_t (which use int and unsigned) to avoid clashes with declarations of system functions like sbrk. Similarly, MinGW WSL-5.4.1 needs its own intptr_t and uintptr_t to avoid conflicting declarations of system functions like _findclose in . */ # if !((defined __KLIBC__ && defined _INTPTR_T_DECLARED) \ || defined __MINGW32__) # undef intptr_t # undef uintptr_t # ifdef _WIN64 typedef long long int gl_intptr_t; typedef unsigned long long int gl_uintptr_t; # else typedef long int gl_intptr_t; typedef unsigned long int gl_uintptr_t; # endif # define intptr_t gl_intptr_t # define uintptr_t gl_uintptr_t # endif /* 7.18.1.5. Greatest-width integer types */ /* Note: These types are compiler dependent. It may be unwise to use them in public header files. */ /* If the system defines INTMAX_MAX, assume that intmax_t works, and similarly for UINTMAX_MAX and uintmax_t. This avoids problems with assuming one type where another is used by the system. */ # ifndef INTMAX_MAX # undef INTMAX_C # undef intmax_t # if LONG_MAX >> 30 == 1 typedef long long int gl_intmax_t; # define intmax_t gl_intmax_t # elif defined GL_INT64_T # define intmax_t int64_t # else typedef long int gl_intmax_t; # define intmax_t gl_intmax_t # endif # endif # ifndef UINTMAX_MAX # undef UINTMAX_C # undef uintmax_t # if ULONG_MAX >> 31 == 1 typedef unsigned long long int gl_uintmax_t; # define uintmax_t gl_uintmax_t # elif defined GL_UINT64_T # define uintmax_t uint64_t # else typedef unsigned long int gl_uintmax_t; # define uintmax_t gl_uintmax_t # endif # endif /* Verify that intmax_t and uintmax_t have the same size. Too much code breaks if this is not the case. If this check fails, the reason is likely to be found in the autoconf macros. */ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t) ? 1 : -1]; # define GNULIB_defined_stdint_types 1 # endif /* !GNULIB_defined_stdint_types */ /* 7.18.2. Limits of specified-width integer types */ /* 7.18.2.1. Limits of exact-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. */ # undef INT8_MIN # undef INT8_MAX # undef UINT8_MAX # define INT8_MIN (~ INT8_MAX) # define INT8_MAX 127 # define UINT8_MAX 255 # undef INT16_MIN # undef INT16_MAX # undef UINT16_MAX # define INT16_MIN (~ INT16_MAX) # define INT16_MAX 32767 # define UINT16_MAX 65535 # undef INT32_MIN # undef INT32_MAX # undef UINT32_MAX # define INT32_MIN (~ INT32_MAX) # define INT32_MAX 2147483647 # define UINT32_MAX 4294967295U # if defined GL_INT64_T && ! defined INT64_MAX /* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0 evaluates the latter incorrectly in preprocessor expressions. */ # define INT64_MIN (- INTMAX_C (1) << 63) # define INT64_MAX INTMAX_C (9223372036854775807) # endif # if defined GL_UINT64_T && ! defined UINT64_MAX # define UINT64_MAX UINTMAX_C (18446744073709551615) # endif /* 7.18.2.2. Limits of minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types are the same as the corresponding N_t types. */ # undef INT_LEAST8_MIN # undef INT_LEAST8_MAX # undef UINT_LEAST8_MAX # define INT_LEAST8_MIN INT8_MIN # define INT_LEAST8_MAX INT8_MAX # define UINT_LEAST8_MAX UINT8_MAX # undef INT_LEAST16_MIN # undef INT_LEAST16_MAX # undef UINT_LEAST16_MAX # define INT_LEAST16_MIN INT16_MIN # define INT_LEAST16_MAX INT16_MAX # define UINT_LEAST16_MAX UINT16_MAX # undef INT_LEAST32_MIN # undef INT_LEAST32_MAX # undef UINT_LEAST32_MAX # define INT_LEAST32_MIN INT32_MIN # define INT_LEAST32_MAX INT32_MAX # define UINT_LEAST32_MAX UINT32_MAX # undef INT_LEAST64_MIN # undef INT_LEAST64_MAX # ifdef GL_INT64_T # define INT_LEAST64_MIN INT64_MIN # define INT_LEAST64_MAX INT64_MAX # endif # undef UINT_LEAST64_MAX # ifdef GL_UINT64_T # define UINT_LEAST64_MAX UINT64_MAX # endif /* 7.18.2.3. Limits of fastest minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types are taken from the same list of types. */ # undef INT_FAST8_MIN # undef INT_FAST8_MAX # undef UINT_FAST8_MAX # define INT_FAST8_MIN SCHAR_MIN # define INT_FAST8_MAX SCHAR_MAX # define UINT_FAST8_MAX UCHAR_MAX # undef INT_FAST16_MIN # undef INT_FAST16_MAX # undef UINT_FAST16_MAX # define INT_FAST16_MIN INT_FAST32_MIN # define INT_FAST16_MAX INT_FAST32_MAX # define UINT_FAST16_MAX UINT_FAST32_MAX # undef INT_FAST32_MIN # undef INT_FAST32_MAX # undef UINT_FAST32_MAX # ifdef __sun # define INT_FAST32_MIN INT_MIN # define INT_FAST32_MAX INT_MAX # define UINT_FAST32_MAX UINT_MAX # else # define INT_FAST32_MIN LONG_MIN # define INT_FAST32_MAX LONG_MAX # define UINT_FAST32_MAX ULONG_MAX # endif # undef INT_FAST64_MIN # undef INT_FAST64_MAX # ifdef GL_INT64_T # define INT_FAST64_MIN INT64_MIN # define INT_FAST64_MAX INT64_MAX # endif # undef UINT_FAST64_MAX # ifdef GL_UINT64_T # define UINT_FAST64_MAX UINT64_MAX # endif /* 7.18.2.4. Limits of integer types capable of holding object pointers */ # undef INTPTR_MIN # undef INTPTR_MAX # undef UINTPTR_MAX # ifdef _WIN64 # define INTPTR_MIN LLONG_MIN # define INTPTR_MAX LLONG_MAX # define UINTPTR_MAX ULLONG_MAX # else # define INTPTR_MIN LONG_MIN # define INTPTR_MAX LONG_MAX # define UINTPTR_MAX ULONG_MAX # endif /* 7.18.2.5. Limits of greatest-width integer types */ # ifndef INTMAX_MAX # undef INTMAX_MIN # ifdef INT64_MAX # define INTMAX_MIN INT64_MIN # define INTMAX_MAX INT64_MAX # else # define INTMAX_MIN INT32_MIN # define INTMAX_MAX INT32_MAX # endif # endif # ifndef UINTMAX_MAX # ifdef UINT64_MAX # define UINTMAX_MAX UINT64_MAX # else # define UINTMAX_MAX UINT32_MAX # endif # endif /* 7.18.3. Limits of other integer types */ /* ptrdiff_t limits */ # undef PTRDIFF_MIN # undef PTRDIFF_MAX # if @APPLE_UNIVERSAL_BUILD@ # ifdef _LP64 # define PTRDIFF_MIN _STDINT_SIGNED_MIN (64, 0l) # define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l) # else # define PTRDIFF_MIN _STDINT_SIGNED_MIN (32, 0) # define PTRDIFF_MAX _STDINT_MAX (1, 32, 0) # endif # else # define PTRDIFF_MIN \ _STDINT_SIGNED_MIN (@BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) # define PTRDIFF_MAX \ _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) # endif /* sig_atomic_t limits */ # undef SIG_ATOMIC_MIN # undef SIG_ATOMIC_MAX # if @HAVE_SIGNED_SIG_ATOMIC_T@ # define SIG_ATOMIC_MIN \ _STDINT_SIGNED_MIN (@BITSIZEOF_SIG_ATOMIC_T@, 0@SIG_ATOMIC_T_SUFFIX@) # else # define SIG_ATOMIC_MIN \ _STDINT_UNSIGNED_MIN (@BITSIZEOF_SIG_ATOMIC_T@, 0@SIG_ATOMIC_T_SUFFIX@) # endif # define SIG_ATOMIC_MAX \ _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \ 0@SIG_ATOMIC_T_SUFFIX@) /* size_t limit */ # undef SIZE_MAX # if @APPLE_UNIVERSAL_BUILD@ # ifdef _LP64 # define SIZE_MAX _STDINT_MAX (0, 64, 0ul) # else # define SIZE_MAX _STDINT_MAX (0, 32, 0ul) # endif # else # define SIZE_MAX _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@) # endif /* wchar_t limits */ /* Get WCHAR_MIN, WCHAR_MAX. This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested includes -> -> -> , and the latter includes and assumes its types are already defined. */ # if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX) # define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H # include # undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H # endif # undef WCHAR_MIN # undef WCHAR_MAX # if @HAVE_SIGNED_WCHAR_T@ # define WCHAR_MIN \ _STDINT_SIGNED_MIN (@BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) # else # define WCHAR_MIN \ _STDINT_UNSIGNED_MIN (@BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) # endif # define WCHAR_MAX \ _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) /* wint_t limits */ /* If gnulib's or overrides wint_t, @WINT_T_SUFFIX@ is not accurate, therefore use the definitions from above. */ # if !@GNULIBHEADERS_OVERRIDE_WINT_T@ # undef WINT_MIN # undef WINT_MAX # if @HAVE_SIGNED_WINT_T@ # define WINT_MIN \ _STDINT_SIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) # else # define WINT_MIN \ _STDINT_UNSIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) # endif # define WINT_MAX \ _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) # endif /* 7.18.4. Macros for integer constants */ /* 7.18.4.1. Macros for minimum-width integer constants */ /* According to ISO C 99 Technical Corrigendum 1 */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */ # undef INT8_C # undef UINT8_C # define INT8_C(x) x # define UINT8_C(x) x # undef INT16_C # undef UINT16_C # define INT16_C(x) x # define UINT16_C(x) x # undef INT32_C # undef UINT32_C # define INT32_C(x) x # define UINT32_C(x) x ## U # undef INT64_C # undef UINT64_C # if LONG_MAX >> 31 >> 31 == 1 # define INT64_C(x) x##L # elif defined _MSC_VER # define INT64_C(x) x##i64 # else # define INT64_C(x) x##LL # endif # if ULONG_MAX >> 31 >> 31 >> 1 == 1 # define UINT64_C(x) x##UL # elif defined _MSC_VER # define UINT64_C(x) x##ui64 # else # define UINT64_C(x) x##ULL # endif /* 7.18.4.2. Macros for greatest-width integer constants */ # ifndef INTMAX_C # if LONG_MAX >> 30 == 1 # define INTMAX_C(x) x##LL # elif defined GL_INT64_T # define INTMAX_C(x) INT64_C(x) # else # define INTMAX_C(x) x##L # endif # endif # ifndef UINTMAX_C # if ULONG_MAX >> 31 == 1 # define UINTMAX_C(x) x##ULL # elif defined GL_UINT64_T # define UINTMAX_C(x) UINT64_C(x) # else # define UINTMAX_C(x) x##UL # endif # endif #endif /* !@HAVE_C99_STDINT_H@ */ /* Macros specified by ISO/IEC TS 18661-1:2014. */ #if (!defined UINTMAX_WIDTH \ && (defined _GNU_SOURCE || defined __STDC_WANT_IEC_60559_BFP_EXT__)) # ifdef INT8_MAX # define INT8_WIDTH _GL_INTEGER_WIDTH (INT8_MIN, INT8_MAX) # endif # ifdef UINT8_MAX # define UINT8_WIDTH _GL_INTEGER_WIDTH (0, UINT8_MAX) # endif # ifdef INT16_MAX # define INT16_WIDTH _GL_INTEGER_WIDTH (INT16_MIN, INT16_MAX) # endif # ifdef UINT16_MAX # define UINT16_WIDTH _GL_INTEGER_WIDTH (0, UINT16_MAX) # endif # ifdef INT32_MAX # define INT32_WIDTH _GL_INTEGER_WIDTH (INT32_MIN, INT32_MAX) # endif # ifdef UINT32_MAX # define UINT32_WIDTH _GL_INTEGER_WIDTH (0, UINT32_MAX) # endif # ifdef INT64_MAX # define INT64_WIDTH _GL_INTEGER_WIDTH (INT64_MIN, INT64_MAX) # endif # ifdef UINT64_MAX # define UINT64_WIDTH _GL_INTEGER_WIDTH (0, UINT64_MAX) # endif # define INT_LEAST8_WIDTH _GL_INTEGER_WIDTH (INT_LEAST8_MIN, INT_LEAST8_MAX) # define UINT_LEAST8_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST8_MAX) # define INT_LEAST16_WIDTH _GL_INTEGER_WIDTH (INT_LEAST16_MIN, INT_LEAST16_MAX) # define UINT_LEAST16_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST16_MAX) # define INT_LEAST32_WIDTH _GL_INTEGER_WIDTH (INT_LEAST32_MIN, INT_LEAST32_MAX) # define UINT_LEAST32_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST32_MAX) # define INT_LEAST64_WIDTH _GL_INTEGER_WIDTH (INT_LEAST64_MIN, INT_LEAST64_MAX) # define UINT_LEAST64_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST64_MAX) # define INT_FAST8_WIDTH _GL_INTEGER_WIDTH (INT_FAST8_MIN, INT_FAST8_MAX) # define UINT_FAST8_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST8_MAX) # define INT_FAST16_WIDTH _GL_INTEGER_WIDTH (INT_FAST16_MIN, INT_FAST16_MAX) # define UINT_FAST16_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST16_MAX) # define INT_FAST32_WIDTH _GL_INTEGER_WIDTH (INT_FAST32_MIN, INT_FAST32_MAX) # define UINT_FAST32_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST32_MAX) # define INT_FAST64_WIDTH _GL_INTEGER_WIDTH (INT_FAST64_MIN, INT_FAST64_MAX) # define UINT_FAST64_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST64_MAX) # define INTPTR_WIDTH _GL_INTEGER_WIDTH (INTPTR_MIN, INTPTR_MAX) # define UINTPTR_WIDTH _GL_INTEGER_WIDTH (0, UINTPTR_MAX) # define INTMAX_WIDTH _GL_INTEGER_WIDTH (INTMAX_MIN, INTMAX_MAX) # define UINTMAX_WIDTH _GL_INTEGER_WIDTH (0, UINTMAX_MAX) # define PTRDIFF_WIDTH _GL_INTEGER_WIDTH (PTRDIFF_MIN, PTRDIFF_MAX) # define SIZE_WIDTH _GL_INTEGER_WIDTH (0, SIZE_MAX) # define WCHAR_WIDTH _GL_INTEGER_WIDTH (WCHAR_MIN, WCHAR_MAX) # ifdef WINT_MAX # define WINT_WIDTH _GL_INTEGER_WIDTH (WINT_MIN, WINT_MAX) # endif # ifdef SIG_ATOMIC_MAX # define SIG_ATOMIC_WIDTH _GL_INTEGER_WIDTH (SIG_ATOMIC_MIN, SIG_ATOMIC_MAX) # endif #endif /* !WINT_WIDTH && (_GNU_SOURCE || __STDC_WANT_IEC_60559_BFP_EXT__) */ #endif /* _@GUARD_PREFIX@_STDINT_H */ #endif /* !(defined __ANDROID__ && ...) */ #endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */ recode-3.7.15/lib/getprogname.h0000644000175000017500000000171014371444255011770 /* Program name management. Copyright (C) 2016-2023 Free Software Foundation, Inc. This program 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. 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 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 . */ #ifndef _GL_GETPROGNAME_H #define _GL_GETPROGNAME_H #include #if __GNUC__ || (__clang_major__ >= 4) # warning "The include file getprogname.h is deprecated. Use instead." #endif #endif recode-3.7.15/lib/basename.c0000644000175000017500000000352514371444255011234 /* basename.c -- return the last element in a file name Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2023 Free Software Foundation, Inc. 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 3 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, see . */ #include #include "dirname.h" #include #include "xalloc.h" char * base_name (char const *name) { char const *base = last_component (name); idx_t length; int dotslash_len; if (*base) { length = base_len (base); /* Collapse a sequence of trailing slashes into one. */ length += ISSLASH (base[length]); /* On systems with drive letters, "a/b:c" must return "./b:c" rather than "b:c" to avoid confusion with a drive letter. On systems with pure POSIX semantics, this is not an issue. */ dotslash_len = FILE_SYSTEM_PREFIX_LEN (base) != 0 ? 2 : 0; } else { /* There is no last component, so NAME is a file system root or the empty string. */ base = name; length = base_len (base); dotslash_len = 0; } char *p = ximalloc (dotslash_len + length + 1); if (dotslash_len) { p[0] = '.'; p[1] = '/'; } /* Finally, copy the basename. */ memcpy (p + dotslash_len, base, length); p[dotslash_len + length] = '\0'; return p; } recode-3.7.15/lib/c-strncasecmp.c0000644000175000017500000000313014371444255012213 /* c-strncasecmp.c -- case insensitive string comparator in C locale Copyright (C) 1998-1999, 2005-2006, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include "c-strcase.h" #include #include "c-ctype.h" int c_strncasecmp (const char *s1, const char *s2, size_t n) { register const unsigned char *p1 = (const unsigned char *) s1; register const unsigned char *p2 = (const unsigned char *) s2; unsigned char c1, c2; if (p1 == p2 || n == 0) return 0; do { c1 = c_tolower (*p1); c2 = c_tolower (*p2); if (--n == 0 || c1 == '\0') break; ++p1; ++p2; } while (c1 == c2); if (UCHAR_MAX <= INT_MAX) return c1 - c2; else /* On machines where 'char' and 'int' are types of the same size, the difference of two 'unsigned char' values - including the sign bit - doesn't fit in an 'int'. */ return _GL_CMP (c1, c2); } recode-3.7.15/lib/float.in.h0000644000175000017500000001731014371444255011175 /* A correct . Copyright (C) 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _@GUARD_PREFIX@_FLOAT_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_FLOAT_H@ #ifndef _@GUARD_PREFIX@_FLOAT_H #define _@GUARD_PREFIX@_FLOAT_H /* 'long double' properties. */ #if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__) /* Number of mantissa units, in base FLT_RADIX. */ # undef LDBL_MANT_DIG # define LDBL_MANT_DIG 64 /* Number of decimal digits that is sufficient for representing a number. */ # undef LDBL_DIG # define LDBL_DIG 18 /* x-1 where x is the smallest representable number > 1. */ # undef LDBL_EPSILON # define LDBL_EPSILON 1.0842021724855044340E-19L /* Minimum e such that FLT_RADIX^(e-1) is a normalized number. */ # undef LDBL_MIN_EXP # define LDBL_MIN_EXP (-16381) /* Maximum e such that FLT_RADIX^(e-1) is a representable finite number. */ # undef LDBL_MAX_EXP # define LDBL_MAX_EXP 16384 /* Minimum positive normalized number. */ # undef LDBL_MIN # define LDBL_MIN 3.3621031431120935063E-4932L /* Maximum representable finite number. */ # undef LDBL_MAX # define LDBL_MAX 1.1897314953572317650E+4932L /* Minimum e such that 10^e is in the range of normalized numbers. */ # undef LDBL_MIN_10_EXP # define LDBL_MIN_10_EXP (-4931) /* Maximum e such that 10^e is in the range of representable finite numbers. */ # undef LDBL_MAX_10_EXP # define LDBL_MAX_10_EXP 4932 #endif /* On FreeBSD/x86 6.4, the 'long double' type really has only 53 bits of precision in the compiler but 64 bits of precision at runtime. See . */ #if defined __i386__ && (defined __FreeBSD__ || defined __DragonFly__) /* Number of mantissa units, in base FLT_RADIX. */ # undef LDBL_MANT_DIG # define LDBL_MANT_DIG 64 /* Number of decimal digits that is sufficient for representing a number. */ # undef LDBL_DIG # define LDBL_DIG 18 /* x-1 where x is the smallest representable number > 1. */ # undef LDBL_EPSILON # define LDBL_EPSILON 1.084202172485504434007452800869941711426e-19L /* 2^-63 */ /* Minimum e such that FLT_RADIX^(e-1) is a normalized number. */ # undef LDBL_MIN_EXP # define LDBL_MIN_EXP (-16381) /* Maximum e such that FLT_RADIX^(e-1) is a representable finite number. */ # undef LDBL_MAX_EXP # define LDBL_MAX_EXP 16384 /* Minimum positive normalized number. */ # undef LDBL_MIN # define LDBL_MIN 3.362103143112093506262677817321752E-4932L /* = 0x1p-16382L */ /* Maximum representable finite number. */ # undef LDBL_MAX /* LDBL_MAX is represented as { 0xFFFFFFFF, 0xFFFFFFFF, 32766 }. But the largest literal that GCC allows us to write is 0x0.fffffffffffff8p16384L = { 0xFFFFF800, 0xFFFFFFFF, 32766 }. So, define it like this through a reference to an external variable const unsigned int LDBL_MAX[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 32766 }; extern const long double LDBL_MAX; Unfortunately, this is not a constant expression. */ # if !GNULIB_defined_long_double_union union gl_long_double_union { struct { unsigned int lo; unsigned int hi; unsigned int exponent; } xd; long double ld; }; # define GNULIB_defined_long_double_union 1 # endif extern const union gl_long_double_union gl_LDBL_MAX; # define LDBL_MAX (gl_LDBL_MAX.ld) /* Minimum e such that 10^e is in the range of normalized numbers. */ # undef LDBL_MIN_10_EXP # define LDBL_MIN_10_EXP (-4931) /* Maximum e such that 10^e is in the range of representable finite numbers. */ # undef LDBL_MAX_10_EXP # define LDBL_MAX_10_EXP 4932 #endif /* On AIX 7.1 with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX are wrong. On Linux/PowerPC with gcc 4.4, the value of LDBL_MAX is wrong. */ #if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__ # undef LDBL_MIN_EXP # define LDBL_MIN_EXP DBL_MIN_EXP # undef LDBL_MIN_10_EXP # define LDBL_MIN_10_EXP DBL_MIN_10_EXP # undef LDBL_MIN # define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */ #endif #if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__ # undef LDBL_MAX /* LDBL_MAX is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xFFFFFFFF }. It is not easy to define: #define LDBL_MAX 1.79769313486231580793728971405302307166e308L is too small, whereas #define LDBL_MAX 1.79769313486231580793728971405302307167e308L is too large. Apparently a bug in GCC decimal-to-binary conversion. Also, I can't get values larger than #define LDBL63 ((long double) (1ULL << 63)) #define LDBL882 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) #define LDBL945 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) #define LDBL1008 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) #define LDBL_MAX (LDBL1008 * 65535.0L + LDBL945 * (long double) 9223372036821221375ULL + LDBL882 * (long double) 4611686018427387904ULL) which is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xF8000000 }. So, define it like this through a reference to an external variable const double LDBL_MAX[2] = { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL }; extern const long double LDBL_MAX; or through a pointer cast #define LDBL_MAX \ (*(const long double *) (double[]) { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL }) Unfortunately, this is not a constant expression, and the latter expression does not work well when GCC is optimizing.. */ # if !GNULIB_defined_long_double_union union gl_long_double_union { struct { double hi; double lo; } dd; long double ld; }; # define GNULIB_defined_long_double_union 1 # endif extern const union gl_long_double_union gl_LDBL_MAX; # define LDBL_MAX (gl_LDBL_MAX.ld) #endif /* On IRIX 6.5, with cc, the value of LDBL_MANT_DIG is wrong. On IRIX 6.5, with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_EPSILON are wrong. */ #if defined __sgi && (LDBL_MANT_DIG >= 106) # undef LDBL_MANT_DIG # define LDBL_MANT_DIG 106 # if defined __GNUC__ # undef LDBL_MIN_EXP # define LDBL_MIN_EXP DBL_MIN_EXP # undef LDBL_MIN_10_EXP # define LDBL_MIN_10_EXP DBL_MIN_10_EXP # undef LDBL_MIN # define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */ # undef LDBL_EPSILON # define LDBL_EPSILON 2.46519032881566189191165176650870696773e-32L /* 2^-105 */ # endif #endif #if @REPLACE_ITOLD@ /* Pull in a function that fixes the 'int' to 'long double' conversion of glibc 2.7. */ extern # ifdef __cplusplus "C" # endif void _Qp_itoq (long double *, int); static void (*_gl_float_fix_itold) (long double *, int) = _Qp_itoq; #endif #endif /* _@GUARD_PREFIX@_FLOAT_H */ #endif /* _@GUARD_PREFIX@_FLOAT_H */ recode-3.7.15/lib/frexpl.c0000644000175000017500000000200014371444255010744 /* Split a 'long double' into fraction and mantissa. Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE /* Specification. */ # include long double frexpl (long double x, int *expptr) { return frexp (x, expptr); } #else # define USE_LONG_DOUBLE # include "frexp.c" #endif recode-3.7.15/lib/c-strcase.h0000644000175000017500000000405614371444255011352 /* Case-insensitive string comparison functions in C locale. Copyright (C) 1995-1996, 2001, 2003, 2005, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef C_STRCASE_H #define C_STRCASE_H #include /* The functions defined in this file assume the "C" locale and a character set without diacritics (ASCII-US or EBCDIC-US or something like that). Even if the "C" locale on a particular system is an extension of the ASCII character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it is ISO-8859-1), the functions in this file recognize only the ASCII characters. More precisely, one of the string arguments must be an ASCII string; the other one can also contain non-ASCII characters (but then the comparison result will be nonzero). */ #ifdef __cplusplus extern "C" { #endif /* Compare strings S1 and S2, ignoring case, returning less than, equal to or greater than zero if S1 is lexicographically less than, equal to or greater than S2. */ extern int c_strcasecmp (const char *s1, const char *s2) _GL_ATTRIBUTE_PURE; /* Compare no more than N characters of strings S1 and S2, ignoring case, returning less than, equal to or greater than zero if S1 is lexicographically less than, equal to or greater than S2. */ extern int c_strncasecmp (const char *s1, const char *s2, size_t n) _GL_ATTRIBUTE_PURE; #ifdef __cplusplus } #endif #endif /* C_STRCASE_H */ recode-3.7.15/lib/stat.c0000644000175000017500000003271414371444255010436 /* Work around platform bugs in stat. Copyright (C) 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Eric Blake and Bruno Haible. */ /* If the user's config.h happens to include , let it include only the system's here, so that orig_stat doesn't recurse to rpl_stat. */ #define __need_system_sys_stat_h #include /* Get the original definition of stat. It might be defined as a macro. */ #include #include #undef __need_system_sys_stat_h #if defined _WIN32 && ! defined __CYGWIN__ # define WINDOWS_NATIVE #endif #if !defined WINDOWS_NATIVE static int orig_stat (const char *filename, struct stat *buf) { return stat (filename, buf); } #endif /* Specification. */ #ifdef __osf__ /* Write "sys/stat.h" here, not , otherwise OSF/1 5.1 DTK cc eliminates this include because of the preliminary #include above. */ # include "sys/stat.h" #else # include #endif #include "stat-time.h" #include #include #include #include "filename.h" #include "malloca.h" #ifdef WINDOWS_NATIVE # define WIN32_LEAN_AND_MEAN # include # include "stat-w32.h" /* Don't assume that UNICODE is not defined. */ # undef WIN32_FIND_DATA # define WIN32_FIND_DATA WIN32_FIND_DATAA # undef CreateFile # define CreateFile CreateFileA # undef FindFirstFile # define FindFirstFile FindFirstFileA #endif #ifdef WINDOWS_NATIVE /* Return TRUE if the given file name denotes an UNC root. */ static BOOL is_unc_root (const char *rname) { /* Test whether it has the syntax '\\server\share'. */ if (ISSLASH (rname[0]) && ISSLASH (rname[1])) { /* It starts with two slashes. Find the next slash. */ const char *p = rname + 2; const char *q = p; while (*q != '\0' && !ISSLASH (*q)) q++; if (q > p && *q != '\0') { /* Found the next slash at q. */ q++; const char *r = q; while (*r != '\0' && !ISSLASH (*r)) r++; if (r > q && *r == '\0') return TRUE; } } return FALSE; } #endif /* Store information about NAME into ST. Work around bugs with trailing slashes. Mingw has other bugs (such as st_ino always being 0 on success) which this wrapper does not work around. But at least this implementation provides the ability to emulate fchdir correctly. */ int rpl_stat (char const *name, struct stat *buf) { #ifdef WINDOWS_NATIVE /* Fill the fields ourselves, because the original stat function returns values for st_atime, st_mtime, st_ctime that depend on the current time zone. See */ /* XXX Should we convert to wchar_t* and prepend '\\?\', in order to work around length limitations ? */ /* POSIX specifies: "More than two leading characters shall be treated as a single character." */ if (ISSLASH (name[0]) && ISSLASH (name[1]) && ISSLASH (name[2])) { name += 2; while (ISSLASH (name[1])) name++; } size_t len = strlen (name); size_t drive_prefix_len = (HAS_DEVICE (name) ? 2 : 0); /* Remove trailing slashes (except the very first one, at position drive_prefix_len), but remember their presence. */ size_t rlen; bool check_dir = false; rlen = len; while (rlen > drive_prefix_len && ISSLASH (name[rlen-1])) { check_dir = true; if (rlen == drive_prefix_len + 1) break; rlen--; } /* Handle '' and 'C:'. */ if (!check_dir && rlen == drive_prefix_len) { errno = ENOENT; return -1; } /* Handle '\\'. */ if (rlen == 1 && ISSLASH (name[0]) && len >= 2) { errno = ENOENT; return -1; } const char *rname; char *malloca_rname; if (rlen == len) { rname = name; malloca_rname = NULL; } else { malloca_rname = malloca (rlen + 1); if (malloca_rname == NULL) { errno = ENOMEM; return -1; } memcpy (malloca_rname, name, rlen); malloca_rname[rlen] = '\0'; rname = malloca_rname; } /* There are two ways to get at the requested information: - by scanning the parent directory and examining the relevant directory entry, - by opening the file directly. The first approach fails for root directories (e.g. 'C:\') and UNC root directories (e.g. '\\server\share'). The second approach fails for some system files (e.g. 'C:\pagefile.sys' and 'C:\hiberfil.sys'): ERROR_SHARING_VIOLATION. The second approach gives more information (in particular, correct st_dev, st_ino, st_nlink fields). So we use the second approach and, as a fallback except for root and UNC root directories, also the first approach. */ { int ret; { /* Approach based on the file. */ /* Open a handle to the file. CreateFile */ HANDLE h = CreateFile (rname, FILE_READ_ATTRIBUTES, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, /* FILE_FLAG_POSIX_SEMANTICS (treat file names that differ only in case as different) makes sense only when applied to *all* filesystem operations. */ FILE_FLAG_BACKUP_SEMANTICS /* | FILE_FLAG_POSIX_SEMANTICS */, NULL); if (h != INVALID_HANDLE_VALUE) { ret = _gl_fstat_by_handle (h, rname, buf); CloseHandle (h); goto done; } } /* Test for root and UNC root directories. */ if ((rlen == drive_prefix_len + 1 && ISSLASH (rname[drive_prefix_len])) || is_unc_root (rname)) goto failed; /* Fallback. */ { /* Approach based on the directory entry. */ if (strchr (rname, '?') != NULL || strchr (rname, '*') != NULL) { /* Other Windows API functions would fail with error ERROR_INVALID_NAME. */ if (malloca_rname != NULL) freea (malloca_rname); errno = ENOENT; return -1; } /* Get the details about the directory entry. This can be done through FindFirstFile or through FindFirstFileEx with argument FindExInfoBasic */ WIN32_FIND_DATA info; HANDLE h = FindFirstFile (rname, &info); if (h == INVALID_HANDLE_VALUE) goto failed; /* Test for error conditions before starting to fill *buf. */ if (sizeof (buf->st_size) <= 4 && info.nFileSizeHigh > 0) { FindClose (h); if (malloca_rname != NULL) freea (malloca_rname); errno = EOVERFLOW; return -1; } # if _GL_WINDOWS_STAT_INODES buf->st_dev = 0; # if _GL_WINDOWS_STAT_INODES == 2 buf->st_ino._gl_ino[0] = buf->st_ino._gl_ino[1] = 0; # else /* _GL_WINDOWS_STAT_INODES == 1 */ buf->st_ino = 0; # endif # else /* st_ino is not wide enough for identifying a file on a device. Without st_ino, st_dev is pointless. */ buf->st_dev = 0; buf->st_ino = 0; # endif /* st_mode. */ unsigned int mode = /* XXX How to handle FILE_ATTRIBUTE_REPARSE_POINT ? */ ((info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? _S_IFDIR | S_IEXEC_UGO : _S_IFREG) | S_IREAD_UGO | ((info.dwFileAttributes & FILE_ATTRIBUTE_READONLY) ? 0 : S_IWRITE_UGO); if (!(info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { /* Determine whether the file is executable by looking at the file name suffix. */ if (info.nFileSizeHigh > 0 || info.nFileSizeLow > 0) { const char *last_dot = NULL; const char *p; for (p = info.cFileName; *p != '\0'; p++) if (*p == '.') last_dot = p; if (last_dot != NULL) { const char *suffix = last_dot + 1; if (_stricmp (suffix, "exe") == 0 || _stricmp (suffix, "bat") == 0 || _stricmp (suffix, "cmd") == 0 || _stricmp (suffix, "com") == 0) mode |= S_IEXEC_UGO; } } } buf->st_mode = mode; /* st_nlink. Ignore hard links here. */ buf->st_nlink = 1; /* There's no easy way to map the Windows SID concept to an integer. */ buf->st_uid = 0; buf->st_gid = 0; /* st_rdev is irrelevant for normal files and directories. */ buf->st_rdev = 0; /* st_size. */ if (sizeof (buf->st_size) <= 4) /* Range check already done above. */ buf->st_size = info.nFileSizeLow; else buf->st_size = ((long long) info.nFileSizeHigh << 32) | (long long) info.nFileSizeLow; /* st_atime, st_mtime, st_ctime. */ # if _GL_WINDOWS_STAT_TIMESPEC buf->st_atim = _gl_convert_FILETIME_to_timespec (&info.ftLastAccessTime); buf->st_mtim = _gl_convert_FILETIME_to_timespec (&info.ftLastWriteTime); buf->st_ctim = _gl_convert_FILETIME_to_timespec (&info.ftCreationTime); # else buf->st_atime = _gl_convert_FILETIME_to_POSIX (&info.ftLastAccessTime); buf->st_mtime = _gl_convert_FILETIME_to_POSIX (&info.ftLastWriteTime); buf->st_ctime = _gl_convert_FILETIME_to_POSIX (&info.ftCreationTime); # endif FindClose (h); ret = 0; } done: if (ret >= 0 && check_dir && !S_ISDIR (buf->st_mode)) { errno = ENOTDIR; ret = -1; } if (malloca_rname != NULL) { int saved_errno = errno; freea (malloca_rname); errno = saved_errno; } return ret; } failed: { DWORD error = GetLastError (); #if 0 fprintf (stderr, "rpl_stat error 0x%x\n", (unsigned int) error); #endif if (malloca_rname != NULL) freea (malloca_rname); switch (error) { /* Some of these errors probably cannot happen with the specific flags that we pass to CreateFile. But who knows... */ case ERROR_FILE_NOT_FOUND: /* The last component of rname does not exist. */ case ERROR_PATH_NOT_FOUND: /* Some directory component in rname does not exist. */ case ERROR_BAD_PATHNAME: /* rname is such as '\\server'. */ case ERROR_BAD_NET_NAME: /* rname is such as '\\server\nonexistentshare'. */ case ERROR_INVALID_NAME: /* rname contains wildcards, misplaced colon, etc. */ case ERROR_DIRECTORY: errno = ENOENT; break; case ERROR_ACCESS_DENIED: /* rname is such as 'C:\System Volume Information\foo'. */ case ERROR_SHARING_VIOLATION: /* rname is such as 'C:\pagefile.sys' (second approach only). */ /* XXX map to EACCES or EPERM? */ errno = EACCES; break; case ERROR_OUTOFMEMORY: errno = ENOMEM; break; case ERROR_WRITE_PROTECT: errno = EROFS; break; case ERROR_WRITE_FAULT: case ERROR_READ_FAULT: case ERROR_GEN_FAILURE: errno = EIO; break; case ERROR_BUFFER_OVERFLOW: case ERROR_FILENAME_EXCED_RANGE: errno = ENAMETOOLONG; break; case ERROR_DELETE_PENDING: /* XXX map to EACCES or EPERM? */ errno = EPERM; break; default: errno = EINVAL; break; } return -1; } #else int result = orig_stat (name, buf); if (result == 0) { # if REPLACE_FUNC_STAT_FILE /* Solaris 9 mistakenly succeeds when given a non-directory with a trailing slash. */ if (!S_ISDIR (buf->st_mode)) { size_t len = strlen (name); if (ISSLASH (name[len - 1])) { errno = ENOTDIR; return -1; } } # endif /* REPLACE_FUNC_STAT_FILE */ result = stat_time_normalize (result, buf); } return result; #endif } recode-3.7.15/lib/msvc-inval.h0000644000175000017500000002122614371444255011543 /* Invalid parameter handler for MSVC runtime libraries. Copyright (C) 2011-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _MSVC_INVAL_H #define _MSVC_INVAL_H /* With MSVC runtime libraries with the "invalid parameter handler" concept, functions like fprintf(), dup2(), or close() crash when the caller passes an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF) instead. This file defines macros that turn such an invalid parameter notification into a non-local exit. An error code can then be produced at the target of this exit. You can thus write code like TRY_MSVC_INVAL { } CATCH_MSVC_INVAL { } DONE_MSVC_INVAL; This entire block expands to a single statement. The handling of invalid parameters can be done in three ways: * The default way, which is reasonable for programs (not libraries): AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [DEFAULT_HANDLING]) * The way for libraries that make "hairy" calls (like close(-1), or fclose(fp) where fileno(fp) is closed, or simply getdtablesize()): AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [HAIRY_LIBRARY_HANDLING]) * The way for libraries that make no "hairy" calls: AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [SANE_LIBRARY_HANDLING]) */ #define DEFAULT_HANDLING 0 #define HAIRY_LIBRARY_HANDLING 1 #define SANE_LIBRARY_HANDLING 2 #if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING) /* A native Windows platform with the "invalid parameter handler" concept, and either DEFAULT_HANDLING or HAIRY_LIBRARY_HANDLING. */ # if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING /* Default handling. */ # ifdef __cplusplus extern "C" { # endif /* Ensure that the invalid parameter handler in installed that just returns. Because we assume no other part of the program installs a different invalid parameter handler, this solution is multithread-safe. */ extern void gl_msvc_inval_ensure_handler (void); # ifdef __cplusplus } # endif # define TRY_MSVC_INVAL \ do \ { \ gl_msvc_inval_ensure_handler (); \ if (1) # define CATCH_MSVC_INVAL \ else # define DONE_MSVC_INVAL \ } \ while (0) # else /* Handling for hairy libraries. */ # include /* Gnulib can define its own status codes, as described in the page "Raising Software Exceptions" on microsoft.com . Our status codes are composed of - 0xE0000000, mandatory for all user-defined status codes, - 0x474E550, a API identifier ("GNU"), - 0, 1, 2, ..., used to distinguish different status codes from the same API. */ # define STATUS_GNULIB_INVALID_PARAMETER (0xE0000000 + 0x474E550 + 0) # if defined _MSC_VER /* A compiler that supports __try/__except, as described in the page "try-except statement" on microsoft.com . With __try/__except, we can use the multithread-safe exception handling. */ # ifdef __cplusplus extern "C" { # endif /* Ensure that the invalid parameter handler in installed that raises a software exception with code STATUS_GNULIB_INVALID_PARAMETER. Because we assume no other part of the program installs a different invalid parameter handler, this solution is multithread-safe. */ extern void gl_msvc_inval_ensure_handler (void); # ifdef __cplusplus } # endif # define TRY_MSVC_INVAL \ do \ { \ gl_msvc_inval_ensure_handler (); \ __try # define CATCH_MSVC_INVAL \ __except (GetExceptionCode () == STATUS_GNULIB_INVALID_PARAMETER \ ? EXCEPTION_EXECUTE_HANDLER \ : EXCEPTION_CONTINUE_SEARCH) # define DONE_MSVC_INVAL \ } \ while (0) # else /* Any compiler. We can only use setjmp/longjmp. */ # include # ifdef __cplusplus extern "C" { # endif struct gl_msvc_inval_per_thread { /* The restart that will resume execution at the code between CATCH_MSVC_INVAL and DONE_MSVC_INVAL. It is enabled only between TRY_MSVC_INVAL and CATCH_MSVC_INVAL. */ jmp_buf restart; /* Tells whether the contents of restart is valid. */ int restart_valid; }; /* Ensure that the invalid parameter handler in installed that passes control to the gl_msvc_inval_restart if it is valid, or raises a software exception with code STATUS_GNULIB_INVALID_PARAMETER otherwise. Because we assume no other part of the program installs a different invalid parameter handler, this solution is multithread-safe. */ extern void gl_msvc_inval_ensure_handler (void); /* Return a pointer to the per-thread data for the current thread. */ extern struct gl_msvc_inval_per_thread *gl_msvc_inval_current (void); # ifdef __cplusplus } # endif # define TRY_MSVC_INVAL \ do \ { \ struct gl_msvc_inval_per_thread *msvc_inval_current; \ gl_msvc_inval_ensure_handler (); \ msvc_inval_current = gl_msvc_inval_current (); \ /* First, initialize gl_msvc_inval_restart. */ \ if (setjmp (msvc_inval_current->restart) == 0) \ { \ /* Then, mark it as valid. */ \ msvc_inval_current->restart_valid = 1; # define CATCH_MSVC_INVAL \ /* Execution completed. \ Mark gl_msvc_inval_restart as invalid. */ \ msvc_inval_current->restart_valid = 0; \ } \ else \ { \ /* Execution triggered an invalid parameter notification. \ Mark gl_msvc_inval_restart as invalid. */ \ msvc_inval_current->restart_valid = 0; # define DONE_MSVC_INVAL \ } \ } \ while (0) # endif # endif #else /* A platform that does not need to the invalid parameter handler, or when SANE_LIBRARY_HANDLING is desired. */ /* The braces here avoid GCC warnings like "warning: suggest explicit braces to avoid ambiguous 'else'". */ # define TRY_MSVC_INVAL \ do \ { \ if (1) # define CATCH_MSVC_INVAL \ else # define DONE_MSVC_INVAL \ } \ while (0) #endif #endif /* _MSVC_INVAL_H */ recode-3.7.15/lib/alloca.in.h0000644000175000017500000000467414371444255011334 /* Memory allocation on the stack. Copyright (C) 1995, 1999, 2001-2004, 2006-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H means there is a real alloca function. */ #ifndef _GL_ALLOCA_H #define _GL_ALLOCA_H /* alloca (N) returns a pointer to N bytes of memory allocated on the stack, which will last until the function returns. Use of alloca should be avoided: - inside arguments of function calls - undefined behaviour, - in inline functions - the allocation may actually last until the calling function returns, - for huge N (say, N >= 65536) - you never know how large (or small) the stack is, and when the stack cannot fulfill the memory allocation request, the program just crashes. */ #ifndef alloca /* Some version of mingw have an that causes trouble when included after 'alloca' gets defined as a macro. As a workaround, include this first and define 'alloca' as a macro afterwards if needed. */ # if defined __GNUC__ && (defined _WIN32 && ! defined __CYGWIN__) && @HAVE_ALLOCA_H@ # include_next # endif #endif #ifndef alloca # if defined __GNUC__ || (__clang_major__ >= 4) # define alloca __builtin_alloca # elif defined _AIX # define alloca __alloca # elif defined _MSC_VER # include # define alloca _alloca # elif defined __DECC && defined __VMS # define alloca __ALLOCA # elif defined __TANDEM && defined _TNS_E_TARGET # ifdef __cplusplus extern "C" # endif void *_alloca (unsigned short); # pragma intrinsic (_alloca) # define alloca _alloca # elif defined __MVS__ # include # else # include # ifdef __cplusplus extern "C" # endif void *alloca (size_t); # endif #endif #endif /* _GL_ALLOCA_H */ recode-3.7.15/lib/getdtablesize.c0000644000175000017500000000656514371444255012316 /* getdtablesize() function: Return maximum possible file descriptor value + 1. Copyright (C) 2008-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2008. This file 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. This file 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 . */ #include /* Specification. */ #include #if defined _WIN32 && ! defined __CYGWIN__ # include # if HAVE_MSVC_INVALID_PARAMETER_HANDLER # include "msvc-inval.h" # endif # if HAVE_MSVC_INVALID_PARAMETER_HANDLER static int _setmaxstdio_nothrow (int newmax) { int result; TRY_MSVC_INVAL { result = _setmaxstdio (newmax); } CATCH_MSVC_INVAL { result = -1; } DONE_MSVC_INVAL; return result; } # else # define _setmaxstdio_nothrow _setmaxstdio # endif /* Cache for the previous getdtablesize () result. Safe to cache because Windows also lacks setrlimit. */ static int dtablesize; int getdtablesize (void) { if (dtablesize == 0) { /* We are looking for the number N such that the valid file descriptors are 0..N-1. It can be obtained through a loop as follows: { int fd; for (fd = 3; fd < 65536; fd++) if (dup2 (0, fd) == -1) break; return fd; } On Windows XP, the result is 2048. The drawback of this loop is that it allocates memory for a libc internal array that is never freed. The number N can also be obtained as the upper bound for _getmaxstdio (). _getmaxstdio () returns the maximum number of open FILE objects. The sanity check in _setmaxstdio reveals the maximum number of file descriptors. This too allocates memory, but it is freed when we call _setmaxstdio with the original value. */ int orig_max_stdio = _getmaxstdio (); unsigned int bound; for (bound = 0x10000; _setmaxstdio_nothrow (bound) < 0; bound = bound / 2) ; _setmaxstdio_nothrow (orig_max_stdio); dtablesize = bound; } return dtablesize; } #else # include # include # ifndef RLIM_SAVED_CUR # define RLIM_SAVED_CUR RLIM_INFINITY # endif # ifndef RLIM_SAVED_MAX # define RLIM_SAVED_MAX RLIM_INFINITY # endif # ifdef __CYGWIN__ /* Cygwin 1.7.25 auto-increases the RLIMIT_NOFILE soft limit until it hits the compile-time constant hard limit of 3200. We might as well just report the hard limit. */ # define rlim_cur rlim_max # endif int getdtablesize (void) { struct rlimit lim; if (getrlimit (RLIMIT_NOFILE, &lim) == 0 && 0 <= lim.rlim_cur && lim.rlim_cur <= INT_MAX && lim.rlim_cur != RLIM_INFINITY && lim.rlim_cur != RLIM_SAVED_CUR && lim.rlim_cur != RLIM_SAVED_MAX) return lim.rlim_cur; return INT_MAX; } #endif recode-3.7.15/lib/asnprintf.c0000644000175000017500000000211014371444255011452 /* Formatted output to strings. Copyright (C) 1999, 2002, 2006, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include "vasnprintf.h" #include char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...) { va_list args; char *result; va_start (args, format); result = vasnprintf (resultbuf, lengthp, format, args); va_end (args); return result; } recode-3.7.15/lib/gettext.h0000644000175000017500000002501514371444255011150 /* Convenience header for conditional use of GNU . Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _LIBGETTEXT_H #define _LIBGETTEXT_H 1 /* NLS can be disabled through the configure --disable-nls option or through "#define ENABLE NLS 0" before including this file. */ #if defined ENABLE_NLS && ENABLE_NLS /* Get declarations of GNU message catalog functions. */ # include /* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by the gettext() and ngettext() macros. This is an alternative to calling textdomain(), and is useful for libraries. */ # ifdef DEFAULT_TEXT_DOMAIN # undef gettext # define gettext(Msgid) \ dgettext (DEFAULT_TEXT_DOMAIN, Msgid) # undef ngettext # define ngettext(Msgid1, Msgid2, N) \ dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N) # endif #else /* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which chokes if dcgettext is defined as a macro. So include it now, to make later inclusions of a NOP. We don't include as well because people using "gettext.h" will not include , and also including would fail on SunOS 4, whereas is OK. */ #if defined(__sun) # include #endif /* Many header files from the libstdc++ coming with g++ 3.3 or newer include , which chokes if dcgettext is defined as a macro. So include it now, to make later inclusions of a NOP. */ #if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3) # include # if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H # include # endif #endif /* Disabled NLS. The casts to 'const char *' serve the purpose of producing warnings for invalid uses of the value returned from these functions. On pre-ANSI systems without 'const', the config.h file is supposed to contain "#define const". */ # undef gettext # define gettext(Msgid) ((const char *) (Msgid)) # undef dgettext # define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) # undef dcgettext # define dcgettext(Domainname, Msgid, Category) \ ((void) (Category), dgettext (Domainname, Msgid)) # undef ngettext # define ngettext(Msgid1, Msgid2, N) \ ((N) == 1 \ ? ((void) (Msgid2), (const char *) (Msgid1)) \ : ((void) (Msgid1), (const char *) (Msgid2))) # undef dngettext # define dngettext(Domainname, Msgid1, Msgid2, N) \ ((void) (Domainname), ngettext (Msgid1, Msgid2, N)) # undef dcngettext # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N)) # undef textdomain # define textdomain(Domainname) ((const char *) (Domainname)) # undef bindtextdomain # define bindtextdomain(Domainname, Dirname) \ ((void) (Domainname), (const char *) (Dirname)) # undef bind_textdomain_codeset # define bind_textdomain_codeset(Domainname, Codeset) \ ((void) (Domainname), (const char *) (Codeset)) #endif /* Prefer gnulib's setlocale override over libintl's setlocale override. */ #ifdef GNULIB_defined_setlocale # undef setlocale # define setlocale rpl_setlocale #endif /* A pseudo function call that serves as a marker for the automated extraction of messages, but does not call gettext(). The run-time translation is done at a different place in the code. The argument, String, should be a literal string. Concatenated strings and other string expressions won't work. The macro's expansion is not parenthesized, so that it is suitable as initializer for static 'char[]' or 'const char[]' variables. */ #define gettext_noop(String) String /* The separator between msgctxt and msgid in a .mo file. */ #define GETTEXT_CONTEXT_GLUE "\004" /* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be short and rarely need to change. The letter 'p' stands for 'particular' or 'special'. */ #ifdef DEFAULT_TEXT_DOMAIN # define pgettext(Msgctxt, Msgid) \ pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #else # define pgettext(Msgctxt, Msgid) \ pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #endif #define dpgettext(Domainname, Msgctxt, Msgid) \ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #define dcpgettext(Domainname, Msgctxt, Msgid, Category) \ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category) #ifdef DEFAULT_TEXT_DOMAIN # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #else # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #endif #define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) #if defined __GNUC__ || defined __clang__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * pgettext_aux (const char *domain, const char *msg_ctxt_id, const char *msgid, int category) { const char *translation = dcgettext (domain, msg_ctxt_id, category); if (translation == msg_ctxt_id) return msgid; else return translation; } #if defined __GNUC__ || defined __clang__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * npgettext_aux (const char *domain, const char *msg_ctxt_id, const char *msgid, const char *msgid_plural, unsigned long int n, int category) { const char *translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); if (translation == msg_ctxt_id || translation == msgid_plural) return (n == 1 ? msgid : msgid_plural); else return translation; } /* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID can be arbitrary expressions. But for string literals these macros are less efficient than those above. */ #include /* GNULIB_NO_VLA can be defined to disable use of VLAs even if supported. This relates to the -Wvla and -Wvla-larger-than warnings, enabled in the default GCC many warnings set. This allows programs to disable use of VLAs, which may be unintended, or may be awkward to support portably, or may have security implications due to non-deterministic stack usage. */ #if (!defined GNULIB_NO_VLA \ && defined __STDC_VERSION__ && 199901L <= __STDC_VERSION__ \ && !defined __STDC_NO_VLA__) # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1 #else # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0 #endif #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS #include #endif #define pgettext_expr(Msgctxt, Msgid) \ dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES) #define dpgettext_expr(Domainname, Msgctxt, Msgid) \ dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES) #if defined __GNUC__ || defined __clang__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * dcpgettext_expr (const char *domain, const char *msgctxt, const char *msgid, int category) { size_t msgctxt_len = strlen (msgctxt) + 1; size_t msgid_len = strlen (msgid) + 1; const char *translation; #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS char msg_ctxt_id[msgctxt_len + msgid_len]; #else char buf[1024]; char *msg_ctxt_id = (msgctxt_len + msgid_len <= sizeof (buf) ? buf : (char *) malloc (msgctxt_len + msgid_len)); if (msg_ctxt_id != NULL) #endif { int found_translation; memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); msg_ctxt_id[msgctxt_len - 1] = '\004'; memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); translation = dcgettext (domain, msg_ctxt_id, category); found_translation = (translation != msg_ctxt_id); #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS if (msg_ctxt_id != buf) free (msg_ctxt_id); #endif if (found_translation) return translation; } return msgid; } #define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \ dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) #define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) #if defined __GNUC__ || defined __clang__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * dcnpgettext_expr (const char *domain, const char *msgctxt, const char *msgid, const char *msgid_plural, unsigned long int n, int category) { size_t msgctxt_len = strlen (msgctxt) + 1; size_t msgid_len = strlen (msgid) + 1; const char *translation; #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS char msg_ctxt_id[msgctxt_len + msgid_len]; #else char buf[1024]; char *msg_ctxt_id = (msgctxt_len + msgid_len <= sizeof (buf) ? buf : (char *) malloc (msgctxt_len + msgid_len)); if (msg_ctxt_id != NULL) #endif { int found_translation; memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); msg_ctxt_id[msgctxt_len - 1] = '\004'; memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); found_translation = !(translation == msg_ctxt_id || translation == msgid_plural); #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS if (msg_ctxt_id != buf) free (msg_ctxt_id); #endif if (found_translation) return translation; } return (n == 1 ? msgid : msgid_plural); } #endif /* _LIBGETTEXT_H */ recode-3.7.15/lib/cdefs.h0000644000175000017500000006442714371444255010562 /* Copyright (C) 1992-2023 Free Software Foundation, Inc. Copyright The GNU Toolchain Authors. This file is part of the GNU C Library. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ #ifndef _SYS_CDEFS_H #define _SYS_CDEFS_H 1 /* We are almost always included from features.h. */ #ifndef _FEATURES_H # include #endif /* The GNU libc does not support any K&R compilers or the traditional mode of ISO C compilers anymore. Check for some of the combinations not supported anymore. */ #if defined __GNUC__ && !defined __STDC__ # error "You need a ISO C conforming compiler to use the glibc headers" #endif /* Some user header file might have defined this before. */ #undef __P #undef __PMT /* Compilers that lack __has_attribute may object to #if defined __has_attribute && __has_attribute (...) even though they do not need to evaluate the right-hand side of the &&. Similarly for __has_builtin, etc. */ #if (defined __has_attribute \ && (!defined __clang_minor__ \ || (defined __apple_build_version__ \ ? 6000000 <= __apple_build_version__ \ : 3 < __clang_major__ + (5 <= __clang_minor__)))) # define __glibc_has_attribute(attr) __has_attribute (attr) #else # define __glibc_has_attribute(attr) 0 #endif #ifdef __has_builtin # define __glibc_has_builtin(name) __has_builtin (name) #else # define __glibc_has_builtin(name) 0 #endif #ifdef __has_extension # define __glibc_has_extension(ext) __has_extension (ext) #else # define __glibc_has_extension(ext) 0 #endif #if defined __GNUC__ || defined __clang__ /* All functions, except those with callbacks or those that synchronize memory, are leaf functions. */ # if __GNUC_PREREQ (4, 6) && !defined _LIBC # define __LEAF , __leaf__ # define __LEAF_ATTR __attribute__ ((__leaf__)) # else # define __LEAF # define __LEAF_ATTR # endif /* GCC can always grok prototypes. For C++ programs we add throw() to help it optimize the function calls. But this only works with gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions as non-throwing using a function attribute since programs can use the -fexceptions options for C code as well. */ # if !defined __cplusplus \ && (__GNUC_PREREQ (3, 4) || __glibc_has_attribute (__nothrow__)) # define __THROW __attribute__ ((__nothrow__ __LEAF)) # define __THROWNL __attribute__ ((__nothrow__)) # define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct # define __NTHNL(fct) __attribute__ ((__nothrow__)) fct # else # if defined __cplusplus && (__GNUC_PREREQ (2,8) || __clang_major >= 4) # if __cplusplus >= 201103L # define __THROW noexcept (true) # else # define __THROW throw () # endif # define __THROWNL __THROW # define __NTH(fct) __LEAF_ATTR fct __THROW # define __NTHNL(fct) fct __THROW # else # define __THROW # define __THROWNL # define __NTH(fct) fct # define __NTHNL(fct) fct # endif # endif #else /* Not GCC or clang. */ # if (defined __cplusplus \ || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)) # define __inline inline # else # define __inline /* No inline functions. */ # endif # define __THROW # define __THROWNL # define __NTH(fct) fct #endif /* GCC || clang. */ /* These two macros are not used in glibc anymore. They are kept here only because some other projects expect the macros to be defined. */ #define __P(args) args #define __PMT(args) args /* For these things, GCC behaves the ANSI way normally, and the non-ANSI way under -traditional. */ #define __CONCAT(x,y) x ## y #define __STRING(x) #x /* This is not a typedef so `const __ptr_t' does the right thing. */ #define __ptr_t void * /* C++ needs to know that types and declarations are C, not C++. */ #ifdef __cplusplus # define __BEGIN_DECLS extern "C" { # define __END_DECLS } #else # define __BEGIN_DECLS # define __END_DECLS #endif /* Gnulib avoids these definitions, as they don't work on non-glibc platforms. In particular, __bos and __bos0 are defined differently in the Android libc. */ #ifndef __GNULIB_CDEFS /* Fortify support. */ # define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) # define __bos0(ptr) __builtin_object_size (ptr, 0) /* Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available. */ # if __USE_FORTIFY_LEVEL == 3 && (__glibc_clang_prereq (9, 0) \ || __GNUC_PREREQ (12, 0)) # define __glibc_objsize0(__o) __builtin_dynamic_object_size (__o, 0) # define __glibc_objsize(__o) __builtin_dynamic_object_size (__o, 1) # else # define __glibc_objsize0(__o) __bos0 (__o) # define __glibc_objsize(__o) __bos (__o) # endif /* Compile time conditions to choose between the regular, _chk and _chk_warn variants. These conditions should get evaluated to constant and optimized away. */ # define __glibc_safe_len_cond(__l, __s, __osz) ((__l) <= (__osz) / (__s)) # define __glibc_unsigned_or_positive(__l) \ ((__typeof (__l)) 0 < (__typeof (__l)) -1 \ || (__builtin_constant_p (__l) && (__l) > 0)) /* Length is known to be safe at compile time if the __L * __S <= __OBJSZ condition can be folded to a constant and if it is true, or unknown (-1) */ # define __glibc_safe_or_unknown_len(__l, __s, __osz) \ ((__osz) == (__SIZE_TYPE__) -1 \ || (__glibc_unsigned_or_positive (__l) \ && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \ (__s), (__osz))) \ && __glibc_safe_len_cond ((__SIZE_TYPE__) (__l), (__s), (__osz)))) /* Conversely, we know at compile time that the length is unsafe if the __L * __S <= __OBJSZ condition can be folded to a constant and if it is false. */ # define __glibc_unsafe_len(__l, __s, __osz) \ (__glibc_unsigned_or_positive (__l) \ && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \ __s, __osz)) \ && !__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz)) /* Fortify function f. __f_alias, __f_chk and __f_chk_warn must be declared. */ # define __glibc_fortify(f, __l, __s, __osz, ...) \ (__glibc_safe_or_unknown_len (__l, __s, __osz) \ ? __ ## f ## _alias (__VA_ARGS__) \ : (__glibc_unsafe_len (__l, __s, __osz) \ ? __ ## f ## _chk_warn (__VA_ARGS__, __osz) \ : __ ## f ## _chk (__VA_ARGS__, __osz))) \ /* Fortify function f, where object size argument passed to f is the number of elements and not total size. */ # define __glibc_fortify_n(f, __l, __s, __osz, ...) \ (__glibc_safe_or_unknown_len (__l, __s, __osz) \ ? __ ## f ## _alias (__VA_ARGS__) \ : (__glibc_unsafe_len (__l, __s, __osz) \ ? __ ## f ## _chk_warn (__VA_ARGS__, (__osz) / (__s)) \ : __ ## f ## _chk (__VA_ARGS__, (__osz) / (__s)))) \ #endif #if __GNUC_PREREQ (4,3) # define __warnattr(msg) __attribute__((__warning__ (msg))) # define __errordecl(name, msg) \ extern void name (void) __attribute__((__error__ (msg))) #else # define __warnattr(msg) # define __errordecl(name, msg) extern void name (void) #endif /* Support for flexible arrays. Headers that should use flexible arrays only if they're "real" (e.g. only if they won't affect sizeof()) should test #if __glibc_c99_flexarr_available. */ #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L && !defined __HP_cc # define __flexarr [] # define __glibc_c99_flexarr_available 1 #elif __GNUC_PREREQ (2,97) || defined __clang__ /* GCC 2.97 and clang support C99 flexible array members as an extension, even when in C89 mode or compiling C++ (any version). */ # define __flexarr [] # define __glibc_c99_flexarr_available 1 #elif defined __GNUC__ /* Pre-2.97 GCC did not support C99 flexible arrays but did have an equivalent extension with slightly different notation. */ # define __flexarr [0] # define __glibc_c99_flexarr_available 1 #else /* Some other non-C99 compiler. Approximate with [1]. */ # define __flexarr [1] # define __glibc_c99_flexarr_available 0 #endif /* __asm__ ("xyz") is used throughout the headers to rename functions at the assembly language level. This is wrapped by the __REDIRECT macro, in order to support compilers that can do this some other way. When compilers don't support asm-names at all, we have to do preprocessor tricks instead (which don't have exactly the right semantics, but it's the best we can do). Example: int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */ #if (defined __GNUC__ && __GNUC__ >= 2) || (__clang_major__ >= 4) # define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias)) # ifdef __cplusplus # define __REDIRECT_NTH(name, proto, alias) \ name proto __THROW __asm__ (__ASMNAME (#alias)) # define __REDIRECT_NTHNL(name, proto, alias) \ name proto __THROWNL __asm__ (__ASMNAME (#alias)) # else # define __REDIRECT_NTH(name, proto, alias) \ name proto __asm__ (__ASMNAME (#alias)) __THROW # define __REDIRECT_NTHNL(name, proto, alias) \ name proto __asm__ (__ASMNAME (#alias)) __THROWNL # endif # define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname) # define __ASMNAME2(prefix, cname) __STRING (prefix) cname /* #elif __SOME_OTHER_COMPILER__ # define __REDIRECT(name, proto, alias) name proto; \ _Pragma("let " #name " = " #alias) */ #endif /* GCC and clang have various useful declarations that can be made with the '__attribute__' syntax. All of the ways we use this do fine if they are omitted for compilers that don't understand it. */ #if !(defined __GNUC__ || defined __clang__) # define __attribute__(xyz) /* Ignore */ #endif /* At some point during the gcc 2.96 development the `malloc' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ #if __GNUC_PREREQ (2,96) || __glibc_has_attribute (__malloc__) # define __attribute_malloc__ __attribute__ ((__malloc__)) #else # define __attribute_malloc__ /* Ignore */ #endif /* Tell the compiler which arguments to an allocation function indicate the size of the allocation. */ #if __GNUC_PREREQ (4, 3) # define __attribute_alloc_size__(params) \ __attribute__ ((__alloc_size__ params)) #else # define __attribute_alloc_size__(params) /* Ignore. */ #endif /* Tell the compiler which argument to an allocation function indicates the alignment of the allocation. */ #if __GNUC_PREREQ (4, 9) || __glibc_has_attribute (__alloc_align__) # define __attribute_alloc_align__(param) \ __attribute__ ((__alloc_align__ param)) #else # define __attribute_alloc_align__(param) /* Ignore. */ #endif /* At some point during the gcc 2.96 development the `pure' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ #if __GNUC_PREREQ (2,96) || __glibc_has_attribute (__pure__) # define __attribute_pure__ __attribute__ ((__pure__)) #else # define __attribute_pure__ /* Ignore */ #endif /* This declaration tells the compiler that the value is constant. */ #if __GNUC_PREREQ (2,5) || __glibc_has_attribute (__const__) # define __attribute_const__ __attribute__ ((__const__)) #else # define __attribute_const__ /* Ignore */ #endif #if __GNUC_PREREQ (2,7) || __glibc_has_attribute (__unused__) # define __attribute_maybe_unused__ __attribute__ ((__unused__)) #else # define __attribute_maybe_unused__ /* Ignore */ #endif /* At some point during the gcc 3.1 development the `used' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ #if __GNUC_PREREQ (3,1) || __glibc_has_attribute (__used__) # define __attribute_used__ __attribute__ ((__used__)) # define __attribute_noinline__ __attribute__ ((__noinline__)) #else # define __attribute_used__ __attribute__ ((__unused__)) # define __attribute_noinline__ /* Ignore */ #endif /* Since version 3.2, gcc allows marking deprecated functions. */ #if __GNUC_PREREQ (3,2) || __glibc_has_attribute (__deprecated__) # define __attribute_deprecated__ __attribute__ ((__deprecated__)) #else # define __attribute_deprecated__ /* Ignore */ #endif /* Since version 4.5, gcc also allows one to specify the message printed when a deprecated function is used. clang claims to be gcc 4.2, but may also support this feature. */ #if __GNUC_PREREQ (4,5) \ || __glibc_has_extension (__attribute_deprecated_with_message__) # define __attribute_deprecated_msg__(msg) \ __attribute__ ((__deprecated__ (msg))) #else # define __attribute_deprecated_msg__(msg) __attribute_deprecated__ #endif /* At some point during the gcc 2.8 development the `format_arg' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. If several `format_arg' attributes are given for the same function, in gcc-3.0 and older, all but the last one are ignored. In newer gccs, all designated arguments are considered. */ #if __GNUC_PREREQ (2,8) || __glibc_has_attribute (__format_arg__) # define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x))) #else # define __attribute_format_arg__(x) /* Ignore */ #endif /* At some point during the gcc 2.97 development the `strfmon' format attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ #if __GNUC_PREREQ (2,97) || __glibc_has_attribute (__format__) # define __attribute_format_strfmon__(a,b) \ __attribute__ ((__format__ (__strfmon__, a, b))) #else # define __attribute_format_strfmon__(a,b) /* Ignore */ #endif /* The nonnull function attribute marks pointer parameters that must not be NULL. This has the name __nonnull in glibc, and __attribute_nonnull__ in files shared with Gnulib to avoid collision with a different __nonnull in DragonFlyBSD 5.9. */ #ifndef __attribute_nonnull__ # if __GNUC_PREREQ (3,3) || __glibc_has_attribute (__nonnull__) # define __attribute_nonnull__(params) __attribute__ ((__nonnull__ params)) # else # define __attribute_nonnull__(params) # endif #endif #ifndef __nonnull # define __nonnull(params) __attribute_nonnull__ (params) #endif /* The returns_nonnull function attribute marks the return type of the function as always being non-null. */ #ifndef __returns_nonnull # if __GNUC_PREREQ (4, 9) || __glibc_has_attribute (__returns_nonnull__) # define __returns_nonnull __attribute__ ((__returns_nonnull__)) # else # define __returns_nonnull # endif #endif /* If fortification mode, we warn about unused results of certain function calls which can lead to problems. */ #if __GNUC_PREREQ (3,4) || __glibc_has_attribute (__warn_unused_result__) # define __attribute_warn_unused_result__ \ __attribute__ ((__warn_unused_result__)) # if defined __USE_FORTIFY_LEVEL && __USE_FORTIFY_LEVEL > 0 # define __wur __attribute_warn_unused_result__ # endif #else # define __attribute_warn_unused_result__ /* empty */ #endif #ifndef __wur # define __wur /* Ignore */ #endif /* Forces a function to be always inlined. */ #if __GNUC_PREREQ (3,2) || __glibc_has_attribute (__always_inline__) /* The Linux kernel defines __always_inline in stddef.h (283d7573), and it conflicts with this definition. Therefore undefine it first to allow either header to be included first. */ # undef __always_inline # define __always_inline __inline __attribute__ ((__always_inline__)) #else # undef __always_inline # define __always_inline __inline #endif /* Associate error messages with the source location of the call site rather than with the source location inside the function. */ #if __GNUC_PREREQ (4,3) || __glibc_has_attribute (__artificial__) # define __attribute_artificial__ __attribute__ ((__artificial__)) #else # define __attribute_artificial__ /* Ignore */ #endif /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__ or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions older than 4.3 may define these macros and still not guarantee GNU inlining semantics. clang++ identifies itself as gcc-4.2, but has support for GNU inlining semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and __GNUC_GNU_INLINE__ macro definitions. */ #if (!defined __cplusplus || __GNUC_PREREQ (4,3) \ || (defined __clang__ && (defined __GNUC_STDC_INLINE__ \ || defined __GNUC_GNU_INLINE__))) # if defined __GNUC_STDC_INLINE__ || defined __cplusplus # define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) # define __extern_always_inline \ extern __always_inline __attribute__ ((__gnu_inline__)) # else # define __extern_inline extern __inline # define __extern_always_inline extern __always_inline # endif #endif #ifdef __extern_always_inline # define __fortify_function __extern_always_inline __attribute_artificial__ #endif /* GCC 4.3 and above allow passing all anonymous arguments of an __extern_always_inline function to some other vararg function. */ #if __GNUC_PREREQ (4,3) # define __va_arg_pack() __builtin_va_arg_pack () # define __va_arg_pack_len() __builtin_va_arg_pack_len () #endif /* It is possible to compile containing GCC extensions even if GCC is run in pedantic mode if the uses are carefully marked using the `__extension__' keyword. But this is not generally available before version 2.8. */ #if !(__GNUC_PREREQ (2,8) || defined __clang__) # define __extension__ /* Ignore */ #endif /* __restrict is known in EGCS 1.2 and above, and in clang. It works also in C++ mode (outside of arrays), but only when spelled as '__restrict', not 'restrict'. */ #if !(__GNUC_PREREQ (2,92) || __clang_major__ >= 3) # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L # define __restrict restrict # else # define __restrict /* Ignore */ # endif #endif /* ISO C99 also allows to declare arrays as non-overlapping. The syntax is array_name[restrict] GCC 3.1 and clang support this. This syntax is not usable in C++ mode. */ #if (__GNUC_PREREQ (3,1) || __clang_major__ >= 3) && !defined __cplusplus # define __restrict_arr __restrict #else # ifdef __GNUC__ # define __restrict_arr /* Not supported in old GCC. */ # else # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L # define __restrict_arr restrict # else /* Some other non-C99 compiler. */ # define __restrict_arr /* Not supported. */ # endif # endif #endif #if (__GNUC__ >= 3) || __glibc_has_builtin (__builtin_expect) # define __glibc_unlikely(cond) __builtin_expect ((cond), 0) # define __glibc_likely(cond) __builtin_expect ((cond), 1) #else # define __glibc_unlikely(cond) (cond) # define __glibc_likely(cond) (cond) #endif #if (!defined _Noreturn \ && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \ && !(__GNUC_PREREQ (4,7) \ || (3 < __clang_major__ + (5 <= __clang_minor__)))) # if __GNUC_PREREQ (2,8) # define _Noreturn __attribute__ ((__noreturn__)) # else # define _Noreturn # endif #endif #if __GNUC_PREREQ (8, 0) /* Describes a char array whose address can safely be passed as the first argument to strncpy and strncat, as the char array is not necessarily a NUL-terminated string. */ # define __attribute_nonstring__ __attribute__ ((__nonstring__)) #else # define __attribute_nonstring__ #endif /* Undefine (also defined in libc-symbols.h). */ #undef __attribute_copy__ #if __GNUC_PREREQ (9, 0) /* Copies attributes from the declaration or type referenced by the argument. */ # define __attribute_copy__(arg) __attribute__ ((__copy__ (arg))) #else # define __attribute_copy__(arg) #endif #if (!defined _Static_assert && !defined __cplusplus \ && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \ && (!(__GNUC_PREREQ (4, 6) || __clang_major__ >= 4) \ || defined __STRICT_ANSI__)) # define _Static_assert(expr, diagnostic) \ extern int (*__Static_assert_function (void)) \ [!!sizeof (struct { int __error_if_negative: (expr) ? 2 : -1; })] #endif /* Gnulib avoids including these, as they don't work on non-glibc or older glibc platforms. */ #ifndef __GNULIB_CDEFS # include # include #endif #if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1 # ifdef __REDIRECT /* Alias name defined automatically. */ # define __LDBL_REDIR(name, proto) ... unused__ldbl_redir # define __LDBL_REDIR_DECL(name) \ extern __typeof (name) name __asm (__ASMNAME ("__" #name "ieee128")); /* Alias name defined automatically, with leading underscores. */ # define __LDBL_REDIR2_DECL(name) \ extern __typeof (__##name) __##name \ __asm (__ASMNAME ("__" #name "ieee128")); /* Alias name defined manually. */ # define __LDBL_REDIR1(name, proto, alias) ... unused__ldbl_redir1 # define __LDBL_REDIR1_DECL(name, alias) \ extern __typeof (name) name __asm (__ASMNAME (#alias)); # define __LDBL_REDIR1_NTH(name, proto, alias) \ __REDIRECT_NTH (name, proto, alias) # define __REDIRECT_NTH_LDBL(name, proto, alias) \ __LDBL_REDIR1_NTH (name, proto, __##alias##ieee128) /* Unused. */ # define __REDIRECT_LDBL(name, proto, alias) ... unused__redirect_ldbl # define __LDBL_REDIR_NTH(name, proto) ... unused__ldbl_redir_nth # else _Static_assert (0, "IEEE 128-bits long double requires redirection on this platform"); # endif #elif defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH # define __LDBL_COMPAT 1 # ifdef __REDIRECT # define __LDBL_REDIR1(name, proto, alias) __REDIRECT (name, proto, alias) # define __LDBL_REDIR(name, proto) \ __LDBL_REDIR1 (name, proto, __nldbl_##name) # define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias) # define __LDBL_REDIR_NTH(name, proto) \ __LDBL_REDIR1_NTH (name, proto, __nldbl_##name) # define __LDBL_REDIR2_DECL(name) \ extern __typeof (__##name) __##name __asm (__ASMNAME ("__nldbl___" #name)); # define __LDBL_REDIR1_DECL(name, alias) \ extern __typeof (name) name __asm (__ASMNAME (#alias)); # define __LDBL_REDIR_DECL(name) \ extern __typeof (name) name __asm (__ASMNAME ("__nldbl_" #name)); # define __REDIRECT_LDBL(name, proto, alias) \ __LDBL_REDIR1 (name, proto, __nldbl_##alias) # define __REDIRECT_NTH_LDBL(name, proto, alias) \ __LDBL_REDIR1_NTH (name, proto, __nldbl_##alias) # endif #endif #if (!defined __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0) \ || !defined __REDIRECT # define __LDBL_REDIR1(name, proto, alias) name proto # define __LDBL_REDIR(name, proto) name proto # define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW # define __LDBL_REDIR_NTH(name, proto) name proto __THROW # define __LDBL_REDIR2_DECL(name) # define __LDBL_REDIR_DECL(name) # ifdef __REDIRECT # define __REDIRECT_LDBL(name, proto, alias) __REDIRECT (name, proto, alias) # define __REDIRECT_NTH_LDBL(name, proto, alias) \ __REDIRECT_NTH (name, proto, alias) # endif #endif /* __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is intended for use in preprocessor macros. Note: MESSAGE must be a _single_ string; concatenation of string literals is not supported. */ #if __GNUC_PREREQ (4,8) || __glibc_clang_prereq (3,5) # define __glibc_macro_warning1(message) _Pragma (#message) # define __glibc_macro_warning(message) \ __glibc_macro_warning1 (GCC warning message) #else # define __glibc_macro_warning(msg) #endif /* Generic selection (ISO C11) is a C-only feature, available in GCC since version 4.9. Previous versions do not provide generic selection, even though they might set __STDC_VERSION__ to 201112L, when in -std=c11 mode. Thus, we must check for !defined __GNUC__ when testing __STDC_VERSION__ for generic selection support. On the other hand, Clang also defines __GNUC__, so a clang-specific check is required to enable the use of generic selection. */ #if !defined __cplusplus \ && (__GNUC_PREREQ (4, 9) \ || __glibc_has_extension (c_generic_selections) \ || (!defined __GNUC__ && defined __STDC_VERSION__ \ && __STDC_VERSION__ >= 201112L)) # define __HAVE_GENERIC_SELECTION 1 #else # define __HAVE_GENERIC_SELECTION 0 #endif #if __GNUC_PREREQ (10, 0) /* Designates a 1-based positional argument ref-index of pointer type that can be used to access size-index elements of the pointed-to array according to access mode, or at least one element when size-index is not provided: access (access-mode, [, ]) */ # define __attr_access(x) __attribute__ ((__access__ x)) /* For _FORTIFY_SOURCE == 3 we use __builtin_dynamic_object_size, which may use the access attribute to get object sizes from function definition arguments, so we can't use them on functions we fortify. Drop the object size hints for such functions. */ # if __USE_FORTIFY_LEVEL == 3 # define __fortified_attr_access(a, o, s) __attribute__ ((__access__ (a, o))) # else # define __fortified_attr_access(a, o, s) __attr_access ((a, o, s)) # endif # if __GNUC_PREREQ (11, 0) # define __attr_access_none(argno) __attribute__ ((__access__ (__none__, argno))) # else # define __attr_access_none(argno) # endif #else # define __fortified_attr_access(a, o, s) # define __attr_access(x) # define __attr_access_none(argno) #endif #if __GNUC_PREREQ (11, 0) /* Designates dealloc as a function to call to deallocate objects allocated by the declared function. */ # define __attr_dealloc(dealloc, argno) \ __attribute__ ((__malloc__ (dealloc, argno))) # define __attr_dealloc_free __attr_dealloc (__builtin_free, 1) #else # define __attr_dealloc(dealloc, argno) # define __attr_dealloc_free #endif /* Specify that a function such as setjmp or vfork may return twice. */ #if __GNUC_PREREQ (4, 1) # define __attribute_returns_twice__ __attribute__ ((__returns_twice__)) #else # define __attribute_returns_twice__ /* Ignore. */ #endif #endif /* sys/cdefs.h */ recode-3.7.15/lib/basename-lgpl.h0000644000175000017500000000532414371444255012174 /* Extract the last component (base name) of a file name. Copyright (C) 1998, 2001, 2003-2006, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _BASENAME_LGPL_H #define _BASENAME_LGPL_H #include #ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT # define DOUBLE_SLASH_IS_DISTINCT_ROOT 0 #endif #ifdef __cplusplus extern "C" { #endif /* Return the address of the last file name component of FILENAME. If FILENAME has some trailing slash(es), they are considered to be part of the last component. If FILENAME has no relative file name components because it is a file system root, return the empty string. Examples: FILENAME RESULT "foo.c" "foo.c" "foo/bar.c" "bar.c" "/foo/bar.c" "bar.c" "foo/bar/" "bar/" "foo/bar//" "bar//" "/" "" "//" "" "" "" The return value is a tail of the given FILENAME; do NOT free() it! */ /* This function was traditionally called 'basename', but we avoid this function name because * Various platforms have different functions in their libc. In particular, the glibc basename(), defined in , does not consider trailing slashes to be part of the component: FILENAME RESULT "foo/bar/" "" "foo/bar//" "" * The 'basename' command eliminates trailing slashes and for a root produces a non-empty result: FILENAME RESULT "foo/bar/" "bar" "foo/bar//" "bar" "/" "/" "//" "/" */ extern char *last_component (char const *filename) _GL_ATTRIBUTE_PURE; /* Return the length of the basename FILENAME. Typically FILENAME is the value returned by base_name or last_component. Act like strlen (FILENAME), except omit all trailing slashes. */ extern size_t base_len (char const *filename) _GL_ATTRIBUTE_PURE; #ifdef __cplusplus } /* extern "C" */ #endif #endif /* _BASENAME_LGPL_H */ recode-3.7.15/lib/verify.h0000644000175000017500000003545714371444255011003 /* Compile-time assert-like macros. Copyright (C) 2005-2006, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */ #ifndef _GL_VERIFY_H #define _GL_VERIFY_H /* Define _GL_HAVE__STATIC_ASSERT to 1 if _Static_assert (R, DIAGNOSTIC) works as per C11. This is supported by GCC 4.6.0+ and by clang 4+. Define _GL_HAVE__STATIC_ASSERT1 to 1 if _Static_assert (R) works as per C23. This is supported by GCC 9.1+. Support compilers claiming conformance to the relevant standard, and also support GCC when not pedantic. If we were willing to slow 'configure' down we could also use it with other compilers, but since this affects only the quality of diagnostics, why bother? */ #ifndef __cplusplus # if (201112 <= __STDC_VERSION__ \ || (!defined __STRICT_ANSI__ \ && (4 < __GNUC__ + (6 <= __GNUC_MINOR__) || 5 <= __clang_major__))) # define _GL_HAVE__STATIC_ASSERT 1 # endif # if (202311 <= __STDC_VERSION__ \ || (!defined __STRICT_ANSI__ && 9 <= __GNUC__)) # define _GL_HAVE__STATIC_ASSERT1 1 # endif #endif /* FreeBSD 9.1 , included by and lots of other system headers, defines a conflicting _Static_assert that is no better than ours; override it. */ #ifndef _GL_HAVE__STATIC_ASSERT # include # undef _Static_assert #endif /* Each of these macros verifies that its argument R is nonzero. To be portable, R should be an integer constant expression. Unlike assert (R), there is no run-time overhead. If _Static_assert works, verify (R) uses it directly. Similarly, _GL_VERIFY_TRUE works by packaging a _Static_assert inside a struct that is an operand of sizeof. The code below uses several ideas for C++ compilers, and for C compilers that do not support _Static_assert: * The first step is ((R) ? 1 : -1). Given an expression R, of integral or boolean or floating-point type, this yields an expression of integral type, whose value is later verified to be constant and nonnegative. * Next this expression W is wrapped in a type struct _gl_verify_type { unsigned int _gl_verify_error_if_negative: W; }. If W is negative, this yields a compile-time error. No compiler can deal with a bit-field of negative size. One might think that an array size check would have the same effect, that is, that the type struct { unsigned int dummy[W]; } would work as well. However, inside a function, some compilers (such as C++ compilers and GNU C) allow local parameters and variables inside array size expressions. With these compilers, an array size check would not properly diagnose this misuse of the verify macro: void function (int n) { verify (n < 0); } * For the verify macro, the struct _gl_verify_type will need to somehow be embedded into a declaration. To be portable, this declaration must declare an object, a constant, a function, or a typedef name. If the declared entity uses the type directly, such as in struct dummy {...}; typedef struct {...} dummy; extern struct {...} *dummy; extern void dummy (struct {...} *); extern struct {...} *dummy (void); two uses of the verify macro would yield colliding declarations if the entity names are not disambiguated. A workaround is to attach the current line number to the entity name: #define _GL_CONCAT0(x, y) x##y #define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y) extern struct {...} * _GL_CONCAT (dummy, __LINE__); But this has the problem that two invocations of verify from within the same macro would collide, since the __LINE__ value would be the same for both invocations. (The GCC __COUNTER__ macro solves this problem, but is not portable.) A solution is to use the sizeof operator. It yields a number, getting rid of the identity of the type. Declarations like extern int dummy [sizeof (struct {...})]; extern void dummy (int [sizeof (struct {...})]); extern int (*dummy (void)) [sizeof (struct {...})]; can be repeated. * Should the implementation use a named struct or an unnamed struct? Which of the following alternatives can be used? extern int dummy [sizeof (struct {...})]; extern int dummy [sizeof (struct _gl_verify_type {...})]; extern void dummy (int [sizeof (struct {...})]); extern void dummy (int [sizeof (struct _gl_verify_type {...})]); extern int (*dummy (void)) [sizeof (struct {...})]; extern int (*dummy (void)) [sizeof (struct _gl_verify_type {...})]; In the second and sixth case, the struct type is exported to the outer scope; two such declarations therefore collide. GCC warns about the first, third, and fourth cases. So the only remaining possibility is the fifth case: extern int (*dummy (void)) [sizeof (struct {...})]; * GCC warns about duplicate declarations of the dummy function if -Wredundant-decls is used. GCC 4.3 and later have a builtin __COUNTER__ macro that can let us generate unique identifiers for each dummy function, to suppress this warning. * This implementation exploits the fact that older versions of GCC, which do not support _Static_assert, also do not warn about the last declaration mentioned above. * GCC warns if -Wnested-externs is enabled and 'verify' is used within a function body; but inside a function, you can always arrange to use verify_expr instead. * In C++, any struct definition inside sizeof is invalid. Use a template type to work around the problem. */ /* Concatenate two preprocessor tokens. */ #define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y) #define _GL_CONCAT0(x, y) x##y /* _GL_COUNTER is an integer, preferably one that changes each time we use it. Use __COUNTER__ if it works, falling back on __LINE__ otherwise. __LINE__ isn't perfect, but it's better than a constant. */ #if defined __COUNTER__ && __COUNTER__ != __COUNTER__ # define _GL_COUNTER __COUNTER__ #else # define _GL_COUNTER __LINE__ #endif /* Generate a symbol with the given prefix, making it unique if possible. */ #define _GL_GENSYM(prefix) _GL_CONCAT (prefix, _GL_COUNTER) /* Verify requirement R at compile-time, as an integer constant expression that returns 1. If R is false, fail at compile-time, preferably with a diagnostic that includes the string-literal DIAGNOSTIC. */ #define _GL_VERIFY_TRUE(R, DIAGNOSTIC) \ (!!sizeof (_GL_VERIFY_TYPE (R, DIAGNOSTIC))) #ifdef __cplusplus # if !GNULIB_defined_struct__gl_verify_type template struct _gl_verify_type { unsigned int _gl_verify_error_if_negative: w; }; # define GNULIB_defined_struct__gl_verify_type 1 # endif # define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ _gl_verify_type<(R) ? 1 : -1> #elif defined _GL_HAVE__STATIC_ASSERT # define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ struct { \ _Static_assert (R, DIAGNOSTIC); \ int _gl_dummy; \ } #else # define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ struct { unsigned int _gl_verify_error_if_negative: (R) ? 1 : -1; } #endif /* Verify requirement R at compile-time, as a declaration without a trailing ';'. If R is false, fail at compile-time. This macro requires three or more arguments but uses at most the first two, so that the _Static_assert macro optionally defined below supports both the C11 two-argument syntax and the C23 one-argument syntax. Unfortunately, unlike C11, this implementation must appear as an ordinary declaration, and cannot appear inside struct { ... }. */ #if 202311 <= __STDC_VERSION__ || 200410 <= __cpp_static_assert # define _GL_VERIFY(R, DIAGNOSTIC, ...) static_assert (R, DIAGNOSTIC) #elif defined _GL_HAVE__STATIC_ASSERT # define _GL_VERIFY(R, DIAGNOSTIC, ...) _Static_assert (R, DIAGNOSTIC) #else # define _GL_VERIFY(R, DIAGNOSTIC, ...) \ extern int (*_GL_GENSYM (_gl_verify_function) (void)) \ [_GL_VERIFY_TRUE (R, DIAGNOSTIC)] # if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) # pragma GCC diagnostic ignored "-Wnested-externs" # endif #endif /* _GL_STATIC_ASSERT_H is defined if this code is copied into assert.h. */ #ifdef _GL_STATIC_ASSERT_H /* Define _Static_assert if needed. */ /* With clang ≥ 3.8.0 in C++ mode, _Static_assert already works and accepts 1 or 2 arguments. We better don't override it, because clang's standard C++ library uses static_assert inside classes in several places, and our replacement via _GL_VERIFY does not work in these contexts. */ # if (defined __cplusplus && defined __clang__ \ && (4 <= __clang_major__ + (8 <= __clang_minor__))) # if 5 <= __clang_major__ /* Avoid "warning: 'static_assert' with no message is a C++17 extension". */ # pragma clang diagnostic ignored "-Wc++17-extensions" # else /* Avoid "warning: static_assert with no message is a C++1z extension". */ # pragma clang diagnostic ignored "-Wc++1z-extensions" # endif # elif !defined _GL_HAVE__STATIC_ASSERT1 && !defined _Static_assert # if !defined _MSC_VER || defined __clang__ # define _Static_assert(...) \ _GL_VERIFY (__VA_ARGS__, "static assertion failed", -) # else /* Work around MSVC preprocessor incompatibility with ISO C; see . */ # define _Static_assert(R, ...) \ _GL_VERIFY ((R), "static assertion failed", -) # endif # endif /* Define static_assert if needed. */ # if (!defined static_assert \ && __STDC_VERSION__ < 202311 \ && (!defined __cplusplus \ || (__cpp_static_assert < 201411 \ && __GNUG__ < 6 && __clang_major__ < 6))) # if defined __cplusplus && _MSC_VER >= 1900 && !defined __clang__ /* MSVC 14 in C++ mode supports the two-arguments static_assert but not the one-argument static_assert, and it does not support _Static_assert. We have to play preprocessor tricks to distinguish the two cases. Since the MSVC preprocessor is not ISO C compliant (see above),. the solution is specific to MSVC. */ # define _GL_EXPAND(x) x # define _GL_SA1(a1) static_assert ((a1), "static assertion failed") # define _GL_SA2 static_assert # define _GL_SA3 static_assert # define _GL_SA_PICK(x1,x2,x3,x4,...) x4 # define static_assert(...) _GL_EXPAND(_GL_SA_PICK(__VA_ARGS__,_GL_SA3,_GL_SA2,_GL_SA1)) (__VA_ARGS__) /* Avoid "fatal error C1189: #error: The C++ Standard Library forbids macroizing keywords." */ # define _ALLOW_KEYWORD_MACROS 1 # else # define static_assert _Static_assert /* C11 requires this #define. */ # endif # endif #endif /* @assert.h omit start@ */ #if defined __clang_major__ && __clang_major__ < 5 # define _GL_HAS_BUILTIN_TRAP 0 #elif 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__)) # define _GL_HAS_BUILTIN_TRAP 1 #elif defined __has_builtin # define _GL_HAS_BUILTIN_TRAP __has_builtin (__builtin_trap) #else # define _GL_HAS_BUILTIN_TRAP 0 #endif #if defined __clang_major__ && __clang_major__ < 5 # define _GL_HAS_BUILTIN_UNREACHABLE 0 #elif 4 < __GNUC__ + (5 <= __GNUC_MINOR__) # define _GL_HAS_BUILTIN_UNREACHABLE 1 #elif defined __has_builtin # define _GL_HAS_BUILTIN_UNREACHABLE __has_builtin (__builtin_unreachable) #else # define _GL_HAS_BUILTIN_UNREACHABLE 0 #endif /* Each of these macros verifies that its argument R is nonzero. To be portable, R should be an integer constant expression. Unlike assert (R), there is no run-time overhead. There are two macros, since no single macro can be used in all contexts in C. verify_expr (R, E) is for scalar contexts, including integer constant expression contexts. verify (R) is for declaration contexts, e.g., the top level. */ /* Verify requirement R at compile-time. Return the value of the expression E. */ #define verify_expr(R, E) \ (_GL_VERIFY_TRUE (R, "verify_expr (" #R ", " #E ")") ? (E) : (E)) /* Verify requirement R at compile-time, as a declaration without a trailing ';'. verify (R) acts like static_assert (R) except that it is portable to C11/C++14 and earlier, it can issue better diagnostics, and its name is shorter and may be more convenient. */ #ifdef __PGI /* PGI barfs if R is long. */ # define verify(R) _GL_VERIFY (R, "verify (...)", -) #else # define verify(R) _GL_VERIFY (R, "verify (" #R ")", -) #endif /* Assume that R always holds. Behavior is undefined if R is false, fails to evaluate, or has side effects. 'assume (R)' is a directive from the programmer telling the compiler that R is true so the compiler needn't generate code to test R. This is why 'assume' is in verify.h: it's related to static checking (in this case, static checking done by the programmer), not dynamic checking. 'assume (R)' can affect compilation of all the code, not just code that happens to be executed after the assume (R) is "executed". For example, if the code mistakenly does 'assert (R); assume (R);' the compiler is entitled to optimize away the 'assert (R)'. Although assuming R can help a compiler generate better code or diagnostics, performance can suffer if R uses hard-to-optimize features such as function calls not inlined by the compiler. Avoid Clang's __builtin_assume, as it breaks GNU Emacs master as of 2020-08-23T21:09:49Z!eggert@cs.ucla.edu; see . It's not known whether this breakage is a Clang bug or an Emacs bug; play it safe for now. */ #if _GL_HAS_BUILTIN_UNREACHABLE # define assume(R) ((R) ? (void) 0 : __builtin_unreachable ()) #elif 1200 <= _MSC_VER # define assume(R) __assume (R) #elif 202311 <= __STDC_VERSION__ # include # define assume(R) ((R) ? (void) 0 : unreachable ()) #elif (defined GCC_LINT || defined lint) && _GL_HAS_BUILTIN_TRAP /* Doing it this way helps various packages when configured with --enable-gcc-warnings, which compiles with -Dlint. It's nicer if 'assume' silences warnings with GCC 3.4 through GCC 4.4.7 (2012). */ # define assume(R) ((R) ? (void) 0 : __builtin_trap ()) #else /* Some older tools grok NOTREACHED, e.g., Oracle Studio 12.6 (2017). */ # define assume(R) ((R) ? (void) 0 : /*NOTREACHED*/ (void) 0) #endif /* @assert.h omit end@ */ #endif recode-3.7.15/lib/hash.c0000644000175000017500000010012714371444255010400 /* hash - hashing table processing. Copyright (C) 1998-2004, 2006-2007, 2009-2023 Free Software Foundation, Inc. Written by Jim Meyering, 1992. This file 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. This file 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 . */ /* A generic hash table package. */ /* Define USE_OBSTACK to 1 if you want the allocator to use obstacks instead of malloc. If you change USE_OBSTACK, you have to recompile! */ #include #include "hash.h" #include "bitrotate.h" #include "xalloc-oversized.h" #include #include #include #if USE_OBSTACK # include "obstack.h" # ifndef obstack_chunk_alloc # define obstack_chunk_alloc malloc # endif # ifndef obstack_chunk_free # define obstack_chunk_free free # endif #endif struct hash_entry { void *data; struct hash_entry *next; }; struct hash_table { /* The array of buckets starts at BUCKET and extends to BUCKET_LIMIT-1, for a possibility of N_BUCKETS. Among those, N_BUCKETS_USED buckets are not empty, there are N_ENTRIES active entries in the table. */ struct hash_entry *bucket; struct hash_entry const *bucket_limit; size_t n_buckets; size_t n_buckets_used; size_t n_entries; /* Tuning arguments, kept in a physically separate structure. */ const Hash_tuning *tuning; /* Three functions are given to 'hash_initialize', see the documentation block for this function. In a word, HASHER randomizes a user entry into a number up from 0 up to some maximum minus 1; COMPARATOR returns true if two user entries compare equally; and DATA_FREER is the cleanup function for a user entry. */ Hash_hasher hasher; Hash_comparator comparator; Hash_data_freer data_freer; /* A linked list of freed struct hash_entry structs. */ struct hash_entry *free_entry_list; #if USE_OBSTACK /* Whenever obstacks are used, it is possible to allocate all overflowed entries into a single stack, so they all can be freed in a single operation. It is not clear if the speedup is worth the trouble. */ struct obstack entry_stack; #endif }; /* A hash table contains many internal entries, each holding a pointer to some user-provided data (also called a user entry). An entry indistinctly refers to both the internal entry and its associated user entry. A user entry contents may be hashed by a randomization function (the hashing function, or just "hasher" for short) into a number (or "slot") between 0 and the current table size. At each slot position in the hash table, starts a linked chain of entries for which the user data all hash to this slot. A bucket is the collection of all entries hashing to the same slot. A good "hasher" function will distribute entries rather evenly in buckets. In the ideal case, the length of each bucket is roughly the number of entries divided by the table size. Finding the slot for a data is usually done in constant time by the "hasher", and the later finding of a precise entry is linear in time with the size of the bucket. Consequently, a larger hash table size (that is, a larger number of buckets) is prone to yielding shorter chains, *given* the "hasher" function behaves properly. Long buckets slow down the lookup algorithm. One might use big hash table sizes in hope to reduce the average length of buckets, but this might become inordinate, as unused slots in the hash table take some space. The best bet is to make sure you are using a good "hasher" function (beware that those are not that easy to write! :-), and to use a table size larger than the actual number of entries. */ /* If an insertion makes the ratio of nonempty buckets to table size larger than the growth threshold (a number between 0.0 and 1.0), then increase the table size by multiplying by the growth factor (a number greater than 1.0). The growth threshold defaults to 0.8, and the growth factor defaults to 1.414, meaning that the table will have doubled its size every second time 80% of the buckets get used. */ #define DEFAULT_GROWTH_THRESHOLD 0.8f #define DEFAULT_GROWTH_FACTOR 1.414f /* If a deletion empties a bucket and causes the ratio of used buckets to table size to become smaller than the shrink threshold (a number between 0.0 and 1.0), then shrink the table by multiplying by the shrink factor (a number greater than the shrink threshold but smaller than 1.0). The shrink threshold and factor default to 0.0 and 1.0, meaning that the table never shrinks. */ #define DEFAULT_SHRINK_THRESHOLD 0.0f #define DEFAULT_SHRINK_FACTOR 1.0f /* Use this to initialize or reset a TUNING structure to some sensible values. */ static const Hash_tuning default_tuning = { DEFAULT_SHRINK_THRESHOLD, DEFAULT_SHRINK_FACTOR, DEFAULT_GROWTH_THRESHOLD, DEFAULT_GROWTH_FACTOR, false }; /* Information and lookup. */ size_t hash_get_n_buckets (const Hash_table *table) { return table->n_buckets; } size_t hash_get_n_buckets_used (const Hash_table *table) { return table->n_buckets_used; } size_t hash_get_n_entries (const Hash_table *table) { return table->n_entries; } size_t hash_get_max_bucket_length (const Hash_table *table) { struct hash_entry const *bucket; size_t max_bucket_length = 0; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { struct hash_entry const *cursor = bucket; size_t bucket_length = 1; while (cursor = cursor->next, cursor) bucket_length++; if (bucket_length > max_bucket_length) max_bucket_length = bucket_length; } } return max_bucket_length; } bool hash_table_ok (const Hash_table *table) { struct hash_entry const *bucket; size_t n_buckets_used = 0; size_t n_entries = 0; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { struct hash_entry const *cursor = bucket; /* Count bucket head. */ n_buckets_used++; n_entries++; /* Count bucket overflow. */ while (cursor = cursor->next, cursor) n_entries++; } } if (n_buckets_used == table->n_buckets_used && n_entries == table->n_entries) return true; return false; } void hash_print_statistics (const Hash_table *table, FILE *stream) { size_t n_entries = hash_get_n_entries (table); size_t n_buckets = hash_get_n_buckets (table); size_t n_buckets_used = hash_get_n_buckets_used (table); size_t max_bucket_length = hash_get_max_bucket_length (table); fprintf (stream, "# entries: %lu\n", (unsigned long int) n_entries); fprintf (stream, "# buckets: %lu\n", (unsigned long int) n_buckets); fprintf (stream, "# buckets used: %lu (%.2f%%)\n", (unsigned long int) n_buckets_used, (100.0 * n_buckets_used) / n_buckets); fprintf (stream, "max bucket length: %lu\n", (unsigned long int) max_bucket_length); } /* Hash KEY and return a pointer to the selected bucket. If TABLE->hasher misbehaves, abort. */ static struct hash_entry * safe_hasher (const Hash_table *table, const void *key) { size_t n = table->hasher (key, table->n_buckets); if (! (n < table->n_buckets)) abort (); return table->bucket + n; } void * hash_lookup (const Hash_table *table, const void *entry) { struct hash_entry const *bucket = safe_hasher (table, entry); struct hash_entry const *cursor; if (bucket->data == NULL) return NULL; for (cursor = bucket; cursor; cursor = cursor->next) if (entry == cursor->data || table->comparator (entry, cursor->data)) return cursor->data; return NULL; } /* Walking. */ void * hash_get_first (const Hash_table *table) { struct hash_entry const *bucket; if (table->n_entries == 0) return NULL; for (bucket = table->bucket; ; bucket++) if (! (bucket < table->bucket_limit)) abort (); else if (bucket->data) return bucket->data; } void * hash_get_next (const Hash_table *table, const void *entry) { struct hash_entry const *bucket = safe_hasher (table, entry); struct hash_entry const *cursor; /* Find next entry in the same bucket. */ cursor = bucket; do { if (cursor->data == entry && cursor->next) return cursor->next->data; cursor = cursor->next; } while (cursor != NULL); /* Find first entry in any subsequent bucket. */ while (++bucket < table->bucket_limit) if (bucket->data) return bucket->data; /* None found. */ return NULL; } size_t hash_get_entries (const Hash_table *table, void **buffer, size_t buffer_size) { size_t counter = 0; struct hash_entry const *bucket; struct hash_entry const *cursor; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { for (cursor = bucket; cursor; cursor = cursor->next) { if (counter >= buffer_size) return counter; buffer[counter++] = cursor->data; } } } return counter; } size_t hash_do_for_each (const Hash_table *table, Hash_processor processor, void *processor_data) { size_t counter = 0; struct hash_entry const *bucket; struct hash_entry const *cursor; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { for (cursor = bucket; cursor; cursor = cursor->next) { if (! processor (cursor->data, processor_data)) return counter; counter++; } } } return counter; } /* Allocation and clean-up. */ #if USE_DIFF_HASH /* About hashings, Paul Eggert writes to me (FP), on 1994-01-01: "Please see B. J. McKenzie, R. Harries & T. Bell, Selecting a hashing algorithm, Software--practice & experience 20, 2 (Feb 1990), 209-224. Good hash algorithms tend to be domain-specific, so what's good for [diffutils'] io.c may not be good for your application." */ size_t hash_string (const char *string, size_t n_buckets) { # define HASH_ONE_CHAR(Value, Byte) \ ((Byte) + rotl_sz (Value, 7)) size_t value = 0; unsigned char ch; for (; (ch = *string); string++) value = HASH_ONE_CHAR (value, ch); return value % n_buckets; # undef HASH_ONE_CHAR } #else /* not USE_DIFF_HASH */ /* This one comes from 'recode', and performs a bit better than the above as per a few experiments. It is inspired from a hashing routine found in the very old Cyber 'snoop', itself written in typical Greg Mansfield style. (By the way, what happened to this excellent man? Is he still alive?) */ size_t hash_string (const char *string, size_t n_buckets) { size_t value = 0; unsigned char ch; for (; (ch = *string); string++) value = (value * 31 + ch) % n_buckets; return value; } #endif /* not USE_DIFF_HASH */ /* Return true if CANDIDATE is a prime number. CANDIDATE should be an odd number at least equal to 11. */ static bool _GL_ATTRIBUTE_CONST is_prime (size_t candidate) { size_t divisor = 3; size_t square = divisor * divisor; while (square < candidate && (candidate % divisor)) { divisor++; square += 4 * divisor; divisor++; } return (candidate % divisor ? true : false); } /* Round a given CANDIDATE number up to the nearest prime, and return that prime. Primes lower than 10 are merely skipped. */ static size_t _GL_ATTRIBUTE_CONST next_prime (size_t candidate) { /* Skip small primes. */ if (candidate < 10) candidate = 10; /* Make it definitely odd. */ candidate |= 1; while (SIZE_MAX != candidate && !is_prime (candidate)) candidate += 2; return candidate; } void hash_reset_tuning (Hash_tuning *tuning) { *tuning = default_tuning; } /* If the user passes a NULL hasher, we hash the raw pointer. */ static size_t raw_hasher (const void *data, size_t n) { /* When hashing unique pointers, it is often the case that they were generated by malloc and thus have the property that the low-order bits are 0. As this tends to give poorer performance with small tables, we rotate the pointer value before performing division, in an attempt to improve hash quality. */ size_t val = rotr_sz ((size_t) data, 3); return val % n; } /* If the user passes a NULL comparator, we use pointer comparison. */ static bool raw_comparator (const void *a, const void *b) { return a == b; } /* For the given hash TABLE, check the user supplied tuning structure for reasonable values, and return true if there is no gross error with it. Otherwise, definitively reset the TUNING field to some acceptable default in the hash table (that is, the user loses the right of further modifying tuning arguments), and return false. */ static bool check_tuning (Hash_table *table) { const Hash_tuning *tuning = table->tuning; float epsilon; if (tuning == &default_tuning) return true; /* Be a bit stricter than mathematics would require, so that rounding errors in size calculations do not cause allocations to fail to grow or shrink as they should. The smallest allocation is 11 (due to next_prime's algorithm), so an epsilon of 0.1 should be good enough. */ epsilon = 0.1f; if (epsilon < tuning->growth_threshold && tuning->growth_threshold < 1 - epsilon && 1 + epsilon < tuning->growth_factor && 0 <= tuning->shrink_threshold && tuning->shrink_threshold + epsilon < tuning->shrink_factor && tuning->shrink_factor <= 1 && tuning->shrink_threshold + epsilon < tuning->growth_threshold) return true; table->tuning = &default_tuning; return false; } /* Compute the size of the bucket array for the given CANDIDATE and TUNING, or return 0 if there is no possible way to allocate that many entries. */ static size_t _GL_ATTRIBUTE_PURE compute_bucket_size (size_t candidate, const Hash_tuning *tuning) { if (!tuning->is_n_buckets) { float new_candidate = candidate / tuning->growth_threshold; if ((float) SIZE_MAX <= new_candidate) return 0; candidate = new_candidate; } candidate = next_prime (candidate); if (xalloc_oversized (candidate, sizeof (struct hash_entry *))) return 0; return candidate; } Hash_table * hash_initialize (size_t candidate, const Hash_tuning *tuning, Hash_hasher hasher, Hash_comparator comparator, Hash_data_freer data_freer) { Hash_table *table; if (hasher == NULL) hasher = raw_hasher; if (comparator == NULL) comparator = raw_comparator; table = malloc (sizeof *table); if (table == NULL) return NULL; if (!tuning) tuning = &default_tuning; table->tuning = tuning; if (!check_tuning (table)) { /* Fail if the tuning options are invalid. This is the only occasion when the user gets some feedback about it. Once the table is created, if the user provides invalid tuning options, we silently revert to using the defaults, and ignore further request to change the tuning options. */ goto fail; } table->n_buckets = compute_bucket_size (candidate, tuning); if (!table->n_buckets) goto fail; table->bucket = calloc (table->n_buckets, sizeof *table->bucket); if (table->bucket == NULL) goto fail; table->bucket_limit = table->bucket + table->n_buckets; table->n_buckets_used = 0; table->n_entries = 0; table->hasher = hasher; table->comparator = comparator; table->data_freer = data_freer; table->free_entry_list = NULL; #if USE_OBSTACK obstack_init (&table->entry_stack); #endif return table; fail: free (table); return NULL; } void hash_clear (Hash_table *table) { struct hash_entry *bucket; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { struct hash_entry *cursor; struct hash_entry *next; /* Free the bucket overflow. */ for (cursor = bucket->next; cursor; cursor = next) { if (table->data_freer) table->data_freer (cursor->data); cursor->data = NULL; next = cursor->next; /* Relinking is done one entry at a time, as it is to be expected that overflows are either rare or short. */ cursor->next = table->free_entry_list; table->free_entry_list = cursor; } /* Free the bucket head. */ if (table->data_freer) table->data_freer (bucket->data); bucket->data = NULL; bucket->next = NULL; } } table->n_buckets_used = 0; table->n_entries = 0; } void hash_free (Hash_table *table) { struct hash_entry *bucket; struct hash_entry *cursor; struct hash_entry *next; /* Call the user data_freer function. */ if (table->data_freer && table->n_entries) { for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { for (cursor = bucket; cursor; cursor = cursor->next) table->data_freer (cursor->data); } } } #if USE_OBSTACK obstack_free (&table->entry_stack, NULL); #else /* Free all bucket overflowed entries. */ for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { for (cursor = bucket->next; cursor; cursor = next) { next = cursor->next; free (cursor); } } /* Also reclaim the internal list of previously freed entries. */ for (cursor = table->free_entry_list; cursor; cursor = next) { next = cursor->next; free (cursor); } #endif /* Free the remainder of the hash table structure. */ free (table->bucket); free (table); } /* Insertion and deletion. */ /* Get a new hash entry for a bucket overflow, possibly by recycling a previously freed one. If this is not possible, allocate a new one. */ static struct hash_entry * allocate_entry (Hash_table *table) { struct hash_entry *new; if (table->free_entry_list) { new = table->free_entry_list; table->free_entry_list = new->next; } else { #if USE_OBSTACK new = obstack_alloc (&table->entry_stack, sizeof *new); #else new = malloc (sizeof *new); #endif } return new; } /* Free a hash entry which was part of some bucket overflow, saving it for later recycling. */ static void free_entry (Hash_table *table, struct hash_entry *entry) { entry->data = NULL; entry->next = table->free_entry_list; table->free_entry_list = entry; } /* This private function is used to help with insertion and deletion. When ENTRY matches an entry in the table, return a pointer to the corresponding user data and set *BUCKET_HEAD to the head of the selected bucket. Otherwise, return NULL. When DELETE is true and ENTRY matches an entry in the table, unlink the matching entry. */ static void * hash_find_entry (Hash_table *table, const void *entry, struct hash_entry **bucket_head, bool delete) { struct hash_entry *bucket = safe_hasher (table, entry); struct hash_entry *cursor; *bucket_head = bucket; /* Test for empty bucket. */ if (bucket->data == NULL) return NULL; /* See if the entry is the first in the bucket. */ if (entry == bucket->data || table->comparator (entry, bucket->data)) { void *data = bucket->data; if (delete) { if (bucket->next) { struct hash_entry *next = bucket->next; /* Bump the first overflow entry into the bucket head, then save the previous first overflow entry for later recycling. */ *bucket = *next; free_entry (table, next); } else { bucket->data = NULL; } } return data; } /* Scan the bucket overflow. */ for (cursor = bucket; cursor->next; cursor = cursor->next) { if (entry == cursor->next->data || table->comparator (entry, cursor->next->data)) { void *data = cursor->next->data; if (delete) { struct hash_entry *next = cursor->next; /* Unlink the entry to delete, then save the freed entry for later recycling. */ cursor->next = next->next; free_entry (table, next); } return data; } } /* No entry found. */ return NULL; } /* Internal helper, to move entries from SRC to DST. Both tables must share the same free entry list. If SAFE, only move overflow entries, saving bucket heads for later, so that no allocations will occur. Return false if the free entry list is exhausted and an allocation fails. */ static bool transfer_entries (Hash_table *dst, Hash_table *src, bool safe) { struct hash_entry *bucket; struct hash_entry *cursor; struct hash_entry *next; for (bucket = src->bucket; bucket < src->bucket_limit; bucket++) if (bucket->data) { void *data; struct hash_entry *new_bucket; /* Within each bucket, transfer overflow entries first and then the bucket head, to minimize memory pressure. After all, the only time we might allocate is when moving the bucket head, but moving overflow entries first may create free entries that can be recycled by the time we finally get to the bucket head. */ for (cursor = bucket->next; cursor; cursor = next) { data = cursor->data; new_bucket = safe_hasher (dst, data); next = cursor->next; if (new_bucket->data) { /* Merely relink an existing entry, when moving from a bucket overflow into a bucket overflow. */ cursor->next = new_bucket->next; new_bucket->next = cursor; } else { /* Free an existing entry, when moving from a bucket overflow into a bucket header. */ new_bucket->data = data; dst->n_buckets_used++; free_entry (dst, cursor); } } /* Now move the bucket head. Be sure that if we fail due to allocation failure that the src table is in a consistent state. */ data = bucket->data; bucket->next = NULL; if (safe) continue; new_bucket = safe_hasher (dst, data); if (new_bucket->data) { /* Allocate or recycle an entry, when moving from a bucket header into a bucket overflow. */ struct hash_entry *new_entry = allocate_entry (dst); if (new_entry == NULL) return false; new_entry->data = data; new_entry->next = new_bucket->next; new_bucket->next = new_entry; } else { /* Move from one bucket header to another. */ new_bucket->data = data; dst->n_buckets_used++; } bucket->data = NULL; src->n_buckets_used--; } return true; } bool hash_rehash (Hash_table *table, size_t candidate) { Hash_table storage; Hash_table *new_table; size_t new_size = compute_bucket_size (candidate, table->tuning); if (!new_size) return false; if (new_size == table->n_buckets) return true; new_table = &storage; new_table->bucket = calloc (new_size, sizeof *new_table->bucket); if (new_table->bucket == NULL) return false; new_table->n_buckets = new_size; new_table->bucket_limit = new_table->bucket + new_size; new_table->n_buckets_used = 0; new_table->n_entries = 0; new_table->tuning = table->tuning; new_table->hasher = table->hasher; new_table->comparator = table->comparator; new_table->data_freer = table->data_freer; /* In order for the transfer to successfully complete, we need additional overflow entries when distinct buckets in the old table collide into a common bucket in the new table. The worst case possible is a hasher that gives a good spread with the old size, but returns a constant with the new size; if we were to guarantee table->n_buckets_used-1 free entries in advance, then the transfer would be guaranteed to not allocate memory. However, for large tables, a guarantee of no further allocation introduces a lot of extra memory pressure, all for an unlikely corner case (most rehashes reduce, rather than increase, the number of overflow entries needed). So, we instead ensure that the transfer process can be reversed if we hit a memory allocation failure mid-transfer. */ /* Merely reuse the extra old space into the new table. */ #if USE_OBSTACK new_table->entry_stack = table->entry_stack; #endif new_table->free_entry_list = table->free_entry_list; if (transfer_entries (new_table, table, false)) { /* Entries transferred successfully; tie up the loose ends. */ free (table->bucket); table->bucket = new_table->bucket; table->bucket_limit = new_table->bucket_limit; table->n_buckets = new_table->n_buckets; table->n_buckets_used = new_table->n_buckets_used; table->free_entry_list = new_table->free_entry_list; /* table->n_entries and table->entry_stack already hold their value. */ return true; } /* We've allocated new_table->bucket (and possibly some entries), exhausted the free list, and moved some but not all entries into new_table. We must undo the partial move before returning failure. The only way to get into this situation is if new_table uses fewer buckets than the old table, so we will reclaim some free entries as overflows in the new table are put back into distinct buckets in the old table. There are some pathological cases where a single pass through the table requires more intermediate overflow entries than using two passes. Two passes give worse cache performance and takes longer, but at this point, we're already out of memory, so slow and safe is better than failure. */ table->free_entry_list = new_table->free_entry_list; if (! (transfer_entries (table, new_table, true) && transfer_entries (table, new_table, false))) abort (); /* table->n_entries already holds its value. */ free (new_table->bucket); return false; } int hash_insert_if_absent (Hash_table *table, void const *entry, void const **matched_ent) { void *data; struct hash_entry *bucket; /* The caller cannot insert a NULL entry, since hash_lookup returns NULL to indicate "not found", and hash_find_entry uses "bucket->data == NULL" to indicate an empty bucket. */ if (! entry) abort (); /* If there's a matching entry already in the table, return that. */ if ((data = hash_find_entry (table, entry, &bucket, false)) != NULL) { if (matched_ent) *matched_ent = data; return 0; } /* If the growth threshold of the buckets in use has been reached, increase the table size and rehash. There's no point in checking the number of entries: if the hashing function is ill-conditioned, rehashing is not likely to improve it. */ if (table->n_buckets_used > table->tuning->growth_threshold * table->n_buckets) { /* Check more fully, before starting real work. If tuning arguments became invalid, the second check will rely on proper defaults. */ check_tuning (table); if (table->n_buckets_used > table->tuning->growth_threshold * table->n_buckets) { const Hash_tuning *tuning = table->tuning; float candidate = (tuning->is_n_buckets ? (table->n_buckets * tuning->growth_factor) : (table->n_buckets * tuning->growth_factor * tuning->growth_threshold)); if ((float) SIZE_MAX <= candidate) return -1; /* If the rehash fails, arrange to return NULL. */ if (!hash_rehash (table, candidate)) return -1; /* Update the bucket we are interested in. */ if (hash_find_entry (table, entry, &bucket, false) != NULL) abort (); } } /* ENTRY is not matched, it should be inserted. */ if (bucket->data) { struct hash_entry *new_entry = allocate_entry (table); if (new_entry == NULL) return -1; /* Add ENTRY in the overflow of the bucket. */ new_entry->data = (void *) entry; new_entry->next = bucket->next; bucket->next = new_entry; table->n_entries++; return 1; } /* Add ENTRY right in the bucket head. */ bucket->data = (void *) entry; table->n_entries++; table->n_buckets_used++; return 1; } void * hash_insert (Hash_table *table, void const *entry) { void const *matched_ent; int err = hash_insert_if_absent (table, entry, &matched_ent); return (err == -1 ? NULL : (void *) (err == 0 ? matched_ent : entry)); } void * hash_remove (Hash_table *table, const void *entry) { void *data; struct hash_entry *bucket; data = hash_find_entry (table, entry, &bucket, true); if (!data) return NULL; table->n_entries--; if (!bucket->data) { table->n_buckets_used--; /* If the shrink threshold of the buckets in use has been reached, rehash into a smaller table. */ if (table->n_buckets_used < table->tuning->shrink_threshold * table->n_buckets) { /* Check more fully, before starting real work. If tuning arguments became invalid, the second check will rely on proper defaults. */ check_tuning (table); if (table->n_buckets_used < table->tuning->shrink_threshold * table->n_buckets) { const Hash_tuning *tuning = table->tuning; size_t candidate = (tuning->is_n_buckets ? table->n_buckets * tuning->shrink_factor : (table->n_buckets * tuning->shrink_factor * tuning->growth_threshold)); if (!hash_rehash (table, candidate)) { /* Failure to allocate memory in an attempt to shrink the table is not fatal. But since memory is low, we can at least be kind and free any spare entries, rather than keeping them tied up in the free entry list. */ #if ! USE_OBSTACK struct hash_entry *cursor = table->free_entry_list; struct hash_entry *next; while (cursor) { next = cursor->next; free (cursor); cursor = next; } table->free_entry_list = NULL; #endif } } } } return data; } void * hash_delete (Hash_table *table, const void *entry) { return hash_remove (table, entry); } /* Testing. */ #if TESTING void hash_print (const Hash_table *table) { struct hash_entry *bucket = (struct hash_entry *) table->bucket; for ( ; bucket < table->bucket_limit; bucket++) { struct hash_entry *cursor; if (bucket) printf ("%lu:\n", (unsigned long int) (bucket - table->bucket)); for (cursor = bucket; cursor; cursor = cursor->next) { char const *s = cursor->data; /* FIXME */ if (s) printf (" %s\n", s); } } } #endif /* TESTING */ recode-3.7.15/lib/float.c0000644000175000017500000000252614371444255010566 /* Auxiliary definitions for . Copyright (C) 2011-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2011. This file 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. This file 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 . */ #include /* Specification. */ #include #if (defined _ARCH_PPC || defined _POWER) && (defined _AIX || defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__ const union gl_long_double_union gl_LDBL_MAX = { { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL } }; #elif defined __i386__ const union gl_long_double_union gl_LDBL_MAX = { { 0xFFFFFFFF, 0xFFFFFFFF, 32766 } }; #else /* This declaration is solely to ensure that after preprocessing this file is never empty. */ typedef int dummy; #endif recode-3.7.15/lib/setlocale_null.c0000644000175000017500000002524314371444255012467 /* Query the name of the current global locale. Copyright (C) 2019-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2019. */ #include /* Specification. */ #include "setlocale_null.h" #include #include #include #include #if defined _WIN32 && !defined __CYGWIN__ # include #endif #if !(SETLOCALE_NULL_ALL_MTSAFE && SETLOCALE_NULL_ONE_MTSAFE) # if defined _WIN32 && !defined __CYGWIN__ # define WIN32_LEAN_AND_MEAN /* avoid including junk */ # include # elif HAVE_PTHREAD_API # include # if HAVE_THREADS_H && HAVE_WEAK_SYMBOLS # include # pragma weak thrd_exit # define c11_threads_in_use() (thrd_exit != NULL) # else # define c11_threads_in_use() 0 # endif # elif HAVE_THREADS_H # include # endif #endif /* Use the system's setlocale() function, not the gnulib override, here. */ #undef setlocale static const char * setlocale_null_androidfix (int category) { const char *result = setlocale (category, NULL); #ifdef __ANDROID__ if (result == NULL) switch (category) { case LC_CTYPE: case LC_NUMERIC: case LC_TIME: case LC_COLLATE: case LC_MONETARY: case LC_MESSAGES: case LC_ALL: case LC_PAPER: case LC_NAME: case LC_ADDRESS: case LC_TELEPHONE: case LC_MEASUREMENT: result = "C"; break; default: break; } #endif return result; } static int setlocale_null_unlocked (int category, char *buf, size_t bufsize) { #if defined _WIN32 && !defined __CYGWIN__ && defined _MSC_VER /* On native Windows, nowadays, the setlocale() implementation is based on _wsetlocale() and uses malloc() for the result. We are better off using _wsetlocale() directly. */ const wchar_t *result = _wsetlocale (category, NULL); if (result == NULL) { /* CATEGORY is invalid. */ if (bufsize > 0) /* Return an empty string in BUF. This is a convenience for callers that don't want to write explicit code for handling EINVAL. */ buf[0] = '\0'; return EINVAL; } else { size_t length = wcslen (result); if (length < bufsize) { size_t i; /* Convert wchar_t[] -> char[], assuming plain ASCII. */ for (i = 0; i <= length; i++) buf[i] = result[i]; return 0; } else { if (bufsize > 0) { /* Return a truncated result in BUF. This is a convenience for callers that don't want to write explicit code for handling ERANGE. */ size_t i; /* Convert wchar_t[] -> char[], assuming plain ASCII. */ for (i = 0; i < bufsize; i++) buf[i] = result[i]; buf[bufsize - 1] = '\0'; } return ERANGE; } } #else const char *result = setlocale_null_androidfix (category); if (result == NULL) { /* CATEGORY is invalid. */ if (bufsize > 0) /* Return an empty string in BUF. This is a convenience for callers that don't want to write explicit code for handling EINVAL. */ buf[0] = '\0'; return EINVAL; } else { size_t length = strlen (result); if (length < bufsize) { memcpy (buf, result, length + 1); return 0; } else { if (bufsize > 0) { /* Return a truncated result in BUF. This is a convenience for callers that don't want to write explicit code for handling ERANGE. */ memcpy (buf, result, bufsize - 1); buf[bufsize - 1] = '\0'; } return ERANGE; } } #endif } #if !(SETLOCALE_NULL_ALL_MTSAFE && SETLOCALE_NULL_ONE_MTSAFE) /* musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku, Cygwin < 3.4.6 */ /* Use a lock, so that no two threads can invoke setlocale_null_unlocked at the same time. */ /* Prohibit renaming this symbol. */ # undef gl_get_setlocale_null_lock # if defined _WIN32 && !defined __CYGWIN__ extern __declspec(dllimport) CRITICAL_SECTION *gl_get_setlocale_null_lock (void); static int setlocale_null_with_lock (int category, char *buf, size_t bufsize) { CRITICAL_SECTION *lock = gl_get_setlocale_null_lock (); int ret; EnterCriticalSection (lock); ret = setlocale_null_unlocked (category, buf, bufsize); LeaveCriticalSection (lock); return ret; } # elif HAVE_PTHREAD_API /* musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku, Cygwin < 3.4.6 */ extern # if defined _WIN32 || defined __CYGWIN__ __declspec(dllimport) # endif pthread_mutex_t *gl_get_setlocale_null_lock (void); # if HAVE_WEAK_SYMBOLS /* musl libc, FreeBSD, NetBSD, OpenBSD, Haiku */ /* Avoid the need to link with '-lpthread'. */ # pragma weak pthread_mutex_lock # pragma weak pthread_mutex_unlock /* Determine whether libpthread is in use. */ # pragma weak pthread_mutexattr_gettype /* See the comments in lock.h. */ # define pthread_in_use() \ (pthread_mutexattr_gettype != NULL || c11_threads_in_use ()) # else # define pthread_in_use() 1 # endif static int setlocale_null_with_lock (int category, char *buf, size_t bufsize) { if (pthread_in_use()) { pthread_mutex_t *lock = gl_get_setlocale_null_lock (); int ret; if (pthread_mutex_lock (lock)) abort (); ret = setlocale_null_unlocked (category, buf, bufsize); if (pthread_mutex_unlock (lock)) abort (); return ret; } else return setlocale_null_unlocked (category, buf, bufsize); } # elif HAVE_THREADS_H extern mtx_t *gl_get_setlocale_null_lock (void); static int setlocale_null_with_lock (int category, char *buf, size_t bufsize) { mtx_t *lock = gl_get_setlocale_null_lock (); int ret; if (mtx_lock (lock) != thrd_success) abort (); ret = setlocale_null_unlocked (category, buf, bufsize); if (mtx_unlock (lock) != thrd_success) abort (); return ret; } # endif #endif int setlocale_null_r (int category, char *buf, size_t bufsize) { #if SETLOCALE_NULL_ALL_MTSAFE # if SETLOCALE_NULL_ONE_MTSAFE return setlocale_null_unlocked (category, buf, bufsize); # else if (category == LC_ALL) return setlocale_null_unlocked (category, buf, bufsize); else return setlocale_null_with_lock (category, buf, bufsize); # endif #else # if SETLOCALE_NULL_ONE_MTSAFE if (category == LC_ALL) return setlocale_null_with_lock (category, buf, bufsize); else return setlocale_null_unlocked (category, buf, bufsize); # else return setlocale_null_with_lock (category, buf, bufsize); # endif #endif } const char * setlocale_null (int category) { #if SETLOCALE_NULL_ALL_MTSAFE && SETLOCALE_NULL_ONE_MTSAFE return setlocale_null_androidfix (category); #else /* This call must be multithread-safe. To achieve this without using thread-local storage: 1. We use a specific static buffer for each possible CATEGORY argument. So that different threads can call setlocale_mtsafe with different CATEGORY arguments, without interfering. 2. We use a simple strcpy or memcpy to fill this static buffer. Filling it through, for example, strcpy + strcat would not be guaranteed to leave the buffer's contents intact if another thread is currently accessing it. If necessary, the contents is first assembled in a stack-allocated buffer. */ if (category == LC_ALL) { # if SETLOCALE_NULL_ALL_MTSAFE return setlocale_null_androidfix (LC_ALL); # else char buf[SETLOCALE_NULL_ALL_MAX]; static char resultbuf[SETLOCALE_NULL_ALL_MAX]; if (setlocale_null_r (LC_ALL, buf, sizeof (buf))) return "C"; strcpy (resultbuf, buf); return resultbuf; # endif } else { # if SETLOCALE_NULL_ONE_MTSAFE return setlocale_null_androidfix (category); # else enum { LC_CTYPE_INDEX, LC_NUMERIC_INDEX, LC_TIME_INDEX, LC_COLLATE_INDEX, LC_MONETARY_INDEX, LC_MESSAGES_INDEX, # ifdef LC_PAPER LC_PAPER_INDEX, # endif # ifdef LC_NAME LC_NAME_INDEX, # endif # ifdef LC_ADDRESS LC_ADDRESS_INDEX, # endif # ifdef LC_TELEPHONE LC_TELEPHONE_INDEX, # endif # ifdef LC_MEASUREMENT LC_MEASUREMENT_INDEX, # endif # ifdef LC_IDENTIFICATION LC_IDENTIFICATION_INDEX, # endif LC_INDICES_COUNT } i; char buf[SETLOCALE_NULL_MAX]; static char resultbuf[LC_INDICES_COUNT][SETLOCALE_NULL_MAX]; int err; err = setlocale_null_r (category, buf, sizeof (buf)); if (err == EINVAL) return NULL; if (err) return "C"; switch (category) { case LC_CTYPE: i = LC_CTYPE_INDEX; break; case LC_NUMERIC: i = LC_NUMERIC_INDEX; break; case LC_TIME: i = LC_TIME_INDEX; break; case LC_COLLATE: i = LC_COLLATE_INDEX; break; case LC_MONETARY: i = LC_MONETARY_INDEX; break; case LC_MESSAGES: i = LC_MESSAGES_INDEX; break; # ifdef LC_PAPER case LC_PAPER: i = LC_PAPER_INDEX; break; # endif # ifdef LC_NAME case LC_NAME: i = LC_NAME_INDEX; break; # endif # ifdef LC_ADDRESS case LC_ADDRESS: i = LC_ADDRESS_INDEX; break; # endif # ifdef LC_TELEPHONE case LC_TELEPHONE: i = LC_TELEPHONE_INDEX; break; # endif # ifdef LC_MEASUREMENT case LC_MEASUREMENT: i = LC_MEASUREMENT_INDEX; break; # endif # ifdef LC_IDENTIFICATION case LC_IDENTIFICATION: i = LC_IDENTIFICATION_INDEX; break; # endif default: /* If you get here, a #ifdef LC_xxx is missing. */ abort (); } strcpy (resultbuf[i], buf); return resultbuf[i]; # endif } #endif } recode-3.7.15/lib/vasnprintf.h0000644000175000017500000000503114371444255011652 /* vsprintf with automatic memory allocation. Copyright (C) 2002-2004, 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _VASNPRINTF_H #define _VASNPRINTF_H /* Get va_list. */ #include /* Get size_t. */ #include /* Get _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD. */ #include #ifdef __cplusplus extern "C" { #endif /* Write formatted output to a string dynamically allocated with malloc(). You can pass a preallocated buffer for the result in RESULTBUF and its size in *LENGTHP; otherwise you pass RESULTBUF = NULL. If successful, return the address of the string (this may be = RESULTBUF if no dynamic memory allocation was necessary) and set *LENGTHP to the number of resulting bytes, excluding the trailing NUL. Upon error, set errno and return NULL. When dynamic memory allocation occurs, the preallocated buffer is left alone (with possibly modified contents). This makes it possible to use a statically allocated or stack-allocated buffer, like this: char buf[100]; size_t len = sizeof (buf); char *output = vasnprintf (buf, &len, format, args); if (output == NULL) ... error handling ...; else { ... use the output string ...; if (output != buf) free (output); } */ #if REPLACE_VASNPRINTF # define asnprintf rpl_asnprintf # define vasnprintf rpl_vasnprintf #endif extern char * asnprintf (char *restrict resultbuf, size_t *lengthp, const char *format, ...) _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, 3, 4)); extern char * vasnprintf (char *restrict resultbuf, size_t *lengthp, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, 3, 0)); #ifdef __cplusplus } #endif #endif /* _VASNPRINTF_H */ recode-3.7.15/lib/mempcpy.c0000644000175000017500000000221314371444255011124 /* Copy memory area and return pointer after last written byte. Copyright (C) 2003, 2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include /* A function definition is only needed if HAVE_MEMPCPY is not defined. */ #if !HAVE_MEMPCPY /* Copy N bytes of SRC to DEST, return pointer to bytes after the last written byte. */ void * mempcpy (void *dest, const void *src, size_t n) { return (char *) memcpy (dest, src, n) + n; } #endif recode-3.7.15/lib/fseterr.c0000644000175000017500000000602614371444255011132 /* Set the error indicator of a stream. Copyright (C) 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include "fseterr.h" #include #include "stdio-impl.h" /* This file is not used on systems that have the __fseterr function, namely musl libc. */ void fseterr (FILE *fp) { /* Most systems provide FILE as a struct and the necessary bitmask in , because they need it for implementing getc() and putc() as fast macros. */ #if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ fp->_flags |= _IO_ERR_SEEN; #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ fp_->_flags |= __SERR; #elif defined __EMX__ /* emx+gcc */ fp->_flags |= _IOERR; #elif defined __minix /* Minix */ fp->_flags |= _IOERR; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, UnixWare, mingw, MSVC, NonStop Kernel, OpenVMS */ fp_->_flag |= _IOERR; #elif defined __UCLIBC__ /* uClibc */ fp->__modeflags |= __FLAG_ERROR; #elif defined __QNX__ /* QNX */ fp->_Mode |= 0x200 /* _MERR */; #elif defined __MINT__ /* Atari FreeMiNT */ fp->__error = 1; #elif defined EPLAN9 /* Plan9 */ if (fp->state != 0 /* CLOSED */) fp->state = 5 /* ERR */; #elif 0 /* unknown */ /* Portable fallback, based on an idea by Rich Felker. Wow! 6 system calls for something that is just a bit operation! Not activated on any system, because there is no way to repair FP when the sequence of system calls fails, and library code should not call abort(). */ int saved_errno; int fd; int fd2; saved_errno = errno; fflush (fp); fd = fileno (fp); fd2 = dup (fd); if (fd2 >= 0) { close (fd); fputc ('\0', fp); /* This should set the error indicator. */ fflush (fp); /* Or this. */ if (dup2 (fd2, fd) < 0) /* Whee... we botched the stream and now cannot restore it! */ abort (); close (fd2); } errno = saved_errno; #else #error "Please port gnulib fseterr.c to your platform! Look at the definitions of ferror and clearerr on your system, then report this to bug-gnulib." #endif } recode-3.7.15/lib/pipe.c0000644000175000017500000000253614371444255010417 /* Create a pipe. Copyright (C) 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include #if defined _WIN32 && ! defined __CYGWIN__ /* Native Windows API. */ /* Get _pipe(). */ # include /* Get _O_BINARY. */ # include int pipe (int fd[2]) { /* Mingw changes fd to {-1,-1} on failure, but this violates http://austingroupbugs.net/view.php?id=467 */ int tmp[2]; int result = _pipe (tmp, 4096, _O_BINARY); if (!result) { fd[0] = tmp[0]; fd[1] = tmp[1]; } return result; } #else # error "This platform lacks a pipe function, and Gnulib doesn't provide a replacement. This is a bug in Gnulib." #endif recode-3.7.15/lib/xalloc-die.c0000644000175000017500000000243514371444255011501 /* Report a memory allocation failure and exit. Copyright (C) 1997-2000, 2002-2004, 2006, 2009-2023 Free Software Foundation, Inc. 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 3 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, see . */ #include #include "xalloc.h" #include #include "error.h" #include "exitfail.h" #include "gettext.h" #define _(msgid) gettext (msgid) void xalloc_die (void) { error (exit_failure, 0, "%s", _("memory exhausted")); /* _Noreturn cannot be given to error, since it may return if its first argument is 0. To help compilers understand the xalloc_die does not return, call abort. Also, the abort is a safety feature if exit_failure is 0 (which shouldn't happen). */ abort (); } recode-3.7.15/lib/intprops.h0000644000175000017500000003625014371444255011345 /* intprops.h -- properties of integer types Copyright (C) 2001-2023 Free Software Foundation, Inc. This program 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. 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 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 . */ #ifndef _GL_INTPROPS_H #define _GL_INTPROPS_H #include "intprops-internal.h" /* The extra casts in the following macros work around compiler bugs, e.g., in Cray C 5.0.3.0. */ /* True if the arithmetic type T is an integer type. bool counts as an integer. */ #define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) /* True if the real type T is signed. */ #define TYPE_SIGNED(t) _GL_TYPE_SIGNED (t) /* Return 1 if the real expression E, after promotion, has a signed or floating type. Do not evaluate E. */ #define EXPR_SIGNED(e) _GL_EXPR_SIGNED (e) /* Minimum and maximum values for integer types and expressions. */ /* The width in bits of the integer type or expression T. Do not evaluate T. T must not be a bit-field expression. Padding bits are not supported; this is checked at compile-time below. */ #define TYPE_WIDTH(t) _GL_TYPE_WIDTH (t) /* The maximum and minimum values for the integer type T. */ #define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t)) #define TYPE_MAXIMUM(t) \ ((t) (! TYPE_SIGNED (t) \ ? (t) -1 \ : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) /* Bound on length of the string representing an unsigned integer value representable in B bits. log10 (2.0) < 146/485. The smallest value of B where this bound is not tight is 2621. */ #define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485) /* Bound on length of the string representing an integer type or expression T. T must not be a bit-field expression. Subtract 1 for the sign bit if T is signed, and then add 1 more for a minus sign if needed. Because _GL_SIGNED_TYPE_OR_EXPR sometimes returns 1 when its argument is unsigned, this macro may overestimate the true bound by one byte when applied to unsigned types of size 2, 4, 16, ... bytes. */ #define INT_STRLEN_BOUND(t) \ (INT_BITS_STRLEN_BOUND (TYPE_WIDTH (t) - _GL_SIGNED_TYPE_OR_EXPR (t)) \ + _GL_SIGNED_TYPE_OR_EXPR (t)) /* Bound on buffer size needed to represent an integer type or expression T, including the terminating null. T must not be a bit-field expression. */ #define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) /* Range overflow checks. The INT__RANGE_OVERFLOW macros return 1 if the corresponding C operators overflow arithmetically when given the same arguments. These macros do not rely on undefined or implementation-defined behavior. Although their implementations are simple and straightforward, they are harder to use and may be less efficient than the INT__WRAPV, INT__OK, and INT__OVERFLOW macros described below. Example usage: long int i = ...; long int j = ...; if (INT_MULTIPLY_RANGE_OVERFLOW (i, j, LONG_MIN, LONG_MAX)) printf ("multiply would overflow"); else printf ("product is %ld", i * j); Restrictions on *_RANGE_OVERFLOW macros: These macros do not check for all possible numerical problems or undefined or unspecified behavior: they do not check for division by zero, for bad shift counts, or for shifting negative numbers. These macros may evaluate their arguments zero or multiple times, so the arguments should not have side effects. The arithmetic arguments (including the MIN and MAX arguments) must be of the same integer type after the usual arithmetic conversions, and the type must have minimum value MIN and maximum MAX. Unsigned types should use a zero MIN of the proper type. Because all arguments are subject to integer promotions, these macros typically do not work on types narrower than 'int'. These macros are tuned for constant MIN and MAX. For commutative operations such as A + B, they are also tuned for constant B. */ /* Return 1 if A + B would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_ADD_RANGE_OVERFLOW(a, b, min, max) \ ((b) < 0 \ ? (a) < (min) - (b) \ : (max) - (b) < (a)) /* Return 1 if A - B would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_SUBTRACT_RANGE_OVERFLOW(a, b, min, max) \ ((b) < 0 \ ? (max) + (b) < (a) \ : (a) < (min) + (b)) /* Return 1 if - A would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ _GL_INT_NEGATE_RANGE_OVERFLOW (a, min, max) /* Return 1 if A * B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Avoid && and || as they tickle bugs in Sun C 5.11 2010/08/13 and other compilers; see . */ #define INT_MULTIPLY_RANGE_OVERFLOW(a, b, min, max) \ ((b) < 0 \ ? ((a) < 0 \ ? (a) < (max) / (b) \ : (b) == -1 \ ? 0 \ : (min) / (b) < (a)) \ : (b) == 0 \ ? 0 \ : ((a) < 0 \ ? (a) < (min) / (b) \ : (max) / (b) < (a))) /* Return 1 if A / B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Do not check for division by zero. */ #define INT_DIVIDE_RANGE_OVERFLOW(a, b, min, max) \ ((min) < 0 && (b) == -1 && (a) < - (max)) /* Return 1 if A % B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Do not check for division by zero. Mathematically, % should never overflow, but on x86-like hosts INT_MIN % -1 traps, and the C standard permits this, so treat this as an overflow too. */ #define INT_REMAINDER_RANGE_OVERFLOW(a, b, min, max) \ INT_DIVIDE_RANGE_OVERFLOW (a, b, min, max) /* Return 1 if A << B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Here, MIN and MAX are for A only, and B need not be of the same type as the other arguments. The C standard says that behavior is undefined for shifts unless 0 <= B < wordwidth, and that when A is negative then A << B has undefined behavior and A >> B has implementation-defined behavior, but do not check these other restrictions. */ #define INT_LEFT_SHIFT_RANGE_OVERFLOW(a, b, min, max) \ ((a) < 0 \ ? (a) < (min) >> (b) \ : (max) >> (b) < (a)) /* The _GL*_OVERFLOW macros have the same restrictions as the *_RANGE_OVERFLOW macros, except that they do not assume that operands (e.g., A and B) have the same type as MIN and MAX. Instead, they assume that the result (e.g., A + B) has that type. */ #if _GL_HAS_BUILTIN_OVERFLOW_P # define _GL_ADD_OVERFLOW(a, b, min, max) \ __builtin_add_overflow_p (a, b, (__typeof__ ((a) + (b))) 0) # define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ __builtin_sub_overflow_p (a, b, (__typeof__ ((a) - (b))) 0) # define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ __builtin_mul_overflow_p (a, b, (__typeof__ ((a) * (b))) 0) #else # define _GL_ADD_OVERFLOW(a, b, min, max) \ ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \ : (a) < 0 ? (b) <= (a) + (b) \ : (b) < 0 ? (a) <= (a) + (b) \ : (a) + (b) < (b)) # define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \ : (a) < 0 ? 1 \ : (b) < 0 ? (a) - (b) <= (a) \ : (a) < (b)) # define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \ || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max)) #endif #define _GL_DIVIDE_OVERFLOW(a, b, min, max) \ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \ : (a) < 0 ? (b) <= (a) + (b) - 1 \ : (b) < 0 && (a) + (b) <= (a)) #define _GL_REMAINDER_OVERFLOW(a, b, min, max) \ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \ : (a) < 0 ? (a) % (b) != ((max) - (b) + 1) % (b) \ : (b) < 0 && ! _GL_UNSIGNED_NEG_MULTIPLE (a, b, max)) /* Return a nonzero value if A is a mathematical multiple of B, where A is unsigned, B is negative, and MAX is the maximum value of A's type. A's type must be the same as (A % B)'s type. Normally (A % -B == 0) suffices, but things get tricky if -B would overflow. */ #define _GL_UNSIGNED_NEG_MULTIPLE(a, b, max) \ (((b) < -_GL_SIGNED_INT_MAXIMUM (b) \ ? (_GL_SIGNED_INT_MAXIMUM (b) == (max) \ ? (a) \ : (a) % (_GL_INT_CONVERT (a, _GL_SIGNED_INT_MAXIMUM (b)) + 1)) \ : (a) % - (b)) \ == 0) /* Check for integer overflow, and report low order bits of answer. The INT__OVERFLOW macros return 1 if the corresponding C operators might not yield numerically correct answers due to arithmetic overflow. The INT__WRAPV macros compute the low-order bits of the sum, difference, and product of two C integers, and return 1 if these low-order bits are not numerically correct. These macros work correctly on all known practical hosts, and do not rely on undefined behavior due to signed arithmetic overflow. Example usage, assuming A and B are long int: if (INT_MULTIPLY_OVERFLOW (a, b)) printf ("result would overflow\n"); else printf ("result is %ld (no overflow)\n", a * b); Example usage with WRAPV flavor: long int result; bool overflow = INT_MULTIPLY_WRAPV (a, b, &result); printf ("result is %ld (%s)\n", result, overflow ? "after overflow" : "no overflow"); Restrictions on these macros: These macros do not check for all possible numerical problems or undefined or unspecified behavior: they do not check for division by zero, for bad shift counts, or for shifting negative numbers. These macros may evaluate their arguments zero or multiple times, so the arguments should not have side effects. The WRAPV macros are not constant expressions. They support only +, binary -, and *. Because the WRAPV macros convert the result, they report overflow in different circumstances than the OVERFLOW macros do. For example, in the typical case with 16-bit 'short' and 32-bit 'int', if A, B and *R are all of type 'short' then INT_ADD_OVERFLOW (A, B) returns false because the addition cannot overflow after A and B are converted to 'int', whereas INT_ADD_WRAPV (A, B, R) returns true or false depending on whether the sum fits into 'short'. These macros are tuned for their last input argument being a constant. A, B, and *R should be integers; they need not be the same type, and they need not be all signed or all unsigned. However, none of the integer types should be bit-precise, and *R's type should not be char, bool, or an enumeration type. Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B, A % B, and A << B would overflow, respectively. */ #define INT_ADD_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) #define INT_SUBTRACT_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) #define INT_NEGATE_OVERFLOW(a) _GL_INT_NEGATE_OVERFLOW (a) #define INT_MULTIPLY_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW) #define INT_DIVIDE_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_DIVIDE_OVERFLOW) #define INT_REMAINDER_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_REMAINDER_OVERFLOW) #define INT_LEFT_SHIFT_OVERFLOW(a, b) \ INT_LEFT_SHIFT_RANGE_OVERFLOW (a, b, \ _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) /* Return 1 if the expression A B would overflow, where OP_RESULT_OVERFLOW (A, B, MIN, MAX) does the actual test, assuming MIN and MAX are the minimum and maximum for the result type. Arguments should be free of side effects. */ #define _GL_BINARY_OP_OVERFLOW(a, b, op_result_overflow) \ op_result_overflow (a, b, \ _GL_INT_MINIMUM (_GL_INT_CONVERT (a, b)), \ _GL_INT_MAXIMUM (_GL_INT_CONVERT (a, b))) /* Store the low-order bits of A + B, A - B, A * B, respectively, into *R. Return 1 if the result overflows. See above for restrictions. */ #define INT_ADD_WRAPV(a, b, r) _GL_INT_ADD_WRAPV (a, b, r) #define INT_SUBTRACT_WRAPV(a, b, r) _GL_INT_SUBTRACT_WRAPV (a, b, r) #define INT_MULTIPLY_WRAPV(a, b, r) _GL_INT_MULTIPLY_WRAPV (a, b, r) /* The following macros compute A + B, A - B, and A * B, respectively. If no overflow occurs, they set *R to the result and return 1; otherwise, they return 0 and may modify *R. Example usage: long int result; if (INT_ADD_OK (a, b, &result)) printf ("result is %ld\n", result); else printf ("overflow\n"); A, B, and *R should be integers; they need not be the same type, and they need not be all signed or all unsigned. However, none of the integer types should be bit-precise, and *R's type should not be char, bool, or an enumeration type. These macros work correctly on all known practical hosts, and do not rely on undefined behavior due to signed arithmetic overflow. These macros are not constant expressions. These macros may evaluate their arguments zero or multiple times, so the arguments should not have side effects. These macros are tuned for B being a constant. */ #define INT_ADD_OK(a, b, r) (! INT_ADD_WRAPV (a, b, r)) #define INT_SUBTRACT_OK(a, b, r) (! INT_SUBTRACT_WRAPV (a, b, r)) #define INT_MULTIPLY_OK(a, b, r) (! INT_MULTIPLY_WRAPV (a, b, r)) #endif /* _GL_INTPROPS_H */ recode-3.7.15/lib/isnanl.c0000644000175000017500000000154714371444255010747 /* Test for NaN that does not need libm. Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2007. */ #define USE_LONG_DOUBLE #include "isnan.c" recode-3.7.15/lib/filename.h0000644000175000017500000001110614371444255011240 /* Basic filename support macros. Copyright (C) 2001-2023 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ /* From Paul Eggert and Jim Meyering. */ #ifndef _FILENAME_H #define _FILENAME_H #include #ifdef __cplusplus extern "C" { #endif /* Filename support. ISSLASH(C) tests whether C is a directory separator character. HAS_DEVICE(Filename) tests whether Filename contains a device specification. FILE_SYSTEM_PREFIX_LEN(Filename) length of the device specification at the beginning of Filename, index of the part consisting of alternating components and slashes. FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 1 when a non-empty device specification can be followed by an empty or relative part, 0 when a non-empty device specification must be followed by a slash, 0 when device specification don't exist. IS_ABSOLUTE_FILE_NAME(Filename) tests whether Filename is independent of any notion of "current directory". IS_RELATIVE_FILE_NAME(Filename) tests whether Filename may be concatenated to a directory filename. Note: On native Windows, OS/2, DOS, "c:" is neither an absolute nor a relative file name! IS_FILE_NAME_WITH_DIR(Filename) tests whether Filename contains a device or directory specification. */ #if defined _WIN32 || defined __CYGWIN__ \ || defined __EMX__ || defined __MSDOS__ || defined __DJGPP__ /* Native Windows, Cygwin, OS/2, DOS */ # define ISSLASH(C) ((C) == '/' || (C) == '\\') /* Internal macro: Tests whether a character is a drive letter. */ # define _IS_DRIVE_LETTER(C) \ (((C) >= 'A' && (C) <= 'Z') || ((C) >= 'a' && (C) <= 'z')) /* Help the compiler optimizing it. This assumes ASCII. */ # undef _IS_DRIVE_LETTER # define _IS_DRIVE_LETTER(C) \ (((unsigned int) (C) | ('a' - 'A')) - 'a' <= 'z' - 'a') # define HAS_DEVICE(Filename) \ (_IS_DRIVE_LETTER ((Filename)[0]) && (Filename)[1] == ':') # define FILE_SYSTEM_PREFIX_LEN(Filename) (HAS_DEVICE (Filename) ? 2 : 0) # ifdef __CYGWIN__ # define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0 # else /* On native Windows, OS/2, DOS, the system has the notion of a "current directory" on each drive. */ # define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 1 # endif # if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE # define IS_ABSOLUTE_FILE_NAME(Filename) \ ISSLASH ((Filename)[FILE_SYSTEM_PREFIX_LEN (Filename)]) # else # define IS_ABSOLUTE_FILE_NAME(Filename) \ (ISSLASH ((Filename)[0]) || HAS_DEVICE (Filename)) # endif # define IS_RELATIVE_FILE_NAME(Filename) \ (! (ISSLASH ((Filename)[0]) || HAS_DEVICE (Filename))) # define IS_FILE_NAME_WITH_DIR(Filename) \ (strchr ((Filename), '/') != NULL || strchr ((Filename), '\\') != NULL \ || HAS_DEVICE (Filename)) #else /* Unix */ # define ISSLASH(C) ((C) == '/') # define HAS_DEVICE(Filename) ((void) (Filename), 0) # define FILE_SYSTEM_PREFIX_LEN(Filename) ((void) (Filename), 0) # define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0 # define IS_ABSOLUTE_FILE_NAME(Filename) ISSLASH ((Filename)[0]) # define IS_RELATIVE_FILE_NAME(Filename) (! ISSLASH ((Filename)[0])) # define IS_FILE_NAME_WITH_DIR(Filename) (strchr ((Filename), '/') != NULL) #endif /* Deprecated macros. For backward compatibility with old users of the 'filename' module. */ #define IS_ABSOLUTE_PATH IS_ABSOLUTE_FILE_NAME #define IS_PATH_WITH_DIR IS_FILE_NAME_WITH_DIR #ifdef __cplusplus } #endif #endif /* _FILENAME_H */ recode-3.7.15/lib/getopt-cdefs.in.h0000644000175000017500000000404614371444255012456 /* getopt-on-non-glibc compatibility macros. Copyright (C) 1989-2023 Free Software Foundation, Inc. This file is part of gnulib. Unlike most of the getopt implementation, it is NOT shared with the GNU C Library. This file 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. This file 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 . */ #ifndef _GETOPT_CDEFS_H #define _GETOPT_CDEFS_H 1 /* This header should not be used directly; include getopt.h or unistd.h instead. It does not have a protective #error, because the guard macro for getopt.h in gnulib is not fixed. */ /* getopt-core.h and getopt-ext.h are shared with GNU libc, and expect a number of the internal macros supplied to GNU libc's headers by sys/cdefs.h. Provide fallback definitions for all of them. */ #if @HAVE_SYS_CDEFS_H@ # include #endif #ifndef __BEGIN_DECLS # ifdef __cplusplus # define __BEGIN_DECLS extern "C" { # else # define __BEGIN_DECLS /* nothing */ # endif #endif #ifndef __END_DECLS # ifdef __cplusplus # define __END_DECLS } # else # define __END_DECLS /* nothing */ # endif #endif #ifndef __GNUC_PREREQ # if defined __GNUC__ && defined __GNUC_VERSION__ # define __GNUC_PREREQ(maj, min) \ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) # else # define __GNUC_PREREQ(maj, min) 0 # endif #endif #ifndef __THROW # if defined __cplusplus && (__GNUC_PREREQ (2,8) || __clang_major__ >= 4) # define __THROW throw () # else # define __THROW # endif #endif #endif /* _GETOPT_CDEFS_H */ recode-3.7.15/lib/asprintf.c0000644000175000017500000000214314371444255011302 /* Formatted output to strings. Copyright (C) 1999, 2002, 2006-2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #ifdef IN_LIBASPRINTF # include "vasprintf.h" #else # include #endif #include int asprintf (char **resultp, const char *format, ...) { va_list args; int result; va_start (args, format); result = vasprintf (resultp, format, args); va_end (args); return result; } recode-3.7.15/lib/errno.in.h0000644000175000017500000001644714371444255011227 /* A POSIX-like . Copyright (C) 2008-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _@GUARD_PREFIX@_ERRNO_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_ERRNO_H@ #ifndef _@GUARD_PREFIX@_ERRNO_H #define _@GUARD_PREFIX@_ERRNO_H /* On native Windows platforms, many macros are not defined. */ # if defined _WIN32 && ! defined __CYGWIN__ /* These are the same values as defined by MSVC 10, for interoperability. */ # ifndef ENOMSG # define ENOMSG 122 # define GNULIB_defined_ENOMSG 1 # endif # ifndef EIDRM # define EIDRM 111 # define GNULIB_defined_EIDRM 1 # endif # ifndef ENOLINK # define ENOLINK 121 # define GNULIB_defined_ENOLINK 1 # endif # ifndef EPROTO # define EPROTO 134 # define GNULIB_defined_EPROTO 1 # endif # ifndef EBADMSG # define EBADMSG 104 # define GNULIB_defined_EBADMSG 1 # endif # ifndef EOVERFLOW # define EOVERFLOW 132 # define GNULIB_defined_EOVERFLOW 1 # endif # ifndef ENOTSUP # define ENOTSUP 129 # define GNULIB_defined_ENOTSUP 1 # endif # ifndef ENETRESET # define ENETRESET 117 # define GNULIB_defined_ENETRESET 1 # endif # ifndef ECONNABORTED # define ECONNABORTED 106 # define GNULIB_defined_ECONNABORTED 1 # endif # ifndef ECANCELED # define ECANCELED 105 # define GNULIB_defined_ECANCELED 1 # endif # ifndef EOWNERDEAD # define EOWNERDEAD 133 # define GNULIB_defined_EOWNERDEAD 1 # endif # ifndef ENOTRECOVERABLE # define ENOTRECOVERABLE 127 # define GNULIB_defined_ENOTRECOVERABLE 1 # endif # ifndef EINPROGRESS # define EINPROGRESS 112 # define EALREADY 103 # define ENOTSOCK 128 # define EDESTADDRREQ 109 # define EMSGSIZE 115 # define EPROTOTYPE 136 # define ENOPROTOOPT 123 # define EPROTONOSUPPORT 135 # define EOPNOTSUPP 130 # define EAFNOSUPPORT 102 # define EADDRINUSE 100 # define EADDRNOTAVAIL 101 # define ENETDOWN 116 # define ENETUNREACH 118 # define ECONNRESET 108 # define ENOBUFS 119 # define EISCONN 113 # define ENOTCONN 126 # define ETIMEDOUT 138 # define ECONNREFUSED 107 # define ELOOP 114 # define EHOSTUNREACH 110 # define EWOULDBLOCK 140 # define GNULIB_defined_ESOCK 1 # endif # ifndef ETXTBSY # define ETXTBSY 139 # define ENODATA 120 /* not required by POSIX */ # define ENOSR 124 /* not required by POSIX */ # define ENOSTR 125 /* not required by POSIX */ # define ETIME 137 /* not required by POSIX */ # define EOTHER 131 /* not required by POSIX */ # define GNULIB_defined_ESTREAMS 1 # endif /* These are intentionally the same values as the WSA* error numbers, defined in . */ # define ESOCKTNOSUPPORT 10044 /* not required by POSIX */ # define EPFNOSUPPORT 10046 /* not required by POSIX */ # define ESHUTDOWN 10058 /* not required by POSIX */ # define ETOOMANYREFS 10059 /* not required by POSIX */ # define EHOSTDOWN 10064 /* not required by POSIX */ # define EPROCLIM 10067 /* not required by POSIX */ # define EUSERS 10068 /* not required by POSIX */ # define EDQUOT 10069 # define ESTALE 10070 # define EREMOTE 10071 /* not required by POSIX */ # define GNULIB_defined_EWINSOCK 1 # endif /* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros EMULTIHOP, ENOLINK, EOVERFLOW are not defined. */ # if @EMULTIHOP_HIDDEN@ # define EMULTIHOP @EMULTIHOP_VALUE@ # define GNULIB_defined_EMULTIHOP 1 # endif # if @ENOLINK_HIDDEN@ # define ENOLINK @ENOLINK_VALUE@ # define GNULIB_defined_ENOLINK 1 # endif # if @EOVERFLOW_HIDDEN@ # define EOVERFLOW @EOVERFLOW_VALUE@ # define GNULIB_defined_EOVERFLOW 1 # endif /* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK, EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined. Likewise, on NonStop Kernel, EDQUOT is not defined. Define them here. Values >= 2000 seem safe to use: Solaris ESTALE = 151, HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133. Note: When one of these systems defines some of these macros some day, binaries will have to be recompiled so that they recognizes the new errno values from the system. */ # ifndef ENOMSG # define ENOMSG 2000 # define GNULIB_defined_ENOMSG 1 # endif # ifndef EIDRM # define EIDRM 2001 # define GNULIB_defined_EIDRM 1 # endif # ifndef ENOLINK # define ENOLINK 2002 # define GNULIB_defined_ENOLINK 1 # endif # ifndef EPROTO # define EPROTO 2003 # define GNULIB_defined_EPROTO 1 # endif # ifndef EMULTIHOP # define EMULTIHOP 2004 # define GNULIB_defined_EMULTIHOP 1 # endif # ifndef EBADMSG # define EBADMSG 2005 # define GNULIB_defined_EBADMSG 1 # endif # ifndef EOVERFLOW # define EOVERFLOW 2006 # define GNULIB_defined_EOVERFLOW 1 # endif # ifndef ENOTSUP # define ENOTSUP 2007 # define GNULIB_defined_ENOTSUP 1 # endif # ifndef ENETRESET # define ENETRESET 2011 # define GNULIB_defined_ENETRESET 1 # endif # ifndef ECONNABORTED # define ECONNABORTED 2012 # define GNULIB_defined_ECONNABORTED 1 # endif # ifndef ESTALE # define ESTALE 2009 # define GNULIB_defined_ESTALE 1 # endif # ifndef EDQUOT # define EDQUOT 2010 # define GNULIB_defined_EDQUOT 1 # endif # ifndef ECANCELED # define ECANCELED 2008 # define GNULIB_defined_ECANCELED 1 # endif /* On many platforms, the macros EOWNERDEAD and ENOTRECOVERABLE are not defined. */ # ifndef EOWNERDEAD # if defined __sun /* Use the same values as defined for Solaris >= 8, for interoperability. */ # define EOWNERDEAD 58 # define ENOTRECOVERABLE 59 # elif defined _WIN32 && ! defined __CYGWIN__ /* We have a conflict here: pthreads-win32 defines these values differently than MSVC 10. It's hairy to decide which one to use. */ # if defined __MINGW32__ && !defined USE_WINDOWS_THREADS /* Use the same values as defined by pthreads-win32, for interoperability. */ # define EOWNERDEAD 43 # define ENOTRECOVERABLE 44 # else /* Use the same values as defined by MSVC 10, for interoperability. */ # define EOWNERDEAD 133 # define ENOTRECOVERABLE 127 # endif # else # define EOWNERDEAD 2013 # define ENOTRECOVERABLE 2014 # endif # define GNULIB_defined_EOWNERDEAD 1 # define GNULIB_defined_ENOTRECOVERABLE 1 # endif # ifndef EILSEQ # define EILSEQ 2015 # define GNULIB_defined_EILSEQ 1 # endif #endif /* _@GUARD_PREFIX@_ERRNO_H */ #endif /* _@GUARD_PREFIX@_ERRNO_H */ recode-3.7.15/lib/libc-config.h0000644000175000017500000001415014371444255011636 /* System definitions for code taken from the GNU C Library Copyright 2017-2023 Free Software Foundation, Inc. This program 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. 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 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 . */ /* Written by Paul Eggert. */ /* This is intended to be a good-enough substitute for glibc system macros like those defined in , so that Gnulib code shared with glibc can do this as the first #include: #ifndef _LIBC # include #endif When compiled as part of glibc this is a no-op; when compiled as part of Gnulib this includes Gnulib's and defines macros that glibc library code would normally assume. Note: This header file MUST NOT be included by public header files of Gnulib. */ #include /* On glibc this includes and and #defines _FEATURES_H, __WORDSIZE, and __set_errno. On FreeBSD 11 and DragonFlyBSD 5.9 it includes which defines __nonnull. Elsewhere it is harmless. */ #include /* From glibc . */ #ifndef __set_errno # define __set_errno(val) (errno = (val)) #endif /* From glibc . */ #ifndef __GNUC_PREREQ # if defined __GNUC__ && defined __GNUC_MINOR__ # define __GNUC_PREREQ(maj, min) ((maj) < __GNUC__ + ((min) <= __GNUC_MINOR__)) # else # define __GNUC_PREREQ(maj, min) 0 # endif #endif #ifndef __glibc_clang_prereq # if defined __clang_major__ && defined __clang_minor__ # ifdef __apple_build_version__ /* Apple for some reason renumbers __clang_major__ and __clang_minor__. Gnulib code uses only __glibc_clang_prereq (3, 5); map it to 6000000 <= __apple_build_version__. Support for other calls to __glibc_clang_prereq can be added here as needed. */ # define __glibc_clang_prereq(maj, min) \ ((maj) == 3 && (min) == 5 ? 6000000 <= __apple_build_version__ : 0) # else # define __glibc_clang_prereq(maj, min) \ ((maj) < __clang_major__ + ((min) <= __clang_minor__)) # endif # else # define __glibc_clang_prereq(maj, min) 0 # endif #endif #ifndef __attribute_nonnull__ /* either does not exist, or is too old for Gnulib. Prepare to include , which is Gnulib's version of a more-recent glibc . */ /* Define _FEATURES_H so that does not include . */ # ifndef _FEATURES_H # define _FEATURES_H 1 # endif /* Define __GNULIB_CDEFS so that does not attempt to include nonexistent files. */ # define __GNULIB_CDEFS /* Undef the macros unconditionally defined by our copy of glibc , so that they do not clash with any system-defined versions. */ # undef _SYS_CDEFS_H # undef __ASMNAME # undef __ASMNAME2 # undef __BEGIN_DECLS # undef __CONCAT # undef __END_DECLS # undef __HAVE_GENERIC_SELECTION # undef __LDBL_COMPAT # undef __LDBL_REDIR # undef __LDBL_REDIR1 # undef __LDBL_REDIR1_DECL # undef __LDBL_REDIR1_NTH # undef __LDBL_REDIR2_DECL # undef __LDBL_REDIR_DECL # undef __LDBL_REDIR_NTH # undef __LEAF # undef __LEAF_ATTR # undef __NTH # undef __NTHNL # undef __REDIRECT # undef __REDIRECT_LDBL # undef __REDIRECT_NTH # undef __REDIRECT_NTHNL # undef __REDIRECT_NTH_LDBL # undef __STRING # undef __THROW # undef __THROWNL # undef __attr_access # undef __attr_access_none # undef __attr_dealloc # undef __attr_dealloc_free # undef __attribute__ # undef __attribute_alloc_align__ # undef __attribute_alloc_size__ # undef __attribute_artificial__ # undef __attribute_const__ # undef __attribute_deprecated__ # undef __attribute_deprecated_msg__ # undef __attribute_format_arg__ # undef __attribute_format_strfmon__ # undef __attribute_malloc__ # undef __attribute_maybe_unused__ # undef __attribute_noinline__ # undef __attribute_nonstring__ # undef __attribute_pure__ # undef __attribute_returns_twice__ # undef __attribute_used__ # undef __attribute_warn_unused_result__ # undef __errordecl # undef __extension__ # undef __extern_always_inline # undef __extern_inline # undef __flexarr # undef __fortified_attr_access # undef __fortify_function # undef __glibc_c99_flexarr_available # undef __glibc_has_attribute # undef __glibc_has_builtin # undef __glibc_has_extension # undef __glibc_likely # undef __glibc_macro_warning # undef __glibc_macro_warning1 # undef __glibc_unlikely # undef __inline # undef __ptr_t # undef __restrict # undef __restrict_arr # undef __va_arg_pack # undef __va_arg_pack_len # undef __warnattr # undef __wur # ifndef __GNULIB_CDEFS # undef __bos # undef __bos0 # undef __glibc_fortify # undef __glibc_fortify_n # undef __glibc_objsize # undef __glibc_objsize0 # undef __glibc_safe_len_cond # undef __glibc_safe_or_unknown_len # undef __glibc_unsafe_len # undef __glibc_unsigned_or_positive # endif /* Include our copy of glibc . */ # include /* __inline is too pessimistic for non-GCC. */ # undef __inline # ifndef HAVE___INLINE # if 199901 <= __STDC_VERSION__ || defined inline # define __inline inline # else # define __inline # endif # endif #endif /* defined __glibc_likely */ /* A substitute for glibc , good enough for Gnulib. */ #define attribute_hidden #define libc_hidden_proto(name) #define libc_hidden_def(name) #define libc_hidden_weak(name) #define libc_hidden_ver(local, name) #define strong_alias(name, aliasname) #define weak_alias(name, aliasname) /* A substitute for glibc , good enough for Gnulib. */ #define SHLIB_COMPAT(lib, introduced, obsoleted) 0 #define compat_symbol(lib, local, symbol, version) extern int dummy #define versioned_symbol(lib, local, symbol, version) extern int dummy recode-3.7.15/lib/tempname.h0000644000175000017500000000522314371444255011271 /* Create a temporary file or directory. Copyright (C) 2006, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* header written by Eric Blake */ #ifndef GL_TEMPNAME_H # define GL_TEMPNAME_H # include # ifdef __GT_FILE # define GT_FILE __GT_FILE # define GT_DIR __GT_DIR # define GT_NOCREATE __GT_NOCREATE # else # define GT_FILE 0 # define GT_DIR 1 # define GT_NOCREATE 2 # endif #ifdef __cplusplus extern "C" { #endif /* Generate a temporary file name based on TMPL. TMPL must match the rules for mk[s]temp (i.e. end in "XXXXXX", possibly with a suffix). The name constructed does not exist at the time of the call to gen_tempname. TMPL is overwritten with the result. KIND may be one of: GT_NOCREATE: simply verify that the name does not exist at the time of the call. GT_FILE: create a large file using open(O_CREAT|O_EXCL) and return a read-write fd. The file is mode 0600. GT_DIR: create a directory, which will be mode 0700. */ extern int gen_tempname (char *tmpl, int suffixlen, int flags, int kind); /* Similar, except X_SUFFIX_LEN gives the number of Xs. */ extern int gen_tempname_len (char *tmpl, int suffixlen, int flags, int kind, size_t x_suffix_len); /* Similar to gen_tempname, but TRYFUNC is called for each temporary name to try. If TRYFUNC returns a non-negative number, TRY_GEN_TEMPNAME returns with this value. Otherwise, if errno is set to EEXIST, another name is tried, or else TRY_GEN_TEMPNAME returns -1. */ extern int try_tempname (char *tmpl, int suffixlen, void *args, int (*tryfunc) (char *, void *)); /* Similar, except X_SUFFIX_LEN gives the number of Xs. */ extern int try_tempname_len (char *tmpl, int suffixlen, void *args, int (*tryfunc) (char *, void *), size_t x_suffix_len); #ifdef __cplusplus } #endif #endif /* GL_TEMPNAME_H */ recode-3.7.15/lib/math.in.h0000644000175000017500000023262314371444255011027 /* A GNU-like . Copyright (C) 2002-2003, 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* On Android, in C++ mode, when /usr/include/c++/v1/math.h is being included and /usr/include/math.h has not yet been included, skip this file, since it would lead to many syntax errors. */ #if !(defined __ANDROID__ && defined _LIBCPP_MATH_H && !defined INFINITY) #ifndef _@GUARD_PREFIX@_MATH_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined _GL_INCLUDING_MATH_H /* Special invocation convention: - On FreeBSD 12.2 we have a sequence of nested includes -> -> -> -> -> -> -> -> In this situation, the functions are not yet declared, therefore we cannot provide the C++ aliases. */ #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ #else /* Normal invocation convention. */ /* The include_next requires a split double-inclusion guard. */ #define _GL_INCLUDING_MATH_H #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ #undef _GL_INCLUDING_MATH_H #ifndef _@GUARD_PREFIX@_MATH_H #define _@GUARD_PREFIX@_MATH_H /* On OpenVMS, NAN, INFINITY, and HUGEVAL macros are defined in . */ #if defined __VMS && ! defined NAN # include #endif #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_MATH_INLINE # define _GL_MATH_INLINE _GL_INLINE #endif /* The __attribute__ feature is available in gcc versions 2.5 and later. The attribute __const__ was added in gcc 2.95. */ #ifndef _GL_ATTRIBUTE_CONST # if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) || defined __clang__ # define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) # else # define _GL_ATTRIBUTE_CONST /* empty */ # endif #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ #ifdef __cplusplus /* Helper macros to define type-generic function FUNC as overloaded functions, rather than as macros like in C. POSIX declares these with an argument of real-floating (that is, one of float, double, or long double). */ # define _GL_MATH_CXX_REAL_FLOATING_DECL_1(func) \ static inline int \ _gl_cxx_ ## func ## f (float f) \ { \ return func (f); \ } \ static inline int \ _gl_cxx_ ## func ## d (double d) \ { \ return func (d); \ } \ static inline int \ _gl_cxx_ ## func ## l (long double l) \ { \ return func (l); \ } # define _GL_MATH_CXX_REAL_FLOATING_DECL_2(func,rpl_func,rettype) \ _GL_BEGIN_NAMESPACE \ inline rettype \ rpl_func (float f) \ { \ return _gl_cxx_ ## func ## f (f); \ } \ inline rettype \ rpl_func (double d) \ { \ return _gl_cxx_ ## func ## d (d); \ } \ inline rettype \ rpl_func (long double l) \ { \ return _gl_cxx_ ## func ## l (l); \ } \ _GL_END_NAMESPACE #endif /* Helper macros to define a portability warning for the classification macro FUNC called with VALUE. POSIX declares the classification macros with an argument of real-floating (that is, one of float, double, or long double). */ #define _GL_WARN_REAL_FLOATING_DECL(func) \ _GL_MATH_INLINE int \ _GL_WARN_ON_USE_ATTRIBUTE (#func " is unportable - " \ "use gnulib module " #func " for portability") \ rpl_ ## func ## f (float f) \ { \ return func (f); \ } \ _GL_MATH_INLINE int \ _GL_WARN_ON_USE_ATTRIBUTE (#func " is unportable - " \ "use gnulib module " #func " for portability") \ rpl_ ## func ## d (double d) \ { \ return func (d); \ } \ _GL_MATH_INLINE int \ _GL_WARN_ON_USE_ATTRIBUTE (#func " is unportable - " \ "use gnulib module " #func " for portability") \ rpl_ ## func ## l (long double l) \ { \ return func (l); \ } #define _GL_WARN_REAL_FLOATING_IMPL(func, value) \ (sizeof (value) == sizeof (float) ? rpl_ ## func ## f (value) \ : sizeof (value) == sizeof (double) ? rpl_ ## func ## d (value) \ : rpl_ ## func ## l (value)) #if @REPLACE_ITOLD@ /* Pull in a function that fixes the 'int' to 'long double' conversion of glibc 2.7. */ _GL_EXTERN_C void _Qp_itoq (long double *, int); static void (*_gl_math_fix_itold) (long double *, int) = _Qp_itoq; #endif /* POSIX allows platforms that don't support NAN. But all major machines in the past 15 years have supported something close to IEEE NaN, so we define this unconditionally. We also must define it on platforms like Solaris 10, where NAN is present but defined as a function pointer rather than a floating point constant. */ #if !defined NAN || @REPLACE_NAN@ # if !GNULIB_defined_NAN # undef NAN /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler choke on the expression 0.0 / 0.0. */ # if defined __DECC || defined _MSC_VER _GL_MATH_INLINE float _NaN () { static float zero = 0.0f; return zero / zero; } # define NAN (_NaN()) # else # define NAN (0.0f / 0.0f) # endif # define GNULIB_defined_NAN 1 # endif #endif /* Solaris 10 defines HUGE_VAL, but as a function pointer rather than a floating point constant. */ #if @REPLACE_HUGE_VAL@ # undef HUGE_VALF # define HUGE_VALF (1.0f / 0.0f) # undef HUGE_VAL # define HUGE_VAL (1.0 / 0.0) # undef HUGE_VALL # define HUGE_VALL (1.0L / 0.0L) #endif /* HUGE_VALF is a 'float' Infinity. */ #ifndef HUGE_VALF # if defined _MSC_VER /* The Microsoft MSVC 9 compiler chokes on the expression 1.0f / 0.0f. */ # define HUGE_VALF (1e25f * 1e25f) # else # define HUGE_VALF (1.0f / 0.0f) # endif #endif /* HUGE_VAL is a 'double' Infinity. */ #ifndef HUGE_VAL # if defined _MSC_VER /* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0. */ # define HUGE_VAL (1e250 * 1e250) # else # define HUGE_VAL (1.0 / 0.0) # endif #endif /* HUGE_VALL is a 'long double' Infinity. */ #ifndef HUGE_VALL # if defined _MSC_VER /* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L. */ # define HUGE_VALL (1e250L * 1e250L) # else # define HUGE_VALL (1.0L / 0.0L) # endif #endif #if defined FP_ILOGB0 && defined FP_ILOGBNAN /* Ensure FP_ILOGB0 and FP_ILOGBNAN are correct. */ # if defined __HAIKU__ /* Haiku: match what ilogb() does */ # undef FP_ILOGB0 # undef FP_ILOGBNAN # define FP_ILOGB0 (- 2147483647 - 1) /* INT_MIN */ # define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */ # endif #else /* Ensure FP_ILOGB0 and FP_ILOGBNAN are defined. */ # if defined __NetBSD__ || defined __sgi /* NetBSD, IRIX 6.5: match what ilogb() does */ # define FP_ILOGB0 (- 2147483647 - 1) /* INT_MIN */ # define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */ # elif defined _AIX /* AIX 5.1: match what ilogb() does in AIX >= 5.2 */ # define FP_ILOGB0 (- 2147483647 - 1) /* INT_MIN */ # define FP_ILOGBNAN 2147483647 /* INT_MAX */ # elif defined __sun /* Solaris 9: match what ilogb() does */ # define FP_ILOGB0 (- 2147483647) /* - INT_MAX */ # define FP_ILOGBNAN 2147483647 /* INT_MAX */ # else /* Gnulib defined values. */ # define FP_ILOGB0 (- 2147483647) /* - INT_MAX */ # define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */ # endif #endif #if @GNULIB_ACOSF@ # if @REPLACE_ACOSF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef acosf # define acosf rpl_acosf # endif _GL_FUNCDECL_RPL (acosf, float, (float x)); _GL_CXXALIAS_RPL (acosf, float, (float x)); # else # if !@HAVE_ACOSF@ # undef acosf _GL_FUNCDECL_SYS (acosf, float, (float x)); # endif _GL_CXXALIAS_SYS (acosf, float, (float x)); # endif _GL_CXXALIASWARN (acosf); #elif defined GNULIB_POSIXCHECK # undef acosf # if HAVE_RAW_DECL_ACOSF _GL_WARN_ON_USE (acosf, "acosf is unportable - " "use gnulib module acosf for portability"); # endif #endif #if @GNULIB_ACOSL@ # if !@HAVE_ACOSL@ || !@HAVE_DECL_ACOSL@ # undef acosl _GL_FUNCDECL_SYS (acosl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (acosl, long double, (long double x)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (acosl); # endif #elif defined GNULIB_POSIXCHECK # undef acosl # if HAVE_RAW_DECL_ACOSL _GL_WARN_ON_USE (acosl, "acosl is unportable - " "use gnulib module acosl for portability"); # endif #endif #if @GNULIB_ASINF@ # if @REPLACE_ASINF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef asinf # define asinf rpl_asinf # endif _GL_FUNCDECL_RPL (asinf, float, (float x)); _GL_CXXALIAS_RPL (asinf, float, (float x)); # else # if !@HAVE_ASINF@ # undef asinf _GL_FUNCDECL_SYS (asinf, float, (float x)); # endif _GL_CXXALIAS_SYS (asinf, float, (float x)); # endif _GL_CXXALIASWARN (asinf); #elif defined GNULIB_POSIXCHECK # undef asinf # if HAVE_RAW_DECL_ASINF _GL_WARN_ON_USE (asinf, "asinf is unportable - " "use gnulib module asinf for portability"); # endif #endif #if @GNULIB_ASINL@ # if !@HAVE_ASINL@ || !@HAVE_DECL_ASINL@ # undef asinl _GL_FUNCDECL_SYS (asinl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (asinl, long double, (long double x)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (asinl); # endif #elif defined GNULIB_POSIXCHECK # undef asinl # if HAVE_RAW_DECL_ASINL _GL_WARN_ON_USE (asinl, "asinl is unportable - " "use gnulib module asinl for portability"); # endif #endif #if @GNULIB_ATANF@ # if @REPLACE_ATANF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef atanf # define atanf rpl_atanf # endif _GL_FUNCDECL_RPL (atanf, float, (float x)); _GL_CXXALIAS_RPL (atanf, float, (float x)); # else # if !@HAVE_ATANF@ # undef atanf _GL_FUNCDECL_SYS (atanf, float, (float x)); # endif _GL_CXXALIAS_SYS (atanf, float, (float x)); # endif _GL_CXXALIASWARN (atanf); #elif defined GNULIB_POSIXCHECK # undef atanf # if HAVE_RAW_DECL_ATANF _GL_WARN_ON_USE (atanf, "atanf is unportable - " "use gnulib module atanf for portability"); # endif #endif #if @GNULIB_ATANL@ # if !@HAVE_ATANL@ || !@HAVE_DECL_ATANL@ # undef atanl _GL_FUNCDECL_SYS (atanl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (atanl, long double, (long double x)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (atanl); # endif #elif defined GNULIB_POSIXCHECK # undef atanl # if HAVE_RAW_DECL_ATANL _GL_WARN_ON_USE (atanl, "atanl is unportable - " "use gnulib module atanl for portability"); # endif #endif #if @GNULIB_ATAN2F@ # if @REPLACE_ATAN2F@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef atan2f # define atan2f rpl_atan2f # endif _GL_FUNCDECL_RPL (atan2f, float, (float y, float x)); _GL_CXXALIAS_RPL (atan2f, float, (float y, float x)); # else # if !@HAVE_ATAN2F@ # undef atan2f _GL_FUNCDECL_SYS (atan2f, float, (float y, float x)); # endif _GL_CXXALIAS_SYS (atan2f, float, (float y, float x)); # endif _GL_CXXALIASWARN (atan2f); #elif defined GNULIB_POSIXCHECK # undef atan2f # if HAVE_RAW_DECL_ATAN2F _GL_WARN_ON_USE (atan2f, "atan2f is unportable - " "use gnulib module atan2f for portability"); # endif #endif #if @GNULIB_CBRTF@ # if @REPLACE_CBRTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef cbrtf # define cbrtf rpl_cbrtf # endif _GL_FUNCDECL_RPL (cbrtf, float, (float x)); _GL_CXXALIAS_RPL (cbrtf, float, (float x)); # else # if !@HAVE_DECL_CBRTF@ _GL_FUNCDECL_SYS (cbrtf, float, (float x)); # endif _GL_CXXALIAS_SYS (cbrtf, float, (float x)); # endif _GL_CXXALIASWARN (cbrtf); #elif defined GNULIB_POSIXCHECK # undef cbrtf # if HAVE_RAW_DECL_CBRTF _GL_WARN_ON_USE (cbrtf, "cbrtf is unportable - " "use gnulib module cbrtf for portability"); # endif #endif #if @GNULIB_CBRT@ # if !@HAVE_CBRT@ _GL_FUNCDECL_SYS (cbrt, double, (double x)); # endif _GL_CXXALIAS_SYS (cbrt, double, (double x)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (cbrt, double, (double x)); # endif #elif defined GNULIB_POSIXCHECK # undef cbrt # if HAVE_RAW_DECL_CBRT _GL_WARN_ON_USE (cbrt, "cbrt is unportable - " "use gnulib module cbrt for portability"); # endif #endif #if @GNULIB_CBRTL@ # if @REPLACE_CBRTL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef cbrtl # define cbrtl rpl_cbrtl # endif _GL_FUNCDECL_RPL (cbrtl, long double, (long double x)); _GL_CXXALIAS_RPL (cbrtl, long double, (long double x)); # else # if !@HAVE_DECL_CBRTL@ _GL_FUNCDECL_SYS (cbrtl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (cbrtl, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (cbrtl); # endif #elif defined GNULIB_POSIXCHECK # undef cbrtl # if HAVE_RAW_DECL_CBRTL _GL_WARN_ON_USE (cbrtl, "cbrtl is unportable - " "use gnulib module cbrtl for portability"); # endif #endif #if @GNULIB_CEILF@ # if @REPLACE_CEILF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ceilf # define ceilf rpl_ceilf # endif _GL_FUNCDECL_RPL (ceilf, float, (float x)); _GL_CXXALIAS_RPL (ceilf, float, (float x)); # else # if !@HAVE_DECL_CEILF@ # undef ceilf _GL_FUNCDECL_SYS (ceilf, float, (float x)); # endif _GL_CXXALIAS_SYS (ceilf, float, (float x)); # endif _GL_CXXALIASWARN (ceilf); #elif defined GNULIB_POSIXCHECK # undef ceilf # if HAVE_RAW_DECL_CEILF _GL_WARN_ON_USE (ceilf, "ceilf is unportable - " "use gnulib module ceilf for portability"); # endif #endif #if @GNULIB_CEIL@ # if @REPLACE_CEIL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ceil # define ceil rpl_ceil # endif _GL_FUNCDECL_RPL (ceil, double, (double x)); _GL_CXXALIAS_RPL (ceil, double, (double x)); # else _GL_CXXALIAS_SYS (ceil, double, (double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (ceil, double, (double x)); # endif #endif #if @GNULIB_CEILL@ # if @REPLACE_CEILL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ceill # define ceill rpl_ceill # endif _GL_FUNCDECL_RPL (ceill, long double, (long double x)); _GL_CXXALIAS_RPL (ceill, long double, (long double x)); # else # if !@HAVE_DECL_CEILL@ # undef ceill _GL_FUNCDECL_SYS (ceill, long double, (long double x)); # endif _GL_CXXALIAS_SYS (ceill, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (ceill); # endif #elif defined GNULIB_POSIXCHECK # undef ceill # if HAVE_RAW_DECL_CEILL _GL_WARN_ON_USE (ceill, "ceill is unportable - " "use gnulib module ceill for portability"); # endif #endif #if @GNULIB_COPYSIGNF@ # if !@HAVE_DECL_COPYSIGNF@ # undef copysignf _GL_FUNCDECL_SYS (copysignf, float, (float x, float y)); # endif _GL_CXXALIAS_SYS (copysignf, float, (float x, float y)); _GL_CXXALIASWARN (copysignf); #elif defined GNULIB_POSIXCHECK # undef copysignf # if HAVE_RAW_DECL_COPYSIGNF _GL_WARN_ON_USE (copysignf, "copysignf is unportable - " "use gnulib module copysignf for portability"); # endif #endif #if @GNULIB_COPYSIGN@ # if !@HAVE_COPYSIGN@ _GL_FUNCDECL_SYS (copysign, double, (double x, double y)); # endif _GL_CXXALIAS_SYS (copysign, double, (double x, double y)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (copysign, double, (double x, double y)); # endif #elif defined GNULIB_POSIXCHECK # undef copysign # if HAVE_RAW_DECL_COPYSIGN _GL_WARN_ON_USE (copysign, "copysign is unportable - " "use gnulib module copysign for portability"); # endif #endif #if @GNULIB_COPYSIGNL@ # if !@HAVE_COPYSIGNL@ _GL_FUNCDECL_SYS (copysignl, long double, (long double x, long double y)); # endif _GL_CXXALIAS_SYS (copysignl, long double, (long double x, long double y)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (copysignl); # endif #elif defined GNULIB_POSIXCHECK # undef copysignl # if HAVE_RAW_DECL_COPYSIGNL _GL_WARN_ON_USE (copysign, "copysignl is unportable - " "use gnulib module copysignl for portability"); # endif #endif #if @GNULIB_COSF@ # if @REPLACE_COSF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef cosf # define cosf rpl_cosf # endif _GL_FUNCDECL_RPL (cosf, float, (float x)); _GL_CXXALIAS_RPL (cosf, float, (float x)); # else # if !@HAVE_COSF@ # undef cosf _GL_FUNCDECL_SYS (cosf, float, (float x)); # endif _GL_CXXALIAS_SYS (cosf, float, (float x)); # endif _GL_CXXALIASWARN (cosf); #elif defined GNULIB_POSIXCHECK # undef cosf # if HAVE_RAW_DECL_COSF _GL_WARN_ON_USE (cosf, "cosf is unportable - " "use gnulib module cosf for portability"); # endif #endif #if @GNULIB_COSL@ # if !@HAVE_COSL@ || !@HAVE_DECL_COSL@ # undef cosl _GL_FUNCDECL_SYS (cosl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (cosl, long double, (long double x)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (cosl); # endif #elif defined GNULIB_POSIXCHECK # undef cosl # if HAVE_RAW_DECL_COSL _GL_WARN_ON_USE (cosl, "cosl is unportable - " "use gnulib module cosl for portability"); # endif #endif #if @GNULIB_COSHF@ # if @REPLACE_COSHF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef coshf # define coshf rpl_coshf # endif _GL_FUNCDECL_RPL (coshf, float, (float x)); _GL_CXXALIAS_RPL (coshf, float, (float x)); # else # if !@HAVE_COSHF@ # undef coshf _GL_FUNCDECL_SYS (coshf, float, (float x)); # endif _GL_CXXALIAS_SYS (coshf, float, (float x)); # endif _GL_CXXALIASWARN (coshf); #elif defined GNULIB_POSIXCHECK # undef coshf # if HAVE_RAW_DECL_COSHF _GL_WARN_ON_USE (coshf, "coshf is unportable - " "use gnulib module coshf for portability"); # endif #endif #if @GNULIB_EXPF@ # if @REPLACE_EXPF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef expf # define expf rpl_expf # endif _GL_FUNCDECL_RPL (expf, float, (float x)); _GL_CXXALIAS_RPL (expf, float, (float x)); # else # if !@HAVE_EXPF@ # undef expf _GL_FUNCDECL_SYS (expf, float, (float x)); # endif _GL_CXXALIAS_SYS (expf, float, (float x)); # endif _GL_CXXALIASWARN (expf); #elif defined GNULIB_POSIXCHECK # undef expf # if HAVE_RAW_DECL_EXPF _GL_WARN_ON_USE (expf, "expf is unportable - " "use gnulib module expf for portability"); # endif #endif #if @GNULIB_EXPL@ # if @REPLACE_EXPL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef expl # define expl rpl_expl # endif _GL_FUNCDECL_RPL (expl, long double, (long double x)); _GL_CXXALIAS_RPL (expl, long double, (long double x)); # else # if !@HAVE_EXPL@ || !@HAVE_DECL_EXPL@ # undef expl _GL_FUNCDECL_SYS (expl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (expl, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (expl); # endif #elif defined GNULIB_POSIXCHECK # undef expl # if HAVE_RAW_DECL_EXPL _GL_WARN_ON_USE (expl, "expl is unportable - " "use gnulib module expl for portability"); # endif #endif #if @GNULIB_EXP2F@ # if !@HAVE_DECL_EXP2F@ _GL_FUNCDECL_SYS (exp2f, float, (float x)); # endif _GL_CXXALIAS_SYS (exp2f, float, (float x)); _GL_CXXALIASWARN (exp2f); #elif defined GNULIB_POSIXCHECK # undef exp2f # if HAVE_RAW_DECL_EXP2F _GL_WARN_ON_USE (exp2f, "exp2f is unportable - " "use gnulib module exp2f for portability"); # endif #endif #if @GNULIB_EXP2@ # if @REPLACE_EXP2@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef exp2 # define exp2 rpl_exp2 # endif _GL_FUNCDECL_RPL (exp2, double, (double x)); _GL_CXXALIAS_RPL (exp2, double, (double x)); # else # if !@HAVE_DECL_EXP2@ _GL_FUNCDECL_SYS (exp2, double, (double x)); # endif _GL_CXXALIAS_SYS (exp2, double, (double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (exp2, double, (double x)); # endif #elif defined GNULIB_POSIXCHECK # undef exp2 # if HAVE_RAW_DECL_EXP2 _GL_WARN_ON_USE (exp2, "exp2 is unportable - " "use gnulib module exp2 for portability"); # endif #endif #if @GNULIB_EXP2L@ # if @REPLACE_EXP2L@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef exp2l # define exp2l rpl_exp2l # endif _GL_FUNCDECL_RPL (exp2l, long double, (long double x)); _GL_CXXALIAS_RPL (exp2l, long double, (long double x)); # else # if !@HAVE_DECL_EXP2L@ # undef exp2l _GL_FUNCDECL_SYS (exp2l, long double, (long double x)); # endif _GL_CXXALIAS_SYS (exp2l, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (exp2l); # endif #elif defined GNULIB_POSIXCHECK # undef exp2l # if HAVE_RAW_DECL_EXP2L _GL_WARN_ON_USE (exp2l, "exp2l is unportable - " "use gnulib module exp2l for portability"); # endif #endif #if @GNULIB_EXPM1F@ # if @REPLACE_EXPM1F@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef expm1f # define expm1f rpl_expm1f # endif _GL_FUNCDECL_RPL (expm1f, float, (float x)); _GL_CXXALIAS_RPL (expm1f, float, (float x)); # else # if !@HAVE_EXPM1F@ _GL_FUNCDECL_SYS (expm1f, float, (float x)); # endif _GL_CXXALIAS_SYS (expm1f, float, (float x)); # endif _GL_CXXALIASWARN (expm1f); #elif defined GNULIB_POSIXCHECK # undef expm1f # if HAVE_RAW_DECL_EXPM1F _GL_WARN_ON_USE (expm1f, "expm1f is unportable - " "use gnulib module expm1f for portability"); # endif #endif #if @GNULIB_EXPM1@ # if @REPLACE_EXPM1@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef expm1 # define expm1 rpl_expm1 # endif _GL_FUNCDECL_RPL (expm1, double, (double x)); _GL_CXXALIAS_RPL (expm1, double, (double x)); # else # if !@HAVE_EXPM1@ _GL_FUNCDECL_SYS (expm1, double, (double x)); # endif _GL_CXXALIAS_SYS (expm1, double, (double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (expm1, double, (double x)); # endif #elif defined GNULIB_POSIXCHECK # undef expm1 # if HAVE_RAW_DECL_EXPM1 _GL_WARN_ON_USE (expm1, "expm1 is unportable - " "use gnulib module expm1 for portability"); # endif #endif #if @GNULIB_EXPM1L@ # if @REPLACE_EXPM1L@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef expm1l # define expm1l rpl_expm1l # endif _GL_FUNCDECL_RPL (expm1l, long double, (long double x)); _GL_CXXALIAS_RPL (expm1l, long double, (long double x)); # else # if !@HAVE_DECL_EXPM1L@ # undef expm1l # if !(defined __cplusplus && defined _AIX) _GL_FUNCDECL_SYS (expm1l, long double, (long double x)); # endif # endif _GL_CXXALIAS_SYS (expm1l, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (expm1l); # endif #elif defined GNULIB_POSIXCHECK # undef expm1l # if HAVE_RAW_DECL_EXPM1L _GL_WARN_ON_USE (expm1l, "expm1l is unportable - " "use gnulib module expm1l for portability"); # endif #endif #if @GNULIB_FABSF@ # if !@HAVE_FABSF@ # undef fabsf _GL_FUNCDECL_SYS (fabsf, float, (float x)); # endif _GL_CXXALIAS_SYS (fabsf, float, (float x)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fabsf); # endif #elif defined GNULIB_POSIXCHECK # undef fabsf # if HAVE_RAW_DECL_FABSF _GL_WARN_ON_USE (fabsf, "fabsf is unportable - " "use gnulib module fabsf for portability"); # endif #endif #if @GNULIB_FABSL@ # if @REPLACE_FABSL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fabsl # define fabsl rpl_fabsl # endif _GL_FUNCDECL_RPL (fabsl, long double, (long double x)); _GL_CXXALIAS_RPL (fabsl, long double, (long double x)); # else # if !@HAVE_FABSL@ # undef fabsl _GL_FUNCDECL_SYS (fabsl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (fabsl, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fabsl); # endif #elif defined GNULIB_POSIXCHECK # undef fabsl # if HAVE_RAW_DECL_FABSL _GL_WARN_ON_USE (fabsl, "fabsl is unportable - " "use gnulib module fabsl for portability"); # endif #endif #if @GNULIB_FLOORF@ # if @REPLACE_FLOORF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef floorf # define floorf rpl_floorf # endif _GL_FUNCDECL_RPL (floorf, float, (float x)); _GL_CXXALIAS_RPL (floorf, float, (float x)); # else # if !@HAVE_DECL_FLOORF@ # undef floorf _GL_FUNCDECL_SYS (floorf, float, (float x)); # endif _GL_CXXALIAS_SYS (floorf, float, (float x)); # endif _GL_CXXALIASWARN (floorf); #elif defined GNULIB_POSIXCHECK # undef floorf # if HAVE_RAW_DECL_FLOORF _GL_WARN_ON_USE (floorf, "floorf is unportable - " "use gnulib module floorf for portability"); # endif #endif #if @GNULIB_FLOOR@ # if @REPLACE_FLOOR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef floor # define floor rpl_floor # endif _GL_FUNCDECL_RPL (floor, double, (double x)); _GL_CXXALIAS_RPL (floor, double, (double x)); # else _GL_CXXALIAS_SYS (floor, double, (double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (floor, double, (double x)); # endif #endif #if @GNULIB_FLOORL@ # if @REPLACE_FLOORL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef floorl # define floorl rpl_floorl # endif _GL_FUNCDECL_RPL (floorl, long double, (long double x)); _GL_CXXALIAS_RPL (floorl, long double, (long double x)); # else # if !@HAVE_DECL_FLOORL@ # undef floorl _GL_FUNCDECL_SYS (floorl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (floorl, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (floorl); # endif #elif defined GNULIB_POSIXCHECK # undef floorl # if HAVE_RAW_DECL_FLOORL _GL_WARN_ON_USE (floorl, "floorl is unportable - " "use gnulib module floorl for portability"); # endif #endif #if @GNULIB_FMAF@ # if @REPLACE_FMAF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fmaf # define fmaf rpl_fmaf # endif _GL_FUNCDECL_RPL (fmaf, float, (float x, float y, float z)); _GL_CXXALIAS_RPL (fmaf, float, (float x, float y, float z)); # else # if !@HAVE_FMAF@ # undef fmaf _GL_FUNCDECL_SYS (fmaf, float, (float x, float y, float z)); # endif _GL_CXXALIAS_SYS (fmaf, float, (float x, float y, float z)); # endif _GL_CXXALIASWARN (fmaf); #elif defined GNULIB_POSIXCHECK # undef fmaf # if HAVE_RAW_DECL_FMAF _GL_WARN_ON_USE (fmaf, "fmaf is unportable - " "use gnulib module fmaf for portability"); # endif #endif #if @GNULIB_FMA@ # if @REPLACE_FMA@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fma # define fma rpl_fma # endif _GL_FUNCDECL_RPL (fma, double, (double x, double y, double z)); _GL_CXXALIAS_RPL (fma, double, (double x, double y, double z)); # else # if !@HAVE_FMA@ # undef fma _GL_FUNCDECL_SYS (fma, double, (double x, double y, double z)); # endif _GL_CXXALIAS_SYS (fma, double, (double x, double y, double z)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (fma, double, (double x, double y, double z)); # endif #elif defined GNULIB_POSIXCHECK # undef fma # if HAVE_RAW_DECL_FMA _GL_WARN_ON_USE (fma, "fma is unportable - " "use gnulib module fma for portability"); # endif #endif #if @GNULIB_FMAL@ # if @REPLACE_FMAL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fmal # define fmal rpl_fmal # endif _GL_FUNCDECL_RPL (fmal, long double, (long double x, long double y, long double z)); _GL_CXXALIAS_RPL (fmal, long double, (long double x, long double y, long double z)); # else # if !@HAVE_FMAL@ # undef fmal # if !(defined __cplusplus && defined _AIX) _GL_FUNCDECL_SYS (fmal, long double, (long double x, long double y, long double z)); # endif # endif _GL_CXXALIAS_SYS (fmal, long double, (long double x, long double y, long double z)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fmal); # endif #elif defined GNULIB_POSIXCHECK # undef fmal # if HAVE_RAW_DECL_FMAL _GL_WARN_ON_USE (fmal, "fmal is unportable - " "use gnulib module fmal for portability"); # endif #endif #if @GNULIB_FMODF@ # if @REPLACE_FMODF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fmodf # define fmodf rpl_fmodf # endif _GL_FUNCDECL_RPL (fmodf, float, (float x, float y)); _GL_CXXALIAS_RPL (fmodf, float, (float x, float y)); # else # if !@HAVE_FMODF@ # undef fmodf _GL_FUNCDECL_SYS (fmodf, float, (float x, float y)); # endif _GL_CXXALIAS_SYS (fmodf, float, (float x, float y)); # endif _GL_CXXALIASWARN (fmodf); #elif defined GNULIB_POSIXCHECK # undef fmodf # if HAVE_RAW_DECL_FMODF _GL_WARN_ON_USE (fmodf, "fmodf is unportable - " "use gnulib module fmodf for portability"); # endif #endif #if @GNULIB_FMOD@ # if @REPLACE_FMOD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fmod # define fmod rpl_fmod # endif _GL_FUNCDECL_RPL (fmod, double, (double x, double y)); _GL_CXXALIAS_RPL (fmod, double, (double x, double y)); # else _GL_CXXALIAS_SYS (fmod, double, (double x, double y)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (fmod, double, (double x, double y)); # endif #elif defined GNULIB_POSIXCHECK # undef fmod # if HAVE_RAW_DECL_FMOD _GL_WARN_ON_USE (fmod, "fmod has portability problems - " "use gnulib module fmod for portability"); # endif #endif #if @GNULIB_FMODL@ # if @REPLACE_FMODL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fmodl # define fmodl rpl_fmodl # endif _GL_FUNCDECL_RPL (fmodl, long double, (long double x, long double y)); _GL_CXXALIAS_RPL (fmodl, long double, (long double x, long double y)); # else # if !@HAVE_FMODL@ # undef fmodl _GL_FUNCDECL_SYS (fmodl, long double, (long double x, long double y)); # endif _GL_CXXALIAS_SYS (fmodl, long double, (long double x, long double y)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fmodl); # endif #elif defined GNULIB_POSIXCHECK # undef fmodl # if HAVE_RAW_DECL_FMODL _GL_WARN_ON_USE (fmodl, "fmodl is unportable - " "use gnulib module fmodl for portability"); # endif #endif /* Write x as x = mantissa * 2^exp where If x finite and nonzero: 0.5 <= |mantissa| < 1.0. If x is zero: mantissa = x, exp = 0. If x is infinite or NaN: mantissa = x, exp unspecified. Store exp in *EXPPTR and return mantissa. */ #if @GNULIB_FREXPF@ # if @REPLACE_FREXPF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef frexpf # define frexpf rpl_frexpf # endif _GL_FUNCDECL_RPL (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (frexpf, float, (float x, int *expptr)); # else # if !@HAVE_FREXPF@ # undef frexpf _GL_FUNCDECL_SYS (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (frexpf, float, (float x, int *expptr)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (frexpf); # endif #elif defined GNULIB_POSIXCHECK # undef frexpf # if HAVE_RAW_DECL_FREXPF _GL_WARN_ON_USE (frexpf, "frexpf is unportable - " "use gnulib module frexpf for portability"); # endif #endif /* Write x as x = mantissa * 2^exp where If x finite and nonzero: 0.5 <= |mantissa| < 1.0. If x is zero: mantissa = x, exp = 0. If x is infinite or NaN: mantissa = x, exp unspecified. Store exp in *EXPPTR and return mantissa. */ #if @GNULIB_FREXP@ # if @REPLACE_FREXP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef frexp # define frexp rpl_frexp # endif _GL_FUNCDECL_RPL (frexp, double, (double x, int *expptr) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (frexp, double, (double x, int *expptr)); # else _GL_CXXALIAS_SYS (frexp, double, (double x, int *expptr)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (frexp, double, (double x, int *expptr)); # endif #elif defined GNULIB_POSIXCHECK # undef frexp /* Assume frexp is always declared. */ _GL_WARN_ON_USE (frexp, "frexp is unportable - " "use gnulib module frexp for portability"); #endif /* Write x as x = mantissa * 2^exp where If x finite and nonzero: 0.5 <= |mantissa| < 1.0. If x is zero: mantissa = x, exp = 0. If x is infinite or NaN: mantissa = x, exp unspecified. Store exp in *EXPPTR and return mantissa. */ #if @GNULIB_FREXPL@ && @REPLACE_FREXPL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef frexpl # define frexpl rpl_frexpl # endif _GL_FUNCDECL_RPL (frexpl, long double, (long double x, int *expptr) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (frexpl, long double, (long double x, int *expptr)); #else # if !@HAVE_DECL_FREXPL@ _GL_FUNCDECL_SYS (frexpl, long double, (long double x, int *expptr) _GL_ARG_NONNULL ((2))); # endif # if @GNULIB_FREXPL@ _GL_CXXALIAS_SYS (frexpl, long double, (long double x, int *expptr)); # endif #endif #if @GNULIB_FREXPL@ && !(@REPLACE_FREXPL@ && !@HAVE_DECL_FREXPL@) # if __GLIBC__ >= 2 _GL_CXXALIASWARN (frexpl); # endif #endif #if !@GNULIB_FREXPL@ && defined GNULIB_POSIXCHECK # undef frexpl # if HAVE_RAW_DECL_FREXPL _GL_WARN_ON_USE (frexpl, "frexpl is unportable - " "use gnulib module frexpl for portability"); # endif #endif /* Return sqrt(x^2+y^2). */ #if @GNULIB_HYPOTF@ # if @REPLACE_HYPOTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef hypotf # define hypotf rpl_hypotf # endif _GL_FUNCDECL_RPL (hypotf, float, (float x, float y)); _GL_CXXALIAS_RPL (hypotf, float, (float x, float y)); # else # if !@HAVE_HYPOTF@ _GL_FUNCDECL_SYS (hypotf, float, (float x, float y)); # endif _GL_CXXALIAS_SYS (hypotf, float, (float x, float y)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (hypotf); # endif #elif defined GNULIB_POSIXCHECK # undef hypotf # if HAVE_RAW_DECL_HYPOTF _GL_WARN_ON_USE (hypotf, "hypotf is unportable - " "use gnulib module hypotf for portability"); # endif #endif /* Return sqrt(x^2+y^2). */ #if @GNULIB_HYPOT@ # if @REPLACE_HYPOT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef hypot # define hypot rpl_hypot # endif _GL_FUNCDECL_RPL (hypot, double, (double x, double y)); _GL_CXXALIAS_RPL (hypot, double, (double x, double y)); # else _GL_CXXALIAS_SYS (hypot, double, (double x, double y)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (hypot, double, (double x, double y)); # endif #elif defined GNULIB_POSIXCHECK # undef hypot # if HAVE_RAW_DECL_HYPOT _GL_WARN_ON_USE (hypotf, "hypot has portability problems - " "use gnulib module hypot for portability"); # endif #endif /* Return sqrt(x^2+y^2). */ #if @GNULIB_HYPOTL@ # if @REPLACE_HYPOTL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef hypotl # define hypotl rpl_hypotl # endif _GL_FUNCDECL_RPL (hypotl, long double, (long double x, long double y)); _GL_CXXALIAS_RPL (hypotl, long double, (long double x, long double y)); # else # if !@HAVE_HYPOTL@ _GL_FUNCDECL_SYS (hypotl, long double, (long double x, long double y)); # endif _GL_CXXALIAS_SYS (hypotl, long double, (long double x, long double y)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (hypotl); # endif #elif defined GNULIB_POSIXCHECK # undef hypotl # if HAVE_RAW_DECL_HYPOTL _GL_WARN_ON_USE (hypotl, "hypotl is unportable - " "use gnulib module hypotl for portability"); # endif #endif #if @GNULIB_ILOGBF@ # if @REPLACE_ILOGBF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ilogbf # define ilogbf rpl_ilogbf # endif _GL_FUNCDECL_RPL (ilogbf, int, (float x)); _GL_CXXALIAS_RPL (ilogbf, int, (float x)); # else # if !@HAVE_ILOGBF@ _GL_FUNCDECL_SYS (ilogbf, int, (float x)); # endif _GL_CXXALIAS_SYS (ilogbf, int, (float x)); # endif _GL_CXXALIASWARN (ilogbf); #elif defined GNULIB_POSIXCHECK # undef ilogbf # if HAVE_RAW_DECL_ILOGBF _GL_WARN_ON_USE (ilogbf, "ilogbf is unportable - " "use gnulib module ilogbf for portability"); # endif #endif #if @GNULIB_ILOGB@ # if @REPLACE_ILOGB@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ilogb # define ilogb rpl_ilogb # endif _GL_FUNCDECL_RPL (ilogb, int, (double x)); _GL_CXXALIAS_RPL (ilogb, int, (double x)); # else # if !@HAVE_ILOGB@ _GL_FUNCDECL_SYS (ilogb, int, (double x)); # endif _GL_CXXALIAS_SYS (ilogb, int, (double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (ilogb, int, (double x)); # endif #elif defined GNULIB_POSIXCHECK # undef ilogb # if HAVE_RAW_DECL_ILOGB _GL_WARN_ON_USE (ilogb, "ilogb is unportable - " "use gnulib module ilogb for portability"); # endif #endif #if @GNULIB_ILOGBL@ # if @REPLACE_ILOGBL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ilogbl # define ilogbl rpl_ilogbl # endif _GL_FUNCDECL_RPL (ilogbl, int, (long double x)); _GL_CXXALIAS_RPL (ilogbl, int, (long double x)); # else # if !@HAVE_ILOGBL@ # undef ilogbl _GL_FUNCDECL_SYS (ilogbl, int, (long double x)); # endif _GL_CXXALIAS_SYS (ilogbl, int, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (ilogbl); # endif #elif defined GNULIB_POSIXCHECK # undef ilogbl # if HAVE_RAW_DECL_ILOGBL _GL_WARN_ON_USE (ilogbl, "ilogbl is unportable - " "use gnulib module ilogbl for portability"); # endif #endif #if @GNULIB_MDA_J0@ /* On native Windows, map 'j0' to '_j0', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::j0 always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef j0 # define j0 _j0 # endif _GL_CXXALIAS_MDA (j0, double, (double x)); # else _GL_CXXALIAS_SYS (j0, double, (double x)); # endif _GL_CXXALIASWARN (j0); #endif #if @GNULIB_MDA_J1@ /* On native Windows, map 'j1' to '_j1', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::j1 always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef j1 # define j1 _j1 # endif _GL_CXXALIAS_MDA (j1, double, (double x)); # else _GL_CXXALIAS_SYS (j1, double, (double x)); # endif _GL_CXXALIASWARN (j1); #endif #if @GNULIB_MDA_JN@ /* On native Windows, map 'jn' to '_jn', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::jn always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef jn # define jn _jn # endif _GL_CXXALIAS_MDA (jn, double, (int n, double x)); # else _GL_CXXALIAS_SYS (jn, double, (int n, double x)); # endif _GL_CXXALIASWARN (jn); #endif /* Return x * 2^exp. */ #if @GNULIB_LDEXPF@ # if !@HAVE_LDEXPF@ # undef ldexpf _GL_FUNCDECL_SYS (ldexpf, float, (float x, int exp)); # endif _GL_CXXALIAS_SYS (ldexpf, float, (float x, int exp)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (ldexpf); # endif #elif defined GNULIB_POSIXCHECK # undef ldexpf # if HAVE_RAW_DECL_LDEXPF _GL_WARN_ON_USE (ldexpf, "ldexpf is unportable - " "use gnulib module ldexpf for portability"); # endif #endif /* Return x * 2^exp. */ #if @GNULIB_LDEXPL@ && @REPLACE_LDEXPL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ldexpl # define ldexpl rpl_ldexpl # endif _GL_FUNCDECL_RPL (ldexpl, long double, (long double x, int exp)); _GL_CXXALIAS_RPL (ldexpl, long double, (long double x, int exp)); #else # if !@HAVE_DECL_LDEXPL@ _GL_FUNCDECL_SYS (ldexpl, long double, (long double x, int exp)); # endif # if @GNULIB_LDEXPL@ _GL_CXXALIAS_SYS (ldexpl, long double, (long double x, int exp)); # endif #endif #if @GNULIB_LDEXPL@ # if __GLIBC__ >= 2 _GL_CXXALIASWARN (ldexpl); # endif #endif #if !@GNULIB_LDEXPL@ && defined GNULIB_POSIXCHECK # undef ldexpl # if HAVE_RAW_DECL_LDEXPL _GL_WARN_ON_USE (ldexpl, "ldexpl is unportable - " "use gnulib module ldexpl for portability"); # endif #endif #if @GNULIB_LOGF@ # if @REPLACE_LOGF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef logf # define logf rpl_logf # endif _GL_FUNCDECL_RPL (logf, float, (float x)); _GL_CXXALIAS_RPL (logf, float, (float x)); # else # if !@HAVE_LOGF@ # undef logf _GL_FUNCDECL_SYS (logf, float, (float x)); # endif _GL_CXXALIAS_SYS (logf, float, (float x)); # endif _GL_CXXALIASWARN (logf); #elif defined GNULIB_POSIXCHECK # undef logf # if HAVE_RAW_DECL_LOGF _GL_WARN_ON_USE (logf, "logf is unportable - " "use gnulib module logf for portability"); # endif #endif #if @GNULIB_LOG@ # if @REPLACE_LOG@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef log # define log rpl_log # endif _GL_FUNCDECL_RPL (log, double, (double x)); _GL_CXXALIAS_RPL (log, double, (double x)); # else _GL_CXXALIAS_SYS (log, double, (double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (log, double, (double x)); # endif #elif defined GNULIB_POSIXCHECK # undef log # if HAVE_RAW_DECL_LOG _GL_WARN_ON_USE (log, "log has portability problems - " "use gnulib module log for portability"); # endif #endif #if @GNULIB_LOGL@ # if @REPLACE_LOGL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef logl # define logl rpl_logl # endif _GL_FUNCDECL_RPL (logl, long double, (long double x)); _GL_CXXALIAS_RPL (logl, long double, (long double x)); # else # if !@HAVE_LOGL@ || !@HAVE_DECL_LOGL@ # undef logl _GL_FUNCDECL_SYS (logl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (logl, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (logl); # endif #elif defined GNULIB_POSIXCHECK # undef logl # if HAVE_RAW_DECL_LOGL _GL_WARN_ON_USE (logl, "logl is unportable - " "use gnulib module logl for portability"); # endif #endif #if @GNULIB_LOG10F@ # if @REPLACE_LOG10F@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef log10f # define log10f rpl_log10f # endif _GL_FUNCDECL_RPL (log10f, float, (float x)); _GL_CXXALIAS_RPL (log10f, float, (float x)); # else # if !@HAVE_LOG10F@ # undef log10f _GL_FUNCDECL_SYS (log10f, float, (float x)); # endif _GL_CXXALIAS_SYS (log10f, float, (float x)); # endif _GL_CXXALIASWARN (log10f); #elif defined GNULIB_POSIXCHECK # undef log10f # if HAVE_RAW_DECL_LOG10F _GL_WARN_ON_USE (log10f, "log10f is unportable - " "use gnulib module log10f for portability"); # endif #endif #if @GNULIB_LOG10@ # if @REPLACE_LOG10@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef log10 # define log10 rpl_log10 # endif _GL_FUNCDECL_RPL (log10, double, (double x)); _GL_CXXALIAS_RPL (log10, double, (double x)); # else _GL_CXXALIAS_SYS (log10, double, (double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (log10, double, (double x)); # endif #elif defined GNULIB_POSIXCHECK # undef log10 # if HAVE_RAW_DECL_LOG10 _GL_WARN_ON_USE (log10, "log10 has portability problems - " "use gnulib module log10 for portability"); # endif #endif #if @GNULIB_LOG10L@ # if @REPLACE_LOG10L@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef log10l # define log10l rpl_log10l # endif _GL_FUNCDECL_RPL (log10l, long double, (long double x)); _GL_CXXALIAS_RPL (log10l, long double, (long double x)); # else # if !@HAVE_LOG10L@ || !@HAVE_DECL_LOG10L@ # undef log10l _GL_FUNCDECL_SYS (log10l, long double, (long double x)); # endif _GL_CXXALIAS_SYS (log10l, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (log10l); # endif #elif defined GNULIB_POSIXCHECK # undef log10l # if HAVE_RAW_DECL_LOG10L _GL_WARN_ON_USE (log10l, "log10l is unportable - " "use gnulib module log10l for portability"); # endif #endif #if @GNULIB_LOG1PF@ # if @REPLACE_LOG1PF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef log1pf # define log1pf rpl_log1pf # endif _GL_FUNCDECL_RPL (log1pf, float, (float x)); _GL_CXXALIAS_RPL (log1pf, float, (float x)); # else # if !@HAVE_LOG1PF@ _GL_FUNCDECL_SYS (log1pf, float, (float x)); # endif _GL_CXXALIAS_SYS (log1pf, float, (float x)); # endif _GL_CXXALIASWARN (log1pf); #elif defined GNULIB_POSIXCHECK # undef log1pf # if HAVE_RAW_DECL_LOG1PF _GL_WARN_ON_USE (log1pf, "log1pf is unportable - " "use gnulib module log1pf for portability"); # endif #endif #if @GNULIB_LOG1P@ # if @REPLACE_LOG1P@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef log1p # define log1p rpl_log1p # endif _GL_FUNCDECL_RPL (log1p, double, (double x)); _GL_CXXALIAS_RPL (log1p, double, (double x)); # else # if !@HAVE_LOG1P@ _GL_FUNCDECL_SYS (log1p, double, (double x)); # endif _GL_CXXALIAS_SYS (log1p, double, (double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (log1p, double, (double x)); # endif #elif defined GNULIB_POSIXCHECK # undef log1p # if HAVE_RAW_DECL_LOG1P _GL_WARN_ON_USE (log1p, "log1p has portability problems - " "use gnulib module log1p for portability"); # endif #endif #if @GNULIB_LOG1PL@ # if @REPLACE_LOG1PL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef log1pl # define log1pl rpl_log1pl # endif _GL_FUNCDECL_RPL (log1pl, long double, (long double x)); _GL_CXXALIAS_RPL (log1pl, long double, (long double x)); # else # if !@HAVE_LOG1PL@ _GL_FUNCDECL_SYS (log1pl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (log1pl, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (log1pl); # endif #elif defined GNULIB_POSIXCHECK # undef log1pl # if HAVE_RAW_DECL_LOG1PL _GL_WARN_ON_USE (log1pl, "log1pl has portability problems - " "use gnulib module log1pl for portability"); # endif #endif #if @GNULIB_LOG2F@ # if @REPLACE_LOG2F@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef log2f # define log2f rpl_log2f # endif _GL_FUNCDECL_RPL (log2f, float, (float x)); _GL_CXXALIAS_RPL (log2f, float, (float x)); # else # if !@HAVE_DECL_LOG2F@ # undef log2f _GL_FUNCDECL_SYS (log2f, float, (float x)); # endif _GL_CXXALIAS_SYS (log2f, float, (float x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (log2f); # endif #elif defined GNULIB_POSIXCHECK # undef log2f # if HAVE_RAW_DECL_LOG2F _GL_WARN_ON_USE (log2f, "log2f is unportable - " "use gnulib module log2f for portability"); # endif #endif #if @GNULIB_LOG2@ # if @REPLACE_LOG2@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef log2 # define log2 rpl_log2 # endif _GL_FUNCDECL_RPL (log2, double, (double x)); _GL_CXXALIAS_RPL (log2, double, (double x)); # else # if !@HAVE_DECL_LOG2@ # undef log2 _GL_FUNCDECL_SYS (log2, double, (double x)); # endif _GL_CXXALIAS_SYS (log2, double, (double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (log2, double, (double x)); # endif #elif defined GNULIB_POSIXCHECK # undef log2 # if HAVE_RAW_DECL_LOG2 _GL_WARN_ON_USE (log2, "log2 is unportable - " "use gnulib module log2 for portability"); # endif #endif #if @GNULIB_LOG2L@ # if @REPLACE_LOG2L@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef log2l # define log2l rpl_log2l # endif _GL_FUNCDECL_RPL (log2l, long double, (long double x)); _GL_CXXALIAS_RPL (log2l, long double, (long double x)); # else # if !@HAVE_DECL_LOG2L@ _GL_FUNCDECL_SYS (log2l, long double, (long double x)); # endif _GL_CXXALIAS_SYS (log2l, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (log2l); # endif #elif defined GNULIB_POSIXCHECK # undef log2l # if HAVE_RAW_DECL_LOG2L _GL_WARN_ON_USE (log2l, "log2l is unportable - " "use gnulib module log2l for portability"); # endif #endif #if @GNULIB_LOGBF@ # if @REPLACE_LOGBF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef logbf # define logbf rpl_logbf # endif _GL_FUNCDECL_RPL (logbf, float, (float x)); _GL_CXXALIAS_RPL (logbf, float, (float x)); # else # if !@HAVE_LOGBF@ _GL_FUNCDECL_SYS (logbf, float, (float x)); # endif _GL_CXXALIAS_SYS (logbf, float, (float x)); # endif _GL_CXXALIASWARN (logbf); #elif defined GNULIB_POSIXCHECK # undef logbf # if HAVE_RAW_DECL_LOGBF _GL_WARN_ON_USE (logbf, "logbf is unportable - " "use gnulib module logbf for portability"); # endif #endif #if @GNULIB_LOGB@ # if @REPLACE_LOGB@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef logb # define logb rpl_logb # endif _GL_FUNCDECL_RPL (logb, double, (double x)); _GL_CXXALIAS_RPL (logb, double, (double x)); # else # if !@HAVE_DECL_LOGB@ _GL_FUNCDECL_SYS (logb, double, (double x)); # endif _GL_CXXALIAS_SYS (logb, double, (double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (logb, double, (double x)); # endif #elif defined GNULIB_POSIXCHECK # undef logb # if HAVE_RAW_DECL_LOGB _GL_WARN_ON_USE (logb, "logb is unportable - " "use gnulib module logb for portability"); # endif #endif #if @GNULIB_LOGBL@ # if @REPLACE_LOGBL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef logbl # define logbl rpl_logbl # endif _GL_FUNCDECL_RPL (logbl, long double, (long double x)); _GL_CXXALIAS_RPL (logbl, long double, (long double x)); # else # if !@HAVE_LOGBL@ _GL_FUNCDECL_SYS (logbl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (logbl, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (logbl); # endif #elif defined GNULIB_POSIXCHECK # undef logbl # if HAVE_RAW_DECL_LOGBL _GL_WARN_ON_USE (logbl, "logbl is unportable - " "use gnulib module logbl for portability"); # endif #endif #if @GNULIB_MODFF@ # if @REPLACE_MODFF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef modff # define modff rpl_modff # endif _GL_FUNCDECL_RPL (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (modff, float, (float x, float *iptr)); # else # if !@HAVE_MODFF@ # undef modff _GL_FUNCDECL_SYS (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (modff, float, (float x, float *iptr)); # endif _GL_CXXALIASWARN (modff); #elif defined GNULIB_POSIXCHECK # undef modff # if HAVE_RAW_DECL_MODFF _GL_WARN_ON_USE (modff, "modff is unportable - " "use gnulib module modff for portability"); # endif #endif #if @GNULIB_MODF@ # if @REPLACE_MODF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef modf # define modf rpl_modf # endif _GL_FUNCDECL_RPL (modf, double, (double x, double *iptr) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (modf, double, (double x, double *iptr)); # else _GL_CXXALIAS_SYS (modf, double, (double x, double *iptr)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (modf, double, (double x, double *iptr)); # endif #elif defined GNULIB_POSIXCHECK # undef modf # if HAVE_RAW_DECL_MODF _GL_WARN_ON_USE (modf, "modf has portability problems - " "use gnulib module modf for portability"); # endif #endif #if @GNULIB_MODFL@ # if @REPLACE_MODFL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef modfl # define modfl rpl_modfl # endif _GL_FUNCDECL_RPL (modfl, long double, (long double x, long double *iptr) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (modfl, long double, (long double x, long double *iptr)); # else # if !@HAVE_MODFL@ # undef modfl _GL_FUNCDECL_SYS (modfl, long double, (long double x, long double *iptr) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (modfl, long double, (long double x, long double *iptr)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (modfl); # endif #elif defined GNULIB_POSIXCHECK # undef modfl # if HAVE_RAW_DECL_MODFL _GL_WARN_ON_USE (modfl, "modfl is unportable - " "use gnulib module modfl for portability"); # endif #endif #if @GNULIB_POWF@ # if !@HAVE_POWF@ # undef powf _GL_FUNCDECL_SYS (powf, float, (float x, float y)); # endif _GL_CXXALIAS_SYS (powf, float, (float x, float y)); _GL_CXXALIASWARN (powf); #elif defined GNULIB_POSIXCHECK # undef powf # if HAVE_RAW_DECL_POWF _GL_WARN_ON_USE (powf, "powf is unportable - " "use gnulib module powf for portability"); # endif #endif #if @GNULIB_REMAINDERF@ # if @REPLACE_REMAINDERF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef remainderf # define remainderf rpl_remainderf # endif _GL_FUNCDECL_RPL (remainderf, float, (float x, float y)); _GL_CXXALIAS_RPL (remainderf, float, (float x, float y)); # else # if !@HAVE_REMAINDERF@ _GL_FUNCDECL_SYS (remainderf, float, (float x, float y)); # endif _GL_CXXALIAS_SYS (remainderf, float, (float x, float y)); # endif _GL_CXXALIASWARN (remainderf); #elif defined GNULIB_POSIXCHECK # undef remainderf # if HAVE_RAW_DECL_REMAINDERF _GL_WARN_ON_USE (remainderf, "remainderf is unportable - " "use gnulib module remainderf for portability"); # endif #endif #if @GNULIB_REMAINDER@ # if @REPLACE_REMAINDER@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef remainder # define remainder rpl_remainder # endif _GL_FUNCDECL_RPL (remainder, double, (double x, double y)); _GL_CXXALIAS_RPL (remainder, double, (double x, double y)); # else # if !@HAVE_REMAINDER@ || !@HAVE_DECL_REMAINDER@ _GL_FUNCDECL_SYS (remainder, double, (double x, double y)); # endif _GL_CXXALIAS_SYS (remainder, double, (double x, double y)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (remainder, double, (double x, double y)); # endif #elif defined GNULIB_POSIXCHECK # undef remainder # if HAVE_RAW_DECL_REMAINDER _GL_WARN_ON_USE (remainder, "remainder is unportable - " "use gnulib module remainder for portability"); # endif #endif #if @GNULIB_REMAINDERL@ # if @REPLACE_REMAINDERL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef remainderl # define remainderl rpl_remainderl # endif _GL_FUNCDECL_RPL (remainderl, long double, (long double x, long double y)); _GL_CXXALIAS_RPL (remainderl, long double, (long double x, long double y)); # else # if !@HAVE_DECL_REMAINDERL@ # undef remainderl # if !(defined __cplusplus && defined _AIX) _GL_FUNCDECL_SYS (remainderl, long double, (long double x, long double y)); # endif # endif _GL_CXXALIAS_SYS (remainderl, long double, (long double x, long double y)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (remainderl); # endif #elif defined GNULIB_POSIXCHECK # undef remainderl # if HAVE_RAW_DECL_REMAINDERL _GL_WARN_ON_USE (remainderl, "remainderl is unportable - " "use gnulib module remainderl for portability"); # endif #endif #if @GNULIB_RINTF@ # if !@HAVE_DECL_RINTF@ _GL_FUNCDECL_SYS (rintf, float, (float x)); # endif _GL_CXXALIAS_SYS (rintf, float, (float x)); _GL_CXXALIASWARN (rintf); #elif defined GNULIB_POSIXCHECK # undef rintf # if HAVE_RAW_DECL_RINTF _GL_WARN_ON_USE (rintf, "rintf is unportable - " "use gnulib module rintf for portability"); # endif #endif #if @GNULIB_RINT@ # if !@HAVE_RINT@ _GL_FUNCDECL_SYS (rint, double, (double x)); # endif _GL_CXXALIAS_SYS (rint, double, (double x)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (rint, double, (double x)); # endif #elif defined GNULIB_POSIXCHECK # undef rint # if HAVE_RAW_DECL_RINT _GL_WARN_ON_USE (rint, "rint is unportable - " "use gnulib module rint for portability"); # endif #endif #if @GNULIB_RINTL@ # if @REPLACE_RINTL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef rintl # define rintl rpl_rintl # endif _GL_FUNCDECL_RPL (rintl, long double, (long double x)); _GL_CXXALIAS_RPL (rintl, long double, (long double x)); # else # if !@HAVE_RINTL@ _GL_FUNCDECL_SYS (rintl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (rintl, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (rintl); # endif #elif defined GNULIB_POSIXCHECK # undef rintl # if HAVE_RAW_DECL_RINTL _GL_WARN_ON_USE (rintl, "rintl is unportable - " "use gnulib module rintl for portability"); # endif #endif #if @GNULIB_ROUNDF@ # if @REPLACE_ROUNDF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef roundf # define roundf rpl_roundf # endif _GL_FUNCDECL_RPL (roundf, float, (float x)); _GL_CXXALIAS_RPL (roundf, float, (float x)); # else # if !@HAVE_DECL_ROUNDF@ _GL_FUNCDECL_SYS (roundf, float, (float x)); # endif _GL_CXXALIAS_SYS (roundf, float, (float x)); # endif _GL_CXXALIASWARN (roundf); #elif defined GNULIB_POSIXCHECK # undef roundf # if HAVE_RAW_DECL_ROUNDF _GL_WARN_ON_USE (roundf, "roundf is unportable - " "use gnulib module roundf for portability"); # endif #endif #if @GNULIB_ROUND@ # if @REPLACE_ROUND@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef round # define round rpl_round # endif _GL_FUNCDECL_RPL (round, double, (double x)); _GL_CXXALIAS_RPL (round, double, (double x)); # else # if !@HAVE_DECL_ROUND@ _GL_FUNCDECL_SYS (round, double, (double x)); # endif _GL_CXXALIAS_SYS (round, double, (double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (round, double, (double x)); # endif #elif defined GNULIB_POSIXCHECK # undef round # if HAVE_RAW_DECL_ROUND _GL_WARN_ON_USE (round, "round is unportable - " "use gnulib module round for portability"); # endif #endif #if @GNULIB_ROUNDL@ # if @REPLACE_ROUNDL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef roundl # define roundl rpl_roundl # endif _GL_FUNCDECL_RPL (roundl, long double, (long double x)); _GL_CXXALIAS_RPL (roundl, long double, (long double x)); # else # if !@HAVE_DECL_ROUNDL@ # undef roundl # if !(defined __cplusplus && defined _AIX) _GL_FUNCDECL_SYS (roundl, long double, (long double x)); # endif # endif _GL_CXXALIAS_SYS (roundl, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (roundl); # endif #elif defined GNULIB_POSIXCHECK # undef roundl # if HAVE_RAW_DECL_ROUNDL _GL_WARN_ON_USE (roundl, "roundl is unportable - " "use gnulib module roundl for portability"); # endif #endif #if @GNULIB_SINF@ # if @REPLACE_SINF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef sinf # define sinf rpl_sinf # endif _GL_FUNCDECL_RPL (sinf, float, (float x)); _GL_CXXALIAS_RPL (sinf, float, (float x)); # else # if !@HAVE_SINF@ # undef sinf _GL_FUNCDECL_SYS (sinf, float, (float x)); # endif _GL_CXXALIAS_SYS (sinf, float, (float x)); # endif _GL_CXXALIASWARN (sinf); #elif defined GNULIB_POSIXCHECK # undef sinf # if HAVE_RAW_DECL_SINF _GL_WARN_ON_USE (sinf, "sinf is unportable - " "use gnulib module sinf for portability"); # endif #endif #if @GNULIB_SINL@ # if !@HAVE_SINL@ || !@HAVE_DECL_SINL@ # undef sinl _GL_FUNCDECL_SYS (sinl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (sinl, long double, (long double x)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (sinl); # endif #elif defined GNULIB_POSIXCHECK # undef sinl # if HAVE_RAW_DECL_SINL _GL_WARN_ON_USE (sinl, "sinl is unportable - " "use gnulib module sinl for portability"); # endif #endif #if @GNULIB_SINHF@ # if @REPLACE_SINHF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef sinhf # define sinhf rpl_sinhf # endif _GL_FUNCDECL_RPL (sinhf, float, (float x)); _GL_CXXALIAS_RPL (sinhf, float, (float x)); # else # if !@HAVE_SINHF@ # undef sinhf _GL_FUNCDECL_SYS (sinhf, float, (float x)); # endif _GL_CXXALIAS_SYS (sinhf, float, (float x)); # endif _GL_CXXALIASWARN (sinhf); #elif defined GNULIB_POSIXCHECK # undef sinhf # if HAVE_RAW_DECL_SINHF _GL_WARN_ON_USE (sinhf, "sinhf is unportable - " "use gnulib module sinhf for portability"); # endif #endif #if @GNULIB_SQRTF@ # if @REPLACE_SQRTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef sqrtf # define sqrtf rpl_sqrtf # endif _GL_FUNCDECL_RPL (sqrtf, float, (float x)); _GL_CXXALIAS_RPL (sqrtf, float, (float x)); # else # if !@HAVE_SQRTF@ # undef sqrtf _GL_FUNCDECL_SYS (sqrtf, float, (float x)); # endif _GL_CXXALIAS_SYS (sqrtf, float, (float x)); # endif _GL_CXXALIASWARN (sqrtf); #elif defined GNULIB_POSIXCHECK # undef sqrtf # if HAVE_RAW_DECL_SQRTF _GL_WARN_ON_USE (sqrtf, "sqrtf is unportable - " "use gnulib module sqrtf for portability"); # endif #endif #if @GNULIB_SQRTL@ # if @REPLACE_SQRTL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef sqrtl # define sqrtl rpl_sqrtl # endif _GL_FUNCDECL_RPL (sqrtl, long double, (long double x)); _GL_CXXALIAS_RPL (sqrtl, long double, (long double x)); # else # if !@HAVE_SQRTL@ || !@HAVE_DECL_SQRTL@ # undef sqrtl _GL_FUNCDECL_SYS (sqrtl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (sqrtl, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (sqrtl); # endif #elif defined GNULIB_POSIXCHECK # undef sqrtl # if HAVE_RAW_DECL_SQRTL _GL_WARN_ON_USE (sqrtl, "sqrtl is unportable - " "use gnulib module sqrtl for portability"); # endif #endif #if @GNULIB_TANF@ # if @REPLACE_TANF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef tanf # define tanf rpl_tanf # endif _GL_FUNCDECL_RPL (tanf, float, (float x)); _GL_CXXALIAS_RPL (tanf, float, (float x)); # else # if !@HAVE_TANF@ # undef tanf _GL_FUNCDECL_SYS (tanf, float, (float x)); # endif _GL_CXXALIAS_SYS (tanf, float, (float x)); # endif _GL_CXXALIASWARN (tanf); #elif defined GNULIB_POSIXCHECK # undef tanf # if HAVE_RAW_DECL_TANF _GL_WARN_ON_USE (tanf, "tanf is unportable - " "use gnulib module tanf for portability"); # endif #endif #if @GNULIB_TANL@ # if !@HAVE_TANL@ || !@HAVE_DECL_TANL@ # undef tanl _GL_FUNCDECL_SYS (tanl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (tanl, long double, (long double x)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (tanl); # endif #elif defined GNULIB_POSIXCHECK # undef tanl # if HAVE_RAW_DECL_TANL _GL_WARN_ON_USE (tanl, "tanl is unportable - " "use gnulib module tanl for portability"); # endif #endif #if @GNULIB_TANHF@ # if @REPLACE_TANHF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef tanhf # define tanhf rpl_tanhf # endif _GL_FUNCDECL_RPL (tanhf, float, (float x)); _GL_CXXALIAS_RPL (tanhf, float, (float x)); # else # if !@HAVE_TANHF@ # undef tanhf _GL_FUNCDECL_SYS (tanhf, float, (float x)); # endif _GL_CXXALIAS_SYS (tanhf, float, (float x)); # endif _GL_CXXALIASWARN (tanhf); #elif defined GNULIB_POSIXCHECK # undef tanhf # if HAVE_RAW_DECL_TANHF _GL_WARN_ON_USE (tanhf, "tanhf is unportable - " "use gnulib module tanhf for portability"); # endif #endif #if @GNULIB_TRUNCF@ # if @REPLACE_TRUNCF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef truncf # define truncf rpl_truncf # endif _GL_FUNCDECL_RPL (truncf, float, (float x)); _GL_CXXALIAS_RPL (truncf, float, (float x)); # else # if !@HAVE_DECL_TRUNCF@ _GL_FUNCDECL_SYS (truncf, float, (float x)); # endif _GL_CXXALIAS_SYS (truncf, float, (float x)); # endif _GL_CXXALIASWARN (truncf); #elif defined GNULIB_POSIXCHECK # undef truncf # if HAVE_RAW_DECL_TRUNCF _GL_WARN_ON_USE (truncf, "truncf is unportable - " "use gnulib module truncf for portability"); # endif #endif #if @GNULIB_TRUNC@ # if @REPLACE_TRUNC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef trunc # define trunc rpl_trunc # endif _GL_FUNCDECL_RPL (trunc, double, (double x)); _GL_CXXALIAS_RPL (trunc, double, (double x)); # else # if !@HAVE_DECL_TRUNC@ _GL_FUNCDECL_SYS (trunc, double, (double x)); # endif _GL_CXXALIAS_SYS (trunc, double, (double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN1 (trunc, double, (double x)); # endif #elif defined GNULIB_POSIXCHECK # undef trunc # if HAVE_RAW_DECL_TRUNC _GL_WARN_ON_USE (trunc, "trunc is unportable - " "use gnulib module trunc for portability"); # endif #endif #if @GNULIB_TRUNCL@ # if @REPLACE_TRUNCL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef truncl # define truncl rpl_truncl # endif _GL_FUNCDECL_RPL (truncl, long double, (long double x)); _GL_CXXALIAS_RPL (truncl, long double, (long double x)); # else # if !@HAVE_DECL_TRUNCL@ _GL_FUNCDECL_SYS (truncl, long double, (long double x)); # endif _GL_CXXALIAS_SYS (truncl, long double, (long double x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (truncl); # endif #elif defined GNULIB_POSIXCHECK # undef truncl # if HAVE_RAW_DECL_TRUNCL _GL_WARN_ON_USE (truncl, "truncl is unportable - " "use gnulib module truncl for portability"); # endif #endif #if @GNULIB_MDA_Y0@ /* On native Windows, map 'y0' to '_y0', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::y0 always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef y0 # define y0 _y0 # endif _GL_CXXALIAS_MDA (y0, double, (double x)); # else _GL_CXXALIAS_SYS (y0, double, (double x)); # endif _GL_CXXALIASWARN (y0); #endif #if @GNULIB_MDA_Y1@ /* On native Windows, map 'y1' to '_y1', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::y1 always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef y1 # define y1 _y1 # endif _GL_CXXALIAS_MDA (y1, double, (double x)); # else _GL_CXXALIAS_SYS (y1, double, (double x)); # endif _GL_CXXALIASWARN (y1); #endif #if @GNULIB_MDA_YN@ /* On native Windows, map 'yn' to '_yn', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::yn always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef yn # define yn _yn # endif _GL_CXXALIAS_MDA (yn, double, (int n, double x)); # else _GL_CXXALIAS_SYS (yn, double, (int n, double x)); # endif _GL_CXXALIASWARN (yn); #endif /* Definitions of function-like macros come here, after the function declarations. */ #if @GNULIB_ISFINITE@ # if @REPLACE_ISFINITE@ _GL_EXTERN_C int gl_isfinitef (float x); _GL_EXTERN_C int gl_isfinited (double x); _GL_EXTERN_C int gl_isfinitel (long double x); # undef isfinite # define isfinite(x) \ (sizeof (x) == sizeof (long double) ? gl_isfinitel (x) : \ sizeof (x) == sizeof (double) ? gl_isfinited (x) : \ gl_isfinitef (x)) # endif # ifdef __cplusplus # if defined isfinite || defined GNULIB_NAMESPACE _GL_MATH_CXX_REAL_FLOATING_DECL_1 (isfinite) # undef isfinite # if __GNUC__ >= 6 || (defined __clang__ && !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __OpenBSD__ || defined _AIX || (defined _WIN32 && !defined __CYGWIN__))) /* This platform's possibly defines isfinite through a set of inline functions. */ _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite, rpl_isfinite, bool) # define isfinite rpl_isfinite # define GNULIB_NAMESPACE_LACKS_ISFINITE 1 # else _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite, isfinite, bool) # endif # endif # endif #elif defined GNULIB_POSIXCHECK # if defined isfinite _GL_WARN_REAL_FLOATING_DECL (isfinite); # undef isfinite # define isfinite(x) _GL_WARN_REAL_FLOATING_IMPL (isfinite, x) # endif #endif #if @GNULIB_ISINF@ # if @REPLACE_ISINF@ _GL_EXTERN_C int gl_isinff (float x); _GL_EXTERN_C int gl_isinfd (double x); _GL_EXTERN_C int gl_isinfl (long double x); # undef isinf # define isinf(x) \ (sizeof (x) == sizeof (long double) ? gl_isinfl (x) : \ sizeof (x) == sizeof (double) ? gl_isinfd (x) : \ gl_isinff (x)) # endif # ifdef __cplusplus # if defined isinf || defined GNULIB_NAMESPACE _GL_MATH_CXX_REAL_FLOATING_DECL_1 (isinf) # undef isinf # if __GNUC__ >= 6 || (defined __clang__ && !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __OpenBSD__ || (defined _WIN32 && !defined __CYGWIN__))) /* This platform's possibly defines isinf through a set of inline functions. */ _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf, rpl_isinf, bool) # define isinf rpl_isinf # define GNULIB_NAMESPACE_LACKS_ISINF 1 # else _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf, isinf, bool) # endif # endif # endif #elif defined GNULIB_POSIXCHECK # if defined isinf _GL_WARN_REAL_FLOATING_DECL (isinf); # undef isinf # define isinf(x) _GL_WARN_REAL_FLOATING_IMPL (isinf, x) # endif #endif #if @GNULIB_ISNANF@ /* Test for NaN for 'float' numbers. */ # if @HAVE_ISNANF@ /* The original included above provides a declaration of isnan macro or (older) isnanf function. */ # if (__GNUC__ >= 4) || (__clang_major__ >= 4) /* GCC >= 4.0 and clang provide a type-generic built-in for isnan. GCC >= 4.0 also provides __builtin_isnanf, but clang doesn't. */ # undef isnanf # define isnanf(x) __builtin_isnan ((float)(x)) # elif defined isnan # undef isnanf # define isnanf(x) isnan ((float)(x)) # endif # else /* Test whether X is a NaN. */ # undef isnanf # define isnanf rpl_isnanf _GL_EXTERN_C int isnanf (float x); # endif #endif #if @GNULIB_ISNAND@ /* Test for NaN for 'double' numbers. This function is a gnulib extension, unlike isnan() which applied only to 'double' numbers earlier but now is a type-generic macro. */ # if @HAVE_ISNAND@ /* The original included above provides a declaration of isnan macro. */ # if (__GNUC__ >= 4) || (__clang_major__ >= 4) /* GCC >= 4.0 and clang provide a type-generic built-in for isnan. */ # undef isnand # define isnand(x) __builtin_isnan ((double)(x)) # else # undef isnand # define isnand(x) isnan ((double)(x)) # endif # else /* Test whether X is a NaN. */ # undef isnand # define isnand rpl_isnand _GL_EXTERN_C int isnand (double x); # endif #endif #if @GNULIB_ISNANL@ /* Test for NaN for 'long double' numbers. */ # if @HAVE_ISNANL@ /* The original included above provides a declaration of isnan macro or (older) isnanl function. */ # if (__GNUC__ >= 4) || (__clang_major__ >= 4) /* GCC >= 4.0 and clang provide a type-generic built-in for isnan. GCC >= 4.0 also provides __builtin_isnanl, but clang doesn't. */ # undef isnanl # define isnanl(x) __builtin_isnan ((long double)(x)) # elif defined isnan # undef isnanl # define isnanl(x) isnan ((long double)(x)) # endif # else /* Test whether X is a NaN. */ # undef isnanl # define isnanl rpl_isnanl _GL_EXTERN_C int isnanl (long double x) _GL_ATTRIBUTE_CONST; # endif #endif /* This must come *after* the snippets for GNULIB_ISNANF and GNULIB_ISNANL! */ #if @GNULIB_ISNAN@ # if @REPLACE_ISNAN@ /* We can't just use the isnanf macro (e.g.) as exposed by isnanf.h (e.g.) here, because those may end up being macros that recursively expand back to isnan. So use the gnulib replacements for them directly. */ # if @HAVE_ISNANF@ && (__GNUC__ >= 4) || (__clang_major__ >= 4) # define gl_isnan_f(x) __builtin_isnan ((float)(x)) # else _GL_EXTERN_C int rpl_isnanf (float x); # define gl_isnan_f(x) rpl_isnanf (x) # endif # if @HAVE_ISNAND@ && (__GNUC__ >= 4) || (__clang_major__ >= 4) # define gl_isnan_d(x) __builtin_isnan ((double)(x)) # else _GL_EXTERN_C int rpl_isnand (double x); # define gl_isnan_d(x) rpl_isnand (x) # endif # if @HAVE_ISNANL@ && (__GNUC__ >= 4) || (__clang_major__ >= 4) # define gl_isnan_l(x) __builtin_isnan ((long double)(x)) # else _GL_EXTERN_C int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST; # define gl_isnan_l(x) rpl_isnanl (x) # endif # undef isnan # define isnan(x) \ (sizeof (x) == sizeof (long double) ? gl_isnan_l (x) : \ sizeof (x) == sizeof (double) ? gl_isnan_d (x) : \ gl_isnan_f (x)) # elif (__GNUC__ >= 4) || (__clang_major__ >= 4) # undef isnan # define isnan(x) \ (sizeof (x) == sizeof (long double) ? __builtin_isnan ((long double)(x)) : \ sizeof (x) == sizeof (double) ? __builtin_isnan ((double)(x)) : \ __builtin_isnan ((float)(x))) # endif # ifdef __cplusplus # if defined isnan || defined GNULIB_NAMESPACE _GL_MATH_CXX_REAL_FLOATING_DECL_1 (isnan) # undef isnan # if __GNUC__ >= 6 || (defined __clang__ && !((defined __APPLE__ && defined __MACH__ && __clang_major__ != 12) || (defined __FreeBSD__ && (__clang_major__ < 7 || __clang_major__ >= 11)) || defined __OpenBSD__ || (defined _WIN32 && !defined __CYGWIN__))) /* This platform's possibly defines isnan through a set of inline functions. */ _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan, rpl_isnan, bool) # define isnan rpl_isnan # define GNULIB_NAMESPACE_LACKS_ISNAN 1 # else _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan, isnan, bool) # endif # endif # else /* Ensure isnan is a macro. */ # ifndef isnan # define isnan isnan # endif # endif #elif defined GNULIB_POSIXCHECK # if defined isnan _GL_WARN_REAL_FLOATING_DECL (isnan); # undef isnan # define isnan(x) _GL_WARN_REAL_FLOATING_IMPL (isnan, x) # endif #endif #if @GNULIB_SIGNBIT@ # if (@REPLACE_SIGNBIT_USING_BUILTINS@ \ && (!defined __cplusplus || __cplusplus < 201103)) # undef signbit /* GCC >= 4.0 and clang provide three built-ins for signbit. */ # define signbit(x) \ (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \ sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \ __builtin_signbitf (x)) # endif # if @REPLACE_SIGNBIT@ && !GNULIB_defined_signbit # undef signbit _GL_EXTERN_C int gl_signbitf (float arg); _GL_EXTERN_C int gl_signbitd (double arg); _GL_EXTERN_C int gl_signbitl (long double arg); # if (__GNUC__ >= 2 || defined __clang__) && !defined __STRICT_ANSI__ # define _GL_NUM_UINT_WORDS(type) \ ((sizeof (type) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) # if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined gl_signbitf # define gl_signbitf_OPTIMIZED_MACRO # define gl_signbitf(arg) \ ({ union { float _value; \ unsigned int _word[_GL_NUM_UINT_WORDS (float)]; \ } _m; \ _m._value = (arg); \ (_m._word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1; \ }) # endif # if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT && !defined gl_signbitd # define gl_signbitd_OPTIMIZED_MACRO # define gl_signbitd(arg) \ ({ union { double _value; \ unsigned int _word[_GL_NUM_UINT_WORDS (double)]; \ } _m; \ _m._value = (arg); \ (_m._word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1; \ }) # endif # if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT && !defined gl_signbitl # define gl_signbitl_OPTIMIZED_MACRO # define gl_signbitl(arg) \ ({ union { long double _value; \ unsigned int _word[_GL_NUM_UINT_WORDS (long double)]; \ } _m; \ _m._value = (arg); \ (_m._word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1; \ }) # endif # endif # define signbit(x) \ (sizeof (x) == sizeof (long double) ? gl_signbitl (x) : \ sizeof (x) == sizeof (double) ? gl_signbitd (x) : \ gl_signbitf (x)) # define GNULIB_defined_signbit 1 # endif # ifdef __cplusplus # if defined signbit || defined GNULIB_NAMESPACE _GL_MATH_CXX_REAL_FLOATING_DECL_1 (signbit) # undef signbit # if __GNUC__ >= 6 || (defined __clang__ && !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __OpenBSD__ || defined _AIX || (defined _WIN32 && !defined __CYGWIN__))) /* This platform's possibly defines signbit through a set of inline functions. */ _GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit, rpl_signbit, bool) # define signbit rpl_signbit # define GNULIB_NAMESPACE_LACKS_SIGNBIT 1 # else _GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit, signbit, bool) # endif # endif # endif #elif defined GNULIB_POSIXCHECK # if defined signbit _GL_WARN_REAL_FLOATING_DECL (signbit); # undef signbit # define signbit(x) _GL_WARN_REAL_FLOATING_IMPL (signbit, x) # endif #endif _GL_INLINE_HEADER_END #endif /* _@GUARD_PREFIX@_MATH_H */ #endif /* _GL_INCLUDING_MATH_H */ #endif /* _@GUARD_PREFIX@_MATH_H */ #endif recode-3.7.15/lib/assert.in.h0000644000175000017500000000202514371444255011366 /* Substitute for and wrapper around Copyright (C) 2011-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Do not guard the include, since is supposed to define the assert macro each time it is included. */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #@INCLUDE_NEXT@ @NEXT_ASSERT_H@ /* The definition of static_assert is copied here. */ recode-3.7.15/lib/lc-charset-dispatch.h0000644000175000017500000000257214371444255013311 /* Dispatching based on the current locale's character encoding. Copyright (C) 2018-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2018. */ #include #if GNULIB_defined_mbstate_t /* A classification of special values of the encoding of the current locale. */ typedef enum { enc_other, /* other */ enc_utf8, /* UTF-8 */ enc_eucjp, /* EUC-JP */ enc_94, /* EUC-KR, GB2312, BIG5 */ enc_euctw, /* EUC-TW */ enc_gb18030, /* GB18030 */ enc_sjis /* SJIS */ } enc_t; /* Returns a classification of special values of the encoding of the current locale. */ extern enc_t locale_encoding_classification (void); #endif recode-3.7.15/lib/raise.c0000644000175000017500000000343514371444255010564 /* Provide a non-threads replacement for the POSIX raise function. Copyright (C) 2002-2003, 2005-2006, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* written by Jim Meyering and Bruno Haible */ #include /* Specification. */ #include #if HAVE_RAISE /* Native Windows platform. */ # include # if HAVE_MSVC_INVALID_PARAMETER_HANDLER # include "msvc-inval.h" # endif # if HAVE_MSVC_INVALID_PARAMETER_HANDLER /* Forward declaration. */ static int raise_nothrow (int sig); # else # define raise_nothrow raise # endif #else /* An old Unix platform. */ # include #endif int raise (int sig) #undef raise { #if GNULIB_defined_signal_blocking && GNULIB_defined_SIGPIPE if (sig == SIGPIPE) return _gl_raise_SIGPIPE (); #endif #if HAVE_RAISE return raise_nothrow (sig); #else return kill (getpid (), sig); #endif } #if HAVE_RAISE && HAVE_MSVC_INVALID_PARAMETER_HANDLER static int raise_nothrow (int sig) { int result; TRY_MSVC_INVAL { result = raise (sig); } CATCH_MSVC_INVAL { result = -1; errno = EINVAL; } DONE_MSVC_INVAL; return result; } #endif recode-3.7.15/lib/fseterr.h0000644000175000017500000000237414371444255011141 /* Set the error indicator of a stream. Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _FSETERR_H #define _FSETERR_H #include /* Set the error indicator of the stream FP. The "error indicator" is set when an I/O operation on the stream fails, and is cleared (together with the "end-of-file" indicator) by clearerr (FP). */ #if HAVE___FSETERR /* musl libc */ # include # define fseterr(fp) __fseterr (fp) #else # ifdef __cplusplus extern "C" { # endif extern void fseterr (FILE *fp); # ifdef __cplusplus } # endif #endif #endif /* _FSETERR_H */ recode-3.7.15/lib/getopt.c0000644000175000017500000005711114371444255010763 /* Getopt for GNU. Copyright (C) 1987-2023 Free Software Foundation, Inc. This file is part of the GNU C Library and is also part of gnulib. Patches to this file should be submitted to both projects. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ #ifndef _LIBC # include #endif #include "getopt.h" #include #include #include #include #ifdef _LIBC /* When used as part of glibc, error printing must be done differently for standards compliance. getopt is not a cancellation point, so it must not call functions that are, and it is specified by an older standard than stdio locking, so it must not refer to functions in the "user namespace" related to stdio locking. Finally, it must use glibc's internal message translation so that the messages are looked up in the proper text domain. */ # include # define fprintf __fxprintf_nocancel # define flockfile(fp) _IO_flockfile (fp) # define funlockfile(fp) _IO_funlockfile (fp) #else # include "gettext.h" # define _(msgid) gettext (msgid) /* When used standalone, flockfile and funlockfile might not be available. */ # if (!defined _POSIX_THREAD_SAFE_FUNCTIONS \ || (defined _WIN32 && ! defined __CYGWIN__)) # define flockfile(fp) /* nop */ # define funlockfile(fp) /* nop */ # endif /* When used standalone, do not attempt to use alloca. */ # define __libc_use_alloca(size) 0 # undef alloca # define alloca(size) (abort (), (void *)0) #endif /* This implementation of 'getopt' has three modes for handling options interspersed with non-option arguments. It can stop scanning for options at the first non-option argument encountered, as POSIX specifies. It can continue scanning for options after the first non-option argument, but permute 'argv' as it goes so that, after 'getopt' is done, all the options precede all the non-option arguments and 'optind' points to the first non-option argument. Or, it can report non-option arguments as if they were arguments to the option character '\x01'. The default behavior of 'getopt_long' is to permute the argument list. When this implementation is used standalone, the default behavior of 'getopt' is to stop at the first non-option argument, but when it is used as part of GNU libc it also permutes the argument list. In both cases, setting the environment variable POSIXLY_CORRECT to any value disables permutation. If the first character of the OPTSTRING argument to 'getopt' or 'getopt_long' is '+', both functions will stop at the first non-option argument. If it is '-', both functions will report non-option arguments as arguments to the option character '\x01'. */ #include "getopt_int.h" /* For communication from 'getopt' to the caller. When 'getopt' finds an option that takes an argument, the argument value is returned here. Also, when 'ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to 'getopt'. On entry to 'getopt', zero means this is the first call; initialize. When 'getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, 'optind' communicates from one call to the next how much of ARGV has been scanned so far. */ /* 1003.2 says this must be 1 before any call. */ int optind = 1; /* Callers store zero here to inhibit the error message for unrecognized options. */ int opterr = 1; /* Set to an option character which was unrecognized. This must be initialized on some systems to avoid linking in the system's own getopt implementation. */ int optopt = '?'; /* Keep a global copy of all internal members of getopt_data. */ static struct _getopt_data getopt_data; /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) which contains all the non-options that have been skipped so far. The other is elements [last_nonopt,optind), which contains all the options processed since those non-options were skipped. 'first_nonopt' and 'last_nonopt' are relocated so that they describe the new indices of the non-options in ARGV after they are moved. */ static void exchange (char **argv, struct _getopt_data *d) { int bottom = d->__first_nonopt; int middle = d->__last_nonopt; int top = d->optind; char *tem; /* Exchange the shorter segment with the far end of the longer segment. That puts the shorter segment into the right place. It leaves the longer segment in the right place overall, but it consists of two parts that need to be swapped next. */ while (top > middle && middle > bottom) { if (top - middle > middle - bottom) { /* Bottom segment is the short one. */ int len = middle - bottom; int i; /* Swap it with the top part of the top segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[top - (middle - bottom) + i]; argv[top - (middle - bottom) + i] = tem; } /* Exclude the moved bottom segment from further swapping. */ top -= len; } else { /* Top segment is the short one. */ int len = top - middle; int i; /* Swap it with the bottom part of the bottom segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[middle + i]; argv[middle + i] = tem; } /* Exclude the moved top segment from further swapping. */ bottom += len; } } /* Update records for the slots the non-options now occupy. */ d->__first_nonopt += (d->optind - d->__last_nonopt); d->__last_nonopt = d->optind; } /* Process the argument starting with d->__nextchar as a long option. d->optind should *not* have been advanced over this argument. If the value returned is -1, it was not actually a long option, the state is unchanged, and the argument should be processed as a set of short options (this can only happen when long_only is true). Otherwise, the option (and its argument, if any) have been consumed and the return value is the value to return from _getopt_internal_r. */ static int process_long_option (int argc, char **argv, const char *optstring, const struct option *longopts, int *longind, int long_only, struct _getopt_data *d, int print_errors, const char *prefix) { char *nameend; size_t namelen; const struct option *p; const struct option *pfound = NULL; int n_options; int option_index; for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; namelen = nameend - d->__nextchar; /* First look for an exact match, counting the options as a side effect. */ for (p = longopts, n_options = 0; p->name; p++, n_options++) if (!strncmp (p->name, d->__nextchar, namelen) && namelen == strlen (p->name)) { /* Exact match found. */ pfound = p; option_index = n_options; break; } if (pfound == NULL) { /* Didn't find an exact match, so look for abbreviations. */ unsigned char *ambig_set = NULL; int ambig_malloced = 0; int ambig_fallback = 0; int indfound = -1; for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, d->__nextchar, namelen)) { if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else if (long_only || pfound->has_arg != p->has_arg || pfound->flag != p->flag || pfound->val != p->val) { /* Second or later nonexact match found. */ if (!ambig_fallback) { if (!print_errors) /* Don't waste effort tracking the ambig set if we're not going to print it anyway. */ ambig_fallback = 1; else if (!ambig_set) { if (__libc_use_alloca (n_options)) ambig_set = alloca (n_options); else if ((ambig_set = malloc (n_options)) == NULL) /* Fall back to simpler error message. */ ambig_fallback = 1; else ambig_malloced = 1; if (ambig_set) { memset (ambig_set, 0, n_options); ambig_set[indfound] = 1; } } if (ambig_set) ambig_set[option_index] = 1; } } } if (ambig_set || ambig_fallback) { if (print_errors) { if (ambig_fallback) fprintf (stderr, _("%s: option '%s%s' is ambiguous\n"), argv[0], prefix, d->__nextchar); else { flockfile (stderr); fprintf (stderr, _("%s: option '%s%s' is ambiguous; possibilities:"), argv[0], prefix, d->__nextchar); for (option_index = 0; option_index < n_options; option_index++) if (ambig_set[option_index]) fprintf (stderr, " '%s%s'", prefix, longopts[option_index].name); /* This must use 'fprintf' even though it's only printing a single character, so that it goes through __fxprintf_nocancel when compiled as part of glibc. */ fprintf (stderr, "\n"); funlockfile (stderr); } } if (ambig_malloced) free (ambig_set); d->__nextchar += strlen (d->__nextchar); d->optind++; d->optopt = 0; return '?'; } option_index = indfound; } if (pfound == NULL) { /* Can't find it as a long option. If this is not getopt_long_only, or the option starts with '--' or is not a valid short option, then it's an error. */ if (!long_only || argv[d->optind][1] == '-' || strchr (optstring, *d->__nextchar) == NULL) { if (print_errors) fprintf (stderr, _("%s: unrecognized option '%s%s'\n"), argv[0], prefix, d->__nextchar); d->__nextchar = NULL; d->optind++; d->optopt = 0; return '?'; } /* Otherwise interpret it as a short option. */ return -1; } /* We have found a matching long option. Consume it. */ d->optind++; d->__nextchar = NULL; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) d->optarg = nameend + 1; else { if (print_errors) fprintf (stderr, _("%s: option '%s%s' doesn't allow an argument\n"), argv[0], prefix, pfound->name); d->optopt = pfound->val; return '?'; } } else if (pfound->has_arg == 1) { if (d->optind < argc) d->optarg = argv[d->optind++]; else { if (print_errors) fprintf (stderr, _("%s: option '%s%s' requires an argument\n"), argv[0], prefix, pfound->name); d->optopt = pfound->val; return optstring[0] == ':' ? ':' : '?'; } } if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } /* Initialize internal data upon the first call to getopt. */ static const char * _getopt_initialize (_GL_UNUSED int argc, _GL_UNUSED char **argv, const char *optstring, struct _getopt_data *d, int posixly_correct) { /* Start processing options with ARGV-element 1 (since ARGV-element 0 is the program name); the sequence of previously skipped non-option ARGV-elements is empty. */ if (d->optind == 0) d->optind = 1; d->__first_nonopt = d->__last_nonopt = d->optind; d->__nextchar = NULL; /* Determine how to handle the ordering of options and nonoptions. */ if (optstring[0] == '-') { d->__ordering = RETURN_IN_ORDER; ++optstring; } else if (optstring[0] == '+') { d->__ordering = REQUIRE_ORDER; ++optstring; } else if (posixly_correct || !!getenv ("POSIXLY_CORRECT")) d->__ordering = REQUIRE_ORDER; else d->__ordering = PERMUTE; d->__initialized = 1; return optstring; } /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. If an element of ARGV starts with '-', and is not exactly "-" or "--", then it is an option element. The characters of this element (aside from the initial '-') are option characters. If 'getopt' is called repeatedly, it returns successively each of the option characters from each of the option elements. If 'getopt' finds another option character, it returns that character, updating 'optind' and 'nextchar' so that the next call to 'getopt' can resume the scan with the following option character or ARGV-element. If there are no more option characters, 'getopt' returns -1. Then 'optind' is the index in ARGV of the first ARGV-element that is not an option. (The ARGV-elements have been permuted so that those that are not options now come last.) OPTSTRING is a string containing the legitimate option characters. If an option character is seen that is not listed in OPTSTRING, return '?' after printing an error message. If you set 'opterr' to zero, the error message is suppressed but we still return '?'. If a char in OPTSTRING is followed by a colon, that means it wants an arg, so the following text in the same ARGV-element, or the text of the following ARGV-element, is returned in 'optarg'. Two colons mean an option that wants an optional arg; if there is text in the current ARGV-element, it is returned in 'optarg', otherwise 'optarg' is set to zero. If OPTSTRING starts with '-' or '+', it requests different methods of handling the non-option ARGV-elements. See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. Long-named options begin with '--' instead of '-'. Their names may be abbreviated as long as the abbreviation is unique or is an exact match for some defined option. If they have an argument, it follows the option name in the same ARGV-element, separated from the option name by a '=', or else the in next ARGV-element. When 'getopt' finds a long-named option, it returns 0 if that option's 'flag' field is nonzero, the value of the option's 'val' field if the 'flag' field is zero. The elements of ARGV aren't really const, because we permute them. But we pretend they're const in the prototype to be compatible with other systems. LONGOPTS is a vector of 'struct option' terminated by an element containing a name which is zero. LONGIND returns the index in LONGOPT of the long-named option found. It is only valid when a long-named option has been found by the most recent call. If LONG_ONLY is nonzero, '-' as well as '--' can introduce long-named options. */ int _getopt_internal_r (int argc, char **argv, const char *optstring, const struct option *longopts, int *longind, int long_only, struct _getopt_data *d, int posixly_correct) { int print_errors = d->opterr; if (argc < 1) return -1; d->optarg = NULL; if (d->optind == 0 || !d->__initialized) optstring = _getopt_initialize (argc, argv, optstring, d, posixly_correct); else if (optstring[0] == '-' || optstring[0] == '+') optstring++; if (optstring[0] == ':') print_errors = 0; /* Test whether ARGV[optind] points to a non-option argument. */ #define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0') if (d->__nextchar == NULL || *d->__nextchar == '\0') { /* Advance to the next ARGV-element. */ /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been moved back by the user (who may also have changed the arguments). */ if (d->__last_nonopt > d->optind) d->__last_nonopt = d->optind; if (d->__first_nonopt > d->optind) d->__first_nonopt = d->optind; if (d->__ordering == PERMUTE) { /* If we have just processed some options following some non-options, exchange them so that the options come first. */ if (d->__first_nonopt != d->__last_nonopt && d->__last_nonopt != d->optind) exchange (argv, d); else if (d->__last_nonopt != d->optind) d->__first_nonopt = d->optind; /* Skip any additional non-options and extend the range of non-options previously skipped. */ while (d->optind < argc && NONOPTION_P) d->optind++; d->__last_nonopt = d->optind; } /* The special ARGV-element '--' means premature end of options. Skip it like a null option, then exchange with previous non-options as if it were an option, then skip everything else like a non-option. */ if (d->optind != argc && !strcmp (argv[d->optind], "--")) { d->optind++; if (d->__first_nonopt != d->__last_nonopt && d->__last_nonopt != d->optind) exchange (argv, d); else if (d->__first_nonopt == d->__last_nonopt) d->__first_nonopt = d->optind; d->__last_nonopt = argc; d->optind = argc; } /* If we have done all the ARGV-elements, stop the scan and back over any non-options that we skipped and permuted. */ if (d->optind == argc) { /* Set the next-arg-index to point at the non-options that we previously skipped, so the caller will digest them. */ if (d->__first_nonopt != d->__last_nonopt) d->optind = d->__first_nonopt; return -1; } /* If we have come to a non-option and did not permute it, either stop the scan or describe it to the caller and pass it by. */ if (NONOPTION_P) { if (d->__ordering == REQUIRE_ORDER) return -1; d->optarg = argv[d->optind++]; return 1; } /* We have found another option-ARGV-element. Check whether it might be a long option. */ if (longopts) { if (argv[d->optind][1] == '-') { /* "--foo" is always a long option. The special option "--" was handled above. */ d->__nextchar = argv[d->optind] + 2; return process_long_option (argc, argv, optstring, longopts, longind, long_only, d, print_errors, "--"); } /* If long_only and the ARGV-element has the form "-f", where f is a valid short option, don't consider it an abbreviated form of a long option that starts with f. Otherwise there would be no way to give the -f short option. On the other hand, if there's a long option "fubar" and the ARGV-element is "-fu", do consider that an abbreviation of the long option, just like "--fu", and not "-f" with arg "u". This distinction seems to be the most useful approach. */ if (long_only && (argv[d->optind][2] || !strchr (optstring, argv[d->optind][1]))) { int code; d->__nextchar = argv[d->optind] + 1; code = process_long_option (argc, argv, optstring, longopts, longind, long_only, d, print_errors, "-"); if (code != -1) return code; } } /* It is not a long option. Skip the initial punctuation. */ d->__nextchar = argv[d->optind] + 1; } /* Look at and handle the next short option-character. */ { char c = *d->__nextchar++; const char *temp = strchr (optstring, c); /* Increment 'optind' when we start to process its last character. */ if (*d->__nextchar == '\0') ++d->optind; if (temp == NULL || c == ':' || c == ';') { if (print_errors) fprintf (stderr, _("%s: invalid option -- '%c'\n"), argv[0], c); d->optopt = c; return '?'; } /* Convenience. Treat POSIX -W foo same as long option --foo */ if (temp[0] == 'W' && temp[1] == ';' && longopts != NULL) { /* This is an option that requires an argument. */ if (*d->__nextchar != '\0') d->optarg = d->__nextchar; else if (d->optind == argc) { if (print_errors) fprintf (stderr, _("%s: option requires an argument -- '%c'\n"), argv[0], c); d->optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; return c; } else d->optarg = argv[d->optind]; d->__nextchar = d->optarg; d->optarg = NULL; return process_long_option (argc, argv, optstring, longopts, longind, 0 /* long_only */, d, print_errors, "-W "); } if (temp[1] == ':') { if (temp[2] == ':') { /* This is an option that accepts an argument optionally. */ if (*d->__nextchar != '\0') { d->optarg = d->__nextchar; d->optind++; } else d->optarg = NULL; d->__nextchar = NULL; } else { /* This is an option that requires an argument. */ if (*d->__nextchar != '\0') { d->optarg = d->__nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ d->optind++; } else if (d->optind == argc) { if (print_errors) fprintf (stderr, _("%s: option requires an argument -- '%c'\n"), argv[0], c); d->optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; } else /* We already incremented 'optind' once; increment it again when taking next ARGV-elt as argument. */ d->optarg = argv[d->optind++]; d->__nextchar = NULL; } } return c; } } int _getopt_internal (int argc, char **argv, const char *optstring, const struct option *longopts, int *longind, int long_only, int posixly_correct) { int result; getopt_data.optind = optind; getopt_data.opterr = opterr; result = _getopt_internal_r (argc, argv, optstring, longopts, longind, long_only, &getopt_data, posixly_correct); optind = getopt_data.optind; optarg = getopt_data.optarg; optopt = getopt_data.optopt; return result; } /* glibc gets a LSB-compliant getopt and a POSIX-complaint __posix_getopt. Standalone applications just get a POSIX-compliant getopt. POSIX and LSB both require these functions to take 'char *const *argv' even though this is incorrect (because of the permutation). */ #define GETOPT_ENTRY(NAME, POSIXLY_CORRECT) \ int \ NAME (int argc, char *const *argv, const char *optstring) \ { \ return _getopt_internal (argc, (char **)argv, optstring, \ 0, 0, 0, POSIXLY_CORRECT); \ } #ifdef _LIBC GETOPT_ENTRY(getopt, 0) GETOPT_ENTRY(__posix_getopt, 1) #else GETOPT_ENTRY(getopt, 1) #endif #ifdef TEST /* Compile with -DTEST to make an executable for use in testing the above definition of 'getopt'. */ int main (int argc, char **argv) { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; c = getopt (argc, argv, "abc:d:0123456789"); if (c == -1) break; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value '%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ recode-3.7.15/lib/hard-locale.h0000644000175000017500000000226014371444255011634 /* Determine whether a locale is hard. Copyright (C) 1999, 2003-2004, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef HARD_LOCALE_H_ # define HARD_LOCALE_H_ 1 /* Return true if the specified CATEGORY of the current locale is hard, i.e. different from the C or POSIX locale that has a fixed behavior. CATEGORY must be one of the LC_* values, but not LC_ALL. Note: This function uses the current global locale; it ignores the per-thread locale. */ extern bool hard_locale (int category); #endif /* HARD_LOCALE_H_ */ recode-3.7.15/lib/stat-time.h0000644000175000017500000001701614371444255011375 /* stat-related time functions. Copyright (C) 2005, 2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Paul Eggert. */ #ifndef STAT_TIME_H #define STAT_TIME_H 1 #include #include #include #include #include #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_STAT_TIME_INLINE # define _GL_STAT_TIME_INLINE _GL_INLINE #endif #ifdef __cplusplus extern "C" { #endif /* STAT_TIMESPEC (ST, ST_XTIM) is the ST_XTIM member for *ST of type struct timespec, if available. If not, then STAT_TIMESPEC_NS (ST, ST_XTIM) is the nanosecond component of the ST_XTIM member for *ST, if available. ST_XTIM can be st_atim, st_ctim, st_mtim, or st_birthtim for access, status change, data modification, or birth (creation) time respectively. These macros are private to stat-time.h. */ #if _GL_WINDOWS_STAT_TIMESPEC || defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC # if _GL_WINDOWS_STAT_TIMESPEC || defined TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC # define STAT_TIMESPEC(st, st_xtim) ((st)->st_xtim) # else # define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim.tv_nsec) # endif #elif defined HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC # define STAT_TIMESPEC(st, st_xtim) ((st)->st_xtim##espec) #elif defined HAVE_STRUCT_STAT_ST_ATIMENSEC # define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim##ensec) #elif defined HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC # define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim.st__tim.tv_nsec) #endif /* Return the nanosecond component of *ST's access time. */ _GL_STAT_TIME_INLINE long int _GL_ATTRIBUTE_PURE get_stat_atime_ns (struct stat const *st) { # if defined STAT_TIMESPEC return STAT_TIMESPEC (st, st_atim).tv_nsec; # elif defined STAT_TIMESPEC_NS return STAT_TIMESPEC_NS (st, st_atim); # else return 0; # endif } /* Return the nanosecond component of *ST's status change time. */ _GL_STAT_TIME_INLINE long int _GL_ATTRIBUTE_PURE get_stat_ctime_ns (struct stat const *st) { # if defined STAT_TIMESPEC return STAT_TIMESPEC (st, st_ctim).tv_nsec; # elif defined STAT_TIMESPEC_NS return STAT_TIMESPEC_NS (st, st_ctim); # else return 0; # endif } /* Return the nanosecond component of *ST's data modification time. */ _GL_STAT_TIME_INLINE long int _GL_ATTRIBUTE_PURE get_stat_mtime_ns (struct stat const *st) { # if defined STAT_TIMESPEC return STAT_TIMESPEC (st, st_mtim).tv_nsec; # elif defined STAT_TIMESPEC_NS return STAT_TIMESPEC_NS (st, st_mtim); # else return 0; # endif } /* Return the nanosecond component of *ST's birth time. */ _GL_STAT_TIME_INLINE long int _GL_ATTRIBUTE_PURE get_stat_birthtime_ns (_GL_UNUSED struct stat const *st) { # if defined HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC return STAT_TIMESPEC (st, st_birthtim).tv_nsec; # elif defined HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC return STAT_TIMESPEC_NS (st, st_birthtim); # else return 0; # endif } /* Return *ST's access time. */ _GL_STAT_TIME_INLINE struct timespec _GL_ATTRIBUTE_PURE get_stat_atime (struct stat const *st) { #ifdef STAT_TIMESPEC return STAT_TIMESPEC (st, st_atim); #else struct timespec t; t.tv_sec = st->st_atime; t.tv_nsec = get_stat_atime_ns (st); return t; #endif } /* Return *ST's status change time. */ _GL_STAT_TIME_INLINE struct timespec _GL_ATTRIBUTE_PURE get_stat_ctime (struct stat const *st) { #ifdef STAT_TIMESPEC return STAT_TIMESPEC (st, st_ctim); #else struct timespec t; t.tv_sec = st->st_ctime; t.tv_nsec = get_stat_ctime_ns (st); return t; #endif } /* Return *ST's data modification time. */ _GL_STAT_TIME_INLINE struct timespec _GL_ATTRIBUTE_PURE get_stat_mtime (struct stat const *st) { #ifdef STAT_TIMESPEC return STAT_TIMESPEC (st, st_mtim); #else struct timespec t; t.tv_sec = st->st_mtime; t.tv_nsec = get_stat_mtime_ns (st); return t; #endif } /* Return *ST's birth time, if available; otherwise return a value with tv_sec and tv_nsec both equal to -1. */ _GL_STAT_TIME_INLINE struct timespec _GL_ATTRIBUTE_PURE get_stat_birthtime (_GL_UNUSED struct stat const *st) { struct timespec t; #if (defined HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC \ || defined HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC) t = STAT_TIMESPEC (st, st_birthtim); #elif defined HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC t.tv_sec = st->st_birthtime; t.tv_nsec = st->st_birthtimensec; #elif defined _WIN32 && ! defined __CYGWIN__ /* Native Windows platforms (but not Cygwin) put the "file creation time" in st_ctime (!). See . */ # if _GL_WINDOWS_STAT_TIMESPEC t = st->st_ctim; # else t.tv_sec = st->st_ctime; t.tv_nsec = 0; # endif #else /* Birth time is not supported. */ t.tv_sec = -1; t.tv_nsec = -1; #endif #if (defined HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC \ || defined HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC \ || defined HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC) /* FreeBSD and NetBSD sometimes signal the absence of knowledge by using zero. Attempt to work around this problem. Alas, this can report failure even for valid timestamps. Also, NetBSD sometimes returns junk in the birth time fields; work around this bug if it is detected. */ if (! (t.tv_sec && 0 <= t.tv_nsec && t.tv_nsec < 1000000000)) { t.tv_sec = -1; t.tv_nsec = -1; } #endif return t; } /* If a stat-like function returned RESULT, normalize the timestamps in *ST, in case this platform suffers from the Solaris 11 bug where tv_nsec might be negative. Return the adjusted RESULT, setting errno to EOVERFLOW if normalization overflowed. This function is intended to be private to this .h file. */ _GL_STAT_TIME_INLINE int stat_time_normalize (int result, _GL_UNUSED struct stat *st) { #if defined __sun && defined STAT_TIMESPEC if (result == 0) { long int timespec_hz = 1000000000; short int const ts_off[] = { offsetof (struct stat, st_atim), offsetof (struct stat, st_mtim), offsetof (struct stat, st_ctim) }; int i; for (i = 0; i < sizeof ts_off / sizeof *ts_off; i++) { struct timespec *ts = (struct timespec *) ((char *) st + ts_off[i]); long int q = ts->tv_nsec / timespec_hz; long int r = ts->tv_nsec % timespec_hz; if (r < 0) { r += timespec_hz; q--; } ts->tv_nsec = r; /* Overflow is possible, as Solaris 11 stat can yield tv_sec == TYPE_MINIMUM (time_t) && tv_nsec == -1000000000. INT_ADD_WRAPV is OK, since time_t is signed on Solaris. */ if (ckd_add (&ts->tv_sec, q, ts->tv_sec)) { errno = EOVERFLOW; return -1; } } } #endif return result; } #ifdef __cplusplus } #endif _GL_INLINE_HEADER_END #endif recode-3.7.15/lib/vasnprintf.c0000644000175000017500000067703014371444255011663 /* vsprintf with automatic memory allocation. Copyright (C) 1999, 2002-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* This file can be parametrized with the following macros: VASNPRINTF The name of the function being defined. FCHAR_T The element type of the format string. DCHAR_T The element type of the destination (result) string. FCHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters in the format string are ASCII. MUST be set if FCHAR_T and DCHAR_T are not the same type. DIRECTIVE Structure denoting a format directive. Depends on FCHAR_T. DIRECTIVES Structure denoting the set of format directives of a format string. Depends on FCHAR_T. PRINTF_PARSE Function that parses a format string. Depends on FCHAR_T. DCHAR_CPY memcpy like function for DCHAR_T[] arrays. DCHAR_SET memset like function for DCHAR_T[] arrays. DCHAR_MBSNLEN mbsnlen like function for DCHAR_T[] arrays. SNPRINTF The system's snprintf (or similar) function. This may be either snprintf or swprintf. TCHAR_T The element type of the argument and result string of the said SNPRINTF function. This may be either char or wchar_t. The code exploits that sizeof (TCHAR_T) | sizeof (DCHAR_T) and alignof (TCHAR_T) <= alignof (DCHAR_T). DCHAR_IS_TCHAR Set to 1 if DCHAR_T and TCHAR_T are the same type. DCHAR_CONV_FROM_ENCODING A function to convert from char[] to DCHAR[]. DCHAR_IS_UINT8_T Set to 1 if DCHAR_T is uint8_t. DCHAR_IS_UINT16_T Set to 1 if DCHAR_T is uint16_t. DCHAR_IS_UINT32_T Set to 1 if DCHAR_T is uint32_t. ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. ENABLE_WCHAR_FALLBACK Set to 1 to avoid EILSEQ during conversion of wide characters (wchar_t) and wide character strings (wchar_t[]) to multibyte sequences. The fallback is the hexadecimal escape syntax (\unnnn or \Unnnnnnnn) or, if wchar_t is not Unicode encoded, \wnnnn or \Wnnnnnnnn. */ /* Tell glibc's to provide a prototype for snprintf(). This must come before because may include , and once has been included, it's too late. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif #ifndef VASNPRINTF # include #endif /* As of GCC 11.2.1, gcc -Wanalyzer-too-complex reports that main's use of CHECK macros expands to code that is too complicated for gcc -fanalyzer. Suppress the resulting bogus warnings. */ #if 10 <= __GNUC__ # pragma GCC diagnostic ignored "-Wanalyzer-null-argument" #endif #include /* Specification. */ #ifndef VASNPRINTF # if WIDE_CHAR_VERSION # include "vasnwprintf.h" # else # include "vasnprintf.h" # endif #endif #include /* localeconv() */ #include /* snprintf(), sprintf() */ #include /* abort(), malloc(), realloc(), free() */ #include /* memcpy(), strlen() */ #include /* mbstate_t, mbrtowc(), mbrlen(), wcrtomb() */ #include /* errno */ #include /* CHAR_BIT */ #include /* DBL_MAX_EXP, LDBL_MAX_EXP */ #if HAVE_NL_LANGINFO # include #endif #ifndef VASNPRINTF # if WIDE_CHAR_VERSION # include "wprintf-parse.h" # else # include "printf-parse.h" # endif #endif /* Checked size_t computations. */ #include "xsize.h" #include "attribute.h" #if (NEED_PRINTF_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL # include # include "float+.h" #endif #if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL # include # include "isnand-nolibm.h" #endif #if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) && !defined IN_LIBINTL # include # include "isnanl-nolibm.h" # include "fpucw.h" #endif #if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL # include # include "isnand-nolibm.h" # include "printf-frexp.h" #endif #if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL # include # include "isnanl-nolibm.h" # include "printf-frexpl.h" # include "fpucw.h" #endif /* Default parameters. */ #ifndef VASNPRINTF # if WIDE_CHAR_VERSION # define VASNPRINTF vasnwprintf # define FCHAR_T wchar_t # define DCHAR_T wchar_t # define TCHAR_T wchar_t # define DCHAR_IS_TCHAR 1 # define DIRECTIVE wchar_t_directive # define DIRECTIVES wchar_t_directives # define PRINTF_PARSE wprintf_parse # define DCHAR_CPY wmemcpy # define DCHAR_SET wmemset # else # define VASNPRINTF vasnprintf # define FCHAR_T char # define DCHAR_T char # define TCHAR_T char # define DCHAR_IS_TCHAR 1 # define DIRECTIVE char_directive # define DIRECTIVES char_directives # define PRINTF_PARSE printf_parse # define DCHAR_CPY memcpy # define DCHAR_SET memset # endif #endif #if WIDE_CHAR_VERSION /* TCHAR_T is wchar_t. */ # define USE_SNPRINTF 1 # if HAVE_DECL__SNWPRINTF /* On Windows, the function swprintf() has a different signature than on Unix; we use the function _snwprintf() or - on mingw - snwprintf() instead. The mingw function snwprintf() has fewer bugs than the MSVCRT function _snwprintf(), so prefer that. */ # if defined __MINGW32__ # define SNPRINTF snwprintf # else # define SNPRINTF _snwprintf # define USE_MSVC__SNPRINTF 1 # endif # else /* Unix. */ # define SNPRINTF swprintf # endif #else /* TCHAR_T is char. */ /* Use snprintf if it exists under the name 'snprintf' or '_snprintf'. But don't use it on BeOS, since BeOS snprintf produces no output if the size argument is >= 0x3000000. Also don't use it on Linux libc5, since there snprintf with size = 1 writes any output without bounds, like sprintf. */ # if (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF) && !defined __BEOS__ && !(__GNU_LIBRARY__ == 1) # define USE_SNPRINTF 1 # else # define USE_SNPRINTF 0 # endif # if HAVE_DECL__SNPRINTF /* Windows. The mingw function snprintf() has fewer bugs than the MSVCRT function _snprintf(), so prefer that. */ # if defined __MINGW32__ # define SNPRINTF snprintf /* Here we need to call the native snprintf, not rpl_snprintf. */ # undef snprintf # else /* MSVC versions < 14 did not have snprintf, only _snprintf. */ # define SNPRINTF _snprintf # define USE_MSVC__SNPRINTF 1 # endif # else /* Unix. */ # define SNPRINTF snprintf /* Here we need to call the native snprintf, not rpl_snprintf. */ # undef snprintf # endif #endif /* Here we need to call the native sprintf, not rpl_sprintf. */ #undef sprintf /* GCC >= 4.0 with -Wall emits unjustified "... may be used uninitialized" warnings in this file. Use -Dlint to suppress them. */ #if defined GCC_LINT || defined lint # define IF_LINT(Code) Code #else # define IF_LINT(Code) /* empty */ #endif /* Avoid some warnings from "gcc -Wshadow". This file doesn't use the exp() and remainder() functions. */ #undef exp #define exp expo #undef remainder #define remainder rem #if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF) && !WIDE_CHAR_VERSION # if (HAVE_STRNLEN && !defined _AIX) # define local_strnlen strnlen # else # ifndef local_strnlen_defined # define local_strnlen_defined 1 static size_t local_strnlen (const char *string, size_t maxlen) { const char *end = memchr (string, '\0', maxlen); return end ? (size_t) (end - string) : maxlen; } # endif # endif #endif #if (((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF) && WIDE_CHAR_VERSION) || ((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && !WIDE_CHAR_VERSION && DCHAR_IS_TCHAR)) && HAVE_WCHAR_T # if HAVE_WCSLEN # define local_wcslen wcslen # else /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid a dependency towards this library, here is a local substitute. Define this substitute only once, even if this file is included twice in the same compilation unit. */ # ifndef local_wcslen_defined # define local_wcslen_defined 1 static size_t local_wcslen (const wchar_t *s) { const wchar_t *ptr; for (ptr = s; *ptr != (wchar_t) 0; ptr++) ; return ptr - s; } # endif # endif #endif #if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF) && HAVE_WCHAR_T && WIDE_CHAR_VERSION # if HAVE_WCSNLEN # define local_wcsnlen wcsnlen # else # ifndef local_wcsnlen_defined # define local_wcsnlen_defined 1 static size_t local_wcsnlen (const wchar_t *s, size_t maxlen) { const wchar_t *ptr; for (ptr = s; maxlen > 0 && *ptr != (wchar_t) 0; ptr++, maxlen--) ; return ptr - s; } # endif # endif #endif #if (((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL) || ENABLE_WCHAR_FALLBACK) && HAVE_WCHAR_T) || (ENABLE_WCHAR_FALLBACK && HAVE_WINT_T)) && !WIDE_CHAR_VERSION # if ENABLE_WCHAR_FALLBACK static size_t wctomb_fallback (char *s, wchar_t wc) { static char hex[16] = "0123456789ABCDEF"; s[0] = '\\'; if (sizeof (wchar_t) > 2 && wc > 0xffff) { # if __STDC_ISO_10646__ || (__GLIBC__ >= 2) || (defined _WIN32 || defined __CYGWIN__) s[1] = 'U'; # else s[1] = 'W'; # endif s[2] = hex[(wc & 0xf0000000U) >> 28]; s[3] = hex[(wc & 0xf000000U) >> 24]; s[4] = hex[(wc & 0xf00000U) >> 20]; s[5] = hex[(wc & 0xf0000U) >> 16]; s[6] = hex[(wc & 0xf000U) >> 12]; s[7] = hex[(wc & 0xf00U) >> 8]; s[8] = hex[(wc & 0xf0U) >> 4]; s[9] = hex[wc & 0xfU]; return 10; } else { # if __STDC_ISO_10646__ || (__GLIBC__ >= 2) || (defined _WIN32 || defined __CYGWIN__) s[1] = 'u'; # else s[1] = 'w'; # endif s[2] = hex[(wc & 0xf000U) >> 12]; s[3] = hex[(wc & 0xf00U) >> 8]; s[4] = hex[(wc & 0xf0U) >> 4]; s[5] = hex[wc & 0xfU]; return 6; } } # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t static size_t local_wcrtomb (char *s, wchar_t wc, mbstate_t *ps) { size_t count = wcrtomb (s, wc, ps); if (count == (size_t)(-1)) count = wctomb_fallback (s, wc); return count; } # else static int local_wctomb (char *s, wchar_t wc) { int count = wctomb (s, wc); if (count < 0) count = wctomb_fallback (s, wc); return count; } # define local_wcrtomb(S, WC, PS) local_wctomb ((S), (WC)) # endif # else # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t # define local_wcrtomb(S, WC, PS) wcrtomb ((S), (WC), (PS)) # else # define local_wcrtomb(S, WC, PS) wctomb ((S), (WC)) # endif # endif #endif #if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL /* Determine the decimal-point character according to the current locale. */ # ifndef decimal_point_char_defined # define decimal_point_char_defined 1 static char decimal_point_char (void) { const char *point; /* Determine it in a multithread-safe way. We know nl_langinfo is multithread-safe on glibc systems and Mac OS X systems, but is not required to be multithread-safe by POSIX. sprintf(), however, is multithread-safe. localeconv() is rarely multithread-safe. */ # if HAVE_NL_LANGINFO && (__GLIBC__ || defined __UCLIBC__ || (defined __APPLE__ && defined __MACH__)) point = nl_langinfo (RADIXCHAR); # elif 1 char pointbuf[5]; sprintf (pointbuf, "%#.0f", 1.0); point = &pointbuf[1]; # else point = localeconv () -> decimal_point; # endif /* The decimal point is always a single byte: either '.' or ','. */ return (point[0] != '\0' ? point[0] : '.'); } # endif #endif #if NEED_PRINTF_INFINITE_DOUBLE && !NEED_PRINTF_DOUBLE && !defined IN_LIBINTL /* Equivalent to !isfinite(x) || x == 0, but does not require libm. */ static int is_infinite_or_zero (double x) { return isnand (x) || x + x == x; } #endif #if NEED_PRINTF_INFINITE_LONG_DOUBLE && !NEED_PRINTF_LONG_DOUBLE && !defined IN_LIBINTL /* Equivalent to !isfinite(x) || x == 0, but does not require libm. */ static int is_infinite_or_zerol (long double x) { return isnanl (x) || x + x == x; } #endif #if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL /* Converting 'long double' to decimal without rare rounding bugs requires real bignums. We use the naming conventions of GNU gmp, but vastly simpler (and slower) algorithms. */ typedef unsigned int mp_limb_t; # define GMP_LIMB_BITS 32 static_assert (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS); typedef unsigned long long mp_twolimb_t; # define GMP_TWOLIMB_BITS 64 static_assert (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS); /* Representation of a bignum >= 0. */ typedef struct { size_t nlimbs; mp_limb_t *limbs; /* Bits in little-endian order, allocated with malloc(). */ } mpn_t; /* Compute the product of two bignums >= 0. Return the allocated memory in case of success, NULL in case of memory allocation failure. */ static void * multiply (mpn_t src1, mpn_t src2, mpn_t *dest) { const mp_limb_t *p1; const mp_limb_t *p2; size_t len1; size_t len2; if (src1.nlimbs <= src2.nlimbs) { len1 = src1.nlimbs; p1 = src1.limbs; len2 = src2.nlimbs; p2 = src2.limbs; } else { len1 = src2.nlimbs; p1 = src2.limbs; len2 = src1.nlimbs; p2 = src1.limbs; } /* Now 0 <= len1 <= len2. */ if (len1 == 0) { /* src1 or src2 is zero. */ dest->nlimbs = 0; dest->limbs = (mp_limb_t *) malloc (1); } else { /* Here 1 <= len1 <= len2. */ size_t dlen; mp_limb_t *dp; size_t k, i, j; dlen = len1 + len2; dp = (mp_limb_t *) malloc (dlen * sizeof (mp_limb_t)); if (dp == NULL) return NULL; for (k = len2; k > 0; ) dp[--k] = 0; for (i = 0; i < len1; i++) { mp_limb_t digit1 = p1[i]; mp_twolimb_t carry = 0; for (j = 0; j < len2; j++) { mp_limb_t digit2 = p2[j]; carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2; carry += dp[i + j]; dp[i + j] = (mp_limb_t) carry; carry = carry >> GMP_LIMB_BITS; } dp[i + len2] = (mp_limb_t) carry; } /* Normalise. */ while (dlen > 0 && dp[dlen - 1] == 0) dlen--; dest->nlimbs = dlen; dest->limbs = dp; } return dest->limbs; } /* Compute the quotient of a bignum a >= 0 and a bignum b > 0. a is written as a = q * b + r with 0 <= r < b. q is the quotient, r the remainder. Finally, round-to-even is performed: If r > b/2 or if r = b/2 and q is odd, q is incremented. Return the allocated memory in case of success, NULL in case of memory allocation failure. */ static void * divide (mpn_t a, mpn_t b, mpn_t *q) { /* Algorithm: First normalise a and b: a=[a[m-1],...,a[0]], b=[b[n-1],...,b[0]] with m>=0 and n>0 (in base beta = 2^GMP_LIMB_BITS). If m=n=1, perform a single-precision division: r:=0, j:=m, while j>0 do {Here (q[m-1]*beta^(m-1)+...+q[j]*beta^j) * b[0] + r*beta^j = = a[m-1]*beta^(m-1)+...+a[j]*beta^j und 0<=r=n>1, perform a multiple-precision division: We have a/b < beta^(m-n+1). s:=intDsize-1-(highest bit in b[n-1]), 0<=s=beta/2. For j=m-n,...,0: {Here 0 <= r < b*beta^(j+1).} Compute q* : q* := floor((r[j+n]*beta+r[j+n-1])/b[n-1]). In case of overflow (q* >= beta) set q* := beta-1. Compute c2 := ((r[j+n]*beta+r[j+n-1]) - q* * b[n-1])*beta + r[j+n-2] and c3 := b[n-2] * q*. {We have 0 <= c2 < 2*beta^2, even 0 <= c2 < beta^2 if no overflow occurred. Furthermore 0 <= c3 < beta^2. If there was overflow and r[j+n]*beta+r[j+n-1] - q* * b[n-1] >= beta, i.e. c2 >= beta^2, the next test can be skipped.} While c3 > c2, {Here 0 <= c2 < c3 < beta^2} Put q* := q* - 1, c2 := c2 + b[n-1]*beta, c3 := c3 - b[n-2]. If q* > 0: Put r := r - b * q* * beta^j. In detail: [r[n+j],...,r[j]] := [r[n+j],...,r[j]] - q* * [b[n-1],...,b[0]]. hence: u:=0, for i:=0 to n-1 do u := u + q* * b[i], r[j+i]:=r[j+i]-(u mod beta) (+ beta, if carry), u:=u div beta (+ 1, if carry in subtraction) r[n+j]:=r[n+j]-u. {Since always u = (q* * [b[i-1],...,b[0]] div beta^i) + 1 < q* + 1 <= beta, the carry u does not overflow.} If a negative carry occurs, put q* := q* - 1 and [r[n+j],...,r[j]] := [r[n+j],...,r[j]] + [0,b[n-1],...,b[0]]. Set q[j] := q*. Normalise [q[m-n],..,q[0]]; this yields the quotient q. Shift [r[n-1],...,r[0]] right by s bits and normalise; this yields the rest r. The room for q[j] can be allocated at the memory location of r[n+j]. Finally, round-to-even: Shift r left by 1 bit. If r > b or if r = b and q[0] is odd, q := q+1. */ const mp_limb_t *a_ptr = a.limbs; size_t a_len = a.nlimbs; const mp_limb_t *b_ptr = b.limbs; size_t b_len = b.nlimbs; mp_limb_t *roomptr; mp_limb_t *tmp_roomptr = NULL; mp_limb_t *q_ptr; size_t q_len; mp_limb_t *r_ptr; size_t r_len; /* Allocate room for a_len+2 digits. (Need a_len+1 digits for the real division and 1 more digit for the final rounding of q.) */ roomptr = (mp_limb_t *) malloc ((a_len + 2) * sizeof (mp_limb_t)); if (roomptr == NULL) return NULL; /* Normalise a. */ while (a_len > 0 && a_ptr[a_len - 1] == 0) a_len--; /* Normalise b. */ for (;;) { if (b_len == 0) /* Division by zero. */ abort (); if (b_ptr[b_len - 1] == 0) b_len--; else break; } /* Here m = a_len >= 0 and n = b_len > 0. */ if (a_len < b_len) { /* m beta^(m-2) <= a/b < beta^m */ r_ptr = roomptr; q_ptr = roomptr + 1; { mp_limb_t den = b_ptr[0]; mp_limb_t remainder = 0; const mp_limb_t *sourceptr = a_ptr + a_len; mp_limb_t *destptr = q_ptr + a_len; size_t count; for (count = a_len; count > 0; count--) { mp_twolimb_t num = ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--sourceptr; *--destptr = num / den; remainder = num % den; } /* Normalise and store r. */ if (remainder > 0) { r_ptr[0] = remainder; r_len = 1; } else r_len = 0; /* Normalise q. */ q_len = a_len; if (q_ptr[q_len - 1] == 0) q_len--; } } else { /* n>1: multiple precision division. beta^(m-1) <= a < beta^m, beta^(n-1) <= b < beta^n ==> beta^(m-n-1) <= a/b < beta^(m-n+1). */ /* Determine s. */ size_t s; { mp_limb_t msd = b_ptr[b_len - 1]; /* = b[n-1], > 0 */ /* Determine s = GMP_LIMB_BITS - integer_length (msd). Code copied from gnulib's integer_length.c. */ # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) \ || (__clang_major__ >= 4) s = __builtin_clz (msd); # else # if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT if (GMP_LIMB_BITS <= DBL_MANT_BIT) { /* Use 'double' operations. Assumes an IEEE 754 'double' implementation. */ # define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7) # define DBL_EXP_BIAS (DBL_EXP_MASK / 2 - 1) # define NWORDS \ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) union { double value; unsigned int word[NWORDS]; } m; /* Use a single integer to floating-point conversion. */ m.value = msd; s = GMP_LIMB_BITS - (((m.word[DBL_EXPBIT0_WORD] >> DBL_EXPBIT0_BIT) & DBL_EXP_MASK) - DBL_EXP_BIAS); } else # undef NWORDS # endif { s = 31; if (msd >= 0x10000) { msd = msd >> 16; s -= 16; } if (msd >= 0x100) { msd = msd >> 8; s -= 8; } if (msd >= 0x10) { msd = msd >> 4; s -= 4; } if (msd >= 0x4) { msd = msd >> 2; s -= 2; } if (msd >= 0x2) { msd = msd >> 1; s -= 1; } } # endif } /* 0 <= s < GMP_LIMB_BITS. Copy b, shifting it left by s bits. */ if (s > 0) { tmp_roomptr = (mp_limb_t *) malloc (b_len * sizeof (mp_limb_t)); if (tmp_roomptr == NULL) { free (roomptr); return NULL; } { const mp_limb_t *sourceptr = b_ptr; mp_limb_t *destptr = tmp_roomptr; mp_twolimb_t accu = 0; size_t count; for (count = b_len; count > 0; count--) { accu += (mp_twolimb_t) *sourceptr++ << s; *destptr++ = (mp_limb_t) accu; accu = accu >> GMP_LIMB_BITS; } /* accu must be zero, since that was how s was determined. */ if (accu != 0) abort (); } b_ptr = tmp_roomptr; } /* Copy a, shifting it left by s bits, yields r. Memory layout: At the beginning: r = roomptr[0..a_len], at the end: r = roomptr[0..b_len-1], q = roomptr[b_len..a_len] */ r_ptr = roomptr; if (s == 0) { memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t)); r_ptr[a_len] = 0; } else { const mp_limb_t *sourceptr = a_ptr; mp_limb_t *destptr = r_ptr; mp_twolimb_t accu = 0; size_t count; for (count = a_len; count > 0; count--) { accu += (mp_twolimb_t) *sourceptr++ << s; *destptr++ = (mp_limb_t) accu; accu = accu >> GMP_LIMB_BITS; } *destptr++ = (mp_limb_t) accu; } q_ptr = roomptr + b_len; q_len = a_len - b_len + 1; /* q will have m-n+1 limbs */ { size_t j = a_len - b_len; /* m-n */ mp_limb_t b_msd = b_ptr[b_len - 1]; /* b[n-1] */ mp_limb_t b_2msd = b_ptr[b_len - 2]; /* b[n-2] */ mp_twolimb_t b_msdd = /* b[n-1]*beta+b[n-2] */ ((mp_twolimb_t) b_msd << GMP_LIMB_BITS) | b_2msd; /* Division loop, traversed m-n+1 times. j counts down, b is unchanged, beta/2 <= b[n-1] < beta. */ for (;;) { mp_limb_t q_star; mp_limb_t c1; if (r_ptr[j + b_len] < b_msd) /* r[j+n] < b[n-1] ? */ { /* Divide r[j+n]*beta+r[j+n-1] by b[n-1], no overflow. */ mp_twolimb_t num = ((mp_twolimb_t) r_ptr[j + b_len] << GMP_LIMB_BITS) | r_ptr[j + b_len - 1]; q_star = num / b_msd; c1 = num % b_msd; } else { /* Overflow, hence r[j+n]*beta+r[j+n-1] >= beta*b[n-1]. */ q_star = (mp_limb_t)~(mp_limb_t)0; /* q* = beta-1 */ /* Test whether r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] >= beta <==> r[j+n]*beta+r[j+n-1] + b[n-1] >= beta*b[n-1]+beta <==> b[n-1] < floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) {<= beta !}. If yes, jump directly to the subtraction loop. (Otherwise, r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] < beta <==> floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) = b[n-1] ) */ if (r_ptr[j + b_len] > b_msd || (c1 = r_ptr[j + b_len - 1] + b_msd) < b_msd) /* r[j+n] >= b[n-1]+1 or r[j+n] = b[n-1] and the addition r[j+n-1]+b[n-1] gives a carry. */ goto subtract; } /* q_star = q*, c1 = (r[j+n]*beta+r[j+n-1]) - q* * b[n-1] (>=0, 0, decrease it by b[n-1]*beta+b[n-2]. Because of b[n-1]*beta+b[n-2] >= beta^2/2 this can happen only twice. */ if (c3 > c2) { q_star = q_star - 1; /* q* := q* - 1 */ if (c3 - c2 > b_msdd) q_star = q_star - 1; /* q* := q* - 1 */ } } if (q_star > 0) subtract: { /* Subtract r := r - b * q* * beta^j. */ mp_limb_t cr; { const mp_limb_t *sourceptr = b_ptr; mp_limb_t *destptr = r_ptr + j; mp_twolimb_t carry = 0; size_t count; for (count = b_len; count > 0; count--) { /* Here 0 <= carry <= q*. */ carry = carry + (mp_twolimb_t) q_star * (mp_twolimb_t) *sourceptr++ + (mp_limb_t) ~(*destptr); /* Here 0 <= carry <= beta*q* + beta-1. */ *destptr++ = ~(mp_limb_t) carry; carry = carry >> GMP_LIMB_BITS; /* <= q* */ } cr = (mp_limb_t) carry; } /* Subtract cr from r_ptr[j + b_len], then forget about r_ptr[j + b_len]. */ if (cr > r_ptr[j + b_len]) { /* Subtraction gave a carry. */ q_star = q_star - 1; /* q* := q* - 1 */ /* Add b back. */ { const mp_limb_t *sourceptr = b_ptr; mp_limb_t *destptr = r_ptr + j; mp_limb_t carry = 0; size_t count; for (count = b_len; count > 0; count--) { mp_limb_t source1 = *sourceptr++; mp_limb_t source2 = *destptr; *destptr++ = source1 + source2 + carry; carry = (carry ? source1 >= (mp_limb_t) ~source2 : source1 > (mp_limb_t) ~source2); } } /* Forget about the carry and about r[j+n]. */ } } /* q* is determined. Store it as q[j]. */ q_ptr[j] = q_star; if (j == 0) break; j--; } } r_len = b_len; /* Normalise q. */ if (q_ptr[q_len - 1] == 0) q_len--; # if 0 /* Not needed here, since we need r only to compare it with b/2, and b is shifted left by s bits. */ /* Shift r right by s bits. */ if (s > 0) { mp_limb_t ptr = r_ptr + r_len; mp_twolimb_t accu = 0; size_t count; for (count = r_len; count > 0; count--) { accu = (mp_twolimb_t) (mp_limb_t) accu << GMP_LIMB_BITS; accu += (mp_twolimb_t) *--ptr << (GMP_LIMB_BITS - s); *ptr = (mp_limb_t) (accu >> GMP_LIMB_BITS); } } # endif /* Normalise r. */ while (r_len > 0 && r_ptr[r_len - 1] == 0) r_len--; } /* Compare r << 1 with b. */ if (r_len > b_len) goto increment_q; { size_t i; for (i = b_len;;) { mp_limb_t r_i = (i <= r_len && i > 0 ? r_ptr[i - 1] >> (GMP_LIMB_BITS - 1) : 0) | (i < r_len ? r_ptr[i] << 1 : 0); mp_limb_t b_i = (i < b_len ? b_ptr[i] : 0); if (r_i > b_i) goto increment_q; if (r_i < b_i) goto keep_q; if (i == 0) break; i--; } } if (q_len > 0 && ((q_ptr[0] & 1) != 0)) /* q is odd. */ increment_q: { size_t i; for (i = 0; i < q_len; i++) if (++(q_ptr[i]) != 0) goto keep_q; q_ptr[q_len++] = 1; } keep_q: free (tmp_roomptr); q->limbs = q_ptr; q->nlimbs = q_len; return roomptr; } /* Convert a bignum a >= 0, multiplied with 10^extra_zeroes, to decimal representation. Destroys the contents of a. Return the allocated memory - containing the decimal digits in low-to-high order, terminated with a NUL character - in case of success, NULL in case of memory allocation failure. */ static char * convert_to_decimal (mpn_t a, size_t extra_zeroes) { mp_limb_t *a_ptr = a.limbs; size_t a_len = a.nlimbs; /* 0.03345 is slightly larger than log(2)/(9*log(10)). */ size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1); /* We need extra_zeroes bytes for zeroes, followed by c_len bytes for the digits of a, followed by 1 byte for the terminating NUL. */ char *c_ptr = (char *) malloc (xsum (xsum (extra_zeroes, c_len), 1)); if (c_ptr != NULL) { char *d_ptr = c_ptr; for (; extra_zeroes > 0; extra_zeroes--) *d_ptr++ = '0'; while (a_len > 0) { /* Divide a by 10^9, in-place. */ mp_limb_t remainder = 0; mp_limb_t *ptr = a_ptr + a_len; size_t count; for (count = a_len; count > 0; count--) { mp_twolimb_t num = ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--ptr; *ptr = num / 1000000000; remainder = num % 1000000000; } /* Store the remainder as 9 decimal digits. */ for (count = 9; count > 0; count--) { *d_ptr++ = '0' + (remainder % 10); remainder = remainder / 10; } /* Normalize a. */ if (a_ptr[a_len - 1] == 0) a_len--; } /* Remove leading zeroes. */ while (d_ptr > c_ptr && d_ptr[-1] == '0') d_ptr--; /* But keep at least one zero. */ if (d_ptr == c_ptr) *d_ptr++ = '0'; /* Terminate the string. */ *d_ptr = '\0'; } return c_ptr; } # if NEED_PRINTF_LONG_DOUBLE /* Assuming x is finite and >= 0: write x as x = 2^e * m, where m is a bignum. Return the allocated memory in case of success, NULL in case of memory allocation failure. */ static void * decode_long_double (long double x, int *ep, mpn_t *mp) { mpn_t m; int exp; long double y; size_t i; /* Allocate memory for result. */ m.nlimbs = (LDBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS; m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t)); if (m.limbs == NULL) return NULL; /* Split into exponential part and mantissa. */ y = frexpl (x, &exp); if (!(y >= 0.0L && y < 1.0L)) abort (); /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * 2^LDBL_MANT_BIT), and the latter is an integer. */ /* Convert the mantissa (y * 2^LDBL_MANT_BIT) to a sequence of limbs. I'm not sure whether it's safe to cast a 'long double' value between 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only 'long double' values between 0 and 2^16 (to 'unsigned int' or 'int', doesn't matter). */ # if (LDBL_MANT_BIT % GMP_LIMB_BITS) != 0 # if (LDBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2 { mp_limb_t hi, lo; y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % (GMP_LIMB_BITS / 2)); hi = (int) y; y -= hi; if (!(y >= 0.0L && y < 1.0L)) abort (); y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); lo = (int) y; y -= lo; if (!(y >= 0.0L && y < 1.0L)) abort (); m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo; } # else { mp_limb_t d; y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % GMP_LIMB_BITS); d = (int) y; y -= d; if (!(y >= 0.0L && y < 1.0L)) abort (); m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = d; } # endif # endif for (i = LDBL_MANT_BIT / GMP_LIMB_BITS; i > 0; ) { mp_limb_t hi, lo; y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); hi = (int) y; y -= hi; if (!(y >= 0.0L && y < 1.0L)) abort (); y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); lo = (int) y; y -= lo; if (!(y >= 0.0L && y < 1.0L)) abort (); m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo; } # if 0 /* On FreeBSD 6.1/x86, 'long double' numbers sometimes have excess precision. */ if (!(y == 0.0L)) abort (); # endif /* Normalise. */ while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0) m.nlimbs--; *mp = m; *ep = exp - LDBL_MANT_BIT; return m.limbs; } # endif # if NEED_PRINTF_DOUBLE /* Assuming x is finite and >= 0: write x as x = 2^e * m, where m is a bignum. Return the allocated memory in case of success, NULL in case of memory allocation failure. */ static void * decode_double (double x, int *ep, mpn_t *mp) { mpn_t m; int exp; double y; size_t i; /* Allocate memory for result. */ m.nlimbs = (DBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS; m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t)); if (m.limbs == NULL) return NULL; /* Split into exponential part and mantissa. */ y = frexp (x, &exp); if (!(y >= 0.0 && y < 1.0)) abort (); /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * 2^DBL_MANT_BIT), and the latter is an integer. */ /* Convert the mantissa (y * 2^DBL_MANT_BIT) to a sequence of limbs. I'm not sure whether it's safe to cast a 'double' value between 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only 'double' values between 0 and 2^16 (to 'unsigned int' or 'int', doesn't matter). */ # if (DBL_MANT_BIT % GMP_LIMB_BITS) != 0 # if (DBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2 { mp_limb_t hi, lo; y *= (mp_limb_t) 1 << (DBL_MANT_BIT % (GMP_LIMB_BITS / 2)); hi = (int) y; y -= hi; if (!(y >= 0.0 && y < 1.0)) abort (); y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); lo = (int) y; y -= lo; if (!(y >= 0.0 && y < 1.0)) abort (); m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo; } # else { mp_limb_t d; y *= (mp_limb_t) 1 << (DBL_MANT_BIT % GMP_LIMB_BITS); d = (int) y; y -= d; if (!(y >= 0.0 && y < 1.0)) abort (); m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = d; } # endif # endif for (i = DBL_MANT_BIT / GMP_LIMB_BITS; i > 0; ) { mp_limb_t hi, lo; y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); hi = (int) y; y -= hi; if (!(y >= 0.0 && y < 1.0)) abort (); y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); lo = (int) y; y -= lo; if (!(y >= 0.0 && y < 1.0)) abort (); m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo; } if (!(y == 0.0)) abort (); /* Normalise. */ while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0) m.nlimbs--; *mp = m; *ep = exp - DBL_MANT_BIT; return m.limbs; } # endif /* Assuming x = 2^e * m is finite and >= 0, and n is an integer: Returns the decimal representation of round (x * 10^n). Return the allocated memory - containing the decimal digits in low-to-high order, terminated with a NUL character - in case of success, NULL in case of memory allocation failure. */ static char * scale10_round_decimal_decoded (int e, mpn_t m, void *memory, int n) { int s; size_t extra_zeroes; unsigned int abs_n; unsigned int abs_s; mp_limb_t *pow5_ptr; size_t pow5_len; unsigned int s_limbs; unsigned int s_bits; mpn_t pow5; mpn_t z; void *z_memory; char *digits; if (memory == NULL) return NULL; /* x = 2^e * m, hence y = round (2^e * 10^n * m) = round (2^(e+n) * 5^n * m) = round (2^s * 5^n * m). */ s = e + n; extra_zeroes = 0; /* Factor out a common power of 10 if possible. */ if (s > 0 && n > 0) { extra_zeroes = (s < n ? s : n); s -= extra_zeroes; n -= extra_zeroes; } /* Here y = round (2^s * 5^n * m) * 10^extra_zeroes. Before converting to decimal, we need to compute z = round (2^s * 5^n * m). */ /* Compute 5^|n|, possibly shifted by |s| bits if n and s have the same sign. 2.322 is slightly larger than log(5)/log(2). */ abs_n = (n >= 0 ? n : -n); abs_s = (s >= 0 ? s : -s); pow5_ptr = (mp_limb_t *) malloc (((int)(abs_n * (2.322f / GMP_LIMB_BITS)) + 1 + abs_s / GMP_LIMB_BITS + 1) * sizeof (mp_limb_t)); if (pow5_ptr == NULL) { free (memory); return NULL; } /* Initialize with 1. */ pow5_ptr[0] = 1; pow5_len = 1; /* Multiply with 5^|n|. */ if (abs_n > 0) { static mp_limb_t const small_pow5[13 + 1] = { 1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125, 244140625, 1220703125 }; unsigned int n13; for (n13 = 0; n13 <= abs_n; n13 += 13) { mp_limb_t digit1 = small_pow5[n13 + 13 <= abs_n ? 13 : abs_n - n13]; size_t j; mp_twolimb_t carry = 0; for (j = 0; j < pow5_len; j++) { mp_limb_t digit2 = pow5_ptr[j]; carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2; pow5_ptr[j] = (mp_limb_t) carry; carry = carry >> GMP_LIMB_BITS; } if (carry > 0) pow5_ptr[pow5_len++] = (mp_limb_t) carry; } } s_limbs = abs_s / GMP_LIMB_BITS; s_bits = abs_s % GMP_LIMB_BITS; if (n >= 0 ? s >= 0 : s <= 0) { /* Multiply with 2^|s|. */ if (s_bits > 0) { mp_limb_t *ptr = pow5_ptr; mp_twolimb_t accu = 0; size_t count; for (count = pow5_len; count > 0; count--) { accu += (mp_twolimb_t) *ptr << s_bits; *ptr++ = (mp_limb_t) accu; accu = accu >> GMP_LIMB_BITS; } if (accu > 0) { *ptr = (mp_limb_t) accu; pow5_len++; } } if (s_limbs > 0) { size_t count; for (count = pow5_len; count > 0;) { count--; pow5_ptr[s_limbs + count] = pow5_ptr[count]; } for (count = s_limbs; count > 0;) { count--; pow5_ptr[count] = 0; } pow5_len += s_limbs; } pow5.limbs = pow5_ptr; pow5.nlimbs = pow5_len; if (n >= 0) { /* Multiply m with pow5. No division needed. */ z_memory = multiply (m, pow5, &z); } else { /* Divide m by pow5 and round. */ z_memory = divide (m, pow5, &z); } } else { pow5.limbs = pow5_ptr; pow5.nlimbs = pow5_len; if (n >= 0) { /* n >= 0, s < 0. Multiply m with pow5, then divide by 2^|s|. */ mpn_t numerator; mpn_t denominator; void *tmp_memory; tmp_memory = multiply (m, pow5, &numerator); if (tmp_memory == NULL) { free (pow5_ptr); free (memory); return NULL; } /* Construct 2^|s|. */ { mp_limb_t *ptr = pow5_ptr + pow5_len; size_t i; for (i = 0; i < s_limbs; i++) ptr[i] = 0; ptr[s_limbs] = (mp_limb_t) 1 << s_bits; denominator.limbs = ptr; denominator.nlimbs = s_limbs + 1; } z_memory = divide (numerator, denominator, &z); free (tmp_memory); } else { /* n < 0, s > 0. Multiply m with 2^s, then divide by pow5. */ mpn_t numerator; mp_limb_t *num_ptr; num_ptr = (mp_limb_t *) malloc ((m.nlimbs + s_limbs + 1) * sizeof (mp_limb_t)); if (num_ptr == NULL) { free (pow5_ptr); free (memory); return NULL; } { mp_limb_t *destptr = num_ptr; { size_t i; for (i = 0; i < s_limbs; i++) *destptr++ = 0; } if (s_bits > 0) { const mp_limb_t *sourceptr = m.limbs; mp_twolimb_t accu = 0; size_t count; for (count = m.nlimbs; count > 0; count--) { accu += (mp_twolimb_t) *sourceptr++ << s_bits; *destptr++ = (mp_limb_t) accu; accu = accu >> GMP_LIMB_BITS; } if (accu > 0) *destptr++ = (mp_limb_t) accu; } else { const mp_limb_t *sourceptr = m.limbs; size_t count; for (count = m.nlimbs; count > 0; count--) *destptr++ = *sourceptr++; } numerator.limbs = num_ptr; numerator.nlimbs = destptr - num_ptr; } z_memory = divide (numerator, pow5, &z); free (num_ptr); } } free (pow5_ptr); free (memory); /* Here y = round (x * 10^n) = z * 10^extra_zeroes. */ if (z_memory == NULL) return NULL; digits = convert_to_decimal (z, extra_zeroes); free (z_memory); return digits; } # if NEED_PRINTF_LONG_DOUBLE /* Assuming x is finite and >= 0, and n is an integer: Returns the decimal representation of round (x * 10^n). Return the allocated memory - containing the decimal digits in low-to-high order, terminated with a NUL character - in case of success, NULL in case of memory allocation failure. */ static char * scale10_round_decimal_long_double (long double x, int n) { int e IF_LINT(= 0); mpn_t m; void *memory = decode_long_double (x, &e, &m); return scale10_round_decimal_decoded (e, m, memory, n); } # endif # if NEED_PRINTF_DOUBLE /* Assuming x is finite and >= 0, and n is an integer: Returns the decimal representation of round (x * 10^n). Return the allocated memory - containing the decimal digits in low-to-high order, terminated with a NUL character - in case of success, NULL in case of memory allocation failure. */ static char * scale10_round_decimal_double (double x, int n) { int e IF_LINT(= 0); mpn_t m; void *memory = decode_double (x, &e, &m); return scale10_round_decimal_decoded (e, m, memory, n); } # endif # if NEED_PRINTF_LONG_DOUBLE /* Assuming x is finite and > 0: Return an approximation for n with 10^n <= x < 10^(n+1). The approximation is usually the right n, but may be off by 1 sometimes. */ static int floorlog10l (long double x) { int exp; long double y; double z; double l; /* Split into exponential part and mantissa. */ y = frexpl (x, &exp); if (!(y >= 0.0L && y < 1.0L)) abort (); if (y == 0.0L) return INT_MIN; if (y < 0.5L) { while (y < (1.0L / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2)))) { y *= 1.0L * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2)); exp -= GMP_LIMB_BITS; } if (y < (1.0L / (1 << 16))) { y *= 1.0L * (1 << 16); exp -= 16; } if (y < (1.0L / (1 << 8))) { y *= 1.0L * (1 << 8); exp -= 8; } if (y < (1.0L / (1 << 4))) { y *= 1.0L * (1 << 4); exp -= 4; } if (y < (1.0L / (1 << 2))) { y *= 1.0L * (1 << 2); exp -= 2; } if (y < (1.0L / (1 << 1))) { y *= 1.0L * (1 << 1); exp -= 1; } } if (!(y >= 0.5L && y < 1.0L)) abort (); /* Compute an approximation for l = log2(x) = exp + log2(y). */ l = exp; z = y; if (z < 0.70710678118654752444) { z *= 1.4142135623730950488; l -= 0.5; } if (z < 0.8408964152537145431) { z *= 1.1892071150027210667; l -= 0.25; } if (z < 0.91700404320467123175) { z *= 1.0905077326652576592; l -= 0.125; } if (z < 0.9576032806985736469) { z *= 1.0442737824274138403; l -= 0.0625; } /* Now 0.95 <= z <= 1.01. */ z = 1 - z; /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...) Four terms are enough to get an approximation with error < 10^-7. */ l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25))); /* Finally multiply with log(2)/log(10), yields an approximation for log10(x). */ l *= 0.30102999566398119523; /* Round down to the next integer. */ return (int) l + (l < 0 ? -1 : 0); } # endif # if NEED_PRINTF_DOUBLE /* Assuming x is finite and > 0: Return an approximation for n with 10^n <= x < 10^(n+1). The approximation is usually the right n, but may be off by 1 sometimes. */ static int floorlog10 (double x) { int exp; double y; double z; double l; /* Split into exponential part and mantissa. */ y = frexp (x, &exp); if (!(y >= 0.0 && y < 1.0)) abort (); if (y == 0.0) return INT_MIN; if (y < 0.5) { while (y < (1.0 / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2)))) { y *= 1.0 * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2)); exp -= GMP_LIMB_BITS; } if (y < (1.0 / (1 << 16))) { y *= 1.0 * (1 << 16); exp -= 16; } if (y < (1.0 / (1 << 8))) { y *= 1.0 * (1 << 8); exp -= 8; } if (y < (1.0 / (1 << 4))) { y *= 1.0 * (1 << 4); exp -= 4; } if (y < (1.0 / (1 << 2))) { y *= 1.0 * (1 << 2); exp -= 2; } if (y < (1.0 / (1 << 1))) { y *= 1.0 * (1 << 1); exp -= 1; } } if (!(y >= 0.5 && y < 1.0)) abort (); /* Compute an approximation for l = log2(x) = exp + log2(y). */ l = exp; z = y; if (z < 0.70710678118654752444) { z *= 1.4142135623730950488; l -= 0.5; } if (z < 0.8408964152537145431) { z *= 1.1892071150027210667; l -= 0.25; } if (z < 0.91700404320467123175) { z *= 1.0905077326652576592; l -= 0.125; } if (z < 0.9576032806985736469) { z *= 1.0442737824274138403; l -= 0.0625; } /* Now 0.95 <= z <= 1.01. */ z = 1 - z; /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...) Four terms are enough to get an approximation with error < 10^-7. */ l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25))); /* Finally multiply with log(2)/log(10), yields an approximation for log10(x). */ l *= 0.30102999566398119523; /* Round down to the next integer. */ return (int) l + (l < 0 ? -1 : 0); } # endif /* Tests whether a string of digits consists of exactly PRECISION zeroes and a single '1' digit. */ static int is_borderline (const char *digits, size_t precision) { for (; precision > 0; precision--, digits++) if (*digits != '0') return 0; if (*digits != '1') return 0; digits++; return *digits == '\0'; } #endif #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF /* Use a different function name, to make it possible that the 'wchar_t' parametrization and the 'char' parametrization get compiled in the same translation unit. */ # if WIDE_CHAR_VERSION # define MAX_ROOM_NEEDED wmax_room_needed # else # define MAX_ROOM_NEEDED max_room_needed # endif /* Returns the number of TCHAR_T units needed as temporary space for the result of sprintf or SNPRINTF of a single conversion directive. */ static size_t MAX_ROOM_NEEDED (const arguments *ap, size_t arg_index, FCHAR_T conversion, arg_type type, int flags, size_t width, int has_precision, size_t precision, int pad_ourselves) { size_t tmp_length; switch (conversion) { case 'd': case 'i': case 'u': if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) tmp_length = (unsigned int) (sizeof (unsigned long long) * CHAR_BIT * 0.30103 /* binary -> decimal */ ) + 1; /* turn floor into ceil */ else if (type == TYPE_LONGINT || type == TYPE_ULONGINT) tmp_length = (unsigned int) (sizeof (unsigned long) * CHAR_BIT * 0.30103 /* binary -> decimal */ ) + 1; /* turn floor into ceil */ else tmp_length = (unsigned int) (sizeof (unsigned int) * CHAR_BIT * 0.30103 /* binary -> decimal */ ) + 1; /* turn floor into ceil */ if (tmp_length < precision) tmp_length = precision; /* Multiply by 2, as an estimate for FLAG_GROUP. */ tmp_length = xsum (tmp_length, tmp_length); /* Add 1, to account for a leading sign. */ tmp_length = xsum (tmp_length, 1); break; case 'o': if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) tmp_length = (unsigned int) (sizeof (unsigned long long) * CHAR_BIT * 0.333334 /* binary -> octal */ ) + 1; /* turn floor into ceil */ else if (type == TYPE_LONGINT || type == TYPE_ULONGINT) tmp_length = (unsigned int) (sizeof (unsigned long) * CHAR_BIT * 0.333334 /* binary -> octal */ ) + 1; /* turn floor into ceil */ else tmp_length = (unsigned int) (sizeof (unsigned int) * CHAR_BIT * 0.333334 /* binary -> octal */ ) + 1; /* turn floor into ceil */ if (tmp_length < precision) tmp_length = precision; /* Add 1, to account for a leading sign. */ tmp_length = xsum (tmp_length, 1); break; case 'x': case 'X': if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) tmp_length = (unsigned int) (sizeof (unsigned long long) * CHAR_BIT * 0.25 /* binary -> hexadecimal */ ) + 1; /* turn floor into ceil */ else if (type == TYPE_LONGINT || type == TYPE_ULONGINT) tmp_length = (unsigned int) (sizeof (unsigned long) * CHAR_BIT * 0.25 /* binary -> hexadecimal */ ) + 1; /* turn floor into ceil */ else tmp_length = (unsigned int) (sizeof (unsigned int) * CHAR_BIT * 0.25 /* binary -> hexadecimal */ ) + 1; /* turn floor into ceil */ if (tmp_length < precision) tmp_length = precision; /* Add 2, to account for a leading sign or alternate form. */ tmp_length = xsum (tmp_length, 2); break; case 'f': case 'F': if (type == TYPE_LONGDOUBLE) tmp_length = (unsigned int) (LDBL_MAX_EXP * 0.30103 /* binary -> decimal */ * 2 /* estimate for FLAG_GROUP */ ) + 1 /* turn floor into ceil */ + 10; /* sign, decimal point etc. */ else tmp_length = (unsigned int) (DBL_MAX_EXP * 0.30103 /* binary -> decimal */ * 2 /* estimate for FLAG_GROUP */ ) + 1 /* turn floor into ceil */ + 10; /* sign, decimal point etc. */ tmp_length = xsum (tmp_length, precision); break; case 'e': case 'E': case 'g': case 'G': tmp_length = 12; /* sign, decimal point, exponent etc. */ tmp_length = xsum (tmp_length, precision); break; case 'a': case 'A': if (type == TYPE_LONGDOUBLE) tmp_length = (unsigned int) (LDBL_DIG * 0.831 /* decimal -> hexadecimal */ ) + 1; /* turn floor into ceil */ else tmp_length = (unsigned int) (DBL_DIG * 0.831 /* decimal -> hexadecimal */ ) + 1; /* turn floor into ceil */ if (tmp_length < precision) tmp_length = precision; /* Account for sign, decimal point etc. */ tmp_length = xsum (tmp_length, 12); break; case 'c': # if HAVE_WINT_T && !WIDE_CHAR_VERSION if (type == TYPE_WIDE_CHAR) { tmp_length = MB_CUR_MAX; # if ENABLE_WCHAR_FALLBACK if (tmp_length < (sizeof (wchar_t) > 2 ? 10 : 6)) tmp_length = (sizeof (wchar_t) > 2 ? 10 : 6); # endif } else # endif tmp_length = 1; break; case 's': # if HAVE_WCHAR_T if (type == TYPE_WIDE_STRING) { # if WIDE_CHAR_VERSION /* ISO C says about %ls in fwprintf: "If the precision is not specified or is greater than the size of the array, the array shall contain a null wide character." So if there is a precision, we must not use wcslen. */ const wchar_t *arg = ap->arg[arg_index].a.a_wide_string; if (has_precision) tmp_length = local_wcsnlen (arg, precision); else tmp_length = local_wcslen (arg); # else /* ISO C says about %ls in fprintf: "If a precision is specified, no more than that many bytes are written (including shift sequences, if any), and the array shall contain a null wide character if, to equal the multibyte character sequence length given by the precision, the function would need to access a wide character one past the end of the array." So if there is a precision, we must not use wcslen. */ /* This case has already been handled separately in VASNPRINTF. */ abort (); # endif } else # endif { # if WIDE_CHAR_VERSION /* ISO C says about %s in fwprintf: "If the precision is not specified or is greater than the size of the converted array, the converted array shall contain a null wide character." So if there is a precision, we must not use strlen. */ /* This case has already been handled separately in VASNPRINTF. */ abort (); # else /* ISO C says about %s in fprintf: "If the precision is not specified or greater than the size of the array, the array shall contain a null character." So if there is a precision, we must not use strlen. */ const char *arg = ap->arg[arg_index].a.a_string; if (has_precision) tmp_length = local_strnlen (arg, precision); else tmp_length = strlen (arg); # endif } break; case 'p': tmp_length = (unsigned int) (sizeof (void *) * CHAR_BIT * 0.25 /* binary -> hexadecimal */ ) + 1 /* turn floor into ceil */ + 2; /* account for leading 0x */ break; default: abort (); } if (!pad_ourselves) { # if ENABLE_UNISTDIO /* Padding considers the number of characters, therefore the number of elements after padding may be > max (tmp_length, width) but is certainly <= tmp_length + width. */ tmp_length = xsum (tmp_length, width); # else /* Padding considers the number of elements, says POSIX. */ if (tmp_length < width) tmp_length = width; # endif } tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ return tmp_length; } #endif DCHAR_T * VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, const FCHAR_T *format, va_list args) { DIRECTIVES d; arguments a; if (PRINTF_PARSE (format, &d, &a) < 0) /* errno is already set. */ return NULL; /* Frees the memory allocated by this function. Preserves errno. */ #define CLEANUP() \ if (d.dir != d.direct_alloc_dir) \ free (d.dir); \ if (a.arg != a.direct_alloc_arg) \ free (a.arg); if (PRINTF_FETCHARGS (args, &a) < 0) goto fail_1_with_EINVAL; { size_t buf_neededlength; TCHAR_T *buf; TCHAR_T *buf_malloced; const FCHAR_T *cp; size_t i; DIRECTIVE *dp; /* Output string accumulator. */ DCHAR_T *result; size_t allocated; size_t length; /* Allocate a small buffer that will hold a directive passed to sprintf or snprintf. */ buf_neededlength = xsum4 (7, d.max_width_length, d.max_precision_length, 6); #if HAVE_ALLOCA if (buf_neededlength < 4000 / sizeof (TCHAR_T)) { buf = (TCHAR_T *) alloca (buf_neededlength * sizeof (TCHAR_T)); buf_malloced = NULL; } else #endif { size_t buf_memsize = xtimes (buf_neededlength, sizeof (TCHAR_T)); if (size_overflow_p (buf_memsize)) goto out_of_memory_1; buf = (TCHAR_T *) malloc (buf_memsize); if (buf == NULL) goto out_of_memory_1; buf_malloced = buf; } result = resultbuf; allocated = (resultbuf != NULL ? *lengthp : 0); length = 0; /* Invariants: result is either == resultbuf or malloc-allocated. If result == NULL, resultbuf is == NULL as well. If length > 0, then result != NULL. */ /* Ensures that allocated >= needed. Aborts through a jump to out_of_memory if needed is SIZE_MAX or otherwise too big. */ #define ENSURE_ALLOCATION_ELSE(needed, oom_statement) \ if ((needed) > allocated) \ { \ size_t memory_size; \ DCHAR_T *memory; \ \ allocated = (allocated > 0 ? xtimes (allocated, 2) : 12); \ if ((needed) > allocated) \ allocated = (needed); \ memory_size = xtimes (allocated, sizeof (DCHAR_T)); \ if (size_overflow_p (memory_size)) \ oom_statement \ if (result == resultbuf) \ memory = (DCHAR_T *) malloc (memory_size); \ else \ memory = (DCHAR_T *) realloc (result, memory_size); \ if (memory == NULL) \ oom_statement \ if (result == resultbuf && length > 0) \ DCHAR_CPY (memory, result, length); \ result = memory; \ } #define ENSURE_ALLOCATION(needed) \ ENSURE_ALLOCATION_ELSE((needed), goto out_of_memory; ) for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++) { if (cp != dp->dir_start) { size_t n = dp->dir_start - cp; size_t augmented_length = xsum (length, n); ENSURE_ALLOCATION (augmented_length); /* This copies a piece of FCHAR_T[] into a DCHAR_T[]. Here we need that the format string contains only ASCII characters if FCHAR_T and DCHAR_T are not the same type. */ if (sizeof (FCHAR_T) == sizeof (DCHAR_T)) { DCHAR_CPY (result + length, (const DCHAR_T *) cp, n); length = augmented_length; } else { do result[length++] = *cp++; while (--n > 0); } } if (i == d.count) break; /* Execute a single directive. */ if (dp->conversion == '%') { size_t augmented_length; if (!(dp->arg_index == ARG_NONE)) abort (); augmented_length = xsum (length, 1); ENSURE_ALLOCATION (augmented_length); result[length] = '%'; length = augmented_length; } else { if (!(dp->arg_index != ARG_NONE)) abort (); if (dp->conversion == 'n') { switch (a.arg[dp->arg_index].type) { case TYPE_COUNT_SCHAR_POINTER: *a.arg[dp->arg_index].a.a_count_schar_pointer = length; break; case TYPE_COUNT_SHORT_POINTER: *a.arg[dp->arg_index].a.a_count_short_pointer = length; break; case TYPE_COUNT_INT_POINTER: *a.arg[dp->arg_index].a.a_count_int_pointer = length; break; case TYPE_COUNT_LONGINT_POINTER: *a.arg[dp->arg_index].a.a_count_longint_pointer = length; break; case TYPE_COUNT_LONGLONGINT_POINTER: *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length; break; default: abort (); } } #if ENABLE_UNISTDIO /* The unistdio extensions. */ else if (dp->conversion == 'U') { arg_type type = a.arg[dp->arg_index].type; int flags = dp->flags; int has_width; size_t width; int has_precision; size_t precision; has_width = 0; width = 0; if (dp->width_start != dp->width_end) { if (dp->width_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->width_arg_index].a.a_int; width = arg; if (arg < 0) { /* "A negative field width is taken as a '-' flag followed by a positive field width." */ flags |= FLAG_LEFT; width = -width; } } else { const FCHAR_T *digitp = dp->width_start; do width = xsum (xtimes (width, 10), *digitp++ - '0'); while (digitp != dp->width_end); } has_width = 1; } has_precision = 0; precision = 0; if (dp->precision_start != dp->precision_end) { if (dp->precision_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->precision_arg_index].a.a_int; /* "A negative precision is taken as if the precision were omitted." */ if (arg >= 0) { precision = arg; has_precision = 1; } } else { const FCHAR_T *digitp = dp->precision_start + 1; precision = 0; while (digitp != dp->precision_end) precision = xsum (xtimes (precision, 10), *digitp++ - '0'); has_precision = 1; } } switch (type) { case TYPE_U8_STRING: { const uint8_t *arg = a.arg[dp->arg_index].a.a_u8_string; const uint8_t *arg_end; size_t characters; if (has_precision) { /* Use only PRECISION characters, from the left. */ arg_end = arg; characters = 0; for (; precision > 0; precision--) { int count = u8_strmblen (arg_end); if (count == 0) break; if (count < 0) goto fail_with_EILSEQ; arg_end += count; characters++; } } else if (has_width) { /* Use the entire string, and count the number of characters. */ arg_end = arg; characters = 0; for (;;) { int count = u8_strmblen (arg_end); if (count == 0) break; if (count < 0) goto fail_with_EILSEQ; arg_end += count; characters++; } } else { /* Use the entire string. */ arg_end = arg + u8_strlen (arg); /* The number of characters doesn't matter. */ characters = 0; } if (characters < width && !(flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } # if DCHAR_IS_UINT8_T { size_t n = arg_end - arg; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_CPY (result + length, arg, n); length += n; } # else { /* Convert. */ DCHAR_T *converted = result + length; size_t converted_len = allocated - length; # if DCHAR_IS_TCHAR /* Convert from UTF-8 to locale encoding. */ converted = u8_conv_to_encoding (locale_charset (), iconveh_question_mark, arg, arg_end - arg, NULL, converted, &converted_len); # else /* Convert from UTF-8 to UTF-16/UTF-32. */ converted = U8_TO_DCHAR (arg, arg_end - arg, converted, &converted_len); # endif if (converted == NULL) goto fail_with_errno; if (converted != result + length) { ENSURE_ALLOCATION_ELSE (xsum (length, converted_len), { free (converted); goto out_of_memory; }); DCHAR_CPY (result + length, converted, converted_len); free (converted); } length += converted_len; } # endif if (characters < width && (flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } } break; case TYPE_U16_STRING: { const uint16_t *arg = a.arg[dp->arg_index].a.a_u16_string; const uint16_t *arg_end; size_t characters; if (has_precision) { /* Use only PRECISION characters, from the left. */ arg_end = arg; characters = 0; for (; precision > 0; precision--) { int count = u16_strmblen (arg_end); if (count == 0) break; if (count < 0) goto fail_with_EILSEQ; arg_end += count; characters++; } } else if (has_width) { /* Use the entire string, and count the number of characters. */ arg_end = arg; characters = 0; for (;;) { int count = u16_strmblen (arg_end); if (count == 0) break; if (count < 0) goto fail_with_EILSEQ; arg_end += count; characters++; } } else { /* Use the entire string. */ arg_end = arg + u16_strlen (arg); /* The number of characters doesn't matter. */ characters = 0; } if (characters < width && !(flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } # if DCHAR_IS_UINT16_T { size_t n = arg_end - arg; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_CPY (result + length, arg, n); length += n; } # else { /* Convert. */ DCHAR_T *converted = result + length; size_t converted_len = allocated - length; # if DCHAR_IS_TCHAR /* Convert from UTF-16 to locale encoding. */ converted = u16_conv_to_encoding (locale_charset (), iconveh_question_mark, arg, arg_end - arg, NULL, converted, &converted_len); # else /* Convert from UTF-16 to UTF-8/UTF-32. */ converted = U16_TO_DCHAR (arg, arg_end - arg, converted, &converted_len); # endif if (converted == NULL) goto fail_with_errno; if (converted != result + length) { ENSURE_ALLOCATION_ELSE (xsum (length, converted_len), { free (converted); goto out_of_memory; }); DCHAR_CPY (result + length, converted, converted_len); free (converted); } length += converted_len; } # endif if (characters < width && (flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } } break; case TYPE_U32_STRING: { const uint32_t *arg = a.arg[dp->arg_index].a.a_u32_string; const uint32_t *arg_end; size_t characters; if (has_precision) { /* Use only PRECISION characters, from the left. */ arg_end = arg; characters = 0; for (; precision > 0; precision--) { int count = u32_strmblen (arg_end); if (count == 0) break; if (count < 0) goto fail_with_EILSEQ; arg_end += count; characters++; } } else if (has_width) { /* Use the entire string, and count the number of characters. */ arg_end = arg; characters = 0; for (;;) { int count = u32_strmblen (arg_end); if (count == 0) break; if (count < 0) goto fail_with_EILSEQ; arg_end += count; characters++; } } else { /* Use the entire string. */ arg_end = arg + u32_strlen (arg); /* The number of characters doesn't matter. */ characters = 0; } if (characters < width && !(flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } # if DCHAR_IS_UINT32_T { size_t n = arg_end - arg; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_CPY (result + length, arg, n); length += n; } # else { /* Convert. */ DCHAR_T *converted = result + length; size_t converted_len = allocated - length; # if DCHAR_IS_TCHAR /* Convert from UTF-32 to locale encoding. */ converted = u32_conv_to_encoding (locale_charset (), iconveh_question_mark, arg, arg_end - arg, NULL, converted, &converted_len); # else /* Convert from UTF-32 to UTF-8/UTF-16. */ converted = U32_TO_DCHAR (arg, arg_end - arg, converted, &converted_len); # endif if (converted == NULL) goto fail_with_errno; if (converted != result + length) { ENSURE_ALLOCATION_ELSE (xsum (length, converted_len), { free (converted); goto out_of_memory; }); DCHAR_CPY (result + length, converted, converted_len); free (converted); } length += converted_len; } # endif if (characters < width && (flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } } break; default: abort (); } } #endif #if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL) || ENABLE_WCHAR_FALLBACK) && HAVE_WCHAR_T else if (dp->conversion == 's' # if WIDE_CHAR_VERSION && a.arg[dp->arg_index].type != TYPE_WIDE_STRING # else && a.arg[dp->arg_index].type == TYPE_WIDE_STRING # endif ) { /* The normal handling of the 's' directive below requires allocating a temporary buffer. The determination of its length (tmp_length), in the case when a precision is specified, below requires a conversion between a char[] string and a wchar_t[] wide string. It could be done, but we have no guarantee that the implementation of sprintf will use the exactly same algorithm. Without this guarantee, it is possible to have buffer overrun bugs. In order to avoid such bugs, we implement the entire processing of the 's' directive ourselves. */ int flags = dp->flags; int has_width; size_t width; int has_precision; size_t precision; has_width = 0; width = 0; if (dp->width_start != dp->width_end) { if (dp->width_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->width_arg_index].a.a_int; width = arg; if (arg < 0) { /* "A negative field width is taken as a '-' flag followed by a positive field width." */ flags |= FLAG_LEFT; width = -width; } } else { const FCHAR_T *digitp = dp->width_start; do width = xsum (xtimes (width, 10), *digitp++ - '0'); while (digitp != dp->width_end); } has_width = 1; } has_precision = 0; precision = 6; if (dp->precision_start != dp->precision_end) { if (dp->precision_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->precision_arg_index].a.a_int; /* "A negative precision is taken as if the precision were omitted." */ if (arg >= 0) { precision = arg; has_precision = 1; } } else { const FCHAR_T *digitp = dp->precision_start + 1; precision = 0; while (digitp != dp->precision_end) precision = xsum (xtimes (precision, 10), *digitp++ - '0'); has_precision = 1; } } # if WIDE_CHAR_VERSION /* %s in vasnwprintf. See the specification of fwprintf. */ { const char *arg = a.arg[dp->arg_index].a.a_string; const char *arg_end; size_t characters; if (has_precision) { /* Use only as many bytes as needed to produce PRECISION wide characters, from the left. */ # if HAVE_MBRTOWC mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif arg_end = arg; characters = 0; for (; precision > 0; precision--) { int count; # if HAVE_MBRTOWC count = mbrlen (arg_end, MB_CUR_MAX, &state); # else count = mblen (arg_end, MB_CUR_MAX); # endif if (count == 0) /* Found the terminating NUL. */ break; if (count < 0) /* Invalid or incomplete multibyte character. */ goto fail_with_EILSEQ; arg_end += count; characters++; } } else if (has_width) { /* Use the entire string, and count the number of wide characters. */ # if HAVE_MBRTOWC mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif arg_end = arg; characters = 0; for (;;) { int count; # if HAVE_MBRTOWC count = mbrlen (arg_end, MB_CUR_MAX, &state); # else count = mblen (arg_end, MB_CUR_MAX); # endif if (count == 0) /* Found the terminating NUL. */ break; if (count < 0) /* Invalid or incomplete multibyte character. */ goto fail_with_EILSEQ; arg_end += count; characters++; } } else { /* Use the entire string. */ arg_end = arg + strlen (arg); /* The number of characters doesn't matter. */ characters = 0; } if (characters < width && !(flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } if (has_precision || has_width) { /* We know the number of wide characters in advance. */ size_t remaining; # if HAVE_MBRTOWC mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif ENSURE_ALLOCATION (xsum (length, characters)); for (remaining = characters; remaining > 0; remaining--) { wchar_t wc; int count; # if HAVE_MBRTOWC count = mbrtowc (&wc, arg, arg_end - arg, &state); # else count = mbtowc (&wc, arg, arg_end - arg); # endif if (count <= 0) /* mbrtowc not consistent with mbrlen, or mbtowc not consistent with mblen. */ abort (); result[length++] = wc; arg += count; } if (!(arg == arg_end)) abort (); } else { # if HAVE_MBRTOWC mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif while (arg < arg_end) { wchar_t wc; int count; # if HAVE_MBRTOWC count = mbrtowc (&wc, arg, arg_end - arg, &state); # else count = mbtowc (&wc, arg, arg_end - arg); # endif if (count <= 0) /* mbrtowc not consistent with mbrlen, or mbtowc not consistent with mblen. */ abort (); ENSURE_ALLOCATION (xsum (length, 1)); result[length++] = wc; arg += count; } } if (characters < width && (flags & FLAG_LEFT)) { size_t n = width - characters; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } } # else /* %ls in vasnprintf. See the specification of fprintf. */ { const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string; const wchar_t *arg_end; size_t characters; # if !DCHAR_IS_TCHAR /* This code assumes that TCHAR_T is 'char'. */ static_assert (sizeof (TCHAR_T) == 1); TCHAR_T *tmpsrc; DCHAR_T *tmpdst; size_t tmpdst_len; # endif size_t w; if (has_precision) { /* Use only as many wide characters as needed to produce at most PRECISION bytes, from the left. */ # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif arg_end = arg; characters = 0; while (precision > 0) { char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg_end == 0) /* Found the terminating null wide character. */ break; count = local_wcrtomb (cbuf, *arg_end, &state); if (count < 0) /* Cannot convert. */ goto fail_with_EILSEQ; if (precision < (unsigned int) count) break; arg_end++; characters += count; precision -= count; } } # if DCHAR_IS_TCHAR else if (has_width) # else else # endif { /* Use the entire string, and count the number of bytes. */ # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif arg_end = arg; characters = 0; for (;;) { char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg_end == 0) /* Found the terminating null wide character. */ break; count = local_wcrtomb (cbuf, *arg_end, &state); if (count < 0) /* Cannot convert. */ goto fail_with_EILSEQ; arg_end++; characters += count; } } # if DCHAR_IS_TCHAR else { /* Use the entire string. */ arg_end = arg + local_wcslen (arg); /* The number of bytes doesn't matter. */ characters = 0; } # endif # if !DCHAR_IS_TCHAR /* Convert the string into a piece of temporary memory. */ tmpsrc = (TCHAR_T *) malloc (characters * sizeof (TCHAR_T)); if (tmpsrc == NULL) goto out_of_memory; { TCHAR_T *tmpptr = tmpsrc; size_t remaining; # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif for (remaining = characters; remaining > 0; ) { char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg == 0) abort (); count = local_wcrtomb (cbuf, *arg, &state); if (count <= 0) /* Inconsistency. */ abort (); memcpy (tmpptr, cbuf, count); tmpptr += count; arg++; remaining -= count; } if (!(arg == arg_end)) abort (); } /* Convert from TCHAR_T[] to DCHAR_T[]. */ tmpdst = DCHAR_CONV_FROM_ENCODING (locale_charset (), iconveh_question_mark, tmpsrc, characters, NULL, NULL, &tmpdst_len); if (tmpdst == NULL) { free (tmpsrc); goto fail_with_errno; } free (tmpsrc); # endif if (has_width) { # if ENABLE_UNISTDIO /* Outside POSIX, it's preferable to compare the width against the number of _characters_ of the converted value. */ w = DCHAR_MBSNLEN (result + length, characters); # else /* The width is compared against the number of _bytes_ of the converted value, says POSIX. */ w = characters; # endif } else /* w doesn't matter. */ w = 0; if (w < width && !(flags & FLAG_LEFT)) { size_t n = width - w; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } # if DCHAR_IS_TCHAR if (has_precision || has_width) { /* We know the number of bytes in advance. */ size_t remaining; # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif ENSURE_ALLOCATION (xsum (length, characters)); for (remaining = characters; remaining > 0; ) { char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg == 0) abort (); count = local_wcrtomb (cbuf, *arg, &state); if (count <= 0) /* Inconsistency. */ abort (); memcpy (result + length, cbuf, count); length += count; arg++; remaining -= count; } if (!(arg == arg_end)) abort (); } else { # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif while (arg < arg_end) { char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; if (*arg == 0) abort (); count = local_wcrtomb (cbuf, *arg, &state); if (count <= 0) /* Cannot convert. */ goto fail_with_EILSEQ; ENSURE_ALLOCATION (xsum (length, count)); memcpy (result + length, cbuf, count); length += count; arg++; } } # else ENSURE_ALLOCATION_ELSE (xsum (length, tmpdst_len), { free (tmpdst); goto out_of_memory; }); DCHAR_CPY (result + length, tmpdst, tmpdst_len); free (tmpdst); length += tmpdst_len; # endif if (w < width && (flags & FLAG_LEFT)) { size_t n = width - w; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } } # endif } #endif #if ENABLE_WCHAR_FALLBACK && HAVE_WINT_T && !WIDE_CHAR_VERSION else if (dp->conversion == 'c' && a.arg[dp->arg_index].type == TYPE_WIDE_CHAR) { /* Implement the 'lc' directive ourselves, in order to provide the fallback that avoids EILSEQ. */ int flags = dp->flags; int has_width; size_t width; has_width = 0; width = 0; if (dp->width_start != dp->width_end) { if (dp->width_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->width_arg_index].a.a_int; width = arg; if (arg < 0) { /* "A negative field width is taken as a '-' flag followed by a positive field width." */ flags |= FLAG_LEFT; width = -width; } } else { const FCHAR_T *digitp = dp->width_start; do width = xsum (xtimes (width, 10), *digitp++ - '0'); while (digitp != dp->width_end); } has_width = 1; } /* %lc in vasnprintf. See the specification of fprintf. */ { wchar_t arg = (wchar_t) a.arg[dp->arg_index].a.a_wide_char; size_t characters; # if !DCHAR_IS_TCHAR /* This code assumes that TCHAR_T is 'char'. */ static_assert (sizeof (TCHAR_T) == 1); TCHAR_T tmpsrc[64]; /* Assume MB_CUR_MAX <= 64. */ DCHAR_T *tmpdst; size_t tmpdst_len; # endif size_t w; # if DCHAR_IS_TCHAR if (has_width) # endif { /* Count the number of bytes. */ characters = 0; if (arg != 0) { char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif count = local_wcrtomb (cbuf, arg, &state); if (count < 0) /* Inconsistency. */ abort (); characters = count; } } # if DCHAR_IS_TCHAR else { /* The number of bytes doesn't matter. */ characters = 0; } # endif # if !DCHAR_IS_TCHAR /* Convert the string into a piece of temporary memory. */ if (characters > 0) /* implies arg != 0 */ { char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif count = local_wcrtomb (cbuf, arg, &state); if (count <= 0) /* Inconsistency. */ abort (); memcpy (tmpsrc, cbuf, count); } /* Convert from TCHAR_T[] to DCHAR_T[]. */ tmpdst = DCHAR_CONV_FROM_ENCODING (locale_charset (), iconveh_question_mark, tmpsrc, characters, NULL, NULL, &tmpdst_len); if (tmpdst == NULL) goto fail_with_errno; # endif if (has_width) { # if ENABLE_UNISTDIO /* Outside POSIX, it's preferable to compare the width against the number of _characters_ of the converted value. */ w = DCHAR_MBSNLEN (result + length, characters); # else /* The width is compared against the number of _bytes_ of the converted value, says POSIX. */ w = characters; # endif } else /* w doesn't matter. */ w = 0; if (w < width && !(flags & FLAG_LEFT)) { size_t n = width - w; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } # if DCHAR_IS_TCHAR if (has_width) { /* We know the number of bytes in advance. */ ENSURE_ALLOCATION (xsum (length, characters)); if (characters > 0) /* implies arg != 0 */ { int count; # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif count = local_wcrtomb (result + length, arg, &state); if (count <= 0) /* Inconsistency. */ abort (); length += count; } } else { if (arg != 0) { char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ int count; # if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); # endif count = local_wcrtomb (cbuf, arg, &state); if (count <= 0) /* Inconsistency. */ abort (); ENSURE_ALLOCATION (xsum (length, count)); memcpy (result + length, cbuf, count); length += count; } } # else ENSURE_ALLOCATION_ELSE (xsum (length, tmpdst_len), { free (tmpdst); goto out_of_memory; }); DCHAR_CPY (result + length, tmpdst, tmpdst_len); free (tmpdst); length += tmpdst_len; # endif if (w < width && (flags & FLAG_LEFT)) { size_t n = width - w; ENSURE_ALLOCATION (xsum (length, n)); DCHAR_SET (result + length, ' ', n); length += n; } } } #endif #if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL else if ((dp->conversion == 'a' || dp->conversion == 'A') # if !(NEED_PRINTF_DIRECTIVE_A || (NEED_PRINTF_LONG_DOUBLE && NEED_PRINTF_DOUBLE)) && (0 # if NEED_PRINTF_DOUBLE || a.arg[dp->arg_index].type == TYPE_DOUBLE # endif # if NEED_PRINTF_LONG_DOUBLE || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE # endif ) # endif ) { arg_type type = a.arg[dp->arg_index].type; int flags = dp->flags; size_t width; int has_precision; size_t precision; size_t tmp_length; size_t count; DCHAR_T tmpbuf[700]; DCHAR_T *tmp; DCHAR_T *pad_ptr; DCHAR_T *p; width = 0; if (dp->width_start != dp->width_end) { if (dp->width_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->width_arg_index].a.a_int; width = arg; if (arg < 0) { /* "A negative field width is taken as a '-' flag followed by a positive field width." */ flags |= FLAG_LEFT; width = -width; } } else { const FCHAR_T *digitp = dp->width_start; do width = xsum (xtimes (width, 10), *digitp++ - '0'); while (digitp != dp->width_end); } } has_precision = 0; precision = 0; if (dp->precision_start != dp->precision_end) { if (dp->precision_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->precision_arg_index].a.a_int; /* "A negative precision is taken as if the precision were omitted." */ if (arg >= 0) { precision = arg; has_precision = 1; } } else { const FCHAR_T *digitp = dp->precision_start + 1; precision = 0; while (digitp != dp->precision_end) precision = xsum (xtimes (precision, 10), *digitp++ - '0'); has_precision = 1; } } /* Allocate a temporary buffer of sufficient size. */ if (type == TYPE_LONGDOUBLE) tmp_length = (unsigned int) ((LDBL_DIG + 1) * 0.831 /* decimal -> hexadecimal */ ) + 1; /* turn floor into ceil */ else tmp_length = (unsigned int) ((DBL_DIG + 1) * 0.831 /* decimal -> hexadecimal */ ) + 1; /* turn floor into ceil */ if (tmp_length < precision) tmp_length = precision; /* Account for sign, decimal point etc. */ tmp_length = xsum (tmp_length, 12); if (tmp_length < width) tmp_length = width; tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T)) tmp = tmpbuf; else { size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T)); if (size_overflow_p (tmp_memsize)) /* Overflow, would lead to out of memory. */ goto out_of_memory; tmp = (DCHAR_T *) malloc (tmp_memsize); if (tmp == NULL) /* Out of memory. */ goto out_of_memory; } pad_ptr = NULL; p = tmp; if (type == TYPE_LONGDOUBLE) { # if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE long double arg = a.arg[dp->arg_index].a.a_longdouble; if (isnanl (arg)) { if (dp->conversion == 'A') { *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; } else { *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; } } else { int sign = 0; DECL_LONG_DOUBLE_ROUNDING BEGIN_LONG_DOUBLE_ROUNDING (); if (signbit (arg)) /* arg < 0.0L or negative zero */ { sign = -1; arg = -arg; } if (sign < 0) *p++ = '-'; else if (flags & FLAG_SHOWSIGN) *p++ = '+'; else if (flags & FLAG_SPACE) *p++ = ' '; if (arg > 0.0L && arg + arg == arg) { if (dp->conversion == 'A') { *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; } else { *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; } } else { int exponent; long double mantissa; if (arg > 0.0L) mantissa = printf_frexpl (arg, &exponent); else { exponent = 0; mantissa = 0.0L; } if (has_precision && precision < (unsigned int) ((LDBL_DIG + 1) * 0.831) + 1) { /* Round the mantissa. */ long double tail = mantissa; size_t q; for (q = precision; ; q--) { int digit = (int) tail; tail -= digit; if (q == 0) { if (digit & 1 ? tail >= 0.5L : tail > 0.5L) tail = 1 - tail; else tail = - tail; break; } tail *= 16.0L; } if (tail != 0.0L) for (q = precision; q > 0; q--) tail *= 0.0625L; mantissa += tail; } *p++ = '0'; *p++ = dp->conversion - 'A' + 'X'; pad_ptr = p; { int digit; digit = (int) mantissa; mantissa -= digit; *p++ = '0' + digit; if ((flags & FLAG_ALT) || mantissa > 0.0L || precision > 0) { *p++ = decimal_point_char (); /* This loop terminates because we assume that FLT_RADIX is a power of 2. */ while (mantissa > 0.0L) { mantissa *= 16.0L; digit = (int) mantissa; mantissa -= digit; *p++ = digit + (digit < 10 ? '0' : dp->conversion - 10); if (precision > 0) precision--; } while (precision > 0) { *p++ = '0'; precision--; } } } *p++ = dp->conversion - 'A' + 'P'; # if WIDE_CHAR_VERSION { static const wchar_t decimal_format[] = { '%', '+', 'd', '\0' }; SNPRINTF (p, 6 + 1, decimal_format, exponent); } while (*p != '\0') p++; # else if (sizeof (DCHAR_T) == 1) { sprintf ((char *) p, "%+d", exponent); while (*p != '\0') p++; } else { char expbuf[6 + 1]; const char *ep; sprintf (expbuf, "%+d", exponent); for (ep = expbuf; (*p = *ep) != '\0'; ep++) p++; } # endif } END_LONG_DOUBLE_ROUNDING (); } # else abort (); # endif } else { # if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE double arg = a.arg[dp->arg_index].a.a_double; if (isnand (arg)) { if (dp->conversion == 'A') { *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; } else { *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; } } else { int sign = 0; if (signbit (arg)) /* arg < 0.0 or negative zero */ { sign = -1; arg = -arg; } if (sign < 0) *p++ = '-'; else if (flags & FLAG_SHOWSIGN) *p++ = '+'; else if (flags & FLAG_SPACE) *p++ = ' '; if (arg > 0.0 && arg + arg == arg) { if (dp->conversion == 'A') { *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; } else { *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; } } else { int exponent; double mantissa; if (arg > 0.0) mantissa = printf_frexp (arg, &exponent); else { exponent = 0; mantissa = 0.0; } if (has_precision && precision < (unsigned int) ((DBL_DIG + 1) * 0.831) + 1) { /* Round the mantissa. */ double tail = mantissa; size_t q; for (q = precision; ; q--) { int digit = (int) tail; tail -= digit; if (q == 0) { if (digit & 1 ? tail >= 0.5 : tail > 0.5) tail = 1 - tail; else tail = - tail; break; } tail *= 16.0; } if (tail != 0.0) for (q = precision; q > 0; q--) tail *= 0.0625; mantissa += tail; } *p++ = '0'; *p++ = dp->conversion - 'A' + 'X'; pad_ptr = p; { int digit; digit = (int) mantissa; mantissa -= digit; *p++ = '0' + digit; if ((flags & FLAG_ALT) || mantissa > 0.0 || precision > 0) { *p++ = decimal_point_char (); /* This loop terminates because we assume that FLT_RADIX is a power of 2. */ while (mantissa > 0.0) { mantissa *= 16.0; digit = (int) mantissa; mantissa -= digit; *p++ = digit + (digit < 10 ? '0' : dp->conversion - 10); if (precision > 0) precision--; } while (precision > 0) { *p++ = '0'; precision--; } } } *p++ = dp->conversion - 'A' + 'P'; # if WIDE_CHAR_VERSION { static const wchar_t decimal_format[] = { '%', '+', 'd', '\0' }; SNPRINTF (p, 6 + 1, decimal_format, exponent); } while (*p != '\0') p++; # else if (sizeof (DCHAR_T) == 1) { sprintf ((char *) p, "%+d", exponent); while (*p != '\0') p++; } else { char expbuf[6 + 1]; const char *ep; sprintf (expbuf, "%+d", exponent); for (ep = expbuf; (*p = *ep) != '\0'; ep++) p++; } # endif } } # else abort (); # endif } /* The generated string now extends from tmp to p, with the zero padding insertion point being at pad_ptr. */ count = p - tmp; if (count < width) { size_t pad = width - count; DCHAR_T *end = p + pad; if (flags & FLAG_LEFT) { /* Pad with spaces on the right. */ for (; pad > 0; pad--) *p++ = ' '; } else if ((flags & FLAG_ZERO) && pad_ptr != NULL) { /* Pad with zeroes. */ DCHAR_T *q = end; while (p > pad_ptr) *--q = *--p; for (; pad > 0; pad--) *p++ = '0'; } else { /* Pad with spaces on the left. */ DCHAR_T *q = end; while (p > tmp) *--q = *--p; for (; pad > 0; pad--) *p++ = ' '; } p = end; } count = p - tmp; if (count >= tmp_length) /* tmp_length was incorrectly calculated - fix the code above! */ abort (); /* Make room for the result. */ if (count >= allocated - length) { size_t n = xsum (length, count); ENSURE_ALLOCATION (n); } /* Append the result. */ memcpy (result + length, tmp, count * sizeof (DCHAR_T)); if (tmp != tmpbuf) free (tmp); length += count; } #endif #if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL else if ((dp->conversion == 'f' || dp->conversion == 'F' || dp->conversion == 'e' || dp->conversion == 'E' || dp->conversion == 'g' || dp->conversion == 'G' || dp->conversion == 'a' || dp->conversion == 'A') && (0 # if NEED_PRINTF_DOUBLE || a.arg[dp->arg_index].type == TYPE_DOUBLE # elif NEED_PRINTF_INFINITE_DOUBLE || (a.arg[dp->arg_index].type == TYPE_DOUBLE /* The systems (mingw) which produce wrong output for Inf, -Inf, and NaN also do so for -0.0. Therefore we treat this case here as well. */ && is_infinite_or_zero (a.arg[dp->arg_index].a.a_double)) # endif # if NEED_PRINTF_LONG_DOUBLE || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE # elif NEED_PRINTF_INFINITE_LONG_DOUBLE || (a.arg[dp->arg_index].type == TYPE_LONGDOUBLE /* Some systems produce wrong output for Inf, -Inf, and NaN. Some systems in this category (IRIX 5.3) also do so for -0.0. Therefore we treat this case here as well. */ && is_infinite_or_zerol (a.arg[dp->arg_index].a.a_longdouble)) # endif )) { # if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) arg_type type = a.arg[dp->arg_index].type; # endif int flags = dp->flags; size_t width; size_t count; int has_precision; size_t precision; size_t tmp_length; DCHAR_T tmpbuf[700]; DCHAR_T *tmp; DCHAR_T *pad_ptr; DCHAR_T *p; width = 0; if (dp->width_start != dp->width_end) { if (dp->width_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->width_arg_index].a.a_int; width = arg; if (arg < 0) { /* "A negative field width is taken as a '-' flag followed by a positive field width." */ flags |= FLAG_LEFT; width = -width; } } else { const FCHAR_T *digitp = dp->width_start; do width = xsum (xtimes (width, 10), *digitp++ - '0'); while (digitp != dp->width_end); } } has_precision = 0; precision = 0; if (dp->precision_start != dp->precision_end) { if (dp->precision_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->precision_arg_index].a.a_int; /* "A negative precision is taken as if the precision were omitted." */ if (arg >= 0) { precision = arg; has_precision = 1; } } else { const FCHAR_T *digitp = dp->precision_start + 1; precision = 0; while (digitp != dp->precision_end) precision = xsum (xtimes (precision, 10), *digitp++ - '0'); has_precision = 1; } } /* POSIX specifies the default precision to be 6 for %f, %F, %e, %E, but not for %g, %G. Implementations appear to use the same default precision also for %g, %G. But for %a, %A, the default precision is 0. */ if (!has_precision) if (!(dp->conversion == 'a' || dp->conversion == 'A')) precision = 6; /* Allocate a temporary buffer of sufficient size. */ # if NEED_PRINTF_DOUBLE && NEED_PRINTF_LONG_DOUBLE tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : DBL_DIG + 1); # elif NEED_PRINTF_INFINITE_DOUBLE && NEED_PRINTF_LONG_DOUBLE tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : 0); # elif NEED_PRINTF_LONG_DOUBLE tmp_length = LDBL_DIG + 1; # elif NEED_PRINTF_DOUBLE tmp_length = DBL_DIG + 1; # else tmp_length = 0; # endif if (tmp_length < precision) tmp_length = precision; # if NEED_PRINTF_LONG_DOUBLE # if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE if (type == TYPE_LONGDOUBLE) # endif if (dp->conversion == 'f' || dp->conversion == 'F') { long double arg = a.arg[dp->arg_index].a.a_longdouble; if (!(isnanl (arg) || arg + arg == arg)) { /* arg is finite and nonzero. */ int exponent = floorlog10l (arg < 0 ? -arg : arg); if (exponent >= 0 && tmp_length < exponent + precision) tmp_length = exponent + precision; } } # endif # if NEED_PRINTF_DOUBLE # if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE if (type == TYPE_DOUBLE) # endif if (dp->conversion == 'f' || dp->conversion == 'F') { double arg = a.arg[dp->arg_index].a.a_double; if (!(isnand (arg) || arg + arg == arg)) { /* arg is finite and nonzero. */ int exponent = floorlog10 (arg < 0 ? -arg : arg); if (exponent >= 0 && tmp_length < exponent + precision) tmp_length = exponent + precision; } } # endif /* Account for sign, decimal point etc. */ tmp_length = xsum (tmp_length, 12); if (tmp_length < width) tmp_length = width; tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T)) tmp = tmpbuf; else { size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T)); if (size_overflow_p (tmp_memsize)) /* Overflow, would lead to out of memory. */ goto out_of_memory; tmp = (DCHAR_T *) malloc (tmp_memsize); if (tmp == NULL) /* Out of memory. */ goto out_of_memory; } pad_ptr = NULL; p = tmp; # if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE # if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE if (type == TYPE_LONGDOUBLE) # endif { long double arg = a.arg[dp->arg_index].a.a_longdouble; if (isnanl (arg)) { if (dp->conversion >= 'A' && dp->conversion <= 'Z') { *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; } else { *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; } } else { int sign = 0; DECL_LONG_DOUBLE_ROUNDING BEGIN_LONG_DOUBLE_ROUNDING (); if (signbit (arg)) /* arg < 0.0L or negative zero */ { sign = -1; arg = -arg; } if (sign < 0) *p++ = '-'; else if (flags & FLAG_SHOWSIGN) *p++ = '+'; else if (flags & FLAG_SPACE) *p++ = ' '; if (arg > 0.0L && arg + arg == arg) { if (dp->conversion >= 'A' && dp->conversion <= 'Z') { *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; } else { *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; } } else { # if NEED_PRINTF_LONG_DOUBLE pad_ptr = p; if (dp->conversion == 'f' || dp->conversion == 'F') { char *digits; size_t ndigits; digits = scale10_round_decimal_long_double (arg, precision); if (digits == NULL) { END_LONG_DOUBLE_ROUNDING (); goto out_of_memory; } ndigits = strlen (digits); if (ndigits > precision) do { --ndigits; *p++ = digits[ndigits]; } while (ndigits > precision); else *p++ = '0'; /* Here ndigits <= precision. */ if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > ndigits; precision--) *p++ = '0'; while (ndigits > 0) { --ndigits; *p++ = digits[ndigits]; } } free (digits); } else if (dp->conversion == 'e' || dp->conversion == 'E') { int exponent; if (arg == 0.0L) { exponent = 0; *p++ = '0'; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > 0; precision--) *p++ = '0'; } } else { /* arg > 0.0L. */ int adjusted; char *digits; size_t ndigits; exponent = floorlog10l (arg); adjusted = 0; for (;;) { digits = scale10_round_decimal_long_double (arg, (int)precision - exponent); if (digits == NULL) { END_LONG_DOUBLE_ROUNDING (); goto out_of_memory; } ndigits = strlen (digits); if (ndigits == precision + 1) break; if (ndigits < precision || ndigits > precision + 2) /* The exponent was not guessed precisely enough. */ abort (); if (adjusted) /* None of two values of exponent is the right one. Prevent an endless loop. */ abort (); free (digits); if (ndigits == precision) exponent -= 1; else exponent += 1; adjusted = 1; } /* Here ndigits = precision+1. */ if (is_borderline (digits, precision)) { /* Maybe the exponent guess was too high and a smaller exponent can be reached by turning a 10...0 into 9...9x. */ char *digits2 = scale10_round_decimal_long_double (arg, (int)precision - exponent + 1); if (digits2 == NULL) { free (digits); END_LONG_DOUBLE_ROUNDING (); goto out_of_memory; } if (strlen (digits2) == precision + 1) { free (digits); digits = digits2; exponent -= 1; } else free (digits2); } /* Here ndigits = precision+1. */ *p++ = digits[--ndigits]; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); while (ndigits > 0) { --ndigits; *p++ = digits[ndigits]; } } free (digits); } *p++ = dp->conversion; /* 'e' or 'E' */ # if WIDE_CHAR_VERSION { static const wchar_t decimal_format[] = { '%', '+', '.', '2', 'd', '\0' }; SNPRINTF (p, 6 + 1, decimal_format, exponent); } while (*p != '\0') p++; # else if (sizeof (DCHAR_T) == 1) { sprintf ((char *) p, "%+.2d", exponent); while (*p != '\0') p++; } else { char expbuf[6 + 1]; const char *ep; sprintf (expbuf, "%+.2d", exponent); for (ep = expbuf; (*p = *ep) != '\0'; ep++) p++; } # endif } else if (dp->conversion == 'g' || dp->conversion == 'G') { if (precision == 0) precision = 1; /* precision >= 1. */ if (arg == 0.0L) /* The exponent is 0, >= -4, < precision. Use fixed-point notation. */ { size_t ndigits = precision; /* Number of trailing zeroes that have to be dropped. */ size_t nzeroes = (flags & FLAG_ALT ? 0 : precision - 1); --ndigits; *p++ = '0'; if ((flags & FLAG_ALT) || ndigits > nzeroes) { *p++ = decimal_point_char (); while (ndigits > nzeroes) { --ndigits; *p++ = '0'; } } } else { /* arg > 0.0L. */ int exponent; int adjusted; char *digits; size_t ndigits; size_t nzeroes; exponent = floorlog10l (arg); adjusted = 0; for (;;) { digits = scale10_round_decimal_long_double (arg, (int)(precision - 1) - exponent); if (digits == NULL) { END_LONG_DOUBLE_ROUNDING (); goto out_of_memory; } ndigits = strlen (digits); if (ndigits == precision) break; if (ndigits < precision - 1 || ndigits > precision + 1) /* The exponent was not guessed precisely enough. */ abort (); if (adjusted) /* None of two values of exponent is the right one. Prevent an endless loop. */ abort (); free (digits); if (ndigits < precision) exponent -= 1; else exponent += 1; adjusted = 1; } /* Here ndigits = precision. */ if (is_borderline (digits, precision - 1)) { /* Maybe the exponent guess was too high and a smaller exponent can be reached by turning a 10...0 into 9...9x. */ char *digits2 = scale10_round_decimal_long_double (arg, (int)(precision - 1) - exponent + 1); if (digits2 == NULL) { free (digits); END_LONG_DOUBLE_ROUNDING (); goto out_of_memory; } if (strlen (digits2) == precision) { free (digits); digits = digits2; exponent -= 1; } else free (digits2); } /* Here ndigits = precision. */ /* Determine the number of trailing zeroes that have to be dropped. */ nzeroes = 0; if ((flags & FLAG_ALT) == 0) while (nzeroes < ndigits && digits[nzeroes] == '0') nzeroes++; /* The exponent is now determined. */ if (exponent >= -4 && exponent < (long)precision) { /* Fixed-point notation: max(exponent,0)+1 digits, then the decimal point, then the remaining digits without trailing zeroes. */ if (exponent >= 0) { size_t ecount = exponent + 1; /* Note: count <= precision = ndigits. */ for (; ecount > 0; ecount--) *p++ = digits[--ndigits]; if ((flags & FLAG_ALT) || ndigits > nzeroes) { *p++ = decimal_point_char (); while (ndigits > nzeroes) { --ndigits; *p++ = digits[ndigits]; } } } else { size_t ecount = -exponent - 1; *p++ = '0'; *p++ = decimal_point_char (); for (; ecount > 0; ecount--) *p++ = '0'; while (ndigits > nzeroes) { --ndigits; *p++ = digits[ndigits]; } } } else { /* Exponential notation. */ *p++ = digits[--ndigits]; if ((flags & FLAG_ALT) || ndigits > nzeroes) { *p++ = decimal_point_char (); while (ndigits > nzeroes) { --ndigits; *p++ = digits[ndigits]; } } *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */ # if WIDE_CHAR_VERSION { static const wchar_t decimal_format[] = { '%', '+', '.', '2', 'd', '\0' }; SNPRINTF (p, 6 + 1, decimal_format, exponent); } while (*p != '\0') p++; # else if (sizeof (DCHAR_T) == 1) { sprintf ((char *) p, "%+.2d", exponent); while (*p != '\0') p++; } else { char expbuf[6 + 1]; const char *ep; sprintf (expbuf, "%+.2d", exponent); for (ep = expbuf; (*p = *ep) != '\0'; ep++) p++; } # endif } free (digits); } } else abort (); # else /* arg is finite. */ if (!(arg == 0.0L)) abort (); pad_ptr = p; if (dp->conversion == 'f' || dp->conversion == 'F') { *p++ = '0'; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > 0; precision--) *p++ = '0'; } } else if (dp->conversion == 'e' || dp->conversion == 'E') { *p++ = '0'; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > 0; precision--) *p++ = '0'; } *p++ = dp->conversion; /* 'e' or 'E' */ *p++ = '+'; *p++ = '0'; *p++ = '0'; } else if (dp->conversion == 'g' || dp->conversion == 'G') { *p++ = '0'; if (flags & FLAG_ALT) { size_t ndigits = (precision > 0 ? precision - 1 : 0); *p++ = decimal_point_char (); for (; ndigits > 0; --ndigits) *p++ = '0'; } } else if (dp->conversion == 'a' || dp->conversion == 'A') { *p++ = '0'; *p++ = dp->conversion - 'A' + 'X'; pad_ptr = p; *p++ = '0'; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > 0; precision--) *p++ = '0'; } *p++ = dp->conversion - 'A' + 'P'; *p++ = '+'; *p++ = '0'; } else abort (); # endif } END_LONG_DOUBLE_ROUNDING (); } } # if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE else # endif # endif # if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE { double arg = a.arg[dp->arg_index].a.a_double; if (isnand (arg)) { if (dp->conversion >= 'A' && dp->conversion <= 'Z') { *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; } else { *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; } } else { int sign = 0; if (signbit (arg)) /* arg < 0.0 or negative zero */ { sign = -1; arg = -arg; } if (sign < 0) *p++ = '-'; else if (flags & FLAG_SHOWSIGN) *p++ = '+'; else if (flags & FLAG_SPACE) *p++ = ' '; if (arg > 0.0 && arg + arg == arg) { if (dp->conversion >= 'A' && dp->conversion <= 'Z') { *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; } else { *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; } } else { # if NEED_PRINTF_DOUBLE pad_ptr = p; if (dp->conversion == 'f' || dp->conversion == 'F') { char *digits; size_t ndigits; digits = scale10_round_decimal_double (arg, precision); if (digits == NULL) goto out_of_memory; ndigits = strlen (digits); if (ndigits > precision) do { --ndigits; *p++ = digits[ndigits]; } while (ndigits > precision); else *p++ = '0'; /* Here ndigits <= precision. */ if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > ndigits; precision--) *p++ = '0'; while (ndigits > 0) { --ndigits; *p++ = digits[ndigits]; } } free (digits); } else if (dp->conversion == 'e' || dp->conversion == 'E') { int exponent; if (arg == 0.0) { exponent = 0; *p++ = '0'; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > 0; precision--) *p++ = '0'; } } else { /* arg > 0.0. */ int adjusted; char *digits; size_t ndigits; exponent = floorlog10 (arg); adjusted = 0; for (;;) { digits = scale10_round_decimal_double (arg, (int)precision - exponent); if (digits == NULL) goto out_of_memory; ndigits = strlen (digits); if (ndigits == precision + 1) break; if (ndigits < precision || ndigits > precision + 2) /* The exponent was not guessed precisely enough. */ abort (); if (adjusted) /* None of two values of exponent is the right one. Prevent an endless loop. */ abort (); free (digits); if (ndigits == precision) exponent -= 1; else exponent += 1; adjusted = 1; } /* Here ndigits = precision+1. */ if (is_borderline (digits, precision)) { /* Maybe the exponent guess was too high and a smaller exponent can be reached by turning a 10...0 into 9...9x. */ char *digits2 = scale10_round_decimal_double (arg, (int)precision - exponent + 1); if (digits2 == NULL) { free (digits); goto out_of_memory; } if (strlen (digits2) == precision + 1) { free (digits); digits = digits2; exponent -= 1; } else free (digits2); } /* Here ndigits = precision+1. */ *p++ = digits[--ndigits]; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); while (ndigits > 0) { --ndigits; *p++ = digits[ndigits]; } } free (digits); } *p++ = dp->conversion; /* 'e' or 'E' */ # if WIDE_CHAR_VERSION { static const wchar_t decimal_format[] = /* Produce the same number of exponent digits as the native printf implementation. */ # if defined _WIN32 && ! defined __CYGWIN__ { '%', '+', '.', '3', 'd', '\0' }; # else { '%', '+', '.', '2', 'd', '\0' }; # endif SNPRINTF (p, 6 + 1, decimal_format, exponent); } while (*p != '\0') p++; # else { static const char decimal_format[] = /* Produce the same number of exponent digits as the native printf implementation. */ # if defined _WIN32 && ! defined __CYGWIN__ "%+.3d"; # else "%+.2d"; # endif if (sizeof (DCHAR_T) == 1) { sprintf ((char *) p, decimal_format, exponent); while (*p != '\0') p++; } else { char expbuf[6 + 1]; const char *ep; sprintf (expbuf, decimal_format, exponent); for (ep = expbuf; (*p = *ep) != '\0'; ep++) p++; } } # endif } else if (dp->conversion == 'g' || dp->conversion == 'G') { if (precision == 0) precision = 1; /* precision >= 1. */ if (arg == 0.0) /* The exponent is 0, >= -4, < precision. Use fixed-point notation. */ { size_t ndigits = precision; /* Number of trailing zeroes that have to be dropped. */ size_t nzeroes = (flags & FLAG_ALT ? 0 : precision - 1); --ndigits; *p++ = '0'; if ((flags & FLAG_ALT) || ndigits > nzeroes) { *p++ = decimal_point_char (); while (ndigits > nzeroes) { --ndigits; *p++ = '0'; } } } else { /* arg > 0.0. */ int exponent; int adjusted; char *digits; size_t ndigits; size_t nzeroes; exponent = floorlog10 (arg); adjusted = 0; for (;;) { digits = scale10_round_decimal_double (arg, (int)(precision - 1) - exponent); if (digits == NULL) goto out_of_memory; ndigits = strlen (digits); if (ndigits == precision) break; if (ndigits < precision - 1 || ndigits > precision + 1) /* The exponent was not guessed precisely enough. */ abort (); if (adjusted) /* None of two values of exponent is the right one. Prevent an endless loop. */ abort (); free (digits); if (ndigits < precision) exponent -= 1; else exponent += 1; adjusted = 1; } /* Here ndigits = precision. */ if (is_borderline (digits, precision - 1)) { /* Maybe the exponent guess was too high and a smaller exponent can be reached by turning a 10...0 into 9...9x. */ char *digits2 = scale10_round_decimal_double (arg, (int)(precision - 1) - exponent + 1); if (digits2 == NULL) { free (digits); goto out_of_memory; } if (strlen (digits2) == precision) { free (digits); digits = digits2; exponent -= 1; } else free (digits2); } /* Here ndigits = precision. */ /* Determine the number of trailing zeroes that have to be dropped. */ nzeroes = 0; if ((flags & FLAG_ALT) == 0) while (nzeroes < ndigits && digits[nzeroes] == '0') nzeroes++; /* The exponent is now determined. */ if (exponent >= -4 && exponent < (long)precision) { /* Fixed-point notation: max(exponent,0)+1 digits, then the decimal point, then the remaining digits without trailing zeroes. */ if (exponent >= 0) { size_t ecount = exponent + 1; /* Note: ecount <= precision = ndigits. */ for (; ecount > 0; ecount--) *p++ = digits[--ndigits]; if ((flags & FLAG_ALT) || ndigits > nzeroes) { *p++ = decimal_point_char (); while (ndigits > nzeroes) { --ndigits; *p++ = digits[ndigits]; } } } else { size_t ecount = -exponent - 1; *p++ = '0'; *p++ = decimal_point_char (); for (; ecount > 0; ecount--) *p++ = '0'; while (ndigits > nzeroes) { --ndigits; *p++ = digits[ndigits]; } } } else { /* Exponential notation. */ *p++ = digits[--ndigits]; if ((flags & FLAG_ALT) || ndigits > nzeroes) { *p++ = decimal_point_char (); while (ndigits > nzeroes) { --ndigits; *p++ = digits[ndigits]; } } *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */ # if WIDE_CHAR_VERSION { static const wchar_t decimal_format[] = /* Produce the same number of exponent digits as the native printf implementation. */ # if defined _WIN32 && ! defined __CYGWIN__ { '%', '+', '.', '3', 'd', '\0' }; # else { '%', '+', '.', '2', 'd', '\0' }; # endif SNPRINTF (p, 6 + 1, decimal_format, exponent); } while (*p != '\0') p++; # else { static const char decimal_format[] = /* Produce the same number of exponent digits as the native printf implementation. */ # if defined _WIN32 && ! defined __CYGWIN__ "%+.3d"; # else "%+.2d"; # endif if (sizeof (DCHAR_T) == 1) { sprintf ((char *) p, decimal_format, exponent); while (*p != '\0') p++; } else { char expbuf[6 + 1]; const char *ep; sprintf (expbuf, decimal_format, exponent); for (ep = expbuf; (*p = *ep) != '\0'; ep++) p++; } } # endif } free (digits); } } else abort (); # else /* arg is finite. */ if (!(arg == 0.0)) abort (); pad_ptr = p; if (dp->conversion == 'f' || dp->conversion == 'F') { *p++ = '0'; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > 0; precision--) *p++ = '0'; } } else if (dp->conversion == 'e' || dp->conversion == 'E') { *p++ = '0'; if ((flags & FLAG_ALT) || precision > 0) { *p++ = decimal_point_char (); for (; precision > 0; precision--) *p++ = '0'; } *p++ = dp->conversion; /* 'e' or 'E' */ *p++ = '+'; /* Produce the same number of exponent digits as the native printf implementation. */ # if defined _WIN32 && ! defined __CYGWIN__ *p++ = '0'; # endif *p++ = '0'; *p++ = '0'; } else if (dp->conversion == 'g' || dp->conversion == 'G') { *p++ = '0'; if (flags & FLAG_ALT) { size_t ndigits = (precision > 0 ? precision - 1 : 0); *p++ = decimal_point_char (); for (; ndigits > 0; --ndigits) *p++ = '0'; } } else abort (); # endif } } } # endif /* The generated string now extends from tmp to p, with the zero padding insertion point being at pad_ptr. */ count = p - tmp; if (count < width) { size_t pad = width - count; DCHAR_T *end = p + pad; if (flags & FLAG_LEFT) { /* Pad with spaces on the right. */ for (; pad > 0; pad--) *p++ = ' '; } else if ((flags & FLAG_ZERO) && pad_ptr != NULL) { /* Pad with zeroes. */ DCHAR_T *q = end; while (p > pad_ptr) *--q = *--p; for (; pad > 0; pad--) *p++ = '0'; } else { /* Pad with spaces on the left. */ DCHAR_T *q = end; while (p > tmp) *--q = *--p; for (; pad > 0; pad--) *p++ = ' '; } p = end; } count = p - tmp; if (count >= tmp_length) /* tmp_length was incorrectly calculated - fix the code above! */ abort (); /* Make room for the result. */ if (count >= allocated - length) { size_t n = xsum (length, count); ENSURE_ALLOCATION (n); } /* Append the result. */ memcpy (result + length, tmp, count * sizeof (DCHAR_T)); if (tmp != tmpbuf) free (tmp); length += count; } #endif else { arg_type type = a.arg[dp->arg_index].type; int flags = dp->flags; #if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION int has_width; #endif #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION size_t width; #endif #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION int has_precision; size_t precision; #endif #if NEED_PRINTF_UNBOUNDED_PRECISION int prec_ourselves; #else # define prec_ourselves 0 #endif #if NEED_PRINTF_FLAG_LEFTADJUST # define pad_ourselves 1 #elif !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION int pad_ourselves; #else # define pad_ourselves 0 #endif TCHAR_T *fbp; unsigned int prefix_count; int prefixes[2] IF_LINT (= { 0 }); int orig_errno; #if !USE_SNPRINTF size_t tmp_length; TCHAR_T tmpbuf[700]; TCHAR_T *tmp; #endif #if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION has_width = 0; #endif #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION width = 0; if (dp->width_start != dp->width_end) { if (dp->width_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->width_arg_index].a.a_int; width = arg; if (arg < 0) { /* "A negative field width is taken as a '-' flag followed by a positive field width." */ flags |= FLAG_LEFT; width = -width; } } else { const FCHAR_T *digitp = dp->width_start; do width = xsum (xtimes (width, 10), *digitp++ - '0'); while (digitp != dp->width_end); } #if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION has_width = 1; #endif } #endif #if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || NEED_PRINTF_UNBOUNDED_PRECISION has_precision = 0; precision = 6; if (dp->precision_start != dp->precision_end) { if (dp->precision_arg_index != ARG_NONE) { int arg; if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) abort (); arg = a.arg[dp->precision_arg_index].a.a_int; /* "A negative precision is taken as if the precision were omitted." */ if (arg >= 0) { precision = arg; has_precision = 1; } } else { const FCHAR_T *digitp = dp->precision_start + 1; precision = 0; while (digitp != dp->precision_end) precision = xsum (xtimes (precision, 10), *digitp++ - '0'); has_precision = 1; } } #endif /* Decide whether to handle the precision ourselves. */ #if NEED_PRINTF_UNBOUNDED_PRECISION switch (dp->conversion) { case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': prec_ourselves = has_precision && (precision > 0); break; default: prec_ourselves = 0; break; } #endif /* Decide whether to perform the padding ourselves. */ #if !NEED_PRINTF_FLAG_LEFTADJUST && (!DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION) switch (dp->conversion) { # if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO /* If we need conversion from TCHAR_T[] to DCHAR_T[], we need to perform the padding after this conversion. Functions with unistdio extensions perform the padding based on character count rather than element count. */ case 'c': case 's': # endif # if NEED_PRINTF_FLAG_ZERO case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': case 'a': case 'A': # endif pad_ourselves = 1; break; default: pad_ourselves = prec_ourselves; break; } #endif #if !USE_SNPRINTF /* Allocate a temporary buffer of sufficient size for calling sprintf. */ tmp_length = MAX_ROOM_NEEDED (&a, dp->arg_index, dp->conversion, type, flags, width, has_precision, precision, pad_ourselves); if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T)) tmp = tmpbuf; else { size_t tmp_memsize = xtimes (tmp_length, sizeof (TCHAR_T)); if (size_overflow_p (tmp_memsize)) /* Overflow, would lead to out of memory. */ goto out_of_memory; tmp = (TCHAR_T *) malloc (tmp_memsize); if (tmp == NULL) /* Out of memory. */ goto out_of_memory; } #endif /* Construct the format string for calling snprintf or sprintf. */ fbp = buf; *fbp++ = '%'; #if NEED_PRINTF_FLAG_GROUPING /* The underlying implementation doesn't support the ' flag. Produce no grouping characters in this case; this is acceptable because the grouping is locale dependent. */ #else if (flags & FLAG_GROUP) *fbp++ = '\''; #endif if (flags & FLAG_LEFT) *fbp++ = '-'; if (flags & FLAG_SHOWSIGN) *fbp++ = '+'; if (flags & FLAG_SPACE) *fbp++ = ' '; if (flags & FLAG_ALT) *fbp++ = '#'; #if __GLIBC__ >= 2 && !defined __UCLIBC__ if (flags & FLAG_LOCALIZED) *fbp++ = 'I'; #endif if (!pad_ourselves) { if (flags & FLAG_ZERO) *fbp++ = '0'; if (dp->width_start != dp->width_end) { size_t n = dp->width_end - dp->width_start; /* The width specification is known to consist only of standard ASCII characters. */ if (sizeof (FCHAR_T) == sizeof (TCHAR_T)) { memcpy (fbp, dp->width_start, n * sizeof (TCHAR_T)); fbp += n; } else { const FCHAR_T *mp = dp->width_start; do *fbp++ = *mp++; while (--n > 0); } } } if (!prec_ourselves) { if (dp->precision_start != dp->precision_end) { size_t n = dp->precision_end - dp->precision_start; /* The precision specification is known to consist only of standard ASCII characters. */ if (sizeof (FCHAR_T) == sizeof (TCHAR_T)) { memcpy (fbp, dp->precision_start, n * sizeof (TCHAR_T)); fbp += n; } else { const FCHAR_T *mp = dp->precision_start; do *fbp++ = *mp++; while (--n > 0); } } } switch (type) { case TYPE_LONGLONGINT: case TYPE_ULONGLONGINT: #if defined _WIN32 && ! defined __CYGWIN__ *fbp++ = 'I'; *fbp++ = '6'; *fbp++ = '4'; break; #else *fbp++ = 'l'; #endif FALLTHROUGH; case TYPE_LONGINT: case TYPE_ULONGINT: #if HAVE_WINT_T case TYPE_WIDE_CHAR: #endif #if HAVE_WCHAR_T case TYPE_WIDE_STRING: #endif *fbp++ = 'l'; break; case TYPE_LONGDOUBLE: *fbp++ = 'L'; break; default: break; } #if NEED_PRINTF_DIRECTIVE_F if (dp->conversion == 'F') *fbp = 'f'; else #endif *fbp = dp->conversion; #if USE_SNPRINTF # if ((HAVE_SNPRINTF_RETVAL_C99 && HAVE_SNPRINTF_TRUNCATION_C99) \ || ((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) \ && !defined __UCLIBC__) \ || (defined __APPLE__ && defined __MACH__) \ || defined __ANDROID__ \ || (defined _WIN32 && ! defined __CYGWIN__)) /* On systems where we know that snprintf's return value conforms to ISO C 99 (HAVE_SNPRINTF_RETVAL_C99) and that snprintf always produces NUL-terminated strings (HAVE_SNPRINTF_TRUNCATION_C99), it is possible to avoid using %n. And it is desirable to do so, because more and more platforms no longer support %n, for "security reasons". In particular, the following platforms: - On glibc2 systems from 2004-10-18 or newer, the use of %n in format strings in writable memory may crash the program (if compiled with _FORTIFY_SOURCE=2). - On Mac OS X 10.13 or newer, the use of %n in format strings in writable memory by default crashes the program. - On Android, starting on 2018-03-07, the use of %n in format strings produces a fatal error (see ). On these platforms, HAVE_SNPRINTF_RETVAL_C99 and HAVE_SNPRINTF_TRUNCATION_C99 are 1. We have listed them explicitly in the condition above, in case of cross- compilation (just to be sure). */ /* On native Windows systems (such as mingw), we can avoid using %n because: - Although the gl_SNPRINTF_TRUNCATION_C99 test fails, snprintf does not write more than the specified number of bytes. (snprintf (buf, 3, "%d %d", 4567, 89) writes '4', '5', '6' into buf, not '4', '5', '\0'.) - Although the gl_SNPRINTF_RETVAL_C99 test fails, snprintf allows us to recognize the case of an insufficient buffer size: it returns -1 in this case. On native Windows systems (such as mingw) where the OS is Windows Vista, the use of %n in format strings by default crashes the program. See and So we should avoid %n in this situation. */ fbp[1] = '\0'; # else /* AIX <= 5.1, HP-UX, IRIX, OSF/1, Solaris <= 9, BeOS */ fbp[1] = '%'; fbp[2] = 'n'; fbp[3] = '\0'; # endif #else fbp[1] = '\0'; #endif /* Construct the arguments for calling snprintf or sprintf. */ prefix_count = 0; if (!pad_ourselves && dp->width_arg_index != ARG_NONE) { if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) abort (); prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int; } if (!prec_ourselves && dp->precision_arg_index != ARG_NONE) { if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) abort (); prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int; } #if USE_SNPRINTF /* The SNPRINTF result is appended after result[0..length]. The latter is an array of DCHAR_T; SNPRINTF appends an array of TCHAR_T to it. This is possible because sizeof (TCHAR_T) divides sizeof (DCHAR_T) and alignof (TCHAR_T) <= alignof (DCHAR_T). */ # define TCHARS_PER_DCHAR (sizeof (DCHAR_T) / sizeof (TCHAR_T)) /* Ensure that maxlen below will be >= 2. Needed on BeOS, where an snprintf() with maxlen==1 acts like sprintf(). */ ENSURE_ALLOCATION (xsum (length, (2 + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR)); /* Prepare checking whether snprintf returns the count via %n. */ *(TCHAR_T *) (result + length) = '\0'; #endif orig_errno = errno; for (;;) { int count = -1; #if USE_SNPRINTF int retcount = 0; size_t maxlen = allocated - length; /* SNPRINTF can fail if its second argument is > INT_MAX. */ if (maxlen > INT_MAX / TCHARS_PER_DCHAR) maxlen = INT_MAX / TCHARS_PER_DCHAR; maxlen = maxlen * TCHARS_PER_DCHAR; # define SNPRINTF_BUF(arg) \ switch (prefix_count) \ { \ case 0: \ retcount = SNPRINTF ((TCHAR_T *) (result + length), \ maxlen, buf, \ arg, &count); \ break; \ case 1: \ retcount = SNPRINTF ((TCHAR_T *) (result + length), \ maxlen, buf, \ prefixes[0], arg, &count); \ break; \ case 2: \ retcount = SNPRINTF ((TCHAR_T *) (result + length), \ maxlen, buf, \ prefixes[0], prefixes[1], arg, \ &count); \ break; \ default: \ abort (); \ } #else # define SNPRINTF_BUF(arg) \ switch (prefix_count) \ { \ case 0: \ count = sprintf (tmp, buf, arg); \ break; \ case 1: \ count = sprintf (tmp, buf, prefixes[0], arg); \ break; \ case 2: \ count = sprintf (tmp, buf, prefixes[0], prefixes[1],\ arg); \ break; \ default: \ abort (); \ } #endif errno = 0; switch (type) { case TYPE_SCHAR: { int arg = a.arg[dp->arg_index].a.a_schar; SNPRINTF_BUF (arg); } break; case TYPE_UCHAR: { unsigned int arg = a.arg[dp->arg_index].a.a_uchar; SNPRINTF_BUF (arg); } break; case TYPE_SHORT: { int arg = a.arg[dp->arg_index].a.a_short; SNPRINTF_BUF (arg); } break; case TYPE_USHORT: { unsigned int arg = a.arg[dp->arg_index].a.a_ushort; SNPRINTF_BUF (arg); } break; case TYPE_INT: { int arg = a.arg[dp->arg_index].a.a_int; SNPRINTF_BUF (arg); } break; case TYPE_UINT: { unsigned int arg = a.arg[dp->arg_index].a.a_uint; SNPRINTF_BUF (arg); } break; case TYPE_LONGINT: { long int arg = a.arg[dp->arg_index].a.a_longint; SNPRINTF_BUF (arg); } break; case TYPE_ULONGINT: { unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint; SNPRINTF_BUF (arg); } break; case TYPE_LONGLONGINT: { long long int arg = a.arg[dp->arg_index].a.a_longlongint; SNPRINTF_BUF (arg); } break; case TYPE_ULONGLONGINT: { unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint; SNPRINTF_BUF (arg); } break; case TYPE_DOUBLE: { double arg = a.arg[dp->arg_index].a.a_double; SNPRINTF_BUF (arg); } break; case TYPE_LONGDOUBLE: { long double arg = a.arg[dp->arg_index].a.a_longdouble; SNPRINTF_BUF (arg); } break; case TYPE_CHAR: { int arg = a.arg[dp->arg_index].a.a_char; SNPRINTF_BUF (arg); } break; #if HAVE_WINT_T case TYPE_WIDE_CHAR: { wint_t arg = a.arg[dp->arg_index].a.a_wide_char; SNPRINTF_BUF (arg); } break; #endif case TYPE_STRING: { const char *arg = a.arg[dp->arg_index].a.a_string; SNPRINTF_BUF (arg); } break; #if HAVE_WCHAR_T case TYPE_WIDE_STRING: { const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string; SNPRINTF_BUF (arg); } break; #endif case TYPE_POINTER: { void *arg = a.arg[dp->arg_index].a.a_pointer; SNPRINTF_BUF (arg); } break; default: abort (); } #if USE_SNPRINTF /* Portability: Not all implementations of snprintf() are ISO C 99 compliant. Determine the number of bytes that snprintf() has produced or would have produced. */ if (count >= 0) { /* Verify that snprintf() has NUL-terminated its result. */ if ((unsigned int) count < maxlen && ((TCHAR_T *) (result + length)) [count] != '\0') abort (); /* Portability hack. */ if (retcount > count) count = retcount; } else { /* snprintf() doesn't understand the '%n' directive. */ if (fbp[1] != '\0') { /* Don't use the '%n' directive; instead, look at the snprintf() return value. */ fbp[1] = '\0'; continue; } else { /* Look at the snprintf() return value. */ if (retcount < 0) { # if !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF /* HP-UX 10.20 snprintf() is doubly deficient: It doesn't understand the '%n' directive, *and* it returns -1 (rather than the length that would have been required) when the buffer is too small. But a failure at this point can also come from other reasons than a too small buffer, such as an invalid wide string argument to the %ls directive, or possibly an invalid floating-point argument. */ size_t tmp_length = MAX_ROOM_NEEDED (&a, dp->arg_index, dp->conversion, type, flags, width, has_precision, precision, pad_ourselves); if (maxlen < tmp_length) { /* Make more room. But try to do through this reallocation only once. */ size_t bigger_need = xsum (length, xsum (tmp_length, TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR); /* And always grow proportionally. (There may be several arguments, each needing a little more room than the previous one.) */ size_t bigger_need2 = xsum (xtimes (allocated, 2), 12); if (bigger_need < bigger_need2) bigger_need = bigger_need2; ENSURE_ALLOCATION (bigger_need); continue; } # endif } else count = retcount; } } #endif /* Attempt to handle failure. */ if (count < 0) { /* SNPRINTF or sprintf failed. Use the errno that it has set, if any. */ if (errno == 0) { if (dp->conversion == 'c' || dp->conversion == 's') errno = EILSEQ; else errno = EINVAL; } goto fail_with_errno; } #if USE_SNPRINTF /* Handle overflow of the allocated buffer. If such an overflow occurs, a C99 compliant snprintf() returns a count >= maxlen. However, a non-compliant snprintf() function returns only count = maxlen - 1. To cover both cases, test whether count >= maxlen - 1. */ if ((unsigned int) count + 1 >= maxlen) { /* If maxlen already has attained its allowed maximum, allocating more memory will not increase maxlen. Instead of looping, bail out. */ if (maxlen == INT_MAX / TCHARS_PER_DCHAR) goto overflow; else { /* Need at least (count + 1) * sizeof (TCHAR_T) bytes. (The +1 is for the trailing NUL.) But ask for (count + 2) * sizeof (TCHAR_T) bytes, so that in the next round, we likely get maxlen > (unsigned int) count + 1 and so we don't get here again. And allocate proportionally, to avoid looping eternally if snprintf() reports a too small count. */ size_t n = xmax (xsum (length, ((unsigned int) count + 2 + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR), xtimes (allocated, 2)); ENSURE_ALLOCATION (n); continue; } } #endif #if NEED_PRINTF_UNBOUNDED_PRECISION if (prec_ourselves) { /* Handle the precision. */ TCHAR_T *prec_ptr = # if USE_SNPRINTF (TCHAR_T *) (result + length); # else tmp; # endif size_t prefix_count; size_t move; prefix_count = 0; /* Put the additional zeroes after the sign. */ if (count >= 1 && (*prec_ptr == '-' || *prec_ptr == '+' || *prec_ptr == ' ')) prefix_count = 1; /* Put the additional zeroes after the 0x prefix if (flags & FLAG_ALT) || (dp->conversion == 'p'). */ else if (count >= 2 && prec_ptr[0] == '0' && (prec_ptr[1] == 'x' || prec_ptr[1] == 'X')) prefix_count = 2; move = count - prefix_count; if (precision > move) { /* Insert zeroes. */ size_t insert = precision - move; TCHAR_T *prec_end; # if USE_SNPRINTF size_t n = xsum (length, (count + insert + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR); length += (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR; ENSURE_ALLOCATION (n); length -= (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR; prec_ptr = (TCHAR_T *) (result + length); # endif prec_end = prec_ptr + count; prec_ptr += prefix_count; while (prec_end > prec_ptr) { prec_end--; prec_end[insert] = prec_end[0]; } prec_end += insert; do *--prec_end = '0'; while (prec_end > prec_ptr); count += insert; } } #endif #if !USE_SNPRINTF if (count >= tmp_length) /* tmp_length was incorrectly calculated - fix the code above! */ abort (); #endif #if !DCHAR_IS_TCHAR /* Convert from TCHAR_T[] to DCHAR_T[]. */ if (dp->conversion == 'c' || dp->conversion == 's') { /* type = TYPE_CHAR or TYPE_WIDE_CHAR or TYPE_STRING TYPE_WIDE_STRING. The result string is not certainly ASCII. */ const TCHAR_T *tmpsrc; DCHAR_T *tmpdst; size_t tmpdst_len; /* This code assumes that TCHAR_T is 'char'. */ static_assert (sizeof (TCHAR_T) == 1); # if USE_SNPRINTF tmpsrc = (TCHAR_T *) (result + length); # else tmpsrc = tmp; # endif tmpdst = DCHAR_CONV_FROM_ENCODING (locale_charset (), iconveh_question_mark, tmpsrc, count, NULL, NULL, &tmpdst_len); if (tmpdst == NULL) goto fail_with_errno; ENSURE_ALLOCATION_ELSE (xsum (length, tmpdst_len), { free (tmpdst); goto out_of_memory; }); DCHAR_CPY (result + length, tmpdst, tmpdst_len); free (tmpdst); count = tmpdst_len; } else { /* The result string is ASCII. Simple 1:1 conversion. */ # if USE_SNPRINTF /* If sizeof (DCHAR_T) == sizeof (TCHAR_T), it's a no-op conversion, in-place on the array starting at (result + length). */ if (sizeof (DCHAR_T) != sizeof (TCHAR_T)) # endif { const TCHAR_T *tmpsrc; DCHAR_T *tmpdst; size_t n; # if USE_SNPRINTF if (result == resultbuf) { tmpsrc = (TCHAR_T *) (result + length); /* ENSURE_ALLOCATION will not move tmpsrc (because it's part of resultbuf). */ ENSURE_ALLOCATION (xsum (length, count)); } else { /* ENSURE_ALLOCATION will move the array (because it uses realloc(). */ ENSURE_ALLOCATION (xsum (length, count)); tmpsrc = (TCHAR_T *) (result + length); } # else tmpsrc = tmp; ENSURE_ALLOCATION (xsum (length, count)); # endif tmpdst = result + length; /* Copy backwards, because of overlapping. */ tmpsrc += count; tmpdst += count; for (n = count; n > 0; n--) *--tmpdst = *--tmpsrc; } } #endif #if DCHAR_IS_TCHAR && !USE_SNPRINTF /* Make room for the result. */ if (count > allocated - length) { /* Need at least count elements. But allocate proportionally. */ size_t n = xmax (xsum (length, count), xtimes (allocated, 2)); ENSURE_ALLOCATION (n); } #endif /* Here count <= allocated - length. */ /* Perform padding. */ #if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION if (pad_ourselves && has_width) { size_t w; # if ENABLE_UNISTDIO /* Outside POSIX, it's preferable to compare the width against the number of _characters_ of the converted value. */ w = DCHAR_MBSNLEN (result + length, count); # else /* The width is compared against the number of _bytes_ of the converted value, says POSIX. */ w = count; # endif if (w < width) { size_t pad = width - w; /* Make room for the result. */ if (xsum (count, pad) > allocated - length) { /* Need at least count + pad elements. But allocate proportionally. */ size_t n = xmax (xsum3 (length, count, pad), xtimes (allocated, 2)); # if USE_SNPRINTF length += count; ENSURE_ALLOCATION (n); length -= count; # else ENSURE_ALLOCATION (n); # endif } /* Here count + pad <= allocated - length. */ { # if !DCHAR_IS_TCHAR || USE_SNPRINTF DCHAR_T * const rp = result + length; # else DCHAR_T * const rp = tmp; # endif DCHAR_T *p = rp + count; DCHAR_T *end = p + pad; DCHAR_T *pad_ptr; # if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO if (dp->conversion == 'c' || dp->conversion == 's') /* No zero-padding for string directives. */ pad_ptr = NULL; else # endif { pad_ptr = (*rp == '-' ? rp + 1 : rp); /* No zero-padding of "inf" and "nan". */ if ((*pad_ptr >= 'A' && *pad_ptr <= 'Z') || (*pad_ptr >= 'a' && *pad_ptr <= 'z')) pad_ptr = NULL; } /* The generated string now extends from rp to p, with the zero padding insertion point being at pad_ptr. */ count = count + pad; /* = end - rp */ if (flags & FLAG_LEFT) { /* Pad with spaces on the right. */ for (; pad > 0; pad--) *p++ = ' '; } else if ((flags & FLAG_ZERO) && pad_ptr != NULL) { /* Pad with zeroes. */ DCHAR_T *q = end; while (p > pad_ptr) *--q = *--p; for (; pad > 0; pad--) *p++ = '0'; } else { /* Pad with spaces on the left. */ DCHAR_T *q = end; while (p > rp) *--q = *--p; for (; pad > 0; pad--) *p++ = ' '; } } } } #endif /* Here still count <= allocated - length. */ #if !DCHAR_IS_TCHAR || USE_SNPRINTF /* The snprintf() result did fit. */ #else /* Append the sprintf() result. */ memcpy (result + length, tmp, count * sizeof (DCHAR_T)); #endif #if !USE_SNPRINTF if (tmp != tmpbuf) free (tmp); #endif #if NEED_PRINTF_DIRECTIVE_F if (dp->conversion == 'F') { /* Convert the %f result to upper case for %F. */ DCHAR_T *rp = result + length; size_t rc; for (rc = count; rc > 0; rc--, rp++) if (*rp >= 'a' && *rp <= 'z') *rp = *rp - 'a' + 'A'; } #endif length += count; break; } errno = orig_errno; #undef pad_ourselves #undef prec_ourselves } } } /* Add the final NUL. */ ENSURE_ALLOCATION (xsum (length, 1)); result[length] = '\0'; if (result != resultbuf && length + 1 < allocated) { /* Shrink the allocated memory if possible. */ DCHAR_T *memory; memory = (DCHAR_T *) realloc (result, (length + 1) * sizeof (DCHAR_T)); if (memory != NULL) result = memory; } if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); *lengthp = length; /* Note that we can produce a big string of a length > INT_MAX. POSIX says that snprintf() fails with errno = EOVERFLOW in this case, but that's only because snprintf() returns an 'int'. This function does not have this limitation. */ return result; #if USE_SNPRINTF overflow: errno = EOVERFLOW; goto fail_with_errno; #endif out_of_memory: errno = ENOMEM; goto fail_with_errno; #if ENABLE_UNISTDIO || ((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL) || ENABLE_WCHAR_FALLBACK) && HAVE_WCHAR_T) fail_with_EILSEQ: errno = EILSEQ; goto fail_with_errno; #endif fail_with_errno: if (result != resultbuf) free (result); if (buf_malloced != NULL) free (buf_malloced); CLEANUP (); return NULL; } out_of_memory_1: errno = ENOMEM; goto fail_1_with_errno; fail_1_with_EINVAL: errno = EINVAL; goto fail_1_with_errno; fail_1_with_errno: CLEANUP (); return NULL; } #undef MAX_ROOM_NEEDED #undef TCHARS_PER_DCHAR #undef SNPRINTF #undef USE_SNPRINTF #undef DCHAR_SET #undef DCHAR_CPY #undef PRINTF_PARSE #undef DIRECTIVES #undef DIRECTIVE #undef DCHAR_IS_TCHAR #undef TCHAR_T #undef DCHAR_T #undef FCHAR_T #undef VASNPRINTF recode-3.7.15/lib/getopt-pfx-ext.h0000644000175000017500000000536514371444255012365 /* getopt (GNU extensions) gnulib wrapper header. Copyright (C) 1989-2023 Free Software Foundation, Inc. This file is part of gnulib. Unlike most of the getopt implementation, it is NOT shared with the GNU C Library. This file 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. This file 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 . */ #ifndef _GETOPT_PFX_EXT_H #define _GETOPT_PFX_EXT_H 1 /* This header should not be used directly; include getopt.h instead. It does not have a protective #error, because the guard macro for getopt.h in gnulib is not fixed. */ /* Standalone applications should #define __GETOPT_PREFIX to an identifier that prefixes the external functions and variables defined in getopt-core.h and getopt-ext.h. Systematically rename identifiers so that they do not collide with the system functions and variables. Renaming avoids problems with some compilers and linkers. */ #ifdef __GETOPT_PREFIX # ifndef __GETOPT_ID # define __GETOPT_CONCAT(x, y) x ## y # define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y) # define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y) # endif # undef getopt_long # undef getopt_long_only # undef option # undef _getopt_internal # define getopt_long __GETOPT_ID (getopt_long) # define getopt_long_only __GETOPT_ID (getopt_long_only) # define option __GETOPT_ID (option) # define _getopt_internal __GETOPT_ID (getopt_internal) /* The system's getopt.h may have already included getopt-ext.h to declare the unprefixed identifiers. Undef _GETOPT_EXT_H so that getopt-ext.h declares them with prefixes. */ # undef _GETOPT_EXT_H #endif /* Standalone applications get correct prototypes for getopt_long and getopt_long_only; they declare "char **argv". For backward compatibility with old applications, if __GETOPT_PREFIX is not defined, we supply GNU-libc-compatible, but incorrect, prototypes using "char *const *argv". (GNU libc is stuck with the incorrect prototypes, as they are baked into older versions of LSB.) */ #ifndef __getopt_argv_const # if defined __GETOPT_PREFIX # define __getopt_argv_const /* empty */ # else # define __getopt_argv_const const # endif #endif #include #endif /* _GETOPT_PFX_EXT_H */ recode-3.7.15/lib/mbrtowc-impl-utf8.h0000644000175000017500000001225514371444255012766 /* Convert multibyte character to wide character. Copyright (C) 1999-2002, 2005-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2008. */ /* This file contains the part of the body of the mbrtowc and mbrtoc32 functions that handles the special case of the UTF-8 encoding. */ /* Cf. unistr/u8-mbtouc.c. */ unsigned char c = (unsigned char) p[0]; if (c < 0x80) { if (pwc != NULL) *pwc = c; res = (c == 0 ? 0 : 1); goto success; } if (c >= 0xc2) { if (c < 0xe0) { if (m == 1) goto incomplete; else /* m >= 2 */ { unsigned char c2 = (unsigned char) p[1]; if ((c2 ^ 0x80) < 0x40) { if (pwc != NULL) *pwc = ((unsigned int) (c & 0x1f) << 6) | (unsigned int) (c2 ^ 0x80); res = 2; goto success; } } } else if (c < 0xf0) { if (m == 1) goto incomplete; else { unsigned char c2 = (unsigned char) p[1]; if ((c2 ^ 0x80) < 0x40 && (c >= 0xe1 || c2 >= 0xa0) && (c != 0xed || c2 < 0xa0)) { if (m == 2) goto incomplete; else /* m >= 3 */ { unsigned char c3 = (unsigned char) p[2]; if ((c3 ^ 0x80) < 0x40) { unsigned int wc = (((unsigned int) (c & 0x0f) << 12) | ((unsigned int) (c2 ^ 0x80) << 6) | (unsigned int) (c3 ^ 0x80)); if (FITS_IN_CHAR_TYPE (wc)) { if (pwc != NULL) *pwc = wc; res = 3; goto success; } } } } } } else if (c <= 0xf4) { if (m == 1) goto incomplete; else { unsigned char c2 = (unsigned char) p[1]; if ((c2 ^ 0x80) < 0x40 && (c >= 0xf1 || c2 >= 0x90) && (c < 0xf4 || (/* c == 0xf4 && */ c2 < 0x90))) { if (m == 2) goto incomplete; else { unsigned char c3 = (unsigned char) p[2]; if ((c3 ^ 0x80) < 0x40) { if (m == 3) goto incomplete; else /* m >= 4 */ { unsigned char c4 = (unsigned char) p[3]; if ((c4 ^ 0x80) < 0x40) { unsigned int wc = (((unsigned int) (c & 0x07) << 18) | ((unsigned int) (c2 ^ 0x80) << 12) | ((unsigned int) (c3 ^ 0x80) << 6) | (unsigned int) (c4 ^ 0x80)); if (FITS_IN_CHAR_TYPE (wc)) { if (pwc != NULL) *pwc = wc; res = 4; goto success; } } } } } } } } } goto invalid; recode-3.7.15/lib/memchr.c0000644000175000017500000001345514371444255010737 /* Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2004, 2006, 2008-2023 Free Software Foundation, Inc. Based on strlen implementation by Torbjorn Granlund (tege@sics.se), with help from Dan Sahlin (dan@sics.se) and commentary by Jim Blandy (jimb@ai.mit.edu); adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu), and implemented by Roland McGrath (roland@ai.mit.edu). NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. This file 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. This file 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 . */ #ifndef _LIBC # include #endif #include #include #if defined _LIBC # include #else # define reg_char char #endif #include #if HAVE_BP_SYM_H || defined _LIBC # include #else # define BP_SYM(sym) sym #endif #undef __memchr #ifdef _LIBC # undef memchr #endif #ifndef weak_alias # define __memchr memchr #endif /* Search no more than N bytes of S for C. */ void * __memchr (void const *s, int c_in, size_t n) { /* On 32-bit hardware, choosing longword to be a 32-bit unsigned long instead of a 64-bit uintmax_t tends to give better performance. On 64-bit hardware, unsigned long is generally 64 bits already. Change this typedef to experiment with performance. */ typedef unsigned long int longword; const unsigned char *char_ptr; const longword *longword_ptr; longword repeated_one; longword repeated_c; unsigned reg_char c; c = (unsigned char) c_in; /* Handle the first few bytes by reading one byte at a time. Do this until CHAR_PTR is aligned on a longword boundary. */ for (char_ptr = (const unsigned char *) s; n > 0 && (size_t) char_ptr % sizeof (longword) != 0; --n, ++char_ptr) if (*char_ptr == c) return (void *) char_ptr; longword_ptr = (const longword *) char_ptr; /* All these elucidatory comments refer to 4-byte longwords, but the theory applies equally well to any size longwords. */ /* Compute auxiliary longword values: repeated_one is a value which has a 1 in every byte. repeated_c has c in every byte. */ repeated_one = 0x01010101; repeated_c = c | (c << 8); repeated_c |= repeated_c << 16; if (0xffffffffU < (longword) -1) { repeated_one |= repeated_one << 31 << 1; repeated_c |= repeated_c << 31 << 1; if (8 < sizeof (longword)) { size_t i; for (i = 64; i < sizeof (longword) * 8; i *= 2) { repeated_one |= repeated_one << i; repeated_c |= repeated_c << i; } } } /* Instead of the traditional loop which tests each byte, we will test a longword at a time. The tricky part is testing if *any of the four* bytes in the longword in question are equal to c. We first use an xor with repeated_c. This reduces the task to testing whether *any of the four* bytes in longword1 is zero. We compute tmp = ((longword1 - repeated_one) & ~longword1) & (repeated_one << 7). That is, we perform the following operations: 1. Subtract repeated_one. 2. & ~longword1. 3. & a mask consisting of 0x80 in every byte. Consider what happens in each byte: - If a byte of longword1 is zero, step 1 and 2 transform it into 0xff, and step 3 transforms it into 0x80. A carry can also be propagated to more significant bytes. - If a byte of longword1 is nonzero, let its lowest 1 bit be at position k (0 <= k <= 7); so the lowest k bits are 0. After step 1, the byte ends in a single bit of value 0 and k bits of value 1. After step 2, the result is just k bits of value 1: 2^k - 1. After step 3, the result is 0. And no carry is produced. So, if longword1 has only non-zero bytes, tmp is zero. Whereas if longword1 has a zero byte, call j the position of the least significant zero byte. Then the result has a zero at positions 0, ..., j-1 and a 0x80 at position j. We cannot predict the result at the more significant bytes (positions j+1..3), but it does not matter since we already have a non-zero bit at position 8*j+7. So, the test whether any byte in longword1 is zero is equivalent to testing whether tmp is nonzero. */ while (n >= sizeof (longword)) { longword longword1 = *longword_ptr ^ repeated_c; if ((((longword1 - repeated_one) & ~longword1) & (repeated_one << 7)) != 0) break; longword_ptr++; n -= sizeof (longword); } char_ptr = (const unsigned char *) longword_ptr; /* At this point, we know that either n < sizeof (longword), or one of the sizeof (longword) bytes starting at char_ptr is == c. On little-endian machines, we could determine the first such byte without any further memory accesses, just by looking at the tmp result from the last loop iteration. But this does not work on big-endian machines. Choose code that works in both cases. */ for (; n > 0; --n, ++char_ptr) { if (*char_ptr == c) return (void *) char_ptr; } return NULL; } #ifdef weak_alias weak_alias (__memchr, BP_SYM (memchr)) #endif recode-3.7.15/lib/wctype-h.c0000644000175000017500000000162614371444255011221 /* Inline functions for . Copyright (C) 2012-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Normally this would be wctype.c, but that name's already taken. */ #include #define _GL_WCTYPE_INLINE _GL_EXTERN_INLINE #include "wctype.h" recode-3.7.15/lib/free.c0000644000175000017500000000277214371444255010405 /* Make free() preserve errno. Copyright (C) 2003, 2006, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* written by Paul Eggert */ #include /* Specification. */ #include /* A function definition is only needed if HAVE_FREE_POSIX is not defined. */ #if !HAVE_FREE_POSIX # include void rpl_free (void *p) # undef free { # if defined __GNUC__ && !defined __clang__ /* An invalid GCC optimization would optimize away the assignments in the code below, when link-time optimization (LTO) is enabled. Make the code more complicated, so that GCC does not grok how to optimize it. */ int err[2]; err[0] = errno; err[1] = errno; errno = 0; free (p); errno = err[errno == 0]; # else int err = errno; free (p); errno = err; # endif } #endif recode-3.7.15/lib/basename-lgpl.c0000644000175000017500000000344014371444255012164 /* basename.c -- return the last element in a file name Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include "basename-lgpl.h" #include #include "filename.h" char * last_component (char const *name) { char const *base = name + FILE_SYSTEM_PREFIX_LEN (name); char const *p; bool last_was_slash = false; while (ISSLASH (*base)) base++; for (p = base; *p; p++) { if (ISSLASH (*p)) last_was_slash = true; else if (last_was_slash) { base = p; last_was_slash = false; } } return (char *) base; } size_t base_len (char const *name) { size_t len; size_t prefix_len = FILE_SYSTEM_PREFIX_LEN (name); for (len = strlen (name); 1 < len && ISSLASH (name[len - 1]); len--) continue; if (DOUBLE_SLASH_IS_DISTINCT_ROOT && len == 1 && ISSLASH (name[0]) && ISSLASH (name[1]) && ! name[2]) return 2; if (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE && prefix_len && len == prefix_len && ISSLASH (name[prefix_len])) return prefix_len + 1; return len; } recode-3.7.15/lib/msvc-inval.c0000644000175000017500000000755314371444255011545 /* Invalid parameter handler for MSVC runtime libraries. Copyright (C) 2011-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include "msvc-inval.h" #if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING) /* Get _invalid_parameter_handler type and _set_invalid_parameter_handler declaration. */ # include # if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING static void __cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { } # else /* Get declarations of the native Windows API functions. */ # define WIN32_LEAN_AND_MEAN # include # if defined _MSC_VER static void __cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL); } # else /* An index to thread-local storage. */ static DWORD tls_index; static int tls_initialized /* = 0 */; /* Used as a fallback only. */ static struct gl_msvc_inval_per_thread not_per_thread; struct gl_msvc_inval_per_thread * gl_msvc_inval_current (void) { if (!tls_initialized) { tls_index = TlsAlloc (); tls_initialized = 1; } if (tls_index == TLS_OUT_OF_INDEXES) /* TlsAlloc had failed. */ return ¬_per_thread; else { struct gl_msvc_inval_per_thread *pointer = (struct gl_msvc_inval_per_thread *) TlsGetValue (tls_index); if (pointer == NULL) { /* First call. Allocate a new 'struct gl_msvc_inval_per_thread'. */ pointer = (struct gl_msvc_inval_per_thread *) malloc (sizeof (struct gl_msvc_inval_per_thread)); if (pointer == NULL) /* Could not allocate memory. Use the global storage. */ pointer = ¬_per_thread; TlsSetValue (tls_index, pointer); } return pointer; } } static void __cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { struct gl_msvc_inval_per_thread *current = gl_msvc_inval_current (); if (current->restart_valid) longjmp (current->restart, 1); else /* An invalid parameter notification from outside the gnulib code. Give the caller a chance to intervene. */ RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL); } # endif # endif static int gl_msvc_inval_initialized /* = 0 */; void gl_msvc_inval_ensure_handler (void) { if (gl_msvc_inval_initialized == 0) { _set_invalid_parameter_handler (gl_msvc_invalid_parameter_handler); gl_msvc_inval_initialized = 1; } } #endif recode-3.7.15/lib/localcharset.h0000644000175000017500000001431614371444255012132 /* Determine a canonical name for the current locale's character encoding. Copyright (C) 2000-2003, 2009-2023 Free Software Foundation, Inc. This file is part of the GNU CHARSET Library. This file 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. This file 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 . */ #ifndef _LOCALCHARSET_H #define _LOCALCHARSET_H #ifdef __cplusplus extern "C" { #endif /* Determine the current locale's character encoding, and canonicalize it into one of the canonical names listed below. The result must not be freed; it is statically allocated. The result becomes invalid when setlocale() is used to change the global locale, or when the value of one of the environment variables LC_ALL, LC_CTYPE, LANG is changed; threads in multithreaded programs should not do this. If the canonical name cannot be determined, the result is a non-canonical name. */ extern const char * locale_charset (void); /* About GNU canonical names for character encodings: Every canonical name must be supported by GNU libiconv. Support by GNU libc is also desirable. The name is case insensitive. Usually an upper case MIME charset name is preferred. The current list of these GNU canonical names is: name MIME? used by which systems (darwin = Mac OS X, windows = native Windows) ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin minix cygwin ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin zos ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin zos ISO-8859-3 Y glibc solaris cygwin ISO-8859-4 Y hpux osf solaris freebsd netbsd openbsd darwin ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin zos ISO-8859-6 Y glibc aix hpux solaris cygwin ISO-8859-7 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin zos ISO-8859-8 Y glibc aix hpux osf solaris cygwin zos ISO-8859-9 Y glibc aix hpux irix osf solaris freebsd darwin cygwin zos ISO-8859-13 glibc hpux solaris freebsd netbsd openbsd darwin cygwin ISO-8859-14 glibc cygwin ISO-8859-15 glibc aix irix osf solaris freebsd netbsd openbsd darwin cygwin KOI8-R Y glibc hpux solaris freebsd netbsd openbsd darwin KOI8-U Y glibc freebsd netbsd openbsd darwin cygwin KOI8-T glibc CP437 dos CP775 dos CP850 aix osf dos CP852 dos CP855 dos CP856 aix CP857 dos CP861 dos CP862 dos CP864 dos CP865 dos CP866 freebsd netbsd openbsd darwin dos CP869 dos CP874 windows dos CP922 aix CP932 aix cygwin windows dos CP943 aix zos CP949 osf darwin windows dos CP950 windows dos CP1046 aix CP1124 aix CP1125 dos CP1129 aix CP1131 freebsd darwin CP1250 windows CP1251 glibc hpux solaris freebsd netbsd openbsd darwin cygwin windows CP1252 aix windows CP1253 windows CP1254 windows CP1255 glibc windows CP1256 windows CP1257 windows GB2312 Y glibc aix hpux irix solaris freebsd netbsd darwin cygwin zos EUC-JP Y glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin EUC-KR Y glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin zos EUC-TW glibc aix hpux irix osf solaris netbsd BIG5 Y glibc aix hpux osf solaris freebsd netbsd darwin cygwin zos BIG5-HKSCS glibc hpux solaris netbsd darwin GBK glibc aix osf solaris freebsd darwin cygwin windows dos GB18030 glibc hpux solaris freebsd netbsd darwin SHIFT_JIS Y hpux osf solaris freebsd netbsd darwin JOHAB glibc solaris windows TIS-620 glibc aix hpux osf solaris cygwin zos VISCII Y glibc TCVN5712-1 glibc ARMSCII-8 glibc freebsd netbsd darwin GEORGIAN-PS glibc cygwin PT154 glibc netbsd cygwin HP-ROMAN8 hpux HP-ARABIC8 hpux HP-GREEK8 hpux HP-HEBREW8 hpux HP-TURKISH8 hpux HP-KANA8 hpux DEC-KANJI osf DEC-HANYU osf UTF-8 Y glibc aix hpux osf solaris netbsd darwin cygwin zos Note: Names which are not marked as being a MIME name should not be used in Internet protocols for information interchange (mail, news, etc.). Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications must understand both names and treat them as equivalent. */ #ifdef __cplusplus } #endif #endif /* _LOCALCHARSET_H */ recode-3.7.15/lib/stdio.in.h0000644000175000017500000017257414371444255011230 /* A GNU-like . Copyright (C) 2004, 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H /* Special invocation convention: - Inside glibc header files. - On OSF/1 5.1 we have a sequence of nested includes -> -> -> -> -> -> -> . In this situation, the functions are not yet declared, therefore we cannot provide the C++ aliases. */ #@INCLUDE_NEXT@ @NEXT_STDIO_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_STDIO_H #define _GL_ALREADY_INCLUDING_STDIO_H /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_STDIO_H@ #undef _GL_ALREADY_INCLUDING_STDIO_H #ifndef _@GUARD_PREFIX@_STDIO_H #define _@GUARD_PREFIX@_STDIO_H /* Get va_list. Needed on many systems, including glibc 2.8. */ #include #include /* Get off_t and ssize_t. Needed on many systems, including glibc 2.8 and eglibc 2.11.2. May also define off_t to a 64-bit type on native Windows. */ #include /* Solaris 10 and NetBSD 7.0 declare renameat in , not in . */ /* But in any case avoid namespace pollution on glibc systems. */ #if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && (defined __sun || defined __NetBSD__) \ && ! defined __GLIBC__ # include #endif /* Android 4.3 declares renameat in , not in . */ /* But in any case avoid namespace pollution on glibc systems. */ #if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __ANDROID__ \ && ! defined __GLIBC__ # include #endif /* MSVC declares 'perror' in , not in . We must include it before we #define perror rpl_perror. */ /* But in any case avoid namespace pollution on glibc systems. */ #if (@GNULIB_PERROR@ || defined GNULIB_POSIXCHECK) \ && (defined _WIN32 && ! defined __CYGWIN__) \ && ! defined __GLIBC__ # include #endif /* MSVC declares 'remove' in , not in . We must include it before we #define remove rpl_remove. */ /* MSVC declares 'rename' in , not in . We must include it before we #define rename rpl_rename. */ /* But in any case avoid namespace pollution on glibc systems. */ #if (@GNULIB_REMOVE@ || @GNULIB_RENAME@ || defined GNULIB_POSIXCHECK) \ && (defined _WIN32 && ! defined __CYGWIN__) \ && ! defined __GLIBC__ # include #endif /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers that can be freed by passing them as the Ith argument to the function F. */ #ifndef _GL_ATTRIBUTE_DEALLOC # if __GNUC__ >= 11 # define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) # else # define _GL_ATTRIBUTE_DEALLOC(f, i) # endif #endif /* The __attribute__ feature is available in gcc versions 2.5 and later. The __-protected variants of the attributes 'format' and 'printf' are accepted by gcc versions 2.6.4 (effectively 2.7) and later. We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because gnulib and libintl do '#define printf __printf__' when they override the 'printf' function. */ #ifndef _GL_ATTRIBUTE_FORMAT # if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) || defined __clang__ # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) # else # define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ # endif #endif /* An __attribute__ __format__ specifier for a function that takes a format string and arguments, where the format string directives are the ones standardized by ISO C99 and POSIX. _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD */ /* __gnu_printf__ is supported in GCC >= 4.4. */ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) # define _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD __gnu_printf__ #else # define _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD __printf__ #endif /* An __attribute__ __format__ specifier for a function that takes a format string and arguments, where the format string directives are the ones of the system printf(), rather than the ones standardized by ISO C99 and POSIX. _GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM */ /* On mingw, Gnulib sets __USE_MINGW_ANSI_STDIO in order to get closer to the standards. The macro GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU indicates whether this change is effective. On older mingw, it is not. */ #if GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU # define _GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD #else # define _GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM __printf__ #endif /* _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD indicates to GCC that the function takes a format string and arguments, where the format string directives are the ones standardized by ISO C99 and POSIX. */ #define _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, formatstring_parameter, first_argument)) /* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD, except that it indicates to GCC that the supported format string directives are the ones of the system printf(), rather than the ones standardized by ISO C99 and POSIX. */ #define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM, formatstring_parameter, first_argument)) /* _GL_ATTRIBUTE_FORMAT_SCANF indicates to GCC that the function takes a format string and arguments, where the format string directives are the ones standardized by ISO C99 and POSIX. */ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) # define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument)) #else # define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) #endif /* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF, except that it indicates to GCC that the supported format string directives are the ones of the system scanf(), rather than the ones standardized by ISO C99 and POSIX. */ #define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Macros for stringification. */ #define _GL_STDIO_STRINGIZE(token) #token #define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token) /* When also using extern inline, suppress the use of static inline in standard headers of problematic Apple configurations, as Libc at least through Libc-825.26 (2013-04-09) mishandles it; see, e.g., . Perhaps Apple will fix this some day. */ #if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \ && defined __GNUC__ && defined __STDC__) # undef putc_unlocked #endif #if @GNULIB_DPRINTF@ # if @REPLACE_DPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define dprintf rpl_dprintf # endif _GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *restrict format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *restrict format, ...)); # else # if !@HAVE_DPRINTF@ _GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *restrict format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *restrict format, ...)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (dprintf); # endif #elif defined GNULIB_POSIXCHECK # undef dprintf # if HAVE_RAW_DECL_DPRINTF _GL_WARN_ON_USE (dprintf, "dprintf is unportable - " "use gnulib module dprintf for portability"); # endif #endif #if @GNULIB_FCLOSE@ /* Close STREAM and its underlying file descriptor. */ # if @REPLACE_FCLOSE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fclose rpl_fclose # endif _GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fclose, int, (FILE *stream)); # else _GL_CXXALIAS_SYS (fclose, int, (FILE *stream)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fclose); # endif #elif defined GNULIB_POSIXCHECK # undef fclose /* Assume fclose is always declared. */ _GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - " "use gnulib module fclose for portable POSIX compliance"); #endif #if @GNULIB_MDA_FCLOSEALL@ /* On native Windows, map 'fcloseall' to '_fcloseall', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::fcloseall on all platforms that have it. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fcloseall # define fcloseall _fcloseall # endif _GL_CXXALIAS_MDA (fcloseall, int, (void)); # else # if @HAVE_DECL_FCLOSEALL@ # if defined __FreeBSD__ || defined __DragonFly__ _GL_CXXALIAS_SYS (fcloseall, void, (void)); # else _GL_CXXALIAS_SYS (fcloseall, int, (void)); # endif # endif # endif # if (defined _WIN32 && !defined __CYGWIN__) || @HAVE_DECL_FCLOSEALL@ _GL_CXXALIASWARN (fcloseall); # endif #endif #if @GNULIB_FDOPEN@ # if @REPLACE_FDOPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fdopen # define fdopen rpl_fdopen # endif _GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode) _GL_ARG_NONNULL ((2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); _GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fdopen # define fdopen _fdopen # endif _GL_CXXALIAS_MDA (fdopen, FILE *, (int fd, const char *mode)); # else # if __GNUC__ >= 11 /* For -Wmismatched-dealloc: Associate fdopen with fclose or rpl_fclose. */ _GL_FUNCDECL_SYS (fdopen, FILE *, (int fd, const char *mode) _GL_ARG_NONNULL ((2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); # endif _GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode)); # endif _GL_CXXALIASWARN (fdopen); #else # if @GNULIB_FCLOSE@ && __GNUC__ >= 11 && !defined fdopen /* For -Wmismatched-dealloc: Associate fdopen with fclose or rpl_fclose. */ _GL_FUNCDECL_SYS (fdopen, FILE *, (int fd, const char *mode) _GL_ARG_NONNULL ((2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); # endif # if defined GNULIB_POSIXCHECK # undef fdopen /* Assume fdopen is always declared. */ _GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - " "use gnulib module fdopen for portability"); # elif @GNULIB_MDA_FDOPEN@ /* On native Windows, map 'fdopen' to '_fdopen', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::fdopen always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fdopen # define fdopen _fdopen # endif _GL_CXXALIAS_MDA (fdopen, FILE *, (int fd, const char *mode)); # else _GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode)); # endif _GL_CXXALIASWARN (fdopen); # endif #endif #if @GNULIB_FFLUSH@ /* Flush all pending data on STREAM according to POSIX rules. Both output and seekable input streams are supported. Note! LOSS OF DATA can occur if fflush is applied on an input stream that is _not_seekable_ or on an update stream that is _not_seekable_ and in which the most recent operation was input. Seekability can be tested with lseek(fileno(fp),0,SEEK_CUR). */ # if @REPLACE_FFLUSH@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fflush rpl_fflush # endif _GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream)); _GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream)); # else _GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fflush); # endif #elif defined GNULIB_POSIXCHECK # undef fflush /* Assume fflush is always declared. */ _GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - " "use gnulib module fflush for portable POSIX compliance"); #endif #if @GNULIB_FGETC@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fgetc # define fgetc rpl_fgetc # endif _GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fgetc, int, (FILE *stream)); # else _GL_CXXALIAS_SYS (fgetc, int, (FILE *stream)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fgetc); # endif #endif #if @GNULIB_FGETS@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fgets # define fgets rpl_fgets # endif _GL_FUNCDECL_RPL (fgets, char *, (char *restrict s, int n, FILE *restrict stream) _GL_ARG_NONNULL ((1, 3))); _GL_CXXALIAS_RPL (fgets, char *, (char *restrict s, int n, FILE *restrict stream)); # else _GL_CXXALIAS_SYS (fgets, char *, (char *restrict s, int n, FILE *restrict stream)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fgets); # endif #endif #if @GNULIB_MDA_FILENO@ /* On native Windows, map 'fileno' to '_fileno', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::fileno always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fileno # define fileno _fileno # endif _GL_CXXALIAS_MDA (fileno, int, (FILE *restrict stream)); # else _GL_CXXALIAS_SYS (fileno, int, (FILE *restrict stream)); # endif _GL_CXXALIASWARN (fileno); #endif #if @GNULIB_FOPEN@ # if (@GNULIB_FOPEN@ && @REPLACE_FOPEN@) \ || (@GNULIB_FOPEN_GNU@ && @REPLACE_FOPEN_FOR_FOPEN_GNU@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fopen # define fopen rpl_fopen # endif _GL_FUNCDECL_RPL (fopen, FILE *, (const char *restrict filename, const char *restrict mode) _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); _GL_CXXALIAS_RPL (fopen, FILE *, (const char *restrict filename, const char *restrict mode)); # else # if __GNUC__ >= 11 /* For -Wmismatched-dealloc: Associate fopen with fclose or rpl_fclose. */ _GL_FUNCDECL_SYS (fopen, FILE *, (const char *restrict filename, const char *restrict mode) _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); # endif _GL_CXXALIAS_SYS (fopen, FILE *, (const char *restrict filename, const char *restrict mode)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fopen); # endif #else # if @GNULIB_FCLOSE@ && __GNUC__ >= 11 && !defined fopen /* For -Wmismatched-dealloc: Associate fopen with fclose or rpl_fclose. */ _GL_FUNCDECL_SYS (fopen, FILE *, (const char *restrict filename, const char *restrict mode) _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); # endif # if defined GNULIB_POSIXCHECK # undef fopen /* Assume fopen is always declared. */ _GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - " "use gnulib module fopen for portability"); # endif #endif #if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@ # if (@GNULIB_FPRINTF_POSIX@ && @REPLACE_FPRINTF@) \ || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fprintf rpl_fprintf # endif # define GNULIB_overrides_fprintf 1 # if @GNULIB_FPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL (fprintf, int, (FILE *restrict fp, const char *restrict format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) _GL_ARG_NONNULL ((1, 2))); # else _GL_FUNCDECL_RPL (fprintf, int, (FILE *restrict fp, const char *restrict format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_RPL (fprintf, int, (FILE *restrict fp, const char *restrict format, ...)); # else _GL_CXXALIAS_SYS (fprintf, int, (FILE *restrict fp, const char *restrict format, ...)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fprintf); # endif #endif #if !@GNULIB_FPRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_fprintf # undef fprintf # endif /* Assume fprintf is always declared. */ _GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - " "use gnulib module fprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_FPURGE@ /* Discard all pending buffered I/O data on STREAM. STREAM must not be wide-character oriented. When discarding pending output, the file position is set back to where it was before the write calls. When discarding pending input, the file position is advanced to match the end of the previously read input. Return 0 if successful. Upon error, return -1 and set errno. */ # if @REPLACE_FPURGE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fpurge rpl_fpurge # endif _GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream)); # else # if !@HAVE_DECL_FPURGE@ _GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream)); # endif _GL_CXXALIASWARN (fpurge); #elif defined GNULIB_POSIXCHECK # undef fpurge # if HAVE_RAW_DECL_FPURGE _GL_WARN_ON_USE (fpurge, "fpurge is not always present - " "use gnulib module fpurge for portability"); # endif #endif #if @GNULIB_FPUTC@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fputc # define fputc rpl_fputc # endif _GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream)); # else _GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fputc); # endif #endif #if @GNULIB_FPUTS@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fputs # define fputs rpl_fputs # endif _GL_FUNCDECL_RPL (fputs, int, (const char *restrict string, FILE *restrict stream) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (fputs, int, (const char *restrict string, FILE *restrict stream)); # else _GL_CXXALIAS_SYS (fputs, int, (const char *restrict string, FILE *restrict stream)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fputs); # endif #endif #if @GNULIB_FREAD@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fread # define fread rpl_fread # endif _GL_FUNCDECL_RPL (fread, size_t, (void *restrict ptr, size_t s, size_t n, FILE *restrict stream) _GL_ARG_NONNULL ((4))); _GL_CXXALIAS_RPL (fread, size_t, (void *restrict ptr, size_t s, size_t n, FILE *restrict stream)); # else _GL_CXXALIAS_SYS (fread, size_t, (void *restrict ptr, size_t s, size_t n, FILE *restrict stream)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fread); # endif #endif #if @GNULIB_FREOPEN@ # if @REPLACE_FREOPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef freopen # define freopen rpl_freopen # endif _GL_FUNCDECL_RPL (freopen, FILE *, (const char *restrict filename, const char *restrict mode, FILE *restrict stream) _GL_ARG_NONNULL ((2, 3))); _GL_CXXALIAS_RPL (freopen, FILE *, (const char *restrict filename, const char *restrict mode, FILE *restrict stream)); # else _GL_CXXALIAS_SYS (freopen, FILE *, (const char *restrict filename, const char *restrict mode, FILE *restrict stream)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (freopen); # endif #elif defined GNULIB_POSIXCHECK # undef freopen /* Assume freopen is always declared. */ _GL_WARN_ON_USE (freopen, "freopen on native Windows platforms is not POSIX compliant - " "use gnulib module freopen for portability"); #endif #if @GNULIB_FSCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fscanf # define fscanf rpl_fscanf # endif _GL_FUNCDECL_RPL (fscanf, int, (FILE *restrict stream, const char *restrict format, ...) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (fscanf, int, (FILE *restrict stream, const char *restrict format, ...)); # else _GL_CXXALIAS_SYS (fscanf, int, (FILE *restrict stream, const char *restrict format, ...)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fscanf); # endif #endif /* Set up the following warnings, based on which modules are in use. GNU Coding Standards discourage the use of fseek, since it imposes an arbitrary limitation on some 32-bit hosts. Remember that the fseek module depends on the fseeko module, so we only have three cases to consider: 1. The developer is not using either module. Issue a warning under GNULIB_POSIXCHECK for both functions, to remind them that both functions have bugs on some systems. _GL_NO_LARGE_FILES has no impact on this warning. 2. The developer is using both modules. They may be unaware of the arbitrary limitations of fseek, so issue a warning under GNULIB_POSIXCHECK. On the other hand, they may be using both modules intentionally, so the developer can define _GL_NO_LARGE_FILES in the compilation units where the use of fseek is safe, to silence the warning. 3. The developer is using the fseeko module, but not fseek. Gnulib guarantees that fseek will still work around platform bugs in that case, but we presume that the developer is aware of the pitfalls of fseek and was trying to avoid it, so issue a warning even when GNULIB_POSIXCHECK is undefined. Again, _GL_NO_LARGE_FILES can be defined to silence the warning in particular compilation units. In C++ compilations with GNULIB_NAMESPACE, in order to avoid that fseek gets defined as a macro, it is recommended that the developer uses the fseek module, even if he is not calling the fseek function. Most gnulib clients that perform stream operations should fall into category 3. */ #if @GNULIB_FSEEK@ # if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES # define _GL_FSEEK_WARN /* Category 2, above. */ # undef fseek # endif # if @REPLACE_FSEEK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fseek # define fseek rpl_fseek # endif _GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence)); # else _GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fseek); # endif #endif #if @GNULIB_FSEEKO@ # if !@GNULIB_FSEEK@ && !defined _GL_NO_LARGE_FILES # define _GL_FSEEK_WARN /* Category 3, above. */ # undef fseek # endif # if @REPLACE_FSEEKO@ /* Provide an fseeko function that is aware of a preceding fflush(), and which detects pipes. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fseeko # define fseeko rpl_fseeko # endif _GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)); # else # if ! @HAVE_DECL_FSEEKO@ _GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)); # endif _GL_CXXALIASWARN (fseeko); #elif defined GNULIB_POSIXCHECK # define _GL_FSEEK_WARN /* Category 1, above. */ # undef fseek # undef fseeko # if HAVE_RAW_DECL_FSEEKO _GL_WARN_ON_USE (fseeko, "fseeko is unportable - " "use gnulib module fseeko for portability"); # endif #endif #ifdef _GL_FSEEK_WARN # undef _GL_FSEEK_WARN /* Here, either fseek is undefined (but C89 guarantees that it is declared), or it is defined as rpl_fseek (declared above). */ _GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB " "on 32-bit platforms - " "use fseeko function for handling of large files"); #endif /* ftell, ftello. See the comments on fseek/fseeko. */ #if @GNULIB_FTELL@ # if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES # define _GL_FTELL_WARN /* Category 2, above. */ # undef ftell # endif # if @REPLACE_FTELL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ftell # define ftell rpl_ftell # endif _GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (ftell, long, (FILE *fp)); # else _GL_CXXALIAS_SYS (ftell, long, (FILE *fp)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (ftell); # endif #endif #if @GNULIB_FTELLO@ # if !@GNULIB_FTELL@ && !defined _GL_NO_LARGE_FILES # define _GL_FTELL_WARN /* Category 3, above. */ # undef ftell # endif # if @REPLACE_FTELLO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ftello # define ftello rpl_ftello # endif _GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp)); # else # if ! @HAVE_DECL_FTELLO@ _GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp)); # endif _GL_CXXALIASWARN (ftello); #elif defined GNULIB_POSIXCHECK # define _GL_FTELL_WARN /* Category 1, above. */ # undef ftell # undef ftello # if HAVE_RAW_DECL_FTELLO _GL_WARN_ON_USE (ftello, "ftello is unportable - " "use gnulib module ftello for portability"); # endif #endif #ifdef _GL_FTELL_WARN # undef _GL_FTELL_WARN /* Here, either ftell is undefined (but C89 guarantees that it is declared), or it is defined as rpl_ftell (declared above). */ _GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB " "on 32-bit platforms - " "use ftello function for handling of large files"); #endif #if @GNULIB_FWRITE@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fwrite # define fwrite rpl_fwrite # endif _GL_FUNCDECL_RPL (fwrite, size_t, (const void *restrict ptr, size_t s, size_t n, FILE *restrict stream) _GL_ARG_NONNULL ((1, 4))); _GL_CXXALIAS_RPL (fwrite, size_t, (const void *restrict ptr, size_t s, size_t n, FILE *restrict stream)); # else _GL_CXXALIAS_SYS (fwrite, size_t, (const void *restrict ptr, size_t s, size_t n, FILE *restrict stream)); /* Work around bug 11959 when fortifying glibc 2.4 through 2.15 , which sometimes causes an unwanted diagnostic for fwrite calls. This affects only function declaration attributes under certain versions of gcc and clang, and is not needed for C++. */ # if (0 < __USE_FORTIFY_LEVEL \ && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \ && 3 < __GNUC__ + (4 <= __GNUC_MINOR__) \ && !defined __cplusplus) # undef fwrite # undef fwrite_unlocked extern size_t __REDIRECT (rpl_fwrite, (const void *__restrict, size_t, size_t, FILE *__restrict), fwrite); extern size_t __REDIRECT (rpl_fwrite_unlocked, (const void *__restrict, size_t, size_t, FILE *__restrict), fwrite_unlocked); # define fwrite rpl_fwrite # define fwrite_unlocked rpl_fwrite_unlocked # endif # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fwrite); # endif #endif #if @GNULIB_GETC@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getc # define getc rpl_fgetc # endif _GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream)); # else _GL_CXXALIAS_SYS (getc, int, (FILE *stream)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (getc); # endif #endif #if @GNULIB_GETCHAR@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getchar # define getchar rpl_getchar # endif _GL_FUNCDECL_RPL (getchar, int, (void)); _GL_CXXALIAS_RPL (getchar, int, (void)); # else _GL_CXXALIAS_SYS (getchar, int, (void)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (getchar); # endif #endif #if @GNULIB_GETDELIM@ /* Read input, up to (and including) the next occurrence of DELIMITER, from STREAM, store it in *LINEPTR (and NUL-terminate it). *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE bytes of space. It is realloc'd as necessary. Return the number of bytes read and stored at *LINEPTR (not including the NUL terminator), or -1 on error or EOF. */ # if @REPLACE_GETDELIM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getdelim # define getdelim rpl_getdelim # endif _GL_FUNCDECL_RPL (getdelim, ssize_t, (char **restrict lineptr, size_t *restrict linesize, int delimiter, FILE *restrict stream) _GL_ARG_NONNULL ((1, 2, 4))); _GL_CXXALIAS_RPL (getdelim, ssize_t, (char **restrict lineptr, size_t *restrict linesize, int delimiter, FILE *restrict stream)); # else # if !@HAVE_DECL_GETDELIM@ _GL_FUNCDECL_SYS (getdelim, ssize_t, (char **restrict lineptr, size_t *restrict linesize, int delimiter, FILE *restrict stream) _GL_ARG_NONNULL ((1, 2, 4))); # endif _GL_CXXALIAS_SYS (getdelim, ssize_t, (char **restrict lineptr, size_t *restrict linesize, int delimiter, FILE *restrict stream)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (getdelim); # endif #elif defined GNULIB_POSIXCHECK # undef getdelim # if HAVE_RAW_DECL_GETDELIM _GL_WARN_ON_USE (getdelim, "getdelim is unportable - " "use gnulib module getdelim for portability"); # endif #endif #if @GNULIB_GETLINE@ /* Read a line, up to (and including) the next newline, from STREAM, store it in *LINEPTR (and NUL-terminate it). *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE bytes of space. It is realloc'd as necessary. Return the number of bytes read and stored at *LINEPTR (not including the NUL terminator), or -1 on error or EOF. */ # if @REPLACE_GETLINE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getline # define getline rpl_getline # endif _GL_FUNCDECL_RPL (getline, ssize_t, (char **restrict lineptr, size_t *restrict linesize, FILE *restrict stream) _GL_ARG_NONNULL ((1, 2, 3))); _GL_CXXALIAS_RPL (getline, ssize_t, (char **restrict lineptr, size_t *restrict linesize, FILE *restrict stream)); # else # if !@HAVE_DECL_GETLINE@ _GL_FUNCDECL_SYS (getline, ssize_t, (char **restrict lineptr, size_t *restrict linesize, FILE *restrict stream) _GL_ARG_NONNULL ((1, 2, 3))); # endif _GL_CXXALIAS_SYS (getline, ssize_t, (char **restrict lineptr, size_t *restrict linesize, FILE *restrict stream)); # endif # if __GLIBC__ >= 2 && @HAVE_DECL_GETLINE@ _GL_CXXALIASWARN (getline); # endif #elif defined GNULIB_POSIXCHECK # undef getline # if HAVE_RAW_DECL_GETLINE _GL_WARN_ON_USE (getline, "getline is unportable - " "use gnulib module getline for portability"); # endif #endif /* It is very rare that the developer ever has full control of stdin, so any use of gets warrants an unconditional warning; besides, C11 removed it. */ #undef gets #if HAVE_RAW_DECL_GETS && !defined __cplusplus _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); #endif #if @GNULIB_MDA_GETW@ /* On native Windows, map 'getw' to '_getw', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::getw always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getw # define getw _getw # endif _GL_CXXALIAS_MDA (getw, int, (FILE *restrict stream)); # else # if @HAVE_DECL_GETW@ _GL_CXXALIAS_SYS (getw, int, (FILE *restrict stream)); # endif # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (getw); # endif #endif #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@ struct obstack; /* Grow an obstack with formatted output. Return the number of bytes added to OBS. No trailing nul byte is added, and the object should be closed with obstack_finish before use. Upon memory allocation error, call obstack_alloc_failed_handler. Upon other error, return -1. */ # if @REPLACE_OBSTACK_PRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define obstack_printf rpl_obstack_printf # endif _GL_FUNCDECL_RPL (obstack_printf, int, (struct obstack *obs, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (obstack_printf, int, (struct obstack *obs, const char *format, ...)); # else # if !@HAVE_DECL_OBSTACK_PRINTF@ _GL_FUNCDECL_SYS (obstack_printf, int, (struct obstack *obs, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (obstack_printf, int, (struct obstack *obs, const char *format, ...)); # endif _GL_CXXALIASWARN (obstack_printf); # if @REPLACE_OBSTACK_PRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define obstack_vprintf rpl_obstack_vprintf # endif _GL_FUNCDECL_RPL (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args)); # else # if !@HAVE_DECL_OBSTACK_PRINTF@ _GL_FUNCDECL_SYS (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args)); # endif _GL_CXXALIASWARN (obstack_vprintf); #endif #if @GNULIB_PCLOSE@ # if !@HAVE_PCLOSE@ _GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (pclose, int, (FILE *stream)); _GL_CXXALIASWARN (pclose); #elif defined GNULIB_POSIXCHECK # undef pclose # if HAVE_RAW_DECL_PCLOSE _GL_WARN_ON_USE (pclose, "pclose is unportable - " "use gnulib module pclose for more portability"); # endif #endif #if @GNULIB_PERROR@ /* Print a message to standard error, describing the value of ERRNO, (if STRING is not NULL and not empty) prefixed with STRING and ": ", and terminated with a newline. */ # if @REPLACE_PERROR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define perror rpl_perror # endif _GL_FUNCDECL_RPL (perror, void, (const char *string)); _GL_CXXALIAS_RPL (perror, void, (const char *string)); # else _GL_CXXALIAS_SYS (perror, void, (const char *string)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (perror); # endif #elif defined GNULIB_POSIXCHECK # undef perror /* Assume perror is always declared. */ _GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - " "use gnulib module perror for portability"); #endif #if @GNULIB_POPEN@ # if @REPLACE_POPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef popen # define popen rpl_popen # endif _GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode) _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (pclose, 1)); _GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode)); # else # if !@HAVE_POPEN@ || __GNUC__ >= 11 _GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode) _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (pclose, 1)); # endif _GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode)); # endif _GL_CXXALIASWARN (popen); #else # if @GNULIB_PCLOSE@ && __GNUC__ >= 11 && !defined popen /* For -Wmismatched-dealloc: Associate popen with pclose or rpl_pclose. */ _GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode) _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (pclose, 1)); # endif # if defined GNULIB_POSIXCHECK # undef popen # if HAVE_RAW_DECL_POPEN _GL_WARN_ON_USE (popen, "popen is buggy on some platforms - " "use gnulib module popen or pipe for more portability"); # endif # endif #endif #if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@ # if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \ || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if defined __GNUC__ || defined __clang__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) /* Don't break __attribute__((format(printf,M,N))). */ # define printf __printf__ # endif # if @GNULIB_PRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL_1 (__printf__, int, (const char *restrict format, ...) __asm__ (@ASM_SYMBOL_PREFIX@ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (1, 2) _GL_ARG_NONNULL ((1))); # else _GL_FUNCDECL_RPL_1 (__printf__, int, (const char *restrict format, ...) __asm__ (@ASM_SYMBOL_PREFIX@ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...)); # else # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define printf rpl_printf # endif _GL_FUNCDECL_RPL (printf, int, (const char *restrict format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (1, 2) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (printf, int, (const char *restrict format, ...)); # endif # define GNULIB_overrides_printf 1 # else _GL_CXXALIAS_SYS (printf, int, (const char *restrict format, ...)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (printf); # endif #endif #if !@GNULIB_PRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_printf # undef printf # endif /* Assume printf is always declared. */ _GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - " "use gnulib module printf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_PUTC@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putc # define putc rpl_fputc # endif _GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream)); # else _GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (putc); # endif #endif #if @GNULIB_PUTCHAR@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putchar # define putchar rpl_putchar # endif _GL_FUNCDECL_RPL (putchar, int, (int c)); _GL_CXXALIAS_RPL (putchar, int, (int c)); # else _GL_CXXALIAS_SYS (putchar, int, (int c)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (putchar); # endif #endif #if @GNULIB_PUTS@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef puts # define puts rpl_puts # endif _GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (puts, int, (const char *string)); # else _GL_CXXALIAS_SYS (puts, int, (const char *string)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (puts); # endif #endif #if @GNULIB_MDA_PUTW@ /* On native Windows, map 'putw' to '_putw', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::putw always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putw # define putw _putw # endif _GL_CXXALIAS_MDA (putw, int, (int w, FILE *restrict stream)); # else # if @HAVE_DECL_PUTW@ _GL_CXXALIAS_SYS (putw, int, (int w, FILE *restrict stream)); # endif # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (putw); # endif #endif #if @GNULIB_REMOVE@ # if @REPLACE_REMOVE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef remove # define remove rpl_remove # endif _GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (remove, int, (const char *name)); # else _GL_CXXALIAS_SYS (remove, int, (const char *name)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (remove); # endif #elif defined GNULIB_POSIXCHECK # undef remove /* Assume remove is always declared. */ _GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - " "use gnulib module remove for more portability"); #endif #if @GNULIB_RENAME@ # if @REPLACE_RENAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef rename # define rename rpl_rename # endif _GL_FUNCDECL_RPL (rename, int, (const char *old_filename, const char *new_filename) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (rename, int, (const char *old_filename, const char *new_filename)); # else _GL_CXXALIAS_SYS (rename, int, (const char *old_filename, const char *new_filename)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (rename); # endif #elif defined GNULIB_POSIXCHECK # undef rename /* Assume rename is always declared. */ _GL_WARN_ON_USE (rename, "rename is buggy on some platforms - " "use gnulib module rename for more portability"); #endif #if @GNULIB_RENAMEAT@ # if @REPLACE_RENAMEAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef renameat # define renameat rpl_renameat # endif _GL_FUNCDECL_RPL (renameat, int, (int fd1, char const *file1, int fd2, char const *file2) _GL_ARG_NONNULL ((2, 4))); _GL_CXXALIAS_RPL (renameat, int, (int fd1, char const *file1, int fd2, char const *file2)); # else # if !@HAVE_RENAMEAT@ _GL_FUNCDECL_SYS (renameat, int, (int fd1, char const *file1, int fd2, char const *file2) _GL_ARG_NONNULL ((2, 4))); # endif _GL_CXXALIAS_SYS (renameat, int, (int fd1, char const *file1, int fd2, char const *file2)); # endif _GL_CXXALIASWARN (renameat); #elif defined GNULIB_POSIXCHECK # undef renameat # if HAVE_RAW_DECL_RENAMEAT _GL_WARN_ON_USE (renameat, "renameat is not portable - " "use gnulib module renameat for portability"); # endif #endif #if @GNULIB_SCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if defined __GNUC__ || defined __clang__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef scanf /* Don't break __attribute__((format(scanf,M,N))). */ # define scanf __scanf__ # endif _GL_FUNCDECL_RPL_1 (__scanf__, int, (const char *restrict format, ...) __asm__ (@ASM_SYMBOL_PREFIX@ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf)) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *restrict format, ...)); # else # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef scanf # define scanf rpl_scanf # endif _GL_FUNCDECL_RPL (scanf, int, (const char *restrict format, ...) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (scanf, int, (const char *restrict format, ...)); # endif # else _GL_CXXALIAS_SYS (scanf, int, (const char *restrict format, ...)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (scanf); # endif #endif #if @GNULIB_SNPRINTF@ # if @REPLACE_SNPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define snprintf rpl_snprintf # endif # define GNULIB_overrides_snprintf 1 _GL_FUNCDECL_RPL (snprintf, int, (char *restrict str, size_t size, const char *restrict format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 4) _GL_ARG_NONNULL ((3))); _GL_CXXALIAS_RPL (snprintf, int, (char *restrict str, size_t size, const char *restrict format, ...)); # else # if !@HAVE_DECL_SNPRINTF@ _GL_FUNCDECL_SYS (snprintf, int, (char *restrict str, size_t size, const char *restrict format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 4) _GL_ARG_NONNULL ((3))); # endif _GL_CXXALIAS_SYS (snprintf, int, (char *restrict str, size_t size, const char *restrict format, ...)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (snprintf); # endif #elif defined GNULIB_POSIXCHECK # undef snprintf # if HAVE_RAW_DECL_SNPRINTF _GL_WARN_ON_USE (snprintf, "snprintf is unportable - " "use gnulib module snprintf for portability"); # endif #endif /* Some people would argue that all sprintf uses should be warned about (for example, OpenBSD issues a link warning for it), since it can cause security holes due to buffer overruns. However, we believe that sprintf can be used safely, and is more efficient than snprintf in those safe cases; and as proof of our belief, we use sprintf in several gnulib modules. So this header intentionally avoids adding a warning to sprintf except when GNULIB_POSIXCHECK is defined. */ #if @GNULIB_SPRINTF_POSIX@ # if @REPLACE_SPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define sprintf rpl_sprintf # endif # define GNULIB_overrides_sprintf 1 _GL_FUNCDECL_RPL (sprintf, int, (char *restrict str, const char *restrict format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (sprintf, int, (char *restrict str, const char *restrict format, ...)); # else _GL_CXXALIAS_SYS (sprintf, int, (char *restrict str, const char *restrict format, ...)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (sprintf); # endif #elif defined GNULIB_POSIXCHECK # undef sprintf /* Assume sprintf is always declared. */ _GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - " "use gnulib module sprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_MDA_TEMPNAM@ /* On native Windows, map 'tempnam' to '_tempnam', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::tempnam always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef tempnam # define tempnam _tempnam # endif _GL_CXXALIAS_MDA (tempnam, char *, (const char *dir, const char *prefix)); # else _GL_CXXALIAS_SYS (tempnam, char *, (const char *dir, const char *prefix)); # endif _GL_CXXALIASWARN (tempnam); #endif #if @GNULIB_TMPFILE@ # if @REPLACE_TMPFILE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define tmpfile rpl_tmpfile # endif _GL_FUNCDECL_RPL (tmpfile, FILE *, (void) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); _GL_CXXALIAS_RPL (tmpfile, FILE *, (void)); # else # if __GNUC__ >= 11 /* For -Wmismatched-dealloc: Associate tmpfile with fclose or rpl_fclose. */ _GL_FUNCDECL_SYS (tmpfile, FILE *, (void) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); # endif _GL_CXXALIAS_SYS (tmpfile, FILE *, (void)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (tmpfile); # endif #else # if @GNULIB_FCLOSE@ && __GNUC__ >= 11 && !defined tmpfile /* For -Wmismatched-dealloc: Associate tmpfile with fclose or rpl_fclose. */ _GL_FUNCDECL_SYS (tmpfile, FILE *, (void) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); # endif # if defined GNULIB_POSIXCHECK # undef tmpfile # if HAVE_RAW_DECL_TMPFILE _GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - " "use gnulib module tmpfile for portability"); # endif # endif #endif #if @GNULIB_VASPRINTF@ /* Write formatted output to a string dynamically allocated with malloc(). If the memory allocation succeeds, store the address of the string in *RESULT and return the number of resulting bytes, excluding the trailing NUL. Upon memory allocation error, or some other error, return -1. */ # if @REPLACE_VASPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define asprintf rpl_asprintf # endif # define GNULIB_overrides_asprintf _GL_FUNCDECL_RPL (asprintf, int, (char **result, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (asprintf, int, (char **result, const char *format, ...)); # else # if !@HAVE_VASPRINTF@ _GL_FUNCDECL_SYS (asprintf, int, (char **result, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (asprintf, int, (char **result, const char *format, ...)); # endif _GL_CXXALIASWARN (asprintf); # if @REPLACE_VASPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vasprintf rpl_vasprintf # endif # define GNULIB_overrides_vasprintf 1 _GL_FUNCDECL_RPL (vasprintf, int, (char **result, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (vasprintf, int, (char **result, const char *format, va_list args)); # else # if !@HAVE_VASPRINTF@ _GL_FUNCDECL_SYS (vasprintf, int, (char **result, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (vasprintf, int, (char **result, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vasprintf); #endif #if @GNULIB_VDPRINTF@ # if @REPLACE_VDPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vdprintf rpl_vdprintf # endif _GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *restrict format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *restrict format, va_list args)); # else # if !@HAVE_VDPRINTF@ _GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *restrict format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) _GL_ARG_NONNULL ((2))); # endif /* Need to cast, because on Solaris, the third parameter will likely be __va_list args. */ _GL_CXXALIAS_SYS_CAST (vdprintf, int, (int fd, const char *restrict format, va_list args)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (vdprintf); # endif #elif defined GNULIB_POSIXCHECK # undef vdprintf # if HAVE_RAW_DECL_VDPRINTF _GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - " "use gnulib module vdprintf for portability"); # endif #endif #if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@ # if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \ || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vfprintf rpl_vfprintf # endif # define GNULIB_overrides_vfprintf 1 # if @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL (vfprintf, int, (FILE *restrict fp, const char *restrict format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) _GL_ARG_NONNULL ((1, 2))); # else _GL_FUNCDECL_RPL (vfprintf, int, (FILE *restrict fp, const char *restrict format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_RPL (vfprintf, int, (FILE *restrict fp, const char *restrict format, va_list args)); # else /* Need to cast, because on Solaris, the third parameter is __va_list args and GCC's fixincludes did not change this to __gnuc_va_list. */ _GL_CXXALIAS_SYS_CAST (vfprintf, int, (FILE *restrict fp, const char *restrict format, va_list args)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (vfprintf); # endif #endif #if !@GNULIB_VFPRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_vfprintf # undef vfprintf # endif /* Assume vfprintf is always declared. */ _GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - " "use gnulib module vfprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_VFSCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef vfscanf # define vfscanf rpl_vfscanf # endif _GL_FUNCDECL_RPL (vfscanf, int, (FILE *restrict stream, const char *restrict format, va_list args) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (vfscanf, int, (FILE *restrict stream, const char *restrict format, va_list args)); # else _GL_CXXALIAS_SYS (vfscanf, int, (FILE *restrict stream, const char *restrict format, va_list args)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (vfscanf); # endif #endif #if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@ # if (@GNULIB_VPRINTF_POSIX@ && @REPLACE_VPRINTF@) \ || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vprintf rpl_vprintf # endif # define GNULIB_overrides_vprintf 1 # if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL (vprintf, int, (const char *restrict format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (1, 0) _GL_ARG_NONNULL ((1))); # else _GL_FUNCDECL_RPL (vprintf, int, (const char *restrict format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_RPL (vprintf, int, (const char *restrict format, va_list args)); # else /* Need to cast, because on Solaris, the second parameter is __va_list args and GCC's fixincludes did not change this to __gnuc_va_list. */ _GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *restrict format, va_list args)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (vprintf); # endif #endif #if !@GNULIB_VPRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_vprintf # undef vprintf # endif /* Assume vprintf is always declared. */ _GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - " "use gnulib module vprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_VSCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef vscanf # define vscanf rpl_vscanf # endif _GL_FUNCDECL_RPL (vscanf, int, (const char *restrict format, va_list args) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (vscanf, int, (const char *restrict format, va_list args)); # else _GL_CXXALIAS_SYS (vscanf, int, (const char *restrict format, va_list args)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (vscanf); # endif #endif #if @GNULIB_VSNPRINTF@ # if @REPLACE_VSNPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vsnprintf rpl_vsnprintf # endif # define GNULIB_overrides_vsnprintf 1 _GL_FUNCDECL_RPL (vsnprintf, int, (char *restrict str, size_t size, const char *restrict format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 0) _GL_ARG_NONNULL ((3))); _GL_CXXALIAS_RPL (vsnprintf, int, (char *restrict str, size_t size, const char *restrict format, va_list args)); # else # if !@HAVE_DECL_VSNPRINTF@ _GL_FUNCDECL_SYS (vsnprintf, int, (char *restrict str, size_t size, const char *restrict format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 0) _GL_ARG_NONNULL ((3))); # endif _GL_CXXALIAS_SYS (vsnprintf, int, (char *restrict str, size_t size, const char *restrict format, va_list args)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (vsnprintf); # endif #elif defined GNULIB_POSIXCHECK # undef vsnprintf # if HAVE_RAW_DECL_VSNPRINTF _GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - " "use gnulib module vsnprintf for portability"); # endif #endif #if @GNULIB_VSPRINTF_POSIX@ # if @REPLACE_VSPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vsprintf rpl_vsprintf # endif # define GNULIB_overrides_vsprintf 1 _GL_FUNCDECL_RPL (vsprintf, int, (char *restrict str, const char *restrict format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (vsprintf, int, (char *restrict str, const char *restrict format, va_list args)); # else /* Need to cast, because on Solaris, the third parameter is __va_list args and GCC's fixincludes did not change this to __gnuc_va_list. */ _GL_CXXALIAS_SYS_CAST (vsprintf, int, (char *restrict str, const char *restrict format, va_list args)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (vsprintf); # endif #elif defined GNULIB_POSIXCHECK # undef vsprintf /* Assume vsprintf is always declared. */ _GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - " "use gnulib module vsprintf-posix for portable " "POSIX compliance"); #endif #endif /* _@GUARD_PREFIX@_STDIO_H */ #endif /* _@GUARD_PREFIX@_STDIO_H */ #endif recode-3.7.15/lib/reallocarray.c0000644000175000017500000000216614371444255012141 /* reallocarray function that is glibc compatible. Copyright (C) 2017-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* written by Darshit Shah */ #include #include #include #include void * reallocarray (void *ptr, size_t nmemb, size_t size) { size_t nbytes; if (ckd_mul (&nbytes, nmemb, size)) { errno = ENOMEM; return NULL; } /* Rely on the semantics of GNU realloc. */ return realloc (ptr, nbytes); } recode-3.7.15/lib/strerror.c0000644000175000017500000000405714371444255011344 /* strerror.c --- POSIX compatible system error routine Copyright (C) 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include #include #include #include #include #include "intprops.h" #include "strerror-override.h" /* Use the system functions, not the gnulib overrides in this file. */ #undef sprintf char * strerror (int n) #undef strerror { static char buf[STACKBUF_LEN]; size_t len; /* Cast away const, due to the historical signature of strerror; callers should not be modifying the string. */ const char *msg = strerror_override (n); if (msg) return (char *) msg; msg = strerror (n); /* Our strerror_r implementation might use the system's strerror buffer, so all other clients of strerror have to see the error copied into a buffer that we manage. This is not thread-safe, even if the system strerror is, but portable programs shouldn't be using strerror if they care about thread-safety. */ if (!msg || !*msg) { static char const fmt[] = "Unknown error %d"; static_assert (sizeof buf >= sizeof (fmt) + INT_STRLEN_BOUND (n)); sprintf (buf, fmt, n); errno = EINVAL; return buf; } /* Fix STACKBUF_LEN if this ever aborts. */ len = strlen (msg); if (sizeof buf <= len) abort (); memcpy (buf, msg, len + 1); return buf; } recode-3.7.15/lib/getopt1.c0000644000175000017500000000736014371444255011045 /* getopt_long and getopt_long_only entry points for GNU getopt. Copyright (C) 1987-2023 Free Software Foundation, Inc. This file is part of the GNU C Library and is also part of gnulib. Patches to this file should be submitted to both projects. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ #ifndef _LIBC # include #endif #include "getopt.h" #include "getopt_int.h" int getopt_long (int argc, char *__getopt_argv_const *argv, const char *options, const struct option *long_options, int *opt_index) { return _getopt_internal (argc, (char **) argv, options, long_options, opt_index, 0, 0); } int _getopt_long_r (int argc, char **argv, const char *options, const struct option *long_options, int *opt_index, struct _getopt_data *d) { return _getopt_internal_r (argc, argv, options, long_options, opt_index, 0, d, 0); } /* Like getopt_long, but '-' as well as '--' can indicate a long option. If an option that starts with '-' (not '--') doesn't match a long option, but does match a short option, it is parsed as a short option instead. */ int getopt_long_only (int argc, char *__getopt_argv_const *argv, const char *options, const struct option *long_options, int *opt_index) { return _getopt_internal (argc, (char **) argv, options, long_options, opt_index, 1, 0); } int _getopt_long_only_r (int argc, char **argv, const char *options, const struct option *long_options, int *opt_index, struct _getopt_data *d) { return _getopt_internal_r (argc, argv, options, long_options, opt_index, 1, d, 0); } #ifdef TEST #include #include int main (int argc, char **argv) { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; int option_index = 0; static const struct option long_options[] = { {"add", 1, 0, 0}, {"append", 0, 0, 0}, {"delete", 1, 0, 0}, {"verbose", 0, 0, 0}, {"create", 0, 0, 0}, {"file", 1, 0, 0}, {0, 0, 0, 0} }; c = getopt_long (argc, argv, "abc:d:0123456789", long_options, &option_index); if (c == -1) break; switch (c) { case 0: printf ("option %s", long_options[option_index].name); if (optarg) printf (" with arg %s", optarg); printf ("\n"); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value '%s'\n", optarg); break; case 'd': printf ("option d with value '%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ recode-3.7.15/lib/exitfail.c0000644000175000017500000000155514371444255011267 /* Failure exit status Copyright (C) 2002-2003, 2005-2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #include "exitfail.h" #include int volatile exit_failure = EXIT_FAILURE; recode-3.7.15/lib/getopt-pfx-core.h0000644000175000017500000000502414371444255012505 /* getopt (basic, portable features) gnulib wrapper header. Copyright (C) 1989-2023 Free Software Foundation, Inc. This file is part of gnulib. Unlike most of the getopt implementation, it is NOT shared with the GNU C Library. This file 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. This file 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 . */ #ifndef _GETOPT_PFX_CORE_H #define _GETOPT_PFX_CORE_H 1 /* This header should not be used directly; include getopt.h or unistd.h instead. It does not have a protective #error, because the guard macro for getopt.h in gnulib is not fixed. */ /* Standalone applications should #define __GETOPT_PREFIX to an identifier that prefixes the external functions and variables defined in getopt-core.h and getopt-ext.h. Systematically rename identifiers so that they do not collide with the system functions and variables. Renaming avoids problems with some compilers and linkers. */ #ifdef __GETOPT_PREFIX # ifndef __GETOPT_ID # define __GETOPT_CONCAT(x, y) x ## y # define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y) # define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y) # endif # undef getopt # undef optarg # undef opterr # undef optind # undef optopt # define getopt __GETOPT_ID (getopt) # define optarg __GETOPT_ID (optarg) # define opterr __GETOPT_ID (opterr) # define optind __GETOPT_ID (optind) # define optopt __GETOPT_ID (optopt) /* Work around a a problem on macOS, which declares getopt with a trailing __DARWIN_ALIAS(getopt) that would expand to something like __asm("_" "rpl_getopt" "$UNIX2003") were it not for the following hack to suppress the macOS declaration . */ # ifdef __APPLE__ # define _GETOPT # endif /* The system's getopt.h may have already included getopt-core.h to declare the unprefixed identifiers. Undef _GETOPT_CORE_H so that getopt-core.h declares them with prefixes. */ # undef _GETOPT_CORE_H #endif #include #endif /* _GETOPT_PFX_CORE_H */ recode-3.7.15/lib/binary-io.c0000644000175000017500000000250014371444255011342 /* Binary mode I/O. Copyright 2017-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #define BINARY_IO_INLINE _GL_EXTERN_INLINE #include "binary-io.h" #if defined __DJGPP__ || defined __EMX__ # include int set_binary_mode (int fd, int mode) { if (isatty (fd)) /* If FD refers to a console (not a pipe, not a regular file), O_TEXT is the only reasonable mode, both on input and on output. Silently ignore the request. If we were to return -1 here, all programs that use xset_binary_mode would fail when run with console input or console output. */ return O_TEXT; else return __gl_setmode (fd, mode); } #endif recode-3.7.15/lib/isnanf.c0000644000175000017500000000154114371444255010733 /* Test for NaN that does not need libm. Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2007. */ #define USE_FLOAT #include "isnan.c" recode-3.7.15/lib/getopt_int.h0000644000175000017500000001011214371444255011630 /* Internal declarations for getopt. Copyright (C) 1989-2023 Free Software Foundation, Inc. This file is part of the GNU C Library and is also part of gnulib. Patches to this file should be submitted to both projects. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ #ifndef _GETOPT_INT_H #define _GETOPT_INT_H 1 #include extern int _getopt_internal (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only, int __posixly_correct); /* Reentrant versions which can handle parsing multiple argument vectors at the same time. */ /* Describe how to deal with options that follow non-option ARGV-elements. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what POSIX specifies should happen. PERMUTE means permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other ARGV-elements in any order and that care about the ordering of the two. We describe each non-option ARGV-element as if it were the argument of an option with character code 1. The special argument '--' forces an end of option-scanning regardless of the value of 'ordering'. In the case of RETURN_IN_ORDER, only '--' can cause 'getopt' to return -1 with 'optind' != ARGC. */ enum __ord { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER }; /* Data type for reentrant functions. */ struct _getopt_data { /* These have exactly the same meaning as the corresponding global variables, except that they are used for the reentrant versions of getopt. */ int optind; int opterr; int optopt; char *optarg; /* Internal members. */ /* True if the internal members have been initialized. */ int __initialized; /* The next char to be scanned in the option-element in which the last option character we returned was found. This allows us to pick up the scan where we left off. If this is zero, or a null string, it means resume the scan by advancing to the next ARGV-element. */ char *__nextchar; /* See __ord above. */ enum __ord __ordering; /* Handle permutation of arguments. */ /* Describe the part of ARGV that contains non-options that have been skipped. 'first_nonopt' is the index in ARGV of the first of them; 'last_nonopt' is the index after the last of them. */ int __first_nonopt; int __last_nonopt; }; /* The initializer is necessary to set OPTIND and OPTERR to their default values and to clear the initialization flag. */ #define _GETOPT_DATA_INITIALIZER { 1, 1 } extern int _getopt_internal_r (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only, struct _getopt_data *__data, int __posixly_correct); extern int _getopt_long_r (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, struct _getopt_data *__data); extern int _getopt_long_only_r (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, struct _getopt_data *__data); #endif /* getopt_int.h */ recode-3.7.15/lib/size_max.h0000644000175000017500000000225314371444255011302 /* size_max.h -- declare SIZE_MAX through system headers Copyright (C) 2005-2006, 2009-2023 Free Software Foundation, Inc. Written by Simon Josefsson. This file 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. This file 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 . */ #ifndef GNULIB_SIZE_MAX_H #define GNULIB_SIZE_MAX_H /* Get SIZE_MAX declaration on systems like Solaris 7/8/9. */ # include /* Get SIZE_MAX declaration on systems like glibc 2. */ # if HAVE_STDINT_H # include # endif /* On systems where these include files don't define it, SIZE_MAX is defined in config.h. */ #endif /* GNULIB_SIZE_MAX_H */ recode-3.7.15/lib/printf-parse.c0000644000175000017500000005247314371444255012101 /* Formatted output to strings. Copyright (C) 1999-2000, 2002-2003, 2006-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* This file can be parametrized with the following macros: CHAR_T The element type of the format string. CHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters in the format string are ASCII. DIRECTIVE Structure denoting a format directive. Depends on CHAR_T. DIRECTIVES Structure denoting the set of format directives of a format string. Depends on CHAR_T. PRINTF_PARSE Function that parses a format string. Depends on CHAR_T. STATIC Set to 'static' to declare the function static. ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. */ #ifndef PRINTF_PARSE # include #endif /* Specification. */ #ifndef PRINTF_PARSE # include "printf-parse.h" #endif /* Default parameters. */ #ifndef PRINTF_PARSE # define PRINTF_PARSE printf_parse # define CHAR_T char # define DIRECTIVE char_directive # define DIRECTIVES char_directives #endif /* Get size_t, NULL. */ #include /* Get intmax_t. */ #include /* malloc(), realloc(), free(). */ #include /* memcpy(). */ #include /* errno. */ #include /* Checked size_t computations. */ #include "xsize.h" #if CHAR_T_ONLY_ASCII /* c_isascii(). */ # include "c-ctype.h" #endif #ifdef STATIC STATIC #endif int PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a) { const CHAR_T *cp = format; /* pointer into format */ size_t arg_posn = 0; /* number of regular arguments consumed */ size_t d_allocated; /* allocated elements of d->dir */ size_t a_allocated; /* allocated elements of a->arg */ size_t max_width_length = 0; size_t max_precision_length = 0; d->count = 0; d_allocated = N_DIRECT_ALLOC_DIRECTIVES; d->dir = d->direct_alloc_dir; a->count = 0; a_allocated = N_DIRECT_ALLOC_ARGUMENTS; a->arg = a->direct_alloc_arg; #define REGISTER_ARG(_index_,_type_) \ { \ size_t n = (_index_); \ if (n >= a_allocated) \ { \ size_t memory_size; \ argument *memory; \ \ a_allocated = xtimes (a_allocated, 2); \ if (a_allocated <= n) \ a_allocated = xsum (n, 1); \ memory_size = xtimes (a_allocated, sizeof (argument)); \ if (size_overflow_p (memory_size)) \ /* Overflow, would lead to out of memory. */ \ goto out_of_memory; \ memory = (argument *) (a->arg != a->direct_alloc_arg \ ? realloc (a->arg, memory_size) \ : malloc (memory_size)); \ if (memory == NULL) \ /* Out of memory. */ \ goto out_of_memory; \ if (a->arg == a->direct_alloc_arg) \ memcpy (memory, a->arg, a->count * sizeof (argument)); \ a->arg = memory; \ } \ while (a->count <= n) \ a->arg[a->count++].type = TYPE_NONE; \ if (a->arg[n].type == TYPE_NONE) \ a->arg[n].type = (_type_); \ else if (a->arg[n].type != (_type_)) \ /* Ambiguous type for positional argument. */ \ goto error; \ } while (*cp != '\0') { CHAR_T c = *cp++; if (c == '%') { size_t arg_index = ARG_NONE; DIRECTIVE *dp = &d->dir[d->count]; /* pointer to next directive */ /* Initialize the next directive. */ dp->dir_start = cp - 1; dp->flags = 0; dp->width_start = NULL; dp->width_end = NULL; dp->width_arg_index = ARG_NONE; dp->precision_start = NULL; dp->precision_end = NULL; dp->precision_arg_index = ARG_NONE; dp->arg_index = ARG_NONE; /* Test for positional argument. */ if (*cp >= '0' && *cp <= '9') { const CHAR_T *np; for (np = cp; *np >= '0' && *np <= '9'; np++) ; if (*np == '$') { size_t n = 0; for (np = cp; *np >= '0' && *np <= '9'; np++) n = xsum (xtimes (n, 10), *np - '0'); if (n == 0) /* Positional argument 0. */ goto error; if (size_overflow_p (n)) /* n too large, would lead to out of memory later. */ goto error; arg_index = n - 1; cp = np + 1; } } /* Read the flags. */ for (;;) { if (*cp == '\'') { dp->flags |= FLAG_GROUP; cp++; } else if (*cp == '-') { dp->flags |= FLAG_LEFT; cp++; } else if (*cp == '+') { dp->flags |= FLAG_SHOWSIGN; cp++; } else if (*cp == ' ') { dp->flags |= FLAG_SPACE; cp++; } else if (*cp == '#') { dp->flags |= FLAG_ALT; cp++; } else if (*cp == '0') { dp->flags |= FLAG_ZERO; cp++; } #if __GLIBC__ >= 2 && !defined __UCLIBC__ else if (*cp == 'I') { dp->flags |= FLAG_LOCALIZED; cp++; } #endif else break; } /* Parse the field width. */ if (*cp == '*') { dp->width_start = cp; cp++; dp->width_end = cp; if (max_width_length < 1) max_width_length = 1; /* Test for positional argument. */ if (*cp >= '0' && *cp <= '9') { const CHAR_T *np; for (np = cp; *np >= '0' && *np <= '9'; np++) ; if (*np == '$') { size_t n = 0; for (np = cp; *np >= '0' && *np <= '9'; np++) n = xsum (xtimes (n, 10), *np - '0'); if (n == 0) /* Positional argument 0. */ goto error; if (size_overflow_p (n)) /* n too large, would lead to out of memory later. */ goto error; dp->width_arg_index = n - 1; cp = np + 1; } } if (dp->width_arg_index == ARG_NONE) { dp->width_arg_index = arg_posn++; if (dp->width_arg_index == ARG_NONE) /* arg_posn wrapped around. */ goto error; } REGISTER_ARG (dp->width_arg_index, TYPE_INT); } else if (*cp >= '0' && *cp <= '9') { size_t width_length; dp->width_start = cp; for (; *cp >= '0' && *cp <= '9'; cp++) ; dp->width_end = cp; width_length = dp->width_end - dp->width_start; if (max_width_length < width_length) max_width_length = width_length; } /* Parse the precision. */ if (*cp == '.') { cp++; if (*cp == '*') { dp->precision_start = cp - 1; cp++; dp->precision_end = cp; if (max_precision_length < 2) max_precision_length = 2; /* Test for positional argument. */ if (*cp >= '0' && *cp <= '9') { const CHAR_T *np; for (np = cp; *np >= '0' && *np <= '9'; np++) ; if (*np == '$') { size_t n = 0; for (np = cp; *np >= '0' && *np <= '9'; np++) n = xsum (xtimes (n, 10), *np - '0'); if (n == 0) /* Positional argument 0. */ goto error; if (size_overflow_p (n)) /* n too large, would lead to out of memory later. */ goto error; dp->precision_arg_index = n - 1; cp = np + 1; } } if (dp->precision_arg_index == ARG_NONE) { dp->precision_arg_index = arg_posn++; if (dp->precision_arg_index == ARG_NONE) /* arg_posn wrapped around. */ goto error; } REGISTER_ARG (dp->precision_arg_index, TYPE_INT); } else { size_t precision_length; dp->precision_start = cp - 1; for (; *cp >= '0' && *cp <= '9'; cp++) ; dp->precision_end = cp; precision_length = dp->precision_end - dp->precision_start; if (max_precision_length < precision_length) max_precision_length = precision_length; } } { arg_type type; /* Parse argument type/size specifiers. */ { int flags = 0; for (;;) { if (*cp == 'h') { flags |= (1 << (flags & 1)); cp++; } else if (*cp == 'L') { flags |= 4; cp++; } else if (*cp == 'l') { flags += 8; cp++; } else if (*cp == 'j') { if (sizeof (intmax_t) > sizeof (long)) { /* intmax_t = long long */ flags += 16; } else if (sizeof (intmax_t) > sizeof (int)) { /* intmax_t = long */ flags += 8; } cp++; } else if (*cp == 'z' || *cp == 'Z') { /* 'z' is standardized in ISO C 99, but glibc uses 'Z' because the warning facility in gcc-2.95.2 understands only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784). */ if (sizeof (size_t) > sizeof (long)) { /* size_t = long long */ flags += 16; } else if (sizeof (size_t) > sizeof (int)) { /* size_t = long */ flags += 8; } cp++; } else if (*cp == 't') { if (sizeof (ptrdiff_t) > sizeof (long)) { /* ptrdiff_t = long long */ flags += 16; } else if (sizeof (ptrdiff_t) > sizeof (int)) { /* ptrdiff_t = long */ flags += 8; } cp++; } #if defined __APPLE__ && defined __MACH__ /* On Mac OS X 10.3, PRIdMAX is defined as "qd". We cannot change it to "lld" because PRIdMAX must also be understood by the system's printf routines. */ else if (*cp == 'q') { if (64 / 8 > sizeof (long)) { /* int64_t = long long */ flags += 16; } else { /* int64_t = long */ flags += 8; } cp++; } #endif #if defined _WIN32 && ! defined __CYGWIN__ /* On native Windows, PRIdMAX is defined as "I64d". We cannot change it to "lld" because PRIdMAX must also be understood by the system's printf routines. */ else if (*cp == 'I' && cp[1] == '6' && cp[2] == '4') { if (64 / 8 > sizeof (long)) { /* __int64 = long long */ flags += 16; } else { /* __int64 = long */ flags += 8; } cp += 3; } #endif else break; } /* Read the conversion character. */ c = *cp++; switch (c) { case 'd': case 'i': /* If 'long long' is larger than 'long': */ if (flags >= 16 || (flags & 4)) type = TYPE_LONGLONGINT; else /* If 'long long' is the same as 'long', we parse "lld" into TYPE_LONGINT. */ if (flags >= 8) type = TYPE_LONGINT; else if (flags & 2) type = TYPE_SCHAR; else if (flags & 1) type = TYPE_SHORT; else type = TYPE_INT; break; case 'o': case 'u': case 'x': case 'X': /* If 'unsigned long long' is larger than 'unsigned long': */ if (flags >= 16 || (flags & 4)) type = TYPE_ULONGLONGINT; else /* If 'unsigned long long' is the same as 'unsigned long', we parse "llu" into TYPE_ULONGINT. */ if (flags >= 8) type = TYPE_ULONGINT; else if (flags & 2) type = TYPE_UCHAR; else if (flags & 1) type = TYPE_USHORT; else type = TYPE_UINT; break; case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': case 'a': case 'A': if (flags >= 16 || (flags & 4)) type = TYPE_LONGDOUBLE; else type = TYPE_DOUBLE; break; case 'c': if (flags >= 8) #if HAVE_WINT_T type = TYPE_WIDE_CHAR; #else goto error; #endif else type = TYPE_CHAR; break; #if HAVE_WINT_T case 'C': type = TYPE_WIDE_CHAR; c = 'c'; break; #endif case 's': if (flags >= 8) #if HAVE_WCHAR_T type = TYPE_WIDE_STRING; #else goto error; #endif else type = TYPE_STRING; break; #if HAVE_WCHAR_T case 'S': type = TYPE_WIDE_STRING; c = 's'; break; #endif case 'p': type = TYPE_POINTER; break; case 'n': /* If 'long long' is larger than 'long': */ if (flags >= 16 || (flags & 4)) type = TYPE_COUNT_LONGLONGINT_POINTER; else /* If 'long long' is the same as 'long', we parse "lln" into TYPE_COUNT_LONGINT_POINTER. */ if (flags >= 8) type = TYPE_COUNT_LONGINT_POINTER; else if (flags & 2) type = TYPE_COUNT_SCHAR_POINTER; else if (flags & 1) type = TYPE_COUNT_SHORT_POINTER; else type = TYPE_COUNT_INT_POINTER; break; #if ENABLE_UNISTDIO /* The unistdio extensions. */ case 'U': if (flags >= 16) type = TYPE_U32_STRING; else if (flags >= 8) type = TYPE_U16_STRING; else type = TYPE_U8_STRING; break; #endif case '%': type = TYPE_NONE; break; default: /* Unknown conversion character. */ goto error; } } if (type != TYPE_NONE) { dp->arg_index = arg_index; if (dp->arg_index == ARG_NONE) { dp->arg_index = arg_posn++; if (dp->arg_index == ARG_NONE) /* arg_posn wrapped around. */ goto error; } REGISTER_ARG (dp->arg_index, type); } dp->conversion = c; dp->dir_end = cp; } d->count++; if (d->count >= d_allocated) { size_t memory_size; DIRECTIVE *memory; d_allocated = xtimes (d_allocated, 2); memory_size = xtimes (d_allocated, sizeof (DIRECTIVE)); if (size_overflow_p (memory_size)) /* Overflow, would lead to out of memory. */ goto out_of_memory; memory = (DIRECTIVE *) (d->dir != d->direct_alloc_dir ? realloc (d->dir, memory_size) : malloc (memory_size)); if (memory == NULL) /* Out of memory. */ goto out_of_memory; if (d->dir == d->direct_alloc_dir) memcpy (memory, d->dir, d->count * sizeof (DIRECTIVE)); d->dir = memory; } } #if CHAR_T_ONLY_ASCII else if (!c_isascii (c)) { /* Non-ASCII character. Not supported. */ goto error; } #endif } d->dir[d->count].dir_start = cp; d->max_width_length = max_width_length; d->max_precision_length = max_precision_length; return 0; error: if (a->arg != a->direct_alloc_arg) free (a->arg); if (d->dir != d->direct_alloc_dir) free (d->dir); errno = EINVAL; return -1; out_of_memory: if (a->arg != a->direct_alloc_arg) free (a->arg); if (d->dir != d->direct_alloc_dir) free (d->dir); errno = ENOMEM; return -1; } #undef PRINTF_PARSE #undef DIRECTIVES #undef DIRECTIVE #undef CHAR_T_ONLY_ASCII #undef CHAR_T recode-3.7.15/lib/argmatch.h0000644000175000017500000005006414371444255011254 /* argmatch.h -- definitions and prototypes for argmatch.c Copyright (C) 1990, 1998-1999, 2001-2002, 2004-2005, 2009-2023 Free Software Foundation, Inc. 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 3 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, see . */ /* Written by David MacKenzie Modified by Akim Demaille */ #ifndef ARGMATCH_H_ # define ARGMATCH_H_ 1 # include # include # include # include /* memcmp */ # include "gettext.h" # include "quote.h" # ifdef __cplusplus extern "C" { # endif # define ARRAY_CARDINALITY(Array) (sizeof (Array) / sizeof *(Array)) /* Assert there are as many real arguments as there are values (argument list ends with a NULL guard). */ # define ARGMATCH_VERIFY(Arglist, Vallist) \ static_assert (ARRAY_CARDINALITY (Arglist) \ == ARRAY_CARDINALITY (Vallist) + 1) /* Return the index of the element of ARGLIST (NULL terminated) that matches with ARG. If VALLIST is not NULL, then use it to resolve false ambiguities (i.e., different matches of ARG but corresponding to the same values in VALLIST). */ ptrdiff_t argmatch (char const *arg, char const *const *arglist, void const *vallist, size_t valsize) _GL_ATTRIBUTE_PURE; ptrdiff_t argmatch_exact (char const *arg, char const *const *arglist) _GL_ATTRIBUTE_PURE; # define ARGMATCH(Arg, Arglist, Vallist) \ argmatch (Arg, Arglist, (void const *) (Vallist), sizeof *(Vallist)) # define ARGMATCH_EXACT(Arg, Arglist) \ argmatch_exact (Arg, Arglist) /* xargmatch calls this function when it fails. This function should not return. By default, this is a function that calls ARGMATCH_DIE which in turn defaults to 'exit (exit_failure)'. */ typedef void (*argmatch_exit_fn) (void); extern argmatch_exit_fn argmatch_die; /* Report on stderr why argmatch failed. Report correct values. */ void argmatch_invalid (char const *context, char const *value, ptrdiff_t problem); /* Left for compatibility with the old name invalid_arg */ # define invalid_arg(Context, Value, Problem) \ argmatch_invalid (Context, Value, Problem) /* Report on stderr the list of possible arguments. */ void argmatch_valid (char const *const *arglist, void const *vallist, size_t valsize); # define ARGMATCH_VALID(Arglist, Vallist) \ argmatch_valid (Arglist, (void const *) (Vallist), sizeof *(Vallist)) /* Like argmatch/argmatch_exact, but upon failure, report an explanation of the failure, and exit using the function EXIT_FN. */ ptrdiff_t __xargmatch_internal (char const *context, char const *arg, char const *const *arglist, void const *vallist, size_t valsize, argmatch_exit_fn exit_fn, bool allow_abbreviation); /* Programmer friendly interface to __xargmatch_internal. */ # define XARGMATCH(Context, Arg, Arglist, Vallist) \ ((Vallist) [__xargmatch_internal (Context, Arg, Arglist, \ (void const *) (Vallist), \ sizeof *(Vallist), \ argmatch_die, \ true)]) # define XARGMATCH_EXACT(Context, Arg, Arglist, Vallist) \ ((Vallist) [__xargmatch_internal (Context, Arg, Arglist, \ (void const *) (Vallist), \ sizeof *(Vallist), \ argmatch_die, \ false)]) /* Convert a value into a corresponding argument. */ char const *argmatch_to_argument (void const *value, char const *const *arglist, void const *vallist, size_t valsize) _GL_ATTRIBUTE_PURE; # define ARGMATCH_TO_ARGUMENT(Value, Arglist, Vallist) \ argmatch_to_argument (Value, Arglist, \ (void const *) (Vallist), sizeof *(Vallist)) # define ARGMATCH_DEFINE_GROUP(Name, Type) \ /* The type of the values of this group. */ \ typedef Type argmatch_##Name##_type; \ \ /* The size of the type of the values of this group. */ \ enum argmatch_##Name##_size_enum \ { \ argmatch_##Name##_size = sizeof (argmatch_##Name##_type) \ }; \ \ /* Argument mapping of this group. */ \ typedef struct \ { \ /* Argument (e.g., "simple"). */ \ const char *arg; \ /* Value (e.g., simple_backups). */ \ const argmatch_##Name##_type val; \ } argmatch_##Name##_arg; \ \ /* Documentation of this group. */ \ typedef struct \ { \ /* Argument (e.g., "simple"). */ \ const char *arg; \ /* Documentation (e.g., N_("always make simple backups")). */ \ const char *doc; \ } argmatch_##Name##_doc; \ \ /* All the features of an argmatch group. */ \ typedef struct \ { \ const argmatch_##Name##_arg* args; \ const argmatch_##Name##_doc* docs; \ \ /* Printed before the usage message. */ \ const char *doc_pre; \ /* Printed after the usage message. */ \ const char *doc_post; \ } argmatch_##Name##_group_type; \ \ /* The structure the user must build. */ \ extern const argmatch_##Name##_group_type argmatch_##Name##_group; \ \ /* Print the documentation of this group. */ \ void argmatch_##Name##_usage (FILE *out); \ \ /* If nonnegative, the index I of ARG in ARGS, i.e, \ ARGS[I] == ARG. \ Return -1 for invalid argument, -2 for ambiguous argument. */ \ ptrdiff_t argmatch_##Name##_choice (const char *arg); \ \ /* A pointer to the corresponding value if it exists, or \ report an error and exit with failure if the argument was \ not recognized. */ \ const argmatch_##Name##_type* \ argmatch_##Name##_value (const char *context, const char *arg); \ \ /* The first argument in ARGS that matches this value, or NULL. */ \ const char * \ argmatch_##Name##_argument (const argmatch_##Name##_type *val); \ \ ptrdiff_t \ argmatch_##Name##_choice (const char *arg) \ { \ const argmatch_##Name##_group_type *g = &argmatch_##Name##_group; \ size_t size = argmatch_##Name##_size; \ ptrdiff_t res = -1; /* Index of first nonexact match. */ \ bool ambiguous = false; /* Whether multiple nonexact match(es). */ \ size_t arglen = strlen (arg); \ \ /* Test all elements for either exact match or abbreviated \ matches. */ \ for (size_t i = 0; g->args[i].arg; i++) \ if (!strncmp (g->args[i].arg, arg, arglen)) \ { \ if (strlen (g->args[i].arg) == arglen) \ /* Exact match found. */ \ return i; \ else if (res == -1) \ /* First nonexact match found. */ \ res = i; \ else if (memcmp (&g->args[res].val, &g->args[i].val, size)) \ /* Second nonexact match found. */ \ /* There is a real ambiguity, or we could not \ disambiguate. */ \ ambiguous = true; \ } \ return ambiguous ? -2 : res; \ } \ \ const char * \ argmatch_##Name##_argument (const argmatch_##Name##_type *val) \ { \ const argmatch_##Name##_group_type *g = &argmatch_##Name##_group; \ size_t size = argmatch_##Name##_size; \ for (size_t i = 0; g->args[i].arg; i++) \ if (!memcmp (val, &g->args[i].val, size)) \ return g->args[i].arg; \ return NULL; \ } \ \ /* List the valid values of this group. */ \ static void \ argmatch_##Name##_valid (FILE *out) \ { \ const argmatch_##Name##_group_type *g = &argmatch_##Name##_group; \ size_t size = argmatch_##Name##_size; \ \ /* Try to put synonyms on the same line. Synonyms are expected \ to follow each other. */ \ fputs (gettext ("Valid arguments are:"), out); \ for (int i = 0; g->args[i].arg; i++) \ if (i == 0 \ || memcmp (&g->args[i-1].val, &g->args[i].val, size)) \ fprintf (out, "\n - %s", quote (g->args[i].arg)); \ else \ fprintf (out, ", %s", quote (g->args[i].arg)); \ putc ('\n', out); \ } \ \ const argmatch_##Name##_type* \ argmatch_##Name##_value (const char *context, const char *arg) \ { \ const argmatch_##Name##_group_type *g = &argmatch_##Name##_group; \ ptrdiff_t res = argmatch_##Name##_choice (arg); \ if (res < 0) \ { \ argmatch_invalid (context, arg, res); \ argmatch_##Name##_valid (stderr); \ argmatch_die (); \ } \ return &g->args[res].val; \ } \ \ /* The column in which the documentation is displayed. \ The leftmost possible, but no more than 20. */ \ static int \ argmatch_##Name##_doc_col (void) \ { \ const argmatch_##Name##_group_type *g = &argmatch_##Name##_group; \ size_t size = argmatch_##Name##_size; \ int res = 0; \ for (int i = 0; g->docs[i].arg; ++i) \ { \ int col = 4; \ int ival = argmatch_##Name##_choice (g->docs[i].arg); \ if (ival < 0) \ /* Pseudo argument, display it. */ \ col += strlen (g->docs[i].arg); \ else \ /* Genuine argument, display it with its synonyms. */ \ for (int j = 0; g->args[j].arg; ++j) \ if (! memcmp (&g->args[ival].val, &g->args[j].val, size)) \ col += (col == 4 ? 0 : 2) + strlen (g->args[j].arg); \ if (res <= col) \ res = col <= 20 ? col : 20; \ } \ return res ? res : 20; \ } \ \ void \ argmatch_##Name##_usage (FILE *out) \ { \ const argmatch_##Name##_group_type *g = &argmatch_##Name##_group; \ size_t size = argmatch_##Name##_size; \ /* Width of the screen. Help2man does not seem to support \ arguments on several lines, so in that case pretend a very \ large width. */ \ const int screen_width = getenv ("HELP2MAN") ? INT_MAX : 80; \ if (g->doc_pre) \ fprintf (out, "%s\n", gettext (g->doc_pre)); \ int doc_col = argmatch_##Name##_doc_col (); \ for (int i = 0; g->docs[i].arg; ++i) \ { \ int col = 0; \ bool first = true; \ int ival = argmatch_##Name##_choice (g->docs[i].arg); \ if (ival < 0) \ /* Pseudo argument, display it. */ \ col += fprintf (out, " %s", g->docs[i].arg); \ else \ /* Genuine argument, display it with its synonyms. */ \ for (int j = 0; g->args[j].arg; ++j) \ if (! memcmp (&g->args[ival].val, &g->args[j].val, size)) \ { \ if (!first \ && screen_width < col + 2 + strlen (g->args[j].arg)) \ { \ fprintf (out, ",\n"); \ col = 0; \ first = true; \ } \ if (first) \ { \ col += fprintf (out, " "); \ first = false; \ } \ else \ col += fprintf (out, ","); \ col += fprintf (out, " %s", g->args[j].arg); \ } \ /* The doc. Separated by at least two spaces. */ \ if (doc_col < col + 2) \ { \ fprintf (out, "\n"); \ col = 0; \ } \ fprintf (out, "%*s%s\n", \ doc_col - col, "", gettext (g->docs[i].doc)); \ } \ if (g->doc_post) \ fprintf (out, "%s\n", gettext (g->doc_post)); \ } # ifdef __cplusplus } # endif #endif /* ARGMATCH_H_ */ recode-3.7.15/lib/unistd.in.h0000644000175000017500000024067214371444255011407 /* Substitute for and wrapper around . Copyright (C) 2003-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _@GUARD_PREFIX@_UNISTD_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if @HAVE_UNISTD_H@ && defined _GL_INCLUDING_UNISTD_H /* Special invocation convention: - On Mac OS X 10.3.9 we have a sequence of nested includes -> -> -> In this situation, the functions are not yet declared, therefore we cannot provide the C++ aliases. */ #@INCLUDE_NEXT@ @NEXT_UNISTD_H@ #else /* Normal invocation convention. */ /* The include_next requires a split double-inclusion guard. */ #if @HAVE_UNISTD_H@ # define _GL_INCLUDING_UNISTD_H # @INCLUDE_NEXT@ @NEXT_UNISTD_H@ # undef _GL_INCLUDING_UNISTD_H #endif /* Get all possible declarations of gethostname(). */ #if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \ && !defined _GL_INCLUDING_WINSOCK2_H # define _GL_INCLUDING_WINSOCK2_H # include # undef _GL_INCLUDING_WINSOCK2_H #endif #if !defined _@GUARD_PREFIX@_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H #define _@GUARD_PREFIX@_UNISTD_H /* NetBSD 5.0 mis-defines NULL. Also get size_t. */ /* But avoid namespace pollution on glibc systems. */ #ifndef __GLIBC__ # include #endif /* mingw doesn't define the SEEK_* or *_FILENO macros in . */ /* MSVC declares 'unlink' in , not in . We must include it before we #define unlink rpl_unlink. */ /* Cygwin 1.7.1 declares symlinkat in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \ || ((@GNULIB_UNLINK@ || defined GNULIB_POSIXCHECK) \ && (defined _WIN32 && ! defined __CYGWIN__)) \ || ((@GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK) \ && defined __CYGWIN__)) \ && ! defined __GLIBC__ # include #endif /* Cygwin 1.7.1 and Android 4.3 declare unlinkat in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) \ && (defined __CYGWIN__ || defined __ANDROID__) \ && ! defined __GLIBC__ # include #endif /* mingw fails to declare _exit in . */ /* mingw, MSVC, BeOS, Haiku declare environ in , not in . */ /* Solaris declares getcwd not only in but also in . */ /* OSF Tru64 Unix cannot see gnulib rpl_strtod when system is included here. */ /* But avoid namespace pollution on glibc systems. */ #if !defined __GLIBC__ && !defined __osf__ # define __need_system_stdlib_h # include # undef __need_system_stdlib_h #endif /* Native Windows platforms declare _chdir, _getcwd, _rmdir in and/or , not in . They also declare _access(), _chmod(), _close(), _dup(), _dup2(), _isatty(), _lseek(), _read(), _unlink(), _write() in . */ #if defined _WIN32 && !defined __CYGWIN__ # include # include #endif /* Native Windows platforms declare _execl*, _execv* in . */ #if defined _WIN32 && !defined __CYGWIN__ # include #endif /* AIX and OSF/1 5.1 declare getdomainname in , not in . NonStop Kernel declares gethostname in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if ((@GNULIB_GETDOMAINNAME@ && (defined _AIX || defined __osf__)) \ || (@GNULIB_GETHOSTNAME@ && defined __TANDEM)) \ && !defined __GLIBC__ # include #endif /* Mac OS X 10.13, Solaris 11.4, and Android 9.0 declare getentropy in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if (@GNULIB_GETENTROPY@ || defined GNULIB_POSIXCHECK) \ && ((defined __APPLE__ && defined __MACH__) || defined __sun \ || defined __ANDROID__) \ && @UNISTD_H_HAVE_SYS_RANDOM_H@ \ && !defined __GLIBC__ # include #endif /* Android 4.3 declares fchownat in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if (@GNULIB_FCHOWNAT@ || defined GNULIB_POSIXCHECK) && defined __ANDROID__ \ && !defined __GLIBC__ # include #endif /* MSVC defines off_t in . May also define off_t to a 64-bit type on native Windows. */ /* Get off_t, ssize_t, mode_t. */ #include /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Get getopt(), optarg, optind, opterr, optopt. */ #if @GNULIB_GETOPT_POSIX@ && @GNULIB_UNISTD_H_GETOPT@ && !defined _GL_SYSTEM_GETOPT # include # include #endif #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_UNISTD_INLINE # define _GL_UNISTD_INLINE _GL_INLINE #endif /* Hide some function declarations from . */ #if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ # if !defined _@GUARD_PREFIX@_SYS_SOCKET_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef socket # define socket socket_used_without_including_sys_socket_h # undef connect # define connect connect_used_without_including_sys_socket_h # undef accept # define accept accept_used_without_including_sys_socket_h # undef bind # define bind bind_used_without_including_sys_socket_h # undef getpeername # define getpeername getpeername_used_without_including_sys_socket_h # undef getsockname # define getsockname getsockname_used_without_including_sys_socket_h # undef getsockopt # define getsockopt getsockopt_used_without_including_sys_socket_h # undef listen # define listen listen_used_without_including_sys_socket_h # undef recv # define recv recv_used_without_including_sys_socket_h # undef send # define send send_used_without_including_sys_socket_h # undef recvfrom # define recvfrom recvfrom_used_without_including_sys_socket_h # undef sendto # define sendto sendto_used_without_including_sys_socket_h # undef setsockopt # define setsockopt setsockopt_used_without_including_sys_socket_h # undef shutdown # define shutdown shutdown_used_without_including_sys_socket_h # else _GL_WARN_ON_USE (socket, "socket() used without including "); _GL_WARN_ON_USE (connect, "connect() used without including "); _GL_WARN_ON_USE (accept, "accept() used without including "); _GL_WARN_ON_USE (bind, "bind() used without including "); _GL_WARN_ON_USE (getpeername, "getpeername() used without including "); _GL_WARN_ON_USE (getsockname, "getsockname() used without including "); _GL_WARN_ON_USE (getsockopt, "getsockopt() used without including "); _GL_WARN_ON_USE (listen, "listen() used without including "); _GL_WARN_ON_USE (recv, "recv() used without including "); _GL_WARN_ON_USE (send, "send() used without including "); _GL_WARN_ON_USE (recvfrom, "recvfrom() used without including "); _GL_WARN_ON_USE (sendto, "sendto() used without including "); _GL_WARN_ON_USE (setsockopt, "setsockopt() used without including "); _GL_WARN_ON_USE (shutdown, "shutdown() used without including "); # endif # endif # if !defined _@GUARD_PREFIX@_SYS_SELECT_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef select # define select select_used_without_including_sys_select_h # else _GL_WARN_ON_USE (select, "select() used without including "); # endif # endif #endif /* OS/2 EMX lacks these macros. */ #ifndef STDIN_FILENO # define STDIN_FILENO 0 #endif #ifndef STDOUT_FILENO # define STDOUT_FILENO 1 #endif #ifndef STDERR_FILENO # define STDERR_FILENO 2 #endif /* Ensure *_OK macros exist. */ #ifndef F_OK # define F_OK 0 # define X_OK 1 # define W_OK 2 # define R_OK 4 #endif /* Declare overridden functions. */ #if @GNULIB_ACCESS@ # if @REPLACE_ACCESS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef access # define access rpl_access # endif _GL_FUNCDECL_RPL (access, int, (const char *file, int mode) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (access, int, (const char *file, int mode)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef access # define access _access # endif _GL_CXXALIAS_MDA (access, int, (const char *file, int mode)); # else _GL_CXXALIAS_SYS (access, int, (const char *file, int mode)); # endif _GL_CXXALIASWARN (access); #elif defined GNULIB_POSIXCHECK # undef access # if HAVE_RAW_DECL_ACCESS /* The access() function is a security risk. */ _GL_WARN_ON_USE (access, "access does not always support X_OK - " "use gnulib module access for portability; " "also, this function is a security risk - " "use the gnulib module faccessat instead"); # endif #elif @GNULIB_MDA_ACCESS@ /* On native Windows, map 'access' to '_access', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::access always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef access # define access _access # endif _GL_CXXALIAS_MDA (access, int, (const char *file, int mode)); # else _GL_CXXALIAS_SYS (access, int, (const char *file, int mode)); # endif _GL_CXXALIASWARN (access); #endif #if @GNULIB_CHDIR@ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef chdir # define chdir _chdir # endif _GL_CXXALIAS_MDA (chdir, int, (const char *file)); # else _GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIASWARN (chdir); #elif defined GNULIB_POSIXCHECK # undef chdir # if HAVE_RAW_DECL_CHDIR _GL_WARN_ON_USE (chown, "chdir is not always in - " "use gnulib module chdir for portability"); # endif #elif @GNULIB_MDA_CHDIR@ /* On native Windows, map 'chdir' to '_chdir', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::chdir always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef chdir # define chdir _chdir # endif _GL_CXXALIAS_MDA (chdir, int, (const char *file)); # else _GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIASWARN (chdir); #endif #if @GNULIB_CHOWN@ /* Change the owner of FILE to UID (if UID is not -1) and the group of FILE to GID (if GID is not -1). Follow symbolic links. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_DUP2@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define dup2 rpl_dup2 # endif _GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd)); _GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef dup2 # define dup2 _dup2 # endif _GL_CXXALIAS_MDA (dup2, int, (int oldfd, int newfd)); # else _GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd)); # endif _GL_CXXALIASWARN (dup2); #elif defined GNULIB_POSIXCHECK # undef dup2 # if HAVE_RAW_DECL_DUP2 _GL_WARN_ON_USE (dup2, "dup2 is unportable - " "use gnulib module dup2 for portability"); # endif #elif @GNULIB_MDA_DUP2@ /* On native Windows, map 'dup2' to '_dup2', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::dup2 always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef dup2 # define dup2 _dup2 # endif _GL_CXXALIAS_MDA (dup2, int, (int oldfd, int newfd)); # else _GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd)); # endif _GL_CXXALIASWARN (dup2); #endif #if @GNULIB_DUP3@ /* Copy the file descriptor OLDFD into file descriptor NEWFD, with the specified flags. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). Close NEWFD first if it is open. Return newfd if successful, otherwise -1 and errno set. See the Linux man page at . */ # if @REPLACE_DUP3@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef dup3 # define dup3 rpl_dup3 # endif _GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags)); _GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags)); # else # if !@HAVE_DUP3@ _GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags)); # endif _GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (dup3); # endif #elif defined GNULIB_POSIXCHECK # undef dup3 # if HAVE_RAW_DECL_DUP3 _GL_WARN_ON_USE (dup3, "dup3 is unportable - " "use gnulib module dup3 for portability"); # endif #endif #if @GNULIB_ENVIRON@ # if defined __CYGWIN__ && !defined __i386__ /* The 'environ' variable is defined in a DLL. Therefore its declaration needs the '__declspec(dllimport)' attribute, but the system's lacks it. This leads to a link error on 64-bit Cygwin when the option -Wl,--disable-auto-import is in use. */ _GL_EXTERN_C __declspec(dllimport) char **environ; # endif # if !@HAVE_DECL_ENVIRON@ /* Set of environment variables and values. An array of strings of the form "VARIABLE=VALUE", terminated with a NULL. */ # if defined __APPLE__ && defined __MACH__ # include # if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR # define _GL_USE_CRT_EXTERNS # endif # endif # ifdef _GL_USE_CRT_EXTERNS # include # define environ (*_NSGetEnviron ()) # else # ifdef __cplusplus extern "C" { # endif extern char **environ; # ifdef __cplusplus } # endif # endif # endif #elif defined GNULIB_POSIXCHECK # if HAVE_RAW_DECL_ENVIRON _GL_UNISTD_INLINE char *** _GL_WARN_ON_USE_ATTRIBUTE ("environ is unportable - " "use gnulib module environ for portability") rpl_environ (void) { return &environ; } # undef environ # define environ (*rpl_environ ()) # endif #endif #if @GNULIB_EUIDACCESS@ /* Like access(), except that it uses the effective user id and group id of the current process. */ # if !@HAVE_EUIDACCESS@ _GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode)); _GL_CXXALIASWARN (euidaccess); # if defined GNULIB_POSIXCHECK /* Like access(), this function is a security risk. */ _GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - " "use the gnulib module faccessat instead"); # endif #elif defined GNULIB_POSIXCHECK # undef euidaccess # if HAVE_RAW_DECL_EUIDACCESS _GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - " "use gnulib module euidaccess for portability"); # endif #endif #if @GNULIB_EXECL@ # if @REPLACE_EXECL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef execl # define execl rpl_execl # endif _GL_FUNCDECL_RPL (execl, int, (const char *program, const char *arg, ...) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (execl, int, (const char *program, const char *arg, ...)); # else _GL_CXXALIAS_SYS (execl, int, (const char *program, const char *arg, ...)); # endif _GL_CXXALIASWARN (execl); #elif defined GNULIB_POSIXCHECK # undef execl # if HAVE_RAW_DECL_EXECL _GL_WARN_ON_USE (execl, "execl behaves very differently on mingw - " "use gnulib module execl for portability"); # endif #elif @GNULIB_MDA_EXECL@ /* On native Windows, map 'execl' to '_execl', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::execl always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef execl # define execl _execl # endif _GL_CXXALIAS_MDA (execl, intptr_t, (const char *program, const char *arg, ...)); # else _GL_CXXALIAS_SYS (execl, int, (const char *program, const char *arg, ...)); # endif _GL_CXXALIASWARN (execl); #endif #if @GNULIB_EXECLE@ # if @REPLACE_EXECLE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef execle # define execle rpl_execle # endif _GL_FUNCDECL_RPL (execle, int, (const char *program, const char *arg, ...) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (execle, int, (const char *program, const char *arg, ...)); # else _GL_CXXALIAS_SYS (execle, int, (const char *program, const char *arg, ...)); # endif _GL_CXXALIASWARN (execle); #elif defined GNULIB_POSIXCHECK # undef execle # if HAVE_RAW_DECL_EXECLE _GL_WARN_ON_USE (execle, "execle behaves very differently on mingw - " "use gnulib module execle for portability"); # endif #elif @GNULIB_MDA_EXECLE@ /* On native Windows, map 'execle' to '_execle', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::execle always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef execle # define execle _execle # endif _GL_CXXALIAS_MDA (execle, intptr_t, (const char *program, const char *arg, ...)); # else _GL_CXXALIAS_SYS (execle, int, (const char *program, const char *arg, ...)); # endif _GL_CXXALIASWARN (execle); #endif #if @GNULIB_EXECLP@ # if @REPLACE_EXECLP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef execlp # define execlp rpl_execlp # endif _GL_FUNCDECL_RPL (execlp, int, (const char *program, const char *arg, ...) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (execlp, int, (const char *program, const char *arg, ...)); # else _GL_CXXALIAS_SYS (execlp, int, (const char *program, const char *arg, ...)); # endif _GL_CXXALIASWARN (execlp); #elif defined GNULIB_POSIXCHECK # undef execlp # if HAVE_RAW_DECL_EXECLP _GL_WARN_ON_USE (execlp, "execlp behaves very differently on mingw - " "use gnulib module execlp for portability"); # endif #elif @GNULIB_MDA_EXECLP@ /* On native Windows, map 'execlp' to '_execlp', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::execlp always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef execlp # define execlp _execlp # endif _GL_CXXALIAS_MDA (execlp, intptr_t, (const char *program, const char *arg, ...)); # else _GL_CXXALIAS_SYS (execlp, int, (const char *program, const char *arg, ...)); # endif _GL_CXXALIASWARN (execlp); #endif #if @GNULIB_EXECV@ # if @REPLACE_EXECV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef execv # define execv rpl_execv # endif _GL_FUNCDECL_RPL (execv, int, (const char *program, char * const *argv) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (execv, int, (const char *program, char * const *argv)); # else _GL_CXXALIAS_SYS (execv, int, (const char *program, char * const *argv)); # endif _GL_CXXALIASWARN (execv); #elif defined GNULIB_POSIXCHECK # undef execv # if HAVE_RAW_DECL_EXECV _GL_WARN_ON_USE (execv, "execv behaves very differently on mingw - " "use gnulib module execv for portability"); # endif #elif @GNULIB_MDA_EXECV@ /* On native Windows, map 'execv' to '_execv', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::execv always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef execv # define execv _execv # endif _GL_CXXALIAS_MDA_CAST (execv, intptr_t, (const char *program, char * const *argv)); # else _GL_CXXALIAS_SYS (execv, int, (const char *program, char * const *argv)); # endif _GL_CXXALIASWARN (execv); #endif #if @GNULIB_EXECVE@ # if @REPLACE_EXECVE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef execve # define execve rpl_execve # endif _GL_FUNCDECL_RPL (execve, int, (const char *program, char * const *argv, char * const *env) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (execve, int, (const char *program, char * const *argv, char * const *env)); # else _GL_CXXALIAS_SYS (execve, int, (const char *program, char * const *argv, char * const *env)); # endif _GL_CXXALIASWARN (execve); #elif defined GNULIB_POSIXCHECK # undef execve # if HAVE_RAW_DECL_EXECVE _GL_WARN_ON_USE (execve, "execve behaves very differently on mingw - " "use gnulib module execve for portability"); # endif #elif @GNULIB_MDA_EXECVE@ /* On native Windows, map 'execve' to '_execve', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::execve always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef execve # define execve _execve # endif _GL_CXXALIAS_MDA_CAST (execve, intptr_t, (const char *program, char * const *argv, char * const *env)); # else _GL_CXXALIAS_SYS (execve, int, (const char *program, char * const *argv, char * const *env)); # endif _GL_CXXALIASWARN (execve); #endif #if @GNULIB_EXECVP@ # if @REPLACE_EXECVP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef execvp # define execvp rpl_execvp # endif _GL_FUNCDECL_RPL (execvp, int, (const char *program, char * const *argv) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (execvp, int, (const char *program, char * const *argv)); # else _GL_CXXALIAS_SYS (execvp, int, (const char *program, char * const *argv)); # endif _GL_CXXALIASWARN (execvp); #elif defined GNULIB_POSIXCHECK # undef execvp # if HAVE_RAW_DECL_EXECVP _GL_WARN_ON_USE (execvp, "execvp behaves very differently on mingw - " "use gnulib module execvp for portability"); # endif #elif @GNULIB_MDA_EXECVP@ /* On native Windows, map 'execvp' to '_execvp', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::execvp always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef execvp # define execvp _execvp # endif _GL_CXXALIAS_MDA_CAST (execvp, intptr_t, (const char *program, char * const *argv)); # else _GL_CXXALIAS_SYS (execvp, int, (const char *program, char * const *argv)); # endif _GL_CXXALIASWARN (execvp); #endif #if @GNULIB_EXECVPE@ # if @REPLACE_EXECVPE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef execvpe # define execvpe rpl_execvpe # endif _GL_FUNCDECL_RPL (execvpe, int, (const char *program, char * const *argv, char * const *env) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (execvpe, int, (const char *program, char * const *argv, char * const *env)); # else # if !@HAVE_DECL_EXECVPE@ _GL_FUNCDECL_SYS (execvpe, int, (const char *program, char * const *argv, char * const *env) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (execvpe, int, (const char *program, char * const *argv, char * const *env)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (execvpe); # endif #elif defined GNULIB_POSIXCHECK # undef execvpe # if HAVE_RAW_DECL_EXECVPE _GL_WARN_ON_USE (execvpe, "execvpe behaves very differently on mingw - " "use gnulib module execvpe for portability"); # endif #elif @GNULIB_MDA_EXECVPE@ /* On native Windows, map 'execvpe' to '_execvpe', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::execvpe on all platforms that have it. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef execvpe # define execvpe _execvpe # endif _GL_CXXALIAS_MDA_CAST (execvpe, intptr_t, (const char *program, char * const *argv, char * const *env)); # elif @HAVE_EXECVPE@ # if !@HAVE_DECL_EXECVPE@ _GL_FUNCDECL_SYS (execvpe, int, (const char *program, char * const *argv, char * const *env) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (execvpe, int, (const char *program, char * const *argv, char * const *env)); # endif # if (defined _WIN32 && !defined __CYGWIN__) || @HAVE_EXECVPE@ _GL_CXXALIASWARN (execvpe); # endif #endif #if @GNULIB_FACCESSAT@ # if @REPLACE_FACCESSAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef faccessat # define faccessat rpl_faccessat # endif _GL_FUNCDECL_RPL (faccessat, int, (int fd, char const *name, int mode, int flag) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (faccessat, int, (int fd, char const *name, int mode, int flag)); # else # if !@HAVE_FACCESSAT@ _GL_FUNCDECL_SYS (faccessat, int, (int fd, char const *file, int mode, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (faccessat, int, (int fd, char const *file, int mode, int flag)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (faccessat); # endif #elif defined GNULIB_POSIXCHECK # undef faccessat # if HAVE_RAW_DECL_FACCESSAT _GL_WARN_ON_USE (faccessat, "faccessat is not portable - " "use gnulib module faccessat for portability"); # endif #endif #if @GNULIB_FCHDIR@ /* Change the process' current working directory to the directory on which the given file descriptor is open. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if ! @HAVE_FCHDIR@ _GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); /* Gnulib internal hooks needed to maintain the fchdir metadata. */ _GL_EXTERN_C int _gl_register_fd (int fd, const char *filename) _GL_ARG_NONNULL ((2)); _GL_EXTERN_C void _gl_unregister_fd (int fd); _GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd); _GL_EXTERN_C const char *_gl_directory_name (int fd); # else # if !@HAVE_DECL_FCHDIR@ _GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); # endif # endif _GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/)); _GL_CXXALIASWARN (fchdir); #elif defined GNULIB_POSIXCHECK # undef fchdir # if HAVE_RAW_DECL_FCHDIR _GL_WARN_ON_USE (fchdir, "fchdir is unportable - " "use gnulib module fchdir for portability"); # endif #endif #if @GNULIB_FCHOWNAT@ # if @REPLACE_FCHOWNAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fchownat # define fchownat rpl_fchownat # endif _GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag)); # else # if !@HAVE_FCHOWNAT@ _GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag)); # endif _GL_CXXALIASWARN (fchownat); #elif defined GNULIB_POSIXCHECK # undef fchownat # if HAVE_RAW_DECL_FCHOWNAT _GL_WARN_ON_USE (fchownat, "fchownat is not portable - " "use gnulib module fchownat for portability"); # endif #endif #if @GNULIB_FDATASYNC@ /* Synchronize changes to a file. Return 0 if successful, otherwise -1 and errno set. See POSIX:2008 specification . */ # if @REPLACE_FDATASYNC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fdatasync # define fdatasync rpl_fdatasync # endif _GL_FUNCDECL_RPL (fdatasync, int, (int fd)); _GL_CXXALIAS_RPL (fdatasync, int, (int fd)); # else # if !@HAVE_FDATASYNC@|| !@HAVE_DECL_FDATASYNC@ _GL_FUNCDECL_SYS (fdatasync, int, (int fd)); # endif _GL_CXXALIAS_SYS (fdatasync, int, (int fd)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (fdatasync); # endif #elif defined GNULIB_POSIXCHECK # undef fdatasync # if HAVE_RAW_DECL_FDATASYNC _GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - " "use gnulib module fdatasync for portability"); # endif #endif #if @GNULIB_FSYNC@ /* Synchronize changes, including metadata, to a file. Return 0 if successful, otherwise -1 and errno set. See POSIX:2008 specification . */ # if !@HAVE_FSYNC@ _GL_FUNCDECL_SYS (fsync, int, (int fd)); # endif _GL_CXXALIAS_SYS (fsync, int, (int fd)); _GL_CXXALIASWARN (fsync); #elif defined GNULIB_POSIXCHECK # undef fsync # if HAVE_RAW_DECL_FSYNC _GL_WARN_ON_USE (fsync, "fsync is unportable - " "use gnulib module fsync for portability"); # endif #endif #if @GNULIB_FTRUNCATE@ /* Change the size of the file to which FD is opened to become equal to LENGTH. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_FTRUNCATE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ftruncate # define ftruncate rpl_ftruncate # endif _GL_FUNCDECL_RPL (ftruncate, int, (int fd, off_t length)); _GL_CXXALIAS_RPL (ftruncate, int, (int fd, off_t length)); # else # if !@HAVE_FTRUNCATE@ _GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length)); # endif _GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (ftruncate); # endif #elif defined GNULIB_POSIXCHECK # undef ftruncate # if HAVE_RAW_DECL_FTRUNCATE _GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - " "use gnulib module ftruncate for portability"); # endif #endif #if @GNULIB_GETCWD@ /* Get the name of the current working directory, and put it in SIZE bytes of BUF. Return BUF if successful, or NULL if the directory couldn't be determined or SIZE was too small. See the POSIX:2008 specification . Additionally, the gnulib module 'getcwd' guarantees the following GNU extension: If BUF is NULL, an array is allocated with 'malloc'; the array is SIZE bytes long, unless SIZE == 0, in which case it is as big as necessary. */ # if @REPLACE_GETCWD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getcwd rpl_getcwd # endif _GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size)); _GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getcwd # define getcwd _getcwd # endif _GL_CXXALIAS_MDA (getcwd, char *, (char *buf, size_t size)); # else /* Need to cast, because on mingw, the second parameter is int size. */ _GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size)); # endif _GL_CXXALIASWARN (getcwd); #elif defined GNULIB_POSIXCHECK # undef getcwd # if HAVE_RAW_DECL_GETCWD _GL_WARN_ON_USE (getcwd, "getcwd is unportable - " "use gnulib module getcwd for portability"); # endif #elif @GNULIB_MDA_GETCWD@ /* On native Windows, map 'getcwd' to '_getcwd', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::getcwd always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getcwd # define getcwd _getcwd # endif /* Need to cast, because on mingw, the second parameter is either 'int size' or 'size_t size'. */ _GL_CXXALIAS_MDA_CAST (getcwd, char *, (char *buf, size_t size)); # else _GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size)); # endif _GL_CXXALIASWARN (getcwd); #endif #if @GNULIB_GETDOMAINNAME@ /* Return the NIS domain name of the machine. WARNING! The NIS domain name is unrelated to the fully qualified host name of the machine. It is also unrelated to email addresses. WARNING! The NIS domain name is usually the empty string or "(none)" when not using NIS. Put up to LEN bytes of the NIS domain name into NAME. Null terminate it if the name is shorter than LEN. If the NIS domain name is longer than LEN, set errno = EINVAL and return -1. Return 0 if successful, otherwise set errno and return -1. */ # if @REPLACE_GETDOMAINNAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getdomainname # define getdomainname rpl_getdomainname # endif _GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len)); # else # if !@HAVE_DECL_GETDOMAINNAME@ _GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (getdomainname); # endif #elif defined GNULIB_POSIXCHECK # undef getdomainname # if HAVE_RAW_DECL_GETDOMAINNAME _GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - " "use gnulib module getdomainname for portability"); # endif #endif #if @GNULIB_GETDTABLESIZE@ /* Return the maximum number of file descriptors in the current process. In POSIX, this is same as sysconf (_SC_OPEN_MAX). */ # if @REPLACE_GETDTABLESIZE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getdtablesize # define getdtablesize rpl_getdtablesize # endif _GL_FUNCDECL_RPL (getdtablesize, int, (void)); _GL_CXXALIAS_RPL (getdtablesize, int, (void)); # else # if !@HAVE_GETDTABLESIZE@ _GL_FUNCDECL_SYS (getdtablesize, int, (void)); # endif /* Need to cast, because on AIX, the parameter list is (...). */ _GL_CXXALIAS_SYS_CAST (getdtablesize, int, (void)); # endif _GL_CXXALIASWARN (getdtablesize); #elif defined GNULIB_POSIXCHECK # undef getdtablesize # if HAVE_RAW_DECL_GETDTABLESIZE _GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - " "use gnulib module getdtablesize for portability"); # endif #endif #if @GNULIB_GETENTROPY@ /* Fill a buffer with random bytes. */ # if @REPLACE_GETENTROPY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getentropy # define getentropy rpl_getentropy # endif _GL_FUNCDECL_RPL (getentropy, int, (void *buffer, size_t length)); _GL_CXXALIAS_RPL (getentropy, int, (void *buffer, size_t length)); # else # if !@HAVE_GETENTROPY@ _GL_FUNCDECL_SYS (getentropy, int, (void *buffer, size_t length)); # endif _GL_CXXALIAS_SYS (getentropy, int, (void *buffer, size_t length)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (getentropy); # endif #elif defined GNULIB_POSIXCHECK # undef getentropy # if HAVE_RAW_DECL_GETENTROPY _GL_WARN_ON_USE (getentropy, "getentropy is unportable - " "use gnulib module getentropy for portability"); # endif #endif #if @GNULIB_GETGROUPS@ /* Return the supplemental groups that the current process belongs to. It is unspecified whether the effective group id is in the list. If N is 0, return the group count; otherwise, N describes how many entries are available in GROUPS. Return -1 and set errno if N is not 0 and not large enough. Fails with ENOSYS on some systems. */ # if @REPLACE_GETGROUPS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getgroups # define getgroups rpl_getgroups # endif _GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups)); _GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups)); # else # if !@HAVE_GETGROUPS@ _GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups)); # endif _GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups)); # endif _GL_CXXALIASWARN (getgroups); #elif defined GNULIB_POSIXCHECK # undef getgroups # if HAVE_RAW_DECL_GETGROUPS _GL_WARN_ON_USE (getgroups, "getgroups is unportable - " "use gnulib module getgroups for portability"); # endif #endif #if @GNULIB_GETHOSTNAME@ /* Return the standard host name of the machine. WARNING! The host name may or may not be fully qualified. Put up to LEN bytes of the host name into NAME. Null terminate it if the name is shorter than LEN. If the host name is longer than LEN, set errno = EINVAL and return -1. Return 0 if successful, otherwise set errno and return -1. */ # if @UNISTD_H_HAVE_WINSOCK2_H@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gethostname # define gethostname rpl_gethostname # endif _GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len)); # else # if !@HAVE_GETHOSTNAME@ _GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second parameter is int len. */ _GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len)); # endif _GL_CXXALIASWARN (gethostname); #elif @UNISTD_H_HAVE_WINSOCK2_H@ # undef gethostname # define gethostname gethostname_used_without_requesting_gnulib_module_gethostname #elif defined GNULIB_POSIXCHECK # undef gethostname # if HAVE_RAW_DECL_GETHOSTNAME _GL_WARN_ON_USE (gethostname, "gethostname is unportable - " "use gnulib module gethostname for portability"); # endif #endif #if @GNULIB_GETLOGIN@ /* Returns the user's login name, or NULL if it cannot be found. Upon error, returns NULL with errno set. See . Most programs don't need to use this function, because the information is available through environment variables: ${LOGNAME-$USER} on Unix platforms, $USERNAME on native Windows platforms. */ # if !@HAVE_DECL_GETLOGIN@ _GL_FUNCDECL_SYS (getlogin, char *, (void)); # endif _GL_CXXALIAS_SYS (getlogin, char *, (void)); _GL_CXXALIASWARN (getlogin); #elif defined GNULIB_POSIXCHECK # undef getlogin # if HAVE_RAW_DECL_GETLOGIN _GL_WARN_ON_USE (getlogin, "getlogin is unportable - " "use gnulib module getlogin for portability"); # endif #endif #if @GNULIB_GETLOGIN_R@ /* Copies the user's login name to NAME. The array pointed to by NAME has room for SIZE bytes. Returns 0 if successful. Upon error, an error number is returned, or -1 in the case that the login name cannot be found but no specific error is provided (this case is hopefully rare but is left open by the POSIX spec). See . Most programs don't need to use this function, because the information is available through environment variables: ${LOGNAME-$USER} on Unix platforms, $USERNAME on native Windows platforms. */ # if @REPLACE_GETLOGIN_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getlogin_r rpl_getlogin_r # endif _GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size)); # else # if !@HAVE_DECL_GETLOGIN_R@ _GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on Solaris 10 systems, the second argument is int size. */ _GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (getlogin_r); # endif #elif defined GNULIB_POSIXCHECK # undef getlogin_r # if HAVE_RAW_DECL_GETLOGIN_R _GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - " "use gnulib module getlogin_r for portability"); # endif #endif #if @GNULIB_GETPAGESIZE@ # if @REPLACE_GETPAGESIZE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getpagesize rpl_getpagesize # endif _GL_FUNCDECL_RPL (getpagesize, int, (void)); _GL_CXXALIAS_RPL (getpagesize, int, (void)); # else /* On HP-UX, getpagesize exists, but it is not declared in even if the compiler options -D_HPUX_SOURCE -D_XOPEN_SOURCE=600 are used. */ # if defined __hpux _GL_FUNCDECL_SYS (getpagesize, int, (void)); # endif # if !@HAVE_GETPAGESIZE@ # if !defined getpagesize /* This is for POSIX systems. */ # if !defined _gl_getpagesize && defined _SC_PAGESIZE # if ! (defined __VMS && __VMS_VER < 70000000) # define _gl_getpagesize() sysconf (_SC_PAGESIZE) # endif # endif /* This is for older VMS. */ # if !defined _gl_getpagesize && defined __VMS # ifdef __ALPHA # define _gl_getpagesize() 8192 # else # define _gl_getpagesize() 512 # endif # endif /* This is for BeOS. */ # if !defined _gl_getpagesize && @HAVE_OS_H@ # include # if defined B_PAGE_SIZE # define _gl_getpagesize() B_PAGE_SIZE # endif # endif /* This is for AmigaOS4.0. */ # if !defined _gl_getpagesize && defined __amigaos4__ # define _gl_getpagesize() 2048 # endif /* This is for older Unix systems. */ # if !defined _gl_getpagesize && @HAVE_SYS_PARAM_H@ # include # ifdef EXEC_PAGESIZE # define _gl_getpagesize() EXEC_PAGESIZE # else # ifdef NBPG # ifndef CLSIZE # define CLSIZE 1 # endif # define _gl_getpagesize() (NBPG * CLSIZE) # else # ifdef NBPC # define _gl_getpagesize() NBPC # endif # endif # endif # endif # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getpagesize() _gl_getpagesize () # else # if !GNULIB_defined_getpagesize_function _GL_UNISTD_INLINE int getpagesize () { return _gl_getpagesize (); } # define GNULIB_defined_getpagesize_function 1 # endif # endif # endif # endif /* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t. */ _GL_CXXALIAS_SYS_CAST (getpagesize, int, (void)); # endif # if @HAVE_DECL_GETPAGESIZE@ _GL_CXXALIASWARN (getpagesize); # endif #elif defined GNULIB_POSIXCHECK # undef getpagesize # if HAVE_RAW_DECL_GETPAGESIZE _GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - " "use gnulib module getpagesize for portability"); # endif #endif #if @GNULIB_GETPASS@ /* Function getpass() from module 'getpass': Read a password from /dev/tty or stdin. Function getpass() from module 'getpass-gnu': Read a password of arbitrary length from /dev/tty or stdin. */ # if (@GNULIB_GETPASS@ && @REPLACE_GETPASS@) \ || (@GNULIB_GETPASS_GNU@ && @REPLACE_GETPASS_FOR_GETPASS_GNU@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getpass # define getpass rpl_getpass # endif _GL_FUNCDECL_RPL (getpass, char *, (const char *prompt) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (getpass, char *, (const char *prompt)); # else # if !@HAVE_GETPASS@ _GL_FUNCDECL_SYS (getpass, char *, (const char *prompt) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (getpass, char *, (const char *prompt)); # endif _GL_CXXALIASWARN (getpass); #elif defined GNULIB_POSIXCHECK # undef getpass # if HAVE_RAW_DECL_GETPASS _GL_WARN_ON_USE (getpass, "getpass is unportable - " "use gnulib module getpass or getpass-gnu for portability"); # endif #endif #if @GNULIB_MDA_GETPID@ /* On native Windows, map 'getpid' to '_getpid', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::getpid always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getpid # define getpid _getpid # endif _GL_CXXALIAS_MDA (getpid, int, (void)); # else _GL_CXXALIAS_SYS (getpid, pid_t, (void)); # endif _GL_CXXALIASWARN (getpid); #endif #if @GNULIB_GETUSERSHELL@ /* Return the next valid login shell on the system, or NULL when the end of the list has been reached. */ # if !@HAVE_DECL_GETUSERSHELL@ _GL_FUNCDECL_SYS (getusershell, char *, (void)); # endif _GL_CXXALIAS_SYS (getusershell, char *, (void)); _GL_CXXALIASWARN (getusershell); #elif defined GNULIB_POSIXCHECK # undef getusershell # if HAVE_RAW_DECL_GETUSERSHELL _GL_WARN_ON_USE (getusershell, "getusershell is unportable - " "use gnulib module getusershell for portability"); # endif #endif #if @GNULIB_GETUSERSHELL@ /* Rewind to pointer that is advanced at each getusershell() call. */ # if !@HAVE_DECL_GETUSERSHELL@ _GL_FUNCDECL_SYS (setusershell, void, (void)); # endif _GL_CXXALIAS_SYS (setusershell, void, (void)); _GL_CXXALIASWARN (setusershell); #elif defined GNULIB_POSIXCHECK # undef setusershell # if HAVE_RAW_DECL_SETUSERSHELL _GL_WARN_ON_USE (setusershell, "setusershell is unportable - " "use gnulib module getusershell for portability"); # endif #endif #if @GNULIB_GETUSERSHELL@ /* Free the pointer that is advanced at each getusershell() call and associated resources. */ # if !@HAVE_DECL_GETUSERSHELL@ _GL_FUNCDECL_SYS (endusershell, void, (void)); # endif _GL_CXXALIAS_SYS (endusershell, void, (void)); _GL_CXXALIASWARN (endusershell); #elif defined GNULIB_POSIXCHECK # undef endusershell # if HAVE_RAW_DECL_ENDUSERSHELL _GL_WARN_ON_USE (endusershell, "endusershell is unportable - " "use gnulib module getusershell for portability"); # endif #endif #if @GNULIB_GROUP_MEMBER@ /* Determine whether group id is in calling user's group list. */ # if !@HAVE_GROUP_MEMBER@ _GL_FUNCDECL_SYS (group_member, int, (gid_t gid)); # endif _GL_CXXALIAS_SYS (group_member, int, (gid_t gid)); _GL_CXXALIASWARN (group_member); #elif defined GNULIB_POSIXCHECK # undef group_member # if HAVE_RAW_DECL_GROUP_MEMBER _GL_WARN_ON_USE (group_member, "group_member is unportable - " "use gnulib module group-member for portability"); # endif #endif #if @GNULIB_ISATTY@ # if @REPLACE_ISATTY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef isatty # define isatty rpl_isatty # endif # define GNULIB_defined_isatty 1 _GL_FUNCDECL_RPL (isatty, int, (int fd)); _GL_CXXALIAS_RPL (isatty, int, (int fd)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef isatty # define isatty _isatty # endif _GL_CXXALIAS_MDA (isatty, int, (int fd)); # else _GL_CXXALIAS_SYS (isatty, int, (int fd)); # endif _GL_CXXALIASWARN (isatty); #elif defined GNULIB_POSIXCHECK # undef isatty # if HAVE_RAW_DECL_ISATTY _GL_WARN_ON_USE (isatty, "isatty has portability problems on native Windows - " "use gnulib module isatty for portability"); # endif #elif @GNULIB_MDA_ISATTY@ /* On native Windows, map 'isatty' to '_isatty', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::isatty always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef isatty # define isatty _isatty # endif _GL_CXXALIAS_MDA (isatty, int, (int fd)); # else _GL_CXXALIAS_SYS (isatty, int, (int fd)); # endif _GL_CXXALIASWARN (isatty); #endif #if @GNULIB_LCHOWN@ /* Change the owner of FILE to UID (if UID is not -1) and the group of FILE to GID (if GID is not -1). Do not follow symbolic links. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_LCHOWN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef lchown # define lchown rpl_lchown # endif _GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)); # else # if !@HAVE_LCHOWN@ _GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)); # endif _GL_CXXALIASWARN (lchown); #elif defined GNULIB_POSIXCHECK # undef lchown # if HAVE_RAW_DECL_LCHOWN _GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - " "use gnulib module lchown for portability"); # endif #endif #if @GNULIB_LINK@ /* Create a new hard link for an existing file. Return 0 if successful, otherwise -1 and errno set. See POSIX:2008 specification . */ # if @REPLACE_LINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define link rpl_link # endif _GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2)); # else # if !@HAVE_LINK@ _GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2)); # endif _GL_CXXALIASWARN (link); #elif defined GNULIB_POSIXCHECK # undef link # if HAVE_RAW_DECL_LINK _GL_WARN_ON_USE (link, "link is unportable - " "use gnulib module link for portability"); # endif #endif #if @GNULIB_LINKAT@ /* Create a new hard link for an existing file, relative to two directories. FLAG controls whether symlinks are followed. Return 0 if successful, otherwise -1 and errno set. */ # if @REPLACE_LINKAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef linkat # define linkat rpl_linkat # endif _GL_FUNCDECL_RPL (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag) _GL_ARG_NONNULL ((2, 4))); _GL_CXXALIAS_RPL (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag)); # else # if !@HAVE_LINKAT@ _GL_FUNCDECL_SYS (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag) _GL_ARG_NONNULL ((2, 4))); # endif _GL_CXXALIAS_SYS (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (linkat); # endif #elif defined GNULIB_POSIXCHECK # undef linkat # if HAVE_RAW_DECL_LINKAT _GL_WARN_ON_USE (linkat, "linkat is unportable - " "use gnulib module linkat for portability"); # endif #endif #if @GNULIB_LSEEK@ /* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END. Return the new offset if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_LSEEK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define lseek rpl_lseek # endif _GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence)); _GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef lseek # define lseek _lseek # endif _GL_CXXALIAS_MDA (lseek, off_t, (int fd, off_t offset, int whence)); # else _GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence)); # endif _GL_CXXALIASWARN (lseek); #elif defined GNULIB_POSIXCHECK # undef lseek # if HAVE_RAW_DECL_LSEEK _GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some " "systems - use gnulib module lseek for portability"); # endif #elif @GNULIB_MDA_LSEEK@ /* On native Windows, map 'lseek' to '_lseek', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::lseek always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef lseek # define lseek _lseek # endif _GL_CXXALIAS_MDA (lseek, long, (int fd, long offset, int whence)); # else _GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence)); # endif _GL_CXXALIASWARN (lseek); #endif #if @GNULIB_PIPE@ /* Create a pipe, defaulting to O_BINARY mode. Store the read-end as fd[0] and the write-end as fd[1]. Return 0 upon success, or -1 with errno set upon failure. */ # if !@HAVE_PIPE@ _GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (pipe, int, (int fd[2])); _GL_CXXALIASWARN (pipe); #elif defined GNULIB_POSIXCHECK # undef pipe # if HAVE_RAW_DECL_PIPE _GL_WARN_ON_USE (pipe, "pipe is unportable - " "use gnulib module pipe-posix for portability"); # endif #endif #if @GNULIB_PIPE2@ /* Create a pipe, applying the given flags when opening the read-end of the pipe and the write-end of the pipe. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). Store the read-end as fd[0] and the write-end as fd[1]. Return 0 upon success, or -1 with errno set upon failure. See also the Linux man page at . */ # if @REPLACE_PIPE2@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef pipe2 # define pipe2 rpl_pipe2 # endif _GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags)); # else _GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (pipe2); # endif #elif defined GNULIB_POSIXCHECK # undef pipe2 # if HAVE_RAW_DECL_PIPE2 _GL_WARN_ON_USE (pipe2, "pipe2 is unportable - " "use gnulib module pipe2 for portability"); # endif #endif #if @GNULIB_PREAD@ /* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET. Return the number of bytes placed into BUF if successful, otherwise set errno and return -1. 0 indicates EOF. See the POSIX:2008 specification . */ # if @REPLACE_PREAD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef pread # define pread rpl_pread # endif _GL_FUNCDECL_RPL (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset)); # else # if !@HAVE_PREAD@ _GL_FUNCDECL_SYS (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (pread); # endif #elif defined GNULIB_POSIXCHECK # undef pread # if HAVE_RAW_DECL_PREAD _GL_WARN_ON_USE (pread, "pread is unportable - " "use gnulib module pread for portability"); # endif #endif #if @GNULIB_PWRITE@ /* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET. Return the number of bytes written if successful, otherwise set errno and return -1. 0 indicates nothing written. See the POSIX:2008 specification . */ # if @REPLACE_PWRITE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef pwrite # define pwrite rpl_pwrite # endif _GL_FUNCDECL_RPL (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset)); # else # if !@HAVE_PWRITE@ _GL_FUNCDECL_SYS (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (pwrite); # endif #elif defined GNULIB_POSIXCHECK # undef pwrite # if HAVE_RAW_DECL_PWRITE _GL_WARN_ON_USE (pwrite, "pwrite is unportable - " "use gnulib module pwrite for portability"); # endif #endif #if @GNULIB_READ@ /* Read up to COUNT bytes from file descriptor FD into the buffer starting at BUF. See the POSIX:2008 specification . */ # if @REPLACE_READ@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef read # define read rpl_read # endif _GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef read # define read _read # endif _GL_CXXALIAS_MDA (read, ssize_t, (int fd, void *buf, size_t count)); # else _GL_CXXALIAS_SYS (read, ssize_t, (int fd, void *buf, size_t count)); # endif _GL_CXXALIASWARN (read); #elif @GNULIB_MDA_READ@ /* On native Windows, map 'read' to '_read', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::read always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef read # define read _read # endif # ifdef __MINGW32__ _GL_CXXALIAS_MDA (read, int, (int fd, void *buf, unsigned int count)); # else _GL_CXXALIAS_MDA (read, ssize_t, (int fd, void *buf, unsigned int count)); # endif # else _GL_CXXALIAS_SYS (read, ssize_t, (int fd, void *buf, size_t count)); # endif _GL_CXXALIASWARN (read); #endif #if @GNULIB_READLINK@ /* Read the contents of the symbolic link FILE and place the first BUFSIZE bytes of it into BUF. Return the number of bytes placed into BUF if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_READLINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define readlink rpl_readlink # endif _GL_FUNCDECL_RPL (readlink, ssize_t, (const char *restrict file, char *restrict buf, size_t bufsize) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (readlink, ssize_t, (const char *restrict file, char *restrict buf, size_t bufsize)); # else # if !@HAVE_READLINK@ _GL_FUNCDECL_SYS (readlink, ssize_t, (const char *restrict file, char *restrict buf, size_t bufsize) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (readlink, ssize_t, (const char *restrict file, char *restrict buf, size_t bufsize)); # endif _GL_CXXALIASWARN (readlink); #elif defined GNULIB_POSIXCHECK # undef readlink # if HAVE_RAW_DECL_READLINK _GL_WARN_ON_USE (readlink, "readlink is unportable - " "use gnulib module readlink for portability"); # endif #endif #if @GNULIB_READLINKAT@ # if @REPLACE_READLINKAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define readlinkat rpl_readlinkat # endif _GL_FUNCDECL_RPL (readlinkat, ssize_t, (int fd, char const *restrict file, char *restrict buf, size_t len) _GL_ARG_NONNULL ((2, 3))); _GL_CXXALIAS_RPL (readlinkat, ssize_t, (int fd, char const *restrict file, char *restrict buf, size_t len)); # else # if !@HAVE_READLINKAT@ _GL_FUNCDECL_SYS (readlinkat, ssize_t, (int fd, char const *restrict file, char *restrict buf, size_t len) _GL_ARG_NONNULL ((2, 3))); # endif _GL_CXXALIAS_SYS (readlinkat, ssize_t, (int fd, char const *restrict file, char *restrict buf, size_t len)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (readlinkat); # endif #elif defined GNULIB_POSIXCHECK # undef readlinkat # if HAVE_RAW_DECL_READLINKAT _GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - " "use gnulib module readlinkat for portability"); # endif #endif #if @GNULIB_RMDIR@ /* Remove the directory DIR. */ # if @REPLACE_RMDIR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define rmdir rpl_rmdir # endif _GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (rmdir, int, (char const *name)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef rmdir # define rmdir _rmdir # endif _GL_CXXALIAS_MDA (rmdir, int, (char const *name)); # else _GL_CXXALIAS_SYS (rmdir, int, (char const *name)); # endif _GL_CXXALIASWARN (rmdir); #elif defined GNULIB_POSIXCHECK # undef rmdir # if HAVE_RAW_DECL_RMDIR _GL_WARN_ON_USE (rmdir, "rmdir is unportable - " "use gnulib module rmdir for portability"); # endif #elif @GNULIB_MDA_RMDIR@ /* On native Windows, map 'rmdir' to '_rmdir', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::rmdir always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef rmdir # define rmdir _rmdir # endif _GL_CXXALIAS_MDA (rmdir, int, (char const *name)); # else _GL_CXXALIAS_SYS (rmdir, int, (char const *name)); # endif _GL_CXXALIASWARN (rmdir); #endif #if @GNULIB_SETHOSTNAME@ /* Set the host name of the machine. The host name may or may not be fully qualified. Put LEN bytes of NAME into the host name. Return 0 if successful, otherwise, set errno and return -1. Platforms with no ability to set the hostname return -1 and set errno = ENOSYS. */ # if @REPLACE_SETHOSTNAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef sethostname # define sethostname rpl_sethostname # endif _GL_FUNCDECL_RPL (sethostname, int, (const char *name, size_t len) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (sethostname, int, (const char *name, size_t len)); # else # if !@HAVE_SETHOSTNAME@ || !@HAVE_DECL_SETHOSTNAME@ _GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5 and FreeBSD 6.4 the second parameter is int. On Solaris 11 2011-10, the first parameter is not const. */ _GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (sethostname); # endif #elif defined GNULIB_POSIXCHECK # undef sethostname # if HAVE_RAW_DECL_SETHOSTNAME _GL_WARN_ON_USE (sethostname, "sethostname is unportable - " "use gnulib module sethostname for portability"); # endif #endif #if @GNULIB_SLEEP@ /* Pause the execution of the current thread for N seconds. Returns the number of seconds left to sleep. See the POSIX:2008 specification . */ # if @REPLACE_SLEEP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef sleep # define sleep rpl_sleep # endif _GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n)); _GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n)); # else # if !@HAVE_SLEEP@ _GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n)); # endif _GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n)); # endif _GL_CXXALIASWARN (sleep); #elif defined GNULIB_POSIXCHECK # undef sleep # if HAVE_RAW_DECL_SLEEP _GL_WARN_ON_USE (sleep, "sleep is unportable - " "use gnulib module sleep for portability"); # endif #endif #if @GNULIB_MDA_SWAB@ /* On native Windows, map 'swab' to '_swab', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::swab always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef swab # define swab _swab # endif /* Need to cast, because in old mingw the arguments are (const char *from, char *to, size_t n). */ _GL_CXXALIAS_MDA_CAST (swab, void, (char *from, char *to, int n)); # else # if defined __hpux /* HP-UX */ _GL_CXXALIAS_SYS (swab, void, (const char *from, char *to, int n)); # elif defined __sun && (defined __SunOS_5_10 || defined __XOPEN_OR_POSIX) && !defined _XPG4 /* Solaris */ _GL_CXXALIAS_SYS (swab, void, (const char *from, char *to, ssize_t n)); # else _GL_CXXALIAS_SYS (swab, void, (const void *from, void *to, ssize_t n)); # endif # endif _GL_CXXALIASWARN (swab); #endif #if @GNULIB_SYMLINK@ # if @REPLACE_SYMLINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef symlink # define symlink rpl_symlink # endif _GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file)); # else # if !@HAVE_SYMLINK@ _GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file)); # endif _GL_CXXALIASWARN (symlink); #elif defined GNULIB_POSIXCHECK # undef symlink # if HAVE_RAW_DECL_SYMLINK _GL_WARN_ON_USE (symlink, "symlink is not portable - " "use gnulib module symlink for portability"); # endif #endif #if @GNULIB_SYMLINKAT@ # if @REPLACE_SYMLINKAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef symlinkat # define symlinkat rpl_symlinkat # endif _GL_FUNCDECL_RPL (symlinkat, int, (char const *contents, int fd, char const *file) _GL_ARG_NONNULL ((1, 3))); _GL_CXXALIAS_RPL (symlinkat, int, (char const *contents, int fd, char const *file)); # else # if !@HAVE_SYMLINKAT@ _GL_FUNCDECL_SYS (symlinkat, int, (char const *contents, int fd, char const *file) _GL_ARG_NONNULL ((1, 3))); # endif _GL_CXXALIAS_SYS (symlinkat, int, (char const *contents, int fd, char const *file)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (symlinkat); # endif #elif defined GNULIB_POSIXCHECK # undef symlinkat # if HAVE_RAW_DECL_SYMLINKAT _GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - " "use gnulib module symlinkat for portability"); # endif #endif #if @GNULIB_TRUNCATE@ /* Change the size of the file designated by FILENAME to become equal to LENGTH. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_TRUNCATE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef truncate # define truncate rpl_truncate # endif _GL_FUNCDECL_RPL (truncate, int, (const char *filename, off_t length) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (truncate, int, (const char *filename, off_t length)); # else # if !@HAVE_DECL_TRUNCATE@ _GL_FUNCDECL_SYS (truncate, int, (const char *filename, off_t length) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (truncate, int, (const char *filename, off_t length)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (truncate); # endif #elif defined GNULIB_POSIXCHECK # undef truncate # if HAVE_RAW_DECL_TRUNCATE _GL_WARN_ON_USE (truncate, "truncate is unportable - " "use gnulib module truncate for portability"); # endif #endif #if @GNULIB_TTYNAME_R@ /* Store at most BUFLEN characters of the pathname of the terminal FD is open on in BUF. Return 0 on success, otherwise an error number. */ # if @REPLACE_TTYNAME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ttyname_r # define ttyname_r rpl_ttyname_r # endif _GL_FUNCDECL_RPL (ttyname_r, int, (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (ttyname_r, int, (int fd, char *buf, size_t buflen)); # else # if !@HAVE_DECL_TTYNAME_R@ _GL_FUNCDECL_SYS (ttyname_r, int, (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (ttyname_r, int, (int fd, char *buf, size_t buflen)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (ttyname_r); # endif #elif defined GNULIB_POSIXCHECK # undef ttyname_r # if HAVE_RAW_DECL_TTYNAME_R _GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - " "use gnulib module ttyname_r for portability"); # endif #endif #if @GNULIB_UNLINK@ # if @REPLACE_UNLINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef unlink # define unlink rpl_unlink # endif _GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (unlink, int, (char const *file)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef unlink # define unlink _unlink # endif _GL_CXXALIAS_MDA (unlink, int, (char const *file)); # else _GL_CXXALIAS_SYS (unlink, int, (char const *file)); # endif _GL_CXXALIASWARN (unlink); #elif defined GNULIB_POSIXCHECK # undef unlink # if HAVE_RAW_DECL_UNLINK _GL_WARN_ON_USE (unlink, "unlink is not portable - " "use gnulib module unlink for portability"); # endif #elif @GNULIB_MDA_UNLINK@ /* On native Windows, map 'unlink' to '_unlink', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::unlink always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef unlink # define unlink _unlink # endif _GL_CXXALIAS_MDA (unlink, int, (char const *file)); # else _GL_CXXALIAS_SYS (unlink, int, (char const *file)); # endif _GL_CXXALIASWARN (unlink); #endif #if @GNULIB_UNLINKAT@ # if @REPLACE_UNLINKAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef unlinkat # define unlinkat rpl_unlinkat # endif _GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag)); # else # if !@HAVE_UNLINKAT@ _GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag)); # endif _GL_CXXALIASWARN (unlinkat); #elif defined GNULIB_POSIXCHECK # undef unlinkat # if HAVE_RAW_DECL_UNLINKAT _GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - " "use gnulib module unlinkat for portability"); # endif #endif #if @GNULIB_USLEEP@ /* Pause the execution of the current thread for N microseconds. Returns 0 on completion, or -1 on range error. See the POSIX:2001 specification . */ # if @REPLACE_USLEEP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef usleep # define usleep rpl_usleep # endif _GL_FUNCDECL_RPL (usleep, int, (useconds_t n)); _GL_CXXALIAS_RPL (usleep, int, (useconds_t n)); # else # if !@HAVE_USLEEP@ _GL_FUNCDECL_SYS (usleep, int, (useconds_t n)); # endif /* Need to cast, because on Haiku, the first parameter is unsigned int n. */ _GL_CXXALIAS_SYS_CAST (usleep, int, (useconds_t n)); # endif _GL_CXXALIASWARN (usleep); #elif defined GNULIB_POSIXCHECK # undef usleep # if HAVE_RAW_DECL_USLEEP _GL_WARN_ON_USE (usleep, "usleep is unportable - " "use gnulib module usleep for portability"); # endif #endif #if @GNULIB_WRITE@ /* Write up to COUNT bytes starting at BUF to file descriptor FD. See the POSIX:2008 specification . */ # if @REPLACE_WRITE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef write # define write rpl_write # endif _GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef write # define write _write # endif _GL_CXXALIAS_MDA (write, ssize_t, (int fd, const void *buf, size_t count)); # else _GL_CXXALIAS_SYS (write, ssize_t, (int fd, const void *buf, size_t count)); # endif _GL_CXXALIASWARN (write); #elif @GNULIB_MDA_WRITE@ /* On native Windows, map 'write' to '_write', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::write always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef write # define write _write # endif # ifdef __MINGW32__ _GL_CXXALIAS_MDA (write, int, (int fd, const void *buf, unsigned int count)); # else _GL_CXXALIAS_MDA (write, ssize_t, (int fd, const void *buf, unsigned int count)); # endif # else _GL_CXXALIAS_SYS (write, ssize_t, (int fd, const void *buf, size_t count)); # endif _GL_CXXALIASWARN (write); #endif _GL_INLINE_HEADER_END #endif /* _@GUARD_PREFIX@_UNISTD_H */ #endif /* _GL_INCLUDING_UNISTD_H */ #endif /* _@GUARD_PREFIX@_UNISTD_H */ recode-3.7.15/lib/msvc-nothrow.c0000644000175000017500000000255614371444255012132 /* Wrappers that don't throw invalid parameter notifications with MSVC runtime libraries. Copyright (C) 2011-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include "msvc-nothrow.h" /* Get declarations of the native Windows API functions. */ #define WIN32_LEAN_AND_MEAN #include #if HAVE_MSVC_INVALID_PARAMETER_HANDLER # include "msvc-inval.h" #endif #undef _get_osfhandle #if HAVE_MSVC_INVALID_PARAMETER_HANDLER intptr_t _gl_nothrow_get_osfhandle (int fd) { intptr_t result; TRY_MSVC_INVAL { result = _get_osfhandle (fd); } CATCH_MSVC_INVAL { result = (intptr_t) INVALID_HANDLE_VALUE; } DONE_MSVC_INVAL; return result; } #endif recode-3.7.15/lib/stat-w32.h0000644000175000017500000000310714371444255011046 /* Core of implementation of fstat and stat for native Windows. Copyright (C) 2017-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _STAT_W32_H #define _STAT_W32_H 1 /* Converts a FILETIME to GMT time since 1970-01-01 00:00:00. */ #if _GL_WINDOWS_STAT_TIMESPEC extern struct timespec _gl_convert_FILETIME_to_timespec (const FILETIME *ft); #else extern time_t _gl_convert_FILETIME_to_POSIX (const FILETIME *ft); #endif /* Fill *BUF with information about the file designated by H. PATH is the file name, if known, otherwise NULL. Return 0 if successful, or -1 with errno set upon failure. */ extern int _gl_fstat_by_handle (HANDLE h, const char *path, struct stat *buf); /* Bitmasks for st_mode. */ #define S_IREAD_UGO (_S_IREAD | (_S_IREAD >> 3) | (_S_IREAD >> 6)) #define S_IWRITE_UGO (_S_IWRITE | (_S_IWRITE >> 3) | (_S_IWRITE >> 6)) #define S_IEXEC_UGO (_S_IEXEC | (_S_IEXEC >> 3) | (_S_IEXEC >> 6)) #endif /* _STAT_W32_H */ recode-3.7.15/lib/c-ctype.c0000644000175000017500000000151314371444255011020 /* Character handling in C locale. Copyright (C) 2003-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #define C_CTYPE_INLINE _GL_EXTERN_INLINE #include "c-ctype.h" recode-3.7.15/lib/inttypes.in.h0000644000175000017500000005274114371444255011756 /* Copyright (C) 2006-2023 Free Software Foundation, Inc. Written by Paul Eggert, Bruno Haible, Derek Price. This file is part of gnulib. This file 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. This file 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 . */ /* * ISO C 99 for platforms that lack it. * */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* Include the original if it exists, and if this file has not been included yet or if this file includes gnulib stdint.h which in turn includes this file. The include_next requires a split double-inclusion guard. */ #if ! defined INTTYPES_H || defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H # if @HAVE_INTTYPES_H@ /* Some pre-C++11 implementations need this. */ # if defined __cplusplus && ! defined __STDC_FORMAT_MACROS # define __STDC_FORMAT_MACROS 1 # endif # @INCLUDE_NEXT@ @NEXT_INTTYPES_H@ # define _GL_FINISHED_INCLUDING_SYSTEM_INTTYPES_H # endif #endif #if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H #define INTTYPES_H /* Include or the gnulib replacement. But avoid namespace pollution on glibc systems. */ #ifndef __GLIBC__ # include #endif /* Get CHAR_BIT, INT_MAX, LONG_MAX, etc. */ #include /* On mingw, __USE_MINGW_ANSI_STDIO only works if is also included */ #if defined _WIN32 && ! defined __CYGWIN__ # include #endif #if !(INT_MAX == 0x7fffffff && INT_MIN + INT_MAX == -1) # error "This file assumes that 'int' is 32-bit two's complement. Please report your platform and compiler to ." #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* 7.8.1 Macros for format specifiers */ #if defined _TNS_R_TARGET /* Tandem NonStop R series and compatible platforms released before July 2005 support %Ld but not %lld. */ # define _LONG_LONG_FORMAT_PREFIX "L" #else # define _LONG_LONG_FORMAT_PREFIX "ll" #endif #if !defined PRId8 # ifdef INT8_MAX # define PRId8 "d" # endif #endif #if !defined PRIi8 # ifdef INT8_MAX # define PRIi8 "i" # endif #endif #if !defined PRIo8 # ifdef UINT8_MAX # define PRIo8 "o" # endif #endif #if !defined PRIu8 # ifdef UINT8_MAX # define PRIu8 "u" # endif #endif #if !defined PRIx8 # ifdef UINT8_MAX # define PRIx8 "x" # endif #endif #if !defined PRIX8 # ifdef UINT8_MAX # define PRIX8 "X" # endif #endif #if !defined PRId16 # ifdef INT16_MAX # define PRId16 "d" # endif #endif #if !defined PRIi16 # ifdef INT16_MAX # define PRIi16 "i" # endif #endif #if !defined PRIo16 # ifdef UINT16_MAX # define PRIo16 "o" # endif #endif #if !defined PRIu16 # ifdef UINT16_MAX # define PRIu16 "u" # endif #endif #if !defined PRIx16 # ifdef UINT16_MAX # define PRIx16 "x" # endif #endif #if !defined PRIX16 # ifdef UINT16_MAX # define PRIX16 "X" # endif #endif #if !defined PRId32 # ifdef INT32_MAX # define PRId32 "d" # endif #endif #if !defined PRIi32 # ifdef INT32_MAX # define PRIi32 "i" # endif #endif #if !defined PRIo32 # ifdef UINT32_MAX # define PRIo32 "o" # endif #endif #if !defined PRIu32 # ifdef UINT32_MAX # define PRIu32 "u" # endif #endif #if !defined PRIx32 # ifdef UINT32_MAX # define PRIx32 "x" # endif #endif #if !defined PRIX32 # ifdef UINT32_MAX # define PRIX32 "X" # endif #endif #ifdef INT64_MAX # if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @INT64_MAX_EQ_LONG_MAX@) # define _PRI64_PREFIX "l" # elif defined _MSC_VER || defined __MINGW32__ # define _PRI64_PREFIX "I64" # elif LONG_MAX >> 30 == 1 # define _PRI64_PREFIX _LONG_LONG_FORMAT_PREFIX # endif # if !defined PRId64 # define PRId64 _PRI64_PREFIX "d" # endif # if !defined PRIi64 # define PRIi64 _PRI64_PREFIX "i" # endif #endif #ifdef UINT64_MAX # if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @UINT64_MAX_EQ_ULONG_MAX@) # define _PRIu64_PREFIX "l" # elif defined _MSC_VER || defined __MINGW32__ # define _PRIu64_PREFIX "I64" # elif ULONG_MAX >> 31 == 1 # define _PRIu64_PREFIX _LONG_LONG_FORMAT_PREFIX # endif # if !defined PRIo64 # define PRIo64 _PRIu64_PREFIX "o" # endif # if !defined PRIu64 # define PRIu64 _PRIu64_PREFIX "u" # endif # if !defined PRIx64 # define PRIx64 _PRIu64_PREFIX "x" # endif # if !defined PRIX64 # define PRIX64 _PRIu64_PREFIX "X" # endif #endif #if !defined PRIdLEAST8 # define PRIdLEAST8 "d" #endif #if !defined PRIiLEAST8 # define PRIiLEAST8 "i" #endif #if !defined PRIoLEAST8 # define PRIoLEAST8 "o" #endif #if !defined PRIuLEAST8 # define PRIuLEAST8 "u" #endif #if !defined PRIxLEAST8 # define PRIxLEAST8 "x" #endif #if !defined PRIXLEAST8 # define PRIXLEAST8 "X" #endif #if !defined PRIdLEAST16 # define PRIdLEAST16 "d" #endif #if !defined PRIiLEAST16 # define PRIiLEAST16 "i" #endif #if !defined PRIoLEAST16 # define PRIoLEAST16 "o" #endif #if !defined PRIuLEAST16 # define PRIuLEAST16 "u" #endif #if !defined PRIxLEAST16 # define PRIxLEAST16 "x" #endif #if !defined PRIXLEAST16 # define PRIXLEAST16 "X" #endif #if !defined PRIdLEAST32 # define PRIdLEAST32 "d" #endif #if !defined PRIiLEAST32 # define PRIiLEAST32 "i" #endif #if !defined PRIoLEAST32 # define PRIoLEAST32 "o" #endif #if !defined PRIuLEAST32 # define PRIuLEAST32 "u" #endif #if !defined PRIxLEAST32 # define PRIxLEAST32 "x" #endif #if !defined PRIXLEAST32 # define PRIXLEAST32 "X" #endif #ifdef INT64_MAX # if !defined PRIdLEAST64 # define PRIdLEAST64 PRId64 # endif # if !defined PRIiLEAST64 # define PRIiLEAST64 PRIi64 # endif #endif #ifdef UINT64_MAX # if !defined PRIoLEAST64 # define PRIoLEAST64 PRIo64 # endif # if !defined PRIuLEAST64 # define PRIuLEAST64 PRIu64 # endif # if !defined PRIxLEAST64 # define PRIxLEAST64 PRIx64 # endif # if !defined PRIXLEAST64 # define PRIXLEAST64 PRIX64 # endif #endif #if !defined PRIdFAST8 # if INT_FAST8_MAX > INT32_MAX # define PRIdFAST8 PRId64 # else # define PRIdFAST8 "d" # endif #endif #if !defined PRIiFAST8 # if INT_FAST8_MAX > INT32_MAX # define PRIiFAST8 PRIi64 # else # define PRIiFAST8 "i" # endif #endif #if !defined PRIoFAST8 # if UINT_FAST8_MAX > UINT32_MAX # define PRIoFAST8 PRIo64 # else # define PRIoFAST8 "o" # endif #endif #if !defined PRIuFAST8 # if UINT_FAST8_MAX > UINT32_MAX # define PRIuFAST8 PRIu64 # else # define PRIuFAST8 "u" # endif #endif #if !defined PRIxFAST8 # if UINT_FAST8_MAX > UINT32_MAX # define PRIxFAST8 PRIx64 # else # define PRIxFAST8 "x" # endif #endif #if !defined PRIXFAST8 # if UINT_FAST8_MAX > UINT32_MAX # define PRIXFAST8 PRIX64 # else # define PRIXFAST8 "X" # endif #endif #if !defined PRIdFAST16 # if INT_FAST16_MAX > INT32_MAX # define PRIdFAST16 PRId64 # else # define PRIdFAST16 "d" # endif #endif #if !defined PRIiFAST16 # if INT_FAST16_MAX > INT32_MAX # define PRIiFAST16 PRIi64 # else # define PRIiFAST16 "i" # endif #endif #if !defined PRIoFAST16 # if UINT_FAST16_MAX > UINT32_MAX # define PRIoFAST16 PRIo64 # else # define PRIoFAST16 "o" # endif #endif #if !defined PRIuFAST16 # if UINT_FAST16_MAX > UINT32_MAX # define PRIuFAST16 PRIu64 # else # define PRIuFAST16 "u" # endif #endif #if !defined PRIxFAST16 # if UINT_FAST16_MAX > UINT32_MAX # define PRIxFAST16 PRIx64 # else # define PRIxFAST16 "x" # endif #endif #if !defined PRIXFAST16 # if UINT_FAST16_MAX > UINT32_MAX # define PRIXFAST16 PRIX64 # else # define PRIXFAST16 "X" # endif #endif #if !defined PRIdFAST32 # if INT_FAST32_MAX > INT32_MAX # define PRIdFAST32 PRId64 # else # define PRIdFAST32 "d" # endif #endif #if !defined PRIiFAST32 # if INT_FAST32_MAX > INT32_MAX # define PRIiFAST32 PRIi64 # else # define PRIiFAST32 "i" # endif #endif #if !defined PRIoFAST32 # if UINT_FAST32_MAX > UINT32_MAX # define PRIoFAST32 PRIo64 # else # define PRIoFAST32 "o" # endif #endif #if !defined PRIuFAST32 # if UINT_FAST32_MAX > UINT32_MAX # define PRIuFAST32 PRIu64 # else # define PRIuFAST32 "u" # endif #endif #if !defined PRIxFAST32 # if UINT_FAST32_MAX > UINT32_MAX # define PRIxFAST32 PRIx64 # else # define PRIxFAST32 "x" # endif #endif #if !defined PRIXFAST32 # if UINT_FAST32_MAX > UINT32_MAX # define PRIXFAST32 PRIX64 # else # define PRIXFAST32 "X" # endif #endif #ifdef INT64_MAX # if !defined PRIdFAST64 # define PRIdFAST64 PRId64 # endif # if !defined PRIiFAST64 # define PRIiFAST64 PRIi64 # endif #endif #ifdef UINT64_MAX # if !defined PRIoFAST64 # define PRIoFAST64 PRIo64 # endif # if !defined PRIuFAST64 # define PRIuFAST64 PRIu64 # endif # if !defined PRIxFAST64 # define PRIxFAST64 PRIx64 # endif # if !defined PRIXFAST64 # define PRIXFAST64 PRIX64 # endif #endif #if !defined PRIdMAX # if @INT32_MAX_LT_INTMAX_MAX@ # define PRIdMAX PRId64 # else # define PRIdMAX "ld" # endif #endif #if !defined PRIiMAX # if @INT32_MAX_LT_INTMAX_MAX@ # define PRIiMAX PRIi64 # else # define PRIiMAX "li" # endif #endif #if !defined PRIoMAX # if @UINT32_MAX_LT_UINTMAX_MAX@ # define PRIoMAX PRIo64 # else # define PRIoMAX "lo" # endif #endif #if !defined PRIuMAX # if @UINT32_MAX_LT_UINTMAX_MAX@ # define PRIuMAX PRIu64 # else # define PRIuMAX "lu" # endif #endif #if !defined PRIxMAX # if @UINT32_MAX_LT_UINTMAX_MAX@ # define PRIxMAX PRIx64 # else # define PRIxMAX "lx" # endif #endif #if !defined PRIXMAX # if @UINT32_MAX_LT_UINTMAX_MAX@ # define PRIXMAX PRIX64 # else # define PRIXMAX "lX" # endif #endif #if !defined PRIdPTR # ifdef INTPTR_MAX # define PRIdPTR @PRIPTR_PREFIX@ "d" # endif #endif #if !defined PRIiPTR # ifdef INTPTR_MAX # define PRIiPTR @PRIPTR_PREFIX@ "i" # endif #endif #if !defined PRIoPTR # ifdef UINTPTR_MAX # define PRIoPTR @PRIPTR_PREFIX@ "o" # endif #endif #if !defined PRIuPTR # ifdef UINTPTR_MAX # define PRIuPTR @PRIPTR_PREFIX@ "u" # endif #endif #if !defined PRIxPTR # ifdef UINTPTR_MAX # define PRIxPTR @PRIPTR_PREFIX@ "x" # endif #endif #if !defined PRIXPTR # ifdef UINTPTR_MAX # define PRIXPTR @PRIPTR_PREFIX@ "X" # endif #endif #if !defined SCNd8 # ifdef INT8_MAX # define SCNd8 "hhd" # endif #endif #if !defined SCNi8 # ifdef INT8_MAX # define SCNi8 "hhi" # endif #endif #if !defined SCNo8 # ifdef UINT8_MAX # define SCNo8 "hho" # endif #endif #if !defined SCNu8 # ifdef UINT8_MAX # define SCNu8 "hhu" # endif #endif #if !defined SCNx8 # ifdef UINT8_MAX # define SCNx8 "hhx" # endif #endif #if !defined SCNd16 # ifdef INT16_MAX # define SCNd16 "hd" # endif #endif #if !defined SCNi16 # ifdef INT16_MAX # define SCNi16 "hi" # endif #endif #if !defined SCNo16 # ifdef UINT16_MAX # define SCNo16 "ho" # endif #endif #if !defined SCNu16 # ifdef UINT16_MAX # define SCNu16 "hu" # endif #endif #if !defined SCNx16 # ifdef UINT16_MAX # define SCNx16 "hx" # endif #endif #if !defined SCNd32 # ifdef INT32_MAX # define SCNd32 "d" # endif #endif #if !defined SCNi32 # ifdef INT32_MAX # define SCNi32 "i" # endif #endif #if !defined SCNo32 # ifdef UINT32_MAX # define SCNo32 "o" # endif #endif #if !defined SCNu32 # ifdef UINT32_MAX # define SCNu32 "u" # endif #endif #if !defined SCNx32 # ifdef UINT32_MAX # define SCNx32 "x" # endif #endif #ifdef INT64_MAX # if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @INT64_MAX_EQ_LONG_MAX@) # define _SCN64_PREFIX "l" # elif defined _MSC_VER || defined __MINGW32__ # define _SCN64_PREFIX "I64" # elif LONG_MAX >> 30 == 1 # define _SCN64_PREFIX _LONG_LONG_FORMAT_PREFIX # endif # if !defined SCNd64 # define SCNd64 _SCN64_PREFIX "d" # endif # if !defined SCNi64 # define SCNi64 _SCN64_PREFIX "i" # endif #endif #ifdef UINT64_MAX # if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @UINT64_MAX_EQ_ULONG_MAX@) # define _SCNu64_PREFIX "l" # elif defined _MSC_VER || defined __MINGW32__ # define _SCNu64_PREFIX "I64" # elif ULONG_MAX >> 31 == 1 # define _SCNu64_PREFIX _LONG_LONG_FORMAT_PREFIX # endif # if !defined SCNo64 # define SCNo64 _SCNu64_PREFIX "o" # endif # if !defined SCNu64 # define SCNu64 _SCNu64_PREFIX "u" # endif # if !defined SCNx64 # define SCNx64 _SCNu64_PREFIX "x" # endif #endif #if !defined SCNdLEAST8 # define SCNdLEAST8 "hhd" #endif #if !defined SCNiLEAST8 # define SCNiLEAST8 "hhi" #endif #if !defined SCNoLEAST8 # define SCNoLEAST8 "hho" #endif #if !defined SCNuLEAST8 # define SCNuLEAST8 "hhu" #endif #if !defined SCNxLEAST8 # define SCNxLEAST8 "hhx" #endif #if !defined SCNdLEAST16 # define SCNdLEAST16 "hd" #endif #if !defined SCNiLEAST16 # define SCNiLEAST16 "hi" #endif #if !defined SCNoLEAST16 # define SCNoLEAST16 "ho" #endif #if !defined SCNuLEAST16 # define SCNuLEAST16 "hu" #endif #if !defined SCNxLEAST16 # define SCNxLEAST16 "hx" #endif #if !defined SCNdLEAST32 # define SCNdLEAST32 "d" #endif #if !defined SCNiLEAST32 # define SCNiLEAST32 "i" #endif #if !defined SCNoLEAST32 # define SCNoLEAST32 "o" #endif #if !defined SCNuLEAST32 # define SCNuLEAST32 "u" #endif #if !defined SCNxLEAST32 # define SCNxLEAST32 "x" #endif #ifdef INT64_MAX # if !defined SCNdLEAST64 # define SCNdLEAST64 SCNd64 # endif # if !defined SCNiLEAST64 # define SCNiLEAST64 SCNi64 # endif #endif #ifdef UINT64_MAX # if !defined SCNoLEAST64 # define SCNoLEAST64 SCNo64 # endif # if !defined SCNuLEAST64 # define SCNuLEAST64 SCNu64 # endif # if !defined SCNxLEAST64 # define SCNxLEAST64 SCNx64 # endif #endif #if !defined SCNdFAST8 # if INT_FAST8_MAX > INT32_MAX # define SCNdFAST8 SCNd64 # elif INT_FAST8_MAX == 0x7fff # define SCNdFAST8 "hd" # elif INT_FAST8_MAX == 0x7f # define SCNdFAST8 "hhd" # else # define SCNdFAST8 "d" # endif #endif #if !defined SCNiFAST8 # if INT_FAST8_MAX > INT32_MAX # define SCNiFAST8 SCNi64 # elif INT_FAST8_MAX == 0x7fff # define SCNiFAST8 "hi" # elif INT_FAST8_MAX == 0x7f # define SCNiFAST8 "hhi" # else # define SCNiFAST8 "i" # endif #endif #if !defined SCNoFAST8 # if UINT_FAST8_MAX > UINT32_MAX # define SCNoFAST8 SCNo64 # elif UINT_FAST8_MAX == 0xffff # define SCNoFAST8 "ho" # elif UINT_FAST8_MAX == 0xff # define SCNoFAST8 "hho" # else # define SCNoFAST8 "o" # endif #endif #if !defined SCNuFAST8 # if UINT_FAST8_MAX > UINT32_MAX # define SCNuFAST8 SCNu64 # elif UINT_FAST8_MAX == 0xffff # define SCNuFAST8 "hu" # elif UINT_FAST8_MAX == 0xff # define SCNuFAST8 "hhu" # else # define SCNuFAST8 "u" # endif #endif #if !defined SCNxFAST8 # if UINT_FAST8_MAX > UINT32_MAX # define SCNxFAST8 SCNx64 # elif UINT_FAST8_MAX == 0xffff # define SCNxFAST8 "hx" # elif UINT_FAST8_MAX == 0xff # define SCNxFAST8 "hhx" # else # define SCNxFAST8 "x" # endif #endif #if !defined SCNdFAST16 # if INT_FAST16_MAX > INT32_MAX # define SCNdFAST16 SCNd64 # elif INT_FAST16_MAX == 0x7fff # define SCNdFAST16 "hd" # else # define SCNdFAST16 "d" # endif #endif #if !defined SCNiFAST16 # if INT_FAST16_MAX > INT32_MAX # define SCNiFAST16 SCNi64 # elif INT_FAST16_MAX == 0x7fff # define SCNiFAST16 "hi" # else # define SCNiFAST16 "i" # endif #endif #if !defined SCNoFAST16 # if UINT_FAST16_MAX > UINT32_MAX # define SCNoFAST16 SCNo64 # elif UINT_FAST16_MAX == 0xffff # define SCNoFAST16 "ho" # else # define SCNoFAST16 "o" # endif #endif #if !defined SCNuFAST16 # if UINT_FAST16_MAX > UINT32_MAX # define SCNuFAST16 SCNu64 # elif UINT_FAST16_MAX == 0xffff # define SCNuFAST16 "hu" # else # define SCNuFAST16 "u" # endif #endif #if !defined SCNxFAST16 # if UINT_FAST16_MAX > UINT32_MAX # define SCNxFAST16 SCNx64 # elif UINT_FAST16_MAX == 0xffff # define SCNxFAST16 "hx" # else # define SCNxFAST16 "x" # endif #endif #if !defined SCNdFAST32 # if INT_FAST32_MAX > INT32_MAX # define SCNdFAST32 SCNd64 # else # define SCNdFAST32 "d" # endif #endif #if !defined SCNiFAST32 # if INT_FAST32_MAX > INT32_MAX # define SCNiFAST32 SCNi64 # else # define SCNiFAST32 "i" # endif #endif #if !defined SCNoFAST32 # if UINT_FAST32_MAX > UINT32_MAX # define SCNoFAST32 SCNo64 # else # define SCNoFAST32 "o" # endif #endif #if !defined SCNuFAST32 # if UINT_FAST32_MAX > UINT32_MAX # define SCNuFAST32 SCNu64 # else # define SCNuFAST32 "u" # endif #endif #if !defined SCNxFAST32 # if UINT_FAST32_MAX > UINT32_MAX # define SCNxFAST32 SCNx64 # else # define SCNxFAST32 "x" # endif #endif #ifdef INT64_MAX # if !defined SCNdFAST64 # define SCNdFAST64 SCNd64 # endif # if !defined SCNiFAST64 # define SCNiFAST64 SCNi64 # endif #endif #ifdef UINT64_MAX # if !defined SCNoFAST64 # define SCNoFAST64 SCNo64 # endif # if !defined SCNuFAST64 # define SCNuFAST64 SCNu64 # endif # if !defined SCNxFAST64 # define SCNxFAST64 SCNx64 # endif #endif #if !defined SCNdMAX # if @INT32_MAX_LT_INTMAX_MAX@ # define SCNdMAX SCNd64 # else # define SCNdMAX "ld" # endif #endif #if !defined SCNiMAX # if @INT32_MAX_LT_INTMAX_MAX@ # define SCNiMAX SCNi64 # else # define SCNiMAX "li" # endif #endif #if !defined SCNoMAX # if @UINT32_MAX_LT_UINTMAX_MAX@ # define SCNoMAX SCNo64 # else # define SCNoMAX "lo" # endif #endif #if !defined SCNuMAX # if @UINT32_MAX_LT_UINTMAX_MAX@ # define SCNuMAX SCNu64 # else # define SCNuMAX "lu" # endif #endif #if !defined SCNxMAX # if @UINT32_MAX_LT_UINTMAX_MAX@ # define SCNxMAX SCNx64 # else # define SCNxMAX "lx" # endif #endif #if !defined SCNdPTR # ifdef INTPTR_MAX # define SCNdPTR @PRIPTR_PREFIX@ "d" # endif #endif #if !defined SCNiPTR # ifdef INTPTR_MAX # define SCNiPTR @PRIPTR_PREFIX@ "i" # endif #endif #if !defined SCNoPTR # ifdef UINTPTR_MAX # define SCNoPTR @PRIPTR_PREFIX@ "o" # endif #endif #if !defined SCNuPTR # ifdef UINTPTR_MAX # define SCNuPTR @PRIPTR_PREFIX@ "u" # endif #endif #if !defined SCNxPTR # ifdef UINTPTR_MAX # define SCNxPTR @PRIPTR_PREFIX@ "x" # endif #endif /* 7.8.2 Functions for greatest-width integer types */ #ifdef __cplusplus extern "C" { #endif #if @GNULIB_IMAXABS@ # if @REPLACE_IMAXABS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef imaxabs # define imaxabs rpl_imaxabs # endif _GL_FUNCDECL_RPL (imaxabs, intmax_t, (intmax_t x)); _GL_CXXALIAS_RPL (imaxabs, intmax_t, (intmax_t x)); # else # if !@HAVE_DECL_IMAXABS@ _GL_FUNCDECL_SYS (imaxabs, intmax_t, (intmax_t x)); # endif _GL_CXXALIAS_SYS (imaxabs, intmax_t, (intmax_t x)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (imaxabs); # endif #elif defined GNULIB_POSIXCHECK # undef imaxabs # if HAVE_RAW_DECL_IMAXABS _GL_WARN_ON_USE (imaxabs, "imaxabs is unportable - " "use gnulib module imaxabs for portability"); # endif #endif #if @GNULIB_IMAXDIV@ # if !@HAVE_IMAXDIV_T@ # if !GNULIB_defined_imaxdiv_t typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t; # define GNULIB_defined_imaxdiv_t 1 # endif # endif # if @REPLACE_IMAXDIV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef imaxdiv # define imaxdiv rpl_imaxdiv # endif _GL_FUNCDECL_RPL (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom)); _GL_CXXALIAS_RPL (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom)); # else # if !@HAVE_DECL_IMAXDIV@ _GL_FUNCDECL_SYS (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom)); # endif _GL_CXXALIAS_SYS (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (imaxdiv); # endif #elif defined GNULIB_POSIXCHECK # undef imaxdiv # if HAVE_RAW_DECL_IMAXDIV _GL_WARN_ON_USE (imaxdiv, "imaxdiv is unportable - " "use gnulib module imaxdiv for portability"); # endif #endif #if @GNULIB_STRTOIMAX@ # if @REPLACE_STRTOIMAX@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strtoimax # define strtoimax rpl_strtoimax # endif _GL_FUNCDECL_RPL (strtoimax, intmax_t, (const char *restrict, char **restrict, int) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strtoimax, intmax_t, (const char *restrict, char **restrict, int)); # else # if !@HAVE_DECL_STRTOIMAX@ # undef strtoimax _GL_FUNCDECL_SYS (strtoimax, intmax_t, (const char *restrict, char **restrict, int) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtoimax, intmax_t, (const char *restrict, char **restrict, int)); # endif _GL_CXXALIASWARN (strtoimax); #elif defined GNULIB_POSIXCHECK # undef strtoimax # if HAVE_RAW_DECL_STRTOIMAX _GL_WARN_ON_USE (strtoimax, "strtoimax is unportable - " "use gnulib module strtoimax for portability"); # endif #endif #if @GNULIB_STRTOUMAX@ # if @REPLACE_STRTOUMAX@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strtoumax # define strtoumax rpl_strtoumax # endif _GL_FUNCDECL_RPL (strtoumax, uintmax_t, (const char *restrict, char **restrict, int) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strtoumax, uintmax_t, (const char *restrict, char **restrict, int)); # else # if !@HAVE_DECL_STRTOUMAX@ # undef strtoumax _GL_FUNCDECL_SYS (strtoumax, uintmax_t, (const char *restrict, char **restrict, int) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtoumax, uintmax_t, (const char *restrict, char **restrict, int)); # endif _GL_CXXALIASWARN (strtoumax); #elif defined GNULIB_POSIXCHECK # undef strtoumax # if HAVE_RAW_DECL_STRTOUMAX _GL_WARN_ON_USE (strtoumax, "strtoumax is unportable - " "use gnulib module strtoumax for portability"); # endif #endif /* Don't bother defining or declaring wcstoimax and wcstoumax, since wide-character functions like this are hardly ever useful. */ #ifdef __cplusplus } #endif #endif /* !defined INTTYPES_H && !defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H */ recode-3.7.15/lib/stripslash.c0000644000175000017500000000306314371444255011652 /* stripslash.c -- remove redundant trailing slashes from a file name Copyright (C) 1990, 2001, 2003-2006, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #include "dirname.h" /* Remove trailing slashes from FILE. Return true if a trailing slash was removed. This is useful when using file name completion from a shell that adds a "/" after directory names (such as tcsh and bash), because on symlinks to directories, several system calls have different semantics according to whether a trailing slash is present. */ bool strip_trailing_slashes (char *file) { char *base = last_component (file); char *base_lim; bool had_slash; /* last_component returns "" for file system roots, but we need to turn "///" into "/". */ if (! *base) base = file; base_lim = base + base_len (base); had_slash = (*base_lim != '\0'); *base_lim = '\0'; return had_slash; } recode-3.7.15/lib/stdlib.in.h0000644000175000017500000016206514371444255011361 /* A GNU-like . Copyright (C) 1995, 2001-2004, 2006-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_system_stdlib_h || defined __need_malloc_and_calloc /* Special invocation conventions inside some gnulib header files, and inside some glibc header files, respectively. */ #@INCLUDE_NEXT@ @NEXT_STDLIB_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_STDLIB_H /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_STDLIB_H@ #ifndef _@GUARD_PREFIX@_STDLIB_H #define _@GUARD_PREFIX@_STDLIB_H /* NetBSD 5.0 mis-defines NULL. */ #include /* MirBSD 10 defines WEXITSTATUS in , not in . */ #if @GNULIB_SYSTEM_POSIX@ && !defined WEXITSTATUS # include #endif /* Solaris declares getloadavg() in . */ #if (@GNULIB_GETLOADAVG@ || defined GNULIB_POSIXCHECK) && @HAVE_SYS_LOADAVG_H@ /* OpenIndiana has a bug: must be included before . */ # include # include #endif /* Native Windows platforms declare _mktemp() in . */ #if defined _WIN32 && !defined __CYGWIN__ # include #endif #if @GNULIB_RANDOM_R@ /* OSF/1 5.1 declares 'struct random_data' in , which is included from if _REENTRANT is defined. Include it whenever we need 'struct random_data'. */ # if @HAVE_RANDOM_H@ # include # endif # if !@HAVE_STRUCT_RANDOM_DATA@ || @REPLACE_RANDOM_R@ || !@HAVE_RANDOM_R@ # include # endif # if !@HAVE_STRUCT_RANDOM_DATA@ /* Define 'struct random_data'. But allow multiple gnulib generated replacements to coexist. */ # if !GNULIB_defined_struct_random_data struct random_data { int32_t *fptr; /* Front pointer. */ int32_t *rptr; /* Rear pointer. */ int32_t *state; /* Array of state values. */ int rand_type; /* Type of random number generator. */ int rand_deg; /* Degree of random number generator. */ int rand_sep; /* Distance between front and rear. */ int32_t *end_ptr; /* Pointer behind state table. */ }; # define GNULIB_defined_struct_random_data 1 # endif # endif #endif #if (@GNULIB_MKSTEMP@ || @GNULIB_MKSTEMPS@ || @GNULIB_MKOSTEMP@ || @GNULIB_MKOSTEMPS@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !(defined _WIN32 && ! defined __CYGWIN__) /* On Mac OS X 10.3, only declares mkstemp. */ /* On Mac OS X 10.5, only declares mkstemps. */ /* On Mac OS X 10.13, only declares mkostemp and mkostemps. */ /* On Cygwin 1.7.1, only declares getsubopt. */ /* But avoid namespace pollution on glibc systems and native Windows. */ # include #endif /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers that can be freed by passing them as the Ith argument to the function F. */ #ifndef _GL_ATTRIBUTE_DEALLOC # if __GNUC__ >= 11 # define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) # else # define _GL_ATTRIBUTE_DEALLOC(f, i) # endif #endif /* _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that can be freed via 'free'; it can be used only after declaring 'free'. */ /* Applies to: functions. Cannot be used on inline functions. */ #ifndef _GL_ATTRIBUTE_DEALLOC_FREE # define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) #endif /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly allocated memory. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_MALLOC # if __GNUC__ >= 3 || defined __clang__ # define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) # else # define _GL_ATTRIBUTE_MALLOC # endif #endif /* The __attribute__ feature is available in gcc versions 2.5 and later. The attribute __pure__ was added in gcc 2.96. */ #ifndef _GL_ATTRIBUTE_PURE # if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) || defined __clang__ # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else # define _GL_ATTRIBUTE_PURE /* empty */ # endif #endif /* The definition of _Noreturn is copied here. */ /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Some systems do not define EXIT_*, despite otherwise supporting C89. */ #ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 #endif /* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere with proper operation of xargs. */ #ifndef EXIT_FAILURE # define EXIT_FAILURE 1 #elif EXIT_FAILURE != 1 # undef EXIT_FAILURE # define EXIT_FAILURE 1 #endif #if @GNULIB__EXIT@ /* Terminate the current process with the given return code, without running the 'atexit' handlers. */ # if @REPLACE__EXIT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef _Exit # define _Exit rpl__Exit # endif _GL_FUNCDECL_RPL (_Exit, _Noreturn void, (int status)); _GL_CXXALIAS_RPL (_Exit, void, (int status)); # else # if !@HAVE__EXIT@ _GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status)); # endif _GL_CXXALIAS_SYS (_Exit, void, (int status)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (_Exit); # endif #elif defined GNULIB_POSIXCHECK # undef _Exit # if HAVE_RAW_DECL__EXIT _GL_WARN_ON_USE (_Exit, "_Exit is unportable - " "use gnulib module _Exit for portability"); # endif #endif #if @GNULIB_FREE_POSIX@ # if @REPLACE_FREE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef free # define free rpl_free # endif # if defined __cplusplus && (__GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2) _GL_FUNCDECL_RPL (free, void, (void *ptr) throw ()); # else _GL_FUNCDECL_RPL (free, void, (void *ptr)); # endif _GL_CXXALIAS_RPL (free, void, (void *ptr)); # else _GL_CXXALIAS_SYS (free, void, (void *ptr)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (free); # endif #elif defined GNULIB_POSIXCHECK # undef free /* Assume free is always declared. */ _GL_WARN_ON_USE (free, "free is not future POSIX compliant everywhere - " "use gnulib module free for portability"); #endif /* Allocate memory with indefinite extent and specified alignment. */ #if @GNULIB_ALIGNED_ALLOC@ # if @REPLACE_ALIGNED_ALLOC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef aligned_alloc # define aligned_alloc rpl_aligned_alloc # endif _GL_FUNCDECL_RPL (aligned_alloc, void *, (size_t alignment, size_t size) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); _GL_CXXALIAS_RPL (aligned_alloc, void *, (size_t alignment, size_t size)); # else # if @HAVE_ALIGNED_ALLOC@ # if __GNUC__ >= 11 /* For -Wmismatched-dealloc: Associate aligned_alloc with free or rpl_free. */ _GL_FUNCDECL_SYS (aligned_alloc, void *, (size_t alignment, size_t size) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif _GL_CXXALIAS_SYS (aligned_alloc, void *, (size_t alignment, size_t size)); # endif # endif # if (__GLIBC__ >= 2) && @HAVE_ALIGNED_ALLOC@ _GL_CXXALIASWARN (aligned_alloc); # endif #else # if @GNULIB_FREE_POSIX@ && __GNUC__ >= 11 && !defined aligned_alloc /* For -Wmismatched-dealloc: Associate aligned_alloc with free or rpl_free. */ _GL_FUNCDECL_SYS (aligned_alloc, void *, (size_t alignment, size_t size) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif # if defined GNULIB_POSIXCHECK # undef aligned_alloc # if HAVE_RAW_DECL_ALIGNED_ALLOC _GL_WARN_ON_USE (aligned_alloc, "aligned_alloc is not portable - " "use gnulib module aligned_alloc for portability"); # endif # endif #endif #if @GNULIB_ATOLL@ /* Parse a signed decimal integer. Returns the value of the integer. Errors are not detected. */ # if !@HAVE_ATOLL@ _GL_FUNCDECL_SYS (atoll, long long, (const char *string) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (atoll, long long, (const char *string)); _GL_CXXALIASWARN (atoll); #elif defined GNULIB_POSIXCHECK # undef atoll # if HAVE_RAW_DECL_ATOLL _GL_WARN_ON_USE (atoll, "atoll is unportable - " "use gnulib module atoll for portability"); # endif #endif #if @GNULIB_CALLOC_POSIX@ # if (@GNULIB_CALLOC_POSIX@ && @REPLACE_CALLOC_FOR_CALLOC_POSIX@) \ || (@GNULIB_CALLOC_GNU@ && @REPLACE_CALLOC_FOR_CALLOC_GNU@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef calloc # define calloc rpl_calloc # endif _GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); _GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size)); # else # if __GNUC__ >= 11 /* For -Wmismatched-dealloc: Associate calloc with free or rpl_free. */ _GL_FUNCDECL_SYS (calloc, void *, (size_t nmemb, size_t size) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif _GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (calloc); # endif #else # if @GNULIB_FREE_POSIX@ && __GNUC__ >= 11 && !defined calloc /* For -Wmismatched-dealloc: Associate calloc with free or rpl_free. */ _GL_FUNCDECL_SYS (calloc, void *, (size_t nmemb, size_t size) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif # if defined GNULIB_POSIXCHECK # undef calloc /* Assume calloc is always declared. */ _GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - " "use gnulib module calloc-posix for portability"); # endif #endif #if @GNULIB_CANONICALIZE_FILE_NAME@ # if @REPLACE_CANONICALIZE_FILE_NAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define canonicalize_file_name rpl_canonicalize_file_name # endif _GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name) _GL_ARG_NONNULL ((1)) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); _GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name)); # else # if !@HAVE_CANONICALIZE_FILE_NAME@ || __GNUC__ >= 11 _GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name) _GL_ARG_NONNULL ((1)) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif _GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name)); # endif # ifndef GNULIB_defined_canonicalize_file_name # define GNULIB_defined_canonicalize_file_name \ (!@HAVE_CANONICALIZE_FILE_NAME@ || @REPLACE_CANONICALIZE_FILE_NAME@) # endif _GL_CXXALIASWARN (canonicalize_file_name); #else # if @GNULIB_FREE_POSIX@ && __GNUC__ >= 11 && !defined canonicalize_file_name /* For -Wmismatched-dealloc: Associate canonicalize_file_name with free or rpl_free. */ _GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name) _GL_ARG_NONNULL ((1)) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif # if defined GNULIB_POSIXCHECK # undef canonicalize_file_name # if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME _GL_WARN_ON_USE (canonicalize_file_name, "canonicalize_file_name is unportable - " "use gnulib module canonicalize-lgpl for portability"); # endif # endif #endif #if @GNULIB_MDA_ECVT@ /* On native Windows, map 'ecvt' to '_ecvt', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::ecvt on all platforms that have it. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ecvt # define ecvt _ecvt # endif _GL_CXXALIAS_MDA (ecvt, char *, (double number, int ndigits, int *decptp, int *signp)); # else # if @HAVE_DECL_ECVT@ _GL_CXXALIAS_SYS (ecvt, char *, (double number, int ndigits, int *decptp, int *signp)); # endif # endif # if (defined _WIN32 && !defined __CYGWIN__) || @HAVE_DECL_ECVT@ _GL_CXXALIASWARN (ecvt); # endif #endif #if @GNULIB_MDA_FCVT@ /* On native Windows, map 'fcvt' to '_fcvt', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::fcvt on all platforms that have it. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fcvt # define fcvt _fcvt # endif _GL_CXXALIAS_MDA (fcvt, char *, (double number, int ndigits, int *decptp, int *signp)); # else # if @HAVE_DECL_FCVT@ _GL_CXXALIAS_SYS (fcvt, char *, (double number, int ndigits, int *decptp, int *signp)); # endif # endif # if (defined _WIN32 && !defined __CYGWIN__) || @HAVE_DECL_FCVT@ _GL_CXXALIASWARN (fcvt); # endif #endif #if @GNULIB_MDA_GCVT@ /* On native Windows, map 'gcvt' to '_gcvt', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::gcvt on all platforms that have it. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gcvt # define gcvt _gcvt # endif _GL_CXXALIAS_MDA (gcvt, char *, (double number, int ndigits, char *buf)); # else # if @HAVE_DECL_GCVT@ _GL_CXXALIAS_SYS (gcvt, char *, (double number, int ndigits, char *buf)); # endif # endif # if (defined _WIN32 && !defined __CYGWIN__) || @HAVE_DECL_GCVT@ _GL_CXXALIASWARN (gcvt); # endif #endif #if @GNULIB_GETLOADAVG@ /* Store max(NELEM,3) load average numbers in LOADAVG[]. The three numbers are the load average of the last 1 minute, the last 5 minutes, and the last 15 minutes, respectively. LOADAVG is an array of NELEM numbers. */ # if @REPLACE_GETLOADAVG@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getloadavg # define getloadavg rpl_getloadavg # endif _GL_FUNCDECL_RPL (getloadavg, int, (double loadavg[], int nelem) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (getloadavg, int, (double loadavg[], int nelem)); # else # if !@HAVE_DECL_GETLOADAVG@ _GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (getloadavg); # endif #elif defined GNULIB_POSIXCHECK # undef getloadavg # if HAVE_RAW_DECL_GETLOADAVG _GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - " "use gnulib module getloadavg for portability"); # endif #endif #if @GNULIB_GETPROGNAME@ /* Return the base name of the executing program. On native Windows this will usually end in ".exe" or ".EXE". */ # if @REPLACE_GETPROGNAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getprogname # define getprogname rpl_getprogname # endif # ifdef HAVE_DECL_PROGRAM_INVOCATION_NAME _GL_FUNCDECL_RPL (getprogname, const char *, (void) _GL_ATTRIBUTE_PURE); # else _GL_FUNCDECL_RPL (getprogname, const char *, (void)); # endif _GL_CXXALIAS_RPL (getprogname, const char *, (void)); # else # if !@HAVE_GETPROGNAME@ # ifdef HAVE_DECL_PROGRAM_INVOCATION_NAME _GL_FUNCDECL_SYS (getprogname, const char *, (void) _GL_ATTRIBUTE_PURE); # else _GL_FUNCDECL_SYS (getprogname, const char *, (void)); # endif # endif _GL_CXXALIAS_SYS (getprogname, const char *, (void)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (getprogname); # endif #elif defined GNULIB_POSIXCHECK # undef getprogname # if HAVE_RAW_DECL_GETPROGNAME _GL_WARN_ON_USE (getprogname, "getprogname is unportable - " "use gnulib module getprogname for portability"); # endif #endif #if @GNULIB_GETSUBOPT@ /* Assuming *OPTIONP is a comma separated list of elements of the form "token" or "token=value", getsubopt parses the first of these elements. If the first element refers to a "token" that is member of the given NULL-terminated array of tokens: - It replaces the comma with a NUL byte, updates *OPTIONP to point past the first option and the comma, sets *VALUEP to the value of the element (or NULL if it doesn't contain an "=" sign), - It returns the index of the "token" in the given array of tokens. Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined. For more details see the POSIX specification. https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsubopt.html */ # if @REPLACE_GETSUBOPT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getsubopt # define getsubopt rpl_getsubopt # endif _GL_FUNCDECL_RPL (getsubopt, int, (char **optionp, char *const *tokens, char **valuep) _GL_ARG_NONNULL ((1, 2, 3))); _GL_CXXALIAS_RPL (getsubopt, int, (char **optionp, char *const *tokens, char **valuep)); # else # if !@HAVE_GETSUBOPT@ _GL_FUNCDECL_SYS (getsubopt, int, (char **optionp, char *const *tokens, char **valuep) _GL_ARG_NONNULL ((1, 2, 3))); # endif _GL_CXXALIAS_SYS (getsubopt, int, (char **optionp, char *const *tokens, char **valuep)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (getsubopt); # endif #elif defined GNULIB_POSIXCHECK # undef getsubopt # if HAVE_RAW_DECL_GETSUBOPT _GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - " "use gnulib module getsubopt for portability"); # endif #endif #if @GNULIB_GRANTPT@ /* Change the ownership and access permission of the slave side of the pseudo-terminal whose master side is specified by FD. */ # if !@HAVE_GRANTPT@ _GL_FUNCDECL_SYS (grantpt, int, (int fd)); # endif _GL_CXXALIAS_SYS (grantpt, int, (int fd)); _GL_CXXALIASWARN (grantpt); #elif defined GNULIB_POSIXCHECK # undef grantpt # if HAVE_RAW_DECL_GRANTPT _GL_WARN_ON_USE (grantpt, "grantpt is not portable - " "use gnulib module grantpt for portability"); # endif #endif /* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not rely on GNU or POSIX semantics for malloc and realloc (for example, by never specifying a zero size), so it does not need malloc or realloc to be redefined. */ #if @GNULIB_MALLOC_POSIX@ # if (@GNULIB_MALLOC_POSIX@ && @REPLACE_MALLOC_FOR_MALLOC_POSIX@) \ || (@GNULIB_MALLOC_GNU@ && @REPLACE_MALLOC_FOR_MALLOC_GNU@) # if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ || _GL_USE_STDLIB_ALLOC) # undef malloc # define malloc rpl_malloc # endif _GL_FUNCDECL_RPL (malloc, void *, (size_t size) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); _GL_CXXALIAS_RPL (malloc, void *, (size_t size)); # else # if __GNUC__ >= 11 /* For -Wmismatched-dealloc: Associate malloc with free or rpl_free. */ _GL_FUNCDECL_SYS (malloc, void *, (size_t size) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif _GL_CXXALIAS_SYS (malloc, void *, (size_t size)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (malloc); # endif #else # if @GNULIB_FREE_POSIX@ && __GNUC__ >= 11 && !defined malloc /* For -Wmismatched-dealloc: Associate malloc with free or rpl_free. */ _GL_FUNCDECL_SYS (malloc, void *, (size_t size) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif # if defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC # undef malloc /* Assume malloc is always declared. */ _GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - " "use gnulib module malloc-posix for portability"); # endif #endif /* Convert a multibyte character to a wide character. */ #if @GNULIB_MBTOWC@ # if @REPLACE_MBTOWC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mbtowc # define mbtowc rpl_mbtowc # endif _GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *restrict pwc, const char *restrict s, size_t n)); _GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *restrict pwc, const char *restrict s, size_t n)); # else # if !@HAVE_MBTOWC@ _GL_FUNCDECL_SYS (mbtowc, int, (wchar_t *restrict pwc, const char *restrict s, size_t n)); # endif _GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *restrict pwc, const char *restrict s, size_t n)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (mbtowc); # endif #elif defined GNULIB_POSIXCHECK # undef mbtowc # if HAVE_RAW_DECL_MBTOWC _GL_WARN_ON_USE (mbtowc, "mbtowc is not portable - " "use gnulib module mbtowc for portability"); # endif #endif #if @GNULIB_MKDTEMP@ /* Create a unique temporary directory from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the directory name unique. Returns TEMPLATE, or a null pointer if it cannot get a unique name. The directory is created mode 700. */ # if !@HAVE_MKDTEMP@ _GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/)); _GL_CXXALIASWARN (mkdtemp); #elif defined GNULIB_POSIXCHECK # undef mkdtemp # if HAVE_RAW_DECL_MKDTEMP _GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - " "use gnulib module mkdtemp for portability"); # endif #endif #if @GNULIB_MKOSTEMP@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the file name unique. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). The file is then created, with the specified flags, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if @REPLACE_MKOSTEMP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mkostemp # define mkostemp rpl_mkostemp # endif _GL_FUNCDECL_RPL (mkostemp, int, (char * /*template*/, int /*flags*/) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mkostemp, int, (char * /*template*/, int /*flags*/)); # else # if !@HAVE_MKOSTEMP@ _GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (mkostemp); # endif #elif defined GNULIB_POSIXCHECK # undef mkostemp # if HAVE_RAW_DECL_MKOSTEMP _GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - " "use gnulib module mkostemp for portability"); # endif #endif #if @GNULIB_MKOSTEMPS@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE before a suffix of length SUFFIXLEN must be "XXXXXX"; they are replaced with a string that makes the file name unique. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). The file is then created, with the specified flags, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if @REPLACE_MKOSTEMPS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mkostemps # define mkostemps rpl_mkostemps # endif _GL_FUNCDECL_RPL (mkostemps, int, (char * /*template*/, int /*suffixlen*/, int /*flags*/) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mkostemps, int, (char * /*template*/, int /*suffixlen*/, int /*flags*/)); # else # if !@HAVE_MKOSTEMPS@ _GL_FUNCDECL_SYS (mkostemps, int, (char * /*template*/, int /*suffixlen*/, int /*flags*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkostemps, int, (char * /*template*/, int /*suffixlen*/, int /*flags*/)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (mkostemps); # endif #elif defined GNULIB_POSIXCHECK # undef mkostemps # if HAVE_RAW_DECL_MKOSTEMPS _GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - " "use gnulib module mkostemps for portability"); # endif #endif #if @GNULIB_MKSTEMP@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the file name unique. The file is then created, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if @REPLACE_MKSTEMP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mkstemp rpl_mkstemp # endif _GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/)); # else # if ! @HAVE_MKSTEMP@ _GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/)); # endif _GL_CXXALIASWARN (mkstemp); #elif defined GNULIB_POSIXCHECK # undef mkstemp # if HAVE_RAW_DECL_MKSTEMP _GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - " "use gnulib module mkstemp for portability"); # endif #endif #if @GNULIB_MKSTEMPS@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE prior to a suffix of length SUFFIXLEN must be "XXXXXX"; they are replaced with a string that makes the file name unique. The file is then created, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if !@HAVE_MKSTEMPS@ _GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)); _GL_CXXALIASWARN (mkstemps); #elif defined GNULIB_POSIXCHECK # undef mkstemps # if HAVE_RAW_DECL_MKSTEMPS _GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - " "use gnulib module mkstemps for portability"); # endif #endif #if @GNULIB_MDA_MKTEMP@ /* On native Windows, map 'mktemp' to '_mktemp', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::mktemp always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mktemp # define mktemp _mktemp # endif _GL_CXXALIAS_MDA (mktemp, char *, (char * /*template*/)); # else _GL_CXXALIAS_SYS (mktemp, char *, (char * /*template*/)); # endif _GL_CXXALIASWARN (mktemp); #endif /* Allocate memory with indefinite extent and specified alignment. */ #if @GNULIB_POSIX_MEMALIGN@ # if @REPLACE_POSIX_MEMALIGN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef posix_memalign # define posix_memalign rpl_posix_memalign # endif _GL_FUNCDECL_RPL (posix_memalign, int, (void **memptr, size_t alignment, size_t size) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (posix_memalign, int, (void **memptr, size_t alignment, size_t size)); # else # if @HAVE_POSIX_MEMALIGN@ _GL_CXXALIAS_SYS (posix_memalign, int, (void **memptr, size_t alignment, size_t size)); # endif # endif # if __GLIBC__ >= 2 && @HAVE_POSIX_MEMALIGN@ _GL_CXXALIASWARN (posix_memalign); # endif #elif defined GNULIB_POSIXCHECK # undef posix_memalign # if HAVE_RAW_DECL_POSIX_MEMALIGN _GL_WARN_ON_USE (posix_memalign, "posix_memalign is not portable - " "use gnulib module posix_memalign for portability"); # endif #endif #if @GNULIB_POSIX_OPENPT@ /* Return an FD open to the master side of a pseudo-terminal. Flags should include O_RDWR, and may also include O_NOCTTY. */ # if @REPLACE_POSIX_OPENPT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef posix_openpt # define posix_openpt rpl_posix_openpt # endif _GL_FUNCDECL_RPL (posix_openpt, int, (int flags)); _GL_CXXALIAS_RPL (posix_openpt, int, (int flags)); # else # if !@HAVE_POSIX_OPENPT@ _GL_FUNCDECL_SYS (posix_openpt, int, (int flags)); # endif _GL_CXXALIAS_SYS (posix_openpt, int, (int flags)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (posix_openpt); # endif #elif defined GNULIB_POSIXCHECK # undef posix_openpt # if HAVE_RAW_DECL_POSIX_OPENPT _GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - " "use gnulib module posix_openpt for portability"); # endif #endif #if @GNULIB_PTSNAME@ /* Return the pathname of the pseudo-terminal slave associated with the master FD is open on, or NULL on errors. */ # if @REPLACE_PTSNAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ptsname # define ptsname rpl_ptsname # endif _GL_FUNCDECL_RPL (ptsname, char *, (int fd)); _GL_CXXALIAS_RPL (ptsname, char *, (int fd)); # else # if !@HAVE_PTSNAME@ _GL_FUNCDECL_SYS (ptsname, char *, (int fd)); # endif _GL_CXXALIAS_SYS (ptsname, char *, (int fd)); # endif _GL_CXXALIASWARN (ptsname); #elif defined GNULIB_POSIXCHECK # undef ptsname # if HAVE_RAW_DECL_PTSNAME _GL_WARN_ON_USE (ptsname, "ptsname is not portable - " "use gnulib module ptsname for portability"); # endif #endif #if @GNULIB_PTSNAME_R@ /* Set the pathname of the pseudo-terminal slave associated with the master FD is open on and return 0, or set errno and return non-zero on errors. */ # if @REPLACE_PTSNAME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ptsname_r # define ptsname_r rpl_ptsname_r # endif _GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); _GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); # else # if !@HAVE_PTSNAME_R@ _GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); # endif _GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); # endif # ifndef GNULIB_defined_ptsname_r # define GNULIB_defined_ptsname_r (!@HAVE_PTSNAME_R@ || @REPLACE_PTSNAME_R@) # endif _GL_CXXALIASWARN (ptsname_r); #elif defined GNULIB_POSIXCHECK # undef ptsname_r # if HAVE_RAW_DECL_PTSNAME_R _GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - " "use gnulib module ptsname_r for portability"); # endif #endif #if @GNULIB_PUTENV@ # if @REPLACE_PUTENV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putenv # define putenv rpl_putenv # endif _GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (putenv, int, (char *string)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putenv # define putenv _putenv # endif _GL_CXXALIAS_MDA (putenv, int, (char *string)); # else _GL_CXXALIAS_SYS (putenv, int, (char *string)); # endif _GL_CXXALIASWARN (putenv); #elif @GNULIB_MDA_PUTENV@ /* On native Windows, map 'putenv' to '_putenv', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::putenv always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putenv # define putenv _putenv # endif /* Need to cast, because on mingw, the parameter is either 'const char *string' or 'char *string'. */ _GL_CXXALIAS_MDA_CAST (putenv, int, (char *string)); # else _GL_CXXALIAS_SYS (putenv, int, (char *string)); # endif _GL_CXXALIASWARN (putenv); #endif #if @GNULIB_QSORT_R@ /* Sort an array of NMEMB elements, starting at address BASE, each element occupying SIZE bytes, in ascending order according to the comparison function COMPARE. */ # ifdef __cplusplus extern "C" { # endif # if !GNULIB_defined_qsort_r_fn_types typedef int (*_gl_qsort_r_compar_fn) (void const *, void const *, void *); # define GNULIB_defined_qsort_r_fn_types 1 # endif # ifdef __cplusplus } # endif # if @REPLACE_QSORT_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef qsort_r # define qsort_r rpl_qsort_r # endif _GL_FUNCDECL_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size, _gl_qsort_r_compar_fn compare, void *arg) _GL_ARG_NONNULL ((1, 4))); _GL_CXXALIAS_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size, _gl_qsort_r_compar_fn compare, void *arg)); # else # if !@HAVE_QSORT_R@ _GL_FUNCDECL_SYS (qsort_r, void, (void *base, size_t nmemb, size_t size, _gl_qsort_r_compar_fn compare, void *arg) _GL_ARG_NONNULL ((1, 4))); # endif _GL_CXXALIAS_SYS (qsort_r, void, (void *base, size_t nmemb, size_t size, _gl_qsort_r_compar_fn compare, void *arg)); # endif _GL_CXXALIASWARN (qsort_r); #elif defined GNULIB_POSIXCHECK # undef qsort_r # if HAVE_RAW_DECL_QSORT_R _GL_WARN_ON_USE (qsort_r, "qsort_r is not portable - " "use gnulib module qsort_r for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if !@HAVE_RANDOM_R@ # ifndef RAND_MAX # define RAND_MAX 2147483647 # endif # endif #endif #if @GNULIB_RANDOM@ # if @REPLACE_RANDOM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef random # define random rpl_random # endif _GL_FUNCDECL_RPL (random, long, (void)); _GL_CXXALIAS_RPL (random, long, (void)); # else # if !@HAVE_RANDOM@ _GL_FUNCDECL_SYS (random, long, (void)); # endif /* Need to cast, because on Haiku, the return type is int. */ _GL_CXXALIAS_SYS_CAST (random, long, (void)); # endif _GL_CXXALIASWARN (random); #elif defined GNULIB_POSIXCHECK # undef random # if HAVE_RAW_DECL_RANDOM _GL_WARN_ON_USE (random, "random is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM@ # if @REPLACE_RANDOM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef srandom # define srandom rpl_srandom # endif _GL_FUNCDECL_RPL (srandom, void, (unsigned int seed)); _GL_CXXALIAS_RPL (srandom, void, (unsigned int seed)); # else # if !@HAVE_RANDOM@ _GL_FUNCDECL_SYS (srandom, void, (unsigned int seed)); # endif /* Need to cast, because on FreeBSD, the first parameter is unsigned long seed. */ _GL_CXXALIAS_SYS_CAST (srandom, void, (unsigned int seed)); # endif _GL_CXXALIASWARN (srandom); #elif defined GNULIB_POSIXCHECK # undef srandom # if HAVE_RAW_DECL_SRANDOM _GL_WARN_ON_USE (srandom, "srandom is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM@ # if @REPLACE_INITSTATE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef initstate # define initstate rpl_initstate # endif _GL_FUNCDECL_RPL (initstate, char *, (unsigned int seed, char *buf, size_t buf_size) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (initstate, char *, (unsigned int seed, char *buf, size_t buf_size)); # else # if !@HAVE_INITSTATE@ || !@HAVE_DECL_INITSTATE@ _GL_FUNCDECL_SYS (initstate, char *, (unsigned int seed, char *buf, size_t buf_size) _GL_ARG_NONNULL ((2))); # endif /* Need to cast, because on FreeBSD, the first parameter is unsigned long seed. */ _GL_CXXALIAS_SYS_CAST (initstate, char *, (unsigned int seed, char *buf, size_t buf_size)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (initstate); # endif #elif defined GNULIB_POSIXCHECK # undef initstate # if HAVE_RAW_DECL_INITSTATE _GL_WARN_ON_USE (initstate, "initstate is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM@ # if @REPLACE_SETSTATE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef setstate # define setstate rpl_setstate # endif _GL_FUNCDECL_RPL (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (setstate, char *, (char *arg_state)); # else # if !@HAVE_SETSTATE@ || !@HAVE_DECL_SETSTATE@ _GL_FUNCDECL_SYS (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on Mac OS X 10.13, HP-UX, Solaris the first parameter is const char *arg_state. */ _GL_CXXALIAS_SYS_CAST (setstate, char *, (char *arg_state)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (setstate); # endif #elif defined GNULIB_POSIXCHECK # undef setstate # if HAVE_RAW_DECL_SETSTATE _GL_WARN_ON_USE (setstate, "setstate is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef random_r # define random_r rpl_random_r # endif _GL_FUNCDECL_RPL (random_r, int, (struct random_data *buf, int32_t *result) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (random_r, int, (struct random_data *buf, int32_t *result)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result)); # endif _GL_CXXALIASWARN (random_r); #elif defined GNULIB_POSIXCHECK # undef random_r # if HAVE_RAW_DECL_RANDOM_R _GL_WARN_ON_USE (random_r, "random_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef srandom_r # define srandom_r rpl_srandom_r # endif _GL_FUNCDECL_RPL (srandom_r, int, (unsigned int seed, struct random_data *rand_state) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (srandom_r, int, (unsigned int seed, struct random_data *rand_state)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (srandom_r, int, (unsigned int seed, struct random_data *rand_state) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (srandom_r, int, (unsigned int seed, struct random_data *rand_state)); # endif _GL_CXXALIASWARN (srandom_r); #elif defined GNULIB_POSIXCHECK # undef srandom_r # if HAVE_RAW_DECL_SRANDOM_R _GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef initstate_r # define initstate_r rpl_initstate_r # endif _GL_FUNCDECL_RPL (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state) _GL_ARG_NONNULL ((2, 4))); _GL_CXXALIAS_RPL (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state) _GL_ARG_NONNULL ((2, 4))); # endif /* Need to cast, because on Haiku, the third parameter is unsigned long buf_size. */ _GL_CXXALIAS_SYS_CAST (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state)); # endif _GL_CXXALIASWARN (initstate_r); #elif defined GNULIB_POSIXCHECK # undef initstate_r # if HAVE_RAW_DECL_INITSTATE_R _GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef setstate_r # define setstate_r rpl_setstate_r # endif _GL_FUNCDECL_RPL (setstate_r, int, (char *arg_state, struct random_data *rand_state) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (setstate_r, int, (char *arg_state, struct random_data *rand_state)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (setstate_r, int, (char *arg_state, struct random_data *rand_state) _GL_ARG_NONNULL ((1, 2))); # endif /* Need to cast, because on Haiku, the first parameter is void *arg_state. */ _GL_CXXALIAS_SYS_CAST (setstate_r, int, (char *arg_state, struct random_data *rand_state)); # endif _GL_CXXALIASWARN (setstate_r); #elif defined GNULIB_POSIXCHECK # undef setstate_r # if HAVE_RAW_DECL_SETSTATE_R _GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_REALLOC_POSIX@ # if (@GNULIB_REALLOC_POSIX@ && @REPLACE_REALLOC_FOR_REALLOC_POSIX@) \ || (@GNULIB_REALLOC_GNU@ && @REPLACE_REALLOC_FOR_REALLOC_GNU@) # if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ || _GL_USE_STDLIB_ALLOC) # undef realloc # define realloc rpl_realloc # endif _GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size) _GL_ATTRIBUTE_DEALLOC_FREE); _GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size)); # else # if __GNUC__ >= 11 /* For -Wmismatched-dealloc: Associate realloc with free or rpl_free. */ _GL_FUNCDECL_SYS (realloc, void *, (void *ptr, size_t size) _GL_ATTRIBUTE_DEALLOC_FREE); # endif _GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (realloc); # endif #else # if @GNULIB_FREE_POSIX@ && __GNUC__ >= 11 && !defined realloc /* For -Wmismatched-dealloc: Associate realloc with free or rpl_free. */ _GL_FUNCDECL_SYS (realloc, void *, (void *ptr, size_t size) _GL_ATTRIBUTE_DEALLOC_FREE); # endif # if defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC # undef realloc /* Assume realloc is always declared. */ _GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - " "use gnulib module realloc-posix for portability"); # endif #endif #if @GNULIB_REALLOCARRAY@ # if @REPLACE_REALLOCARRAY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef reallocarray # define reallocarray rpl_reallocarray # endif _GL_FUNCDECL_RPL (reallocarray, void *, (void *ptr, size_t nmemb, size_t size)); _GL_CXXALIAS_RPL (reallocarray, void *, (void *ptr, size_t nmemb, size_t size)); # else # if ! @HAVE_REALLOCARRAY@ _GL_FUNCDECL_SYS (reallocarray, void *, (void *ptr, size_t nmemb, size_t size)); # endif _GL_CXXALIAS_SYS (reallocarray, void *, (void *ptr, size_t nmemb, size_t size)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (reallocarray); # endif #elif defined GNULIB_POSIXCHECK # undef reallocarray # if HAVE_RAW_DECL_REALLOCARRAY _GL_WARN_ON_USE (reallocarray, "reallocarray is not portable - " "use gnulib module reallocarray for portability"); # endif #endif #if @GNULIB_REALPATH@ # if @REPLACE_REALPATH@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define realpath rpl_realpath # endif _GL_FUNCDECL_RPL (realpath, char *, (const char *restrict name, char *restrict resolved) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (realpath, char *, (const char *restrict name, char *restrict resolved)); # else # if !@HAVE_REALPATH@ _GL_FUNCDECL_SYS (realpath, char *, (const char *restrict name, char *restrict resolved) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (realpath, char *, (const char *restrict name, char *restrict resolved)); # endif _GL_CXXALIASWARN (realpath); #elif defined GNULIB_POSIXCHECK # undef realpath # if HAVE_RAW_DECL_REALPATH _GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module " "canonicalize or canonicalize-lgpl for portability"); # endif #endif #if @GNULIB_RPMATCH@ /* Test a user response to a question. Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear. */ # if !@HAVE_RPMATCH@ _GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (rpmatch, int, (const char *response)); _GL_CXXALIASWARN (rpmatch); #elif defined GNULIB_POSIXCHECK # undef rpmatch # if HAVE_RAW_DECL_RPMATCH _GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - " "use gnulib module rpmatch for portability"); # endif #endif #if @GNULIB_SECURE_GETENV@ /* Look up NAME in the environment, returning 0 in insecure situations. */ # if !@HAVE_SECURE_GETENV@ _GL_FUNCDECL_SYS (secure_getenv, char *, (char const *name) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (secure_getenv, char *, (char const *name)); _GL_CXXALIASWARN (secure_getenv); #elif defined GNULIB_POSIXCHECK # undef secure_getenv # if HAVE_RAW_DECL_SECURE_GETENV _GL_WARN_ON_USE (secure_getenv, "secure_getenv is unportable - " "use gnulib module secure_getenv for portability"); # endif #endif #if @GNULIB_SETENV@ /* Set NAME to VALUE in the environment. If REPLACE is nonzero, overwrite an existing value. */ # if @REPLACE_SETENV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef setenv # define setenv rpl_setenv # endif _GL_FUNCDECL_RPL (setenv, int, (const char *name, const char *value, int replace) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (setenv, int, (const char *name, const char *value, int replace)); # else # if !@HAVE_DECL_SETENV@ _GL_FUNCDECL_SYS (setenv, int, (const char *name, const char *value, int replace) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (setenv, int, (const char *name, const char *value, int replace)); # endif # if !(@REPLACE_SETENV@ && !@HAVE_DECL_SETENV@) _GL_CXXALIASWARN (setenv); # endif #elif defined GNULIB_POSIXCHECK # undef setenv # if HAVE_RAW_DECL_SETENV _GL_WARN_ON_USE (setenv, "setenv is unportable - " "use gnulib module setenv for portability"); # endif #endif #if @GNULIB_STRTOD@ /* Parse a double from STRING, updating ENDP if appropriate. */ # if @REPLACE_STRTOD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strtod rpl_strtod # endif # define GNULIB_defined_strtod_function 1 _GL_FUNCDECL_RPL (strtod, double, (const char *restrict str, char **restrict endp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strtod, double, (const char *restrict str, char **restrict endp)); # else # if !@HAVE_STRTOD@ _GL_FUNCDECL_SYS (strtod, double, (const char *restrict str, char **restrict endp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtod, double, (const char *restrict str, char **restrict endp)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (strtod); # endif #elif defined GNULIB_POSIXCHECK # undef strtod # if HAVE_RAW_DECL_STRTOD _GL_WARN_ON_USE (strtod, "strtod is unportable - " "use gnulib module strtod for portability"); # endif #endif #if @GNULIB_STRTOLD@ /* Parse a 'long double' from STRING, updating ENDP if appropriate. */ # if @REPLACE_STRTOLD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strtold rpl_strtold # endif # define GNULIB_defined_strtold_function 1 _GL_FUNCDECL_RPL (strtold, long double, (const char *restrict str, char **restrict endp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strtold, long double, (const char *restrict str, char **restrict endp)); # else # if !@HAVE_STRTOLD@ _GL_FUNCDECL_SYS (strtold, long double, (const char *restrict str, char **restrict endp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtold, long double, (const char *restrict str, char **restrict endp)); # endif _GL_CXXALIASWARN (strtold); #elif defined GNULIB_POSIXCHECK # undef strtold # if HAVE_RAW_DECL_STRTOLD _GL_WARN_ON_USE (strtold, "strtold is unportable - " "use gnulib module strtold for portability"); # endif #endif #if @GNULIB_STRTOL@ /* Parse a signed integer whose textual representation starts at STRING. The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, it may be decimal or octal (with prefix "0") or hexadecimal (with prefix "0x"). If ENDPTR is not NULL, the address of the first byte after the integer is stored in *ENDPTR. Upon overflow, the return value is LONG_MAX or LONG_MIN, and errno is set to ERANGE. */ # if @REPLACE_STRTOL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strtol rpl_strtol # endif # define GNULIB_defined_strtol_function 1 _GL_FUNCDECL_RPL (strtol, long, (const char *restrict string, char **restrict endptr, int base) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strtol, long, (const char *restrict string, char **restrict endptr, int base)); # else # if !@HAVE_STRTOL@ _GL_FUNCDECL_SYS (strtol, long, (const char *restrict string, char **restrict endptr, int base) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtol, long, (const char *restrict string, char **restrict endptr, int base)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (strtol); # endif #elif defined GNULIB_POSIXCHECK # undef strtol # if HAVE_RAW_DECL_STRTOL _GL_WARN_ON_USE (strtol, "strtol is unportable - " "use gnulib module strtol for portability"); # endif #endif #if @GNULIB_STRTOLL@ /* Parse a signed integer whose textual representation starts at STRING. The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, it may be decimal or octal (with prefix "0") or hexadecimal (with prefix "0x"). If ENDPTR is not NULL, the address of the first byte after the integer is stored in *ENDPTR. Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set to ERANGE. */ # if @REPLACE_STRTOLL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strtoll rpl_strtoll # endif # define GNULIB_defined_strtoll_function 1 _GL_FUNCDECL_RPL (strtoll, long long, (const char *restrict string, char **restrict endptr, int base) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strtoll, long long, (const char *restrict string, char **restrict endptr, int base)); # else # if !@HAVE_STRTOLL@ _GL_FUNCDECL_SYS (strtoll, long long, (const char *restrict string, char **restrict endptr, int base) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtoll, long long, (const char *restrict string, char **restrict endptr, int base)); # endif _GL_CXXALIASWARN (strtoll); #elif defined GNULIB_POSIXCHECK # undef strtoll # if HAVE_RAW_DECL_STRTOLL _GL_WARN_ON_USE (strtoll, "strtoll is unportable - " "use gnulib module strtoll for portability"); # endif #endif #if @GNULIB_STRTOUL@ /* Parse an unsigned integer whose textual representation starts at STRING. The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, it may be decimal or octal (with prefix "0") or hexadecimal (with prefix "0x"). If ENDPTR is not NULL, the address of the first byte after the integer is stored in *ENDPTR. Upon overflow, the return value is ULONG_MAX, and errno is set to ERANGE. */ # if @REPLACE_STRTOUL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strtoul rpl_strtoul # endif # define GNULIB_defined_strtoul_function 1 _GL_FUNCDECL_RPL (strtoul, unsigned long, (const char *restrict string, char **restrict endptr, int base) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strtoul, unsigned long, (const char *restrict string, char **restrict endptr, int base)); # else # if !@HAVE_STRTOUL@ _GL_FUNCDECL_SYS (strtoul, unsigned long, (const char *restrict string, char **restrict endptr, int base) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtoul, unsigned long, (const char *restrict string, char **restrict endptr, int base)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (strtoul); # endif #elif defined GNULIB_POSIXCHECK # undef strtoul # if HAVE_RAW_DECL_STRTOUL _GL_WARN_ON_USE (strtoul, "strtoul is unportable - " "use gnulib module strtoul for portability"); # endif #endif #if @GNULIB_STRTOULL@ /* Parse an unsigned integer whose textual representation starts at STRING. The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, it may be decimal or octal (with prefix "0") or hexadecimal (with prefix "0x"). If ENDPTR is not NULL, the address of the first byte after the integer is stored in *ENDPTR. Upon overflow, the return value is ULLONG_MAX, and errno is set to ERANGE. */ # if @REPLACE_STRTOULL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strtoull rpl_strtoull # endif # define GNULIB_defined_strtoull_function 1 _GL_FUNCDECL_RPL (strtoull, unsigned long long, (const char *restrict string, char **restrict endptr, int base) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strtoull, unsigned long long, (const char *restrict string, char **restrict endptr, int base)); # else # if !@HAVE_STRTOULL@ _GL_FUNCDECL_SYS (strtoull, unsigned long long, (const char *restrict string, char **restrict endptr, int base) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtoull, unsigned long long, (const char *restrict string, char **restrict endptr, int base)); # endif _GL_CXXALIASWARN (strtoull); #elif defined GNULIB_POSIXCHECK # undef strtoull # if HAVE_RAW_DECL_STRTOULL _GL_WARN_ON_USE (strtoull, "strtoull is unportable - " "use gnulib module strtoull for portability"); # endif #endif #if @GNULIB_UNLOCKPT@ /* Unlock the slave side of the pseudo-terminal whose master side is specified by FD, so that it can be opened. */ # if !@HAVE_UNLOCKPT@ _GL_FUNCDECL_SYS (unlockpt, int, (int fd)); # endif _GL_CXXALIAS_SYS (unlockpt, int, (int fd)); _GL_CXXALIASWARN (unlockpt); #elif defined GNULIB_POSIXCHECK # undef unlockpt # if HAVE_RAW_DECL_UNLOCKPT _GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - " "use gnulib module unlockpt for portability"); # endif #endif #if @GNULIB_UNSETENV@ /* Remove the variable NAME from the environment. */ # if @REPLACE_UNSETENV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef unsetenv # define unsetenv rpl_unsetenv # endif _GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (unsetenv, int, (const char *name)); # else # if !@HAVE_DECL_UNSETENV@ _GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (unsetenv, int, (const char *name)); # endif # if !(@REPLACE_UNSETENV@ && !@HAVE_DECL_UNSETENV@) _GL_CXXALIASWARN (unsetenv); # endif #elif defined GNULIB_POSIXCHECK # undef unsetenv # if HAVE_RAW_DECL_UNSETENV _GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - " "use gnulib module unsetenv for portability"); # endif #endif /* Convert a wide character to a multibyte character. */ #if @GNULIB_WCTOMB@ # if @REPLACE_WCTOMB@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wctomb # define wctomb rpl_wctomb # endif _GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc)); _GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc)); # else _GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wctomb); # endif #endif #endif /* _@GUARD_PREFIX@_STDLIB_H */ #endif /* _@GUARD_PREFIX@_STDLIB_H */ #endif recode-3.7.15/lib/string.in.h0000644000175000017500000014444114371444255011404 /* A GNU-like . Copyright (C) 1995-1996, 2001-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined _GL_ALREADY_INCLUDING_STRING_H /* Special invocation convention: - On OS X/NetBSD we have a sequence of nested includes -> -> "string.h" In this situation system _chk variants due to -D_FORTIFY_SOURCE might be used after any replacements defined here. */ #@INCLUDE_NEXT@ @NEXT_STRING_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_STRING_H #define _GL_ALREADY_INCLUDING_STRING_H /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_STRING_H@ #undef _GL_ALREADY_INCLUDING_STRING_H #ifndef _@GUARD_PREFIX@_STRING_H #define _@GUARD_PREFIX@_STRING_H /* NetBSD 5.0 mis-defines NULL. */ #include /* MirBSD defines mbslen as a macro. */ #if @GNULIB_MBSLEN@ && defined __MirBSD__ # include #endif /* NetBSD 5.0 declares strsignal in , not in . */ /* But in any case avoid namespace pollution on glibc systems. */ #if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \ && ! defined __GLIBC__ # include #endif /* AIX 7.2 and Android 13 declare ffsl and ffsll in , not in . */ /* But in any case avoid namespace pollution on glibc systems. */ #if ((@GNULIB_FFSL@ || @GNULIB_FFSLL@ || defined GNULIB_POSIXCHECK) \ && (defined _AIX || defined __ANDROID__)) \ && ! defined __GLIBC__ # include #endif /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers that can be freed by passing them as the Ith argument to the function F. */ #ifndef _GL_ATTRIBUTE_DEALLOC # if __GNUC__ >= 11 # define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) # else # define _GL_ATTRIBUTE_DEALLOC(f, i) # endif #endif /* _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that can be freed via 'free'; it can be used only after declaring 'free'. */ /* Applies to: functions. Cannot be used on inline functions. */ #ifndef _GL_ATTRIBUTE_DEALLOC_FREE # if defined __cplusplus && defined __GNUC__ && !defined __clang__ /* Work around GCC bug */ # define _GL_ATTRIBUTE_DEALLOC_FREE \ _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1) # else # define _GL_ATTRIBUTE_DEALLOC_FREE \ _GL_ATTRIBUTE_DEALLOC (free, 1) # endif #endif /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly allocated memory. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_MALLOC # if __GNUC__ >= 3 || defined __clang__ # define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) # else # define _GL_ATTRIBUTE_MALLOC # endif #endif /* The __attribute__ feature is available in gcc versions 2.5 and later. The attribute __pure__ was added in gcc 2.96. */ #ifndef _GL_ATTRIBUTE_PURE # if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) || defined __clang__ # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else # define _GL_ATTRIBUTE_PURE /* empty */ # endif #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Make _GL_ATTRIBUTE_DEALLOC_FREE work, even though may not have been included yet. */ #if @GNULIB_FREE_POSIX@ # if (@REPLACE_FREE@ && !defined free \ && !(defined __cplusplus && defined GNULIB_NAMESPACE)) /* We can't do '#define free rpl_free' here. */ # if defined __cplusplus && (__GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2) _GL_EXTERN_C void rpl_free (void *) throw (); # else _GL_EXTERN_C void rpl_free (void *); # endif # undef _GL_ATTRIBUTE_DEALLOC_FREE # define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (rpl_free, 1) # else # if defined _MSC_VER && !defined free _GL_EXTERN_C # if defined _DLL __declspec (dllimport) # endif void __cdecl free (void *); # else # if defined __cplusplus && (__GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2) _GL_EXTERN_C void free (void *) throw (); # else _GL_EXTERN_C void free (void *); # endif # endif # endif #else # if defined _MSC_VER && !defined free _GL_EXTERN_C # if defined _DLL __declspec (dllimport) # endif void __cdecl free (void *); # else # if defined __cplusplus && (__GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2) _GL_EXTERN_C void free (void *) throw (); # else _GL_EXTERN_C void free (void *); # endif # endif #endif /* Clear a block of memory. The compiler will not delete a call to this function, even if the block is dead after the call. */ #if @GNULIB_EXPLICIT_BZERO@ # if ! @HAVE_EXPLICIT_BZERO@ _GL_FUNCDECL_SYS (explicit_bzero, void, (void *__dest, size_t __n) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (explicit_bzero, void, (void *__dest, size_t __n)); _GL_CXXALIASWARN (explicit_bzero); #elif defined GNULIB_POSIXCHECK # undef explicit_bzero # if HAVE_RAW_DECL_EXPLICIT_BZERO _GL_WARN_ON_USE (explicit_bzero, "explicit_bzero is unportable - " "use gnulib module explicit_bzero for portability"); # endif #endif /* Find the index of the least-significant set bit. */ #if @GNULIB_FFSL@ # if !@HAVE_FFSL@ _GL_FUNCDECL_SYS (ffsl, int, (long int i)); # endif _GL_CXXALIAS_SYS (ffsl, int, (long int i)); _GL_CXXALIASWARN (ffsl); #elif defined GNULIB_POSIXCHECK # undef ffsl # if HAVE_RAW_DECL_FFSL _GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module"); # endif #endif /* Find the index of the least-significant set bit. */ #if @GNULIB_FFSLL@ # if @REPLACE_FFSLL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define ffsll rpl_ffsll # endif _GL_FUNCDECL_RPL (ffsll, int, (long long int i)); _GL_CXXALIAS_RPL (ffsll, int, (long long int i)); # else # if !@HAVE_FFSLL@ _GL_FUNCDECL_SYS (ffsll, int, (long long int i)); # endif _GL_CXXALIAS_SYS (ffsll, int, (long long int i)); # endif _GL_CXXALIASWARN (ffsll); #elif defined GNULIB_POSIXCHECK # undef ffsll # if HAVE_RAW_DECL_FFSLL _GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module"); # endif #endif #if @GNULIB_MDA_MEMCCPY@ /* On native Windows, map 'memccpy' to '_memccpy', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::memccpy always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef memccpy # define memccpy _memccpy # endif _GL_CXXALIAS_MDA (memccpy, void *, (void *dest, const void *src, int c, size_t n)); # else _GL_CXXALIAS_SYS (memccpy, void *, (void *dest, const void *src, int c, size_t n)); # endif _GL_CXXALIASWARN (memccpy); #endif /* Return the first instance of C within N bytes of S, or NULL. */ #if @GNULIB_MEMCHR@ # if @REPLACE_MEMCHR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef memchr # define memchr rpl_memchr # endif _GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n)); # else /* On some systems, this function is defined as an overloaded function: extern "C" { const void * std::memchr (const void *, int, size_t); } extern "C++" { void * std::memchr (void *, int, size_t); } */ _GL_CXXALIAS_SYS_CAST2 (memchr, void *, (void const *__s, int __c, size_t __n), void const *, (void const *__s, int __c, size_t __n)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) \ || defined __clang__) _GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n) throw ()); _GL_CXXALIASWARN1 (memchr, void const *, (void const *__s, int __c, size_t __n) throw ()); # elif __GLIBC__ >= 2 _GL_CXXALIASWARN (memchr); # endif #elif defined GNULIB_POSIXCHECK # undef memchr /* Assume memchr is always declared. */ _GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - " "use gnulib module memchr for portability" ); #endif /* Return the first occurrence of NEEDLE in HAYSTACK. */ #if @GNULIB_MEMMEM@ # if @REPLACE_MEMMEM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define memmem rpl_memmem # endif _GL_FUNCDECL_RPL (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 3))); _GL_CXXALIAS_RPL (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len)); # else # if ! @HAVE_DECL_MEMMEM@ _GL_FUNCDECL_SYS (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 3))); # endif _GL_CXXALIAS_SYS (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len)); # endif _GL_CXXALIASWARN (memmem); #elif defined GNULIB_POSIXCHECK # undef memmem # if HAVE_RAW_DECL_MEMMEM _GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - " "use gnulib module memmem-simple for portability, " "and module memmem for speed" ); # endif #endif /* Copy N bytes of SRC to DEST, return pointer to bytes after the last written byte. */ #if @GNULIB_MEMPCPY@ # if @REPLACE_MEMPCPY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mempcpy # define mempcpy rpl_mempcpy # endif _GL_FUNCDECL_RPL (mempcpy, void *, (void *restrict __dest, void const *restrict __src, size_t __n) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (mempcpy, void *, (void *restrict __dest, void const *restrict __src, size_t __n)); # else # if !@HAVE_MEMPCPY@ _GL_FUNCDECL_SYS (mempcpy, void *, (void *restrict __dest, void const *restrict __src, size_t __n) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (mempcpy, void *, (void *restrict __dest, void const *restrict __src, size_t __n)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (mempcpy); # endif #elif defined GNULIB_POSIXCHECK # undef mempcpy # if HAVE_RAW_DECL_MEMPCPY _GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - " "use gnulib module mempcpy for portability"); # endif #endif /* Search backwards through a block for a byte (specified as an int). */ #if @GNULIB_MEMRCHR@ # if ! @HAVE_DECL_MEMRCHR@ _GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const void * std::memrchr (const void *, int, size_t); } extern "C++" { void * std::memrchr (void *, int, size_t); } */ _GL_CXXALIAS_SYS_CAST2 (memrchr, void *, (void const *, int, size_t), void const *, (void const *, int, size_t)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) \ || defined __clang__) _GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t) throw ()); _GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t) throw ()); # elif __GLIBC__ >= 2 _GL_CXXALIASWARN (memrchr); # endif #elif defined GNULIB_POSIXCHECK # undef memrchr # if HAVE_RAW_DECL_MEMRCHR _GL_WARN_ON_USE (memrchr, "memrchr is unportable - " "use gnulib module memrchr for portability"); # endif #endif /* Overwrite a block of memory. The compiler will not optimize effects away, even if the block is dead after the call. */ #if @GNULIB_MEMSET_EXPLICIT@ # if ! @HAVE_MEMSET_EXPLICIT@ _GL_FUNCDECL_SYS (memset_explicit, void *, (void *__dest, int __c, size_t __n) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (memset_explicit, void *, (void *__dest, int __c, size_t __n)); _GL_CXXALIASWARN (memset_explicit); #elif defined GNULIB_POSIXCHECK # undef memset_explicit # if HAVE_RAW_DECL_MEMSET_EXPLICIT _GL_WARN_ON_USE (memset_explicit, "memset_explicit is unportable - " "use gnulib module memset_explicit for portability"); # endif #endif /* Find the first occurrence of C in S. More efficient than memchr(S,C,N), at the expense of undefined behavior if C does not occur within N bytes. */ #if @GNULIB_RAWMEMCHR@ # if ! @HAVE_RAWMEMCHR@ _GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const void * std::rawmemchr (const void *, int); } extern "C++" { void * std::rawmemchr (void *, int); } */ _GL_CXXALIAS_SYS_CAST2 (rawmemchr, void *, (void const *__s, int __c_in), void const *, (void const *__s, int __c_in)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) \ || defined __clang__) _GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in) throw ()); _GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in) throw ()); # else _GL_CXXALIASWARN (rawmemchr); # endif #elif defined GNULIB_POSIXCHECK # undef rawmemchr # if HAVE_RAW_DECL_RAWMEMCHR _GL_WARN_ON_USE (rawmemchr, "rawmemchr is unportable - " "use gnulib module rawmemchr for portability"); # endif #endif /* Copy SRC to DST, returning the address of the terminating '\0' in DST. */ #if @GNULIB_STPCPY@ # if @REPLACE_STPCPY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef stpcpy # define stpcpy rpl_stpcpy # endif _GL_FUNCDECL_RPL (stpcpy, char *, (char *restrict __dst, char const *restrict __src) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (stpcpy, char *, (char *restrict __dst, char const *restrict __src)); # else # if !@HAVE_STPCPY@ _GL_FUNCDECL_SYS (stpcpy, char *, (char *restrict __dst, char const *restrict __src) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (stpcpy, char *, (char *restrict __dst, char const *restrict __src)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (stpcpy); # endif #elif defined GNULIB_POSIXCHECK # undef stpcpy # if HAVE_RAW_DECL_STPCPY _GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - " "use gnulib module stpcpy for portability"); # endif #endif /* Copy no more than N bytes of SRC to DST, returning a pointer past the last non-NUL byte written into DST. */ #if @GNULIB_STPNCPY@ # if @REPLACE_STPNCPY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef stpncpy # define stpncpy rpl_stpncpy # endif _GL_FUNCDECL_RPL (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n)); # else # if ! @HAVE_STPNCPY@ _GL_FUNCDECL_SYS (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (stpncpy); # endif #elif defined GNULIB_POSIXCHECK # undef stpncpy # if HAVE_RAW_DECL_STPNCPY _GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - " "use gnulib module stpncpy for portability"); # endif #endif #if defined GNULIB_POSIXCHECK /* strchr() does not work with multibyte strings if the locale encoding is GB18030 and the character to be searched is a digit. */ # undef strchr /* Assume strchr is always declared. */ _GL_WARN_ON_USE_CXX (strchr, const char *, char *, (const char *, int), "strchr cannot work correctly on character strings " "in some multibyte locales - " "use mbschr if you care about internationalization"); #endif /* Find the first occurrence of C in S or the final NUL byte. */ #if @GNULIB_STRCHRNUL@ # if @REPLACE_STRCHRNUL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strchrnul rpl_strchrnul # endif _GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strchrnul, char *, (const char *str, int ch)); # else # if ! @HAVE_STRCHRNUL@ _GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const char * std::strchrnul (const char *, int); } extern "C++" { char * std::strchrnul (char *, int); } */ _GL_CXXALIAS_SYS_CAST2 (strchrnul, char *, (char const *__s, int __c_in), char const *, (char const *__s, int __c_in)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) \ || defined __clang__) _GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in) throw ()); _GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in) throw ()); # elif __GLIBC__ >= 2 _GL_CXXALIASWARN (strchrnul); # endif #elif defined GNULIB_POSIXCHECK # undef strchrnul # if HAVE_RAW_DECL_STRCHRNUL _GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - " "use gnulib module strchrnul for portability"); # endif #endif /* Duplicate S, returning an identical malloc'd string. */ #if @GNULIB_STRDUP@ # if @REPLACE_STRDUP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strdup # define strdup rpl_strdup # endif _GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); _GL_CXXALIAS_RPL (strdup, char *, (char const *__s)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strdup # define strdup _strdup # endif _GL_CXXALIAS_MDA (strdup, char *, (char const *__s)); # else # if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup /* strdup exists as a function and as a macro. Get rid of the macro. */ # undef strdup # endif # if (!@HAVE_DECL_STRDUP@ || __GNUC__ >= 11) && !defined strdup _GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif _GL_CXXALIAS_SYS (strdup, char *, (char const *__s)); # endif _GL_CXXALIASWARN (strdup); #else # if __GNUC__ >= 11 && !defined strdup /* For -Wmismatched-dealloc: Associate strdup with free or rpl_free. */ _GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif # if defined GNULIB_POSIXCHECK # undef strdup # if HAVE_RAW_DECL_STRDUP _GL_WARN_ON_USE (strdup, "strdup is unportable - " "use gnulib module strdup for portability"); # endif # elif @GNULIB_MDA_STRDUP@ /* On native Windows, map 'creat' to '_creat', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::strdup always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strdup # define strdup _strdup # endif _GL_CXXALIAS_MDA (strdup, char *, (char const *__s)); # else # if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup # undef strdup # endif _GL_CXXALIAS_SYS (strdup, char *, (char const *__s)); # endif _GL_CXXALIASWARN (strdup); # endif #endif /* Append no more than N characters from SRC onto DEST. */ #if @GNULIB_STRNCAT@ # if @REPLACE_STRNCAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strncat # define strncat rpl_strncat # endif _GL_FUNCDECL_RPL (strncat, char *, (char *restrict dest, const char *restrict src, size_t n) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (strncat, char *, (char *restrict dest, const char *restrict src, size_t n)); # else _GL_CXXALIAS_SYS (strncat, char *, (char *restrict dest, const char *restrict src, size_t n)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (strncat); # endif #elif defined GNULIB_POSIXCHECK # undef strncat # if HAVE_RAW_DECL_STRNCAT _GL_WARN_ON_USE (strncat, "strncat is unportable - " "use gnulib module strncat for portability"); # endif #endif /* Return a newly allocated copy of at most N bytes of STRING. */ #if @GNULIB_STRNDUP@ # if @REPLACE_STRNDUP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strndup # define strndup rpl_strndup # endif _GL_FUNCDECL_RPL (strndup, char *, (char const *__s, size_t __n) _GL_ARG_NONNULL ((1)) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); _GL_CXXALIAS_RPL (strndup, char *, (char const *__s, size_t __n)); # else # if !@HAVE_DECL_STRNDUP@ || (__GNUC__ >= 11 && !defined strndup) _GL_FUNCDECL_SYS (strndup, char *, (char const *__s, size_t __n) _GL_ARG_NONNULL ((1)) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif _GL_CXXALIAS_SYS (strndup, char *, (char const *__s, size_t __n)); # endif _GL_CXXALIASWARN (strndup); #else # if __GNUC__ >= 11 && !defined strndup /* For -Wmismatched-dealloc: Associate strndup with free or rpl_free. */ _GL_FUNCDECL_SYS (strndup, char *, (char const *__s, size_t __n) _GL_ARG_NONNULL ((1)) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif # if defined GNULIB_POSIXCHECK # undef strndup # if HAVE_RAW_DECL_STRNDUP _GL_WARN_ON_USE (strndup, "strndup is unportable - " "use gnulib module strndup for portability"); # endif # endif #endif /* Find the length (number of bytes) of STRING, but scan at most MAXLEN bytes. If no '\0' terminator is found in that many bytes, return MAXLEN. */ #if @GNULIB_STRNLEN@ # if @REPLACE_STRNLEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strnlen # define strnlen rpl_strnlen # endif _GL_FUNCDECL_RPL (strnlen, size_t, (char const *__s, size_t __maxlen) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strnlen, size_t, (char const *__s, size_t __maxlen)); # else # if ! @HAVE_DECL_STRNLEN@ _GL_FUNCDECL_SYS (strnlen, size_t, (char const *__s, size_t __maxlen) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strnlen, size_t, (char const *__s, size_t __maxlen)); # endif _GL_CXXALIASWARN (strnlen); #elif defined GNULIB_POSIXCHECK # undef strnlen # if HAVE_RAW_DECL_STRNLEN _GL_WARN_ON_USE (strnlen, "strnlen is unportable - " "use gnulib module strnlen for portability"); # endif #endif #if defined GNULIB_POSIXCHECK /* strcspn() assumes the second argument is a list of single-byte characters. Even in this simple case, it does not work with multibyte strings if the locale encoding is GB18030 and one of the characters to be searched is a digit. */ # undef strcspn /* Assume strcspn is always declared. */ _GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings " "in multibyte locales - " "use mbscspn if you care about internationalization"); #endif /* Find the first occurrence in S of any character in ACCEPT. */ #if @GNULIB_STRPBRK@ # if ! @HAVE_STRPBRK@ _GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); # endif /* On some systems, this function is defined as an overloaded function: extern "C" { const char * strpbrk (const char *, const char *); } extern "C++" { char * strpbrk (char *, const char *); } */ _GL_CXXALIAS_SYS_CAST2 (strpbrk, char *, (char const *__s, char const *__accept), const char *, (char const *__s, char const *__accept)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) \ || defined __clang__) _GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept) throw ()); _GL_CXXALIASWARN1 (strpbrk, char const *, (char const *__s, char const *__accept) throw ()); # elif __GLIBC__ >= 2 _GL_CXXALIASWARN (strpbrk); # endif # if defined GNULIB_POSIXCHECK /* strpbrk() assumes the second argument is a list of single-byte characters. Even in this simple case, it does not work with multibyte strings if the locale encoding is GB18030 and one of the characters to be searched is a digit. */ # undef strpbrk _GL_WARN_ON_USE_CXX (strpbrk, const char *, char *, (const char *, const char *), "strpbrk cannot work correctly on character strings " "in multibyte locales - " "use mbspbrk if you care about internationalization"); # endif #elif defined GNULIB_POSIXCHECK # undef strpbrk # if HAVE_RAW_DECL_STRPBRK _GL_WARN_ON_USE_CXX (strpbrk, const char *, char *, (const char *, const char *), "strpbrk is unportable - " "use gnulib module strpbrk for portability"); # endif #endif #if defined GNULIB_POSIXCHECK /* strspn() assumes the second argument is a list of single-byte characters. Even in this simple case, it cannot work with multibyte strings. */ # undef strspn /* Assume strspn is always declared. */ _GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings " "in multibyte locales - " "use mbsspn if you care about internationalization"); #endif #if defined GNULIB_POSIXCHECK /* strrchr() does not work with multibyte strings if the locale encoding is GB18030 and the character to be searched is a digit. */ # undef strrchr /* Assume strrchr is always declared. */ _GL_WARN_ON_USE_CXX (strrchr, const char *, char *, (const char *, int), "strrchr cannot work correctly on character strings " "in some multibyte locales - " "use mbsrchr if you care about internationalization"); #endif /* Search the next delimiter (char listed in DELIM) starting at *STRINGP. If one is found, overwrite it with a NUL, and advance *STRINGP to point to the next char after it. Otherwise, set *STRINGP to NULL. If *STRINGP was already NULL, nothing happens. Return the old value of *STRINGP. This is a variant of strtok() that is multithread-safe and supports empty fields. Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. Caveat: It doesn't work with multibyte strings unless all of the delimiter characters are ASCII characters < 0x30. See also strtok_r(). */ #if @GNULIB_STRSEP@ # if ! @HAVE_STRSEP@ _GL_FUNCDECL_SYS (strsep, char *, (char **restrict __stringp, char const *restrict __delim) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (strsep, char *, (char **restrict __stringp, char const *restrict __delim)); _GL_CXXALIASWARN (strsep); # if defined GNULIB_POSIXCHECK # undef strsep _GL_WARN_ON_USE (strsep, "strsep cannot work correctly on character strings " "in multibyte locales - " "use mbssep if you care about internationalization"); # endif #elif defined GNULIB_POSIXCHECK # undef strsep # if HAVE_RAW_DECL_STRSEP _GL_WARN_ON_USE (strsep, "strsep is unportable - " "use gnulib module strsep for portability"); # endif #endif #if @GNULIB_STRSTR@ # if @REPLACE_STRSTR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strstr rpl_strstr # endif _GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle)); # else /* On some systems, this function is defined as an overloaded function: extern "C++" { const char * strstr (const char *, const char *); } extern "C++" { char * strstr (char *, const char *); } */ _GL_CXXALIAS_SYS_CAST2 (strstr, char *, (const char *haystack, const char *needle), const char *, (const char *haystack, const char *needle)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) \ || defined __clang__) _GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle) throw ()); _GL_CXXALIASWARN1 (strstr, const char *, (const char *haystack, const char *needle) throw ()); # elif __GLIBC__ >= 2 _GL_CXXALIASWARN (strstr); # endif #elif defined GNULIB_POSIXCHECK /* strstr() does not work with multibyte strings if the locale encoding is different from UTF-8: POSIX says that it operates on "strings", and "string" in POSIX is defined as a sequence of bytes, not of characters. */ # undef strstr /* Assume strstr is always declared. */ _GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot " "work correctly on character strings in most " "multibyte locales - " "use mbsstr if you care about internationalization, " "or use strstr if you care about speed"); #endif /* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive comparison. */ #if @GNULIB_STRCASESTR@ # if @REPLACE_STRCASESTR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strcasestr rpl_strcasestr # endif _GL_FUNCDECL_RPL (strcasestr, char *, (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (strcasestr, char *, (const char *haystack, const char *needle)); # else # if ! @HAVE_STRCASESTR@ _GL_FUNCDECL_SYS (strcasestr, char *, (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const char * strcasestr (const char *, const char *); } extern "C++" { char * strcasestr (char *, const char *); } */ _GL_CXXALIAS_SYS_CAST2 (strcasestr, char *, (const char *haystack, const char *needle), const char *, (const char *haystack, const char *needle)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) \ || defined __clang__) _GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle) throw ()); _GL_CXXALIASWARN1 (strcasestr, const char *, (const char *haystack, const char *needle) throw ()); # elif __GLIBC__ >= 2 _GL_CXXALIASWARN (strcasestr); # endif #elif defined GNULIB_POSIXCHECK /* strcasestr() does not work with multibyte strings: It is a glibc extension, and glibc implements it only for unibyte locales. */ # undef strcasestr # if HAVE_RAW_DECL_STRCASESTR _GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character " "strings in multibyte locales - " "use mbscasestr if you care about " "internationalization, or use c-strcasestr if you want " "a locale independent function"); # endif #endif /* Parse S into tokens separated by characters in DELIM. If S is NULL, the saved pointer in SAVE_PTR is used as the next starting point. For example: char s[] = "-abc-=-def"; char *sp; x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def" x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL x = strtok_r(NULL, "=", &sp); // x = NULL // s = "abc\0-def\0" This is a variant of strtok() that is multithread-safe. For the POSIX documentation for this function, see: https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtok.html Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. Caveat: It doesn't work with multibyte strings unless all of the delimiter characters are ASCII characters < 0x30. See also strsep(). */ #if @GNULIB_STRTOK_R@ # if @REPLACE_STRTOK_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strtok_r # define strtok_r rpl_strtok_r # endif _GL_FUNCDECL_RPL (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr) _GL_ARG_NONNULL ((2, 3))); _GL_CXXALIAS_RPL (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr)); # else # if @UNDEFINE_STRTOK_R@ || defined GNULIB_POSIXCHECK # undef strtok_r # endif # if ! @HAVE_DECL_STRTOK_R@ _GL_FUNCDECL_SYS (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr) _GL_ARG_NONNULL ((2, 3))); # endif _GL_CXXALIAS_SYS (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr)); # endif _GL_CXXALIASWARN (strtok_r); # if defined GNULIB_POSIXCHECK _GL_WARN_ON_USE (strtok_r, "strtok_r cannot work correctly on character " "strings in multibyte locales - " "use mbstok_r if you care about internationalization"); # endif #elif defined GNULIB_POSIXCHECK # undef strtok_r # if HAVE_RAW_DECL_STRTOK_R _GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - " "use gnulib module strtok_r for portability"); # endif #endif /* The following functions are not specified by POSIX. They are gnulib extensions. */ #if @GNULIB_MBSLEN@ /* Return the number of multibyte characters in the character string STRING. This considers multibyte characters, unlike strlen, which counts bytes. */ # ifdef __MirBSD__ /* MirBSD defines mbslen as a macro. Override it. */ # undef mbslen # endif # if @HAVE_MBSLEN@ /* AIX, OSF/1, MirBSD define mbslen already in libc. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbslen rpl_mbslen # endif _GL_FUNCDECL_RPL (mbslen, size_t, (const char *string) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mbslen, size_t, (const char *string)); # else _GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (mbslen, size_t, (const char *string)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (mbslen); # endif #endif #if @GNULIB_MBSNLEN@ /* Return the number of multibyte characters in the character string starting at STRING and ending at STRING + LEN. */ _GL_EXTERN_C size_t mbsnlen (const char *string, size_t len) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1)); #endif #if @GNULIB_MBSCHR@ /* Locate the first single-byte character C in the character string STRING, and return a pointer to it. Return NULL if C is not found in STRING. Unlike strchr(), this function works correctly in multibyte locales with encodings such as GB18030. */ # if defined __hpux # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbschr rpl_mbschr /* avoid collision with HP-UX function */ # endif _GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c)); # else _GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c)); # endif _GL_CXXALIASWARN (mbschr); #endif #if @GNULIB_MBSRCHR@ /* Locate the last single-byte character C in the character string STRING, and return a pointer to it. Return NULL if C is not found in STRING. Unlike strrchr(), this function works correctly in multibyte locales with encodings such as GB18030. */ # if defined __hpux || defined __INTERIX # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbsrchr rpl_mbsrchr /* avoid collision with system function */ # endif _GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c)); # else _GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c)); # endif _GL_CXXALIASWARN (mbsrchr); #endif #if @GNULIB_MBSSTR@ /* Find the first occurrence of the character string NEEDLE in the character string HAYSTACK. Return NULL if NEEDLE is not found in HAYSTACK. Unlike strstr(), this function works correctly in multibyte locales with encodings different from UTF-8. */ _GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSCASECMP@ /* Compare the character strings S1 and S2, ignoring case, returning less than, equal to or greater than zero if S1 is lexicographically less than, equal to or greater than S2. Note: This function may, in multibyte locales, return 0 for strings of different lengths! Unlike strcasecmp(), this function works correctly in multibyte locales. */ _GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSNCASECMP@ /* Compare the initial segment of the character string S1 consisting of at most N characters with the initial segment of the character string S2 consisting of at most N characters, ignoring case, returning less than, equal to or greater than zero if the initial segment of S1 is lexicographically less than, equal to or greater than the initial segment of S2. Note: This function may, in multibyte locales, return 0 for initial segments of different lengths! Unlike strncasecmp(), this function works correctly in multibyte locales. But beware that N is not a byte count but a character count! */ _GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSPCASECMP@ /* Compare the initial segment of the character string STRING consisting of at most mbslen (PREFIX) characters with the character string PREFIX, ignoring case. If the two match, return a pointer to the first byte after this prefix in STRING. Otherwise, return NULL. Note: This function may, in multibyte locales, return non-NULL if STRING is of smaller length than PREFIX! Unlike strncasecmp(), this function works correctly in multibyte locales. */ _GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSCASESTR@ /* Find the first occurrence of the character string NEEDLE in the character string HAYSTACK, using case-insensitive comparison. Note: This function may, in multibyte locales, return success even if strlen (haystack) < strlen (needle) ! Unlike strcasestr(), this function works correctly in multibyte locales. */ _GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSCSPN@ /* Find the first occurrence in the character string STRING of any character in the character string ACCEPT. Return the number of bytes from the beginning of the string to this occurrence, or to the end of the string if none exists. Unlike strcspn(), this function works correctly in multibyte locales. */ _GL_EXTERN_C size_t mbscspn (const char *string, const char *accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSPBRK@ /* Find the first occurrence in the character string STRING of any character in the character string ACCEPT. Return the pointer to it, or NULL if none exists. Unlike strpbrk(), this function works correctly in multibyte locales. */ # if defined __hpux # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */ # endif _GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept)); # else _GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept)); # endif _GL_CXXALIASWARN (mbspbrk); #endif #if @GNULIB_MBSSPN@ /* Find the first occurrence in the character string STRING of any character not in the character string REJECT. Return the number of bytes from the beginning of the string to this occurrence, or to the end of the string if none exists. Unlike strspn(), this function works correctly in multibyte locales. */ _GL_EXTERN_C size_t mbsspn (const char *string, const char *reject) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSSEP@ /* Search the next delimiter (multibyte character listed in the character string DELIM) starting at the character string *STRINGP. If one is found, overwrite it with a NUL, and advance *STRINGP to point to the next multibyte character after it. Otherwise, set *STRINGP to NULL. If *STRINGP was already NULL, nothing happens. Return the old value of *STRINGP. This is a variant of mbstok_r() that supports empty fields. Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. See also mbstok_r(). */ _GL_EXTERN_C char * mbssep (char **stringp, const char *delim) _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSTOK_R@ /* Parse the character string STRING into tokens separated by characters in the character string DELIM. If STRING is NULL, the saved pointer in SAVE_PTR is used as the next starting point. For example: char s[] = "-abc-=-def"; char *sp; x = mbstok_r(s, "-", &sp); // x = "abc", sp = "=-def" x = mbstok_r(NULL, "-=", &sp); // x = "def", sp = NULL x = mbstok_r(NULL, "=", &sp); // x = NULL // s = "abc\0-def\0" Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. See also mbssep(). */ _GL_EXTERN_C char * mbstok_r (char *restrict string, const char *delim, char **save_ptr) _GL_ARG_NONNULL ((2, 3)); #endif /* Map any int, typically from errno, into an error message. */ #if @GNULIB_STRERROR@ # if @REPLACE_STRERROR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strerror # define strerror rpl_strerror # endif _GL_FUNCDECL_RPL (strerror, char *, (int)); _GL_CXXALIAS_RPL (strerror, char *, (int)); # else _GL_CXXALIAS_SYS (strerror, char *, (int)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (strerror); # endif #elif defined GNULIB_POSIXCHECK # undef strerror /* Assume strerror is always declared. */ _GL_WARN_ON_USE (strerror, "strerror is unportable - " "use gnulib module strerror to guarantee non-NULL result"); #endif /* Map any int, typically from errno, into an error message. Multithread-safe. Uses the POSIX declaration, not the glibc declaration. */ #if @GNULIB_STRERROR_R@ # if @REPLACE_STRERROR_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strerror_r # define strerror_r rpl_strerror_r # endif _GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)); # else # if !@HAVE_DECL_STRERROR_R@ _GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)); # endif # if __GLIBC__ >= 2 && @HAVE_DECL_STRERROR_R@ _GL_CXXALIASWARN (strerror_r); # endif #elif defined GNULIB_POSIXCHECK # undef strerror_r # if HAVE_RAW_DECL_STRERROR_R _GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - " "use gnulib module strerror_r-posix for portability"); # endif #endif /* Return the name of the system error code ERRNUM. */ #if @GNULIB_STRERRORNAME_NP@ # if @REPLACE_STRERRORNAME_NP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strerrorname_np # define strerrorname_np rpl_strerrorname_np # endif _GL_FUNCDECL_RPL (strerrorname_np, const char *, (int errnum)); _GL_CXXALIAS_RPL (strerrorname_np, const char *, (int errnum)); # else # if !@HAVE_STRERRORNAME_NP@ _GL_FUNCDECL_SYS (strerrorname_np, const char *, (int errnum)); # endif _GL_CXXALIAS_SYS (strerrorname_np, const char *, (int errnum)); # endif _GL_CXXALIASWARN (strerrorname_np); #elif defined GNULIB_POSIXCHECK # undef strerrorname_np # if HAVE_RAW_DECL_STRERRORNAME_NP _GL_WARN_ON_USE (strerrorname_np, "strerrorname_np is unportable - " "use gnulib module strerrorname_np for portability"); # endif #endif /* Return an abbreviation string for the signal number SIG. */ #if @GNULIB_SIGABBREV_NP@ # if ! @HAVE_SIGABBREV_NP@ _GL_FUNCDECL_SYS (sigabbrev_np, const char *, (int sig)); # endif _GL_CXXALIAS_SYS (sigabbrev_np, const char *, (int sig)); _GL_CXXALIASWARN (sigabbrev_np); #elif defined GNULIB_POSIXCHECK # undef sigabbrev_np # if HAVE_RAW_DECL_SIGABBREV_NP _GL_WARN_ON_USE (sigabbrev_np, "sigabbrev_np is unportable - " "use gnulib module sigabbrev_np for portability"); # endif #endif /* Return an English description string for the signal number SIG. */ #if @GNULIB_SIGDESCR_NP@ # if ! @HAVE_SIGDESCR_NP@ _GL_FUNCDECL_SYS (sigdescr_np, const char *, (int sig)); # endif _GL_CXXALIAS_SYS (sigdescr_np, const char *, (int sig)); _GL_CXXALIASWARN (sigdescr_np); #elif defined GNULIB_POSIXCHECK # undef sigdescr_np # if HAVE_RAW_DECL_SIGDESCR_NP _GL_WARN_ON_USE (sigdescr_np, "sigdescr_np is unportable - " "use gnulib module sigdescr_np for portability"); # endif #endif #if @GNULIB_STRSIGNAL@ # if @REPLACE_STRSIGNAL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strsignal rpl_strsignal # endif _GL_FUNCDECL_RPL (strsignal, char *, (int __sig)); _GL_CXXALIAS_RPL (strsignal, char *, (int __sig)); # else # if ! @HAVE_DECL_STRSIGNAL@ _GL_FUNCDECL_SYS (strsignal, char *, (int __sig)); # endif /* Need to cast, because on Cygwin 1.5.x systems, the return type is 'const char *'. */ _GL_CXXALIAS_SYS_CAST (strsignal, char *, (int __sig)); # endif _GL_CXXALIASWARN (strsignal); #elif defined GNULIB_POSIXCHECK # undef strsignal # if HAVE_RAW_DECL_STRSIGNAL _GL_WARN_ON_USE (strsignal, "strsignal is unportable - " "use gnulib module strsignal for portability"); # endif #endif #if @GNULIB_STRVERSCMP@ # if !@HAVE_STRVERSCMP@ _GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *)); _GL_CXXALIASWARN (strverscmp); #elif defined GNULIB_POSIXCHECK # undef strverscmp # if HAVE_RAW_DECL_STRVERSCMP _GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - " "use gnulib module strverscmp for portability"); # endif #endif #endif /* _@GUARD_PREFIX@_STRING_H */ #endif /* _@GUARD_PREFIX@_STRING_H */ #endif recode-3.7.15/lib/printf-frexp.h0000644000175000017500000000210214371444255012100 /* Split a double into fraction and mantissa, for hexadecimal printf. Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Write a finite, positive number x as x = mantissa * 2^exp where exp >= DBL_MIN_EXP - 1, mantissa < 2.0, if x is not a denormalized number then mantissa >= 1.0. Store exp in *EXPPTR and return mantissa. */ extern double printf_frexp (double x, int *expptr); recode-3.7.15/lib/readlink.c0000644000175000017500000000622314371444255011250 /* Read the contents of a symbolic link. Copyright (C) 2003-2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include #include #include #include #if !HAVE_READLINK /* readlink() substitute for systems that don't have a readlink() function, such as DJGPP 2.03 and mingw32. */ ssize_t readlink (char const *file, _GL_UNUSED char *buf, _GL_UNUSED size_t bufsize) { struct stat statbuf; /* In general we should use lstat() here, not stat(). But on platforms without symbolic links, lstat() - if it exists - would be equivalent to stat(), therefore we can use stat(). This saves us a configure check. */ if (stat (file, &statbuf) >= 0) errno = EINVAL; return -1; } #else /* HAVE_READLINK */ # undef readlink /* readlink() wrapper that uses correct types, for systems like cygwin 1.5.x where readlink returns int, and which rejects trailing slash, for Solaris 9. */ ssize_t rpl_readlink (char const *file, char *buf, size_t bufsize) { # if READLINK_TRAILING_SLASH_BUG size_t file_len = strlen (file); if (file_len && file[file_len - 1] == '/') { /* Even if FILE without the slash is a symlink to a directory, both lstat() and stat() must resolve the trailing slash to the directory rather than the symlink. We can therefore safely use stat() to distinguish between EINVAL and ENOTDIR/ENOENT, avoiding extra overhead of rpl_lstat(). */ struct stat st; if (stat (file, &st) == 0 || errno == EOVERFLOW) errno = EINVAL; return -1; } # endif /* READLINK_TRAILING_SLASH_BUG */ ssize_t r = readlink (file, buf, bufsize); # if READLINK_TRUNCATE_BUG if (r < 0 && errno == ERANGE) { /* Try again with a bigger buffer. This is just for test cases; real code invariably discards short reads. */ char stackbuf[4032]; r = readlink (file, stackbuf, sizeof stackbuf); if (r < 0) { if (errno == ERANGE) { /* Clear the buffer, which is good enough for real code. Thankfully, no test cases try short reads of enormous symlinks and what would be the point anyway? */ r = bufsize; memset (buf, 0, r); } } else { if (bufsize < r) r = bufsize; memcpy (buf, stackbuf, r); } } # endif return r; } #endif /* HAVE_READLINK */ recode-3.7.15/lib/xbinary-io.h0000644000175000017500000000263514371444255011550 /* Binary mode I/O with checking Copyright 2017-2023 Free Software Foundation, Inc. This file 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 3 of the License, or (at your option) any later version. This file 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 . */ #ifndef _XBINARY_IO_H #define _XBINARY_IO_H #include "binary-io.h" #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef XBINARY_IO_INLINE # define XBINARY_IO_INLINE _GL_INLINE #endif #if O_BINARY extern _Noreturn void xset_binary_mode_error (void); #else XBINARY_IO_INLINE void xset_binary_mode_error (void) {} #endif /* Set the mode of FD to MODE, which should be either O_TEXT or O_BINARY. Report an error and exit if this fails. */ XBINARY_IO_INLINE void xset_binary_mode (int fd, int mode) { if (set_binary_mode (fd, mode) < 0) xset_binary_mode_error (); } _GL_INLINE_HEADER_END #endif /* _XBINARY_IO_H */ recode-3.7.15/lib/malloc/0000755000175000017500000000000014766021045010633 5recode-3.7.15/lib/malloc/scratch_buffer_set_array_size.c0000644000175000017500000000365314371444255017015 /* Variable-sized buffer with on-stack default allocation. Copyright (C) 2015-2023 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ #ifndef _LIBC # include #endif #include #include #include bool __libc_scratch_buffer_set_array_size (struct scratch_buffer *buffer, size_t nelem, size_t size) { size_t new_length = nelem * size; /* Avoid overflow check if both values are small. */ if ((nelem | size) >> (sizeof (size_t) * CHAR_BIT / 2) != 0 && nelem != 0 && size != new_length / nelem) { /* Overflow. Discard the old buffer, but it must remain valid to free. */ scratch_buffer_free (buffer); scratch_buffer_init (buffer); __set_errno (ENOMEM); return false; } if (new_length <= buffer->length) return true; /* Discard old buffer. */ scratch_buffer_free (buffer); char *new_ptr = malloc (new_length); if (new_ptr == NULL) { /* Buffer must remain valid to free. */ scratch_buffer_init (buffer); return false; } /* Install new heap-based buffer. */ buffer->data = new_ptr; buffer->length = new_length; return true; } libc_hidden_def (__libc_scratch_buffer_set_array_size) recode-3.7.15/lib/malloc/scratch_buffer_grow_preserve.c0000644000175000017500000000375414371444255016665 /* Variable-sized buffer with on-stack default allocation. Copyright (C) 2015-2023 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ #ifndef _LIBC # include #endif #include #include #include bool __libc_scratch_buffer_grow_preserve (struct scratch_buffer *buffer) { size_t new_length = 2 * buffer->length; void *new_ptr; if (buffer->data == buffer->__space.__c) { /* Move buffer to the heap. No overflow is possible because buffer->length describes a small buffer on the stack. */ new_ptr = malloc (new_length); if (new_ptr == NULL) return false; memcpy (new_ptr, buffer->__space.__c, buffer->length); } else { /* Buffer was already on the heap. Check for overflow. */ if (__glibc_likely (new_length >= buffer->length)) new_ptr = realloc (buffer->data, new_length); else { __set_errno (ENOMEM); new_ptr = NULL; } if (__glibc_unlikely (new_ptr == NULL)) { /* Deallocate, but buffer must remain valid to free. */ free (buffer->data); scratch_buffer_init (buffer); return false; } } /* Install new heap-based buffer. */ buffer->data = new_ptr; buffer->length = new_length; return true; } libc_hidden_def (__libc_scratch_buffer_grow_preserve) recode-3.7.15/lib/malloc/scratch_buffer_grow.c0000644000175000017500000000314514371444255014744 /* Variable-sized buffer with on-stack default allocation. Copyright (C) 2015-2023 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ #ifndef _LIBC # include #endif #include #include bool __libc_scratch_buffer_grow (struct scratch_buffer *buffer) { void *new_ptr; size_t new_length = buffer->length * 2; /* Discard old buffer. */ scratch_buffer_free (buffer); /* Check for overflow. */ if (__glibc_likely (new_length >= buffer->length)) new_ptr = malloc (new_length); else { __set_errno (ENOMEM); new_ptr = NULL; } if (__glibc_unlikely (new_ptr == NULL)) { /* Buffer must remain valid to free. */ scratch_buffer_init (buffer); return false; } /* Install new heap-based buffer. */ buffer->data = new_ptr; buffer->length = new_length; return true; } libc_hidden_def (__libc_scratch_buffer_grow) recode-3.7.15/lib/malloc/scratch_buffer.h0000644000175000017500000001174214371444255013715 /* Variable-sized buffer with on-stack default allocation. Copyright (C) 2015-2023 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ #ifndef _SCRATCH_BUFFER_H #define _SCRATCH_BUFFER_H /* Scratch buffers with a default stack allocation and fallback to heap allocation. It is expected that this function is used in this way: struct scratch_buffer tmpbuf; scratch_buffer_init (&tmpbuf); while (!function_that_uses_buffer (tmpbuf.data, tmpbuf.length)) if (!scratch_buffer_grow (&tmpbuf)) return -1; scratch_buffer_free (&tmpbuf); return 0; The allocation functions (scratch_buffer_grow, scratch_buffer_grow_preserve, scratch_buffer_set_array_size) make sure that the heap allocation, if any, is freed, so that the code above does not have a memory leak. The buffer still remains in a state that can be deallocated using scratch_buffer_free, so a loop like this is valid as well: struct scratch_buffer tmpbuf; scratch_buffer_init (&tmpbuf); while (!function_that_uses_buffer (tmpbuf.data, tmpbuf.length)) if (!scratch_buffer_grow (&tmpbuf)) break; scratch_buffer_free (&tmpbuf); scratch_buffer_grow and scratch_buffer_grow_preserve are guaranteed to grow the buffer by at least 512 bytes. This means that when using the scratch buffer as a backing store for a non-character array whose element size, in bytes, is 512 or smaller, the scratch buffer only has to grow once to make room for at least one more element. */ #include #include #include /* Scratch buffer. Must be initialized with scratch_buffer_init before its use. */ struct scratch_buffer { void *data; /* Pointer to the beginning of the scratch area. */ size_t length; /* Allocated space at the data pointer, in bytes. */ union { max_align_t __align; char __c[1024]; } __space; }; /* Initializes *BUFFER so that BUFFER->data points to BUFFER->__space and BUFFER->length reflects the available space. */ static inline void scratch_buffer_init (struct scratch_buffer *buffer) { buffer->data = buffer->__space.__c; buffer->length = sizeof (buffer->__space); } /* Deallocates *BUFFER (if it was heap-allocated). */ static inline void scratch_buffer_free (struct scratch_buffer *buffer) { if (buffer->data != buffer->__space.__c) free (buffer->data); } /* Grow *BUFFER by some arbitrary amount. The buffer contents is NOT preserved. Return true on success, false on allocation failure (in which case the old buffer is freed). On success, the new buffer is larger than the previous size. On failure, *BUFFER is deallocated, but remains in a free-able state, and errno is set. */ bool __libc_scratch_buffer_grow (struct scratch_buffer *buffer); libc_hidden_proto (__libc_scratch_buffer_grow) /* Alias for __libc_scratch_buffer_grow. */ static __always_inline bool scratch_buffer_grow (struct scratch_buffer *buffer) { return __glibc_likely (__libc_scratch_buffer_grow (buffer)); } /* Like __libc_scratch_buffer_grow, but preserve the old buffer contents on success, as a prefix of the new buffer. */ bool __libc_scratch_buffer_grow_preserve (struct scratch_buffer *buffer); libc_hidden_proto (__libc_scratch_buffer_grow_preserve) /* Alias for __libc_scratch_buffer_grow_preserve. */ static __always_inline bool scratch_buffer_grow_preserve (struct scratch_buffer *buffer) { return __glibc_likely (__libc_scratch_buffer_grow_preserve (buffer)); } /* Grow *BUFFER so that it can store at least NELEM elements of SIZE bytes. The buffer contents are NOT preserved. Both NELEM and SIZE can be zero. Return true on success, false on allocation failure (in which case the old buffer is freed, but *BUFFER remains in a free-able state, and errno is set). It is unspecified whether this function can reduce the array size. */ bool __libc_scratch_buffer_set_array_size (struct scratch_buffer *buffer, size_t nelem, size_t size); libc_hidden_proto (__libc_scratch_buffer_set_array_size) /* Alias for __libc_scratch_set_array_size. */ static __always_inline bool scratch_buffer_set_array_size (struct scratch_buffer *buffer, size_t nelem, size_t size) { return __glibc_likely (__libc_scratch_buffer_set_array_size (buffer, nelem, size)); } #endif /* _SCRATCH_BUFFER_H */ recode-3.7.15/lib/locale.in.h0000644000175000017500000002377114371444255011337 /* A POSIX . Copyright (C) 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if (defined _WIN32 && !defined __CYGWIN__ && defined __need_locale_t) \ || defined _GL_ALREADY_INCLUDING_LOCALE_H /* Special invocation convention: - Inside mingw header files, - To handle Solaris header files (through Solaris 10) when combined with gettext's libintl.h. */ #@INCLUDE_NEXT@ @NEXT_LOCALE_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_LOCALE_H #define _GL_ALREADY_INCLUDING_LOCALE_H /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_LOCALE_H@ #undef _GL_ALREADY_INCLUDING_LOCALE_H #ifndef _@GUARD_PREFIX@_LOCALE_H #define _@GUARD_PREFIX@_LOCALE_H /* NetBSD 5.0 mis-defines NULL. */ #include /* Mac OS X 10.5 defines the locale_t type in . */ #if @HAVE_XLOCALE_H@ # include #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* The LC_MESSAGES locale category is specified in POSIX, but not in ISO C. On systems that don't define it, use the same value as GNU libintl. */ #if !defined LC_MESSAGES # define LC_MESSAGES 1729 #endif /* On native Windows with MSVC, 'struct lconv' lacks the members int_p_* and int_n_*. Instead of overriding 'struct lconv', merely define these member names as macros. This avoids trouble in C++ mode. */ #if defined _MSC_VER # define int_p_cs_precedes p_cs_precedes # define int_p_sign_posn p_sign_posn # define int_p_sep_by_space p_sep_by_space # define int_n_cs_precedes n_cs_precedes # define int_n_sign_posn n_sign_posn # define int_n_sep_by_space n_sep_by_space #endif /* Bionic libc's 'struct lconv' is just a dummy. */ #if @REPLACE_STRUCT_LCONV@ # define lconv rpl_lconv struct lconv { /* All 'char *' are actually 'const char *'. */ /* Members that depend on the LC_NUMERIC category of the locale. See */ /* Symbol used as decimal point. */ char *decimal_point; /* Symbol used to separate groups of digits to the left of the decimal point. */ char *thousands_sep; /* Definition of the size of groups of digits to the left of the decimal point. */ char *grouping; /* Members that depend on the LC_MONETARY category of the locale. See */ /* Symbol used as decimal point. */ char *mon_decimal_point; /* Symbol used to separate groups of digits to the left of the decimal point. */ char *mon_thousands_sep; /* Definition of the size of groups of digits to the left of the decimal point. */ char *mon_grouping; /* Sign used to indicate a value >= 0. */ char *positive_sign; /* Sign used to indicate a value < 0. */ char *negative_sign; /* For formatting local currency. */ /* Currency symbol (3 characters) followed by separator (1 character). */ char *currency_symbol; /* Number of digits after the decimal point. */ char frac_digits; /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it comes after the number. */ char p_cs_precedes; /* For values >= 0: Position of the sign. */ char p_sign_posn; /* For values >= 0: Placement of spaces between currency symbol, sign, and number. */ char p_sep_by_space; /* For values < 0: 1 if the currency symbol precedes the number, 0 if it comes after the number. */ char n_cs_precedes; /* For values < 0: Position of the sign. */ char n_sign_posn; /* For values < 0: Placement of spaces between currency symbol, sign, and number. */ char n_sep_by_space; /* For formatting international currency. */ /* Currency symbol (3 characters) followed by separator (1 character). */ char *int_curr_symbol; /* Number of digits after the decimal point. */ char int_frac_digits; /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it comes after the number. */ char int_p_cs_precedes; /* For values >= 0: Position of the sign. */ char int_p_sign_posn; /* For values >= 0: Placement of spaces between currency symbol, sign, and number. */ char int_p_sep_by_space; /* For values < 0: 1 if the currency symbol precedes the number, 0 if it comes after the number. */ char int_n_cs_precedes; /* For values < 0: Position of the sign. */ char int_n_sign_posn; /* For values < 0: Placement of spaces between currency symbol, sign, and number. */ char int_n_sep_by_space; }; #endif #if @GNULIB_LOCALECONV@ # if @REPLACE_LOCALECONV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef localeconv # define localeconv rpl_localeconv # endif _GL_FUNCDECL_RPL (localeconv, struct lconv *, (void)); _GL_CXXALIAS_RPL (localeconv, struct lconv *, (void)); # else _GL_CXXALIAS_SYS (localeconv, struct lconv *, (void)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (localeconv); # endif #elif @REPLACE_STRUCT_LCONV@ # undef localeconv # define localeconv localeconv_used_without_requesting_gnulib_module_localeconv #elif defined GNULIB_POSIXCHECK # undef localeconv # if HAVE_RAW_DECL_LOCALECONV _GL_WARN_ON_USE (localeconv, "localeconv returns too few information on some platforms - " "use gnulib module localeconv for portability"); # endif #endif #if @GNULIB_SETLOCALE@ # if @REPLACE_SETLOCALE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef setlocale # define setlocale rpl_setlocale # define GNULIB_defined_setlocale 1 # endif _GL_FUNCDECL_RPL (setlocale, char *, (int category, const char *locale)); _GL_CXXALIAS_RPL (setlocale, char *, (int category, const char *locale)); # else _GL_CXXALIAS_SYS (setlocale, char *, (int category, const char *locale)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (setlocale); # endif #elif defined GNULIB_POSIXCHECK # undef setlocale # if HAVE_RAW_DECL_SETLOCALE _GL_WARN_ON_USE (setlocale, "setlocale works differently on native Windows - " "use gnulib module setlocale for portability"); # endif #endif #if @GNULIB_SETLOCALE_NULL@ /* Included here for convenience. */ # include "setlocale_null.h" #endif #if /*@GNULIB_NEWLOCALE@ ||*/ (@GNULIB_LOCALENAME@ && @LOCALENAME_ENHANCE_LOCALE_FUNCS@ && @HAVE_NEWLOCALE@) # if @REPLACE_NEWLOCALE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef newlocale # define newlocale rpl_newlocale # define GNULIB_defined_newlocale 1 # endif _GL_FUNCDECL_RPL (newlocale, locale_t, (int category_mask, const char *name, locale_t base) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (newlocale, locale_t, (int category_mask, const char *name, locale_t base)); # else # if @HAVE_NEWLOCALE@ _GL_CXXALIAS_SYS (newlocale, locale_t, (int category_mask, const char *name, locale_t base)); # endif # endif # if __GLIBC__ >= 2 && @HAVE_NEWLOCALE@ _GL_CXXALIASWARN (newlocale); # endif # if @HAVE_NEWLOCALE@ || @REPLACE_NEWLOCALE@ # ifndef HAVE_WORKING_NEWLOCALE # define HAVE_WORKING_NEWLOCALE 1 # endif # endif #elif defined GNULIB_POSIXCHECK # undef newlocale # if HAVE_RAW_DECL_NEWLOCALE _GL_WARN_ON_USE (newlocale, "newlocale is not portable"); # endif #endif #if @GNULIB_DUPLOCALE@ || (@GNULIB_LOCALENAME@ && @LOCALENAME_ENHANCE_LOCALE_FUNCS@ && @HAVE_DUPLOCALE@) # if @REPLACE_DUPLOCALE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef duplocale # define duplocale rpl_duplocale # define GNULIB_defined_duplocale 1 # endif _GL_FUNCDECL_RPL (duplocale, locale_t, (locale_t locale) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (duplocale, locale_t, (locale_t locale)); # else # if @HAVE_DUPLOCALE@ _GL_CXXALIAS_SYS (duplocale, locale_t, (locale_t locale)); # endif # endif # if __GLIBC__ >= 2 && @HAVE_DUPLOCALE@ _GL_CXXALIASWARN (duplocale); # endif # if @HAVE_DUPLOCALE@ || @REPLACE_DUPLOCALE@ # ifndef HAVE_WORKING_DUPLOCALE # define HAVE_WORKING_DUPLOCALE 1 # endif # endif #elif defined GNULIB_POSIXCHECK # undef duplocale # if HAVE_RAW_DECL_DUPLOCALE _GL_WARN_ON_USE (duplocale, "duplocale is buggy on some glibc systems - " "use gnulib module duplocale for portability"); # endif #endif #if /*@GNULIB_FREELOCALE@ ||*/ (@GNULIB_LOCALENAME@ && @LOCALENAME_ENHANCE_LOCALE_FUNCS@ && @HAVE_FREELOCALE@) # if @REPLACE_FREELOCALE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef freelocale # define freelocale rpl_freelocale # define GNULIB_defined_freelocale 1 # endif _GL_FUNCDECL_RPL (freelocale, void, (locale_t locale) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (freelocale, void, (locale_t locale)); # else # if @HAVE_FREELOCALE@ /* Need to cast, because on FreeBSD and Mac OS X 10.13, the return type is int. */ _GL_CXXALIAS_SYS_CAST (freelocale, void, (locale_t locale)); # endif # endif # if __GLIBC__ >= 2 && @HAVE_FREELOCALE@ _GL_CXXALIASWARN (freelocale); # endif #elif defined GNULIB_POSIXCHECK # undef freelocale # if HAVE_RAW_DECL_FREELOCALE _GL_WARN_ON_USE (freelocale, "freelocale is not portable"); # endif #endif #endif /* _@GUARD_PREFIX@_LOCALE_H */ #endif /* _@GUARD_PREFIX@_LOCALE_H */ #endif /* !(__need_locale_t || _GL_ALREADY_INCLUDING_LOCALE_H) */ recode-3.7.15/lib/eloop-threshold.h0000644000175000017500000000633414371444255012577 /* Threshold at which to diagnose ELOOP. Generic version. Copyright (C) 2012-2023 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ #ifndef _ELOOP_THRESHOLD_H #define _ELOOP_THRESHOLD_H 1 #include #ifdef _LIBC # include # define _GL_ATTRIBUTE_CONST __attribute__ ((const)) #else # include # include "minmax.h" # define __sysconf sysconf # if (!defined SYMLOOP_MAX \ && ! (defined _SC_SYMLOOP_MAX && defined _POSIX_SYMLOOP_MAX)) # define SYMLOOP_MAX 8 # endif #endif /* POSIX specifies SYMLOOP_MAX as the "Maximum number of symbolic links that can be reliably traversed in the resolution of a pathname in the absence of a loop." This makes it a minimum that we should certainly accept. But it leaves open the possibility that more might sometimes work--just not "reliably". For example, Linux implements a complex policy whereby there is a small limit on the number of direct symlink traversals (a symlink to a symlink to a symlink), but larger limit on the total number of symlink traversals overall. Hence the SYMLOOP_MAX number should be the small one, but the limit library functions enforce on users should be the larger one. So, we use the larger of the reported SYMLOOP_MAX (if any) and our own constant MIN_ELOOP_THRESHOLD, below. This constant should be large enough that it never rules out a file name and directory tree that the underlying system (i.e. calls to 'open' et al) would resolve successfully. It should be small enough that actual loops are detected without a huge number of iterations. */ #ifndef MIN_ELOOP_THRESHOLD # define MIN_ELOOP_THRESHOLD 40 #endif /* Return the maximum number of symlink traversals to permit before diagnosing ELOOP. */ static inline unsigned int _GL_ATTRIBUTE_CONST __eloop_threshold (void) { #ifdef SYMLOOP_MAX const int symloop_max = SYMLOOP_MAX; #else /* The function is marked 'const' even though we use memory and call a function, because sysconf is required to return the same value in every call and so it must always be safe to call __eloop_threshold exactly once and reuse the value. */ static long int sysconf_symloop_max; if (sysconf_symloop_max == 0) sysconf_symloop_max = __sysconf (_SC_SYMLOOP_MAX); const unsigned int symloop_max = (sysconf_symloop_max <= 0 ? _POSIX_SYMLOOP_MAX : sysconf_symloop_max); #endif return MAX (symloop_max, MIN_ELOOP_THRESHOLD); } #endif /* eloop-threshold.h */ recode-3.7.15/lib/utime.in.h0000644000175000017500000000661714371444255011223 /* Substitute for and wrapper around . Copyright (C) 2017-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _@GUARD_PREFIX@_UTIME_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #if @HAVE_UTIME_H@ # @INCLUDE_NEXT@ @NEXT_UTIME_H@ #endif #ifndef _@GUARD_PREFIX@_UTIME_H #define _@GUARD_PREFIX@_UTIME_H #if !@HAVE_UTIME_H@ # include #endif #if @GNULIB_UTIME@ /* Get struct timespec. */ # include #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ #if defined _WIN32 && ! defined __CYGWIN__ /* Define 'struct utimbuf' as an alias of 'struct _utimbuf' (or possibly, if present, 'struct __utimbuf64'). */ # define utimbuf _utimbuf #endif #if @GNULIB_UTIME@ # if @REPLACE_UTIME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define utime rpl_utime # endif _GL_FUNCDECL_RPL (utime, int, (const char *filename, const struct utimbuf *ts) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (utime, int, (const char *filename, const struct utimbuf *ts)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef utime # define utime _utime # endif _GL_CXXALIAS_MDA (utime, int, (const char *filename, const struct utimbuf *ts)); # else # if !@HAVE_UTIME@ _GL_FUNCDECL_SYS (utime, int, (const char *filename, const struct utimbuf *ts) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (utime, int, (const char *filename, const struct utimbuf *ts)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (utime); # endif #elif defined GNULIB_POSIXCHECK # undef utime # if HAVE_RAW_DECL_UTIME _GL_WARN_ON_USE (utime, "utime is unportable - " "use gnulib module canonicalize-lgpl for portability"); # endif #elif @GNULIB_MDA_UTIME@ /* On native Windows, map 'utime' to '_utime', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::utime always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef utime # define utime _utime # endif _GL_CXXALIAS_MDA (utime, int, (const char *filename, const struct utimbuf *ts)); # else _GL_CXXALIAS_SYS (utime, int, (const char *filename, const struct utimbuf *ts)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (utime); # endif #endif #if @GNULIB_UTIME@ extern int _gl_utimens_windows (const char *filename, struct timespec ts[2]); #endif #endif /* _@GUARD_PREFIX@_UTIME_H */ #endif /* _@GUARD_PREFIX@_UTIME_H */ recode-3.7.15/lib/mbrtowc-impl.h0000644000175000017500000001624014371444255012100 /* Convert multibyte character to wide character. Copyright (C) 1999-2002, 2005-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2008. */ /* This file contains the body of the mbrtowc and mbrtoc32 functions, when GNULIB_defined_mbstate_t is defined. */ char *pstate = (char *)ps; if (s == NULL) { pwc = NULL; s = ""; n = 1; } if (n == 0) return (size_t)(-2); /* Here n > 0. */ if (pstate == NULL) pstate = internal_state; { size_t nstate = pstate[0]; char buf[4]; const char *p; size_t m; enc_t enc; int res; switch (nstate) { case 0: p = s; m = n; break; case 3: buf[2] = pstate[3]; FALLTHROUGH; case 2: buf[1] = pstate[2]; FALLTHROUGH; case 1: buf[0] = pstate[1]; p = buf; m = nstate; buf[m++] = s[0]; if (n >= 2 && m < 4) { buf[m++] = s[1]; if (n >= 3 && m < 4) buf[m++] = s[2]; } break; default: errno = EINVAL; return (size_t)(-1); } /* Here m > 0. */ enc = locale_encoding_classification (); if (enc == enc_utf8) /* UTF-8 */ { /* Achieve - multi-thread safety and - the ability to produce wide character values > WCHAR_MAX by not calling mbtowc() at all. */ #include "mbrtowc-impl-utf8.h" } else { /* The hidden internal state of mbtowc would make this function not multi-thread safe. Achieve multi-thread safety through a lock. */ wchar_t wc; res = mbtowc_with_lock (&wc, p, m); if (res >= 0) { if ((wc == 0) != (res == 0)) abort (); if (pwc != NULL) *pwc = wc; goto success; } /* mbtowc does not distinguish between invalid and incomplete multibyte sequences. But mbrtowc needs to make this distinction. There are two possible approaches: - Use iconv() and its return value. - Use built-in knowledge about the possible encodings. Given the low quality of implementation of iconv() on the systems that lack mbrtowc(), we use the second approach. The possible encodings are: - 8-bit encodings, - EUC-JP, EUC-KR, GB2312, EUC-TW, BIG5, GB18030, SJIS, - UTF-8 (already handled above). Use specialized code for each. */ if (m >= 4 || m >= MB_CUR_MAX) goto invalid; /* Here MB_CUR_MAX > 1 and 0 < m < 4. */ switch (enc) { /* As a reference for this code, you can use the GNU libiconv implementation. Look for uses of the RET_TOOFEW macro. */ case enc_eucjp: /* EUC-JP */ { if (m == 1) { unsigned char c = (unsigned char) p[0]; if ((c >= 0xa1 && c < 0xff) || c == 0x8e || c == 0x8f) goto incomplete; } if (m == 2) { unsigned char c = (unsigned char) p[0]; if (c == 0x8f) { unsigned char c2 = (unsigned char) p[1]; if (c2 >= 0xa1 && c2 < 0xff) goto incomplete; } } goto invalid; } case enc_94: /* EUC-KR, GB2312, BIG5 */ { if (m == 1) { unsigned char c = (unsigned char) p[0]; if (c >= 0xa1 && c < 0xff) goto incomplete; } goto invalid; } case enc_euctw: /* EUC-TW */ { if (m == 1) { unsigned char c = (unsigned char) p[0]; if ((c >= 0xa1 && c < 0xff) || c == 0x8e) goto incomplete; } else /* m == 2 || m == 3 */ { unsigned char c = (unsigned char) p[0]; if (c == 0x8e) goto incomplete; } goto invalid; } case enc_gb18030: /* GB18030 */ { if (m == 1) { unsigned char c = (unsigned char) p[0]; if ((c >= 0x90 && c <= 0xe3) || (c >= 0xf8 && c <= 0xfe)) goto incomplete; } else /* m == 2 || m == 3 */ { unsigned char c = (unsigned char) p[0]; if (c >= 0x90 && c <= 0xe3) { unsigned char c2 = (unsigned char) p[1]; if (c2 >= 0x30 && c2 <= 0x39) { if (m == 2) goto incomplete; else /* m == 3 */ { unsigned char c3 = (unsigned char) p[2]; if (c3 >= 0x81 && c3 <= 0xfe) goto incomplete; } } } } goto invalid; } case enc_sjis: /* SJIS */ { if (m == 1) { unsigned char c = (unsigned char) p[0]; if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xea) || (c >= 0xf0 && c <= 0xf9)) goto incomplete; } goto invalid; } default: /* An unknown multibyte encoding. */ goto incomplete; } } success: /* res >= 0 is the corrected return value of mbtowc_with_lock (&wc, p, m). */ if (nstate >= (res > 0 ? res : 1)) abort (); res -= nstate; pstate[0] = 0; return res; incomplete: { size_t k = nstate; /* Here 0 <= k < m < 4. */ pstate[++k] = s[0]; if (k < m) { pstate[++k] = s[1]; if (k < m) pstate[++k] = s[2]; } if (k != m) abort (); } pstate[0] = m; return (size_t)(-2); invalid: errno = EILSEQ; /* The conversion state is undefined, says POSIX. */ return (size_t)(-1); } recode-3.7.15/lib/math.c0000644000175000017500000000153314371444255010407 /* Inline functions for . Copyright (C) 2012-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #define _GL_MATH_INLINE _GL_EXTERN_INLINE #include "math.h" typedef int dummy; recode-3.7.15/lib/signal.in.h0000644000175000017500000003664714371444255011363 /* A GNU-like . Copyright (C) 2006-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_sig_atomic_t || defined __need_sigset_t || defined _GL_ALREADY_INCLUDING_SIGNAL_H || (defined _SIGNAL_H && !defined __SIZEOF_PTHREAD_MUTEX_T) /* Special invocation convention: - Inside glibc header files. - On glibc systems we have a sequence of nested includes -> -> . In this situation, the functions are not yet declared, therefore we cannot provide the C++ aliases. - On glibc systems with GCC 4.3 we have a sequence of nested includes -> -> -> . In this situation, some of the functions are not yet declared, therefore we cannot provide the C++ aliases. */ # @INCLUDE_NEXT@ @NEXT_SIGNAL_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_SIGNAL_H #define _GL_ALREADY_INCLUDING_SIGNAL_H /* Define pid_t, uid_t. Also, mingw defines sigset_t not in , but in . On Solaris 10, includes , which eventually includes us; so include now, before the second inclusion guard. */ #include /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_SIGNAL_H@ #undef _GL_ALREADY_INCLUDING_SIGNAL_H #ifndef _@GUARD_PREFIX@_SIGNAL_H #define _@GUARD_PREFIX@_SIGNAL_H /* For testing the OpenBSD version. */ #if (@GNULIB_PTHREAD_SIGMASK@ || defined GNULIB_POSIXCHECK) \ && defined __OpenBSD__ # include #endif /* Mac OS X 10.3, FreeBSD < 8.0, OpenBSD < 5.1, OSF/1 4.0, Solaris 2.6, Android, OS/2 kLIBC declare pthread_sigmask in , not in . But avoid namespace pollution on glibc systems.*/ #if (@GNULIB_PTHREAD_SIGMASK@ || defined GNULIB_POSIXCHECK) \ && ((defined __APPLE__ && defined __MACH__) \ || (defined __FreeBSD__ && __FreeBSD__ < 8) \ || (defined __OpenBSD__ && OpenBSD < 201205) \ || defined __osf__ || defined __sun || defined __ANDROID__ \ || defined __KLIBC__) \ && ! defined __GLIBC__ # include #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* On AIX, sig_atomic_t already includes volatile. C99 requires that 'volatile sig_atomic_t' ignore the extra modifier, but C89 did not. Hence, redefine this to a non-volatile type as needed. */ #if ! @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ # if !GNULIB_defined_sig_atomic_t typedef int rpl_sig_atomic_t; # undef sig_atomic_t # define sig_atomic_t rpl_sig_atomic_t # define GNULIB_defined_sig_atomic_t 1 # endif #endif /* A set or mask of signals. */ #if !@HAVE_SIGSET_T@ # if !GNULIB_defined_sigset_t typedef unsigned int sigset_t; # define GNULIB_defined_sigset_t 1 # endif #endif /* Define sighandler_t, the type of signal handlers. A GNU extension. */ #if !@HAVE_SIGHANDLER_T@ # ifdef __cplusplus extern "C" { # endif # if !GNULIB_defined_sighandler_t typedef void (*sighandler_t) (int); # define GNULIB_defined_sighandler_t 1 # endif # ifdef __cplusplus } # endif #endif #if @GNULIB_SIGNAL_H_SIGPIPE@ # ifndef SIGPIPE /* Define SIGPIPE to a value that does not overlap with other signals. */ # define SIGPIPE 13 # define GNULIB_defined_SIGPIPE 1 /* To actually use SIGPIPE, you also need the gnulib modules 'sigprocmask', 'write', 'stdio'. */ # endif #endif /* Maximum signal number + 1. */ #ifndef NSIG # if defined __TANDEM # define NSIG 32 # endif #endif #if @GNULIB_PTHREAD_SIGMASK@ # if @REPLACE_PTHREAD_SIGMASK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef pthread_sigmask # define pthread_sigmask rpl_pthread_sigmask # endif _GL_FUNCDECL_RPL (pthread_sigmask, int, (int how, const sigset_t *restrict new_mask, sigset_t *restrict old_mask)); _GL_CXXALIAS_RPL (pthread_sigmask, int, (int how, const sigset_t *restrict new_mask, sigset_t *restrict old_mask)); # else # if !(@HAVE_PTHREAD_SIGMASK@ || defined pthread_sigmask) _GL_FUNCDECL_SYS (pthread_sigmask, int, (int how, const sigset_t *restrict new_mask, sigset_t *restrict old_mask)); # endif _GL_CXXALIAS_SYS (pthread_sigmask, int, (int how, const sigset_t *restrict new_mask, sigset_t *restrict old_mask)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (pthread_sigmask); # endif #elif defined GNULIB_POSIXCHECK # undef pthread_sigmask # if HAVE_RAW_DECL_PTHREAD_SIGMASK _GL_WARN_ON_USE (pthread_sigmask, "pthread_sigmask is not portable - " "use gnulib module pthread_sigmask for portability"); # endif #endif #if @GNULIB_RAISE@ # if @REPLACE_RAISE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef raise # define raise rpl_raise # endif _GL_FUNCDECL_RPL (raise, int, (int sig)); _GL_CXXALIAS_RPL (raise, int, (int sig)); # else # if !@HAVE_RAISE@ _GL_FUNCDECL_SYS (raise, int, (int sig)); # endif _GL_CXXALIAS_SYS (raise, int, (int sig)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (raise); # endif #elif defined GNULIB_POSIXCHECK # undef raise /* Assume raise is always declared. */ _GL_WARN_ON_USE (raise, "raise can crash on native Windows - " "use gnulib module raise for portability"); #endif #if @GNULIB_SIGPROCMASK@ # if !@HAVE_POSIX_SIGNALBLOCKING@ # ifndef GNULIB_defined_signal_blocking # define GNULIB_defined_signal_blocking 1 # endif /* Maximum signal number + 1. */ # ifndef NSIG # define NSIG 32 # endif /* This code supports only 32 signals. */ # if !GNULIB_defined_verify_NSIG_constraint typedef int verify_NSIG_constraint[NSIG <= 32 ? 1 : -1]; # define GNULIB_defined_verify_NSIG_constraint 1 # endif # endif /* When also using extern inline, suppress the use of static inline in standard headers of problematic Apple configurations, as Libc at least through Libc-825.26 (2013-04-09) mishandles it; see, e.g., . Perhaps Apple will fix this some day. */ #if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \ && (defined __i386__ || defined __x86_64__)) # undef sigaddset # undef sigdelset # undef sigemptyset # undef sigfillset # undef sigismember #endif /* Test whether a given signal is contained in a signal set. */ # if @HAVE_POSIX_SIGNALBLOCKING@ /* This function is defined as a macro on Mac OS X. */ # if defined __cplusplus && defined GNULIB_NAMESPACE # undef sigismember # endif # else _GL_FUNCDECL_SYS (sigismember, int, (const sigset_t *set, int sig) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (sigismember, int, (const sigset_t *set, int sig)); _GL_CXXALIASWARN (sigismember); /* Initialize a signal set to the empty set. */ # if @HAVE_POSIX_SIGNALBLOCKING@ /* This function is defined as a macro on Mac OS X. */ # if defined __cplusplus && defined GNULIB_NAMESPACE # undef sigemptyset # endif # else _GL_FUNCDECL_SYS (sigemptyset, int, (sigset_t *set) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (sigemptyset, int, (sigset_t *set)); _GL_CXXALIASWARN (sigemptyset); /* Add a signal to a signal set. */ # if @HAVE_POSIX_SIGNALBLOCKING@ /* This function is defined as a macro on Mac OS X. */ # if defined __cplusplus && defined GNULIB_NAMESPACE # undef sigaddset # endif # else _GL_FUNCDECL_SYS (sigaddset, int, (sigset_t *set, int sig) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (sigaddset, int, (sigset_t *set, int sig)); _GL_CXXALIASWARN (sigaddset); /* Remove a signal from a signal set. */ # if @HAVE_POSIX_SIGNALBLOCKING@ /* This function is defined as a macro on Mac OS X. */ # if defined __cplusplus && defined GNULIB_NAMESPACE # undef sigdelset # endif # else _GL_FUNCDECL_SYS (sigdelset, int, (sigset_t *set, int sig) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (sigdelset, int, (sigset_t *set, int sig)); _GL_CXXALIASWARN (sigdelset); /* Fill a signal set with all possible signals. */ # if @HAVE_POSIX_SIGNALBLOCKING@ /* This function is defined as a macro on Mac OS X. */ # if defined __cplusplus && defined GNULIB_NAMESPACE # undef sigfillset # endif # else _GL_FUNCDECL_SYS (sigfillset, int, (sigset_t *set) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (sigfillset, int, (sigset_t *set)); _GL_CXXALIASWARN (sigfillset); /* Return the set of those blocked signals that are pending. */ # if !@HAVE_POSIX_SIGNALBLOCKING@ _GL_FUNCDECL_SYS (sigpending, int, (sigset_t *set) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (sigpending, int, (sigset_t *set)); _GL_CXXALIASWARN (sigpending); /* If OLD_SET is not NULL, put the current set of blocked signals in *OLD_SET. Then, if SET is not NULL, affect the current set of blocked signals by combining it with *SET as indicated in OPERATION. In this implementation, you are not allowed to change a signal handler while the signal is blocked. */ # if !@HAVE_POSIX_SIGNALBLOCKING@ # define SIG_BLOCK 0 /* blocked_set = blocked_set | *set; */ # define SIG_SETMASK 1 /* blocked_set = *set; */ # define SIG_UNBLOCK 2 /* blocked_set = blocked_set & ~*set; */ _GL_FUNCDECL_SYS (sigprocmask, int, (int operation, const sigset_t *restrict set, sigset_t *restrict old_set)); # endif _GL_CXXALIAS_SYS (sigprocmask, int, (int operation, const sigset_t *restrict set, sigset_t *restrict old_set)); _GL_CXXALIASWARN (sigprocmask); /* Install the handler FUNC for signal SIG, and return the previous handler. */ # ifdef __cplusplus extern "C" { # endif # if !GNULIB_defined_function_taking_int_returning_void_t typedef void (*_gl_function_taking_int_returning_void_t) (int); # define GNULIB_defined_function_taking_int_returning_void_t 1 # endif # ifdef __cplusplus } # endif # if !@HAVE_POSIX_SIGNALBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define signal rpl_signal # endif _GL_FUNCDECL_RPL (signal, _gl_function_taking_int_returning_void_t, (int sig, _gl_function_taking_int_returning_void_t func)); _GL_CXXALIAS_RPL (signal, _gl_function_taking_int_returning_void_t, (int sig, _gl_function_taking_int_returning_void_t func)); # else /* On OpenBSD, the declaration of 'signal' may not be present at this point, because it occurs in , not directly. */ # if defined __OpenBSD__ _GL_FUNCDECL_SYS (signal, _gl_function_taking_int_returning_void_t, (int sig, _gl_function_taking_int_returning_void_t func)); # endif _GL_CXXALIAS_SYS (signal, _gl_function_taking_int_returning_void_t, (int sig, _gl_function_taking_int_returning_void_t func)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (signal); # endif # if !@HAVE_POSIX_SIGNALBLOCKING@ && GNULIB_defined_SIGPIPE /* Raise signal SIGPIPE. */ _GL_EXTERN_C int _gl_raise_SIGPIPE (void); # endif #elif defined GNULIB_POSIXCHECK # undef sigaddset # if HAVE_RAW_DECL_SIGADDSET _GL_WARN_ON_USE (sigaddset, "sigaddset is unportable - " "use the gnulib module sigprocmask for portability"); # endif # undef sigdelset # if HAVE_RAW_DECL_SIGDELSET _GL_WARN_ON_USE (sigdelset, "sigdelset is unportable - " "use the gnulib module sigprocmask for portability"); # endif # undef sigemptyset # if HAVE_RAW_DECL_SIGEMPTYSET _GL_WARN_ON_USE (sigemptyset, "sigemptyset is unportable - " "use the gnulib module sigprocmask for portability"); # endif # undef sigfillset # if HAVE_RAW_DECL_SIGFILLSET _GL_WARN_ON_USE (sigfillset, "sigfillset is unportable - " "use the gnulib module sigprocmask for portability"); # endif # undef sigismember # if HAVE_RAW_DECL_SIGISMEMBER _GL_WARN_ON_USE (sigismember, "sigismember is unportable - " "use the gnulib module sigprocmask for portability"); # endif # undef sigpending # if HAVE_RAW_DECL_SIGPENDING _GL_WARN_ON_USE (sigpending, "sigpending is unportable - " "use the gnulib module sigprocmask for portability"); # endif # undef sigprocmask # if HAVE_RAW_DECL_SIGPROCMASK _GL_WARN_ON_USE (sigprocmask, "sigprocmask is unportable - " "use the gnulib module sigprocmask for portability"); # endif #endif /* @GNULIB_SIGPROCMASK@ */ #if @GNULIB_SIGACTION@ # if !@HAVE_SIGACTION@ # if !@HAVE_SIGINFO_T@ # if !GNULIB_defined_siginfo_types /* Present to allow compilation, but unsupported by gnulib. */ union sigval { int sival_int; void *sival_ptr; }; /* Present to allow compilation, but unsupported by gnulib. */ struct siginfo_t { int si_signo; int si_code; int si_errno; pid_t si_pid; uid_t si_uid; void *si_addr; int si_status; long si_band; union sigval si_value; }; typedef struct siginfo_t siginfo_t; # define GNULIB_defined_siginfo_types 1 # endif # endif /* !@HAVE_SIGINFO_T@ */ /* We assume that platforms which lack the sigaction() function also lack the 'struct sigaction' type, and vice versa. */ # if !GNULIB_defined_struct_sigaction struct sigaction { union { void (*_sa_handler) (int); /* Present to allow compilation, but unsupported by gnulib. POSIX says that implementations may, but not must, make sa_sigaction overlap with sa_handler, but we know of no implementation where they do not overlap. */ void (*_sa_sigaction) (int, siginfo_t *, void *); } _sa_func; sigset_t sa_mask; /* Not all POSIX flags are supported. */ int sa_flags; }; # define sa_handler _sa_func._sa_handler # define sa_sigaction _sa_func._sa_sigaction /* Unsupported flags are not present. */ # define SA_RESETHAND 1 # define SA_NODEFER 2 # define SA_RESTART 4 # define GNULIB_defined_struct_sigaction 1 # endif _GL_FUNCDECL_SYS (sigaction, int, (int, const struct sigaction *restrict, struct sigaction *restrict)); # elif !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ # define sa_sigaction sa_handler # endif /* !@HAVE_SIGACTION@, !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ */ _GL_CXXALIAS_SYS (sigaction, int, (int, const struct sigaction *restrict, struct sigaction *restrict)); _GL_CXXALIASWARN (sigaction); #elif defined GNULIB_POSIXCHECK # undef sigaction # if HAVE_RAW_DECL_SIGACTION _GL_WARN_ON_USE (sigaction, "sigaction is unportable - " "use the gnulib module sigaction for portability"); # endif #endif /* Some systems don't have SA_NODEFER. */ #ifndef SA_NODEFER # define SA_NODEFER 0 #endif #endif /* _@GUARD_PREFIX@_SIGNAL_H */ #endif /* _@GUARD_PREFIX@_SIGNAL_H */ #endif recode-3.7.15/lib/xsize.h0000644000175000017500000000675714371444255010642 /* xsize.h -- Checked size_t computations. Copyright (C) 2003, 2008-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _XSIZE_H #define _XSIZE_H /* Get size_t. */ #include /* Get SIZE_MAX. */ #include #if HAVE_STDINT_H # include #endif /* Get ATTRIBUTE_PURE. */ #include "attribute.h" #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef XSIZE_INLINE # define XSIZE_INLINE _GL_INLINE #endif /* The size of memory objects is often computed through expressions of type size_t. Example: void* p = malloc (header_size + n * element_size). These computations can lead to overflow. When this happens, malloc() returns a piece of memory that is way too small, and the program then crashes while attempting to fill the memory. To avoid this, the functions and macros in this file check for overflow. The convention is that SIZE_MAX represents overflow. malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc implementation that uses mmap --, it's recommended to use size_overflow_p() or size_in_bounds_p() before invoking malloc(). The example thus becomes: size_t size = xsum (header_size, xtimes (n, element_size)); void *p = (size_in_bounds_p (size) ? malloc (size) : NULL); */ /* Convert an arbitrary value >= 0 to type size_t. */ #define xcast_size_t(N) \ ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX) /* Sum of two sizes, with overflow check. */ XSIZE_INLINE size_t ATTRIBUTE_PURE xsum (size_t size1, size_t size2) { size_t sum = size1 + size2; return (sum >= size1 ? sum : SIZE_MAX); } /* Sum of three sizes, with overflow check. */ XSIZE_INLINE size_t ATTRIBUTE_PURE xsum3 (size_t size1, size_t size2, size_t size3) { return xsum (xsum (size1, size2), size3); } /* Sum of four sizes, with overflow check. */ XSIZE_INLINE size_t ATTRIBUTE_PURE xsum4 (size_t size1, size_t size2, size_t size3, size_t size4) { return xsum (xsum (xsum (size1, size2), size3), size4); } /* Maximum of two sizes, with overflow check. */ XSIZE_INLINE size_t ATTRIBUTE_PURE xmax (size_t size1, size_t size2) { /* No explicit check is needed here, because for any n: max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX. */ return (size1 >= size2 ? size1 : size2); } /* Multiplication of a count with an element size, with overflow check. The count must be >= 0 and the element size must be > 0. This is a macro, not a function, so that it works correctly even when N is of a wider type and N > SIZE_MAX. */ #define xtimes(N, ELSIZE) \ ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX) /* Check for overflow. */ #define size_overflow_p(SIZE) \ ((SIZE) == SIZE_MAX) /* Check against overflow. */ #define size_in_bounds_p(SIZE) \ ((SIZE) != SIZE_MAX) _GL_INLINE_HEADER_END #endif /* _XSIZE_H */ recode-3.7.15/lib/sig-handler.h0000644000175000017500000000356314371444255011665 /* Convenience declarations when working with . Copyright (C) 2008-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _GL_SIG_HANDLER_H #define _GL_SIG_HANDLER_H #include #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef SIG_HANDLER_INLINE # define SIG_HANDLER_INLINE _GL_INLINE #endif /* Convenience type when working with signal handlers. */ typedef void (*sa_handler_t) (int); /* Return the handler of a signal, as a sa_handler_t value regardless of its true type. The resulting function can be compared to special values like SIG_IGN but it is not portable to call it. */ SIG_HANDLER_INLINE sa_handler_t _GL_ATTRIBUTE_PURE get_handler (struct sigaction const *a) { /* POSIX says that special values like SIG_IGN can only occur when action.sa_flags does not contain SA_SIGINFO. But in Linux 2.4, for example, sa_sigaction and sa_handler are aliases and a signal is ignored if sa_sigaction (after casting) equals SIG_IGN. In this case, this implementation relies on the fact that the two are aliases, and simply returns sa_handler. */ return a->sa_handler; } _GL_INLINE_HEADER_END #endif /* _GL_SIG_HANDLER_H */ recode-3.7.15/lib/fcntl.c0000644000175000017500000004462114371444255010571 /* Provide file descriptor control. Copyright (C) 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Eric Blake . */ #include /* Specification. */ #include #include #include #include #include #include #ifdef __KLIBC__ # define INCL_DOS # include #endif #if defined _WIN32 && ! defined __CYGWIN__ /* Get declarations of the native Windows API functions. */ # define WIN32_LEAN_AND_MEAN # include /* Get _get_osfhandle. */ # if GNULIB_MSVC_NOTHROW # include "msvc-nothrow.h" # else # include # endif /* Upper bound on getdtablesize(). See lib/getdtablesize.c. */ # define OPEN_MAX_MAX 0x10000 /* Duplicate OLDFD into the first available slot of at least NEWFD, which must be positive, with FLAGS determining whether the duplicate will be inheritable. */ static int dupfd (int oldfd, int newfd, int flags) { /* Mingw has no way to create an arbitrary fd. Iterate until all file descriptors less than newfd are filled up. */ HANDLE curr_process = GetCurrentProcess (); HANDLE old_handle = (HANDLE) _get_osfhandle (oldfd); unsigned char fds_to_close[OPEN_MAX_MAX / CHAR_BIT]; unsigned int fds_to_close_bound = 0; int result; BOOL inherit = flags & O_CLOEXEC ? FALSE : TRUE; int mode; if (newfd < 0 || getdtablesize () <= newfd) { errno = EINVAL; return -1; } if (old_handle == INVALID_HANDLE_VALUE || (mode = _setmode (oldfd, O_BINARY)) == -1) { /* oldfd is not open, or is an unassigned standard file descriptor. */ errno = EBADF; return -1; } _setmode (oldfd, mode); flags |= mode; for (;;) { HANDLE new_handle; int duplicated_fd; unsigned int index; if (!DuplicateHandle (curr_process, /* SourceProcessHandle */ old_handle, /* SourceHandle */ curr_process, /* TargetProcessHandle */ (PHANDLE) &new_handle, /* TargetHandle */ (DWORD) 0, /* DesiredAccess */ inherit, /* InheritHandle */ DUPLICATE_SAME_ACCESS)) /* Options */ { switch (GetLastError ()) { case ERROR_TOO_MANY_OPEN_FILES: errno = EMFILE; break; case ERROR_INVALID_HANDLE: case ERROR_INVALID_TARGET_HANDLE: case ERROR_DIRECT_ACCESS_HANDLE: errno = EBADF; break; case ERROR_INVALID_PARAMETER: case ERROR_INVALID_FUNCTION: case ERROR_INVALID_ACCESS: errno = EINVAL; break; default: errno = EACCES; break; } result = -1; break; } duplicated_fd = _open_osfhandle ((intptr_t) new_handle, flags); if (duplicated_fd < 0) { CloseHandle (new_handle); result = -1; break; } if (newfd <= duplicated_fd) { result = duplicated_fd; break; } /* Set the bit duplicated_fd in fds_to_close[]. */ index = (unsigned int) duplicated_fd / CHAR_BIT; if (fds_to_close_bound <= index) { if (sizeof fds_to_close <= index) /* Need to increase OPEN_MAX_MAX. */ abort (); memset (fds_to_close + fds_to_close_bound, '\0', index + 1 - fds_to_close_bound); fds_to_close_bound = index + 1; } fds_to_close[index] |= 1 << ((unsigned int) duplicated_fd % CHAR_BIT); } /* Close the previous fds that turned out to be too small. */ { int saved_errno = errno; unsigned int duplicated_fd; for (duplicated_fd = 0; duplicated_fd < fds_to_close_bound * CHAR_BIT; duplicated_fd++) if ((fds_to_close[duplicated_fd / CHAR_BIT] >> (duplicated_fd % CHAR_BIT)) & 1) close (duplicated_fd); errno = saved_errno; } # if REPLACE_FCHDIR if (0 <= result) result = _gl_register_dup (oldfd, result); # endif return result; } #endif /* W32 */ /* Forward declarations, because we '#undef fcntl' in the middle of this compilation unit. */ /* Our implementation of fcntl (fd, F_DUPFD, target). */ static int rpl_fcntl_DUPFD (int fd, int target); /* Our implementation of fcntl (fd, F_DUPFD_CLOEXEC, target). */ static int rpl_fcntl_DUPFD_CLOEXEC (int fd, int target); #ifdef __KLIBC__ /* Adds support for fcntl on directories. */ static int klibc_fcntl (int fd, int action, /* arg */...); #endif /* Perform the specified ACTION on the file descriptor FD, possibly using the argument ARG further described below. This replacement handles the following actions, and forwards all others on to the native fcntl. An unrecognized ACTION returns -1 with errno set to EINVAL. F_DUPFD - duplicate FD, with int ARG being the minimum target fd. If successful, return the duplicate, which will be inheritable; otherwise return -1 and set errno. F_DUPFD_CLOEXEC - duplicate FD, with int ARG being the minimum target fd. If successful, return the duplicate, which will not be inheritable; otherwise return -1 and set errno. F_GETFD - ARG need not be present. If successful, return a non-negative value containing the descriptor flags of FD (only FD_CLOEXEC is portable, but other flags may be present); otherwise return -1 and set errno. */ int fcntl (int fd, int action, /* arg */...) #undef fcntl #ifdef __KLIBC__ # define fcntl klibc_fcntl #endif { va_list arg; int result = -1; va_start (arg, action); switch (action) { case F_DUPFD: { int target = va_arg (arg, int); result = rpl_fcntl_DUPFD (fd, target); break; } case F_DUPFD_CLOEXEC: { int target = va_arg (arg, int); result = rpl_fcntl_DUPFD_CLOEXEC (fd, target); break; } #if !HAVE_FCNTL case F_GETFD: { # if defined _WIN32 && ! defined __CYGWIN__ HANDLE handle = (HANDLE) _get_osfhandle (fd); DWORD flags; if (handle == INVALID_HANDLE_VALUE || GetHandleInformation (handle, &flags) == 0) errno = EBADF; else result = (flags & HANDLE_FLAG_INHERIT) ? 0 : FD_CLOEXEC; # else /* !W32 */ /* Use dup2 to reject invalid file descriptors. No way to access this information, so punt. */ if (0 <= dup2 (fd, fd)) result = 0; # endif /* !W32 */ break; } /* F_GETFD */ #endif /* !HAVE_FCNTL */ /* Implementing F_SETFD on mingw is not trivial - there is no API for changing the O_NOINHERIT bit on an fd, and merely changing the HANDLE_FLAG_INHERIT bit on the underlying handle can lead to odd state. It may be possible by duplicating the handle, using _open_osfhandle with the right flags, then using dup2 to move the duplicate onto the original, but that is not supported for now. */ default: { #if HAVE_FCNTL switch (action) { #ifdef F_BARRIERFSYNC /* macOS */ case F_BARRIERFSYNC: #endif #ifdef F_CHKCLEAN /* macOS */ case F_CHKCLEAN: #endif #ifdef F_CLOSEM /* NetBSD, HP-UX */ case F_CLOSEM: #endif #ifdef F_FLUSH_DATA /* macOS */ case F_FLUSH_DATA: #endif #ifdef F_FREEZE_FS /* macOS */ case F_FREEZE_FS: #endif #ifdef F_FULLFSYNC /* macOS */ case F_FULLFSYNC: #endif #ifdef F_GETCONFINED /* macOS */ case F_GETCONFINED: #endif #ifdef F_GETDEFAULTPROTLEVEL /* macOS */ case F_GETDEFAULTPROTLEVEL: #endif #ifdef F_GETFD /* POSIX */ case F_GETFD: #endif #ifdef F_GETFL /* POSIX */ case F_GETFL: #endif #ifdef F_GETLEASE /* Linux */ case F_GETLEASE: #endif #ifdef F_GETNOSIGPIPE /* macOS */ case F_GETNOSIGPIPE: #endif #ifdef F_GETOWN /* POSIX */ case F_GETOWN: #endif #ifdef F_GETPIPE_SZ /* Linux */ case F_GETPIPE_SZ: #endif #ifdef F_GETPROTECTIONCLASS /* macOS */ case F_GETPROTECTIONCLASS: #endif #ifdef F_GETPROTECTIONLEVEL /* macOS */ case F_GETPROTECTIONLEVEL: #endif #ifdef F_GET_SEALS /* Linux */ case F_GET_SEALS: #endif #ifdef F_GETSIG /* Linux */ case F_GETSIG: #endif #ifdef F_MAXFD /* NetBSD */ case F_MAXFD: #endif #ifdef F_RECYCLE /* macOS */ case F_RECYCLE: #endif #ifdef F_SETFIFOENH /* HP-UX */ case F_SETFIFOENH: #endif #ifdef F_THAW_FS /* macOS */ case F_THAW_FS: #endif /* These actions take no argument. */ result = fcntl (fd, action); break; #ifdef F_ADD_SEALS /* Linux */ case F_ADD_SEALS: #endif #ifdef F_BADFD /* Solaris */ case F_BADFD: #endif #ifdef F_CHECK_OPENEVT /* macOS */ case F_CHECK_OPENEVT: #endif #ifdef F_DUP2FD /* FreeBSD, AIX, Solaris */ case F_DUP2FD: #endif #ifdef F_DUP2FD_CLOEXEC /* FreeBSD, Solaris */ case F_DUP2FD_CLOEXEC: #endif #ifdef F_DUP2FD_CLOFORK /* Solaris */ case F_DUP2FD_CLOFORK: #endif #ifdef F_DUPFD /* POSIX */ case F_DUPFD: #endif #ifdef F_DUPFD_CLOEXEC /* POSIX */ case F_DUPFD_CLOEXEC: #endif #ifdef F_DUPFD_CLOFORK /* Solaris */ case F_DUPFD_CLOFORK: #endif #ifdef F_GETXFL /* Solaris */ case F_GETXFL: #endif #ifdef F_GLOBAL_NOCACHE /* macOS */ case F_GLOBAL_NOCACHE: #endif #ifdef F_MAKECOMPRESSED /* macOS */ case F_MAKECOMPRESSED: #endif #ifdef F_MOVEDATAEXTENTS /* macOS */ case F_MOVEDATAEXTENTS: #endif #ifdef F_NOCACHE /* macOS */ case F_NOCACHE: #endif #ifdef F_NODIRECT /* macOS */ case F_NODIRECT: #endif #ifdef F_NOTIFY /* Linux */ case F_NOTIFY: #endif #ifdef F_OPLKACK /* IRIX */ case F_OPLKACK: #endif #ifdef F_OPLKREG /* IRIX */ case F_OPLKREG: #endif #ifdef F_RDAHEAD /* macOS */ case F_RDAHEAD: #endif #ifdef F_SETBACKINGSTORE /* macOS */ case F_SETBACKINGSTORE: #endif #ifdef F_SETCONFINED /* macOS */ case F_SETCONFINED: #endif #ifdef F_SETFD /* POSIX */ case F_SETFD: #endif #ifdef F_SETFL /* POSIX */ case F_SETFL: #endif #ifdef F_SETLEASE /* Linux */ case F_SETLEASE: #endif #ifdef F_SETNOSIGPIPE /* macOS */ case F_SETNOSIGPIPE: #endif #ifdef F_SETOWN /* POSIX */ case F_SETOWN: #endif #ifdef F_SETPIPE_SZ /* Linux */ case F_SETPIPE_SZ: #endif #ifdef F_SETPROTECTIONCLASS /* macOS */ case F_SETPROTECTIONCLASS: #endif #ifdef F_SETSIG /* Linux */ case F_SETSIG: #endif #ifdef F_SINGLE_WRITER /* macOS */ case F_SINGLE_WRITER: #endif /* These actions take an 'int' argument. */ { int x = va_arg (arg, int); result = fcntl (fd, action, x); } break; default: /* Other actions take a pointer argument. */ { void *p = va_arg (arg, void *); result = fcntl (fd, action, p); } break; } #else errno = EINVAL; #endif break; } } va_end (arg); return result; } static int rpl_fcntl_DUPFD (int fd, int target) { int result; #if !HAVE_FCNTL result = dupfd (fd, target, 0); #elif FCNTL_DUPFD_BUGGY || REPLACE_FCHDIR /* Detect invalid target; needed for cygwin 1.5.x. */ if (target < 0 || getdtablesize () <= target) { result = -1; errno = EINVAL; } else { /* Haiku alpha 2 loses fd flags on original. */ int flags = fcntl (fd, F_GETFD); if (flags < 0) result = -1; else { result = fcntl (fd, F_DUPFD, target); if (0 <= result && fcntl (fd, F_SETFD, flags) == -1) { int saved_errno = errno; close (result); result = -1; errno = saved_errno; } # if REPLACE_FCHDIR if (0 <= result) result = _gl_register_dup (fd, result); # endif } } #else result = fcntl (fd, F_DUPFD, target); #endif return result; } static int rpl_fcntl_DUPFD_CLOEXEC (int fd, int target) { int result; #if !HAVE_FCNTL result = dupfd (fd, target, O_CLOEXEC); #else /* HAVE_FCNTL */ # if defined __NetBSD__ || defined __HAIKU__ /* On NetBSD 9.0, the system fcntl (fd, F_DUPFD_CLOEXEC, target) has only the same effect as fcntl (fd, F_DUPFD, target). */ /* On Haiku, the system fcntl (fd, F_DUPFD_CLOEXEC, target) sets the FD_CLOEXEC flag on fd, not on target. Therefore avoid the system fcntl in this case. */ # define have_dupfd_cloexec -1 # else /* Try the system call first, if the headers claim it exists (that is, if GNULIB_defined_F_DUPFD_CLOEXEC is 0), since we may be running with a glibc that has the macro but with an older kernel that does not support it. Cache the information on whether the system call really works, but avoid caching failure if the corresponding F_DUPFD fails for any reason. 0 = unknown, 1 = yes, -1 = no. */ static int have_dupfd_cloexec = GNULIB_defined_F_DUPFD_CLOEXEC ? -1 : 0; if (0 <= have_dupfd_cloexec) { result = fcntl (fd, F_DUPFD_CLOEXEC, target); if (0 <= result || errno != EINVAL) { have_dupfd_cloexec = 1; # if REPLACE_FCHDIR if (0 <= result) result = _gl_register_dup (fd, result); # endif } else { result = rpl_fcntl_DUPFD (fd, target); if (result >= 0) have_dupfd_cloexec = -1; } } else # endif result = rpl_fcntl_DUPFD (fd, target); if (0 <= result && have_dupfd_cloexec == -1) { int flags = fcntl (result, F_GETFD); if (flags < 0 || fcntl (result, F_SETFD, flags | FD_CLOEXEC) == -1) { int saved_errno = errno; close (result); errno = saved_errno; result = -1; } } #endif /* HAVE_FCNTL */ return result; } #undef fcntl #ifdef __KLIBC__ static int klibc_fcntl (int fd, int action, /* arg */...) { va_list arg_ptr; int arg; struct stat sbuf; int result; va_start (arg_ptr, action); arg = va_arg (arg_ptr, int); result = fcntl (fd, action, arg); /* EPERM for F_DUPFD, ENOTSUP for others */ if (result == -1 && (errno == EPERM || errno == ENOTSUP) && !fstat (fd, &sbuf) && S_ISDIR (sbuf.st_mode)) { ULONG ulMode; switch (action) { case F_DUPFD: /* Find available fd */ while (fcntl (arg, F_GETFL) != -1 || errno != EBADF) arg++; result = dup2 (fd, arg); break; /* Using underlying APIs is right ? */ case F_GETFD: if (DosQueryFHState (fd, &ulMode)) break; result = (ulMode & OPEN_FLAGS_NOINHERIT) ? FD_CLOEXEC : 0; break; case F_SETFD: if (arg & ~FD_CLOEXEC) break; if (DosQueryFHState (fd, &ulMode)) break; if (arg & FD_CLOEXEC) ulMode |= OPEN_FLAGS_NOINHERIT; else ulMode &= ~OPEN_FLAGS_NOINHERIT; /* Filter supported flags. */ ulMode &= (OPEN_FLAGS_WRITE_THROUGH | OPEN_FLAGS_FAIL_ON_ERROR | OPEN_FLAGS_NO_CACHE | OPEN_FLAGS_NOINHERIT); if (DosSetFHState (fd, ulMode)) break; result = 0; break; case F_GETFL: result = 0; break; case F_SETFL: if (arg != 0) break; result = 0; break; default: errno = EINVAL; break; } } va_end (arg_ptr); return result; } #endif recode-3.7.15/lib/getrandom.c0000644000175000017500000001316514371444255011442 /* Obtain a series of random bytes. Copyright 2020-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Paul Eggert. */ #include #include #include #include #include #if defined _WIN32 && ! defined __CYGWIN__ # define WIN32_LEAN_AND_MEAN # include # if HAVE_BCRYPT_H # include # else # define NTSTATUS LONG typedef void * BCRYPT_ALG_HANDLE; # define BCRYPT_USE_SYSTEM_PREFERRED_RNG 0x00000002 # if HAVE_LIB_BCRYPT extern NTSTATUS WINAPI BCryptGenRandom (BCRYPT_ALG_HANDLE, UCHAR *, ULONG, ULONG); # endif # endif # if !HAVE_LIB_BCRYPT # include # ifndef CRYPT_VERIFY_CONTEXT # define CRYPT_VERIFY_CONTEXT 0xF0000000 # endif # endif #endif #include "minmax.h" #if defined _WIN32 && ! defined __CYGWIN__ /* Don't assume that UNICODE is not defined. */ # undef LoadLibrary # define LoadLibrary LoadLibraryA # undef CryptAcquireContext # define CryptAcquireContext CryptAcquireContextA # if !HAVE_LIB_BCRYPT /* Avoid warnings from gcc -Wcast-function-type. */ # define GetProcAddress \ (void *) GetProcAddress /* BCryptGenRandom with the BCRYPT_USE_SYSTEM_PREFERRED_RNG flag works only starting with Windows 7. */ typedef NTSTATUS (WINAPI * BCryptGenRandomFuncType) (BCRYPT_ALG_HANDLE, UCHAR *, ULONG, ULONG); static BCryptGenRandomFuncType BCryptGenRandomFunc = NULL; static BOOL initialized = FALSE; static void initialize (void) { HMODULE bcrypt = LoadLibrary ("bcrypt.dll"); if (bcrypt != NULL) { BCryptGenRandomFunc = (BCryptGenRandomFuncType) GetProcAddress (bcrypt, "BCryptGenRandom"); } initialized = TRUE; } # else # define BCryptGenRandomFunc BCryptGenRandom # endif #else /* These devices exist on all platforms except native Windows. */ /* Name of a device through which the kernel returns high quality random numbers, from an entropy pool. When the pool is empty, the call blocks until entropy sources have added enough bits of entropy. */ # ifndef NAME_OF_RANDOM_DEVICE # define NAME_OF_RANDOM_DEVICE "/dev/random" # endif /* Name of a device through which the kernel returns random or pseudo-random numbers. It uses an entropy pool, but, in order to avoid blocking, adds bits generated by a pseudo-random number generator, as needed. */ # ifndef NAME_OF_NONCE_DEVICE # define NAME_OF_NONCE_DEVICE "/dev/urandom" # endif #endif /* Set BUFFER (of size LENGTH) to random bytes under the control of FLAGS. Return the number of bytes written (> 0). Upon error, return -1 and set errno. */ ssize_t getrandom (void *buffer, size_t length, unsigned int flags) #undef getrandom { #if defined _WIN32 && ! defined __CYGWIN__ /* BCryptGenRandom, defined in with the BCRYPT_USE_SYSTEM_PREFERRED_RNG flag works in Windows 7 and newer. */ static int bcrypt_not_working /* = 0 */; if (!bcrypt_not_working) { # if !HAVE_LIB_BCRYPT if (!initialized) initialize (); # endif if (BCryptGenRandomFunc != NULL && BCryptGenRandomFunc (NULL, buffer, length, BCRYPT_USE_SYSTEM_PREFERRED_RNG) == 0 /*STATUS_SUCCESS*/) return length; bcrypt_not_working = 1; } # if !HAVE_LIB_BCRYPT /* CryptGenRandom, defined in works in older releases as well, but is now deprecated. CryptAcquireContext, defined in */ { static int crypt_initialized /* = 0 */; static HCRYPTPROV provider; if (!crypt_initialized) { if (CryptAcquireContext (&provider, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFY_CONTEXT)) crypt_initialized = 1; else crypt_initialized = -1; } if (crypt_initialized >= 0) { if (!CryptGenRandom (provider, length, buffer)) { errno = EIO; return -1; } return length; } } # endif errno = ENOSYS; return -1; #elif HAVE_GETRANDOM return getrandom (buffer, length, flags); #else static int randfd[2] = { -1, -1 }; bool devrandom = (flags & GRND_RANDOM) != 0; int fd = randfd[devrandom]; if (fd < 0) { static char const randdevice[][MAX (sizeof NAME_OF_NONCE_DEVICE, sizeof NAME_OF_RANDOM_DEVICE)] = { NAME_OF_NONCE_DEVICE, NAME_OF_RANDOM_DEVICE }; int oflags = (O_RDONLY + O_CLOEXEC + (flags & GRND_NONBLOCK ? O_NONBLOCK : 0)); fd = open (randdevice[devrandom], oflags); if (fd < 0) { if (errno == ENOENT || errno == ENOTDIR) errno = ENOSYS; return -1; } randfd[devrandom] = fd; } return read (fd, buffer, length); #endif } recode-3.7.15/lib/idx.h0000644000175000017500000001206214371444255010246 /* A type for indices and sizes. Copyright (C) 2020-2023 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ #ifndef _IDX_H #define _IDX_H /* Get ptrdiff_t. */ #include /* Get PTRDIFF_MAX. */ #include /* The type 'idx_t' holds an (array) index or an (object) size. Its implementation promotes to a signed integer type, which can hold the values 0..2^63-1 (on 64-bit platforms) or 0..2^31-1 (on 32-bit platforms). Why a signed integer type? * Security: Signed types can be checked for overflow via '-fsanitize=undefined', but unsigned types cannot. * Comparisons without surprises: ISO C99 § 6.3.1.8 specifies a few surprising results for comparisons, such as (int) -3 < (unsigned long) 7 => false (int) -3 < (unsigned int) 7 => false and on 32-bit machines: (long) -3 < (unsigned int) 7 => false This is surprising because the natural comparison order is by value in the realm of infinite-precision signed integers (ℤ). The best way to get rid of such surprises is to use signed types for numerical integer values, and use unsigned types only for bit masks and enums. Why not use 'size_t' directly? * Because 'size_t' is an unsigned type, and a signed type is better. See above. Why not use 'ssize_t'? * 'ptrdiff_t' is more portable; it is standardized by ISO C whereas 'ssize_t' is standardized only by POSIX. * 'ssize_t' is not required to be as wide as 'size_t', and some now-obsolete POSIX platforms had 'size_t' wider than 'ssize_t'. * Conversely, some now-obsolete platforms had 'ptrdiff_t' wider than 'size_t', which can be a win and conforms to POSIX. Won't this cause a problem with objects larger than PTRDIFF_MAX? * Typical modern or large platforms do not allocate such objects, so this is not much of a problem in practice; for example, you can safely write 'idx_t len = strlen (s);'. To port to older small platforms where allocations larger than PTRDIFF_MAX could in theory be a problem, you can use Gnulib's ialloc module, or functions like ximalloc in Gnulib's xalloc module. Why not use 'ptrdiff_t' directly? * Maintainability: When reading and modifying code, it helps to know that a certain variable cannot have negative values. For example, when you have a loop int n = ...; for (int i = 0; i < n; i++) ... or ptrdiff_t n = ...; for (ptrdiff_t i = 0; i < n; i++) ... you have to ask yourself "what if n < 0?". Whereas in idx_t n = ...; for (idx_t i = 0; i < n; i++) ... you know that this case cannot happen. Similarly, when a programmer writes idx_t = ptr2 - ptr1; there is an implied assertion that ptr1 and ptr2 point into the same object and that ptr1 <= ptr2. * Being future-proof: In the future, range types (integers which are constrained to a certain range of values) may be added to C compilers or to the C standard. Several programming languages (Ada, Haskell, Common Lisp, Pascal) already have range types. Such range types may help producing good code and good warnings. The type 'idx_t' could then be typedef'ed to a range type that is signed after promotion. */ /* In the future, idx_t could be typedef'ed to a signed range type. The clang "extended integer types", supported in Clang 11 or newer , are a special case of range types. However, these types don't support binary operators with plain integer types (e.g. expressions such as x > 1). Therefore, they don't behave like signed types (and not like unsigned types either). So, we cannot use them here. */ /* Use the signed type 'ptrdiff_t'. */ /* Note: ISO C does not mandate that 'size_t' and 'ptrdiff_t' have the same size, but it is so on all platforms we have seen since 1990. */ typedef ptrdiff_t idx_t; /* IDX_MAX is the maximum value of an idx_t. */ #define IDX_MAX PTRDIFF_MAX /* So far no need has been found for an IDX_WIDTH macro. Perhaps there should be another macro IDX_VALUE_BITS that does not count the sign bit and is therefore one less than PTRDIFF_WIDTH. */ #endif /* _IDX_H */ recode-3.7.15/lib/float+.h0000644000175000017500000001300714371444255010642 /* Supplemental information about the floating-point formats. Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2007. This file 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. This file 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 . */ #ifndef _FLOATPLUS_H #define _FLOATPLUS_H #include #include /* Number of bits in the mantissa of a floating-point number, including the "hidden bit". */ #if FLT_RADIX == 2 # define FLT_MANT_BIT FLT_MANT_DIG # define DBL_MANT_BIT DBL_MANT_DIG # define LDBL_MANT_BIT LDBL_MANT_DIG #elif FLT_RADIX == 4 # define FLT_MANT_BIT (FLT_MANT_DIG * 2) # define DBL_MANT_BIT (DBL_MANT_DIG * 2) # define LDBL_MANT_BIT (LDBL_MANT_DIG * 2) #elif FLT_RADIX == 16 # define FLT_MANT_BIT (FLT_MANT_DIG * 4) # define DBL_MANT_BIT (DBL_MANT_DIG * 4) # define LDBL_MANT_BIT (LDBL_MANT_DIG * 4) #endif /* Bit mask that can be used to mask the exponent, as an unsigned number. */ #define FLT_EXP_MASK ((FLT_MAX_EXP - FLT_MIN_EXP) | 7) #define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7) #define LDBL_EXP_MASK ((LDBL_MAX_EXP - LDBL_MIN_EXP) | 7) /* Number of bits used for the exponent of a floating-point number, including the exponent's sign. */ #define FLT_EXP_BIT \ (FLT_EXP_MASK < 0x100 ? 8 : \ FLT_EXP_MASK < 0x200 ? 9 : \ FLT_EXP_MASK < 0x400 ? 10 : \ FLT_EXP_MASK < 0x800 ? 11 : \ FLT_EXP_MASK < 0x1000 ? 12 : \ FLT_EXP_MASK < 0x2000 ? 13 : \ FLT_EXP_MASK < 0x4000 ? 14 : \ FLT_EXP_MASK < 0x8000 ? 15 : \ FLT_EXP_MASK < 0x10000 ? 16 : \ FLT_EXP_MASK < 0x20000 ? 17 : \ FLT_EXP_MASK < 0x40000 ? 18 : \ FLT_EXP_MASK < 0x80000 ? 19 : \ FLT_EXP_MASK < 0x100000 ? 20 : \ FLT_EXP_MASK < 0x200000 ? 21 : \ FLT_EXP_MASK < 0x400000 ? 22 : \ FLT_EXP_MASK < 0x800000 ? 23 : \ FLT_EXP_MASK < 0x1000000 ? 24 : \ FLT_EXP_MASK < 0x2000000 ? 25 : \ FLT_EXP_MASK < 0x4000000 ? 26 : \ FLT_EXP_MASK < 0x8000000 ? 27 : \ FLT_EXP_MASK < 0x10000000 ? 28 : \ FLT_EXP_MASK < 0x20000000 ? 29 : \ FLT_EXP_MASK < 0x40000000 ? 30 : \ FLT_EXP_MASK <= 0x7fffffff ? 31 : \ 32) #define DBL_EXP_BIT \ (DBL_EXP_MASK < 0x100 ? 8 : \ DBL_EXP_MASK < 0x200 ? 9 : \ DBL_EXP_MASK < 0x400 ? 10 : \ DBL_EXP_MASK < 0x800 ? 11 : \ DBL_EXP_MASK < 0x1000 ? 12 : \ DBL_EXP_MASK < 0x2000 ? 13 : \ DBL_EXP_MASK < 0x4000 ? 14 : \ DBL_EXP_MASK < 0x8000 ? 15 : \ DBL_EXP_MASK < 0x10000 ? 16 : \ DBL_EXP_MASK < 0x20000 ? 17 : \ DBL_EXP_MASK < 0x40000 ? 18 : \ DBL_EXP_MASK < 0x80000 ? 19 : \ DBL_EXP_MASK < 0x100000 ? 20 : \ DBL_EXP_MASK < 0x200000 ? 21 : \ DBL_EXP_MASK < 0x400000 ? 22 : \ DBL_EXP_MASK < 0x800000 ? 23 : \ DBL_EXP_MASK < 0x1000000 ? 24 : \ DBL_EXP_MASK < 0x2000000 ? 25 : \ DBL_EXP_MASK < 0x4000000 ? 26 : \ DBL_EXP_MASK < 0x8000000 ? 27 : \ DBL_EXP_MASK < 0x10000000 ? 28 : \ DBL_EXP_MASK < 0x20000000 ? 29 : \ DBL_EXP_MASK < 0x40000000 ? 30 : \ DBL_EXP_MASK <= 0x7fffffff ? 31 : \ 32) #define LDBL_EXP_BIT \ (LDBL_EXP_MASK < 0x100 ? 8 : \ LDBL_EXP_MASK < 0x200 ? 9 : \ LDBL_EXP_MASK < 0x400 ? 10 : \ LDBL_EXP_MASK < 0x800 ? 11 : \ LDBL_EXP_MASK < 0x1000 ? 12 : \ LDBL_EXP_MASK < 0x2000 ? 13 : \ LDBL_EXP_MASK < 0x4000 ? 14 : \ LDBL_EXP_MASK < 0x8000 ? 15 : \ LDBL_EXP_MASK < 0x10000 ? 16 : \ LDBL_EXP_MASK < 0x20000 ? 17 : \ LDBL_EXP_MASK < 0x40000 ? 18 : \ LDBL_EXP_MASK < 0x80000 ? 19 : \ LDBL_EXP_MASK < 0x100000 ? 20 : \ LDBL_EXP_MASK < 0x200000 ? 21 : \ LDBL_EXP_MASK < 0x400000 ? 22 : \ LDBL_EXP_MASK < 0x800000 ? 23 : \ LDBL_EXP_MASK < 0x1000000 ? 24 : \ LDBL_EXP_MASK < 0x2000000 ? 25 : \ LDBL_EXP_MASK < 0x4000000 ? 26 : \ LDBL_EXP_MASK < 0x8000000 ? 27 : \ LDBL_EXP_MASK < 0x10000000 ? 28 : \ LDBL_EXP_MASK < 0x20000000 ? 29 : \ LDBL_EXP_MASK < 0x40000000 ? 30 : \ LDBL_EXP_MASK <= 0x7fffffff ? 31 : \ 32) /* Number of bits used for a floating-point number: the mantissa (not counting the "hidden bit", since it may or may not be explicit), the exponent, and the sign. */ #define FLT_TOTAL_BIT ((FLT_MANT_BIT - 1) + FLT_EXP_BIT + 1) #define DBL_TOTAL_BIT ((DBL_MANT_BIT - 1) + DBL_EXP_BIT + 1) #define LDBL_TOTAL_BIT ((LDBL_MANT_BIT - 1) + LDBL_EXP_BIT + 1) /* Number of bytes used for a floating-point number. This can be smaller than the 'sizeof'. For example, on i386 systems, 'long double' most often have LDBL_MANT_BIT = 64, LDBL_EXP_BIT = 16, hence LDBL_TOTAL_BIT = 80 bits, i.e. 10 bytes of consecutive memory, but sizeof (long double) = 12 or = 16. */ #define SIZEOF_FLT ((FLT_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT) #define SIZEOF_DBL ((DBL_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT) #define SIZEOF_LDBL ((LDBL_TOTAL_BIT + CHAR_BIT - 1) / CHAR_BIT) /* Verify that SIZEOF_FLT <= sizeof (float) etc. */ typedef int verify_sizeof_flt[SIZEOF_FLT <= sizeof (float) ? 1 : -1]; typedef int verify_sizeof_dbl[SIZEOF_DBL <= sizeof (double) ? 1 : - 1]; typedef int verify_sizeof_ldbl[SIZEOF_LDBL <= sizeof (long double) ? 1 : - 1]; #endif /* _FLOATPLUS_H */ recode-3.7.15/lib/signbitf.c0000644000175000017500000000412114371444255011257 /* signbit() macro: Determine the sign bit of a floating-point number. Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include #include #include "isnanf-nolibm.h" #include "float+.h" #ifdef gl_signbitf_OPTIMIZED_MACRO # undef gl_signbitf #endif int gl_signbitf (float arg) { #if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT /* The use of a union to extract the bits of the representation of a 'long double' is safe in practice, despite of the "aliasing rules" of C99, because the GCC docs say "Even with '-fstrict-aliasing', type-punning is allowed, provided the memory is accessed through the union type." and similarly for other compilers. */ # define NWORDS \ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) union { float value; unsigned int word[NWORDS]; } m; m.value = arg; return (m.word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1; #elif HAVE_COPYSIGNF_IN_LIBC return copysignf (1.0f, arg) < 0; #else /* This does not do the right thing for NaN, but this is irrelevant for most use cases. */ if (isnanf (arg)) return 0; if (arg < 0.0f) return 1; else if (arg == 0.0f) { /* Distinguish 0.0f and -0.0f. */ static float plus_zero = 0.0f; float arg_mem = arg; return (memcmp (&plus_zero, &arg_mem, SIZEOF_FLT) != 0); } else return 0; #endif } recode-3.7.15/lib/signbitd.c0000644000175000017500000000411014371444255011253 /* signbit() macro: Determine the sign bit of a floating-point number. Copyright (C) 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include #include #include "isnand-nolibm.h" #include "float+.h" #ifdef gl_signbitd_OPTIMIZED_MACRO # undef gl_signbitd #endif int gl_signbitd (double arg) { #if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT /* The use of a union to extract the bits of the representation of a 'long double' is safe in practice, despite of the "aliasing rules" of C99, because the GCC docs say "Even with '-fstrict-aliasing', type-punning is allowed, provided the memory is accessed through the union type." and similarly for other compilers. */ # define NWORDS \ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) union { double value; unsigned int word[NWORDS]; } m; m.value = arg; return (m.word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1; #elif HAVE_COPYSIGN_IN_LIBC return copysign (1.0, arg) < 0; #else /* This does not do the right thing for NaN, but this is irrelevant for most use cases. */ if (isnand (arg)) return 0; if (arg < 0.0) return 1; else if (arg == 0.0) { /* Distinguish 0.0 and -0.0. */ static double plus_zero = 0.0; double arg_mem = arg; return (memcmp (&plus_zero, &arg_mem, SIZEOF_DBL) != 0); } else return 0; #endif } recode-3.7.15/lib/strnlen.c0000644000175000017500000000222614371444255011143 /* Find the length of STRING, but scan at most MAXLEN characters. Copyright (C) 2005-2007, 2009-2023 Free Software Foundation, Inc. Written by Simon Josefsson. This file 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. This file 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 . */ #include #include /* Find the length of STRING, but scan at most MAXLEN characters. If no '\0' terminator is found in that many characters, return MAXLEN. */ size_t strnlen (const char *string, size_t maxlen) { const char *end = memchr (string, '\0', maxlen); return end ? (size_t) (end - string) : maxlen; } recode-3.7.15/lib/lc-charset-dispatch.c0000644000175000017500000000522014371444255013275 /* Dispatching based on the current locale's character encoding. Copyright (C) 2018-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2018. */ #include /* Specification. */ #include "lc-charset-dispatch.h" #if GNULIB_defined_mbstate_t # include "localcharset.h" # include "streq.h" # if GNULIB_WCHAR_SINGLE_LOCALE /* When we know that the locale does not change, provide a speedup by caching the value of locale_encoding_classification. */ # define locale_encoding_classification_cached locale_encoding_classification # else /* By default, don't make assumptions, hence no caching. */ # define locale_encoding_classification_uncached locale_encoding_classification # endif # if GNULIB_WCHAR_SINGLE_LOCALE static inline # endif enc_t locale_encoding_classification_uncached (void) { const char *encoding = locale_charset (); if (STREQ_OPT (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0, 0)) return enc_utf8; if (STREQ_OPT (encoding, "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0)) return enc_eucjp; if (STREQ_OPT (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0) || STREQ_OPT (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0) || STREQ_OPT (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0)) return enc_94; if (STREQ_OPT (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0)) return enc_euctw; if (STREQ_OPT (encoding, "GB18030", 'G', 'B', '1', '8', '0', '3', '0', 0, 0)) return enc_gb18030; if (STREQ_OPT (encoding, "SJIS", 'S', 'J', 'I', 'S', 0, 0, 0, 0, 0)) return enc_sjis; return enc_other; } # if GNULIB_WCHAR_SINGLE_LOCALE static int cached_locale_enc = -1; enc_t locale_encoding_classification_cached (void) { if (cached_locale_enc < 0) cached_locale_enc = locale_encoding_classification_uncached (); return cached_locale_enc; } # endif #else /* This declaration is solely to ensure that after preprocessing this file is never empty. */ typedef int dummy; #endif recode-3.7.15/lib/tempname.c0000644000175000017500000002077614371444255011276 /* Copyright (C) 1991-2023 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ #if !_LIBC # include # include "tempname.h" #endif #include #include #ifndef TMP_MAX # define TMP_MAX 238328 #endif #ifndef __GT_FILE # define __GT_FILE 0 # define __GT_DIR 1 # define __GT_NOCREATE 2 #endif #if !_LIBC && (GT_FILE != __GT_FILE || GT_DIR != __GT_DIR \ || GT_NOCREATE != __GT_NOCREATE) # error report this to bug-gnulib@gnu.org #endif #include #include #include #include #include #include #include #if _LIBC # define struct_stat64 struct __stat64_t64 #else # define struct_stat64 struct stat # define __gen_tempname gen_tempname # define __mkdir mkdir # define __open open # define __lstat64_time64(file, buf) lstat (file, buf) # define __getrandom getrandom # define __clock_gettime64 clock_gettime # define __timespec64 timespec #endif /* Use getrandom if it works, falling back on a 64-bit linear congruential generator that starts with Var's value mixed in with a clock's low-order bits if available. */ typedef uint_fast64_t random_value; #define RANDOM_VALUE_MAX UINT_FAST64_MAX #define BASE_62_DIGITS 10 /* 62**10 < UINT_FAST64_MAX */ #define BASE_62_POWER (62LL * 62 * 62 * 62 * 62 * 62 * 62 * 62 * 62 * 62) /* Return the result of mixing the entropy from R and S. Assume that R and S are not particularly random, and that the result should look randomish to an untrained eye. */ static random_value mix_random_values (random_value r, random_value s) { /* As this code is used only when high-quality randomness is neither available nor necessary, there is no need for fancier polynomials such as those in the Linux kernel's 'random' driver. */ return (2862933555777941757 * r + 3037000493) ^ s; } /* Set *R to a random value. Return true if *R is set to high-quality value taken from getrandom. Otherwise return false, falling back to a low-quality *R that might depend on S. This function returns false only when getrandom fails. On GNU systems this should happen only early in the boot process, when the fallback should be good enough for programs using tempname because any attacker likely has root privileges already. */ static bool random_bits (random_value *r, random_value s) { /* Without GRND_NONBLOCK it can be blocked for minutes on some systems. */ if (__getrandom (r, sizeof *r, GRND_NONBLOCK) == sizeof *r) return true; /* If getrandom did not work, use ersatz entropy based on low-order clock bits. On GNU systems getrandom should fail only early in booting, when ersatz should be good enough. Do not use ASLR-based entropy, as that would leak ASLR info into the resulting file name which is typically public. Of course we are in a state of sin here. */ random_value v = s; #if _LIBC || (defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME) struct __timespec64 tv; __clock_gettime64 (CLOCK_REALTIME, &tv); v = mix_random_values (v, tv.tv_sec); v = mix_random_values (v, tv.tv_nsec); #endif *r = mix_random_values (v, clock ()); return false; } #if _LIBC static int try_tempname_len (char *, int, void *, int (*) (char *, void *), size_t); #endif static int try_file (char *tmpl, void *flags) { int *openflags = flags; return __open (tmpl, (*openflags & ~O_ACCMODE) | O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); } static int try_dir (char *tmpl, _GL_UNUSED void *flags) { return __mkdir (tmpl, S_IRUSR | S_IWUSR | S_IXUSR); } static int try_nocreate (char *tmpl, _GL_UNUSED void *flags) { struct_stat64 st; if (__lstat64_time64 (tmpl, &st) == 0 || errno == EOVERFLOW) __set_errno (EEXIST); return errno == ENOENT ? 0 : -1; } /* These are the characters used in temporary file names. */ static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; /* Generate a temporary file name based on TMPL. TMPL must match the rules for mk[s]temp (i.e., end in at least X_SUFFIX_LEN "X"s, possibly with a suffix). The name constructed does not exist at the time of the call to this function. TMPL is overwritten with the result. KIND may be one of: __GT_NOCREATE: simply verify that the name does not exist at the time of the call. __GT_FILE: create the file using open(O_CREAT|O_EXCL) and return a read-write fd. The file is mode 0600. __GT_DIR: create a directory, which will be mode 0700. */ #ifdef _LIBC static #endif int gen_tempname_len (char *tmpl, int suffixlen, int flags, int kind, size_t x_suffix_len) { static int (*const tryfunc[]) (char *, void *) = { [__GT_FILE] = try_file, [__GT_DIR] = try_dir, [__GT_NOCREATE] = try_nocreate }; return try_tempname_len (tmpl, suffixlen, &flags, tryfunc[kind], x_suffix_len); } #ifdef _LIBC static #endif int try_tempname_len (char *tmpl, int suffixlen, void *args, int (*tryfunc) (char *, void *), size_t x_suffix_len) { size_t len; char *XXXXXX; unsigned int count; int fd = -1; int save_errno = errno; /* A lower bound on the number of temporary files to attempt to generate. The maximum total number of temporary file names that can exist for a given template is 62**6. It should never be necessary to try all of these combinations. Instead if a reasonable number of names is tried (we define reasonable as 62**3) fail to give the system administrator the chance to remove the problems. This value requires that X_SUFFIX_LEN be at least 3. */ #define ATTEMPTS_MIN (62 * 62 * 62) /* The number of times to attempt to generate a temporary file. To conform to POSIX, this must be no smaller than TMP_MAX. */ #if ATTEMPTS_MIN < TMP_MAX unsigned int attempts = TMP_MAX; #else unsigned int attempts = ATTEMPTS_MIN; #endif /* A random variable. */ random_value v = 0; /* A value derived from the random variable, and how many random base-62 digits can currently be extracted from VDIGBUF. */ random_value vdigbuf; int vdigits = 0; /* Least biased value for V. If V is less than this, V can generate BASE_62_DIGITS unbiased digits. Otherwise the digits are biased. */ random_value const biased_min = RANDOM_VALUE_MAX - RANDOM_VALUE_MAX % BASE_62_POWER; len = strlen (tmpl); if (len < x_suffix_len + suffixlen || strspn (&tmpl[len - x_suffix_len - suffixlen], "X") < x_suffix_len) { __set_errno (EINVAL); return -1; } /* This is where the Xs start. */ XXXXXX = &tmpl[len - x_suffix_len - suffixlen]; for (count = 0; count < attempts; ++count) { for (size_t i = 0; i < x_suffix_len; i++) { if (vdigits == 0) { /* Worry about bias only if the bits are high quality. */ while (random_bits (&v, v) && biased_min <= v) continue; vdigbuf = v; vdigits = BASE_62_DIGITS; } XXXXXX[i] = letters[vdigbuf % 62]; vdigbuf /= 62; vdigits--; } fd = tryfunc (tmpl, args); if (fd >= 0) { __set_errno (save_errno); return fd; } else if (errno != EEXIST) return -1; } /* We got out of the loop because we ran out of combinations to try. */ __set_errno (EEXIST); return -1; } int __gen_tempname (char *tmpl, int suffixlen, int flags, int kind) { return gen_tempname_len (tmpl, suffixlen, flags, kind, 6); } #if !_LIBC int try_tempname (char *tmpl, int suffixlen, void *args, int (*tryfunc) (char *, void *)) { return try_tempname_len (tmpl, suffixlen, args, tryfunc, 6); } #endif recode-3.7.15/lib/warn-on-use.h0000644000175000017500000001553214371444255011642 /* A C macro for emitting warnings if a function is used. Copyright (C) 2010-2023 Free Software Foundation, Inc. This program 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 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 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 . */ /* _GL_WARN_ON_USE (function, "literal string") issues a declaration for FUNCTION which will then trigger a compiler warning containing the text of "literal string" anywhere that function is called, if supported by the compiler. If the compiler does not support this feature, the macro expands to an unused extern declaration. _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the attribute used in _GL_WARN_ON_USE. If the compiler does not support this feature, it expands to empty. These macros are useful for marking a function as a potential portability trap, with the intent that "literal string" include instructions on the replacement function that should be used instead. _GL_WARN_ON_USE is for functions with 'extern' linkage. _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline' linkage. However, one of the reasons that a function is a portability trap is if it has the wrong signature. Declaring FUNCTION with a different signature in C is a compilation error, so this macro must use the same type as any existing declaration so that programs that avoid the problematic FUNCTION do not fail to compile merely because they included a header that poisoned the function. But this implies that _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already have a declaration. Use of this macro implies that there must not be any other macro hiding the declaration of FUNCTION; but undefining FUNCTION first is part of the poisoning process anyway (although for symbols that are provided only via a macro, the result is a compilation error rather than a warning containing "literal string"). Also note that in C++, it is only safe to use if FUNCTION has no overloads. For an example, it is possible to poison 'getline' by: - adding a call to gl_WARN_ON_USE_PREPARE([[#include ]], [getline]) in configure.ac, which potentially defines HAVE_RAW_DECL_GETLINE - adding this code to a header that wraps the system : #undef getline #if HAVE_RAW_DECL_GETLINE _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but" "not universally present; use the gnulib module getline"); #endif It is not possible to directly poison global variables. But it is possible to write a wrapper accessor function, and poison that (less common usage, like &environ, will cause a compilation error rather than issue the nice warning, but the end result of informing the developer about their portability problem is still achieved): #if HAVE_RAW_DECL_ENVIRON static char *** rpl_environ (void) { return &environ; } _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared"); # undef environ # define environ (*rpl_environ ()) #endif or better (avoiding contradictory use of 'static' and 'extern'): #if HAVE_RAW_DECL_ENVIRON static char *** _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared") rpl_environ (void) { return &environ; } # undef environ # define environ (*rpl_environ ()) #endif */ #ifndef _GL_WARN_ON_USE # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) /* A compiler attribute is available in gcc versions 4.3.0 and later. */ # define _GL_WARN_ON_USE(function, message) \ _GL_WARN_EXTERN_C __typeof__ (function) function __attribute__ ((__warning__ (message))) # define _GL_WARN_ON_USE_ATTRIBUTE(message) \ __attribute__ ((__warning__ (message))) # elif __clang_major__ >= 4 /* Another compiler attribute is available in clang. */ # define _GL_WARN_ON_USE(function, message) \ _GL_WARN_EXTERN_C __typeof__ (function) function \ __attribute__ ((__diagnose_if__ (1, message, "warning"))) # define _GL_WARN_ON_USE_ATTRIBUTE(message) \ __attribute__ ((__diagnose_if__ (1, message, "warning"))) # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING /* Verify the existence of the function. */ # define _GL_WARN_ON_USE(function, message) \ _GL_WARN_EXTERN_C __typeof__ (function) function # define _GL_WARN_ON_USE_ATTRIBUTE(message) # else /* Unsupported. */ # define _GL_WARN_ON_USE(function, message) \ _GL_WARN_EXTERN_C int _gl_warn_on_use # define _GL_WARN_ON_USE_ATTRIBUTE(message) # endif #endif /* _GL_WARN_ON_USE_CXX (function, rettype_gcc, rettype_clang, parameters_and_attributes, "message") is like _GL_WARN_ON_USE (function, "message"), except that in C++ mode the function is declared with the given prototype, consisting of return type, parameters, and attributes. This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does not work in this case. */ #ifndef _GL_WARN_ON_USE_CXX # if !defined __cplusplus # define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ _GL_WARN_ON_USE (function, msg) # else # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) /* A compiler attribute is available in gcc versions 4.3.0 and later. */ # define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ extern rettype_gcc function parameters_and_attributes \ __attribute__ ((__warning__ (msg))) # elif __clang_major__ >= 4 /* Another compiler attribute is available in clang. */ # define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ extern rettype_clang function parameters_and_attributes \ __attribute__ ((__diagnose_if__ (1, msg, "warning"))) # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING /* Verify the existence of the function. */ # define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ extern rettype_gcc function parameters_and_attributes # else /* Unsupported. */ # define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ _GL_WARN_EXTERN_C int _gl_warn_on_use # endif # endif #endif /* _GL_WARN_EXTERN_C declaration; performs the declaration with C linkage. */ #ifndef _GL_WARN_EXTERN_C # if defined __cplusplus # define _GL_WARN_EXTERN_C extern "C" # else # define _GL_WARN_EXTERN_C extern # endif #endif recode-3.7.15/lib/sig-handler.c0000644000175000017500000000155214371444255011654 /* Convenience declarations when working with . Copyright (C) 2012-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #define SIG_HANDLER_INLINE _GL_EXTERN_INLINE #include "sig-handler.h" recode-3.7.15/lib/sigprocmask.c0000644000175000017500000002062214371444255012000 /* POSIX compatible signal blocking. Copyright (C) 2006-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2006. This file 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. This file 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 . */ #include /* Specification. */ #include #include #include #include #if HAVE_MSVC_INVALID_PARAMETER_HANDLER # include "msvc-inval.h" #endif /* We assume that a platform without POSIX signal blocking functions also does not have the POSIX sigaction() function, only the signal() function. We also assume signal() has SysV semantics, where any handler is uninstalled prior to being invoked. This is true for native Windows platforms. */ /* We use raw signal(), but also provide a wrapper rpl_signal() so that applications can query or change a blocked signal. */ #undef signal /* Provide invalid signal numbers as fallbacks if the uncatchable signals are not defined. */ #ifndef SIGKILL # define SIGKILL (-1) #endif #ifndef SIGSTOP # define SIGSTOP (-1) #endif /* On native Windows, as of 2008, the signal SIGABRT_COMPAT is an alias for the signal SIGABRT. Only one signal handler is stored for both SIGABRT and SIGABRT_COMPAT. SIGABRT_COMPAT is not a signal of its own. */ #if defined _WIN32 && ! defined __CYGWIN__ # undef SIGABRT_COMPAT # define SIGABRT_COMPAT 6 #endif #ifdef SIGABRT_COMPAT # define SIGABRT_COMPAT_MASK (1U << SIGABRT_COMPAT) #else # define SIGABRT_COMPAT_MASK 0 #endif typedef void (*handler_t) (int); #if HAVE_MSVC_INVALID_PARAMETER_HANDLER static handler_t signal_nothrow (int sig, handler_t handler) { handler_t result; TRY_MSVC_INVAL { result = signal (sig, handler); } CATCH_MSVC_INVAL { result = SIG_ERR; errno = EINVAL; } DONE_MSVC_INVAL; return result; } # define signal signal_nothrow #endif /* Handling of gnulib defined signals. */ #if GNULIB_defined_SIGPIPE static handler_t SIGPIPE_handler = SIG_DFL; #endif #if GNULIB_defined_SIGPIPE static handler_t ext_signal (int sig, handler_t handler) { switch (sig) { case SIGPIPE: { handler_t old_handler = SIGPIPE_handler; SIGPIPE_handler = handler; return old_handler; } default: /* System defined signal */ return signal (sig, handler); } } # undef signal # define signal ext_signal #endif int sigismember (const sigset_t *set, int sig) { if (sig >= 0 && sig < NSIG) { #ifdef SIGABRT_COMPAT if (sig == SIGABRT_COMPAT) sig = SIGABRT; #endif return (*set >> sig) & 1; } else return 0; } int sigemptyset (sigset_t *set) { *set = 0; return 0; } int sigaddset (sigset_t *set, int sig) { if (sig >= 0 && sig < NSIG) { #ifdef SIGABRT_COMPAT if (sig == SIGABRT_COMPAT) sig = SIGABRT; #endif *set |= 1U << sig; return 0; } else { errno = EINVAL; return -1; } } int sigdelset (sigset_t *set, int sig) { if (sig >= 0 && sig < NSIG) { #ifdef SIGABRT_COMPAT if (sig == SIGABRT_COMPAT) sig = SIGABRT; #endif *set &= ~(1U << sig); return 0; } else { errno = EINVAL; return -1; } } int sigfillset (sigset_t *set) { *set = ((2U << (NSIG - 1)) - 1) & ~ SIGABRT_COMPAT_MASK; return 0; } /* Set of currently blocked signals. */ static volatile sigset_t blocked_set /* = 0 */; /* Set of currently blocked and pending signals. */ static volatile sig_atomic_t pending_array[NSIG] /* = { 0 } */; /* Signal handler that is installed for blocked signals. */ static void blocked_handler (int sig) { /* Reinstall the handler, in case the signal occurs multiple times while blocked. There is an inherent race where an asynchronous signal in between when the kernel uninstalled the handler and when we reinstall it will trigger the default handler; oh well. */ signal (sig, blocked_handler); if (sig >= 0 && sig < NSIG) pending_array[sig] = 1; } int sigpending (sigset_t *set) { sigset_t pending = 0; int sig; for (sig = 0; sig < NSIG; sig++) if (pending_array[sig]) pending |= 1U << sig; *set = pending; return 0; } /* The previous signal handlers. Only the array elements corresponding to blocked signals are relevant. */ static volatile handler_t old_handlers[NSIG]; int sigprocmask (int operation, const sigset_t *set, sigset_t *old_set) { if (old_set != NULL) *old_set = blocked_set; if (set != NULL) { sigset_t new_blocked_set; sigset_t to_unblock; sigset_t to_block; switch (operation) { case SIG_BLOCK: new_blocked_set = blocked_set | *set; break; case SIG_SETMASK: new_blocked_set = *set; break; case SIG_UNBLOCK: new_blocked_set = blocked_set & ~*set; break; default: errno = EINVAL; return -1; } to_unblock = blocked_set & ~new_blocked_set; to_block = new_blocked_set & ~blocked_set; if (to_block != 0) { int sig; for (sig = 0; sig < NSIG; sig++) if ((to_block >> sig) & 1) { pending_array[sig] = 0; if ((old_handlers[sig] = signal (sig, blocked_handler)) != SIG_ERR) blocked_set |= 1U << sig; } } if (to_unblock != 0) { sig_atomic_t received[NSIG]; int sig; for (sig = 0; sig < NSIG; sig++) if ((to_unblock >> sig) & 1) { if (signal (sig, old_handlers[sig]) != blocked_handler) /* The application changed a signal handler while the signal was blocked, bypassing our rpl_signal replacement. We don't support this. */ abort (); received[sig] = pending_array[sig]; blocked_set &= ~(1U << sig); pending_array[sig] = 0; } else received[sig] = 0; for (sig = 0; sig < NSIG; sig++) if (received[sig]) raise (sig); } } return 0; } /* Install the handler FUNC for signal SIG, and return the previous handler. */ handler_t rpl_signal (int sig, handler_t handler) { /* We must provide a wrapper, so that a user can query what handler they installed even if that signal is currently blocked. */ if (sig >= 0 && sig < NSIG && sig != SIGKILL && sig != SIGSTOP && handler != SIG_ERR) { #ifdef SIGABRT_COMPAT if (sig == SIGABRT_COMPAT) sig = SIGABRT; #endif if (blocked_set & (1U << sig)) { /* POSIX states that sigprocmask and signal are both async-signal-safe. This is not true of our implementation - there is a slight data race where an asynchronous interrupt on signal A can occur after we install blocked_handler but before we have updated old_handlers for signal B, such that handler A can see stale information if it calls signal(B). Oh well - signal handlers really shouldn't try to manipulate the installed handlers of unrelated signals. */ handler_t result = old_handlers[sig]; old_handlers[sig] = handler; return result; } else return signal (sig, handler); } else { errno = EINVAL; return SIG_ERR; } } #if GNULIB_defined_SIGPIPE /* Raise the signal SIGPIPE. */ int _gl_raise_SIGPIPE (void) { if (blocked_set & (1U << SIGPIPE)) pending_array[SIGPIPE] = 1; else { handler_t handler = SIGPIPE_handler; if (handler == SIG_DFL) exit (128 + SIGPIPE); else if (handler != SIG_IGN) (*handler) (SIGPIPE); } return 0; } #endif recode-3.7.15/lib/strerror-override.c0000644000175000017500000002164614371444255013164 /* strerror-override.c --- POSIX compatible system error routine Copyright (C) 2010-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2010. */ #include #include "strerror-override.h" #include #if GNULIB_defined_EWINSOCK /* native Windows platforms */ # if HAVE_WINSOCK2_H # include # endif #endif #if !GNULIB_defined_strerror_override_macro /* If ERRNUM maps to an errno value defined by gnulib, return a string describing the error. Otherwise return NULL. */ const char * strerror_override (int errnum) { /* These error messages are taken from glibc/sysdeps/gnu/errlist.c. */ switch (errnum) { # if REPLACE_STRERROR_0 case 0: return "Success"; # endif # if GNULIB_defined_ESOCK /* native Windows platforms with older */ case EINPROGRESS: return "Operation now in progress"; case EALREADY: return "Operation already in progress"; case ENOTSOCK: return "Socket operation on non-socket"; case EDESTADDRREQ: return "Destination address required"; case EMSGSIZE: return "Message too long"; case EPROTOTYPE: return "Protocol wrong type for socket"; case ENOPROTOOPT: return "Protocol not available"; case EPROTONOSUPPORT: return "Protocol not supported"; case EOPNOTSUPP: return "Operation not supported"; case EAFNOSUPPORT: return "Address family not supported by protocol"; case EADDRINUSE: return "Address already in use"; case EADDRNOTAVAIL: return "Cannot assign requested address"; case ENETDOWN: return "Network is down"; case ENETUNREACH: return "Network is unreachable"; case ECONNRESET: return "Connection reset by peer"; case ENOBUFS: return "No buffer space available"; case EISCONN: return "Transport endpoint is already connected"; case ENOTCONN: return "Transport endpoint is not connected"; case ETIMEDOUT: return "Connection timed out"; case ECONNREFUSED: return "Connection refused"; case ELOOP: return "Too many levels of symbolic links"; case EHOSTUNREACH: return "No route to host"; case EWOULDBLOCK: return "Operation would block"; # endif # if GNULIB_defined_ESTREAMS /* native Windows platforms with older */ case ETXTBSY: return "Text file busy"; case ENODATA: return "No data available"; case ENOSR: return "Out of streams resources"; case ENOSTR: return "Device not a stream"; case ETIME: return "Timer expired"; case EOTHER: return "Other error"; # endif # if GNULIB_defined_EWINSOCK /* native Windows platforms */ case ESOCKTNOSUPPORT: return "Socket type not supported"; case EPFNOSUPPORT: return "Protocol family not supported"; case ESHUTDOWN: return "Cannot send after transport endpoint shutdown"; case ETOOMANYREFS: return "Too many references: cannot splice"; case EHOSTDOWN: return "Host is down"; case EPROCLIM: return "Too many processes"; case EUSERS: return "Too many users"; case EDQUOT: return "Disk quota exceeded"; case ESTALE: return "Stale NFS file handle"; case EREMOTE: return "Object is remote"; # if HAVE_WINSOCK2_H /* WSA_INVALID_HANDLE maps to EBADF */ /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */ /* WSA_INVALID_PARAMETER maps to EINVAL */ case WSA_OPERATION_ABORTED: return "Overlapped operation aborted"; case WSA_IO_INCOMPLETE: return "Overlapped I/O event object not in signaled state"; case WSA_IO_PENDING: return "Overlapped operations will complete later"; /* WSAEINTR maps to EINTR */ /* WSAEBADF maps to EBADF */ /* WSAEACCES maps to EACCES */ /* WSAEFAULT maps to EFAULT */ /* WSAEINVAL maps to EINVAL */ /* WSAEMFILE maps to EMFILE */ /* WSAEWOULDBLOCK maps to EWOULDBLOCK */ /* WSAEINPROGRESS maps to EINPROGRESS */ /* WSAEALREADY maps to EALREADY */ /* WSAENOTSOCK maps to ENOTSOCK */ /* WSAEDESTADDRREQ maps to EDESTADDRREQ */ /* WSAEMSGSIZE maps to EMSGSIZE */ /* WSAEPROTOTYPE maps to EPROTOTYPE */ /* WSAENOPROTOOPT maps to ENOPROTOOPT */ /* WSAEPROTONOSUPPORT maps to EPROTONOSUPPORT */ /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */ /* WSAEOPNOTSUPP maps to EOPNOTSUPP */ /* WSAEPFNOSUPPORT is EPFNOSUPPORT */ /* WSAEAFNOSUPPORT maps to EAFNOSUPPORT */ /* WSAEADDRINUSE maps to EADDRINUSE */ /* WSAEADDRNOTAVAIL maps to EADDRNOTAVAIL */ /* WSAENETDOWN maps to ENETDOWN */ /* WSAENETUNREACH maps to ENETUNREACH */ /* WSAENETRESET maps to ENETRESET */ /* WSAECONNABORTED maps to ECONNABORTED */ /* WSAECONNRESET maps to ECONNRESET */ /* WSAENOBUFS maps to ENOBUFS */ /* WSAEISCONN maps to EISCONN */ /* WSAENOTCONN maps to ENOTCONN */ /* WSAESHUTDOWN is ESHUTDOWN */ /* WSAETOOMANYREFS is ETOOMANYREFS */ /* WSAETIMEDOUT maps to ETIMEDOUT */ /* WSAECONNREFUSED maps to ECONNREFUSED */ /* WSAELOOP maps to ELOOP */ /* WSAENAMETOOLONG maps to ENAMETOOLONG */ /* WSAEHOSTDOWN is EHOSTDOWN */ /* WSAEHOSTUNREACH maps to EHOSTUNREACH */ /* WSAENOTEMPTY maps to ENOTEMPTY */ /* WSAEPROCLIM is EPROCLIM */ /* WSAEUSERS is EUSERS */ /* WSAEDQUOT is EDQUOT */ /* WSAESTALE is ESTALE */ /* WSAEREMOTE is EREMOTE */ case WSASYSNOTREADY: return "Network subsystem is unavailable"; case WSAVERNOTSUPPORTED: return "Winsock.dll version out of range"; case WSANOTINITIALISED: return "Successful WSAStartup not yet performed"; case WSAEDISCON: return "Graceful shutdown in progress"; case WSAENOMORE: case WSA_E_NO_MORE: return "No more results"; case WSAECANCELLED: case WSA_E_CANCELLED: return "Call was canceled"; case WSAEINVALIDPROCTABLE: return "Procedure call table is invalid"; case WSAEINVALIDPROVIDER: return "Service provider is invalid"; case WSAEPROVIDERFAILEDINIT: return "Service provider failed to initialize"; case WSASYSCALLFAILURE: return "System call failure"; case WSASERVICE_NOT_FOUND: return "Service not found"; case WSATYPE_NOT_FOUND: return "Class type not found"; case WSAEREFUSED: return "Database query was refused"; case WSAHOST_NOT_FOUND: return "Host not found"; case WSATRY_AGAIN: return "Nonauthoritative host not found"; case WSANO_RECOVERY: return "Nonrecoverable error"; case WSANO_DATA: return "Valid name, no data record of requested type"; /* WSA_QOS_* omitted */ # endif # endif # if GNULIB_defined_ENOMSG case ENOMSG: return "No message of desired type"; # endif # if GNULIB_defined_EIDRM case EIDRM: return "Identifier removed"; # endif # if GNULIB_defined_ENOLINK case ENOLINK: return "Link has been severed"; # endif # if GNULIB_defined_EPROTO case EPROTO: return "Protocol error"; # endif # if GNULIB_defined_EMULTIHOP case EMULTIHOP: return "Multihop attempted"; # endif # if GNULIB_defined_EBADMSG case EBADMSG: return "Bad message"; # endif # if GNULIB_defined_EOVERFLOW case EOVERFLOW: return "Value too large for defined data type"; # endif # if GNULIB_defined_ENOTSUP case ENOTSUP: return "Not supported"; # endif # if GNULIB_defined_ENETRESET case ENETRESET: return "Network dropped connection on reset"; # endif # if GNULIB_defined_ECONNABORTED case ECONNABORTED: return "Software caused connection abort"; # endif # if GNULIB_defined_ESTALE case ESTALE: return "Stale NFS file handle"; # endif # if GNULIB_defined_EDQUOT case EDQUOT: return "Disk quota exceeded"; # endif # if GNULIB_defined_ECANCELED case ECANCELED: return "Operation canceled"; # endif # if GNULIB_defined_EOWNERDEAD case EOWNERDEAD: return "Owner died"; # endif # if GNULIB_defined_ENOTRECOVERABLE case ENOTRECOVERABLE: return "State not recoverable"; # endif # if GNULIB_defined_EILSEQ case EILSEQ: return "Invalid or incomplete multibyte or wide character"; # endif default: return NULL; } } #endif recode-3.7.15/lib/time.in.h0000644000175000017500000004171714371444255011036 /* A more-standard . Copyright (C) 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* Don't get in the way of glibc when it includes time.h merely to declare a few standard symbols, rather than to declare all the symbols. (However, skip this for MinGW as it treats __need_time_t incompatibly.) Also, Solaris 8 eventually includes itself recursively; if that is happening, just include the system without adding our own declarations. */ #if (((defined __need_time_t || defined __need_clock_t \ || defined __need_timespec) \ && !defined __MINGW32__) \ || defined _@GUARD_PREFIX@_TIME_H) # @INCLUDE_NEXT@ @NEXT_TIME_H@ #else # define _@GUARD_PREFIX@_TIME_H /* mingw's provides the functions asctime_r, ctime_r, gmtime_r, localtime_r only if or has been included before. */ # if defined __MINGW32__ # include # endif # @INCLUDE_NEXT@ @NEXT_TIME_H@ /* NetBSD 5.0 mis-defines NULL. */ # include /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Some systems don't define struct timespec (e.g., AIX 4.1). Or they define it with the wrong member names or define it in (e.g., FreeBSD circa 1997). Stock Mingw prior to 3.0 does not define it, but the pthreads-win32 library defines it in . */ # if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@ # if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ # include # elif @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ # include # elif @UNISTD_H_DEFINES_STRUCT_TIMESPEC@ # include # else # ifdef __cplusplus extern "C" { # endif # if !GNULIB_defined_struct_timespec # undef timespec # define timespec rpl_timespec struct timespec { time_t tv_sec; long int tv_nsec; }; # define GNULIB_defined_struct_timespec 1 # endif # ifdef __cplusplus } # endif # endif # endif # if !GNULIB_defined_struct_time_t_must_be_integral /* https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html requires time_t to be an integer type, even though C99 permits floating point. We don't know of any implementation that uses floating point, and it is much easier to write code that doesn't have to worry about that corner case, so we force the issue. */ struct __time_t_must_be_integral { unsigned int __floating_time_t_unsupported : (time_t) 1; }; # define GNULIB_defined_struct_time_t_must_be_integral 1 # endif /* Define TIME_UTC, a positive integer constant used for timespec_get(). */ # if ! @TIME_H_DEFINES_TIME_UTC@ # if !GNULIB_defined_TIME_UTC # define TIME_UTC 1 # define GNULIB_defined_TIME_UTC 1 # endif # endif /* Set *TS to the current time, and return BASE. Upon failure, return 0. */ # if @GNULIB_TIMESPEC_GET@ # if @REPLACE_TIMESPEC_GET@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef timespec_get # define timespec_get rpl_timespec_get # endif _GL_FUNCDECL_RPL (timespec_get, int, (struct timespec *ts, int base) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (timespec_get, int, (struct timespec *ts, int base)); # else # if !@HAVE_TIMESPEC_GET@ _GL_FUNCDECL_SYS (timespec_get, int, (struct timespec *ts, int base) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (timespec_get, int, (struct timespec *ts, int base)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (timespec_get); # endif # endif /* Set *TS to the current time resolution, and return BASE. Upon failure, return 0. */ # if @GNULIB_TIMESPEC_GETRES@ # if ! @HAVE_TIMESPEC_GETRES@ _GL_FUNCDECL_SYS (timespec_getres, int, (struct timespec *ts, int base) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (timespec_getres, int, (struct timespec *ts, int base)); _GL_CXXALIASWARN (timespec_getres); # endif /* Sleep for at least RQTP seconds unless interrupted, If interrupted, return -1 and store the remaining time into RMTP. See . */ # if @GNULIB_NANOSLEEP@ # if @REPLACE_NANOSLEEP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define nanosleep rpl_nanosleep # endif _GL_FUNCDECL_RPL (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp)); # else # if ! @HAVE_NANOSLEEP@ _GL_FUNCDECL_SYS (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp)); # endif _GL_CXXALIASWARN (nanosleep); # endif /* Initialize time conversion information. */ # if @GNULIB_TZSET@ # if @REPLACE_TZSET@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef tzset # define tzset rpl_tzset # endif _GL_FUNCDECL_RPL (tzset, void, (void)); _GL_CXXALIAS_RPL (tzset, void, (void)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef tzset # define tzset _tzset # endif _GL_CXXALIAS_MDA (tzset, void, (void)); # else _GL_CXXALIAS_SYS (tzset, void, (void)); # endif _GL_CXXALIASWARN (tzset); # elif @GNULIB_MDA_TZSET@ /* On native Windows, map 'tzset' to '_tzset', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::tzset always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef tzset # define tzset _tzset # endif _GL_CXXALIAS_MDA (tzset, void, (void)); # else _GL_CXXALIAS_SYS (tzset, void, (void)); # endif _GL_CXXALIASWARN (tzset); # endif /* Return the 'time_t' representation of TP and normalize TP. */ # if @GNULIB_MKTIME@ # if @REPLACE_MKTIME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mktime rpl_mktime # endif _GL_FUNCDECL_RPL (mktime, time_t, (struct tm *__tp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mktime, time_t, (struct tm *__tp)); # else _GL_CXXALIAS_SYS (mktime, time_t, (struct tm *__tp)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (mktime); # endif # endif /* Convert TIMER to RESULT, assuming local time and UTC respectively. See and . */ # if @GNULIB_TIME_R@ # if @REPLACE_LOCALTIME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef localtime_r # define localtime_r rpl_localtime_r # endif _GL_FUNCDECL_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # else # if ! @HAVE_DECL_LOCALTIME_R@ _GL_FUNCDECL_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # endif # if @HAVE_DECL_LOCALTIME_R@ _GL_CXXALIASWARN (localtime_r); # endif # if @REPLACE_LOCALTIME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gmtime_r # define gmtime_r rpl_gmtime_r # endif _GL_FUNCDECL_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # else # if ! @HAVE_DECL_LOCALTIME_R@ _GL_FUNCDECL_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # endif # if @HAVE_DECL_LOCALTIME_R@ _GL_CXXALIASWARN (gmtime_r); # endif # endif /* Convert TIMER to RESULT, assuming local time and UTC respectively. See and . */ # if @GNULIB_LOCALTIME@ || @REPLACE_LOCALTIME@ # if @REPLACE_LOCALTIME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef localtime # define localtime rpl_localtime # endif _GL_FUNCDECL_RPL (localtime, struct tm *, (time_t const *__timer) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (localtime, struct tm *, (time_t const *__timer)); # else _GL_CXXALIAS_SYS (localtime, struct tm *, (time_t const *__timer)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (localtime); # endif # endif # if 0 || @REPLACE_GMTIME@ # if @REPLACE_GMTIME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gmtime # define gmtime rpl_gmtime # endif _GL_FUNCDECL_RPL (gmtime, struct tm *, (time_t const *__timer) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (gmtime, struct tm *, (time_t const *__timer)); # else _GL_CXXALIAS_SYS (gmtime, struct tm *, (time_t const *__timer)); # endif _GL_CXXALIASWARN (gmtime); # endif /* Parse BUF as a timestamp, assuming FORMAT specifies its layout, and store the resulting broken-down time into TM. See . */ # if @GNULIB_STRPTIME@ # if ! @HAVE_STRPTIME@ _GL_FUNCDECL_SYS (strptime, char *, (char const *restrict __buf, char const *restrict __format, struct tm *restrict __tm) _GL_ARG_NONNULL ((1, 2, 3))); # endif _GL_CXXALIAS_SYS (strptime, char *, (char const *restrict __buf, char const *restrict __format, struct tm *restrict __tm)); _GL_CXXALIASWARN (strptime); # endif /* Convert *TP to a date and time string. See . */ # if @GNULIB_CTIME@ # if @REPLACE_CTIME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define ctime rpl_ctime # endif _GL_ATTRIBUTE_DEPRECATED _GL_FUNCDECL_RPL (ctime, char *, (time_t const *__tp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (ctime, char *, (time_t const *__tp)); # else _GL_CXXALIAS_SYS (ctime, char *, (time_t const *__tp)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (ctime); # endif # endif /* Convert *TP to a date and time string. See . */ # if @GNULIB_STRFTIME@ # if @REPLACE_STRFTIME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strftime rpl_strftime # endif _GL_FUNCDECL_RPL (strftime, size_t, (char *restrict __buf, size_t __bufsize, const char *restrict __fmt, const struct tm *restrict __tp) _GL_ARG_NONNULL ((1, 3, 4))); _GL_CXXALIAS_RPL (strftime, size_t, (char *restrict __buf, size_t __bufsize, const char *restrict __fmt, const struct tm *restrict __tp)); # else _GL_CXXALIAS_SYS (strftime, size_t, (char *restrict __buf, size_t __bufsize, const char *restrict __fmt, const struct tm *restrict __tp)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (strftime); # endif # endif # if defined _GNU_SOURCE && @GNULIB_TIME_RZ@ && ! @HAVE_TIMEZONE_T@ /* Functions that use a first-class time zone data type, instead of relying on an implicit global time zone. Inspired by NetBSD. */ /* Represents a time zone. (timezone_t) NULL stands for UTC. */ typedef struct tm_zone *timezone_t; /* tzalloc (name) Returns a time zone object for the given time zone NAME. This object represents the time zone that other functions would use it the TZ environment variable was set to NAME. If NAME is NULL, the result represents the time zone that other functions would use it the TZ environment variable was unset. May return NULL if NAME is invalid (this is platform dependent) or upon memory allocation failure. */ _GL_FUNCDECL_SYS (tzalloc, timezone_t, (char const *__name)); _GL_CXXALIAS_SYS (tzalloc, timezone_t, (char const *__name)); /* tzfree (tz) Frees a time zone object. The argument must have been returned by tzalloc(). */ _GL_FUNCDECL_SYS (tzfree, void, (timezone_t __tz)); _GL_CXXALIAS_SYS (tzfree, void, (timezone_t __tz)); /* localtime_rz (tz, &t, &result) Converts an absolute time T to a broken-down time RESULT, assuming the time zone TZ. This function is like 'localtime_r', but relies on the argument TZ instead of an implicit global time zone. */ _GL_FUNCDECL_SYS (localtime_rz, struct tm *, (timezone_t __tz, time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((2, 3))); _GL_CXXALIAS_SYS (localtime_rz, struct tm *, (timezone_t __tz, time_t const *restrict __timer, struct tm *restrict __result)); /* mktime_z (tz, &tm) Normalizes the broken-down time TM and converts it to an absolute time, assuming the time zone TZ. Returns the absolute time. This function is like 'mktime', but relies on the argument TZ instead of an implicit global time zone. */ _GL_FUNCDECL_SYS (mktime_z, time_t, (timezone_t __tz, struct tm *restrict __tm) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_SYS (mktime_z, time_t, (timezone_t __tz, struct tm *restrict __tm)); /* Time zone abbreviation strings (returned by 'localtime_rz' or 'mktime_z' in the 'tm_zone' member of 'struct tm') are valid as long as - the 'struct tm' argument is not destroyed or overwritten, and - the 'timezone_t' argument is not freed through tzfree(). */ # endif /* Convert TM to a time_t value, assuming UTC. */ # if @GNULIB_TIMEGM@ # if @REPLACE_TIMEGM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef timegm # define timegm rpl_timegm # endif _GL_FUNCDECL_RPL (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (timegm, time_t, (struct tm *__tm)); # else # if ! @HAVE_TIMEGM@ _GL_FUNCDECL_SYS (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (timegm, time_t, (struct tm *__tm)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (timegm); # endif # endif /* Encourage applications to avoid unsafe functions that can overrun buffers when given outlandish struct tm values. Portable applications should use strftime (or even sprintf) instead. */ # if defined GNULIB_POSIXCHECK # undef asctime _GL_WARN_ON_USE (asctime, "asctime can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif # if defined GNULIB_POSIXCHECK # undef asctime_r # if HAVE_RAW_DECL_ASCTIME_R _GL_WARN_ON_USE (asctime_r, "asctime_r can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif # endif # if defined GNULIB_POSIXCHECK # undef ctime _GL_WARN_ON_USE (ctime, "ctime can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif # if defined GNULIB_POSIXCHECK # undef ctime_r # if HAVE_RAW_DECL_CTIME_R _GL_WARN_ON_USE (ctime_r, "ctime_r can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif # endif #endif recode-3.7.15/lib/dup2.c0000644000175000017500000000774214371444255010340 /* Duplicate an open file descriptor to a specified file descriptor. Copyright (C) 1999, 2004-2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* written by Paul Eggert */ #include /* Specification. */ #include #include #include #undef dup2 #if defined _WIN32 && ! defined __CYGWIN__ /* Get declarations of the native Windows API functions. */ # define WIN32_LEAN_AND_MEAN # include # if HAVE_MSVC_INVALID_PARAMETER_HANDLER # include "msvc-inval.h" # endif /* Get _get_osfhandle. */ # if GNULIB_MSVC_NOTHROW # include "msvc-nothrow.h" # else # include # endif # if HAVE_MSVC_INVALID_PARAMETER_HANDLER static int dup2_nothrow (int fd, int desired_fd) { int result; TRY_MSVC_INVAL { result = _dup2 (fd, desired_fd); } CATCH_MSVC_INVAL { errno = EBADF; result = -1; } DONE_MSVC_INVAL; return result; } # else # define dup2_nothrow _dup2 # endif static int ms_windows_dup2 (int fd, int desired_fd) { int result; /* If fd is closed, mingw hangs on dup2 (fd, fd). If fd is open, dup2 (fd, fd) returns 0, but all further attempts to use fd in future dup2 calls will hang. */ if (fd == desired_fd) { if ((HANDLE) _get_osfhandle (fd) == INVALID_HANDLE_VALUE) { errno = EBADF; return -1; } return fd; } /* Wine 1.0.1 return 0 when desired_fd is negative but not -1: https://bugs.winehq.org/show_bug.cgi?id=21289 */ if (desired_fd < 0) { errno = EBADF; return -1; } result = dup2_nothrow (fd, desired_fd); if (result == 0) result = desired_fd; return result; } # define dup2 ms_windows_dup2 #elif defined __KLIBC__ # include static int klibc_dup2dirfd (int fd, int desired_fd) { int tempfd; int dupfd; tempfd = open ("NUL", O_RDONLY); if (tempfd == -1) return -1; if (tempfd == desired_fd) { close (tempfd); char path[_MAX_PATH]; if (__libc_Back_ioFHToPath (fd, path, sizeof (path))) return -1; return open(path, O_RDONLY); } dupfd = klibc_dup2dirfd (fd, desired_fd); close (tempfd); return dupfd; } static int klibc_dup2 (int fd, int desired_fd) { int dupfd; struct stat sbuf; dupfd = dup2 (fd, desired_fd); if (dupfd == -1 && errno == ENOTSUP \ && !fstat (fd, &sbuf) && S_ISDIR (sbuf.st_mode)) { close (desired_fd); return klibc_dup2dirfd (fd, desired_fd); } return dupfd; } # define dup2 klibc_dup2 #endif int rpl_dup2 (int fd, int desired_fd) { int result; #ifdef F_GETFL /* On Linux kernels 2.6.26-2.6.29, dup2 (fd, fd) returns -EBADF. On Cygwin 1.5.x, dup2 (1, 1) returns 0. On Cygwin 1.7.17, dup2 (1, -1) dumps core. On Cygwin 1.7.25, dup2 (1, 256) can dump core. On Haiku, dup2 (fd, fd) mistakenly clears FD_CLOEXEC. */ # if HAVE_SETDTABLESIZE setdtablesize (desired_fd + 1); # endif if (desired_fd < 0) fd = desired_fd; if (fd == desired_fd) return fcntl (fd, F_GETFL) == -1 ? -1 : fd; #endif result = dup2 (fd, desired_fd); /* Correct an errno value on FreeBSD 6.1 and Cygwin 1.5.x. */ if (result == -1 && errno == EMFILE) errno = EBADF; #if REPLACE_FCHDIR if (fd != desired_fd && result != -1) result = _gl_register_dup (fd, result); #endif return result; } recode-3.7.15/lib/vprintf.c0000644000175000017500000000211514371444255011143 /* Formatted output to a stream. Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. This file 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 3 of the License, or (at your option) any later version. This file 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 . */ #ifdef HAVE_CONFIG_H # include #endif /* Specification. */ #include #include /* Print formatted output to standard output. Return string length of formatted string. On error, return a negative value. */ int vprintf (const char *format, va_list args) { return vfprintf (stdout, format, args); } recode-3.7.15/lib/printf-parse.h0000644000175000017500000001222514371444255012075 /* Parse printf format string. Copyright (C) 1999, 2002-2003, 2005, 2007, 2010-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _PRINTF_PARSE_H #define _PRINTF_PARSE_H /* This file can be parametrized with the following macros: ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. STATIC Set to 'static' to declare the function static. */ #if HAVE_FEATURES_H # include /* for __GLIBC__, __UCLIBC__ */ #endif #include "printf-args.h" /* Flags */ #define FLAG_GROUP 1 /* ' flag */ #define FLAG_LEFT 2 /* - flag */ #define FLAG_SHOWSIGN 4 /* + flag */ #define FLAG_SPACE 8 /* space flag */ #define FLAG_ALT 16 /* # flag */ #define FLAG_ZERO 32 #if __GLIBC__ >= 2 && !defined __UCLIBC__ # define FLAG_LOCALIZED 64 /* I flag, uses localized digits */ #endif /* arg_index value indicating that no argument is consumed. */ #define ARG_NONE (~(size_t)0) /* xxx_directive: A parsed directive. xxx_directives: A parsed format string. */ /* Number of directly allocated directives (no malloc() needed). */ #define N_DIRECT_ALLOC_DIRECTIVES 7 /* A parsed directive. */ typedef struct { const char* dir_start; const char* dir_end; int flags; const char* width_start; const char* width_end; size_t width_arg_index; const char* precision_start; const char* precision_end; size_t precision_arg_index; char conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */ size_t arg_index; } char_directive; /* A parsed format string. */ typedef struct { size_t count; char_directive *dir; size_t max_width_length; size_t max_precision_length; char_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES]; } char_directives; #if ENABLE_UNISTDIO /* A parsed directive. */ typedef struct { const uint8_t* dir_start; const uint8_t* dir_end; int flags; const uint8_t* width_start; const uint8_t* width_end; size_t width_arg_index; const uint8_t* precision_start; const uint8_t* precision_end; size_t precision_arg_index; uint8_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */ size_t arg_index; } u8_directive; /* A parsed format string. */ typedef struct { size_t count; u8_directive *dir; size_t max_width_length; size_t max_precision_length; u8_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES]; } u8_directives; /* A parsed directive. */ typedef struct { const uint16_t* dir_start; const uint16_t* dir_end; int flags; const uint16_t* width_start; const uint16_t* width_end; size_t width_arg_index; const uint16_t* precision_start; const uint16_t* precision_end; size_t precision_arg_index; uint16_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */ size_t arg_index; } u16_directive; /* A parsed format string. */ typedef struct { size_t count; u16_directive *dir; size_t max_width_length; size_t max_precision_length; u16_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES]; } u16_directives; /* A parsed directive. */ typedef struct { const uint32_t* dir_start; const uint32_t* dir_end; int flags; const uint32_t* width_start; const uint32_t* width_end; size_t width_arg_index; const uint32_t* precision_start; const uint32_t* precision_end; size_t precision_arg_index; uint32_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */ size_t arg_index; } u32_directive; /* A parsed format string. */ typedef struct { size_t count; u32_directive *dir; size_t max_width_length; size_t max_precision_length; u32_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES]; } u32_directives; #endif /* Parses the format string. Fills in the number N of directives, and fills in directives[0], ..., directives[N-1], and sets directives[N].dir_start to the end of the format string. Also fills in the arg_type fields of the arguments and the needed count of arguments. */ #if ENABLE_UNISTDIO extern int ulc_printf_parse (const char *format, char_directives *d, arguments *a); extern int u8_printf_parse (const uint8_t *format, u8_directives *d, arguments *a); extern int u16_printf_parse (const uint16_t *format, u16_directives *d, arguments *a); extern int u32_printf_parse (const uint32_t *format, u32_directives *d, arguments *a); #else # ifdef STATIC STATIC # else extern # endif int printf_parse (const char *format, char_directives *d, arguments *a); #endif #endif /* _PRINTF_PARSE_H */ recode-3.7.15/lib/calloc.c0000644000175000017500000000267214371444255010720 /* calloc() function that is glibc compatible. This wrapper function is required at least on Tru64 UNIX 5.1 and mingw. Copyright (C) 2004-2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* written by Jim Meyering and Bruno Haible */ #include /* Specification. */ #include #include #include "xalloc-oversized.h" /* Call the system's calloc below. */ #undef calloc /* Allocate and zero-fill an NxS-byte block of memory from the heap, even if N or S is zero. */ void * rpl_calloc (size_t n, size_t s) { if (n == 0 || s == 0) n = s = 1; if (xalloc_oversized (n, s)) { errno = ENOMEM; return NULL; } void *result = calloc (n, s); #if !HAVE_MALLOC_POSIX if (result == NULL) errno = ENOMEM; #endif return result; } recode-3.7.15/lib/streq.h0000644000175000017500000000770314371444255010626 /* Optimized string comparison. Copyright (C) 2001-2002, 2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible . */ #ifndef _GL_STREQ_H #define _GL_STREQ_H #include /* STREQ_OPT allows to optimize string comparison with a small literal string. STREQ_OPT (s, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0) is semantically equivalent to strcmp (s, "EUC-KR") == 0 just faster. */ /* Help GCC to generate good code for string comparisons with immediate strings. */ #if (defined __GNUC__ || defined __clang__) && defined __OPTIMIZE__ static inline int streq9 (const char *s1, const char *s2) { return strcmp (s1 + 9, s2 + 9) == 0; } static inline int streq8 (const char *s1, const char *s2, char s28) { if (s1[8] == s28) { if (s28 == 0) return 1; else return streq9 (s1, s2); } else return 0; } static inline int streq7 (const char *s1, const char *s2, char s27, char s28) { if (s1[7] == s27) { if (s27 == 0) return 1; else return streq8 (s1, s2, s28); } else return 0; } static inline int streq6 (const char *s1, const char *s2, char s26, char s27, char s28) { if (s1[6] == s26) { if (s26 == 0) return 1; else return streq7 (s1, s2, s27, s28); } else return 0; } static inline int streq5 (const char *s1, const char *s2, char s25, char s26, char s27, char s28) { if (s1[5] == s25) { if (s25 == 0) return 1; else return streq6 (s1, s2, s26, s27, s28); } else return 0; } static inline int streq4 (const char *s1, const char *s2, char s24, char s25, char s26, char s27, char s28) { if (s1[4] == s24) { if (s24 == 0) return 1; else return streq5 (s1, s2, s25, s26, s27, s28); } else return 0; } static inline int streq3 (const char *s1, const char *s2, char s23, char s24, char s25, char s26, char s27, char s28) { if (s1[3] == s23) { if (s23 == 0) return 1; else return streq4 (s1, s2, s24, s25, s26, s27, s28); } else return 0; } static inline int streq2 (const char *s1, const char *s2, char s22, char s23, char s24, char s25, char s26, char s27, char s28) { if (s1[2] == s22) { if (s22 == 0) return 1; else return streq3 (s1, s2, s23, s24, s25, s26, s27, s28); } else return 0; } static inline int streq1 (const char *s1, const char *s2, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28) { if (s1[1] == s21) { if (s21 == 0) return 1; else return streq2 (s1, s2, s22, s23, s24, s25, s26, s27, s28); } else return 0; } static inline int streq0 (const char *s1, const char *s2, char s20, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28) { if (s1[0] == s20) { if (s20 == 0) return 1; else return streq1 (s1, s2, s21, s22, s23, s24, s25, s26, s27, s28); } else return 0; } #define STREQ_OPT(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \ streq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28) #else #define STREQ_OPT(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \ (strcmp (s1, s2) == 0) #endif #endif /* _GL_STREQ_H */ recode-3.7.15/lib/dirname.c0000644000175000017500000000226414371444255011077 /* dirname.c -- return all but the last element in a file name Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2023 Free Software Foundation, Inc. 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 3 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, see . */ #include #include "dirname.h" #include #include #include "xalloc.h" /* Just like mdir_name (dirname-lgpl.c), except, rather than returning NULL upon malloc failure, here, we report the "memory exhausted" condition and exit. */ char * dir_name (char const *file) { char *result = mdir_name (file); if (!result) xalloc_die (); return result; } recode-3.7.15/lib/frexp.c0000644000175000017500000001040314371444255010576 /* Split a double into fraction and mantissa. Copyright (C) 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Paolo Bonzini , 2003, and Bruno Haible , 2007. */ #if ! defined USE_LONG_DOUBLE # include #endif /* Specification. */ #include #include #ifdef USE_LONG_DOUBLE # include "isnanl-nolibm.h" # include "fpucw.h" #else # include "isnand-nolibm.h" #endif /* This file assumes FLT_RADIX = 2. If FLT_RADIX is a power of 2 greater than 2, or not even a power of 2, some rounding errors can occur, so that then the returned mantissa is only guaranteed to be <= 1.0, not < 1.0. */ #ifdef USE_LONG_DOUBLE # define FUNC frexpl # define DOUBLE long double # define ISNAN isnanl # define DECL_ROUNDING DECL_LONG_DOUBLE_ROUNDING # define BEGIN_ROUNDING() BEGIN_LONG_DOUBLE_ROUNDING () # define END_ROUNDING() END_LONG_DOUBLE_ROUNDING () # define L_(literal) literal##L #else # define FUNC frexp # define DOUBLE double # define ISNAN isnand # define DECL_ROUNDING # define BEGIN_ROUNDING() # define END_ROUNDING() # define L_(literal) literal #endif DOUBLE FUNC (DOUBLE x, int *expptr) { int sign; int exponent; DECL_ROUNDING /* Test for NaN, infinity, and zero. */ if (ISNAN (x) || x + x == x) { *expptr = 0; return x; } sign = 0; if (x < 0) { x = - x; sign = -1; } BEGIN_ROUNDING (); { /* Since the exponent is an 'int', it fits in 64 bits. Therefore the loops are executed no more than 64 times. */ DOUBLE pow2[64]; /* pow2[i] = 2^2^i */ DOUBLE powh[64]; /* powh[i] = 2^-2^i */ int i; exponent = 0; if (x >= L_(1.0)) { /* A positive exponent. */ DOUBLE pow2_i; /* = pow2[i] */ DOUBLE powh_i; /* = powh[i] */ /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i, x * 2^exponent = argument, x >= 1.0. */ for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5); ; i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i) { if (x >= pow2_i) { exponent += (1 << i); x *= powh_i; } else break; pow2[i] = pow2_i; powh[i] = powh_i; } /* Avoid making x too small, as it could become a denormalized number and thus lose precision. */ while (i > 0 && x < pow2[i - 1]) { i--; powh_i = powh[i]; } exponent += (1 << i); x *= powh_i; /* Here 2^-2^i <= x < 1.0. */ } else { /* A negative or zero exponent. */ DOUBLE pow2_i; /* = pow2[i] */ DOUBLE powh_i; /* = powh[i] */ /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i, x * 2^exponent = argument, x < 1.0. */ for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5); ; i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i) { if (x < powh_i) { exponent -= (1 << i); x *= pow2_i; } else break; pow2[i] = pow2_i; powh[i] = powh_i; } /* Here 2^-2^i <= x < 1.0. */ } /* Invariants: x * 2^exponent = argument, and 2^-2^i <= x < 1.0. */ while (i > 0) { i--; if (x < powh[i]) { exponent -= (1 << i); x *= pow2[i]; } } /* Here 0.5 <= x < 1.0. */ } if (sign < 0) x = - x; END_ROUNDING (); *expptr = exponent; return x; } recode-3.7.15/lib/xbinary-io.c0000644000175000017500000000220714371444255011536 /* Binary mode I/O with checking Copyright 2017-2023 Free Software Foundation, Inc. This file 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 3 of the License, or (at your option) any later version. This file 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 . */ #include #define XBINARY_IO_INLINE _GL_EXTERN_INLINE #include "xbinary-io.h" #include #include #include "exitfail.h" #include "verify.h" #include "gettext.h" #define _(msgid) gettext (msgid) #if O_BINARY _Noreturn void xset_binary_mode_error (void) { error (exit_failure, errno, _("failed to set file descriptor text/binary mode")); assume (false); } #endif recode-3.7.15/lib/xalloc.h0000644000175000017500000001524214371444255010747 /* xalloc.h -- malloc with out-of-memory checking Copyright (C) 1990-2000, 2003-2004, 2006-2023 Free Software Foundation, Inc. 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 3 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, see . */ #ifndef XALLOC_H_ #define XALLOC_H_ #include #include #if GNULIB_XALLOC # include "idx.h" #endif #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef XALLOC_INLINE # define XALLOC_INLINE _GL_INLINE #endif #ifdef __cplusplus extern "C" { #endif #if GNULIB_XALLOC_DIE /* This function is always triggered when memory is exhausted. It must be defined by the application, either explicitly or by using gnulib's xalloc-die module. This is the function to call when one wants the program to die because of a memory allocation failure. */ /*extern*/ _Noreturn void xalloc_die (void); #endif /* GNULIB_XALLOC_DIE */ #if GNULIB_XALLOC void *xmalloc (size_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_ALLOC_SIZE ((1)) _GL_ATTRIBUTE_RETURNS_NONNULL; void *ximalloc (idx_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_ALLOC_SIZE ((1)) _GL_ATTRIBUTE_RETURNS_NONNULL; void *xinmalloc (idx_t n, idx_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2)) _GL_ATTRIBUTE_RETURNS_NONNULL; void *xzalloc (size_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_ALLOC_SIZE ((1)) _GL_ATTRIBUTE_RETURNS_NONNULL; void *xizalloc (idx_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_ALLOC_SIZE ((1)) _GL_ATTRIBUTE_RETURNS_NONNULL; void *xcalloc (size_t n, size_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2)) _GL_ATTRIBUTE_RETURNS_NONNULL; void *xicalloc (idx_t n, idx_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2)) _GL_ATTRIBUTE_RETURNS_NONNULL; void *xrealloc (void *p, size_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2)); void *xirealloc (void *p, idx_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2)) _GL_ATTRIBUTE_RETURNS_NONNULL; void *xreallocarray (void *p, size_t n, size_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2, 3)); void *xireallocarray (void *p, idx_t n, idx_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2, 3)) _GL_ATTRIBUTE_RETURNS_NONNULL; void *x2realloc (void *p, size_t *ps) /* superseded by xpalloc */ _GL_ATTRIBUTE_RETURNS_NONNULL; void *x2nrealloc (void *p, size_t *pn, size_t s) /* superseded by xpalloc */ _GL_ATTRIBUTE_RETURNS_NONNULL; void *xpalloc (void *pa, idx_t *pn, idx_t n_incr_min, ptrdiff_t n_max, idx_t s) _GL_ATTRIBUTE_RETURNS_NONNULL; void *xmemdup (void const *p, size_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_ALLOC_SIZE ((2)) _GL_ATTRIBUTE_RETURNS_NONNULL; void *ximemdup (void const *p, idx_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_ALLOC_SIZE ((2)) _GL_ATTRIBUTE_RETURNS_NONNULL; char *ximemdup0 (void const *p, idx_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_RETURNS_NONNULL; char *xstrdup (char const *str) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_RETURNS_NONNULL; /* In the following macros, T must be an elementary or structure/union or typedef'ed type, or a pointer to such a type. To apply one of the following macros to a function pointer or array type, you need to typedef it first and use the typedef name. */ /* Allocate an object of type T dynamically, with error checking. */ /* extern t *XMALLOC (typename t); */ # define XMALLOC(t) ((t *) xmalloc (sizeof (t))) /* Allocate memory for N elements of type T, with error checking. */ /* extern t *XNMALLOC (size_t n, typename t); */ # define XNMALLOC(n, t) \ ((t *) (sizeof (t) == 1 ? xmalloc (n) : xnmalloc (n, sizeof (t)))) /* Allocate an object of type T dynamically, with error checking, and zero it. */ /* extern t *XZALLOC (typename t); */ # define XZALLOC(t) ((t *) xzalloc (sizeof (t))) /* Allocate memory for N elements of type T, with error checking, and zero it. */ /* extern t *XCALLOC (size_t n, typename t); */ # define XCALLOC(n, t) \ ((t *) (sizeof (t) == 1 ? xzalloc (n) : xcalloc (n, sizeof (t)))) /* Allocate an array of N objects, each with S bytes of memory, dynamically, with error checking. S must be nonzero. */ void *xnmalloc (size_t n, size_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2)) _GL_ATTRIBUTE_RETURNS_NONNULL; /* FIXME: Deprecate this in favor of xreallocarray? */ /* Change the size of an allocated block of memory P to an array of N objects each of S bytes, with error checking. S must be nonzero. */ XALLOC_INLINE void *xnrealloc (void *p, size_t n, size_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2, 3)); XALLOC_INLINE void * xnrealloc (void *p, size_t n, size_t s) { return xreallocarray (p, n, s); } /* Return a pointer to a new buffer of N bytes. This is like xmalloc, except it returns char *. */ char *xcharalloc (size_t n) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_ALLOC_SIZE ((1)) _GL_ATTRIBUTE_RETURNS_NONNULL; #endif /* GNULIB_XALLOC */ #ifdef __cplusplus } #endif #if GNULIB_XALLOC && defined __cplusplus /* C++ does not allow conversions from void * to other pointer types without a cast. Use templates to work around the problem when possible. */ template inline T * xrealloc (T *p, size_t s) { return (T *) xrealloc ((void *) p, s); } template inline T * xreallocarray (T *p, size_t n, size_t s) { return (T *) xreallocarray ((void *) p, n, s); } /* FIXME: Deprecate this in favor of xreallocarray? */ template inline T * xnrealloc (T *p, size_t n, size_t s) { return xreallocarray (p, n, s); } template inline T * x2realloc (T *p, size_t *pn) { return (T *) x2realloc ((void *) p, pn); } template inline T * x2nrealloc (T *p, size_t *pn, size_t s) { return (T *) x2nrealloc ((void *) p, pn, s); } template inline T * xmemdup (T const *p, size_t s) { return (T *) xmemdup ((void const *) p, s); } #endif /* GNULIB_XALLOC && C++ */ _GL_INLINE_HEADER_END #endif /* !XALLOC_H_ */ recode-3.7.15/lib/arg-nonnull.h0000644000175000017500000000235314371444255011720 /* A C macro for declaring that specific arguments must not be NULL. Copyright (C) 2009-2023 Free Software Foundation, Inc. This program 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 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 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 . */ /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools that the values passed as arguments n, ..., m must be non-NULL pointers. n = 1 stands for the first argument, n = 2 for the second argument etc. */ #ifndef _GL_ARG_NONNULL # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || defined __clang__ # define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) # else # define _GL_ARG_NONNULL(params) # endif #endif recode-3.7.15/lib/getopt-core.h0000644000175000017500000000713214371444255011714 /* Declarations for getopt (basic, portable features only). Copyright (C) 1989-2023 Free Software Foundation, Inc. This file is part of the GNU C Library and is also part of gnulib. Patches to this file should be submitted to both projects. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ #ifndef _GETOPT_CORE_H #define _GETOPT_CORE_H 1 /* This header should not be used directly; include getopt.h or unistd.h instead. Unlike most bits headers, it does not have a protective #error, because the guard macro for getopt.h in gnulib is not fixed. */ __BEGIN_DECLS /* For communication from 'getopt' to the caller. When 'getopt' finds an option that takes an argument, the argument value is returned here. Also, when 'ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ extern char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to 'getopt'. On entry to 'getopt', zero means this is the first call; initialize. When 'getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, 'optind' communicates from one call to the next how much of ARGV has been scanned so far. */ extern int optind; /* Callers store zero here to inhibit the error message 'getopt' prints for unrecognized options. */ extern int opterr; /* Set to an option character which was unrecognized. */ extern int optopt; /* Get definitions and prototypes for functions to process the arguments in ARGV (ARGC of them, minus the program name) for options given in OPTS. Return the option character from OPTS just read. Return -1 when there are no more options. For unrecognized options, or options missing arguments, 'optopt' is set to the option letter, and '?' is returned. The OPTS string is a list of characters which are recognized option letters, optionally followed by colons, specifying that that letter takes an argument, to be placed in 'optarg'. If a letter in OPTS is followed by two colons, its argument is optional. This behavior is specific to the GNU 'getopt'. The argument '--' causes premature termination of argument scanning, explicitly telling 'getopt' that there are no more options. If OPTS begins with '-', then non-option arguments are treated as arguments to the option '\1'. This behavior is specific to the GNU 'getopt'. If OPTS begins with '+', or POSIXLY_CORRECT is set in the environment, then do not permute arguments. For standards compliance, the 'argv' argument has the type char *const *, but this is inaccurate; if argument permutation is enabled, the argv array (not the strings it points to) must be writable. */ extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) __THROW _GL_ARG_NONNULL ((2, 3)); __END_DECLS #endif /* _GETOPT_CORE_H */ recode-3.7.15/lib/quote.h0000644000175000017500000000350314371444255010617 /* quote.h - prototypes for quote.c Copyright (C) 1998-2001, 2003, 2009-2023 Free Software Foundation, Inc. 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 3 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, see . */ #ifndef QUOTE_H_ # define QUOTE_H_ 1 # include /* The quoting options used by quote_n and quote. Its type is incomplete, so it's useful only in expressions like '"e_quoting_options'. */ extern struct quoting_options quote_quoting_options; /* Return an unambiguous printable representation of ARG (of size ARGSIZE), allocated in slot N, suitable for diagnostics. If ARGSIZE is SIZE_MAX, use the string length of the argument for ARGSIZE. */ char const *quote_n_mem (int n, char const *arg, size_t argsize); /* Return an unambiguous printable representation of ARG (of size ARGSIZE), suitable for diagnostics. If ARGSIZE is SIZE_MAX, use the string length of the argument for ARGSIZE. */ char const *quote_mem (char const *arg, size_t argsize); /* Return an unambiguous printable representation of ARG, allocated in slot N, suitable for diagnostics. */ char const *quote_n (int n, char const *arg); /* Return an unambiguous printable representation of ARG, suitable for diagnostics. */ char const *quote (char const *arg); #endif /* !QUOTE_H_ */ recode-3.7.15/lib/sigaction.c0000644000175000017500000001613614371444255011443 /* POSIX compatible signal blocking. Copyright (C) 2008-2023 Free Software Foundation, Inc. Written by Eric Blake , 2008. This file 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. This file 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 . */ #include /* Specification. */ #include #include #include #include /* This implementation of sigaction is tailored to native Windows behavior: signal() has SysV semantics (ie. the handler is uninstalled before it is invoked). This is an inherent data race if an asynchronous signal is sent twice in a row before we can reinstall our handler, but there's nothing we can do about it. Meanwhile, sigprocmask() is not present, and while we can use the gnulib replacement to provide critical sections, it too suffers from potential data races in the face of an ill-timed asynchronous signal. And we compound the situation by reading static storage in a signal handler, which POSIX warns is not generically async-signal-safe. Oh well. Additionally: - We don't implement SA_NOCLDSTOP or SA_NOCLDWAIT, because SIGCHLD is not defined. - We don't implement SA_ONSTACK, because sigaltstack() is not present. - We ignore SA_RESTART, because blocking native Windows API calls are not interrupted anyway when an asynchronous signal occurs, and the MSVCRT runtime never sets errno to EINTR. - We don't implement SA_SIGINFO because it is impossible to do so portably. POSIX states that an application should not mix signal() and sigaction(). We support the use of signal() within the gnulib sigprocmask() substitute, but all other application code linked with this module should stick with only sigaction(). */ /* Check some of our assumptions. */ #if defined SIGCHLD || defined HAVE_SIGALTSTACK || defined HAVE_SIGINTERRUPT # error "Revisit the assumptions made in the sigaction module" #endif /* Out-of-range substitutes make a good fallback for uncatchable signals. */ #ifndef SIGKILL # define SIGKILL (-1) #endif #ifndef SIGSTOP # define SIGSTOP (-1) #endif /* On native Windows, as of 2008, the signal SIGABRT_COMPAT is an alias for the signal SIGABRT. Only one signal handler is stored for both SIGABRT and SIGABRT_COMPAT. SIGABRT_COMPAT is not a signal of its own. */ #if defined _WIN32 && ! defined __CYGWIN__ # undef SIGABRT_COMPAT # define SIGABRT_COMPAT 6 #endif /* A signal handler. */ typedef void (*handler_t) (int signal); /* Set of current actions. If sa_handler for an entry is NULL, then that signal is not currently handled by the sigaction handler. */ static struct sigaction volatile action_array[NSIG] /* = 0 */; /* Signal handler that is installed for signals. */ static void sigaction_handler (int sig) { handler_t handler; sigset_t mask; sigset_t oldmask; int saved_errno = errno; if (sig < 0 || NSIG <= sig || !action_array[sig].sa_handler) { /* Unexpected situation; be careful to avoid recursive abort. */ if (sig == SIGABRT) signal (SIGABRT, SIG_DFL); abort (); } /* Reinstall the signal handler when required; otherwise update the bookkeeping so that the user's handler may call sigaction and get accurate results. We know the signal isn't currently blocked, or we wouldn't be in its handler, therefore we know that we are not interrupting a sigaction() call. There is a race where any asynchronous instance of the same signal occurring before we reinstall the handler will trigger the default handler; oh well. */ handler = action_array[sig].sa_handler; if ((action_array[sig].sa_flags & SA_RESETHAND) == 0) signal (sig, sigaction_handler); else action_array[sig].sa_handler = NULL; /* Block appropriate signals. */ mask = action_array[sig].sa_mask; if ((action_array[sig].sa_flags & SA_NODEFER) == 0) sigaddset (&mask, sig); sigprocmask (SIG_BLOCK, &mask, &oldmask); /* Invoke the user's handler, then restore prior mask. */ errno = saved_errno; handler (sig); saved_errno = errno; sigprocmask (SIG_SETMASK, &oldmask, NULL); errno = saved_errno; } /* Change and/or query the action that will be taken on delivery of signal SIG. If not NULL, ACT describes the new behavior. If not NULL, OACT is set to the prior behavior. Return 0 on success, or set errno and return -1 on failure. */ int sigaction (int sig, const struct sigaction *restrict act, struct sigaction *restrict oact) { sigset_t mask; sigset_t oldmask; int saved_errno; if (sig < 0 || NSIG <= sig || sig == SIGKILL || sig == SIGSTOP || (act && act->sa_handler == SIG_ERR)) { errno = EINVAL; return -1; } #ifdef SIGABRT_COMPAT if (sig == SIGABRT_COMPAT) sig = SIGABRT; #endif /* POSIX requires sigaction() to be async-signal-safe. In other words, if an asynchronous signal can occur while we are anywhere inside this function, the user's handler could then call sigaction() recursively and expect consistent results. We meet this rule by using sigprocmask to block all signals before modifying any data structure that could be read from a signal handler; this works since we know that the gnulib sigprocmask replacement does not try to use sigaction() from its handler. */ if (!act && !oact) return 0; sigfillset (&mask); sigprocmask (SIG_BLOCK, &mask, &oldmask); if (oact) { if (action_array[sig].sa_handler) *oact = action_array[sig]; else { /* Safe to change the handler at will here, since all signals are currently blocked. */ oact->sa_handler = signal (sig, SIG_DFL); if (oact->sa_handler == SIG_ERR) goto failure; signal (sig, oact->sa_handler); oact->sa_flags = SA_RESETHAND | SA_NODEFER; sigemptyset (&oact->sa_mask); } } if (act) { /* Safe to install the handler before updating action_array, since all signals are currently blocked. */ if (act->sa_handler == SIG_DFL || act->sa_handler == SIG_IGN) { if (signal (sig, act->sa_handler) == SIG_ERR) goto failure; action_array[sig].sa_handler = NULL; } else { if (signal (sig, sigaction_handler) == SIG_ERR) goto failure; action_array[sig] = *act; } } sigprocmask (SIG_SETMASK, &oldmask, NULL); return 0; failure: saved_errno = errno; sigprocmask (SIG_SETMASK, &oldmask, NULL); errno = saved_errno; return -1; } recode-3.7.15/lib/xalloc-oversized.h0000644000175000017500000000512014371444255012751 /* xalloc-oversized.h -- memory allocation size checking Copyright (C) 1990-2000, 2003-2004, 2006-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef XALLOC_OVERSIZED_H_ #define XALLOC_OVERSIZED_H_ #include #include /* True if N * S does not fit into both ptrdiff_t and size_t. N and S should be nonnegative and free of side effects. This expands to a constant expression if N and S are both constants. By gnulib convention, SIZE_MAX represents overflow in size_t calculations, so the conservative size_t-based dividend to use here is SIZE_MAX - 1. */ #define __xalloc_oversized(n, s) \ ((s) != 0 \ && ((size_t) (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : SIZE_MAX - 1) / (s) \ < (n))) /* Return 1 if and only if an array of N objects, each of size S, cannot exist reliably because its total size in bytes would exceed MIN (PTRDIFF_MAX, SIZE_MAX - 1). N and S should be nonnegative and free of side effects. Warning: (xalloc_oversized (N, S) ? NULL : malloc (N * S)) can misbehave if N and S are both narrower than ptrdiff_t and size_t, and can be rewritten as (xalloc_oversized (N, S) ? NULL : malloc (N * (size_t) S)). This is a macro, not a function, so that it works even if an argument exceeds MAX (PTRDIFF_MAX, SIZE_MAX). */ #if 7 <= __GNUC__ && !defined __clang__ && PTRDIFF_MAX < SIZE_MAX # define xalloc_oversized(n, s) \ __builtin_mul_overflow_p (n, s, (ptrdiff_t) 1) #elif (5 <= __GNUC__ && !defined __ICC && !__STRICT_ANSI__ \ && PTRDIFF_MAX < SIZE_MAX) # define xalloc_oversized(n, s) \ (__builtin_constant_p (n) && __builtin_constant_p (s) \ ? __xalloc_oversized (n, s) \ : ({ ptrdiff_t __xalloc_count; \ __builtin_mul_overflow (n, s, &__xalloc_count); })) /* Other compilers use integer division; this may be slower but is more portable. */ #else # define xalloc_oversized(n, s) __xalloc_oversized (n, s) #endif #endif /* !XALLOC_OVERSIZED_H_ */ recode-3.7.15/lib/unistd.c0000644000175000017500000000154114371444255010763 /* Inline functions for . Copyright (C) 2012-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #define _GL_UNISTD_INLINE _GL_EXTERN_INLINE #include "unistd.h" typedef int dummy; recode-3.7.15/lib/malloc.c0000644000175000017500000000243014371444255010722 /* malloc() function that is glibc compatible. Copyright (C) 1997-1998, 2006-2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* written by Jim Meyering and Bruno Haible */ #define _GL_USE_STDLIB_ALLOC 1 #include #include #include #include "xalloc-oversized.h" /* Allocate an N-byte block of memory from the heap, even if N is 0. */ void * rpl_malloc (size_t n) { if (n == 0) n = 1; if (xalloc_oversized (n, 1)) { errno = ENOMEM; return NULL; } void *result = malloc (n); #if !HAVE_MALLOC_POSIX if (result == NULL) errno = ENOMEM; #endif return result; } recode-3.7.15/lib/ialloc.h0000644000175000017500000000446314371444255010733 /* ialloc.h -- malloc with idx_t rather than size_t Copyright 2021-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef IALLOC_H_ #define IALLOC_H_ #include "idx.h" #include #include #include #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef IALLOC_INLINE # define IALLOC_INLINE _GL_INLINE #endif #ifdef __cplusplus extern "C" { #endif IALLOC_INLINE void * _GL_ATTRIBUTE_COLD _gl_alloc_nomem (void) { errno = ENOMEM; return NULL; } IALLOC_INLINE _GL_ATTRIBUTE_MALLOC /*_GL_ATTRIBUTE_DEALLOC_FREE*/ void * imalloc (idx_t s) { return s <= SIZE_MAX ? malloc (s) : _gl_alloc_nomem (); } IALLOC_INLINE /*_GL_ATTRIBUTE_DEALLOC_FREE*/ void * irealloc (void *p, idx_t s) { /* Work around GNU realloc glitch by treating a zero size as if it were 1, so that returning NULL is equivalent to failing. */ return s <= SIZE_MAX ? realloc (p, s | !s) : _gl_alloc_nomem (); } IALLOC_INLINE _GL_ATTRIBUTE_MALLOC /*_GL_ATTRIBUTE_DEALLOC_FREE*/ void * icalloc (idx_t n, idx_t s) { if (SIZE_MAX < n) { if (s != 0) return _gl_alloc_nomem (); n = 0; } if (SIZE_MAX < s) { if (n != 0) return _gl_alloc_nomem (); s = 0; } return calloc (n, s); } IALLOC_INLINE void * ireallocarray (void *p, idx_t n, idx_t s) { /* Work around GNU reallocarray glitch by treating a zero size as if it were 1, so that returning NULL is equivalent to failing. */ if (n == 0 || s == 0) n = s = 1; return (n <= SIZE_MAX && s <= SIZE_MAX ? reallocarray (p, n, s) : _gl_alloc_nomem ()); } #ifdef __cplusplus } #endif #endif recode-3.7.15/lib/sys_wait.in.h0000644000175000017500000000760214371444255011735 /* A POSIX-like . Copyright (C) 2001-2003, 2005-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _@GUARD_PREFIX@_SYS_WAIT_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #if !(defined _WIN32 && ! defined __CYGWIN__) # @INCLUDE_NEXT@ @NEXT_SYS_WAIT_H@ #endif #ifndef _@GUARD_PREFIX@_SYS_WAIT_H #define _@GUARD_PREFIX@_SYS_WAIT_H /* Get pid_t. */ #include /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ #if !(defined _WIN32 && ! defined __CYGWIN__) /* Unix API. */ /* The following macros apply to an argument x, that is a status of a process, as returned by waitpid(). On nearly all systems, including Linux/x86, WEXITSTATUS are bits 15..8 and WTERMSIG are bits 7..0, while BeOS uses the opposite. Therefore programs have to use the abstract macros. */ /* For valid x, exactly one of WIFSIGNALED(x), WIFEXITED(x), WIFSTOPPED(x) is true. */ # ifndef WIFSIGNALED # define WIFSIGNALED(x) (WTERMSIG (x) != 0 && WTERMSIG(x) != 0x7f) # endif # ifndef WIFEXITED # define WIFEXITED(x) (WTERMSIG (x) == 0) # endif # ifndef WIFSTOPPED # define WIFSTOPPED(x) (WTERMSIG (x) == 0x7f) # endif /* The termination signal. Only to be accessed if WIFSIGNALED(x) is true. */ # ifndef WTERMSIG # define WTERMSIG(x) ((x) & 0x7f) # endif /* The exit status. Only to be accessed if WIFEXITED(x) is true. */ # ifndef WEXITSTATUS # define WEXITSTATUS(x) (((x) >> 8) & 0xff) # endif /* The stopping signal. Only to be accessed if WIFSTOPPED(x) is true. */ # ifndef WSTOPSIG # define WSTOPSIG(x) (((x) >> 8) & 0x7f) # endif /* True if the process dumped core. Not standardized by POSIX. */ # ifndef WCOREDUMP # define WCOREDUMP(x) ((x) & 0x80) # endif #else /* Native Windows API. */ # include /* for SIGTERM */ /* The following macros apply to an argument x, that is a status of a process, as returned by waitpid() or, equivalently, _cwait() or GetExitCodeProcess(). This value is simply an 'int', not composed of bit fields. */ /* When an unhandled fatal signal terminates a process, the exit code is 3. */ # define WIFSIGNALED(x) ((x) == 3) # define WIFEXITED(x) ((x) != 3) # define WIFSTOPPED(x) 0 /* The signal that terminated a process is not known posthum. */ # define WTERMSIG(x) SIGTERM # define WEXITSTATUS(x) (x) /* There are no stopping signals. */ # define WSTOPSIG(x) 0 /* There are no core dumps. */ # define WCOREDUMP(x) 0 #endif /* Declarations of functions. */ #if @GNULIB_WAITPID@ # if defined _WIN32 && ! defined __CYGWIN__ _GL_FUNCDECL_SYS (waitpid, pid_t, (pid_t pid, int *statusp, int options)); # endif /* Need to cast, because on Cygwin, the second parameter is __wait_status_ptr_t statusp. */ _GL_CXXALIAS_SYS_CAST (waitpid, pid_t, (pid_t pid, int *statusp, int options)); _GL_CXXALIASWARN (waitpid); #elif defined GNULIB_POSIXCHECK # undef waitpid # if HAVE_RAW_DECL_WAITPID _GL_WARN_ON_USE (waitpid, "waitpid is unportable - " "use gnulib module sys_wait for portability"); # endif #endif #endif /* _@GUARD_PREFIX@_SYS_WAIT_H */ #endif /* _@GUARD_PREFIX@_SYS_WAIT_H */ recode-3.7.15/lib/isnan.c0000644000175000017500000001575414371444255010600 /* Test for NaN that does not need libm. Copyright (C) 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2007. */ #include /* Specification. */ #ifdef USE_LONG_DOUBLE /* Specification found in math.h or isnanl-nolibm.h. */ extern int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST; #elif ! defined USE_FLOAT /* Specification found in math.h or isnand-nolibm.h. */ extern int rpl_isnand (double x); #else /* defined USE_FLOAT */ /* Specification found in math.h or isnanf-nolibm.h. */ extern int rpl_isnanf (float x); #endif #include #include #include "float+.h" #ifdef USE_LONG_DOUBLE # define FUNC rpl_isnanl # define DOUBLE long double # define MAX_EXP LDBL_MAX_EXP # define MIN_EXP LDBL_MIN_EXP # if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT # define KNOWN_EXPBIT0_LOCATION # define EXPBIT0_WORD LDBL_EXPBIT0_WORD # define EXPBIT0_BIT LDBL_EXPBIT0_BIT # endif # define SIZE SIZEOF_LDBL # define L_(literal) literal##L #elif ! defined USE_FLOAT # define FUNC rpl_isnand # define DOUBLE double # define MAX_EXP DBL_MAX_EXP # define MIN_EXP DBL_MIN_EXP # if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT # define KNOWN_EXPBIT0_LOCATION # define EXPBIT0_WORD DBL_EXPBIT0_WORD # define EXPBIT0_BIT DBL_EXPBIT0_BIT # endif # define SIZE SIZEOF_DBL # define L_(literal) literal #else /* defined USE_FLOAT */ # define FUNC rpl_isnanf # define DOUBLE float # define MAX_EXP FLT_MAX_EXP # define MIN_EXP FLT_MIN_EXP # if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT # define KNOWN_EXPBIT0_LOCATION # define EXPBIT0_WORD FLT_EXPBIT0_WORD # define EXPBIT0_BIT FLT_EXPBIT0_BIT # endif # define SIZE SIZEOF_FLT # define L_(literal) literal##f #endif #define EXP_MASK ((MAX_EXP - MIN_EXP) | 7) #define NWORDS \ ((sizeof (DOUBLE) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { DOUBLE value; unsigned int word[NWORDS]; } memory_double; /* Most hosts nowadays use IEEE floating point, so they use IEC 60559 representations, have infinities and NaNs, and do not trap on exceptions. Define IEEE_FLOATING_POINT if this host is one of the typical ones. The C23 macro __STDC_IEC_60559_BFP__ macro (or its cousin, the now-obsolescent C11 macro __STDC_IEC_559__) is close to what is wanted here, but is not quite right because this file does not require all the features of C23 Annex F (and works even with pre-C11 platforms, for that matter). */ #define IEEE_FLOATING_POINT (FLT_RADIX == 2 && FLT_MANT_DIG == 24 \ && FLT_MIN_EXP == -125 && FLT_MAX_EXP == 128) int FUNC (DOUBLE x) { #if defined KNOWN_EXPBIT0_LOCATION && IEEE_FLOATING_POINT # if defined USE_LONG_DOUBLE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE /* Special CPU dependent code is needed to treat bit patterns outside the IEEE 754 specification (such as Pseudo-NaNs, Pseudo-Infinities, Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals) as NaNs. These bit patterns are: - exponent = 0x0001..0x7FFF, mantissa bit 63 = 0, - exponent = 0x0000, mantissa bit 63 = 1. The NaN bit pattern is: - exponent = 0x7FFF, mantissa >= 0x8000000000000001. */ memory_double m; unsigned int exponent; m.value = x; exponent = (m.word[EXPBIT0_WORD] >> EXPBIT0_BIT) & EXP_MASK; # ifdef WORDS_BIGENDIAN /* Big endian: EXPBIT0_WORD = 0, EXPBIT0_BIT = 16. */ if (exponent == 0) return 1 & (m.word[0] >> 15); else if (exponent == EXP_MASK) return (((m.word[0] ^ 0x8000U) << 16) | m.word[1] | (m.word[2] >> 16)) != 0; else return 1 & ~(m.word[0] >> 15); # else /* Little endian: EXPBIT0_WORD = 2, EXPBIT0_BIT = 0. */ if (exponent == 0) return (m.word[1] >> 31); else if (exponent == EXP_MASK) return ((m.word[1] ^ 0x80000000U) | m.word[0]) != 0; else return (m.word[1] >> 31) ^ 1; # endif # else /* Be careful to not do any floating-point operation on x, such as x == x, because x may be a signaling NaN. */ # if defined __SUNPRO_C || defined __ICC || defined _MSC_VER \ || defined __DECC || defined __TINYC__ \ || (defined __sgi && !defined __GNUC__) /* The Sun C 5.0, Intel ICC 10.0, Microsoft Visual C/C++ 9.0, Compaq (ex-DEC) 6.4, and TinyCC compilers don't recognize the initializers as constant expressions. The Compaq compiler also fails when constant-folding 0.0 / 0.0 even when constant-folding is not required. The Microsoft Visual C/C++ compiler also fails when constant-folding 1.0 / 0.0 even when constant-folding is not required. The SGI MIPSpro C compiler complains about "floating-point operation result is out of range". */ static DOUBLE zero = L_(0.0); memory_double nan; DOUBLE plus_inf = L_(1.0) / zero; DOUBLE minus_inf = -L_(1.0) / zero; nan.value = zero / zero; # else static memory_double nan = { L_(0.0) / L_(0.0) }; static DOUBLE plus_inf = L_(1.0) / L_(0.0); static DOUBLE minus_inf = -L_(1.0) / L_(0.0); # endif { memory_double m; /* A NaN can be recognized through its exponent. But exclude +Infinity and -Infinity, which have the same exponent. */ m.value = x; if (((m.word[EXPBIT0_WORD] ^ nan.word[EXPBIT0_WORD]) & (EXP_MASK << EXPBIT0_BIT)) == 0) return (memcmp (&m.value, &plus_inf, SIZE) != 0 && memcmp (&m.value, &minus_inf, SIZE) != 0); else return 0; } # endif #else /* The configuration did not find sufficient information, or does not use IEEE floating point. Give up about the signaling NaNs; handle only the quiet NaNs. */ if (x == x) { # if defined USE_LONG_DOUBLE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE /* Detect any special bit patterns that pass ==; see comment above. */ memory_double m1; memory_double m2; memset (&m1.value, 0, SIZE); memset (&m2.value, 0, SIZE); m1.value = x; m2.value = x + (x ? 0.0L : -0.0L); if (memcmp (&m1.value, &m2.value, SIZE) != 0) return 1; # endif return 0; } else return 1; #endif } recode-3.7.15/lib/mkstemps.c0000644000175000017500000000306014371444255011316 /* Copyright (C) 1998-1999, 2001, 2005-2007, 2009-2023 Free Software Foundation, Inc. This file is derived from the one in the GNU C Library. This file 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. This file 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 . */ #if !_LIBC # include #endif #include #if !_LIBC # include # include "tempname.h" # define __gen_tempname gen_tempname # ifndef __GT_FILE # define __GT_FILE GT_FILE # endif # define __set_errno(x) errno = x; #endif #include #ifndef __GT_FILE # define __GT_FILE 0 #endif /* Generate a unique temporary file name from XTEMPLATE. The last six characters before a suffix of length SUFFIXLEN of XTEMPLATE must be "XXXXXX"; they are replaced with a string that makes the filename unique. Then open the file and return a fd. */ int mkstemps (char *xtemplate, int suffixlen) { if (suffixlen < 0) { __set_errno (EINVAL); return -1; } return __gen_tempname (xtemplate, suffixlen, 0, __GT_FILE); } recode-3.7.15/lib/exitfail.h0000644000175000017500000000142414371444255011267 /* Failure exit status Copyright (C) 2002, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ extern int volatile exit_failure; recode-3.7.15/lib/lstat.c0000644000175000017500000000723614371444255010613 /* Work around a bug of lstat on some systems Copyright (C) 1997-2006, 2008-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* written by Jim Meyering */ /* If the user's config.h happens to include , let it include only the system's here, so that orig_lstat doesn't recurse to rpl_lstat. */ #define __need_system_sys_stat_h #include #if !HAVE_LSTAT /* On systems that lack symlinks, our replacement already defined lstat as stat, so there is nothing further to do other than avoid an empty file. */ typedef int dummy; #else /* HAVE_LSTAT */ /* Get the original definition of lstat. It might be defined as a macro. */ # include # include # undef __need_system_sys_stat_h static int orig_lstat (const char *filename, struct stat *buf) { return lstat (filename, buf); } /* Specification. */ # ifdef __osf__ /* Write "sys/stat.h" here, not , otherwise OSF/1 5.1 DTK cc eliminates this include because of the preliminary #include above. */ # include "sys/stat.h" # else # include # endif # include "stat-time.h" # include # include /* lstat works differently on Linux and Solaris systems. POSIX (see "pathname resolution" in the glossary) requires that programs like 'ls' take into consideration the fact that FILE has a trailing slash when FILE is a symbolic link. On Linux and Solaris 10 systems, the lstat function already has the desired semantics (in treating 'lstat ("symlink/", sbuf)' just like 'lstat ("symlink/.", sbuf)', but on Solaris 9 and earlier it does not. If FILE has a trailing slash and specifies a symbolic link, then use stat() to get more info on the referent of FILE. If the referent is a non-directory, then set errno to ENOTDIR and return -1. Otherwise, return stat's result. */ int rpl_lstat (const char *file, struct stat *sbuf) { int result = orig_lstat (file, sbuf); /* This replacement file can blindly check against '/' rather than using the ISSLASH macro, because all platforms with '\\' either lack symlinks (mingw) or have working lstat (cygwin) and thus do not compile this file. 0 len should have already been filtered out above, with a failure return of ENOENT. */ if (result == 0) { if (S_ISDIR (sbuf->st_mode) || file[strlen (file) - 1] != '/') result = stat_time_normalize (result, sbuf); else { /* At this point, a trailing slash is permitted only on symlink-to-dir; but it should have found information on the directory, not the symlink. Call 'stat' to get info about the link's referent. Our replacement stat guarantees valid results, even if the symlink is not pointing to a directory. */ if (!S_ISLNK (sbuf->st_mode)) { errno = ENOTDIR; return -1; } result = stat (file, sbuf); } } return result; } #endif /* HAVE_LSTAT */ recode-3.7.15/lib/dirname-lgpl.c0000644000175000017500000000614214371444255012032 /* dirname.c -- return all but the last element in a file name Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #include "dirname.h" #include #include /* Return the length of the prefix of FILE that will be used by dir_name. If FILE is in the working directory, this returns zero even though 'dir_name (FILE)' will return ".". Works properly even if there are trailing slashes (by effectively ignoring them). */ size_t dir_len (char const *file) { size_t prefix_length = FILE_SYSTEM_PREFIX_LEN (file); size_t length; /* Advance prefix_length beyond important leading slashes. */ prefix_length += (prefix_length != 0 ? (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE && ISSLASH (file[prefix_length])) : (ISSLASH (file[0]) ? ((DOUBLE_SLASH_IS_DISTINCT_ROOT && ISSLASH (file[1]) && ! ISSLASH (file[2]) ? 2 : 1)) : 0)); /* Strip the basename and any redundant slashes before it. */ for (length = last_component (file) - file; prefix_length < length; length--) if (! ISSLASH (file[length - 1])) break; return length; } /* In general, we can't use the builtin 'dirname' function if available, since it has different meanings in different environments. In some environments the builtin 'dirname' modifies its argument. Return the leading directories part of FILE, allocated with malloc. Works properly even if there are trailing slashes (by effectively ignoring them). Return NULL on failure. If lstat (FILE) would succeed, then { chdir (dir_name (FILE)); lstat (base_name (FILE)); } will access the same file. Likewise, if the sequence { chdir (dir_name (FILE)); rename (base_name (FILE), "foo"); } succeeds, you have renamed FILE to "foo" in the same directory FILE was in. */ char * mdir_name (char const *file) { size_t length = dir_len (file); bool append_dot = (length == 0 || (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE && length == FILE_SYSTEM_PREFIX_LEN (file) && file[2] != '\0' && ! ISSLASH (file[2]))); char *dir = malloc (length + append_dot + 1); if (!dir) return NULL; memcpy (dir, file, length); if (append_dot) dir[length++] = '.'; dir[length] = '\0'; return dir; } recode-3.7.15/lib/stddef.in.h0000644000175000017500000001203414371444255011337 /* A substitute for POSIX 2008 , for platforms that have issues. Copyright (C) 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Eric Blake. */ /* * POSIX 2008 for platforms that have issues. * */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_wchar_t || defined __need_size_t \ || defined __need_ptrdiff_t || defined __need_NULL \ || defined __need_wint_t /* Special invocation convention inside gcc header files. In particular, gcc provides a version of that blindly redefines NULL even when __need_wint_t was defined, even though wint_t is not normally provided by . Hence, we must remember if special invocation has ever been used to obtain wint_t, in which case we need to clean up NULL yet again. */ # if !(defined _@GUARD_PREFIX@_STDDEF_H && defined _GL_STDDEF_WINT_T) # ifdef __need_wint_t # define _GL_STDDEF_WINT_T # endif # @INCLUDE_NEXT@ @NEXT_STDDEF_H@ /* On TinyCC, make sure that the macros that indicate the special invocation convention get undefined. */ # undef __need_wchar_t # undef __need_size_t # undef __need_ptrdiff_t # undef __need_NULL # undef __need_wint_t # endif #else /* Normal invocation convention. */ # ifndef _@GUARD_PREFIX@_STDDEF_H /* On AIX 7.2, with xlc in 64-bit mode, defines max_align_t to a type with alignment 4, but 'long' has alignment 8. */ # if defined _AIX && defined __LP64__ # if !GNULIB_defined_max_align_t # ifdef _MAX_ALIGN_T /* /usr/include/stddef.h has already defined max_align_t. Override it. */ typedef long rpl_max_align_t; # define max_align_t rpl_max_align_t # else /* Prevent /usr/include/stddef.h from defining max_align_t. */ typedef long max_align_t; # define _MAX_ALIGN_T # endif # define GNULIB_defined_max_align_t 1 # endif # endif /* The include_next requires a split double-inclusion guard. */ # @INCLUDE_NEXT@ @NEXT_STDDEF_H@ /* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */ # if (@REPLACE_NULL@ \ && (!defined _@GUARD_PREFIX@_STDDEF_H || defined _GL_STDDEF_WINT_T)) # undef NULL # ifdef __cplusplus /* ISO C++ says that the macro NULL must expand to an integer constant expression, hence '((void *) 0)' is not allowed in C++. */ # if __GNUG__ >= 3 /* GNU C++ has a __null macro that behaves like an integer ('int' or 'long') but has the same size as a pointer. Use that, to avoid warnings. */ # define NULL __null # else # define NULL 0L # endif # else # define NULL ((void *) 0) # endif # endif # ifndef _@GUARD_PREFIX@_STDDEF_H # define _@GUARD_PREFIX@_STDDEF_H /* Some platforms lack wchar_t. */ #if !@HAVE_WCHAR_T@ # define wchar_t int #endif /* Some platforms lack max_align_t. The check for _GCC_MAX_ALIGN_T is a hack in case the configure-time test was done with g++ even though we are currently compiling with gcc. On MSVC, max_align_t is defined only in C++ mode, after was included. Its definition is good since it has an alignment of 8 (on x86 and x86_64). Similarly on OS/2 kLIBC. */ #if (defined _MSC_VER || (defined __KLIBC__ && !defined __LIBCN__)) \ && defined __cplusplus # include #else # if ! (@HAVE_MAX_ALIGN_T@ || (defined _GCC_MAX_ALIGN_T && !defined __clang__)) # if !GNULIB_defined_max_align_t /* On the x86, the maximum storage alignment of double, long, etc. is 4, but GCC's C11 ABI for x86 says that max_align_t has an alignment of 8, and the C11 standard allows this. Work around this problem by using __alignof__ (which returns 8 for double) rather than _Alignof (which returns 4), and align each union member accordingly. */ # if defined __GNUC__ || (__clang_major__ >= 4) # define _GL_STDDEF_ALIGNAS(type) \ __attribute__ ((__aligned__ (__alignof__ (type)))) # else # define _GL_STDDEF_ALIGNAS(type) /* */ # endif typedef union { char *__p _GL_STDDEF_ALIGNAS (char *); double __d _GL_STDDEF_ALIGNAS (double); long double __ld _GL_STDDEF_ALIGNAS (long double); long int __i _GL_STDDEF_ALIGNAS (long int); } rpl_max_align_t; # define max_align_t rpl_max_align_t # define GNULIB_defined_max_align_t 1 # endif # endif #endif # endif /* _@GUARD_PREFIX@_STDDEF_H */ # endif /* _@GUARD_PREFIX@_STDDEF_H */ #endif /* __need_XXX */ recode-3.7.15/lib/canonicalize-lgpl.c0000644000175000017500000003441514371444255013056 /* Return the canonical absolute name of a given file. Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library 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. The GNU C Library 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 the GNU C Library; if not, see . */ #ifndef _LIBC /* Don't use __attribute__ __nonnull__ in this compilation unit. Otherwise gcc optimizes away the name == NULL test below. */ # define _GL_ARG_NONNULL(params) # include #endif /* Specification. */ #include #include #include #include #include #include #include #include #include #include #include #include #ifdef _LIBC # include # define GCC_LINT 1 # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define __canonicalize_file_name canonicalize_file_name # define __realpath realpath # define __strdup strdup # include "pathmax.h" # define __faccessat faccessat # if defined _WIN32 && !defined __CYGWIN__ # define __getcwd _getcwd # elif HAVE_GETCWD # if IN_RELOCWRAPPER /* When building the relocatable program wrapper, use the system's getcwd function, not the gnulib override, otherwise we would get a link error. */ # undef getcwd # endif # if defined VMS && !defined getcwd /* We want the directory in Unix syntax, not in VMS syntax. The gnulib override of 'getcwd' takes 2 arguments; the original VMS 'getcwd' takes 3 arguments. */ # define __getcwd(buf, max) getcwd (buf, max, 0) # else # define __getcwd getcwd # endif # else # define __getcwd(buf, max) getwd (buf) # endif # define __mempcpy mempcpy # define __pathconf pathconf # define __rawmemchr rawmemchr # define __readlink readlink # if IN_RELOCWRAPPER /* When building the relocatable program wrapper, use the system's memmove function, not the gnulib override, otherwise we would get a link error. */ # undef memmove # endif #endif /* Suppress bogus GCC -Wmaybe-uninitialized warnings. */ #if defined GCC_LINT || defined lint # define IF_LINT(Code) Code #else # define IF_LINT(Code) /* empty */ #endif #ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT # define DOUBLE_SLASH_IS_DISTINCT_ROOT false #endif #if defined _LIBC || !FUNC_REALPATH_WORKS /* Return true if FILE's existence can be shown, false (setting errno) otherwise. Follow symbolic links. */ static bool file_accessible (char const *file) { # if defined _LIBC || HAVE_FACCESSAT return __faccessat (AT_FDCWD, file, F_OK, AT_EACCESS) == 0; # else struct stat st; return stat (file, &st) == 0 || errno == EOVERFLOW; # endif } /* True if concatenating END as a suffix to a file name means that the code needs to check that the file name is that of a searchable directory, since the canonicalize_filename_mode_stk code won't check this later anyway when it checks an ordinary file name component within END. END must either be empty, or start with a slash. */ static bool _GL_ATTRIBUTE_PURE suffix_requires_dir_check (char const *end) { /* If END does not start with a slash, the suffix is OK. */ while (ISSLASH (*end)) { /* Two or more slashes act like a single slash. */ do end++; while (ISSLASH (*end)); switch (*end++) { default: return false; /* An ordinary file name component is OK. */ case '\0': return true; /* Trailing "/" is trouble. */ case '.': break; /* Possibly "." or "..". */ } /* Trailing "/.", or "/.." even if not trailing, is trouble. */ if (!*end || (*end == '.' && (!end[1] || ISSLASH (end[1])))) return true; } return false; } /* Append this to a file name to test whether it is a searchable directory. On POSIX platforms "/" suffices, but "/./" is sometimes needed on macOS 10.13 , and should also work on platforms like AIX 7.2 that need at least "/.". */ # if defined _LIBC || defined LSTAT_FOLLOWS_SLASHED_SYMLINK static char const dir_suffix[] = "/"; # else static char const dir_suffix[] = "/./"; # endif /* Return true if DIR is a searchable dir, false (setting errno) otherwise. DIREND points to the NUL byte at the end of the DIR string. Store garbage into DIREND[0 .. strlen (dir_suffix)]. */ static bool dir_check (char *dir, char *dirend) { strcpy (dirend, dir_suffix); return file_accessible (dir); } static idx_t get_path_max (void) { # ifdef PATH_MAX long int path_max = PATH_MAX; # else /* The caller invoked realpath with a null RESOLVED, even though PATH_MAX is not defined as a constant. The glibc manual says programs should not do this, and POSIX says the behavior is undefined. Historically, glibc here used the result of pathconf, or 1024 if that failed; stay consistent with this (dubious) historical practice. */ int err = errno; long int path_max = __pathconf ("/", _PC_PATH_MAX); __set_errno (err); # endif return path_max < 0 ? 1024 : path_max <= IDX_MAX ? path_max : IDX_MAX; } /* Scratch buffers used by realpath_stk and managed by __realpath. */ struct realpath_bufs { struct scratch_buffer rname; struct scratch_buffer extra; struct scratch_buffer link; }; static char * realpath_stk (const char *name, char *resolved, struct realpath_bufs *bufs) { char *dest; char const *start; char const *end; int num_links = 0; if (name == NULL) { /* As per Single Unix Specification V2 we must return an error if either parameter is a null pointer. We extend this to allow the RESOLVED parameter to be NULL in case the we are expected to allocate the room for the return value. */ __set_errno (EINVAL); return NULL; } if (name[0] == '\0') { /* As per Single Unix Specification V2 we must return an error if the name argument points to an empty string. */ __set_errno (ENOENT); return NULL; } char *rname = bufs->rname.data; bool end_in_extra_buffer = false; bool failed = true; /* This is always zero for Posix hosts, but can be 2 for MS-Windows and MS-DOS X:/foo/bar file names. */ idx_t prefix_len = FILE_SYSTEM_PREFIX_LEN (name); if (!IS_ABSOLUTE_FILE_NAME (name)) { while (!__getcwd (bufs->rname.data, bufs->rname.length)) { if (errno != ERANGE) { dest = rname; goto error; } if (!scratch_buffer_grow (&bufs->rname)) return NULL; rname = bufs->rname.data; } dest = __rawmemchr (rname, '\0'); start = name; prefix_len = FILE_SYSTEM_PREFIX_LEN (rname); } else { dest = __mempcpy (rname, name, prefix_len); *dest++ = '/'; if (DOUBLE_SLASH_IS_DISTINCT_ROOT) { if (prefix_len == 0 /* implies ISSLASH (name[0]) */ && ISSLASH (name[1]) && !ISSLASH (name[2])) *dest++ = '/'; *dest = '\0'; } start = name + prefix_len; } for ( ; *start; start = end) { /* Skip sequence of multiple file name separators. */ while (ISSLASH (*start)) ++start; /* Find end of component. */ for (end = start; *end && !ISSLASH (*end); ++end) /* Nothing. */; /* Length of this file name component; it can be zero if a file name ends in '/'. */ idx_t startlen = end - start; if (startlen == 0) break; else if (startlen == 1 && start[0] == '.') /* nothing */; else if (startlen == 2 && start[0] == '.' && start[1] == '.') { /* Back up to previous component, ignore if at root already. */ if (dest > rname + prefix_len + 1) for (--dest; dest > rname && !ISSLASH (dest[-1]); --dest) continue; if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rname + 1 && !prefix_len && ISSLASH (*dest) && !ISSLASH (dest[1])) dest++; } else { if (!ISSLASH (dest[-1])) *dest++ = '/'; while (rname + bufs->rname.length - dest < startlen + sizeof dir_suffix) { idx_t dest_offset = dest - rname; if (!scratch_buffer_grow_preserve (&bufs->rname)) return NULL; rname = bufs->rname.data; dest = rname + dest_offset; } dest = __mempcpy (dest, start, startlen); *dest = '\0'; char *buf; ssize_t n; while (true) { buf = bufs->link.data; idx_t bufsize = bufs->link.length; n = __readlink (rname, buf, bufsize - 1); if (n < bufsize - 1) break; if (!scratch_buffer_grow (&bufs->link)) return NULL; } if (0 <= n) { if (++num_links > __eloop_threshold ()) { __set_errno (ELOOP); goto error; } buf[n] = '\0'; char *extra_buf = bufs->extra.data; idx_t end_idx IF_LINT (= 0); if (end_in_extra_buffer) end_idx = end - extra_buf; size_t len = strlen (end); if (INT_ADD_OVERFLOW (len, n)) { __set_errno (ENOMEM); return NULL; } while (bufs->extra.length <= len + n) { if (!scratch_buffer_grow_preserve (&bufs->extra)) return NULL; extra_buf = bufs->extra.data; } if (end_in_extra_buffer) end = extra_buf + end_idx; /* Careful here, end may be a pointer into extra_buf... */ memmove (&extra_buf[n], end, len + 1); name = end = memcpy (extra_buf, buf, n); end_in_extra_buffer = true; if (IS_ABSOLUTE_FILE_NAME (buf)) { idx_t pfxlen = FILE_SYSTEM_PREFIX_LEN (buf); dest = __mempcpy (rname, buf, pfxlen); *dest++ = '/'; /* It's an absolute symlink */ if (DOUBLE_SLASH_IS_DISTINCT_ROOT) { if (ISSLASH (buf[1]) && !ISSLASH (buf[2]) && !pfxlen) *dest++ = '/'; *dest = '\0'; } /* Install the new prefix to be in effect hereafter. */ prefix_len = pfxlen; } else { /* Back up to previous component, ignore if at root already: */ if (dest > rname + prefix_len + 1) for (--dest; dest > rname && !ISSLASH (dest[-1]); --dest) continue; if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rname + 1 && ISSLASH (*dest) && !ISSLASH (dest[1]) && !prefix_len) dest++; } } else if (! (suffix_requires_dir_check (end) ? dir_check (rname, dest) : errno == EINVAL)) goto error; } } if (dest > rname + prefix_len + 1 && ISSLASH (dest[-1])) --dest; if (DOUBLE_SLASH_IS_DISTINCT_ROOT && dest == rname + 1 && !prefix_len && ISSLASH (*dest) && !ISSLASH (dest[1])) dest++; failed = false; error: *dest++ = '\0'; if (resolved != NULL) { /* Copy the full result on success or partial result if failure was due to the path not existing or not being accessible. */ if ((!failed || errno == ENOENT || errno == EACCES) && dest - rname <= get_path_max ()) { strcpy (resolved, rname); if (failed) return NULL; else return resolved; } if (!failed) __set_errno (ENAMETOOLONG); return NULL; } else { if (failed) return NULL; else return __strdup (bufs->rname.data); } } /* Return the canonical absolute name of file NAME. A canonical name does not contain any ".", ".." components nor any repeated file name separators ('/') or symlinks. All file name components must exist. If RESOLVED is null, the result is malloc'd; otherwise, if the canonical name is PATH_MAX chars or more, returns null with 'errno' set to ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars, returns the name in RESOLVED. If the name cannot be resolved and RESOLVED is non-NULL, it contains the name of the first component that cannot be resolved. If the name can be resolved, RESOLVED holds the same value as the value returned. */ char * __realpath (const char *name, char *resolved) { struct realpath_bufs bufs; scratch_buffer_init (&bufs.rname); scratch_buffer_init (&bufs.extra); scratch_buffer_init (&bufs.link); char *result = realpath_stk (name, resolved, &bufs); scratch_buffer_free (&bufs.link); scratch_buffer_free (&bufs.extra); scratch_buffer_free (&bufs.rname); return result; } libc_hidden_def (__realpath) versioned_symbol (libc, __realpath, realpath, GLIBC_2_3); #endif /* defined _LIBC || !FUNC_REALPATH_WORKS */ #if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3) char * attribute_compat_text_section __old_realpath (const char *name, char *resolved) { if (resolved == NULL) { __set_errno (EINVAL); return NULL; } return __realpath (name, resolved); } compat_symbol (libc, __old_realpath, realpath, GLIBC_2_0); #endif char * __canonicalize_file_name (const char *name) { return __realpath (name, NULL); } weak_alias (__canonicalize_file_name, canonicalize_file_name) recode-3.7.15/lib/printf-frexp.c0000644000175000017500000001234014371444255012100 /* Split a double into fraction and mantissa, for hexadecimal printf. Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #if ! defined USE_LONG_DOUBLE # include #endif /* Specification. */ #ifdef USE_LONG_DOUBLE # include "printf-frexpl.h" #else # include "printf-frexp.h" #endif #include #include #ifdef USE_LONG_DOUBLE # include "fpucw.h" #endif /* This file assumes FLT_RADIX = 2. If FLT_RADIX is a power of 2 greater than 2, or not even a power of 2, some rounding errors can occur, so that then the returned mantissa is only guaranteed to be <= 2.0, not < 2.0. */ #ifdef USE_LONG_DOUBLE # define FUNC printf_frexpl # define DOUBLE long double # define MIN_EXP LDBL_MIN_EXP # if HAVE_FREXPL_IN_LIBC && HAVE_LDEXPL_IN_LIBC # define USE_FREXP_LDEXP # define FREXP frexpl # define LDEXP ldexpl # endif # define DECL_ROUNDING DECL_LONG_DOUBLE_ROUNDING # define BEGIN_ROUNDING() BEGIN_LONG_DOUBLE_ROUNDING () # define END_ROUNDING() END_LONG_DOUBLE_ROUNDING () # define L_(literal) literal##L #else # define FUNC printf_frexp # define DOUBLE double # define MIN_EXP DBL_MIN_EXP # if HAVE_FREXP_IN_LIBC && HAVE_LDEXP_IN_LIBC # define USE_FREXP_LDEXP # define FREXP frexp # define LDEXP ldexp # endif # define DECL_ROUNDING # define BEGIN_ROUNDING() # define END_ROUNDING() # define L_(literal) literal #endif DOUBLE FUNC (DOUBLE x, int *expptr) { int exponent; DECL_ROUNDING BEGIN_ROUNDING (); #ifdef USE_FREXP_LDEXP /* frexp and ldexp are usually faster than the loop below. */ x = FREXP (x, &exponent); x = x + x; exponent -= 1; if (exponent < MIN_EXP - 1) { x = LDEXP (x, exponent - (MIN_EXP - 1)); exponent = MIN_EXP - 1; } #else { /* Since the exponent is an 'int', it fits in 64 bits. Therefore the loops are executed no more than 64 times. */ DOUBLE pow2[64]; /* pow2[i] = 2^2^i */ DOUBLE powh[64]; /* powh[i] = 2^-2^i */ int i; exponent = 0; if (x >= L_(1.0)) { /* A nonnegative exponent. */ { DOUBLE pow2_i; /* = pow2[i] */ DOUBLE powh_i; /* = powh[i] */ /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i, x * 2^exponent = argument, x >= 1.0. */ for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5); ; i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i) { if (x >= pow2_i) { exponent += (1 << i); x *= powh_i; } else break; pow2[i] = pow2_i; powh[i] = powh_i; } } /* Here 1.0 <= x < 2^2^i. */ } else { /* A negative exponent. */ { DOUBLE pow2_i; /* = pow2[i] */ DOUBLE powh_i; /* = powh[i] */ /* Invariants: pow2_i = 2^2^i, powh_i = 2^-2^i, x * 2^exponent = argument, x < 1.0, exponent >= MIN_EXP - 1. */ for (i = 0, pow2_i = L_(2.0), powh_i = L_(0.5); ; i++, pow2_i = pow2_i * pow2_i, powh_i = powh_i * powh_i) { if (exponent - (1 << i) < MIN_EXP - 1) break; exponent -= (1 << i); x *= pow2_i; if (x >= L_(1.0)) break; pow2[i] = pow2_i; powh[i] = powh_i; } } /* Here either x < 1.0 and exponent - 2^i < MIN_EXP - 1 <= exponent, or 1.0 <= x < 2^2^i and exponent >= MIN_EXP - 1. */ if (x < L_(1.0)) /* Invariants: x * 2^exponent = argument, x < 1.0 and exponent - 2^i < MIN_EXP - 1 <= exponent. */ while (i > 0) { i--; if (exponent - (1 << i) >= MIN_EXP - 1) { exponent -= (1 << i); x *= pow2[i]; if (x >= L_(1.0)) break; } } /* Here either x < 1.0 and exponent = MIN_EXP - 1, or 1.0 <= x < 2^2^i and exponent >= MIN_EXP - 1. */ } /* Invariants: x * 2^exponent = argument, and either x < 1.0 and exponent = MIN_EXP - 1, or 1.0 <= x < 2^2^i and exponent >= MIN_EXP - 1. */ while (i > 0) { i--; if (x >= pow2[i]) { exponent += (1 << i); x *= powh[i]; } } /* Here either x < 1.0 and exponent = MIN_EXP - 1, or 1.0 <= x < 2.0 and exponent >= MIN_EXP - 1. */ } #endif END_ROUNDING (); *expptr = exponent; return x; } recode-3.7.15/lib/mbrtowc.c0000644000175000017500000000714714371444255011142 /* Convert multibyte character to wide character. Copyright (C) 1999-2002, 2005-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2008. This file 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. This file 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 . */ #include /* Specification. */ #include #if GNULIB_defined_mbstate_t /* Implement mbrtowc() on top of mbtowc() for the non-UTF-8 locales and directly for the UTF-8 locales. */ # include # include # include # if defined _WIN32 && !defined __CYGWIN__ # define WIN32_LEAN_AND_MEAN /* avoid including junk */ # include # elif HAVE_PTHREAD_API # include # if HAVE_THREADS_H && HAVE_WEAK_SYMBOLS # include # pragma weak thrd_exit # define c11_threads_in_use() (thrd_exit != NULL) # else # define c11_threads_in_use() 0 # endif # elif HAVE_THREADS_H # include # endif # include "attribute.h" # include "lc-charset-dispatch.h" # include "mbtowc-lock.h" static_assert (sizeof (mbstate_t) >= 4); static char internal_state[4]; size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps) { # define FITS_IN_CHAR_TYPE(wc) ((wc) <= WCHAR_MAX) # include "mbrtowc-impl.h" } #else /* Override the system's mbrtowc() function. */ # if MBRTOWC_IN_C_LOCALE_MAYBE_EILSEQ # include "hard-locale.h" # include # endif # undef mbrtowc size_t rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps) { size_t ret; wchar_t wc; # if MBRTOWC_NULL_ARG2_BUG || MBRTOWC_RETVAL_BUG || MBRTOWC_EMPTY_INPUT_BUG if (s == NULL) { pwc = NULL; s = ""; n = 1; } # endif # if MBRTOWC_EMPTY_INPUT_BUG if (n == 0) return (size_t) -2; # endif if (! pwc) pwc = &wc; # if MBRTOWC_RETVAL_BUG { static mbstate_t internal_state; /* Override mbrtowc's internal state. We cannot call mbsinit() on the hidden internal state, but we can call it on our variable. */ if (ps == NULL) ps = &internal_state; if (!mbsinit (ps)) { /* Parse the rest of the multibyte character byte for byte. */ size_t count = 0; for (; n > 0; s++, n--) { ret = mbrtowc (&wc, s, 1, ps); if (ret == (size_t)(-1)) return (size_t)(-1); count++; if (ret != (size_t)(-2)) { /* The multibyte character has been completed. */ *pwc = wc; return (wc == 0 ? 0 : count); } } return (size_t)(-2); } } # endif # if MBRTOWC_STORES_INCOMPLETE_BUG ret = mbrtowc (&wc, s, n, ps); if (ret < (size_t) -2 && pwc != NULL) *pwc = wc; # else ret = mbrtowc (pwc, s, n, ps); # endif # if MBRTOWC_NUL_RETVAL_BUG if (ret < (size_t) -2 && !*pwc) return 0; # endif # if MBRTOWC_IN_C_LOCALE_MAYBE_EILSEQ if ((size_t) -2 <= ret && n != 0 && ! hard_locale (LC_CTYPE)) { unsigned char uc = *s; *pwc = uc; return 1; } # endif return ret; } #endif recode-3.7.15/lib/cloexec.h0000644000175000017500000000272714371444255011113 /* cloexec.c - set or clear the close-on-exec descriptor flag Copyright (C) 2004, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Set the 'FD_CLOEXEC' flag of DESC if VALUE is true, or clear the flag if VALUE is false. Return 0 on success, or -1 on error with 'errno' set. Note that on MingW, this function does NOT protect DESC from being inherited into spawned children. Instead, either use dup_cloexec followed by closing the original DESC, or use interfaces such as open or pipe2 that accept flags like O_CLOEXEC to create DESC non-inheritable in the first place. */ int set_cloexec_flag (int desc, bool value); /* Duplicates a file handle FD, while marking the copy to be closed prior to exec or spawn. Returns -1 and sets errno if FD could not be duplicated. */ int dup_cloexec (int fd); recode-3.7.15/lib/error.in.h0000644000175000017500000000770014371444255011223 /* Declarations for error-reporting functions. Copyright (C) 1995-1997, 2003, 2006, 2008-2023 Free Software Foundation, Inc. This file is part of the GNU C Library. This file 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. This file 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 . */ #ifndef _ERROR_H #define _ERROR_H 1 /* Get _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, _GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM. */ #include /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ #if GNULIB_VFPRINTF_POSIX # define _GL_ATTRIBUTE_SPEC_PRINTF_ERROR _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD #else # define _GL_ATTRIBUTE_SPEC_PRINTF_ERROR _GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM #endif #ifdef __cplusplus extern "C" { #endif /* Print a message with 'fprintf (stderr, FORMAT, ...)'; if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM). If STATUS is nonzero, terminate the program with 'exit (STATUS)'. */ #if @REPLACE_ERROR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef error # define error rpl_error # endif _GL_FUNCDECL_RPL (error, void, (int __status, int __errnum, const char *__format, ...) _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 3, 4))); _GL_CXXALIAS_RPL (error, void, (int __status, int __errnum, const char *__format, ...)); #else # if ! @HAVE_ERROR@ _GL_FUNCDECL_SYS (error, void, (int __status, int __errnum, const char *__format, ...) _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 3, 4))); # endif _GL_CXXALIAS_SYS (error, void, (int __status, int __errnum, const char *__format, ...)); #endif #if __GLIBC__ >= 2 _GL_CXXALIASWARN (error); #endif /* Likewise. If FILENAME is non-NULL, include FILENAME:LINENO: in the message. */ #if @REPLACE_ERROR_AT_LINE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef error_at_line # define error_at_line rpl_error_at_line # endif _GL_FUNCDECL_RPL (error_at_line, void, (int __status, int __errnum, const char *__filename, unsigned int __lineno, const char *__format, ...) _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 5, 6))); _GL_CXXALIAS_RPL (error_at_line, void, (int __status, int __errnum, const char *__filename, unsigned int __lineno, const char *__format, ...)); #else # if ! @HAVE_ERROR_AT_LINE@ _GL_FUNCDECL_SYS (error_at_line, void, (int __status, int __errnum, const char *__filename, unsigned int __lineno, const char *__format, ...) _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 5, 6))); # endif _GL_CXXALIAS_SYS (error_at_line, void, (int __status, int __errnum, const char *__filename, unsigned int __lineno, const char *__format, ...)); #endif _GL_CXXALIASWARN (error_at_line); /* If NULL, error will flush stdout, then print on stderr the program name, a colon and a space. Otherwise, error will call this function without parameters instead. */ extern void (*error_print_progname) (void); /* This variable is incremented each time 'error' is called. */ extern unsigned int error_message_count; /* Sometimes we want to have at most one error per line. This variable controls whether this mode is selected or not. */ extern int error_one_per_line; #ifdef __cplusplus } #endif #endif /* error.h */ recode-3.7.15/lib/stdckdint.in.h0000644000175000017500000000264114371444255012060 /* stdckdint.h -- checked integer arithmetic Copyright 2022-2023 Free Software Foundation, Inc. This program 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. 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 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 . */ #ifndef _GL_STDCKDINT_H #define _GL_STDCKDINT_H #include "intprops-internal.h" /* Store into *R the low-order bits of A + B, A - B, A * B, respectively. Return 1 if the result overflows, 0 otherwise. A, B, and *R can have any integer type other than char, bool, a bit-precise integer type, or an enumeration type. These are like the standard macros introduced in C23, except that arguments should not have side effects. */ #define ckd_add(r, a, b) ((bool) _GL_INT_ADD_WRAPV (a, b, r)) #define ckd_sub(r, a, b) ((bool) _GL_INT_SUBTRACT_WRAPV (a, b, r)) #define ckd_mul(r, a, b) ((bool) _GL_INT_MULTIPLY_WRAPV (a, b, r)) #endif /* _GL_STDCKDINT_H */ recode-3.7.15/lib/wctype.in.h0000644000175000017500000004327414371444255011413 /* A substitute for ISO C99 , for platforms that lack it. Copyright (C) 2006-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible and Paul Eggert. */ /* * ISO C 99 for platforms that lack it. * * * iswctype, towctrans, towlower, towupper, wctrans, wctype, * wctrans_t, and wctype_t are not yet implemented. */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if (defined __MINGW32__ && defined __CTYPE_H_SOURCED__) /* Special invocation convention: - With MinGW 3.22, when includes , only some part of is being processed, which doesn't include the idempotency guard. */ #@INCLUDE_NEXT@ @NEXT_WCTYPE_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_WCTYPE_H #if @HAVE_WINT_T@ /* Solaris 2.5 has a bug: must be included before . */ # include #endif /* Native Windows (mingw, MSVC) have declarations of towupper, towlower, and isw* functions in , as well as in . Include , in advance to avoid rpl_ prefix being added to the declarations. */ #if defined _WIN32 && ! defined __CYGWIN__ # include # include #endif /* Include the original if it exists. BeOS 5 has the functions but no . */ /* The include_next requires a split double-inclusion guard. */ #if @HAVE_WCTYPE_H@ # @INCLUDE_NEXT@ @NEXT_WCTYPE_H@ #endif #ifndef _@GUARD_PREFIX@_WCTYPE_H #define _@GUARD_PREFIX@_WCTYPE_H #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_WCTYPE_INLINE # define _GL_WCTYPE_INLINE _GL_INLINE #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Solaris 2.6 includes which includes which #defines a number of identifiers in the application namespace. Revert these #defines. */ #ifdef __sun # undef multibyte # undef eucw1 # undef eucw2 # undef eucw3 # undef scrw1 # undef scrw2 # undef scrw3 #endif /* Define wint_t and WEOF. (Also done in wchar.in.h.) */ #if !@HAVE_WINT_T@ && !defined wint_t # define wint_t int # ifndef WEOF # define WEOF -1 # endif #else /* mingw and MSVC define wint_t as 'unsigned short' in or . This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be "unchanged by default argument promotions". Override it. */ # if @GNULIBHEADERS_OVERRIDE_WINT_T@ # if !GNULIB_defined_wint_t # if @HAVE_CRTDEFS_H@ # include # else # include # endif typedef unsigned int rpl_wint_t; # undef wint_t # define wint_t rpl_wint_t # define GNULIB_defined_wint_t 1 # endif # endif # ifndef WEOF # define WEOF ((wint_t) -1) # endif #endif #if !GNULIB_defined_wctype_functions /* FreeBSD 4.4 to 4.11 has but lacks the functions. Linux libc5 has and the functions but they are broken. mingw and MSVC have and the functions but they take a wchar_t as argument, not an rpl_wint_t. Assume all 11 functions (all isw* except iswblank) are implemented the same way, or not at all. */ # if ! @HAVE_ISWCNTRL@ || @REPLACE_ISWCNTRL@ # if @GNULIBHEADERS_OVERRIDE_WINT_T@ /* implies @REPLACE_ISWCNTRL@ */ _GL_WCTYPE_INLINE int rpl_iswalnum (wint_t wc) { return ((wchar_t) wc == wc ? iswalnum ((wchar_t) wc) : 0); } _GL_WCTYPE_INLINE int rpl_iswalpha (wint_t wc) { return ((wchar_t) wc == wc ? iswalpha ((wchar_t) wc) : 0); } _GL_WCTYPE_INLINE int rpl_iswblank (wint_t wc) { return ((wchar_t) wc == wc ? iswblank ((wchar_t) wc) : 0); } _GL_WCTYPE_INLINE int rpl_iswcntrl (wint_t wc) { return ((wchar_t) wc == wc ? iswcntrl ((wchar_t) wc) : 0); } _GL_WCTYPE_INLINE int rpl_iswdigit (wint_t wc) { return ((wchar_t) wc == wc ? wc >= '0' && wc <= '9' : 0); } _GL_WCTYPE_INLINE int rpl_iswgraph (wint_t wc) { return ((wchar_t) wc == wc ? iswgraph ((wchar_t) wc) : 0); } _GL_WCTYPE_INLINE int rpl_iswlower (wint_t wc) { return ((wchar_t) wc == wc ? iswlower ((wchar_t) wc) : 0); } _GL_WCTYPE_INLINE int rpl_iswprint (wint_t wc) { return ((wchar_t) wc == wc ? iswprint ((wchar_t) wc) : 0); } _GL_WCTYPE_INLINE int rpl_iswpunct (wint_t wc) { return ((wchar_t) wc == wc ? iswpunct ((wchar_t) wc) : 0); } _GL_WCTYPE_INLINE int rpl_iswspace (wint_t wc) { return ((wchar_t) wc == wc ? iswspace ((wchar_t) wc) : 0); } _GL_WCTYPE_INLINE int rpl_iswupper (wint_t wc) { return ((wchar_t) wc == wc ? iswupper ((wchar_t) wc) : 0); } _GL_WCTYPE_INLINE int rpl_iswxdigit (wint_t wc) { return ((wchar_t) wc == wc ? (wc >= '0' && wc <= '9') || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F') : 0); } _GL_WCTYPE_INLINE wint_t rpl_towlower (wint_t wc) { return ((wchar_t) wc == wc ? (wchar_t) towlower ((wchar_t) wc) : wc); } _GL_WCTYPE_INLINE wint_t rpl_towupper (wint_t wc) { return ((wchar_t) wc == wc ? (wchar_t) towupper ((wchar_t) wc) : wc); } # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef iswalnum # undef iswalpha # undef iswblank # undef iswcntrl # undef iswdigit # undef iswgraph # undef iswlower # undef iswprint # undef iswpunct # undef iswspace # undef iswupper # undef iswxdigit # undef towlower # undef towupper # define iswalnum rpl_iswalnum # define iswalpha rpl_iswalpha # define iswblank rpl_iswblank # define iswcntrl rpl_iswcntrl # define iswdigit rpl_iswdigit # define iswgraph rpl_iswgraph # define iswlower rpl_iswlower # define iswprint rpl_iswprint # define iswpunct rpl_iswpunct # define iswspace rpl_iswspace # define iswupper rpl_iswupper # define iswxdigit rpl_iswxdigit # define towlower rpl_towlower # define towupper rpl_towupper # endif # else /* IRIX 5.3 has macros but no functions, its isw* macros refer to an undefined variable _ctmp_ and to macros like _P, and they refer to system functions like _iswctype that are not in the standard C library. Rather than try to get ancient buggy implementations like this to work, just disable them. */ # undef iswalnum # undef iswalpha # undef iswblank # undef iswcntrl # undef iswdigit # undef iswgraph # undef iswlower # undef iswprint # undef iswpunct # undef iswspace # undef iswupper # undef iswxdigit # undef towlower # undef towupper /* Linux libc5 has and the functions but they are broken. */ # if @REPLACE_ISWCNTRL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define iswalnum rpl_iswalnum # define iswalpha rpl_iswalpha # define iswblank rpl_iswblank # define iswcntrl rpl_iswcntrl # define iswdigit rpl_iswdigit # define iswgraph rpl_iswgraph # define iswlower rpl_iswlower # define iswprint rpl_iswprint # define iswpunct rpl_iswpunct # define iswspace rpl_iswspace # define iswupper rpl_iswupper # define iswxdigit rpl_iswxdigit # endif # endif # if @REPLACE_TOWLOWER@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define towlower rpl_towlower # define towupper rpl_towupper # endif # endif _GL_WCTYPE_INLINE int # if @REPLACE_ISWCNTRL@ rpl_iswalnum # else iswalnum # endif (wint_t wc) { return ((wc >= '0' && wc <= '9') || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')); } _GL_WCTYPE_INLINE int # if @REPLACE_ISWCNTRL@ rpl_iswalpha # else iswalpha # endif (wint_t wc) { return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'; } _GL_WCTYPE_INLINE int # if @REPLACE_ISWCNTRL@ rpl_iswblank # else iswblank # endif (wint_t wc) { return wc == ' ' || wc == '\t'; } _GL_WCTYPE_INLINE int # if @REPLACE_ISWCNTRL@ rpl_iswcntrl # else iswcntrl # endif (wint_t wc) { return (wc & ~0x1f) == 0 || wc == 0x7f; } _GL_WCTYPE_INLINE int # if @REPLACE_ISWDIGIT@ rpl_iswdigit # else iswdigit # endif (wint_t wc) { return wc >= '0' && wc <= '9'; } _GL_WCTYPE_INLINE int # if @REPLACE_ISWCNTRL@ rpl_iswgraph # else iswgraph # endif (wint_t wc) { return wc >= '!' && wc <= '~'; } _GL_WCTYPE_INLINE int # if @REPLACE_ISWCNTRL@ rpl_iswlower # else iswlower # endif (wint_t wc) { return wc >= 'a' && wc <= 'z'; } _GL_WCTYPE_INLINE int # if @REPLACE_ISWCNTRL@ rpl_iswprint # else iswprint # endif (wint_t wc) { return wc >= ' ' && wc <= '~'; } _GL_WCTYPE_INLINE int # if @REPLACE_ISWCNTRL@ rpl_iswpunct # else iswpunct # endif (wint_t wc) { return (wc >= '!' && wc <= '~' && !((wc >= '0' && wc <= '9') || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'))); } _GL_WCTYPE_INLINE int # if @REPLACE_ISWCNTRL@ rpl_iswspace # else iswspace # endif (wint_t wc) { return (wc == ' ' || wc == '\t' || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r'); } _GL_WCTYPE_INLINE int # if @REPLACE_ISWCNTRL@ rpl_iswupper # else iswupper # endif (wint_t wc) { return wc >= 'A' && wc <= 'Z'; } _GL_WCTYPE_INLINE int # if @REPLACE_ISWXDIGIT@ rpl_iswxdigit # else iswxdigit # endif (wint_t wc) { return ((wc >= '0' && wc <= '9') || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F')); } _GL_WCTYPE_INLINE wint_t # if @REPLACE_TOWLOWER@ rpl_towlower # else towlower # endif (wint_t wc) { return (wc >= 'A' && wc <= 'Z' ? wc - 'A' + 'a' : wc); } _GL_WCTYPE_INLINE wint_t # if @REPLACE_TOWLOWER@ rpl_towupper # else towupper # endif (wint_t wc) { return (wc >= 'a' && wc <= 'z' ? wc - 'a' + 'A' : wc); } # endif # else /* Only some of the functions are missing or broken. */ # if @GNULIB_ISWBLANK@ && (! @HAVE_ISWBLANK@ || @REPLACE_ISWBLANK@) /* Only the iswblank function is missing. */ # if @REPLACE_ISWBLANK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define iswblank rpl_iswblank # endif _GL_FUNCDECL_RPL (iswblank, int, (wint_t wc)); # else _GL_FUNCDECL_SYS (iswblank, int, (wint_t wc)); # endif # endif # if @GNULIB_ISWDIGIT@ # if @REPLACE_ISWDIGIT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef iswdigit # define iswdigit rpl_iswdigit # endif _GL_FUNCDECL_RPL (iswdigit, int, (wint_t wc)); # endif # endif # if @GNULIB_ISWXDIGIT@ # if @REPLACE_ISWXDIGIT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef iswxdigit # define iswxdigit rpl_iswxdigit # endif _GL_FUNCDECL_RPL (iswxdigit, int, (wint_t wc)); # endif # endif # endif # if defined __MINGW32__ && !@GNULIBHEADERS_OVERRIDE_WINT_T@ /* On native Windows, wchar_t is uint16_t, and wint_t is uint32_t. The functions towlower and towupper are implemented in the MSVCRT library to take a wchar_t argument and return a wchar_t result. mingw declares these functions to take a wint_t argument and return a wint_t result. This means that: 1. When the user passes an argument outside the range 0x0000..0xFFFF, the function will look only at the lower 16 bits. This is allowed according to POSIX. 2. The return value is returned in the lower 16 bits of the result register. The upper 16 bits are random: whatever happened to be in that part of the result register. We need to fix this by adding a zero-extend from wchar_t to wint_t after the call. */ _GL_WCTYPE_INLINE wint_t rpl_towlower (wint_t wc) { return (wint_t) (wchar_t) towlower (wc); } # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define towlower rpl_towlower # endif _GL_WCTYPE_INLINE wint_t rpl_towupper (wint_t wc) { return (wint_t) (wchar_t) towupper (wc); } # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define towupper rpl_towupper # endif # endif /* __MINGW32__ && !@GNULIBHEADERS_OVERRIDE_WINT_T@ */ # define GNULIB_defined_wctype_functions 1 #endif #if @REPLACE_ISWCNTRL@ _GL_CXXALIAS_RPL (iswalnum, int, (wint_t wc)); #else _GL_CXXALIAS_SYS (iswalnum, int, (wint_t wc)); #endif #if @REPLACE_ISWCNTRL@ _GL_CXXALIAS_RPL (iswalpha, int, (wint_t wc)); #else _GL_CXXALIAS_SYS (iswalpha, int, (wint_t wc)); #endif #if @REPLACE_ISWCNTRL@ _GL_CXXALIAS_RPL (iswcntrl, int, (wint_t wc)); #else _GL_CXXALIAS_SYS (iswcntrl, int, (wint_t wc)); #endif #if @GNULIB_ISWDIGIT@ # if @REPLACE_ISWDIGIT@ _GL_CXXALIAS_RPL (iswdigit, int, (wint_t wc)); # else _GL_CXXALIAS_SYS (iswdigit, int, (wint_t wc)); # endif #endif #if @REPLACE_ISWCNTRL@ _GL_CXXALIAS_RPL (iswgraph, int, (wint_t wc)); #else _GL_CXXALIAS_SYS (iswgraph, int, (wint_t wc)); #endif #if @REPLACE_ISWCNTRL@ _GL_CXXALIAS_RPL (iswlower, int, (wint_t wc)); #else _GL_CXXALIAS_SYS (iswlower, int, (wint_t wc)); #endif #if @REPLACE_ISWCNTRL@ _GL_CXXALIAS_RPL (iswprint, int, (wint_t wc)); #else _GL_CXXALIAS_SYS (iswprint, int, (wint_t wc)); #endif #if @REPLACE_ISWCNTRL@ _GL_CXXALIAS_RPL (iswpunct, int, (wint_t wc)); #else _GL_CXXALIAS_SYS (iswpunct, int, (wint_t wc)); #endif #if @REPLACE_ISWCNTRL@ _GL_CXXALIAS_RPL (iswspace, int, (wint_t wc)); #else _GL_CXXALIAS_SYS (iswspace, int, (wint_t wc)); #endif #if @REPLACE_ISWCNTRL@ _GL_CXXALIAS_RPL (iswupper, int, (wint_t wc)); #else _GL_CXXALIAS_SYS (iswupper, int, (wint_t wc)); #endif #if @GNULIB_ISWXDIGIT@ # if @REPLACE_ISWXDIGIT@ _GL_CXXALIAS_RPL (iswxdigit, int, (wint_t wc)); # else _GL_CXXALIAS_SYS (iswxdigit, int, (wint_t wc)); # endif #endif #if __GLIBC__ >= 2 _GL_CXXALIASWARN (iswalnum); _GL_CXXALIASWARN (iswalpha); _GL_CXXALIASWARN (iswcntrl); _GL_CXXALIASWARN (iswdigit); _GL_CXXALIASWARN (iswgraph); _GL_CXXALIASWARN (iswlower); _GL_CXXALIASWARN (iswprint); _GL_CXXALIASWARN (iswpunct); _GL_CXXALIASWARN (iswspace); _GL_CXXALIASWARN (iswupper); _GL_CXXALIASWARN (iswxdigit); #endif #if @GNULIB_ISWBLANK@ # if @REPLACE_ISWCNTRL@ || @REPLACE_ISWBLANK@ _GL_CXXALIAS_RPL (iswblank, int, (wint_t wc)); # else _GL_CXXALIAS_SYS (iswblank, int, (wint_t wc)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (iswblank); # endif #endif #if !@HAVE_WCTYPE_T@ # if !GNULIB_defined_wctype_t typedef void * wctype_t; # define GNULIB_defined_wctype_t 1 # endif #endif /* Get a descriptor for a wide character property. */ #if @GNULIB_WCTYPE@ # if !@HAVE_WCTYPE_T@ _GL_FUNCDECL_SYS (wctype, wctype_t, (const char *name)); # endif _GL_CXXALIAS_SYS (wctype, wctype_t, (const char *name)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wctype); # endif #elif defined GNULIB_POSIXCHECK # undef wctype # if HAVE_RAW_DECL_WCTYPE _GL_WARN_ON_USE (wctype, "wctype is unportable - " "use gnulib module wctype for portability"); # endif #endif /* Test whether a wide character has a given property. The argument WC must be either a wchar_t value or WEOF. The argument DESC must have been returned by the wctype() function. */ #if @GNULIB_ISWCTYPE@ # if @GNULIBHEADERS_OVERRIDE_WINT_T@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef iswctype # define iswctype rpl_iswctype # endif _GL_FUNCDECL_RPL (iswctype, int, (wint_t wc, wctype_t desc)); _GL_CXXALIAS_RPL (iswctype, int, (wint_t wc, wctype_t desc)); # else # if !@HAVE_WCTYPE_T@ _GL_FUNCDECL_SYS (iswctype, int, (wint_t wc, wctype_t desc)); # endif _GL_CXXALIAS_SYS (iswctype, int, (wint_t wc, wctype_t desc)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (iswctype); # endif #elif defined GNULIB_POSIXCHECK # undef iswctype # if HAVE_RAW_DECL_ISWCTYPE _GL_WARN_ON_USE (iswctype, "iswctype is unportable - " "use gnulib module iswctype for portability"); # endif #endif #if @REPLACE_TOWLOWER@ || defined __MINGW32__ _GL_CXXALIAS_RPL (towlower, wint_t, (wint_t wc)); _GL_CXXALIAS_RPL (towupper, wint_t, (wint_t wc)); #else _GL_CXXALIAS_SYS (towlower, wint_t, (wint_t wc)); _GL_CXXALIAS_SYS (towupper, wint_t, (wint_t wc)); #endif #if __GLIBC__ >= 2 _GL_CXXALIASWARN (towlower); _GL_CXXALIASWARN (towupper); #endif #if !@HAVE_WCTRANS_T@ # if !GNULIB_defined_wctrans_t typedef void * wctrans_t; # define GNULIB_defined_wctrans_t 1 # endif #endif /* Get a descriptor for a wide character case conversion. */ #if @GNULIB_WCTRANS@ # if !@HAVE_WCTRANS_T@ _GL_FUNCDECL_SYS (wctrans, wctrans_t, (const char *name)); # endif _GL_CXXALIAS_SYS (wctrans, wctrans_t, (const char *name)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wctrans); # endif #elif defined GNULIB_POSIXCHECK # undef wctrans # if HAVE_RAW_DECL_WCTRANS _GL_WARN_ON_USE (wctrans, "wctrans is unportable - " "use gnulib module wctrans for portability"); # endif #endif /* Perform a given case conversion on a wide character. The argument WC must be either a wchar_t value or WEOF. The argument DESC must have been returned by the wctrans() function. */ #if @GNULIB_TOWCTRANS@ # if !@HAVE_WCTRANS_T@ _GL_FUNCDECL_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc)); # endif _GL_CXXALIAS_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (towctrans); # endif #elif defined GNULIB_POSIXCHECK # undef towctrans # if HAVE_RAW_DECL_TOWCTRANS _GL_WARN_ON_USE (towctrans, "towctrans is unportable - " "use gnulib module towctrans for portability"); # endif #endif _GL_INLINE_HEADER_END #endif /* _@GUARD_PREFIX@_WCTYPE_H */ #endif /* _@GUARD_PREFIX@_WCTYPE_H */ #endif recode-3.7.15/lib/printf-frexpl.c0000644000175000017500000000212214371444255012251 /* Split a 'long double' into fraction and mantissa, for hexadecimal printf. Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE /* Specification. */ # include "printf-frexpl.h" # include "printf-frexp.h" long double printf_frexpl (long double x, int *expptr) { return printf_frexp (x, expptr); } #else # define USE_LONG_DOUBLE # include "printf-frexp.c" #endif recode-3.7.15/lib/realloc.c0000644000175000017500000000313114371444255011073 /* realloc() function that is glibc compatible. Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* written by Jim Meyering and Bruno Haible */ #include #include #include #include "xalloc-oversized.h" /* Call the system's realloc below. This file does not define _GL_USE_STDLIB_ALLOC because it needs Gnulib's malloc if present. */ #undef realloc /* Change the size of an allocated block of memory P to N bytes, with error checking. If P is NULL, use malloc. Otherwise if N is zero, free P and return NULL. */ void * rpl_realloc (void *p, size_t n) { if (p == NULL) return malloc (n); if (n == 0) { free (p); return NULL; } if (xalloc_oversized (n, 1)) { errno = ENOMEM; return NULL; } void *result = realloc (p, n); #if !HAVE_MALLOC_POSIX if (result == NULL) errno = ENOMEM; #endif return result; } recode-3.7.15/lib/printf-args.c0000644000175000017500000001460014371444255011711 /* Decomposed printf argument list. Copyright (C) 1999, 2002-2003, 2005-2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* This file can be parametrized with the following macros: ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. PRINTF_FETCHARGS Name of the function to be defined. STATIC Set to 'static' to declare the function static. */ #ifndef PRINTF_FETCHARGS # include #endif /* Specification. */ #ifndef PRINTF_FETCHARGS # include "printf-args.h" #endif #ifdef STATIC STATIC #endif int PRINTF_FETCHARGS (va_list args, arguments *a) { size_t i; argument *ap; for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++) switch (ap->type) { case TYPE_SCHAR: ap->a.a_schar = va_arg (args, /*signed char*/ int); break; case TYPE_UCHAR: ap->a.a_uchar = va_arg (args, /*unsigned char*/ int); break; case TYPE_SHORT: ap->a.a_short = va_arg (args, /*short*/ int); break; case TYPE_USHORT: ap->a.a_ushort = va_arg (args, /*unsigned short*/ int); break; case TYPE_INT: ap->a.a_int = va_arg (args, int); break; case TYPE_UINT: ap->a.a_uint = va_arg (args, unsigned int); break; case TYPE_LONGINT: ap->a.a_longint = va_arg (args, long int); break; case TYPE_ULONGINT: ap->a.a_ulongint = va_arg (args, unsigned long int); break; case TYPE_LONGLONGINT: ap->a.a_longlongint = va_arg (args, long long int); break; case TYPE_ULONGLONGINT: ap->a.a_ulonglongint = va_arg (args, unsigned long long int); break; case TYPE_DOUBLE: ap->a.a_double = va_arg (args, double); break; case TYPE_LONGDOUBLE: ap->a.a_longdouble = va_arg (args, long double); break; case TYPE_CHAR: ap->a.a_char = va_arg (args, int); break; #if HAVE_WINT_T case TYPE_WIDE_CHAR: /* Although ISO C 99 7.24.1.(2) says that wint_t is "unchanged by default argument promotions", this is not the case in mingw32, where wint_t is 'unsigned short'. */ ap->a.a_wide_char = (sizeof (wint_t) < sizeof (int) ? (wint_t) va_arg (args, int) : va_arg (args, wint_t)); break; #endif case TYPE_STRING: ap->a.a_string = va_arg (args, const char *); /* A null pointer is an invalid argument for "%s", but in practice it occurs quite frequently in printf statements that produce debug output. Use a fallback in this case. */ if (ap->a.a_string == NULL) ap->a.a_string = "(NULL)"; break; #if HAVE_WCHAR_T case TYPE_WIDE_STRING: ap->a.a_wide_string = va_arg (args, const wchar_t *); /* A null pointer is an invalid argument for "%ls", but in practice it occurs quite frequently in printf statements that produce debug output. Use a fallback in this case. */ if (ap->a.a_wide_string == NULL) { static const wchar_t wide_null_string[] = { (wchar_t)'(', (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L', (wchar_t)')', (wchar_t)0 }; ap->a.a_wide_string = wide_null_string; } break; #endif case TYPE_POINTER: ap->a.a_pointer = va_arg (args, void *); break; case TYPE_COUNT_SCHAR_POINTER: ap->a.a_count_schar_pointer = va_arg (args, signed char *); break; case TYPE_COUNT_SHORT_POINTER: ap->a.a_count_short_pointer = va_arg (args, short *); break; case TYPE_COUNT_INT_POINTER: ap->a.a_count_int_pointer = va_arg (args, int *); break; case TYPE_COUNT_LONGINT_POINTER: ap->a.a_count_longint_pointer = va_arg (args, long int *); break; case TYPE_COUNT_LONGLONGINT_POINTER: ap->a.a_count_longlongint_pointer = va_arg (args, long long int *); break; #if ENABLE_UNISTDIO /* The unistdio extensions. */ case TYPE_U8_STRING: ap->a.a_u8_string = va_arg (args, const uint8_t *); /* A null pointer is an invalid argument for "%U", but in practice it occurs quite frequently in printf statements that produce debug output. Use a fallback in this case. */ if (ap->a.a_u8_string == NULL) { static const uint8_t u8_null_string[] = { '(', 'N', 'U', 'L', 'L', ')', 0 }; ap->a.a_u8_string = u8_null_string; } break; case TYPE_U16_STRING: ap->a.a_u16_string = va_arg (args, const uint16_t *); /* A null pointer is an invalid argument for "%lU", but in practice it occurs quite frequently in printf statements that produce debug output. Use a fallback in this case. */ if (ap->a.a_u16_string == NULL) { static const uint16_t u16_null_string[] = { '(', 'N', 'U', 'L', 'L', ')', 0 }; ap->a.a_u16_string = u16_null_string; } break; case TYPE_U32_STRING: ap->a.a_u32_string = va_arg (args, const uint32_t *); /* A null pointer is an invalid argument for "%llU", but in practice it occurs quite frequently in printf statements that produce debug output. Use a fallback in this case. */ if (ap->a.a_u32_string == NULL) { static const uint32_t u32_null_string[] = { '(', 'N', 'U', 'L', 'L', ')', 0 }; ap->a.a_u32_string = u32_null_string; } break; #endif default: /* Unknown type. */ return -1; } return 0; } recode-3.7.15/lib/stat-w32.c0000644000175000017500000004420714371444255011047 /* Core of implementation of fstat and stat for native Windows. Copyright (C) 2017-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible. */ #include #if defined _WIN32 && ! defined __CYGWIN__ /* Attempt to make define FILE_ID_INFO. But ensure that the redefinition of _WIN32_WINNT does not make us assume Windows Vista or newer when building for an older version of Windows. */ #if HAVE_SDKDDKVER_H # include # if _WIN32_WINNT >= _WIN32_WINNT_VISTA # define WIN32_ASSUME_VISTA 1 # else # define WIN32_ASSUME_VISTA 0 # endif # if !defined _WIN32_WINNT || (_WIN32_WINNT < _WIN32_WINNT_WIN8) # undef _WIN32_WINNT # define _WIN32_WINNT _WIN32_WINNT_WIN8 # endif #else # define WIN32_ASSUME_VISTA (_WIN32_WINNT >= _WIN32_WINNT_VISTA) #endif #include #include #include #include #include #include #include /* Specification. */ #include "stat-w32.h" #include "pathmax.h" /* Don't assume that UNICODE is not defined. */ #undef LoadLibrary #define LoadLibrary LoadLibraryA #undef GetFinalPathNameByHandle #define GetFinalPathNameByHandle GetFinalPathNameByHandleA /* Older mingw headers do not define VOLUME_NAME_NONE. */ #ifndef VOLUME_NAME_NONE # define VOLUME_NAME_NONE 4 #endif #if !WIN32_ASSUME_VISTA /* Avoid warnings from gcc -Wcast-function-type. */ # define GetProcAddress \ (void *) GetProcAddress # if _GL_WINDOWS_STAT_INODES == 2 /* GetFileInformationByHandleEx was introduced only in Windows Vista. */ typedef DWORD (WINAPI * GetFileInformationByHandleExFuncType) (HANDLE hFile, FILE_INFO_BY_HANDLE_CLASS fiClass, LPVOID lpBuffer, DWORD dwBufferSize); static GetFileInformationByHandleExFuncType GetFileInformationByHandleExFunc = NULL; # endif /* GetFinalPathNameByHandle was introduced only in Windows Vista. */ typedef DWORD (WINAPI * GetFinalPathNameByHandleFuncType) (HANDLE hFile, LPSTR lpFilePath, DWORD lenFilePath, DWORD dwFlags); static GetFinalPathNameByHandleFuncType GetFinalPathNameByHandleFunc = NULL; static BOOL initialized = FALSE; static void initialize (void) { HMODULE kernel32 = LoadLibrary ("kernel32.dll"); if (kernel32 != NULL) { # if _GL_WINDOWS_STAT_INODES == 2 GetFileInformationByHandleExFunc = (GetFileInformationByHandleExFuncType) GetProcAddress (kernel32, "GetFileInformationByHandleEx"); # endif GetFinalPathNameByHandleFunc = (GetFinalPathNameByHandleFuncType) GetProcAddress (kernel32, "GetFinalPathNameByHandleA"); } initialized = TRUE; } #else # define GetFileInformationByHandleExFunc GetFileInformationByHandleEx # define GetFinalPathNameByHandleFunc GetFinalPathNameByHandle #endif /* Converts a FILETIME to GMT time since 1970-01-01 00:00:00. */ #if _GL_WINDOWS_STAT_TIMESPEC struct timespec _gl_convert_FILETIME_to_timespec (const FILETIME *ft) { struct timespec result; /* FILETIME: */ unsigned long long since_1601 = ((unsigned long long) ft->dwHighDateTime << 32) | (unsigned long long) ft->dwLowDateTime; if (since_1601 == 0) { result.tv_sec = 0; result.tv_nsec = 0; } else { /* Between 1601-01-01 and 1970-01-01 there were 280 normal years and 89 leap years, in total 134774 days. */ unsigned long long since_1970 = since_1601 - (unsigned long long) 134774 * (unsigned long long) 86400 * (unsigned long long) 10000000; result.tv_sec = since_1970 / (unsigned long long) 10000000; result.tv_nsec = (unsigned long) (since_1970 % (unsigned long long) 10000000) * 100; } return result; } #else time_t _gl_convert_FILETIME_to_POSIX (const FILETIME *ft) { /* FILETIME: */ unsigned long long since_1601 = ((unsigned long long) ft->dwHighDateTime << 32) | (unsigned long long) ft->dwLowDateTime; if (since_1601 == 0) return 0; else { /* Between 1601-01-01 and 1970-01-01 there were 280 normal years and 89 leap years, in total 134774 days. */ unsigned long long since_1970 = since_1601 - (unsigned long long) 134774 * (unsigned long long) 86400 * (unsigned long long) 10000000; return since_1970 / (unsigned long long) 10000000; } } #endif /* Fill *BUF with information about the file designated by H. PATH is the file name, if known, otherwise NULL. Return 0 if successful, or -1 with errno set upon failure. */ int _gl_fstat_by_handle (HANDLE h, const char *path, struct stat *buf) { /* GetFileType */ DWORD type = GetFileType (h); if (type == FILE_TYPE_DISK) { #if !WIN32_ASSUME_VISTA if (!initialized) initialize (); #endif /* st_mode can be determined through GetFileAttributesEx or through GetFileInformationByHandle or through GetFileInformationByHandleEx with argument FileBasicInfo The latter requires -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher. */ BY_HANDLE_FILE_INFORMATION info; if (! GetFileInformationByHandle (h, &info)) goto failed; /* Test for error conditions before starting to fill *buf. */ if (sizeof (buf->st_size) <= 4 && info.nFileSizeHigh > 0) { errno = EOVERFLOW; return -1; } #if _GL_WINDOWS_STAT_INODES /* st_ino can be determined through GetFileInformationByHandle as 64 bits, or through GetFileInformationByHandleEx with argument FileIdInfo as 128 bits. The latter requires -D_WIN32_WINNT=_WIN32_WINNT_WIN8 or higher. */ /* Experiments show that GetFileInformationByHandleEx does not provide much more information than GetFileInformationByHandle: * The dwVolumeSerialNumber from GetFileInformationByHandle is equal to the low 32 bits of the 64-bit VolumeSerialNumber from GetFileInformationByHandleEx, and is apparently sufficient for identifying the device. * The nFileIndex from GetFileInformationByHandle is equal to the low 64 bits of the 128-bit FileId from GetFileInformationByHandleEx, and the high 64 bits of this 128-bit FileId are zero. * On a FAT file system, GetFileInformationByHandleEx fails with error ERROR_INVALID_PARAMETER, whereas GetFileInformationByHandle succeeds. * On a CIFS/SMB file system, GetFileInformationByHandleEx fails with error ERROR_INVALID_LEVEL, whereas GetFileInformationByHandle succeeds. */ # if _GL_WINDOWS_STAT_INODES == 2 if (GetFileInformationByHandleExFunc != NULL) { FILE_ID_INFO id; if (GetFileInformationByHandleExFunc (h, FileIdInfo, &id, sizeof (id))) { buf->st_dev = id.VolumeSerialNumber; static_assert (sizeof (ino_t) == sizeof (id.FileId)); memcpy (&buf->st_ino, &id.FileId, sizeof (ino_t)); goto ino_done; } else { switch (GetLastError ()) { case ERROR_INVALID_PARAMETER: /* older Windows version, or FAT */ case ERROR_INVALID_LEVEL: /* CIFS/SMB file system */ goto fallback; default: goto failed; } } } fallback: ; /* Fallback for older Windows versions. */ buf->st_dev = info.dwVolumeSerialNumber; buf->st_ino._gl_ino[0] = ((ULONGLONG) info.nFileIndexHigh << 32) | (ULONGLONG) info.nFileIndexLow; buf->st_ino._gl_ino[1] = 0; ino_done: ; # else /* _GL_WINDOWS_STAT_INODES == 1 */ buf->st_dev = info.dwVolumeSerialNumber; buf->st_ino = ((ULONGLONG) info.nFileIndexHigh << 32) | (ULONGLONG) info.nFileIndexLow; # endif #else /* st_ino is not wide enough for identifying a file on a device. Without st_ino, st_dev is pointless. */ buf->st_dev = 0; buf->st_ino = 0; #endif /* st_mode. */ unsigned int mode = /* XXX How to handle FILE_ATTRIBUTE_REPARSE_POINT ? */ ((info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? _S_IFDIR | S_IEXEC_UGO : _S_IFREG) | S_IREAD_UGO | ((info.dwFileAttributes & FILE_ATTRIBUTE_READONLY) ? 0 : S_IWRITE_UGO); if (!(info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { /* Determine whether the file is executable by looking at the file name suffix. If the file name is already known, use it. Otherwise, for non-empty files, it can be determined through GetFinalPathNameByHandle or through GetFileInformationByHandleEx with argument FileNameInfo Both require -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher. */ if (info.nFileSizeHigh > 0 || info.nFileSizeLow > 0) { char fpath[PATH_MAX]; if (path != NULL || (GetFinalPathNameByHandleFunc != NULL && GetFinalPathNameByHandleFunc (h, fpath, sizeof (fpath), VOLUME_NAME_NONE) < sizeof (fpath) && (path = fpath, 1))) { const char *last_dot = NULL; const char *p; for (p = path; *p != '\0'; p++) if (*p == '.') last_dot = p; if (last_dot != NULL) { const char *suffix = last_dot + 1; if (_stricmp (suffix, "exe") == 0 || _stricmp (suffix, "bat") == 0 || _stricmp (suffix, "cmd") == 0 || _stricmp (suffix, "com") == 0) mode |= S_IEXEC_UGO; } } else /* Cannot determine file name. Pretend that it is executable. */ mode |= S_IEXEC_UGO; } } buf->st_mode = mode; /* st_nlink can be determined through GetFileInformationByHandle or through GetFileInformationByHandleEx with argument FileStandardInfo The latter requires -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher. */ buf->st_nlink = (info.nNumberOfLinks > SHRT_MAX ? SHRT_MAX : info.nNumberOfLinks); /* There's no easy way to map the Windows SID concept to an integer. */ buf->st_uid = 0; buf->st_gid = 0; /* st_rdev is irrelevant for normal files and directories. */ buf->st_rdev = 0; /* st_size can be determined through GetFileSizeEx or through GetFileAttributesEx or through GetFileInformationByHandle or through GetFileInformationByHandleEx with argument FileStandardInfo The latter requires -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher. */ if (sizeof (buf->st_size) <= 4) /* Range check already done above. */ buf->st_size = info.nFileSizeLow; else buf->st_size = ((long long) info.nFileSizeHigh << 32) | (long long) info.nFileSizeLow; /* st_atime, st_mtime, st_ctime can be determined through GetFileTime or through GetFileAttributesEx or through GetFileInformationByHandle or through GetFileInformationByHandleEx with argument FileBasicInfo The latter requires -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher. */ #if _GL_WINDOWS_STAT_TIMESPEC buf->st_atim = _gl_convert_FILETIME_to_timespec (&info.ftLastAccessTime); buf->st_mtim = _gl_convert_FILETIME_to_timespec (&info.ftLastWriteTime); buf->st_ctim = _gl_convert_FILETIME_to_timespec (&info.ftCreationTime); #else buf->st_atime = _gl_convert_FILETIME_to_POSIX (&info.ftLastAccessTime); buf->st_mtime = _gl_convert_FILETIME_to_POSIX (&info.ftLastWriteTime); buf->st_ctime = _gl_convert_FILETIME_to_POSIX (&info.ftCreationTime); #endif return 0; } else if (type == FILE_TYPE_CHAR || type == FILE_TYPE_PIPE) { buf->st_dev = 0; #if _GL_WINDOWS_STAT_INODES == 2 buf->st_ino._gl_ino[0] = buf->st_ino._gl_ino[1] = 0; #else buf->st_ino = 0; #endif buf->st_mode = (type == FILE_TYPE_PIPE ? _S_IFIFO : _S_IFCHR); buf->st_nlink = 1; buf->st_uid = 0; buf->st_gid = 0; buf->st_rdev = 0; if (type == FILE_TYPE_PIPE) { /* PeekNamedPipe */ DWORD bytes_available; if (PeekNamedPipe (h, NULL, 0, NULL, &bytes_available, NULL)) buf->st_size = bytes_available; else buf->st_size = 0; } else buf->st_size = 0; #if _GL_WINDOWS_STAT_TIMESPEC buf->st_atim.tv_sec = 0; buf->st_atim.tv_nsec = 0; buf->st_mtim.tv_sec = 0; buf->st_mtim.tv_nsec = 0; buf->st_ctim.tv_sec = 0; buf->st_ctim.tv_nsec = 0; #else buf->st_atime = 0; buf->st_mtime = 0; buf->st_ctime = 0; #endif return 0; } else { errno = ENOENT; return -1; } failed: { DWORD error = GetLastError (); #if 0 fprintf (stderr, "_gl_fstat_by_handle error 0x%x\n", (unsigned int) error); #endif switch (error) { case ERROR_ACCESS_DENIED: case ERROR_SHARING_VIOLATION: errno = EACCES; break; case ERROR_OUTOFMEMORY: errno = ENOMEM; break; case ERROR_WRITE_FAULT: case ERROR_READ_FAULT: case ERROR_GEN_FAILURE: errno = EIO; break; default: errno = EINVAL; break; } return -1; } } #else /* This declaration is solely to ensure that after preprocessing this file is never empty. */ typedef int dummy; #endif recode-3.7.15/lib/c++defs.h0000644000175000017500000003557714371444255010714 /* C++ compatible function declaration macros. Copyright (C) 2010-2023 Free Software Foundation, Inc. This program 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 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 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 . */ #ifndef _GL_CXXDEFS_H #define _GL_CXXDEFS_H /* Begin/end the GNULIB_NAMESPACE namespace. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE { # define _GL_END_NAMESPACE } #else # define _GL_BEGIN_NAMESPACE # define _GL_END_NAMESPACE #endif /* The three most frequent use cases of these macros are: * For providing a substitute for a function that is missing on some platforms, but is declared and works fine on the platforms on which it exists: #if @GNULIB_FOO@ # if !@HAVE_FOO@ _GL_FUNCDECL_SYS (foo, ...); # endif _GL_CXXALIAS_SYS (foo, ...); _GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif * For providing a replacement for a function that exists on all platforms, but is broken/insufficient and needs to be replaced on some platforms: #if @GNULIB_FOO@ # if @REPLACE_FOO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef foo # define foo rpl_foo # endif _GL_FUNCDECL_RPL (foo, ...); _GL_CXXALIAS_RPL (foo, ...); # else _GL_CXXALIAS_SYS (foo, ...); # endif _GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif * For providing a replacement for a function that exists on some platforms but is broken/insufficient and needs to be replaced on some of them and is additionally either missing or undeclared on some other platforms: #if @GNULIB_FOO@ # if @REPLACE_FOO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef foo # define foo rpl_foo # endif _GL_FUNCDECL_RPL (foo, ...); _GL_CXXALIAS_RPL (foo, ...); # else # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ _GL_FUNCDECL_SYS (foo, ...); # endif _GL_CXXALIAS_SYS (foo, ...); # endif _GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif */ /* _GL_EXTERN_C declaration; performs the declaration with C linkage. */ #if defined __cplusplus # define _GL_EXTERN_C extern "C" #else # define _GL_EXTERN_C extern #endif /* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); declares a replacement function, named rpl_func, with the given prototype, consisting of return type, parameters, and attributes. Example: _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) _GL_ARG_NONNULL ((1))); */ #define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ _GL_EXTERN_C rettype rpl_func parameters_and_attributes /* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); declares the system function, named func, with the given prototype, consisting of return type, parameters, and attributes. Example: _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) _GL_ARG_NONNULL ((1))); */ #define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ _GL_EXTERN_C rettype func parameters_and_attributes /* _GL_CXXALIAS_RPL (func, rettype, parameters); declares a C++ alias called GNULIB_NAMESPACE::func that redirects to rpl_func, if GNULIB_NAMESPACE is defined. Example: _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); Wrapping rpl_func in an object with an inline conversion operator avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is actually used in the program. */ #define _GL_CXXALIAS_RPL(func,rettype,parameters) \ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ static const struct _gl_ ## func ## _wrapper \ { \ typedef rettype (*type) parameters; \ \ inline operator type () const \ { \ return ::rpl_func; \ } \ } func = {}; \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_MDA (func, rettype, parameters); is to be used when func is a Microsoft deprecated alias, on native Windows. It declares a C++ alias called GNULIB_NAMESPACE::func that redirects to _func, if GNULIB_NAMESPACE is defined. Example: _GL_CXXALIAS_MDA (open, int, (const char *filename, int flags, ...)); */ #define _GL_CXXALIAS_MDA(func,rettype,parameters) \ _GL_CXXALIAS_RPL_1 (func, _##func, rettype, parameters) /* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); except that the C function rpl_func may have a slightly different declaration. A cast is used to silence the "invalid conversion" error that would otherwise occur. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ static const struct _gl_ ## func ## _wrapper \ { \ typedef rettype (*type) parameters; \ \ inline operator type () const \ { \ return reinterpret_cast(::rpl_func); \ } \ } func = {}; \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_MDA_CAST (func, rettype, parameters); is like _GL_CXXALIAS_MDA (func, rettype, parameters); except that the C function func may have a slightly different declaration. A cast is used to silence the "invalid conversion" error that would otherwise occur. */ #define _GL_CXXALIAS_MDA_CAST(func,rettype,parameters) \ _GL_CXXALIAS_RPL_CAST_1 (func, _##func, rettype, parameters) /* _GL_CXXALIAS_SYS (func, rettype, parameters); declares a C++ alias called GNULIB_NAMESPACE::func that redirects to the system provided function func, if GNULIB_NAMESPACE is defined. Example: _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); Wrapping func in an object with an inline conversion operator avoids a reference to func unless GNULIB_NAMESPACE::func is actually used in the program. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIAS_SYS(func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ static const struct _gl_ ## func ## _wrapper \ { \ typedef rettype (*type) parameters; \ \ inline operator type () const \ { \ return ::func; \ } \ } func = {}; \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_SYS(func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); is like _GL_CXXALIAS_SYS (func, rettype, parameters); except that the C function func may have a slightly different declaration. A cast is used to silence the "invalid conversion" error that would otherwise occur. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ static const struct _gl_ ## func ## _wrapper \ { \ typedef rettype (*type) parameters; \ \ inline operator type () const \ { \ return reinterpret_cast(::func); \ } \ } func = {}; \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); is like _GL_CXXALIAS_SYS (func, rettype, parameters); except that the C function is picked among a set of overloaded functions, namely the one with rettype2 and parameters2. Two consecutive casts are used to silence the "cannot find a match" and "invalid conversion" errors that would otherwise occur. */ #if defined __cplusplus && defined GNULIB_NAMESPACE /* The outer cast must be a reinterpret_cast. The inner cast: When the function is defined as a set of overloaded functions, it works as a static_cast<>, choosing the designated variant. When the function is defined as a single variant, it works as a reinterpret_cast<>. The parenthesized cast syntax works both ways. */ # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ namespace GNULIB_NAMESPACE \ { \ static const struct _gl_ ## func ## _wrapper \ { \ typedef rettype (*type) parameters; \ \ inline operator type () const \ { \ return reinterpret_cast((rettype2 (*) parameters2)(::func)); \ } \ } func = {}; \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIASWARN (func); causes a warning to be emitted when ::func is used but not when GNULIB_NAMESPACE::func is used. func must be defined without overloaded variants. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIASWARN(func) \ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) # define _GL_CXXALIASWARN_1(func,namespace) \ _GL_CXXALIASWARN_2 (func, namespace) /* To work around GCC bug , we enable the warning only when not optimizing. */ # if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__) # define _GL_CXXALIASWARN_2(func,namespace) \ _GL_WARN_ON_USE (func, \ "The symbol ::" #func " refers to the system function. " \ "Use " #namespace "::" #func " instead.") # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING # define _GL_CXXALIASWARN_2(func,namespace) \ extern __typeof__ (func) func # else # define _GL_CXXALIASWARN_2(func,namespace) \ _GL_EXTERN_C int _gl_cxxalias_dummy # endif #else # define _GL_CXXALIASWARN(func) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); causes a warning to be emitted when the given overloaded variant of ::func is used but not when GNULIB_NAMESPACE::func is used. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ GNULIB_NAMESPACE) # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) /* To work around GCC bug , we enable the warning only when not optimizing. */ # if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__) # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ _GL_WARN_ON_USE_CXX (func, rettype, rettype, parameters_and_attributes, \ "The symbol ::" #func " refers to the system function. " \ "Use " #namespace "::" #func " instead.") # else # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ _GL_EXTERN_C int _gl_cxxalias_dummy # endif #else # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif #endif /* _GL_CXXDEFS_H */ recode-3.7.15/lib/isnanl-nolibm.h0000644000175000017500000000250214371444255012222 /* Test for NaN that does not need libm. Copyright (C) 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #if HAVE_ISNANL_IN_LIBC /* Get declaration of isnan macro or (older) isnanl function. */ # include # if (__GNUC__ >= 4) || (__clang_major__ >= 4) /* GCC >= 4.0 and clang provide a type-generic built-in for isnan. GCC >= 4.0 also provides __builtin_isnanl, but clang doesn't. */ # undef isnanl # define isnanl(x) __builtin_isnan ((long double)(x)) # elif defined isnan # undef isnanl # define isnanl(x) isnan ((long double)(x)) # endif #else /* Test whether X is a NaN. */ # undef isnanl # define isnanl rpl_isnanl extern int isnanl (long double x); #endif recode-3.7.15/lib/limits.in.h0000644000175000017500000001105514371444255011371 /* A GNU-like . Copyright 2016-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined _GL_ALREADY_INCLUDING_LIMITS_H /* Special invocation convention: On Haiku/x86_64, we have a sequence of nested includes -> -> . In this situation, LONG_MAX and INT_MAX are not yet defined, therefore we should not attempt to define LONG_BIT. */ #@INCLUDE_NEXT@ @NEXT_LIMITS_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_LIMITS_H # define _GL_ALREADY_INCLUDING_LIMITS_H /* The include_next requires a split double-inclusion guard. */ # @INCLUDE_NEXT@ @NEXT_LIMITS_H@ # undef _GL_ALREADY_INCLUDING_LIMITS_H #ifndef _@GUARD_PREFIX@_LIMITS_H #define _@GUARD_PREFIX@_LIMITS_H #ifndef LLONG_MIN # if defined LONG_LONG_MIN /* HP-UX 11.31 */ # define LLONG_MIN LONG_LONG_MIN # elif defined LONGLONG_MIN /* IRIX 6.5 */ # define LLONG_MIN LONGLONG_MIN # elif defined __GNUC__ # define LLONG_MIN (- __LONG_LONG_MAX__ - 1LL) # endif #endif #ifndef LLONG_MAX # if defined LONG_LONG_MAX /* HP-UX 11.31 */ # define LLONG_MAX LONG_LONG_MAX # elif defined LONGLONG_MAX /* IRIX 6.5 */ # define LLONG_MAX LONGLONG_MAX # elif defined __GNUC__ # define LLONG_MAX __LONG_LONG_MAX__ # endif #endif #ifndef ULLONG_MAX # if defined ULONG_LONG_MAX /* HP-UX 11.31 */ # define ULLONG_MAX ULONG_LONG_MAX # elif defined ULONGLONG_MAX /* IRIX 6.5 */ # define ULLONG_MAX ULONGLONG_MAX # elif defined __GNUC__ # define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1ULL) # endif #endif /* The number of usable bits in an unsigned or signed integer type with minimum value MIN and maximum value MAX, as an int expression suitable in #if. Cover all known practical hosts. This implementation exploits the fact that MAX is 1 less than a power of 2, and merely counts the number of 1 bits in MAX; "COBn" means "count the number of 1 bits in the low-order n bits"). */ #define _GL_INTEGER_WIDTH(min, max) (((min) < 0) + _GL_COB128 (max)) #define _GL_COB128(n) (_GL_COB64 ((n) >> 31 >> 31 >> 2) + _GL_COB64 (n)) #define _GL_COB64(n) (_GL_COB32 ((n) >> 31 >> 1) + _GL_COB32 (n)) #define _GL_COB32(n) (_GL_COB16 ((n) >> 16) + _GL_COB16 (n)) #define _GL_COB16(n) (_GL_COB8 ((n) >> 8) + _GL_COB8 (n)) #define _GL_COB8(n) (_GL_COB4 ((n) >> 4) + _GL_COB4 (n)) #define _GL_COB4(n) (!!((n) & 8) + !!((n) & 4) + !!((n) & 2) + !!((n) & 1)) #ifndef WORD_BIT /* Assume 'int' is 32 bits wide. */ # define WORD_BIT 32 #endif #ifndef LONG_BIT /* Assume 'long' is 32 or 64 bits wide. */ # if LONG_MAX == INT_MAX # define LONG_BIT 32 # else # define LONG_BIT 64 # endif #endif /* Macros specified by C23 and by ISO/IEC TS 18661-1:2014. */ #if (! defined ULLONG_WIDTH \ && (defined _GNU_SOURCE || defined __STDC_WANT_IEC_60559_BFP_EXT__ \ || (defined __STDC_VERSION__ && 201710 < __STDC_VERSION__))) # define CHAR_WIDTH _GL_INTEGER_WIDTH (CHAR_MIN, CHAR_MAX) # define SCHAR_WIDTH _GL_INTEGER_WIDTH (SCHAR_MIN, SCHAR_MAX) # define UCHAR_WIDTH _GL_INTEGER_WIDTH (0, UCHAR_MAX) # define SHRT_WIDTH _GL_INTEGER_WIDTH (SHRT_MIN, SHRT_MAX) # define USHRT_WIDTH _GL_INTEGER_WIDTH (0, USHRT_MAX) # define INT_WIDTH _GL_INTEGER_WIDTH (INT_MIN, INT_MAX) # define UINT_WIDTH _GL_INTEGER_WIDTH (0, UINT_MAX) # define LONG_WIDTH _GL_INTEGER_WIDTH (LONG_MIN, LONG_MAX) # define ULONG_WIDTH _GL_INTEGER_WIDTH (0, ULONG_MAX) # define LLONG_WIDTH _GL_INTEGER_WIDTH (LLONG_MIN, LLONG_MAX) # define ULLONG_WIDTH _GL_INTEGER_WIDTH (0, ULLONG_MAX) #endif /* Macros specified by C23. */ #if (defined _GNU_SOURCE \ || (defined __STDC_VERSION__ && 201710 < __STDC_VERSION__)) # if ! defined BOOL_WIDTH # define BOOL_WIDTH 1 # define BOOL_MAX 1 # elif ! defined BOOL_MAX # define BOOL_MAX ((((1U << (BOOL_WIDTH - 1)) - 1) << 1) + 1) # endif #endif #endif /* _@GUARD_PREFIX@_LIMITS_H */ #endif /* _@GUARD_PREFIX@_LIMITS_H */ #endif recode-3.7.15/lib/xmalloc.c0000644000175000017500000002027214371444255011116 /* xmalloc.c -- malloc with out of memory checking Copyright (C) 1990-2000, 2002-2006, 2008-2023 Free Software Foundation, Inc. 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 3 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, see . */ #include #define XALLOC_INLINE _GL_EXTERN_INLINE #include "xalloc.h" #include "ialloc.h" #include "minmax.h" #include #include #include #include static void * _GL_ATTRIBUTE_PURE nonnull (void *p) { if (!p) xalloc_die (); return p; } /* Allocate S bytes of memory dynamically, with error checking. */ void * xmalloc (size_t s) { return nonnull (malloc (s)); } void * ximalloc (idx_t s) { return nonnull (imalloc (s)); } char * xcharalloc (size_t n) { return XNMALLOC (n, char); } /* Change the size of an allocated block of memory P to S bytes, with error checking. */ void * xrealloc (void *p, size_t s) { void *r = realloc (p, s); if (!r && (!p || s)) xalloc_die (); return r; } void * xirealloc (void *p, idx_t s) { return nonnull (irealloc (p, s)); } /* Change the size of an allocated block of memory P to an array of N objects each of S bytes, with error checking. */ void * xreallocarray (void *p, size_t n, size_t s) { void *r = reallocarray (p, n, s); if (!r && (!p || (n && s))) xalloc_die (); return r; } void * xireallocarray (void *p, idx_t n, idx_t s) { return nonnull (ireallocarray (p, n, s)); } /* Allocate an array of N objects, each with S bytes of memory, dynamically, with error checking. S must be nonzero. */ void * xnmalloc (size_t n, size_t s) { return xreallocarray (NULL, n, s); } void * xinmalloc (idx_t n, idx_t s) { return xireallocarray (NULL, n, s); } /* If P is null, allocate a block of at least *PS bytes; otherwise, reallocate P so that it contains more than *PS bytes. *PS must be nonzero unless P is null. Set *PS to the new block's size, and return the pointer to the new block. *PS is never set to zero, and the returned pointer is never null. */ void * x2realloc (void *p, size_t *ps) { return x2nrealloc (p, ps, 1); } /* If P is null, allocate a block of at least *PN such objects; otherwise, reallocate P so that it contains more than *PN objects each of S bytes. S must be nonzero. Set *PN to the new number of objects, and return the pointer to the new block. *PN is never set to zero, and the returned pointer is never null. Repeated reallocations are guaranteed to make progress, either by allocating an initial block with a nonzero size, or by allocating a larger block. In the following implementation, nonzero sizes are increased by a factor of approximately 1.5 so that repeated reallocations have O(N) overall cost rather than O(N**2) cost, but the specification for this function does not guarantee that rate. Here is an example of use: int *p = NULL; size_t used = 0; size_t allocated = 0; void append_int (int value) { if (used == allocated) p = x2nrealloc (p, &allocated, sizeof *p); p[used++] = value; } This causes x2nrealloc to allocate a block of some nonzero size the first time it is called. To have finer-grained control over the initial size, set *PN to a nonzero value before calling this function with P == NULL. For example: int *p = NULL; size_t used = 0; size_t allocated = 0; size_t allocated1 = 1000; void append_int (int value) { if (used == allocated) { p = x2nrealloc (p, &allocated1, sizeof *p); allocated = allocated1; } p[used++] = value; } */ void * x2nrealloc (void *p, size_t *pn, size_t s) { size_t n = *pn; if (! p) { if (! n) { /* The approximate size to use for initial small allocation requests, when the invoking code specifies an old size of zero. This is the largest "small" request for the GNU C library malloc. */ enum { DEFAULT_MXFAST = 64 * sizeof (size_t) / 4 }; n = DEFAULT_MXFAST / s; n += !n; } } else { /* Set N = floor (1.5 * N) + 1 to make progress even if N == 0. */ if (ckd_add (&n, n, (n >> 1) + 1)) xalloc_die (); } p = xreallocarray (p, n, s); *pn = n; return p; } /* Grow PA, which points to an array of *PN items, and return the location of the reallocated array, updating *PN to reflect its new size. The new array will contain at least N_INCR_MIN more items, but will not contain more than N_MAX items total. S is the size of each item, in bytes. S and N_INCR_MIN must be positive. *PN must be nonnegative. If N_MAX is -1, it is treated as if it were infinity. If PA is null, then allocate a new array instead of reallocating the old one. Thus, to grow an array A without saving its old contents, do { free (A); A = xpalloc (NULL, &AITEMS, ...); }. */ void * xpalloc (void *pa, idx_t *pn, idx_t n_incr_min, ptrdiff_t n_max, idx_t s) { idx_t n0 = *pn; /* The approximate size to use for initial small allocation requests. This is the largest "small" request for the GNU C library malloc. */ enum { DEFAULT_MXFAST = 64 * sizeof (size_t) / 4 }; /* If the array is tiny, grow it to about (but no greater than) DEFAULT_MXFAST bytes. Otherwise, grow it by about 50%. Adjust the growth according to three constraints: N_INCR_MIN, N_MAX, and what the C language can represent safely. */ idx_t n; if (ckd_add (&n, n0, n0 >> 1)) n = IDX_MAX; if (0 <= n_max && n_max < n) n = n_max; /* NBYTES is of a type suitable for holding the count of bytes in an object. This is typically idx_t, but it should be size_t on (theoretical?) platforms where SIZE_MAX < IDX_MAX so xpalloc does not pass values greater than SIZE_MAX to xrealloc. */ #if IDX_MAX <= SIZE_MAX idx_t nbytes; #else size_t nbytes; #endif idx_t adjusted_nbytes = (ckd_mul (&nbytes, n, s) ? MIN (IDX_MAX, SIZE_MAX) : nbytes < DEFAULT_MXFAST ? DEFAULT_MXFAST : 0); if (adjusted_nbytes) { n = adjusted_nbytes / s; nbytes = adjusted_nbytes - adjusted_nbytes % s; } if (! pa) *pn = 0; if (n - n0 < n_incr_min && (ckd_add (&n, n0, n_incr_min) || (0 <= n_max && n_max < n) || ckd_mul (&nbytes, n, s))) xalloc_die (); pa = xrealloc (pa, nbytes); *pn = n; return pa; } /* Allocate S bytes of zeroed memory dynamically, with error checking. There's no need for xnzalloc (N, S), since it would be equivalent to xcalloc (N, S). */ void * xzalloc (size_t s) { return xcalloc (s, 1); } void * xizalloc (idx_t s) { return xicalloc (s, 1); } /* Allocate zeroed memory for N elements of S bytes, with error checking. S must be nonzero. */ void * xcalloc (size_t n, size_t s) { return nonnull (calloc (n, s)); } void * xicalloc (idx_t n, idx_t s) { return nonnull (icalloc (n, s)); } /* Clone an object P of size S, with error checking. There's no need for xnmemdup (P, N, S), since xmemdup (P, N * S) works without any need for an arithmetic overflow check. */ void * xmemdup (void const *p, size_t s) { return memcpy (xmalloc (s), p, s); } void * ximemdup (void const *p, idx_t s) { return memcpy (ximalloc (s), p, s); } /* Clone an object P of size S, with error checking. Append a terminating NUL byte. */ char * ximemdup0 (void const *p, idx_t s) { char *result = ximalloc (s + 1); result[s] = 0; return memcpy (result, p, s); } /* Clone STRING. */ char * xstrdup (char const *string) { return xmemdup (string, strlen (string) + 1); } recode-3.7.15/lib/rawmemchr.c0000644000175000017500000001146114371444255011444 /* Searching in a string. Copyright (C) 2008-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include /* A function definition is only needed if HAVE_RAWMEMCHR is not defined. */ #if !HAVE_RAWMEMCHR # include # include /* Find the first occurrence of C in S. */ void * rawmemchr (const void *s, int c_in) { /* Change this typedef to experiment with performance. */ typedef uintptr_t longword; /* If you change the "uintptr_t", you should change UINTPTR_WIDTH to match. This verifies that the type does not have padding bits. */ static_assert (UINTPTR_WIDTH == UCHAR_WIDTH * sizeof (longword)); const unsigned char *char_ptr; unsigned char c = c_in; /* Handle the first few bytes by reading one byte at a time. Do this until CHAR_PTR is aligned on a longword boundary. */ for (char_ptr = (const unsigned char *) s; (uintptr_t) char_ptr % alignof (longword) != 0; ++char_ptr) if (*char_ptr == c) return (void *) char_ptr; longword const *longword_ptr = s = char_ptr; /* Compute auxiliary longword values: repeated_one is a value which has a 1 in every byte. repeated_c has c in every byte. */ longword repeated_one = (longword) -1 / UCHAR_MAX; longword repeated_c = repeated_one * c; longword repeated_hibit = repeated_one * (UCHAR_MAX / 2 + 1); /* Instead of the traditional loop which tests each byte, we will test a longword at a time. The tricky part is testing if any of the bytes in the longword in question are equal to c. We first use an xor with repeated_c. This reduces the task to testing whether any of the bytes in longword1 is zero. (The following comments assume 8-bit bytes, as POSIX requires; the code's use of UCHAR_MAX should work even if bytes have more than 8 bits.) We compute tmp = ((longword1 - repeated_one) & ~longword1) & (repeated_one * 0x80). That is, we perform the following operations: 1. Subtract repeated_one. 2. & ~longword1. 3. & a mask consisting of 0x80 in every byte. Consider what happens in each byte: - If a byte of longword1 is zero, step 1 and 2 transform it into 0xff, and step 3 transforms it into 0x80. A carry can also be propagated to more significant bytes. - If a byte of longword1 is nonzero, let its lowest 1 bit be at position k (0 <= k <= 7); so the lowest k bits are 0. After step 1, the byte ends in a single bit of value 0 and k bits of value 1. After step 2, the result is just k bits of value 1: 2^k - 1. After step 3, the result is 0. And no carry is produced. So, if longword1 has only non-zero bytes, tmp is zero. Whereas if longword1 has a zero byte, call j the position of the least significant zero byte. Then the result has a zero at positions 0, ..., j-1 and a 0x80 at position j. We cannot predict the result at the more significant bytes (positions j+1..3), but it does not matter since we already have a non-zero bit at position 8*j+7. The test whether any byte in longword1 is zero is equivalent to testing whether tmp is nonzero. This test can read beyond the end of a string, depending on where C_IN is encountered. However, this is considered safe since the initialization phase ensured that the read will be aligned, therefore, the read will not cross page boundaries and will not cause a fault. */ while (1) { longword longword1 = *longword_ptr ^ repeated_c; if ((((longword1 - repeated_one) & ~longword1) & repeated_hibit) != 0) break; longword_ptr++; } char_ptr = s = longword_ptr; /* At this point, we know that one of the sizeof (longword) bytes starting at char_ptr is == c. If we knew endianness, we could determine the first such byte without any further memory accesses, just by looking at the tmp result from the last loop iteration. However, the following simple and portable code does not attempt this potential optimization. */ while (*char_ptr != c) char_ptr++; return (void *) char_ptr; } #endif recode-3.7.15/lib/mbtowc-lock.c0000644000175000017500000001044614371444255011702 /* Return the internal lock used by mbrtowc and mbrtoc32. Copyright (C) 2019-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2019-2020. */ #include /* When it is known that the gl_get_mbtowc_lock function is defined by a dependency library, it should not be defined here. */ #if OMIT_MBTOWC_LOCK /* This declaration is solely to ensure that after preprocessing this file is never empty. */ typedef int dummy; #else /* This file defines the internal lock used by mbrtowc and mbrtoc32. It is a separate compilation unit, so that only one copy of it is present when linking statically. */ /* Prohibit renaming this symbol. */ # undef gl_get_mbtowc_lock /* Macro for exporting a symbol (function, not variable) defined in this file, when compiled into a shared library. */ # ifndef DLL_EXPORTED # if HAVE_VISIBILITY /* Override the effect of the compiler option '-fvisibility=hidden'. */ # define DLL_EXPORTED __attribute__((__visibility__("default"))) # elif defined _WIN32 || defined __CYGWIN__ # define DLL_EXPORTED __declspec(dllexport) # else # define DLL_EXPORTED # endif # endif # if defined _WIN32 && !defined __CYGWIN__ # define WIN32_LEAN_AND_MEAN /* avoid including junk */ # include # include "windows-initguard.h" /* The return type is a 'CRITICAL_SECTION *', not a 'glwthread_mutex_t *', because the latter is not guaranteed to be a stable ABI in the future. */ /* Make sure the function gets exported from DLLs. */ DLL_EXPORTED CRITICAL_SECTION *gl_get_mbtowc_lock (void); static glwthread_initguard_t guard = GLWTHREAD_INITGUARD_INIT; static CRITICAL_SECTION lock; /* Returns the internal lock used by mbrtowc and mbrtoc32. */ CRITICAL_SECTION * gl_get_mbtowc_lock (void) { if (!guard.done) { if (InterlockedIncrement (&guard.started) == 0) { /* This thread is the first one to need the lock. Initialize it. */ InitializeCriticalSection (&lock); guard.done = 1; } else { /* Don't let guard.started grow and wrap around. */ InterlockedDecrement (&guard.started); /* Yield the CPU while waiting for another thread to finish initializing this mutex. */ while (!guard.done) Sleep (0); } } return &lock; } # elif HAVE_PTHREAD_API # include static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; /* Make sure the function gets exported from shared libraries. */ DLL_EXPORTED pthread_mutex_t *gl_get_mbtowc_lock (void); /* Returns the internal lock used by mbrtowc and mbrtoc32. */ pthread_mutex_t * gl_get_mbtowc_lock (void) { return &mutex; } # elif HAVE_THREADS_H # include # include static int volatile init_needed = 1; static once_flag init_once = ONCE_FLAG_INIT; static mtx_t mutex; static void atomic_init (void) { if (mtx_init (&mutex, mtx_plain) != thrd_success) abort (); init_needed = 0; } /* Make sure the function gets exported from shared libraries. */ DLL_EXPORTED mtx_t *gl_get_mbtowc_lock (void); /* Returns the internal lock used by mbrtowc and mbrtoc32. */ mtx_t * gl_get_mbtowc_lock (void) { if (init_needed) call_once (&init_once, atomic_init); return &mutex; } # endif # if (defined _WIN32 || defined __CYGWIN__) && !defined _MSC_VER /* Make sure the '__declspec(dllimport)' in mbrtowc.c and mbrtoc32.c does not cause a link failure when no DLLs are involved. */ # if defined _WIN64 || defined _LP64 # define IMP(x) __imp_##x # else # define IMP(x) _imp__##x # endif void * IMP(gl_get_mbtowc_lock) = &gl_get_mbtowc_lock; # endif #endif recode-3.7.15/lib/quotearg.h0000644000175000017500000004243314371444255011316 /* quotearg.h - quote arguments for output Copyright (C) 1998-2002, 2004, 2006, 2008-2023 Free Software Foundation, Inc. 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 3 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, see . */ /* Written by Paul Eggert */ #ifndef QUOTEARG_H_ # define QUOTEARG_H_ 1 # include /* Basic quoting styles. For each style, an example is given on the input strings "simple", "\0 \t\n'\"\033?""?/\\", and "a:b", using quotearg_buffer, quotearg_mem, and quotearg_colon_mem with that style and the default flags and quoted characters. Note that the examples are shown here as valid C strings rather than what displays on a terminal (with "??/" as a trigraph for "\\"). */ enum quoting_style { /* Output names as-is (ls --quoting-style=literal). Can result in embedded null bytes if QA_ELIDE_NULL_BYTES is not in effect. quotearg_buffer: "simple", "\0 \t\n'\"\033??/\\", "a:b" quotearg: "simple", " \t\n'\"\033??/\\", "a:b" quotearg_colon: "simple", " \t\n'\"\033??/\\", "a:b" */ literal_quoting_style, /* Quote names for the shell if they contain shell metacharacters or would cause ambiguous output (ls --quoting-style=shell). Can result in embedded null bytes if QA_ELIDE_NULL_BYTES is not in effect. quotearg_buffer: "simple", "'\0 \t\n'\\''\"\033??/\\'", "a:b" quotearg: "simple", "' \t\n'\\''\"\033??/\\'", "a:b" quotearg_colon: "simple", "' \t\n'\\''\"\033??/\\'", "'a:b'" */ shell_quoting_style, /* Quote names for the shell, even if they would normally not require quoting (ls --quoting-style=shell-always). Can result in embedded null bytes if QA_ELIDE_NULL_BYTES is not in effect. Behaves like shell_quoting_style if QA_ELIDE_OUTER_QUOTES is in effect. quotearg_buffer: "'simple'", "'\0 \t\n'\\''\"\033??/\\'", "'a:b'" quotearg: "'simple'", "' \t\n'\\''\"\033??/\\'", "'a:b'" quotearg_colon: "'simple'", "' \t\n'\\''\"\033??/\\'", "'a:b'" */ shell_always_quoting_style, /* Quote names for the shell if they contain shell metacharacters or other problematic characters (ls --quoting-style=shell-escape). Non printable characters are quoted using the $'...' syntax, which originated in ksh93 and is widely supported by most shells, and proposed for inclusion in POSIX. quotearg_buffer: "simple", "''$'\\0'' '$'\\t\\n'\\''\"'$'\\033''??/\\'", "a:b" quotearg: "simple", "''$'\\0'' '$'\\t\\n'\\''\"'$'\\033''??/\\'", "a:b" quotearg_colon: "simple", "''$'\\0'' '$'\\t\\n'\\''\"'$'\\033''??/\\'", "'a:b'" */ shell_escape_quoting_style, /* Quote names for the shell even if they would normally not require quoting (ls --quoting-style=shell-escape). Non printable characters are quoted using the $'...' syntax, which originated in ksh93 and is widely supported by most shells, and proposed for inclusion in POSIX. Behaves like shell_escape_quoting_style if QA_ELIDE_OUTER_QUOTES is in effect. quotearg_buffer: "simple", "''$'\\0'' '$'\\t\\n'\\''\"'$'\\033''??/\'", "a:b" quotearg: "simple", "''$'\\0'' '$'\\t\\n'\\''\"'$'\\033''??/\'", "a:b" quotearg_colon: "simple", "''$'\\0'' '$'\\t\\n'\\''\"'$'\\033''??/\'", "'a:b'" */ shell_escape_always_quoting_style, /* Quote names as for a C language string (ls --quoting-style=c). Behaves like c_maybe_quoting_style if QA_ELIDE_OUTER_QUOTES is in effect. Split into consecutive strings if QA_SPLIT_TRIGRAPHS. quotearg_buffer: "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\"" quotearg: "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\"" quotearg_colon: "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a\\:b\"" */ c_quoting_style, /* Like c_quoting_style except omit the surrounding double-quote characters if no quoted characters are encountered. quotearg_buffer: "simple", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "a:b" quotearg: "simple", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "a:b" quotearg_colon: "simple", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\"" */ c_maybe_quoting_style, /* Like c_quoting_style except always omit the surrounding double-quote characters and ignore QA_SPLIT_TRIGRAPHS (ls --quoting-style=escape). quotearg_buffer: "simple", "\\0 \\t\\n'\"\\033??/\\\\", "a:b" quotearg: "simple", "\\0 \\t\\n'\"\\033??/\\\\", "a:b" quotearg_colon: "simple", "\\0 \\t\\n'\"\\033??/\\\\", "a\\:b" */ escape_quoting_style, /* Like clocale_quoting_style, but use single quotes in the default C locale or if the program does not use gettext (ls --quoting-style=locale). For UTF-8 locales, quote characters will use Unicode. LC_MESSAGES=C quotearg_buffer: "`simple'", "`\\0 \\t\\n\\'\"\\033??/\\\\'", "`a:b'" quotearg: "`simple'", "`\\0 \\t\\n\\'\"\\033??/\\\\'", "`a:b'" quotearg_colon: "`simple'", "`\\0 \\t\\n\\'\"\\033??/\\\\'", "`a\\:b'" LC_MESSAGES=pt_PT.utf8 quotearg_buffer: "\302\253simple\302\273", "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a:b\302\273" quotearg: "\302\253simple\302\273", "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a:b\302\273" quotearg_colon: "\302\253simple\302\273", "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a\\:b\302\273" */ locale_quoting_style, /* Like c_quoting_style except use quotation marks appropriate for the locale and ignore QA_SPLIT_TRIGRAPHS (ls --quoting-style=clocale). LC_MESSAGES=C quotearg_buffer: "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\"" quotearg: "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a:b\"" quotearg_colon: "\"simple\"", "\"\\0 \\t\\n'\\\"\\033??/\\\\\"", "\"a\\:b\"" LC_MESSAGES=pt_PT.utf8 quotearg_buffer: "\302\253simple\302\273", "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a:b\302\273" quotearg: "\302\253simple\302\273", "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a:b\302\273" quotearg_colon: "\302\253simple\302\273", "\302\253\\0 \\t\\n'\"\\033??/\\\\\302\253", "\302\253a\\:b\302\273" */ clocale_quoting_style, /* Like clocale_quoting_style except use the custom quotation marks set by set_custom_quoting. If custom quotation marks are not set, the behavior is undefined. left_quote = right_quote = "'" quotearg_buffer: "'simple'", "'\\0 \\t\\n\\'\"\\033??/\\\\'", "'a:b'" quotearg: "'simple'", "'\\0 \\t\\n\\'\"\\033??/\\\\'", "'a:b'" quotearg_colon: "'simple'", "'\\0 \\t\\n\\'\"\\033??/\\\\'", "'a\\:b'" left_quote = "(" and right_quote = ")" quotearg_buffer: "(simple)", "(\\0 \\t\\n'\"\\033??/\\\\)", "(a:b)" quotearg: "(simple)", "(\\0 \\t\\n'\"\\033??/\\\\)", "(a:b)" quotearg_colon: "(simple)", "(\\0 \\t\\n'\"\\033??/\\\\)", "(a\\:b)" left_quote = ":" and right_quote = " " quotearg_buffer: ":simple ", ":\\0\\ \\t\\n'\"\\033??/\\\\ ", ":a:b " quotearg: ":simple ", ":\\0\\ \\t\\n'\"\\033??/\\\\ ", ":a:b " quotearg_colon: ":simple ", ":\\0\\ \\t\\n'\"\\033??/\\\\ ", ":a\\:b " left_quote = "\"'" and right_quote = "'\"" Notice that this is treated as a single level of quotes or two levels where the outer quote need not be escaped within the inner quotes. For two levels where the outer quote must be escaped within the inner quotes, you must use separate quotearg invocations. quotearg_buffer: "\"'simple'\"", "\"'\\0 \\t\\n\\'\"\\033??/\\\\'\"", "\"'a:b'\"" quotearg: "\"'simple'\"", "\"'\\0 \\t\\n\\'\"\\033??/\\\\'\"", "\"'a:b'\"" quotearg_colon: "\"'simple'\"", "\"'\\0 \\t\\n\\'\"\\033??/\\\\'\"", "\"'a\\:b'\"" */ custom_quoting_style }; /* Flags for use in set_quoting_flags. */ enum quoting_flags { /* Always elide null bytes from styles that do not quote them, even when the length of the result is available to the caller. */ QA_ELIDE_NULL_BYTES = 0x01, /* Omit the surrounding quote characters if no escaped characters are encountered. Note that if no other character needs escaping, then neither does the escape character. */ QA_ELIDE_OUTER_QUOTES = 0x02, /* In the c_quoting_style and c_maybe_quoting_style, split ANSI trigraph sequences into concatenated strings (for example, "?""?/" rather than "??/", which could be confused with "\\"). */ QA_SPLIT_TRIGRAPHS = 0x04 }; /* For now, --quoting-style=literal is the default, but this may change. */ # ifndef DEFAULT_QUOTING_STYLE # define DEFAULT_QUOTING_STYLE literal_quoting_style # endif /* Names of quoting styles and their corresponding values. */ extern char const *const quoting_style_args[]; extern enum quoting_style const quoting_style_vals[]; struct quoting_options; /* The functions listed below set and use a hidden variable that contains the default quoting style options. */ /* Allocate a new set of quoting options, with contents initially identical to O if O is not null, or to the default if O is null. It is the caller's responsibility to free the result. */ struct quoting_options *clone_quoting_options (struct quoting_options *o) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_RETURNS_NONNULL; /* Get the value of O's quoting style. If O is null, use the default. */ enum quoting_style get_quoting_style (struct quoting_options const *o); /* In O (or in the default if O is null), set the value of the quoting style to S. */ void set_quoting_style (struct quoting_options *o, enum quoting_style s); /* In O (or in the default if O is null), set the value of the quoting options for character C to I. Return the old value. Currently, the only values defined for I are 0 (the default) and 1 (which means to quote the character even if it would not otherwise be quoted). C must never be a digit or a letter that has special meaning after a backslash (for example, "\t" for tab). */ int set_char_quoting (struct quoting_options *o, char c, int i); /* In O (or in the default if O is null), set the value of the quoting options flag to I, which can be a bitwise combination of enum quoting_flags, or 0 for default behavior. Return the old value. */ int set_quoting_flags (struct quoting_options *o, int i); /* In O (or in the default if O is null), set the value of the quoting style to custom_quoting_style, set the left quote to LEFT_QUOTE, and set the right quote to RIGHT_QUOTE. Each of LEFT_QUOTE and RIGHT_QUOTE must be null-terminated and can be the empty string. Because backslashes are used for escaping, it does not make sense for RIGHT_QUOTE to contain a backslash. RIGHT_QUOTE must not begin with a digit or a letter that has special meaning after a backslash (for example, "\t" for tab). */ void set_custom_quoting (struct quoting_options *o, char const *left_quote, char const *right_quote); /* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of argument ARG (of size ARGSIZE), using O to control quoting. If O is null, use the default. Terminate the output with a null character, and return the written size of the output, not counting the terminating null. If BUFFERSIZE is too small to store the output string, return the value that would have been returned had BUFFERSIZE been large enough. If ARGSIZE is -1, use the string length of the argument for ARGSIZE. On output, BUFFER might contain embedded null bytes if ARGSIZE was not -1, the style of O does not use backslash escapes, and the flags of O do not request elision of null bytes.*/ size_t quotearg_buffer (char *restrict buffer, size_t buffersize, char const *arg, size_t argsize, struct quoting_options const *o); /* Like quotearg_buffer, except return the result in a newly allocated buffer. It is the caller's responsibility to free the result. The result will not contain embedded null bytes. */ char *quotearg_alloc (char const *arg, size_t argsize, struct quoting_options const *o) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_RETURNS_NONNULL; /* Like quotearg_alloc, except that the length of the result, excluding the terminating null byte, is stored into SIZE if it is non-NULL. The result might contain embedded null bytes if ARGSIZE was not -1, SIZE was not NULL, the style of O does not use backslash escapes, and the flags of O do not request elision of null bytes.*/ char *quotearg_alloc_mem (char const *arg, size_t argsize, size_t *size, struct quoting_options const *o) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_RETURNS_NONNULL; /* Use storage slot N to return a quoted version of the string ARG. Use the default quoting options. The returned value points to static storage that can be reused by the next call to this function with the same value of N. N must be nonnegative. The output of all functions in the quotearg_n family are guaranteed to not contain embedded null bytes.*/ char *quotearg_n (int n, char const *arg); /* Equivalent to quotearg_n (0, ARG). */ char *quotearg (char const *arg); /* Use storage slot N to return a quoted version of the argument ARG of size ARGSIZE. This is like quotearg_n (N, ARG), except it can quote null bytes. */ char *quotearg_n_mem (int n, char const *arg, size_t argsize); /* Equivalent to quotearg_n_mem (0, ARG, ARGSIZE). */ char *quotearg_mem (char const *arg, size_t argsize); /* Use style S and storage slot N to return a quoted version of the string ARG. This is like quotearg_n (N, ARG), except that it uses S with no other options to specify the quoting method. */ char *quotearg_n_style (int n, enum quoting_style s, char const *arg); /* Use style S and storage slot N to return a quoted version of the argument ARG of size ARGSIZE. This is like quotearg_n_style (N, S, ARG), except it can quote null bytes. */ char *quotearg_n_style_mem (int n, enum quoting_style s, char const *arg, size_t argsize); /* Equivalent to quotearg_n_style (0, S, ARG). */ char *quotearg_style (enum quoting_style s, char const *arg); /* Equivalent to quotearg_n_style_mem (0, S, ARG, ARGSIZE). */ char *quotearg_style_mem (enum quoting_style s, char const *arg, size_t argsize); /* Like quotearg (ARG), except also quote any instances of CH. See set_char_quoting for a description of acceptable CH values. */ char *quotearg_char (char const *arg, char ch); /* Like quotearg_char (ARG, CH), except it can quote null bytes. */ char *quotearg_char_mem (char const *arg, size_t argsize, char ch); /* Equivalent to quotearg_char (ARG, ':'). */ char *quotearg_colon (char const *arg); /* Like quotearg_colon (ARG), except it can quote null bytes. */ char *quotearg_colon_mem (char const *arg, size_t argsize); /* Like quotearg_n_style, except with ':' quoting enabled. */ char *quotearg_n_style_colon (int n, enum quoting_style s, char const *arg); /* Like quotearg_n_style (N, S, ARG) but with S as custom_quoting_style with left quote as LEFT_QUOTE and right quote as RIGHT_QUOTE. See set_custom_quoting for a description of acceptable LEFT_QUOTE and RIGHT_QUOTE values. */ char *quotearg_n_custom (int n, char const *left_quote, char const *right_quote, char const *arg); /* Like quotearg_n_custom (N, LEFT_QUOTE, RIGHT_QUOTE, ARG) except it can quote null bytes. */ char *quotearg_n_custom_mem (int n, char const *left_quote, char const *right_quote, char const *arg, size_t argsize); /* Equivalent to quotearg_n_custom (0, LEFT_QUOTE, RIGHT_QUOTE, ARG). */ char *quotearg_custom (char const *left_quote, char const *right_quote, char const *arg); /* Equivalent to quotearg_n_custom_mem (0, LEFT_QUOTE, RIGHT_QUOTE, ARG, ARGSIZE). */ char *quotearg_custom_mem (char const *left_quote, char const *right_quote, char const *arg, size_t argsize); /* Free any dynamically allocated memory. */ void quotearg_free (void); #endif /* !QUOTEARG_H_ */ recode-3.7.15/lib/dirname.h0000644000175000017500000000302414371444255011077 /* Take file names apart into directory and base names. Copyright (C) 1998, 2001, 2003-2006, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef DIRNAME_H_ # define DIRNAME_H_ 1 # include # include "filename.h" # include "basename-lgpl.h" # ifndef DIRECTORY_SEPARATOR # define DIRECTORY_SEPARATOR '/' # endif #ifdef __cplusplus extern "C" { #endif # if GNULIB_DIRNAME char *base_name (char const *file) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_RETURNS_NONNULL; char *dir_name (char const *file) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_RETURNS_NONNULL; # endif char *mdir_name (char const *file) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE; size_t dir_len (char const *file) _GL_ATTRIBUTE_PURE; bool strip_trailing_slashes (char *file); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* not DIRNAME_H_ */ recode-3.7.15/lib/fstat.c0000644000175000017500000000515314371444255010601 /* fstat() replacement. Copyright (C) 2011-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* If the user's config.h happens to include , let it include only the system's here, so that orig_fstat doesn't recurse to rpl_fstat. */ #define __need_system_sys_stat_h #include /* Get the original definition of fstat. It might be defined as a macro. */ #include #include #undef __need_system_sys_stat_h #if defined _WIN32 && ! defined __CYGWIN__ # define WINDOWS_NATIVE #endif #if !defined WINDOWS_NATIVE static int orig_fstat (int fd, struct stat *buf) { return fstat (fd, buf); } #endif /* Specification. */ #ifdef __osf__ /* Write "sys/stat.h" here, not , otherwise OSF/1 5.1 DTK cc eliminates this include because of the preliminary #include above. */ # include "sys/stat.h" #else # include #endif #include "stat-time.h" #include #include #ifdef WINDOWS_NATIVE # define WIN32_LEAN_AND_MEAN # include # if GNULIB_MSVC_NOTHROW # include "msvc-nothrow.h" # else # include # endif # include "stat-w32.h" #endif int rpl_fstat (int fd, struct stat *buf) { #if REPLACE_FCHDIR && REPLACE_OPEN_DIRECTORY /* Handle the case when rpl_open() used a dummy file descriptor to work around an open() that can't normally visit directories. */ const char *name = _gl_directory_name (fd); if (name != NULL) return stat (name, buf); #endif #ifdef WINDOWS_NATIVE /* Fill the fields ourselves, because the original fstat function returns values for st_atime, st_mtime, st_ctime that depend on the current time zone. See */ HANDLE h = (HANDLE) _get_osfhandle (fd); if (h == INVALID_HANDLE_VALUE) { errno = EBADF; return -1; } return _gl_fstat_by_handle (h, NULL, buf); #else return stat_time_normalize (orig_fstat (fd, buf), buf); #endif } recode-3.7.15/lib/vasprintf.c0000644000175000017500000000253414371444255011474 /* Formatted output to strings. Copyright (C) 1999, 2002, 2006-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #ifdef IN_LIBASPRINTF # include "vasprintf.h" #else # include #endif #include #include #include #include "vasnprintf.h" int vasprintf (char **resultp, const char *format, va_list args) { size_t length; char *result = vasnprintf (NULL, &length, format, args); if (result == NULL) return -1; if (length > INT_MAX) { free (result); errno = EOVERFLOW; return -1; } *resultp = result; /* Return the number of resulting bytes, excluding the trailing NUL. */ return length; } recode-3.7.15/lib/fpucw.h0000644000175000017500000001136514371444255010613 /* Manipulating the FPU control word. -*- coding: utf-8 -*- Copyright (C) 2007-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2007. This file 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. This file 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 . */ #ifndef _FPUCW_H #define _FPUCW_H /* The i386 floating point hardware (the 387 compatible FPU, not the modern SSE/SSE2 hardware) has a controllable rounding precision. It is specified through the 'PC' bits in the FPU control word ('fctrl' register). (See the GNU libc i386 header for details.) On some platforms, such as Linux or Solaris, the default precision setting is set to "extended precision". This means that 'long double' instructions operate correctly, but 'double' computations often produce slightly different results as on strictly IEEE 754 conforming systems. On some platforms, such as NetBSD, the default precision is set to "double precision". This means that 'long double' instructions will operate only as 'double', i.e. lead to wrong results. Similarly on FreeBSD 6.4, at least for the division of 'long double' numbers. The FPU control word is under control of the application, i.e. it is not required to be set either way by the ABI. (In fact, the i386 ABI https://www.linux-mips.org/pub/linux/mips/doc/ABI/abi386-4.pdf page 3-12 = page 38 is not clear about it. But in any case, gcc treats the control word like a "preserved" register: it emits code that assumes that the control word is preserved across calls, and it restores the control word at the end of functions that modify it.) See Vincent Lefèvre's page https://www.vinc17.net/research/extended.en.html for a good explanation. See https://web.archive.org/web/20060905133417/http://www.uwsg.iu.edu/hypermail/linux/kernel/0103.0/0453.html some argumentation which setting should be the default. */ /* This header file provides the following facilities: fpucw_t integral type holding the value of 'fctrl' FPU_PC_MASK bit mask denoting the precision control FPU_PC_DOUBLE precision control for 53 bits mantissa FPU_PC_EXTENDED precision control for 64 bits mantissa GET_FPUCW () yields the current FPU control word SET_FPUCW (word) sets the FPU control word DECL_LONG_DOUBLE_ROUNDING variable declaration for BEGIN/END_LONG_DOUBLE_ROUNDING BEGIN_LONG_DOUBLE_ROUNDING () starts a sequence of instructions with 'long double' safe operation precision END_LONG_DOUBLE_ROUNDING () ends a sequence of instructions with 'long double' safe operation precision */ /* Inline assembler like this works only with GNU C and clang. */ #if (defined __i386__ || defined __x86_64__) && (defined __GNUC__ || defined __clang__) typedef unsigned short fpucw_t; /* glibc calls this fpu_control_t */ # define FPU_PC_MASK 0x0300 # define FPU_PC_DOUBLE 0x200 /* glibc calls this _FPU_DOUBLE */ # define FPU_PC_EXTENDED 0x300 /* glibc calls this _FPU_EXTENDED */ # define GET_FPUCW() __extension__ \ ({ fpucw_t _cw; \ __asm__ __volatile__ ("fnstcw %0" : "=m" (*&_cw)); \ _cw; \ }) # define SET_FPUCW(word) __extension__ \ (void)({ fpucw_t _ncw = (word); \ __asm__ __volatile__ ("fldcw %0" : : "m" (*&_ncw)); \ }) # define DECL_LONG_DOUBLE_ROUNDING \ fpucw_t oldcw; # define BEGIN_LONG_DOUBLE_ROUNDING() \ (void)(oldcw = GET_FPUCW (), \ SET_FPUCW ((oldcw & ~FPU_PC_MASK) | FPU_PC_EXTENDED)) # define END_LONG_DOUBLE_ROUNDING() \ SET_FPUCW (oldcw) #else typedef unsigned int fpucw_t; # define FPU_PC_MASK 0 # define FPU_PC_DOUBLE 0 # define FPU_PC_EXTENDED 0 # define GET_FPUCW() 0 # define SET_FPUCW(word) (void)(word) # define DECL_LONG_DOUBLE_ROUNDING # define BEGIN_LONG_DOUBLE_ROUNDING() # define END_LONG_DOUBLE_ROUNDING() #endif #endif /* _FPUCW_H */ recode-3.7.15/lib/isnanf-nolibm.h0000644000175000017500000000307414371444255012221 /* Test for NaN that does not need libm. Copyright (C) 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #if HAVE_ISNANF_IN_LIBC /* Get declaration of isnan macro or (older) isnanf function. */ # include # if (__GNUC__ >= 4) || (__clang_major__ >= 4) /* GCC >= 4.0 and clang provide a type-generic built-in for isnan. GCC >= 4.0 also provides __builtin_isnanf, but clang doesn't. */ # undef isnanf # define isnanf(x) __builtin_isnan ((float)(x)) # elif defined isnan # undef isnanf # define isnanf(x) isnan ((float)(x)) # else /* Get declaration of isnanf(), if not declared in . */ # if defined __sgi /* We can't include , because it conflicts with our definition of isnand. Therefore declare isnanf separately. */ extern int isnanf (float x); # endif # endif #else /* Test whether X is a NaN. */ # undef isnanf # define isnanf rpl_isnanf extern int isnanf (float x); #endif recode-3.7.15/lib/scratch_buffer.h0000644000175000017500000001061214371444255012441 /* Variable-sized buffer with on-stack default allocation. Copyright (C) 2017-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Paul Eggert, 2017. */ #ifndef _GL_SCRATCH_BUFFER_H #define _GL_SCRATCH_BUFFER_H /* Scratch buffers with a default stack allocation and fallback to heap allocation. It is expected that this function is used in this way: struct scratch_buffer tmpbuf; scratch_buffer_init (&tmpbuf); while (!function_that_uses_buffer (tmpbuf.data, tmpbuf.length)) if (!scratch_buffer_grow (&tmpbuf)) return -1; scratch_buffer_free (&tmpbuf); return 0; The allocation functions (scratch_buffer_grow, scratch_buffer_grow_preserve, scratch_buffer_set_array_size) make sure that the heap allocation, if any, is freed, so that the code above does not have a memory leak. The buffer still remains in a state that can be deallocated using scratch_buffer_free, so a loop like this is valid as well: struct scratch_buffer tmpbuf; scratch_buffer_init (&tmpbuf); while (!function_that_uses_buffer (tmpbuf.data, tmpbuf.length)) if (!scratch_buffer_grow (&tmpbuf)) break; scratch_buffer_free (&tmpbuf); scratch_buffer_grow and scratch_buffer_grow_preserve are guaranteed to grow the buffer by at least 512 bytes. This means that when using the scratch buffer as a backing store for a non-character array whose element size, in bytes, is 512 or smaller, the scratch buffer only has to grow once to make room for at least one more element. */ /* Scratch buffer. Must be initialized with scratch_buffer_init before its use. */ struct scratch_buffer; /* Initializes *BUFFER so that BUFFER->data points to BUFFER->__space and BUFFER->length reflects the available space. */ #if 0 extern void scratch_buffer_init (struct scratch_buffer *buffer); #endif /* Deallocates *BUFFER (if it was heap-allocated). */ #if 0 extern void scratch_buffer_free (struct scratch_buffer *buffer); #endif /* Grow *BUFFER by some arbitrary amount. The buffer contents is NOT preserved. Return true on success, false on allocation failure (in which case the old buffer is freed). On success, the new buffer is larger than the previous size. On failure, *BUFFER is deallocated, but remains in a free-able state, and errno is set. */ #if 0 extern bool scratch_buffer_grow (struct scratch_buffer *buffer); #endif /* Like scratch_buffer_grow, but preserve the old buffer contents on success, as a prefix of the new buffer. */ #if 0 extern bool scratch_buffer_grow_preserve (struct scratch_buffer *buffer); #endif /* Grow *BUFFER so that it can store at least NELEM elements of SIZE bytes. The buffer contents are NOT preserved. Both NELEM and SIZE can be zero. Return true on success, false on allocation failure (in which case the old buffer is freed, but *BUFFER remains in a free-able state, and errno is set). It is unspecified whether this function can reduce the array size. */ #if 0 extern bool scratch_buffer_set_array_size (struct scratch_buffer *buffer, size_t nelem, size_t size); #endif /* The implementation is imported from glibc. */ /* Avoid possible conflicts with symbols exported by the GNU libc. */ #define __libc_scratch_buffer_grow gl_scratch_buffer_grow #define __libc_scratch_buffer_grow_preserve gl_scratch_buffer_grow_preserve #define __libc_scratch_buffer_set_array_size gl_scratch_buffer_set_array_size #ifndef _GL_LIKELY /* Rely on __builtin_expect, as provided by the module 'builtin-expect'. */ # define _GL_LIKELY(cond) __builtin_expect ((cond), 1) # define _GL_UNLIKELY(cond) __builtin_expect ((cond), 0) #endif #include #endif /* _GL_SCRATCH_BUFFER_H */ recode-3.7.15/lib/wchar.in.h0000644000175000017500000013165714371444255011207 /* A substitute for ISO C99 , for platforms that have issues. Copyright (C) 2007-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Eric Blake. */ /* * ISO C 99 for platforms that have issues. * * * For now, this just ensures proper prerequisite inclusion order and * the declaration of wcwidth(). */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if (((defined __need_mbstate_t || defined __need_wint_t) \ && !defined __MINGW32__) \ || (defined __hpux \ && ((defined _INTTYPES_INCLUDED \ && !defined _GL_FINISHED_INCLUDING_SYSTEM_INTTYPES_H) \ || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) \ || (defined __MINGW32__ && defined __STRING_H_SOURCED__) \ || defined _GL_ALREADY_INCLUDING_WCHAR_H) /* Special invocation convention: - Inside glibc and uClibc header files, but not MinGW. - On HP-UX 11.00 we have a sequence of nested includes -> -> , and the latter includes , once indirectly -> -> -> and once directly. In both situations 'wint_t' is not yet defined, therefore we cannot provide the function overrides; instead include only the system's . - With MinGW 3.22, when includes , only some part of is actually processed, and that doesn't include 'mbstate_t'. - On IRIX 6.5, similarly, we have an include -> , and the latter includes . But here, we have no way to detect whether is completely included or is still being included. */ #@INCLUDE_NEXT@ @NEXT_WCHAR_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_WCHAR_H #define _GL_ALREADY_INCLUDING_WCHAR_H #if @HAVE_FEATURES_H@ # include /* for __GLIBC__ */ #endif /* In some builds of uClibc, is nonexistent and wchar_t is defined by . But avoid namespace pollution on glibc systems. */ #if !(defined __GLIBC__ && !defined __UCLIBC__) # include #endif /* Include the original if it exists. Some builds of uClibc lack it. */ /* The include_next requires a split double-inclusion guard. */ #if @HAVE_WCHAR_H@ # @INCLUDE_NEXT@ @NEXT_WCHAR_H@ #endif #undef _GL_ALREADY_INCLUDING_WCHAR_H #ifndef _@GUARD_PREFIX@_WCHAR_H #define _@GUARD_PREFIX@_WCHAR_H /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers that can be freed by passing them as the Ith argument to the function F. */ #ifndef _GL_ATTRIBUTE_DEALLOC # if __GNUC__ >= 11 # define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) # else # define _GL_ATTRIBUTE_DEALLOC(f, i) # endif #endif /* _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that can be freed via 'free'; it can be used only after declaring 'free'. */ /* Applies to: functions. Cannot be used on inline functions. */ #ifndef _GL_ATTRIBUTE_DEALLOC_FREE # if defined __cplusplus && defined __GNUC__ && !defined __clang__ /* Work around GCC bug */ # define _GL_ATTRIBUTE_DEALLOC_FREE \ _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1) # else # define _GL_ATTRIBUTE_DEALLOC_FREE \ _GL_ATTRIBUTE_DEALLOC (free, 1) # endif #endif /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly allocated memory. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_MALLOC # if __GNUC__ >= 3 || defined __clang__ # define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) # else # define _GL_ATTRIBUTE_MALLOC # endif #endif /* The __attribute__ feature is available in gcc versions 2.5 and later. The attribute __pure__ was added in gcc 2.96. */ #ifndef _GL_ATTRIBUTE_PURE # if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) || defined __clang__ # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else # define _GL_ATTRIBUTE_PURE /* empty */ # endif #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Define wint_t and WEOF. (Also done in wctype.in.h.) */ #if !@HAVE_WINT_T@ && !defined wint_t # define wint_t int # ifndef WEOF # define WEOF -1 # endif #else /* mingw and MSVC define wint_t as 'unsigned short' in or . This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be "unchanged by default argument promotions". Override it. */ # if @GNULIBHEADERS_OVERRIDE_WINT_T@ # if !GNULIB_defined_wint_t # if @HAVE_CRTDEFS_H@ # include # else # include # endif typedef unsigned int rpl_wint_t; # undef wint_t # define wint_t rpl_wint_t # define GNULIB_defined_wint_t 1 # endif # endif # ifndef WEOF # define WEOF ((wint_t) -1) # endif #endif /* Override mbstate_t if it is too small. On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for implementing mbrtowc for encodings like UTF-8. On AIX and MSVC, mbrtowc needs to be overridden, but mbstate_t exists and is large enough and overriding it would cause problems in C++ mode. */ #if !(((defined _WIN32 && !defined __CYGWIN__) || @HAVE_MBSINIT@) && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@ # if !GNULIB_defined_mbstate_t # if !(defined _AIX || defined _MSC_VER) typedef int rpl_mbstate_t; # undef mbstate_t # define mbstate_t rpl_mbstate_t # endif # define GNULIB_defined_mbstate_t 1 # endif #endif /* Make _GL_ATTRIBUTE_DEALLOC_FREE work, even though may not have been included yet. */ #if @GNULIB_FREE_POSIX@ # if (@REPLACE_FREE@ && !defined free \ && !(defined __cplusplus && defined GNULIB_NAMESPACE)) /* We can't do '#define free rpl_free' here. */ # if defined __cplusplus && (__GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2) _GL_EXTERN_C void rpl_free (void *) throw (); # else _GL_EXTERN_C void rpl_free (void *); # endif # undef _GL_ATTRIBUTE_DEALLOC_FREE # define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (rpl_free, 1) # else # if defined _MSC_VER && !defined free _GL_EXTERN_C # if defined _DLL __declspec (dllimport) # endif void __cdecl free (void *); # else # if defined __cplusplus && (__GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2) _GL_EXTERN_C void free (void *) throw (); # else _GL_EXTERN_C void free (void *); # endif # endif # endif #else # if defined _MSC_VER && !defined free _GL_EXTERN_C # if defined _DLL __declspec (dllimport) # endif void __cdecl free (void *); # else # if defined __cplusplus && (__GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2) _GL_EXTERN_C void free (void *) throw (); # else _GL_EXTERN_C void free (void *); # endif # endif #endif /* Convert a single-byte character to a wide character. */ #if @GNULIB_BTOWC@ # if @REPLACE_BTOWC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef btowc # define btowc rpl_btowc # endif _GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE); _GL_CXXALIAS_RPL (btowc, wint_t, (int c)); # else # if !@HAVE_BTOWC@ _GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE); # endif /* Need to cast, because on mingw, the return type is 'unsigned short'. */ _GL_CXXALIAS_SYS_CAST (btowc, wint_t, (int c)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (btowc); # endif #elif defined GNULIB_POSIXCHECK # undef btowc # if HAVE_RAW_DECL_BTOWC _GL_WARN_ON_USE (btowc, "btowc is unportable - " "use gnulib module btowc for portability"); # endif #endif /* Convert a wide character to a single-byte character. */ #if @GNULIB_WCTOB@ # if @REPLACE_WCTOB@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wctob # define wctob rpl_wctob # endif _GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE); _GL_CXXALIAS_RPL (wctob, int, (wint_t wc)); # else # if !defined wctob && !@HAVE_DECL_WCTOB@ /* wctob is provided by gnulib, or wctob exists but is not declared. */ _GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wctob, int, (wint_t wc)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wctob); # endif #elif defined GNULIB_POSIXCHECK # undef wctob # if HAVE_RAW_DECL_WCTOB _GL_WARN_ON_USE (wctob, "wctob is unportable - " "use gnulib module wctob for portability"); # endif #endif /* Test whether *PS is in the initial state. */ #if @GNULIB_MBSINIT@ # if @REPLACE_MBSINIT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mbsinit # define mbsinit rpl_mbsinit # endif _GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps)); _GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps)); # else # if !@HAVE_MBSINIT@ _GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps)); # endif _GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (mbsinit); # endif #elif defined GNULIB_POSIXCHECK # undef mbsinit # if HAVE_RAW_DECL_MBSINIT _GL_WARN_ON_USE (mbsinit, "mbsinit is unportable - " "use gnulib module mbsinit for portability"); # endif #endif /* Convert a multibyte character to a wide character. */ #if @GNULIB_MBRTOWC@ # if @REPLACE_MBRTOWC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mbrtowc # define mbrtowc rpl_mbrtowc # endif _GL_FUNCDECL_RPL (mbrtowc, size_t, (wchar_t *restrict pwc, const char *restrict s, size_t n, mbstate_t *restrict ps)); _GL_CXXALIAS_RPL (mbrtowc, size_t, (wchar_t *restrict pwc, const char *restrict s, size_t n, mbstate_t *restrict ps)); # else # if !@HAVE_MBRTOWC@ _GL_FUNCDECL_SYS (mbrtowc, size_t, (wchar_t *restrict pwc, const char *restrict s, size_t n, mbstate_t *restrict ps)); # endif _GL_CXXALIAS_SYS (mbrtowc, size_t, (wchar_t *restrict pwc, const char *restrict s, size_t n, mbstate_t *restrict ps)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (mbrtowc); # endif #elif defined GNULIB_POSIXCHECK # undef mbrtowc # if HAVE_RAW_DECL_MBRTOWC _GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - " "use gnulib module mbrtowc for portability"); # endif #endif /* Recognize a multibyte character. */ #if @GNULIB_MBRLEN@ # if @REPLACE_MBRLEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mbrlen # define mbrlen rpl_mbrlen # endif _GL_FUNCDECL_RPL (mbrlen, size_t, (const char *restrict s, size_t n, mbstate_t *restrict ps)); _GL_CXXALIAS_RPL (mbrlen, size_t, (const char *restrict s, size_t n, mbstate_t *restrict ps)); # else # if !@HAVE_MBRLEN@ _GL_FUNCDECL_SYS (mbrlen, size_t, (const char *restrict s, size_t n, mbstate_t *restrict ps)); # endif _GL_CXXALIAS_SYS (mbrlen, size_t, (const char *restrict s, size_t n, mbstate_t *restrict ps)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (mbrlen); # endif #elif defined GNULIB_POSIXCHECK # undef mbrlen # if HAVE_RAW_DECL_MBRLEN _GL_WARN_ON_USE (mbrlen, "mbrlen is unportable - " "use gnulib module mbrlen for portability"); # endif #endif /* Convert a string to a wide string. */ #if @GNULIB_MBSRTOWCS@ # if @REPLACE_MBSRTOWCS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mbsrtowcs # define mbsrtowcs rpl_mbsrtowcs # endif _GL_FUNCDECL_RPL (mbsrtowcs, size_t, (wchar_t *restrict dest, const char **restrict srcp, size_t len, mbstate_t *restrict ps) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (mbsrtowcs, size_t, (wchar_t *restrict dest, const char **restrict srcp, size_t len, mbstate_t *restrict ps)); # else # if !@HAVE_MBSRTOWCS@ _GL_FUNCDECL_SYS (mbsrtowcs, size_t, (wchar_t *restrict dest, const char **restrict srcp, size_t len, mbstate_t *restrict ps) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mbsrtowcs, size_t, (wchar_t *restrict dest, const char **restrict srcp, size_t len, mbstate_t *restrict ps)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (mbsrtowcs); # endif #elif defined GNULIB_POSIXCHECK # undef mbsrtowcs # if HAVE_RAW_DECL_MBSRTOWCS _GL_WARN_ON_USE (mbsrtowcs, "mbsrtowcs is unportable - " "use gnulib module mbsrtowcs for portability"); # endif #endif /* Convert a string to a wide string. */ #if @GNULIB_MBSNRTOWCS@ # if @REPLACE_MBSNRTOWCS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mbsnrtowcs # define mbsnrtowcs rpl_mbsnrtowcs # endif _GL_FUNCDECL_RPL (mbsnrtowcs, size_t, (wchar_t *restrict dest, const char **restrict srcp, size_t srclen, size_t len, mbstate_t *restrict ps) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (mbsnrtowcs, size_t, (wchar_t *restrict dest, const char **restrict srcp, size_t srclen, size_t len, mbstate_t *restrict ps)); # else # if !@HAVE_MBSNRTOWCS@ _GL_FUNCDECL_SYS (mbsnrtowcs, size_t, (wchar_t *restrict dest, const char **restrict srcp, size_t srclen, size_t len, mbstate_t *restrict ps) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mbsnrtowcs, size_t, (wchar_t *restrict dest, const char **restrict srcp, size_t srclen, size_t len, mbstate_t *restrict ps)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (mbsnrtowcs); # endif #elif defined GNULIB_POSIXCHECK # undef mbsnrtowcs # if HAVE_RAW_DECL_MBSNRTOWCS _GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - " "use gnulib module mbsnrtowcs for portability"); # endif #endif /* Convert a wide character to a multibyte character. */ #if @GNULIB_WCRTOMB@ # if @REPLACE_WCRTOMB@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wcrtomb # define wcrtomb rpl_wcrtomb # endif _GL_FUNCDECL_RPL (wcrtomb, size_t, (char *restrict s, wchar_t wc, mbstate_t *restrict ps)); _GL_CXXALIAS_RPL (wcrtomb, size_t, (char *restrict s, wchar_t wc, mbstate_t *restrict ps)); # else # if !@HAVE_WCRTOMB@ _GL_FUNCDECL_SYS (wcrtomb, size_t, (char *restrict s, wchar_t wc, mbstate_t *restrict ps)); # endif _GL_CXXALIAS_SYS (wcrtomb, size_t, (char *restrict s, wchar_t wc, mbstate_t *restrict ps)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcrtomb); # endif #elif defined GNULIB_POSIXCHECK # undef wcrtomb # if HAVE_RAW_DECL_WCRTOMB _GL_WARN_ON_USE (wcrtomb, "wcrtomb is unportable - " "use gnulib module wcrtomb for portability"); # endif #endif /* Convert a wide string to a string. */ #if @GNULIB_WCSRTOMBS@ # if @REPLACE_WCSRTOMBS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wcsrtombs # define wcsrtombs rpl_wcsrtombs # endif _GL_FUNCDECL_RPL (wcsrtombs, size_t, (char *restrict dest, const wchar_t **restrict srcp, size_t len, mbstate_t *restrict ps) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (wcsrtombs, size_t, (char *restrict dest, const wchar_t **restrict srcp, size_t len, mbstate_t *restrict ps)); # else # if !@HAVE_WCSRTOMBS@ _GL_FUNCDECL_SYS (wcsrtombs, size_t, (char *restrict dest, const wchar_t **restrict srcp, size_t len, mbstate_t *restrict ps) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (wcsrtombs, size_t, (char *restrict dest, const wchar_t **restrict srcp, size_t len, mbstate_t *restrict ps)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcsrtombs); # endif #elif defined GNULIB_POSIXCHECK # undef wcsrtombs # if HAVE_RAW_DECL_WCSRTOMBS _GL_WARN_ON_USE (wcsrtombs, "wcsrtombs is unportable - " "use gnulib module wcsrtombs for portability"); # endif #endif /* Convert a wide string to a string. */ #if @GNULIB_WCSNRTOMBS@ # if @REPLACE_WCSNRTOMBS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wcsnrtombs # define wcsnrtombs rpl_wcsnrtombs # endif _GL_FUNCDECL_RPL (wcsnrtombs, size_t, (char *restrict dest, const wchar_t **restrict srcp, size_t srclen, size_t len, mbstate_t *restrict ps) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (wcsnrtombs, size_t, (char *restrict dest, const wchar_t **restrict srcp, size_t srclen, size_t len, mbstate_t *restrict ps)); # else # if !@HAVE_WCSNRTOMBS@ || (defined __cplusplus && defined __sun) _GL_FUNCDECL_SYS (wcsnrtombs, size_t, (char *restrict dest, const wchar_t **restrict srcp, size_t srclen, size_t len, mbstate_t *restrict ps) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (wcsnrtombs, size_t, (char *restrict dest, const wchar_t **restrict srcp, size_t srclen, size_t len, mbstate_t *restrict ps)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcsnrtombs); # endif #elif defined GNULIB_POSIXCHECK # undef wcsnrtombs # if HAVE_RAW_DECL_WCSNRTOMBS _GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - " "use gnulib module wcsnrtombs for portability"); # endif #endif /* Return the number of screen columns needed for WC. */ #if @GNULIB_WCWIDTH@ # if @REPLACE_WCWIDTH@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wcwidth # define wcwidth rpl_wcwidth # endif _GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE); _GL_CXXALIAS_RPL (wcwidth, int, (wchar_t)); # else # if !@HAVE_DECL_WCWIDTH@ /* wcwidth exists but is not declared. */ _GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcwidth, int, (wchar_t)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcwidth); # endif #elif defined GNULIB_POSIXCHECK # undef wcwidth # if HAVE_RAW_DECL_WCWIDTH _GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - " "use gnulib module wcwidth for portability"); # endif #endif /* Search N wide characters of S for C. */ #if @GNULIB_WMEMCHR@ # if !@HAVE_WMEMCHR@ _GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n) _GL_ATTRIBUTE_PURE); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t); wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t); } */ _GL_CXXALIAS_SYS_CAST2 (wmemchr, wchar_t *, (const wchar_t *, wchar_t, size_t), const wchar_t *, (const wchar_t *, wchar_t, size_t)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); _GL_CXXALIASWARN1 (wmemchr, const wchar_t *, (const wchar_t *s, wchar_t c, size_t n)); # elif __GLIBC__ >= 2 _GL_CXXALIASWARN (wmemchr); # endif #elif defined GNULIB_POSIXCHECK # undef wmemchr # if HAVE_RAW_DECL_WMEMCHR _GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - " "use gnulib module wmemchr for portability"); # endif #endif /* Compare N wide characters of S1 and S2. */ #if @GNULIB_WMEMCMP@ # if !@HAVE_WMEMCMP@ _GL_FUNCDECL_SYS (wmemcmp, int, (const wchar_t *s1, const wchar_t *s2, size_t n) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wmemcmp, int, (const wchar_t *s1, const wchar_t *s2, size_t n)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wmemcmp); # endif #elif defined GNULIB_POSIXCHECK # undef wmemcmp # if HAVE_RAW_DECL_WMEMCMP _GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - " "use gnulib module wmemcmp for portability"); # endif #endif /* Copy N wide characters of SRC to DEST. */ #if @GNULIB_WMEMCPY@ # if !@HAVE_WMEMCPY@ _GL_FUNCDECL_SYS (wmemcpy, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src, size_t n)); # endif _GL_CXXALIAS_SYS (wmemcpy, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src, size_t n)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wmemcpy); # endif #elif defined GNULIB_POSIXCHECK # undef wmemcpy # if HAVE_RAW_DECL_WMEMCPY _GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - " "use gnulib module wmemcpy for portability"); # endif #endif /* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for overlapping memory areas. */ #if @GNULIB_WMEMMOVE@ # if !@HAVE_WMEMMOVE@ _GL_FUNCDECL_SYS (wmemmove, wchar_t *, (wchar_t *dest, const wchar_t *src, size_t n)); # endif _GL_CXXALIAS_SYS (wmemmove, wchar_t *, (wchar_t *dest, const wchar_t *src, size_t n)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wmemmove); # endif #elif defined GNULIB_POSIXCHECK # undef wmemmove # if HAVE_RAW_DECL_WMEMMOVE _GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - " "use gnulib module wmemmove for portability"); # endif #endif /* Copy N wide characters of SRC to DEST. Return pointer to wide characters after the last written wide character. */ #if @GNULIB_WMEMPCPY@ # if @REPLACE_WMEMPCPY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wmempcpy # define wmempcpy rpl_wmempcpy # endif _GL_FUNCDECL_RPL (wmempcpy, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src, size_t n)); _GL_CXXALIAS_RPL (wmempcpy, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src, size_t n)); # else # if !@HAVE_WMEMPCPY@ _GL_FUNCDECL_SYS (wmempcpy, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src, size_t n)); # endif _GL_CXXALIAS_SYS (wmempcpy, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src, size_t n)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wmempcpy); # endif #elif defined GNULIB_POSIXCHECK # undef wmempcpy # if HAVE_RAW_DECL_WMEMPCPY _GL_WARN_ON_USE (wmempcpy, "wmempcpy is unportable - " "use gnulib module wmempcpy for portability"); # endif #endif /* Set N wide characters of S to C. */ #if @GNULIB_WMEMSET@ # if !@HAVE_WMEMSET@ _GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); # endif _GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wmemset); # endif #elif defined GNULIB_POSIXCHECK # undef wmemset # if HAVE_RAW_DECL_WMEMSET _GL_WARN_ON_USE (wmemset, "wmemset is unportable - " "use gnulib module wmemset for portability"); # endif #endif /* Return the number of wide characters in S. */ #if @GNULIB_WCSLEN@ # if !@HAVE_WCSLEN@ _GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcslen); # endif #elif defined GNULIB_POSIXCHECK # undef wcslen # if HAVE_RAW_DECL_WCSLEN _GL_WARN_ON_USE (wcslen, "wcslen is unportable - " "use gnulib module wcslen for portability"); # endif #endif /* Return the number of wide characters in S, but at most MAXLEN. */ #if @GNULIB_WCSNLEN@ /* On Solaris 11.3, the header files declare the function in the std:: namespace, not in the global namespace. So, force a declaration in the global namespace. */ # if !@HAVE_WCSNLEN@ || (defined __sun && defined __cplusplus) _GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen)); _GL_CXXALIASWARN (wcsnlen); #elif defined GNULIB_POSIXCHECK # undef wcsnlen # if HAVE_RAW_DECL_WCSNLEN _GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - " "use gnulib module wcsnlen for portability"); # endif #endif /* Copy SRC to DEST. */ #if @GNULIB_WCSCPY@ # if !@HAVE_WCSCPY@ _GL_FUNCDECL_SYS (wcscpy, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src)); # endif _GL_CXXALIAS_SYS (wcscpy, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcscpy); # endif #elif defined GNULIB_POSIXCHECK # undef wcscpy # if HAVE_RAW_DECL_WCSCPY _GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - " "use gnulib module wcscpy for portability"); # endif #endif /* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST. */ #if @GNULIB_WCPCPY@ /* On Solaris 11.3, the header files declare the function in the std:: namespace, not in the global namespace. So, force a declaration in the global namespace. */ # if !@HAVE_WCPCPY@ || (defined __sun && defined __cplusplus) _GL_FUNCDECL_SYS (wcpcpy, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src)); # endif _GL_CXXALIAS_SYS (wcpcpy, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src)); _GL_CXXALIASWARN (wcpcpy); #elif defined GNULIB_POSIXCHECK # undef wcpcpy # if HAVE_RAW_DECL_WCPCPY _GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - " "use gnulib module wcpcpy for portability"); # endif #endif /* Copy no more than N wide characters of SRC to DEST. */ #if @GNULIB_WCSNCPY@ # if !@HAVE_WCSNCPY@ _GL_FUNCDECL_SYS (wcsncpy, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src, size_t n)); # endif _GL_CXXALIAS_SYS (wcsncpy, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src, size_t n)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcsncpy); # endif #elif defined GNULIB_POSIXCHECK # undef wcsncpy # if HAVE_RAW_DECL_WCSNCPY _GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - " "use gnulib module wcsncpy for portability"); # endif #endif /* Copy no more than N characters of SRC to DEST, returning the address of the last character written into DEST. */ #if @GNULIB_WCPNCPY@ /* On Solaris 11.3, the header files declare the function in the std:: namespace, not in the global namespace. So, force a declaration in the global namespace. */ # if !@HAVE_WCPNCPY@ || (defined __sun && defined __cplusplus) _GL_FUNCDECL_SYS (wcpncpy, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src, size_t n)); # endif _GL_CXXALIAS_SYS (wcpncpy, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src, size_t n)); _GL_CXXALIASWARN (wcpncpy); #elif defined GNULIB_POSIXCHECK # undef wcpncpy # if HAVE_RAW_DECL_WCPNCPY _GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - " "use gnulib module wcpncpy for portability"); # endif #endif /* Append SRC onto DEST. */ #if @GNULIB_WCSCAT@ # if !@HAVE_WCSCAT@ _GL_FUNCDECL_SYS (wcscat, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src)); # endif _GL_CXXALIAS_SYS (wcscat, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcscat); # endif #elif defined GNULIB_POSIXCHECK # undef wcscat # if HAVE_RAW_DECL_WCSCAT _GL_WARN_ON_USE (wcscat, "wcscat is unportable - " "use gnulib module wcscat for portability"); # endif #endif /* Append no more than N wide characters of SRC onto DEST. */ #if @GNULIB_WCSNCAT@ # if !@HAVE_WCSNCAT@ _GL_FUNCDECL_SYS (wcsncat, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src, size_t n)); # endif _GL_CXXALIAS_SYS (wcsncat, wchar_t *, (wchar_t *restrict dest, const wchar_t *restrict src, size_t n)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcsncat); # endif #elif defined GNULIB_POSIXCHECK # undef wcsncat # if HAVE_RAW_DECL_WCSNCAT _GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - " "use gnulib module wcsncat for portability"); # endif #endif /* Compare S1 and S2. */ #if @GNULIB_WCSCMP@ # if !@HAVE_WCSCMP@ _GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcscmp); # endif #elif defined GNULIB_POSIXCHECK # undef wcscmp # if HAVE_RAW_DECL_WCSCMP _GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - " "use gnulib module wcscmp for portability"); # endif #endif /* Compare no more than N wide characters of S1 and S2. */ #if @GNULIB_WCSNCMP@ # if !@HAVE_WCSNCMP@ _GL_FUNCDECL_SYS (wcsncmp, int, (const wchar_t *s1, const wchar_t *s2, size_t n) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcsncmp, int, (const wchar_t *s1, const wchar_t *s2, size_t n)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcsncmp); # endif #elif defined GNULIB_POSIXCHECK # undef wcsncmp # if HAVE_RAW_DECL_WCSNCMP _GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - " "use gnulib module wcsncmp for portability"); # endif #endif /* Compare S1 and S2, ignoring case. */ #if @GNULIB_WCSCASECMP@ /* On Solaris 11.3, the header files declare the function in the std:: namespace, not in the global namespace. So, force a declaration in the global namespace. */ # if !@HAVE_WCSCASECMP@ || (defined __sun && defined __cplusplus) _GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2)); _GL_CXXALIASWARN (wcscasecmp); #elif defined GNULIB_POSIXCHECK # undef wcscasecmp # if HAVE_RAW_DECL_WCSCASECMP _GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - " "use gnulib module wcscasecmp for portability"); # endif #endif /* Compare no more than N chars of S1 and S2, ignoring case. */ #if @GNULIB_WCSNCASECMP@ /* On Solaris 11.3, the header files declare the function in the std:: namespace, not in the global namespace. So, force a declaration in the global namespace. */ # if !@HAVE_WCSNCASECMP@ || (defined __sun && defined __cplusplus) _GL_FUNCDECL_SYS (wcsncasecmp, int, (const wchar_t *s1, const wchar_t *s2, size_t n) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcsncasecmp, int, (const wchar_t *s1, const wchar_t *s2, size_t n)); _GL_CXXALIASWARN (wcsncasecmp); #elif defined GNULIB_POSIXCHECK # undef wcsncasecmp # if HAVE_RAW_DECL_WCSNCASECMP _GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - " "use gnulib module wcsncasecmp for portability"); # endif #endif /* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE category of the current locale. */ #if @GNULIB_WCSCOLL@ # if !@HAVE_WCSCOLL@ _GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2)); # endif _GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcscoll); # endif #elif defined GNULIB_POSIXCHECK # undef wcscoll # if HAVE_RAW_DECL_WCSCOLL _GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - " "use gnulib module wcscoll for portability"); # endif #endif /* Transform S2 into array pointed to by S1 such that if wcscmp is applied to two transformed strings the result is the as applying 'wcscoll' to the original strings. */ #if @GNULIB_WCSXFRM@ # if !@HAVE_WCSXFRM@ _GL_FUNCDECL_SYS (wcsxfrm, size_t, (wchar_t *restrict s1, const wchar_t *restrict s2, size_t n)); # endif _GL_CXXALIAS_SYS (wcsxfrm, size_t, (wchar_t *restrict s1, const wchar_t *restrict s2, size_t n)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcsxfrm); # endif #elif defined GNULIB_POSIXCHECK # undef wcsxfrm # if HAVE_RAW_DECL_WCSXFRM _GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - " "use gnulib module wcsxfrm for portability"); # endif #endif /* Duplicate S, returning an identical malloc'd string. */ #if @GNULIB_WCSDUP@ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wcsdup # define wcsdup _wcsdup # endif _GL_CXXALIAS_MDA (wcsdup, wchar_t *, (const wchar_t *s)); # else /* On Solaris 11.3, the header files declare the function in the std:: namespace, not in the global namespace. So, force a declaration in the global namespace. */ # if !@HAVE_WCSDUP@ || (defined __sun && defined __cplusplus) || __GNUC__ >= 11 _GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif _GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s)); # endif _GL_CXXALIASWARN (wcsdup); #else # if __GNUC__ >= 11 && !defined wcsdup /* For -Wmismatched-dealloc: Associate wcsdup with free or rpl_free. */ _GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # endif # if defined GNULIB_POSIXCHECK # undef wcsdup # if HAVE_RAW_DECL_WCSDUP _GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - " "use gnulib module wcsdup for portability"); # endif # elif @GNULIB_MDA_WCSDUP@ /* On native Windows, map 'wcsdup' to '_wcsdup', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::wcsdup always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wcsdup # define wcsdup _wcsdup # endif _GL_CXXALIAS_MDA (wcsdup, wchar_t *, (const wchar_t *s)); # else _GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); # if @HAVE_DECL_WCSDUP@ _GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s)); # endif # endif # if (defined _WIN32 && !defined __CYGWIN__) || @HAVE_DECL_WCSDUP@ _GL_CXXALIASWARN (wcsdup); # endif # endif #endif /* Find the first occurrence of WC in WCS. */ #if @GNULIB_WCSCHR@ # if !@HAVE_WCSCHR@ _GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc) _GL_ATTRIBUTE_PURE); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const wchar_t * std::wcschr (const wchar_t *, wchar_t); wchar_t * std::wcschr (wchar_t *, wchar_t); } */ _GL_CXXALIAS_SYS_CAST2 (wcschr, wchar_t *, (const wchar_t *, wchar_t), const wchar_t *, (const wchar_t *, wchar_t)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc)); _GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc)); # elif __GLIBC__ >= 2 _GL_CXXALIASWARN (wcschr); # endif #elif defined GNULIB_POSIXCHECK # undef wcschr # if HAVE_RAW_DECL_WCSCHR _GL_WARN_ON_USE (wcschr, "wcschr is unportable - " "use gnulib module wcschr for portability"); # endif #endif /* Find the last occurrence of WC in WCS. */ #if @GNULIB_WCSRCHR@ # if !@HAVE_WCSRCHR@ _GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc) _GL_ATTRIBUTE_PURE); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const wchar_t * std::wcsrchr (const wchar_t *, wchar_t); wchar_t * std::wcsrchr (wchar_t *, wchar_t); } */ _GL_CXXALIAS_SYS_CAST2 (wcsrchr, wchar_t *, (const wchar_t *, wchar_t), const wchar_t *, (const wchar_t *, wchar_t)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc)); _GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc)); # elif __GLIBC__ >= 2 _GL_CXXALIASWARN (wcsrchr); # endif #elif defined GNULIB_POSIXCHECK # undef wcsrchr # if HAVE_RAW_DECL_WCSRCHR _GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - " "use gnulib module wcsrchr for portability"); # endif #endif /* Return the length of the initial segmet of WCS which consists entirely of wide characters not in REJECT. */ #if @GNULIB_WCSCSPN@ # if !@HAVE_WCSCSPN@ _GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcscspn); # endif #elif defined GNULIB_POSIXCHECK # undef wcscspn # if HAVE_RAW_DECL_WCSCSPN _GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - " "use gnulib module wcscspn for portability"); # endif #endif /* Return the length of the initial segmet of WCS which consists entirely of wide characters in ACCEPT. */ #if @GNULIB_WCSSPN@ # if !@HAVE_WCSSPN@ _GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)); # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcsspn); # endif #elif defined GNULIB_POSIXCHECK # undef wcsspn # if HAVE_RAW_DECL_WCSSPN _GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - " "use gnulib module wcsspn for portability"); # endif #endif /* Find the first occurrence in WCS of any character in ACCEPT. */ #if @GNULIB_WCSPBRK@ # if !@HAVE_WCSPBRK@ _GL_FUNCDECL_SYS (wcspbrk, wchar_t *, (const wchar_t *wcs, const wchar_t *accept) _GL_ATTRIBUTE_PURE); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *); wchar_t * std::wcspbrk (wchar_t *, const wchar_t *); } */ _GL_CXXALIAS_SYS_CAST2 (wcspbrk, wchar_t *, (const wchar_t *, const wchar_t *), const wchar_t *, (const wchar_t *, const wchar_t *)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (wcspbrk, wchar_t *, (wchar_t *wcs, const wchar_t *accept)); _GL_CXXALIASWARN1 (wcspbrk, const wchar_t *, (const wchar_t *wcs, const wchar_t *accept)); # elif __GLIBC__ >= 2 _GL_CXXALIASWARN (wcspbrk); # endif #elif defined GNULIB_POSIXCHECK # undef wcspbrk # if HAVE_RAW_DECL_WCSPBRK _GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - " "use gnulib module wcspbrk for portability"); # endif #endif /* Find the first occurrence of NEEDLE in HAYSTACK. */ #if @GNULIB_WCSSTR@ # if !@HAVE_WCSSTR@ _GL_FUNCDECL_SYS (wcsstr, wchar_t *, (const wchar_t *restrict haystack, const wchar_t *restrict needle) _GL_ATTRIBUTE_PURE); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *); wchar_t * std::wcsstr (wchar_t *, const wchar_t *); } */ _GL_CXXALIAS_SYS_CAST2 (wcsstr, wchar_t *, (const wchar_t *restrict, const wchar_t *restrict), const wchar_t *, (const wchar_t *restrict, const wchar_t *restrict)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (wcsstr, wchar_t *, (wchar_t *restrict haystack, const wchar_t *restrict needle)); _GL_CXXALIASWARN1 (wcsstr, const wchar_t *, (const wchar_t *restrict haystack, const wchar_t *restrict needle)); # elif __GLIBC__ >= 2 _GL_CXXALIASWARN (wcsstr); # endif #elif defined GNULIB_POSIXCHECK # undef wcsstr # if HAVE_RAW_DECL_WCSSTR _GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - " "use gnulib module wcsstr for portability"); # endif #endif /* Divide WCS into tokens separated by characters in DELIM. */ #if @GNULIB_WCSTOK@ # if @REPLACE_WCSTOK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wcstok # define wcstok rpl_wcstok # endif _GL_FUNCDECL_RPL (wcstok, wchar_t *, (wchar_t *restrict wcs, const wchar_t *restrict delim, wchar_t **restrict ptr)); _GL_CXXALIAS_RPL (wcstok, wchar_t *, (wchar_t *restrict wcs, const wchar_t *restrict delim, wchar_t **restrict ptr)); # else # if !@HAVE_WCSTOK@ _GL_FUNCDECL_SYS (wcstok, wchar_t *, (wchar_t *restrict wcs, const wchar_t *restrict delim, wchar_t **restrict ptr)); # endif _GL_CXXALIAS_SYS (wcstok, wchar_t *, (wchar_t *restrict wcs, const wchar_t *restrict delim, wchar_t **restrict ptr)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcstok); # endif #elif defined GNULIB_POSIXCHECK # undef wcstok # if HAVE_RAW_DECL_WCSTOK _GL_WARN_ON_USE (wcstok, "wcstok is unportable - " "use gnulib module wcstok for portability"); # endif #endif /* Determine number of column positions required for first N wide characters (or fewer if S ends before this) in S. */ #if @GNULIB_WCSWIDTH@ # if @REPLACE_WCSWIDTH@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wcswidth # define wcswidth rpl_wcswidth # endif _GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n) _GL_ATTRIBUTE_PURE); _GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n)); # else # if !@HAVE_WCSWIDTH@ _GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n) _GL_ATTRIBUTE_PURE); # endif _GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcswidth); # endif #elif defined GNULIB_POSIXCHECK # undef wcswidth # if HAVE_RAW_DECL_WCSWIDTH _GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - " "use gnulib module wcswidth for portability"); # endif #endif /* Convert *TP to a date and time wide string. See . */ #if @GNULIB_WCSFTIME@ # if @REPLACE_WCSFTIME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wcsftime # define wcsftime rpl_wcsftime # endif _GL_FUNCDECL_RPL (wcsftime, size_t, (wchar_t *restrict __buf, size_t __bufsize, const wchar_t *restrict __fmt, const struct tm *restrict __tp) _GL_ARG_NONNULL ((1, 3, 4))); _GL_CXXALIAS_RPL (wcsftime, size_t, (wchar_t *restrict __buf, size_t __bufsize, const wchar_t *restrict __fmt, const struct tm *restrict __tp)); # else # if !@HAVE_WCSFTIME@ _GL_FUNCDECL_SYS (wcsftime, size_t, (wchar_t *restrict __buf, size_t __bufsize, const wchar_t *restrict __fmt, const struct tm *restrict __tp) _GL_ARG_NONNULL ((1, 3, 4))); # endif _GL_CXXALIAS_SYS (wcsftime, size_t, (wchar_t *restrict __buf, size_t __bufsize, const wchar_t *restrict __fmt, const struct tm *restrict __tp)); # endif # if __GLIBC__ >= 2 _GL_CXXALIASWARN (wcsftime); # endif #elif defined GNULIB_POSIXCHECK # undef wcsftime # if HAVE_RAW_DECL_WCSFTIME _GL_WARN_ON_USE (wcsftime, "wcsftime is unportable - " "use gnulib module wcsftime for portability"); # endif #endif #endif /* _@GUARD_PREFIX@_WCHAR_H */ #endif /* _@GUARD_PREFIX@_WCHAR_H */ #endif recode-3.7.15/lib/stdio-read.c0000644000175000017500000001361414371444255011514 /* POSIX compatible FILE stream read function. Copyright (C) 2008-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2011. This file 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. This file 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 . */ #include /* Specification. */ #include /* Replace these functions only if module 'nonblocking' is requested. */ #if GNULIB_NONBLOCKING /* On native Windows platforms, when read() is called on a non-blocking pipe with an empty buffer, ReadFile() fails with error GetLastError() = ERROR_NO_DATA, and read() in consequence fails with error EINVAL. This read() function is at the basis of the function which fills the buffer of a FILE stream. */ # if defined _WIN32 && ! defined __CYGWIN__ # include # include # define WIN32_LEAN_AND_MEAN /* avoid including junk */ # include # if GNULIB_MSVC_NOTHROW # include "msvc-nothrow.h" # else # include # endif /* Don't assume that UNICODE is not defined. */ # undef GetNamedPipeHandleState # define GetNamedPipeHandleState GetNamedPipeHandleStateA # define CALL_WITH_ERRNO_FIX(RETTYPE, EXPRESSION, FAILED) \ if (ferror (stream)) \ return (EXPRESSION); \ else \ { \ RETTYPE ret; \ SetLastError (0); \ ret = (EXPRESSION); \ if (FAILED) \ { \ if (GetLastError () == ERROR_NO_DATA && ferror (stream)) \ { \ int fd = fileno (stream); \ if (fd >= 0) \ { \ HANDLE h = (HANDLE) _get_osfhandle (fd); \ if (GetFileType (h) == FILE_TYPE_PIPE) \ { \ /* h is a pipe or socket. */ \ DWORD state; \ if (GetNamedPipeHandleState (h, &state, NULL, NULL, \ NULL, NULL, 0) \ && (state & PIPE_NOWAIT) != 0) \ /* h is a pipe in non-blocking mode. \ Change errno from EINVAL to EAGAIN. */ \ errno = EAGAIN; \ } \ } \ } \ } \ return ret; \ } /* Enable this function definition only if gnulib's has prepared it. Otherwise we get a function definition conflict with mingw64's . */ # if GNULIB_SCANF int scanf (const char *format, ...) { int retval; va_list args; va_start (args, format); retval = vfscanf (stdin, format, args); va_end (args); return retval; } # endif /* Enable this function definition only if gnulib's has prepared it. Otherwise we get a function definition conflict with mingw64's . */ # if GNULIB_FSCANF int fscanf (FILE *stream, const char *format, ...) { int retval; va_list args; va_start (args, format); retval = vfscanf (stream, format, args); va_end (args); return retval; } # endif /* Enable this function definition only if gnulib's has prepared it. Otherwise we get a function definition conflict with mingw64's . */ # if GNULIB_VSCANF int vscanf (const char *format, va_list args) { return vfscanf (stdin, format, args); } # endif /* Enable this function definition only if gnulib's has prepared it. Otherwise we get a function definition conflict with mingw64's . */ # if GNULIB_VFSCANF int vfscanf (FILE *stream, const char *format, va_list args) #undef vfscanf { CALL_WITH_ERRNO_FIX (int, vfscanf (stream, format, args), ret == EOF) } # endif int getchar (void) { return fgetc (stdin); } int fgetc (FILE *stream) #undef fgetc { CALL_WITH_ERRNO_FIX (int, fgetc (stream), ret == EOF) } char * fgets (char *s, int n, FILE *stream) #undef fgets { CALL_WITH_ERRNO_FIX (char *, fgets (s, n, stream), ret == NULL) } /* We intentionally don't bother to fix gets. */ size_t fread (void *ptr, size_t s, size_t n, FILE *stream) #undef fread { CALL_WITH_ERRNO_FIX (size_t, fread (ptr, s, n, stream), ret < n) } # endif #endif recode-3.7.15/lib/error.c0000644000175000017500000002471114371444255010612 /* Error handler for noninteractive utilities Copyright (C) 1990-1998, 2000-2007, 2009-2023 Free Software Foundation, Inc. This file is part of the GNU C Library. This file 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. This file 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 . */ /* Written by David MacKenzie . */ #if !_LIBC # include #endif #include "error.h" #include #include #include #include #if !_LIBC && ENABLE_NLS # include "gettext.h" # define _(msgid) gettext (msgid) #endif #ifdef _LIBC # include # include # include # include # define mbsrtowcs __mbsrtowcs # define USE_UNLOCKED_IO 0 # define _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD(a, b) # define _GL_ARG_NONNULL(a) #endif #if USE_UNLOCKED_IO # include "unlocked-io.h" #endif #ifndef _ # define _(String) String #endif /* If NULL, error will flush stdout, then print on stderr the program name, a colon and a space. Otherwise, error will call this function without parameters instead. */ void (*error_print_progname) (void); /* This variable is incremented each time 'error' is called. */ unsigned int error_message_count; #ifdef _LIBC /* In the GNU C library, there is a predefined variable for this. */ # define program_name program_invocation_name # include # include # include /* In GNU libc we want do not want to use the common name 'error' directly. Instead make it a weak alias. */ extern void __error (int status, int errnum, const char *message, ...) __attribute__ ((__format__ (__printf__, 3, 4))); extern void __error_at_line (int status, int errnum, const char *file_name, unsigned int line_number, const char *message, ...) __attribute__ ((__format__ (__printf__, 5, 6))); # define error __error # define error_at_line __error_at_line # include # define fflush(s) _IO_fflush (s) # undef putc # define putc(c, fp) _IO_putc (c, fp) # include #else /* not _LIBC */ # include # include # if defined _WIN32 && ! defined __CYGWIN__ /* Get declarations of the native Windows API functions. */ # define WIN32_LEAN_AND_MEAN # include /* Get _get_osfhandle. */ # if GNULIB_MSVC_NOTHROW # include "msvc-nothrow.h" # else # include # endif # endif /* The gnulib override of fcntl is not needed in this file. */ # undef fcntl # if !(GNULIB_STRERROR_R_POSIX || HAVE_DECL_STRERROR_R) # ifndef HAVE_DECL_STRERROR_R "this configure-time declaration test was not run" # endif # if STRERROR_R_CHAR_P char *strerror_r (int errnum, char *buf, size_t buflen); # else int strerror_r (int errnum, char *buf, size_t buflen); # endif # endif # define program_name getprogname () # if GNULIB_STRERROR_R_POSIX || HAVE_STRERROR_R || defined strerror_r # define __strerror_r strerror_r # endif /* GNULIB_STRERROR_R_POSIX || HAVE_STRERROR_R || defined strerror_r */ #endif /* not _LIBC */ #if !_LIBC /* Return non-zero if FD is open. */ static int is_open (int fd) { # if defined _WIN32 && ! defined __CYGWIN__ /* On native Windows: The initial state of unassigned standard file descriptors is that they are open but point to an INVALID_HANDLE_VALUE. There is no fcntl, and the gnulib replacement fcntl does not support F_GETFL. */ return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE; # else # ifndef F_GETFL # error Please port fcntl to your platform # endif return 0 <= fcntl (fd, F_GETFL); # endif } #endif static void flush_stdout (void) { #if !_LIBC int stdout_fd; # if GNULIB_FREOPEN_SAFER /* Use of gnulib's freopen-safer module normally ensures that fileno (stdout) == 1 whenever stdout is open. */ stdout_fd = STDOUT_FILENO; # else /* POSIX states that fileno (stdout) after fclose is unspecified. But in practice it is not a problem, because stdout is statically allocated and the fd of a FILE stream is stored as a field in its allocated memory. */ stdout_fd = fileno (stdout); # endif /* POSIX states that fflush (stdout) after fclose is unspecified; it is safe in glibc, but not on all other platforms. fflush (NULL) is always defined, but too draconian. */ if (0 <= stdout_fd && is_open (stdout_fd)) #endif fflush (stdout); } static void print_errno_message (int errnum) { char const *s; #if _LIBC || GNULIB_STRERROR_R_POSIX || defined HAVE_STRERROR_R char errbuf[1024]; # if _LIBC || (!GNULIB_STRERROR_R_POSIX && STRERROR_R_CHAR_P) s = __strerror_r (errnum, errbuf, sizeof errbuf); # else if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0) s = errbuf; else s = 0; # endif #else s = strerror (errnum); #endif #if !_LIBC if (! s) s = _("Unknown system error"); #endif #if _LIBC __fxprintf (NULL, ": %s", s); #else fprintf (stderr, ": %s", s); #endif } static void _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 0) _GL_ARG_NONNULL ((3)) error_tail (int status, int errnum, const char *message, va_list args) { #if _LIBC if (_IO_fwide (stderr, 0) > 0) { size_t len = strlen (message) + 1; wchar_t *wmessage = NULL; mbstate_t st; size_t res; const char *tmp; bool use_malloc = false; while (1) { if (__libc_use_alloca (len * sizeof (wchar_t))) wmessage = (wchar_t *) alloca (len * sizeof (wchar_t)); else { if (!use_malloc) wmessage = NULL; wchar_t *p = (wchar_t *) realloc (wmessage, len * sizeof (wchar_t)); if (p == NULL) { free (wmessage); fputws_unlocked (L"out of memory\n", stderr); return; } wmessage = p; use_malloc = true; } memset (&st, '\0', sizeof (st)); tmp = message; res = mbsrtowcs (wmessage, &tmp, len, &st); if (res != len) break; if (__builtin_expect (len >= SIZE_MAX / sizeof (wchar_t) / 2, 0)) { /* This really should not happen if everything is fine. */ res = (size_t) -1; break; } len *= 2; } if (res == (size_t) -1) { /* The string cannot be converted. */ if (use_malloc) { free (wmessage); use_malloc = false; } wmessage = (wchar_t *) L"???"; } __vfwprintf (stderr, wmessage, args); if (use_malloc) free (wmessage); } else #endif vfprintf (stderr, message, args); ++error_message_count; if (errnum) print_errno_message (errnum); #if _LIBC __fxprintf (NULL, "\n"); #else putc ('\n', stderr); #endif fflush (stderr); if (status) exit (status); } /* Print the program name and error message MESSAGE, which is a printf-style format string with optional args. If ERRNUM is nonzero, print its corresponding system error message. Exit with status STATUS if it is nonzero. */ void error (int status, int errnum, const char *message, ...) { va_list args; #if defined _LIBC && defined __libc_ptf_call /* We do not want this call to be cut short by a thread cancellation. Therefore disable cancellation for now. */ int state = PTHREAD_CANCEL_ENABLE; __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state), 0); #endif flush_stdout (); #ifdef _LIBC _IO_flockfile (stderr); #endif if (error_print_progname) (*error_print_progname) (); else { #if _LIBC __fxprintf (NULL, "%s: ", program_name); #else fprintf (stderr, "%s: ", program_name); #endif } va_start (args, message); error_tail (status, errnum, message, args); va_end (args); #ifdef _LIBC _IO_funlockfile (stderr); # ifdef __libc_ptf_call __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0); # endif #endif } /* Sometimes we want to have at most one error per line. This variable controls whether this mode is selected or not. */ int error_one_per_line; void error_at_line (int status, int errnum, const char *file_name, unsigned int line_number, const char *message, ...) { va_list args; if (error_one_per_line) { static const char *old_file_name; static unsigned int old_line_number; if (old_line_number == line_number && (file_name == old_file_name || (old_file_name != NULL && file_name != NULL && strcmp (old_file_name, file_name) == 0))) /* Simply return and print nothing. */ return; old_file_name = file_name; old_line_number = line_number; } #if defined _LIBC && defined __libc_ptf_call /* We do not want this call to be cut short by a thread cancellation. Therefore disable cancellation for now. */ int state = PTHREAD_CANCEL_ENABLE; __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state), 0); #endif flush_stdout (); #ifdef _LIBC _IO_flockfile (stderr); #endif if (error_print_progname) (*error_print_progname) (); else { #if _LIBC __fxprintf (NULL, "%s:", program_name); #else fprintf (stderr, "%s:", program_name); #endif } #if _LIBC __fxprintf (NULL, file_name != NULL ? "%s:%u: " : " ", file_name, line_number); #else fprintf (stderr, file_name != NULL ? "%s:%u: " : " ", file_name, line_number); #endif va_start (args, message); error_tail (status, errnum, message, args); va_end (args); #ifdef _LIBC _IO_funlockfile (stderr); # ifdef __libc_ptf_call __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0); # endif #endif } #ifdef _LIBC /* Make the weak alias. */ # undef error # undef error_at_line weak_alias (__error, error) weak_alias (__error_at_line, error_at_line) #endif recode-3.7.15/lib/c-ctype.h0000644000175000017500000002244114371444255011030 /* Character handling in C locale. These functions work like the corresponding functions in , except that they have the C (POSIX) locale hardwired, whereas the functions' behaviour depends on the current locale set via setlocale. Copyright (C) 2000-2003, 2006, 2008-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef C_CTYPE_H #define C_CTYPE_H #ifndef _GL_INLINE_HEADER_BEGIN #error "Please include config.h first." #endif _GL_INLINE_HEADER_BEGIN #ifndef C_CTYPE_INLINE # define C_CTYPE_INLINE _GL_INLINE #endif #ifdef __cplusplus extern "C" { #endif /* The functions defined in this file assume the "C" locale and a character set without diacritics (ASCII-US or EBCDIC-US or something like that). Even if the "C" locale on a particular system is an extension of the ASCII character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it is ISO-8859-1), the functions in this file recognize only the ASCII characters. */ #if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126) /* The character set is ASCII or one of its variants or extensions, not EBCDIC. Testing the value of '\n' and '\r' is not relevant. */ # define C_CTYPE_ASCII 1 #elif ! (' ' == '\x40' && '0' == '\xf0' \ && 'A' == '\xc1' && 'J' == '\xd1' && 'S' == '\xe2' \ && 'a' == '\x81' && 'j' == '\x91' && 's' == '\xa2') # error "Only ASCII and EBCDIC are supported" #endif #if 'A' < 0 # error "EBCDIC and char is signed -- not supported" #endif /* Cases for control characters. */ #define _C_CTYPE_CNTRL \ case '\a': case '\b': case '\f': case '\n': \ case '\r': case '\t': case '\v': \ _C_CTYPE_OTHER_CNTRL /* ASCII control characters other than those with \-letter escapes. */ #if C_CTYPE_ASCII # define _C_CTYPE_OTHER_CNTRL \ case '\x00': case '\x01': case '\x02': case '\x03': \ case '\x04': case '\x05': case '\x06': case '\x0e': \ case '\x0f': case '\x10': case '\x11': case '\x12': \ case '\x13': case '\x14': case '\x15': case '\x16': \ case '\x17': case '\x18': case '\x19': case '\x1a': \ case '\x1b': case '\x1c': case '\x1d': case '\x1e': \ case '\x1f': case '\x7f' #else /* Use EBCDIC code page 1047's assignments for ASCII control chars; assume all EBCDIC code pages agree about these assignments. */ # define _C_CTYPE_OTHER_CNTRL \ case '\x00': case '\x01': case '\x02': case '\x03': \ case '\x07': case '\x0e': case '\x0f': case '\x10': \ case '\x11': case '\x12': case '\x13': case '\x18': \ case '\x19': case '\x1c': case '\x1d': case '\x1e': \ case '\x1f': case '\x26': case '\x27': case '\x2d': \ case '\x2e': case '\x32': case '\x37': case '\x3c': \ case '\x3d': case '\x3f' #endif /* Cases for lowercase hex letters, and lowercase letters, all offset by N. */ #define _C_CTYPE_LOWER_A_THRU_F_N(N) \ case 'a' + (N): case 'b' + (N): case 'c' + (N): case 'd' + (N): \ case 'e' + (N): case 'f' + (N) #define _C_CTYPE_LOWER_N(N) \ _C_CTYPE_LOWER_A_THRU_F_N(N): \ case 'g' + (N): case 'h' + (N): case 'i' + (N): case 'j' + (N): \ case 'k' + (N): case 'l' + (N): case 'm' + (N): case 'n' + (N): \ case 'o' + (N): case 'p' + (N): case 'q' + (N): case 'r' + (N): \ case 's' + (N): case 't' + (N): case 'u' + (N): case 'v' + (N): \ case 'w' + (N): case 'x' + (N): case 'y' + (N): case 'z' + (N) /* Cases for hex letters, digits, lower, punct, and upper. */ #define _C_CTYPE_A_THRU_F \ _C_CTYPE_LOWER_A_THRU_F_N (0): \ _C_CTYPE_LOWER_A_THRU_F_N ('A' - 'a') #define _C_CTYPE_DIGIT \ case '0': case '1': case '2': case '3': \ case '4': case '5': case '6': case '7': \ case '8': case '9' #define _C_CTYPE_LOWER _C_CTYPE_LOWER_N (0) #define _C_CTYPE_PUNCT \ case '!': case '"': case '#': case '$': \ case '%': case '&': case '\'': case '(': \ case ')': case '*': case '+': case ',': \ case '-': case '.': case '/': case ':': \ case ';': case '<': case '=': case '>': \ case '?': case '@': case '[': case '\\': \ case ']': case '^': case '_': case '`': \ case '{': case '|': case '}': case '~' #define _C_CTYPE_UPPER _C_CTYPE_LOWER_N ('A' - 'a') /* Function definitions. */ /* Unlike the functions in , which require an argument in the range of the 'unsigned char' type, the functions here operate on values that are in the 'unsigned char' range or in the 'char' range. In other words, when you have a 'char' value, you need to cast it before using it as argument to a function: const char *s = ...; if (isalpha ((unsigned char) *s)) ... but you don't need to cast it for the functions defined in this file: const char *s = ...; if (c_isalpha (*s)) ... */ C_CTYPE_INLINE bool c_isalnum (int c) { switch (c) { _C_CTYPE_DIGIT: _C_CTYPE_LOWER: _C_CTYPE_UPPER: return true; default: return false; } } C_CTYPE_INLINE bool c_isalpha (int c) { switch (c) { _C_CTYPE_LOWER: _C_CTYPE_UPPER: return true; default: return false; } } /* The function isascii is not locale dependent. Its use in EBCDIC is questionable. */ C_CTYPE_INLINE bool c_isascii (int c) { switch (c) { case ' ': _C_CTYPE_CNTRL: _C_CTYPE_DIGIT: _C_CTYPE_LOWER: _C_CTYPE_PUNCT: _C_CTYPE_UPPER: return true; default: return false; } } C_CTYPE_INLINE bool c_isblank (int c) { return c == ' ' || c == '\t'; } C_CTYPE_INLINE bool c_iscntrl (int c) { switch (c) { _C_CTYPE_CNTRL: return true; default: return false; } } C_CTYPE_INLINE bool c_isdigit (int c) { switch (c) { _C_CTYPE_DIGIT: return true; default: return false; } } C_CTYPE_INLINE bool c_isgraph (int c) { switch (c) { _C_CTYPE_DIGIT: _C_CTYPE_LOWER: _C_CTYPE_PUNCT: _C_CTYPE_UPPER: return true; default: return false; } } C_CTYPE_INLINE bool c_islower (int c) { switch (c) { _C_CTYPE_LOWER: return true; default: return false; } } C_CTYPE_INLINE bool c_isprint (int c) { switch (c) { case ' ': _C_CTYPE_DIGIT: _C_CTYPE_LOWER: _C_CTYPE_PUNCT: _C_CTYPE_UPPER: return true; default: return false; } } C_CTYPE_INLINE bool c_ispunct (int c) { switch (c) { _C_CTYPE_PUNCT: return true; default: return false; } } C_CTYPE_INLINE bool c_isspace (int c) { switch (c) { case ' ': case '\t': case '\n': case '\v': case '\f': case '\r': return true; default: return false; } } C_CTYPE_INLINE bool c_isupper (int c) { switch (c) { _C_CTYPE_UPPER: return true; default: return false; } } C_CTYPE_INLINE bool c_isxdigit (int c) { switch (c) { _C_CTYPE_DIGIT: _C_CTYPE_A_THRU_F: return true; default: return false; } } C_CTYPE_INLINE int c_tolower (int c) { switch (c) { _C_CTYPE_UPPER: return c - 'A' + 'a'; default: return c; } } C_CTYPE_INLINE int c_toupper (int c) { switch (c) { _C_CTYPE_LOWER: return c - 'a' + 'A'; default: return c; } } #ifdef __cplusplus } #endif _GL_INLINE_HEADER_END #endif /* C_CTYPE_H */ recode-3.7.15/lib/pathmax.h0000644000175000017500000000563014371444255011127 /* Define PATH_MAX somehow. Requires sys/types.h. Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _PATHMAX_H # define _PATHMAX_H /* POSIX:2008 defines PATH_MAX to be the maximum number of bytes in a filename, including the terminating NUL byte. PATH_MAX is not defined on systems which have no limit on filename length, such as GNU/Hurd. This file does *not* define PATH_MAX always. Programs that use this file can handle the GNU/Hurd case in several ways: - Either with a package-wide handling, or with a per-file handling, - Either through a #ifdef PATH_MAX or through a fallback like #ifndef PATH_MAX # define PATH_MAX 8192 #endif or through a fallback like #ifndef PATH_MAX # define PATH_MAX pathconf ("/", _PC_PATH_MAX) #endif */ # include # include # ifndef _POSIX_PATH_MAX # define _POSIX_PATH_MAX 256 # endif /* Don't include sys/param.h if it already has been. */ # if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN # include # endif # if !defined PATH_MAX && defined MAXPATHLEN # define PATH_MAX MAXPATHLEN # endif # ifdef __hpux /* On HP-UX, PATH_MAX designates the maximum number of bytes in a filename, *not* including the terminating NUL byte, and is set to 1023. Additionally, when _XOPEN_SOURCE is defined to 500 or more, PATH_MAX is not defined at all any more. */ # undef PATH_MAX # define PATH_MAX 1024 # endif # if defined _WIN32 && ! defined __CYGWIN__ /* The page "Naming Files, Paths, and Namespaces" on msdn.microsoft.com, section "Maximum Path Length Limitation", explains that the maximum size of a filename, including the terminating NUL byte, is 260 = 3 + 256 + 1. This is the same value as - FILENAME_MAX in , - _MAX_PATH in , - MAX_PATH in . Undefine the original value, because mingw's gets it wrong. */ # undef PATH_MAX # define PATH_MAX 260 # endif #endif /* _PATHMAX_H */ recode-3.7.15/lib/fd-hook.h0000644000175000017500000001136414371444255011015 /* Hook for making file descriptor functions close(), ioctl() extensible. Copyright (C) 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef FD_HOOK_H #define FD_HOOK_H #ifdef __cplusplus extern "C" { #endif /* Currently, this entire code is only needed for the handling of sockets on native Windows platforms. */ #if WINDOWS_SOCKETS /* Type of function that closes FD. */ typedef int (*gl_close_fn) (int fd); /* Type of function that applies a control request to FD. */ typedef int (*gl_ioctl_fn) (int fd, int request, void *arg); /* An element of the list of file descriptor hooks. In CLOS (Common Lisp Object System) speak, it consists of an "around" method for the close() function and an "around" method for the ioctl() function. The fields of this structure are considered private. */ struct fd_hook { /* Doubly linked list. */ struct fd_hook *private_next; struct fd_hook *private_prev; /* Function that treats the types of FD that it knows about and calls execute_close_hooks (REMAINING_LIST, PRIMARY, FD) as a fallback. */ int (*private_close_fn) (const struct fd_hook *remaining_list, gl_close_fn primary, int fd); /* Function that treats the types of FD that it knows about and calls execute_ioctl_hooks (REMAINING_LIST, PRIMARY, FD, REQUEST, ARG) as a fallback. */ int (*private_ioctl_fn) (const struct fd_hook *remaining_list, gl_ioctl_fn primary, int fd, int request, void *arg); }; /* This type of function closes FD, applying special knowledge for the FD types it knows about, and calls execute_close_hooks (REMAINING_LIST, PRIMARY, FD) for the other FD types. In CLOS speak, REMAINING_LIST is the remaining list of "around" methods, and PRIMARY is the "primary" method for close(). */ typedef int (*close_hook_fn) (const struct fd_hook *remaining_list, gl_close_fn primary, int fd); /* Execute the close hooks in REMAINING_LIST, with PRIMARY as "primary" method. Return 0 or -1, like close() would do. */ extern int execute_close_hooks (const struct fd_hook *remaining_list, gl_close_fn primary, int fd); /* Execute all close hooks, with PRIMARY as "primary" method. Return 0 or -1, like close() would do. */ extern int execute_all_close_hooks (gl_close_fn primary, int fd); /* This type of function applies a control request to FD, applying special knowledge for the FD types it knows about, and calls execute_ioctl_hooks (REMAINING_LIST, PRIMARY, FD, REQUEST, ARG) for the other FD types. In CLOS speak, REMAINING_LIST is the remaining list of "around" methods, and PRIMARY is the "primary" method for ioctl(). */ typedef int (*ioctl_hook_fn) (const struct fd_hook *remaining_list, gl_ioctl_fn primary, int fd, int request, void *arg); /* Execute the ioctl hooks in REMAINING_LIST, with PRIMARY as "primary" method. Return 0 or -1, like ioctl() would do. */ extern int execute_ioctl_hooks (const struct fd_hook *remaining_list, gl_ioctl_fn primary, int fd, int request, void *arg); /* Execute all ioctl hooks, with PRIMARY as "primary" method. Return 0 or -1, like ioctl() would do. */ extern int execute_all_ioctl_hooks (gl_ioctl_fn primary, int fd, int request, void *arg); /* Add a function pair to the list of file descriptor hooks. CLOSE_HOOK and IOCTL_HOOK may be NULL, indicating no change. The LINK variable points to a piece of memory which is guaranteed to be accessible until the corresponding call to unregister_fd_hook. */ extern void register_fd_hook (close_hook_fn close_hook, ioctl_hook_fn ioctl_hook, struct fd_hook *link); /* Removes a hook from the list of file descriptor hooks. */ extern void unregister_fd_hook (struct fd_hook *link); #endif #ifdef __cplusplus } #endif #endif /* FD_HOOK_H */ recode-3.7.15/lib/c-strcasecmp.c0000644000175000017500000000306614371444255012045 /* c-strcasecmp.c -- case insensitive string comparator in C locale Copyright (C) 1998-1999, 2005-2006, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include /* Specification. */ #include "c-strcase.h" #include #include "c-ctype.h" int c_strcasecmp (const char *s1, const char *s2) { register const unsigned char *p1 = (const unsigned char *) s1; register const unsigned char *p2 = (const unsigned char *) s2; unsigned char c1, c2; if (p1 == p2) return 0; do { c1 = c_tolower (*p1); c2 = c_tolower (*p2); if (c1 == '\0') break; ++p1; ++p2; } while (c1 == c2); if (UCHAR_MAX <= INT_MAX) return c1 - c2; else /* On machines where 'char' and 'int' are types of the same size, the difference of two 'unsigned char' values - including the sign bit - doesn't fit in an 'int'. */ return _GL_CMP (c1, c2); } recode-3.7.15/lib/stdio-write.c0000644000175000017500000001670614371444255011740 /* POSIX compatible FILE stream write function. Copyright (C) 2008-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2008. This file 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. This file 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 . */ #include /* Specification. */ #include /* Replace these functions only if module 'nonblocking' or module 'sigpipe' is requested. */ #if GNULIB_NONBLOCKING || GNULIB_SIGPIPE /* On native Windows platforms, SIGPIPE does not exist. When write() is called on a pipe with no readers, WriteFile() fails with error GetLastError() = ERROR_NO_DATA, and write() in consequence fails with error EINVAL. This write() function is at the basis of the function which flushes the buffer of a FILE stream. */ # if defined _WIN32 && ! defined __CYGWIN__ # include # include # include # define WIN32_LEAN_AND_MEAN /* avoid including junk */ # include # if GNULIB_MSVC_NOTHROW # include "msvc-nothrow.h" # else # include # endif /* Don't assume that UNICODE is not defined. */ # undef GetNamedPipeHandleState # define GetNamedPipeHandleState GetNamedPipeHandleStateA # if GNULIB_NONBLOCKING # define CLEAR_ERRNO \ errno = 0; # define HANDLE_ENOSPC \ if (errno == ENOSPC && ferror (stream)) \ { \ int fd = fileno (stream); \ if (fd >= 0) \ { \ HANDLE h = (HANDLE) _get_osfhandle (fd); \ if (GetFileType (h) == FILE_TYPE_PIPE) \ { \ /* h is a pipe or socket. */ \ DWORD state; \ if (GetNamedPipeHandleState (h, &state, NULL, NULL, \ NULL, NULL, 0) \ && (state & PIPE_NOWAIT) != 0) \ /* h is a pipe in non-blocking mode. \ Change errno from ENOSPC to EAGAIN. */ \ errno = EAGAIN; \ } \ } \ } \ else # else # define CLEAR_ERRNO # define HANDLE_ENOSPC # endif # if GNULIB_SIGPIPE # define CLEAR_LastError \ SetLastError (0); # define HANDLE_ERROR_NO_DATA \ if (GetLastError () == ERROR_NO_DATA && ferror (stream)) \ { \ int fd = fileno (stream); \ if (fd >= 0 \ && GetFileType ((HANDLE) _get_osfhandle (fd)) \ == FILE_TYPE_PIPE) \ { \ /* Try to raise signal SIGPIPE. */ \ raise (SIGPIPE); \ /* If it is currently blocked or ignored, change errno from \ EINVAL to EPIPE. */ \ errno = EPIPE; \ } \ } \ else # else # define CLEAR_LastError # define HANDLE_ERROR_NO_DATA # endif # define CALL_WITH_SIGPIPE_EMULATION(RETTYPE, EXPRESSION, FAILED) \ if (ferror (stream)) \ return (EXPRESSION); \ else \ { \ RETTYPE ret; \ CLEAR_ERRNO \ CLEAR_LastError \ ret = (EXPRESSION); \ if (FAILED) \ { \ HANDLE_ENOSPC \ HANDLE_ERROR_NO_DATA \ ; \ } \ return ret; \ } # if !REPLACE_PRINTF_POSIX /* avoid collision with printf.c */ int printf (const char *format, ...) { int retval; va_list args; va_start (args, format); retval = vfprintf (stdout, format, args); va_end (args); return retval; } # endif # if !REPLACE_FPRINTF_POSIX /* avoid collision with fprintf.c */ int fprintf (FILE *stream, const char *format, ...) { int retval; va_list args; va_start (args, format); retval = vfprintf (stream, format, args); va_end (args); return retval; } # endif # if !REPLACE_VPRINTF_POSIX /* avoid collision with vprintf.c */ int vprintf (const char *format, va_list args) { return vfprintf (stdout, format, args); } # endif # if !REPLACE_VFPRINTF_POSIX /* avoid collision with vfprintf.c */ int vfprintf (FILE *stream, const char *format, va_list args) #undef vfprintf { CALL_WITH_SIGPIPE_EMULATION (int, vfprintf (stream, format, args), ret == EOF) } # endif int putchar (int c) { return fputc (c, stdout); } int fputc (int c, FILE *stream) #undef fputc { CALL_WITH_SIGPIPE_EMULATION (int, fputc (c, stream), ret == EOF) } int fputs (const char *string, FILE *stream) #undef fputs { CALL_WITH_SIGPIPE_EMULATION (int, fputs (string, stream), ret == EOF) } int puts (const char *string) #undef puts { FILE *stream = stdout; CALL_WITH_SIGPIPE_EMULATION (int, puts (string), ret == EOF) } size_t fwrite (const void *ptr, size_t s, size_t n, FILE *stream) #undef fwrite { CALL_WITH_SIGPIPE_EMULATION (size_t, fwrite (ptr, s, n, stream), ret < n) } # endif #endif recode-3.7.15/lib/_Noreturn.h0000644000175000017500000000456014371444255011441 /* A C macro for declaring that a function does not return. Copyright (C) 2011-2023 Free Software Foundation, Inc. This program 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 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 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 . */ #ifndef _Noreturn # if (defined __cplusplus \ && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ || (defined _MSC_VER && 1900 <= _MSC_VER)) \ && 0) /* [[noreturn]] is not practically usable, because with it the syntax extern _Noreturn void func (...); would not be valid; such a declaration would only be valid with 'extern' and '_Noreturn' swapped, or without the 'extern' keyword. However, some AIX system header files and several gnulib header files use precisely this syntax with 'extern'. */ # define _Noreturn [[noreturn]] # elif (defined __clang__ && __clang_major__ < 16 \ && defined _GL_WORK_AROUND_LLVM_BUG_59792) /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around that rare LLVM bug, though you may get many false-alarm warnings. */ # define _Noreturn # elif ((!defined __cplusplus || defined __clang__) \ && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ || (!defined __STRICT_ANSI__ \ && (4 < __GNUC__ + (7 <= __GNUC_MINOR__) \ || (defined __apple_build_version__ \ ? 6000000 <= __apple_build_version__ \ : 3 < __clang_major__ + (5 <= __clang_minor__)))))) /* _Noreturn works as-is. */ # elif (2 < __GNUC__ + (8 <= __GNUC_MINOR__) || defined __clang__ \ || 0x5110 <= __SUNPRO_C) # define _Noreturn __attribute__ ((__noreturn__)) # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) # define _Noreturn __declspec (noreturn) # else # define _Noreturn # endif #endif recode-3.7.15/lib/windows-initguard.h0000644000175000017500000000231614371444255013141 /* Init guards, somewhat like spinlocks (native Windows implementation). Copyright (C) 2005-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2005. Based on GCC's gthr-win32.h. */ #ifndef _WINDOWS_INITGUARD_H #define _WINDOWS_INITGUARD_H #define WIN32_LEAN_AND_MEAN /* avoid including junk */ #include typedef struct { volatile int done; volatile LONG started; } glwthread_initguard_t; #define GLWTHREAD_INITGUARD_INIT { 0, -1 } #endif /* _WINDOWS_INITGUARD_H */ recode-3.7.15/lib/strerror-override.h0000644000175000017500000000405014371444255013157 /* strerror-override.h --- POSIX compatible system error routine Copyright (C) 2010-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _GL_STRERROR_OVERRIDE_H # define _GL_STRERROR_OVERRIDE_H # include # include /* Reasonable buffer size that should never trigger ERANGE; if this proves too small, we intentionally abort(), to remind us to fix this value. */ # define STACKBUF_LEN 256 /* If ERRNUM maps to an errno value defined by gnulib, return a string describing the error. Otherwise return NULL. */ # if REPLACE_STRERROR_0 \ || GNULIB_defined_ESOCK \ || GNULIB_defined_ESTREAMS \ || GNULIB_defined_EWINSOCK \ || GNULIB_defined_ENOMSG \ || GNULIB_defined_EIDRM \ || GNULIB_defined_ENOLINK \ || GNULIB_defined_EPROTO \ || GNULIB_defined_EMULTIHOP \ || GNULIB_defined_EBADMSG \ || GNULIB_defined_EOVERFLOW \ || GNULIB_defined_ENOTSUP \ || GNULIB_defined_ENETRESET \ || GNULIB_defined_ECONNABORTED \ || GNULIB_defined_ESTALE \ || GNULIB_defined_EDQUOT \ || GNULIB_defined_ECANCELED \ || GNULIB_defined_EOWNERDEAD \ || GNULIB_defined_ENOTRECOVERABLE \ || GNULIB_defined_EILSEQ extern const char *strerror_override (int errnum) _GL_ATTRIBUTE_CONST; # else # define strerror_override(ignored) NULL # define GNULIB_defined_strerror_override_macro 1 # endif #endif /* _GL_STRERROR_OVERRIDE_H */ recode-3.7.15/lib/getopt.in.h0000644000175000017500000000412114371444255011366 /* Declarations for getopt. Copyright (C) 1989-2023 Free Software Foundation, Inc. This file is part of gnulib. Unlike most of the getopt implementation, it is NOT shared with the GNU C Library, which supplies a different version of this file. This file 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. This file 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 . */ #ifndef _@GUARD_PREFIX@_GETOPT_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. We must also inform the replacement unistd.h to not recursively use ; our definitions will be present soon enough. */ #if @HAVE_GETOPT_H@ # define _GL_SYSTEM_GETOPT # @INCLUDE_NEXT@ @NEXT_GETOPT_H@ # undef _GL_SYSTEM_GETOPT #endif #define _@GUARD_PREFIX@_GETOPT_H 1 /* Standalone applications should #define __GETOPT_PREFIX to an identifier that prefixes the external functions and variables defined in getopt-core.h and getopt-ext.h. When this happens, include the headers that might declare getopt so that they will not cause confusion if included after this file (if the system had , we have already included it). */ #if defined __GETOPT_PREFIX # if !@HAVE_GETOPT_H@ # define __need_system_stdlib_h # include # undef __need_system_stdlib_h # include # include # endif #endif /* The definition of _GL_ARG_NONNULL is copied here. */ #include #include #include #endif /* _@GUARD_PREFIX@_GETOPT_H */ recode-3.7.15/lib/vfprintf.c0000644000175000017500000000317214371444255011315 /* Formatted output to a stream. Copyright (C) 2004, 2006-2023 Free Software Foundation, Inc. This file 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 3 of the License, or (at your option) any later version. This file 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 . */ #ifdef HAVE_CONFIG_H # include #endif /* Specification. */ #include #include #include #include #include #include "fseterr.h" #include "vasnprintf.h" /* Print formatted output to the stream FP. Return string length of formatted string. On error, return a negative value. */ int vfprintf (FILE *fp, const char *format, va_list args) { char buf[2000]; char *output; size_t len; size_t lenbuf = sizeof (buf); output = vasnprintf (buf, &lenbuf, format, args); len = lenbuf; if (!output) { fseterr (fp); return -1; } if (fwrite (output, 1, len, fp) < len) { if (output != buf) free (output); return -1; } if (output != buf) free (output); if (len > INT_MAX) { errno = EOVERFLOW; fseterr (fp); return -1; } return len; } recode-3.7.15/lib/msvc-nothrow.h0000644000175000017500000000302314371444255012125 /* Wrappers that don't throw invalid parameter notifications with MSVC runtime libraries. Copyright (C) 2011-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #ifndef _MSVC_NOTHROW_H #define _MSVC_NOTHROW_H /* With MSVC runtime libraries with the "invalid parameter handler" concept, functions like fprintf(), dup2(), or close() crash when the caller passes an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF) instead. This file defines wrappers that turn such an invalid parameter notification into an error code. */ #if defined _WIN32 && ! defined __CYGWIN__ /* Get original declaration of _get_osfhandle. */ # include # if HAVE_MSVC_INVALID_PARAMETER_HANDLER /* Override _get_osfhandle. */ extern intptr_t _gl_nothrow_get_osfhandle (int fd); # define _get_osfhandle _gl_nothrow_get_osfhandle # endif #endif #endif /* _MSVC_NOTHROW_H */ recode-3.7.15/lib/ialloc.c0000644000175000017500000000151214371444255010716 /* malloc with idx_t rather than size_t Copyright 2021-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ #include #define IALLOC_INLINE _GL_EXTERN_INLINE #include "ialloc.h" recode-3.7.15/lib/isnand.c0000644000175000017500000000151114371444255010726 /* Test for NaN that does not need libm. Copyright (C) 2008-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible , 2008. */ #include "isnan.c" recode-3.7.15/lib/rawmemchr.valgrind0000644000175000017500000000171414371444255013030 # Suppress a valgrind message about use of uninitialized memory in rawmemchr(). # Copyright (C) 2008-2023 Free Software Foundation, Inc. # # This file 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. # # This file 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 . # This use is OK because it provides only a speedup. { rawmemchr-value4 Memcheck:Value4 fun:rawmemchr } { rawmemchr-value8 Memcheck:Value8 fun:rawmemchr } recode-3.7.15/lib/mkdir.c0000644000175000017500000000523714371444255010571 /* On some systems, mkdir ("foo/", 0700) fails because of the trailing slash. On those systems, this wrapper removes the trailing slash. Copyright (C) 2001, 2003, 2006, 2008-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* written by Jim Meyering */ #include /* Specification. */ #include #include #include #include #include #include "dirname.h" /* Disable the definition of mkdir to rpl_mkdir (from the substitute) in this file. Otherwise, we'd get an endless recursion. */ #undef mkdir /* mingw's _mkdir() function has 1 argument, but we pass 2 arguments. Additionally, it declares _mkdir (and depending on compile flags, an alias mkdir), only in the nonstandard includes and , which are included in the override. */ #if defined _WIN32 && ! defined __CYGWIN__ # define mkdir(name,mode) _mkdir (name) # define maybe_unused _GL_UNUSED #else # define maybe_unused /* empty */ #endif /* This function is required at least for NetBSD 1.5.2. */ int rpl_mkdir (char const *dir, maybe_unused mode_t mode) { int ret_val; char *tmp_dir; size_t len = strlen (dir); if (len && dir[len - 1] == '/') { tmp_dir = strdup (dir); if (!tmp_dir) { /* Rather than rely on strdup-posix, we set errno ourselves. */ errno = ENOMEM; return -1; } strip_trailing_slashes (tmp_dir); } else { tmp_dir = (char *) dir; } #if FUNC_MKDIR_DOT_BUG /* Additionally, cygwin 1.5 mistakenly creates a directory "d/./". */ { char *last = last_component (tmp_dir); if (*last == '.' && (last[1] == '\0' || (last[1] == '.' && last[2] == '\0'))) { struct stat st; if (stat (tmp_dir, &st) == 0 || errno == EOVERFLOW) errno = EEXIST; return -1; } } #endif /* FUNC_MKDIR_DOT_BUG */ ret_val = mkdir (tmp_dir, mode); if (tmp_dir != dir) free (tmp_dir); return ret_val; } recode-3.7.15/lib/stdio-impl.h0000644000175000017500000002010514371444255011540 /* Implementation details of FILE streams. Copyright (C) 2007-2008, 2010-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Many stdio implementations have the same logic and therefore can share the same implementation of stdio extension API, except that some fields have different naming conventions, or their access requires some casts. */ /* Glibc 2.28 made _IO_UNBUFFERED and _IO_IN_BACKUP private. For now, work around this problem by defining them ourselves. FIXME: Do not rely on glibc internals. */ #if defined _IO_EOF_SEEN # if !defined _IO_UNBUFFERED # define _IO_UNBUFFERED 0x2 # endif # if !defined _IO_IN_BACKUP # define _IO_IN_BACKUP 0x100 # endif #endif /* BSD stdio derived implementations. */ #if defined __NetBSD__ /* NetBSD */ /* Get __NetBSD_Version__. */ # include #endif #include /* For detecting Plan9. */ #if defined __sferror || defined __DragonFly__ || defined __ANDROID__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ # if defined __DragonFly__ /* DragonFly */ /* See . */ # define fp_ ((struct { struct __FILE_public pub; \ struct { unsigned char *_base; int _size; } _bf; \ void *cookie; \ void *_close; \ void *_read; \ void *_seek; \ void *_write; \ struct { unsigned char *_base; int _size; } _ub; \ int _ur; \ unsigned char _ubuf[3]; \ unsigned char _nbuf[1]; \ struct { unsigned char *_base; int _size; } _lb; \ int _blksize; \ fpos_t _offset; \ /* More fields, not relevant here. */ \ } *) fp) /* See . */ # define _p pub._p # define _flags pub._flags # define _r pub._r # define _w pub._w # elif defined __ANDROID__ /* Android */ # ifdef __LP64__ # define _gl_flags_file_t int # else # define _gl_flags_file_t short # endif # ifdef __LP64__ # define _gl_file_offset_t int64_t # else /* see https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md */ # define _gl_file_offset_t __kernel_off_t # endif /* Up to this commit from 2015-10-12 the innards of FILE were public, and fp_ub could be defined like for OpenBSD, see and . After this commit, the innards of FILE are hidden. */ # define fp_ ((struct { unsigned char *_p; \ int _r; \ int _w; \ _gl_flags_file_t _flags; \ _gl_flags_file_t _file; \ struct { unsigned char *_base; size_t _size; } _bf; \ int _lbfsize; \ void *_cookie; \ void *_close; \ void *_read; \ void *_seek; \ void *_write; \ struct { unsigned char *_base; size_t _size; } _ext; \ unsigned char *_up; \ int _ur; \ unsigned char _ubuf[3]; \ unsigned char _nbuf[1]; \ struct { unsigned char *_base; size_t _size; } _lb; \ int _blksize; \ _gl_file_offset_t _offset; \ /* More fields, not relevant here. */ \ } *) fp) # else # define fp_ fp # endif # if (defined __NetBSD__ && __NetBSD_Version__ >= 105270000) || defined __OpenBSD__ || defined __minix /* NetBSD >= 1.5ZA, OpenBSD, Minix 3 */ /* See and and */ struct __sfileext { struct __sbuf _ub; /* ungetc buffer */ /* More fields, not relevant here. */ }; # define fp_ub ((struct __sfileext *) fp->_ext._base)->_ub # elif defined __ANDROID__ /* Android */ struct __sfileext { struct { unsigned char *_base; size_t _size; } _ub; /* ungetc buffer */ /* More fields, not relevant here. */ }; # define fp_ub ((struct __sfileext *) fp_->_ext._base)->_ub # else /* FreeBSD, NetBSD <= 1.5Z, DragonFly, Mac OS X, Cygwin */ # define fp_ub fp_->_ub # endif # define HASUB(fp) (fp_ub._base != NULL) # if defined __ANDROID__ /* Android */ /* Needed after this commit from 2016-01-25 */ # ifndef __SEOF # define __SLBF 1 # define __SNBF 2 # define __SRD 4 # define __SWR 8 # define __SRW 0x10 # define __SEOF 0x20 # define __SERR 0x40 # endif # ifndef __SOFF # define __SOFF 0x1000 # endif # endif #endif /* SystemV derived implementations. */ #ifdef __TANDEM /* NonStop Kernel */ # ifndef _IOERR /* These values were determined by the program 'stdioext-flags' at . */ # define _IOERR 0x40 # define _IOREAD 0x80 # define _IOWRT 0x4 # define _IORW 0x100 # endif #endif #if defined _IOERR # if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */ # define fp_ ((struct { unsigned char *_ptr; \ unsigned char *_base; \ unsigned char *_end; \ long _cnt; \ int _file; \ unsigned int _flag; \ } *) fp) # elif defined __VMS /* OpenVMS */ # define fp_ ((struct _iobuf *) fp) # else # define fp_ fp # endif # if defined _SCO_DS || (defined __SCO_VERSION__ || defined __sysv5__) /* OpenServer 5, OpenServer 6, UnixWare 7 */ # define _cnt __cnt # define _ptr __ptr # define _base __base # define _flag __flag # endif #elif defined _WIN32 && ! defined __CYGWIN__ /* newer Windows with MSVC */ /* does not define the innards of FILE any more. */ # define WINDOWS_OPAQUE_FILE struct _gl_real_FILE { /* Note: Compared to older Windows and to mingw, it has the fields _base and _cnt swapped. */ unsigned char *_ptr; unsigned char *_base; int _cnt; int _flag; int _file; int _charbuf; int _bufsiz; }; # define fp_ ((struct _gl_real_FILE *) fp) /* These values were determined by a program similar to the one at . */ # define _IOREAD 0x1 # define _IOWRT 0x2 # define _IORW 0x4 # define _IOEOF 0x8 # define _IOERR 0x10 #endif recode-3.7.15/lib/malloca.h0000644000175000017500000001077314371444255011101 /* Safe automatic memory allocation. Copyright (C) 2003-2007, 2009-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2003. This file 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. This file 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 . */ #ifndef _MALLOCA_H #define _MALLOCA_H #include #include #include #include #include "xalloc-oversized.h" #ifdef __cplusplus extern "C" { #endif /* safe_alloca(N) is equivalent to alloca(N) when it is safe to call alloca(N); otherwise it returns NULL. It either returns N bytes of memory allocated on the stack, that lasts until the function returns, or NULL. Use of safe_alloca should be avoided: - inside arguments of function calls - undefined behaviour, - in inline functions - the allocation may actually last until the calling function returns. */ #if HAVE_ALLOCA /* The OS usually guarantees only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely allocate anything larger than 4096 bytes. Also care for the possibility of a few compiler-allocated temporary stack slots. This must be a macro, not a function. */ # define safe_alloca(N) ((N) < 4032 ? alloca (N) : NULL) #else # define safe_alloca(N) ((void) (N), NULL) #endif /* Free a block of memory allocated through malloca(). */ #if HAVE_ALLOCA extern void freea (void *p); #else # define freea free #endif /* malloca(N) is a safe variant of alloca(N). It allocates N bytes of memory allocated on the stack, that must be freed using freea() before the function returns. Upon failure, it returns NULL. */ #if HAVE_ALLOCA # define malloca(N) \ ((N) < 4032 - (2 * sa_alignment_max - 1) \ ? (void *) (((uintptr_t) (char *) alloca ((N) + 2 * sa_alignment_max - 1) \ + (2 * sa_alignment_max - 1)) \ & ~(uintptr_t)(2 * sa_alignment_max - 1)) \ : mmalloca (N)) #else # define malloca(N) \ mmalloca (N) #endif extern void *mmalloca (size_t n) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC (freea, 1) _GL_ATTRIBUTE_ALLOC_SIZE ((1)); /* nmalloca(N,S) is an overflow-safe variant of malloca (N * S). It allocates an array of N objects, each with S bytes of memory, on the stack. N and S should be nonnegative and free of side effects. The array must be freed using freea() before the function returns. */ #define nmalloca(n, s) \ (xalloc_oversized (n, s) ? NULL : malloca ((n) * (size_t) (s))) #ifdef __cplusplus } #endif /* ------------------- Auxiliary, non-public definitions ------------------- */ /* Determine the alignment of a type at compile time. */ #if defined __GNUC__ || defined __clang__ || defined __IBM__ALIGNOF__ # define sa_alignof __alignof__ #elif defined __cplusplus template struct sa_alignof_helper { char __slot1; type __slot2; }; # define sa_alignof(type) offsetof (sa_alignof_helper, __slot2) #elif defined __hpux /* Work around a HP-UX 10.20 cc bug with enums constants defined as offsetof values. */ # define sa_alignof(type) (sizeof (type) <= 4 ? 4 : 8) #elif defined _AIX /* Work around an AIX 3.2.5 xlc bug with enums constants defined as offsetof values. */ # define sa_alignof(type) (sizeof (type) <= 4 ? 4 : 8) #else # define sa_alignof(type) offsetof (struct { char __slot1; type __slot2; }, __slot2) #endif enum { /* The desired alignment of memory allocations is the maximum alignment among all elementary types. */ sa_alignment_long = sa_alignof (long), sa_alignment_double = sa_alignof (double), sa_alignment_longlong = sa_alignof (long long), sa_alignment_longdouble = sa_alignof (long double), sa_alignment_max = ((sa_alignment_long - 1) | (sa_alignment_double - 1) | (sa_alignment_longlong - 1) | (sa_alignment_longdouble - 1) ) + 1 }; #endif /* _MALLOCA_H */ recode-3.7.15/lib/quotearg.c0000644000175000017500000010452614371444255011313 /* quotearg.c - quote arguments for output Copyright (C) 1998-2002, 2004-2023 Free Software Foundation, Inc. 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 3 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, see . */ /* Written by Paul Eggert */ /* Without this pragma, gcc 4.7.0 20111124 mistakenly suggests that the quoting_options_from_style function might be candidate for attribute 'pure' */ #if (__GNUC__ == 4 && 6 <= __GNUC_MINOR__) || 4 < __GNUC__ # pragma GCC diagnostic ignored "-Wsuggest-attribute=pure" #endif #include #include "quotearg.h" #include "quote.h" #include "attribute.h" #include "minmax.h" #include "xalloc.h" #include "c-strcaseeq.h" #include "localcharset.h" #include #include #include #include #include #include #include #include #include "gettext.h" #define _(msgid) gettext (msgid) #define N_(msgid) msgid #ifndef SIZE_MAX # define SIZE_MAX ((size_t) -1) #endif #define INT_BITS (sizeof (int) * CHAR_BIT) struct quoting_options { /* Basic quoting style. */ enum quoting_style style; /* Additional flags. Bitwise combination of enum quoting_flags. */ int flags; /* Quote the characters indicated by this bit vector even if the quoting style would not normally require them to be quoted. */ unsigned int quote_these_too[(UCHAR_MAX / INT_BITS) + 1]; /* The left quote for custom_quoting_style. */ char const *left_quote; /* The right quote for custom_quoting_style. */ char const *right_quote; }; /* Names of quoting styles. */ char const *const quoting_style_args[] = { "literal", "shell", "shell-always", "shell-escape", "shell-escape-always", "c", "c-maybe", "escape", "locale", "clocale", 0 }; /* Correspondences to quoting style names. */ enum quoting_style const quoting_style_vals[] = { literal_quoting_style, shell_quoting_style, shell_always_quoting_style, shell_escape_quoting_style, shell_escape_always_quoting_style, c_quoting_style, c_maybe_quoting_style, escape_quoting_style, locale_quoting_style, clocale_quoting_style }; /* The default quoting options. */ static struct quoting_options default_quoting_options; /* Allocate a new set of quoting options, with contents initially identical to O if O is not null, or to the default if O is null. It is the caller's responsibility to free the result. */ struct quoting_options * clone_quoting_options (struct quoting_options *o) { int e = errno; struct quoting_options *p = xmemdup (o ? o : &default_quoting_options, sizeof *o); errno = e; return p; } /* Get the value of O's quoting style. If O is null, use the default. */ enum quoting_style get_quoting_style (struct quoting_options const *o) { return (o ? o : &default_quoting_options)->style; } /* In O (or in the default if O is null), set the value of the quoting style to S. */ void set_quoting_style (struct quoting_options *o, enum quoting_style s) { (o ? o : &default_quoting_options)->style = s; } /* In O (or in the default if O is null), set the value of the quoting options for character C to I. Return the old value. Currently, the only values defined for I are 0 (the default) and 1 (which means to quote the character even if it would not otherwise be quoted). */ int set_char_quoting (struct quoting_options *o, char c, int i) { unsigned char uc = c; unsigned int *p = (o ? o : &default_quoting_options)->quote_these_too + uc / INT_BITS; int shift = uc % INT_BITS; int r = (*p >> shift) & 1; *p ^= ((i & 1) ^ r) << shift; return r; } /* In O (or in the default if O is null), set the value of the quoting options flag to I, which can be a bitwise combination of enum quoting_flags, or 0 for default behavior. Return the old value. */ int set_quoting_flags (struct quoting_options *o, int i) { int r; if (!o) o = &default_quoting_options; r = o->flags; o->flags = i; return r; } void set_custom_quoting (struct quoting_options *o, char const *left_quote, char const *right_quote) { if (!o) o = &default_quoting_options; o->style = custom_quoting_style; if (!left_quote || !right_quote) abort (); o->left_quote = left_quote; o->right_quote = right_quote; } /* Return quoting options for STYLE, with no extra quoting. */ static struct quoting_options /* NOT PURE!! */ quoting_options_from_style (enum quoting_style style) { struct quoting_options o = { literal_quoting_style, 0, { 0 }, NULL, NULL }; if (style == custom_quoting_style) abort (); o.style = style; return o; } /* MSGID approximates a quotation mark. Return its translation if it has one; otherwise, return either it or "\"", depending on S. S is either clocale_quoting_style or locale_quoting_style. */ static char const * gettext_quote (char const *msgid, enum quoting_style s) { char const *translation = _(msgid); char const *locale_code; if (translation != msgid) return translation; /* For UTF-8 and GB-18030, use single quotes U+2018 and U+2019. Here is a list of other locales that include U+2018 and U+2019: ISO-8859-7 0xA1 KOI8-T 0x91 CP869 0x8B CP874 0x91 CP932 0x81 0x65 CP936 0xA1 0xAE CP949 0xA1 0xAE CP950 0xA1 0xA5 CP1250 0x91 CP1251 0x91 CP1252 0x91 CP1253 0x91 CP1254 0x91 CP1255 0x91 CP1256 0x91 CP1257 0x91 EUC-JP 0xA1 0xC6 EUC-KR 0xA1 0xAE EUC-TW 0xA1 0xE4 BIG5 0xA1 0xA5 BIG5-HKSCS 0xA1 0xA5 EUC-CN 0xA1 0xAE GBK 0xA1 0xAE Georgian-PS 0x91 PT154 0x91 None of these is still in wide use; using iconv is overkill. */ locale_code = locale_charset (); if (STRCASEEQ (locale_code, "UTF-8", 'U','T','F','-','8',0,0,0,0)) return msgid[0] == '`' ? "\xe2\x80\x98": "\xe2\x80\x99"; if (STRCASEEQ (locale_code, "GB18030", 'G','B','1','8','0','3','0',0,0)) return msgid[0] == '`' ? "\xa1\ae": "\xa1\xaf"; return (s == clocale_quoting_style ? "\"" : "'"); } /* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of argument ARG (of size ARGSIZE), using QUOTING_STYLE, FLAGS, and QUOTE_THESE_TOO to control quoting. Terminate the output with a null character, and return the written size of the output, not counting the terminating null. If BUFFERSIZE is too small to store the output string, return the value that would have been returned had BUFFERSIZE been large enough. If ARGSIZE is SIZE_MAX, use the string length of the argument for ARGSIZE. This function acts like quotearg_buffer (BUFFER, BUFFERSIZE, ARG, ARGSIZE, O), except it breaks O into its component pieces and is not careful about errno. */ static size_t quotearg_buffer_restyled (char *buffer, size_t buffersize, char const *arg, size_t argsize, enum quoting_style quoting_style, int flags, unsigned int const *quote_these_too, char const *left_quote, char const *right_quote) { size_t i; size_t len = 0; size_t orig_buffersize = 0; char const *quote_string = 0; size_t quote_string_len = 0; bool backslash_escapes = false; bool unibyte_locale = MB_CUR_MAX == 1; bool elide_outer_quotes = (flags & QA_ELIDE_OUTER_QUOTES) != 0; bool pending_shell_escape_end = false; bool encountered_single_quote = false; bool all_c_and_shell_quote_compat = true; #define STORE(c) \ do \ { \ if (len < buffersize) \ buffer[len] = (c); \ len++; \ } \ while (0) #define START_ESC() \ do \ { \ if (elide_outer_quotes) \ goto force_outer_quoting_style; \ escaping = true; \ if (quoting_style == shell_always_quoting_style \ && ! pending_shell_escape_end) \ { \ STORE ('\''); \ STORE ('$'); \ STORE ('\''); \ pending_shell_escape_end = true; \ } \ STORE ('\\'); \ } \ while (0) #define END_ESC() \ do \ { \ if (pending_shell_escape_end && ! escaping) \ { \ STORE ('\''); \ STORE ('\''); \ pending_shell_escape_end = false; \ } \ } \ while (0) process_input: switch (quoting_style) { case c_maybe_quoting_style: quoting_style = c_quoting_style; elide_outer_quotes = true; FALLTHROUGH; case c_quoting_style: if (!elide_outer_quotes) STORE ('"'); backslash_escapes = true; quote_string = "\""; quote_string_len = 1; break; case escape_quoting_style: backslash_escapes = true; elide_outer_quotes = false; break; case locale_quoting_style: case clocale_quoting_style: case custom_quoting_style: { if (quoting_style != custom_quoting_style) { /* TRANSLATORS: Get translations for open and closing quotation marks. The message catalog should translate "`" to a left quotation mark suitable for the locale, and similarly for "'". For example, a French Unicode local should translate these to U+00AB (LEFT-POINTING DOUBLE ANGLE QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK), respectively. If the catalog has no translation, we will try to use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and Unicode U+2019 (RIGHT SINGLE QUOTATION MARK). If the current locale is not Unicode, locale_quoting_style will quote 'like this', and clocale_quoting_style will quote "like this". You should always include translations for "`" and "'" even if U+2018 and U+2019 are appropriate for your locale. If you don't know what to put here, please see and use glyphs suitable for your language. */ left_quote = gettext_quote (N_("`"), quoting_style); right_quote = gettext_quote (N_("'"), quoting_style); } if (!elide_outer_quotes) for (quote_string = left_quote; *quote_string; quote_string++) STORE (*quote_string); backslash_escapes = true; quote_string = right_quote; quote_string_len = strlen (quote_string); } break; case shell_escape_quoting_style: backslash_escapes = true; FALLTHROUGH; case shell_quoting_style: elide_outer_quotes = true; FALLTHROUGH; case shell_escape_always_quoting_style: if (!elide_outer_quotes) backslash_escapes = true; FALLTHROUGH; case shell_always_quoting_style: quoting_style = shell_always_quoting_style; if (!elide_outer_quotes) STORE ('\''); quote_string = "'"; quote_string_len = 1; break; case literal_quoting_style: elide_outer_quotes = false; break; default: abort (); } for (i = 0; ! (argsize == SIZE_MAX ? arg[i] == '\0' : i == argsize); i++) { unsigned char c; unsigned char esc; bool is_right_quote = false; bool escaping = false; bool c_and_shell_quote_compat = false; if (backslash_escapes && quoting_style != shell_always_quoting_style && quote_string_len && (i + quote_string_len <= (argsize == SIZE_MAX && 1 < quote_string_len /* Use strlen only if we must: when argsize is SIZE_MAX, and when the quote string is more than 1 byte long. If we do call strlen, save the result. */ ? (argsize = strlen (arg)) : argsize)) && memcmp (arg + i, quote_string, quote_string_len) == 0) { if (elide_outer_quotes) goto force_outer_quoting_style; is_right_quote = true; } c = arg[i]; switch (c) { case '\0': if (backslash_escapes) { START_ESC (); /* If quote_string were to begin with digits, we'd need to test for the end of the arg as well. However, it's hard to imagine any locale that would use digits in quotes, and set_custom_quoting is documented not to accept them. Use only a single \0 with shell-escape as currently digits are not printed within $'...' */ if (quoting_style != shell_always_quoting_style && i + 1 < argsize && '0' <= arg[i + 1] && arg[i + 1] <= '9') { STORE ('0'); STORE ('0'); } c = '0'; /* We don't have to worry that this last '0' will be backslash-escaped because, again, quote_string should not start with it and because quote_these_too is documented as not accepting it. */ } else if (flags & QA_ELIDE_NULL_BYTES) continue; break; case '?': switch (quoting_style) { case shell_always_quoting_style: if (elide_outer_quotes) goto force_outer_quoting_style; break; case c_quoting_style: if ((flags & QA_SPLIT_TRIGRAPHS) && i + 2 < argsize && arg[i + 1] == '?') switch (arg[i + 2]) { case '!': case '\'': case '(': case ')': case '-': case '/': case '<': case '=': case '>': /* Escape the second '?' in what would otherwise be a trigraph. */ if (elide_outer_quotes) goto force_outer_quoting_style; c = arg[i + 2]; i += 2; STORE ('?'); STORE ('"'); STORE ('"'); STORE ('?'); break; default: break; } break; default: break; } break; case '\a': esc = 'a'; goto c_escape; case '\b': esc = 'b'; goto c_escape; case '\f': esc = 'f'; goto c_escape; case '\n': esc = 'n'; goto c_and_shell_escape; case '\r': esc = 'r'; goto c_and_shell_escape; case '\t': esc = 't'; goto c_and_shell_escape; case '\v': esc = 'v'; goto c_escape; case '\\': esc = c; /* Never need to escape '\' in shell case. */ if (quoting_style == shell_always_quoting_style) { if (elide_outer_quotes) goto force_outer_quoting_style; goto store_c; } /* No need to escape the escape if we are trying to elide outer quotes and nothing else is problematic. */ if (backslash_escapes && elide_outer_quotes && quote_string_len) goto store_c; c_and_shell_escape: if (quoting_style == shell_always_quoting_style && elide_outer_quotes) goto force_outer_quoting_style; /* fall through */ c_escape: if (backslash_escapes) { c = esc; goto store_escape; } break; case '{': case '}': /* sometimes special if isolated */ if (! (argsize == SIZE_MAX ? arg[1] == '\0' : argsize == 1)) break; FALLTHROUGH; case '#': case '~': if (i != 0) break; FALLTHROUGH; case ' ': c_and_shell_quote_compat = true; FALLTHROUGH; case '!': /* special in bash */ case '"': case '$': case '&': case '(': case ')': case '*': case ';': case '<': case '=': /* sometimes special in 0th or (with "set -k") later args */ case '>': case '[': case '^': /* special in old /bin/sh, e.g. SunOS 4.1.4 */ case '`': case '|': /* A shell special character. In theory, '$' and '`' could be the first bytes of multibyte characters, which means we should check them with mbrtowc, but in practice this doesn't happen so it's not worth worrying about. */ if (quoting_style == shell_always_quoting_style && elide_outer_quotes) goto force_outer_quoting_style; break; case '\'': encountered_single_quote = true; c_and_shell_quote_compat = true; if (quoting_style == shell_always_quoting_style) { if (elide_outer_quotes) goto force_outer_quoting_style; if (buffersize && ! orig_buffersize) { /* Just scan string to see if supports a more concise representation, rather than writing a longer string but returning the length of the more concise form. */ orig_buffersize = buffersize; buffersize = 0; } STORE ('\''); STORE ('\\'); STORE ('\''); pending_shell_escape_end = false; } break; case '%': case '+': case ',': case '-': case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case ']': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': /* These characters don't cause problems, no matter what the quoting style is. They cannot start multibyte sequences. A digit or a special letter would cause trouble if it appeared at the beginning of quote_string because we'd then escape by prepending a backslash. However, it's hard to imagine any locale that would use digits or letters as quotes, and set_custom_quoting is documented not to accept them. Also, a digit or a special letter would cause trouble if it appeared in quote_these_too, but that's also documented as not accepting them. */ c_and_shell_quote_compat = true; break; default: /* If we have a multibyte sequence, copy it until we reach its end, find an error, or come back to the initial shift state. For C-like styles, if the sequence has unprintable characters, escape the whole sequence, since we can't easily escape single characters within it. */ { /* Length of multibyte sequence found so far. */ size_t m; bool printable; if (unibyte_locale) { m = 1; printable = isprint (c) != 0; } else { mbstate_t mbstate; memset (&mbstate, 0, sizeof mbstate); m = 0; printable = true; if (argsize == SIZE_MAX) argsize = strlen (arg); do { wchar_t w; size_t bytes = mbrtowc (&w, &arg[i + m], argsize - (i + m), &mbstate); if (bytes == 0) break; else if (bytes == (size_t) -1) { printable = false; break; } else if (bytes == (size_t) -2) { printable = false; while (i + m < argsize && arg[i + m]) m++; break; } else { /* Work around a bug with older shells that "see" a '\' that is really the 2nd byte of a multibyte character. In practice the problem is limited to ASCII chars >= '@' that are shell special chars. */ if ('[' == 0x5b && elide_outer_quotes && quoting_style == shell_always_quoting_style) { size_t j; for (j = 1; j < bytes; j++) switch (arg[i + m + j]) { case '[': case '\\': case '^': case '`': case '|': goto force_outer_quoting_style; default: break; } } if (! iswprint (w)) printable = false; m += bytes; } } while (! mbsinit (&mbstate)); } c_and_shell_quote_compat = printable; if (1 < m || (backslash_escapes && ! printable)) { /* Output a multibyte sequence, or an escaped unprintable unibyte character. */ size_t ilim = i + m; for (;;) { if (backslash_escapes && ! printable) { START_ESC (); STORE ('0' + (c >> 6)); STORE ('0' + ((c >> 3) & 7)); c = '0' + (c & 7); } else if (is_right_quote) { STORE ('\\'); is_right_quote = false; } if (ilim <= i + 1) break; END_ESC (); STORE (c); c = arg[++i]; } goto store_c; } } } if (! (((backslash_escapes && quoting_style != shell_always_quoting_style) || elide_outer_quotes) && quote_these_too && quote_these_too[c / INT_BITS] >> (c % INT_BITS) & 1) && !is_right_quote) goto store_c; store_escape: START_ESC (); store_c: END_ESC (); STORE (c); if (! c_and_shell_quote_compat) all_c_and_shell_quote_compat = false; } if (len == 0 && quoting_style == shell_always_quoting_style && elide_outer_quotes) goto force_outer_quoting_style; /* Single shell quotes (') are commonly enough used as an apostrophe, that we attempt to minimize the quoting in this case. Note itʼs better to use the apostrophe modifier "\u02BC" if possible, as that renders better and works with the word match regex \W+ etc. */ if (quoting_style == shell_always_quoting_style && ! elide_outer_quotes && encountered_single_quote) { if (all_c_and_shell_quote_compat) return quotearg_buffer_restyled (buffer, orig_buffersize, arg, argsize, c_quoting_style, flags, quote_these_too, left_quote, right_quote); else if (! buffersize && orig_buffersize) { /* Disable read-only scan, and reprocess to write quoted string. */ buffersize = orig_buffersize; len = 0; goto process_input; } } if (quote_string && !elide_outer_quotes) for (; *quote_string; quote_string++) STORE (*quote_string); if (len < buffersize) buffer[len] = '\0'; return len; force_outer_quoting_style: /* Don't reuse quote_these_too, since the addition of outer quotes sufficiently quotes the specified characters. */ if (quoting_style == shell_always_quoting_style && backslash_escapes) quoting_style = shell_escape_always_quoting_style; return quotearg_buffer_restyled (buffer, buffersize, arg, argsize, quoting_style, flags & ~QA_ELIDE_OUTER_QUOTES, NULL, left_quote, right_quote); } /* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of argument ARG (of size ARGSIZE), using O to control quoting. If O is null, use the default. Terminate the output with a null character, and return the written size of the output, not counting the terminating null. If BUFFERSIZE is too small to store the output string, return the value that would have been returned had BUFFERSIZE been large enough. If ARGSIZE is SIZE_MAX, use the string length of the argument for ARGSIZE. */ size_t quotearg_buffer (char *buffer, size_t buffersize, char const *arg, size_t argsize, struct quoting_options const *o) { struct quoting_options const *p = o ? o : &default_quoting_options; int e = errno; size_t r = quotearg_buffer_restyled (buffer, buffersize, arg, argsize, p->style, p->flags, p->quote_these_too, p->left_quote, p->right_quote); errno = e; return r; } char * quotearg_alloc (char const *arg, size_t argsize, struct quoting_options const *o) { return quotearg_alloc_mem (arg, argsize, NULL, o); } /* Like quotearg_buffer (..., ARG, ARGSIZE, O), except return newly allocated storage containing the quoted string, and store the resulting size into *SIZE, if non-NULL. The result can contain embedded null bytes only if ARGSIZE is not SIZE_MAX, SIZE is not NULL, and set_quoting_flags has not set the null byte elision flag. */ char * quotearg_alloc_mem (char const *arg, size_t argsize, size_t *size, struct quoting_options const *o) { struct quoting_options const *p = o ? o : &default_quoting_options; int e = errno; /* Elide embedded null bytes if we can't return a size. */ int flags = p->flags | (size ? 0 : QA_ELIDE_NULL_BYTES); size_t bufsize = quotearg_buffer_restyled (0, 0, arg, argsize, p->style, flags, p->quote_these_too, p->left_quote, p->right_quote) + 1; char *buf = xcharalloc (bufsize); quotearg_buffer_restyled (buf, bufsize, arg, argsize, p->style, flags, p->quote_these_too, p->left_quote, p->right_quote); errno = e; if (size) *size = bufsize - 1; return buf; } /* A storage slot with size and pointer to a value. */ struct slotvec { size_t size; char *val; }; /* Preallocate a slot 0 buffer, so that the caller can always quote one small component of a "memory exhausted" message in slot 0. */ static char slot0[256]; static int nslots = 1; static struct slotvec slotvec0 = {sizeof slot0, slot0}; static struct slotvec *slotvec = &slotvec0; void quotearg_free (void) { struct slotvec *sv = slotvec; int i; for (i = 1; i < nslots; i++) free (sv[i].val); if (sv[0].val != slot0) { free (sv[0].val); slotvec0.size = sizeof slot0; slotvec0.val = slot0; } if (sv != &slotvec0) { free (sv); slotvec = &slotvec0; } nslots = 1; } /* Use storage slot N to return a quoted version of argument ARG. ARG is of size ARGSIZE, but if that is SIZE_MAX, ARG is a null-terminated string. OPTIONS specifies the quoting options. The returned value points to static storage that can be reused by the next call to this function with the same value of N. N must be nonnegative; it is typically small, and must be less than MIN (INT_MAX, IDX_MAX). The type of N is signed to allow for future extensions (using negative values). */ static char * quotearg_n_options (int n, char const *arg, size_t argsize, struct quoting_options const *options) { int e = errno; struct slotvec *sv = slotvec; int nslots_max = MIN (INT_MAX, IDX_MAX); if (! (0 <= n && n < nslots_max)) abort (); if (nslots <= n) { bool preallocated = (sv == &slotvec0); idx_t new_nslots = nslots; slotvec = sv = xpalloc (preallocated ? NULL : sv, &new_nslots, n - nslots + 1, nslots_max, sizeof *sv); if (preallocated) *sv = slotvec0; memset (sv + nslots, 0, (new_nslots - nslots) * sizeof *sv); nslots = new_nslots; } { size_t size = sv[n].size; char *val = sv[n].val; /* Elide embedded null bytes since we don't return a size. */ int flags = options->flags | QA_ELIDE_NULL_BYTES; size_t qsize = quotearg_buffer_restyled (val, size, arg, argsize, options->style, flags, options->quote_these_too, options->left_quote, options->right_quote); if (size <= qsize) { sv[n].size = size = qsize + 1; if (val != slot0) free (val); sv[n].val = val = xcharalloc (size); quotearg_buffer_restyled (val, size, arg, argsize, options->style, flags, options->quote_these_too, options->left_quote, options->right_quote); } errno = e; return val; } } char * quotearg_n (int n, char const *arg) { return quotearg_n_options (n, arg, SIZE_MAX, &default_quoting_options); } char * quotearg_n_mem (int n, char const *arg, size_t argsize) { return quotearg_n_options (n, arg, argsize, &default_quoting_options); } char * quotearg (char const *arg) { return quotearg_n (0, arg); } char * quotearg_mem (char const *arg, size_t argsize) { return quotearg_n_mem (0, arg, argsize); } char * quotearg_n_style (int n, enum quoting_style s, char const *arg) { struct quoting_options const o = quoting_options_from_style (s); return quotearg_n_options (n, arg, SIZE_MAX, &o); } char * quotearg_n_style_mem (int n, enum quoting_style s, char const *arg, size_t argsize) { struct quoting_options const o = quoting_options_from_style (s); return quotearg_n_options (n, arg, argsize, &o); } char * quotearg_style (enum quoting_style s, char const *arg) { return quotearg_n_style (0, s, arg); } char * quotearg_style_mem (enum quoting_style s, char const *arg, size_t argsize) { return quotearg_n_style_mem (0, s, arg, argsize); } char * quotearg_char_mem (char const *arg, size_t argsize, char ch) { struct quoting_options options; options = default_quoting_options; set_char_quoting (&options, ch, 1); return quotearg_n_options (0, arg, argsize, &options); } char * quotearg_char (char const *arg, char ch) { return quotearg_char_mem (arg, SIZE_MAX, ch); } char * quotearg_colon (char const *arg) { return quotearg_char (arg, ':'); } char * quotearg_colon_mem (char const *arg, size_t argsize) { return quotearg_char_mem (arg, argsize, ':'); } char * quotearg_n_style_colon (int n, enum quoting_style s, char const *arg) { struct quoting_options options; options = quoting_options_from_style (s); set_char_quoting (&options, ':', 1); return quotearg_n_options (n, arg, SIZE_MAX, &options); } char * quotearg_n_custom (int n, char const *left_quote, char const *right_quote, char const *arg) { return quotearg_n_custom_mem (n, left_quote, right_quote, arg, SIZE_MAX); } char * quotearg_n_custom_mem (int n, char const *left_quote, char const *right_quote, char const *arg, size_t argsize) { struct quoting_options o = default_quoting_options; set_custom_quoting (&o, left_quote, right_quote); return quotearg_n_options (n, arg, argsize, &o); } char * quotearg_custom (char const *left_quote, char const *right_quote, char const *arg) { return quotearg_n_custom (0, left_quote, right_quote, arg); } char * quotearg_custom_mem (char const *left_quote, char const *right_quote, char const *arg, size_t argsize) { return quotearg_n_custom_mem (0, left_quote, right_quote, arg, argsize); } /* The quoting option used by the functions of quote.h. */ struct quoting_options quote_quoting_options = { locale_quoting_style, 0, { 0 }, NULL, NULL }; char const * quote_n_mem (int n, char const *arg, size_t argsize) { return quotearg_n_options (n, arg, argsize, "e_quoting_options); } char const * quote_mem (char const *arg, size_t argsize) { return quote_n_mem (0, arg, argsize); } char const * quote_n (int n, char const *arg) { return quote_n_mem (n, arg, SIZE_MAX); } char const * quote (char const *arg) { return quote_n (0, arg); } /* * Hey Emacs! * Local Variables: * coding: utf-8 * End: */ recode-3.7.15/lib/c-strcaseeq.h0000644000175000017500000001052614371444255011677 /* Optimized case-insensitive string comparison in C locale. Copyright (C) 2001-2002, 2007, 2009-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* Written by Bruno Haible . */ #include "c-strcase.h" #include "c-ctype.h" /* STRCASEEQ allows to optimize string comparison with a small literal string. STRCASEEQ (s, "UTF-8", 'U','T','F','-','8',0,0,0,0) is semantically equivalent to c_strcasecmp (s, "UTF-8") == 0 just faster. */ /* Help GCC to generate good code for string comparisons with immediate strings. */ #if (defined __GNUC__ || defined __clang__) && defined __OPTIMIZE__ /* Case insensitive comparison of ASCII characters. */ # if C_CTYPE_ASCII # define CASEEQ(other,upper) \ (c_isupper (upper) ? ((other) & ~0x20) == (upper) : (other) == (upper)) # else # define CASEEQ(other,upper) \ (c_toupper (other) == (upper)) # endif static inline int strcaseeq9 (const char *s1, const char *s2) { return c_strcasecmp (s1 + 9, s2 + 9) == 0; } static inline int strcaseeq8 (const char *s1, const char *s2, char s28) { if (CASEEQ (s1[8], s28)) { if (s28 == 0) return 1; else return strcaseeq9 (s1, s2); } else return 0; } static inline int strcaseeq7 (const char *s1, const char *s2, char s27, char s28) { if (CASEEQ (s1[7], s27)) { if (s27 == 0) return 1; else return strcaseeq8 (s1, s2, s28); } else return 0; } static inline int strcaseeq6 (const char *s1, const char *s2, char s26, char s27, char s28) { if (CASEEQ (s1[6], s26)) { if (s26 == 0) return 1; else return strcaseeq7 (s1, s2, s27, s28); } else return 0; } static inline int strcaseeq5 (const char *s1, const char *s2, char s25, char s26, char s27, char s28) { if (CASEEQ (s1[5], s25)) { if (s25 == 0) return 1; else return strcaseeq6 (s1, s2, s26, s27, s28); } else return 0; } static inline int strcaseeq4 (const char *s1, const char *s2, char s24, char s25, char s26, char s27, char s28) { if (CASEEQ (s1[4], s24)) { if (s24 == 0) return 1; else return strcaseeq5 (s1, s2, s25, s26, s27, s28); } else return 0; } static inline int strcaseeq3 (const char *s1, const char *s2, char s23, char s24, char s25, char s26, char s27, char s28) { if (CASEEQ (s1[3], s23)) { if (s23 == 0) return 1; else return strcaseeq4 (s1, s2, s24, s25, s26, s27, s28); } else return 0; } static inline int strcaseeq2 (const char *s1, const char *s2, char s22, char s23, char s24, char s25, char s26, char s27, char s28) { if (CASEEQ (s1[2], s22)) { if (s22 == 0) return 1; else return strcaseeq3 (s1, s2, s23, s24, s25, s26, s27, s28); } else return 0; } static inline int strcaseeq1 (const char *s1, const char *s2, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28) { if (CASEEQ (s1[1], s21)) { if (s21 == 0) return 1; else return strcaseeq2 (s1, s2, s22, s23, s24, s25, s26, s27, s28); } else return 0; } static inline int strcaseeq0 (const char *s1, const char *s2, char s20, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28) { if (CASEEQ (s1[0], s20)) { if (s20 == 0) return 1; else return strcaseeq1 (s1, s2, s21, s22, s23, s24, s25, s26, s27, s28); } else return 0; } #define STRCASEEQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \ strcaseeq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28) #else #define STRCASEEQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \ (c_strcasecmp (s1, s2) == 0) #endif recode-3.7.15/lib/hash.h0000644000175000017500000002674514371444255010422 /* hash - hashing table processing. Copyright (C) 1998-1999, 2001, 2003, 2009-2023 Free Software Foundation, Inc. Written by Jim Meyering , 1998. This file 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. This file 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 . */ /* A generic hash table package. */ /* Make sure USE_OBSTACK is defined to 1 if you want the allocator to use obstacks instead of malloc, and recompile 'hash.c' with same setting. */ #ifndef HASH_H_ # define HASH_H_ # include # ifdef __cplusplus extern "C" { # endif struct hash_tuning { /* This structure is mainly used for 'hash_initialize', see the block documentation of 'hash_reset_tuning' for more complete comments. */ float shrink_threshold; /* ratio of used buckets to trigger a shrink */ float shrink_factor; /* ratio of new smaller size to original size */ float growth_threshold; /* ratio of used buckets to trigger a growth */ float growth_factor; /* ratio of new bigger size to original size */ bool is_n_buckets; /* if CANDIDATE really means table size */ }; typedef struct hash_tuning Hash_tuning; struct hash_table; typedef struct hash_table Hash_table; /* * Information and lookup. */ /* The following few functions provide information about the overall hash table organization: the number of entries, number of buckets and maximum length of buckets. */ /* Return the number of buckets in the hash table. The table size, the total number of buckets (used plus unused), or the maximum number of slots, are the same quantity. */ extern size_t hash_get_n_buckets (const Hash_table *table) _GL_ATTRIBUTE_PURE; /* Return the number of slots in use (non-empty buckets). */ extern size_t hash_get_n_buckets_used (const Hash_table *table) _GL_ATTRIBUTE_PURE; /* Return the number of active entries. */ extern size_t hash_get_n_entries (const Hash_table *table) _GL_ATTRIBUTE_PURE; /* Return the length of the longest chain (bucket). */ extern size_t hash_get_max_bucket_length (const Hash_table *table) _GL_ATTRIBUTE_PURE; /* Do a mild validation of a hash table, by traversing it and checking two statistics. */ extern bool hash_table_ok (const Hash_table *table) _GL_ATTRIBUTE_PURE; extern void hash_print_statistics (const Hash_table *table, FILE *stream); /* If ENTRY matches an entry already in the hash table, return the entry from the table. Otherwise, return NULL. */ extern void *hash_lookup (const Hash_table *table, const void *entry); /* * Walking. */ /* The functions in this page traverse the hash table and process the contained entries. For the traversal to work properly, the hash table should not be resized nor modified while any particular entry is being processed. In particular, entries should not be added, and an entry may be removed only if there is no shrink threshold and the entry being removed has already been passed to hash_get_next. */ /* Return the first data in the table, or NULL if the table is empty. */ extern void *hash_get_first (const Hash_table *table) _GL_ATTRIBUTE_PURE; /* Return the user data for the entry following ENTRY, where ENTRY has been returned by a previous call to either 'hash_get_first' or 'hash_get_next'. Return NULL if there are no more entries. */ extern void *hash_get_next (const Hash_table *table, const void *entry); /* Fill BUFFER with pointers to active user entries in the hash table, then return the number of pointers copied. Do not copy more than BUFFER_SIZE pointers. */ extern size_t hash_get_entries (const Hash_table *table, void **buffer, size_t buffer_size); typedef bool (*Hash_processor) (void *entry, void *processor_data); /* Call a PROCESSOR function for each entry of a hash table, and return the number of entries for which the processor function returned success. A pointer to some PROCESSOR_DATA which will be made available to each call to the processor function. The PROCESSOR accepts two arguments: the first is the user entry being walked into, the second is the value of PROCESSOR_DATA as received. The walking continue for as long as the PROCESSOR function returns nonzero. When it returns zero, the walking is interrupted. */ extern size_t hash_do_for_each (const Hash_table *table, Hash_processor processor, void *processor_data); /* * Allocation and clean-up. */ /* Return a hash index for a NUL-terminated STRING between 0 and N_BUCKETS-1. This is a convenience routine for constructing other hashing functions. */ extern size_t hash_string (const char *string, size_t n_buckets) _GL_ATTRIBUTE_PURE; extern void hash_reset_tuning (Hash_tuning *tuning); typedef size_t (*Hash_hasher) (const void *entry, size_t table_size); typedef bool (*Hash_comparator) (const void *entry1, const void *entry2); typedef void (*Hash_data_freer) (void *entry); /* Reclaim all storage associated with a hash table. If a data_freer function has been supplied by the user when the hash table was created, this function applies it to the data of each entry before freeing that entry. */ extern void hash_free (Hash_table *table); /* Allocate and return a new hash table, or NULL upon failure. The initial number of buckets is automatically selected so as to _guarantee_ that you may insert at least CANDIDATE different user entries before any growth of the hash table size occurs. So, if have a reasonably tight a-priori upper bound on the number of entries you intend to insert in the hash table, you may save some table memory and insertion time, by specifying it here. If the IS_N_BUCKETS field of the TUNING structure is true, the CANDIDATE argument has its meaning changed to the wanted number of buckets. TUNING points to a structure of user-supplied values, in case some fine tuning is wanted over the default behavior of the hasher. If TUNING is NULL, the default tuning parameters are used instead. If TUNING is provided but the values requested are out of bounds or might cause rounding errors, return NULL. The user-supplied HASHER function, when not NULL, accepts two arguments ENTRY and TABLE_SIZE. It computes, by hashing ENTRY contents, a slot number for that entry which should be in the range 0..TABLE_SIZE-1. This slot number is then returned. The user-supplied COMPARATOR function, when not NULL, accepts two arguments pointing to user data, it then returns true for a pair of entries that compare equal, or false otherwise. This function is internally called on entries which are already known to hash to the same bucket index, but which are distinct pointers. The user-supplied DATA_FREER function, when not NULL, may be later called with the user data as an argument, just before the entry containing the data gets freed. This happens from within 'hash_free' or 'hash_clear'. You should specify this function only if you want these functions to free all of your 'data' data. This is typically the case when your data is simply an auxiliary struct that you have malloc'd to aggregate several values. */ _GL_ATTRIBUTE_NODISCARD extern Hash_table *hash_initialize (size_t candidate, const Hash_tuning *tuning, Hash_hasher hasher, Hash_comparator comparator, Hash_data_freer data_freer) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC (hash_free, 1); /* Same as hash_initialize, but invokes xalloc_die on memory exhaustion. */ /* This function is defined by module 'xhash'. */ _GL_ATTRIBUTE_NODISCARD extern Hash_table *hash_xinitialize (size_t candidate, const Hash_tuning *tuning, Hash_hasher hasher, Hash_comparator comparator, Hash_data_freer data_freer) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC (hash_free, 1) _GL_ATTRIBUTE_RETURNS_NONNULL; /* Make all buckets empty, placing any chained entries on the free list. Apply the user-specified function data_freer (if any) to the datas of any affected entries. */ extern void hash_clear (Hash_table *table); /* * Insertion and deletion. */ /* For an already existing hash table, change the number of buckets through specifying CANDIDATE. The contents of the hash table are preserved. The new number of buckets is automatically selected so as to _guarantee_ that the table may receive at least CANDIDATE different user entries, including those already in the table, before any other growth of the hash table size occurs. If TUNING->IS_N_BUCKETS is true, then CANDIDATE specifies the exact number of buckets desired. Return true iff the rehash succeeded. */ _GL_ATTRIBUTE_NODISCARD extern bool hash_rehash (Hash_table *table, size_t candidate); /* If ENTRY matches an entry already in the hash table, return the pointer to the entry from the table. Otherwise, insert ENTRY and return ENTRY. Return NULL if the storage required for insertion cannot be allocated. This implementation does not support duplicate entries or insertion of NULL. */ _GL_ATTRIBUTE_NODISCARD extern void *hash_insert (Hash_table *table, const void *entry); /* Same as hash_insert, but invokes xalloc_die on memory exhaustion. */ /* This function is defined by module 'xhash'. */ extern void *hash_xinsert (Hash_table *table, const void *entry); /* Insert ENTRY into hash TABLE if there is not already a matching entry. Return -1 upon memory allocation failure. Return 1 if insertion succeeded. Return 0 if there is already a matching entry in the table, and in that case, if MATCHED_ENT is non-NULL, set *MATCHED_ENT to that entry. This interface is easier to use than hash_insert when you must distinguish between the latter two cases. More importantly, hash_insert is unusable for some types of ENTRY values. When using hash_insert, the only way to distinguish those cases is to compare the return value and ENTRY. That works only when you can have two different ENTRY values that point to data that compares "equal". Thus, when the ENTRY value is a simple scalar, you must use hash_insert_if_absent. ENTRY must not be NULL. */ extern int hash_insert_if_absent (Hash_table *table, const void *entry, const void **matched_ent); /* If ENTRY is already in the table, remove it and return the just-deleted data (the user may want to deallocate its storage). If ENTRY is not in the table, don't modify the table and return NULL. */ extern void *hash_remove (Hash_table *table, const void *entry); /* Same as hash_remove. This interface is deprecated. FIXME: Remove in 2022. */ _GL_ATTRIBUTE_DEPRECATED extern void *hash_delete (Hash_table *table, const void *entry); # ifdef __cplusplus } # endif #endif recode-3.7.15/lib/fcntl.in.h0000644000175000017500000003133114371444255011175 /* Like , but with non-working flags defined to 0. Copyright (C) 2006-2023 Free Software Foundation, Inc. This file 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. This file 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 . */ /* written by Paul Eggert */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_system_fcntl_h /* Special invocation convention. */ /* Needed before . May also define off_t to a 64-bit type on native Windows. */ #include /* On some systems other than glibc, is a prerequisite of . On glibc systems, we would like to avoid namespace pollution. But on glibc systems, includes inside an extern "C" { ... } block, which leads to errors in C++ mode with the overridden from gnulib. These errors are known to be gone with g++ version >= 4.3. */ #if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && (defined __ICC || !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)))) # include #endif #@INCLUDE_NEXT@ @NEXT_FCNTL_H@ /* Native Windows platforms declare open(), creat() in . */ #if (@GNULIB_CREAT@ || @GNULIB_OPEN@ || defined GNULIB_POSIXCHECK) \ && (defined _WIN32 && ! defined __CYGWIN__) # include #endif #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_FCNTL_H /* Needed before . May also define off_t to a 64-bit type on native Windows. */ #include /* On some systems other than glibc, is a prerequisite of . On glibc systems, we would like to avoid namespace pollution. But on glibc systems, includes inside an extern "C" { ... } block, which leads to errors in C++ mode with the overridden from gnulib. These errors are known to be gone with g++ version >= 4.3. */ #if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && (defined __ICC || !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)))) # include #endif /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_FCNTL_H@ /* Native Windows platforms declare open(), creat() in . */ #if (@GNULIB_CREAT@ || @GNULIB_OPEN@ || defined GNULIB_POSIXCHECK) \ && (defined _WIN32 && ! defined __CYGWIN__) # include #endif #ifndef _@GUARD_PREFIX@_FCNTL_H #define _@GUARD_PREFIX@_FCNTL_H #ifndef __GLIBC__ /* Avoid namespace pollution on glibc systems. */ # include #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Declare overridden functions. */ #if @GNULIB_CREAT@ # if @REPLACE_CREAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef creat # define creat rpl_creat # endif _GL_FUNCDECL_RPL (creat, int, (const char *filename, mode_t mode) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (creat, int, (const char *filename, mode_t mode)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef creat # define creat _creat # endif _GL_CXXALIAS_MDA (creat, int, (const char *filename, mode_t mode)); # else _GL_CXXALIAS_SYS (creat, int, (const char *filename, mode_t mode)); # endif _GL_CXXALIASWARN (creat); #elif defined GNULIB_POSIXCHECK # undef creat /* Assume creat is always declared. */ _GL_WARN_ON_USE (creat, "creat is not always POSIX compliant - " "use gnulib module creat for portability"); #elif @GNULIB_MDA_CREAT@ /* On native Windows, map 'creat' to '_creat', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::creat always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef creat # define creat _creat # endif /* Need to cast, because in mingw the last argument is 'int mode'. */ _GL_CXXALIAS_MDA_CAST (creat, int, (const char *filename, mode_t mode)); # else _GL_CXXALIAS_SYS (creat, int, (const char *filename, mode_t mode)); # endif _GL_CXXALIASWARN (creat); #endif #if @GNULIB_FCNTL@ # if @REPLACE_FCNTL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fcntl # define fcntl rpl_fcntl # endif _GL_FUNCDECL_RPL (fcntl, int, (int fd, int action, ...)); _GL_CXXALIAS_RPL (fcntl, int, (int fd, int action, ...)); # if !GNULIB_defined_rpl_fcntl # define GNULIB_defined_rpl_fcntl 1 # endif # else # if !@HAVE_FCNTL@ _GL_FUNCDECL_SYS (fcntl, int, (int fd, int action, ...)); # if !GNULIB_defined_fcntl # define GNULIB_defined_fcntl 1 # endif # endif _GL_CXXALIAS_SYS (fcntl, int, (int fd, int action, ...)); # endif _GL_CXXALIASWARN (fcntl); #elif defined GNULIB_POSIXCHECK # undef fcntl # if HAVE_RAW_DECL_FCNTL _GL_WARN_ON_USE (fcntl, "fcntl is not always POSIX compliant - " "use gnulib module fcntl for portability"); # endif #endif #if @GNULIB_OPEN@ # if @REPLACE_OPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef open # define open rpl_open # endif _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); # elif defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef open # define open _open # endif _GL_CXXALIAS_MDA (open, int, (const char *filename, int flags, ...)); # else _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); # endif /* On HP-UX 11, in C++ mode, open() is defined as an inline function with a default argument. _GL_CXXALIASWARN does not work in this case. */ # if !defined __hpux _GL_CXXALIASWARN (open); # endif #elif defined GNULIB_POSIXCHECK # undef open /* Assume open is always declared. */ _GL_WARN_ON_USE (open, "open is not always POSIX compliant - " "use gnulib module open for portability"); #elif @GNULIB_MDA_OPEN@ /* On native Windows, map 'open' to '_open', so that -loldnames is not required. In C++ with GNULIB_NAMESPACE, avoid differences between platforms by defining GNULIB_NAMESPACE::open always. */ # if defined _WIN32 && !defined __CYGWIN__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef open # define open _open # endif _GL_CXXALIAS_MDA (open, int, (const char *filename, int flags, ...)); # else _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); # endif # if !defined __hpux _GL_CXXALIASWARN (open); # endif #endif #if @GNULIB_OPENAT@ # if @REPLACE_OPENAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef openat # define openat rpl_openat # endif _GL_FUNCDECL_RPL (openat, int, (int fd, char const *file, int flags, /* mode_t mode */ ...) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (openat, int, (int fd, char const *file, int flags, /* mode_t mode */ ...)); # else # if !@HAVE_OPENAT@ _GL_FUNCDECL_SYS (openat, int, (int fd, char const *file, int flags, /* mode_t mode */ ...) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (openat, int, (int fd, char const *file, int flags, /* mode_t mode */ ...)); # endif _GL_CXXALIASWARN (openat); #elif defined GNULIB_POSIXCHECK # undef openat # if HAVE_RAW_DECL_OPENAT _GL_WARN_ON_USE (openat, "openat is not portable - " "use gnulib module openat for portability"); # endif #endif /* Fix up the FD_* macros, only known to be missing on mingw. */ #ifndef FD_CLOEXEC # define FD_CLOEXEC 1 #endif /* Fix up the supported F_* macros. Intentionally leave other F_* macros undefined. Only known to be missing on mingw. */ #ifndef F_DUPFD_CLOEXEC # define F_DUPFD_CLOEXEC 0x40000000 /* Witness variable: 1 if gnulib defined F_DUPFD_CLOEXEC, 0 otherwise. */ # define GNULIB_defined_F_DUPFD_CLOEXEC 1 #else # define GNULIB_defined_F_DUPFD_CLOEXEC 0 #endif #ifndef F_DUPFD # define F_DUPFD 1 #endif #ifndef F_GETFD # define F_GETFD 2 #endif /* Fix up the O_* macros. */ /* AIX 7.1 with XL C 12.1 defines O_CLOEXEC, O_NOFOLLOW, and O_TTY_INIT to values outside 'int' range, so omit these misdefinitions. But avoid namespace pollution on non-AIX systems. */ #ifdef _AIX # include # if defined O_CLOEXEC && ! (INT_MIN <= O_CLOEXEC && O_CLOEXEC <= INT_MAX) # undef O_CLOEXEC # endif # if defined O_NOFOLLOW && ! (INT_MIN <= O_NOFOLLOW && O_NOFOLLOW <= INT_MAX) # undef O_NOFOLLOW # endif # if defined O_TTY_INIT && ! (INT_MIN <= O_TTY_INIT && O_TTY_INIT <= INT_MAX) # undef O_TTY_INIT # endif #endif #if !defined O_DIRECT && defined O_DIRECTIO /* Tru64 spells it 'O_DIRECTIO'. */ # define O_DIRECT O_DIRECTIO #endif #if !defined O_CLOEXEC && defined O_NOINHERIT /* Mingw spells it 'O_NOINHERIT'. */ # define O_CLOEXEC O_NOINHERIT #endif #ifndef O_CLOEXEC # define O_CLOEXEC 0x40000000 /* Try to not collide with system O_* flags. */ # define GNULIB_defined_O_CLOEXEC 1 #else # define GNULIB_defined_O_CLOEXEC 0 #endif #ifndef O_DIRECT # define O_DIRECT 0 #endif #ifndef O_DIRECTORY # define O_DIRECTORY 0 #endif #ifndef O_DSYNC # define O_DSYNC 0 #endif #ifndef O_EXEC # define O_EXEC O_RDONLY /* This is often close enough in older systems. */ #endif #ifndef O_IGNORE_CTTY # define O_IGNORE_CTTY 0 #endif #ifndef O_NDELAY # define O_NDELAY 0 #endif #ifndef O_NOATIME # define O_NOATIME 0 #endif #ifndef O_NONBLOCK # define O_NONBLOCK O_NDELAY #endif /* If the gnulib module 'nonblocking' is in use, guarantee a working non-zero value of O_NONBLOCK. Otherwise, O_NONBLOCK is defined (above) to O_NDELAY or to 0 as fallback. */ #if @GNULIB_NONBLOCKING@ # if O_NONBLOCK # define GNULIB_defined_O_NONBLOCK 0 # else # define GNULIB_defined_O_NONBLOCK 1 # undef O_NONBLOCK # define O_NONBLOCK 0x40000000 # endif #endif #ifndef O_NOCTTY # define O_NOCTTY 0 #endif #ifndef O_NOFOLLOW # define O_NOFOLLOW 0 #endif #ifndef O_NOLINK # define O_NOLINK 0 #endif #ifndef O_NOLINKS # define O_NOLINKS 0 #endif #ifndef O_NOTRANS # define O_NOTRANS 0 #endif #ifndef O_RSYNC # define O_RSYNC 0 #endif #ifndef O_SEARCH # define O_SEARCH O_RDONLY /* This is often close enough in older systems. */ #endif #ifndef O_SYNC # define O_SYNC 0 #endif #ifndef O_TTY_INIT # define O_TTY_INIT 0 #endif #if ~O_ACCMODE & (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH) # undef O_ACCMODE # define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH) #endif /* For systems that distinguish between text and binary I/O. O_BINARY is usually declared in fcntl.h */ #if !defined O_BINARY && defined _O_BINARY /* For MSC-compatible compilers. */ # define O_BINARY _O_BINARY # define O_TEXT _O_TEXT #endif #if defined __BEOS__ || defined __HAIKU__ /* BeOS 5 and Haiku have O_BINARY and O_TEXT, but they have no effect. */ # undef O_BINARY # undef O_TEXT #endif #ifndef O_BINARY # define O_BINARY 0 # define O_TEXT 0 #endif /* Fix up the AT_* macros. */ /* Work around a bug in Solaris 9 and 10: AT_FDCWD is positive. Its value exceeds INT_MAX, so its use as an int doesn't conform to the C standard, and GCC and Sun C complain in some cases. If the bug is present, undef AT_FDCWD here, so it can be redefined below. */ #if 0 < AT_FDCWD && AT_FDCWD == 0xffd19553 # undef AT_FDCWD #endif /* Use the same bit pattern as Solaris 9, but with the proper signedness. The bit pattern is important, in case this actually is Solaris with the above workaround. */ #ifndef AT_FDCWD # define AT_FDCWD (-3041965) #endif /* Use the same values as Solaris 9. This shouldn't matter, but there's no real reason to differ. */ #ifndef AT_SYMLINK_NOFOLLOW # define AT_SYMLINK_NOFOLLOW 4096 #endif #ifndef AT_REMOVEDIR # define AT_REMOVEDIR 1 #endif /* Solaris 9 lacks these two, so just pick unique values. */ #ifndef AT_SYMLINK_FOLLOW # define AT_SYMLINK_FOLLOW 2 #endif #ifndef AT_EACCESS # define AT_EACCESS 4 #endif /* Ignore this flag if not supported. */ #ifndef AT_NO_AUTOMOUNT # define AT_NO_AUTOMOUNT 0 #endif #endif /* _@GUARD_PREFIX@_FCNTL_H */ #endif /* _@GUARD_PREFIX@_FCNTL_H */ #endif recode-3.7.15/NEWS0000644000175000017500000004305214766021026007240 ================================== Recode NEWS - User visible changes ================================== .. contents:: .. sectnum:: :Copyright: © 1993-2025 Free Software Foundation, Inc. Version 3.7.15 ============== :Author: Reuben Thomas, 2025-03. + Bug fix: do not free an input file handle passed to librecode by its caller. + Several fixes and updates to the build system. Version 3.7.14 ============== :Author: Reuben Thomas, 2023-01. + No user-visible changes; minor clean-ups as part of the Debian packaging process. Version 3.7.13 ============== :Author: Reuben Thomas, 2023-01. + Fix request diagnostics with --verbose: avoid output of confusing and possibly incorrect diagnostics. + Fix a file descriptor leak. Version 3.7.12 ============== :Author: Reuben Thomas, 2022-02. + Simplify support for ignoring invalid input with iconv, integrated with the --strict and --force mechanisms. + Various documentation improvements. Version 3.7.11 ============== :Author: Reuben Thomas, 2022-01. + Re-add support for transliteration with iconv (removed in 3.7). + Add support for ignoring invalid input with iconv. + Fix a bug introduced in 3.7.10 that prevented building the code. Version 3.7.10 ============== :Author: Reuben Thomas, 2022-01. + In recode program, only use iconv if needed; add --prefer-iconv option to allow its use in all cases. + Remove support for pre-3.5 request syntax (colon as charset separator). + PO files have been updated from the Translation Project. + Build system fixes and improvements. + Update gnulib to fix a problem building on Android. + Fix confusingly wrong NEWS entry for 3.7.4. Version 3.7.9 ============= :Author: Reuben Thomas, 2021-06. + A fix to the CP1252 encoding: U+017E LATIN SMALL LETTER Z WITH CARON is at byte 0x9e, not byte 0x8f. + Minor documentation fixes. Version 3.7.8 ============= :Author: Reuben Thomas, 2020-09. + Improvements to the build system. + Fix man page generation, and document that help2man must be built with gettext. + Updates to nl, pt, sv translations (thanks, translators!). Version 3.7.7 ============= :Author: Reuben Thomas, 2020-07. + Improvements to the build system. + Updates to nl, pt, sv translations (thanks, translators!). Version 3.7.6 ============= :Author: Reuben Thomas, 2019-09. + Improvements to the build system. Version 3.7.5 ============= :Author: Reuben Thomas, 2019-09. + Port tests to Python 3. Version 3.7.4 ============= :Author: Reuben Thomas, 2019-09. + Fixes to file handling in recode program. + Fix tests on Windows. Version 3.7.3 ============= :Author: Reuben Thomas, 2019-08. + No code changes to recode itself; this release features a properly versioned shared library. Version 3.7.2 ============= :Author: Reuben Thomas, 2019-08. + No code changes to recode itself; this release includes updates to license headers to guide users to the GPL online, corrects the version of COPYING-LIB shipped with the sources, and updates the message files for various languages. Version 3.7.1 ============= :Author: Reuben Thomas, 2018-09. + No code changes to recode itself; this release just updates the version of gnulib to fix a bug in glibc 2.28: (GitHub issue #11 https://github.com/rrthomas/recode/issues/11 Version 3.7 =========== :Author: François Pinard, 2008-03; Reuben Thomas, 2018-01. + Converters for BibTeX (from Vincent Danjean) and the ANSEL and ISO 5426 character sets (from Wolfram Schneider) have been added. + The conversion strategies (whether to use pipes, memory or files) are no longer available. Now it is reasonable to assume virtual memory, so files and memory have similar performance characteristics (in particular, the memory method is not limited by physical memory.) Further, tests showed that even for runs on little data, the pipes method has minimal performance impact (none was measured). This is not a surprise, as for one-step recodings, the commonest case, no forking is needed. The command-line options -i, -p and --sequence=STRATEGY are ignored for backwards compatibility. + Recode does not include libiconv anymore, but uses an external iconv library if one was available at installation time. The -x: option to the program, or a new flag to the library recode_new_outer function, inhibits the initialisation and usage of iconv. + The experimental ``tree`` surface is removed. Structured data needs a proper parser, and that doesn't fit the framework of Recode. + Many bug fixes. + Long ago, I renamed GNU recode to Free recode: the permission for using the GNU prefix mandated a level of obedience to the FSF that once went overboard, in my opinion. After that change, I realized that some people read Free as a four letter word! To be peaceful, this version changes the name again, to merely Recode. recode (no capital) still names the executable program specifically, or the distribution archive itself. + make check accepts a LIMIT= option, for limiting tests to one or a few cases. See tests/Makefile.am. + PO files have been updated from the Translation Project. + The test system has been overhauled. Tests now run much faster, and require Python and Cython. + Overhauled build system, now using gnulib for portability. This reduces the amount of code in the Recode tree considerably. Version 3.6 =========== :Author: François Pinard, Bruno Haible, 2001-01. General changes --------------- + The recode manual is now indexed, by charset, by concept, etc. + Program messages are also available in Greek, Gallicean and Italian. + Bruno Haible's nice portable iconv library has been integrated. + RFC 1345 tables and French character names have been updated. + The Texinfo charset has been refreshed, and made reversible. New charsets ------------ (most from libiconv) + Japanese + EUC-JP (csEUCPkdFmtJapanese, EUC_JP, Extended_UNIX_Code_Packed_Format_for_Japanese); + ISO-2022-JP (csISO2022JP); ISO-2022-JP-1; ISO-2022-JP-2 (csISO2022JP2); + JIS_C6220-1969-ro (csISO14JISC6220ro, ISO646-JP, iso-ir-14, jp); + JIS_X0201 (csHalfWidthKatakana, JIS0201, JISX0201-1976, JISX0201.1976-0, X0201); + JIS_X0208 (csISO87JISX0208, ISO-IR-87, JIS0208, JIS_X0208.1983-0, JIS_X0208.1983-1, JIS_X0208-1990-0, JIS_X0208.1983-1, X0208); + JIS_X0212 (csISO159JISX02121990, ISO-IR-159, JIS0212, JIS_X0212.1990-0, JIS_X0212-1990, X0212); + SJIS (csShiftJIS, MS_KANJI, SHIFT-JIS). + Chinese + BIG5 (BIG-5, BIG-FIVE, BIGFIVE, CN-BIG5 csBig5); BIG5HKSCS; + EUC-CN (CN-GB, csGB2312, EUC_CN, GB2312); EUC-TW (csEUCTW, EUC_TW); + GB18030; HZ (HZ-GB-2312); ISO-2022-CN (csISO2022CN); ISO-2022-CN-EXT; + GB_1988-80 (cn, csISO57GB1988, ISO646-CN, iso-ir-57); + GB_2312-80 (CHINESE, csISO58GB231280, GB2312.1980-0, ISO-IR-58); + ISO-IR-165 (CN-GB-ISOIR165). + Korean + JOHAB (CP1361); EUC-KR (csEUCKR, EUC_KR); GBK (CP936); + ISO-2022-KR (csISO2022KR); + KSC_5601 (CP949, csKSC56011987, ISO-IR-149, KOREAN, KSC5601.1987-0, KS_C_5601-1987, KS_C_5601-1989, KSX1001:1992). + Vietnamese (independently of libiconv) + TCVN; VIQR; VISCII; VNI; VPS. + Other languages + ARMSCII-8; Georgian-Academy; Georgian-PS; WINDOWS-874 (CP874); + MuleLao-1; CP1133 (IBM-CP1133); CP1258 (WINDOWS-1258); + TIS-620 (ISO-IR-166, TIS620, TIS620.2529-1, TIS620-0, TIS620.2533-0, TIS620.2533-1). + Apple specifics + MacArabic; MacCentralEurope; MacCroatian; MacCyrillic; MacGreek; + MacHebrew; MacIceland; MacRomania; MacThai; MacTurkish; MacUkraine + Unicode + JAVA; UCS-2-INTERNAL; UCS-2LE (UnicodeLITTLE); UCS-2-SWAPPED; UCS-4BE; + UCS-4-INTERNAL; UCS-4LE; UCS-4-SWAPPED; UTF-16BE; UTF-16LE. + Others + CP932; CP949 (UHC); CP950; CP866 (866, csIBM866, IBM866). + ISO-8859-16 (ISO-IR-226, ISO_8859-16:2000). + Recode internal + :libiconv: (:) [so option -x: avoids going through libiconv] New aliases ----------- (from libiconv) [list to be revised] + csASCII (for ANSI_X3.4-1968); csHPRoman8 (for hp-roman8); + csISOLatin1 (for ISO-8859-1); csISOLatin2 (for ISO-8859-2); + csISOLatin3 (for ISO-8859-3); csISOLatin4 (for ISO-8859-4); + csISOLatin5 (for ISO-8859-9); + csISOLatin6 and ISO_8859-10:1992 (for ISO-8859-10); + csISOLatinArabic (for ISO-8859-6); csISOLatinCyrillic (for ISO-8859-5); + csISOLatinGreek (for ISO-8859-7); csISOLatinHebrew (for ISO-8859-8); + csKOI8R (for KOI8-R); csPC850Multilingual (for IBM850); + csUCS4 (for ISO-10646-UCS-4); + csUnicode, csUnicode11, UCS-2BE, UnicodeBIG (for ISO-10646-UCS-2); + csUnicode11UTF7 (for UNICODE-1-1-UTF-7); + csVISCII and VISCII1.1-1 (for VISCII); + ISO-IR-179 (for ISO-8859-13); csMacintosh and MacRoman (for macintosh); + TCVN5712-1, TCVN5712-1:1993 and TCVN-5712 (for TCVN). New surfaces ------------ + tree (experimental). Version 3.5 =========== :Author: François Pinard, 1999-05. Incompatible changes -------------------- + A double dot ``..`` should now be used instead of a colon ``:``. + Option --force (-f) is needed to pursue recoding despite errors. + There is no more quoting for special characters within charsets names. + Auto check (``-a``) and popen (``-o``) options have been withdrawn. + Some charsets and aliases were deleted, see `Charsets & aliases`_ below. Extended features ----------------- + Program messages are available in localised form for many languages. + Long character names are available in French, if LANGUAGE is set to ``fr``. + A new request syntax allows for recode chaining, and for surfaces. + Option --header-file (-h) accepts a language parameter, and Perl is new. + Full charset listings now show the UCS-2 value for characters. + Option --known=PAIRS (-k) also accepts octal and hexadecimal numbers. + Option --list (-l) better sorts charsets and aliases, also fully written. + Charset ``RFC1345`` implements mnemonic+ascii+38, and is now reversible. + HTML is not limited anymore to Latin-1, HTML 4.0 entities are supported. New features ------------ + Euro support. + Updated RFC 1345 set of tables, from Keld Simonsen. + Some African charsets and transliterated forms. + Conversions for ISO 10646 and Unicode. + Combining or explosion of UCS-2 diacriticized characters and ligatures. + Implementation of surfaces, see `Surfaces & aliases`_ below. + Mixed mode for recoding only comments and strings in C sources or PO files. + A stand-alone recoding library gets installed, often as a shared library. + Option --find-subsets (-T) lists charsets which are subsets of another. + The library may generate testing data, and study character frequencies. Charsets & aliases ------------------ + New ISO 10646 and Unicode charsets + combined-UCS-2: pseudo-charset. + count-characters: pseudo-charset. + dump-with-names: pseudo-charset. + ISO-10646-UCS-2 (UNICODE-1-1, BMP, rune, u2). + ISO-10646-UCS-4 (10646, ISO-10646, UCS-4, u4). + UNICODE-1-1-UTF-7 (TF-7, u7). + UTF-8 (UTF-2, UTF-FSS, FSS_UTF, TF-8, u8). + UTF-16 (Unicode, TF-16, u6). + RFC 1345.bis matters + Deleted charsets + dk-us, us-dk (because of &duplicate which Recode does not handle yet). + New charsets + baltic (alias is iso-ir-179); CP1250 (1250, ms-ee, windows-1250); + CP1251 (1251, ms-cyrl, windows-1251); + CP1252 (1252, ms-ansi, windows-1252); + CP1253 (1253, ms-greek, windows-1253); + CP1254 (1254, ms-turk, windows-1254); + CP1255 (1255, ms-hebr, windows-1255); + CP1256 (1256, ms-arab, windows-1256); + CP1257 (1257, WinBaltRim, windows-1257); + CWI (CWI-2, cp-hu); EBCDIC-IS-FRISS (friss); + GOST_19768-87 with aliases of previous GOST_19768-74; + IBM256 (256, CP256, EBCDIC-INT1); IBM875 (875, CP875, EBCDIC-Greek); + IBM1004 (1004, CP1004, os2latin1); IBM1047 (1047, CP1047); + ISO-8859-13 (ISO_8859-13:1998, iso-baltic, iso-ir-179a, l7, latin7); + ISO-8859-14 (ISO_8859-14:1998, iso-celtic, iso-ir-199, l8, latin8); + ISO-8859-15 (ISO_8859-15:1998, iso-ir-203, l9, latin9); + KOI-7; KOI-8 (GOST_19768-74); KOI8-R; KOI8-RU; KOI8-U; + macintosh_ce (macce); mac-is; + NeXTSTEP (next) yet previous Recode had it outside RFC 1345. + Alias promoted to charset (with previous charset becoming alias) + ISO-646.basic (with ISO-646.basic:1983); ISO-646.irv (ISO-646.irv:1983); + ISO_5427-ext (ISO_5427:1981); ISO_5428 (ISO_5428:1980); + ISO-8859-1 (ISO_8859-1:1987); ISO-8859-2 (ISO_8859-2:1987); + ISO-8859-3 (ISO_8859-3:1988); ISO-8859-4 (ISO_8859-4:1988); + ISO-8859-5 (ISO_8859-5:1988); ISO-8859-6 (ISO_8859-6:1987); + ISO-8859-7 (ISO_8859-7:1987); ISO-8859-8 (ISO_8859-8:1988); + ISO-8859-9 (ISO_8859-9:1989); ISO-8859-10 (latin6); + NC_NC00-10 (NC_NC00-10:81); sami (latin-lap). + New aliases + 037 (for charset IBM037); 038 (IBM038); 273 (IBM273); 274 (IBM274); + 275 (IBM275); 278 (IBM278); 280 (IBM280); 281 (IBM281); 284 (IBM284); + 285 (IBM285); 290 (IBM290); 297 (IBM297); 367 (ANSI_X3.4-1968); + 420 (IBM420); 423 (IBM423); 424 (IBM424); 500, 500V1 (IBM500); + 819 (ISO-8859-1); 864 (IBM864); 868 (IBM868); 870 (IBM870); + 871 (IBM871); 880 (IBM880); 891 (IBM891); 903 (IBM903); 905 (IBM905); + 912, CP912, IBM912 (ISO-8859-2); 918 (IBM918); 1026 (IBM1026); + ECMA-113, ECMA-113:1986 (ECMA-Cyrillic); GOST_19768-74 (KOI8); + ISO_8859-N (ISO-8859-N) for N = 1 through 10 and 13 through 15; + ISO_8859-10:1993 (ISO-8869-10); iso-ir-170 (INVARIANT); + KOI8_L2 (CSN_369103); pclatin2, pcl2 (IBM852); SS636127 (SEN_850200_B). + New African charsets + AFRL1-101-BPI_OCIL (t-francais, t-fra); + AFRFUL-102-BPI_OCIL (bambara, bra, ewondo, fulfulde); + AFRFUL-103-BPI_OCIL (t-bambara, t-bra, t-ewondo, t-fulfulde); + AFRLIN-104-BPI_OCIL (lingala, lin, sango, wolof); + AFRLIN-105-BPI_OCIL (t-lingala, t-lin, t-sango, t-wolof). + Extra miscellaneous charsets + KEYBCS2 (Kamenicky); CORK (T1); KOI-8_CS2. + New HTML pseudo-charsets + HTML_1.1 (h1); HTML_2.0 (RFC 1866, 1866, h2); HTML-i18n (RFC 2070); + HTML_3.2 (h3) reimplemented; HTML_4.0 (h4, HTML, h); + deleted aliases HTF, 8859, ISO 8859, Entities, SGML, WWW, w3. Surfaces & aliases ------------------ + Base64 (64, b64); Quoted-Printable (qp, Quote-Printable); + 21-Permutation (swabytes); 4321-Permutation; CR; CR-LF (cl); + Decimal-1 (d, d1); Decimal-2 (d2), Decimal-4 (d4); + Hexadecimal-1 (x, x1); Hexadecimal-2 (x2); Hexadecimal-4 (x4); + Octal-1 (o, o1); Octal-2 (o2); Octal-4 (o4). + data; test7; test8; test15; test16. Version 3.4 =========== :Author: François Pinard, 1994-11. + Charset HTML is new, it handles ``&...;`` sequences for Latin-1. + Charset AtariST handling is more general, --list may be used with it. + Charset ASCII-BS overstriking has been extended, mainly for German. + Charset RFC1345 may be a goal, to debug or study RFC 1345 short names. + Charset names have been revised. Note that nextstep is now NeXT. + Option --force (-f) is accepted, but does not yet protect reversibility. + Option --quiet or --silent (-q) silences irreversible recoding messages. + Option --known=PAIRS (-k) helps searching through recodings. + Option --sequence=pipe (-p) does not fall back on -o anymore. + Option --auto-check may narrow its study around one particular charset. + An MSDOS port is available, check ftp.iro.umontreal.ca in pub/gnuish. + Compilation should now succeed on OS/2 EMX. Thanks to Kai Uwe Rommel. + Program initialization is almost three times faster on average. + Corrected reported bugs, added small improvements, some aesthetic. Version 3.3 =========== :Author: François Pinard, 1993-12. + Charsets atarist, ebcdic-ccc, ebcdic-ibm and nextstep have been added. + Also, most RFC 1345 charsets and aliases are handled. That's a bunch! + Old ascii disappears because of RFC 1345's ascii, use ascii-bs instead. + Old maci disappears because of RFC 1345's macintosh, use applemac instead. + Charsets cccascii and cdcascii disappear, use ebcdic-ccc and ebcdic instead. + Recoding between latin1, ibmpc and applemac is (almost) reversible. + The texinfo documentation has been reorganized, this to be continued. + Long options are accepted, charset names may be abbreviated. + Option --list (-l) displays charsets, aliases and contents in many formats. + Option --strict (-s) asks for stricter, non-reversible recodings. + Option --graphics (-g) approximates ibmpc rulers with ASCII graphics. + Option --header (-h) produces C source for many recoding tables. + Option --auto-check (-a) reports about all possible recodings. + Option --ignore (-x) prevents a charset from being selected. + Execution has been sped up through step merging, hashing for charset names. + Many various buglets have been eradicated, portability increased. + Charsets may be edited out by modifying the Makefile only. + Configuration is made through the use of an external config.h file. + New -d ``diacritics_only`` option for LaTeX. + A few bugs have been corrected. + Documentation reorganization and improvements. + Increased portability, now uses Autoconf. + A few bugs solved. Version 3.2 =========== :Author: François Pinard, 1991-10. + MSDOS port redone. + New check goal at installation time. + Add -v option for verbose processing, remove old -q. + Add -i, -o and -p for letting the user control the strategy. + A few bugs corrected. + Embedded NULs should now be transmitted. Version 3.1 =========== :Author: François Pinard, 1990-03. + Rename -V to -C for showing Copyright. + Calling sequence changed, said files now recoded on themselves. + Add -t option for touching files. + Better on-line help. + Add -q option for quiet processing. + Executable file now considerably smaller, also speedier. + A few bugs corrected. Version 3.0 =========== :Author: François Pinard, 1989-10. + New Text to Latin1 processing, should be faster. + A few bugs corrected. For prior history down to 1980, see at the end of the ChangeLog. recode-3.7.15/doc/0000755000175000017500000000000014766021044007362 5recode-3.7.15/doc/Makefile.in0000644000175000017500000023111514766020640011353 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Makefile for Recode documentation. # Copyright © 1994-2019 Free Software Foundation, Inc. # François Pinard # 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 3, 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, see . VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ $(top_srcdir)/m4/__inline.m4 \ $(top_srcdir)/m4/absolute-header.m4 $(top_srcdir)/m4/alloca.m4 \ $(top_srcdir)/m4/assert_h.m4 \ $(top_srcdir)/m4/builtin-expect.m4 $(top_srcdir)/m4/c-bool.m4 \ $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \ $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/close.m4 \ $(top_srcdir)/m4/codeset.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/error_h.m4 \ $(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/exponentf.m4 \ $(top_srcdir)/m4/exponentl.m4 $(top_srcdir)/m4/extensions.m4 \ $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \ $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \ $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fpieee.m4 \ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/frexp.m4 \ $(top_srcdir)/m4/frexpl.m4 $(top_srcdir)/m4/fseterr.m4 \ $(top_srcdir)/m4/fstat.m4 $(top_srcdir)/m4/getdtablesize.m4 \ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getprogname.m4 \ $(top_srcdir)/m4/getrandom.m4 $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gnulib-common.m4 \ $(top_srcdir)/m4/gnulib-comp.m4 \ $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/include_next.m4 \ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ $(top_srcdir)/m4/isatty.m4 $(top_srcdir)/m4/isnand.m4 \ $(top_srcdir)/m4/isnanf.m4 $(top_srcdir)/m4/isnanl.m4 \ $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/ldexpl.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/localcharset.m4 \ $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \ $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/locale_h.m4 \ $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \ $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \ $(top_srcdir)/m4/math_h.m4 $(top_srcdir)/m4/mbrtowc.m4 \ $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \ $(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mkdir.m4 \ $(top_srcdir)/m4/mkstemps.m4 $(top_srcdir)/m4/mmap-anon.m4 \ $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \ $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \ $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open-cloexec.m4 \ $(top_srcdir)/m4/open-slash.m4 $(top_srcdir)/m4/open.m4 \ $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/pipe.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-frexp.m4 \ $(top_srcdir)/m4/printf-frexpl.m4 $(top_srcdir)/m4/printf.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/raise.m4 \ $(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/readlink.m4 \ $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/reallocarray.m4 \ $(top_srcdir)/m4/setlocale_null.m4 \ $(top_srcdir)/m4/sigaction.m4 $(top_srcdir)/m4/signal_h.m4 \ $(top_srcdir)/m4/signalblocking.m4 $(top_srcdir)/m4/signbit.m4 \ $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/ssize_t.m4 \ $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \ $(top_srcdir)/m4/stdalign.m4 $(top_srcdir)/m4/stddef_h.m4 \ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \ $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \ $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \ $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \ $(top_srcdir)/m4/sys_random_h.m4 \ $(top_srcdir)/m4/sys_socket_h.m4 \ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_types_h.m4 \ $(top_srcdir)/m4/sys_wait_h.m4 $(top_srcdir)/m4/tempname.m4 \ $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/utime.m4 \ $(top_srcdir)/m4/utime_h.m4 $(top_srcdir)/m4/vasnprintf.m4 \ $(top_srcdir)/m4/vasprintf.m4 \ $(top_srcdir)/m4/vfprintf-posix.m4 \ $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/m4/vprintf-posix.m4 \ $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \ $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \ $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wint_t.m4 \ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xsize.m4 \ $(top_srcdir)/m4/zzgnulib.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/version.texi \ $(srcdir)/stamp-vti $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) am__v_DVIPS_0 = @echo " DVIPS " $@; am__v_DVIPS_1 = AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@) am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@) am__v_MAKEINFO_0 = @echo " MAKEINFO" $@; am__v_MAKEINFO_1 = AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@) am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@) am__v_INFOHTML_0 = @echo " INFOHTML" $@; am__v_INFOHTML_1 = AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@) am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@) am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@; am__v_TEXI2DVI_1 = AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@) am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@) am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@; am__v_TEXI2PDF_1 = AM_V_texinfo = $(am__v_texinfo_@AM_V@) am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@) am__v_texinfo_0 = -q am__v_texinfo_1 = AM_V_texidevnull = $(am__v_texidevnull_@AM_V@) am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) am__v_texidevnull_0 = > /dev/null am__v_texidevnull_1 = INFO_DEPS = $(srcdir)/recode.info TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux DVIS = recode.dvi PDFS = recode.pdf PSS = recode.ps HTMLS = recode.html TEXINFOS = recode.texi TEXI2DVI = texi2dvi TEXI2PDF = $(TEXI2DVI) --pdf --batch MAKEINFOHTML = $(MAKEINFO) --html AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) DVIPS = dvips am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__installdirs = "$(DESTDIR)$(infodir)" am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(recode_TEXINFOS) $(srcdir)/Makefile.in \ $(top_srcdir)/build-aux/mdate-sh \ $(top_srcdir)/build-aux/texinfo.tex DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ ALLOCA_H = @ALLOCA_H@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ ASSERT_H = @ASSERT_H@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CLOCK_TIME_LIB = @CLOCK_TIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CROSS_COMPILING = @CROSS_COMPILING@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ CYTHON = @CYTHON@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ ERROR_H = @ERROR_H@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ FLOAT_H = @FLOAT_H@ GETOPT_CDEFS_H = @GETOPT_CDEFS_H@ GETOPT_H = @GETOPT_H@ GETRANDOM_LIB = @GETRANDOM_LIB@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@ GL_CFLAG_GNULIB_WARNINGS = @GL_CFLAG_GNULIB_WARNINGS@ GL_GNULIB_ACCESS = @GL_GNULIB_ACCESS@ GL_GNULIB_ACOSF = @GL_GNULIB_ACOSF@ GL_GNULIB_ACOSL = @GL_GNULIB_ACOSL@ GL_GNULIB_ALIGNED_ALLOC = @GL_GNULIB_ALIGNED_ALLOC@ GL_GNULIB_ASINF = @GL_GNULIB_ASINF@ GL_GNULIB_ASINL = @GL_GNULIB_ASINL@ GL_GNULIB_ATAN2F = @GL_GNULIB_ATAN2F@ GL_GNULIB_ATANF = @GL_GNULIB_ATANF@ GL_GNULIB_ATANL = @GL_GNULIB_ATANL@ GL_GNULIB_ATOLL = @GL_GNULIB_ATOLL@ GL_GNULIB_BTOWC = @GL_GNULIB_BTOWC@ GL_GNULIB_CALLOC_GNU = @GL_GNULIB_CALLOC_GNU@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CBRT = @GL_GNULIB_CBRT@ GL_GNULIB_CBRTF = @GL_GNULIB_CBRTF@ GL_GNULIB_CBRTL = @GL_GNULIB_CBRTL@ GL_GNULIB_CEIL = @GL_GNULIB_CEIL@ GL_GNULIB_CEILF = @GL_GNULIB_CEILF@ GL_GNULIB_CEILL = @GL_GNULIB_CEILL@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_COPYSIGN = @GL_GNULIB_COPYSIGN@ GL_GNULIB_COPYSIGNF = @GL_GNULIB_COPYSIGNF@ GL_GNULIB_COPYSIGNL = @GL_GNULIB_COPYSIGNL@ GL_GNULIB_COPY_FILE_RANGE = @GL_GNULIB_COPY_FILE_RANGE@ GL_GNULIB_COSF = @GL_GNULIB_COSF@ GL_GNULIB_COSHF = @GL_GNULIB_COSHF@ GL_GNULIB_COSL = @GL_GNULIB_COSL@ GL_GNULIB_CREAT = @GL_GNULIB_CREAT@ GL_GNULIB_CTIME = @GL_GNULIB_CTIME@ GL_GNULIB_DPRINTF = @GL_GNULIB_DPRINTF@ GL_GNULIB_DUP = @GL_GNULIB_DUP@ GL_GNULIB_DUP2 = @GL_GNULIB_DUP2@ GL_GNULIB_DUP3 = @GL_GNULIB_DUP3@ GL_GNULIB_DUPLOCALE = @GL_GNULIB_DUPLOCALE@ GL_GNULIB_ENVIRON = @GL_GNULIB_ENVIRON@ GL_GNULIB_EUIDACCESS = @GL_GNULIB_EUIDACCESS@ GL_GNULIB_EXECL = @GL_GNULIB_EXECL@ GL_GNULIB_EXECLE = @GL_GNULIB_EXECLE@ GL_GNULIB_EXECLP = @GL_GNULIB_EXECLP@ GL_GNULIB_EXECV = @GL_GNULIB_EXECV@ GL_GNULIB_EXECVE = @GL_GNULIB_EXECVE@ GL_GNULIB_EXECVP = @GL_GNULIB_EXECVP@ GL_GNULIB_EXECVPE = @GL_GNULIB_EXECVPE@ GL_GNULIB_EXP2 = @GL_GNULIB_EXP2@ GL_GNULIB_EXP2F = @GL_GNULIB_EXP2F@ GL_GNULIB_EXP2L = @GL_GNULIB_EXP2L@ GL_GNULIB_EXPF = @GL_GNULIB_EXPF@ GL_GNULIB_EXPL = @GL_GNULIB_EXPL@ GL_GNULIB_EXPLICIT_BZERO = @GL_GNULIB_EXPLICIT_BZERO@ GL_GNULIB_EXPM1 = @GL_GNULIB_EXPM1@ GL_GNULIB_EXPM1F = @GL_GNULIB_EXPM1F@ GL_GNULIB_EXPM1L = @GL_GNULIB_EXPM1L@ GL_GNULIB_FABSF = @GL_GNULIB_FABSF@ GL_GNULIB_FABSL = @GL_GNULIB_FABSL@ GL_GNULIB_FACCESSAT = @GL_GNULIB_FACCESSAT@ GL_GNULIB_FCHDIR = @GL_GNULIB_FCHDIR@ GL_GNULIB_FCHMODAT = @GL_GNULIB_FCHMODAT@ GL_GNULIB_FCHOWNAT = @GL_GNULIB_FCHOWNAT@ GL_GNULIB_FCLOSE = @GL_GNULIB_FCLOSE@ GL_GNULIB_FCNTL = @GL_GNULIB_FCNTL@ GL_GNULIB_FDATASYNC = @GL_GNULIB_FDATASYNC@ GL_GNULIB_FDOPEN = @GL_GNULIB_FDOPEN@ GL_GNULIB_FFLUSH = @GL_GNULIB_FFLUSH@ GL_GNULIB_FFSL = @GL_GNULIB_FFSL@ GL_GNULIB_FFSLL = @GL_GNULIB_FFSLL@ GL_GNULIB_FGETC = @GL_GNULIB_FGETC@ GL_GNULIB_FGETS = @GL_GNULIB_FGETS@ GL_GNULIB_FLOOR = @GL_GNULIB_FLOOR@ GL_GNULIB_FLOORF = @GL_GNULIB_FLOORF@ GL_GNULIB_FLOORL = @GL_GNULIB_FLOORL@ GL_GNULIB_FMA = @GL_GNULIB_FMA@ GL_GNULIB_FMAF = @GL_GNULIB_FMAF@ GL_GNULIB_FMAL = @GL_GNULIB_FMAL@ GL_GNULIB_FMOD = @GL_GNULIB_FMOD@ GL_GNULIB_FMODF = @GL_GNULIB_FMODF@ GL_GNULIB_FMODL = @GL_GNULIB_FMODL@ GL_GNULIB_FOPEN = @GL_GNULIB_FOPEN@ GL_GNULIB_FOPEN_GNU = @GL_GNULIB_FOPEN_GNU@ GL_GNULIB_FPRINTF = @GL_GNULIB_FPRINTF@ GL_GNULIB_FPRINTF_POSIX = @GL_GNULIB_FPRINTF_POSIX@ GL_GNULIB_FPURGE = @GL_GNULIB_FPURGE@ GL_GNULIB_FPUTC = @GL_GNULIB_FPUTC@ GL_GNULIB_FPUTS = @GL_GNULIB_FPUTS@ GL_GNULIB_FREAD = @GL_GNULIB_FREAD@ GL_GNULIB_FREE_POSIX = @GL_GNULIB_FREE_POSIX@ GL_GNULIB_FREOPEN = @GL_GNULIB_FREOPEN@ GL_GNULIB_FREXP = @GL_GNULIB_FREXP@ GL_GNULIB_FREXPF = @GL_GNULIB_FREXPF@ GL_GNULIB_FREXPL = @GL_GNULIB_FREXPL@ GL_GNULIB_FSCANF = @GL_GNULIB_FSCANF@ GL_GNULIB_FSEEK = @GL_GNULIB_FSEEK@ GL_GNULIB_FSEEKO = @GL_GNULIB_FSEEKO@ GL_GNULIB_FSTAT = @GL_GNULIB_FSTAT@ GL_GNULIB_FSTATAT = @GL_GNULIB_FSTATAT@ GL_GNULIB_FSYNC = @GL_GNULIB_FSYNC@ GL_GNULIB_FTELL = @GL_GNULIB_FTELL@ GL_GNULIB_FTELLO = @GL_GNULIB_FTELLO@ GL_GNULIB_FTRUNCATE = @GL_GNULIB_FTRUNCATE@ GL_GNULIB_FUTIMENS = @GL_GNULIB_FUTIMENS@ GL_GNULIB_FWRITE = @GL_GNULIB_FWRITE@ GL_GNULIB_GETC = @GL_GNULIB_GETC@ GL_GNULIB_GETCHAR = @GL_GNULIB_GETCHAR@ GL_GNULIB_GETCWD = @GL_GNULIB_GETCWD@ GL_GNULIB_GETDELIM = @GL_GNULIB_GETDELIM@ GL_GNULIB_GETDOMAINNAME = @GL_GNULIB_GETDOMAINNAME@ GL_GNULIB_GETDTABLESIZE = @GL_GNULIB_GETDTABLESIZE@ GL_GNULIB_GETENTROPY = @GL_GNULIB_GETENTROPY@ GL_GNULIB_GETGROUPS = @GL_GNULIB_GETGROUPS@ GL_GNULIB_GETHOSTNAME = @GL_GNULIB_GETHOSTNAME@ GL_GNULIB_GETLINE = @GL_GNULIB_GETLINE@ GL_GNULIB_GETLOADAVG = @GL_GNULIB_GETLOADAVG@ GL_GNULIB_GETLOGIN = @GL_GNULIB_GETLOGIN@ GL_GNULIB_GETLOGIN_R = @GL_GNULIB_GETLOGIN_R@ GL_GNULIB_GETOPT_POSIX = @GL_GNULIB_GETOPT_POSIX@ GL_GNULIB_GETPAGESIZE = @GL_GNULIB_GETPAGESIZE@ GL_GNULIB_GETPASS = @GL_GNULIB_GETPASS@ GL_GNULIB_GETPASS_GNU = @GL_GNULIB_GETPASS_GNU@ GL_GNULIB_GETPROGNAME = @GL_GNULIB_GETPROGNAME@ GL_GNULIB_GETRANDOM = @GL_GNULIB_GETRANDOM@ GL_GNULIB_GETSUBOPT = @GL_GNULIB_GETSUBOPT@ GL_GNULIB_GETUMASK = @GL_GNULIB_GETUMASK@ GL_GNULIB_GETUSERSHELL = @GL_GNULIB_GETUSERSHELL@ GL_GNULIB_GRANTPT = @GL_GNULIB_GRANTPT@ GL_GNULIB_GROUP_MEMBER = @GL_GNULIB_GROUP_MEMBER@ GL_GNULIB_HYPOT = @GL_GNULIB_HYPOT@ GL_GNULIB_HYPOTF = @GL_GNULIB_HYPOTF@ GL_GNULIB_HYPOTL = @GL_GNULIB_HYPOTL@ GL_GNULIB_ILOGB = @GL_GNULIB_ILOGB@ GL_GNULIB_ILOGBF = @GL_GNULIB_ILOGBF@ GL_GNULIB_ILOGBL = @GL_GNULIB_ILOGBL@ GL_GNULIB_IMAXABS = @GL_GNULIB_IMAXABS@ GL_GNULIB_IMAXDIV = @GL_GNULIB_IMAXDIV@ GL_GNULIB_ISATTY = @GL_GNULIB_ISATTY@ GL_GNULIB_ISFINITE = @GL_GNULIB_ISFINITE@ GL_GNULIB_ISINF = @GL_GNULIB_ISINF@ GL_GNULIB_ISNAN = @GL_GNULIB_ISNAN@ GL_GNULIB_ISNAND = @GL_GNULIB_ISNAND@ GL_GNULIB_ISNANF = @GL_GNULIB_ISNANF@ GL_GNULIB_ISNANL = @GL_GNULIB_ISNANL@ GL_GNULIB_ISWBLANK = @GL_GNULIB_ISWBLANK@ GL_GNULIB_ISWCTYPE = @GL_GNULIB_ISWCTYPE@ GL_GNULIB_ISWDIGIT = @GL_GNULIB_ISWDIGIT@ GL_GNULIB_ISWXDIGIT = @GL_GNULIB_ISWXDIGIT@ GL_GNULIB_LCHMOD = @GL_GNULIB_LCHMOD@ GL_GNULIB_LCHOWN = @GL_GNULIB_LCHOWN@ GL_GNULIB_LDEXPF = @GL_GNULIB_LDEXPF@ GL_GNULIB_LDEXPL = @GL_GNULIB_LDEXPL@ GL_GNULIB_LINK = @GL_GNULIB_LINK@ GL_GNULIB_LINKAT = @GL_GNULIB_LINKAT@ GL_GNULIB_LOCALECONV = @GL_GNULIB_LOCALECONV@ GL_GNULIB_LOCALENAME = @GL_GNULIB_LOCALENAME@ GL_GNULIB_LOCALTIME = @GL_GNULIB_LOCALTIME@ GL_GNULIB_LOG = @GL_GNULIB_LOG@ GL_GNULIB_LOG10 = @GL_GNULIB_LOG10@ GL_GNULIB_LOG10F = @GL_GNULIB_LOG10F@ GL_GNULIB_LOG10L = @GL_GNULIB_LOG10L@ GL_GNULIB_LOG1P = @GL_GNULIB_LOG1P@ GL_GNULIB_LOG1PF = @GL_GNULIB_LOG1PF@ GL_GNULIB_LOG1PL = @GL_GNULIB_LOG1PL@ GL_GNULIB_LOG2 = @GL_GNULIB_LOG2@ GL_GNULIB_LOG2F = @GL_GNULIB_LOG2F@ GL_GNULIB_LOG2L = @GL_GNULIB_LOG2L@ GL_GNULIB_LOGB = @GL_GNULIB_LOGB@ GL_GNULIB_LOGBF = @GL_GNULIB_LOGBF@ GL_GNULIB_LOGBL = @GL_GNULIB_LOGBL@ GL_GNULIB_LOGF = @GL_GNULIB_LOGF@ GL_GNULIB_LOGL = @GL_GNULIB_LOGL@ GL_GNULIB_LSEEK = @GL_GNULIB_LSEEK@ GL_GNULIB_LSTAT = @GL_GNULIB_LSTAT@ GL_GNULIB_MALLOC_GNU = @GL_GNULIB_MALLOC_GNU@ GL_GNULIB_MALLOC_POSIX = @GL_GNULIB_MALLOC_POSIX@ GL_GNULIB_MBRLEN = @GL_GNULIB_MBRLEN@ GL_GNULIB_MBRTOWC = @GL_GNULIB_MBRTOWC@ GL_GNULIB_MBSCASECMP = @GL_GNULIB_MBSCASECMP@ GL_GNULIB_MBSCASESTR = @GL_GNULIB_MBSCASESTR@ GL_GNULIB_MBSCHR = @GL_GNULIB_MBSCHR@ GL_GNULIB_MBSCSPN = @GL_GNULIB_MBSCSPN@ GL_GNULIB_MBSINIT = @GL_GNULIB_MBSINIT@ GL_GNULIB_MBSLEN = @GL_GNULIB_MBSLEN@ GL_GNULIB_MBSNCASECMP = @GL_GNULIB_MBSNCASECMP@ GL_GNULIB_MBSNLEN = @GL_GNULIB_MBSNLEN@ GL_GNULIB_MBSNRTOWCS = @GL_GNULIB_MBSNRTOWCS@ GL_GNULIB_MBSPBRK = @GL_GNULIB_MBSPBRK@ GL_GNULIB_MBSPCASECMP = @GL_GNULIB_MBSPCASECMP@ GL_GNULIB_MBSRCHR = @GL_GNULIB_MBSRCHR@ GL_GNULIB_MBSRTOWCS = @GL_GNULIB_MBSRTOWCS@ GL_GNULIB_MBSSEP = @GL_GNULIB_MBSSEP@ GL_GNULIB_MBSSPN = @GL_GNULIB_MBSSPN@ GL_GNULIB_MBSSTR = @GL_GNULIB_MBSSTR@ GL_GNULIB_MBSTOK_R = @GL_GNULIB_MBSTOK_R@ GL_GNULIB_MBTOWC = @GL_GNULIB_MBTOWC@ GL_GNULIB_MDA_ACCESS = @GL_GNULIB_MDA_ACCESS@ GL_GNULIB_MDA_CHDIR = @GL_GNULIB_MDA_CHDIR@ GL_GNULIB_MDA_CHMOD = @GL_GNULIB_MDA_CHMOD@ GL_GNULIB_MDA_CLOSE = @GL_GNULIB_MDA_CLOSE@ GL_GNULIB_MDA_CREAT = @GL_GNULIB_MDA_CREAT@ GL_GNULIB_MDA_DUP = @GL_GNULIB_MDA_DUP@ GL_GNULIB_MDA_DUP2 = @GL_GNULIB_MDA_DUP2@ GL_GNULIB_MDA_ECVT = @GL_GNULIB_MDA_ECVT@ GL_GNULIB_MDA_EXECL = @GL_GNULIB_MDA_EXECL@ GL_GNULIB_MDA_EXECLE = @GL_GNULIB_MDA_EXECLE@ GL_GNULIB_MDA_EXECLP = @GL_GNULIB_MDA_EXECLP@ GL_GNULIB_MDA_EXECV = @GL_GNULIB_MDA_EXECV@ GL_GNULIB_MDA_EXECVE = @GL_GNULIB_MDA_EXECVE@ GL_GNULIB_MDA_EXECVP = @GL_GNULIB_MDA_EXECVP@ GL_GNULIB_MDA_EXECVPE = @GL_GNULIB_MDA_EXECVPE@ GL_GNULIB_MDA_FCLOSEALL = @GL_GNULIB_MDA_FCLOSEALL@ GL_GNULIB_MDA_FCVT = @GL_GNULIB_MDA_FCVT@ GL_GNULIB_MDA_FDOPEN = @GL_GNULIB_MDA_FDOPEN@ GL_GNULIB_MDA_FILENO = @GL_GNULIB_MDA_FILENO@ GL_GNULIB_MDA_GCVT = @GL_GNULIB_MDA_GCVT@ GL_GNULIB_MDA_GETCWD = @GL_GNULIB_MDA_GETCWD@ GL_GNULIB_MDA_GETPID = @GL_GNULIB_MDA_GETPID@ GL_GNULIB_MDA_GETW = @GL_GNULIB_MDA_GETW@ GL_GNULIB_MDA_ISATTY = @GL_GNULIB_MDA_ISATTY@ GL_GNULIB_MDA_J0 = @GL_GNULIB_MDA_J0@ GL_GNULIB_MDA_J1 = @GL_GNULIB_MDA_J1@ GL_GNULIB_MDA_JN = @GL_GNULIB_MDA_JN@ GL_GNULIB_MDA_LSEEK = @GL_GNULIB_MDA_LSEEK@ GL_GNULIB_MDA_MEMCCPY = @GL_GNULIB_MDA_MEMCCPY@ GL_GNULIB_MDA_MKDIR = @GL_GNULIB_MDA_MKDIR@ GL_GNULIB_MDA_MKTEMP = @GL_GNULIB_MDA_MKTEMP@ GL_GNULIB_MDA_OPEN = @GL_GNULIB_MDA_OPEN@ GL_GNULIB_MDA_PUTENV = @GL_GNULIB_MDA_PUTENV@ GL_GNULIB_MDA_PUTW = @GL_GNULIB_MDA_PUTW@ GL_GNULIB_MDA_READ = @GL_GNULIB_MDA_READ@ GL_GNULIB_MDA_RMDIR = @GL_GNULIB_MDA_RMDIR@ GL_GNULIB_MDA_STRDUP = @GL_GNULIB_MDA_STRDUP@ GL_GNULIB_MDA_SWAB = @GL_GNULIB_MDA_SWAB@ GL_GNULIB_MDA_TEMPNAM = @GL_GNULIB_MDA_TEMPNAM@ GL_GNULIB_MDA_TZSET = @GL_GNULIB_MDA_TZSET@ GL_GNULIB_MDA_UMASK = @GL_GNULIB_MDA_UMASK@ GL_GNULIB_MDA_UNLINK = @GL_GNULIB_MDA_UNLINK@ GL_GNULIB_MDA_UTIME = @GL_GNULIB_MDA_UTIME@ GL_GNULIB_MDA_WCSDUP = @GL_GNULIB_MDA_WCSDUP@ GL_GNULIB_MDA_WRITE = @GL_GNULIB_MDA_WRITE@ GL_GNULIB_MDA_Y0 = @GL_GNULIB_MDA_Y0@ GL_GNULIB_MDA_Y1 = @GL_GNULIB_MDA_Y1@ GL_GNULIB_MDA_YN = @GL_GNULIB_MDA_YN@ GL_GNULIB_MEMCHR = @GL_GNULIB_MEMCHR@ GL_GNULIB_MEMMEM = @GL_GNULIB_MEMMEM@ GL_GNULIB_MEMPCPY = @GL_GNULIB_MEMPCPY@ GL_GNULIB_MEMRCHR = @GL_GNULIB_MEMRCHR@ GL_GNULIB_MEMSET_EXPLICIT = @GL_GNULIB_MEMSET_EXPLICIT@ GL_GNULIB_MKDIR = @GL_GNULIB_MKDIR@ GL_GNULIB_MKDIRAT = @GL_GNULIB_MKDIRAT@ GL_GNULIB_MKDTEMP = @GL_GNULIB_MKDTEMP@ GL_GNULIB_MKFIFO = @GL_GNULIB_MKFIFO@ GL_GNULIB_MKFIFOAT = @GL_GNULIB_MKFIFOAT@ GL_GNULIB_MKNOD = @GL_GNULIB_MKNOD@ GL_GNULIB_MKNODAT = @GL_GNULIB_MKNODAT@ GL_GNULIB_MKOSTEMP = @GL_GNULIB_MKOSTEMP@ GL_GNULIB_MKOSTEMPS = @GL_GNULIB_MKOSTEMPS@ GL_GNULIB_MKSTEMP = @GL_GNULIB_MKSTEMP@ GL_GNULIB_MKSTEMPS = @GL_GNULIB_MKSTEMPS@ GL_GNULIB_MKTIME = @GL_GNULIB_MKTIME@ GL_GNULIB_MODF = @GL_GNULIB_MODF@ GL_GNULIB_MODFF = @GL_GNULIB_MODFF@ GL_GNULIB_MODFL = @GL_GNULIB_MODFL@ GL_GNULIB_NANOSLEEP = @GL_GNULIB_NANOSLEEP@ GL_GNULIB_NONBLOCKING = @GL_GNULIB_NONBLOCKING@ GL_GNULIB_OBSTACK_PRINTF = @GL_GNULIB_OBSTACK_PRINTF@ GL_GNULIB_OBSTACK_PRINTF_POSIX = @GL_GNULIB_OBSTACK_PRINTF_POSIX@ GL_GNULIB_OPEN = @GL_GNULIB_OPEN@ GL_GNULIB_OPENAT = @GL_GNULIB_OPENAT@ GL_GNULIB_OVERRIDES_STRUCT_STAT = @GL_GNULIB_OVERRIDES_STRUCT_STAT@ GL_GNULIB_PCLOSE = @GL_GNULIB_PCLOSE@ GL_GNULIB_PERROR = @GL_GNULIB_PERROR@ GL_GNULIB_PIPE = @GL_GNULIB_PIPE@ GL_GNULIB_PIPE2 = @GL_GNULIB_PIPE2@ GL_GNULIB_POPEN = @GL_GNULIB_POPEN@ GL_GNULIB_POSIX_MEMALIGN = @GL_GNULIB_POSIX_MEMALIGN@ GL_GNULIB_POSIX_OPENPT = @GL_GNULIB_POSIX_OPENPT@ GL_GNULIB_POWF = @GL_GNULIB_POWF@ GL_GNULIB_PREAD = @GL_GNULIB_PREAD@ GL_GNULIB_PRINTF = @GL_GNULIB_PRINTF@ GL_GNULIB_PRINTF_POSIX = @GL_GNULIB_PRINTF_POSIX@ GL_GNULIB_PTHREAD_SIGMASK = @GL_GNULIB_PTHREAD_SIGMASK@ GL_GNULIB_PTSNAME = @GL_GNULIB_PTSNAME@ GL_GNULIB_PTSNAME_R = @GL_GNULIB_PTSNAME_R@ GL_GNULIB_PUTC = @GL_GNULIB_PUTC@ GL_GNULIB_PUTCHAR = @GL_GNULIB_PUTCHAR@ GL_GNULIB_PUTENV = @GL_GNULIB_PUTENV@ GL_GNULIB_PUTS = @GL_GNULIB_PUTS@ GL_GNULIB_PWRITE = @GL_GNULIB_PWRITE@ GL_GNULIB_QSORT_R = @GL_GNULIB_QSORT_R@ GL_GNULIB_RAISE = @GL_GNULIB_RAISE@ GL_GNULIB_RANDOM = @GL_GNULIB_RANDOM@ GL_GNULIB_RANDOM_R = @GL_GNULIB_RANDOM_R@ GL_GNULIB_RAWMEMCHR = @GL_GNULIB_RAWMEMCHR@ GL_GNULIB_READ = @GL_GNULIB_READ@ GL_GNULIB_READLINK = @GL_GNULIB_READLINK@ GL_GNULIB_READLINKAT = @GL_GNULIB_READLINKAT@ GL_GNULIB_REALLOCARRAY = @GL_GNULIB_REALLOCARRAY@ GL_GNULIB_REALLOC_GNU = @GL_GNULIB_REALLOC_GNU@ GL_GNULIB_REALLOC_POSIX = @GL_GNULIB_REALLOC_POSIX@ GL_GNULIB_REALPATH = @GL_GNULIB_REALPATH@ GL_GNULIB_REMAINDER = @GL_GNULIB_REMAINDER@ GL_GNULIB_REMAINDERF = @GL_GNULIB_REMAINDERF@ GL_GNULIB_REMAINDERL = @GL_GNULIB_REMAINDERL@ GL_GNULIB_REMOVE = @GL_GNULIB_REMOVE@ GL_GNULIB_RENAME = @GL_GNULIB_RENAME@ GL_GNULIB_RENAMEAT = @GL_GNULIB_RENAMEAT@ GL_GNULIB_RINT = @GL_GNULIB_RINT@ GL_GNULIB_RINTF = @GL_GNULIB_RINTF@ GL_GNULIB_RINTL = @GL_GNULIB_RINTL@ GL_GNULIB_RMDIR = @GL_GNULIB_RMDIR@ GL_GNULIB_ROUND = @GL_GNULIB_ROUND@ GL_GNULIB_ROUNDF = @GL_GNULIB_ROUNDF@ GL_GNULIB_ROUNDL = @GL_GNULIB_ROUNDL@ GL_GNULIB_RPMATCH = @GL_GNULIB_RPMATCH@ GL_GNULIB_SCANF = @GL_GNULIB_SCANF@ GL_GNULIB_SECURE_GETENV = @GL_GNULIB_SECURE_GETENV@ GL_GNULIB_SETENV = @GL_GNULIB_SETENV@ GL_GNULIB_SETHOSTNAME = @GL_GNULIB_SETHOSTNAME@ GL_GNULIB_SETLOCALE = @GL_GNULIB_SETLOCALE@ GL_GNULIB_SETLOCALE_NULL = @GL_GNULIB_SETLOCALE_NULL@ GL_GNULIB_SIGABBREV_NP = @GL_GNULIB_SIGABBREV_NP@ GL_GNULIB_SIGACTION = @GL_GNULIB_SIGACTION@ GL_GNULIB_SIGDESCR_NP = @GL_GNULIB_SIGDESCR_NP@ GL_GNULIB_SIGNAL_H_SIGPIPE = @GL_GNULIB_SIGNAL_H_SIGPIPE@ GL_GNULIB_SIGNBIT = @GL_GNULIB_SIGNBIT@ GL_GNULIB_SIGPROCMASK = @GL_GNULIB_SIGPROCMASK@ GL_GNULIB_SINF = @GL_GNULIB_SINF@ GL_GNULIB_SINHF = @GL_GNULIB_SINHF@ GL_GNULIB_SINL = @GL_GNULIB_SINL@ GL_GNULIB_SLEEP = @GL_GNULIB_SLEEP@ GL_GNULIB_SNPRINTF = @GL_GNULIB_SNPRINTF@ GL_GNULIB_SPRINTF_POSIX = @GL_GNULIB_SPRINTF_POSIX@ GL_GNULIB_SQRTF = @GL_GNULIB_SQRTF@ GL_GNULIB_SQRTL = @GL_GNULIB_SQRTL@ GL_GNULIB_STAT = @GL_GNULIB_STAT@ GL_GNULIB_STDIO_H_NONBLOCKING = @GL_GNULIB_STDIO_H_NONBLOCKING@ GL_GNULIB_STDIO_H_SIGPIPE = @GL_GNULIB_STDIO_H_SIGPIPE@ GL_GNULIB_STPCPY = @GL_GNULIB_STPCPY@ GL_GNULIB_STPNCPY = @GL_GNULIB_STPNCPY@ GL_GNULIB_STRCASESTR = @GL_GNULIB_STRCASESTR@ GL_GNULIB_STRCHRNUL = @GL_GNULIB_STRCHRNUL@ GL_GNULIB_STRDUP = @GL_GNULIB_STRDUP@ GL_GNULIB_STRERROR = @GL_GNULIB_STRERROR@ GL_GNULIB_STRERRORNAME_NP = @GL_GNULIB_STRERRORNAME_NP@ GL_GNULIB_STRERROR_R = @GL_GNULIB_STRERROR_R@ GL_GNULIB_STRFTIME = @GL_GNULIB_STRFTIME@ GL_GNULIB_STRNCAT = @GL_GNULIB_STRNCAT@ GL_GNULIB_STRNDUP = @GL_GNULIB_STRNDUP@ GL_GNULIB_STRNLEN = @GL_GNULIB_STRNLEN@ GL_GNULIB_STRPBRK = @GL_GNULIB_STRPBRK@ GL_GNULIB_STRPTIME = @GL_GNULIB_STRPTIME@ GL_GNULIB_STRSEP = @GL_GNULIB_STRSEP@ GL_GNULIB_STRSIGNAL = @GL_GNULIB_STRSIGNAL@ GL_GNULIB_STRSTR = @GL_GNULIB_STRSTR@ GL_GNULIB_STRTOD = @GL_GNULIB_STRTOD@ GL_GNULIB_STRTOIMAX = @GL_GNULIB_STRTOIMAX@ GL_GNULIB_STRTOK_R = @GL_GNULIB_STRTOK_R@ GL_GNULIB_STRTOL = @GL_GNULIB_STRTOL@ GL_GNULIB_STRTOLD = @GL_GNULIB_STRTOLD@ GL_GNULIB_STRTOLL = @GL_GNULIB_STRTOLL@ GL_GNULIB_STRTOUL = @GL_GNULIB_STRTOUL@ GL_GNULIB_STRTOULL = @GL_GNULIB_STRTOULL@ GL_GNULIB_STRTOUMAX = @GL_GNULIB_STRTOUMAX@ GL_GNULIB_STRVERSCMP = @GL_GNULIB_STRVERSCMP@ GL_GNULIB_SYMLINK = @GL_GNULIB_SYMLINK@ GL_GNULIB_SYMLINKAT = @GL_GNULIB_SYMLINKAT@ GL_GNULIB_SYSTEM_POSIX = @GL_GNULIB_SYSTEM_POSIX@ GL_GNULIB_TANF = @GL_GNULIB_TANF@ GL_GNULIB_TANHF = @GL_GNULIB_TANHF@ GL_GNULIB_TANL = @GL_GNULIB_TANL@ GL_GNULIB_TIMEGM = @GL_GNULIB_TIMEGM@ GL_GNULIB_TIMESPEC_GET = @GL_GNULIB_TIMESPEC_GET@ GL_GNULIB_TIMESPEC_GETRES = @GL_GNULIB_TIMESPEC_GETRES@ GL_GNULIB_TIME_R = @GL_GNULIB_TIME_R@ GL_GNULIB_TIME_RZ = @GL_GNULIB_TIME_RZ@ GL_GNULIB_TMPFILE = @GL_GNULIB_TMPFILE@ GL_GNULIB_TOWCTRANS = @GL_GNULIB_TOWCTRANS@ GL_GNULIB_TRUNC = @GL_GNULIB_TRUNC@ GL_GNULIB_TRUNCATE = @GL_GNULIB_TRUNCATE@ GL_GNULIB_TRUNCF = @GL_GNULIB_TRUNCF@ GL_GNULIB_TRUNCL = @GL_GNULIB_TRUNCL@ GL_GNULIB_TTYNAME_R = @GL_GNULIB_TTYNAME_R@ GL_GNULIB_TZSET = @GL_GNULIB_TZSET@ GL_GNULIB_UNISTD_H_GETOPT = @GL_GNULIB_UNISTD_H_GETOPT@ GL_GNULIB_UNISTD_H_NONBLOCKING = @GL_GNULIB_UNISTD_H_NONBLOCKING@ GL_GNULIB_UNISTD_H_SIGPIPE = @GL_GNULIB_UNISTD_H_SIGPIPE@ GL_GNULIB_UNLINK = @GL_GNULIB_UNLINK@ GL_GNULIB_UNLINKAT = @GL_GNULIB_UNLINKAT@ GL_GNULIB_UNLOCKPT = @GL_GNULIB_UNLOCKPT@ GL_GNULIB_UNSETENV = @GL_GNULIB_UNSETENV@ GL_GNULIB_USLEEP = @GL_GNULIB_USLEEP@ GL_GNULIB_UTIME = @GL_GNULIB_UTIME@ GL_GNULIB_UTIMENSAT = @GL_GNULIB_UTIMENSAT@ GL_GNULIB_VASPRINTF = @GL_GNULIB_VASPRINTF@ GL_GNULIB_VDPRINTF = @GL_GNULIB_VDPRINTF@ GL_GNULIB_VFPRINTF = @GL_GNULIB_VFPRINTF@ GL_GNULIB_VFPRINTF_POSIX = @GL_GNULIB_VFPRINTF_POSIX@ GL_GNULIB_VFSCANF = @GL_GNULIB_VFSCANF@ GL_GNULIB_VPRINTF = @GL_GNULIB_VPRINTF@ GL_GNULIB_VPRINTF_POSIX = @GL_GNULIB_VPRINTF_POSIX@ GL_GNULIB_VSCANF = @GL_GNULIB_VSCANF@ GL_GNULIB_VSNPRINTF = @GL_GNULIB_VSNPRINTF@ GL_GNULIB_VSPRINTF_POSIX = @GL_GNULIB_VSPRINTF_POSIX@ GL_GNULIB_WAITPID = @GL_GNULIB_WAITPID@ GL_GNULIB_WCPCPY = @GL_GNULIB_WCPCPY@ GL_GNULIB_WCPNCPY = @GL_GNULIB_WCPNCPY@ GL_GNULIB_WCRTOMB = @GL_GNULIB_WCRTOMB@ GL_GNULIB_WCSCASECMP = @GL_GNULIB_WCSCASECMP@ GL_GNULIB_WCSCAT = @GL_GNULIB_WCSCAT@ GL_GNULIB_WCSCHR = @GL_GNULIB_WCSCHR@ GL_GNULIB_WCSCMP = @GL_GNULIB_WCSCMP@ GL_GNULIB_WCSCOLL = @GL_GNULIB_WCSCOLL@ GL_GNULIB_WCSCPY = @GL_GNULIB_WCSCPY@ GL_GNULIB_WCSCSPN = @GL_GNULIB_WCSCSPN@ GL_GNULIB_WCSDUP = @GL_GNULIB_WCSDUP@ GL_GNULIB_WCSFTIME = @GL_GNULIB_WCSFTIME@ GL_GNULIB_WCSLEN = @GL_GNULIB_WCSLEN@ GL_GNULIB_WCSNCASECMP = @GL_GNULIB_WCSNCASECMP@ GL_GNULIB_WCSNCAT = @GL_GNULIB_WCSNCAT@ GL_GNULIB_WCSNCMP = @GL_GNULIB_WCSNCMP@ GL_GNULIB_WCSNCPY = @GL_GNULIB_WCSNCPY@ GL_GNULIB_WCSNLEN = @GL_GNULIB_WCSNLEN@ GL_GNULIB_WCSNRTOMBS = @GL_GNULIB_WCSNRTOMBS@ GL_GNULIB_WCSPBRK = @GL_GNULIB_WCSPBRK@ GL_GNULIB_WCSRCHR = @GL_GNULIB_WCSRCHR@ GL_GNULIB_WCSRTOMBS = @GL_GNULIB_WCSRTOMBS@ GL_GNULIB_WCSSPN = @GL_GNULIB_WCSSPN@ GL_GNULIB_WCSSTR = @GL_GNULIB_WCSSTR@ GL_GNULIB_WCSTOK = @GL_GNULIB_WCSTOK@ GL_GNULIB_WCSWIDTH = @GL_GNULIB_WCSWIDTH@ GL_GNULIB_WCSXFRM = @GL_GNULIB_WCSXFRM@ GL_GNULIB_WCTOB = @GL_GNULIB_WCTOB@ GL_GNULIB_WCTOMB = @GL_GNULIB_WCTOMB@ GL_GNULIB_WCTRANS = @GL_GNULIB_WCTRANS@ GL_GNULIB_WCTYPE = @GL_GNULIB_WCTYPE@ GL_GNULIB_WCWIDTH = @GL_GNULIB_WCWIDTH@ GL_GNULIB_WMEMCHR = @GL_GNULIB_WMEMCHR@ GL_GNULIB_WMEMCMP = @GL_GNULIB_WMEMCMP@ GL_GNULIB_WMEMCPY = @GL_GNULIB_WMEMCPY@ GL_GNULIB_WMEMMOVE = @GL_GNULIB_WMEMMOVE@ GL_GNULIB_WMEMPCPY = @GL_GNULIB_WMEMPCPY@ GL_GNULIB_WMEMSET = @GL_GNULIB_WMEMSET@ GL_GNULIB_WRITE = @GL_GNULIB_WRITE@ GL_GNULIB__EXIT = @GL_GNULIB__EXIT@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNULIBHEADERS_OVERRIDE_WINT_T = @GNULIBHEADERS_OVERRIDE_WINT_T@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GREP = @GREP@ HARD_LOCALE_LIB = @HARD_LOCALE_LIB@ HAVE_ACOSF = @HAVE_ACOSF@ HAVE_ACOSL = @HAVE_ACOSL@ HAVE_ALIGNED_ALLOC = @HAVE_ALIGNED_ALLOC@ HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ HAVE_ASINF = @HAVE_ASINF@ HAVE_ASINL = @HAVE_ASINL@ HAVE_ATAN2F = @HAVE_ATAN2F@ HAVE_ATANF = @HAVE_ATANF@ HAVE_ATANL = @HAVE_ATANL@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CBRT = @HAVE_CBRT@ HAVE_CBRTF = @HAVE_CBRTF@ HAVE_CBRTL = @HAVE_CBRTL@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_COPYSIGN = @HAVE_COPYSIGN@ HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@ HAVE_COSF = @HAVE_COSF@ HAVE_COSHF = @HAVE_COSHF@ HAVE_COSL = @HAVE_COSL@ HAVE_CRTDEFS_H = @HAVE_CRTDEFS_H@ HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ HAVE_DECL_COSL = @HAVE_DECL_COSL@ HAVE_DECL_ECVT = @HAVE_DECL_ECVT@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_EXECVPE = @HAVE_DECL_EXECVPE@ HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FCLOSEALL = @HAVE_DECL_FCLOSEALL@ HAVE_DECL_FCVT = @HAVE_DECL_FCVT@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GCVT = @HAVE_DECL_GCVT@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_GETW = @HAVE_DECL_GETW@ HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@ HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_PUTW = @HAVE_DECL_PUTW@ HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@ HAVE_DECL_SINL = @HAVE_DECL_SINL@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ HAVE_DECL_TANL = @HAVE_DECL_TANL@ HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@ HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DECL_WCSDUP = @HAVE_DECL_WCSDUP@ HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ HAVE_ERROR = @HAVE_ERROR@ HAVE_ERROR_AT_LINE = @HAVE_ERROR_AT_LINE@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_EXECVPE = @HAVE_EXECVPE@ HAVE_EXPF = @HAVE_EXPF@ HAVE_EXPL = @HAVE_EXPL@ HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@ HAVE_EXPM1 = @HAVE_EXPM1@ HAVE_EXPM1F = @HAVE_EXPM1F@ HAVE_FABSF = @HAVE_FABSF@ HAVE_FABSL = @HAVE_FABSL@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FCNTL = @HAVE_FCNTL@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FMA = @HAVE_FMA@ HAVE_FMAF = @HAVE_FMAF@ HAVE_FMAL = @HAVE_FMAL@ HAVE_FMODF = @HAVE_FMODF@ HAVE_FMODL = @HAVE_FMODL@ HAVE_FREELOCALE = @HAVE_FREELOCALE@ HAVE_FREXPF = @HAVE_FREXPF@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETENTROPY = @HAVE_GETENTROPY@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETPASS = @HAVE_GETPASS@ HAVE_GETPROGNAME = @HAVE_GETPROGNAME@ HAVE_GETRANDOM = @HAVE_GETRANDOM@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETUMASK = @HAVE_GETUMASK@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_HYPOTF = @HAVE_HYPOTF@ HAVE_HYPOTL = @HAVE_HYPOTL@ HAVE_ILOGB = @HAVE_ILOGB@ HAVE_ILOGBF = @HAVE_ILOGBF@ HAVE_ILOGBL = @HAVE_ILOGBL@ HAVE_IMAXABS = @HAVE_IMAXABS@ HAVE_IMAXDIV = @HAVE_IMAXDIV@ HAVE_IMAXDIV_T = @HAVE_IMAXDIV_T@ HAVE_INITSTATE = @HAVE_INITSTATE@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_ISNAND = @HAVE_ISNAND@ HAVE_ISNANF = @HAVE_ISNANF@ HAVE_ISNANL = @HAVE_ISNANL@ HAVE_ISWBLANK = @HAVE_ISWBLANK@ HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LDEXPF = @HAVE_LDEXPF@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LOG10F = @HAVE_LOG10F@ HAVE_LOG10L = @HAVE_LOG10L@ HAVE_LOG1P = @HAVE_LOG1P@ HAVE_LOG1PF = @HAVE_LOG1PF@ HAVE_LOG1PL = @HAVE_LOG1PL@ HAVE_LOGBF = @HAVE_LOGBF@ HAVE_LOGBL = @HAVE_LOGBL@ HAVE_LOGF = @HAVE_LOGF@ HAVE_LOGL = @HAVE_LOGL@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ HAVE_MBRLEN = @HAVE_MBRLEN@ HAVE_MBRTOWC = @HAVE_MBRTOWC@ HAVE_MBSINIT = @HAVE_MBSINIT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ HAVE_MBTOWC = @HAVE_MBTOWC@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MEMSET_EXPLICIT = @HAVE_MEMSET_EXPLICIT@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MODFF = @HAVE_MODFF@ HAVE_MODFL = @HAVE_MODFL@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ HAVE_OPENAT = @HAVE_OPENAT@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_MEMALIGN = @HAVE_POSIX_MEMALIGN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@ HAVE_POWF = @HAVE_POWF@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_QSORT_R = @HAVE_QSORT_R@ HAVE_RAISE = @HAVE_RAISE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_REMAINDER = @HAVE_REMAINDER@ HAVE_REMAINDERF = @HAVE_REMAINDERF@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RINT = @HAVE_RINT@ HAVE_RINTL = @HAVE_RINTL@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SETSTATE = @HAVE_SETSTATE@ HAVE_SIGABBREV_NP = @HAVE_SIGABBREV_NP@ HAVE_SIGACTION = @HAVE_SIGACTION@ HAVE_SIGDESCR_NP = @HAVE_SIGDESCR_NP@ HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@ HAVE_SIGINFO_T = @HAVE_SIGINFO_T@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SIGSET_T = @HAVE_SIGSET_T@ HAVE_SINF = @HAVE_SINF@ HAVE_SINHF = @HAVE_SINHF@ HAVE_SINL = @HAVE_SINL@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_SQRTF = @HAVE_SQRTF@ HAVE_SQRTL = @HAVE_SQRTL@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRERRORNAME_NP = @HAVE_STRERRORNAME_NP@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOL = @HAVE_STRTOL@ HAVE_STRTOLD = @HAVE_STRTOLD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOUL = @HAVE_STRTOUL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_CDEFS_H = @HAVE_SYS_CDEFS_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_RANDOM_H = @HAVE_SYS_RANDOM_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TANF = @HAVE_TANF@ HAVE_TANHF = @HAVE_TANHF@ HAVE_TANL = @HAVE_TANL@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_TIMESPEC_GET = @HAVE_TIMESPEC_GET@ HAVE_TIMESPEC_GETRES = @HAVE_TIMESPEC_GETRES@ HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIME = @HAVE_UTIME@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_UTIME_H = @HAVE_UTIME_H@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WCPCPY = @HAVE_WCPCPY@ HAVE_WCPNCPY = @HAVE_WCPNCPY@ HAVE_WCRTOMB = @HAVE_WCRTOMB@ HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ HAVE_WCSCAT = @HAVE_WCSCAT@ HAVE_WCSCHR = @HAVE_WCSCHR@ HAVE_WCSCMP = @HAVE_WCSCMP@ HAVE_WCSCOLL = @HAVE_WCSCOLL@ HAVE_WCSCPY = @HAVE_WCSCPY@ HAVE_WCSCSPN = @HAVE_WCSCSPN@ HAVE_WCSDUP = @HAVE_WCSDUP@ HAVE_WCSFTIME = @HAVE_WCSFTIME@ HAVE_WCSLEN = @HAVE_WCSLEN@ HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ HAVE_WCSNCAT = @HAVE_WCSNCAT@ HAVE_WCSNCMP = @HAVE_WCSNCMP@ HAVE_WCSNCPY = @HAVE_WCSNCPY@ HAVE_WCSNLEN = @HAVE_WCSNLEN@ HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ HAVE_WCSPBRK = @HAVE_WCSPBRK@ HAVE_WCSRCHR = @HAVE_WCSRCHR@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ HAVE_WCSSPN = @HAVE_WCSSPN@ HAVE_WCSSTR = @HAVE_WCSSTR@ HAVE_WCSTOK = @HAVE_WCSTOK@ HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ HAVE_WCSXFRM = @HAVE_WCSXFRM@ HAVE_WCTRANS_T = @HAVE_WCTRANS_T@ HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ HAVE_WCTYPE_T = @HAVE_WCTYPE_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE_WINT_T = @HAVE_WINT_T@ HAVE_WMEMCHR = @HAVE_WMEMCHR@ HAVE_WMEMCMP = @HAVE_WMEMCMP@ HAVE_WMEMCPY = @HAVE_WMEMCPY@ HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ HAVE_WMEMPCPY = @HAVE_WMEMPCPY@ HAVE_WMEMSET = @HAVE_WMEMSET@ HAVE_XLOCALE_H = @HAVE_XLOCALE_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ ISYSTEM = @ISYSTEM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBPMULTITHREAD = @LIBPMULTITHREAD@ LIBPTHREAD = @LIBPTHREAD@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIB_GETRANDOM = @LIB_GETRANDOM@ LIB_HARD_LOCALE = @LIB_HARD_LOCALE@ LIB_MBRTOWC = @LIB_MBRTOWC@ LIB_SCHED_YIELD = @LIB_SCHED_YIELD@ LIB_SETLOCALE_NULL = @LIB_SETLOCALE_NULL@ LIMITS_H = @LIMITS_H@ LIPO = @LIPO@ LN_S = @LN_S@ LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ LOCALENAME_ENHANCE_LOCALE_FUNCS = @LOCALENAME_ENHANCE_LOCALE_FUNCS@ LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ LOCALE_JA = @LOCALE_JA@ LOCALE_ZH_CN = @LOCALE_ZH_CN@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MBRTOWC_LIB = @MBRTOWC_LIB@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NEXT_ASSERT_H = @NEXT_ASSERT_H@ NEXT_AS_FIRST_DIRECTIVE_ASSERT_H = @NEXT_AS_FIRST_DIRECTIVE_ASSERT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@ NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_UTIME_H = @NEXT_AS_FIRST_DIRECTIVE_UTIME_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ NEXT_FLOAT_H = @NEXT_FLOAT_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ NEXT_LIMITS_H = @NEXT_LIMITS_H@ NEXT_LOCALE_H = @NEXT_LOCALE_H@ NEXT_MATH_H = @NEXT_MATH_H@ NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_RANDOM_H = @NEXT_SYS_RANDOM_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_SYS_WAIT_H = @NEXT_SYS_WAIT_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NEXT_UTIME_H = @NEXT_UTIME_H@ NEXT_WCHAR_H = @NEXT_WCHAR_H@ NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ POSUB = @POSUB@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PRIPTR_PREFIX = @PRIPTR_PREFIX@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REPLACE_ACCESS = @REPLACE_ACCESS@ REPLACE_ACOSF = @REPLACE_ACOSF@ REPLACE_ALIGNED_ALLOC = @REPLACE_ALIGNED_ALLOC@ REPLACE_ASINF = @REPLACE_ASINF@ REPLACE_ATAN2F = @REPLACE_ATAN2F@ REPLACE_ATANF = @REPLACE_ATANF@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CBRTF = @REPLACE_CBRTF@ REPLACE_CBRTL = @REPLACE_CBRTL@ REPLACE_CEIL = @REPLACE_CEIL@ REPLACE_CEILF = @REPLACE_CEILF@ REPLACE_CEILL = @REPLACE_CEILL@ REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ REPLACE_COSF = @REPLACE_COSF@ REPLACE_COSHF = @REPLACE_COSHF@ REPLACE_CREAT = @REPLACE_CREAT@ REPLACE_CTIME = @REPLACE_CTIME@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_DUP3 = @REPLACE_DUP3@ REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ REPLACE_ERROR = @REPLACE_ERROR@ REPLACE_ERROR_AT_LINE = @REPLACE_ERROR_AT_LINE@ REPLACE_EXECL = @REPLACE_EXECL@ REPLACE_EXECLE = @REPLACE_EXECLE@ REPLACE_EXECLP = @REPLACE_EXECLP@ REPLACE_EXECV = @REPLACE_EXECV@ REPLACE_EXECVE = @REPLACE_EXECVE@ REPLACE_EXECVP = @REPLACE_EXECVP@ REPLACE_EXECVPE = @REPLACE_EXECVPE@ REPLACE_EXP2 = @REPLACE_EXP2@ REPLACE_EXP2L = @REPLACE_EXP2L@ REPLACE_EXPF = @REPLACE_EXPF@ REPLACE_EXPL = @REPLACE_EXPL@ REPLACE_EXPM1 = @REPLACE_EXPM1@ REPLACE_EXPM1F = @REPLACE_EXPM1F@ REPLACE_EXPM1L = @REPLACE_EXPM1L@ REPLACE_FABSL = @REPLACE_FABSL@ REPLACE_FACCESSAT = @REPLACE_FACCESSAT@ REPLACE_FCHMODAT = @REPLACE_FCHMODAT@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDATASYNC = @REPLACE_FDATASYNC@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FFSLL = @REPLACE_FFSLL@ REPLACE_FLOOR = @REPLACE_FLOOR@ REPLACE_FLOORF = @REPLACE_FLOORF@ REPLACE_FLOORL = @REPLACE_FLOORL@ REPLACE_FMA = @REPLACE_FMA@ REPLACE_FMAF = @REPLACE_FMAF@ REPLACE_FMAL = @REPLACE_FMAL@ REPLACE_FMOD = @REPLACE_FMOD@ REPLACE_FMODF = @REPLACE_FMODF@ REPLACE_FMODL = @REPLACE_FMODL@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FOPEN_FOR_FOPEN_GNU = @REPLACE_FOPEN_FOR_FOPEN_GNU@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREE = @REPLACE_FREE@ REPLACE_FREELOCALE = @REPLACE_FREELOCALE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FREXP = @REPLACE_FREXP@ REPLACE_FREXPF = @REPLACE_FREXPF@ REPLACE_FREXPL = @REPLACE_FREXPL@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETENTROPY = @REPLACE_GETENTROPY@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOADAVG = @REPLACE_GETLOADAVG@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETPASS = @REPLACE_GETPASS@ REPLACE_GETPASS_FOR_GETPASS_GNU = @REPLACE_GETPASS_FOR_GETPASS_GNU@ REPLACE_GETPROGNAME = @REPLACE_GETPROGNAME@ REPLACE_GETRANDOM = @REPLACE_GETRANDOM@ REPLACE_GETSUBOPT = @REPLACE_GETSUBOPT@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ REPLACE_HYPOT = @REPLACE_HYPOT@ REPLACE_HYPOTF = @REPLACE_HYPOTF@ REPLACE_HYPOTL = @REPLACE_HYPOTL@ REPLACE_ILOGB = @REPLACE_ILOGB@ REPLACE_ILOGBF = @REPLACE_ILOGBF@ REPLACE_ILOGBL = @REPLACE_ILOGBL@ REPLACE_IMAXABS = @REPLACE_IMAXABS@ REPLACE_IMAXDIV = @REPLACE_IMAXDIV@ REPLACE_INITSTATE = @REPLACE_INITSTATE@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_ISFINITE = @REPLACE_ISFINITE@ REPLACE_ISINF = @REPLACE_ISINF@ REPLACE_ISNAN = @REPLACE_ISNAN@ REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ REPLACE_ISWDIGIT = @REPLACE_ISWDIGIT@ REPLACE_ISWXDIGIT = @REPLACE_ISWXDIGIT@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LOG = @REPLACE_LOG@ REPLACE_LOG10 = @REPLACE_LOG10@ REPLACE_LOG10F = @REPLACE_LOG10F@ REPLACE_LOG10L = @REPLACE_LOG10L@ REPLACE_LOG1P = @REPLACE_LOG1P@ REPLACE_LOG1PF = @REPLACE_LOG1PF@ REPLACE_LOG1PL = @REPLACE_LOG1PL@ REPLACE_LOG2 = @REPLACE_LOG2@ REPLACE_LOG2F = @REPLACE_LOG2F@ REPLACE_LOG2L = @REPLACE_LOG2L@ REPLACE_LOGB = @REPLACE_LOGB@ REPLACE_LOGBF = @REPLACE_LOGBF@ REPLACE_LOGBL = @REPLACE_LOGBL@ REPLACE_LOGF = @REPLACE_LOGF@ REPLACE_LOGL = @REPLACE_LOGL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC_FOR_MALLOC_GNU = @REPLACE_MALLOC_FOR_MALLOC_GNU@ REPLACE_MALLOC_FOR_MALLOC_POSIX = @REPLACE_MALLOC_FOR_MALLOC_POSIX@ REPLACE_MBRLEN = @REPLACE_MBRLEN@ REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ REPLACE_MBSINIT = @REPLACE_MBSINIT@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MEMPCPY = @REPLACE_MEMPCPY@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKFIFOAT = @REPLACE_MKFIFOAT@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKNODAT = @REPLACE_MKNODAT@ REPLACE_MKOSTEMP = @REPLACE_MKOSTEMP@ REPLACE_MKOSTEMPS = @REPLACE_MKOSTEMPS@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_MODF = @REPLACE_MODF@ REPLACE_MODFF = @REPLACE_MODFF@ REPLACE_MODFL = @REPLACE_MODFL@ REPLACE_NAN = @REPLACE_NAN@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NEWLOCALE = @REPLACE_NEWLOCALE@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_OPEN = @REPLACE_OPEN@ REPLACE_OPENAT = @REPLACE_OPENAT@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_PIPE2 = @REPLACE_PIPE2@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_POSIX_MEMALIGN = @REPLACE_POSIX_MEMALIGN@ REPLACE_POSIX_OPENPT = @REPLACE_POSIX_OPENPT@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_QSORT_R = @REPLACE_QSORT_R@ REPLACE_RAISE = @REPLACE_RAISE@ REPLACE_RANDOM = @REPLACE_RANDOM@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_READLINKAT = @REPLACE_READLINKAT@ REPLACE_REALLOCARRAY = @REPLACE_REALLOCARRAY@ REPLACE_REALLOC_FOR_REALLOC_GNU = @REPLACE_REALLOC_FOR_REALLOC_GNU@ REPLACE_REALLOC_FOR_REALLOC_POSIX = @REPLACE_REALLOC_FOR_REALLOC_POSIX@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMAINDER = @REPLACE_REMAINDER@ REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RINTL = @REPLACE_RINTL@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_ROUND = @REPLACE_ROUND@ REPLACE_ROUNDF = @REPLACE_ROUNDF@ REPLACE_ROUNDL = @REPLACE_ROUNDL@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SETHOSTNAME = @REPLACE_SETHOSTNAME@ REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ REPLACE_SETSTATE = @REPLACE_SETSTATE@ REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ REPLACE_SIGNBIT_USING_BUILTINS = @REPLACE_SIGNBIT_USING_BUILTINS@ REPLACE_SINF = @REPLACE_SINF@ REPLACE_SINHF = @REPLACE_SINHF@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_SQRTF = @REPLACE_SQRTF@ REPLACE_SQRTL = @REPLACE_SQRTL@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPCPY = @REPLACE_STPCPY@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERRORNAME_NP = @REPLACE_STRERRORNAME_NP@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRFTIME = @REPLACE_STRFTIME@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRTOL = @REPLACE_STRTOL@ REPLACE_STRTOLD = @REPLACE_STRTOLD@ REPLACE_STRTOLL = @REPLACE_STRTOLL@ REPLACE_STRTOUL = @REPLACE_STRTOUL@ REPLACE_STRTOULL = @REPLACE_STRTOULL@ REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ REPLACE_TANF = @REPLACE_TANF@ REPLACE_TANHF = @REPLACE_TANHF@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TIMESPEC_GET = @REPLACE_TIMESPEC_GET@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ REPLACE_TRUNC = @REPLACE_TRUNC@ REPLACE_TRUNCATE = @REPLACE_TRUNCATE@ REPLACE_TRUNCF = @REPLACE_TRUNCF@ REPLACE_TRUNCL = @REPLACE_TRUNCL@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_TZSET = @REPLACE_TZSET@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIME = @REPLACE_UTIME@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ REPLACE_WCSFTIME = @REPLACE_WCSFTIME@ REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ REPLACE_WCSTOK = @REPLACE_WCSTOK@ REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ REPLACE_WCTOB = @REPLACE_WCTOB@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ REPLACE_WMEMPCPY = @REPLACE_WMEMPCPY@ REPLACE_WRITE = @REPLACE_WRITE@ REPLACE__EXIT = @REPLACE__EXIT@ SCHED_YIELD_LIB = @SCHED_YIELD_LIB@ SED = @SED@ SETLOCALE_NULL_LIB = @SETLOCALE_NULL_LIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TESTS_ENVIRONMENT_EXTRA = @TESTS_ENVIRONMENT_EXTRA@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_TIME_UTC = @TIME_H_DEFINES_TIME_UTC@ UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_DEFINES_STRUCT_TIMESPEC = @UNISTD_H_DEFINES_STRUCT_TIMESPEC@ UNISTD_H_HAVE_SYS_RANDOM_H = @UNISTD_H_HAVE_SYS_RANDOM_H@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSION_INFO = @VERSION_INFO@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@ WINDOWS_STAT_TIMESPEC = @WINDOWS_STAT_TIMESPEC@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ objdir = @objdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyextext = @pyextext@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = gnits info_TEXINFOS = recode.texi recode_TEXINFOS = rfc1345.texi EXTRA_DIST = File-Latin1 MOSTLYCLEANFILES = recode.ops # Relative to $(srcdir). KELD = ../keld CHARSETS_DEF = $(KELD)/charsets.def MNEMONICS_DS = $(KELD)/iso10646.def $(KELD)/other.def $(KELD)/control.def TABLES_PY = $(PYTHON) $(top_srcdir)/tables.py all: all-am .SUFFIXES: .SUFFIXES: .dvi .html .info .pdf .ps .texi $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs .texi.info: $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \ am__cwd=`pwd` && $(am__cd) $(srcdir) && \ rm -rf $$backupdir && mkdir $$backupdir && \ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ done; \ else :; fi && \ cd "$$am__cwd"; \ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $@ $<; \ then \ rc=0; \ $(am__cd) $(srcdir); \ else \ rc=$$?; \ $(am__cd) $(srcdir) && \ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ fi; \ rm -rf $$backupdir; exit $$rc .texi.dvi: $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \ $< .texi.pdf: $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \ $< .texi.html: $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp) $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $(@:.html=.htp) $<; \ then \ rm -rf $@ && mv $(@:.html=.htp) $@; \ else \ rm -rf $(@:.html=.htp); exit 1; \ fi $(srcdir)/recode.info: recode.texi $(srcdir)/version.texi $(recode_TEXINFOS) recode.dvi: recode.texi $(srcdir)/version.texi $(recode_TEXINFOS) recode.pdf: recode.texi $(srcdir)/version.texi $(recode_TEXINFOS) recode.html: recode.texi $(srcdir)/version.texi $(recode_TEXINFOS) $(srcdir)/version.texi: $(srcdir)/stamp-vti $(srcdir)/stamp-vti: recode.texi $(top_srcdir)/configure @(dir=.; test -f ./recode.texi || dir=$(srcdir); \ set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/recode.texi`; \ echo "@set UPDATED $$1 $$2 $$3"; \ echo "@set UPDATED-MONTH $$2 $$3"; \ echo "@set EDITION $(VERSION)"; \ echo "@set VERSION $(VERSION)") > vti.tmp$$$$ && \ (cmp -s vti.tmp$$$$ $(srcdir)/version.texi \ || (echo "Updating $(srcdir)/version.texi" && \ cp vti.tmp$$$$ $(srcdir)/version.texi.tmp$$$$ && \ mv $(srcdir)/version.texi.tmp$$$$ $(srcdir)/version.texi)) && \ rm -f vti.tmp$$$$ $(srcdir)/version.texi.$$$$ @cp $(srcdir)/version.texi $@ mostlyclean-vti: -rm -f vti.tmp* $(srcdir)/version.texi.tmp* maintainer-clean-vti: -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi .dvi.ps: $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ $(DVIPS) $(AM_V_texinfo) -o $@ $< uninstall-dvi-am: @$(NORMAL_UNINSTALL) @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ rm -f "$(DESTDIR)$(dvidir)/$$f"; \ done uninstall-html-am: @$(NORMAL_UNINSTALL) @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ done uninstall-info-am: @$(PRE_UNINSTALL) @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \ list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ done; \ else :; fi @$(NORMAL_UNINSTALL) @list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ else :; fi); \ done uninstall-pdf-am: @$(NORMAL_UNINSTALL) @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ done uninstall-ps-am: @$(NORMAL_UNINSTALL) @list='$(PSS)'; test -n "$(psdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ rm -f "$(DESTDIR)$(psdir)/$$f"; \ done dist-info: $(INFO_DEPS) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; \ for base in $$list; do \ case $$base in \ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ esac; \ if test -f $$base; then d=.; else d=$(srcdir); fi; \ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ if test -f $$file; then \ relfile=`expr "$$file" : "$$d/\(.*\)"`; \ test -f "$(distdir)/$$relfile" || \ cp -p $$file "$(distdir)/$$relfile"; \ else :; fi; \ done; \ done mostlyclean-aminfo: -rm -rf recode.t2d recode.t2p clean-aminfo: -test -z "recode.dvi recode.pdf recode.ps recode.html" \ || rm -rf recode.dvi recode.pdf recode.ps recode.html maintainer-clean-aminfo: @list='$(INFO_DEPS)'; for i in $$list; do \ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ done tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-info check-am: all-am check: check-am all-am: Makefile $(INFO_DEPS) installdirs: for dir in "$(DESTDIR)$(infodir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi-am: $(DVIS) html: html-am html-am: $(HTMLS) info: info-am info-am: $(INFO_DEPS) install-data-am: install-info-am install-dvi: install-dvi-am install-dvi-am: $(DVIS) @$(NORMAL_INSTALL) @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \ $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ done install-exec-am: install-html: install-html-am install-html-am: $(HTMLS) @$(NORMAL_INSTALL) @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ $(am__strip_dir) \ d2=$$d$$p; \ if test -d "$$d2"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \ $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ else \ list2="$$list2 $$d2"; \ fi; \ done; \ test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ done; } install-info: install-info-am install-info-am: $(INFO_DEPS) @$(NORMAL_INSTALL) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \ $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \ fi; \ for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ esac; \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ if test -f $$ifile; then \ echo "$$ifile"; \ else : ; fi; \ done; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done @$(POST_INSTALL) @if $(am__can_run_installinfo); then \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ done; \ else : ; fi install-man: install-pdf: install-pdf-am install-pdf-am: $(PDFS) @$(NORMAL_INSTALL) @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done install-ps: install-ps-am install-ps-am: $(PSS) @$(NORMAL_INSTALL) @list='$(PSS)'; test -n "$(psdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-vti mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \ mostlyclean-libtool mostlyclean-vti pdf: pdf-am pdf-am: $(PDFS) ps: ps-am ps-am: $(PSS) uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ uninstall-pdf-am uninstall-ps-am .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-aminfo clean-generic \ clean-libtool cscopelist-am ctags-am dist-info distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-aminfo maintainer-clean-generic \ maintainer-clean-vti mostlyclean mostlyclean-aminfo \ mostlyclean-generic mostlyclean-libtool mostlyclean-vti pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-dvi-am uninstall-html-am uninstall-info-am \ uninstall-pdf-am uninstall-ps-am .PRECIOUS: Makefile # Disable dvi target, to avoid needing TeX for make distcheck # (and in any case, no-one wants DVI) dvi: # There is duplication of work with making src/strip-{pool,data}.c. # This used to be combined, but it seems clearer to keep both separate. rfc1345.texi: ../tables.py $(MNEMONICS_DS) $(CHARSETS_DEF) $(TABLES_PY) -C $(srcdir) -t $(MNEMONICS_DS) $(CHARSETS_DEF) fr-rfc1345.texi: ../tables.py $(MNEMONICS_DS) $(CHARSETS_DEF) $(TABLES_PY) -C $(srcdir) -Ft $(MNEMONICS_DS) $(CHARSETS_DEF) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: recode-3.7.15/doc/Makefile.am0000644000175000017500000000306514373673401011346 # Makefile for Recode documentation. # Copyright © 1994-2019 Free Software Foundation, Inc. # François Pinard # 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 3, 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, see . AUTOMAKE_OPTIONS = gnits info_TEXINFOS = recode.texi recode_TEXINFOS = rfc1345.texi EXTRA_DIST = File-Latin1 MOSTLYCLEANFILES = recode.ops # Relative to $(srcdir). KELD = ../keld CHARSETS_DEF = $(KELD)/charsets.def MNEMONICS_DS = $(KELD)/iso10646.def $(KELD)/other.def $(KELD)/control.def TABLES_PY = $(PYTHON) $(top_srcdir)/tables.py # Disable dvi target, to avoid needing TeX for make distcheck # (and in any case, no-one wants DVI) dvi: # There is duplication of work with making src/strip-{pool,data}.c. # This used to be combined, but it seems clearer to keep both separate. rfc1345.texi: ../tables.py $(MNEMONICS_DS) $(CHARSETS_DEF) $(TABLES_PY) -C $(srcdir) -t $(MNEMONICS_DS) $(CHARSETS_DEF) fr-rfc1345.texi: ../tables.py $(MNEMONICS_DS) $(CHARSETS_DEF) $(TABLES_PY) -C $(srcdir) -Ft $(MNEMONICS_DS) $(CHARSETS_DEF) recode-3.7.15/doc/rfc1345.texi0000644000175000017500000010002414765654523011276 @item ANSI_X3.4-1968 @tindex ANSI_X3.4-1968@r{, aliases and source} @tindex 367 @tindex ANSI_X3.4-1986 @tindex ASCII @tindex CP367 @tindex IBM367 @tindex ISO646-US @tindex ISO_646.irv(1991) @tindex US-ASCII @tindex iso-ir-6 @tindex us @code{367}, @code{ANSI_X3.4-1986}, @code{ASCII}, @code{CP367}, @code{IBM367}, @code{ISO646-US}, @code{ISO_646.irv:1991}, @code{US-ASCII}, @code{iso-ir-6} and @code{us} are aliases for this charset. Source: ISO 2375 registry. @item ASMO_449 @tindex ASMO_449@r{, aliases and source} @tindex ISO_9036 @tindex arabic7 @tindex iso-ir-89 @code{ISO_9036}, @code{arabic7} and @code{iso-ir-89} are aliases for this charset. Source: ISO 2375 registry. @item BS_4730 @tindex BS_4730@r{, aliases and source} @tindex ISO646-GB @tindex gb @tindex iso-ir-4 @tindex uk @code{ISO646-GB}, @code{gb}, @code{iso-ir-4} and @code{uk} are aliases for this charset. Source: ISO 2375 registry. @item BS_viewdata @tindex BS_viewdata@r{, aliases and source} @tindex iso-ir-47 @code{iso-ir-47} is an alias for this charset. Source: ISO 2375 registry. @item CP1250 @tindex CP1250@r{, aliases and source} @tindex 1250 @tindex ms-ee @tindex windows-1250 @code{1250}, @code{ms-ee} and @code{windows-1250} are aliases for this charset. Source: UNICODE 1.0. @item CP1251 @tindex CP1251@r{, aliases and source} @tindex 1251 @tindex ms-cyrl @tindex windows-1251 @code{1251}, @code{ms-cyrl} and @code{windows-1251} are aliases for this charset. Source: UNICODE 1.0. @item CP1252 @tindex CP1252@r{, aliases and source} @tindex 1252 @tindex ms-ansi @tindex windows-1252 @code{1252}, @code{ms-ansi} and @code{windows-1252} are aliases for this charset. Source: UNICODE 1.0. @item CP1253 @tindex CP1253@r{, aliases and source} @tindex 1253 @tindex ms-greek @tindex windows-1253 @code{1253}, @code{ms-greek} and @code{windows-1253} are aliases for this charset. Source: UNICODE 1.0. @item CP1254 @tindex CP1254@r{, aliases and source} @tindex 1254 @tindex ms-turk @tindex windows-1254 @code{1254}, @code{ms-turk} and @code{windows-1254} are aliases for this charset. Source: UNICODE 1.0. @item CP1255 @tindex CP1255@r{, aliases and source} @tindex 1255 @tindex ms-hebr @tindex windows-1255 @code{1255}, @code{ms-hebr} and @code{windows-1255} are aliases for this charset. Source: UNICODE 1.0. @item CP1256 @tindex CP1256@r{, aliases and source} @tindex 1256 @tindex ms-arab @tindex windows-1256 @code{1256}, @code{ms-arab} and @code{windows-1256} are aliases for this charset. Source: UNICODE 1.0. @item CP1257 @tindex CP1257@r{, aliases and source} @tindex 1257 @tindex WinBaltRim @tindex windows-1257 @code{1257}, @code{WinBaltRim} and @code{windows-1257} are aliases for this charset. Source: CEN/TC304 N283. @item CSA_Z243.4-1985-1 @tindex CSA_Z243.4-1985-1@r{, aliases and source} @tindex ISO646-CA @tindex ca @tindex csa7-1 @tindex iso-ir-121 @code{ISO646-CA}, @code{ca}, @code{csa7-1} and @code{iso-ir-121} are aliases for this charset. Source: ISO 2375 registry. @item CSA_Z243.4-1985-2 @tindex CSA_Z243.4-1985-2@r{, aliases and source} @tindex ISO646-CA2 @tindex csa7-2 @tindex iso-ir-122 @code{ISO646-CA2}, @code{csa7-2} and @code{iso-ir-122} are aliases for this charset. Source: ISO 2375 registry. @item CSA_Z243.4-1985-gr @tindex CSA_Z243.4-1985-gr@r{, aliases and source} @tindex iso-ir-123 @code{iso-ir-123} is an alias for this charset. Source: ISO 2375 registry. @item CSN_369103 @tindex CSN_369103@r{, aliases and source} @tindex KOI-8_L2 @tindex iso-ir-139 @tindex koi8l2 @code{KOI-8_L2}, @code{iso-ir-139} and @code{koi8l2} are aliases for this charset. Source: ISO 2375 registry. @item CWI @tindex CWI@r{, aliases and source} @tindex CWI-2 @tindex cp-hu @code{CWI-2} and @code{cp-hu} are aliases for this charset. Source: Computerworld Sza'mita'stechnika vol 3 issue 13 1988-06-29. @item DEC-MCS @tindex DEC-MCS@r{, aliases and source} @tindex dec @code{dec} is an alias for this charset. VAX/VMS User's Manual, Order Number: AI-Y517A-TE, April 1986. @item DIN_66003 @tindex DIN_66003@r{, aliases and source} @tindex ISO646-DE @tindex de @tindex iso-ir-21 @code{ISO646-DE}, @code{de} and @code{iso-ir-21} are aliases for this charset. Source: ISO 2375 registry. @item DS_2089 @tindex DS_2089@r{, aliases and source} @tindex DS2089 @tindex ISO646-DK @tindex dk @code{DS2089}, @code{ISO646-DK} and @code{dk} are aliases for this charset. Source: Danish Standard, DS 2089, February 1974. @item EBCDIC-AT-DE @tindex EBCDIC-AT-DE@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-AT-DE-A @tindex EBCDIC-AT-DE-A@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-CA-FR @tindex EBCDIC-CA-FR@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-DK-NO @tindex EBCDIC-DK-NO@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-DK-NO-A @tindex EBCDIC-DK-NO-A@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-ES @tindex EBCDIC-ES@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-ES-A @tindex EBCDIC-ES-A@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-ES-S @tindex EBCDIC-ES-S@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-FI-SE @tindex EBCDIC-FI-SE@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-FI-SE-A @tindex EBCDIC-FI-SE-A@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-FR @tindex EBCDIC-FR@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-IS-FRISS @tindex EBCDIC-IS-FRISS@r{, aliases and source} @tindex friss @code{friss} is an alias for this charset. Source: Skyrsuvelar Rikisins og Reykjavikurborgar, feb 1982. @item EBCDIC-IT @tindex EBCDIC-IT@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-PT @tindex EBCDIC-PT@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-UK @tindex EBCDIC-UK@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-US @tindex EBCDIC-US@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item ECMA-cyrillic @tindex ECMA-cyrillic@r{, aliases and source} @tindex ECMA-113 @tindex ECMA-113(1986) @tindex iso-ir-111 @code{ECMA-113}, @code{ECMA-113:1986} and @code{iso-ir-111} are aliases for this charset. Source: ISO 2375 registry. @item ES @tindex ES@r{, aliases and source} @tindex ISO646-ES @tindex iso-ir-17 @code{ISO646-ES} and @code{iso-ir-17} are aliases for this charset. Source: ISO 2375 registry. @item ES2 @tindex ES2@r{, aliases and source} @tindex ISO646-ES2 @tindex iso-ir-85 @code{ISO646-ES2} and @code{iso-ir-85} are aliases for this charset. Source: ISO 2375 registry. @item GB_1988-80 @tindex GB_1988-80@r{, aliases and source} @tindex ISO646-CN @tindex cn @tindex iso-ir-57 @code{ISO646-CN}, @code{cn} and @code{iso-ir-57} are aliases for this charset. Source: ISO 2375 registry. @item GOST_19768-87 @tindex GOST_19768-87@r{, aliases and source} @tindex ST_SEV_358-88 @tindex iso-ir-153 @code{ST_SEV_358-88} and @code{iso-ir-153} are aliases for this charset. Source: ISO 2375 registry. @item IBM037 @tindex IBM037@r{, aliases and source} @tindex 037 @tindex CP037 @tindex ebcdic-cp-ca @tindex ebcdic-cp-nl @tindex ebcdic-cp-us @tindex ebcdic-cp-wt @code{037}, @code{CP037}, @code{ebcdic-cp-ca}, @code{ebcdic-cp-nl}, @code{ebcdic-cp-us} and @code{ebcdic-cp-wt} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM038 @tindex IBM038@r{, aliases and source} @tindex 038 @tindex CP038 @tindex EBCDIC-INT @code{038}, @code{CP038} and @code{EBCDIC-INT} are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. @item IBM1004 @tindex IBM1004@r{, aliases and source} @tindex 1004 @tindex CP1004 @tindex os2latin1 @code{1004}, @code{CP1004} and @code{os2latin1} are aliases for this charset. Source: CEN/TC304 N283, 1994-02-04. @item IBM1026 @tindex IBM1026@r{, aliases and source} @tindex 1026 @tindex CP1026 @code{1026} and @code{CP1026} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM1047 @tindex IBM1047@r{, aliases and source} @tindex 1047 @tindex CP1047 @code{1047} and @code{CP1047} are aliases for this charset. Source: IBM Character Data Representation Architecture. Registry SC09-1391-00 p 150. @item IBM256 @tindex IBM256@r{, aliases and source} @tindex 256 @tindex CP256 @tindex EBCDIC-INT1 @code{256}, @code{CP256} and @code{EBCDIC-INT1} are aliases for this charset. Source: IBM Registry C-H 3-3220-050. @item IBM273 @tindex IBM273@r{, aliases and source} @tindex 273 @tindex CP273 @code{273} and @code{CP273} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM274 @tindex IBM274@r{, aliases and source} @tindex 274 @tindex CP274 @tindex EBCDIC-BE @code{274}, @code{CP274} and @code{EBCDIC-BE} are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. @item IBM275 @tindex IBM275@r{, aliases and source} @tindex 275 @tindex CP275 @tindex EBCDIC-BR @code{275}, @code{CP275} and @code{EBCDIC-BR} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM277 @tindex IBM277@r{, aliases and source} @tindex EBCDIC-CP-DK @tindex EBCDIC-CP-NO @code{EBCDIC-CP-DK} and @code{EBCDIC-CP-NO} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM278 @tindex IBM278@r{, aliases and source} @tindex 278 @tindex CP278 @tindex ebcdic-cp-fi @tindex ebcdic-cp-se @code{278}, @code{CP278}, @code{ebcdic-cp-fi} and @code{ebcdic-cp-se} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM280 @tindex IBM280@r{, aliases and source} @tindex 280 @tindex CP280 @tindex ebcdic-cp-it @code{280}, @code{CP280} and @code{ebcdic-cp-it} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM281 @tindex IBM281@r{, aliases and source} @tindex 281 @tindex CP281 @tindex EBCDIC-JP-E @code{281}, @code{CP281} and @code{EBCDIC-JP-E} are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. @item IBM284 @tindex IBM284@r{, aliases and source} @tindex 284 @tindex CP284 @tindex ebcdic-cp-es @code{284}, @code{CP284} and @code{ebcdic-cp-es} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM285 @tindex IBM285@r{, aliases and source} @tindex 285 @tindex CP285 @tindex ebcdic-cp-gb @code{285}, @code{CP285} and @code{ebcdic-cp-gb} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM290 @tindex IBM290@r{, aliases and source} @tindex 290 @tindex CP290 @tindex EBCDIC-JP-kana @code{290}, @code{CP290} and @code{EBCDIC-JP-kana} are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. @item IBM297 @tindex IBM297@r{, aliases and source} @tindex 297 @tindex CP297 @tindex ebcdic-cp-fr @code{297}, @code{CP297} and @code{ebcdic-cp-fr} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM420 @tindex IBM420@r{, aliases and source} @tindex 420 @tindex CP420 @tindex ebcdic-cp-ar1 @code{420}, @code{CP420} and @code{ebcdic-cp-ar1} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. IBM NLS RM p 11-11. @item IBM423 @tindex IBM423@r{, aliases and source} @tindex 423 @tindex CP423 @tindex ebcdic-cp-gr @code{423}, @code{CP423} and @code{ebcdic-cp-gr} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM424 @tindex IBM424@r{, aliases and source} @tindex 424 @tindex CP424 @tindex ebcdic-cp-he @code{424}, @code{CP424} and @code{ebcdic-cp-he} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM437 @tindex IBM437@r{, aliases and source} @tindex 437 @tindex CP437 @code{437} and @code{CP437} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM500 @tindex IBM500@r{, aliases and source} @tindex 500 @tindex 500V1 @tindex CP500 @tindex ebcdic-cp-be @tindex ebcdic-cp-ch @code{500}, @code{500V1}, @code{CP500}, @code{ebcdic-cp-be} and @code{ebcdic-cp-ch} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM850 @tindex IBM850@r{, aliases and source} @tindex 850 @tindex CP850 @code{850} and @code{CP850} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. Source: UNICODE 1.0. @item IBM851 @tindex IBM851@r{, aliases and source} @tindex 851 @tindex CP851 @code{851} and @code{CP851} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM852 @tindex IBM852@r{, aliases and source} @tindex 852 @tindex CP852 @tindex pcl2 @tindex pclatin2 @code{852}, @code{CP852}, @code{pcl2} and @code{pclatin2} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM855 @tindex IBM855@r{, aliases and source} @tindex 855 @tindex CP855 @code{855} and @code{CP855} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM857 @tindex IBM857@r{, aliases and source} @tindex 857 @tindex CP857 @code{857} and @code{CP857} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM860 @tindex IBM860@r{, aliases and source} @tindex 860 @tindex CP860 @code{860} and @code{CP860} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM861 @tindex IBM861@r{, aliases and source} @tindex 861 @tindex CP861 @tindex cp-is @code{861}, @code{CP861} and @code{cp-is} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM862 @tindex IBM862@r{, aliases and source} @tindex 862 @tindex CP862 @code{862} and @code{CP862} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM863 @tindex IBM863@r{, aliases and source} @tindex 863 @tindex CP863 @code{863} and @code{CP863} are aliases for this charset. Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991. @item IBM864 @tindex IBM864@r{, aliases and source} @tindex 864 @tindex CP864 @code{864} and @code{CP864} are aliases for this charset. Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991. @item IBM865 @tindex IBM865@r{, aliases and source} @tindex 865 @tindex CP865 @code{865} and @code{CP865} are aliases for this charset. Source: IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987). @item IBM868 @tindex IBM868@r{, aliases and source} @tindex 868 @tindex CP868 @tindex cp-ar @code{868}, @code{CP868} and @code{cp-ar} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM869 @tindex IBM869@r{, aliases and source} @tindex 869 @tindex CP869 @tindex cp-gr @code{869}, @code{CP869} and @code{cp-gr} are aliases for this charset. Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991. @item IBM870 @tindex IBM870@r{, aliases and source} @tindex 870 @tindex CP870 @tindex ebcdic-cp-roece @tindex ebcdic-cp-yu @code{870}, @code{CP870}, @code{ebcdic-cp-roece} and @code{ebcdic-cp-yu} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM871 @tindex IBM871@r{, aliases and source} @tindex 871 @tindex CP871 @tindex ebcdic-cp-is @code{871}, @code{CP871} and @code{ebcdic-cp-is} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM875 @tindex IBM875@r{, aliases and source} @tindex 875 @tindex CP875 @tindex EBCDIC-Greek @code{875}, @code{CP875} and @code{EBCDIC-Greek} are aliases for this charset. Source: UNICODE 1.0. @item IBM880 @tindex IBM880@r{, aliases and source} @tindex 880 @tindex CP880 @tindex EBCDIC-Cyrillic @code{880}, @code{CP880} and @code{EBCDIC-Cyrillic} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM891 @tindex IBM891@r{, aliases and source} @tindex 891 @tindex CP891 @code{891} and @code{CP891} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM903 @tindex IBM903@r{, aliases and source} @tindex 903 @tindex CP903 @code{903} and @code{CP903} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM904 @tindex IBM904@r{, aliases and source} @tindex 904 @tindex CP904 @code{904} and @code{CP904} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM905 @tindex IBM905@r{, aliases and source} @tindex 905 @tindex CP905 @tindex ebcdic-cp-tr @code{905}, @code{CP905} and @code{ebcdic-cp-tr} are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. @item IBM918 @tindex IBM918@r{, aliases and source} @tindex 918 @tindex CP918 @tindex ebcdic-cp-ar2 @code{918}, @code{CP918} and @code{ebcdic-cp-ar2} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IEC_P27-1 @tindex IEC_P27-1@r{, aliases and source} @tindex iso-ir-143 @code{iso-ir-143} is an alias for this charset. Source: ISO 2375 registry. @item INIS @tindex INIS@r{, aliases and source} @tindex iso-ir-49 @code{iso-ir-49} is an alias for this charset. Source: ISO 2375 registry. @item INIS-8 @tindex INIS-8@r{, aliases and source} @tindex iso-ir-50 @code{iso-ir-50} is an alias for this charset. Source: ISO 2375 registry. @item INIS-cyrillic @tindex INIS-cyrillic@r{, aliases and source} @tindex iso-ir-51 @code{iso-ir-51} is an alias for this charset. Source: ISO 2375 registry. @item INVARIANT @tindex INVARIANT@r{, aliases and source} @tindex iso-ir-170 @code{iso-ir-170} is an alias for this charset. @item ISO-8859-1 @tindex ISO-8859-1@r{, aliases and source} @tindex 819 @tindex CP819 @tindex IBM819 @tindex ISO8859-1 @tindex ISO_8859-1 @tindex ISO_8859-1(1987) @tindex iso-ir-100 @tindex l1 @tindex latin1 @code{819}, @code{CP819}, @code{IBM819}, @code{ISO8859-1}, @code{ISO_8859-1}, @code{ISO_8859-1:1987}, @code{iso-ir-100}, @code{l1} and @code{latin1} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-10 @tindex ISO-8859-10@r{, aliases and source} @tindex ISO8859-10 @tindex ISO_8859-10 @tindex ISO_8859-10(1993) @tindex L6 @tindex iso-ir-157 @tindex latin6 @code{ISO8859-10}, @code{ISO_8859-10}, @code{ISO_8859-10:1993}, @code{L6}, @code{iso-ir-157} and @code{latin6} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-13 @tindex ISO-8859-13@r{, aliases and source} @tindex ISO8859-13 @tindex ISO_8859-13 @tindex ISO_8859-13(1998) @tindex iso-baltic @tindex iso-ir-179a @tindex l7 @tindex latin7 @code{ISO8859-13}, @code{ISO_8859-13}, @code{ISO_8859-13:1998}, @code{iso-baltic}, @code{iso-ir-179a}, @code{l7} and @code{latin7} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-14 @tindex ISO-8859-14@r{, aliases and source} @tindex ISO8859-14 @tindex ISO_8859-14 @tindex ISO_8859-14(1998) @tindex iso-celtic @tindex iso-ir-199 @tindex l8 @tindex latin8 @code{ISO8859-14}, @code{ISO_8859-14}, @code{ISO_8859-14:1998}, @code{iso-celtic}, @code{iso-ir-199}, @code{l8} and @code{latin8} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-15 @tindex ISO-8859-15@r{, aliases and source} @tindex ISO8859-15 @tindex ISO_8859-15 @tindex ISO_8859-15(1998) @tindex iso-ir-203 @tindex l9 @tindex latin9 @code{ISO8859-15}, @code{ISO_8859-15}, @code{ISO_8859-15:1998}, @code{iso-ir-203}, @code{l9} and @code{latin9} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-2 @tindex ISO-8859-2@r{, aliases and source} @tindex 912 @tindex CP912 @tindex IBM912 @tindex ISO8859-2 @tindex ISO_8859-2 @tindex ISO_8859-2(1987) @tindex iso-ir-101 @tindex l2 @tindex latin2 @code{912}, @code{CP912}, @code{IBM912}, @code{ISO8859-2}, @code{ISO_8859-2}, @code{ISO_8859-2:1987}, @code{iso-ir-101}, @code{l2} and @code{latin2} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-3 @tindex ISO-8859-3@r{, aliases and source} @tindex ISO8859-3 @tindex ISO_8859-3 @tindex ISO_8859-3(1988) @tindex iso-ir-109 @tindex l3 @tindex latin3 @code{ISO8859-3}, @code{ISO_8859-3}, @code{ISO_8859-3:1988}, @code{iso-ir-109}, @code{l3} and @code{latin3} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-4 @tindex ISO-8859-4@r{, aliases and source} @tindex ISO8859-4 @tindex ISO_8859-4 @tindex ISO_8859-4(1988) @tindex iso-ir-110 @tindex l4 @tindex latin4 @code{ISO8859-4}, @code{ISO_8859-4}, @code{ISO_8859-4:1988}, @code{iso-ir-110}, @code{l4} and @code{latin4} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-5 @tindex ISO-8859-5@r{, aliases and source} @tindex ISO8859-5 @tindex ISO_8859-5 @tindex ISO_8859-5(1988) @tindex cyrillic @tindex iso-ir-144 @code{ISO8859-5}, @code{ISO_8859-5}, @code{ISO_8859-5:1988}, @code{cyrillic} and @code{iso-ir-144} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-6 @tindex ISO-8859-6@r{, aliases and source} @tindex ASMO-708 @tindex ECMA-114 @tindex ISO8859-6 @tindex ISO_8859-6 @tindex ISO_8859-6(1987) @tindex arabic @tindex iso-ir-127 @code{ASMO-708}, @code{ECMA-114}, @code{ISO8859-6}, @code{ISO_8859-6}, @code{ISO_8859-6:1987}, @code{arabic} and @code{iso-ir-127} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-7 @tindex ISO-8859-7@r{, aliases and source} @tindex ECMA-118 @tindex ELOT_928 @tindex ISO8859-7 @tindex ISO_8859-7 @tindex ISO_8859-7(1987) @tindex greek @tindex greek8 @tindex iso-ir-126 @code{ECMA-118}, @code{ELOT_928}, @code{ISO8859-7}, @code{ISO_8859-7}, @code{ISO_8859-7:1987}, @code{greek}, @code{greek8} and @code{iso-ir-126} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-8 @tindex ISO-8859-8@r{, aliases and source} @tindex ISO8859-8 @tindex ISO_8859-8 @tindex ISO_8859-8(1988) @tindex hebrew @tindex iso-ir-138 @code{ISO8859-8}, @code{ISO_8859-8}, @code{ISO_8859-8:1988}, @code{hebrew} and @code{iso-ir-138} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-9 @tindex ISO-8859-9@r{, aliases and source} @tindex ISO8859-9 @tindex ISO_8859-9 @tindex ISO_8859-9(1989) @tindex iso-ir-148 @tindex l5 @tindex latin5 @code{ISO8859-9}, @code{ISO_8859-9}, @code{ISO_8859-9:1989}, @code{iso-ir-148}, @code{l5} and @code{latin5} are aliases for this charset. Source: ISO 2375 registry. @item ISO_10367-box @tindex ISO_10367-box@r{, aliases and source} @tindex iso-ir-155 @code{iso-ir-155} is an alias for this charset. Source: ISO 2375 registry. @item ISO_2033-1983 @tindex ISO_2033-1983@r{, aliases and source} @tindex e13b @tindex iso-ir-98 @code{e13b} and @code{iso-ir-98} are aliases for this charset. Source: ISO 2375 registry. @item ISO_5427 @tindex ISO_5427@r{, aliases and source} @tindex iso-ir-37 @code{iso-ir-37} is an alias for this charset. Source: ISO 2375 registry. @item ISO_5427-ext @tindex ISO_5427-ext@r{, aliases and source} @tindex ISO_5427(1981) @tindex iso-ir-54 @code{ISO_5427:1981} and @code{iso-ir-54} are aliases for this charset. Source: ISO 2375 registry. @item ISO_5428 @tindex ISO_5428@r{, aliases and source} @tindex ISO_5428(1980) @tindex iso-ir-55 @code{ISO_5428:1980} and @code{iso-ir-55} are aliases for this charset. Source: ISO 2375 registry. @item ISO_646.basic @tindex ISO_646.basic@r{, aliases and source} @tindex ISO_646.basic(1983) @tindex ref @code{ISO_646.basic:1983} and @code{ref} are aliases for this charset. Source: ISO 2375 registry. @item ISO_646.irv @tindex ISO_646.irv@r{, aliases and source} @tindex ISO_646.irv(1983) @tindex irv @tindex iso-ir-2 @code{ISO_646.irv:1983}, @code{irv} and @code{iso-ir-2} are aliases for this charset. Source: ISO 2375 registry. @item ISO_6937-2-25 @tindex ISO_6937-2-25@r{, aliases and source} @tindex iso-ir-152 @code{iso-ir-152} is an alias for this charset. Source: ISO 2375 registry. @item ISO_8859-supp @tindex ISO_8859-supp@r{, aliases and source} @tindex iso-ir-154 @tindex latin1-2-5 @code{iso-ir-154} and @code{latin1-2-5} are aliases for this charset. Source: ISO 2375 registry. @item IT @tindex IT@r{, aliases and source} @tindex ISO646-IT @tindex iso-ir-15 @code{ISO646-IT} and @code{iso-ir-15} are aliases for this charset. Source: ISO 2375 registry. @item JIS_C6220-1969-jp @tindex JIS_C6220-1969-jp@r{, aliases and source} @tindex JIS_C6220-1969 @tindex iso-ir-13 @tindex katakana @tindex x0201-7 @code{JIS_C6220-1969}, @code{iso-ir-13}, @code{katakana} and @code{x0201-7} are aliases for this charset. Source: ISO 2375 registry. @item JIS_C6220-1969-ro @tindex JIS_C6220-1969-ro@r{, aliases and source} @tindex ISO646-JP @tindex iso-ir-14 @tindex jp @code{ISO646-JP}, @code{iso-ir-14} and @code{jp} are aliases for this charset. Source: ISO 2375 registry. @item JIS_C6229-1984-a @tindex JIS_C6229-1984-a@r{, aliases and source} @tindex jp-ocr-a @code{jp-ocr-a} is an alias for this charset. Source: ISO 2375 registry. @item JIS_C6229-1984-b @tindex JIS_C6229-1984-b@r{, aliases and source} @tindex ISO646-JP-OCR-B @tindex jp-ocr-b @code{ISO646-JP-OCR-B} and @code{jp-ocr-b} are aliases for this charset. Source: ISO 2375 registry. @item JIS_C6229-1984-b-add @tindex JIS_C6229-1984-b-add@r{, aliases and source} @tindex iso-ir-93 @tindex jp-ocr-b-add @code{iso-ir-93} and @code{jp-ocr-b-add} are aliases for this charset. Source: ISO 2375 registry. @item JIS_C6229-1984-hand @tindex JIS_C6229-1984-hand@r{, aliases and source} @tindex iso-ir-94 @tindex jp-ocr-hand @code{iso-ir-94} and @code{jp-ocr-hand} are aliases for this charset. Source: ISO 2375 registry. @item JIS_C6229-1984-hand-add @tindex JIS_C6229-1984-hand-add@r{, aliases and source} @tindex iso-ir-95 @tindex jp-ocr-hand-add @code{iso-ir-95} and @code{jp-ocr-hand-add} are aliases for this charset. Source: ISO 2375 registry. @item JIS_C6229-1984-kana @tindex JIS_C6229-1984-kana@r{, aliases and source} @tindex iso-ir-96 @code{iso-ir-96} is an alias for this charset. Source: ISO 2375 registry. @item JIS_X0201 @tindex JIS_X0201@r{, aliases and source} @tindex X0201 @code{X0201} is an alias for this charset. @item JUS_I.B1.002 @tindex JUS_I.B1.002@r{, aliases and source} @tindex ISO646-YU @tindex iso-ir-141 @tindex js @tindex yu @code{ISO646-YU}, @code{iso-ir-141}, @code{js} and @code{yu} are aliases for this charset. Source: ISO 2375 registry. @item JUS_I.B1.003-mac @tindex JUS_I.B1.003-mac@r{, aliases and source} @tindex iso-ir-147 @tindex macedonian @code{iso-ir-147} and @code{macedonian} are aliases for this charset. Source: ISO 2375 registry. @item JUS_I.B1.003-serb @tindex JUS_I.B1.003-serb@r{, aliases and source} @tindex iso-ir-146 @tindex serbian @code{iso-ir-146} and @code{serbian} are aliases for this charset. Source: ISO 2375 registry. @item KOI-7 @tindex KOI-7@r{, aliases and source} Source: Andrey A. Chernov . @item KOI-8 @tindex KOI-8@r{, aliases and source} @tindex GOST_19768-74 @code{GOST_19768-74} is an alias for this charset. Source: Andrey A. Chernov . @item KOI8-R @tindex KOI8-R@r{, aliases and source} Source: RFC1489 via Gabor Kiss . And Andrey A. Chernov . @item KOI8-RU @tindex KOI8-RU@r{, aliases and source} Source: http://cad.ntu-kpi.kiev.ua/multiling/koi8-ru/. @item KOI8-U @tindex KOI8-U@r{, aliases and source} Source: RFC 2319. Mibenum: 2088. Source: http://www.net.ua/KOI8-U/. @item KSC5636 @tindex KSC5636@r{, aliases and source} @tindex ISO646-KR @code{ISO646-KR} is an alias for this charset. @item Latin-greek-1 @tindex Latin-greek-1@r{, aliases and source} @tindex iso-ir-27 @code{iso-ir-27} is an alias for this charset. Source: ISO 2375 registry. @item MSZ_7795.3 @tindex MSZ_7795.3@r{, aliases and source} @tindex ISO646-HU @tindex hu @tindex iso-ir-86 @code{ISO646-HU}, @code{hu} and @code{iso-ir-86} are aliases for this charset. Source: ISO 2375 registry. @item NATS-DANO @tindex NATS-DANO@r{, aliases and source} @tindex iso-ir-9-1 @code{iso-ir-9-1} is an alias for this charset. Source: ISO 2375 registry. @item NATS-DANO-ADD @tindex NATS-DANO-ADD@r{, aliases and source} @tindex iso-ir-9-2 @code{iso-ir-9-2} is an alias for this charset. Source: ISO 2375 registry. @item NATS-SEFI @tindex NATS-SEFI@r{, aliases and source} @tindex iso-ir-8-1 @code{iso-ir-8-1} is an alias for this charset. Source: ISO 2375 registry. @item NATS-SEFI-ADD @tindex NATS-SEFI-ADD@r{, aliases and source} @tindex iso-ir-8-2 @code{iso-ir-8-2} is an alias for this charset. Source: ISO 2375 registry. @item NC_NC00-10 @tindex NC_NC00-10@r{, aliases and source} @tindex ISO646-CU @tindex NC_NC00-10(81) @tindex cuba @tindex iso-ir-151 @code{ISO646-CU}, @code{NC_NC00-10:81}, @code{cuba} and @code{iso-ir-151} are aliases for this charset. Source: ISO 2375 registry. @item NF_Z_62-010 @tindex NF_Z_62-010@r{, aliases and source} @tindex ISO646-FR @tindex fr @tindex iso-ir-69 @code{ISO646-FR}, @code{fr} and @code{iso-ir-69} are aliases for this charset. Source: ISO 2375 registry. @item NF_Z_62-010_(1973) @tindex NF_Z_62-010_(1973)@r{, aliases and source} @tindex ISO646-FR1 @tindex iso-ir-25 @code{ISO646-FR1} and @code{iso-ir-25} are aliases for this charset. Source: ISO 2375 registry. @item NS_4551-1 @tindex NS_4551-1@r{, aliases and source} @tindex ISO646-NO @tindex iso-ir-60 @tindex no @code{ISO646-NO}, @code{iso-ir-60} and @code{no} are aliases for this charset. Source: ISO 2375 registry. @item NS_4551-2 @tindex NS_4551-2@r{, aliases and source} @tindex ISO646-NO2 @tindex iso-ir-61 @tindex no2 @code{ISO646-NO2}, @code{iso-ir-61} and @code{no2} are aliases for this charset. Source: ISO 2375 registry. @item NeXTSTEP @tindex NeXTSTEP@r{, aliases and source} @tindex next @code{next} is an alias for this charset. Source: Peter Svanberg - psv@@nada.kth.se. @item PT @tindex PT@r{, aliases and source} @tindex ISO646-PT @tindex iso-ir-16 @code{ISO646-PT} and @code{iso-ir-16} are aliases for this charset. Source: ISO 2375 registry. @item PT2 @tindex PT2@r{, aliases and source} @tindex ISO646-PT2 @tindex iso-ir-84 @code{ISO646-PT2} and @code{iso-ir-84} are aliases for this charset. Source: ISO 2375 registry. @item SEN_850200_B @tindex SEN_850200_B@r{, aliases and source} @tindex FI @tindex ISO646-FI @tindex ISO646-SE @tindex SS636127 @tindex iso-ir-10 @tindex se @code{FI}, @code{ISO646-FI}, @code{ISO646-SE}, @code{SS636127}, @code{iso-ir-10} and @code{se} are aliases for this charset. Source: ISO 2375 registry. @item SEN_850200_C @tindex SEN_850200_C@r{, aliases and source} @tindex ISO646-SE2 @tindex iso-ir-11 @tindex se2 @code{ISO646-SE2}, @code{iso-ir-11} and @code{se2} are aliases for this charset. Source: ISO 2375 registry. @item T.61-7bit @tindex T.61-7bit@r{, aliases and source} @tindex iso-ir-102 @code{iso-ir-102} is an alias for this charset. Source: ISO 2375 registry. @item baltic @tindex baltic@r{, aliases and source} @tindex iso-ir-179 @code{iso-ir-179} is an alias for this charset. Source: ISO 2375 registry. &g1esc x2d56 &g2esc x2e56 &g3esc x2f56. @item greek-ccitt @tindex greek-ccitt@r{, aliases and source} @tindex iso-ir-150 @code{iso-ir-150} is an alias for this charset. Source: ISO 2375 registry. @item greek7 @tindex greek7@r{, aliases and source} @tindex iso-ir-88 @code{iso-ir-88} is an alias for this charset. Source: ISO 2375 registry. @item greek7-old @tindex greek7-old@r{, aliases and source} @tindex iso-ir-18 @code{iso-ir-18} is an alias for this charset. Source: ISO 2375 registry. @item hp-roman8 @tindex hp-roman8@r{, aliases and source} @tindex r8 @tindex roman8 @code{r8} and @code{roman8} are aliases for this charset. Source: LaserJet IIP Printer User's Manual,. HP part no 33471-90901, Hewlet-Packard, June 1989. @item latin-greek @tindex latin-greek@r{, aliases and source} @tindex iso-ir-19 @code{iso-ir-19} is an alias for this charset. Source: ISO 2375 registry. @item mac-is @tindex mac-is@r{, aliases and source} @item macintosh @tindex macintosh@r{, aliases and source} @tindex mac @code{mac} is an alias for this charset. Source: The Unicode Standard ver 1.0, ISBN 0-201-56788-1, Oct 1991. @item macintosh_ce @tindex macintosh_ce@r{, aliases and source} @tindex macce @code{macce} is an alias for this charset. Source: Macintosh CE fonts. @item sami @tindex sami@r{, aliases and source} @tindex iso-ir-158 @tindex lap @tindex latin-lap @code{iso-ir-158}, @code{lap} and @code{latin-lap} are aliases for this charset. Source: ISO 2375 registry. recode-3.7.15/doc/version.texi0000644000175000017500000000014114766021044011656 @set UPDATED 16 March 2025 @set UPDATED-MONTH March 2025 @set EDITION 3.7.15 @set VERSION 3.7.15 recode-3.7.15/doc/stamp-vti0000644000175000017500000000014114766021044011145 @set UPDATED 16 March 2025 @set UPDATED-MONTH March 2025 @set EDITION 3.7.15 @set VERSION 3.7.15 recode-3.7.15/doc/recode.texi0000644000175000017500000063454714765654444011500 \input texinfo @c -*-texinfo-*- -*- coding: latin-1 -*- @c %**start of header @setfilename recode.info @settitle The Recode reference manual @c An index for command-line options @defcodeindex op @c Put variable and function names together @syncodeindex vr fn @finalout @c %**end of header @include version.texi @dircategory Internationalization and character sets @direntry * recode: (recode). Conversion between character sets and surfaces. @end direntry @ifinfo This file documents the Recode program and library, which has the purpose of converting files between various character sets and surfaces. Copyright (C) 1990--2023 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. @ignore Permission is granted to process this file through TeX and print the results, provided the printed document carries copying permission notice identical to this one except for the removal of this paragraph (this paragraph not being relevant to the printed manual). @end ignore Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation. @end ifinfo @titlepage @title Recode, version @value{VERSION} @subtitle The character set converter @subtitle Edition @value{EDITION}, @value{UPDATED} @author Fran@,{c}ois Pinard @page @vskip 0pt plus 1filll Copyright @copyright{} 1993--2018 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation. @end titlepage @ifnottex @node Top, Tutorial, (dir), (dir) @top Recode @c @item @b{Recode} @value{hfillkludge} (UtilT, SrcCD) @c This recoding library converts files between various coded character sets and surface encodings. When this cannot be achieved exactly, it may get rid of the offending characters or fall back on approximations. The library recognises or produces more than 300 different character sets and is able to convert files between almost any pair. Most @w{RFC 1345} character sets, and all character sets from a pre-installed @code{iconv} library, are supported. The @code{recode} program is a handy front-end to the library. This manual documents Recode @value{VERSION}. @menu * Tutorial:: Quick Tutorial * Introduction:: Terminology and purpose * Invoking recode:: How to use this program * Library:: A recoding library * Universal:: The universal charset * iconv:: The @code{iconv} library * Tabular:: Tabular sources (@w{RFC 1345}) * ASCII misc:: ASCII and some derivatives * IBM and MS:: Some IBM or Microsoft charsets * CDC:: Charsets for CDC machines * Micros:: Other micro-computer charsets * Miscellaneous:: Various other charsets * Surfaces:: All about surfaces * Internals:: Internal aspects * Concept Index:: Concept Index * Option Index:: Option Index * Library Index:: Library Index * Charset and Surface Index:: Charset and Surface Index @detailmenu --- The Detailed Node Listing --- Terminology and purpose * Charset overview:: Overview of charsets * Surface overview:: Overview of surfaces * Contributing:: Contributions and bug reports How to use this program * Synopsis:: Synopsis of @code{recode} call * Requests:: The @var{request} parameter * Listings:: Asking for various lists * Recoding:: Controlling how files are recoded * Reversibility:: Reversibility issues * Sequencing:: Selecting sequencing methods * Mixed:: Using mixed charset input * Emacs:: Using Recode within Emacs * Debugging:: Debugging considerations A recoding library * Outer level:: Outer level functions * Request level:: Request level functions * Task level:: Task level functions * Charset level:: Charset level functions * Errors:: Handling errors The universal charset * UCS-2:: Universal Character Set, 2 bytes * UCS-4:: Universal Character Set, 4 bytes * UTF-7:: Universal Transformation Format, 7 bits * UTF-8:: Universal Transformation Format, 8 bits * UTF-16:: Universal Transformation Format, 16 bits * count-characters:: Frequency count of characters * dump-with-names:: Fully interpreted UCS dump ASCII and some derivatives * ASCII:: Usual ASCII * ISO 8859:: ASCII extended by Latin Alphabets * ASCII-BS:: ASCII 7-bits, @kbd{BS} to overstrike * flat:: ASCII without diacritics nor underline Some IBM or Microsoft charsets * EBCDIC:: EBCDIC codes * IBM-PC:: IBM's PC code * Icon-QNX:: Unisys' Icon code Charsets for CDC machines * Display Code:: Control Data's Display Code * CDC-NOS:: ASCII 6/12 from NOS * Bang-Bang:: ASCII ``bang bang'' Other micro-computer charsets * Mac OS:: Apple's Macintosh code * AtariST:: Atari ST code Various other charsets * HTML:: World Wide Web representations * LaTeX:: LaTeX macro calls * BibTeX:: BibTeX macro calls * Texinfo:: GNU project documentation files * ISO 5426 and ANSEL:: Bibliographic character sets * Vietnamese:: Vietnamese charsets * African:: African charsets * Others:: Cyrillic and other charsets * Java:: Java code * Texte:: Easy French conventions * Mule:: Mule as a multiplexed charset All about surfaces * Permutations:: Permuting groups of bytes * End lines:: Representation for end of lines * MIME:: MIME contents encodings * Dump:: Interpreted character dumps * Test:: Artificial data for testing Internal aspects * Main flow:: Overall organisation * New charsets:: Adding new charsets * New surfaces:: Adding new surfaces * Design:: Comments on the library design @end detailmenu @end menu @end ifnottex @node Tutorial, Introduction, Top, Top @chapter Quick Tutorial @cindex Recode use, a tutorial @cindex tutorial So, really, you just are in a hurry to use Recode, and do not feel like studying this manual? Even reading this paragraph slows you down? We might have a problem, as you will have to do some guess work, and might not become very proficient unless you have a very solid intuition@dots{}. Let me use here, as a quick tutorial, an actual reply of mine to a Recode user, who writes: @quotation My situation is this---I occasionally get email with special characters in it. Sometimes this mail is from a user using IBM software and sometimes it is a user using Mac software. I myself am on a SPARC Solaris machine. @end quotation Your situation is similar to mine, except that I @emph{often} receive email needing recoding, that is, much more than @emph{occasionally}! The usual recodings I do are Mac to @w{Latin-1}, IBM page codes to @w{Latin-1}, Easy-French to @w{Latin-1}, remove Quoted-Printable, remove Base64. These are so frequent that I made myself a few two-keystroke Emacs commands to filter the Emacs region. This is very convenient for me. I also resort to many other email conversions, yet more rarely than the frequent cases above. @quotation It @emph{seems} like this should be doable using Recode. However, when I try something like @samp{recode mac macfile.txt} I get nothing out---no error, no output, nothing. @end quotation @strong{Note:} For the following discussion to be true, you should have something like @samp{export LANG=fr_FR.ISO-8859-1} in your environment, the important bit here being the specification of an preferred charset. Presuming you are using some recent version of Recode, the command: @example recode mac macfile.txt @end example @noindent is a request for recoding @file{macfile.txt} over itself, overwriting the original, from Macintosh usual character code and Macintosh end of lines, to @w{Latin-1} and Unix end of lines. This is overwrite mode. If you want to use Recode as a filter, which is probably what you need, rather do: @example recode mac @end example @noindent and give your Macintosh file as standard input, you'll get the @w{Latin-1} file on standard output. The above command is an abbreviation for any of: @example recode mac.. recode mac..l1 recode mac..Latin-1 recode mac/CR..Latin-1/ recode Macintosh..ISO_8859-1 recode Macintosh/CR..ISO_8859-1/ @end example That is, a @code{CR} surface, encoding newlines with ASCII @key{CR}, is first to be removed (this is a default surface for @samp{mac}), then the Macintosh charset is converted to @w{Latin-1} and no surface is added to the result (there is no default surface for @samp{l1}). If you want @samp{mac} code converted, but you know that newlines are already coded the Unix way, just do: @example recode mac/ @end example @noindent the slash then overriding the default surface with empty, that is, none. Here are other easy recipes: @example recode pc to filter IBM-PC code and CR-LF (default) to Latin-1 recode pc/ to filter IBM-PC code to Latin-1 recode 850 to filter code page 850 and CR-LF (default) to Latin-1 recode 850/ to filter code page 850 to Latin-1 recode /qp to remove quoted printable @end example The last one is indeed equivalent to any of: @example recode /qp.. recode l1/qp..l1/ recode ISO_8859-1/Quoted-Printable..ISO_8859-1/ @end example Here are some reverse recipes: @example recode ..mac to filter Latin-1 to Macintosh code and CR (default) recode ..mac/ to filter Latin-1 to Macintosh code recode ..pc to filter Latin-1 to IBM-PC code and CR-LF (default) recode ..pc/ to filter Latin-1 to IBM-PC code recode ..850 to filter Latin-1 to code page 850 and CR-LF (default) recode ..850/ to filter Latin-1 to code page 850 recode ../qp to force quoted printable @end example In all the above calls, replace @samp{recode} by @samp{recode -f} if you want to proceed despite recoding errors. If you do not use @samp{-f} and there is an error, the recoding output will be interrupted after first error in filter mode, or the file will not be replaced by a recoded copy in overwrite mode. You may use @samp{recode -l} to get a list of available charsets and surfaces, and @samp{recode --help} to get a quick summary of options. The above output is meant for those having already read this manual, so let me dare a suggestion: why could not you find a few more minutes in your schedule to peek further down, right into the following chapters! @node Introduction, Invoking recode, Tutorial, Top @chapter Terminology and purpose A few terms are used over and over in this manual, our wise reader will learn their meaning right away. Both ISO (International Organization for Standardisation) and IETF (Internet Engineering Task Force) have their own terminology, this document does not try to stick to either one in a strict way, while it does not want to throw more confusion in the field. On the other hand, it would not be efficient using paraphrases all the time, so Recode coins a few short words, which are explained below. @cindex charset, what it is A @dfn{charset}, in the context of Recode, is a particular association between computer codes on one side, and a repertoire of intended characters on the other side. Codes are usually taken from a set of consecutive small integers, starting at 0. Some characters have a graphical appearance (glyph) or displayable effect, others have special uses like, for example, to control devices or to interact with neighbouring codes to specify them more precisely. So, a @emph{charset} is roughly one of those tables, giving a meaning to each of the codes from the set of allowable values. MIME also uses the term charset with approximately the same meaning. It does @emph{not} exactly corresponds to what ISO calls a @dfn{coded character set}, that is, a set of characters with an encoding for them. An coded character set does not necessarily use all available code positions, while a MIME charset usually tries to specify them all. A MIME charset might be the union of a few disjoint coded character sets. @cindex surface, what it is A @dfn{surface} is a term used in Recode only, and is a short for surface transformation of a charset stream. This is any kind of mapping, usually reversible, which associates physical bits in some medium for a stream of characters taken from one or more charsets (usually one). A surface is a kind of varnish added over a charset so it fits in actual bits and bytes. How end of lines are exactly encoded is not really pertinent to the charset, and so, there is surface for end of lines. @code{Base64} is also a surface, as we may encode any charset in it. Other examples would @code{DES} enciphering, or @code{gzip} compression (even if Recode does not offer them currently): these are ways to give a real life to theoretical charsets. The @dfn{trivial} surface consists into putting characters into fixed width little chunks of bits, usually eight such bits per character. But things are not always that simple. This Recode library, and the program by that name, have the purpose of converting files between various charsets and surfaces. When this cannot be done in exact ways, as it is often the case, the program may get rid of the offending characters or fall back on approximations. This library recognises or produces around 175 such charsets under 500 names, and handle a dozen surfaces. Since it can convert each charset to almost any other one, many thousands of different conversions are possible. The Recode program and library do not usually know how to split and sort out textual and non-textual information which may be mixed in a single input file. For example, there is no surface which currently addresses the problem of how lines are blocked into physical records, when the blocking information is added as binary markers or counters within files. So, Recode should be given textual streams which are rather @emph{pure}. This tool pays special attention to superimposition of diacritics for some French representations. This orientation is mostly historical, it does not impair the usefulness, generality or extensibility of the program. @samp{recode} is both a French and English word. For those who pay attention to those things, the proper pronunciation is French (that is, @samp{racud}, with @samp{a} like in @samp{above}, and @samp{u} like in @samp{cut}). The Recode program and library has been written by Fran@,{c}ois Pinard. With time, it got to reuse works from other contributors, and notably, those of Keld Simonsen and Bruno Haible. @menu * Charset overview:: Overview of charsets * Surface overview:: Overview of surfaces * Contributing:: Contributions and bug reports @end menu @node Charset overview, Surface overview, Introduction, Introduction @section Overview of charsets @cindex charsets, overview Recoding is currently possible between many charsets, the bulk of which is described by @w{RFC 1345} tables or available in a pre-installed external @code{iconv} library. @xref{Tabular}, and @pxref{iconv}@footnote{Because @code{iconv} can vary from system to system, and is itself a complex tool, it can cause recode to behave in unexpected ways. Therefore, by default it is only used when a conversion would not be possible without it. To request that @code{iconv} be used, use @code{--prefer-iconv}; see @xref{prefer-iconv}. Conversely, you can disable it with the @code{-x:} option; see @xref{disable-iconv}.}. The Recode library also handles some charsets in some specialised ways. These are: @itemize @bullet @item 6-bit charsets based on CDC display code: 6/12 code from NOS; bang-bang code from Universit@'e de Montr@'eal; @item 7-bit ASCII: without any diacritics, or else: using backspace for overstriking; Unisys' Icon convention; @TeX{}/La@TeX{} coding; easy French conventions for electronic mail; @item 8-bit extensions to ASCII: ISO @w{Latin-1}, Atari ST code, IBM's code for the PC, Apple's code for the Macintosh, ISO 5426 and ANSEL library codes; @item 8-bit non-ASCII codes: three flavours of EBCDIC; @item 16-bit or 31-bit universal characters, and their transfer encodings. @end itemize The introduction of @w{RFC 1345} in Recode has brought with it a few charsets having the functionality of older ones, but yet being different in subtle ways. The effects have not been fully investigated yet, so for now, clashes are avoided, the old and new charsets are kept well separate. @cindex unavailable conversions @cindex conversions, unavailable @cindex impossible conversions @cindex unreachable charsets @cindex exceptions to available conversions @cindex pseudo-charsets @tindex flat@r{, not as before charset} @tindex count-characters@r{, not as before charset} @tindex dump-with-names@r{, not as before charset} @tindex data@r{, not with charsets} @tindex iconv@r{, not in requests} Conversion is possible between almost any pair of charsets. Here is a list of the exceptions. One may not recode @emph{from} the @code{flat}, @code{count-characters} or @code{dump-with-names} charsets, nor @emph{from} or @emph{to} the @code{data} or @code{:iconv:} charsets. Also, if we except the @code{data} pseudo-charset, charsets and surfaces live in disjoint recoding spaces, one cannot really transform a surface into a charset or vice-versa, as surfaces are only meant to be applied over charsets, or removed from them. @node Surface overview, Contributing, Charset overview, Introduction @section Overview of surfaces @cindex surfaces, overview For various practical considerations, it sometimes happens that the codes making up a text, written in a particular charset, cannot simply be put out in a file one after another without creating problems or breaking other things. Sometimes, 8-bit codes cannot be written on a 7-bit medium, variable length codes need kind of envelopes, newlines require special treatment, etc. We sometimes have to apply @dfn{surfaces} to a stream of codes, which surfaces are kind of tricks used to fit the charset into those practical constraints. Moreover, similar surfaces or tricks may be useful for many unrelated charsets, and many surfaces can be used at once over a single charset. @cindex pure charset @cindex charset, pure So, Recode has machinery to describe a combination of a charset with surfaces used over it in a file. We would use the expression @dfn{pure charset} for referring to a charset free of any surface, that is, the conceptual association between integer codes and character intents. It is not always clear if some transformation will yield a charset or a surface, especially for those transformations which are only meaningful over a single charset. The Recode library is not overly picky as identifying surfaces as such: when it is practical to consider a specialised surface as if it were a charset, this is preferred, and done. @node Contributing, , Surface overview, Introduction @section Contributions and bug reports @cindex contributing charsets Even being the Recode author and current maintainer, I am no specialist in charset standards. I only made Recode along the years to solve my own needs, but felt it was applicable for the needs of others. Some FSF people liked the program structure and suggested to make it more widely available. I often rely on Recode users suggestions to decide what is best to be done next. Properly protecting Recode about possible copyright fights is a pain for me and for contributors, but we cannot avoid addressing the issue in the long run. Besides, the Free Software Foundation, which mandates the GNU project, is very sensible to this matter. GNU standards suggest that we stay cautious before looking at copyrighted code. The safest and simplest way for me is to gather ideas and reprogram them anew, even if this might slow me down considerably. For contributions going beyond a few lines of code here and there, the FSF definitely requires employer disclaimers and copyright assignments in writing. When you contribute something to Recode, @emph{please} explain what it is about. Do not take for granted that I know those charsets which are familiar to you. Once again, I'm no expert, and you have to help me. Your explanations could well find their way into this documentation, too. Also, for contributing new charsets or new surfaces, as much as possible, please provide good, solid, verifiable references for the tables you used@footnote{I'm not prone to accept a charset you just invented, and which nobody uses yet: convince your friends and community first!}. Many users contributed to Recode already, I am grateful to them for their interest and involvement. Some suggestions can be integrated quickly while some others have to be delayed, I have to draw a line somewhere when time comes to make a new release, about what would go in it and what would go in the next. @cindex bug reports, where to send @cindex reporting bugs Please report suggestions, documentation errors and bugs at @uref{https://github.com/rrthomas/recode}. Do not be afraid to report details, because this program is the mere aggregation of hundreds of details. @node Invoking recode, Library, Introduction, Top @chapter How to use this program With the synopsis of the @code{recode} call, we stress the difference between using this program as a file filter, or recoding many files at once. The first parameter of any call states the recoding request, and this deserves a section on its own. Options are then presented, but somewhat grouped according to the related functionalities they control. @menu * Synopsis:: Synopsis of @code{recode} call * Requests:: The @var{request} parameter * Listings:: Asking for various lists * Recoding:: Controlling how files are recoded * Reversibility:: Reversibility issues * Sequencing:: Selecting sequencing methods * Mixed:: Using mixed charset input * Emacs:: Using Recode within Emacs * Debugging:: Debugging considerations @end menu @node Synopsis, Requests, Invoking recode, Invoking recode @section Synopsis of @code{recode} call @cindex @code{recode}, synopsis of invocation @cindex invocation of @code{recode}, synopsis The general format of the program call is one of: @example recode [@var{option}]@dots{} [@var{charset} | @var{request} [@var{file}]@dots{} ] @end example Some calls are used only to obtain lists produced by Recode itself, without actually recoding any file. They are recognised through the usage of listing options, and these options decide what meaning should be given to an optional @var{charset} parameter. @xref{Listings}. In other calls, the first parameter (@var{request}) always explains which transformations are expected on the files. There are many variations to the aspect of this parameter. We will discuss more complex situations later (@pxref{Requests}), but for many simple cases, this parameter merely looks like this@footnote{In previous versions of Recode, a single colon @samp{:} was used instead of the two dots @samp{..} for separating charsets, but this created problems, because colons are allowed in official charset names.}: @example @var{before}..@var{after} @end example @noindent where @var{before} and @var{after} each gives the name of a charset. Each @var{file} will be read assuming it is coded with charset @var{before}, it will be recoded over itself so to use the charset @var{after}. If there is no @var{file} on the @code{recode} command, the program rather acts as a Unix filter and transforms standard input onto standard output. @cindex filter operation @cindex @code{recode}, operation as filter The capability of recoding many files at once is very convenient. For example, one could easily prepare a distribution from @w{Latin-1} to MSDOS, this way: @example mkdir package cp -p Makefile *.[ch] package recode Latin-1..MSDOS package/* zoo ah package.zoo package/* rm -rf package @end example @noindent (In this example, the non-mandatory @samp{-p} option to @code{cp} is for preserving timestamps, and the @code{zoo} program is an archiver from Rahul Dhesi which once was quite popular.) The filter operation is especially useful when the input files should not be altered. Let us make an example to illustrate this point. Suppose that someone has a file named @file{datum.txt}, which is almost a @TeX{} file, except that diacriticised characters are written using @w{Latin-1}. To complete the recoding of the diacriticised characters @emph{only} and produce a file @file{datum.tex}, without destroying the original, one could do: @example cp -p datum.txt datum.tex recode -d l1..tex datum.tex @end example However, using @code{recode} as a filter will achieve the same goal more neatly: @example recode -d l1..tex datum.tex @end example This example also shows that @code{l1} could be used instead of @code{Latin-1}; charset names often have such aliases. @cindex exit status @cindex status code Recode has three modes are for when to set the exit status to non-zero: @itemize @bullet @item The most lenient setting is activated with option @samp{-f}, in which case only system errors or library mis-usage causes the exit status to be set. @item By default, without @samp{-f} nor @samp{-s}, Recode sets the exit status as above, and also in case of invalid or untranslatable input. It also tries (but not always succeed) to detect if output is going to be ambiguous at some later recode-back time. @item The stricter setting is activated with @samp{-s}, Recode then sets the exit status as above, or if input is not canonically coded (and it also prevents itself from @emph{completing} recoding tables for making the recoding reversible). @end itemize @node Requests, Listings, Synopsis, Invoking recode @section The @var{request} parameter In the case where the @var{request} is merely written as @var{before}..@var{after}, then @var{before} and @var{after} specify the start charset and the goal charset for the recoding. @cindex charset names, valid characters @cindex valid characters in charset names For Recode, charset names may contain any character, besides a comma, a forward slash, or two periods in a row. But in practice, charset names are currently limited to alphabetic letters (upper or lower case), digits, hyphens, underlines, periods, colons or round parentheses. @cindex request, syntax @cindex Recode request syntax The complete syntax for a valid @var{request} allows for unusual things, which might be surprising at first. (Do not pay too much attention to these facilities on first reading.) For example, @var{request} may also contain intermediate charsets, like in the following example: @example @var{before}..@var{interim1}..@var{interim2}..@var{after} @end example @noindent @cindex intermediate charsets @cindex chaining of charsets in a request @cindex charsets, chaining in a request meaning that Recode should internally produce the @var{interim1} charset from the start charset, then work out of this @var{interim1} charset to internally produce @var{interim2}, and from there towards the goal charset. In fact, Recode internally combines recipes and automatically uses interim charsets, when there is no direct recipe for transforming @var{before} into @var{after}. But there might be many ways to do it. When many routes are possible, the above @dfn{chaining} syntax may be used to more precisely force the program towards a particular route, which it might not have naturally selected otherwise. On the other hand, because Recode tries to choose good routes, chaining is only needed to achieve some rare, unusual effects. Moreover, many such requests (sub-requests, more precisely) may be separated with commas (but no spaces at all), indicating a sequence of recodings, where the output of one has to serve as the input of the following one. For example, the two following requests are equivalent: @example @var{before}..@var{interim1}..@var{interim2}..@var{after} @var{before}..@var{interim1},@var{interim1}..@var{interim2},@var{interim2}..@var{after} @end example @noindent In this example, the charset input for any recoding sub-request is identical to the charset output by the preceding sub-request. But it does not have to be so in the general case. One might wonder what would be the meaning of declaring the charset input for a recoding sub-request of being of different nature than the charset output by a preceding sub-request, when recodings are chained in this way. Such a strange usage might have a meaning and be useful for the Recode expert, but they are quite uncommon in practice. @cindex surfaces, syntax More useful is the distinction between the concept of charset, and the concept of surfaces. An encoded charset is represented by: @example @var{pure-charset}/@var{surface1}/@var{surface2}@dots{} @end example @noindent @cindex surfaces, commutativity @cindex commutativity of surfaces using slashes to introduce surfaces, if any. The order of application of surfaces is usually important, they cannot be freely commuted. In the given example, @var{surface1} is first applied over the @var{pure-charset}, then @var{surface2} is applied over the result. Given this request: @example @var{before}/@var{surface1}/@var{surface2}..@var{after}/@var{surface3} @end example @noindent Recode will understand that the input files should have @var{surface2} removed first (because it was applied last), then @var{surface1} should be removed. The next step will be to translate the codes from charset @var{before} to charset @var{after}, prior to applying @var{surface3} over the result. @cindex implied surfaces @cindex surfaces, implied @tindex IBM-PC charset, and CR-LF surface Some charsets have one or more @emph{implied} surfaces. In this case, the implied surfaces are automatically handled merely by naming the charset, without any explicit surface to qualify it. Let's take an example to illustrate this feature. The request @samp{pc..l1} will indeed decode MS-DOS end of lines prior to converting IBM-PC codes to @w{Latin-1}, because @samp{pc} is the name of a charset@footnote{More precisely, @code{pc} is an alias for the charset @code{IBM-PC}.} which has @code{CR-LF} for its usual surface. The request @samp{pc/..l1} will @emph{not} decode end of lines, since the slash introduces surfaces, and even if the surface list is empty, it effectively defeats the automatic removal of surfaces for this charset. So, empty surfaces are useful, indeed! @cindex aliases @cindex alternate names for charsets and surfaces @cindex charsets, aliases @cindex surfaces, aliases Both charsets and surfaces may have predefined alternate names, or aliases. However, and this is rather important to understand, implied surfaces are attached to individual aliases rather than on genuine charsets. Consequently, the official charset name and all of its aliases do not necessarily share the same implied surfaces. The charset and all its aliases may each have its own different set of implied surfaces. @cindex abbreviated names for charsets and surfaces @cindex names of charsets and surfaces, abbreviation Charset names, surface names, or their aliases may always be abbreviated to any unambiguous prefix. Internally in Recode, disambiguating tables are kept separate for charset names and surface names. @cindex letter case, in charset and surface names While recognising a charset name or a surface name (or aliases thereof), Recode ignores all characters besides letters and digits, so for example, the hyphens and underlines being part of an official charset name may safely be omitted (no need to un-confuse them!). There is also no distinction between upper and lower case for charset or surface names. One of the @var{before} or @var{after} keywords may be omitted. If the double dot separator is omitted too, then the charset is interpreted as the @var{before} charset.@footnote{Both @var{before} and @var{after} may be omitted, in which case the double dot separator is mandatory. This is not very useful, as the recoding reduces to a mere copy in that case.} @cindex default charset @cindex charset, default @vindex DEFAULT_CHARSET @tindex ASCII @tindex CHAR When a charset name is omitted or left empty, the value of the @code{DEFAULT_CHARSET} variable in the environment is used instead. If this variable is not defined, the Recode library uses the current locale's encoding. On POSIX systems, this depends on the first non-empty value among the environment variables @code{LC_ALL}, @code{LC_CTYPE}, and @code{LANG}, and can be determined through the command @samp{locale charmap}. If the current locale's encoding may not be resolved, then Recode presumes @code{ASCII}. If the charset name is omitted but followed by surfaces, the surfaces then qualify the usual or default charset. For example, the request @samp{../x} is sufficient for applying an hexadecimal surface to the input text@footnote{MS-DOS is one of those systems for which the default charset has implied surfaces, @code{CR-LF} here. Such surfaces are automatically removed or applied whenever the default charset is read or written, exactly as it would go for any other charset. In the example above, on such systems, the hexadecimal surface would then @emph{replace} the implied surfaces. For @emph{adding} an hexadecimal surface without removing any, one should write the request as @samp{/../x}.}. The allowable values for @var{before} or @var{after} charsets, and various surfaces, are described in the remainder of this document. @node Listings, Recoding, Requests, Invoking recode @section Asking for various lists Many options control listing output generated by Recode itself, they are not meant to accompany actual file recodings. These options are: @table @samp @item --version @opindex --version @cindex Recode version, printing The program merely prints its version numbers on standard output, and exits without doing anything else. @item --help @opindex --help @cindex help page, printing The program merely prints a page of help on standard output, and exits without doing any recoding. @item -C @itemx --copyright @opindex -C @opindex --copyright @cindex copyright conditions, printing Given this option, all other parameters and options are ignored. The program prints briefly the copyright and copying conditions. See the file @file{COPYING} in the distribution for full statement of the Copyright and copying conditions. @item -h[@var{language}/][@var{name}] @itemx --header[=[@var{language}/][@var{name}]] @opindex -h @opindex --header @cindex source file generation @cindex programming language support @cindex languages, programming @cindex supported programming languages Instead of recoding files, Recode writes a @var{language} source file on standard output and exits. This source is meant to be included in a regular program written in the same programming @var{language}: its purpose is to declare and initialise an array, named @var{name}, which represents the requested recoding. The only acceptable values for @var{language} are @samp{c} or @samp{perl}, and may may be abbreviated. If @var{language} is not specified, @samp{c} is assumed. If @var{name} is not specified, then it defaults to @samp{@var{before}_@var{after}}. Strings @var{before} and @var{after} are cleaned before being used according to the syntax of @var{language}. Even if Recode tries its best, this option does not always succeed in producing the requested source table, it then prints @samp{Recoding is too complex for a mere table}. It will succeed however, provided the recoding can be internally represented by only one step after the optimisation phase, and if this merged step conveys a one-to-one or a one-to-many explicit table. To increase the probability that this happens, @code{iconv} initialisation is currently inhibited whenever this option is used. Also, when attempting to produce sources tables, Recode relaxes its checking a tiny bit: it ignores the algorithmic part of some tabular recodings, it also avoids the processing of implied surfaces. But this is all fairly technical. Better try and see! Most tables are produced using decimal numbers to refer to character values@footnote{The author of Recode by far prefer expressing numbers in decimal than octal or hexadecimal, as he considers that the current state of technology should not force users anymore in such strange things. But Unicode people see things differently, to the point Recode cannot escape being tainted with some hexadecimal.}. Yet, users who know all Recode tricks and stunts could indeed force octal or hexadecimal output for the table contents. For example: @example recode ibm297/test8..cp1252/x < /dev/null @end example @noindent produces a sequence of hexadecimal values which represent a conversion table from @code{IBM297} to @code{CP1252}. Beware that other options might affect the produced source tables, these are: @samp{-d}, @samp{-g} and, particularly, @samp{-s}. @item -k @var{pairs} @itemx --known=@var{pairs} @opindex -k @opindex --known= @cindex unknown charsets @cindex guessing charsets @cindex charsets, guessing This particular option is meant to help identifying an unknown charset, using as hints some already identified characters of the charset. Some examples will help introducing the idea. Let's presume here that Recode is run in a UTF-8 locale, and that @code{DEFAULT_CHARSET} is unset in the environment. Suppose you have guessed that code 130 (decimal) of the unknown charset represents a lower case @samp{e} with an acute accent. That is to say that this code should map to code 233 (decimal) in the usual charset. By executing: @example recode -k 130:233 @end example @noindent you should obtain a listing similar to: @example AtariST CWI cp-hu CWI-2 IBM437/CR-LF 437/CR-LF CP437/CR-LF IBM850/CR-LF 850/CR-LF CP850/CR-LF IBM851/CR-LF 851/CR-LF CP851/CR-LF IBM852/CR-LF 852/CR-LF CP852/CR-LF pcl2 pclatin2 IBM857/CR-LF 857/CR-LF CP857/CR-LF IBM860/CR-LF 860/CR-LF CP860/CR-LF IBM861/CR-LF 861/CR-LF CP861/CR-LF cp-is IBM863/CR-LF 863/CR-LF CP863/CR-LF IBM865/CR-LF 865/CR-LF CP865/CR-LF @end example You can give more than one clue at once, to restrict the list further. Suppose you have @emph{also} guessed that code 211 of the unknown charset represents an upper case @samp{E} with diaeresis, that is, code 203 in the usual charset. By requesting: @example recode -k 130:233,211:203 @end example @noindent you should obtain: @example IBM850/CR-LF 850/CR-LF CP850/CR-LF IBM852/CR-LF 852/CR-LF CP852/CR-LF pcl2 pclatin2 IBM857/CR-LF 857/CR-LF CP857/CR-LF @end example The usual charset may be overridden by specifying one non-option argument. For example, to request the list of charsets for which code 130 maps to code 142 for the Macintosh, you may ask: @example recode -k 130:142 mac @end example @noindent and get: @example AtariST CWI cp-hu CWI-2 IBM437/CR-LF 437/CR-LF CP437/CR-LF IBM850/CR-LF 850/CR-LF CP850/CR-LF IBM851/CR-LF 851/CR-LF CP851/CR-LF IBM852/CR-LF 852/CR-LF CP852/CR-LF pcl2 pclatin2 IBM857/CR-LF 857/CR-LF CP857/CR-LF IBM860/CR-LF 860/CR-LF CP860/CR-LF IBM861/CR-LF 861/CR-LF CP861/CR-LF cp-is IBM863/CR-LF 863/CR-LF CP863/CR-LF IBM865/CR-LF 865/CR-LF CP865/CR-LF @end example @noindent which, of course, is identical to the result of the first example, since the code 142 for the Macintosh is a small @samp{e} with acute. More formally, option @samp{-k} lists all possible @emph{before} charsets for the @emph{after} charset given as the sole non-option argument to @code{recode}, but subject to restrictions given in @var{pairs}. If there is no non-option argument, the @emph{after} charset is taken to be the default charset for this @code{recode}. The restrictions are given as a comma separated list of pairs, each pair consisting of two numbers separated by a colon. The numbers are taken as decimal when the initial digit is between @samp{1} and @samp{9}; @samp{0x} starts an hexadecimal number, or else @samp{0} starts an octal number. The first number is a code in any @emph{before} charset, while the second number is a code in the specified @emph{after} charset. If the first number would not be transformed into the second number by recoding from some @emph{before} charset to the @emph{after} charset, then this @emph{before} charset is rejected. A @emph{before} charset is listed only if it is not rejected by any pair. The program will only test those @emph{before} charsets having a tabular style internal description (@pxref{Tabular}), so should be the selected @emph{after} charset. The produced list is in fact a subset of the list produced by the option @samp{-l}. As for option @samp{-l}, the non-option argument is interpreted as a charset name, possibly abbreviated to any non ambiguous prefix. @item -l[@var{format}] @itemx --list[=@var{format}] @opindex -l @opindex --list @cindex listing charsets @cindex information about charsets This option asks for information about all charsets, or about one particular charset. No file will be recoded. If there is no non-option arguments, Recode ignores the @var{format} value of the option, it writes a sorted list of charset names on standard output, one per line. When a charset name have aliases or synonyms, they follow the true charset name on its line, sorted from left to right. Each charset or alias is followed by its implied surfaces, if any. This list is over two hundred lines. It is best used with @samp{grep -i}, as in: @example recode -l | grep -i greek @end example @anchor{disable-iconv} Within a collection of names for a single charset, the Recode library distinguishes one of them as being the genuine charset name, while the others are said to be aliases. The list normally integrates all charsets from the external @code{iconv} library, unless this is defeated through options like @samp{--ignore=:iconv:} or @samp{-x:}. The portable @code{libiconv} library relates its own aliases of a same charset, and for a given set of aliases, if none of them are known to Recode already, then Recode will pick one as being the genuine charset. The @code{iconv} library within GNU @code{libc} makes all aliases appear as different charsets, and each will be presented as a charset by Recode, unless it is known otherwise. There might be one non-option argument, in which case it is interpreted as a charset name, possibly abbreviated to any non ambiguous prefix. This particular usage of the @samp{-l} option is obeyed @emph{only} for charsets having a tabular style internal description (@pxref{Tabular}). Even if most charsets have this property, some do not, and the option @samp{-l} cannot be used to detail these particular charsets. For knowing if a particular charset can be listed this way, you should merely try and see if this works. The @var{format} value of the option is a keyword from the following list. Keywords may be abbreviated by dropping suffix letters, and even reduced to the first letter only: @table @samp @item decimal This format asks for the production on standard output of a concise tabular display of the charset, in which character code values are expressed in decimal. @item octal This format uses octal instead of decimal in the concise tabular display of the charset. @item hexadecimal This format uses hexadecimal instead of decimal in the concise tabular display of the charset. @item full This format requests an extensive display of the charset on standard output, using one line per character showing its decimal, hexadecimal, octal and @code{UCS-2} code values, and also a descriptive comment which should be the 10646 name for the character. @vindex LC_MESSAGES@r{, when listing charsets} @cindex French description of charsets The descriptive comment is given in English and ASCII, yet if the English description is not available but a French one is, then the French description is given instead, using @w{Latin-1}. However, if the @code{LC_MESSAGES} environment variable begins with the letters @samp{fr}, then listing preference goes to French when both descriptions are available. @end table When option @samp{-l} is used together with a @var{charset} argument, the @var{format} defaults to @code{decimal}. @item -T @itemx --find-subsets @opindex -T @opindex --find-subsets @cindex identifying subsets in charsets @cindex subsets in charsets This option is a maintainer tool for evaluating the redundancy of those charsets, in Recode, which are internally represented by an @code{UCS-2} data table. After the listing has been produced, the program exits without doing any recoding. The output is meant to be sorted, like this: @w{@samp{recode -T | sort}}. The option triggers Recode into comparing all pairs of charsets, seeking those which are subsets of others. The concept and results are better explained through a few examples. Consider these three sample lines from @samp{-T} output: @example [ 0] IBM891 == IBM903 [ 1] IBM1004 < CP1252 [ 12] INVARIANT < CSA_Z243.4-1985-1 @end example @noindent The first line means that @code{IBM891} and @code{IBM903} are completely identical as far as Recode is concerned, so one is fully redundant to the other. The second line says that @code{IBM1004} is wholly contained within @code{CP1252}, yet there is a single character which is in @code{CP1252} without being in @code{IBM1004}. The third line says that @code{INVARIANT} is wholly contained within @code{CSA_Z243.4-1985-1}, but twelve characters are in @code{CSA_Z243.4-1985-1} without being in @code{INVARIANT}. The whole output might most probably be reduced and made more significant through a transitivity study. @end table @node Recoding, Reversibility, Listings, Invoking recode @section Controlling how files are recoded The following options have the purpose of giving the user some fine grain control over the recoding operation themselves. @table @samp @item -c @itemx --colons @opindex -c @opindex --colons @cindex diaeresis With @code{Texte} Easy French conventions, use the column @kbd{:} instead of the double-quote @kbd{"} for marking diaeresis. @xref{Texte}. @item -g @itemx --graphics @opindex -g @opindex --graphics @cindex IBM graphics characters @cindex box-drawing characters This option is only meaningful while getting @emph{out} of the @code{IBM-PC} charset. In this charset, characters 176 to 223 are used for constructing rulers and boxes, using simple or double horizontal or vertical lines. This option forces the automatic selection of ASCII characters for approximating these rulers and boxes, at cost of making the transformation irreversible. Option @samp{-g} implies @samp{-f}. @item -t @itemx --touch @opindex -t @opindex --touch @cindex time stamps of files @cindex file time stamps The @emph{touch} option is meaningful only when files are recoded over themselves. Without it, the time-stamps associated with files are preserved, to reflect the fact that changing the code of a file does not really alter its informational contents. When the user wants the recoded files to be time-stamped at the recoding time, this option inhibits the automatic protection of the time-stamps. @item -v @itemx --verbose @opindex -v @opindex --verbose @cindex verbose operation @cindex details about recoding @cindex recoding details @cindex quality of recoding Before doing any recoding, the program will first print on the @code{stderr} stream the list of all intermediate charsets planned for recoding, starting with the @var{before} charset and ending with the @var{after} charset. It also prints an indication of the recoding quality, as one of the word @samp{reversible}, @samp{one to one}, @samp{one to many}, @samp{many to one} or @samp{many to many}. This information will appear once or twice. It is shown a second time only when the optimisation and step merging phase succeeds in replacing many single steps by a new one. This option also has a second effect. The program will print on @code{stderr} one message per recoded @var{file}, so as to keep the user informed of the progress of its command. An easy way to know beforehand the sequence or quality of a recoding is by using the command such as: @example recode -v @var{before}..@var{after} < /dev/null @end example @noindent using the fact that, in Recode, an empty input file produces an empty output file. @item -x @var{charset} @itemx --ignore=@var{charset} @opindex -x @opindex --ignore @cindex ignore charsets @cindex recoding path, rejection This option tells the program to ignore any recoding path through the specified @var{charset}, so disabling any single step using this charset as a start or end point. This may be used when the user wants to force Recode into using an alternate recoding path (yet using chained requests offers a finer control, @pxref{Requests}). @var{charset} may be abbreviated to any unambiguous prefix. @end table @node Reversibility, Sequencing, Recoding, Invoking recode @section Reversibility issues The following options are somewhat related to reversibility issues: @table @samp @item -f @itemx --force @opindex -f @opindex --force @cindex force recoding @cindex irreversible recoding With this option, irreversible or otherwise erroneous recodings are run to completion, and @code{recode} does not exit with a non-zero status if it would be only because irreversibility matters. @xref{Reversibility}. Without this option, Recode tries to protect you against recoding a file irreversibly over itself@footnote{There are still some cases of ambiguous output which are rather difficult to detect, and for which the protection is not active.}. Whenever an irreversible recoding is met, or any other recoding error, @code{recode} produces a warning on standard error. The current input file does not get replaced by its recoded version, and @code{recode} then proceeds with the recoding of the next file. When the program is merely used as a filter, standard output will have received a partially recoded copy of standard input, up to the first error point. After all recodings have been done or attempted, and if some recoding has been aborted, @code{recode} exits with a non-zero status. @item -q @itemx --quiet @itemx --silent @opindex -q @opindex --quiet @opindex --silent @cindex suppressing diagnostic messages @cindex error messages, suppressing @cindex silent operation This option has the sole purpose of inhibiting warning messages about irreversible recodings, and other such diagnostics. It has no other effect, in particular, it does @emph{not} prevent recodings to be aborted or @code{recode} to return a non-zero exit status when irreversible recodings are met. This option is set automatically for the children processes, when recode splits itself in many collaborating copies. Doing so, the diagnostic is issued only once by the parent. See option @samp{-p}. @item -s @itemx --strict @opindex -s @opindex --strict @cindex strict operation @cindex map filling, disable @cindex disable map filling By using this option, the user requests that Recode be very strict while recoding a file, merely losing in the transformation any character which is not explicitly mapped from a charset to another. Such a loss is not reversible and so, will bring Recode to fail, unless the option @samp{-f} is also given as a kind of counter-measure. Using @samp{-s} without @samp{-f} might render Recode very susceptible to the slighest file abnormalities. Despite the fact that it might be irritating to some users, such paranoia is sometimes wanted and useful. @end table @cindex reversibility of recoding Even if Recode tries hard to keep the recodings reversible, you should not develop an unconditional confidence in its ability to do so. You @emph{ought} to keep only reasonable expectations about reverse recodings. In particular, consider: @itemize @bullet @item Most transformations are fully reversible for all inputs, but lose this property whenever @samp{-s} is specified. @item A few transformations are not meant to be reversible, by design. @item Reversibility sometimes depends on actual file contents and cannot be ascertained beforehand, without reading the file. @item Reversibility is never absolute across successive versions of this program. Even correcting a small bug in a mapping could induce slight discrepancies later. @item Reversibility is easily lost by merging. This is best explained through an example. If you reversibly recode a file from charset @var{A} to charset @var{B}, then you reversibly recode the result from charset @var{B} to charset @var{C}, you cannot expect to recover the original file by merely recoding from charset @var{C} directly to charset @var{A}. You will instead have to recode from charset @var{C} back to charset @var{B}, and only then from charset @var{B} to charset @var{A}. @item Faulty files create a particular problem. Consider an example, recoding from @code{IBM-PC} to @code{Latin-1}. End of lines are represented as @samp{\r\n} in @code{IBM-PC} and as @samp{\n} in @code{Latin-1}. There is no way by which a faulty @code{IBM-PC} file containing a @samp{\n} not preceded by @samp{\r} be translated into a @code{Latin-1} file, and then back. @item There is another difficulty arising from code equivalences. For example, in a @code{LaTeX} charset file, the string @samp{\^\i@{@}} could be recoded back and forth through another charset and become @samp{\^@{\i@}}. Even if the resulting file is equivalent to the original one, it is not identical. @end itemize @cindex map filling Unless option @samp{-s} is used, Recode automatically tries to fill mappings with invented correspondences, often making them fully reversible. This filling is not made at random. The algorithm tries to stick to the identity mapping and, when this is not possible, it prefers generating many small permutation cycles, each involving only a few codes. For example, here is how @code{IBM-PC} code 186 gets translated to @kbd{control-U} in @code{Latin-1}. @kbd{Control-U} is 21. Code 21 is the @code{IBM-PC} section sign, which is 167 in @code{Latin-1}. Recode cannot reciprocate 167 to 21, because 167 is the masculine ordinal indicator within @code{IBM-PC}, which is 186 in @code{Latin-1}. Code 186 within @code{IBM-PC} has no @code{Latin-1} equivalent; by assigning it back to 21, Recode closes this short permutation loop. As a consequence of this map filling, Recode may sometimes produce @emph{funny} characters. They may look annoying, they are nevertheless helpful when one changes his (her) mind and wants to revert to the prior recoding. If you cannot stand these, use option @samp{-s}, which asks for a very strict recoding. This map filling sometimes has a few surprising consequences, which some users wrongly interpreted as bugs. Here are two examples. @enumerate @item In some cases, Recode seems to copy a file without recoding it. But in fact, it does. Consider a request: @example recode l1..us < File-Latin1 > File-ASCII cmp File-Latin1 File-ASCII @end example @noindent then @code{cmp} will not report any difference. This is quite normal. @w{@code{Latin-1}} gets correctly recoded to ASCII for charsets commonalities (which are the first 128 characters, in this case). The remaining last 128 @w{@code{Latin-1}} characters have no ASCII correspondent. Instead of losing them, Recode elects to map them to unspecified characters of ASCII, so making the recoding reversible. The simplest way of achieving this is merely to keep those last 128 characters unchanged. The overall effect is copying the file verbatim. If you feel this behaviour is too generous and if you do not wish to care about reversibility, simply use option @samp{-s}. By doing so, Recode will strictly map only those @w{@code{Latin-1}} characters which have an ASCII equivalent, and will merely drop those which do not. Then, there is more chance that you will observe a difference between the input and the output file. @item Recoding the wrong way could sometimes give the false impression that recoding has @emph{almost} been done properly. Consider the requests: @example recode 437..l1 < File-Latin1 > Temp1 recode 437..l1 < Temp1 > Temp2 @end example @noindent so declaring wrongly @file{File-Latin1} to be an IBM-PC file, and recoding to @code{Latin-1}. This is surely ill defined and not meaningful. Yet, if you repeat this step a second time, you might notice that many (not all) characters in @file{Temp2} are identical to those in @file{File-Latin1}. Sometimes, people try to discover how Recode works by experimenting a little at random, rather than reading and understanding the documentation; results such as this are surely confusing, as they provide those people with a false feeling that they understood something. Reversible codings have this property that, if applied several times in the same direction, they will eventually bring any character back to its original value. Since Recode seeks small permutation cycles when creating reversible codings, besides characters unchanged by the recoding, most permutation cycles will be of length 2, and fewer of length 3, etc. So, it is just expectable that applying the recoding twice in the same direction will recover most characters, but will fail to recover those participating in permutation cycles of length 3. On the other end, recoding six times in the same direction would recover all characters in cycles of length 1, 2, 3 or 6. @end enumerate @node Sequencing, Mixed, Reversibility, Invoking recode @section Selecting sequencing methods @cindex sequencing Recode can split itself into multiple parallel processes when it is discovered that many passes are needed to comply with the @var{request}. For example, suppose that four elementary steps were selected at recoding path optimisation time. Then Recode will split itself into four different interconnected tasks, logically equivalent to: @example @var{step1} <@var{input} | @var{step2} | @var{step3} | @var{step4} >@var{output} @end example On systems where the pipes method is not available, the steps are performed in series. @table @samp @item --sequence=memory @opindex --sequence @cindex memory sequencing When the recoding requires a combination of two or more elementary recoding steps, this option forces many passes over the data, using in-memory buffers to hold all intermediate results. If this option is selected in filter mode, that is, when the program reads standard input and writes standard output, it might take longer for programs further down the pipe chain to start receiving some recoded data. @item -p @itemx --sequence=pipe @opindex -p @cindex pipe sequencing When the recoding requires a combination of two or more elementary recoding steps, this option forces the program to fork itself into a few copies interconnected with pipes, using the @code{pipe(2)} system call. All copies of the program operate in parallel. This is the default behaviour in filter mode. If this option is used when files are recoded over themselves, this should also save disk space because some temporary files might not be needed, at the cost of more system overhead. @item -i @itemx --sequence=files @opindex -i @cindex file sequencing This option is accepted for backwards compatibility, and acts like @samp{--sequence=memory}. @end table @node Mixed, Emacs, Sequencing, Invoking recode @section Using mixed charset input In real life and practice, textual files are often made up of many charsets at once. Some parts of the file encode one charset, while other parts encode another charset, and so forth. Usually, a file does not toggle between more than two or three charsets. The means to distinguish which charsets are encoded at various places is not always available. Recode is able to handle only a few simple cases of mixed input. The default Recode behaviour is to expect pure charset files, to be recoded as other pure charset files. However, the following options allow for a few precise kinds of mixed charset files. @table @samp @item -d @itemx --diacritics @opindex -d @opindex --diacritics @cindex convert a subset of characters @cindex partial conversion While converting to or from one of @code{HTML}, @code{LaTeX} or @code{BibTeX} charset, limit conversion to some subset of all characters. For @code{HTML}, limit conversion to the subset of all non-ASCII characters. For @code{LaTeX} or @code{BibTeX}, limit conversion to the subset of all non-English letters. This is particularly useful, for example, when people create what would be valid @code{HTML}, @TeX{} or La@TeX{} files, if only they were using provided sequences for applying diacritics instead of using the diacriticised characters directly from the underlying character set. While converting to @code{HTML}, @code{LaTeX} or @code{BibTeX} charset, this option assumes that characters not in the said subset are properly coded or protected already; Recode then transmits them literally. While converting the other way, this option prevents translating back coded or protected versions of characters not in the said subset. @xref{HTML}. @xref{LaTeX}. @xref{BibTeX}. @ignore @item -M @itemx --message @opindex -M @opindex --message Option @samp{-M} would be for messages, it would ideally process @w{RFC 1522} inserts in ASCII headers, converting them to the goal code, rewriting some MIME header line too, and stopping its special work at the first empty line. A special combination of both capabilities would be for the recoding of PO files, in which the header, and @code{msgid} and @code{msgstr} strings, might all use different charsets. Recoding some PO files currently looks like a nightmare, which I would like Recode to repair. @end ignore @item -S[@var{language}] @itemx --source[=@var{language}] @opindex -S @opindex --source @cindex convert strings and comments @cindex string and comments conversion The bulk of the input file is expected to be written in @code{ASCII}, except for parts, like comments and string constants, which are written using another charset than @code{ASCII}. When @var{language} is @samp{c}, the recoding will proceed only with the contents of comments or strings, while everything else will be copied without recoding. When @var{language} is @samp{po}, the recoding will proceed only within translator comments (those having whitespace immediately following the initial @samp{#}) and with the contents of @code{msgstr} strings. For the above things to work, the non-@code{ASCII} encoding of the comment or string should be such that an @code{ASCII} scan will successfully find where the comment or string ends. Even if @code{ASCII} is the usual charset for writing programs, some compilers are able to directly read other charsets, like @code{UTF-8}, say. There is currently no provision in Recode for reading mixed charset sources which are not based on @code{ASCII}. It is probable that the need for mixed recoding is not as pressing in such cases. For example, after one does: @example recode -Spo pc/..u8 < @var{input}.po > @var{output}.po @end example @noindent file @file{@var{output}.po} holds a copy of @file{@var{input}.po} in which @emph{only} translator comments and the contents of @code{msgstr} strings have been recoded from the @code{IBM-PC} charset to pure @code{UTF-8}, without attempting conversion of end-of-lines. Machine generated comments and original @code{msgid} strings are not to be touched by this recoding. If @var{language} is not specified, @samp{c} is assumed. @end table @node Emacs, Debugging, Mixed, Invoking recode @section Using Recode within Emacs The fact the @code{recode} program acts as a filter, when given no file arguments, makes it quite easy to use from within GNU Emacs. For example, recoding the whole buffer from the @code{IBM-PC} charset to current charset (for example, @w{@code{UTF-8}} on Unix) is easily done with: @example C-x h C-u M-| recode ibmpc RET @end example @noindent @samp{C-x h} selects the whole buffer, and @samp{C-u M-|} filters and replaces the current region through the given shell command. Here is another example, binding the keys @w{@samp{C-c T}} to the recoding of the current region from Easy French to @w{@code{Latin-1}} (on Unix) and the key @w{@samp{C-u C-c T}} from @w{@code{Latin-1}} (on Unix) to Easy French: @example (global-set-key "\C-cT" 'recode-texte) (defun recode-texte (flag) (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "..txte" "txte")) t) (exchange-point-and-mark)) @end example @node Debugging, , Emacs, Invoking recode @section Debugging considerations It is our experience that when Recode does not provide satisfying results, either the @code{recode} program was not called properly, correct results raised some doubts nevertheless, or files to recode were somewhat mangled. Genuine bugs are surely possible. Unless you already are a Recode expert, it might be a good idea to quickly revisit the tutorial (@pxref{Tutorial}) or the prior sections in this chapter, to make sure that you properly formatted your recoding request. In the case you intended to use Recode as a filter, make sure that you did not forget to redirect your standard input (through using the @kbd{<} symbol in the shell, say). Some Recode false mysteries are also easily explained, @xref{Reversibility}. For the other cases, some investigation is needed. To illustrate how to proceed, let's presume that you want to recode the @file{nicepage} file, coded @code{UTF-8}, into @code{HTML}. The problem is that the command @samp{recode u8..h nicepage} yields: @example recode: Invalid input in step `UTF-8..ISO-10646-UCS-2' @end example One good trick is to use @code{recode} in filter mode instead of in file replacement mode, @xref{Synopsis}. Another good trick is to use the @samp{-v} option asking for a verbose description of the recoding steps. We could rewrite our recoding call as @samp{recode -v u8..h temporary recode -v ISO_10646-UCS-2..HTML_4.0 }, then Recode might have done a bit more that you wanted. In this case, your input file was half-@code{UTF-8}, half-@code{HTML} already, that is, a mixed file (@pxref{Mixed}). There is a special @code{-d} switch for this case. So, your might be end up calling @samp{recode -fd nicepage}. Until you are quite sure that you accept overwriting your input file whatever what, I recommend that you stick with filter mode. If, after such experiments, you seriously think that Recode does not behave properly, there might be a genuine bug either in the program or the library itself, in which case I invite you to to contribute a bug report, @xref{Contributing}. @node Library, Universal, Invoking recode, Top @chapter A recoding library @cindex recoding library The program named @code{recode} is just an application of its recoding library. The recoding library is available separately for other C programs. A good way to acquire some familiarity with the recoding library is to get acquainted with the @code{recode} program itself. @cindex @code{recode.h} header @cindex @code{program_name} variable To use the recoding library once it is installed, a C program needs to have the following lines: @example #include #include #include const char *program_name; @end example @noindent near its beginning, and the user should have @samp{-lrecode} on the linking call, so modules from the recoding library are found. The library contains four identifiable sets of routines: the outer level functions, the request level functions, the task level functions and the charset level functions. There are discussed in separate sections. For effectively using the recoding library in most applications, it should be rarely needed to study anything beyond the main initialisation function at outer level, and then, various functions at request level. @menu * Outer level:: Outer level functions * Request level:: Request level functions * Task level:: Task level functions * Charset level:: Charset level functions * Errors:: Handling errors @end menu @node Outer level, Request level, Library, Library @section Outer level functions @cindex outer level functions The outer level functions mainly prepare the whole recoding library for use, or do actions which are unrelated to specific recodings. Here is an example of a program which does not really make anything useful. @example @group #include #include #include const char *program_name; int main (int argc, char *const *argv) @{ program_name = argv[0]; RECODE_OUTER outer = recode_new_outer (RECODE_AUTO_ABORT_FLAG); recode_delete_outer (outer); exit (EXIT_SUCCESS); @} @end group @end example @vindex RECODE_OUTER structure The header file @code{recode.h} declares an opaque @code{RECODE_OUTER} structure, which the programmer should use for allocating a variable in his program (let's assume the programmer is a male, here, no prejudice intended). This @samp{outer} variable is given as a first argument to all outer level functions. @cindex speed considerations The @code{RECODE_OUTER} structure is really meant to be initialised only once in the life of a program, and terminated with the program itself. Program interfaces should pay attention to initialise it only once, would it be only for speed considerations. A good deal of overhead goes to outer level initialization, and if the outer level was initialized afresh for each and every string translated, say, the Recode library would appear immensely much slower that it was meant to be! @cindex memory leaks @cindex leaks, memory Because outer level initialization is meant to be done only once, not so much attention has been paid to avoid memory leaks at this level within Recode. This is hardly a reason for not plugging such leaks at any level: in the long run, they should all be chased and repaired. @itemize @bullet @item Initialisation functions @cindex initialisation functions, outer @example RECODE_OUTER recode_new_outer (@var{flags}); bool recode_delete_outer (@var{outer}); @end example @findex recode_new_outer @findex recode_delete_outer The recoding library absolutely needs to be initialised before being used, and @code{recode_new_outer} has to be called once, first. Besides the @var{outer} it is meant to initialise, the function accepts an integer value holding zero or more flags. If no flags, use @samp{0}. If more than one flag, they should be combined with the bitwise-or (@samp{|}) operator. The possible flags are: @table @code @item RECODE_AUTO_ABORT_FLAG When this flag is set, the library later issues diagnostics itself, and aborts the calling program on errors. This is merely a convenience, because if this flag was not given, the calling program should always take care of checking the return value of all other calls to the recoding library functions, and when any error is detected, issue a diagnostic and abort processing itself. @item RECODE_NO_ICONV_FLAG When this flag is set, the library does not initialize or use the external @code{iconv} library. This means that the charsets and aliases provided by the @code{iconv} external library and not by Recode itself are not available. @item RECODE_STRICT_MAPPING_FLAG When this flag is set (corresponding to the @samp{--strict} command-line option), untranslatable characters are discarded, but an error is returned on completion unless @samp{RECODE_FORCE_FLAG} is also set. @item RECODE_FORCE_FLAG When this flag is set (corresponding to the @samp{--force} command-line option), errors caused by untranslatable characters are ignored. @end table In previous incarnations of the Recode library, @var{flags} was a Boolean instead of a collection of flags, meant to set @code{RECODE_AUTO_ABORT_FLAG}. This still works, but is deprecated. Regardless of the setting of @code{RECODE_AUTO_ABORT}, all recoding library functions return a success status. Most functions are geared for returning @code{false} for an error, and @code{true} if everything went fine. Functions returning structures or strings return @code{NULL} instead of the result, when the result cannot be produced. If @var{RECODE_AUTO_ABORT} is selected, functions either return @code{true}, or do not return at all. As in the example above, @code{recode_new_outer} is called only once in most cases. Calling @code{recode_new_outer} implies some overhead, so calling it more than once should preferably be avoided. The termination function @code{recode_delete_outer} reclaims the memory allocated by @code{recode_new_outer} for a given @var{outer} variable. Calling @code{recode_delete_outer} prior to program termination is more aesthetic then useful, as all memory resources are automatically reclaimed when the program ends. You may spare this terminating call if you prefer. @item The @code{program_name} declaration @cindex @code{program_name} variable As we just explained, the user may set the Recode library so that, in case of problems error, it issues the diagnostic itself and aborts the whole processing. This capability may be quite convenient. When this feature is used, the aborting routine includes the name of the running program in the diagnostic. On the other hand, when this feature is not used, the library merely return error codes, giving the library user fuller control over all this. This behaviour is more like what usual libraries do: they return codes and never abort. However, I would rather not force library users to necessarily check all return codes themselves, by leaving no other choice. In most simple applications, letting the library diagnose and abort is much easier, and quite welcome. This is precisely because both possibilities exist that the @code{program_name} variable is needed: it may be used by the library @emph{when} the user sets it to diagnose itself. @end itemize @node Request level, Task level, Outer level, Library @section Request level functions @cindex request level functions The request level functions are meant to cover most recoding needs programmers may have; they should provide all usual functionality. Their API is almost stable by now. To get started with request level functions, here is a full example of a program which sole job is to filter @code{ibmpc} code on its standard input into @code{latin1} code on its standard output. @example @group #include #include #include #include const char *program_name; int main (int argc, char *const *argv) @{ program_name = argv[0]; RECODE_OUTER outer = recode_new_outer (RECODE_AUTO_ABORT_FLAG); RECODE_REQUEST request = recode_new_request (outer); bool success; recode_scan_request (request, "ibmpc..latin1"); success = recode_file_to_file (request, stdin, stdout); recode_delete_request (request); recode_delete_outer (outer); exit (success ? EXIT_SUCCESS : EXIT_FAILURE); @} @end group @end example @vindex RECODE_REQUEST structure The header file @code{recode.h} declares a @code{RECODE_REQUEST} structure, which the programmer should use for allocating a variable in his program. This @var{request} variable is given as a first argument to all request level functions, and in most cases, may be considered as opaque. @cindex speed considerations Suppose an application is doing a lot of recoding using only a few different requests. For speed considerations, the @code{RECODE_REQUEST} structure should ideally be cached for each kind of request, so the request level initialisation is not redone for each and every string translated. The speedup should be more apparent when Recode is able to optimize the work by building on the fly, within the structure, new specialized recoding steps and their associated data tables. @itemize @bullet @item Initialisation functions @cindex initialisation functions, request @example RECODE_REQUEST recode_new_request (@var{outer}); bool recode_delete_request (@var{request}); @end example @findex recode_new_request @findex recode_delete_request No @var{request} variable may not be used in other request level functions of the recoding library before having been initialised by @code{recode_new_request}. There may be many such @var{request} variables, in which case, they are independent of one another and they all need to be initialised separately. To avoid memory leaks, a @var{request} variable should not be initialised a second time without calling @code{recode_delete_request} to ``un-initialise'' it. Like for @code{recode_delete_outer}, calling @code{recode_delete_request} prior to program termination, in the example above, may be left out. @item Fields of @code{struct recode_request} @vindex recode_request structure Here are the fields of a @code{struct recode_request} which may be meaningfully changed, once a @var{request} has been initialised by @code{recode_new_request}, but before it gets used. It is not very frequent, in practice, that these fields need to be changed. To access the fields, you need to include @file{recodext.h} @emph{instead} of @file{recode.h}, in which case there also is a greater chance that you need to recompile your programs if a new version of the recoding library gets installed. @table @code @item verbose_flag @vindex verbose_flag This field is initially @code{false}. When set to @code{true}, the library will echo to stderr the sequence of elementary recoding steps needed to achieve the requested recoding. @item diaeresis_char @vindex diaeresis_char This field is initially the ASCII value of a double quote @kbd{"}, but it may also be the ASCII value of a colon @kbd{:}. In @code{texte} charset, some countries use double quotes to mark diaeresis, while other countries prefer colons. This field contains the diaeresis character for the @code{texte} charset. @item make_header_flag @vindex make_header_flag This field is initially @code{false}. When set to @code{true}, it indicates that the program is merely trying to produce a recoding table in source form rather than completing any actual recoding. In such a case, the optimisation of step sequence can be attempted much more aggressively. If the step sequence cannot be reduced to a single step, table production will fail. @item diacritics_only @vindex diacritics_only This field is initially @code{false}. For @code{HTML}, @code{LaTeX} and @code{BibTeX} charset, it is often convenient to recode the diacriticized characters only, while just not recoding other HTML code using ampersands or angular brackets, or La@TeX{} code using backslashes. Set the field to @code{true} for getting this behaviour. In the other charset, one can edit text as well as HTML or La@TeX{} directives. @item ascii_graphics @vindex ascii_graphics This field is initially @code{false}, and relate to characters 176 to 223 in the @code{ibmpc} charset, which are use to draw boxes. When set to @code{true}, while getting out of @code{ibmpc}, ASCII characters are selected so to graphically approximate these boxes. @end table @item Study of request strings @example bool recode_scan_request (@var{request}, "@var{string}"); @end example @findex recode_scan_request The main role of a @var{request} variable is to describe a set of recoding transformations. Function @code{recode_scan_request} studies the given @var{string}, and stores an internal representation of it into @var{request}. Note that @var{string} may be a full-fledged Recode request, possibly including surfaces specifications, intermediary charsets, sequences, aliases or abbreviations (@pxref{Requests}). The internal representation automatically receives some pre-conditioning and optimisation, so the @var{request} may then later be used many times to achieve many actual recodings. It would not be efficient calling @code{recode_scan_request} many times with the same @var{string}, it is better having many @var{request} variables instead. @item Actual recoding jobs Once the @var{request} variable holds the description of a recoding transformation, a few functions use it for achieving an actual recoding. Either input or output of a recoding may be string, an in-memory buffer, or a file. Functions with names like @code{recode_@var{input-type}_to_@var{output-type}} request an actual recoding, and are described below. It is easy to remember which arguments each function accepts, once grasped some simple principles for each possible @var{type}. However, one of the recoding function escapes these principles and is discussed separately, first. @example recode_string (@var{request}, @var{string}); @end example @findex recode_string The function @code{recode_string} recodes @var{string} according to @var{request}, and directly returns the resulting recoded string freshly allocated, or @code{NULL} if the recoding could not succeed for some reason. When this function is used, it is the responsibility of the programmer to ensure that the memory used by the returned string is later reclaimed. @findex recode_string_to_buffer @findex recode_string_to_file @findex recode_buffer_to_buffer @findex recode_buffer_to_file @findex recode_file_to_buffer @findex recode_file_to_file @example char *recode_string_to_buffer (@var{request}, @var{input_string}, &@var{output_buffer}, &@var{output_length}, &@var{output_allocated}); bool recode_string_to_file (@var{request}, @var{input_file}, @var{output_file}); bool recode_buffer_to_buffer (@var{request}, @var{input_buffer}, @var{input_length}, &@var{output_buffer}, &@var{output_length}, &@var{output_allocated}); bool recode_buffer_to_file (@var{request}, @var{input_buffer}, @var{input_length}, @var{output_file}); bool recode_file_to_buffer (@var{request}, @var{input_file}, &@var{output_buffer}, &@var{output_length}, &@var{output_allocated}); bool recode_file_to_file (@var{request}, @var{input_file}, @var{output_file}); @end example All these functions return a @code{bool} result, @code{false} meaning that the recoding was not successful, often because of reversibility issues. The name of the function well indicates on which types it reads and which type it produces. Let's discuss these three types in turn. @table @asis @item string A string is merely an in-memory buffer which is terminated by a @code{NUL} character (using as many bytes as needed), instead of being described by a byte length. For input, a pointer to the buffer is given through one argument. It is notable that there is no @code{to_string} functions. Only one function recodes into a string, and it is @code{recode_string}, which has already been discussed separately, above. @item buffer A buffer is a sequence of bytes held in computer memory. For input, two arguments provide a pointer to the start of the buffer and its byte size. Note that for charsets using many bytes per character, the size is given in bytes, not in characters. For output, three arguments provide the address of three variables, which will receive the buffer pointer, the used buffer size in bytes, and the allocated buffer size in bytes. If at the time of the call, the buffer pointer is @code{NULL}, then the allocated buffer size should also be zero, and the buffer will be allocated afresh by the recoding functions. However, if the buffer pointer is not @code{NULL}, it should be already allocated, the allocated buffer size then gives its size. If the allocated size gets exceeded while the recoding goes, the buffer will be automatically reallocated bigger, probably elsewhere, and the allocated buffer size will be adjusted accordingly. The second variable, giving the in-memory buffer size, will receive the exact byte size which was needed for the recoding. A @code{NUL} character is guaranteed at the end of the produced buffer, but is not counted in the byte size of the recoding. Beyond that @code{NUL}, there might be some extra space after the recoded data, extending to the allocated buffer size. @item file @findex recode_filter_open@r{, not available} @findex recode_filter_close@r{, not available} A file is a sequence of bytes held outside computer memory, but buffered through it. For input, one argument provides a pointer to a file already opened for read. The file is then read and recoded from its current position until the end of the file, effectively swallowing it in memory if the destination of the recoding is a buffer. For reading a file filtered through the recoding library, but only a little bit at a time, one should rather use @code{recode_filter_open} and @code{recode_filter_close} (these two functions are not yet available). For output, one argument provides a pointer to a file already opened for write. The result of the recoding is written to that file starting at its current position. @end table @end itemize @findex recode_format_table The following special function is still subject to change: @example void recode_format_table (@var{request}, @var{language}, "@var{name}"); @end example @noindent and is not documented anymore for now. @node Task level, Charset level, Request level, Library @section Task level functions @cindex task level functions The task level functions are used internally by the request level functions, they allow more explicit control over files and memory buffers holding input and output to recoding processes. The interface specification of task level functions is still subject to change a bit. To get started with task level functions, here is a full example of a program which sole job is to filter @code{ibmpc} code on its standard input into @code{latin1} code on its standard output. That is, this program has the same goal as the one from the previous section, but does its things a bit differently. @example @group #include #include #include const char *program_name; int main (int argc, char *const *argv) @{ program_name = argv[0]; RECODE_OUTER outer = recode_new_outer (0); RECODE_REQUEST request = recode_new_request (outer); RECODE_TASK task; bool success; recode_scan_request (request, "ibmpc..latin1"); task = recode_new_task (request); task->input.name = ""; task->output.name = ""; success = recode_perform_task (task); recode_delete_task (task); recode_delete_request (request); recode_delete_outer (outer); exit (success ? EXIT_SUCCESS : EXIT_FAILURE); @} @end group @end example @cindex @code{recodext.h} header Note that in the example above, @code{recodext.h} header is used instead of @code{recode.h}. By doing so, the various structures are not opaque anymore, and their fields may be accessed by name. @vindex RECODE_TASK structure The header file @code{recode.h} declares a @code{RECODE_TASK} structure, which the programmer should use for allocating a variable in his program. This @code{task} variable is given as a first argument to all task level functions. The programmer ought to change and possibly consult a few fields in this structure, using special functions. @itemize @bullet @item Initialisation functions @cindex initialisation functions, task @findex recode_new_task @findex recode_delete_task @example RECODE_TASK recode_new_task (@var{request}); bool recode_delete_task (@var{task}); @end example No @var{task} variable may be used in other task level functions of the recoding library without having first been initialised with @code{recode_new_task}. There may be many such @var{task} variables, in which case, they are independent of one another and they all need to be initialised separately. To avoid memory leaks, a @var{task} variable should not be initialised a second time without calling @code{recode_delete_task} to ``un-initialise'' it. This function also accepts a @var{request} argument and associates the request to the task. In fact, a task is essentially a set of recoding transformations with the specification for its current input and its current output. The @var{request} variable may be scanned before or after the call to @code{recode_new_task}, it does not matter so far. Immediately after initialisation, before further changes, the @var{task} variable associates @var{request} empty in-memory buffers for both input and output. The output buffer will later get allocated automatically on the fly, as needed, by various task processors. Even if a call to @code{recode_delete_task} is not strictly mandatory before ending the program, it is cleaner to always include it. Moreover, in some future version of the recoding library, it might become required. @item Fields of @code{struct task_request} @vindex task_request structure Here are the fields of a @code{struct task_request} which may be meaningfully changed, once a @var{task} has been initialised by @code{recode_new_task}. In fact, fields are expected to change. Once again, to access the fields, you need to include @file{recodext.h} @emph{instead} of @file{recode.h}, in which case there also is a greater chance that you need to recompile your programs if a new version of the recoding library gets installed. @table @code @item request The field @code{request} points to the current recoding request, but may be changed as needed between recoding calls, for example when there is a need to achieve the construction of a resulting text made up of many pieces, each being recoded differently. @item input.name @itemx input.file If @code{input.name} is not @code{NULL} at start of a recoding, this is a request that a file by that name be first opened for reading and later automatically closed once the whole file has been read. If the file name is not @code{NULL} but an empty string, it means that standard input is to be used. The opened file pointer is then held into @code{input.file}. If @code{input.name} is @code{NULL} and @code{input.file} is not, than @code{input.file} should point to a file already opened for read, which is meant to be recoded. @item input.buffer @itemx input.cursor @itemx input.limit When both @code{input.name} and @code{input.file} are @code{NULL}, three pointers describe an in-memory buffer containing the text to be recoded. The buffer extends from @code{input.buffer} to @code{input.limit}, yet the text to be recoded only extends from @code{input.cursor} to @code{input.limit}. In most situations, @code{input.cursor} starts with the value that @code{input.buffer} has. (Its value will internally advance as the recoding goes, until it reaches the value of @code{input.limit}.) @item output.name @itemx output.file If @code{output.name} is not @code{NULL} at start of a recoding, this is a request that a file by that name be opened for write and later automatically closed after the recoding is done. If the file name is not @code{NULL} but an empty string, it means that standard output is to be used. The opened file pointer is then held into @code{output.file}. If several passes with intermediate files are needed to produce the recoding, the @code{output.name} file is opened only for the final pass. If @code{output.name} is @code{NULL} and @code{output.file} is not, then @code{output.file} should point to a file already opened for write, which will receive the result of the recoding. @item output.buffer @itemx output.cursor @itemx output.limit When both @code{output.name} and @code{output.file} are @code{NULL}, three pointers describe an in-memory buffer meant to receive the text, once it is recoded. The buffer is already allocated from @code{output.buffer} to @code{output.limit}. In most situations, @code{output.cursor} starts with the value that @code{output.buffer} has. Once the recoding is done, @code{output.cursor} will point at the next free byte in the buffer, just after the recoded text, so another recoding could be called without changing any of these three pointers, for appending new information to it. The number of recoded bytes in the buffer is the difference between @code{output.cursor} and @code{output.buffer}. Each time @code{output.cursor} reaches @code{output.limit}, the buffer is reallocated bigger, possibly at a different location in memory, always held up-to-date in @code{output.buffer}. It is still possible to call a task level function with no output buffer at all to start with, in which case all three fields should have @code{NULL} as a value. This is the situation immediately after a call to @code{recode_new_task}. @item byte_order_mark @vindex byte_order_mark This field, which is preset to @code{true}, indicates that a byte order mark is to be expected at the beginning of any canonical @code{UCS-2} or @code{UTF-16} text, and that such a byte order mark should be also produced for these charsets. @item fail_level @vindex fail_level This field, which is of type @code{enum recode_error} (@pxref{Errors}), sets the error level at which task level functions should report a failure. If an error being detected is equal or greater than @code{fail_level}, the function will eventually return @code{false} instead of @code{true}. The preset value for this field is @code{RECODE_NOT_CANONICAL}, that means that if not reset to another value, the library will report failure on @emph{any} error. @item abort_level @vindex abort_level @vindex RECODE_MAXIMUM_ERROR This field, which is of type @code{enum recode_error} (@pxref{Errors}), sets the error level at which task level functions should immediately interrupt their processing. If an error being detected is equal or greater than @code{abort_level}, the function returns immediately, but the returned value (@code{true} or @code{false}) is still is decided from the setting of @code{fail_level}, not @code{abort_level}. The preset value for this field is @code{RECODE_MAXIMUM_ERROR}, that means that is not reset to another value, the library will never interrupt a recoding task. @item error_so_far @vindex error_so_far This field, which is of type @code{enum recode_error} (@pxref{Errors}), maintains the maximum error level met so far while the recoding task was proceeding. The preset value is @code{RECODE_NO_ERROR}. @end table @item Task execution @cindex task execution @findex recode_perform_task @findex recode_filter_open @findex recode_filter_close @example recode_perform_task (@var{task}); recode_filter_open (@var{task}, @var{file}); recode_filter_close (@var{task}); @end example The function @code{recode_perform_task} reads as much input as possible, and recode all of it on prescribed output, given a properly initialised @var{task}. Functions @code{recode_filter_open} and @code{recode_filter_close} are only planned for now. They are meant to read input in piecemeal ways. Even if functionality already exists informally in the library, it has not been made available yet through such interface functions. @end itemize @node Charset level, Errors, Task level, Library @section Charset level functions @cindex charset level functions @cindex internal functions Many functions are internal to the recoding library. Some of them have been made external and available, for the @code{recode} program had to retain all its previous functionality while being transformed into a mere application of the recoding library. These functions are not really documented here for the time being, as we hope that many of them will vanish over time. When this set of routines will stabilise, it would be convenient to document them as an API for handling charset names and contents. @findex find_charset @findex list_all_charsets @findex list_concise_charset @findex list_full_charset @example RECODE_CHARSET find_charset (@var{name}, @var{cleaning-type}); bool list_all_charsets (@var{charset}); bool list_concise_charset (@var{charset}, @var{list-format}); bool list_full_charset (@var{charset}); @end example @node Errors, , Charset level, Library @section Handling errors @cindex error handling @cindex handling errors @cindex error messages The @code{recode} program, while using the Recode library, needs to control whether recoding problems are reported or not, and then reflect these in the exit status. The program should also instruct the library whether the recoding should be abruptly interrupted when an error is met (so sparing processing when it is known in advance that a wrong result would be discarded anyway), or if it should proceed nevertheless. Here is how the library groups errors into levels, listed here in order of increasing severity. @table @code @item RECODE_NO_ERROR @vindex RECODE_NO_ERROR No error was met on previous library calls. @item RECODE_NOT_CANONICAL @vindex RECODE_NOT_CANONICAL @cindex non canonical input, error message The input text was using one of the many alternative codings for some phenomenon, but not the one Recode would have canonically generated. So, if the reverse recoding is later attempted, it would produce a text having the same @emph{meaning} as the original text, yet not being byte identical. For example, a @code{Base64} block in which end-of-lines appear elsewhere that at every 76 characters is not canonical. An e-circumflex in @TeX{} which is coded as @samp{\^@{e@}} instead of @samp{\^e} is not canonical. @item RECODE_AMBIGUOUS_OUTPUT @vindex RECODE_AMBIGUOUS_OUTPUT @cindex ambiguous output, error message It has been discovered that if the reverse recoding was attempted on the text output by this recoding, we would not obtain the original text, only because an ambiguity was generated by accident in the output text. This ambiguity would then cause the wrong interpretation to be taken. Here are a few examples. If the @code{Latin-1} sequence @samp{e^} is converted to Easy French and back, the result will be interpreted as e-circumflex and so, will not reflect the intent of the original two characters. Recoding an @code{IBM-PC} text to @code{Latin-1} and back, where the input text contained an isolated @kbd{LF}, will have a spurious @kbd{CR} inserted before the @kbd{LF}. Currently, there are many cases in the library where the production of ambiguous output is not properly detected, as it is sometimes a difficult problem to accomplish this detection, or to do it speedily. @item RECODE_UNTRANSLATABLE @vindex RECODE_UNTRANSLATABLE @cindex untranslatable input, error message One or more input character could not be recoded, because there is just no representation for this character in the output charset. Here are a few examples. Non-strict mode often allows Recode to compute on-the-fly mappings for unrepresentable characters, but strict mode prohibits such attribution of reversible translations: so strict mode might often trigger such an error. Most @code{UCS-2} codes used to represent Asian characters cannot be expressed in various Latin charsets. Since iconv does not distinguish untranslatable from invalid input, Recode has to use a workaround to detect when input is untranslatable. Unfortunately, it cannot currently tell how much input is untranslatable, so it cannot reliably skip such input: typically the input is then diagnosed as invalid. Two possible workarounds are to set the @code{abort_level} to @code{RECODE_UNTRANSLATABLE}, or not to use iconv. @item RECODE_INVALID_INPUT @vindex RECODE_INVALID_INPUT @cindex invalid input, error message The input text does not comply with the coding it is declared to hold. So, there is no way by which a reverse recoding would reproduce this text, because Recode should never produce invalid output. Here are a few examples. In strict mode, @code{ASCII} text is not allowed to contain characters with the eight bit set. @code{UTF-8} encodings ought to be minimal@footnote{The minimality of an @code{UTF-8} encoding is guaranteed on output, but currently, it is not checked on input.}. @item RECODE_SYSTEM_ERROR @vindex RECODE_SYSTEM_ERROR @cindex system detected problem, error message The underlying system reported an error while the recoding was going on, likely an input/output error. (This error symbol is currently unused in the library.) @item RECODE_USER_ERROR @vindex RECODE_USER_ERROR @cindex misuse of recoding library, error message The programmer or user requested something the recoding library is unable to provide, or used the API wrongly. (This error symbol is currently unused in the library.) @item RECODE_INTERNAL_ERROR @vindex RECODE_INTERNAL_ERROR @cindex internal recoding bug, error message Something really wrong, which should normally never happen, was detected within the recoding library. This might be due to genuine bugs in the library, or maybe due to un-initialised or overwritten arguments to the API. (This error symbol is currently unused in the library.) @item RECODE_MAXIMUM_ERROR @vindex RECODE_MAXIMUM_ERROR This error code should never be returned, it is only internally used as a sentinel for the list of all possible error codes. @end table @cindex error level threshold @cindex threshold for error reporting One should be able to set the error level threshold for returning failure at end of recoding, and also the threshold for immediate interruption. If many errors occur while the recoding proceed, which are not severe enough to interrupt the recoding, then the most severe error is retained, while others are forgotten@footnote{Another approach would have been to define the level symbols as masks instead, and to give masks to threshold setting routines, and to retain all errors---yet I never met myself such a need in practice, and so I fear it would be overkill. On the other hand, it might be interesting to maintain counters about how many times each kind of error occurred.}. So, in case of an error, the possible actions currently are: @itemize @bullet @item do nothing and let go, returning success at end of recoding, @item just let go for now, but return failure at end of recoding, @item interrupt recoding right away and return failure now. @end itemize @noindent @xref{Task level}, and particularly the description of the fields @code{fail_level}, @code{abort_level} and @code{error_so_far}, for more information about how errors are handled. @ignore @c FIXME: Take a look at these matters, indeed. A last topic around errors is where the error related fields are kept. To work nicely with threads, my feeling is that the main API levels (based on either of @code{struct recode_outer}, @code{struct recode_request} or @code{struct recode_task}) should each have their error thresholds, values, and last explicit message strings. Thresholds would be inherited by requests from outers, and by tasks from requests. Error values and strings would be automatically propagated out from tasks to requests, for these request level routines which internally set up and use recoding tasks. One simple way to avoid locking while sparing the initialisation of many identical requests, a programmer could prepare the common request before splitting threads, and merely @emph{copy} the @code{struct recode_request} so each thread has its own copy---either using a mere assignment or @code{memcpy}. The same could be said for @code{struct recode_outer} or @code{struct recode_task} blocks, yet it makes less sense to me to do so in practice. @end ignore @node Universal, iconv, Library, Top @chapter The universal charset @cindex ISO 10646 Standard @w{ISO 10646} defines a universal character set, intended to encompass in the long run all languages written on this planet. It is based on wide characters, and offer possibilities for two billion characters (@math{2^31}). @tindex UCS This charset was to become available in Recode under the name @code{UCS}, with many external surfaces for it. But in the current version, only surfaces of @code{UCS} are offered, each presented as a genuine charset rather than a surface. Such surfaces are only meaningful for the @code{UCS} charset, so it is not that useful to draw a line between the surfaces and the only charset to which they may apply. @tindex UTF-1 @code{UCS} stands for Universal Character Set. @code{UCS-2} and @code{UCS-4} are fixed length encodings, using two or four bytes per character respectively. @code{UTF} stands for @code{UCS} Transformation Format, and are variable length encodings dedicated to @code{UCS}. @code{UTF-1} was based on @w{ISO 2022}, it did not succeed@footnote{It is not probable that Recode will ever support @code{UTF-1}.}. @code{UTF-2} replaced it, it has been called @code{UTF-FSS} (File System Safe) in Unicode or Plan9 context, but is better known today as @code{UTF-8}. To complete the picture, there is @code{UTF-16} based on 16 bits bytes, and @code{UTF-7} which is meant for transmissions limited to 7-bit bytes. Most often, one might see @code{UTF-8} used for external storage, and @code{UCS-2} used for internal storage. @c FIXME: the manual never explains what the U+NNNN notation means! When Recode is producing any representation of @code{UCS}, it uses the replacement character @code{U+FFFD} for any @emph{valid} character which is not representable in the goal charset@footnote{This is when the goal charset allows for 16-bits. For shorter charsets, the @samp{--strict} (@samp{-s}) option decides what happens: either the character is dropped, or a reversible mapping is produced on the fly.}. This happens, for example, when @code{UCS-2} is not capable to echo a wide @code{UCS-4} character, or for a similar reason, an @code{UTF-8} sequence using more than three bytes. The replacement character is meant to represent an existing character. So, it is never produced to represent an invalid sequence or ill-formed character in the input text. In such cases, Recode just gets rid of the noise, while taking note of the error in its usual ways. Even if @code{UTF-8} is an encoding, really, it is the encoding of a single character set, and nothing else. It is useful to distinguish between an encoding (a @emph{surface} within Recode) and a charset, but only when the surface may be applied to several charsets. Specifying a charset is a bit simpler than specifying a surface in a Recode request. There would not be a practical advantage at imposing a more complex syntax to Recode users, when it is simple to assimilate @code{UTF-8} to a charset. Similar considerations apply for @code{UCS-2}, @code{UCS-4}, @code{UTF-16} and @code{UTF-7}. These are all considered to be charsets. @menu * UCS-2:: Universal Character Set, 2 bytes * UCS-4:: Universal Character Set, 4 bytes * UTF-7:: Universal Transformation Format, 7 bits * UTF-8:: Universal Transformation Format, 8 bits * UTF-16:: Universal Transformation Format, 16 bits * count-characters:: Frequency count of characters * dump-with-names:: Fully interpreted UCS dump @end menu @node UCS-2, UCS-4, Universal, Universal @section Universal Character Set, 2 bytes @tindex UCS-2 @cindex Unicode One surface of @code{UCS} is usable for the subset defined by its first sixty thousand characters (in fact, @math{31 * 2^11} codes), and uses exactly two bytes per character. It is a mere dump of the internal memory representation which is @emph{natural} for this subset and as such, conveys with it endianness problems. @cindex byte order mark A non-empty @code{UCS-2} file normally begins with a so called @dfn{byte order mark}, having value @code{0xFEFF}. The value @code{0xFFFE} is not an @code{UCS} character, so if this value is seen at the beginning of a file, Recode reacts by swapping all pairs of bytes. The library also properly reacts to other occurrences of @code{0xFEFF} or @code{0xFFFE} elsewhere than at the beginning, because concatenation of @code{UCS-2} files should stay a simple matter, but it might trigger a diagnostic about non canonical input. By default, when producing an @code{UCS-2} file, Recode always outputs the high order byte before the low order byte. Note that this may not be the case if @code{iconv} is used; in that case, you may be able to use the charset @code{UCS-2BE} to specify big-endian UCS-2. The order can also be easily overridden through the @code{21-Permutation} surface (@pxref{Permutations}). For example, the command: @example recode u8..u2/21 < @var{input} > @var{output} @end example @noindent asks for an @code{UTF-8} to @code{UCS-2} conversion, with swapped byte output. @tindex ISO-10646-UCS-2, and aliases @tindex BMP @tindex rune @tindex u2 Use @code{UCS-2} as a genuine charset. This charset is available in Recode under the name @code{ISO-10646-UCS-2}. Accepted aliases are @code{UCS-2}, @code{BMP}, @code{rune} and @code{u2}. @tindex combined-UCS-2 @cindex combining characters The Recode library is able to combine @code{UCS-2} some sequences of codes into single code characters, to represent a few diacriticized characters, ligatures or diphtongs which have been included to ease mapping with other existing charsets. It is also able to explode such single code characters into the corresponding sequence of codes. The request syntax for triggering such operations is rudimentary and temporary. The @code{combined-UCS-2} pseudo character set is a special form of @code{UCS-2} in which known combinings have been replaced by the simpler code. Using @code{combined-UCS-2} instead of @code{UCS-2} in an @emph{after} position of a request forces a combining step, while using @code{combined-UCS-2} instead of @code{UCS-2} in a @emph{before} position of a request forces an exploding step. For the time being, one has to resort to advanced request syntax to achieve other effects. For example: @example recode u8..co,u2..u8 < @var{input} > @var{output} @end example @noindent copies an @code{UTF-8} @var{input} over @var{output}, still to be in @code{UTF-8}, yet merging combining characters into single codes whenever possible. @node UCS-4, UTF-7, UCS-2, Universal @section Universal Character Set, 4 bytes @tindex UCS-4 Another surface of @code{UCS} uses exactly four bytes per character, and is a mere dump of the internal memory representation which is @emph{natural} for the whole charset and as such, conveys with it endianness problems. @tindex ISO-10646-UCS-4, and aliases @tindex ISO_10646 @tindex 10646 @tindex u4 Use it as a genuine charset. This charset is available in Recode under the name @code{ISO-10646-UCS-4}. Accepted aliases are @code{UCS}, @code{UCS-4}, @code{ISO_10646}, @code{10646} and @code{u4}. @node UTF-7, UTF-8, UCS-4, Universal @section Universal Transformation Format, 7 bits @tindex UTF-7 @code{UTF-7} comes from IETF rather than ISO, and is described by @w{RFC 2152}, in the MIME series. The @code{UTF-7} encoding is meant to fit @code{UCS-2} over channels limited to seven bits per byte. It proceeds from a mix between the spirit of @code{Quoted-Printable} and methods of @code{Base64}, adapted to Unicode contexts. @tindex UNICODE-1-1-UTF-7, and aliases @tindex TF-7 @tindex u7 This charset is available in Recode under the name @code{UNICODE-1-1-UTF-7}. Accepted aliases are @code{UTF-7}, @code{TF-7} and @code{u7}. @node UTF-8, UTF-16, UTF-7, Universal @section Universal Transformation Format, 8 bits @tindex UTF-8 Even if @code{UTF-8} does not originally come from IETF, there is now @w{RFC 2279} to describe it. In letters sent on 1995-01-21 and 1995-04-20, Markus Kuhn writes: @quotation @code{UTF-8} is an @code{ASCII} compatible multi-byte encoding of the @w{ISO 10646} universal character set (@code{UCS}). @code{UCS} is a 31-bit superset of all other character set standards. The first 256 characters of @code{UCS} are identical to those of @w{ISO 8859-1} (@w{Latin-1}). The @code{UCS-2} encoding of UCS is a sequence of bigendian 16-bit words, the @code{UCS-4} encoding is a sequence of bigendian 32-bit words. The @code{UCS-2} subset of @w{ISO 10646} is also known as ``Unicode''. As both @code{UCS-2} and @code{UCS-4} require heavy modifications to traditional @code{ASCII} oriented system designs (e.g. Unix), the @code{UTF-8} encoding has been designed for these applications. In @code{UTF-8}, only @code{ASCII} characters are encoded using bytes below 128. All other non-ASCII characters are encoded as multi-byte sequences consisting only of bytes in the range 128-253. This avoids critical bytes like @kbd{NUL} and @kbd{/} in @code{UTF-8} strings, which makes the @code{UTF-8} encoding suitable for being handled by the standard C string library and being used in Unix file names. Other properties include the preserved lexical sorting order and that @code{UTF-8} allows easy self-synchronisation of software receiving @code{UTF-8} strings. @end quotation @code{UTF-8} is the most common external surface of @code{UCS}, each character uses from one to six bytes, and is able to encode all @math{2^31} characters of the @code{UCS}. It is implemented as a charset, with the following properties: @itemize @bullet @item Strict 7-bit @code{ASCII} is completely invariant under @code{UTF-8}, and those are the only one-byte characters. @code{UCS} values and @code{ASCII} values coincide. No multi-byte characters ever contain bytes less than 128. @code{NUL} @emph{is} @code{NUL}. A multi-byte character always starts with a byte of 192 or more, and is always followed by a number of bytes between 128 to 191. That means that you may read at random on disk or memory, and easily discover the start of the current, next or previous character. You can count, skip or extract characters with this only knowledge. @item If you read the first byte of a multi-byte character in binary, it contains many @samp{1} bits in successions starting with the most significant one (from the left), at least two. The length of this @samp{1} sequence equals the byte size of the character. All succeeding bytes start by @samp{10}. This is a lot of redundancy, making it fairly easy to guess that a file is valid @code{UTF-8}, or to safely state that it is not. @item In a multi-byte character, if you remove all leading @samp{1} bits of the first byte of a multi-byte character, and the initial @samp{10} bits of all remaining bytes (so keeping 6 bits per byte for those), the remaining bits concatenated are the UCS value. @end itemize @noindent These properties also have a few nice consequences: @itemize @bullet @item Conversion to/from values is algorithmically simple, and reasonably speedy. @item A sequence of @var{N} bytes can hold characters needing up to 2 + 5@var{N} bits in their @code{UCS} representation. Here, @var{N} is a number between 1 and 6. So, @code{UTF-8} is most economical when mapping ASCII (1 byte), followed by @code{UCS-2} (1 to 3 bytes) and @code{UCS-4} (1 to 6 bytes). @item The lexicographic sorting order of @code{UCS} strings is preserved. @item Bytes with value 254 or 255 never appear, and because of that, these are sometimes used when escape mechanisms are needed. @end itemize In some case, when little processing is done on a lot of strings, one may choose for efficiency reasons to handle @code{UTF-8} strings directly even if variable length, as it is easy to get start of characters. Character insertion or replacement might require moving the remainder of the string in either direction. In most cases, it is faster and easier to convert from @code{UTF-8} to @code{UCS-2} or @code{UCS-4} prior to processing. @tindex UTF-8, aliases @tindex UTF-FSS @tindex FSS_UTF @tindex TF-8 @tindex u8 This charset is available in Recode under the name @code{UTF-8}. Accepted aliases are @code{UTF-2}, @code{UTF-FSS}, @code{FSS_UTF}, @code{TF-8} and @code{u8}. @node UTF-16, count-characters, UTF-8, Universal @section Universal Transformation Format, 16 bits @tindex UTF-16, and aliases Another external surface of @code{UCS} is also variable length, each character using either two or four bytes. It is usable for the subset defined by the first million characters (@math{17 * 2^16}) of @code{UCS}. Martin J. D@"urst writes (to @uref{comp.std.internat}, on 1995-03-28): @quotation @code{UTF-16} is another method that reserves two times 1024 codepoints in Unicode and uses them to index around one million additional characters. @code{UTF-16} is a little bit like former multibyte codes, but quite not so, as both the first and the second 16-bit code clearly show what they are. The idea is that one million codepoints should be enough for all the rare Chinese ideograms and historical scripts that do not fit into the Base Multilingual Plane of @w{ISO 10646} (with just about 63,000 positions available, now that 2,000 are gone). @end quotation @tindex Unicode, an alias for UTF-16 @tindex TF-16 @tindex u6 This charset is available in Recode under the name @code{UTF-16}. Accepted aliases are @code{Unicode}, @code{TF-16} and @code{u6}. @node count-characters, dump-with-names, UTF-16, Universal @section Frequency count of characters @tindex count-characters @cindex counting characters A device may be used to obtain a list of characters in a file, and how many times each character appears. Each count is followed by the @code{UCS-2} value of the character and, when known, the @w{RFC 1345} mnemonic for that character. This charset is available in Recode under the name @code{count-characters}. This @code{count} feature has been implemented as a charset. This may change in some later version, as it would sometimes be convenient to count original bytes, instead of their @code{UCS-2} equivalent. @node dump-with-names, , count-characters, Universal @section Fully interpreted UCS dump @tindex dump-with-names @cindex dumping characters, with description @cindex character streams, description @cindex description of individual characters Another device may be used to get fully interpreted dumps of an @code{UCS-2} stream of characters, with one @code{UCS-2} character displayed on a full output line. Each line receives the @w{RFC 1345} mnemonic for the character if it exists, the @code{UCS-2} value of the character, and a descriptive comment for that character. As each input character produces its own output line, beware that the output file from this conversion may be much, much bigger than the input file. This charset is available in Recode under the name @code{dump-with-names}. This @code{dump-with-names} feature has been implemented as a charset rather than a surface. This is surely debatable. The current implementation allows for dumping charsets other than @code{UCS-2}. For example, the command @w{@samp{recode l2..full < @var{input}}} implies a necessary conversion from @code{Latin-2} to @code{UCS-2}, as @code{dump-with-names} is only connected out from @code{UCS-2}. In such cases, Recode does not display the original @code{Latin-2} codes in the dump, only the corresponding @code{UCS-2} values. To give a simpler example, the command @example echo 'Hello, world!' | recode us..dump @end example @noindent produces the following output: @example UCS2 Mne Description 0048 H latin capital letter h 0065 e latin small letter e 006C l latin small letter l 006C l latin small letter l 006F o latin small letter o 002C , comma 0020 SP space 0077 w latin small letter w 006F o latin small letter o 0072 r latin small letter r 006C l latin small letter l 0064 d latin small letter d 0021 ! exclamation mark 000A LF line feed (lf) @end example The descriptive comment is given in English and @code{ASCII}, yet if the English description is not available but a French one is, then the French description is given instead, using @code{Latin-1}. However, if the @code{LC_MESSAGES} environment variable begins with the letters @samp{fr}, then listing preference goes to French when both descriptions are available. Here is another example. To get the long description of the code 237 in @w{Latin-5} table, one may use the following command. @example echo -n 237 | recode l5/d..dump @end example @noindent If your @code{echo} does not grok @samp{-n}, use @samp{echo 237\c} instead. Here is how to see what Unicode @code{U+03C6} means, while getting rid of the title lines. @example echo -n 0x03C6 | recode u2/x2..dump | tail +3 @end example @node iconv, Tabular, Universal, Top @chapter The @code{iconv} library @cindex @code{iconv} library @cindex library, @code{iconv} @cindex @code{libiconv} @cindex interface, with @code{iconv} library @cindex Haible, Bruno The Recode library is able to use the capabilities of an external, pre-installed @code{iconv} library, usually as provided by GNU @code{libc} or the portable @code{libiconv} written by Bruno Haible. In fact, many capabilities of the Recode library are duplicated in an external @code{iconv} library, as they likely share many charsets. We discuss, here, the issues related to this duplication, and other peculiarities specific to the @code{iconv} library. The @code{RECODE_STRICT_MAPPING_FLAG} option, corresponding to the @samp{--strict} flag, is implemented by adding @code{iconv} option @code{//IGNORE} to the @samp{after} encoding. This has the side effect that untranslatable input is only signalled at the end of the conversion, whereas with Recode's built-in conversion routines the error will be signalled immediately. If the string @code{-translit} is appended to the @var{after} encoding, characters being converted are transliterated when needed and possible. This means that when a character cannot be represented in the target character set, it can be approximated through one or several similar looking characters. Characters that are outside of the target character set and cannot be transliterated are replaced with a question mark (?) in the output. This corresponds to the @code{iconv} option @code{//TRANSLIT}. To check whether @code{iconv} is used for a particular conversion, just use the @samp{-v} or @samp{--verbose} option, @pxref{Recoding}, and check whether @samp{:iconv:} appears as an intermediate charset. @tindex iconv @anchor{prefer-iconv} The @code{:iconv:} charset represents a conceptual pivot charset within the external @code{iconv} library (in fact, this pivot exists, but is not directly reachable). This charset has a @code{:} (a mere colon) and @code{:libiconv:} for aliases. It is not allowed to recode from or to this charset directly. But when this charset is selected as an intermediate, usually by automatic means, then the external @code{iconv} Recode library is called to handle the transformations. By using an @samp{--ignore=:iconv:} option on the @code{recode} call or equivalently, but more simply, @samp{-x:}, Recode is instructed to avoid this charset as an intermediate, with the consequence that the external @code{iconv} library is not used. You can also use @code{--prefer-iconv} to use @code{iconv} if possible. Consider these calls: @example recode l1..1250 < @var{input} > @var{output} recode -x: l1..1250 < @var{input} > @var{output} recode --prefer-iconv l1..1250 < @var{input} > @var{output} @end example @noindent All should transform @var{input} from @code{ISO-8859-1} to @code{CP1250} on @var{output}. The first call might use the external @code{iconv} library, while the second call definitely avoids it. The third call will use the external @code{iconv} library if it supports the required conversion. Whatever the path used, the results should normally be identical. However, there might be observable differences. Most of them might result from reversibility issues, as the external @code{iconv} engine does not likely address reversibility in the same way. Even if much less likely, some differences might result from slight errors in the tables used, such differences should then be reported as bugs. Discrepancies might be seen in the area of error detection and recovery. The Recode library usually tries to detect canonicity errors in input, and production of ambiguous output, but the external @code{iconv} library does not necessarily do it the same way. Moreover, the Recode library may not always recover as nicely as possible when the external @code{iconv} has no translation for a given character. The external @code{iconv} libraries may offer different sets of charsets and aliases from one library to another, and also between successive versions of a single library. Best is to check the documentation of the external @code{iconv} library, as of the time Recode was installed, to know which charsets and aliases are being provided. The @samp{--ignore=:iconv:} or @samp{-x:} options might be useful when there is a need to make a recoding more exactly repeatable between machines or installations, the idea being here to remove the variance possibly introduced by the various implementations of an external @code{iconv} library. These options might also help deciding whether if some recoding problem is genuine to Recode, or is induced by the external @code{iconv} library. @node Tabular, ASCII misc, iconv, Top @chapter Tabular sources (@w{RFC 1345}) @cindex RFC 1345 @cindex character mnemonics, documentation @cindex @code{chset} tools An important part of the tabular charset knowledge in Recode comes from @w{RFC 1345} or, alternatively, from the @code{chset} tools, both maintained by Keld Simonsen. The @w{RFC 1345} document: @quotation ``Character Mnemonics & Character Sets'', K. Simonsen, Request for Comments no. 1345, Network Working Group, June 1992. @end quotation @noindent @cindex deviations from RFC 1345 defines many character mnemonics and character sets. The Recode library implements most of @w{RFC 1345}, however: @itemize @bullet @item @tindex dk-us@r{, not recognised by }recode @tindex us-dk@r{, not recognised by }recode It does not recognise those charsets which overload character positions: @code{dk-us} and @code{us-dk}. However, @xref{Mixed}. @item @tindex ANSI_X3.110-1983@r{, not recognised by }recode @tindex ISO_6937-2-add@r{, not recognised by }recode @tindex T.101-G2@r{, not recognised by }recode @tindex T.61-8bit@r{, not recognised by }recode @tindex iso-ir-90@r{, not recognised by }recode It does not recognise those charsets which combine two characters for representing a third: @code{ANSI_X3.110-1983}, @code{ISO_6937-2-add}, @code{T.101-G2}, @code{T.61-8bit}, @code{iso-ir-90} and @code{videotex-suppl}. @item @tindex GB_2312-80@r{, not recognised by }recode @tindex JIS_C6226-1978@r{, not recognised by }recode @tindex JIS_X0212-1990@r{, not recognised by }recode @tindex KS_C_5601-1987@r{, not recognised by }recode It does not recognise 16-bits charsets: @code{GB_2312-80}, @code{JIS_C6226-1978}, @code{JIS_C6226-1983}, @code{JIS_X0212-1990} and @code{KS_C_5601-1987}. @item @tindex isoir91 @tindex isoir92 It interprets the charset @code{isoir91} as @code{NATS-DANO} (alias @code{iso-ir-9-1}), @emph{not} as @code{JIS_C6229-1984-a} (alias @code{iso-ir-91}). It also interprets the charset @code{isoir92} as @code{NATS-DANO-ADD} (alias @code{iso-ir-9-2}), @emph{not} as @code{JIS_C6229-1984-b} (alias @code{iso-ir-92}). It might be better just avoiding these two alias names. @end itemize Keld Simonsen @email{keld@@dkuug.dk} did most of @w{RFC 1345} himself, with some funding from Danish Standards and Nordic standards (INSTA) project. He also did the character set design work, with substantial input from Olle Jaernefors. Keld typed in almost all of the tables, some have been contributed. A number of people have checked the tables in various ways. The RFC lists a number of people who helped. @cindex Recode, and RFC 1345 Keld and the Recode maintainer have an arrangement by which any new discovered information submitted by Recode users, about tabular charsets, is forwarded to Keld, eventually merged into Keld's work, and only then, reimported into Recode. Recode does not try to compete, nor even establish itself as an alternate or diverging reference: @w{RFC 1345} and its new drafts stay the genuine source for most tabular information conveyed by Recode. Keld has been more than collaborative so far, so there is no reason that we act otherwise. In a word, Recode should be perceived as the application of external references, but not as a reference in itself. @tindex RFC1345@r{, a charset, and its aliases} @tindex 1345 @tindex mnemonic@r{, an alias for RFC1345 charset} Internally, @w{RFC 1345} associates which each character an unambiguous mnemonic of a few characters, taken from @w{ISO 646}, which is a minimal ASCII subset of 83 characters. The charset made up by these mnemonics is available in Recode under the name @code{RFC1345}. It has @code{mnemonic} and @code{1345} for aliases. As implemened, this charset exactly corresponds to @code{mnemonic+ascii+38}, using @w{RFC 1345} nomenclature. Roughly said, @w{ISO 646} characters represent themselves, except for the ampersand (@kbd{&}) which appears doubled. A prefix of a single ampersand introduces a mnemonic. For mnemonics using two characters, the prefix is immediately by the mnemonic. For longer mnemonics, the prefix is followed by an underline (@kbd{_}), the mmemonic, and another underline. Conversions to this charset are usually reversible. Currently, Recode does not offer any of the many other possible variations of this family of representations. @table @code @include rfc1345.texi @end table @node ASCII misc, IBM and MS, Tabular, Top @chapter ASCII and some derivatives @menu * ASCII:: Usual ASCII * ISO 8859:: ASCII extended by Latin Alphabets * ASCII-BS:: ASCII 7-bits, @kbd{BS} to overstrike * flat:: ASCII without diacritics nor underline @end menu @node ASCII, ISO 8859, ASCII misc, ASCII misc @section Usual ASCII @tindex ASCII@r{, an alias for the }ANSI_X3.4-1968@r{ charset} @tindex ANSI_X3.4-1968@r{, and its aliases} @tindex IBM367 @tindex US-ASCII @tindex cp367 @tindex iso-ir-6 @tindex us This charset is available in Recode under the name @code{ASCII}. In fact, its true name is @code{ANSI_X3.4-1968} as per @w{RFC 1345}, accepted aliases being @code{ANSI_X3.4-1986}, @code{ASCII}, @code{IBM367}, @code{ISO646-US}, @code{ISO_646.irv:1991}, @code{US-ASCII}, @code{cp367}, @code{iso-ir-6} and @code{us}. The shortest way of specifying it in Recode is @code{us}. @cindex ASCII table, recreating with Recode This documentation used to include ASCII tables. They have been removed since the @code{recode} program can now recreate these easily: @example recode -lf us for commented ASCII recode -ld us for concise decimal table recode -lo us for concise octal table recode -lh us for concise hexadecimal table @end example @node ISO 8859, ASCII-BS, ASCII, ASCII misc @section ASCII extended by Latin Alphabets @cindex Latin charsets There are many Latin charsets. The following has been written by Tim Lasko @email{lasko@@video.dec.com}, a long while ago: @quotation ISO @w{Latin-1}, or more completely ISO Latin Alphabet No 1, is now an international standard as of February 1987 (IS 8859, Part 1). For those American USEnet'rs that care, the 8-bit ASCII standard, which is essentially the same code, is going through the final administrative processes prior to publication. ISO @w{Latin-1} (IS 8859/1) is actually one of an entire family of eight-bit one-byte character sets, all having ASCII on the left hand side, and with varying repertoires on the right hand side: @itemize @bullet @item Latin Alphabet No 1 (caters to Western Europe - now approved). @item Latin Alphabet No 2 (caters to Eastern Europe - now approved). @item Latin Alphabet No 3 (caters to SE Europe + others - in draft ballot). @item Latin Alphabet No 4 (caters to Northern Europe - in draft ballot). @item Latin-Cyrillic alphabet (right half all Cyrillic - processing currently suspended pending USSR input). @item Latin-Arabic alphabet (right half all Arabic - now approved). @item Latin-Greek alphabet (right half Greek + symbols - in draft ballot). @item Latin-Hebrew alphabet (right half Hebrew + symbols - proposed). @end itemize @end quotation @tindex Latin-1 The ISO Latin Alphabet 1 is available as a charset in Recode under the name @code{Latin-1}. In fact, its true name is @code{ISO_8859-1:1987} as per @w{RFC 1345}, accepted aliases being @code{CP819}, @code{IBM819}, @code{ISO-8859-1}, @code{ISO_8859-1}, @code{iso-ir-100}, @code{l1} and @code{Latin-1}. The shortest way of specifying it in Recode is @code{l1}. @cindex Latin-1 table, recreating with Recode It is an eight-bit code which coincides with ASCII for the lower half. This documentation used to include @w{Latin-1} tables. They have been removed since the @code{recode} program can now recreate these easily: @example recode -lf l1 for commented ISO Latin-1 recode -ld l1 for concise decimal table recode -lo l1 for concise octal table recode -lh l1 for concise hexadecimal table @end example @node ASCII-BS, flat, ISO 8859, ASCII misc @section ASCII 7-bits, @kbd{BS} to overstrike @tindex ASCII-BS@r{, and its aliases} @tindex BS@r{, an alias for }ASCII-BS@r{ charset} This charset is available in Recode under the name @code{ASCII-BS}, with @code{BS} as an acceptable alias. @cindex diacritics, with @code{ASCII-BS} charset The file is straight ASCII, seven bits only. According to the definition of ASCII, diacritics are applied by a sequence of three characters: the letter, one @kbd{BS}, the diacritic mark. We deviate slightly from this by exchanging the diacritic mark and the letter so, on a screen device, the diacritic will disappear and let the letter alone. At recognition time, both methods are acceptable. The French quotes are coded by the sequences: @w{@kbd{< BS "}} or @w{@kbd{" BS <}} for the opening quote and @w{@kbd{> BS "}} or @w{@kbd{" BS >}} for the closing quote. This artificial convention was inherited in straight @code{ASCII-BS} from habits around @code{Bang-Bang} entry, and is not well known. But we decided to stick to it so that @code{ASCII-BS} charset will not lose French quotes. The @code{ASCII-BS} charset is independent of @code{ASCII}, and different. The following examples demonstrate this, knowing at advance that @samp{!2} is the @code{Bang-Bang} way of representing an @kbd{e} with an acute accent. Compare: @example % echo \!2 | recode -v bang..l1/d Request: Bang-Bang..ISO-8859-1/Decimal-1 233, 10 @end example @noindent with: @example % echo \!2 | recode -v bang..bs/d Request: Bang-Bang..ISO-8859-1..ASCII-BS/Decimal-1 39, 8, 101, 10 @end example In the first case, the @kbd{e} with an acute accent is merely transmitted by the @code{Latin-1..ASCII} mapping, not having a special recoding rule for it. In the @code{Latin-1..ASCII-BS} case, the acute accent is applied over the @kbd{e} with a backspace: diacriticised characters have special rules. For the @code{ASCII-BS} charset, reversibility is still possible, but there might be difficult cases. @node flat, , ASCII-BS, ASCII misc @section ASCII without diacritics nor underline @tindex flat@r{, a charset} This charset is available in Recode under the name @code{flat}. @cindex diacritics and underlines, removing @cindex removing diacritics and underlines This code is ASCII expunged of all diacritics and underlines, as long as they are applied using three character sequences, with @kbd{BS} in the middle. Also, despite slightly unrelated, each control character is represented by a sequence of two or three graphic characters. The newline character, however, keeps its functionality and is not represented. Note that charset @code{flat} is a terminal charset. We can convert @emph{to} @code{flat}, but not @emph{from} it. @node IBM and MS, CDC, ASCII misc, Top @chapter Some IBM or Microsoft charsets @cindex IBM codepages @cindex codepages Recode provides various IBM or Microsoft code pages (@pxref{Tabular}). An easy way to find them all at once out of Recode itself is through the command: @example recode -l | egrep -i '(CP|IBM)[0-9]' @end example @noindent But also, see few special charsets presented in the incoming sections. @menu * EBCDIC:: EBCDIC codes * IBM-PC:: IBM's PC code * Icon-QNX:: Unisys' Icon code @end menu @node EBCDIC, IBM-PC, IBM and MS, IBM and MS @section EBCDIC code @cindex EBCDIC charsets This charset is the IBM's External Binary Coded Decimal for Interchange Coding. This is an eight bits code. The following three variants were implemented in Recode independently of @w{RFC 1345}: @table @code @item EBCDIC @tindex EBCDIC@r{, a charset} In Recode, the @code{us..ebcdic} conversion is identical to @samp{dd conv=ebcdic} conversion, and Recode @code{ebcdic..us} conversion is identical to @samp{dd conv=ascii} conversion. This charset also represents the way Control Data Corporation relates EBCDIC to 8-bits ASCII. @item EBCDIC-CCC @tindex EBCDIC-CCC In Recode, the @code{us..ebcdic-ccc} or @code{ebcdic-ccc..us} conversions represent the way Concurrent Computer Corporation (formerly Perkin Elmer) relates EBCDIC to 8-bits ASCII. @item EBCDIC-IBM @tindex EBCDIC-IBM In Recode, the @code{us..ebcdic-ibm} conversion is @emph{almost} identical to the GNU @samp{dd conv=ibm} conversion. Given the exact @samp{dd conv=ibm} conversion table, Recode once said: @example Codes 91 and 213 both recode to 173 Codes 93 and 229 both recode to 189 No character recodes to 74 No character recodes to 106 @end example So I arbitrarily chose to recode 213 by 74 and 229 by 106. This makes the @code{EBCDIC-IBM} recoding reversible, but this is not necessarily the best correction. In any case, I think that GNU @code{dd} should be amended. @code{dd} and Recode should ideally agree on the same correction. So, this table might change once again. @end table @w{RFC 1345} brings into Recode 15 other EBCDIC charsets, and 21 other charsets having EBCDIC in at least one of their alias names. You can get a list of all these by executing: @example recode -l | grep -i ebcdic @end example Note that Recode may convert a pure stream of EBCDIC characters, but it does not know how to handle binary data between records which is sometimes used to delimit them and build physical blocks. If end of lines are not marked, fixed record size may produce something readable, but @code{VB} or @code{VBS} blocking is likely to yield some garbage in the converted results. @node IBM-PC, Icon-QNX, EBCDIC, IBM and MS @section IBM's PC code @tindex IBM-PC @cindex MS-DOS charsets @tindex MSDOS @tindex dos @tindex pc This charset is available in Recode under the name @code{IBM-PC}, with @code{dos}, @code{MSDOS} and @code{pc} as acceptable aliases. The shortest way of specifying it in Recode is @code{pc}. The charset is aimed towards a PC microcomputer from IBM or any compatible. This is an eight-bit code. This charset is fairly old in Recode, its tables were produced a long while ago by mere inspection of a printed chart of the IBM-PC codes and glyph. It has @code{CR-LF} as its implied surface. This means that, if the original end of lines have to be preserved while going out of @code{IBM-PC}, they should currently be added back through the usage of a surface on the other charset, or better, just never removed. Here are examples for both cases: @example recode pc..l2/cl < @var{input} > @var{output} recode pc/..l2 < @var{input} > @var{output} @end example @w{RFC 1345} brings into Recode 44 @samp{IBM} charsets or code pages, and also 8 other code pages. You can get a list of these all these by executing:@footnote{On DOS/Windows, stock shells do not know that apostrophes quote special characters like @kbd{|}, so one needs to use double quotes instead of apostrophes.} @example recode -l | egrep -i '(CP|IBM)[0-9]' @end example @noindent @cindex CR-LF surface, in IBM-PC charsets @tindex IBM819@r{, and CR-LF surface} All charset or aliases beginning with letters @samp{CP} or @samp{IBM} also have @code{CR-LF} as their implied surface. The same is true for a purely numeric alias in the same family. For example, all of @code{819}, @code{CP819} and @code{IBM819} imply @code{CR-LF} as a surface. Note that @code{ISO-8859-1} does @emph{not} imply a surface, despite it shares the same tabular data as @code{819}. @tindex ibm437 There are a few discrepancies between this @code{IBM-PC} charset and the very similar @w{RFC 1345} charset @code{ibm437}. The @code{IBM-PC} charset has two extra characters at positions 20 (Latin-1 @code{0xB6}, Pilcrow) and 21 (Latin-1 @code{0xA7}, Section sign); further, it has position 250 as @code{0xB7}, middle dot, while @code{ibm437} has middle dot at position 249. According to this comparison of code tables: @uref{https://www.haible.de/bruno/charsets/conversion-tables/CP437.html} the source for @w{RFC 1345}, @file{dkuug.dk/IBM437.TXT} is the only source that thus defines this mapping. @node Icon-QNX, , IBM-PC, IBM and MS @section Unisys' Icon code @tindex Icon-QNX@r{, and aliases} @tindex QNX@r{, an alias for a charset} This charset is available in Recode under the name @code{Icon-QNX}, with @code{QNX} as an acceptable alias. The file is using Unisys' Icon way to represent diacritics with code 25 escape sequences, under the system QNX. This is a seven-bit code, even if eight-bit codes can flow through as part of IBM-PC charset. @node CDC, Micros, IBM and MS, Top @chapter Charsets for CDC machines @cindex CDC charsets @cindex charsets for CDC machines What is now Recode evolved out, through many transformations really, from a set of programs which were originally written in @dfn{COMPASS}, Control Data Corporation's assembler, with bits in FORTRAN, and later rewritten in CDC 6000 Pascal. The CDC heritage shows by the fact some old CDC charsets are still supported. The Recode author used to be familiar with CDC Scope-NOS/BE and Kronos-NOS, and many CDC formats. Reading CDC tapes directly on other machines is often a challenge, and Recode does not always solve it. It helps having tapes created in coded mode instead of binary mode, and using @code{S} (Stranger) tapes instead of @code{I} (Internal) tapes. ANSI labels and multi-file tapes might be the source of trouble. There are ways to handle a few Cyber Record Manager formats, but some of them might be quite difficult to decode properly after the transfer is done. Recode is usable only for a small subset of NOS text formats, and surely not with binary textual formats, like @code{UPDATE} or @code{MODIFY} sources, for example. Recode is not especially suited for reading 8/12 or 56/60 packing, yet this could easily arranged if there was a demand for it. It does not have the ability to translate Display Code directly, as the ASCII conversion implied by tape drivers or FTP does the initial approximation. Recode can decode 6/12 caret notation over Display Code already mapped to ASCII. @menu * Display Code:: Control Data's Display Code * CDC-NOS:: ASCII 6/12 from NOS * Bang-Bang:: ASCII ``bang bang'' @end menu @node Display Code, CDC-NOS, CDC, CDC @section Control Data's Display Code @cindex CDC Display Code, a table This code is not available in Recode, but repeated here for reference. This is a 6-bit code used on CDC mainframes. @example Octal display code to graphic Octal display code to octal ASCII 00 : 20 P 40 5 60 # 00 072 20 120 40 065 60 043 01 A 21 Q 41 6 61 [ 01 101 21 121 41 066 61 133 02 B 22 R 42 7 62 ] 02 102 22 122 42 067 62 135 03 C 23 S 43 8 63 % 03 103 23 123 43 070 63 045 04 D 24 T 44 9 64 " 04 104 24 124 44 071 64 042 05 E 25 U 45 + 65 _ 05 105 25 125 45 053 65 137 06 F 26 V 46 - 66 ! 06 106 26 126 46 055 66 041 07 G 27 W 47 * 67 & 07 107 27 127 47 052 67 046 10 H 30 X 50 / 70 ' 10 110 30 130 50 057 70 047 11 I 31 Y 51 ( 71 ? 11 111 31 131 51 050 71 077 12 J 32 Z 52 ) 72 < 12 112 32 132 52 051 72 074 13 K 33 0 53 $ 73 > 13 113 33 060 53 044 73 076 14 L 34 1 54 = 74 @@ 14 114 34 061 54 075 74 100 15 M 35 2 55 75 \ 15 115 35 062 55 040 75 134 16 N 36 3 56 , 76 ^ 16 116 36 063 56 054 76 136 17 O 37 4 57 . 77 ; 17 117 37 064 57 056 77 073 @end example In older times, @kbd{:} used octal 63, and octal 0 was not a character. The table above shows the ASCII glyph interpretation of codes 60 to 77, yet these 16 codes were once defined differently. There is no explicit end of line in Display Code, and the Cyber Record Manager introduced many new ways to represent them, the traditional end of lines being reachable by setting @code{RT} to @samp{Z}. If 6-bit bytes in a file are sequentially counted from 1, a traditional end of line does exist if bytes 10*@var{n}+9 and 10@var{n}+10 are both zero for a given @var{n}, in which case these two bytes are not to be interpreted as @kbd{::}. Also, up to 9 immediately preceeding zero bytes, going backward, are to be considered as part of the end of line and not interpreted as @kbd{:}@footnote{This convention replaced an older one saying that up to 4 immediately preceeding @emph{pairs} of zero bytes, going backward, are to be considered as part of the end of line and not interpreted as @kbd{::}.}. @node CDC-NOS, Bang-Bang, Display Code, CDC @section ASCII 6/12 from NOS @tindex CDC-NOS@r{, and its aliases} @tindex NOS This charset is available in Recode under the name @code{CDC-NOS}, with @code{NOS} as an acceptable alias. @cindex NOS 6/12 code @cindex caret ASCII code This is one of the charsets in use on CDC Cyber NOS systems to represent ASCII, sometimes named @dfn{NOS 6/12} code for coding ASCII. This code is also known as @dfn{caret ASCII}. It is based on a six bits character set in which small letters and control characters are coded using a @kbd{^} escape and, sometimes, a @kbd{@@} escape. The routines given here presume that the six bits code is already expressed in ASCII by the communication channel, with embedded ASCII @kbd{^} and @kbd{@@} escapes. Here is a table showing which characters are being used to encode each ASCII character. @example 000 ^5 020 ^# 040 060 0 100 @@A 120 P 140 @@G 160 ^P 001 ^6 021 ^[ 041 ! 061 1 101 A 121 Q 141 ^A 161 ^Q 002 ^7 022 ^] 042 " 062 2 102 B 122 R 142 ^B 162 ^R 003 ^8 023 ^% 043 # 063 3 103 C 123 S 143 ^C 163 ^S 004 ^9 024 ^" 044 $ 064 4 104 D 124 T 144 ^D 164 ^T 005 ^+ 025 ^_ 045 % 065 5 105 E 125 U 145 ^E 165 ^U 006 ^- 026 ^! 046 & 066 6 106 F 126 V 146 ^F 166 ^V 007 ^* 027 ^& 047 ' 067 7 107 G 127 W 147 ^G 167 ^W 010 ^/ 030 ^' 050 ( 070 8 110 H 130 X 150 ^H 170 ^X 011 ^( 031 ^? 051 ) 071 9 111 I 131 Y 151 ^I 171 ^Y 012 ^) 032 ^< 052 * 072 @@D 112 J 132 Z 152 ^J 172 ^Z 013 ^$ 033 ^> 053 + 073 ; 113 K 133 [ 153 ^K 173 ^0 014 ^= 034 ^@@ 054 , 074 < 114 L 134 \ 154 ^L 174 ^1 015 ^ 035 ^\ 055 - 075 = 115 M 135 ] 155 ^M 175 ^2 016 ^, 036 ^^ 056 . 076 > 116 N 136 @@B 156 ^N 176 ^3 017 ^. 037 ^; 057 / 077 ? 117 O 137 _ 157 ^O 177 ^4 @end example @node Bang-Bang, , CDC-NOS, CDC @section ASCII ``bang bang'' @tindex Bang-Bang This charset is available in Recode under the name @code{Bang-Bang}. This code, in use on Cybers at Universit@'e de Montr@'eal mainly, served to code a lot of French texts. The original name of this charset is @dfn{ASCII cod@'e Display}. This code is also known as @dfn{Bang-bang}. It is based on a six bits character set in which capitals, French diacritics and a few others are coded using an @kbd{!} escape followed by a single character, and control characters using a double @kbd{!} escape followed by a single character. The routines given here presume that the six bits code is already expressed in ASCII by the communication channel, with embedded ASCII @kbd{!} escapes. Here is a table showing which characters are being used to encode each ASCII character. @example 000 !!@@ 020 !!P 040 060 0 100 @@ 120 !P 140 !@@ 160 P 001 !!A 021 !!Q 041 !" 061 1 101 !A 121 !Q 141 A 161 Q 002 !!B 022 !!R 042 " 062 2 102 !B 122 !R 142 B 162 R 003 !!C 023 !!S 043 # 063 3 103 !C 123 !S 143 C 163 S 004 !!D 024 !!T 044 $ 064 4 104 !D 124 !T 144 D 164 T 005 !!E 025 !!U 045 % 065 5 105 !E 125 !U 145 E 165 U 006 !!F 026 !!V 046 & 066 6 106 !F 126 !V 146 F 166 V 007 !!G 027 !!W 047 ' 067 7 107 !G 127 !W 147 G 167 W 010 !!H 030 !!X 050 ( 070 8 110 !H 130 !X 150 H 170 X 011 !!I 031 !!Y 051 ) 071 9 111 !I 131 !Y 151 I 171 Y 012 !!J 032 !!Z 052 * 072 : 112 !J 132 !Z 152 J 172 Z 013 !!K 033 !![ 053 + 073 ; 113 !K 133 [ 153 K 173 ![ 014 !!L 034 !!\ 054 , 074 < 114 !L 134 \ 154 L 174 !\ 015 !!M 035 !!] 055 - 075 = 115 !M 135 ] 155 M 175 !] 016 !!N 036 !!^ 056 . 076 > 116 !N 136 ^ 156 N 176 !^ 017 !!O 037 !!_ 057 / 077 ? 117 !O 137 _ 157 O 177 !_ @end example @node Micros, Miscellaneous, CDC, Top @chapter Other micro-computer charsets @menu * Mac OS:: Apple's Macintosh code * AtariST:: Atari ST code @end menu @node Mac OS, AtariST, Micros, Micros @section Apple's Macintosh code @w{RFC 1345} brings 2 Macintosh charsets. You can discover them by using @code{grep} over the output of @samp{recode -l}: @example recode -l | grep -i mac @end example @noindent @tindex macintosh@r{, a charset, and its aliases} @tindex macintosh_ce@r{, and its aliases} @tindex mac @tindex macce Charsets @code{macintosh} and @code{macintosh_ce}, as well as their aliases @code{mac} and @code{macce} have @code{CR} as their implied surface. @node AtariST, , Mac OS, Micros @section Atari ST code @tindex AtariST This charset is available in Recode under the name @code{AtariST}. This is the character set used on the Atari ST/TT/Falcon. This is similar to @code{IBM-PC}, but differs in some details: it includes some more accented characters, the graphic characters are mostly replaced by Hebrew characters, and there is a true German @kbd{sharp s} different from Greek @kbd{beta}. About the end-of-line conversions: the canonical end-of-line on the Atari is @samp{\r\n}, but unlike @code{IBM-PC}, the OS makes no difference between text and binary input/output; it is up to the application how to interpret the data. In fact, most of the libraries that come with compilers can grok both @samp{\r\n} and @samp{\n} as end of lines. Many of the users who also have access to Unix systems prefer @samp{\n} to ease porting Unix utilities. So, for easing reversibility, Recode tries to let @samp{\r} undisturbed through recodings. @node Miscellaneous, Surfaces, Micros, Top @chapter Various other charsets A few charsets do not fit well in the previous chapters, and are grouped here. Some of them were added to Recode long ago, at a time this tool was mainly meant for handling texts written in French. The bias still shows when these charsets are linked to @code{Latin-1} instead of the wider @code{Unicode}, but this is being corrected as Recode evolves. @menu * HTML:: World Wide Web representations * LaTeX:: LaTeX macro calls * BibTeX:: BibTeX macro calls * Texinfo:: GNU project documentation files * ISO 5426 and ANSEL:: Bibliographic character sets * Vietnamese:: Vietnamese charsets * African:: African charsets * Others:: Cyrillic and other charsets * Java:: Java code * Texte:: Easy French conventions * Mule:: Mule as a multiplexed charset @end menu @node HTML, LaTeX, Miscellaneous, Miscellaneous @section World Wide Web representations @cindex HTML @cindex SGML @cindex XML @cindex Web @cindex World Wide Web @cindex WWW @cindex markup language @cindex entities @cindex character entities @cindex character entity references @cindex numeric character references Character entities have been introduced by SGML and made widely popular through HTML, the markup language in use for the World Wide Web, or Web or WWW for short. For representing @emph{unusual} characters, HTML texts use special sequences, beginning with an ampersand @kbd{&} and ending with a semicolon @kbd{;}. The sequence may itself start with a number sigh @kbd{#} and be followed by digits, so forming a @dfn{numeric character reference}, or else be an alphabetic identifier, so forming a @dfn{character entity reference}. The HTML standards have been revised into different HTML levels over time, and the list of allowable character entities differ in them. The later XML, meant to simplify many things, has an option (@samp{standalone=yes}) which much restricts that list. The Recode library is able to convert character references between their mnemonic form and their numeric form, depending on aimed HTML standard level. It also can, of course, convert between HTML and various other charsets. Here is a list of those HTML variants which Recode supports. Some notes have been provided by Fran@,{c}ois Yergeau @email{yergeau@@alis.com}. @table @code @item XML-standalone @tindex h0 @tindex XML-standalone This charset is available in Recode under the name @code{XML-standalone}, with @code{h0} as an acceptable alias. It is documented in section 4.1 of @uref{http://www.w3.org/TR/REC-xml}. It only knows @samp{&}, @samp{>}, @samp{<}, @samp{"} and @samp{'}. @item HTML_1.1 @tindex HTML_1.1 @tindex h1 This charset is available in Recode under the name @code{HTML_1.1}, with @code{h1} as an acceptable alias. HTML 1.0 was never really documented. @item HTML_2.0 @tindex HTML_2.0 @tindex RFC1866 @tindex 1866 @tindex h2 This charset is available in Recode under the name @code{HTML_2.0}, and has @code{RFC1866}, @code{1866} and @code{h2} for aliases. HTML 2.0 entities are listed in @w{RFC 1866}. Basically, there is an entity for each @emph{alphabetical} character in the right part of @w{ISO 8859-1}. In addition, there are four entities for syntax-significant ASCII characters: @samp{&}, @samp{>}, @samp{<} and @samp{"}. @item HTML-i18n @tindex HTML-i18n @tindex RFC2070 @tindex 2070 This charset is available in Recode under the name @code{HTML-i18n}, and has @code{RFC2070} and @code{2070} for aliases. @w{RFC 2070} added entities to cover the whole right part of @w{ISO 8859-1}. The list is conveniently accessible at @uref{http://www.alis.com:8085/ietf/html/html-latin1.sgml}. In addition, four i18n-related entities were added: @samp{‌} (@samp{‌}), @samp{‍} (@samp{‍}), @samp{‎} (@samp{‎}) and @samp{‏} (@samp{‏}). @item HTML_3.2 @tindex HTML_3.2 @tindex h3 This charset is available in Recode under the name @code{HTML_3.2}, with @code{h3} as an acceptable alias. @uref{http://www.w3.org/TR/REC-html32.html, HTML 3.2} took up the full @w{Latin-1} list but not the i18n-related entities from @w{RFC 2070}. @item HTML_4.0 @tindex h4 @tindex h This charset is available in Recode under the name @code{HTML_4.0}, and has @code{h4} and @code{h} for aliases. Beware that the particular alias @code{h} is not @emph{tied} to HTML 4.0, but to the highest HTML level supported by Recode; so it might later represent HTML level 5 if this is ever created. @uref{http://www.w3.org/TR/REC-html40/, HTML 4.0} has the whole @w{Latin-1} list, a set of entities for symbols, mathematical symbols, and Greek letters, and another set for markup-significant and internationalization characters comprising the 4 ASCII entities, the 4 i18n-related from @w{RFC 2070} plus some more. See @uref{http://www.w3.org/TR/REC-html40/sgml/entities.html}. @end table Printable characters from @w{Latin-1} may be used directly in an HTML text. However, partly because people have deficient keyboards, partly because people want to transmit HTML texts over non 8-bit clean channels while not using MIME, it is common (yet debatable) to use character entity references even for @w{Latin-1} characters, when they fall outside ASCII (that is, when they have the 8th bit set). When you recode from another charset to @code{HTML}, beware that all occurrences of double quotes, ampersands, and left or right angle brackets are translated into special sequences. However, in practice, people often use ampersands and angle brackets in the other charset for introducing HTML commands, compromising it: it is not pure HTML, not it is pure other charset. These particular translations can be rather inconvenient, they may be specifically inhibited through the command option @samp{-d} (@pxref{Mixed}). Codes not having a mnemonic entity are output by Recode using the @samp{&#@var{nnn};} notation, where @var{nnn} is a decimal representation of the UCS code value. When there is an entity name for a character, it is always preferred over a numeric character reference. ASCII printable characters are always generated directly. So is the newline. While reading HTML, Recode supports numeric character reference as alternate writings, even when written as hexadecimal numbers, as in @samp{�}. This is documented in: @example http://www.w3.org/TR/REC-html40/intro/sgmltut.html#h-3.2.3 @end example When Recode translates to HTML, the translation occurs according to the HTML level as selected by the goal charset. When translating @emph{from} HTML, Recode not only accepts the character entity references known at that level, but also those of all other levels, as well as a few alternative special sequences, to be forgiving to files using other HTML standards. @cindex normilise an HTML file @cindex HTML normalization Recode can be used to @emph{normalise} an HTML file using oldish conventions. For example, it accepts @samp{&AE;}, as this once was a valid writing, somewhere. However, it should always produce @samp{Æ} instead of @samp{&AE;}. Yet, this is not completely true. If one does: @example recode h3..h3 < @var{input} @end example @noindent the operation will be optimised into a mere copy, and you can get @samp{&AE;} this way, if you had some in your input file. But if you explicitly defeat the optimisation, like this maybe: @example recode h3..u2,u2..h3 < @var{input} @end example @noindent then @samp{&AE;} should be normalised into @samp{Æ} by the operation. @node LaTeX, BibTeX, HTML, Miscellaneous @section La@TeX{} macro calls @tindex LaTeX@r{, a charset} @tindex ltex @cindex La@TeX{} files @cindex @TeX{} files This charset is available in Recode under the name @code{LaTeX} and has @code{ltex} as an alias. It is used for ASCII files coded to be read by La@TeX{} or, in certain cases, by @TeX{}. Whenever you recode from another charset to @code{LaTeX}, beware that all occurrences of backslashes @kbd{\} are translated into the string @samp{\backslash@{@}}. However, in practice, people often use backslashes in the other charset for introducing @TeX{} commands, compromising it: it is not pure @TeX{}, nor it is pure other charset. This translation of backslashes into @samp{\backslash@{@}} can be rather inconvenient, it may be inhibited through the command option @samp{-d} (@pxref{Mixed}). @node BibTeX, Texinfo, LaTeX, Miscellaneous @section Bib@TeX{} macro calls @tindex BibTeX@r{, a charset} @tindex btex @cindex Bib@TeX{} files @cindex @TeX{} files This charset is available in Recode under the name @code{BibTeX} with aliases @code{bibtex} and @code{btex}. It is used for ASCII files coded to be read by Bib@TeX{} or, in certain cases, by La@TeX{} or @TeX{}. This charset is very similar to @code{LaTeX}. The only difference is that diacritics are enclosed between @samp{@{@}}. Refer to @code{LaTeX} charset for further information. @xref{LaTeX}. @node Texinfo, ISO 5426 and ANSEL, BibTeX, Miscellaneous @section GNU project documentation files @tindex Texinfo@r{, a charset} @tindex texi @tindex ti @cindex Texinfo files This charset is available in Recode under the name @code{Texinfo} and has @code{texi} and @code{ti} for aliases. It is used by the GNU project for its documentation. Texinfo files may be converted into Info files by the @code{makeinfo} program and into nice printed manuals by the @TeX{} system. Even if Recode may transform other charsets to Texinfo, it may not read Texinfo files yet. In these times, usages are also changing between versions of Texinfo, and Recode only partially succeeds in correctly following these changes. So, for now, Texinfo support in Recode should be considered as work still in progress (!). @node ISO 5426 and ANSEL, Vietnamese, Texinfo, Miscellaneous @section Bibliographic character sets @tindex ISO 5426@r{, a charset} @tindex ANSEL@r{, a charset} @cindex Bibliographic charsets These two character sets are intended to work with ASCII for exchange of bibliographic information. @node Vietnamese, African, ISO 5426 and ANSEL, Miscellaneous @section Vietnamese charsets @cindex Vietnamese charsets We are currently trying the implementation, in Recode, of a few character sets and transliterated forms to handle the Vietnamese language. They are quite briefly summarised, here. @table @code @item TCVN @tindex TCVN@r{, for Vietnamese} @tindex VN1@r{, maybe not available} @tindex VN2@r{, maybe not available} @tindex VN3@r{, maybe not available} The TCVN charset has an incomplete name. It might be one of the three charset @code{VN1}, @code{VN2} or @code{VN3}. Yes @code{VN2} might be a second version of @code{VISCII}. To be clarified. @item VISCII @tindex VISCII This is an 8-bit character set which seems to be rather popular for writing Vietnamese. @item VPS @tindex VPS This is an 8-bit character set for Vietnamese. No much reference. @item VIQR @tindex VIQR The VIQR convention is a 7-bit, @code{ASCII} transliteration for Vietnamese. @item VNI @tindex VNI The VNI convention is a 8-bit, @code{Latin-1} transliteration for Vietnamese. @end table @tindex 1129@r{, not available} @tindex CP1129@r{, not available} @tindex 1258@r{, not available} @tindex CP1258@r{, not available} Still lacking for Vietnamese in Recode, are the charsets @code{CP1129} and @code{CP1258}. @node African, Others, Vietnamese, Miscellaneous @section African charsets @cindex African charsets Some African character sets are available for a few languages, when these are heavily used in countries where French is also currently spoken. @tindex AFRFUL-102-BPI_OCIL@r{, and aliases} @tindex bambara @tindex bra @tindex ewondo @tindex fulfude @tindex AFRFUL-103-BPI_OCIL@r{, and aliases} @tindex t-bambara @tindex t-bra @tindex t-ewondo @tindex t-fulfude One African charset is usable for Bambara, Ewondo and Fulfude, as well as for French. This charset is available in Recode under the name @code{AFRFUL-102-BPI_OCIL}. Accepted aliases are @code{bambara}, @code{bra}, @code{ewondo} and @code{fulfude}. Transliterated forms of the same are available under the name @code{AFRFUL-103-BPI_OCIL}. Accepted aliases are @code{t-bambara}, @code{t-bra}, @code{t-ewondo} and @code{t-fulfude}. @tindex AFRLIN-104-BPI_OCIL @tindex lingala @tindex lin @tindex sango @tindex wolof @tindex AFRLIN-105-BPI_OCIL @tindex t-lingala @tindex t-lin @tindex t-sango @tindex t-wolof Another African charset is usable for Lingala, Sango and Wolof, as well as for French. This charset is available in Recode under the name @code{AFRLIN-104-BPI_OCIL}. Accepted aliases are @code{lingala}, @code{lin}, @code{sango} and @code{wolof}. Transliterated forms of the same are available under the name @code{AFRLIN-105-BPI_OCIL}. Accepted aliases are @code{t-lingala}, @code{t-lin}, @code{t-sango} and @code{t-wolof}. @tindex AFRL1-101-BPI_OCIL @tindex t-francais @tindex t-fra To ease exchange with @code{ISO-8859-1}, there is a charset conveying transliterated forms for @w{Latin-1} in a way which is compatible with the other African charsets in this series. This charset is available in Recode under the name @code{AFRL1-101-BPI_OCIL}. Accepted aliases are @code{t-fra} and @code{t-francais}. @node Others, Java, African, Miscellaneous @section Cyrillic and other charsets @cindex Cyrillic charsets The following Cyrillic charsets are already available in Recode through @w{RFC 1345} tables: @code{CP1251} with aliases @code{1251}, @code{ ms-cyrl} and @code{windows-1251}; @code{CSN_369103} with aliases @code{ISO-IR-139} and @code{KOI8_L2}; @code{ECMA-cyrillic} with aliases @code{ECMA-113}, @code{ECMA-113:1986} and @code{iso-ir-111}, @code{IBM880} with aliases @code{880}, @code{CP880} and @code{EBCDIC-Cyrillic}; @code{INIS-cyrillic} with alias @code{iso-ir-51}; @code{ISO-8859-5} with aliases @code{cyrillic}, @code{ ISO-8859-5:1988} and @code{iso-ir-144}; @code{KOI-7}; @code{KOI-8} with alias @code{GOST_19768-74}; @code{KOI8-R}; @code{KOI8-RU} and finally @code{KOI8-U}. There seems to remain some confusion in Roman charsets for Cyrillic languages, and because a few users requested it repeatedly, Recode now offers special services in that area. Consider these charsets as experimental and debatable, as the extraneous tables describing them are still a bit fuzzy or non-standard. Hopefully, in the long run, these charsets will be covered in Keld Simonsen's works to the satisfaction of everybody, and this section will merely disappear. @table @code @item KEYBCS2 @tindex KEYBCS2 @tindex Kamenicky This charset is available under the name @code{KEYBCS2}, with @code{Kamenicky} as an accepted alias. @item CORK @tindex CORK @tindex T1 This charset is available under the name @code{CORK}, with @code{T1} as an accepted alias. @item KOI-8_CS2 @tindex KOI-8_CS2 This charset is available under the name @code{KOI-8_CS2}. @end table @node Java, Texte, Others, Miscellaneous @section Java code @tindex Java This charset is available under the name @code{Java}, and should be considered experimental for now. ASCII characters represent themselves. Character outside ASCII are coded as @samp{\uNNNN}, where @samp{NNNN} stands for the four-digit hexadecimal value of the character within Unicode. The canonical representation uses lower case for the @samp{u} prefix and for the hexadecimal digits, yet Recode also accepts upper case. There is currently no attempt to distinguish Java comments from Java strings while the recoding goes, and this may be corrected some day. @node Texte, Mule, Java, Miscellaneous @section Easy French conventions @tindex Texte @tindex txte This charset is available in Recode under the name @code{Texte} and has @code{txte} for an alias. It is a seven bits code, identical to @code{ASCII-BS}, save for French diacritics which are noted using a slightly different convention. At text entry time, these conventions provide a little speed up. At read time, they slightly improve the readability over a few alternate ways of coding diacritics. Of course, it would better to have a specialised keyboard to make direct eight bits entries and fonts for immediately displaying eight bit ISO @w{Latin-1} characters. But not everybody is so fortunate. In a few mailing environments, and sadly enough, it still happens that the eight bit is often willing-fully destroyed. @cindex Easy French Easy French has been in use in France for a while. I only slightly adapted it (the diaeresis option) to make it more comfortable to several usages in Qu@'ebec originating from Universit@'e de Montr@'eal. In fact, the main problem for me was not to necessarily to invent Easy French, but to recognise the ``best'' convention to use, (best is not being defined, here) and to try to solve the main pitfalls associated with the selected convention. Shortly said, we have: @table @kbd @item e' for @kbd{e} (and some other vowels) with an acute accent, @item e` for @kbd{e} (and some other vowels) with a grave accent, @item e^ for @kbd{e} (and some other vowels) with a circumflex accent, @item e" for @kbd{e} (and some other vowels) with a diaeresis, @item c, for @kbd{c} with a cedilla. @end table @noindent There is no attempt at expressing the @kbd{ae} and @kbd{oe} diphthongs. French also uses tildes over @kbd{n} and @kbd{a}, but seldomly, and this is not represented either. In some countries, @kbd{:} is used instead of @kbd{"} to mark diaeresis. Recode supports only one convention per call, depending on the @samp{-c} option of the @code{recode} command. French quotes (sometimes called ``angle quotes'') are noted the same way English quotes are noted in @TeX{}, @emph{id est} by @kbd{``} and @kbd{''}. No effort has been put to preserve Latin ligatures (@kbd{@ae{}}, @kbd{@oe{}}) which are representable in several other charsets. So, these ligatures may be lost through Easy French conventions. The convention is prone to losing information, because the diacritic meaning overloads some characters that already have other uses. To alleviate this, some knowledge of the French language is boosted into the recognition routines. So, the following subtleties are systematically obeyed by the various recognisers. @enumerate @item A comma which follows a @kbd{c} is interpreted as a cedilla only if it is followed by one of the vowels @kbd{a}, @kbd{o} or @kbd{u}. @item A single quote which follows a @kbd{e} does not necessarily means an acute accent if it is followed by a single other one. For example: @table @kbd @item e' will give an @kbd{e} with an acute accent. @item e'' will give a simple @kbd{e}, with a closing quotation mark. @item e''' will give an @kbd{e} with an acute accent, followed by a closing quotation mark. @end table There is a problem induced by this convention if there are English quotations with a French text. In sentences like: @example There's a meeting at Archie's restaurant. @end example the single quotes will be mistaken twice for acute accents. So English contractions and suffix possessives could be mangled. @item A double quote or colon, depending on @samp{-c} option, which follows a vowel is interpreted as diaeresis only if it is followed by another letter. But there are in French several words that @emph{end} with a diaeresis, and the Recode library is aware of them. There are words ending in ``igue'', either feminine words without a relative masculine (besaigu@"e and cigu@"e), or feminine words with a relative masculine@footnote{There are supposed to be seven words in this case. So, one is missing.} (aigu@"e, ambigu@"e, contigu@"e, exigu@"e, subaigu@"e and suraigu@"e). There are also words not ending in ``igue'', but instead, either ending by ``i''@footnote{Look at one of the following sentences (the second has to be interpreted with the @samp{-c} option): @example "Ai"e! Voici le proble`me que j'ai" Ai:e! Voici le proble`me que j'ai: @end example There is an ambiguity between an @tex a\"\i, @end tex @ifinfo ai", @end ifinfo @c FIXME: why not use @dotless{} here? It works, AFAIK. @ignore a@"{@dotless{i}}, @end ignore the small animal, and the indicative future of @emph{avoir} (first person singular), when followed by what could be a diaeresis mark. Hopefully, the case is solved by the fact that an apostrophe always precedes the verb and almost never the animal.} @tex (a\"\i, conga\"\i, go\"\i, ha\"\i ka\"\i, inou\"\i, sa\"\i, samura\"\i, tha\"\i{} and toka\"\i), @end tex @ifinfo (ai", congai", goi", hai"kai", inoui", sai", samurai", thai" and tokai"), @end ifinfo @ignore (a@"{@dotless{i}}, conga@"{@dotless{i}}, go@"{@dotless{i}}, ha@"{@dotless{i}}ka@"{@dotless{i}}, inou@"{@dotless{i}}, sa@"{@dotless{i}}, samura@"{@dotless{i}}, tha@"{@dotless{i}} and toka@"{@dotless{i}}), @end ignore ending by ``e'' (cano@"e) or ending by ``u''@footnote{I did not pay attention to proper nouns, but this one showed up as being fairly evident.} (Esa@"u). Just to complete this topic, note that it would be wrong to make a rule for all words ending in ``igue'' as needing a diaerisis, as there are counter-examples (becfigue, b@`esigue, bigue, bordigue, bourdigue, brigue, contre-digue, digue, d'intrigue, fatigue, figue, garrigue, gigue, igue, intrigue, ligue, prodigue, sarigue and zigue). @end enumerate @node Mule, , Texte, Miscellaneous @section Mule as a multiplexed charset @tindex Mule@r{, a charset} @cindex multiplexed charsets @cindex super-charsets This version of Recode barely starts supporting multiplexed or super-charsets, that is, those encoding methods by which a single text stream may contain a combination of more than one constituent charset. The only multiplexed charset in Recode is @code{Mule}, and even then, it is only very partially implemented: the only correspondence available is with @code{Latin-1}. The author quickly implemented this only because he needed this for himself. However, it is intended that Mule support to become more real in subsequent releases of Recode. Multiplexed charsets are not to be confused with mixed charset texts (@pxref{Mixed}). For mixed charset input, the rules allowing to distinguish which charset is current, at any given place, are kind of informal, and driven from the semantics of what the file contains. On the other side, multiplexed charsets are @emph{designed} to be interpreted fairly precisely, and quite independently of any informational context. @cindex MULE, in Emacs The spelling @code{Mule} originally stood for @cite{@emph{mul}tilingual @emph{e}nhancement to GNU Emacs}, it is the result of a collective effort orchestrated by Handa Ken'ichi since 1993. When @code{Mule} got rewritten in the main development stream of GNU Emacs 20, the FSF renamed it @code{MULE}, meaning @cite{@emph{mul}tilingual @emph{e}nvironment in GNU Emacs}. Even if the charset @code{Mule} is meant to stay internal to GNU Emacs, it sometimes breaks loose in external files, and as a consequence, a recoding tool is sometimes needed. Within Emacs, @code{Mule} comes with @code{Leim}, which stands for @cite{@emph{l}ibraries of @emph{e}macs @emph{i}nput @emph{m}ethods}. One of these libraries is named @code{quail}@footnote{Usually, quail means quail egg in Japanese, while egg alone is usually chicken egg. Both quail egg and chicken egg are popular food in Japan. The @code{quail} input system has been named because it is smaller than the previous @code{EGG} system. As for @code{EGG}, it is the translation of @code{TAMAGO}. This word comes from the Japanese sentence @cite{@emph{ta}kusan @emph{ma}tasete @emph{go}mennasai}, meaning @cite{sorry to have let you wait so long}. Of course, the publication of @code{EGG} has been delayed many times@dots{} (Story by Takahashi Naoto)}. @node Surfaces, Internals, Miscellaneous, Top @chapter All about surfaces @cindex surface, what it is A @dfn{surface} is the varnish added over a charset so it fits in actual bits and bytes. How end of lines are exactly encoded is not really pertinent to the charset, and so, there is surface for end of lines. @code{Base64} is also a surface, as we may encode any charset in it. Other examples would DES enciphering, or gzip compression (even if Recode does not offer them currently): these are ways to give a real life to theoretical charsets. @cindex trivial surface The @dfn{trivial surface} consists of using a fixed number of bits (often eight) for each character, the bits together hold the integer value of the index for the character in its charset table. There are many kinds of surfaces, beyond the trivial one, all having the purpose of increasing selected qualities for the storage or transmission. For example, surfaces might increase the resistance to channel limits (@code{Base64}), the transmission speed (@code{gzip}), the information privacy (@code{DES}), the conformance to operating system conventions (@code{CR-LF}), the blocking into records (@code{VB}), and surely other things as well@footnote{These are mere examples to explain the concept, Recode only has @code{Base64} and @code{CR-LF}, actually.}. Many surfaces may be applied to a stream of characters from a charset, the order of application of surfaces is important, and surfaces should be removed in the reverse order of their application. Even if surfaces may generally be applied to various charsets, some surfaces were specifically designed for a particular charset, and would not make much sense if applied to other charsets. In such cases, these conceptual surfaces have been implemented as Recode charsets, instead of as surfaces. This choice yields to cleaner syntax and usage. @xref{Universal}. @cindex surfaces, implementation in Recode @tindex data@r{, a special charset} Surfaces are implemented within Recode as special charsets which may only transform to or from the @code{data} special charset. Clever users may use this knowledge for writing surface names in requests exactly as if they were pure charsets, when the only need is to change surfaces without any kind of recoding between real charsets. In such contexts @code{data} may also be used as if it were some kind of generic, anonymous charset: the request @samp{data..@var{surface}} merely adds the given @var{surface}, while the request @samp{@var{surface}..data} removes it. This chapter presents all surfaces currently available. @menu * Permutations:: Permuting groups of bytes * End lines:: Representation for end of lines * MIME:: MIME contents encodings * Dump:: Interpreted character dumps * Test:: Artificial data for testing @end menu @node Permutations, End lines, Surfaces, Surfaces @section Permuting groups of bytes @cindex permutations of groups of bytes @cindex byte order swapping @cindex endiannes, changing A permutation is a surface transformation which reorders groups of eight-bit bytes. A @emph{21} permutation exchanges pairs of successive bytes. If the text contains an odd number of bytes, the last byte is merely copied. An @emph{4321} permutation inverts the order of quadruples of bytes. If the text does not contains a multiple of four bytes, the remaining bytes are nevertheless permuted as @emph{321} if there are three bytes, @emph{21} if there are two bytes, or merely copied otherwise. @table @code @item 21 @tindex 21-Permutation @tindex swabytes This surface is available in Recode under the name @code{21-Permutation} and has @code{swabytes} for an alias. @item 4321 @tindex 4321-Permutation This surface is available in Recode under the name @code{4321-Permutation}. @end table @node End lines, MIME, Permutations, Surfaces @section Representation for end of lines @cindex end of line format The same charset might slightly differ, from one system to another, for the single fact that end of lines are not represented identically on all systems. The representation for an end of line within Recode is the @code{ASCII} or @code{UCS} code with value 10, or @kbd{LF}. Other conventions for representing end of lines are available through surfaces. @table @code @item CR @tindex CR@r{, a surface} This convention is popular on Apple's Macintosh machines. When this surface is applied, each line is terminated by @kbd{CR}, which has @code{ASCII} value 13. Unless the library is operating in strict mode, adding or removing the surface will in fact @emph{exchange} @kbd{CR} and @kbd{LF}, for better reversibility. However, in strict mode, the exchange does not happen, any @kbd{CR} will be copied verbatim while applying the surface, and any @kbd{LF} will be copied verbatim while removing it. This surface is available in Recode under the name @code{CR}, it does not have any aliases. This is the implied surface for the Apple Macintosh related charsets. @item CR-LF @tindex CR-LF@r{, a surface} This convention is popular on Microsoft systems running on IBM PCs and compatible. When this surface is applied, each line is terminated by a sequence of two characters: one @kbd{CR} followed by one @kbd{LF}, in that order. @cindex Ctrl-Z, discarding For compatibility with oldish MS-DOS systems, removing a @code{CR-LF} surface will discard the first encountered @kbd{C-z}, which has @code{ASCII} value 26, and everything following it in the text. Adding this surface will not, however, append a @kbd{C-z} to the result. @tindex cl This surface is available in Recode under the name @code{CR-LF} and has @code{cl} for an alias. This is the implied surface for the IBM or Microsoft related charsets or code pages. @end table Some other charsets might have their own representation for an end of line, which is different from @kbd{LF}. For example, this is the case of various @code{EBCDIC} charsets, or @code{Icon-QNX}. The recoding of end of lines is intimately tied into such charsets, it is not available separately as surfaces. @node MIME, Dump, End lines, Surfaces @section MIME contents encodings @cindex MIME encodings @cindex RFC 2045 @w{RFC 2045} defines two 7-bit surfaces, meant to prepare 8-bit messages for transmission. Base64 is especially usable for binary entities, while Quoted-Printable is especially usable for text entities, in those case the lower 128 characters of the underlying charset coincide with ASCII. @table @code @tindex Base64 @tindex b64 @tindex 64 @item Base64 This surface is available in Recode under the name @code{Base64}, with @code{b64} and @code{64} as acceptable aliases. @item Quoted-Printable @tindex Quoted-Printable @tindex quote-printable @tindex QP This surface is available in Recode under the name @code{Quoted-Printable}, with @code{quote-printable} and @code{QP} as acceptable aliases. @end table Note that @code{UTF-7}, which may be also considered as a MIME surface, is provided as a genuine charset instead, as it necessary relates to @code{UCS-2} and nothing else. @xref{UTF-7}. A little historical note, also showing the three levels of acceptance of Internet standards. MIME changed from a ``Proposed Standard'' (@w{RFC 1341--1344}, 1992) to a ``Draft Standard'' (@w{RFC 1521--1523}) in 1993, and was @emph{recycled} as a ``Draft Standard'' in 1996-11. It is not yet a ``Full Standard''. @node Dump, Test, MIME, Surfaces @section Interpreted character dumps @cindex dumping characters Dumps are surfaces meant to express, in ways which are a bit more readable, the bit patterns used to represent characters. They allow the inspection or debugging of character streams, but also, they may assist a bit the production of C source code which, once compiled, would hold in memory a copy of the original coding. However, Recode does not attempt, in any way, to produce complete C source files in dumps. User hand editing or @file{Makefile} trickery is still needed for adding missing lines. Dumps may be given in decimal, hexadecimal and octal, and be based over chunks of either one, two or four eight-bit bytes. Formatting has been chosen to respect the C language syntax for number constants, with commas and newlines inserted appropriately. However, when dumping two or four byte chunks, the last chunk may be incomplete. This is observable through the usage of narrower expression for that last chunk only. Such a shorter chunk would not be compiled properly within a C initialiser, as all members of an array share a single type, and so, have identical sizes. @table @code @item Octal-1 @tindex Octal-1 @tindex o1 This surface corresponds to an octal expression of each input byte. It is available in Recode under the name @code{Octal-1}, with @code{o1} and @code{o} as acceptable aliases. @item Octal-2 @tindex Octal-2 @tindex o2 This surface corresponds to an octal expression of each pair of input bytes, except for the last pair, which may be short. It is available in Recode under the name @code{Octal-2} and has @code{o2} for an alias. @item Octal-4 @tindex Octal-4 @tindex o4 This surface corresponds to an octal expression of each quadruple of input bytes, except for the last quadruple, which may be short. It is available in Recode under the name @code{Octal-4} and has @code{o4} for an alias. @item Decimal-1 @tindex Decimal-1 @tindex d1 This surface corresponds to an decimal expression of each input byte. It is available in Recode under the name @code{Decimal-1}, with @code{d1} and @code{d} as acceptable aliases. @item Decimal-2 @tindex Decimal-2 @tindex d2 This surface corresponds to an decimal expression of each pair of input bytes, except for the last pair, which may be short. It is available in Recode under the name @code{Decimal-2} and has @code{d2} for an alias. @item Decimal-4 @tindex Decimal-4 @tindex d4 This surface corresponds to an decimal expression of each quadruple of input bytes, except for the last quadruple, which may be short. It is available in Recode under the name @code{Decimal-4} and has @code{d4} for an alias. @item Hexadecimal-1 @tindex Hexadecimal-1 @tindex x1 This surface corresponds to an hexadecimal expression of each input byte. It is available in Recode under the name @code{Hexadecimal-1}, with @code{x1} and @code{x} as acceptable aliases. @item Hexadecimal-2 @tindex Hexadecimal-2 @tindex x2 This surface corresponds to an hexadecimal expression of each pair of input bytes, except for the last pair, which may be short. It is available in Recode under the name @code{Hexadecimal-2}, with @code{x2} for an alias. @item Hexadecimal-4 @tindex Hexadecimal-4 @tindex x4 This surface corresponds to an hexadecimal expression of each quadruple of input bytes, except for the last quadruple, which may be short. It is available in Recode under the name @code{Hexadecimal-4}, with @code{x4} for an alias. @end table When removing a dump surface, that is, when reading a dump results back into a sequence of bytes, the narrower expression for a short last chunk is recognised, so dumping is a fully reversible operation. However, in case you want to produce dumps by other means than through Recode, beware that for decimal dumps, the library has to rely on the number of spaces to establish the original byte size of the chunk. Although the library might report reversibility errors, removing a dump surface is a rather forgiving process: one may mix bases, group a variable number of data per source line, or use shorter chunks in places other than at the far end. Also, source lines not beginning with a number are skipped. So, Recode should often be able to read a whole C header file, wrapping the results of a previous dump, and regenerate the original byte string. @node Test, , Dump, Surfaces @section Artificial data for testing A few pseudo-surfaces exist to generate debugging data out of thin air. These surfaces are only meant for the expert Recode user, and are only useful in a few contexts, like for generating binary permutations from the recoding or acting on them. @cindex debugging surfaces Debugging surfaces, @emph{when removed}, insert their generated data at the beginning of the output stream, and copy all the input stream after the generated data, unchanged. This strange removal constraint comes from the fact that debugging surfaces are usually specified in the @emph{before} position instead of the @emph{after} position within a request. With debugging surfaces, one often recodes file @file{/dev/null} in filter mode. Specifying many debugging surfaces at once has an accumulation effect on the output, and since surfaces are removed from right to left, each generating its data at the beginning of previous output, the net effect is an @emph{impression} that debugging surfaces are generated from left to right, each appending to the result of the previous. In any case, any real input data gets appended after what was generated. @table @code @item test7 @tindex test7 When removed, this surface produces 128 single bytes, the first having value 0, the second having value 1, and so forth until all 128 values have been generated. @item test8 @tindex test8 When removed, this surface produces 256 single bytes, the first having value 0, the second having value 1, and so forth until all 256 values have been generated. @item test15 @tindex test15 When removed, this surface produces 64509 double bytes, the first having value 0, the second having value 1, and so forth until all values have been generated, but excluding risky @code{UCS-2} values, like all codes from the surrogate @code{UCS-2} area (for @code{UTF-16}), the byte order mark, and values known as invalid @code{UCS-2}. @item test16 @tindex test16 When removed, this surface produces 65536 double bytes, the first having value 0, the second having value 1, and so forth until all 65536 values have been generated. @end table As an example, the command @samp{recode l5/test8..dump < /dev/null} is a convoluted way to produce an output similar to @samp{recode -lf l5}. It says to generate all possible 256 bytes and interpret them as @code{ISO-8859-9} codes, while converting them to @code{UCS-2}. Resulting @code{UCS-2} characters are dumped one per line, accompanied with their explicative name. @node Internals, Concept Index, Surfaces, Top @chapter Internal aspects @cindex Recode internals @cindex internals The incoming explanations of the internals of Recode should help people who want to dive into Recode sources for adding new charsets. Adding new charsets does not require much knowledge about the overall organisation of Recode. You can rather concentrate of your new charset, letting the remainder of the Recode mechanics take care of interconnecting it with all others charsets. If you intend to play seriously at modifying Recode, beware that you may need some other GNU tools which were not required when you first installed Recode. If you modify or create any @file{.l} file, then you need Flex, and some better @code{awk} like @code{mawk}, GNU @code{awk}, or @code{nawk}. If you modify the documentation (and you should!), you need @code{makeinfo}. If you are really audacious, you may also want Perl for modifying tabular processing, then @code{m4}, Autoconf, Automake and @code{libtool} for adjusting configuration matters. @menu * Main flow:: Overall organisation * New charsets:: Adding new charsets * New surfaces:: Adding new surfaces * Design:: Comments on the library design @end menu @node Main flow, New charsets, Internals, Internals @section Overall organisation @cindex Recode, main flow of operation The Recode mechanics slowly evolved for many years, and it would be tedious to explain all problems I met and mistakes I did all along, yielding the current behaviour. Surely, one of the key choices was to stop trying to do all conversions in memory, one line or one buffer at a time. It has been fruitful to use the character stream paradigm, and the elementary recoding steps now convert a whole stream to another. Most of the control complexity in Recode exists so that each elementary recoding step stays simple, making easier to add new ones. The whole point of Recode, as I see it, is providing a comfortable nest for growing new charset conversions. @cindex single step The main Recode driver constructs, while initialising all conversion modules, a table giving all the conversion routines available (@dfn{single step}s) and for each, the starting charset and the ending charset. If we consider these charsets as being the nodes of a directed graph, each single step may be considered as oriented arc from one node to the other. A cost is attributed to each arc: for example, a high penalty is given to single steps which are prone to losing characters, a lower penalty is given to those which need studying more than one input character for producing an output character, etc. Given a starting code and a goal code, Recode computes the most economical route through the elementary recodings, that is, the best sequence of conversions that will transform the input charset into the final charset. To speed up execution, Recode looks for subsequences of conversions which are simple enough to be merged, and then dynamically creates new single steps to represent these mergings. @cindex double step A @dfn{double step} in Recode is a special concept representing a sequence of two single steps, the output of the first single step being the special charset @code{UCS-2}, the input of the second single step being also @code{UCS-2}. Special Recode machinery dynamically produces efficient, reversible, merge-able single steps out of these double steps. @cindex recoding steps, statistics @cindex average number of recoding steps I made some statistics about how many internal recoding steps are required between any two charsets chosen at random. The initial recoding layout, before optimisation, always uses between 1 and 5 steps. Optimisation could sometimes produce mere copies, which are counted as no steps at all. In other cases, optimisation is unable to save any step. The number of steps after optimisation is currently between 0 and 5 steps. Of course, the @emph{expected} number of steps is affected by optimisation: it drops from 2.8 to 1.8. This means that Recode uses a theoretical average of a bit less than one step per recoding job. This looks good. This was computed using reversible recodings. In strict mode, optimisation might be defeated somewhat. Number of steps run between 1 and 6, both before and after optimisation, and the expected number of steps decreases by a lesser amount, going from 2.2 to 1.3. This is still manageable. @node New charsets, New surfaces, Main flow, Internals @section Adding new charsets @cindex adding new charsets @cindex new charsets, how to add The main part of Recode is written in C, as are most single steps. A few single steps need to recognise sequences of multiple characters, they are often better written in Flex. It is easy for a programmer to add a new charset to Recode. All it requires is making a few functions kept in a single @file{.c} file, adjusting @file{Makefile.am} and remaking Recode. One of the function should convert from any previous charset to the new one. Any previous charset will do, but try to select it so you will not lose too much information while converting. The other function should convert from the new charset to any older one. You do not have to select the same old charset than what you selected for the previous routine. Once again, select any charset for which you will not lose too much information while converting. If, for any of these two functions, you have to read multiple bytes of the old charset before recognising the character to produce, you might prefer programming it in Flex in a separate @file{.l} file. Prototype your C or Flex files after one of those which exist already, so to keep the sources uniform. Besides, at @code{make} time, all @file{.l} files are automatically merged into a single big one by the script @file{mergelex.awk}. There are a few hidden rules about how to write new Recode modules, for allowing the automatic creation of @file{decsteps.h} and @file{initsteps.h} at @code{make} time, or the proper merging of all Flex files. Mimetism is a simple approach which relieves me of explaining all these rules! Start with a module closely resembling what you intend to do. Here is some advice for picking up a model. First decide if your new charset module is to be be driven by algorithms rather than by tables. For algorithmic recodings, see @file{iconqnx.c} for C code, or @file{txtelat1.l} for Flex code. For table driven recodings, see @file{ebcdic.c} for one-to-one style recodings, @file{lat1html.c} for one-to-many style recodings, or @file{atarist.c} for double-step style recodings. Just select an example from the style that better fits your application. Each of your source files should have its own initialisation function, named @code{module_@var{charset}}, which is meant to be executed @emph{quickly} once, prior to any recoding. It should declare the name of your charsets and the single steps (or elementary recodings) you provide, by calling @code{declare_step} one or more times. Besides the charset names, @code{declare_step} expects a description of the recoding quality (see @file{recodext.h}) and two functions you also provide. The first such function has the purpose of allocating structures, pre-conditioning conversion tables, etc. It is also the way of further modifying the @code{STEP} structure. This function is executed if and only if the single step is retained in an actual recoding sequence. If you do not need such delayed initialisation, merely use @code{NULL} for the function argument. The second function executes the elementary recoding on a whole file. If you have a recoding table handy in a suitable format but do not use one of the predefined recoding functions, it is still a good idea to use a delayed initialisation to save it anyway, because @code{recode} option @samp{-h} will take advantage of this information when available. Finally, edit @file{Makefile.am} to add the source file name of your routines to the @code{C_STEPS} or @code{L_STEPS} macro definition, depending on whether your routines are written in C or Flex. @node New surfaces, Design, New charsets, Internals @section Adding new surfaces @cindex adding new surfaces @cindex new surfaces, how to add Adding a new surface is technically quite similar to adding a new charset. @xref{New charsets}. A surface is provided as a set of two transformations: one from the predefined special charset @code{data} to the new surface, meant to apply the surface, the other from the new surface to the predefined special charset @code{data}, meant to remove the surface. @findex declare_step Internally in Recode, function @code{declare_step} especially recognises when a charset is so related to @code{data}, and then takes appropriate actions so that charset gets indeed installed as a surface. @node Design, , New surfaces, Internals @section Comments on the library design @itemize @bullet @item Why a shared library? @cindex shared library implementation There are many different approaches to reduce system requirements to handle all tables needed in the Recode library. One of them is to have the tables in an external format and only read them in on demand. After having pondered this for a while, I finally decided against it, mainly because it involves its own kind of installation complexity, and it is not clear to me that it would be as interesting as I first imagined. It looks more efficient to see all tables and algorithms already mapped into virtual memory from the start of the execution, yet not loaded in actual memory, than to go through many disk accesses for opening various data files once the program is already started, as this would be needed with other solutions. Using a shared library also has the indirect effect of making various algorithms handily available, right in the same modules providing the tables. This alleviates much the burden of the maintenance. Of course, I would like to later make an exception for only a few tables, built locally by users for their own particular needs once Recode is installed. Recode should just go and fetch them. But I do not perceive this as very urgent, yet useful enough to be worth implementing. Currently, all tables needed for recoding are precompiled into binaries, and all these binaries are then made into a shared library. As an initial step, I turned Recode into a main program and a non-shared library, this allowed me to tidy up the API, get rid of all global variables, etc. It required a surprising amount of program source massaging. But once this cleaned enough, it was easy to use Gordon Matzigkeit's @code{libtool} package, and take advantage of the Automake interface to neatly turn the non-shared library into a shared one. Sites linking with the Recode library, whose system does not support any form of shared libraries, might end up with bulky executables. Surely, the Recode library will have to be used statically, and might not very nicely usable on such systems. It seems that progress has a price for those being slow at it. There is a locality problem I did not address yet. Currently, the Recode library takes many cycles to initialise itself, calling each module in turn for it to set up associated knowledge about charsets, aliases, elementary steps, recoding weights, etc. @emph{Then}, the recoding sequence is decided out of the command given. One thing to do would have Recode to pre-load all tables and dump them at installation time. The result would then be compiled and added to the library. This would spare many initialisation cycles, but more importantly, would avoid calling all library modules, scattered through the virtual memory, and so, possibly causing many spurious page exceptions each time the initialisation is requested, at least once per program execution. @item Why not a central charset? It would be simpler, and I would like, if something like @w{ISO 10646} was used as a turning template for all charsets in Recode. Even if I think it could help to a certain extent, I'm still not fully sure it would be sufficient in all cases. Moreover, some people disagree about using @w{ISO 10646} as the central charset, to the point I cannot totally ignore them, and surely, Recode is not a means for me to force my own opinions on people. I would like that Recode be practical more than dogmatic, and reflect usage more than religions. Currently, if you ask Recode to go from @var{charset1} to @var{charset2} chosen at random, it is highly probable that the best path will be quickly found as: @example @var{charset1}..@code{UCS-2}..@var{charset2} @end example That is, it will almost always use the @code{UCS} as a trampoline between charsets. However, @code{UCS-2} will be immediately be optimised out, and @var{charset1}..@var{charset2} will often be performed in a single step through a permutation table generated on the fly for the circumstance @footnote{If strict mapping is requested, another efficient device will be used instead of a permutation.}. In those few cases where @code{UCS-2} is not selected as a conceptual intermediate, I plan to study if it could be made so. But I guess some cases will remain where @code{UCS-2} is not a proper choice. Even if @code{UCS} is often the good choice, I do not intend to forcefully restrain Recode around @code{UCS-2} (nor @code{UCS-4}) for now. We might come to that one day, but it will come out of the natural evolution of Recode. It will then reflect a fact, rather than a preset dogma. @item Why not @code{iconv}? @cindex @code{iconv} The @code{iconv} routine and library allows for converting characters from an input buffer to an input buffer, synchronously advancing both buffer cursors. If the output buffer is not big enough to receive all of the conversion, the routine returns with the input cursor set at the position where the conversion could later be resumed, and the output cursor set to indicate until where the output buffer has been filled. Despite this scheme is simple and nice, the Recode library does not offer it currently. Why not? When long sequences of decodings, stepwise recodings, and re-encodings are involved, as it happens in true life, synchronising the input buffer back to where it should have stopped, when the output buffer becomes full, is a difficult problem. Oh, we could make it simpler at the expense of losing space or speed: by inserting markers between each input character and counting them at the output end; by processing only one character in a time through the whole sequence; by repeatedly attempting to recode various subsets of the input buffer, binary searching on their length until the output just fits. The overhead of such solutions looks prohibitive to me, and the gain very minimal. I do not see a real advantage, nowadays, imposing a fixed length to an output buffer. It makes things so much simpler and efficient to just let the output buffer size float a bit. Of course, if the above problem was solved, the @code{iconv} library should be easily emulated, given that Recode has similar knowledge about charsets, of course. This either solved or not, the @code{iconv} program remains trivial (given similar knowledge about charsets). I also presume that the @code{genxlt} program would be easy too, but I do not have enough detailed specifications of it to be sure. A lot of years ago, Recode was using a similar scheme, and I found it rather hard to manage for some cases. I rethought the overall structure of Recode for getting away from that scheme, and never regretted it. I perceive @code{iconv} as an artificial solution which surely has some elegances and virtues, but I do not find it really useful as it stands: one always has to wrap @code{iconv} into something more refined, extending it for real cases. From past experience, I think it is unduly hard to fully implement this scheme. It would be awkward that we do contortions for the sole purpose of implementing exactly its specification, without real, properly grounded reasons (other then the fact some people once thought it was worth standardising). It is much better to immediately aim for the refinement we need, without uselessly forcing us into the dubious detour @code{iconv} represents. Some may argue that if Recode was using a comprehensive charset as a turning template, as discussed in a previous point, this would make @code{iconv} easier to implement. Some may be tempted to say that the cases which are hard to handle are not really needed, nor interesting, anyway. I feel and fear a bit some pressure wanting that Recode be split into the part that well fits the @code{iconv} model, and the part that does not fit, considering this second part less important, with the idea of dropping it one of these days, maybe. My guess is that users of the Recode library, whatever its form, would not like to have such arbitrary limitations. In the long run, we should not have to explain to our users that some recodings may not be made available just because they do not fit the simple model we had in mind when we did it. Instead, we should try to stay open to the difficulties of real life. There is still a lot of complex needs for Asian people, say, that Recode does not currently address, while it should. Not only the doors should stay open, but we should force them wider! @end itemize @node Concept Index, Option Index, Internals, Top @unnumbered Concept Index @printindex cp @node Option Index, Library Index, Concept Index, Top @unnumbered Option Index This is an alphabetical list of all command-line options accepted by @code{recode}. @printindex op @node Library Index, Charset and Surface Index, Option Index, Top @unnumbered Library Index This is an alphabetical index of important functions, data structures, and variables in the Recode library. @printindex fn @node Charset and Surface Index, , Library Index, Top @unnumbered Charset and Surface Index This is an alphabetical list of all the charsets and surfaces supported by Recode, and their aliases. @printindex tp @contents @bye @c Local Variables: @c texinfo-column-for-description: 24 @c End: recode-3.7.15/doc/File-Latin10000644000175000017500000000406113226751246011237 From Martin Maechler , on 1993-12-30. Here are ALL codes 128 - 255 [== OKTAL 200 - 377 ] you see ISO-Latin1 ---------------------------- --------- ---------- To produce such a letter in Emacs, you type qNNN where q or "C-q" or "^q" is and "Q" , and NNN = OCTAL code BETTER: With 'iso-insert' [now in our default], ------- type ([ C-x 8 " a ]) to get ä --> C-x 8 C-h gives bindings NUCH BETTER: with "/u/sfs/emacs/international.el": =========== Alt + a = A-a |--> ä, A-O |--> Ö , etc. Note that \200 - \236 [the first 32, 128--160] are NOT ISO-latin1 displayed: €‚ƒ„…†‡ ||| ˆ‰Š‹ŒŽ ‘’“”•–— ||| ˜™š›œž Note that \240 is VERY funny "invisible", makes things reversevideo../invisible depending on Emacs version. For this reason, I OMIT it in the following [Enter it with ^Q240]: Dec Oct Dec Oct ¡¢£¤¥¦§ ¨©ª«¬­®¯ 160 240: 01234567 168 250: 01234567 °±²³´µ¶· ¸¹º»¼½¾¿ 176 260: 01234567 184 270: 01234567 ÀÁÂÃÄÅÆÇ ÈÉÊËÌÍÎÏ 192 300: 01234567 200 310: 01234567 ÐÑÒÓÔÕÖ× ØÙÚÛÜÝÞß 208 320: 01234567 216 330: 01234567 àáâãäåæç èéêëìíîï 224 340: 01234567 232 350: 01234567 ðñòóôõö÷ øùúûüýþÿ 240 360: 01234567 248 370: 01234567 -------------- Ein paar Beispiele / some examples [using OCT code] ö <-| 366 - 40 = 326 |-> Ö ä <-| 344 - 40 = 304 |-> Ä ü <-| 374 - 40 = 334 |-> Ü Texte: Österreich ist für Zürcher und Zürcherinnen eigentlich näher als das Bärner Oberland, aber wer möchte wohl Kärnten mit einem Besuch beglücken ? Peter Bühlmann, Markus Hürzeler, Prof. Hansruedi Künsch, Frau Christina Künzli, Martin Mächler -- alle hätten gerne ihre Namen mit Umlauten. Ob dies Markus Äbi wohl auch so sähe ? Pour Paul-André ou Étienne, c'est plustôt les accents aigus, grave et circonflexes, ça c'est clair. El Niño, das ist ein warmer Wind in der südlichen Hemisphäre... «3·4 = 3 × 4 = 12» oder «(¯2)² = 4» oder « 1÷2 = ½ » schreiben sich auch schöner... recode-3.7.15/doc/recode.info0000644000175000017500000111263714766021044011433 This is recode.info, produced by makeinfo version 7.1 from recode.texi. INFO-DIR-SECTION Internationalization and character sets START-INFO-DIR-ENTRY * recode: (recode). Conversion between character sets and surfaces. END-INFO-DIR-ENTRY This file documents the Recode program and library, which has the purpose of converting files between various character sets and surfaces. Copyright (C) 1990-2023 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.  File: recode.info, Node: Top, Next: Tutorial, Prev: (dir), Up: (dir) Recode ****** This recoding library converts files between various coded character sets and surface encodings. When this cannot be achieved exactly, it may get rid of the offending characters or fall back on approximations. The library recognises or produces more than 300 different character sets and is able to convert files between almost any pair. Most RFC 1345 character sets, and all character sets from a pre-installed ‘iconv’ library, are supported. The ‘recode’ program is a handy front-end to the library. This manual documents Recode 3.7.15. * Menu: * Tutorial:: Quick Tutorial * Introduction:: Terminology and purpose * Invoking recode:: How to use this program * Library:: A recoding library * Universal:: The universal charset * iconv:: The ‘iconv’ library * Tabular:: Tabular sources (RFC 1345) * ASCII misc:: ASCII and some derivatives * IBM and MS:: Some IBM or Microsoft charsets * CDC:: Charsets for CDC machines * Micros:: Other micro-computer charsets * Miscellaneous:: Various other charsets * Surfaces:: All about surfaces * Internals:: Internal aspects * Concept Index:: Concept Index * Option Index:: Option Index * Library Index:: Library Index * Charset and Surface Index:: Charset and Surface Index -- The Detailed Node Listing -- Terminology and purpose * Charset overview:: Overview of charsets * Surface overview:: Overview of surfaces * Contributing:: Contributions and bug reports How to use this program * Synopsis:: Synopsis of ‘recode’ call * Requests:: The REQUEST parameter * Listings:: Asking for various lists * Recoding:: Controlling how files are recoded * Reversibility:: Reversibility issues * Sequencing:: Selecting sequencing methods * Mixed:: Using mixed charset input * Emacs:: Using Recode within Emacs * Debugging:: Debugging considerations A recoding library * Outer level:: Outer level functions * Request level:: Request level functions * Task level:: Task level functions * Charset level:: Charset level functions * Errors:: Handling errors The universal charset * UCS-2:: Universal Character Set, 2 bytes * UCS-4:: Universal Character Set, 4 bytes * UTF-7:: Universal Transformation Format, 7 bits * UTF-8:: Universal Transformation Format, 8 bits * UTF-16:: Universal Transformation Format, 16 bits * count-characters:: Frequency count of characters * dump-with-names:: Fully interpreted UCS dump ASCII and some derivatives * ASCII:: Usual ASCII * ISO 8859:: ASCII extended by Latin Alphabets * ASCII-BS:: ASCII 7-bits, ‘BS’ to overstrike * flat:: ASCII without diacritics nor underline Some IBM or Microsoft charsets * EBCDIC:: EBCDIC codes * IBM-PC:: IBM's PC code * Icon-QNX:: Unisys' Icon code Charsets for CDC machines * Display Code:: Control Data's Display Code * CDC-NOS:: ASCII 6/12 from NOS * Bang-Bang:: ASCII "bang bang" Other micro-computer charsets * Mac OS:: Apple's Macintosh code * AtariST:: Atari ST code Various other charsets * HTML:: World Wide Web representations * LaTeX:: LaTeX macro calls * BibTeX:: BibTeX macro calls * Texinfo:: GNU project documentation files * ISO 5426 and ANSEL:: Bibliographic character sets * Vietnamese:: Vietnamese charsets * African:: African charsets * Others:: Cyrillic and other charsets * Java:: Java code * Texte:: Easy French conventions * Mule:: Mule as a multiplexed charset All about surfaces * Permutations:: Permuting groups of bytes * End lines:: Representation for end of lines * MIME:: MIME contents encodings * Dump:: Interpreted character dumps * Test:: Artificial data for testing Internal aspects * Main flow:: Overall organisation * New charsets:: Adding new charsets * New surfaces:: Adding new surfaces * Design:: Comments on the library design  File: recode.info, Node: Tutorial, Next: Introduction, Prev: Top, Up: Top 1 Quick Tutorial **************** So, really, you just are in a hurry to use Recode, and do not feel like studying this manual? Even reading this paragraph slows you down? We might have a problem, as you will have to do some guess work, and might not become very proficient unless you have a very solid intuition.... Let me use here, as a quick tutorial, an actual reply of mine to a Recode user, who writes: My situation is this--I occasionally get email with special characters in it. Sometimes this mail is from a user using IBM software and sometimes it is a user using Mac software. I myself am on a SPARC Solaris machine. Your situation is similar to mine, except that I _often_ receive email needing recoding, that is, much more than _occasionally_! The usual recodings I do are Mac to Latin-1, IBM page codes to Latin-1, Easy-French to Latin-1, remove Quoted-Printable, remove Base64. These are so frequent that I made myself a few two-keystroke Emacs commands to filter the Emacs region. This is very convenient for me. I also resort to many other email conversions, yet more rarely than the frequent cases above. It _seems_ like this should be doable using Recode. However, when I try something like ‘recode mac macfile.txt’ I get nothing out--no error, no output, nothing. *Note:* For the following discussion to be true, you should have something like ‘export LANG=fr_FR.ISO-8859-1’ in your environment, the important bit here being the specification of an preferred charset. Presuming you are using some recent version of Recode, the command: recode mac macfile.txt is a request for recoding ‘macfile.txt’ over itself, overwriting the original, from Macintosh usual character code and Macintosh end of lines, to Latin-1 and Unix end of lines. This is overwrite mode. If you want to use Recode as a filter, which is probably what you need, rather do: recode mac and give your Macintosh file as standard input, you'll get the Latin-1 file on standard output. The above command is an abbreviation for any of: recode mac.. recode mac..l1 recode mac..Latin-1 recode mac/CR..Latin-1/ recode Macintosh..ISO_8859-1 recode Macintosh/CR..ISO_8859-1/ That is, a ‘CR’ surface, encoding newlines with ASCII , is first to be removed (this is a default surface for ‘mac’), then the Macintosh charset is converted to Latin-1 and no surface is added to the result (there is no default surface for ‘l1’). If you want ‘mac’ code converted, but you know that newlines are already coded the Unix way, just do: recode mac/ the slash then overriding the default surface with empty, that is, none. Here are other easy recipes: recode pc to filter IBM-PC code and CR-LF (default) to Latin-1 recode pc/ to filter IBM-PC code to Latin-1 recode 850 to filter code page 850 and CR-LF (default) to Latin-1 recode 850/ to filter code page 850 to Latin-1 recode /qp to remove quoted printable The last one is indeed equivalent to any of: recode /qp.. recode l1/qp..l1/ recode ISO_8859-1/Quoted-Printable..ISO_8859-1/ Here are some reverse recipes: recode ..mac to filter Latin-1 to Macintosh code and CR (default) recode ..mac/ to filter Latin-1 to Macintosh code recode ..pc to filter Latin-1 to IBM-PC code and CR-LF (default) recode ..pc/ to filter Latin-1 to IBM-PC code recode ..850 to filter Latin-1 to code page 850 and CR-LF (default) recode ..850/ to filter Latin-1 to code page 850 recode ../qp to force quoted printable In all the above calls, replace ‘recode’ by ‘recode -f’ if you want to proceed despite recoding errors. If you do not use ‘-f’ and there is an error, the recoding output will be interrupted after first error in filter mode, or the file will not be replaced by a recoded copy in overwrite mode. You may use ‘recode -l’ to get a list of available charsets and surfaces, and ‘recode --help’ to get a quick summary of options. The above output is meant for those having already read this manual, so let me dare a suggestion: why could not you find a few more minutes in your schedule to peek further down, right into the following chapters!  File: recode.info, Node: Introduction, Next: Invoking recode, Prev: Tutorial, Up: Top 2 Terminology and purpose ************************* A few terms are used over and over in this manual, our wise reader will learn their meaning right away. Both ISO (International Organization for Standardisation) and IETF (Internet Engineering Task Force) have their own terminology, this document does not try to stick to either one in a strict way, while it does not want to throw more confusion in the field. On the other hand, it would not be efficient using paraphrases all the time, so Recode coins a few short words, which are explained below. A “charsetâ€, in the context of Recode, is a particular association between computer codes on one side, and a repertoire of intended characters on the other side. Codes are usually taken from a set of consecutive small integers, starting at 0. Some characters have a graphical appearance (glyph) or displayable effect, others have special uses like, for example, to control devices or to interact with neighbouring codes to specify them more precisely. So, a _charset_ is roughly one of those tables, giving a meaning to each of the codes from the set of allowable values. MIME also uses the term charset with approximately the same meaning. It does _not_ exactly corresponds to what ISO calls a “coded character setâ€, that is, a set of characters with an encoding for them. An coded character set does not necessarily use all available code positions, while a MIME charset usually tries to specify them all. A MIME charset might be the union of a few disjoint coded character sets. A “surface†is a term used in Recode only, and is a short for surface transformation of a charset stream. This is any kind of mapping, usually reversible, which associates physical bits in some medium for a stream of characters taken from one or more charsets (usually one). A surface is a kind of varnish added over a charset so it fits in actual bits and bytes. How end of lines are exactly encoded is not really pertinent to the charset, and so, there is surface for end of lines. ‘Base64’ is also a surface, as we may encode any charset in it. Other examples would ‘DES’ enciphering, or ‘gzip’ compression (even if Recode does not offer them currently): these are ways to give a real life to theoretical charsets. The “trivial†surface consists into putting characters into fixed width little chunks of bits, usually eight such bits per character. But things are not always that simple. This Recode library, and the program by that name, have the purpose of converting files between various charsets and surfaces. When this cannot be done in exact ways, as it is often the case, the program may get rid of the offending characters or fall back on approximations. This library recognises or produces around 175 such charsets under 500 names, and handle a dozen surfaces. Since it can convert each charset to almost any other one, many thousands of different conversions are possible. The Recode program and library do not usually know how to split and sort out textual and non-textual information which may be mixed in a single input file. For example, there is no surface which currently addresses the problem of how lines are blocked into physical records, when the blocking information is added as binary markers or counters within files. So, Recode should be given textual streams which are rather _pure_. This tool pays special attention to superimposition of diacritics for some French representations. This orientation is mostly historical, it does not impair the usefulness, generality or extensibility of the program. ‘recode’ is both a French and English word. For those who pay attention to those things, the proper pronunciation is French (that is, ‘racud’, with ‘a’ like in ‘above’, and ‘u’ like in ‘cut’). The Recode program and library has been written by François Pinard. With time, it got to reuse works from other contributors, and notably, those of Keld Simonsen and Bruno Haible. * Menu: * Charset overview:: Overview of charsets * Surface overview:: Overview of surfaces * Contributing:: Contributions and bug reports  File: recode.info, Node: Charset overview, Next: Surface overview, Prev: Introduction, Up: Introduction 2.1 Overview of charsets ======================== Recoding is currently possible between many charsets, the bulk of which is described by RFC 1345 tables or available in a pre-installed external ‘iconv’ library. *Note Tabular::, and *note iconv::(1). The Recode library also handles some charsets in some specialised ways. These are: • 6-bit charsets based on CDC display code: 6/12 code from NOS; bang-bang code from Université de Montréal; • 7-bit ASCII: without any diacritics, or else: using backspace for overstriking; Unisys' Icon convention; TeX/LaTeX coding; easy French conventions for electronic mail; • 8-bit extensions to ASCII: ISO Latin-1, Atari ST code, IBM's code for the PC, Apple's code for the Macintosh, ISO 5426 and ANSEL library codes; • 8-bit non-ASCII codes: three flavours of EBCDIC; • 16-bit or 31-bit universal characters, and their transfer encodings. The introduction of RFC 1345 in Recode has brought with it a few charsets having the functionality of older ones, but yet being different in subtle ways. The effects have not been fully investigated yet, so for now, clashes are avoided, the old and new charsets are kept well separate. Conversion is possible between almost any pair of charsets. Here is a list of the exceptions. One may not recode _from_ the ‘flat’, ‘count-characters’ or ‘dump-with-names’ charsets, nor _from_ or _to_ the ‘data’ or ‘:iconv:’ charsets. Also, if we except the ‘data’ pseudo-charset, charsets and surfaces live in disjoint recoding spaces, one cannot really transform a surface into a charset or vice-versa, as surfaces are only meant to be applied over charsets, or removed from them. ---------- Footnotes ---------- (1) Because ‘iconv’ can vary from system to system, and is itself a complex tool, it can cause recode to behave in unexpected ways. Therefore, by default it is only used when a conversion would not be possible without it. To request that ‘iconv’ be used, use ‘--prefer-iconv’; see *Note prefer-iconv::. Conversely, you can disable it with the ‘-x:’ option; see *Note disable-iconv::.  File: recode.info, Node: Surface overview, Next: Contributing, Prev: Charset overview, Up: Introduction 2.2 Overview of surfaces ======================== For various practical considerations, it sometimes happens that the codes making up a text, written in a particular charset, cannot simply be put out in a file one after another without creating problems or breaking other things. Sometimes, 8-bit codes cannot be written on a 7-bit medium, variable length codes need kind of envelopes, newlines require special treatment, etc. We sometimes have to apply “surfaces†to a stream of codes, which surfaces are kind of tricks used to fit the charset into those practical constraints. Moreover, similar surfaces or tricks may be useful for many unrelated charsets, and many surfaces can be used at once over a single charset. So, Recode has machinery to describe a combination of a charset with surfaces used over it in a file. We would use the expression “pure charset†for referring to a charset free of any surface, that is, the conceptual association between integer codes and character intents. It is not always clear if some transformation will yield a charset or a surface, especially for those transformations which are only meaningful over a single charset. The Recode library is not overly picky as identifying surfaces as such: when it is practical to consider a specialised surface as if it were a charset, this is preferred, and done.  File: recode.info, Node: Contributing, Prev: Surface overview, Up: Introduction 2.3 Contributions and bug reports ================================= Even being the Recode author and current maintainer, I am no specialist in charset standards. I only made Recode along the years to solve my own needs, but felt it was applicable for the needs of others. Some FSF people liked the program structure and suggested to make it more widely available. I often rely on Recode users suggestions to decide what is best to be done next. Properly protecting Recode about possible copyright fights is a pain for me and for contributors, but we cannot avoid addressing the issue in the long run. Besides, the Free Software Foundation, which mandates the GNU project, is very sensible to this matter. GNU standards suggest that we stay cautious before looking at copyrighted code. The safest and simplest way for me is to gather ideas and reprogram them anew, even if this might slow me down considerably. For contributions going beyond a few lines of code here and there, the FSF definitely requires employer disclaimers and copyright assignments in writing. When you contribute something to Recode, _please_ explain what it is about. Do not take for granted that I know those charsets which are familiar to you. Once again, I'm no expert, and you have to help me. Your explanations could well find their way into this documentation, too. Also, for contributing new charsets or new surfaces, as much as possible, please provide good, solid, verifiable references for the tables you used(1). Many users contributed to Recode already, I am grateful to them for their interest and involvement. Some suggestions can be integrated quickly while some others have to be delayed, I have to draw a line somewhere when time comes to make a new release, about what would go in it and what would go in the next. Please report suggestions, documentation errors and bugs at . Do not be afraid to report details, because this program is the mere aggregation of hundreds of details. ---------- Footnotes ---------- (1) I'm not prone to accept a charset you just invented, and which nobody uses yet: convince your friends and community first!  File: recode.info, Node: Invoking recode, Next: Library, Prev: Introduction, Up: Top 3 How to use this program ************************* With the synopsis of the ‘recode’ call, we stress the difference between using this program as a file filter, or recoding many files at once. The first parameter of any call states the recoding request, and this deserves a section on its own. Options are then presented, but somewhat grouped according to the related functionalities they control. * Menu: * Synopsis:: Synopsis of ‘recode’ call * Requests:: The REQUEST parameter * Listings:: Asking for various lists * Recoding:: Controlling how files are recoded * Reversibility:: Reversibility issues * Sequencing:: Selecting sequencing methods * Mixed:: Using mixed charset input * Emacs:: Using Recode within Emacs * Debugging:: Debugging considerations  File: recode.info, Node: Synopsis, Next: Requests, Prev: Invoking recode, Up: Invoking recode 3.1 Synopsis of ‘recode’ call ============================= The general format of the program call is one of: recode [OPTION]... [CHARSET | REQUEST [FILE]... ] Some calls are used only to obtain lists produced by Recode itself, without actually recoding any file. They are recognised through the usage of listing options, and these options decide what meaning should be given to an optional CHARSET parameter. *Note Listings::. In other calls, the first parameter (REQUEST) always explains which transformations are expected on the files. There are many variations to the aspect of this parameter. We will discuss more complex situations later (*note Requests::), but for many simple cases, this parameter merely looks like this(1): BEFORE..AFTER where BEFORE and AFTER each gives the name of a charset. Each FILE will be read assuming it is coded with charset BEFORE, it will be recoded over itself so to use the charset AFTER. If there is no FILE on the ‘recode’ command, the program rather acts as a Unix filter and transforms standard input onto standard output. The capability of recoding many files at once is very convenient. For example, one could easily prepare a distribution from Latin-1 to MSDOS, this way: mkdir package cp -p Makefile *.[ch] package recode Latin-1..MSDOS package/* zoo ah package.zoo package/* rm -rf package (In this example, the non-mandatory ‘-p’ option to ‘cp’ is for preserving timestamps, and the ‘zoo’ program is an archiver from Rahul Dhesi which once was quite popular.) The filter operation is especially useful when the input files should not be altered. Let us make an example to illustrate this point. Suppose that someone has a file named ‘datum.txt’, which is almost a TeX file, except that diacriticised characters are written using Latin-1. To complete the recoding of the diacriticised characters _only_ and produce a file ‘datum.tex’, without destroying the original, one could do: cp -p datum.txt datum.tex recode -d l1..tex datum.tex However, using ‘recode’ as a filter will achieve the same goal more neatly: recode -d l1..tex datum.tex This example also shows that ‘l1’ could be used instead of ‘Latin-1’; charset names often have such aliases. Recode has three modes are for when to set the exit status to non-zero: • The most lenient setting is activated with option ‘-f’, in which case only system errors or library mis-usage causes the exit status to be set. • By default, without ‘-f’ nor ‘-s’, Recode sets the exit status as above, and also in case of invalid or untranslatable input. It also tries (but not always succeed) to detect if output is going to be ambiguous at some later recode-back time. • The stricter setting is activated with ‘-s’, Recode then sets the exit status as above, or if input is not canonically coded (and it also prevents itself from _completing_ recoding tables for making the recoding reversible). ---------- Footnotes ---------- (1) In previous versions of Recode, a single colon ‘:’ was used instead of the two dots ‘..’ for separating charsets, but this created problems, because colons are allowed in official charset names.  File: recode.info, Node: Requests, Next: Listings, Prev: Synopsis, Up: Invoking recode 3.2 The REQUEST parameter ========================= In the case where the REQUEST is merely written as BEFORE..AFTER, then BEFORE and AFTER specify the start charset and the goal charset for the recoding. For Recode, charset names may contain any character, besides a comma, a forward slash, or two periods in a row. But in practice, charset names are currently limited to alphabetic letters (upper or lower case), digits, hyphens, underlines, periods, colons or round parentheses. The complete syntax for a valid REQUEST allows for unusual things, which might be surprising at first. (Do not pay too much attention to these facilities on first reading.) For example, REQUEST may also contain intermediate charsets, like in the following example: BEFORE..INTERIM1..INTERIM2..AFTER meaning that Recode should internally produce the INTERIM1 charset from the start charset, then work out of this INTERIM1 charset to internally produce INTERIM2, and from there towards the goal charset. In fact, Recode internally combines recipes and automatically uses interim charsets, when there is no direct recipe for transforming BEFORE into AFTER. But there might be many ways to do it. When many routes are possible, the above “chaining†syntax may be used to more precisely force the program towards a particular route, which it might not have naturally selected otherwise. On the other hand, because Recode tries to choose good routes, chaining is only needed to achieve some rare, unusual effects. Moreover, many such requests (sub-requests, more precisely) may be separated with commas (but no spaces at all), indicating a sequence of recodings, where the output of one has to serve as the input of the following one. For example, the two following requests are equivalent: BEFORE..INTERIM1..INTERIM2..AFTER BEFORE..INTERIM1,INTERIM1..INTERIM2,INTERIM2..AFTER In this example, the charset input for any recoding sub-request is identical to the charset output by the preceding sub-request. But it does not have to be so in the general case. One might wonder what would be the meaning of declaring the charset input for a recoding sub-request of being of different nature than the charset output by a preceding sub-request, when recodings are chained in this way. Such a strange usage might have a meaning and be useful for the Recode expert, but they are quite uncommon in practice. More useful is the distinction between the concept of charset, and the concept of surfaces. An encoded charset is represented by: PURE-CHARSET/SURFACE1/SURFACE2... using slashes to introduce surfaces, if any. The order of application of surfaces is usually important, they cannot be freely commuted. In the given example, SURFACE1 is first applied over the PURE-CHARSET, then SURFACE2 is applied over the result. Given this request: BEFORE/SURFACE1/SURFACE2..AFTER/SURFACE3 Recode will understand that the input files should have SURFACE2 removed first (because it was applied last), then SURFACE1 should be removed. The next step will be to translate the codes from charset BEFORE to charset AFTER, prior to applying SURFACE3 over the result. Some charsets have one or more _implied_ surfaces. In this case, the implied surfaces are automatically handled merely by naming the charset, without any explicit surface to qualify it. Let's take an example to illustrate this feature. The request ‘pc..l1’ will indeed decode MS-DOS end of lines prior to converting IBM-PC codes to Latin-1, because ‘pc’ is the name of a charset(1) which has ‘CR-LF’ for its usual surface. The request ‘pc/..l1’ will _not_ decode end of lines, since the slash introduces surfaces, and even if the surface list is empty, it effectively defeats the automatic removal of surfaces for this charset. So, empty surfaces are useful, indeed! Both charsets and surfaces may have predefined alternate names, or aliases. However, and this is rather important to understand, implied surfaces are attached to individual aliases rather than on genuine charsets. Consequently, the official charset name and all of its aliases do not necessarily share the same implied surfaces. The charset and all its aliases may each have its own different set of implied surfaces. Charset names, surface names, or their aliases may always be abbreviated to any unambiguous prefix. Internally in Recode, disambiguating tables are kept separate for charset names and surface names. While recognising a charset name or a surface name (or aliases thereof), Recode ignores all characters besides letters and digits, so for example, the hyphens and underlines being part of an official charset name may safely be omitted (no need to un-confuse them!). There is also no distinction between upper and lower case for charset or surface names. One of the BEFORE or AFTER keywords may be omitted. If the double dot separator is omitted too, then the charset is interpreted as the BEFORE charset.(2) When a charset name is omitted or left empty, the value of the ‘DEFAULT_CHARSET’ variable in the environment is used instead. If this variable is not defined, the Recode library uses the current locale's encoding. On POSIX systems, this depends on the first non-empty value among the environment variables ‘LC_ALL’, ‘LC_CTYPE’, and ‘LANG’, and can be determined through the command ‘locale charmap’. If the current locale's encoding may not be resolved, then Recode presumes ‘ASCII’. If the charset name is omitted but followed by surfaces, the surfaces then qualify the usual or default charset. For example, the request ‘../x’ is sufficient for applying an hexadecimal surface to the input text(3). The allowable values for BEFORE or AFTER charsets, and various surfaces, are described in the remainder of this document. ---------- Footnotes ---------- (1) More precisely, ‘pc’ is an alias for the charset ‘IBM-PC’. (2) Both BEFORE and AFTER may be omitted, in which case the double dot separator is mandatory. This is not very useful, as the recoding reduces to a mere copy in that case. (3) MS-DOS is one of those systems for which the default charset has implied surfaces, ‘CR-LF’ here. Such surfaces are automatically removed or applied whenever the default charset is read or written, exactly as it would go for any other charset. In the example above, on such systems, the hexadecimal surface would then _replace_ the implied surfaces. For _adding_ an hexadecimal surface without removing any, one should write the request as ‘/../x’.  File: recode.info, Node: Listings, Next: Recoding, Prev: Requests, Up: Invoking recode 3.3 Asking for various lists ============================ Many options control listing output generated by Recode itself, they are not meant to accompany actual file recodings. These options are: ‘--version’ The program merely prints its version numbers on standard output, and exits without doing anything else. ‘--help’ The program merely prints a page of help on standard output, and exits without doing any recoding. ‘-C’ ‘--copyright’ Given this option, all other parameters and options are ignored. The program prints briefly the copyright and copying conditions. See the file ‘COPYING’ in the distribution for full statement of the Copyright and copying conditions. ‘-h[LANGUAGE/][NAME]’ ‘--header[=[LANGUAGE/][NAME]]’ Instead of recoding files, Recode writes a LANGUAGE source file on standard output and exits. This source is meant to be included in a regular program written in the same programming LANGUAGE: its purpose is to declare and initialise an array, named NAME, which represents the requested recoding. The only acceptable values for LANGUAGE are ‘c’ or ‘perl’, and may may be abbreviated. If LANGUAGE is not specified, ‘c’ is assumed. If NAME is not specified, then it defaults to ‘BEFORE_AFTER’. Strings BEFORE and AFTER are cleaned before being used according to the syntax of LANGUAGE. Even if Recode tries its best, this option does not always succeed in producing the requested source table, it then prints ‘Recoding is too complex for a mere table’. It will succeed however, provided the recoding can be internally represented by only one step after the optimisation phase, and if this merged step conveys a one-to-one or a one-to-many explicit table. To increase the probability that this happens, ‘iconv’ initialisation is currently inhibited whenever this option is used. Also, when attempting to produce sources tables, Recode relaxes its checking a tiny bit: it ignores the algorithmic part of some tabular recodings, it also avoids the processing of implied surfaces. But this is all fairly technical. Better try and see! Most tables are produced using decimal numbers to refer to character values(1). Yet, users who know all Recode tricks and stunts could indeed force octal or hexadecimal output for the table contents. For example: recode ibm297/test8..cp1252/x < /dev/null produces a sequence of hexadecimal values which represent a conversion table from ‘IBM297’ to ‘CP1252’. Beware that other options might affect the produced source tables, these are: ‘-d’, ‘-g’ and, particularly, ‘-s’. ‘-k PAIRS’ ‘--known=PAIRS’ This particular option is meant to help identifying an unknown charset, using as hints some already identified characters of the charset. Some examples will help introducing the idea. Let's presume here that Recode is run in a UTF-8 locale, and that ‘DEFAULT_CHARSET’ is unset in the environment. Suppose you have guessed that code 130 (decimal) of the unknown charset represents a lower case ‘e’ with an acute accent. That is to say that this code should map to code 233 (decimal) in the usual charset. By executing: recode -k 130:233 you should obtain a listing similar to: AtariST CWI cp-hu CWI-2 IBM437/CR-LF 437/CR-LF CP437/CR-LF IBM850/CR-LF 850/CR-LF CP850/CR-LF IBM851/CR-LF 851/CR-LF CP851/CR-LF IBM852/CR-LF 852/CR-LF CP852/CR-LF pcl2 pclatin2 IBM857/CR-LF 857/CR-LF CP857/CR-LF IBM860/CR-LF 860/CR-LF CP860/CR-LF IBM861/CR-LF 861/CR-LF CP861/CR-LF cp-is IBM863/CR-LF 863/CR-LF CP863/CR-LF IBM865/CR-LF 865/CR-LF CP865/CR-LF You can give more than one clue at once, to restrict the list further. Suppose you have _also_ guessed that code 211 of the unknown charset represents an upper case ‘E’ with diaeresis, that is, code 203 in the usual charset. By requesting: recode -k 130:233,211:203 you should obtain: IBM850/CR-LF 850/CR-LF CP850/CR-LF IBM852/CR-LF 852/CR-LF CP852/CR-LF pcl2 pclatin2 IBM857/CR-LF 857/CR-LF CP857/CR-LF The usual charset may be overridden by specifying one non-option argument. For example, to request the list of charsets for which code 130 maps to code 142 for the Macintosh, you may ask: recode -k 130:142 mac and get: AtariST CWI cp-hu CWI-2 IBM437/CR-LF 437/CR-LF CP437/CR-LF IBM850/CR-LF 850/CR-LF CP850/CR-LF IBM851/CR-LF 851/CR-LF CP851/CR-LF IBM852/CR-LF 852/CR-LF CP852/CR-LF pcl2 pclatin2 IBM857/CR-LF 857/CR-LF CP857/CR-LF IBM860/CR-LF 860/CR-LF CP860/CR-LF IBM861/CR-LF 861/CR-LF CP861/CR-LF cp-is IBM863/CR-LF 863/CR-LF CP863/CR-LF IBM865/CR-LF 865/CR-LF CP865/CR-LF which, of course, is identical to the result of the first example, since the code 142 for the Macintosh is a small ‘e’ with acute. More formally, option ‘-k’ lists all possible _before_ charsets for the _after_ charset given as the sole non-option argument to ‘recode’, but subject to restrictions given in PAIRS. If there is no non-option argument, the _after_ charset is taken to be the default charset for this ‘recode’. The restrictions are given as a comma separated list of pairs, each pair consisting of two numbers separated by a colon. The numbers are taken as decimal when the initial digit is between ‘1’ and ‘9’; ‘0x’ starts an hexadecimal number, or else ‘0’ starts an octal number. The first number is a code in any _before_ charset, while the second number is a code in the specified _after_ charset. If the first number would not be transformed into the second number by recoding from some _before_ charset to the _after_ charset, then this _before_ charset is rejected. A _before_ charset is listed only if it is not rejected by any pair. The program will only test those _before_ charsets having a tabular style internal description (*note Tabular::), so should be the selected _after_ charset. The produced list is in fact a subset of the list produced by the option ‘-l’. As for option ‘-l’, the non-option argument is interpreted as a charset name, possibly abbreviated to any non ambiguous prefix. ‘-l[FORMAT]’ ‘--list[=FORMAT]’ This option asks for information about all charsets, or about one particular charset. No file will be recoded. If there is no non-option arguments, Recode ignores the FORMAT value of the option, it writes a sorted list of charset names on standard output, one per line. When a charset name have aliases or synonyms, they follow the true charset name on its line, sorted from left to right. Each charset or alias is followed by its implied surfaces, if any. This list is over two hundred lines. It is best used with ‘grep -i’, as in: recode -l | grep -i greek Within a collection of names for a single charset, the Recode library distinguishes one of them as being the genuine charset name, while the others are said to be aliases. The list normally integrates all charsets from the external ‘iconv’ library, unless this is defeated through options like ‘--ignore=:iconv:’ or ‘-x:’. The portable ‘libiconv’ library relates its own aliases of a same charset, and for a given set of aliases, if none of them are known to Recode already, then Recode will pick one as being the genuine charset. The ‘iconv’ library within GNU ‘libc’ makes all aliases appear as different charsets, and each will be presented as a charset by Recode, unless it is known otherwise. There might be one non-option argument, in which case it is interpreted as a charset name, possibly abbreviated to any non ambiguous prefix. This particular usage of the ‘-l’ option is obeyed _only_ for charsets having a tabular style internal description (*note Tabular::). Even if most charsets have this property, some do not, and the option ‘-l’ cannot be used to detail these particular charsets. For knowing if a particular charset can be listed this way, you should merely try and see if this works. The FORMAT value of the option is a keyword from the following list. Keywords may be abbreviated by dropping suffix letters, and even reduced to the first letter only: ‘decimal’ This format asks for the production on standard output of a concise tabular display of the charset, in which character code values are expressed in decimal. ‘octal’ This format uses octal instead of decimal in the concise tabular display of the charset. ‘hexadecimal’ This format uses hexadecimal instead of decimal in the concise tabular display of the charset. ‘full’ This format requests an extensive display of the charset on standard output, using one line per character showing its decimal, hexadecimal, octal and ‘UCS-2’ code values, and also a descriptive comment which should be the 10646 name for the character. The descriptive comment is given in English and ASCII, yet if the English description is not available but a French one is, then the French description is given instead, using Latin-1. However, if the ‘LC_MESSAGES’ environment variable begins with the letters ‘fr’, then listing preference goes to French when both descriptions are available. When option ‘-l’ is used together with a CHARSET argument, the FORMAT defaults to ‘decimal’. ‘-T’ ‘--find-subsets’ This option is a maintainer tool for evaluating the redundancy of those charsets, in Recode, which are internally represented by an ‘UCS-2’ data table. After the listing has been produced, the program exits without doing any recoding. The output is meant to be sorted, like this: ‘recode -T | sort’. The option triggers Recode into comparing all pairs of charsets, seeking those which are subsets of others. The concept and results are better explained through a few examples. Consider these three sample lines from ‘-T’ output: [ 0] IBM891 == IBM903 [ 1] IBM1004 < CP1252 [ 12] INVARIANT < CSA_Z243.4-1985-1 The first line means that ‘IBM891’ and ‘IBM903’ are completely identical as far as Recode is concerned, so one is fully redundant to the other. The second line says that ‘IBM1004’ is wholly contained within ‘CP1252’, yet there is a single character which is in ‘CP1252’ without being in ‘IBM1004’. The third line says that ‘INVARIANT’ is wholly contained within ‘CSA_Z243.4-1985-1’, but twelve characters are in ‘CSA_Z243.4-1985-1’ without being in ‘INVARIANT’. The whole output might most probably be reduced and made more significant through a transitivity study. ---------- Footnotes ---------- (1) The author of Recode by far prefer expressing numbers in decimal than octal or hexadecimal, as he considers that the current state of technology should not force users anymore in such strange things. But Unicode people see things differently, to the point Recode cannot escape being tainted with some hexadecimal.  File: recode.info, Node: Recoding, Next: Reversibility, Prev: Listings, Up: Invoking recode 3.4 Controlling how files are recoded ===================================== The following options have the purpose of giving the user some fine grain control over the recoding operation themselves. ‘-c’ ‘--colons’ With ‘Texte’ Easy French conventions, use the column ‘:’ instead of the double-quote ‘"’ for marking diaeresis. *Note Texte::. ‘-g’ ‘--graphics’ This option is only meaningful while getting _out_ of the ‘IBM-PC’ charset. In this charset, characters 176 to 223 are used for constructing rulers and boxes, using simple or double horizontal or vertical lines. This option forces the automatic selection of ASCII characters for approximating these rulers and boxes, at cost of making the transformation irreversible. Option ‘-g’ implies ‘-f’. ‘-t’ ‘--touch’ The _touch_ option is meaningful only when files are recoded over themselves. Without it, the time-stamps associated with files are preserved, to reflect the fact that changing the code of a file does not really alter its informational contents. When the user wants the recoded files to be time-stamped at the recoding time, this option inhibits the automatic protection of the time-stamps. ‘-v’ ‘--verbose’ Before doing any recoding, the program will first print on the ‘stderr’ stream the list of all intermediate charsets planned for recoding, starting with the BEFORE charset and ending with the AFTER charset. It also prints an indication of the recoding quality, as one of the word ‘reversible’, ‘one to one’, ‘one to many’, ‘many to one’ or ‘many to many’. This information will appear once or twice. It is shown a second time only when the optimisation and step merging phase succeeds in replacing many single steps by a new one. This option also has a second effect. The program will print on ‘stderr’ one message per recoded FILE, so as to keep the user informed of the progress of its command. An easy way to know beforehand the sequence or quality of a recoding is by using the command such as: recode -v BEFORE..AFTER < /dev/null using the fact that, in Recode, an empty input file produces an empty output file. ‘-x CHARSET’ ‘--ignore=CHARSET’ This option tells the program to ignore any recoding path through the specified CHARSET, so disabling any single step using this charset as a start or end point. This may be used when the user wants to force Recode into using an alternate recoding path (yet using chained requests offers a finer control, *note Requests::). CHARSET may be abbreviated to any unambiguous prefix.  File: recode.info, Node: Reversibility, Next: Sequencing, Prev: Recoding, Up: Invoking recode 3.5 Reversibility issues ======================== The following options are somewhat related to reversibility issues: ‘-f’ ‘--force’ With this option, irreversible or otherwise erroneous recodings are run to completion, and ‘recode’ does not exit with a non-zero status if it would be only because irreversibility matters. *Note Reversibility::. Without this option, Recode tries to protect you against recoding a file irreversibly over itself(1). Whenever an irreversible recoding is met, or any other recoding error, ‘recode’ produces a warning on standard error. The current input file does not get replaced by its recoded version, and ‘recode’ then proceeds with the recoding of the next file. When the program is merely used as a filter, standard output will have received a partially recoded copy of standard input, up to the first error point. After all recodings have been done or attempted, and if some recoding has been aborted, ‘recode’ exits with a non-zero status. ‘-q’ ‘--quiet’ ‘--silent’ This option has the sole purpose of inhibiting warning messages about irreversible recodings, and other such diagnostics. It has no other effect, in particular, it does _not_ prevent recodings to be aborted or ‘recode’ to return a non-zero exit status when irreversible recodings are met. This option is set automatically for the children processes, when recode splits itself in many collaborating copies. Doing so, the diagnostic is issued only once by the parent. See option ‘-p’. ‘-s’ ‘--strict’ By using this option, the user requests that Recode be very strict while recoding a file, merely losing in the transformation any character which is not explicitly mapped from a charset to another. Such a loss is not reversible and so, will bring Recode to fail, unless the option ‘-f’ is also given as a kind of counter-measure. Using ‘-s’ without ‘-f’ might render Recode very susceptible to the slighest file abnormalities. Despite the fact that it might be irritating to some users, such paranoia is sometimes wanted and useful. Even if Recode tries hard to keep the recodings reversible, you should not develop an unconditional confidence in its ability to do so. You _ought_ to keep only reasonable expectations about reverse recodings. In particular, consider: • Most transformations are fully reversible for all inputs, but lose this property whenever ‘-s’ is specified. • A few transformations are not meant to be reversible, by design. • Reversibility sometimes depends on actual file contents and cannot be ascertained beforehand, without reading the file. • Reversibility is never absolute across successive versions of this program. Even correcting a small bug in a mapping could induce slight discrepancies later. • Reversibility is easily lost by merging. This is best explained through an example. If you reversibly recode a file from charset A to charset B, then you reversibly recode the result from charset B to charset C, you cannot expect to recover the original file by merely recoding from charset C directly to charset A. You will instead have to recode from charset C back to charset B, and only then from charset B to charset A. • Faulty files create a particular problem. Consider an example, recoding from ‘IBM-PC’ to ‘Latin-1’. End of lines are represented as ‘\r\n’ in ‘IBM-PC’ and as ‘\n’ in ‘Latin-1’. There is no way by which a faulty ‘IBM-PC’ file containing a ‘\n’ not preceded by ‘\r’ be translated into a ‘Latin-1’ file, and then back. • There is another difficulty arising from code equivalences. For example, in a ‘LaTeX’ charset file, the string ‘\^\i{}’ could be recoded back and forth through another charset and become ‘\^{\i}’. Even if the resulting file is equivalent to the original one, it is not identical. Unless option ‘-s’ is used, Recode automatically tries to fill mappings with invented correspondences, often making them fully reversible. This filling is not made at random. The algorithm tries to stick to the identity mapping and, when this is not possible, it prefers generating many small permutation cycles, each involving only a few codes. For example, here is how ‘IBM-PC’ code 186 gets translated to ‘control-U’ in ‘Latin-1’. ‘Control-U’ is 21. Code 21 is the ‘IBM-PC’ section sign, which is 167 in ‘Latin-1’. Recode cannot reciprocate 167 to 21, because 167 is the masculine ordinal indicator within ‘IBM-PC’, which is 186 in ‘Latin-1’. Code 186 within ‘IBM-PC’ has no ‘Latin-1’ equivalent; by assigning it back to 21, Recode closes this short permutation loop. As a consequence of this map filling, Recode may sometimes produce _funny_ characters. They may look annoying, they are nevertheless helpful when one changes his (her) mind and wants to revert to the prior recoding. If you cannot stand these, use option ‘-s’, which asks for a very strict recoding. This map filling sometimes has a few surprising consequences, which some users wrongly interpreted as bugs. Here are two examples. 1. In some cases, Recode seems to copy a file without recoding it. But in fact, it does. Consider a request: recode l1..us < File-Latin1 > File-ASCII cmp File-Latin1 File-ASCII then ‘cmp’ will not report any difference. This is quite normal. ‘Latin-1’ gets correctly recoded to ASCII for charsets commonalities (which are the first 128 characters, in this case). The remaining last 128 ‘Latin-1’ characters have no ASCII correspondent. Instead of losing them, Recode elects to map them to unspecified characters of ASCII, so making the recoding reversible. The simplest way of achieving this is merely to keep those last 128 characters unchanged. The overall effect is copying the file verbatim. If you feel this behaviour is too generous and if you do not wish to care about reversibility, simply use option ‘-s’. By doing so, Recode will strictly map only those ‘Latin-1’ characters which have an ASCII equivalent, and will merely drop those which do not. Then, there is more chance that you will observe a difference between the input and the output file. 2. Recoding the wrong way could sometimes give the false impression that recoding has _almost_ been done properly. Consider the requests: recode 437..l1 < File-Latin1 > Temp1 recode 437..l1 < Temp1 > Temp2 so declaring wrongly ‘File-Latin1’ to be an IBM-PC file, and recoding to ‘Latin-1’. This is surely ill defined and not meaningful. Yet, if you repeat this step a second time, you might notice that many (not all) characters in ‘Temp2’ are identical to those in ‘File-Latin1’. Sometimes, people try to discover how Recode works by experimenting a little at random, rather than reading and understanding the documentation; results such as this are surely confusing, as they provide those people with a false feeling that they understood something. Reversible codings have this property that, if applied several times in the same direction, they will eventually bring any character back to its original value. Since Recode seeks small permutation cycles when creating reversible codings, besides characters unchanged by the recoding, most permutation cycles will be of length 2, and fewer of length 3, etc. So, it is just expectable that applying the recoding twice in the same direction will recover most characters, but will fail to recover those participating in permutation cycles of length 3. On the other end, recoding six times in the same direction would recover all characters in cycles of length 1, 2, 3 or 6. ---------- Footnotes ---------- (1) There are still some cases of ambiguous output which are rather difficult to detect, and for which the protection is not active.  File: recode.info, Node: Sequencing, Next: Mixed, Prev: Reversibility, Up: Invoking recode 3.6 Selecting sequencing methods ================================ Recode can split itself into multiple parallel processes when it is discovered that many passes are needed to comply with the REQUEST. For example, suppose that four elementary steps were selected at recoding path optimisation time. Then Recode will split itself into four different interconnected tasks, logically equivalent to: STEP1 OUTPUT On systems where the pipes method is not available, the steps are performed in series. ‘--sequence=memory’ When the recoding requires a combination of two or more elementary recoding steps, this option forces many passes over the data, using in-memory buffers to hold all intermediate results. If this option is selected in filter mode, that is, when the program reads standard input and writes standard output, it might take longer for programs further down the pipe chain to start receiving some recoded data. ‘-p’ ‘--sequence=pipe’ When the recoding requires a combination of two or more elementary recoding steps, this option forces the program to fork itself into a few copies interconnected with pipes, using the ‘pipe(2)’ system call. All copies of the program operate in parallel. This is the default behaviour in filter mode. If this option is used when files are recoded over themselves, this should also save disk space because some temporary files might not be needed, at the cost of more system overhead. ‘-i’ ‘--sequence=files’ This option is accepted for backwards compatibility, and acts like ‘--sequence=memory’.  File: recode.info, Node: Mixed, Next: Emacs, Prev: Sequencing, Up: Invoking recode 3.7 Using mixed charset input ============================= In real life and practice, textual files are often made up of many charsets at once. Some parts of the file encode one charset, while other parts encode another charset, and so forth. Usually, a file does not toggle between more than two or three charsets. The means to distinguish which charsets are encoded at various places is not always available. Recode is able to handle only a few simple cases of mixed input. The default Recode behaviour is to expect pure charset files, to be recoded as other pure charset files. However, the following options allow for a few precise kinds of mixed charset files. ‘-d’ ‘--diacritics’ While converting to or from one of ‘HTML’, ‘LaTeX’ or ‘BibTeX’ charset, limit conversion to some subset of all characters. For ‘HTML’, limit conversion to the subset of all non-ASCII characters. For ‘LaTeX’ or ‘BibTeX’, limit conversion to the subset of all non-English letters. This is particularly useful, for example, when people create what would be valid ‘HTML’, TeX or LaTeX files, if only they were using provided sequences for applying diacritics instead of using the diacriticised characters directly from the underlying character set. While converting to ‘HTML’, ‘LaTeX’ or ‘BibTeX’ charset, this option assumes that characters not in the said subset are properly coded or protected already; Recode then transmits them literally. While converting the other way, this option prevents translating back coded or protected versions of characters not in the said subset. *Note HTML::. *Note LaTeX::. *Note BibTeX::. ‘-S[LANGUAGE]’ ‘--source[=LANGUAGE]’ The bulk of the input file is expected to be written in ‘ASCII’, except for parts, like comments and string constants, which are written using another charset than ‘ASCII’. When LANGUAGE is ‘c’, the recoding will proceed only with the contents of comments or strings, while everything else will be copied without recoding. When LANGUAGE is ‘po’, the recoding will proceed only within translator comments (those having whitespace immediately following the initial ‘#’) and with the contents of ‘msgstr’ strings. For the above things to work, the non-‘ASCII’ encoding of the comment or string should be such that an ‘ASCII’ scan will successfully find where the comment or string ends. Even if ‘ASCII’ is the usual charset for writing programs, some compilers are able to directly read other charsets, like ‘UTF-8’, say. There is currently no provision in Recode for reading mixed charset sources which are not based on ‘ASCII’. It is probable that the need for mixed recoding is not as pressing in such cases. For example, after one does: recode -Spo pc/..u8 < INPUT.po > OUTPUT.po file ‘OUTPUT.po’ holds a copy of ‘INPUT.po’ in which _only_ translator comments and the contents of ‘msgstr’ strings have been recoded from the ‘IBM-PC’ charset to pure ‘UTF-8’, without attempting conversion of end-of-lines. Machine generated comments and original ‘msgid’ strings are not to be touched by this recoding. If LANGUAGE is not specified, ‘c’ is assumed.  File: recode.info, Node: Emacs, Next: Debugging, Prev: Mixed, Up: Invoking recode 3.8 Using Recode within Emacs ============================= The fact the ‘recode’ program acts as a filter, when given no file arguments, makes it quite easy to use from within GNU Emacs. For example, recoding the whole buffer from the ‘IBM-PC’ charset to current charset (for example, ‘UTF-8’ on Unix) is easily done with: C-x h C-u M-| recode ibmpc RET ‘C-x h’ selects the whole buffer, and ‘C-u M-|’ filters and replaces the current region through the given shell command. Here is another example, binding the keys ‘C-c T’ to the recoding of the current region from Easy French to ‘Latin-1’ (on Unix) and the key ‘C-u C-c T’ from ‘Latin-1’ (on Unix) to Easy French: (global-set-key "\C-cT" 'recode-texte) (defun recode-texte (flag) (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "..txte" "txte")) t) (exchange-point-and-mark))  File: recode.info, Node: Debugging, Prev: Emacs, Up: Invoking recode 3.9 Debugging considerations ============================ It is our experience that when Recode does not provide satisfying results, either the ‘recode’ program was not called properly, correct results raised some doubts nevertheless, or files to recode were somewhat mangled. Genuine bugs are surely possible. Unless you already are a Recode expert, it might be a good idea to quickly revisit the tutorial (*note Tutorial::) or the prior sections in this chapter, to make sure that you properly formatted your recoding request. In the case you intended to use Recode as a filter, make sure that you did not forget to redirect your standard input (through using the ‘<’ symbol in the shell, say). Some Recode false mysteries are also easily explained, *Note Reversibility::. For the other cases, some investigation is needed. To illustrate how to proceed, let's presume that you want to recode the ‘nicepage’ file, coded ‘UTF-8’, into ‘HTML’. The problem is that the command ‘recode u8..h nicepage’ yields: recode: Invalid input in step `UTF-8..ISO-10646-UCS-2' One good trick is to use ‘recode’ in filter mode instead of in file replacement mode, *Note Synopsis::. Another good trick is to use the ‘-v’ option asking for a verbose description of the recoding steps. We could rewrite our recoding call as ‘recode -v u8..h temporary recode -v ISO_10646-UCS-2..HTML_4.0 ’, then Recode might have done a bit more that you wanted. In this case, your input file was half-‘UTF-8’, half-‘HTML’ already, that is, a mixed file (*note Mixed::). There is a special ‘-d’ switch for this case. So, your might be end up calling ‘recode -fd nicepage’. Until you are quite sure that you accept overwriting your input file whatever what, I recommend that you stick with filter mode. If, after such experiments, you seriously think that Recode does not behave properly, there might be a genuine bug either in the program or the library itself, in which case I invite you to to contribute a bug report, *Note Contributing::.  File: recode.info, Node: Library, Next: Universal, Prev: Invoking recode, Up: Top 4 A recoding library ******************** The program named ‘recode’ is just an application of its recoding library. The recoding library is available separately for other C programs. A good way to acquire some familiarity with the recoding library is to get acquainted with the ‘recode’ program itself. To use the recoding library once it is installed, a C program needs to have the following lines: #include #include #include const char *program_name; near its beginning, and the user should have ‘-lrecode’ on the linking call, so modules from the recoding library are found. The library contains four identifiable sets of routines: the outer level functions, the request level functions, the task level functions and the charset level functions. There are discussed in separate sections. For effectively using the recoding library in most applications, it should be rarely needed to study anything beyond the main initialisation function at outer level, and then, various functions at request level. * Menu: * Outer level:: Outer level functions * Request level:: Request level functions * Task level:: Task level functions * Charset level:: Charset level functions * Errors:: Handling errors  File: recode.info, Node: Outer level, Next: Request level, Prev: Library, Up: Library 4.1 Outer level functions ========================= The outer level functions mainly prepare the whole recoding library for use, or do actions which are unrelated to specific recodings. Here is an example of a program which does not really make anything useful. #include #include #include const char *program_name; int main (int argc, char *const *argv) { program_name = argv[0]; RECODE_OUTER outer = recode_new_outer (RECODE_AUTO_ABORT_FLAG); recode_delete_outer (outer); exit (EXIT_SUCCESS); } The header file ‘recode.h’ declares an opaque ‘RECODE_OUTER’ structure, which the programmer should use for allocating a variable in his program (let's assume the programmer is a male, here, no prejudice intended). This ‘outer’ variable is given as a first argument to all outer level functions. The ‘RECODE_OUTER’ structure is really meant to be initialised only once in the life of a program, and terminated with the program itself. Program interfaces should pay attention to initialise it only once, would it be only for speed considerations. A good deal of overhead goes to outer level initialization, and if the outer level was initialized afresh for each and every string translated, say, the Recode library would appear immensely much slower that it was meant to be! Because outer level initialization is meant to be done only once, not so much attention has been paid to avoid memory leaks at this level within Recode. This is hardly a reason for not plugging such leaks at any level: in the long run, they should all be chased and repaired. • Initialisation functions RECODE_OUTER recode_new_outer (FLAGS); bool recode_delete_outer (OUTER); The recoding library absolutely needs to be initialised before being used, and ‘recode_new_outer’ has to be called once, first. Besides the OUTER it is meant to initialise, the function accepts an integer value holding zero or more flags. If no flags, use ‘0’. If more than one flag, they should be combined with the bitwise-or (‘|’) operator. The possible flags are: ‘RECODE_AUTO_ABORT_FLAG’ When this flag is set, the library later issues diagnostics itself, and aborts the calling program on errors. This is merely a convenience, because if this flag was not given, the calling program should always take care of checking the return value of all other calls to the recoding library functions, and when any error is detected, issue a diagnostic and abort processing itself. ‘RECODE_NO_ICONV_FLAG’ When this flag is set, the library does not initialize or use the external ‘iconv’ library. This means that the charsets and aliases provided by the ‘iconv’ external library and not by Recode itself are not available. ‘RECODE_STRICT_MAPPING_FLAG’ When this flag is set (corresponding to the ‘--strict’ command-line option), untranslatable characters are discarded, but an error is returned on completion unless ‘RECODE_FORCE_FLAG’ is also set. ‘RECODE_FORCE_FLAG’ When this flag is set (corresponding to the ‘--force’ command-line option), errors caused by untranslatable characters are ignored. In previous incarnations of the Recode library, FLAGS was a Boolean instead of a collection of flags, meant to set ‘RECODE_AUTO_ABORT_FLAG’. This still works, but is deprecated. Regardless of the setting of ‘RECODE_AUTO_ABORT’, all recoding library functions return a success status. Most functions are geared for returning ‘false’ for an error, and ‘true’ if everything went fine. Functions returning structures or strings return ‘NULL’ instead of the result, when the result cannot be produced. If RECODE_AUTO_ABORT is selected, functions either return ‘true’, or do not return at all. As in the example above, ‘recode_new_outer’ is called only once in most cases. Calling ‘recode_new_outer’ implies some overhead, so calling it more than once should preferably be avoided. The termination function ‘recode_delete_outer’ reclaims the memory allocated by ‘recode_new_outer’ for a given OUTER variable. Calling ‘recode_delete_outer’ prior to program termination is more aesthetic then useful, as all memory resources are automatically reclaimed when the program ends. You may spare this terminating call if you prefer. • The ‘program_name’ declaration As we just explained, the user may set the Recode library so that, in case of problems error, it issues the diagnostic itself and aborts the whole processing. This capability may be quite convenient. When this feature is used, the aborting routine includes the name of the running program in the diagnostic. On the other hand, when this feature is not used, the library merely return error codes, giving the library user fuller control over all this. This behaviour is more like what usual libraries do: they return codes and never abort. However, I would rather not force library users to necessarily check all return codes themselves, by leaving no other choice. In most simple applications, letting the library diagnose and abort is much easier, and quite welcome. This is precisely because both possibilities exist that the ‘program_name’ variable is needed: it may be used by the library _when_ the user sets it to diagnose itself.  File: recode.info, Node: Request level, Next: Task level, Prev: Outer level, Up: Library 4.2 Request level functions =========================== The request level functions are meant to cover most recoding needs programmers may have; they should provide all usual functionality. Their API is almost stable by now. To get started with request level functions, here is a full example of a program which sole job is to filter ‘ibmpc’ code on its standard input into ‘latin1’ code on its standard output. #include #include #include #include const char *program_name; int main (int argc, char *const *argv) { program_name = argv[0]; RECODE_OUTER outer = recode_new_outer (RECODE_AUTO_ABORT_FLAG); RECODE_REQUEST request = recode_new_request (outer); bool success; recode_scan_request (request, "ibmpc..latin1"); success = recode_file_to_file (request, stdin, stdout); recode_delete_request (request); recode_delete_outer (outer); exit (success ? EXIT_SUCCESS : EXIT_FAILURE); } The header file ‘recode.h’ declares a ‘RECODE_REQUEST’ structure, which the programmer should use for allocating a variable in his program. This REQUEST variable is given as a first argument to all request level functions, and in most cases, may be considered as opaque. Suppose an application is doing a lot of recoding using only a few different requests. For speed considerations, the ‘RECODE_REQUEST’ structure should ideally be cached for each kind of request, so the request level initialisation is not redone for each and every string translated. The speedup should be more apparent when Recode is able to optimize the work by building on the fly, within the structure, new specialized recoding steps and their associated data tables. • Initialisation functions RECODE_REQUEST recode_new_request (OUTER); bool recode_delete_request (REQUEST); No REQUEST variable may not be used in other request level functions of the recoding library before having been initialised by ‘recode_new_request’. There may be many such REQUEST variables, in which case, they are independent of one another and they all need to be initialised separately. To avoid memory leaks, a REQUEST variable should not be initialised a second time without calling ‘recode_delete_request’ to "un-initialise" it. Like for ‘recode_delete_outer’, calling ‘recode_delete_request’ prior to program termination, in the example above, may be left out. • Fields of ‘struct recode_request’ Here are the fields of a ‘struct recode_request’ which may be meaningfully changed, once a REQUEST has been initialised by ‘recode_new_request’, but before it gets used. It is not very frequent, in practice, that these fields need to be changed. To access the fields, you need to include ‘recodext.h’ _instead_ of ‘recode.h’, in which case there also is a greater chance that you need to recompile your programs if a new version of the recoding library gets installed. ‘verbose_flag’ This field is initially ‘false’. When set to ‘true’, the library will echo to stderr the sequence of elementary recoding steps needed to achieve the requested recoding. ‘diaeresis_char’ This field is initially the ASCII value of a double quote ‘"’, but it may also be the ASCII value of a colon ‘:’. In ‘texte’ charset, some countries use double quotes to mark diaeresis, while other countries prefer colons. This field contains the diaeresis character for the ‘texte’ charset. ‘make_header_flag’ This field is initially ‘false’. When set to ‘true’, it indicates that the program is merely trying to produce a recoding table in source form rather than completing any actual recoding. In such a case, the optimisation of step sequence can be attempted much more aggressively. If the step sequence cannot be reduced to a single step, table production will fail. ‘diacritics_only’ This field is initially ‘false’. For ‘HTML’, ‘LaTeX’ and ‘BibTeX’ charset, it is often convenient to recode the diacriticized characters only, while just not recoding other HTML code using ampersands or angular brackets, or LaTeX code using backslashes. Set the field to ‘true’ for getting this behaviour. In the other charset, one can edit text as well as HTML or LaTeX directives. ‘ascii_graphics’ This field is initially ‘false’, and relate to characters 176 to 223 in the ‘ibmpc’ charset, which are use to draw boxes. When set to ‘true’, while getting out of ‘ibmpc’, ASCII characters are selected so to graphically approximate these boxes. • Study of request strings bool recode_scan_request (REQUEST, "STRING"); The main role of a REQUEST variable is to describe a set of recoding transformations. Function ‘recode_scan_request’ studies the given STRING, and stores an internal representation of it into REQUEST. Note that STRING may be a full-fledged Recode request, possibly including surfaces specifications, intermediary charsets, sequences, aliases or abbreviations (*note Requests::). The internal representation automatically receives some pre-conditioning and optimisation, so the REQUEST may then later be used many times to achieve many actual recodings. It would not be efficient calling ‘recode_scan_request’ many times with the same STRING, it is better having many REQUEST variables instead. • Actual recoding jobs Once the REQUEST variable holds the description of a recoding transformation, a few functions use it for achieving an actual recoding. Either input or output of a recoding may be string, an in-memory buffer, or a file. Functions with names like ‘recode_INPUT-TYPE_to_OUTPUT-TYPE’ request an actual recoding, and are described below. It is easy to remember which arguments each function accepts, once grasped some simple principles for each possible TYPE. However, one of the recoding function escapes these principles and is discussed separately, first. recode_string (REQUEST, STRING); The function ‘recode_string’ recodes STRING according to REQUEST, and directly returns the resulting recoded string freshly allocated, or ‘NULL’ if the recoding could not succeed for some reason. When this function is used, it is the responsibility of the programmer to ensure that the memory used by the returned string is later reclaimed. char *recode_string_to_buffer (REQUEST, INPUT_STRING, &OUTPUT_BUFFER, &OUTPUT_LENGTH, &OUTPUT_ALLOCATED); bool recode_string_to_file (REQUEST, INPUT_FILE, OUTPUT_FILE); bool recode_buffer_to_buffer (REQUEST, INPUT_BUFFER, INPUT_LENGTH, &OUTPUT_BUFFER, &OUTPUT_LENGTH, &OUTPUT_ALLOCATED); bool recode_buffer_to_file (REQUEST, INPUT_BUFFER, INPUT_LENGTH, OUTPUT_FILE); bool recode_file_to_buffer (REQUEST, INPUT_FILE, &OUTPUT_BUFFER, &OUTPUT_LENGTH, &OUTPUT_ALLOCATED); bool recode_file_to_file (REQUEST, INPUT_FILE, OUTPUT_FILE); All these functions return a ‘bool’ result, ‘false’ meaning that the recoding was not successful, often because of reversibility issues. The name of the function well indicates on which types it reads and which type it produces. Let's discuss these three types in turn. string A string is merely an in-memory buffer which is terminated by a ‘NUL’ character (using as many bytes as needed), instead of being described by a byte length. For input, a pointer to the buffer is given through one argument. It is notable that there is no ‘to_string’ functions. Only one function recodes into a string, and it is ‘recode_string’, which has already been discussed separately, above. buffer A buffer is a sequence of bytes held in computer memory. For input, two arguments provide a pointer to the start of the buffer and its byte size. Note that for charsets using many bytes per character, the size is given in bytes, not in characters. For output, three arguments provide the address of three variables, which will receive the buffer pointer, the used buffer size in bytes, and the allocated buffer size in bytes. If at the time of the call, the buffer pointer is ‘NULL’, then the allocated buffer size should also be zero, and the buffer will be allocated afresh by the recoding functions. However, if the buffer pointer is not ‘NULL’, it should be already allocated, the allocated buffer size then gives its size. If the allocated size gets exceeded while the recoding goes, the buffer will be automatically reallocated bigger, probably elsewhere, and the allocated buffer size will be adjusted accordingly. The second variable, giving the in-memory buffer size, will receive the exact byte size which was needed for the recoding. A ‘NUL’ character is guaranteed at the end of the produced buffer, but is not counted in the byte size of the recoding. Beyond that ‘NUL’, there might be some extra space after the recoded data, extending to the allocated buffer size. file A file is a sequence of bytes held outside computer memory, but buffered through it. For input, one argument provides a pointer to a file already opened for read. The file is then read and recoded from its current position until the end of the file, effectively swallowing it in memory if the destination of the recoding is a buffer. For reading a file filtered through the recoding library, but only a little bit at a time, one should rather use ‘recode_filter_open’ and ‘recode_filter_close’ (these two functions are not yet available). For output, one argument provides a pointer to a file already opened for write. The result of the recoding is written to that file starting at its current position. The following special function is still subject to change: void recode_format_table (REQUEST, LANGUAGE, "NAME"); and is not documented anymore for now.  File: recode.info, Node: Task level, Next: Charset level, Prev: Request level, Up: Library 4.3 Task level functions ======================== The task level functions are used internally by the request level functions, they allow more explicit control over files and memory buffers holding input and output to recoding processes. The interface specification of task level functions is still subject to change a bit. To get started with task level functions, here is a full example of a program which sole job is to filter ‘ibmpc’ code on its standard input into ‘latin1’ code on its standard output. That is, this program has the same goal as the one from the previous section, but does its things a bit differently. #include #include #include const char *program_name; int main (int argc, char *const *argv) { program_name = argv[0]; RECODE_OUTER outer = recode_new_outer (0); RECODE_REQUEST request = recode_new_request (outer); RECODE_TASK task; bool success; recode_scan_request (request, "ibmpc..latin1"); task = recode_new_task (request); task->input.name = ""; task->output.name = ""; success = recode_perform_task (task); recode_delete_task (task); recode_delete_request (request); recode_delete_outer (outer); exit (success ? EXIT_SUCCESS : EXIT_FAILURE); } Note that in the example above, ‘recodext.h’ header is used instead of ‘recode.h’. By doing so, the various structures are not opaque anymore, and their fields may be accessed by name. The header file ‘recode.h’ declares a ‘RECODE_TASK’ structure, which the programmer should use for allocating a variable in his program. This ‘task’ variable is given as a first argument to all task level functions. The programmer ought to change and possibly consult a few fields in this structure, using special functions. • Initialisation functions RECODE_TASK recode_new_task (REQUEST); bool recode_delete_task (TASK); No TASK variable may be used in other task level functions of the recoding library without having first been initialised with ‘recode_new_task’. There may be many such TASK variables, in which case, they are independent of one another and they all need to be initialised separately. To avoid memory leaks, a TASK variable should not be initialised a second time without calling ‘recode_delete_task’ to "un-initialise" it. This function also accepts a REQUEST argument and associates the request to the task. In fact, a task is essentially a set of recoding transformations with the specification for its current input and its current output. The REQUEST variable may be scanned before or after the call to ‘recode_new_task’, it does not matter so far. Immediately after initialisation, before further changes, the TASK variable associates REQUEST empty in-memory buffers for both input and output. The output buffer will later get allocated automatically on the fly, as needed, by various task processors. Even if a call to ‘recode_delete_task’ is not strictly mandatory before ending the program, it is cleaner to always include it. Moreover, in some future version of the recoding library, it might become required. • Fields of ‘struct task_request’ Here are the fields of a ‘struct task_request’ which may be meaningfully changed, once a TASK has been initialised by ‘recode_new_task’. In fact, fields are expected to change. Once again, to access the fields, you need to include ‘recodext.h’ _instead_ of ‘recode.h’, in which case there also is a greater chance that you need to recompile your programs if a new version of the recoding library gets installed. ‘request’ The field ‘request’ points to the current recoding request, but may be changed as needed between recoding calls, for example when there is a need to achieve the construction of a resulting text made up of many pieces, each being recoded differently. ‘input.name’ ‘input.file’ If ‘input.name’ is not ‘NULL’ at start of a recoding, this is a request that a file by that name be first opened for reading and later automatically closed once the whole file has been read. If the file name is not ‘NULL’ but an empty string, it means that standard input is to be used. The opened file pointer is then held into ‘input.file’. If ‘input.name’ is ‘NULL’ and ‘input.file’ is not, than ‘input.file’ should point to a file already opened for read, which is meant to be recoded. ‘input.buffer’ ‘input.cursor’ ‘input.limit’ When both ‘input.name’ and ‘input.file’ are ‘NULL’, three pointers describe an in-memory buffer containing the text to be recoded. The buffer extends from ‘input.buffer’ to ‘input.limit’, yet the text to be recoded only extends from ‘input.cursor’ to ‘input.limit’. In most situations, ‘input.cursor’ starts with the value that ‘input.buffer’ has. (Its value will internally advance as the recoding goes, until it reaches the value of ‘input.limit’.) ‘output.name’ ‘output.file’ If ‘output.name’ is not ‘NULL’ at start of a recoding, this is a request that a file by that name be opened for write and later automatically closed after the recoding is done. If the file name is not ‘NULL’ but an empty string, it means that standard output is to be used. The opened file pointer is then held into ‘output.file’. If several passes with intermediate files are needed to produce the recoding, the ‘output.name’ file is opened only for the final pass. If ‘output.name’ is ‘NULL’ and ‘output.file’ is not, then ‘output.file’ should point to a file already opened for write, which will receive the result of the recoding. ‘output.buffer’ ‘output.cursor’ ‘output.limit’ When both ‘output.name’ and ‘output.file’ are ‘NULL’, three pointers describe an in-memory buffer meant to receive the text, once it is recoded. The buffer is already allocated from ‘output.buffer’ to ‘output.limit’. In most situations, ‘output.cursor’ starts with the value that ‘output.buffer’ has. Once the recoding is done, ‘output.cursor’ will point at the next free byte in the buffer, just after the recoded text, so another recoding could be called without changing any of these three pointers, for appending new information to it. The number of recoded bytes in the buffer is the difference between ‘output.cursor’ and ‘output.buffer’. Each time ‘output.cursor’ reaches ‘output.limit’, the buffer is reallocated bigger, possibly at a different location in memory, always held up-to-date in ‘output.buffer’. It is still possible to call a task level function with no output buffer at all to start with, in which case all three fields should have ‘NULL’ as a value. This is the situation immediately after a call to ‘recode_new_task’. ‘byte_order_mark’ This field, which is preset to ‘true’, indicates that a byte order mark is to be expected at the beginning of any canonical ‘UCS-2’ or ‘UTF-16’ text, and that such a byte order mark should be also produced for these charsets. ‘fail_level’ This field, which is of type ‘enum recode_error’ (*note Errors::), sets the error level at which task level functions should report a failure. If an error being detected is equal or greater than ‘fail_level’, the function will eventually return ‘false’ instead of ‘true’. The preset value for this field is ‘RECODE_NOT_CANONICAL’, that means that if not reset to another value, the library will report failure on _any_ error. ‘abort_level’ This field, which is of type ‘enum recode_error’ (*note Errors::), sets the error level at which task level functions should immediately interrupt their processing. If an error being detected is equal or greater than ‘abort_level’, the function returns immediately, but the returned value (‘true’ or ‘false’) is still is decided from the setting of ‘fail_level’, not ‘abort_level’. The preset value for this field is ‘RECODE_MAXIMUM_ERROR’, that means that is not reset to another value, the library will never interrupt a recoding task. ‘error_so_far’ This field, which is of type ‘enum recode_error’ (*note Errors::), maintains the maximum error level met so far while the recoding task was proceeding. The preset value is ‘RECODE_NO_ERROR’. • Task execution recode_perform_task (TASK); recode_filter_open (TASK, FILE); recode_filter_close (TASK); The function ‘recode_perform_task’ reads as much input as possible, and recode all of it on prescribed output, given a properly initialised TASK. Functions ‘recode_filter_open’ and ‘recode_filter_close’ are only planned for now. They are meant to read input in piecemeal ways. Even if functionality already exists informally in the library, it has not been made available yet through such interface functions.  File: recode.info, Node: Charset level, Next: Errors, Prev: Task level, Up: Library 4.4 Charset level functions =========================== Many functions are internal to the recoding library. Some of them have been made external and available, for the ‘recode’ program had to retain all its previous functionality while being transformed into a mere application of the recoding library. These functions are not really documented here for the time being, as we hope that many of them will vanish over time. When this set of routines will stabilise, it would be convenient to document them as an API for handling charset names and contents. RECODE_CHARSET find_charset (NAME, CLEANING-TYPE); bool list_all_charsets (CHARSET); bool list_concise_charset (CHARSET, LIST-FORMAT); bool list_full_charset (CHARSET);  File: recode.info, Node: Errors, Prev: Charset level, Up: Library 4.5 Handling errors =================== The ‘recode’ program, while using the Recode library, needs to control whether recoding problems are reported or not, and then reflect these in the exit status. The program should also instruct the library whether the recoding should be abruptly interrupted when an error is met (so sparing processing when it is known in advance that a wrong result would be discarded anyway), or if it should proceed nevertheless. Here is how the library groups errors into levels, listed here in order of increasing severity. ‘RECODE_NO_ERROR’ No error was met on previous library calls. ‘RECODE_NOT_CANONICAL’ The input text was using one of the many alternative codings for some phenomenon, but not the one Recode would have canonically generated. So, if the reverse recoding is later attempted, it would produce a text having the same _meaning_ as the original text, yet not being byte identical. For example, a ‘Base64’ block in which end-of-lines appear elsewhere that at every 76 characters is not canonical. An e-circumflex in TeX which is coded as ‘\^{e}’ instead of ‘\^e’ is not canonical. ‘RECODE_AMBIGUOUS_OUTPUT’ It has been discovered that if the reverse recoding was attempted on the text output by this recoding, we would not obtain the original text, only because an ambiguity was generated by accident in the output text. This ambiguity would then cause the wrong interpretation to be taken. Here are a few examples. If the ‘Latin-1’ sequence ‘e^’ is converted to Easy French and back, the result will be interpreted as e-circumflex and so, will not reflect the intent of the original two characters. Recoding an ‘IBM-PC’ text to ‘Latin-1’ and back, where the input text contained an isolated ‘LF’, will have a spurious ‘CR’ inserted before the ‘LF’. Currently, there are many cases in the library where the production of ambiguous output is not properly detected, as it is sometimes a difficult problem to accomplish this detection, or to do it speedily. ‘RECODE_UNTRANSLATABLE’ One or more input character could not be recoded, because there is just no representation for this character in the output charset. Here are a few examples. Non-strict mode often allows Recode to compute on-the-fly mappings for unrepresentable characters, but strict mode prohibits such attribution of reversible translations: so strict mode might often trigger such an error. Most ‘UCS-2’ codes used to represent Asian characters cannot be expressed in various Latin charsets. Since iconv does not distinguish untranslatable from invalid input, Recode has to use a workaround to detect when input is untranslatable. Unfortunately, it cannot currently tell how much input is untranslatable, so it cannot reliably skip such input: typically the input is then diagnosed as invalid. Two possible workarounds are to set the ‘abort_level’ to ‘RECODE_UNTRANSLATABLE’, or not to use iconv. ‘RECODE_INVALID_INPUT’ The input text does not comply with the coding it is declared to hold. So, there is no way by which a reverse recoding would reproduce this text, because Recode should never produce invalid output. Here are a few examples. In strict mode, ‘ASCII’ text is not allowed to contain characters with the eight bit set. ‘UTF-8’ encodings ought to be minimal(1). ‘RECODE_SYSTEM_ERROR’ The underlying system reported an error while the recoding was going on, likely an input/output error. (This error symbol is currently unused in the library.) ‘RECODE_USER_ERROR’ The programmer or user requested something the recoding library is unable to provide, or used the API wrongly. (This error symbol is currently unused in the library.) ‘RECODE_INTERNAL_ERROR’ Something really wrong, which should normally never happen, was detected within the recoding library. This might be due to genuine bugs in the library, or maybe due to un-initialised or overwritten arguments to the API. (This error symbol is currently unused in the library.) ‘RECODE_MAXIMUM_ERROR’ This error code should never be returned, it is only internally used as a sentinel for the list of all possible error codes. One should be able to set the error level threshold for returning failure at end of recoding, and also the threshold for immediate interruption. If many errors occur while the recoding proceed, which are not severe enough to interrupt the recoding, then the most severe error is retained, while others are forgotten(2). So, in case of an error, the possible actions currently are: • do nothing and let go, returning success at end of recoding, • just let go for now, but return failure at end of recoding, • interrupt recoding right away and return failure now. *Note Task level::, and particularly the description of the fields ‘fail_level’, ‘abort_level’ and ‘error_so_far’, for more information about how errors are handled. ---------- Footnotes ---------- (1) The minimality of an ‘UTF-8’ encoding is guaranteed on output, but currently, it is not checked on input. (2) Another approach would have been to define the level symbols as masks instead, and to give masks to threshold setting routines, and to retain all errors--yet I never met myself such a need in practice, and so I fear it would be overkill. On the other hand, it might be interesting to maintain counters about how many times each kind of error occurred.  File: recode.info, Node: Universal, Next: iconv, Prev: Library, Up: Top 5 The universal charset *********************** Standard ISO 10646 defines a universal character set, intended to encompass in the long run all languages written on this planet. It is based on wide characters, and offer possibilities for two billion characters (2^31). This charset was to become available in Recode under the name ‘UCS’, with many external surfaces for it. But in the current version, only surfaces of ‘UCS’ are offered, each presented as a genuine charset rather than a surface. Such surfaces are only meaningful for the ‘UCS’ charset, so it is not that useful to draw a line between the surfaces and the only charset to which they may apply. ‘UCS’ stands for Universal Character Set. ‘UCS-2’ and ‘UCS-4’ are fixed length encodings, using two or four bytes per character respectively. ‘UTF’ stands for ‘UCS’ Transformation Format, and are variable length encodings dedicated to ‘UCS’. ‘UTF-1’ was based on ISO 2022, it did not succeed(1). ‘UTF-2’ replaced it, it has been called ‘UTF-FSS’ (File System Safe) in Unicode or Plan9 context, but is better known today as ‘UTF-8’. To complete the picture, there is ‘UTF-16’ based on 16 bits bytes, and ‘UTF-7’ which is meant for transmissions limited to 7-bit bytes. Most often, one might see ‘UTF-8’ used for external storage, and ‘UCS-2’ used for internal storage. When Recode is producing any representation of ‘UCS’, it uses the replacement character ‘U+FFFD’ for any _valid_ character which is not representable in the goal charset(2). This happens, for example, when ‘UCS-2’ is not capable to echo a wide ‘UCS-4’ character, or for a similar reason, an ‘UTF-8’ sequence using more than three bytes. The replacement character is meant to represent an existing character. So, it is never produced to represent an invalid sequence or ill-formed character in the input text. In such cases, Recode just gets rid of the noise, while taking note of the error in its usual ways. Even if ‘UTF-8’ is an encoding, really, it is the encoding of a single character set, and nothing else. It is useful to distinguish between an encoding (a _surface_ within Recode) and a charset, but only when the surface may be applied to several charsets. Specifying a charset is a bit simpler than specifying a surface in a Recode request. There would not be a practical advantage at imposing a more complex syntax to Recode users, when it is simple to assimilate ‘UTF-8’ to a charset. Similar considerations apply for ‘UCS-2’, ‘UCS-4’, ‘UTF-16’ and ‘UTF-7’. These are all considered to be charsets. * Menu: * UCS-2:: Universal Character Set, 2 bytes * UCS-4:: Universal Character Set, 4 bytes * UTF-7:: Universal Transformation Format, 7 bits * UTF-8:: Universal Transformation Format, 8 bits * UTF-16:: Universal Transformation Format, 16 bits * count-characters:: Frequency count of characters * dump-with-names:: Fully interpreted UCS dump ---------- Footnotes ---------- (1) It is not probable that Recode will ever support ‘UTF-1’. (2) This is when the goal charset allows for 16-bits. For shorter charsets, the ‘--strict’ (‘-s’) option decides what happens: either the character is dropped, or a reversible mapping is produced on the fly.  File: recode.info, Node: UCS-2, Next: UCS-4, Prev: Universal, Up: Universal 5.1 Universal Character Set, 2 bytes ==================================== One surface of ‘UCS’ is usable for the subset defined by its first sixty thousand characters (in fact, 31 * 2^11 codes), and uses exactly two bytes per character. It is a mere dump of the internal memory representation which is _natural_ for this subset and as such, conveys with it endianness problems. A non-empty ‘UCS-2’ file normally begins with a so called “byte order markâ€, having value ‘0xFEFF’. The value ‘0xFFFE’ is not an ‘UCS’ character, so if this value is seen at the beginning of a file, Recode reacts by swapping all pairs of bytes. The library also properly reacts to other occurrences of ‘0xFEFF’ or ‘0xFFFE’ elsewhere than at the beginning, because concatenation of ‘UCS-2’ files should stay a simple matter, but it might trigger a diagnostic about non canonical input. By default, when producing an ‘UCS-2’ file, Recode always outputs the high order byte before the low order byte. Note that this may not be the case if ‘iconv’ is used; in that case, you may be able to use the charset ‘UCS-2BE’ to specify big-endian UCS-2. The order can also be easily overridden through the ‘21-Permutation’ surface (*note Permutations::). For example, the command: recode u8..u2/21 < INPUT > OUTPUT asks for an ‘UTF-8’ to ‘UCS-2’ conversion, with swapped byte output. Use ‘UCS-2’ as a genuine charset. This charset is available in Recode under the name ‘ISO-10646-UCS-2’. Accepted aliases are ‘UCS-2’, ‘BMP’, ‘rune’ and ‘u2’. The Recode library is able to combine ‘UCS-2’ some sequences of codes into single code characters, to represent a few diacriticized characters, ligatures or diphtongs which have been included to ease mapping with other existing charsets. It is also able to explode such single code characters into the corresponding sequence of codes. The request syntax for triggering such operations is rudimentary and temporary. The ‘combined-UCS-2’ pseudo character set is a special form of ‘UCS-2’ in which known combinings have been replaced by the simpler code. Using ‘combined-UCS-2’ instead of ‘UCS-2’ in an _after_ position of a request forces a combining step, while using ‘combined-UCS-2’ instead of ‘UCS-2’ in a _before_ position of a request forces an exploding step. For the time being, one has to resort to advanced request syntax to achieve other effects. For example: recode u8..co,u2..u8 < INPUT > OUTPUT copies an ‘UTF-8’ INPUT over OUTPUT, still to be in ‘UTF-8’, yet merging combining characters into single codes whenever possible.  File: recode.info, Node: UCS-4, Next: UTF-7, Prev: UCS-2, Up: Universal 5.2 Universal Character Set, 4 bytes ==================================== Another surface of ‘UCS’ uses exactly four bytes per character, and is a mere dump of the internal memory representation which is _natural_ for the whole charset and as such, conveys with it endianness problems. Use it as a genuine charset. This charset is available in Recode under the name ‘ISO-10646-UCS-4’. Accepted aliases are ‘UCS’, ‘UCS-4’, ‘ISO_10646’, ‘10646’ and ‘u4’.  File: recode.info, Node: UTF-7, Next: UTF-8, Prev: UCS-4, Up: Universal 5.3 Universal Transformation Format, 7 bits =========================================== ‘UTF-7’ comes from IETF rather than ISO, and is described by RFC 2152, in the MIME series. The ‘UTF-7’ encoding is meant to fit ‘UCS-2’ over channels limited to seven bits per byte. It proceeds from a mix between the spirit of ‘Quoted-Printable’ and methods of ‘Base64’, adapted to Unicode contexts. This charset is available in Recode under the name ‘UNICODE-1-1-UTF-7’. Accepted aliases are ‘UTF-7’, ‘TF-7’ and ‘u7’.  File: recode.info, Node: UTF-8, Next: UTF-16, Prev: UTF-7, Up: Universal 5.4 Universal Transformation Format, 8 bits =========================================== Even if ‘UTF-8’ does not originally come from IETF, there is now RFC 2279 to describe it. In letters sent on 1995-01-21 and 1995-04-20, Markus Kuhn writes: ‘UTF-8’ is an ‘ASCII’ compatible multi-byte encoding of the ISO 10646 universal character set (‘UCS’). ‘UCS’ is a 31-bit superset of all other character set standards. The first 256 characters of ‘UCS’ are identical to those of ISO 8859-1 (Latin-1). The ‘UCS-2’ encoding of UCS is a sequence of bigendian 16-bit words, the ‘UCS-4’ encoding is a sequence of bigendian 32-bit words. The ‘UCS-2’ subset of ISO 10646 is also known as "Unicode". As both ‘UCS-2’ and ‘UCS-4’ require heavy modifications to traditional ‘ASCII’ oriented system designs (e.g. Unix), the ‘UTF-8’ encoding has been designed for these applications. In ‘UTF-8’, only ‘ASCII’ characters are encoded using bytes below 128. All other non-ASCII characters are encoded as multi-byte sequences consisting only of bytes in the range 128-253. This avoids critical bytes like ‘NUL’ and ‘/’ in ‘UTF-8’ strings, which makes the ‘UTF-8’ encoding suitable for being handled by the standard C string library and being used in Unix file names. Other properties include the preserved lexical sorting order and that ‘UTF-8’ allows easy self-synchronisation of software receiving ‘UTF-8’ strings. ‘UTF-8’ is the most common external surface of ‘UCS’, each character uses from one to six bytes, and is able to encode all 2^31 characters of the ‘UCS’. It is implemented as a charset, with the following properties: • Strict 7-bit ‘ASCII’ is completely invariant under ‘UTF-8’, and those are the only one-byte characters. ‘UCS’ values and ‘ASCII’ values coincide. No multi-byte characters ever contain bytes less than 128. ‘NUL’ _is_ ‘NUL’. A multi-byte character always starts with a byte of 192 or more, and is always followed by a number of bytes between 128 to 191. That means that you may read at random on disk or memory, and easily discover the start of the current, next or previous character. You can count, skip or extract characters with this only knowledge. • If you read the first byte of a multi-byte character in binary, it contains many ‘1’ bits in successions starting with the most significant one (from the left), at least two. The length of this ‘1’ sequence equals the byte size of the character. All succeeding bytes start by ‘10’. This is a lot of redundancy, making it fairly easy to guess that a file is valid ‘UTF-8’, or to safely state that it is not. • In a multi-byte character, if you remove all leading ‘1’ bits of the first byte of a multi-byte character, and the initial ‘10’ bits of all remaining bytes (so keeping 6 bits per byte for those), the remaining bits concatenated are the UCS value. These properties also have a few nice consequences: • Conversion to/from values is algorithmically simple, and reasonably speedy. • A sequence of N bytes can hold characters needing up to 2 + 5N bits in their ‘UCS’ representation. Here, N is a number between 1 and 6. So, ‘UTF-8’ is most economical when mapping ASCII (1 byte), followed by ‘UCS-2’ (1 to 3 bytes) and ‘UCS-4’ (1 to 6 bytes). • The lexicographic sorting order of ‘UCS’ strings is preserved. • Bytes with value 254 or 255 never appear, and because of that, these are sometimes used when escape mechanisms are needed. In some case, when little processing is done on a lot of strings, one may choose for efficiency reasons to handle ‘UTF-8’ strings directly even if variable length, as it is easy to get start of characters. Character insertion or replacement might require moving the remainder of the string in either direction. In most cases, it is faster and easier to convert from ‘UTF-8’ to ‘UCS-2’ or ‘UCS-4’ prior to processing. This charset is available in Recode under the name ‘UTF-8’. Accepted aliases are ‘UTF-2’, ‘UTF-FSS’, ‘FSS_UTF’, ‘TF-8’ and ‘u8’.  File: recode.info, Node: UTF-16, Next: count-characters, Prev: UTF-8, Up: Universal 5.5 Universal Transformation Format, 16 bits ============================================ Another external surface of ‘UCS’ is also variable length, each character using either two or four bytes. It is usable for the subset defined by the first million characters (17 * 2^16) of ‘UCS’. Martin J. Dürst writes (to , on 1995-03-28): ‘UTF-16’ is another method that reserves two times 1024 codepoints in Unicode and uses them to index around one million additional characters. ‘UTF-16’ is a little bit like former multibyte codes, but quite not so, as both the first and the second 16-bit code clearly show what they are. The idea is that one million codepoints should be enough for all the rare Chinese ideograms and historical scripts that do not fit into the Base Multilingual Plane of ISO 10646 (with just about 63,000 positions available, now that 2,000 are gone). This charset is available in Recode under the name ‘UTF-16’. Accepted aliases are ‘Unicode’, ‘TF-16’ and ‘u6’.  File: recode.info, Node: count-characters, Next: dump-with-names, Prev: UTF-16, Up: Universal 5.6 Frequency count of characters ================================= A device may be used to obtain a list of characters in a file, and how many times each character appears. Each count is followed by the ‘UCS-2’ value of the character and, when known, the RFC 1345 mnemonic for that character. This charset is available in Recode under the name ‘count-characters’. This ‘count’ feature has been implemented as a charset. This may change in some later version, as it would sometimes be convenient to count original bytes, instead of their ‘UCS-2’ equivalent.  File: recode.info, Node: dump-with-names, Prev: count-characters, Up: Universal 5.7 Fully interpreted UCS dump ============================== Another device may be used to get fully interpreted dumps of an ‘UCS-2’ stream of characters, with one ‘UCS-2’ character displayed on a full output line. Each line receives the RFC 1345 mnemonic for the character if it exists, the ‘UCS-2’ value of the character, and a descriptive comment for that character. As each input character produces its own output line, beware that the output file from this conversion may be much, much bigger than the input file. This charset is available in Recode under the name ‘dump-with-names’. This ‘dump-with-names’ feature has been implemented as a charset rather than a surface. This is surely debatable. The current implementation allows for dumping charsets other than ‘UCS-2’. For example, the command ‘recode l2..full < INPUT’ implies a necessary conversion from ‘Latin-2’ to ‘UCS-2’, as ‘dump-with-names’ is only connected out from ‘UCS-2’. In such cases, Recode does not display the original ‘Latin-2’ codes in the dump, only the corresponding ‘UCS-2’ values. To give a simpler example, the command echo 'Hello, world!' | recode us..dump produces the following output: UCS2 Mne Description 0048 H latin capital letter h 0065 e latin small letter e 006C l latin small letter l 006C l latin small letter l 006F o latin small letter o 002C , comma 0020 SP space 0077 w latin small letter w 006F o latin small letter o 0072 r latin small letter r 006C l latin small letter l 0064 d latin small letter d 0021 ! exclamation mark 000A LF line feed (lf) The descriptive comment is given in English and ‘ASCII’, yet if the English description is not available but a French one is, then the French description is given instead, using ‘Latin-1’. However, if the ‘LC_MESSAGES’ environment variable begins with the letters ‘fr’, then listing preference goes to French when both descriptions are available. Here is another example. To get the long description of the code 237 in Latin-5 table, one may use the following command. echo -n 237 | recode l5/d..dump If your ‘echo’ does not grok ‘-n’, use ‘echo 237\c’ instead. Here is how to see what Unicode ‘U+03C6’ means, while getting rid of the title lines. echo -n 0x03C6 | recode u2/x2..dump | tail +3  File: recode.info, Node: iconv, Next: Tabular, Prev: Universal, Up: Top 6 The ‘iconv’ library ********************* The Recode library is able to use the capabilities of an external, pre-installed ‘iconv’ library, usually as provided by GNU ‘libc’ or the portable ‘libiconv’ written by Bruno Haible. In fact, many capabilities of the Recode library are duplicated in an external ‘iconv’ library, as they likely share many charsets. We discuss, here, the issues related to this duplication, and other peculiarities specific to the ‘iconv’ library. The ‘RECODE_STRICT_MAPPING_FLAG’ option, corresponding to the ‘--strict’ flag, is implemented by adding ‘iconv’ option ‘//IGNORE’ to the ‘after’ encoding. This has the side effect that untranslatable input is only signalled at the end of the conversion, whereas with Recode's built-in conversion routines the error will be signalled immediately. If the string ‘-translit’ is appended to the AFTER encoding, characters being converted are transliterated when needed and possible. This means that when a character cannot be represented in the target character set, it can be approximated through one or several similar looking characters. Characters that are outside of the target character set and cannot be transliterated are replaced with a question mark (?) in the output. This corresponds to the ‘iconv’ option ‘//TRANSLIT’. To check whether ‘iconv’ is used for a particular conversion, just use the ‘-v’ or ‘--verbose’ option, *note Recoding::, and check whether ‘:iconv:’ appears as an intermediate charset. The ‘:iconv:’ charset represents a conceptual pivot charset within the external ‘iconv’ library (in fact, this pivot exists, but is not directly reachable). This charset has a ‘:’ (a mere colon) and ‘:libiconv:’ for aliases. It is not allowed to recode from or to this charset directly. But when this charset is selected as an intermediate, usually by automatic means, then the external ‘iconv’ Recode library is called to handle the transformations. By using an ‘--ignore=:iconv:’ option on the ‘recode’ call or equivalently, but more simply, ‘-x:’, Recode is instructed to avoid this charset as an intermediate, with the consequence that the external ‘iconv’ library is not used. You can also use ‘--prefer-iconv’ to use ‘iconv’ if possible. Consider these calls: recode l1..1250 < INPUT > OUTPUT recode -x: l1..1250 < INPUT > OUTPUT recode --prefer-iconv l1..1250 < INPUT > OUTPUT All should transform INPUT from ‘ISO-8859-1’ to ‘CP1250’ on OUTPUT. The first call might use the external ‘iconv’ library, while the second call definitely avoids it. The third call will use the external ‘iconv’ library if it supports the required conversion. Whatever the path used, the results should normally be identical. However, there might be observable differences. Most of them might result from reversibility issues, as the external ‘iconv’ engine does not likely address reversibility in the same way. Even if much less likely, some differences might result from slight errors in the tables used, such differences should then be reported as bugs. Discrepancies might be seen in the area of error detection and recovery. The Recode library usually tries to detect canonicity errors in input, and production of ambiguous output, but the external ‘iconv’ library does not necessarily do it the same way. Moreover, the Recode library may not always recover as nicely as possible when the external ‘iconv’ has no translation for a given character. The external ‘iconv’ libraries may offer different sets of charsets and aliases from one library to another, and also between successive versions of a single library. Best is to check the documentation of the external ‘iconv’ library, as of the time Recode was installed, to know which charsets and aliases are being provided. The ‘--ignore=:iconv:’ or ‘-x:’ options might be useful when there is a need to make a recoding more exactly repeatable between machines or installations, the idea being here to remove the variance possibly introduced by the various implementations of an external ‘iconv’ library. These options might also help deciding whether if some recoding problem is genuine to Recode, or is induced by the external ‘iconv’ library.  File: recode.info, Node: Tabular, Next: ASCII misc, Prev: iconv, Up: Top 7 Tabular sources (RFC 1345) **************************** An important part of the tabular charset knowledge in Recode comes from RFC 1345 or, alternatively, from the ‘chset’ tools, both maintained by Keld Simonsen. The RFC 1345 document: "Character Mnemonics & Character Sets", K. Simonsen, Request for Comments no. 1345, Network Working Group, June 1992. defines many character mnemonics and character sets. The Recode library implements most of RFC 1345, however: • It does not recognise those charsets which overload character positions: ‘dk-us’ and ‘us-dk’. However, *Note Mixed::. • It does not recognise those charsets which combine two characters for representing a third: ‘ANSI_X3.110-1983’, ‘ISO_6937-2-add’, ‘T.101-G2’, ‘T.61-8bit’, ‘iso-ir-90’ and ‘videotex-suppl’. • It does not recognise 16-bits charsets: ‘GB_2312-80’, ‘JIS_C6226-1978’, ‘JIS_C6226-1983’, ‘JIS_X0212-1990’ and ‘KS_C_5601-1987’. • It interprets the charset ‘isoir91’ as ‘NATS-DANO’ (alias ‘iso-ir-9-1’), _not_ as ‘JIS_C6229-1984-a’ (alias ‘iso-ir-91’). It also interprets the charset ‘isoir92’ as ‘NATS-DANO-ADD’ (alias ‘iso-ir-9-2’), _not_ as ‘JIS_C6229-1984-b’ (alias ‘iso-ir-92’). It might be better just avoiding these two alias names. Keld Simonsen did most of RFC 1345 himself, with some funding from Danish Standards and Nordic standards (INSTA) project. He also did the character set design work, with substantial input from Olle Jaernefors. Keld typed in almost all of the tables, some have been contributed. A number of people have checked the tables in various ways. The RFC lists a number of people who helped. Keld and the Recode maintainer have an arrangement by which any new discovered information submitted by Recode users, about tabular charsets, is forwarded to Keld, eventually merged into Keld's work, and only then, reimported into Recode. Recode does not try to compete, nor even establish itself as an alternate or diverging reference: RFC 1345 and its new drafts stay the genuine source for most tabular information conveyed by Recode. Keld has been more than collaborative so far, so there is no reason that we act otherwise. In a word, Recode should be perceived as the application of external references, but not as a reference in itself. Internally, RFC 1345 associates which each character an unambiguous mnemonic of a few characters, taken from ISO 646, which is a minimal ASCII subset of 83 characters. The charset made up by these mnemonics is available in Recode under the name ‘RFC1345’. It has ‘mnemonic’ and ‘1345’ for aliases. As implemened, this charset exactly corresponds to ‘mnemonic+ascii+38’, using RFC 1345 nomenclature. Roughly said, ISO 646 characters represent themselves, except for the ampersand (‘&’) which appears doubled. A prefix of a single ampersand introduces a mnemonic. For mnemonics using two characters, the prefix is immediately by the mnemonic. For longer mnemonics, the prefix is followed by an underline (‘_’), the mmemonic, and another underline. Conversions to this charset are usually reversible. Currently, Recode does not offer any of the many other possible variations of this family of representations. ‘ANSI_X3.4-1968’ ‘367’, ‘ANSI_X3.4-1986’, ‘ASCII’, ‘CP367’, ‘IBM367’, ‘ISO646-US’, ‘ISO_646.irv:1991’, ‘US-ASCII’, ‘iso-ir-6’ and ‘us’ are aliases for this charset. Source: ISO 2375 registry. ‘ASMO_449’ ‘ISO_9036’, ‘arabic7’ and ‘iso-ir-89’ are aliases for this charset. Source: ISO 2375 registry. ‘BS_4730’ ‘ISO646-GB’, ‘gb’, ‘iso-ir-4’ and ‘uk’ are aliases for this charset. Source: ISO 2375 registry. ‘BS_viewdata’ ‘iso-ir-47’ is an alias for this charset. Source: ISO 2375 registry. ‘CP1250’ ‘1250’, ‘ms-ee’ and ‘windows-1250’ are aliases for this charset. Source: UNICODE 1.0. ‘CP1251’ ‘1251’, ‘ms-cyrl’ and ‘windows-1251’ are aliases for this charset. Source: UNICODE 1.0. ‘CP1252’ ‘1252’, ‘ms-ansi’ and ‘windows-1252’ are aliases for this charset. Source: UNICODE 1.0. ‘CP1253’ ‘1253’, ‘ms-greek’ and ‘windows-1253’ are aliases for this charset. Source: UNICODE 1.0. ‘CP1254’ ‘1254’, ‘ms-turk’ and ‘windows-1254’ are aliases for this charset. Source: UNICODE 1.0. ‘CP1255’ ‘1255’, ‘ms-hebr’ and ‘windows-1255’ are aliases for this charset. Source: UNICODE 1.0. ‘CP1256’ ‘1256’, ‘ms-arab’ and ‘windows-1256’ are aliases for this charset. Source: UNICODE 1.0. ‘CP1257’ ‘1257’, ‘WinBaltRim’ and ‘windows-1257’ are aliases for this charset. Source: CEN/TC304 N283. ‘CSA_Z243.4-1985-1’ ‘ISO646-CA’, ‘ca’, ‘csa7-1’ and ‘iso-ir-121’ are aliases for this charset. Source: ISO 2375 registry. ‘CSA_Z243.4-1985-2’ ‘ISO646-CA2’, ‘csa7-2’ and ‘iso-ir-122’ are aliases for this charset. Source: ISO 2375 registry. ‘CSA_Z243.4-1985-gr’ ‘iso-ir-123’ is an alias for this charset. Source: ISO 2375 registry. ‘CSN_369103’ ‘KOI-8_L2’, ‘iso-ir-139’ and ‘koi8l2’ are aliases for this charset. Source: ISO 2375 registry. ‘CWI’ ‘CWI-2’ and ‘cp-hu’ are aliases for this charset. Source: Computerworld Sza'mita'stechnika vol 3 issue 13 1988-06-29. ‘DEC-MCS’ ‘dec’ is an alias for this charset. VAX/VMS User's Manual, Order Number: AI-Y517A-TE, April 1986. ‘DIN_66003’ ‘ISO646-DE’, ‘de’ and ‘iso-ir-21’ are aliases for this charset. Source: ISO 2375 registry. ‘DS_2089’ ‘DS2089’, ‘ISO646-DK’ and ‘dk’ are aliases for this charset. Source: Danish Standard, DS 2089, February 1974. ‘EBCDIC-AT-DE’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘EBCDIC-AT-DE-A’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘EBCDIC-CA-FR’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘EBCDIC-DK-NO’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘EBCDIC-DK-NO-A’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘EBCDIC-ES’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘EBCDIC-ES-A’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘EBCDIC-ES-S’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘EBCDIC-FI-SE’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘EBCDIC-FI-SE-A’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘EBCDIC-FR’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘EBCDIC-IS-FRISS’ ‘friss’ is an alias for this charset. Source: Skyrsuvelar Rikisins og Reykjavikurborgar, feb 1982. ‘EBCDIC-IT’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘EBCDIC-PT’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘EBCDIC-UK’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘EBCDIC-US’ Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. ‘ECMA-cyrillic’ ‘ECMA-113’, ‘ECMA-113:1986’ and ‘iso-ir-111’ are aliases for this charset. Source: ISO 2375 registry. ‘ES’ ‘ISO646-ES’ and ‘iso-ir-17’ are aliases for this charset. Source: ISO 2375 registry. ‘ES2’ ‘ISO646-ES2’ and ‘iso-ir-85’ are aliases for this charset. Source: ISO 2375 registry. ‘GB_1988-80’ ‘ISO646-CN’, ‘cn’ and ‘iso-ir-57’ are aliases for this charset. Source: ISO 2375 registry. ‘GOST_19768-87’ ‘ST_SEV_358-88’ and ‘iso-ir-153’ are aliases for this charset. Source: ISO 2375 registry. ‘IBM037’ ‘037’, ‘CP037’, ‘ebcdic-cp-ca’, ‘ebcdic-cp-nl’, ‘ebcdic-cp-us’ and ‘ebcdic-cp-wt’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM038’ ‘038’, ‘CP038’ and ‘EBCDIC-INT’ are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. ‘IBM1004’ ‘1004’, ‘CP1004’ and ‘os2latin1’ are aliases for this charset. Source: CEN/TC304 N283, 1994-02-04. ‘IBM1026’ ‘1026’ and ‘CP1026’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM1047’ ‘1047’ and ‘CP1047’ are aliases for this charset. Source: IBM Character Data Representation Architecture. Registry SC09-1391-00 p 150. ‘IBM256’ ‘256’, ‘CP256’ and ‘EBCDIC-INT1’ are aliases for this charset. Source: IBM Registry C-H 3-3220-050. ‘IBM273’ ‘273’ and ‘CP273’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM274’ ‘274’, ‘CP274’ and ‘EBCDIC-BE’ are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. ‘IBM275’ ‘275’, ‘CP275’ and ‘EBCDIC-BR’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM277’ ‘EBCDIC-CP-DK’ and ‘EBCDIC-CP-NO’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM278’ ‘278’, ‘CP278’, ‘ebcdic-cp-fi’ and ‘ebcdic-cp-se’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM280’ ‘280’, ‘CP280’ and ‘ebcdic-cp-it’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM281’ ‘281’, ‘CP281’ and ‘EBCDIC-JP-E’ are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. ‘IBM284’ ‘284’, ‘CP284’ and ‘ebcdic-cp-es’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM285’ ‘285’, ‘CP285’ and ‘ebcdic-cp-gb’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM290’ ‘290’, ‘CP290’ and ‘EBCDIC-JP-kana’ are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. ‘IBM297’ ‘297’, ‘CP297’ and ‘ebcdic-cp-fr’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM420’ ‘420’, ‘CP420’ and ‘ebcdic-cp-ar1’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. IBM NLS RM p 11-11. ‘IBM423’ ‘423’, ‘CP423’ and ‘ebcdic-cp-gr’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM424’ ‘424’, ‘CP424’ and ‘ebcdic-cp-he’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM437’ ‘437’ and ‘CP437’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM500’ ‘500’, ‘500V1’, ‘CP500’, ‘ebcdic-cp-be’ and ‘ebcdic-cp-ch’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM850’ ‘850’ and ‘CP850’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. Source: UNICODE 1.0. ‘IBM851’ ‘851’ and ‘CP851’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM852’ ‘852’, ‘CP852’, ‘pcl2’ and ‘pclatin2’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM855’ ‘855’ and ‘CP855’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM857’ ‘857’ and ‘CP857’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM860’ ‘860’ and ‘CP860’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM861’ ‘861’, ‘CP861’ and ‘cp-is’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM862’ ‘862’ and ‘CP862’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM863’ ‘863’ and ‘CP863’ are aliases for this charset. Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991. ‘IBM864’ ‘864’ and ‘CP864’ are aliases for this charset. Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991. ‘IBM865’ ‘865’ and ‘CP865’ are aliases for this charset. Source: IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987). ‘IBM868’ ‘868’, ‘CP868’ and ‘cp-ar’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM869’ ‘869’, ‘CP869’ and ‘cp-gr’ are aliases for this charset. Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991. ‘IBM870’ ‘870’, ‘CP870’, ‘ebcdic-cp-roece’ and ‘ebcdic-cp-yu’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM871’ ‘871’, ‘CP871’ and ‘ebcdic-cp-is’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM875’ ‘875’, ‘CP875’ and ‘EBCDIC-Greek’ are aliases for this charset. Source: UNICODE 1.0. ‘IBM880’ ‘880’, ‘CP880’ and ‘EBCDIC-Cyrillic’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM891’ ‘891’ and ‘CP891’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM903’ ‘903’ and ‘CP903’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM904’ ‘904’ and ‘CP904’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IBM905’ ‘905’, ‘CP905’ and ‘ebcdic-cp-tr’ are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. ‘IBM918’ ‘918’, ‘CP918’ and ‘ebcdic-cp-ar2’ are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. ‘IEC_P27-1’ ‘iso-ir-143’ is an alias for this charset. Source: ISO 2375 registry. ‘INIS’ ‘iso-ir-49’ is an alias for this charset. Source: ISO 2375 registry. ‘INIS-8’ ‘iso-ir-50’ is an alias for this charset. Source: ISO 2375 registry. ‘INIS-cyrillic’ ‘iso-ir-51’ is an alias for this charset. Source: ISO 2375 registry. ‘INVARIANT’ ‘iso-ir-170’ is an alias for this charset. ‘ISO-8859-1’ ‘819’, ‘CP819’, ‘IBM819’, ‘ISO8859-1’, ‘ISO_8859-1’, ‘ISO_8859-1:1987’, ‘iso-ir-100’, ‘l1’ and ‘latin1’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO-8859-10’ ‘ISO8859-10’, ‘ISO_8859-10’, ‘ISO_8859-10:1993’, ‘L6’, ‘iso-ir-157’ and ‘latin6’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO-8859-13’ ‘ISO8859-13’, ‘ISO_8859-13’, ‘ISO_8859-13:1998’, ‘iso-baltic’, ‘iso-ir-179a’, ‘l7’ and ‘latin7’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO-8859-14’ ‘ISO8859-14’, ‘ISO_8859-14’, ‘ISO_8859-14:1998’, ‘iso-celtic’, ‘iso-ir-199’, ‘l8’ and ‘latin8’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO-8859-15’ ‘ISO8859-15’, ‘ISO_8859-15’, ‘ISO_8859-15:1998’, ‘iso-ir-203’, ‘l9’ and ‘latin9’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO-8859-2’ ‘912’, ‘CP912’, ‘IBM912’, ‘ISO8859-2’, ‘ISO_8859-2’, ‘ISO_8859-2:1987’, ‘iso-ir-101’, ‘l2’ and ‘latin2’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO-8859-3’ ‘ISO8859-3’, ‘ISO_8859-3’, ‘ISO_8859-3:1988’, ‘iso-ir-109’, ‘l3’ and ‘latin3’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO-8859-4’ ‘ISO8859-4’, ‘ISO_8859-4’, ‘ISO_8859-4:1988’, ‘iso-ir-110’, ‘l4’ and ‘latin4’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO-8859-5’ ‘ISO8859-5’, ‘ISO_8859-5’, ‘ISO_8859-5:1988’, ‘cyrillic’ and ‘iso-ir-144’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO-8859-6’ ‘ASMO-708’, ‘ECMA-114’, ‘ISO8859-6’, ‘ISO_8859-6’, ‘ISO_8859-6:1987’, ‘arabic’ and ‘iso-ir-127’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO-8859-7’ ‘ECMA-118’, ‘ELOT_928’, ‘ISO8859-7’, ‘ISO_8859-7’, ‘ISO_8859-7:1987’, ‘greek’, ‘greek8’ and ‘iso-ir-126’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO-8859-8’ ‘ISO8859-8’, ‘ISO_8859-8’, ‘ISO_8859-8:1988’, ‘hebrew’ and ‘iso-ir-138’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO-8859-9’ ‘ISO8859-9’, ‘ISO_8859-9’, ‘ISO_8859-9:1989’, ‘iso-ir-148’, ‘l5’ and ‘latin5’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO_10367-box’ ‘iso-ir-155’ is an alias for this charset. Source: ISO 2375 registry. ‘ISO_2033-1983’ ‘e13b’ and ‘iso-ir-98’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO_5427’ ‘iso-ir-37’ is an alias for this charset. Source: ISO 2375 registry. ‘ISO_5427-ext’ ‘ISO_5427:1981’ and ‘iso-ir-54’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO_5428’ ‘ISO_5428:1980’ and ‘iso-ir-55’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO_646.basic’ ‘ISO_646.basic:1983’ and ‘ref’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO_646.irv’ ‘ISO_646.irv:1983’, ‘irv’ and ‘iso-ir-2’ are aliases for this charset. Source: ISO 2375 registry. ‘ISO_6937-2-25’ ‘iso-ir-152’ is an alias for this charset. Source: ISO 2375 registry. ‘ISO_8859-supp’ ‘iso-ir-154’ and ‘latin1-2-5’ are aliases for this charset. Source: ISO 2375 registry. ‘IT’ ‘ISO646-IT’ and ‘iso-ir-15’ are aliases for this charset. Source: ISO 2375 registry. ‘JIS_C6220-1969-jp’ ‘JIS_C6220-1969’, ‘iso-ir-13’, ‘katakana’ and ‘x0201-7’ are aliases for this charset. Source: ISO 2375 registry. ‘JIS_C6220-1969-ro’ ‘ISO646-JP’, ‘iso-ir-14’ and ‘jp’ are aliases for this charset. Source: ISO 2375 registry. ‘JIS_C6229-1984-a’ ‘jp-ocr-a’ is an alias for this charset. Source: ISO 2375 registry. ‘JIS_C6229-1984-b’ ‘ISO646-JP-OCR-B’ and ‘jp-ocr-b’ are aliases for this charset. Source: ISO 2375 registry. ‘JIS_C6229-1984-b-add’ ‘iso-ir-93’ and ‘jp-ocr-b-add’ are aliases for this charset. Source: ISO 2375 registry. ‘JIS_C6229-1984-hand’ ‘iso-ir-94’ and ‘jp-ocr-hand’ are aliases for this charset. Source: ISO 2375 registry. ‘JIS_C6229-1984-hand-add’ ‘iso-ir-95’ and ‘jp-ocr-hand-add’ are aliases for this charset. Source: ISO 2375 registry. ‘JIS_C6229-1984-kana’ ‘iso-ir-96’ is an alias for this charset. Source: ISO 2375 registry. ‘JIS_X0201’ ‘X0201’ is an alias for this charset. ‘JUS_I.B1.002’ ‘ISO646-YU’, ‘iso-ir-141’, ‘js’ and ‘yu’ are aliases for this charset. Source: ISO 2375 registry. ‘JUS_I.B1.003-mac’ ‘iso-ir-147’ and ‘macedonian’ are aliases for this charset. Source: ISO 2375 registry. ‘JUS_I.B1.003-serb’ ‘iso-ir-146’ and ‘serbian’ are aliases for this charset. Source: ISO 2375 registry. ‘KOI-7’ Source: Andrey A. Chernov . ‘KOI-8’ ‘GOST_19768-74’ is an alias for this charset. Source: Andrey A. Chernov . ‘KOI8-R’ Source: RFC1489 via Gabor Kiss . And Andrey A. Chernov . ‘KOI8-RU’ Source: http://cad.ntu-kpi.kiev.ua/multiling/koi8-ru/. ‘KOI8-U’ Source: RFC 2319. Mibenum: 2088. Source: http://www.net.ua/KOI8-U/. ‘KSC5636’ ‘ISO646-KR’ is an alias for this charset. ‘Latin-greek-1’ ‘iso-ir-27’ is an alias for this charset. Source: ISO 2375 registry. ‘MSZ_7795.3’ ‘ISO646-HU’, ‘hu’ and ‘iso-ir-86’ are aliases for this charset. Source: ISO 2375 registry. ‘NATS-DANO’ ‘iso-ir-9-1’ is an alias for this charset. Source: ISO 2375 registry. ‘NATS-DANO-ADD’ ‘iso-ir-9-2’ is an alias for this charset. Source: ISO 2375 registry. ‘NATS-SEFI’ ‘iso-ir-8-1’ is an alias for this charset. Source: ISO 2375 registry. ‘NATS-SEFI-ADD’ ‘iso-ir-8-2’ is an alias for this charset. Source: ISO 2375 registry. ‘NC_NC00-10’ ‘ISO646-CU’, ‘NC_NC00-10:81’, ‘cuba’ and ‘iso-ir-151’ are aliases for this charset. Source: ISO 2375 registry. ‘NF_Z_62-010’ ‘ISO646-FR’, ‘fr’ and ‘iso-ir-69’ are aliases for this charset. Source: ISO 2375 registry. ‘NF_Z_62-010_(1973)’ ‘ISO646-FR1’ and ‘iso-ir-25’ are aliases for this charset. Source: ISO 2375 registry. ‘NS_4551-1’ ‘ISO646-NO’, ‘iso-ir-60’ and ‘no’ are aliases for this charset. Source: ISO 2375 registry. ‘NS_4551-2’ ‘ISO646-NO2’, ‘iso-ir-61’ and ‘no2’ are aliases for this charset. Source: ISO 2375 registry. ‘NeXTSTEP’ ‘next’ is an alias for this charset. Source: Peter Svanberg - psv@nada.kth.se. ‘PT’ ‘ISO646-PT’ and ‘iso-ir-16’ are aliases for this charset. Source: ISO 2375 registry. ‘PT2’ ‘ISO646-PT2’ and ‘iso-ir-84’ are aliases for this charset. Source: ISO 2375 registry. ‘SEN_850200_B’ ‘FI’, ‘ISO646-FI’, ‘ISO646-SE’, ‘SS636127’, ‘iso-ir-10’ and ‘se’ are aliases for this charset. Source: ISO 2375 registry. ‘SEN_850200_C’ ‘ISO646-SE2’, ‘iso-ir-11’ and ‘se2’ are aliases for this charset. Source: ISO 2375 registry. ‘T.61-7bit’ ‘iso-ir-102’ is an alias for this charset. Source: ISO 2375 registry. ‘baltic’ ‘iso-ir-179’ is an alias for this charset. Source: ISO 2375 registry. &g1esc x2d56 &g2esc x2e56 &g3esc x2f56. ‘greek-ccitt’ ‘iso-ir-150’ is an alias for this charset. Source: ISO 2375 registry. ‘greek7’ ‘iso-ir-88’ is an alias for this charset. Source: ISO 2375 registry. ‘greek7-old’ ‘iso-ir-18’ is an alias for this charset. Source: ISO 2375 registry. ‘hp-roman8’ ‘r8’ and ‘roman8’ are aliases for this charset. Source: LaserJet IIP Printer User's Manual,. HP part no 33471-90901, Hewlet-Packard, June 1989. ‘latin-greek’ ‘iso-ir-19’ is an alias for this charset. Source: ISO 2375 registry. ‘mac-is’ ‘macintosh’ ‘mac’ is an alias for this charset. Source: The Unicode Standard ver 1.0, ISBN 0-201-56788-1, Oct 1991. ‘macintosh_ce’ ‘macce’ is an alias for this charset. Source: Macintosh CE fonts. ‘sami’ ‘iso-ir-158’, ‘lap’ and ‘latin-lap’ are aliases for this charset. Source: ISO 2375 registry.  File: recode.info, Node: ASCII misc, Next: IBM and MS, Prev: Tabular, Up: Top 8 ASCII and some derivatives **************************** * Menu: * ASCII:: Usual ASCII * ISO 8859:: ASCII extended by Latin Alphabets * ASCII-BS:: ASCII 7-bits, ‘BS’ to overstrike * flat:: ASCII without diacritics nor underline  File: recode.info, Node: ASCII, Next: ISO 8859, Prev: ASCII misc, Up: ASCII misc 8.1 Usual ASCII =============== This charset is available in Recode under the name ‘ASCII’. In fact, its true name is ‘ANSI_X3.4-1968’ as per RFC 1345, accepted aliases being ‘ANSI_X3.4-1986’, ‘ASCII’, ‘IBM367’, ‘ISO646-US’, ‘ISO_646.irv:1991’, ‘US-ASCII’, ‘cp367’, ‘iso-ir-6’ and ‘us’. The shortest way of specifying it in Recode is ‘us’. This documentation used to include ASCII tables. They have been removed since the ‘recode’ program can now recreate these easily: recode -lf us for commented ASCII recode -ld us for concise decimal table recode -lo us for concise octal table recode -lh us for concise hexadecimal table  File: recode.info, Node: ISO 8859, Next: ASCII-BS, Prev: ASCII, Up: ASCII misc 8.2 ASCII extended by Latin Alphabets ===================================== There are many Latin charsets. The following has been written by Tim Lasko , a long while ago: ISO Latin-1, or more completely ISO Latin Alphabet No 1, is now an international standard as of February 1987 (IS 8859, Part 1). For those American USEnet'rs that care, the 8-bit ASCII standard, which is essentially the same code, is going through the final administrative processes prior to publication. ISO Latin-1 (IS 8859/1) is actually one of an entire family of eight-bit one-byte character sets, all having ASCII on the left hand side, and with varying repertoires on the right hand side: • Latin Alphabet No 1 (caters to Western Europe - now approved). • Latin Alphabet No 2 (caters to Eastern Europe - now approved). • Latin Alphabet No 3 (caters to SE Europe + others - in draft ballot). • Latin Alphabet No 4 (caters to Northern Europe - in draft ballot). • Latin-Cyrillic alphabet (right half all Cyrillic - processing currently suspended pending USSR input). • Latin-Arabic alphabet (right half all Arabic - now approved). • Latin-Greek alphabet (right half Greek + symbols - in draft ballot). • Latin-Hebrew alphabet (right half Hebrew + symbols - proposed). The ISO Latin Alphabet 1 is available as a charset in Recode under the name ‘Latin-1’. In fact, its true name is ‘ISO_8859-1:1987’ as per RFC 1345, accepted aliases being ‘CP819’, ‘IBM819’, ‘ISO-8859-1’, ‘ISO_8859-1’, ‘iso-ir-100’, ‘l1’ and ‘Latin-1’. The shortest way of specifying it in Recode is ‘l1’. It is an eight-bit code which coincides with ASCII for the lower half. This documentation used to include Latin-1 tables. They have been removed since the ‘recode’ program can now recreate these easily: recode -lf l1 for commented ISO Latin-1 recode -ld l1 for concise decimal table recode -lo l1 for concise octal table recode -lh l1 for concise hexadecimal table  File: recode.info, Node: ASCII-BS, Next: flat, Prev: ISO 8859, Up: ASCII misc 8.3 ASCII 7-bits, ‘BS’ to overstrike ==================================== This charset is available in Recode under the name ‘ASCII-BS’, with ‘BS’ as an acceptable alias. The file is straight ASCII, seven bits only. According to the definition of ASCII, diacritics are applied by a sequence of three characters: the letter, one ‘BS’, the diacritic mark. We deviate slightly from this by exchanging the diacritic mark and the letter so, on a screen device, the diacritic will disappear and let the letter alone. At recognition time, both methods are acceptable. The French quotes are coded by the sequences: ‘< BS "’ or ‘" BS <’ for the opening quote and ‘> BS "’ or ‘" BS >’ for the closing quote. This artificial convention was inherited in straight ‘ASCII-BS’ from habits around ‘Bang-Bang’ entry, and is not well known. But we decided to stick to it so that ‘ASCII-BS’ charset will not lose French quotes. The ‘ASCII-BS’ charset is independent of ‘ASCII’, and different. The following examples demonstrate this, knowing at advance that ‘!2’ is the ‘Bang-Bang’ way of representing an ‘e’ with an acute accent. Compare: % echo \!2 | recode -v bang..l1/d Request: Bang-Bang..ISO-8859-1/Decimal-1 233, 10 with: % echo \!2 | recode -v bang..bs/d Request: Bang-Bang..ISO-8859-1..ASCII-BS/Decimal-1 39, 8, 101, 10 In the first case, the ‘e’ with an acute accent is merely transmitted by the ‘Latin-1..ASCII’ mapping, not having a special recoding rule for it. In the ‘Latin-1..ASCII-BS’ case, the acute accent is applied over the ‘e’ with a backspace: diacriticised characters have special rules. For the ‘ASCII-BS’ charset, reversibility is still possible, but there might be difficult cases.  File: recode.info, Node: flat, Prev: ASCII-BS, Up: ASCII misc 8.4 ASCII without diacritics nor underline ========================================== This charset is available in Recode under the name ‘flat’. This code is ASCII expunged of all diacritics and underlines, as long as they are applied using three character sequences, with ‘BS’ in the middle. Also, despite slightly unrelated, each control character is represented by a sequence of two or three graphic characters. The newline character, however, keeps its functionality and is not represented. Note that charset ‘flat’ is a terminal charset. We can convert _to_ ‘flat’, but not _from_ it.  File: recode.info, Node: IBM and MS, Next: CDC, Prev: ASCII misc, Up: Top 9 Some IBM or Microsoft charsets ******************************** Recode provides various IBM or Microsoft code pages (*note Tabular::). An easy way to find them all at once out of Recode itself is through the command: recode -l | egrep -i '(CP|IBM)[0-9]' But also, see few special charsets presented in the incoming sections. * Menu: * EBCDIC:: EBCDIC codes * IBM-PC:: IBM's PC code * Icon-QNX:: Unisys' Icon code  File: recode.info, Node: EBCDIC, Next: IBM-PC, Prev: IBM and MS, Up: IBM and MS 9.1 EBCDIC code =============== This charset is the IBM's External Binary Coded Decimal for Interchange Coding. This is an eight bits code. The following three variants were implemented in Recode independently of RFC 1345: ‘EBCDIC’ In Recode, the ‘us..ebcdic’ conversion is identical to ‘dd conv=ebcdic’ conversion, and Recode ‘ebcdic..us’ conversion is identical to ‘dd conv=ascii’ conversion. This charset also represents the way Control Data Corporation relates EBCDIC to 8-bits ASCII. ‘EBCDIC-CCC’ In Recode, the ‘us..ebcdic-ccc’ or ‘ebcdic-ccc..us’ conversions represent the way Concurrent Computer Corporation (formerly Perkin Elmer) relates EBCDIC to 8-bits ASCII. ‘EBCDIC-IBM’ In Recode, the ‘us..ebcdic-ibm’ conversion is _almost_ identical to the GNU ‘dd conv=ibm’ conversion. Given the exact ‘dd conv=ibm’ conversion table, Recode once said: Codes 91 and 213 both recode to 173 Codes 93 and 229 both recode to 189 No character recodes to 74 No character recodes to 106 So I arbitrarily chose to recode 213 by 74 and 229 by 106. This makes the ‘EBCDIC-IBM’ recoding reversible, but this is not necessarily the best correction. In any case, I think that GNU ‘dd’ should be amended. ‘dd’ and Recode should ideally agree on the same correction. So, this table might change once again. RFC 1345 brings into Recode 15 other EBCDIC charsets, and 21 other charsets having EBCDIC in at least one of their alias names. You can get a list of all these by executing: recode -l | grep -i ebcdic Note that Recode may convert a pure stream of EBCDIC characters, but it does not know how to handle binary data between records which is sometimes used to delimit them and build physical blocks. If end of lines are not marked, fixed record size may produce something readable, but ‘VB’ or ‘VBS’ blocking is likely to yield some garbage in the converted results.  File: recode.info, Node: IBM-PC, Next: Icon-QNX, Prev: EBCDIC, Up: IBM and MS 9.2 IBM's PC code ================= This charset is available in Recode under the name ‘IBM-PC’, with ‘dos’, ‘MSDOS’ and ‘pc’ as acceptable aliases. The shortest way of specifying it in Recode is ‘pc’. The charset is aimed towards a PC microcomputer from IBM or any compatible. This is an eight-bit code. This charset is fairly old in Recode, its tables were produced a long while ago by mere inspection of a printed chart of the IBM-PC codes and glyph. It has ‘CR-LF’ as its implied surface. This means that, if the original end of lines have to be preserved while going out of ‘IBM-PC’, they should currently be added back through the usage of a surface on the other charset, or better, just never removed. Here are examples for both cases: recode pc..l2/cl < INPUT > OUTPUT recode pc/..l2 < INPUT > OUTPUT RFC 1345 brings into Recode 44 ‘IBM’ charsets or code pages, and also 8 other code pages. You can get a list of these all these by executing:(1) recode -l | egrep -i '(CP|IBM)[0-9]' All charset or aliases beginning with letters ‘CP’ or ‘IBM’ also have ‘CR-LF’ as their implied surface. The same is true for a purely numeric alias in the same family. For example, all of ‘819’, ‘CP819’ and ‘IBM819’ imply ‘CR-LF’ as a surface. Note that ‘ISO-8859-1’ does _not_ imply a surface, despite it shares the same tabular data as ‘819’. There are a few discrepancies between this ‘IBM-PC’ charset and the very similar RFC 1345 charset ‘ibm437’. The ‘IBM-PC’ charset has two extra characters at positions 20 (Latin-1 ‘0xB6’, Pilcrow) and 21 (Latin-1 ‘0xA7’, Section sign); further, it has position 250 as ‘0xB7’, middle dot, while ‘ibm437’ has middle dot at position 249. According to this comparison of code tables: the source for RFC 1345, ‘dkuug.dk/IBM437.TXT’ is the only source that thus defines this mapping. ---------- Footnotes ---------- (1) On DOS/Windows, stock shells do not know that apostrophes quote special characters like ‘|’, so one needs to use double quotes instead of apostrophes.  File: recode.info, Node: Icon-QNX, Prev: IBM-PC, Up: IBM and MS 9.3 Unisys' Icon code ===================== This charset is available in Recode under the name ‘Icon-QNX’, with ‘QNX’ as an acceptable alias. The file is using Unisys' Icon way to represent diacritics with code 25 escape sequences, under the system QNX. This is a seven-bit code, even if eight-bit codes can flow through as part of IBM-PC charset.  File: recode.info, Node: CDC, Next: Micros, Prev: IBM and MS, Up: Top 10 Charsets for CDC machines **************************** What is now Recode evolved out, through many transformations really, from a set of programs which were originally written in “COMPASSâ€, Control Data Corporation's assembler, with bits in FORTRAN, and later rewritten in CDC 6000 Pascal. The CDC heritage shows by the fact some old CDC charsets are still supported. The Recode author used to be familiar with CDC Scope-NOS/BE and Kronos-NOS, and many CDC formats. Reading CDC tapes directly on other machines is often a challenge, and Recode does not always solve it. It helps having tapes created in coded mode instead of binary mode, and using ‘S’ (Stranger) tapes instead of ‘I’ (Internal) tapes. ANSI labels and multi-file tapes might be the source of trouble. There are ways to handle a few Cyber Record Manager formats, but some of them might be quite difficult to decode properly after the transfer is done. Recode is usable only for a small subset of NOS text formats, and surely not with binary textual formats, like ‘UPDATE’ or ‘MODIFY’ sources, for example. Recode is not especially suited for reading 8/12 or 56/60 packing, yet this could easily arranged if there was a demand for it. It does not have the ability to translate Display Code directly, as the ASCII conversion implied by tape drivers or FTP does the initial approximation. Recode can decode 6/12 caret notation over Display Code already mapped to ASCII. * Menu: * Display Code:: Control Data's Display Code * CDC-NOS:: ASCII 6/12 from NOS * Bang-Bang:: ASCII "bang bang"  File: recode.info, Node: Display Code, Next: CDC-NOS, Prev: CDC, Up: CDC 10.1 Control Data's Display Code ================================ This code is not available in Recode, but repeated here for reference. This is a 6-bit code used on CDC mainframes. Octal display code to graphic Octal display code to octal ASCII 00 : 20 P 40 5 60 # 00 072 20 120 40 065 60 043 01 A 21 Q 41 6 61 [ 01 101 21 121 41 066 61 133 02 B 22 R 42 7 62 ] 02 102 22 122 42 067 62 135 03 C 23 S 43 8 63 % 03 103 23 123 43 070 63 045 04 D 24 T 44 9 64 " 04 104 24 124 44 071 64 042 05 E 25 U 45 + 65 _ 05 105 25 125 45 053 65 137 06 F 26 V 46 - 66 ! 06 106 26 126 46 055 66 041 07 G 27 W 47 * 67 & 07 107 27 127 47 052 67 046 10 H 30 X 50 / 70 ' 10 110 30 130 50 057 70 047 11 I 31 Y 51 ( 71 ? 11 111 31 131 51 050 71 077 12 J 32 Z 52 ) 72 < 12 112 32 132 52 051 72 074 13 K 33 0 53 $ 73 > 13 113 33 060 53 044 73 076 14 L 34 1 54 = 74 @ 14 114 34 061 54 075 74 100 15 M 35 2 55 75 \ 15 115 35 062 55 040 75 134 16 N 36 3 56 , 76 ^ 16 116 36 063 56 054 76 136 17 O 37 4 57 . 77 ; 17 117 37 064 57 056 77 073 In older times, ‘:’ used octal 63, and octal 0 was not a character. The table above shows the ASCII glyph interpretation of codes 60 to 77, yet these 16 codes were once defined differently. There is no explicit end of line in Display Code, and the Cyber Record Manager introduced many new ways to represent them, the traditional end of lines being reachable by setting ‘RT’ to ‘Z’. If 6-bit bytes in a file are sequentially counted from 1, a traditional end of line does exist if bytes 10*N+9 and 10N+10 are both zero for a given N, in which case these two bytes are not to be interpreted as ‘::’. Also, up to 9 immediately preceeding zero bytes, going backward, are to be considered as part of the end of line and not interpreted as ‘:’(1). ---------- Footnotes ---------- (1) This convention replaced an older one saying that up to 4 immediately preceeding _pairs_ of zero bytes, going backward, are to be considered as part of the end of line and not interpreted as ‘::’.  File: recode.info, Node: CDC-NOS, Next: Bang-Bang, Prev: Display Code, Up: CDC 10.2 ASCII 6/12 from NOS ======================== This charset is available in Recode under the name ‘CDC-NOS’, with ‘NOS’ as an acceptable alias. This is one of the charsets in use on CDC Cyber NOS systems to represent ASCII, sometimes named “NOS 6/12†code for coding ASCII. This code is also known as “caret ASCIIâ€. It is based on a six bits character set in which small letters and control characters are coded using a ‘^’ escape and, sometimes, a ‘@’ escape. The routines given here presume that the six bits code is already expressed in ASCII by the communication channel, with embedded ASCII ‘^’ and ‘@’ escapes. Here is a table showing which characters are being used to encode each ASCII character. 000 ^5 020 ^# 040 060 0 100 @A 120 P 140 @G 160 ^P 001 ^6 021 ^[ 041 ! 061 1 101 A 121 Q 141 ^A 161 ^Q 002 ^7 022 ^] 042 " 062 2 102 B 122 R 142 ^B 162 ^R 003 ^8 023 ^% 043 # 063 3 103 C 123 S 143 ^C 163 ^S 004 ^9 024 ^" 044 $ 064 4 104 D 124 T 144 ^D 164 ^T 005 ^+ 025 ^_ 045 % 065 5 105 E 125 U 145 ^E 165 ^U 006 ^- 026 ^! 046 & 066 6 106 F 126 V 146 ^F 166 ^V 007 ^* 027 ^& 047 ' 067 7 107 G 127 W 147 ^G 167 ^W 010 ^/ 030 ^' 050 ( 070 8 110 H 130 X 150 ^H 170 ^X 011 ^( 031 ^? 051 ) 071 9 111 I 131 Y 151 ^I 171 ^Y 012 ^) 032 ^< 052 * 072 @D 112 J 132 Z 152 ^J 172 ^Z 013 ^$ 033 ^> 053 + 073 ; 113 K 133 [ 153 ^K 173 ^0 014 ^= 034 ^@ 054 , 074 < 114 L 134 \ 154 ^L 174 ^1 015 ^ 035 ^\ 055 - 075 = 115 M 135 ] 155 ^M 175 ^2 016 ^, 036 ^^ 056 . 076 > 116 N 136 @B 156 ^N 176 ^3 017 ^. 037 ^; 057 / 077 ? 117 O 137 _ 157 ^O 177 ^4  File: recode.info, Node: Bang-Bang, Prev: CDC-NOS, Up: CDC 10.3 ASCII "bang bang" ====================== This charset is available in Recode under the name ‘Bang-Bang’. This code, in use on Cybers at Université de Montréal mainly, served to code a lot of French texts. The original name of this charset is “ASCII codé Displayâ€. This code is also known as “Bang-bangâ€. It is based on a six bits character set in which capitals, French diacritics and a few others are coded using an ‘!’ escape followed by a single character, and control characters using a double ‘!’ escape followed by a single character. The routines given here presume that the six bits code is already expressed in ASCII by the communication channel, with embedded ASCII ‘!’ escapes. Here is a table showing which characters are being used to encode each ASCII character. 000 !!@ 020 !!P 040 060 0 100 @ 120 !P 140 !@ 160 P 001 !!A 021 !!Q 041 !" 061 1 101 !A 121 !Q 141 A 161 Q 002 !!B 022 !!R 042 " 062 2 102 !B 122 !R 142 B 162 R 003 !!C 023 !!S 043 # 063 3 103 !C 123 !S 143 C 163 S 004 !!D 024 !!T 044 $ 064 4 104 !D 124 !T 144 D 164 T 005 !!E 025 !!U 045 % 065 5 105 !E 125 !U 145 E 165 U 006 !!F 026 !!V 046 & 066 6 106 !F 126 !V 146 F 166 V 007 !!G 027 !!W 047 ' 067 7 107 !G 127 !W 147 G 167 W 010 !!H 030 !!X 050 ( 070 8 110 !H 130 !X 150 H 170 X 011 !!I 031 !!Y 051 ) 071 9 111 !I 131 !Y 151 I 171 Y 012 !!J 032 !!Z 052 * 072 : 112 !J 132 !Z 152 J 172 Z 013 !!K 033 !![ 053 + 073 ; 113 !K 133 [ 153 K 173 ![ 014 !!L 034 !!\ 054 , 074 < 114 !L 134 \ 154 L 174 !\ 015 !!M 035 !!] 055 - 075 = 115 !M 135 ] 155 M 175 !] 016 !!N 036 !!^ 056 . 076 > 116 !N 136 ^ 156 N 176 !^ 017 !!O 037 !!_ 057 / 077 ? 117 !O 137 _ 157 O 177 !_  File: recode.info, Node: Micros, Next: Miscellaneous, Prev: CDC, Up: Top 11 Other micro-computer charsets ******************************** * Menu: * Mac OS:: Apple's Macintosh code * AtariST:: Atari ST code  File: recode.info, Node: Mac OS, Next: AtariST, Prev: Micros, Up: Micros 11.1 Apple's Macintosh code =========================== RFC 1345 brings 2 Macintosh charsets. You can discover them by using ‘grep’ over the output of ‘recode -l’: recode -l | grep -i mac Charsets ‘macintosh’ and ‘macintosh_ce’, as well as their aliases ‘mac’ and ‘macce’ have ‘CR’ as their implied surface.  File: recode.info, Node: AtariST, Prev: Mac OS, Up: Micros 11.2 Atari ST code ================== This charset is available in Recode under the name ‘AtariST’. This is the character set used on the Atari ST/TT/Falcon. This is similar to ‘IBM-PC’, but differs in some details: it includes some more accented characters, the graphic characters are mostly replaced by Hebrew characters, and there is a true German ‘sharp s’ different from Greek ‘beta’. About the end-of-line conversions: the canonical end-of-line on the Atari is ‘\r\n’, but unlike ‘IBM-PC’, the OS makes no difference between text and binary input/output; it is up to the application how to interpret the data. In fact, most of the libraries that come with compilers can grok both ‘\r\n’ and ‘\n’ as end of lines. Many of the users who also have access to Unix systems prefer ‘\n’ to ease porting Unix utilities. So, for easing reversibility, Recode tries to let ‘\r’ undisturbed through recodings.  File: recode.info, Node: Miscellaneous, Next: Surfaces, Prev: Micros, Up: Top 12 Various other charsets ************************* A few charsets do not fit well in the previous chapters, and are grouped here. Some of them were added to Recode long ago, at a time this tool was mainly meant for handling texts written in French. The bias still shows when these charsets are linked to ‘Latin-1’ instead of the wider ‘Unicode’, but this is being corrected as Recode evolves. * Menu: * HTML:: World Wide Web representations * LaTeX:: LaTeX macro calls * BibTeX:: BibTeX macro calls * Texinfo:: GNU project documentation files * ISO 5426 and ANSEL:: Bibliographic character sets * Vietnamese:: Vietnamese charsets * African:: African charsets * Others:: Cyrillic and other charsets * Java:: Java code * Texte:: Easy French conventions * Mule:: Mule as a multiplexed charset  File: recode.info, Node: HTML, Next: LaTeX, Prev: Miscellaneous, Up: Miscellaneous 12.1 World Wide Web representations =================================== Character entities have been introduced by SGML and made widely popular through HTML, the markup language in use for the World Wide Web, or Web or WWW for short. For representing _unusual_ characters, HTML texts use special sequences, beginning with an ampersand ‘&’ and ending with a semicolon ‘;’. The sequence may itself start with a number sigh ‘#’ and be followed by digits, so forming a “numeric character referenceâ€, or else be an alphabetic identifier, so forming a “character entity referenceâ€. The HTML standards have been revised into different HTML levels over time, and the list of allowable character entities differ in them. The later XML, meant to simplify many things, has an option (‘standalone=yes’) which much restricts that list. The Recode library is able to convert character references between their mnemonic form and their numeric form, depending on aimed HTML standard level. It also can, of course, convert between HTML and various other charsets. Here is a list of those HTML variants which Recode supports. Some notes have been provided by François Yergeau . ‘XML-standalone’ This charset is available in Recode under the name ‘XML-standalone’, with ‘h0’ as an acceptable alias. It is documented in section 4.1 of . It only knows ‘&’, ‘>’, ‘<’, ‘"’ and ‘'’. ‘HTML_1.1’ This charset is available in Recode under the name ‘HTML_1.1’, with ‘h1’ as an acceptable alias. HTML 1.0 was never really documented. ‘HTML_2.0’ This charset is available in Recode under the name ‘HTML_2.0’, and has ‘RFC1866’, ‘1866’ and ‘h2’ for aliases. HTML 2.0 entities are listed in RFC 1866. Basically, there is an entity for each _alphabetical_ character in the right part of ISO 8859-1. In addition, there are four entities for syntax-significant ASCII characters: ‘&’, ‘>’, ‘<’ and ‘"’. ‘HTML-i18n’ This charset is available in Recode under the name ‘HTML-i18n’, and has ‘RFC2070’ and ‘2070’ for aliases. RFC 2070 added entities to cover the whole right part of ISO 8859-1. The list is conveniently accessible at . In addition, four i18n-related entities were added: ‘‌’ (‘‌’), ‘‍’ (‘‍’), ‘‎’ (‘‎’) and ‘‏’ (‘‏’). ‘HTML_3.2’ This charset is available in Recode under the name ‘HTML_3.2’, with ‘h3’ as an acceptable alias. HTML 3.2 (http://www.w3.org/TR/REC-html32.html) took up the full Latin-1 list but not the i18n-related entities from RFC 2070. ‘HTML_4.0’ This charset is available in Recode under the name ‘HTML_4.0’, and has ‘h4’ and ‘h’ for aliases. Beware that the particular alias ‘h’ is not _tied_ to HTML 4.0, but to the highest HTML level supported by Recode; so it might later represent HTML level 5 if this is ever created. HTML 4.0 (http://www.w3.org/TR/REC-html40/) has the whole Latin-1 list, a set of entities for symbols, mathematical symbols, and Greek letters, and another set for markup-significant and internationalization characters comprising the 4 ASCII entities, the 4 i18n-related from RFC 2070 plus some more. See . Printable characters from Latin-1 may be used directly in an HTML text. However, partly because people have deficient keyboards, partly because people want to transmit HTML texts over non 8-bit clean channels while not using MIME, it is common (yet debatable) to use character entity references even for Latin-1 characters, when they fall outside ASCII (that is, when they have the 8th bit set). When you recode from another charset to ‘HTML’, beware that all occurrences of double quotes, ampersands, and left or right angle brackets are translated into special sequences. However, in practice, people often use ampersands and angle brackets in the other charset for introducing HTML commands, compromising it: it is not pure HTML, not it is pure other charset. These particular translations can be rather inconvenient, they may be specifically inhibited through the command option ‘-d’ (*note Mixed::). Codes not having a mnemonic entity are output by Recode using the ‘&#NNN;’ notation, where NNN is a decimal representation of the UCS code value. When there is an entity name for a character, it is always preferred over a numeric character reference. ASCII printable characters are always generated directly. So is the newline. While reading HTML, Recode supports numeric character reference as alternate writings, even when written as hexadecimal numbers, as in ‘�’. This is documented in: http://www.w3.org/TR/REC-html40/intro/sgmltut.html#h-3.2.3 When Recode translates to HTML, the translation occurs according to the HTML level as selected by the goal charset. When translating _from_ HTML, Recode not only accepts the character entity references known at that level, but also those of all other levels, as well as a few alternative special sequences, to be forgiving to files using other HTML standards. Recode can be used to _normalise_ an HTML file using oldish conventions. For example, it accepts ‘&AE;’, as this once was a valid writing, somewhere. However, it should always produce ‘Æâ€™ instead of ‘&AE;’. Yet, this is not completely true. If one does: recode h3..h3 < INPUT the operation will be optimised into a mere copy, and you can get ‘&AE;’ this way, if you had some in your input file. But if you explicitly defeat the optimisation, like this maybe: recode h3..u2,u2..h3 < INPUT then ‘&AE;’ should be normalised into ‘Æâ€™ by the operation.  File: recode.info, Node: LaTeX, Next: BibTeX, Prev: HTML, Up: Miscellaneous 12.2 LaTeX macro calls ====================== This charset is available in Recode under the name ‘LaTeX’ and has ‘ltex’ as an alias. It is used for ASCII files coded to be read by LaTeX or, in certain cases, by TeX. Whenever you recode from another charset to ‘LaTeX’, beware that all occurrences of backslashes ‘\’ are translated into the string ‘\backslash{}’. However, in practice, people often use backslashes in the other charset for introducing TeX commands, compromising it: it is not pure TeX, nor it is pure other charset. This translation of backslashes into ‘\backslash{}’ can be rather inconvenient, it may be inhibited through the command option ‘-d’ (*note Mixed::).  File: recode.info, Node: BibTeX, Next: Texinfo, Prev: LaTeX, Up: Miscellaneous 12.3 BibTeX macro calls ======================= This charset is available in Recode under the name ‘BibTeX’ with aliases ‘bibtex’ and ‘btex’. It is used for ASCII files coded to be read by BibTeX or, in certain cases, by LaTeX or TeX. This charset is very similar to ‘LaTeX’. The only difference is that diacritics are enclosed between ‘{}’. Refer to ‘LaTeX’ charset for further information. *Note LaTeX::.  File: recode.info, Node: Texinfo, Next: ISO 5426 and ANSEL, Prev: BibTeX, Up: Miscellaneous 12.4 GNU project documentation files ==================================== This charset is available in Recode under the name ‘Texinfo’ and has ‘texi’ and ‘ti’ for aliases. It is used by the GNU project for its documentation. Texinfo files may be converted into Info files by the ‘makeinfo’ program and into nice printed manuals by the TeX system. Even if Recode may transform other charsets to Texinfo, it may not read Texinfo files yet. In these times, usages are also changing between versions of Texinfo, and Recode only partially succeeds in correctly following these changes. So, for now, Texinfo support in Recode should be considered as work still in progress (!).  File: recode.info, Node: ISO 5426 and ANSEL, Next: Vietnamese, Prev: Texinfo, Up: Miscellaneous 12.5 Bibliographic character sets ================================= These two character sets are intended to work with ASCII for exchange of bibliographic information.  File: recode.info, Node: Vietnamese, Next: African, Prev: ISO 5426 and ANSEL, Up: Miscellaneous 12.6 Vietnamese charsets ======================== We are currently trying the implementation, in Recode, of a few character sets and transliterated forms to handle the Vietnamese language. They are quite briefly summarised, here. ‘TCVN’ The TCVN charset has an incomplete name. It might be one of the three charset ‘VN1’, ‘VN2’ or ‘VN3’. Yes ‘VN2’ might be a second version of ‘VISCII’. To be clarified. ‘VISCII’ This is an 8-bit character set which seems to be rather popular for writing Vietnamese. ‘VPS’ This is an 8-bit character set for Vietnamese. No much reference. ‘VIQR’ The VIQR convention is a 7-bit, ‘ASCII’ transliteration for Vietnamese. ‘VNI’ The VNI convention is a 8-bit, ‘Latin-1’ transliteration for Vietnamese. Still lacking for Vietnamese in Recode, are the charsets ‘CP1129’ and ‘CP1258’.  File: recode.info, Node: African, Next: Others, Prev: Vietnamese, Up: Miscellaneous 12.7 African charsets ===================== Some African character sets are available for a few languages, when these are heavily used in countries where French is also currently spoken. One African charset is usable for Bambara, Ewondo and Fulfude, as well as for French. This charset is available in Recode under the name ‘AFRFUL-102-BPI_OCIL’. Accepted aliases are ‘bambara’, ‘bra’, ‘ewondo’ and ‘fulfude’. Transliterated forms of the same are available under the name ‘AFRFUL-103-BPI_OCIL’. Accepted aliases are ‘t-bambara’, ‘t-bra’, ‘t-ewondo’ and ‘t-fulfude’. Another African charset is usable for Lingala, Sango and Wolof, as well as for French. This charset is available in Recode under the name ‘AFRLIN-104-BPI_OCIL’. Accepted aliases are ‘lingala’, ‘lin’, ‘sango’ and ‘wolof’. Transliterated forms of the same are available under the name ‘AFRLIN-105-BPI_OCIL’. Accepted aliases are ‘t-lingala’, ‘t-lin’, ‘t-sango’ and ‘t-wolof’. To ease exchange with ‘ISO-8859-1’, there is a charset conveying transliterated forms for Latin-1 in a way which is compatible with the other African charsets in this series. This charset is available in Recode under the name ‘AFRL1-101-BPI_OCIL’. Accepted aliases are ‘t-fra’ and ‘t-francais’.  File: recode.info, Node: Others, Next: Java, Prev: African, Up: Miscellaneous 12.8 Cyrillic and other charsets ================================ The following Cyrillic charsets are already available in Recode through RFC 1345 tables: ‘CP1251’ with aliases ‘1251’, ‘ ms-cyrl’ and ‘windows-1251’; ‘CSN_369103’ with aliases ‘ISO-IR-139’ and ‘KOI8_L2’; ‘ECMA-cyrillic’ with aliases ‘ECMA-113’, ‘ECMA-113:1986’ and ‘iso-ir-111’, ‘IBM880’ with aliases ‘880’, ‘CP880’ and ‘EBCDIC-Cyrillic’; ‘INIS-cyrillic’ with alias ‘iso-ir-51’; ‘ISO-8859-5’ with aliases ‘cyrillic’, ‘ ISO-8859-5:1988’ and ‘iso-ir-144’; ‘KOI-7’; ‘KOI-8’ with alias ‘GOST_19768-74’; ‘KOI8-R’; ‘KOI8-RU’ and finally ‘KOI8-U’. There seems to remain some confusion in Roman charsets for Cyrillic languages, and because a few users requested it repeatedly, Recode now offers special services in that area. Consider these charsets as experimental and debatable, as the extraneous tables describing them are still a bit fuzzy or non-standard. Hopefully, in the long run, these charsets will be covered in Keld Simonsen's works to the satisfaction of everybody, and this section will merely disappear. ‘KEYBCS2’ This charset is available under the name ‘KEYBCS2’, with ‘Kamenicky’ as an accepted alias. ‘CORK’ This charset is available under the name ‘CORK’, with ‘T1’ as an accepted alias. ‘KOI-8_CS2’ This charset is available under the name ‘KOI-8_CS2’.  File: recode.info, Node: Java, Next: Texte, Prev: Others, Up: Miscellaneous 12.9 Java code ============== This charset is available under the name ‘Java’, and should be considered experimental for now. ASCII characters represent themselves. Character outside ASCII are coded as ‘\uNNNN’, where ‘NNNN’ stands for the four-digit hexadecimal value of the character within Unicode. The canonical representation uses lower case for the ‘u’ prefix and for the hexadecimal digits, yet Recode also accepts upper case. There is currently no attempt to distinguish Java comments from Java strings while the recoding goes, and this may be corrected some day.  File: recode.info, Node: Texte, Next: Mule, Prev: Java, Up: Miscellaneous 12.10 Easy French conventions ============================= This charset is available in Recode under the name ‘Texte’ and has ‘txte’ for an alias. It is a seven bits code, identical to ‘ASCII-BS’, save for French diacritics which are noted using a slightly different convention. At text entry time, these conventions provide a little speed up. At read time, they slightly improve the readability over a few alternate ways of coding diacritics. Of course, it would better to have a specialised keyboard to make direct eight bits entries and fonts for immediately displaying eight bit ISO Latin-1 characters. But not everybody is so fortunate. In a few mailing environments, and sadly enough, it still happens that the eight bit is often willing-fully destroyed. Easy French has been in use in France for a while. I only slightly adapted it (the diaeresis option) to make it more comfortable to several usages in Québec originating from Université de Montréal. In fact, the main problem for me was not to necessarily to invent Easy French, but to recognise the "best" convention to use, (best is not being defined, here) and to try to solve the main pitfalls associated with the selected convention. Shortly said, we have: ‘e'’ for ‘e’ (and some other vowels) with an acute accent, ‘e`’ for ‘e’ (and some other vowels) with a grave accent, ‘e^’ for ‘e’ (and some other vowels) with a circumflex accent, ‘e"’ for ‘e’ (and some other vowels) with a diaeresis, ‘c,’ for ‘c’ with a cedilla. There is no attempt at expressing the ‘ae’ and ‘oe’ diphthongs. French also uses tildes over ‘n’ and ‘a’, but seldomly, and this is not represented either. In some countries, ‘:’ is used instead of ‘"’ to mark diaeresis. Recode supports only one convention per call, depending on the ‘-c’ option of the ‘recode’ command. French quotes (sometimes called "angle quotes") are noted the same way English quotes are noted in TeX, _id est_ by ‘``’ and ‘''’. No effort has been put to preserve Latin ligatures (‘æ’, ‘œ’) which are representable in several other charsets. So, these ligatures may be lost through Easy French conventions. The convention is prone to losing information, because the diacritic meaning overloads some characters that already have other uses. To alleviate this, some knowledge of the French language is boosted into the recognition routines. So, the following subtleties are systematically obeyed by the various recognisers. 1. A comma which follows a ‘c’ is interpreted as a cedilla only if it is followed by one of the vowels ‘a’, ‘o’ or ‘u’. 2. A single quote which follows a ‘e’ does not necessarily means an acute accent if it is followed by a single other one. For example: ‘e'’ will give an ‘e’ with an acute accent. ‘e''’ will give a simple ‘e’, with a closing quotation mark. ‘e'''’ will give an ‘e’ with an acute accent, followed by a closing quotation mark. There is a problem induced by this convention if there are English quotations with a French text. In sentences like: There's a meeting at Archie's restaurant. the single quotes will be mistaken twice for acute accents. So English contractions and suffix possessives could be mangled. 3. A double quote or colon, depending on ‘-c’ option, which follows a vowel is interpreted as diaeresis only if it is followed by another letter. But there are in French several words that _end_ with a diaeresis, and the Recode library is aware of them. There are words ending in "igue", either feminine words without a relative masculine (besaiguë and ciguë), or feminine words with a relative masculine(1) (aiguë, ambiguë, contiguë, exiguë, subaiguë and suraiguë). There are also words not ending in "igue", but instead, either ending by "i"(2) (ai", congai", goi", hai"kai", inoui", sai", samurai", thai" and tokai"), ending by "e" (canoë) or ending by "u"(3) (Esaü). Just to complete this topic, note that it would be wrong to make a rule for all words ending in "igue" as needing a diaerisis, as there are counter-examples (becfigue, bèsigue, bigue, bordigue, bourdigue, brigue, contre-digue, digue, d'intrigue, fatigue, figue, garrigue, gigue, igue, intrigue, ligue, prodigue, sarigue and zigue). ---------- Footnotes ---------- (1) There are supposed to be seven words in this case. So, one is missing. (2) Look at one of the following sentences (the second has to be interpreted with the ‘-c’ option): "Ai"e! Voici le proble`me que j'ai" Ai:e! Voici le proble`me que j'ai: There is an ambiguity between an ai", the small animal, and the indicative future of _avoir_ (first person singular), when followed by what could be a diaeresis mark. Hopefully, the case is solved by the fact that an apostrophe always precedes the verb and almost never the animal. (3) I did not pay attention to proper nouns, but this one showed up as being fairly evident.  File: recode.info, Node: Mule, Prev: Texte, Up: Miscellaneous 12.11 Mule as a multiplexed charset =================================== This version of Recode barely starts supporting multiplexed or super-charsets, that is, those encoding methods by which a single text stream may contain a combination of more than one constituent charset. The only multiplexed charset in Recode is ‘Mule’, and even then, it is only very partially implemented: the only correspondence available is with ‘Latin-1’. The author quickly implemented this only because he needed this for himself. However, it is intended that Mule support to become more real in subsequent releases of Recode. Multiplexed charsets are not to be confused with mixed charset texts (*note Mixed::). For mixed charset input, the rules allowing to distinguish which charset is current, at any given place, are kind of informal, and driven from the semantics of what the file contains. On the other side, multiplexed charsets are _designed_ to be interpreted fairly precisely, and quite independently of any informational context. The spelling ‘Mule’ originally stood for ‘_mul_tilingual _e_nhancement to GNU Emacs’, it is the result of a collective effort orchestrated by Handa Ken'ichi since 1993. When ‘Mule’ got rewritten in the main development stream of GNU Emacs 20, the FSF renamed it ‘MULE’, meaning ‘_mul_tilingual _e_nvironment in GNU Emacs’. Even if the charset ‘Mule’ is meant to stay internal to GNU Emacs, it sometimes breaks loose in external files, and as a consequence, a recoding tool is sometimes needed. Within Emacs, ‘Mule’ comes with ‘Leim’, which stands for ‘_l_ibraries of _e_macs _i_nput _m_ethods’. One of these libraries is named ‘quail’(1). ---------- Footnotes ---------- (1) Usually, quail means quail egg in Japanese, while egg alone is usually chicken egg. Both quail egg and chicken egg are popular food in Japan. The ‘quail’ input system has been named because it is smaller than the previous ‘EGG’ system. As for ‘EGG’, it is the translation of ‘TAMAGO’. This word comes from the Japanese sentence ‘_ta_kusan _ma_tasete _go_mennasai’, meaning ‘sorry to have let you wait so long’. Of course, the publication of ‘EGG’ has been delayed many times... (Story by Takahashi Naoto)  File: recode.info, Node: Surfaces, Next: Internals, Prev: Miscellaneous, Up: Top 13 All about surfaces ********************* A “surface†is the varnish added over a charset so it fits in actual bits and bytes. How end of lines are exactly encoded is not really pertinent to the charset, and so, there is surface for end of lines. ‘Base64’ is also a surface, as we may encode any charset in it. Other examples would DES enciphering, or gzip compression (even if Recode does not offer them currently): these are ways to give a real life to theoretical charsets. The “trivial surface†consists of using a fixed number of bits (often eight) for each character, the bits together hold the integer value of the index for the character in its charset table. There are many kinds of surfaces, beyond the trivial one, all having the purpose of increasing selected qualities for the storage or transmission. For example, surfaces might increase the resistance to channel limits (‘Base64’), the transmission speed (‘gzip’), the information privacy (‘DES’), the conformance to operating system conventions (‘CR-LF’), the blocking into records (‘VB’), and surely other things as well(1). Many surfaces may be applied to a stream of characters from a charset, the order of application of surfaces is important, and surfaces should be removed in the reverse order of their application. Even if surfaces may generally be applied to various charsets, some surfaces were specifically designed for a particular charset, and would not make much sense if applied to other charsets. In such cases, these conceptual surfaces have been implemented as Recode charsets, instead of as surfaces. This choice yields to cleaner syntax and usage. *Note Universal::. Surfaces are implemented within Recode as special charsets which may only transform to or from the ‘data’ special charset. Clever users may use this knowledge for writing surface names in requests exactly as if they were pure charsets, when the only need is to change surfaces without any kind of recoding between real charsets. In such contexts ‘data’ may also be used as if it were some kind of generic, anonymous charset: the request ‘data..SURFACE’ merely adds the given SURFACE, while the request ‘SURFACE..data’ removes it. This chapter presents all surfaces currently available. * Menu: * Permutations:: Permuting groups of bytes * End lines:: Representation for end of lines * MIME:: MIME contents encodings * Dump:: Interpreted character dumps * Test:: Artificial data for testing ---------- Footnotes ---------- (1) These are mere examples to explain the concept, Recode only has ‘Base64’ and ‘CR-LF’, actually.  File: recode.info, Node: Permutations, Next: End lines, Prev: Surfaces, Up: Surfaces 13.1 Permuting groups of bytes ============================== A permutation is a surface transformation which reorders groups of eight-bit bytes. A _21_ permutation exchanges pairs of successive bytes. If the text contains an odd number of bytes, the last byte is merely copied. An _4321_ permutation inverts the order of quadruples of bytes. If the text does not contains a multiple of four bytes, the remaining bytes are nevertheless permuted as _321_ if there are three bytes, _21_ if there are two bytes, or merely copied otherwise. ‘21’ This surface is available in Recode under the name ‘21-Permutation’ and has ‘swabytes’ for an alias. ‘4321’ This surface is available in Recode under the name ‘4321-Permutation’.  File: recode.info, Node: End lines, Next: MIME, Prev: Permutations, Up: Surfaces 13.2 Representation for end of lines ==================================== The same charset might slightly differ, from one system to another, for the single fact that end of lines are not represented identically on all systems. The representation for an end of line within Recode is the ‘ASCII’ or ‘UCS’ code with value 10, or ‘LF’. Other conventions for representing end of lines are available through surfaces. ‘CR’ This convention is popular on Apple's Macintosh machines. When this surface is applied, each line is terminated by ‘CR’, which has ‘ASCII’ value 13. Unless the library is operating in strict mode, adding or removing the surface will in fact _exchange_ ‘CR’ and ‘LF’, for better reversibility. However, in strict mode, the exchange does not happen, any ‘CR’ will be copied verbatim while applying the surface, and any ‘LF’ will be copied verbatim while removing it. This surface is available in Recode under the name ‘CR’, it does not have any aliases. This is the implied surface for the Apple Macintosh related charsets. ‘CR-LF’ This convention is popular on Microsoft systems running on IBM PCs and compatible. When this surface is applied, each line is terminated by a sequence of two characters: one ‘CR’ followed by one ‘LF’, in that order. For compatibility with oldish MS-DOS systems, removing a ‘CR-LF’ surface will discard the first encountered ‘C-z’, which has ‘ASCII’ value 26, and everything following it in the text. Adding this surface will not, however, append a ‘C-z’ to the result. This surface is available in Recode under the name ‘CR-LF’ and has ‘cl’ for an alias. This is the implied surface for the IBM or Microsoft related charsets or code pages. Some other charsets might have their own representation for an end of line, which is different from ‘LF’. For example, this is the case of various ‘EBCDIC’ charsets, or ‘Icon-QNX’. The recoding of end of lines is intimately tied into such charsets, it is not available separately as surfaces.  File: recode.info, Node: MIME, Next: Dump, Prev: End lines, Up: Surfaces 13.3 MIME contents encodings ============================ RFC 2045 defines two 7-bit surfaces, meant to prepare 8-bit messages for transmission. Base64 is especially usable for binary entities, while Quoted-Printable is especially usable for text entities, in those case the lower 128 characters of the underlying charset coincide with ASCII. ‘Base64’ This surface is available in Recode under the name ‘Base64’, with ‘b64’ and ‘64’ as acceptable aliases. ‘Quoted-Printable’ This surface is available in Recode under the name ‘Quoted-Printable’, with ‘quote-printable’ and ‘QP’ as acceptable aliases. Note that ‘UTF-7’, which may be also considered as a MIME surface, is provided as a genuine charset instead, as it necessary relates to ‘UCS-2’ and nothing else. *Note UTF-7::. A little historical note, also showing the three levels of acceptance of Internet standards. MIME changed from a "Proposed Standard" (RFC 1341-1344, 1992) to a "Draft Standard" (RFC 1521-1523) in 1993, and was _recycled_ as a "Draft Standard" in 1996-11. It is not yet a "Full Standard".  File: recode.info, Node: Dump, Next: Test, Prev: MIME, Up: Surfaces 13.4 Interpreted character dumps ================================ Dumps are surfaces meant to express, in ways which are a bit more readable, the bit patterns used to represent characters. They allow the inspection or debugging of character streams, but also, they may assist a bit the production of C source code which, once compiled, would hold in memory a copy of the original coding. However, Recode does not attempt, in any way, to produce complete C source files in dumps. User hand editing or ‘Makefile’ trickery is still needed for adding missing lines. Dumps may be given in decimal, hexadecimal and octal, and be based over chunks of either one, two or four eight-bit bytes. Formatting has been chosen to respect the C language syntax for number constants, with commas and newlines inserted appropriately. However, when dumping two or four byte chunks, the last chunk may be incomplete. This is observable through the usage of narrower expression for that last chunk only. Such a shorter chunk would not be compiled properly within a C initialiser, as all members of an array share a single type, and so, have identical sizes. ‘Octal-1’ This surface corresponds to an octal expression of each input byte. It is available in Recode under the name ‘Octal-1’, with ‘o1’ and ‘o’ as acceptable aliases. ‘Octal-2’ This surface corresponds to an octal expression of each pair of input bytes, except for the last pair, which may be short. It is available in Recode under the name ‘Octal-2’ and has ‘o2’ for an alias. ‘Octal-4’ This surface corresponds to an octal expression of each quadruple of input bytes, except for the last quadruple, which may be short. It is available in Recode under the name ‘Octal-4’ and has ‘o4’ for an alias. ‘Decimal-1’ This surface corresponds to an decimal expression of each input byte. It is available in Recode under the name ‘Decimal-1’, with ‘d1’ and ‘d’ as acceptable aliases. ‘Decimal-2’ This surface corresponds to an decimal expression of each pair of input bytes, except for the last pair, which may be short. It is available in Recode under the name ‘Decimal-2’ and has ‘d2’ for an alias. ‘Decimal-4’ This surface corresponds to an decimal expression of each quadruple of input bytes, except for the last quadruple, which may be short. It is available in Recode under the name ‘Decimal-4’ and has ‘d4’ for an alias. ‘Hexadecimal-1’ This surface corresponds to an hexadecimal expression of each input byte. It is available in Recode under the name ‘Hexadecimal-1’, with ‘x1’ and ‘x’ as acceptable aliases. ‘Hexadecimal-2’ This surface corresponds to an hexadecimal expression of each pair of input bytes, except for the last pair, which may be short. It is available in Recode under the name ‘Hexadecimal-2’, with ‘x2’ for an alias. ‘Hexadecimal-4’ This surface corresponds to an hexadecimal expression of each quadruple of input bytes, except for the last quadruple, which may be short. It is available in Recode under the name ‘Hexadecimal-4’, with ‘x4’ for an alias. When removing a dump surface, that is, when reading a dump results back into a sequence of bytes, the narrower expression for a short last chunk is recognised, so dumping is a fully reversible operation. However, in case you want to produce dumps by other means than through Recode, beware that for decimal dumps, the library has to rely on the number of spaces to establish the original byte size of the chunk. Although the library might report reversibility errors, removing a dump surface is a rather forgiving process: one may mix bases, group a variable number of data per source line, or use shorter chunks in places other than at the far end. Also, source lines not beginning with a number are skipped. So, Recode should often be able to read a whole C header file, wrapping the results of a previous dump, and regenerate the original byte string.  File: recode.info, Node: Test, Prev: Dump, Up: Surfaces 13.5 Artificial data for testing ================================ A few pseudo-surfaces exist to generate debugging data out of thin air. These surfaces are only meant for the expert Recode user, and are only useful in a few contexts, like for generating binary permutations from the recoding or acting on them. Debugging surfaces, _when removed_, insert their generated data at the beginning of the output stream, and copy all the input stream after the generated data, unchanged. This strange removal constraint comes from the fact that debugging surfaces are usually specified in the _before_ position instead of the _after_ position within a request. With debugging surfaces, one often recodes file ‘/dev/null’ in filter mode. Specifying many debugging surfaces at once has an accumulation effect on the output, and since surfaces are removed from right to left, each generating its data at the beginning of previous output, the net effect is an _impression_ that debugging surfaces are generated from left to right, each appending to the result of the previous. In any case, any real input data gets appended after what was generated. ‘test7’ When removed, this surface produces 128 single bytes, the first having value 0, the second having value 1, and so forth until all 128 values have been generated. ‘test8’ When removed, this surface produces 256 single bytes, the first having value 0, the second having value 1, and so forth until all 256 values have been generated. ‘test15’ When removed, this surface produces 64509 double bytes, the first having value 0, the second having value 1, and so forth until all values have been generated, but excluding risky ‘UCS-2’ values, like all codes from the surrogate ‘UCS-2’ area (for ‘UTF-16’), the byte order mark, and values known as invalid ‘UCS-2’. ‘test16’ When removed, this surface produces 65536 double bytes, the first having value 0, the second having value 1, and so forth until all 65536 values have been generated. As an example, the command ‘recode l5/test8..dump < /dev/null’ is a convoluted way to produce an output similar to ‘recode -lf l5’. It says to generate all possible 256 bytes and interpret them as ‘ISO-8859-9’ codes, while converting them to ‘UCS-2’. Resulting ‘UCS-2’ characters are dumped one per line, accompanied with their explicative name.  File: recode.info, Node: Internals, Next: Concept Index, Prev: Surfaces, Up: Top 14 Internal aspects ******************* The incoming explanations of the internals of Recode should help people who want to dive into Recode sources for adding new charsets. Adding new charsets does not require much knowledge about the overall organisation of Recode. You can rather concentrate of your new charset, letting the remainder of the Recode mechanics take care of interconnecting it with all others charsets. If you intend to play seriously at modifying Recode, beware that you may need some other GNU tools which were not required when you first installed Recode. If you modify or create any ‘.l’ file, then you need Flex, and some better ‘awk’ like ‘mawk’, GNU ‘awk’, or ‘nawk’. If you modify the documentation (and you should!), you need ‘makeinfo’. If you are really audacious, you may also want Perl for modifying tabular processing, then ‘m4’, Autoconf, Automake and ‘libtool’ for adjusting configuration matters. * Menu: * Main flow:: Overall organisation * New charsets:: Adding new charsets * New surfaces:: Adding new surfaces * Design:: Comments on the library design  File: recode.info, Node: Main flow, Next: New charsets, Prev: Internals, Up: Internals 14.1 Overall organisation ========================= The Recode mechanics slowly evolved for many years, and it would be tedious to explain all problems I met and mistakes I did all along, yielding the current behaviour. Surely, one of the key choices was to stop trying to do all conversions in memory, one line or one buffer at a time. It has been fruitful to use the character stream paradigm, and the elementary recoding steps now convert a whole stream to another. Most of the control complexity in Recode exists so that each elementary recoding step stays simple, making easier to add new ones. The whole point of Recode, as I see it, is providing a comfortable nest for growing new charset conversions. The main Recode driver constructs, while initialising all conversion modules, a table giving all the conversion routines available (“single stepâ€s) and for each, the starting charset and the ending charset. If we consider these charsets as being the nodes of a directed graph, each single step may be considered as oriented arc from one node to the other. A cost is attributed to each arc: for example, a high penalty is given to single steps which are prone to losing characters, a lower penalty is given to those which need studying more than one input character for producing an output character, etc. Given a starting code and a goal code, Recode computes the most economical route through the elementary recodings, that is, the best sequence of conversions that will transform the input charset into the final charset. To speed up execution, Recode looks for subsequences of conversions which are simple enough to be merged, and then dynamically creates new single steps to represent these mergings. A “double step†in Recode is a special concept representing a sequence of two single steps, the output of the first single step being the special charset ‘UCS-2’, the input of the second single step being also ‘UCS-2’. Special Recode machinery dynamically produces efficient, reversible, merge-able single steps out of these double steps. I made some statistics about how many internal recoding steps are required between any two charsets chosen at random. The initial recoding layout, before optimisation, always uses between 1 and 5 steps. Optimisation could sometimes produce mere copies, which are counted as no steps at all. In other cases, optimisation is unable to save any step. The number of steps after optimisation is currently between 0 and 5 steps. Of course, the _expected_ number of steps is affected by optimisation: it drops from 2.8 to 1.8. This means that Recode uses a theoretical average of a bit less than one step per recoding job. This looks good. This was computed using reversible recodings. In strict mode, optimisation might be defeated somewhat. Number of steps run between 1 and 6, both before and after optimisation, and the expected number of steps decreases by a lesser amount, going from 2.2 to 1.3. This is still manageable.  File: recode.info, Node: New charsets, Next: New surfaces, Prev: Main flow, Up: Internals 14.2 Adding new charsets ======================== The main part of Recode is written in C, as are most single steps. A few single steps need to recognise sequences of multiple characters, they are often better written in Flex. It is easy for a programmer to add a new charset to Recode. All it requires is making a few functions kept in a single ‘.c’ file, adjusting ‘Makefile.am’ and remaking Recode. One of the function should convert from any previous charset to the new one. Any previous charset will do, but try to select it so you will not lose too much information while converting. The other function should convert from the new charset to any older one. You do not have to select the same old charset than what you selected for the previous routine. Once again, select any charset for which you will not lose too much information while converting. If, for any of these two functions, you have to read multiple bytes of the old charset before recognising the character to produce, you might prefer programming it in Flex in a separate ‘.l’ file. Prototype your C or Flex files after one of those which exist already, so to keep the sources uniform. Besides, at ‘make’ time, all ‘.l’ files are automatically merged into a single big one by the script ‘mergelex.awk’. There are a few hidden rules about how to write new Recode modules, for allowing the automatic creation of ‘decsteps.h’ and ‘initsteps.h’ at ‘make’ time, or the proper merging of all Flex files. Mimetism is a simple approach which relieves me of explaining all these rules! Start with a module closely resembling what you intend to do. Here is some advice for picking up a model. First decide if your new charset module is to be be driven by algorithms rather than by tables. For algorithmic recodings, see ‘iconqnx.c’ for C code, or ‘txtelat1.l’ for Flex code. For table driven recodings, see ‘ebcdic.c’ for one-to-one style recodings, ‘lat1html.c’ for one-to-many style recodings, or ‘atarist.c’ for double-step style recodings. Just select an example from the style that better fits your application. Each of your source files should have its own initialisation function, named ‘module_CHARSET’, which is meant to be executed _quickly_ once, prior to any recoding. It should declare the name of your charsets and the single steps (or elementary recodings) you provide, by calling ‘declare_step’ one or more times. Besides the charset names, ‘declare_step’ expects a description of the recoding quality (see ‘recodext.h’) and two functions you also provide. The first such function has the purpose of allocating structures, pre-conditioning conversion tables, etc. It is also the way of further modifying the ‘STEP’ structure. This function is executed if and only if the single step is retained in an actual recoding sequence. If you do not need such delayed initialisation, merely use ‘NULL’ for the function argument. The second function executes the elementary recoding on a whole file. If you have a recoding table handy in a suitable format but do not use one of the predefined recoding functions, it is still a good idea to use a delayed initialisation to save it anyway, because ‘recode’ option ‘-h’ will take advantage of this information when available. Finally, edit ‘Makefile.am’ to add the source file name of your routines to the ‘C_STEPS’ or ‘L_STEPS’ macro definition, depending on whether your routines are written in C or Flex.  File: recode.info, Node: New surfaces, Next: Design, Prev: New charsets, Up: Internals 14.3 Adding new surfaces ======================== Adding a new surface is technically quite similar to adding a new charset. *Note New charsets::. A surface is provided as a set of two transformations: one from the predefined special charset ‘data’ to the new surface, meant to apply the surface, the other from the new surface to the predefined special charset ‘data’, meant to remove the surface. Internally in Recode, function ‘declare_step’ especially recognises when a charset is so related to ‘data’, and then takes appropriate actions so that charset gets indeed installed as a surface.  File: recode.info, Node: Design, Prev: New surfaces, Up: Internals 14.4 Comments on the library design =================================== • Why a shared library? There are many different approaches to reduce system requirements to handle all tables needed in the Recode library. One of them is to have the tables in an external format and only read them in on demand. After having pondered this for a while, I finally decided against it, mainly because it involves its own kind of installation complexity, and it is not clear to me that it would be as interesting as I first imagined. It looks more efficient to see all tables and algorithms already mapped into virtual memory from the start of the execution, yet not loaded in actual memory, than to go through many disk accesses for opening various data files once the program is already started, as this would be needed with other solutions. Using a shared library also has the indirect effect of making various algorithms handily available, right in the same modules providing the tables. This alleviates much the burden of the maintenance. Of course, I would like to later make an exception for only a few tables, built locally by users for their own particular needs once Recode is installed. Recode should just go and fetch them. But I do not perceive this as very urgent, yet useful enough to be worth implementing. Currently, all tables needed for recoding are precompiled into binaries, and all these binaries are then made into a shared library. As an initial step, I turned Recode into a main program and a non-shared library, this allowed me to tidy up the API, get rid of all global variables, etc. It required a surprising amount of program source massaging. But once this cleaned enough, it was easy to use Gordon Matzigkeit's ‘libtool’ package, and take advantage of the Automake interface to neatly turn the non-shared library into a shared one. Sites linking with the Recode library, whose system does not support any form of shared libraries, might end up with bulky executables. Surely, the Recode library will have to be used statically, and might not very nicely usable on such systems. It seems that progress has a price for those being slow at it. There is a locality problem I did not address yet. Currently, the Recode library takes many cycles to initialise itself, calling each module in turn for it to set up associated knowledge about charsets, aliases, elementary steps, recoding weights, etc. _Then_, the recoding sequence is decided out of the command given. One thing to do would have Recode to pre-load all tables and dump them at installation time. The result would then be compiled and added to the library. This would spare many initialisation cycles, but more importantly, would avoid calling all library modules, scattered through the virtual memory, and so, possibly causing many spurious page exceptions each time the initialisation is requested, at least once per program execution. • Why not a central charset? It would be simpler, and I would like, if something like ISO 10646 was used as a turning template for all charsets in Recode. Even if I think it could help to a certain extent, I'm still not fully sure it would be sufficient in all cases. Moreover, some people disagree about using ISO 10646 as the central charset, to the point I cannot totally ignore them, and surely, Recode is not a means for me to force my own opinions on people. I would like that Recode be practical more than dogmatic, and reflect usage more than religions. Currently, if you ask Recode to go from CHARSET1 to CHARSET2 chosen at random, it is highly probable that the best path will be quickly found as: CHARSET1..UCS-2..CHARSET2 That is, it will almost always use the ‘UCS’ as a trampoline between charsets. However, ‘UCS-2’ will be immediately be optimised out, and CHARSET1..CHARSET2 will often be performed in a single step through a permutation table generated on the fly for the circumstance (1). In those few cases where ‘UCS-2’ is not selected as a conceptual intermediate, I plan to study if it could be made so. But I guess some cases will remain where ‘UCS-2’ is not a proper choice. Even if ‘UCS’ is often the good choice, I do not intend to forcefully restrain Recode around ‘UCS-2’ (nor ‘UCS-4’) for now. We might come to that one day, but it will come out of the natural evolution of Recode. It will then reflect a fact, rather than a preset dogma. • Why not ‘iconv’? The ‘iconv’ routine and library allows for converting characters from an input buffer to an input buffer, synchronously advancing both buffer cursors. If the output buffer is not big enough to receive all of the conversion, the routine returns with the input cursor set at the position where the conversion could later be resumed, and the output cursor set to indicate until where the output buffer has been filled. Despite this scheme is simple and nice, the Recode library does not offer it currently. Why not? When long sequences of decodings, stepwise recodings, and re-encodings are involved, as it happens in true life, synchronising the input buffer back to where it should have stopped, when the output buffer becomes full, is a difficult problem. Oh, we could make it simpler at the expense of losing space or speed: by inserting markers between each input character and counting them at the output end; by processing only one character in a time through the whole sequence; by repeatedly attempting to recode various subsets of the input buffer, binary searching on their length until the output just fits. The overhead of such solutions looks prohibitive to me, and the gain very minimal. I do not see a real advantage, nowadays, imposing a fixed length to an output buffer. It makes things so much simpler and efficient to just let the output buffer size float a bit. Of course, if the above problem was solved, the ‘iconv’ library should be easily emulated, given that Recode has similar knowledge about charsets, of course. This either solved or not, the ‘iconv’ program remains trivial (given similar knowledge about charsets). I also presume that the ‘genxlt’ program would be easy too, but I do not have enough detailed specifications of it to be sure. A lot of years ago, Recode was using a similar scheme, and I found it rather hard to manage for some cases. I rethought the overall structure of Recode for getting away from that scheme, and never regretted it. I perceive ‘iconv’ as an artificial solution which surely has some elegances and virtues, but I do not find it really useful as it stands: one always has to wrap ‘iconv’ into something more refined, extending it for real cases. From past experience, I think it is unduly hard to fully implement this scheme. It would be awkward that we do contortions for the sole purpose of implementing exactly its specification, without real, properly grounded reasons (other then the fact some people once thought it was worth standardising). It is much better to immediately aim for the refinement we need, without uselessly forcing us into the dubious detour ‘iconv’ represents. Some may argue that if Recode was using a comprehensive charset as a turning template, as discussed in a previous point, this would make ‘iconv’ easier to implement. Some may be tempted to say that the cases which are hard to handle are not really needed, nor interesting, anyway. I feel and fear a bit some pressure wanting that Recode be split into the part that well fits the ‘iconv’ model, and the part that does not fit, considering this second part less important, with the idea of dropping it one of these days, maybe. My guess is that users of the Recode library, whatever its form, would not like to have such arbitrary limitations. In the long run, we should not have to explain to our users that some recodings may not be made available just because they do not fit the simple model we had in mind when we did it. Instead, we should try to stay open to the difficulties of real life. There is still a lot of complex needs for Asian people, say, that Recode does not currently address, while it should. Not only the doors should stay open, but we should force them wider! ---------- Footnotes ---------- (1) If strict mapping is requested, another efficient device will be used instead of a permutation.  File: recode.info, Node: Concept Index, Next: Option Index, Prev: Internals, Up: Top Concept Index ************* [index] * Menu: * abbreviated names for charsets and surfaces: Requests. (line 87) * adding new charsets: New charsets. (line 6) * adding new surfaces: New surfaces. (line 6) * African charsets: African. (line 6) * aliases: Requests. (line 79) * alternate names for charsets and surfaces: Requests. (line 79) * ambiguous output, error message: Errors. (line 33) * ASCII table, recreating with Recode: ASCII. (line 12) * average number of recoding steps: Main flow. (line 40) * Bibliographic charsets: ISO 5426 and ANSEL. (line 6) * BibTeX files: BibTeX. (line 6) * box-drawing characters: Recoding. (line 16) * bug reports, where to send: Contributing. (line 37) * byte order mark: UCS-2. (line 12) * byte order swapping: Permutations. (line 6) * caret ASCII code: CDC-NOS. (line 9) * CDC charsets: CDC. (line 6) * CDC Display Code, a table: Display Code. (line 6) * chaining of charsets in a request: Requests. (line 22) * character entities: HTML. (line 6) * character entity references: HTML. (line 6) * character mnemonics, documentation: Tabular. (line 6) * character streams, description: dump-with-names. (line 6) * charset level functions: Charset level. (line 6) * charset names, valid characters: Requests. (line 10) * charset, default: Requests. (line 103) * charset, pure: Surface overview. (line 17) * charset, what it is: Introduction. (line 15) * charsets for CDC machines: CDC. (line 6) * charsets, aliases: Requests. (line 79) * charsets, chaining in a request: Requests. (line 22) * charsets, guessing: Listings. (line 65) * charsets, overview: Charset overview. (line 6) * chset tools: Tabular. (line 6) * codepages: IBM and MS. (line 6) * combining characters: UCS-2. (line 35) * commutativity of surfaces: Requests. (line 56) * contributing charsets: Contributing. (line 6) * conversions, unavailable: Charset overview. (line 33) * convert a subset of characters: Mixed. (line 20) * convert strings and comments: Mixed. (line 39) * copyright conditions, printing: Listings. (line 19) * counting characters: count-characters. (line 6) * CR-LF surface, in IBM-PC charsets: IBM-PC. (line 30) * Ctrl-Z, discarding: End lines. (line 32) * Cyrillic charsets: Others. (line 6) * debugging surfaces: Test. (line 11) * default charset: Requests. (line 103) * description of individual characters: dump-with-names. (line 6) * details about recoding: Recoding. (line 35) * deviations from RFC 1345: Tabular. (line 13) * diacritics and underlines, removing: flat. (line 8) * diacritics, with ASCII-BS charset: ASCII-BS. (line 9) * diaeresis: Recoding. (line 11) * disable map filling: Reversibility. (line 43) * double step: Main flow. (line 34) * dumping characters: Dump. (line 6) * dumping characters, with description: dump-with-names. (line 6) * Easy French: Texte. (line 20) * EBCDIC charsets: EBCDIC. (line 6) * end of line format: End lines. (line 6) * endiannes, changing: Permutations. (line 6) * entities: HTML. (line 6) * error handling: Errors. (line 6) * error level threshold: Errors. (line 108) * error messages: Errors. (line 6) * error messages, suppressing: Reversibility. (line 31) * exceptions to available conversions: Charset overview. (line 33) * exit status: Synopsis. (line 62) * file sequencing: Sequencing. (line 39) * file time stamps: Recoding. (line 26) * filter operation: Synopsis. (line 27) * force recoding: Reversibility. (line 10) * French description of charsets: Listings. (line 211) * guessing charsets: Listings. (line 65) * Haible, Bruno: iconv. (line 6) * handling errors: Errors. (line 6) * help page, printing: Listings. (line 14) * HTML: HTML. (line 6) * HTML normalization: HTML. (line 106) * IBM codepages: IBM and MS. (line 6) * IBM graphics characters: Recoding. (line 16) * iconv: Design. (line 95) * iconv library: iconv. (line 6) * identifying subsets in charsets: Listings. (line 223) * ignore charsets: Recoding. (line 60) * implied surfaces: Requests. (line 68) * impossible conversions: Charset overview. (line 33) * information about charsets: Listings. (line 154) * initialisation functions, outer: Outer level. (line 45) * initialisation functions, request: Request level. (line 52) * initialisation functions, task: Task level. (line 56) * interface, with iconv library: iconv. (line 6) * intermediate charsets: Requests. (line 22) * internal functions: Charset level. (line 6) * internal recoding bug, error message: Errors. (line 96) * internals: Internals. (line 6) * invalid input, error message: Errors. (line 73) * invocation of recode, synopsis: Synopsis. (line 6) * irreversible recoding: Reversibility. (line 10) * ISO 10646: Universal. (line 6) * languages, programming: Listings. (line 26) * LaTeX files: LaTeX. (line 6) * Latin charsets: ISO 8859. (line 6) * Latin-1 table, recreating with Recode: ISO 8859. (line 38) * leaks, memory: Outer level. (line 40) * letter case, in charset and surface names: Requests. (line 92) * libiconv: iconv. (line 6) * library, iconv: iconv. (line 6) * listing charsets: Listings. (line 154) * map filling: Reversibility. (line 91) * map filling, disable: Reversibility. (line 43) * markup language: HTML. (line 6) * memory leaks: Outer level. (line 40) * memory sequencing: Sequencing. (line 18) * MIME encodings: MIME. (line 6) * misuse of recoding library, error message: Errors. (line 90) * MS-DOS charsets: IBM-PC. (line 6) * MULE, in Emacs: Mule. (line 22) * multiplexed charsets: Mule. (line 6) * names of charsets and surfaces, abbreviation: Requests. (line 87) * new charsets, how to add: New charsets. (line 6) * new surfaces, how to add: New surfaces. (line 6) * non canonical input, error message: Errors. (line 20) * normilise an HTML file: HTML. (line 106) * NOS 6/12 code: CDC-NOS. (line 9) * numeric character references: HTML. (line 6) * outer level functions: Outer level. (line 6) * partial conversion: Mixed. (line 20) * permutations of groups of bytes: Permutations. (line 6) * pipe sequencing: Sequencing. (line 28) * program_name variable: Library. (line 11) * program_name variable <1>: Outer level. (line 112) * programming language support: Listings. (line 26) * pseudo-charsets: Charset overview. (line 33) * pure charset: Surface overview. (line 17) * quality of recoding: Recoding. (line 35) * Recode internals: Internals. (line 6) * Recode request syntax: Requests. (line 15) * Recode use, a tutorial: Tutorial. (line 6) * Recode version, printing: Listings. (line 10) * Recode, and RFC 1345: Tabular. (line 40) * Recode, main flow of operation: Main flow. (line 6) * recode, operation as filter: Synopsis. (line 27) * recode, synopsis of invocation: Synopsis. (line 6) * recode.h header: Library. (line 11) * recodext.h header: Task level. (line 46) * recoding details: Recoding. (line 35) * recoding library: Library. (line 6) * recoding path, rejection: Recoding. (line 60) * recoding steps, statistics: Main flow. (line 40) * removing diacritics and underlines: flat. (line 8) * reporting bugs: Contributing. (line 37) * request level functions: Request level. (line 6) * request, syntax: Requests. (line 15) * reversibility of recoding: Reversibility. (line 54) * RFC 1345: Tabular. (line 6) * RFC 2045: MIME. (line 6) * sequencing: Sequencing. (line 6) * SGML: HTML. (line 6) * shared library implementation: Design. (line 6) * silent operation: Reversibility. (line 31) * single step: Main flow. (line 17) * source file generation: Listings. (line 26) * speed considerations: Outer level. (line 32) * speed considerations <1>: Request level. (line 44) * status code: Synopsis. (line 62) * strict operation: Reversibility. (line 43) * string and comments conversion: Mixed. (line 39) * subsets in charsets: Listings. (line 223) * super-charsets: Mule. (line 6) * supported programming languages: Listings. (line 26) * suppressing diagnostic messages: Reversibility. (line 31) * surface, what it is: Introduction. (line 31) * surface, what it is <1>: Surfaces. (line 6) * surfaces, aliases: Requests. (line 79) * surfaces, commutativity: Requests. (line 56) * surfaces, implementation in Recode: Surfaces. (line 34) * surfaces, implied: Requests. (line 68) * surfaces, overview: Surface overview. (line 6) * surfaces, syntax: Requests. (line 51) * system detected problem, error message: Errors. (line 84) * task execution: Task level. (line 204) * task level functions: Task level. (line 6) * TeX files: LaTeX. (line 6) * TeX files <1>: BibTeX. (line 6) * Texinfo files: Texinfo. (line 6) * threshold for error reporting: Errors. (line 108) * time stamps of files: Recoding. (line 26) * trivial surface: Surfaces. (line 14) * tutorial: Tutorial. (line 6) * unavailable conversions: Charset overview. (line 33) * Unicode: UCS-2. (line 6) * unknown charsets: Listings. (line 65) * unreachable charsets: Charset overview. (line 33) * untranslatable input, error message: Errors. (line 53) * valid characters in charset names: Requests. (line 10) * verbose operation: Recoding. (line 35) * Vietnamese charsets: Vietnamese. (line 6) * Web: HTML. (line 6) * World Wide Web: HTML. (line 6) * WWW: HTML. (line 6) * XML: HTML. (line 6)  File: recode.info, Node: Option Index, Next: Library Index, Prev: Concept Index, Up: Top Option Index ************ This is an alphabetical list of all command-line options accepted by ‘recode’. [index] * Menu: * --colons: Recoding. (line 11) * --copyright: Listings. (line 19) * --diacritics: Mixed. (line 20) * --find-subsets: Listings. (line 223) * --force: Reversibility. (line 10) * --graphics: Recoding. (line 16) * --header: Listings. (line 26) * --help: Listings. (line 14) * --ignore: Recoding. (line 60) * --known=: Listings. (line 65) * --list: Listings. (line 154) * --quiet: Reversibility. (line 31) * --sequence: Sequencing. (line 18) * --silent: Reversibility. (line 31) * --source: Mixed. (line 39) * --strict: Reversibility. (line 43) * --touch: Recoding. (line 26) * --verbose: Recoding. (line 35) * --version: Listings. (line 10) * -C: Listings. (line 19) * -c: Recoding. (line 11) * -d: Mixed. (line 20) * -f: Reversibility. (line 10) * -g: Recoding. (line 16) * -h: Listings. (line 26) * -i: Sequencing. (line 39) * -k: Listings. (line 65) * -l: Listings. (line 154) * -p: Sequencing. (line 28) * -q: Reversibility. (line 31) * -s: Reversibility. (line 43) * -S: Mixed. (line 39) * -T: Listings. (line 223) * -t: Recoding. (line 26) * -v: Recoding. (line 35) * -x: Recoding. (line 60)  File: recode.info, Node: Library Index, Next: Charset and Surface Index, Prev: Option Index, Up: Top Library Index ************* This is an alphabetical index of important functions, data structures, and variables in the Recode library. [index] * Menu: * abort_level: Task level. (line 187) * ascii_graphics: Request level. (line 111) * byte_order_mark: Task level. (line 171) * declare_step: New surfaces. (line 12) * DEFAULT_CHARSET: Requests. (line 103) * diacritics_only: Request level. (line 102) * diaeresis_char: Request level. (line 86) * error_so_far: Task level. (line 199) * fail_level: Task level. (line 177) * find_charset: Charset level. (line 15) * LC_MESSAGES, when listing charsets: Listings. (line 211) * list_all_charsets: Charset level. (line 15) * list_concise_charset: Charset level. (line 15) * list_full_charset: Charset level. (line 15) * make_header_flag: Request level. (line 93) * RECODE_AMBIGUOUS_OUTPUT: Errors. (line 33) * recode_buffer_to_buffer: Request level. (line 157) * recode_buffer_to_file: Request level. (line 157) * recode_delete_outer: Outer level. (line 50) * recode_delete_request: Request level. (line 57) * recode_delete_task: Task level. (line 58) * recode_file_to_buffer: Request level. (line 157) * recode_file_to_file: Request level. (line 157) * recode_filter_close: Task level. (line 206) * recode_filter_close, not available: Request level. (line 223) * recode_filter_open: Task level. (line 206) * recode_filter_open, not available: Request level. (line 223) * recode_format_table: Request level. (line 238) * RECODE_INTERNAL_ERROR: Errors. (line 96) * RECODE_INVALID_INPUT: Errors. (line 73) * RECODE_MAXIMUM_ERROR: Task level. (line 187) * RECODE_MAXIMUM_ERROR <1>: Errors. (line 104) * recode_new_outer: Outer level. (line 50) * recode_new_request: Request level. (line 57) * recode_new_task: Task level. (line 58) * RECODE_NO_ERROR: Errors. (line 16) * RECODE_NOT_CANONICAL: Errors. (line 20) * RECODE_OUTER structure: Outer level. (line 26) * recode_perform_task: Task level. (line 206) * RECODE_REQUEST structure: Request level. (line 39) * recode_request structure: Request level. (line 69) * recode_scan_request: Request level. (line 121) * recode_string: Request level. (line 150) * recode_string_to_buffer: Request level. (line 157) * recode_string_to_file: Request level. (line 157) * RECODE_SYSTEM_ERROR: Errors. (line 84) * RECODE_TASK structure: Task level. (line 50) * RECODE_UNTRANSLATABLE: Errors. (line 53) * RECODE_USER_ERROR: Errors. (line 90) * task_request structure: Task level. (line 85) * verbose_flag: Request level. (line 81)  File: recode.info, Node: Charset and Surface Index, Prev: Library Index, Up: Top Charset and Surface Index ************************* This is an alphabetical list of all the charsets and surfaces supported by Recode, and their aliases. [index] * Menu: * 037: Tabular. (line 218) * 038: Tabular. (line 223) * 1004: Tabular. (line 227) * 1026: Tabular. (line 231) * 1047: Tabular. (line 235) * 10646: UCS-4. (line 10) * 1129, not available: Vietnamese. (line 30) * 1250: Tabular. (line 85) * 1251: Tabular. (line 89) * 1252: Tabular. (line 93) * 1253: Tabular. (line 97) * 1254: Tabular. (line 101) * 1255: Tabular. (line 105) * 1256: Tabular. (line 109) * 1257: Tabular. (line 113) * 1258, not available: Vietnamese. (line 30) * 1345: Tabular. (line 51) * 1866: HTML. (line 37) * 2070: HTML. (line 45) * 21-Permutation: Permutations. (line 15) * 256: Tabular. (line 240) * 273: Tabular. (line 244) * 274: Tabular. (line 248) * 275: Tabular. (line 252) * 278: Tabular. (line 260) * 280: Tabular. (line 264) * 281: Tabular. (line 268) * 284: Tabular. (line 272) * 285: Tabular. (line 276) * 290: Tabular. (line 280) * 297: Tabular. (line 284) * 367: Tabular. (line 68) * 420: Tabular. (line 288) * 423: Tabular. (line 293) * 424: Tabular. (line 297) * 4321-Permutation: Permutations. (line 19) * 437: Tabular. (line 301) * 500: Tabular. (line 305) * 500V1: Tabular. (line 305) * 64: MIME. (line 11) * 819: Tabular. (line 418) * 850: Tabular. (line 310) * 851: Tabular. (line 314) * 852: Tabular. (line 318) * 855: Tabular. (line 322) * 857: Tabular. (line 326) * 860: Tabular. (line 330) * 861: Tabular. (line 334) * 862: Tabular. (line 338) * 863: Tabular. (line 342) * 864: Tabular. (line 346) * 865: Tabular. (line 350) * 868: Tabular. (line 354) * 869: Tabular. (line 358) * 870: Tabular. (line 362) * 871: Tabular. (line 367) * 875: Tabular. (line 371) * 880: Tabular. (line 375) * 891: Tabular. (line 379) * 903: Tabular. (line 383) * 904: Tabular. (line 387) * 905: Tabular. (line 391) * 912: Tabular. (line 443) * 918: Tabular. (line 395) * AFRFUL-102-BPI_OCIL, and aliases: African. (line 10) * AFRFUL-103-BPI_OCIL, and aliases: African. (line 10) * AFRL1-101-BPI_OCIL: African. (line 24) * AFRLIN-104-BPI_OCIL: African. (line 17) * AFRLIN-105-BPI_OCIL: African. (line 17) * ANSEL, a charset: ISO 5426 and ANSEL. (line 6) * ANSI_X3.110-1983, not recognised by recode: Tabular. (line 19) * ANSI_X3.4-1968, aliases and source: Tabular. (line 68) * ANSI_X3.4-1968, and its aliases: ASCII. (line 6) * ANSI_X3.4-1986: Tabular. (line 68) * arabic: Tabular. (line 463) * arabic7: Tabular. (line 73) * ASCII: Requests. (line 103) * ASCII <1>: Tabular. (line 68) * ASCII-BS, and its aliases: ASCII-BS. (line 6) * ASCII, an alias for the ANSI_X3.4-1968 charset: ASCII. (line 6) * ASMO_449, aliases and source: Tabular. (line 73) * ASMO-708: Tabular. (line 463) * AtariST: AtariST. (line 6) * b64: MIME. (line 11) * baltic, aliases and source: Tabular. (line 659) * bambara: African. (line 10) * Bang-Bang: Bang-Bang. (line 6) * Base64: MIME. (line 11) * BibTeX, a charset: BibTeX. (line 6) * BMP: UCS-2. (line 31) * bra: African. (line 10) * BS_4730, aliases and source: Tabular. (line 77) * BS_viewdata, aliases and source: Tabular. (line 81) * BS, an alias for ASCII-BS charset: ASCII-BS. (line 6) * btex: BibTeX. (line 6) * ca: Tabular. (line 117) * CDC-NOS, and its aliases: CDC-NOS. (line 6) * CHAR: Requests. (line 103) * cl: End lines. (line 37) * cn: Tabular. (line 210) * combined-UCS-2: UCS-2. (line 35) * CORK: Others. (line 29) * count-characters: count-characters. (line 6) * count-characters, not as before charset: Charset overview. (line 33) * cp-ar: Tabular. (line 354) * cp-gr: Tabular. (line 358) * cp-hu: Tabular. (line 133) * cp-is: Tabular. (line 334) * CP037: Tabular. (line 218) * CP038: Tabular. (line 223) * CP1004: Tabular. (line 227) * CP1026: Tabular. (line 231) * CP1047: Tabular. (line 235) * CP1129, not available: Vietnamese. (line 30) * CP1250, aliases and source: Tabular. (line 85) * CP1251, aliases and source: Tabular. (line 89) * CP1252, aliases and source: Tabular. (line 93) * CP1253, aliases and source: Tabular. (line 97) * CP1254, aliases and source: Tabular. (line 101) * CP1255, aliases and source: Tabular. (line 105) * CP1256, aliases and source: Tabular. (line 109) * CP1257, aliases and source: Tabular. (line 113) * CP1258, not available: Vietnamese. (line 30) * CP256: Tabular. (line 240) * CP273: Tabular. (line 244) * CP274: Tabular. (line 248) * CP275: Tabular. (line 252) * CP278: Tabular. (line 260) * CP280: Tabular. (line 264) * CP281: Tabular. (line 268) * CP284: Tabular. (line 272) * CP285: Tabular. (line 276) * CP290: Tabular. (line 280) * CP297: Tabular. (line 284) * CP367: Tabular. (line 68) * cp367: ASCII. (line 6) * CP420: Tabular. (line 288) * CP423: Tabular. (line 293) * CP424: Tabular. (line 297) * CP437: Tabular. (line 301) * CP500: Tabular. (line 305) * CP819: Tabular. (line 418) * CP850: Tabular. (line 310) * CP851: Tabular. (line 314) * CP852: Tabular. (line 318) * CP855: Tabular. (line 322) * CP857: Tabular. (line 326) * CP860: Tabular. (line 330) * CP861: Tabular. (line 334) * CP862: Tabular. (line 338) * CP863: Tabular. (line 342) * CP864: Tabular. (line 346) * CP865: Tabular. (line 350) * CP868: Tabular. (line 354) * CP869: Tabular. (line 358) * CP870: Tabular. (line 362) * CP871: Tabular. (line 367) * CP875: Tabular. (line 371) * CP880: Tabular. (line 375) * CP891: Tabular. (line 379) * CP903: Tabular. (line 383) * CP904: Tabular. (line 387) * CP905: Tabular. (line 391) * CP912: Tabular. (line 443) * CP918: Tabular. (line 395) * CR-LF, a surface: End lines. (line 27) * CR, a surface: End lines. (line 13) * CSA_Z243.4-1985-1, aliases and source: Tabular. (line 117) * CSA_Z243.4-1985-2, aliases and source: Tabular. (line 121) * CSA_Z243.4-1985-gr, aliases and source: Tabular. (line 125) * csa7-1: Tabular. (line 117) * csa7-2: Tabular. (line 121) * CSN_369103, aliases and source: Tabular. (line 129) * cuba: Tabular. (line 615) * CWI-2: Tabular. (line 133) * CWI, aliases and source: Tabular. (line 133) * cyrillic: Tabular. (line 458) * d1: Dump. (line 45) * d2: Dump. (line 52) * d4: Dump. (line 59) * data, a special charset: Surfaces. (line 34) * data, not with charsets: Charset overview. (line 33) * de: Tabular. (line 141) * dec: Tabular. (line 137) * DEC-MCS, aliases and source: Tabular. (line 137) * Decimal-1: Dump. (line 45) * Decimal-2: Dump. (line 52) * Decimal-4: Dump. (line 59) * DIN_66003, aliases and source: Tabular. (line 141) * dk: Tabular. (line 145) * dk-us, not recognised by recode: Tabular. (line 16) * dos: IBM-PC. (line 6) * DS_2089, aliases and source: Tabular. (line 145) * DS2089: Tabular. (line 145) * dump-with-names: dump-with-names. (line 6) * dump-with-names, not as before charset: Charset overview. (line 33) * e13b: Tabular. (line 487) * EBCDIC-AT-DE-A, aliases and source: Tabular. (line 152) * EBCDIC-AT-DE, aliases and source: Tabular. (line 149) * EBCDIC-BE: Tabular. (line 248) * EBCDIC-BR: Tabular. (line 252) * EBCDIC-CA-FR, aliases and source: Tabular. (line 155) * EBCDIC-CCC: EBCDIC. (line 18) * ebcdic-cp-ar1: Tabular. (line 288) * ebcdic-cp-ar2: Tabular. (line 395) * ebcdic-cp-be: Tabular. (line 305) * ebcdic-cp-ca: Tabular. (line 218) * ebcdic-cp-ch: Tabular. (line 305) * EBCDIC-CP-DK: Tabular. (line 256) * ebcdic-cp-es: Tabular. (line 272) * ebcdic-cp-fi: Tabular. (line 260) * ebcdic-cp-fr: Tabular. (line 284) * ebcdic-cp-gb: Tabular. (line 276) * ebcdic-cp-gr: Tabular. (line 293) * ebcdic-cp-he: Tabular. (line 297) * ebcdic-cp-is: Tabular. (line 367) * ebcdic-cp-it: Tabular. (line 264) * ebcdic-cp-nl: Tabular. (line 218) * EBCDIC-CP-NO: Tabular. (line 256) * ebcdic-cp-roece: Tabular. (line 362) * ebcdic-cp-se: Tabular. (line 260) * ebcdic-cp-tr: Tabular. (line 391) * ebcdic-cp-us: Tabular. (line 218) * ebcdic-cp-wt: Tabular. (line 218) * ebcdic-cp-yu: Tabular. (line 362) * EBCDIC-Cyrillic: Tabular. (line 375) * EBCDIC-DK-NO-A, aliases and source: Tabular. (line 161) * EBCDIC-DK-NO, aliases and source: Tabular. (line 158) * EBCDIC-ES-A, aliases and source: Tabular. (line 167) * EBCDIC-ES-S, aliases and source: Tabular. (line 170) * EBCDIC-ES, aliases and source: Tabular. (line 164) * EBCDIC-FI-SE-A, aliases and source: Tabular. (line 176) * EBCDIC-FI-SE, aliases and source: Tabular. (line 173) * EBCDIC-FR, aliases and source: Tabular. (line 179) * EBCDIC-Greek: Tabular. (line 371) * EBCDIC-IBM: EBCDIC. (line 23) * EBCDIC-INT: Tabular. (line 223) * EBCDIC-INT1: Tabular. (line 240) * EBCDIC-IS-FRISS, aliases and source: Tabular. (line 182) * EBCDIC-IT, aliases and source: Tabular. (line 186) * EBCDIC-JP-E: Tabular. (line 268) * EBCDIC-JP-kana: Tabular. (line 280) * EBCDIC-PT, aliases and source: Tabular. (line 189) * EBCDIC-UK, aliases and source: Tabular. (line 192) * EBCDIC-US, aliases and source: Tabular. (line 195) * EBCDIC, a charset: EBCDIC. (line 11) * ECMA-113: Tabular. (line 198) * ECMA-113(1986): Tabular. (line 198) * ECMA-114: Tabular. (line 463) * ECMA-118: Tabular. (line 468) * ECMA-cyrillic, aliases and source: Tabular. (line 198) * ELOT_928: Tabular. (line 468) * ES, aliases and source: Tabular. (line 202) * ES2, aliases and source: Tabular. (line 206) * ewondo: African. (line 10) * FI: Tabular. (line 647) * flat, a charset: flat. (line 6) * flat, not as before charset: Charset overview. (line 33) * fr: Tabular. (line 619) * friss: Tabular. (line 182) * FSS_UTF: UTF-8. (line 81) * fulfude: African. (line 10) * gb: Tabular. (line 77) * GB_1988-80, aliases and source: Tabular. (line 210) * GB_2312-80, not recognised by recode: Tabular. (line 23) * GOST_19768-74: Tabular. (line 573) * GOST_19768-87, aliases and source: Tabular. (line 214) * greek: Tabular. (line 468) * greek-ccitt, aliases and source: Tabular. (line 663) * greek7-old, aliases and source: Tabular. (line 671) * greek7, aliases and source: Tabular. (line 667) * greek8: Tabular. (line 468) * h: HTML. (line 61) * h0: HTML. (line 27) * h1: HTML. (line 33) * h2: HTML. (line 37) * h3: HTML. (line 55) * h4: HTML. (line 61) * hebrew: Tabular. (line 473) * Hexadecimal-1: Dump. (line 66) * Hexadecimal-2: Dump. (line 73) * Hexadecimal-4: Dump. (line 80) * hp-roman8, aliases and source: Tabular. (line 675) * HTML_1.1: HTML. (line 33) * HTML_2.0: HTML. (line 37) * HTML_3.2: HTML. (line 55) * HTML-i18n: HTML. (line 45) * hu: Tabular. (line 595) * IBM-PC: IBM-PC. (line 6) * IBM-PC charset, and CR-LF surface: Requests. (line 68) * IBM037, aliases and source: Tabular. (line 218) * IBM038, aliases and source: Tabular. (line 223) * IBM1004, aliases and source: Tabular. (line 227) * IBM1026, aliases and source: Tabular. (line 231) * IBM1047, aliases and source: Tabular. (line 235) * IBM256, aliases and source: Tabular. (line 240) * IBM273, aliases and source: Tabular. (line 244) * IBM274, aliases and source: Tabular. (line 248) * IBM275, aliases and source: Tabular. (line 252) * IBM277, aliases and source: Tabular. (line 256) * IBM278, aliases and source: Tabular. (line 260) * IBM280, aliases and source: Tabular. (line 264) * IBM281, aliases and source: Tabular. (line 268) * IBM284, aliases and source: Tabular. (line 272) * IBM285, aliases and source: Tabular. (line 276) * IBM290, aliases and source: Tabular. (line 280) * IBM297, aliases and source: Tabular. (line 284) * IBM367: Tabular. (line 68) * IBM367 <1>: ASCII. (line 6) * IBM420, aliases and source: Tabular. (line 288) * IBM423, aliases and source: Tabular. (line 293) * IBM424, aliases and source: Tabular. (line 297) * ibm437: IBM-PC. (line 36) * IBM437, aliases and source: Tabular. (line 301) * IBM500, aliases and source: Tabular. (line 305) * IBM819: Tabular. (line 418) * IBM819, and CR-LF surface: IBM-PC. (line 30) * IBM850, aliases and source: Tabular. (line 310) * IBM851, aliases and source: Tabular. (line 314) * IBM852, aliases and source: Tabular. (line 318) * IBM855, aliases and source: Tabular. (line 322) * IBM857, aliases and source: Tabular. (line 326) * IBM860, aliases and source: Tabular. (line 330) * IBM861, aliases and source: Tabular. (line 334) * IBM862, aliases and source: Tabular. (line 338) * IBM863, aliases and source: Tabular. (line 342) * IBM864, aliases and source: Tabular. (line 346) * IBM865, aliases and source: Tabular. (line 350) * IBM868, aliases and source: Tabular. (line 354) * IBM869, aliases and source: Tabular. (line 358) * IBM870, aliases and source: Tabular. (line 362) * IBM871, aliases and source: Tabular. (line 367) * IBM875, aliases and source: Tabular. (line 371) * IBM880, aliases and source: Tabular. (line 375) * IBM891, aliases and source: Tabular. (line 379) * IBM903, aliases and source: Tabular. (line 383) * IBM904, aliases and source: Tabular. (line 387) * IBM905, aliases and source: Tabular. (line 391) * IBM912: Tabular. (line 443) * IBM918, aliases and source: Tabular. (line 395) * Icon-QNX, and aliases: Icon-QNX. (line 6) * iconv: iconv. (line 33) * iconv, not in requests: Charset overview. (line 33) * IEC_P27-1, aliases and source: Tabular. (line 399) * INIS-8, aliases and source: Tabular. (line 407) * INIS-cyrillic, aliases and source: Tabular. (line 411) * INIS, aliases and source: Tabular. (line 403) * INVARIANT, aliases and source: Tabular. (line 415) * irv: Tabular. (line 507) * ISO 5426, a charset: ISO 5426 and ANSEL. (line 6) * ISO_10367-box, aliases and source: Tabular. (line 483) * ISO_10646: UCS-4. (line 10) * ISO_2033-1983, aliases and source: Tabular. (line 487) * ISO_5427-ext, aliases and source: Tabular. (line 495) * ISO_5427, aliases and source: Tabular. (line 491) * ISO_5427(1981): Tabular. (line 495) * ISO_5428, aliases and source: Tabular. (line 499) * ISO_5428(1980): Tabular. (line 499) * ISO_646.basic, aliases and source: Tabular. (line 503) * ISO_646.basic(1983): Tabular. (line 503) * ISO_646.irv, aliases and source: Tabular. (line 507) * ISO_646.irv(1983): Tabular. (line 507) * ISO_646.irv(1991): Tabular. (line 68) * ISO_6937-2-25, aliases and source: Tabular. (line 511) * ISO_6937-2-add, not recognised by recode: Tabular. (line 19) * ISO_8859-1: Tabular. (line 418) * ISO_8859-1(1987): Tabular. (line 418) * ISO_8859-10: Tabular. (line 423) * ISO_8859-10(1993): Tabular. (line 423) * ISO_8859-13: Tabular. (line 428) * ISO_8859-13(1998): Tabular. (line 428) * ISO_8859-14: Tabular. (line 433) * ISO_8859-14(1998): Tabular. (line 433) * ISO_8859-15: Tabular. (line 438) * ISO_8859-15(1998): Tabular. (line 438) * ISO_8859-2: Tabular. (line 443) * ISO_8859-2(1987): Tabular. (line 443) * ISO_8859-3: Tabular. (line 448) * ISO_8859-3(1988): Tabular. (line 448) * ISO_8859-4: Tabular. (line 453) * ISO_8859-4(1988): Tabular. (line 453) * ISO_8859-5: Tabular. (line 458) * ISO_8859-5(1988): Tabular. (line 458) * ISO_8859-6: Tabular. (line 463) * ISO_8859-6(1987): Tabular. (line 463) * ISO_8859-7: Tabular. (line 468) * ISO_8859-7(1987): Tabular. (line 468) * ISO_8859-8: Tabular. (line 473) * ISO_8859-8(1988): Tabular. (line 473) * ISO_8859-9: Tabular. (line 478) * ISO_8859-9(1989): Tabular. (line 478) * ISO_8859-supp, aliases and source: Tabular. (line 515) * ISO_9036: Tabular. (line 73) * ISO-10646-UCS-2, and aliases: UCS-2. (line 31) * ISO-10646-UCS-4, and aliases: UCS-4. (line 10) * ISO-8859-1, aliases and source: Tabular. (line 418) * ISO-8859-10, aliases and source: Tabular. (line 423) * ISO-8859-13, aliases and source: Tabular. (line 428) * ISO-8859-14, aliases and source: Tabular. (line 433) * ISO-8859-15, aliases and source: Tabular. (line 438) * ISO-8859-2, aliases and source: Tabular. (line 443) * ISO-8859-3, aliases and source: Tabular. (line 448) * ISO-8859-4, aliases and source: Tabular. (line 453) * ISO-8859-5, aliases and source: Tabular. (line 458) * ISO-8859-6, aliases and source: Tabular. (line 463) * ISO-8859-7, aliases and source: Tabular. (line 468) * ISO-8859-8, aliases and source: Tabular. (line 473) * ISO-8859-9, aliases and source: Tabular. (line 478) * iso-baltic: Tabular. (line 428) * iso-celtic: Tabular. (line 433) * iso-ir-10: Tabular. (line 647) * iso-ir-100: Tabular. (line 418) * iso-ir-101: Tabular. (line 443) * iso-ir-102: Tabular. (line 655) * iso-ir-109: Tabular. (line 448) * iso-ir-11: Tabular. (line 651) * iso-ir-110: Tabular. (line 453) * iso-ir-111: Tabular. (line 198) * iso-ir-121: Tabular. (line 117) * iso-ir-122: Tabular. (line 121) * iso-ir-123: Tabular. (line 125) * iso-ir-126: Tabular. (line 468) * iso-ir-127: Tabular. (line 463) * iso-ir-13: Tabular. (line 523) * iso-ir-138: Tabular. (line 473) * iso-ir-139: Tabular. (line 129) * iso-ir-14: Tabular. (line 527) * iso-ir-141: Tabular. (line 558) * iso-ir-143: Tabular. (line 399) * iso-ir-144: Tabular. (line 458) * iso-ir-146: Tabular. (line 566) * iso-ir-147: Tabular. (line 562) * iso-ir-148: Tabular. (line 478) * iso-ir-15: Tabular. (line 519) * iso-ir-150: Tabular. (line 663) * iso-ir-151: Tabular. (line 615) * iso-ir-152: Tabular. (line 511) * iso-ir-153: Tabular. (line 214) * iso-ir-154: Tabular. (line 515) * iso-ir-155: Tabular. (line 483) * iso-ir-157: Tabular. (line 423) * iso-ir-158: Tabular. (line 693) * iso-ir-16: Tabular. (line 639) * iso-ir-17: Tabular. (line 202) * iso-ir-170: Tabular. (line 415) * iso-ir-179: Tabular. (line 659) * iso-ir-179a: Tabular. (line 428) * iso-ir-18: Tabular. (line 671) * iso-ir-19: Tabular. (line 680) * iso-ir-199: Tabular. (line 433) * iso-ir-2: Tabular. (line 507) * iso-ir-203: Tabular. (line 438) * iso-ir-21: Tabular. (line 141) * iso-ir-25: Tabular. (line 623) * iso-ir-27: Tabular. (line 591) * iso-ir-37: Tabular. (line 491) * iso-ir-4: Tabular. (line 77) * iso-ir-47: Tabular. (line 81) * iso-ir-49: Tabular. (line 403) * iso-ir-50: Tabular. (line 407) * iso-ir-51: Tabular. (line 411) * iso-ir-54: Tabular. (line 495) * iso-ir-55: Tabular. (line 499) * iso-ir-57: Tabular. (line 210) * iso-ir-6: Tabular. (line 68) * iso-ir-6 <1>: ASCII. (line 6) * iso-ir-60: Tabular. (line 627) * iso-ir-61: Tabular. (line 631) * iso-ir-69: Tabular. (line 619) * iso-ir-8-1: Tabular. (line 607) * iso-ir-8-2: Tabular. (line 611) * iso-ir-84: Tabular. (line 643) * iso-ir-85: Tabular. (line 206) * iso-ir-86: Tabular. (line 595) * iso-ir-88: Tabular. (line 667) * iso-ir-89: Tabular. (line 73) * iso-ir-9-1: Tabular. (line 599) * iso-ir-9-2: Tabular. (line 603) * iso-ir-90, not recognised by recode: Tabular. (line 19) * iso-ir-93: Tabular. (line 539) * iso-ir-94: Tabular. (line 543) * iso-ir-95: Tabular. (line 547) * iso-ir-96: Tabular. (line 551) * iso-ir-98: Tabular. (line 487) * ISO646-CA: Tabular. (line 117) * ISO646-CA2: Tabular. (line 121) * ISO646-CN: Tabular. (line 210) * ISO646-CU: Tabular. (line 615) * ISO646-DE: Tabular. (line 141) * ISO646-DK: Tabular. (line 145) * ISO646-ES: Tabular. (line 202) * ISO646-ES2: Tabular. (line 206) * ISO646-FI: Tabular. (line 647) * ISO646-FR: Tabular. (line 619) * ISO646-FR1: Tabular. (line 623) * ISO646-GB: Tabular. (line 77) * ISO646-HU: Tabular. (line 595) * ISO646-IT: Tabular. (line 519) * ISO646-JP: Tabular. (line 527) * ISO646-JP-OCR-B: Tabular. (line 535) * ISO646-KR: Tabular. (line 588) * ISO646-NO: Tabular. (line 627) * ISO646-NO2: Tabular. (line 631) * ISO646-PT: Tabular. (line 639) * ISO646-PT2: Tabular. (line 643) * ISO646-SE: Tabular. (line 647) * ISO646-SE2: Tabular. (line 651) * ISO646-US: Tabular. (line 68) * ISO646-YU: Tabular. (line 558) * ISO8859-1: Tabular. (line 418) * ISO8859-10: Tabular. (line 423) * ISO8859-13: Tabular. (line 428) * ISO8859-14: Tabular. (line 433) * ISO8859-15: Tabular. (line 438) * ISO8859-2: Tabular. (line 443) * ISO8859-3: Tabular. (line 448) * ISO8859-4: Tabular. (line 453) * ISO8859-5: Tabular. (line 458) * ISO8859-6: Tabular. (line 463) * ISO8859-7: Tabular. (line 468) * ISO8859-8: Tabular. (line 473) * ISO8859-9: Tabular. (line 478) * isoir91: Tabular. (line 27) * isoir92: Tabular. (line 27) * IT, aliases and source: Tabular. (line 519) * Java: Java. (line 6) * JIS_C6220-1969: Tabular. (line 523) * JIS_C6220-1969-jp, aliases and source: Tabular. (line 523) * JIS_C6220-1969-ro, aliases and source: Tabular. (line 527) * JIS_C6226-1978, not recognised by recode: Tabular. (line 23) * JIS_C6229-1984-a, aliases and source: Tabular. (line 531) * JIS_C6229-1984-b-add, aliases and source: Tabular. (line 539) * JIS_C6229-1984-b, aliases and source: Tabular. (line 535) * JIS_C6229-1984-hand-add, aliases and source: Tabular. (line 547) * JIS_C6229-1984-hand, aliases and source: Tabular. (line 543) * JIS_C6229-1984-kana, aliases and source: Tabular. (line 551) * JIS_X0201, aliases and source: Tabular. (line 555) * JIS_X0212-1990, not recognised by recode: Tabular. (line 23) * jp: Tabular. (line 527) * jp-ocr-a: Tabular. (line 531) * jp-ocr-b: Tabular. (line 535) * jp-ocr-b-add: Tabular. (line 539) * jp-ocr-hand: Tabular. (line 543) * jp-ocr-hand-add: Tabular. (line 547) * js: Tabular. (line 558) * JUS_I.B1.002, aliases and source: Tabular. (line 558) * JUS_I.B1.003-mac, aliases and source: Tabular. (line 562) * JUS_I.B1.003-serb, aliases and source: Tabular. (line 566) * Kamenicky: Others. (line 25) * katakana: Tabular. (line 523) * KEYBCS2: Others. (line 25) * KOI-7, aliases and source: Tabular. (line 570) * KOI-8_CS2: Others. (line 33) * KOI-8_L2: Tabular. (line 129) * KOI-8, aliases and source: Tabular. (line 573) * KOI8-R, aliases and source: Tabular. (line 577) * KOI8-RU, aliases and source: Tabular. (line 581) * KOI8-U, aliases and source: Tabular. (line 584) * koi8l2: Tabular. (line 129) * KS_C_5601-1987, not recognised by recode: Tabular. (line 23) * KSC5636, aliases and source: Tabular. (line 588) * l1: Tabular. (line 418) * l2: Tabular. (line 443) * l3: Tabular. (line 448) * l4: Tabular. (line 453) * l5: Tabular. (line 478) * L6: Tabular. (line 423) * l7: Tabular. (line 428) * l8: Tabular. (line 433) * l9: Tabular. (line 438) * lap: Tabular. (line 693) * LaTeX, a charset: LaTeX. (line 6) * Latin-1: ISO 8859. (line 32) * Latin-greek-1, aliases and source: Tabular. (line 591) * latin-greek, aliases and source: Tabular. (line 680) * latin-lap: Tabular. (line 693) * latin1: Tabular. (line 418) * latin1-2-5: Tabular. (line 515) * latin2: Tabular. (line 443) * latin3: Tabular. (line 448) * latin4: Tabular. (line 453) * latin5: Tabular. (line 478) * latin6: Tabular. (line 423) * latin7: Tabular. (line 428) * latin8: Tabular. (line 433) * latin9: Tabular. (line 438) * lin: African. (line 17) * lingala: African. (line 17) * ltex: LaTeX. (line 6) * mac: Tabular. (line 686) * mac <1>: Mac OS. (line 11) * mac-is, aliases and source: Tabular. (line 684) * macce: Tabular. (line 690) * macce <1>: Mac OS. (line 11) * macedonian: Tabular. (line 562) * macintosh_ce, aliases and source: Tabular. (line 690) * macintosh_ce, and its aliases: Mac OS. (line 11) * macintosh, a charset, and its aliases: Mac OS. (line 11) * macintosh, aliases and source: Tabular. (line 686) * mnemonic, an alias for RFC1345 charset: Tabular. (line 51) * ms-ansi: Tabular. (line 93) * ms-arab: Tabular. (line 109) * ms-cyrl: Tabular. (line 89) * ms-ee: Tabular. (line 85) * ms-greek: Tabular. (line 97) * ms-hebr: Tabular. (line 105) * ms-turk: Tabular. (line 101) * MSDOS: IBM-PC. (line 6) * MSZ_7795.3, aliases and source: Tabular. (line 595) * Mule, a charset: Mule. (line 6) * NATS-DANO-ADD, aliases and source: Tabular. (line 603) * NATS-DANO, aliases and source: Tabular. (line 599) * NATS-SEFI-ADD, aliases and source: Tabular. (line 611) * NATS-SEFI, aliases and source: Tabular. (line 607) * NC_NC00-10, aliases and source: Tabular. (line 615) * NC_NC00-10(81): Tabular. (line 615) * next: Tabular. (line 635) * NeXTSTEP, aliases and source: Tabular. (line 635) * NF_Z_62-010_(1973), aliases and source: Tabular. (line 623) * NF_Z_62-010, aliases and source: Tabular. (line 619) * no: Tabular. (line 627) * no2: Tabular. (line 631) * NOS: CDC-NOS. (line 6) * NS_4551-1, aliases and source: Tabular. (line 627) * NS_4551-2, aliases and source: Tabular. (line 631) * o1: Dump. (line 25) * o2: Dump. (line 31) * o4: Dump. (line 38) * Octal-1: Dump. (line 25) * Octal-2: Dump. (line 31) * Octal-4: Dump. (line 38) * os2latin1: Tabular. (line 227) * pc: IBM-PC. (line 6) * pcl2: Tabular. (line 318) * pclatin2: Tabular. (line 318) * PT, aliases and source: Tabular. (line 639) * PT2, aliases and source: Tabular. (line 643) * QNX, an alias for a charset: Icon-QNX. (line 6) * QP: MIME. (line 16) * quote-printable: MIME. (line 16) * Quoted-Printable: MIME. (line 16) * r8: Tabular. (line 675) * ref: Tabular. (line 503) * RFC1345, a charset, and its aliases: Tabular. (line 51) * RFC1866: HTML. (line 37) * RFC2070: HTML. (line 45) * roman8: Tabular. (line 675) * rune: UCS-2. (line 31) * sami, aliases and source: Tabular. (line 693) * sango: African. (line 17) * se: Tabular. (line 647) * se2: Tabular. (line 651) * SEN_850200_B, aliases and source: Tabular. (line 647) * SEN_850200_C, aliases and source: Tabular. (line 651) * serbian: Tabular. (line 566) * SS636127: Tabular. (line 647) * ST_SEV_358-88: Tabular. (line 214) * swabytes: Permutations. (line 15) * t-bambara: African. (line 10) * t-bra: African. (line 10) * t-ewondo: African. (line 10) * t-fra: African. (line 24) * t-francais: African. (line 24) * t-fulfude: African. (line 10) * t-lin: African. (line 17) * t-lingala: African. (line 17) * t-sango: African. (line 17) * t-wolof: African. (line 17) * T.101-G2, not recognised by recode: Tabular. (line 19) * T.61-7bit, aliases and source: Tabular. (line 655) * T.61-8bit, not recognised by recode: Tabular. (line 19) * T1: Others. (line 29) * TCVN, for Vietnamese: Vietnamese. (line 11) * test15: Test. (line 35) * test16: Test. (line 42) * test7: Test. (line 25) * test8: Test. (line 30) * texi: Texinfo. (line 6) * Texinfo, a charset: Texinfo. (line 6) * Texte: Texte. (line 6) * TF-16: UTF-16. (line 22) * TF-7: UTF-7. (line 12) * TF-8: UTF-8. (line 81) * ti: Texinfo. (line 6) * txte: Texte. (line 6) * u2: UCS-2. (line 31) * u4: UCS-4. (line 10) * u6: UTF-16. (line 22) * u7: UTF-7. (line 12) * u8: UTF-8. (line 81) * UCS: Universal. (line 11) * UCS-2: UCS-2. (line 6) * UCS-4: UCS-4. (line 6) * uk: Tabular. (line 77) * UNICODE-1-1-UTF-7, and aliases: UTF-7. (line 12) * Unicode, an alias for UTF-16: UTF-16. (line 22) * us: Tabular. (line 68) * us <1>: ASCII. (line 6) * US-ASCII: Tabular. (line 68) * US-ASCII <1>: ASCII. (line 6) * us-dk, not recognised by recode: Tabular. (line 16) * UTF-1: Universal. (line 18) * UTF-16, and aliases: UTF-16. (line 6) * UTF-7: UTF-7. (line 6) * UTF-8: UTF-8. (line 6) * UTF-8, aliases: UTF-8. (line 81) * UTF-FSS: UTF-8. (line 81) * VIQR: Vietnamese. (line 23) * VISCII: Vietnamese. (line 16) * VN1, maybe not available: Vietnamese. (line 11) * VN2, maybe not available: Vietnamese. (line 11) * VN3, maybe not available: Vietnamese. (line 11) * VNI: Vietnamese. (line 27) * VPS: Vietnamese. (line 20) * WinBaltRim: Tabular. (line 113) * windows-1250: Tabular. (line 85) * windows-1251: Tabular. (line 89) * windows-1252: Tabular. (line 93) * windows-1253: Tabular. (line 97) * windows-1254: Tabular. (line 101) * windows-1255: Tabular. (line 105) * windows-1256: Tabular. (line 109) * windows-1257: Tabular. (line 113) * wolof: African. (line 17) * X0201: Tabular. (line 555) * x0201-7: Tabular. (line 523) * x1: Dump. (line 66) * x2: Dump. (line 73) * x4: Dump. (line 80) * XML-standalone: HTML. (line 27) * yu: Tabular. (line 558)  Tag Table: Node: Top1102 Node: Tutorial5674 Node: Introduction10157 Node: Charset overview14442 Ref: Charset overview-Footnote-116345 Node: Surface overview16751 Node: Contributing18227 Ref: Contributing-Footnote-120387 Node: Invoking recode20518 Node: Synopsis21480 Ref: Synopsis-Footnote-124725 Node: Requests24936 Ref: Requests-Footnote-130959 Ref: Requests-Footnote-231034 Ref: Requests-Footnote-331212 Node: Listings31679 Ref: disable-iconv39207 Ref: Listings-Footnote-143476 Node: Recoding43799 Node: Reversibility46712 Ref: Reversibility-Footnote-155095 Node: Sequencing55232 Node: Mixed57035 Node: Emacs60580 Node: Debugging61650 Node: Library66032 Node: Outer level67445 Node: Request level73372 Node: Task level84596 Node: Charset level94834 Node: Errors95680 Ref: Errors-Footnote-1101094 Ref: Errors-Footnote-2101212 Node: Universal101573 Ref: Universal-Footnote-1104797 Ref: Universal-Footnote-2104867 Node: UCS-2105088 Node: UCS-4107882 Node: UTF-7108450 Node: UTF-8109081 Node: UTF-16113599 Node: count-characters114779 Node: dump-with-names115466 Node: iconv118092 Ref: prefer-iconv119750 Node: Tabular122582 Node: ASCII misc147040 Node: ASCII147412 Node: ISO 8859148280 Node: ASCII-BS150627 Node: flat152549 Node: IBM and MS153236 Node: EBCDIC153780 Node: IBM-PC155944 Ref: IBM-PC-Footnote-1158093 Node: Icon-QNX158256 Node: CDC158688 Node: Display Code160387 Ref: Display Code-Footnote-1162687 Node: CDC-NOS162896 Node: Bang-Bang164889 Node: Micros166842 Node: Mac OS167081 Node: AtariST167507 Node: Miscellaneous168530 Node: HTML169553 Node: LaTeX175760 Node: BibTeX176561 Node: Texinfo177088 Node: ISO 5426 and ANSEL177885 Node: Vietnamese178158 Node: African179194 Node: Others180640 Node: Java182233 Node: Texte182916 Ref: Texte-Footnote-1187611 Ref: Texte-Footnote-2187691 Ref: Texte-Footnote-3188170 Node: Mule188267 Ref: Mule-Footnote-1190098 Node: Surfaces190643 Ref: Surfaces-Footnote-1193351 Node: Permutations193463 Node: End lines194324 Node: MIME196617 Node: Dump197844 Node: Test202132 Node: Internals204666 Node: Main flow205926 Node: New charsets209044 Node: New surfaces212717 Node: Design213429 Ref: Design-Footnote-1222476 Node: Concept Index222580 Node: Option Index237542 Node: Library Index240399 Node: Charset and Surface Index244390  End Tag Table  Local Variables: coding: utf-8 End: recode-3.7.15/tests/0000755000175000017500000000000014766021056007762 5recode-3.7.15/tests/Makefile.in0000644000175000017500000020233014766020640011745 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Makefile for Recode regression tests. # Copyright © 1996-2023 Free Software Foundation, Inc. # François Pinard , 1988. # 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 3, 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, see . VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ $(top_srcdir)/m4/__inline.m4 \ $(top_srcdir)/m4/absolute-header.m4 $(top_srcdir)/m4/alloca.m4 \ $(top_srcdir)/m4/assert_h.m4 \ $(top_srcdir)/m4/builtin-expect.m4 $(top_srcdir)/m4/c-bool.m4 \ $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \ $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/close.m4 \ $(top_srcdir)/m4/codeset.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/error_h.m4 \ $(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/exponentf.m4 \ $(top_srcdir)/m4/exponentl.m4 $(top_srcdir)/m4/extensions.m4 \ $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \ $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \ $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fpieee.m4 \ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/frexp.m4 \ $(top_srcdir)/m4/frexpl.m4 $(top_srcdir)/m4/fseterr.m4 \ $(top_srcdir)/m4/fstat.m4 $(top_srcdir)/m4/getdtablesize.m4 \ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getprogname.m4 \ $(top_srcdir)/m4/getrandom.m4 $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gnulib-common.m4 \ $(top_srcdir)/m4/gnulib-comp.m4 \ $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/include_next.m4 \ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ $(top_srcdir)/m4/isatty.m4 $(top_srcdir)/m4/isnand.m4 \ $(top_srcdir)/m4/isnanf.m4 $(top_srcdir)/m4/isnanl.m4 \ $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/ldexpl.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/localcharset.m4 \ $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \ $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/locale_h.m4 \ $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \ $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \ $(top_srcdir)/m4/math_h.m4 $(top_srcdir)/m4/mbrtowc.m4 \ $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \ $(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mkdir.m4 \ $(top_srcdir)/m4/mkstemps.m4 $(top_srcdir)/m4/mmap-anon.m4 \ $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \ $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \ $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open-cloexec.m4 \ $(top_srcdir)/m4/open-slash.m4 $(top_srcdir)/m4/open.m4 \ $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/pipe.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-frexp.m4 \ $(top_srcdir)/m4/printf-frexpl.m4 $(top_srcdir)/m4/printf.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/raise.m4 \ $(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/readlink.m4 \ $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/reallocarray.m4 \ $(top_srcdir)/m4/setlocale_null.m4 \ $(top_srcdir)/m4/sigaction.m4 $(top_srcdir)/m4/signal_h.m4 \ $(top_srcdir)/m4/signalblocking.m4 $(top_srcdir)/m4/signbit.m4 \ $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/ssize_t.m4 \ $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \ $(top_srcdir)/m4/stdalign.m4 $(top_srcdir)/m4/stddef_h.m4 \ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \ $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \ $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \ $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \ $(top_srcdir)/m4/sys_random_h.m4 \ $(top_srcdir)/m4/sys_socket_h.m4 \ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_types_h.m4 \ $(top_srcdir)/m4/sys_wait_h.m4 $(top_srcdir)/m4/tempname.m4 \ $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/utime.m4 \ $(top_srcdir)/m4/utime_h.m4 $(top_srcdir)/m4/vasnprintf.m4 \ $(top_srcdir)/m4/vasprintf.m4 \ $(top_srcdir)/m4/vfprintf-posix.m4 \ $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/m4/vprintf-posix.m4 \ $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \ $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \ $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wint_t.m4 \ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xsize.m4 \ $(top_srcdir)/m4/zzgnulib.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = setup.py CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/setup.py.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ ALLOCA_H = @ALLOCA_H@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ ASSERT_H = @ASSERT_H@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CLOCK_TIME_LIB = @CLOCK_TIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CROSS_COMPILING = @CROSS_COMPILING@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ CYTHON = @CYTHON@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ ERROR_H = @ERROR_H@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ FLOAT_H = @FLOAT_H@ GETOPT_CDEFS_H = @GETOPT_CDEFS_H@ GETOPT_H = @GETOPT_H@ GETRANDOM_LIB = @GETRANDOM_LIB@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@ GL_CFLAG_GNULIB_WARNINGS = @GL_CFLAG_GNULIB_WARNINGS@ GL_GNULIB_ACCESS = @GL_GNULIB_ACCESS@ GL_GNULIB_ACOSF = @GL_GNULIB_ACOSF@ GL_GNULIB_ACOSL = @GL_GNULIB_ACOSL@ GL_GNULIB_ALIGNED_ALLOC = @GL_GNULIB_ALIGNED_ALLOC@ GL_GNULIB_ASINF = @GL_GNULIB_ASINF@ GL_GNULIB_ASINL = @GL_GNULIB_ASINL@ GL_GNULIB_ATAN2F = @GL_GNULIB_ATAN2F@ GL_GNULIB_ATANF = @GL_GNULIB_ATANF@ GL_GNULIB_ATANL = @GL_GNULIB_ATANL@ GL_GNULIB_ATOLL = @GL_GNULIB_ATOLL@ GL_GNULIB_BTOWC = @GL_GNULIB_BTOWC@ GL_GNULIB_CALLOC_GNU = @GL_GNULIB_CALLOC_GNU@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CBRT = @GL_GNULIB_CBRT@ GL_GNULIB_CBRTF = @GL_GNULIB_CBRTF@ GL_GNULIB_CBRTL = @GL_GNULIB_CBRTL@ GL_GNULIB_CEIL = @GL_GNULIB_CEIL@ GL_GNULIB_CEILF = @GL_GNULIB_CEILF@ GL_GNULIB_CEILL = @GL_GNULIB_CEILL@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_COPYSIGN = @GL_GNULIB_COPYSIGN@ GL_GNULIB_COPYSIGNF = @GL_GNULIB_COPYSIGNF@ GL_GNULIB_COPYSIGNL = @GL_GNULIB_COPYSIGNL@ GL_GNULIB_COPY_FILE_RANGE = @GL_GNULIB_COPY_FILE_RANGE@ GL_GNULIB_COSF = @GL_GNULIB_COSF@ GL_GNULIB_COSHF = @GL_GNULIB_COSHF@ GL_GNULIB_COSL = @GL_GNULIB_COSL@ GL_GNULIB_CREAT = @GL_GNULIB_CREAT@ GL_GNULIB_CTIME = @GL_GNULIB_CTIME@ GL_GNULIB_DPRINTF = @GL_GNULIB_DPRINTF@ GL_GNULIB_DUP = @GL_GNULIB_DUP@ GL_GNULIB_DUP2 = @GL_GNULIB_DUP2@ GL_GNULIB_DUP3 = @GL_GNULIB_DUP3@ GL_GNULIB_DUPLOCALE = @GL_GNULIB_DUPLOCALE@ GL_GNULIB_ENVIRON = @GL_GNULIB_ENVIRON@ GL_GNULIB_EUIDACCESS = @GL_GNULIB_EUIDACCESS@ GL_GNULIB_EXECL = @GL_GNULIB_EXECL@ GL_GNULIB_EXECLE = @GL_GNULIB_EXECLE@ GL_GNULIB_EXECLP = @GL_GNULIB_EXECLP@ GL_GNULIB_EXECV = @GL_GNULIB_EXECV@ GL_GNULIB_EXECVE = @GL_GNULIB_EXECVE@ GL_GNULIB_EXECVP = @GL_GNULIB_EXECVP@ GL_GNULIB_EXECVPE = @GL_GNULIB_EXECVPE@ GL_GNULIB_EXP2 = @GL_GNULIB_EXP2@ GL_GNULIB_EXP2F = @GL_GNULIB_EXP2F@ GL_GNULIB_EXP2L = @GL_GNULIB_EXP2L@ GL_GNULIB_EXPF = @GL_GNULIB_EXPF@ GL_GNULIB_EXPL = @GL_GNULIB_EXPL@ GL_GNULIB_EXPLICIT_BZERO = @GL_GNULIB_EXPLICIT_BZERO@ GL_GNULIB_EXPM1 = @GL_GNULIB_EXPM1@ GL_GNULIB_EXPM1F = @GL_GNULIB_EXPM1F@ GL_GNULIB_EXPM1L = @GL_GNULIB_EXPM1L@ GL_GNULIB_FABSF = @GL_GNULIB_FABSF@ GL_GNULIB_FABSL = @GL_GNULIB_FABSL@ GL_GNULIB_FACCESSAT = @GL_GNULIB_FACCESSAT@ GL_GNULIB_FCHDIR = @GL_GNULIB_FCHDIR@ GL_GNULIB_FCHMODAT = @GL_GNULIB_FCHMODAT@ GL_GNULIB_FCHOWNAT = @GL_GNULIB_FCHOWNAT@ GL_GNULIB_FCLOSE = @GL_GNULIB_FCLOSE@ GL_GNULIB_FCNTL = @GL_GNULIB_FCNTL@ GL_GNULIB_FDATASYNC = @GL_GNULIB_FDATASYNC@ GL_GNULIB_FDOPEN = @GL_GNULIB_FDOPEN@ GL_GNULIB_FFLUSH = @GL_GNULIB_FFLUSH@ GL_GNULIB_FFSL = @GL_GNULIB_FFSL@ GL_GNULIB_FFSLL = @GL_GNULIB_FFSLL@ GL_GNULIB_FGETC = @GL_GNULIB_FGETC@ GL_GNULIB_FGETS = @GL_GNULIB_FGETS@ GL_GNULIB_FLOOR = @GL_GNULIB_FLOOR@ GL_GNULIB_FLOORF = @GL_GNULIB_FLOORF@ GL_GNULIB_FLOORL = @GL_GNULIB_FLOORL@ GL_GNULIB_FMA = @GL_GNULIB_FMA@ GL_GNULIB_FMAF = @GL_GNULIB_FMAF@ GL_GNULIB_FMAL = @GL_GNULIB_FMAL@ GL_GNULIB_FMOD = @GL_GNULIB_FMOD@ GL_GNULIB_FMODF = @GL_GNULIB_FMODF@ GL_GNULIB_FMODL = @GL_GNULIB_FMODL@ GL_GNULIB_FOPEN = @GL_GNULIB_FOPEN@ GL_GNULIB_FOPEN_GNU = @GL_GNULIB_FOPEN_GNU@ GL_GNULIB_FPRINTF = @GL_GNULIB_FPRINTF@ GL_GNULIB_FPRINTF_POSIX = @GL_GNULIB_FPRINTF_POSIX@ GL_GNULIB_FPURGE = @GL_GNULIB_FPURGE@ GL_GNULIB_FPUTC = @GL_GNULIB_FPUTC@ GL_GNULIB_FPUTS = @GL_GNULIB_FPUTS@ GL_GNULIB_FREAD = @GL_GNULIB_FREAD@ GL_GNULIB_FREE_POSIX = @GL_GNULIB_FREE_POSIX@ GL_GNULIB_FREOPEN = @GL_GNULIB_FREOPEN@ GL_GNULIB_FREXP = @GL_GNULIB_FREXP@ GL_GNULIB_FREXPF = @GL_GNULIB_FREXPF@ GL_GNULIB_FREXPL = @GL_GNULIB_FREXPL@ GL_GNULIB_FSCANF = @GL_GNULIB_FSCANF@ GL_GNULIB_FSEEK = @GL_GNULIB_FSEEK@ GL_GNULIB_FSEEKO = @GL_GNULIB_FSEEKO@ GL_GNULIB_FSTAT = @GL_GNULIB_FSTAT@ GL_GNULIB_FSTATAT = @GL_GNULIB_FSTATAT@ GL_GNULIB_FSYNC = @GL_GNULIB_FSYNC@ GL_GNULIB_FTELL = @GL_GNULIB_FTELL@ GL_GNULIB_FTELLO = @GL_GNULIB_FTELLO@ GL_GNULIB_FTRUNCATE = @GL_GNULIB_FTRUNCATE@ GL_GNULIB_FUTIMENS = @GL_GNULIB_FUTIMENS@ GL_GNULIB_FWRITE = @GL_GNULIB_FWRITE@ GL_GNULIB_GETC = @GL_GNULIB_GETC@ GL_GNULIB_GETCHAR = @GL_GNULIB_GETCHAR@ GL_GNULIB_GETCWD = @GL_GNULIB_GETCWD@ GL_GNULIB_GETDELIM = @GL_GNULIB_GETDELIM@ GL_GNULIB_GETDOMAINNAME = @GL_GNULIB_GETDOMAINNAME@ GL_GNULIB_GETDTABLESIZE = @GL_GNULIB_GETDTABLESIZE@ GL_GNULIB_GETENTROPY = @GL_GNULIB_GETENTROPY@ GL_GNULIB_GETGROUPS = @GL_GNULIB_GETGROUPS@ GL_GNULIB_GETHOSTNAME = @GL_GNULIB_GETHOSTNAME@ GL_GNULIB_GETLINE = @GL_GNULIB_GETLINE@ GL_GNULIB_GETLOADAVG = @GL_GNULIB_GETLOADAVG@ GL_GNULIB_GETLOGIN = @GL_GNULIB_GETLOGIN@ GL_GNULIB_GETLOGIN_R = @GL_GNULIB_GETLOGIN_R@ GL_GNULIB_GETOPT_POSIX = @GL_GNULIB_GETOPT_POSIX@ GL_GNULIB_GETPAGESIZE = @GL_GNULIB_GETPAGESIZE@ GL_GNULIB_GETPASS = @GL_GNULIB_GETPASS@ GL_GNULIB_GETPASS_GNU = @GL_GNULIB_GETPASS_GNU@ GL_GNULIB_GETPROGNAME = @GL_GNULIB_GETPROGNAME@ GL_GNULIB_GETRANDOM = @GL_GNULIB_GETRANDOM@ GL_GNULIB_GETSUBOPT = @GL_GNULIB_GETSUBOPT@ GL_GNULIB_GETUMASK = @GL_GNULIB_GETUMASK@ GL_GNULIB_GETUSERSHELL = @GL_GNULIB_GETUSERSHELL@ GL_GNULIB_GRANTPT = @GL_GNULIB_GRANTPT@ GL_GNULIB_GROUP_MEMBER = @GL_GNULIB_GROUP_MEMBER@ GL_GNULIB_HYPOT = @GL_GNULIB_HYPOT@ GL_GNULIB_HYPOTF = @GL_GNULIB_HYPOTF@ GL_GNULIB_HYPOTL = @GL_GNULIB_HYPOTL@ GL_GNULIB_ILOGB = @GL_GNULIB_ILOGB@ GL_GNULIB_ILOGBF = @GL_GNULIB_ILOGBF@ GL_GNULIB_ILOGBL = @GL_GNULIB_ILOGBL@ GL_GNULIB_IMAXABS = @GL_GNULIB_IMAXABS@ GL_GNULIB_IMAXDIV = @GL_GNULIB_IMAXDIV@ GL_GNULIB_ISATTY = @GL_GNULIB_ISATTY@ GL_GNULIB_ISFINITE = @GL_GNULIB_ISFINITE@ GL_GNULIB_ISINF = @GL_GNULIB_ISINF@ GL_GNULIB_ISNAN = @GL_GNULIB_ISNAN@ GL_GNULIB_ISNAND = @GL_GNULIB_ISNAND@ GL_GNULIB_ISNANF = @GL_GNULIB_ISNANF@ GL_GNULIB_ISNANL = @GL_GNULIB_ISNANL@ GL_GNULIB_ISWBLANK = @GL_GNULIB_ISWBLANK@ GL_GNULIB_ISWCTYPE = @GL_GNULIB_ISWCTYPE@ GL_GNULIB_ISWDIGIT = @GL_GNULIB_ISWDIGIT@ GL_GNULIB_ISWXDIGIT = @GL_GNULIB_ISWXDIGIT@ GL_GNULIB_LCHMOD = @GL_GNULIB_LCHMOD@ GL_GNULIB_LCHOWN = @GL_GNULIB_LCHOWN@ GL_GNULIB_LDEXPF = @GL_GNULIB_LDEXPF@ GL_GNULIB_LDEXPL = @GL_GNULIB_LDEXPL@ GL_GNULIB_LINK = @GL_GNULIB_LINK@ GL_GNULIB_LINKAT = @GL_GNULIB_LINKAT@ GL_GNULIB_LOCALECONV = @GL_GNULIB_LOCALECONV@ GL_GNULIB_LOCALENAME = @GL_GNULIB_LOCALENAME@ GL_GNULIB_LOCALTIME = @GL_GNULIB_LOCALTIME@ GL_GNULIB_LOG = @GL_GNULIB_LOG@ GL_GNULIB_LOG10 = @GL_GNULIB_LOG10@ GL_GNULIB_LOG10F = @GL_GNULIB_LOG10F@ GL_GNULIB_LOG10L = @GL_GNULIB_LOG10L@ GL_GNULIB_LOG1P = @GL_GNULIB_LOG1P@ GL_GNULIB_LOG1PF = @GL_GNULIB_LOG1PF@ GL_GNULIB_LOG1PL = @GL_GNULIB_LOG1PL@ GL_GNULIB_LOG2 = @GL_GNULIB_LOG2@ GL_GNULIB_LOG2F = @GL_GNULIB_LOG2F@ GL_GNULIB_LOG2L = @GL_GNULIB_LOG2L@ GL_GNULIB_LOGB = @GL_GNULIB_LOGB@ GL_GNULIB_LOGBF = @GL_GNULIB_LOGBF@ GL_GNULIB_LOGBL = @GL_GNULIB_LOGBL@ GL_GNULIB_LOGF = @GL_GNULIB_LOGF@ GL_GNULIB_LOGL = @GL_GNULIB_LOGL@ GL_GNULIB_LSEEK = @GL_GNULIB_LSEEK@ GL_GNULIB_LSTAT = @GL_GNULIB_LSTAT@ GL_GNULIB_MALLOC_GNU = @GL_GNULIB_MALLOC_GNU@ GL_GNULIB_MALLOC_POSIX = @GL_GNULIB_MALLOC_POSIX@ GL_GNULIB_MBRLEN = @GL_GNULIB_MBRLEN@ GL_GNULIB_MBRTOWC = @GL_GNULIB_MBRTOWC@ GL_GNULIB_MBSCASECMP = @GL_GNULIB_MBSCASECMP@ GL_GNULIB_MBSCASESTR = @GL_GNULIB_MBSCASESTR@ GL_GNULIB_MBSCHR = @GL_GNULIB_MBSCHR@ GL_GNULIB_MBSCSPN = @GL_GNULIB_MBSCSPN@ GL_GNULIB_MBSINIT = @GL_GNULIB_MBSINIT@ GL_GNULIB_MBSLEN = @GL_GNULIB_MBSLEN@ GL_GNULIB_MBSNCASECMP = @GL_GNULIB_MBSNCASECMP@ GL_GNULIB_MBSNLEN = @GL_GNULIB_MBSNLEN@ GL_GNULIB_MBSNRTOWCS = @GL_GNULIB_MBSNRTOWCS@ GL_GNULIB_MBSPBRK = @GL_GNULIB_MBSPBRK@ GL_GNULIB_MBSPCASECMP = @GL_GNULIB_MBSPCASECMP@ GL_GNULIB_MBSRCHR = @GL_GNULIB_MBSRCHR@ GL_GNULIB_MBSRTOWCS = @GL_GNULIB_MBSRTOWCS@ GL_GNULIB_MBSSEP = @GL_GNULIB_MBSSEP@ GL_GNULIB_MBSSPN = @GL_GNULIB_MBSSPN@ GL_GNULIB_MBSSTR = @GL_GNULIB_MBSSTR@ GL_GNULIB_MBSTOK_R = @GL_GNULIB_MBSTOK_R@ GL_GNULIB_MBTOWC = @GL_GNULIB_MBTOWC@ GL_GNULIB_MDA_ACCESS = @GL_GNULIB_MDA_ACCESS@ GL_GNULIB_MDA_CHDIR = @GL_GNULIB_MDA_CHDIR@ GL_GNULIB_MDA_CHMOD = @GL_GNULIB_MDA_CHMOD@ GL_GNULIB_MDA_CLOSE = @GL_GNULIB_MDA_CLOSE@ GL_GNULIB_MDA_CREAT = @GL_GNULIB_MDA_CREAT@ GL_GNULIB_MDA_DUP = @GL_GNULIB_MDA_DUP@ GL_GNULIB_MDA_DUP2 = @GL_GNULIB_MDA_DUP2@ GL_GNULIB_MDA_ECVT = @GL_GNULIB_MDA_ECVT@ GL_GNULIB_MDA_EXECL = @GL_GNULIB_MDA_EXECL@ GL_GNULIB_MDA_EXECLE = @GL_GNULIB_MDA_EXECLE@ GL_GNULIB_MDA_EXECLP = @GL_GNULIB_MDA_EXECLP@ GL_GNULIB_MDA_EXECV = @GL_GNULIB_MDA_EXECV@ GL_GNULIB_MDA_EXECVE = @GL_GNULIB_MDA_EXECVE@ GL_GNULIB_MDA_EXECVP = @GL_GNULIB_MDA_EXECVP@ GL_GNULIB_MDA_EXECVPE = @GL_GNULIB_MDA_EXECVPE@ GL_GNULIB_MDA_FCLOSEALL = @GL_GNULIB_MDA_FCLOSEALL@ GL_GNULIB_MDA_FCVT = @GL_GNULIB_MDA_FCVT@ GL_GNULIB_MDA_FDOPEN = @GL_GNULIB_MDA_FDOPEN@ GL_GNULIB_MDA_FILENO = @GL_GNULIB_MDA_FILENO@ GL_GNULIB_MDA_GCVT = @GL_GNULIB_MDA_GCVT@ GL_GNULIB_MDA_GETCWD = @GL_GNULIB_MDA_GETCWD@ GL_GNULIB_MDA_GETPID = @GL_GNULIB_MDA_GETPID@ GL_GNULIB_MDA_GETW = @GL_GNULIB_MDA_GETW@ GL_GNULIB_MDA_ISATTY = @GL_GNULIB_MDA_ISATTY@ GL_GNULIB_MDA_J0 = @GL_GNULIB_MDA_J0@ GL_GNULIB_MDA_J1 = @GL_GNULIB_MDA_J1@ GL_GNULIB_MDA_JN = @GL_GNULIB_MDA_JN@ GL_GNULIB_MDA_LSEEK = @GL_GNULIB_MDA_LSEEK@ GL_GNULIB_MDA_MEMCCPY = @GL_GNULIB_MDA_MEMCCPY@ GL_GNULIB_MDA_MKDIR = @GL_GNULIB_MDA_MKDIR@ GL_GNULIB_MDA_MKTEMP = @GL_GNULIB_MDA_MKTEMP@ GL_GNULIB_MDA_OPEN = @GL_GNULIB_MDA_OPEN@ GL_GNULIB_MDA_PUTENV = @GL_GNULIB_MDA_PUTENV@ GL_GNULIB_MDA_PUTW = @GL_GNULIB_MDA_PUTW@ GL_GNULIB_MDA_READ = @GL_GNULIB_MDA_READ@ GL_GNULIB_MDA_RMDIR = @GL_GNULIB_MDA_RMDIR@ GL_GNULIB_MDA_STRDUP = @GL_GNULIB_MDA_STRDUP@ GL_GNULIB_MDA_SWAB = @GL_GNULIB_MDA_SWAB@ GL_GNULIB_MDA_TEMPNAM = @GL_GNULIB_MDA_TEMPNAM@ GL_GNULIB_MDA_TZSET = @GL_GNULIB_MDA_TZSET@ GL_GNULIB_MDA_UMASK = @GL_GNULIB_MDA_UMASK@ GL_GNULIB_MDA_UNLINK = @GL_GNULIB_MDA_UNLINK@ GL_GNULIB_MDA_UTIME = @GL_GNULIB_MDA_UTIME@ GL_GNULIB_MDA_WCSDUP = @GL_GNULIB_MDA_WCSDUP@ GL_GNULIB_MDA_WRITE = @GL_GNULIB_MDA_WRITE@ GL_GNULIB_MDA_Y0 = @GL_GNULIB_MDA_Y0@ GL_GNULIB_MDA_Y1 = @GL_GNULIB_MDA_Y1@ GL_GNULIB_MDA_YN = @GL_GNULIB_MDA_YN@ GL_GNULIB_MEMCHR = @GL_GNULIB_MEMCHR@ GL_GNULIB_MEMMEM = @GL_GNULIB_MEMMEM@ GL_GNULIB_MEMPCPY = @GL_GNULIB_MEMPCPY@ GL_GNULIB_MEMRCHR = @GL_GNULIB_MEMRCHR@ GL_GNULIB_MEMSET_EXPLICIT = @GL_GNULIB_MEMSET_EXPLICIT@ GL_GNULIB_MKDIR = @GL_GNULIB_MKDIR@ GL_GNULIB_MKDIRAT = @GL_GNULIB_MKDIRAT@ GL_GNULIB_MKDTEMP = @GL_GNULIB_MKDTEMP@ GL_GNULIB_MKFIFO = @GL_GNULIB_MKFIFO@ GL_GNULIB_MKFIFOAT = @GL_GNULIB_MKFIFOAT@ GL_GNULIB_MKNOD = @GL_GNULIB_MKNOD@ GL_GNULIB_MKNODAT = @GL_GNULIB_MKNODAT@ GL_GNULIB_MKOSTEMP = @GL_GNULIB_MKOSTEMP@ GL_GNULIB_MKOSTEMPS = @GL_GNULIB_MKOSTEMPS@ GL_GNULIB_MKSTEMP = @GL_GNULIB_MKSTEMP@ GL_GNULIB_MKSTEMPS = @GL_GNULIB_MKSTEMPS@ GL_GNULIB_MKTIME = @GL_GNULIB_MKTIME@ GL_GNULIB_MODF = @GL_GNULIB_MODF@ GL_GNULIB_MODFF = @GL_GNULIB_MODFF@ GL_GNULIB_MODFL = @GL_GNULIB_MODFL@ GL_GNULIB_NANOSLEEP = @GL_GNULIB_NANOSLEEP@ GL_GNULIB_NONBLOCKING = @GL_GNULIB_NONBLOCKING@ GL_GNULIB_OBSTACK_PRINTF = @GL_GNULIB_OBSTACK_PRINTF@ GL_GNULIB_OBSTACK_PRINTF_POSIX = @GL_GNULIB_OBSTACK_PRINTF_POSIX@ GL_GNULIB_OPEN = @GL_GNULIB_OPEN@ GL_GNULIB_OPENAT = @GL_GNULIB_OPENAT@ GL_GNULIB_OVERRIDES_STRUCT_STAT = @GL_GNULIB_OVERRIDES_STRUCT_STAT@ GL_GNULIB_PCLOSE = @GL_GNULIB_PCLOSE@ GL_GNULIB_PERROR = @GL_GNULIB_PERROR@ GL_GNULIB_PIPE = @GL_GNULIB_PIPE@ GL_GNULIB_PIPE2 = @GL_GNULIB_PIPE2@ GL_GNULIB_POPEN = @GL_GNULIB_POPEN@ GL_GNULIB_POSIX_MEMALIGN = @GL_GNULIB_POSIX_MEMALIGN@ GL_GNULIB_POSIX_OPENPT = @GL_GNULIB_POSIX_OPENPT@ GL_GNULIB_POWF = @GL_GNULIB_POWF@ GL_GNULIB_PREAD = @GL_GNULIB_PREAD@ GL_GNULIB_PRINTF = @GL_GNULIB_PRINTF@ GL_GNULIB_PRINTF_POSIX = @GL_GNULIB_PRINTF_POSIX@ GL_GNULIB_PTHREAD_SIGMASK = @GL_GNULIB_PTHREAD_SIGMASK@ GL_GNULIB_PTSNAME = @GL_GNULIB_PTSNAME@ GL_GNULIB_PTSNAME_R = @GL_GNULIB_PTSNAME_R@ GL_GNULIB_PUTC = @GL_GNULIB_PUTC@ GL_GNULIB_PUTCHAR = @GL_GNULIB_PUTCHAR@ GL_GNULIB_PUTENV = @GL_GNULIB_PUTENV@ GL_GNULIB_PUTS = @GL_GNULIB_PUTS@ GL_GNULIB_PWRITE = @GL_GNULIB_PWRITE@ GL_GNULIB_QSORT_R = @GL_GNULIB_QSORT_R@ GL_GNULIB_RAISE = @GL_GNULIB_RAISE@ GL_GNULIB_RANDOM = @GL_GNULIB_RANDOM@ GL_GNULIB_RANDOM_R = @GL_GNULIB_RANDOM_R@ GL_GNULIB_RAWMEMCHR = @GL_GNULIB_RAWMEMCHR@ GL_GNULIB_READ = @GL_GNULIB_READ@ GL_GNULIB_READLINK = @GL_GNULIB_READLINK@ GL_GNULIB_READLINKAT = @GL_GNULIB_READLINKAT@ GL_GNULIB_REALLOCARRAY = @GL_GNULIB_REALLOCARRAY@ GL_GNULIB_REALLOC_GNU = @GL_GNULIB_REALLOC_GNU@ GL_GNULIB_REALLOC_POSIX = @GL_GNULIB_REALLOC_POSIX@ GL_GNULIB_REALPATH = @GL_GNULIB_REALPATH@ GL_GNULIB_REMAINDER = @GL_GNULIB_REMAINDER@ GL_GNULIB_REMAINDERF = @GL_GNULIB_REMAINDERF@ GL_GNULIB_REMAINDERL = @GL_GNULIB_REMAINDERL@ GL_GNULIB_REMOVE = @GL_GNULIB_REMOVE@ GL_GNULIB_RENAME = @GL_GNULIB_RENAME@ GL_GNULIB_RENAMEAT = @GL_GNULIB_RENAMEAT@ GL_GNULIB_RINT = @GL_GNULIB_RINT@ GL_GNULIB_RINTF = @GL_GNULIB_RINTF@ GL_GNULIB_RINTL = @GL_GNULIB_RINTL@ GL_GNULIB_RMDIR = @GL_GNULIB_RMDIR@ GL_GNULIB_ROUND = @GL_GNULIB_ROUND@ GL_GNULIB_ROUNDF = @GL_GNULIB_ROUNDF@ GL_GNULIB_ROUNDL = @GL_GNULIB_ROUNDL@ GL_GNULIB_RPMATCH = @GL_GNULIB_RPMATCH@ GL_GNULIB_SCANF = @GL_GNULIB_SCANF@ GL_GNULIB_SECURE_GETENV = @GL_GNULIB_SECURE_GETENV@ GL_GNULIB_SETENV = @GL_GNULIB_SETENV@ GL_GNULIB_SETHOSTNAME = @GL_GNULIB_SETHOSTNAME@ GL_GNULIB_SETLOCALE = @GL_GNULIB_SETLOCALE@ GL_GNULIB_SETLOCALE_NULL = @GL_GNULIB_SETLOCALE_NULL@ GL_GNULIB_SIGABBREV_NP = @GL_GNULIB_SIGABBREV_NP@ GL_GNULIB_SIGACTION = @GL_GNULIB_SIGACTION@ GL_GNULIB_SIGDESCR_NP = @GL_GNULIB_SIGDESCR_NP@ GL_GNULIB_SIGNAL_H_SIGPIPE = @GL_GNULIB_SIGNAL_H_SIGPIPE@ GL_GNULIB_SIGNBIT = @GL_GNULIB_SIGNBIT@ GL_GNULIB_SIGPROCMASK = @GL_GNULIB_SIGPROCMASK@ GL_GNULIB_SINF = @GL_GNULIB_SINF@ GL_GNULIB_SINHF = @GL_GNULIB_SINHF@ GL_GNULIB_SINL = @GL_GNULIB_SINL@ GL_GNULIB_SLEEP = @GL_GNULIB_SLEEP@ GL_GNULIB_SNPRINTF = @GL_GNULIB_SNPRINTF@ GL_GNULIB_SPRINTF_POSIX = @GL_GNULIB_SPRINTF_POSIX@ GL_GNULIB_SQRTF = @GL_GNULIB_SQRTF@ GL_GNULIB_SQRTL = @GL_GNULIB_SQRTL@ GL_GNULIB_STAT = @GL_GNULIB_STAT@ GL_GNULIB_STDIO_H_NONBLOCKING = @GL_GNULIB_STDIO_H_NONBLOCKING@ GL_GNULIB_STDIO_H_SIGPIPE = @GL_GNULIB_STDIO_H_SIGPIPE@ GL_GNULIB_STPCPY = @GL_GNULIB_STPCPY@ GL_GNULIB_STPNCPY = @GL_GNULIB_STPNCPY@ GL_GNULIB_STRCASESTR = @GL_GNULIB_STRCASESTR@ GL_GNULIB_STRCHRNUL = @GL_GNULIB_STRCHRNUL@ GL_GNULIB_STRDUP = @GL_GNULIB_STRDUP@ GL_GNULIB_STRERROR = @GL_GNULIB_STRERROR@ GL_GNULIB_STRERRORNAME_NP = @GL_GNULIB_STRERRORNAME_NP@ GL_GNULIB_STRERROR_R = @GL_GNULIB_STRERROR_R@ GL_GNULIB_STRFTIME = @GL_GNULIB_STRFTIME@ GL_GNULIB_STRNCAT = @GL_GNULIB_STRNCAT@ GL_GNULIB_STRNDUP = @GL_GNULIB_STRNDUP@ GL_GNULIB_STRNLEN = @GL_GNULIB_STRNLEN@ GL_GNULIB_STRPBRK = @GL_GNULIB_STRPBRK@ GL_GNULIB_STRPTIME = @GL_GNULIB_STRPTIME@ GL_GNULIB_STRSEP = @GL_GNULIB_STRSEP@ GL_GNULIB_STRSIGNAL = @GL_GNULIB_STRSIGNAL@ GL_GNULIB_STRSTR = @GL_GNULIB_STRSTR@ GL_GNULIB_STRTOD = @GL_GNULIB_STRTOD@ GL_GNULIB_STRTOIMAX = @GL_GNULIB_STRTOIMAX@ GL_GNULIB_STRTOK_R = @GL_GNULIB_STRTOK_R@ GL_GNULIB_STRTOL = @GL_GNULIB_STRTOL@ GL_GNULIB_STRTOLD = @GL_GNULIB_STRTOLD@ GL_GNULIB_STRTOLL = @GL_GNULIB_STRTOLL@ GL_GNULIB_STRTOUL = @GL_GNULIB_STRTOUL@ GL_GNULIB_STRTOULL = @GL_GNULIB_STRTOULL@ GL_GNULIB_STRTOUMAX = @GL_GNULIB_STRTOUMAX@ GL_GNULIB_STRVERSCMP = @GL_GNULIB_STRVERSCMP@ GL_GNULIB_SYMLINK = @GL_GNULIB_SYMLINK@ GL_GNULIB_SYMLINKAT = @GL_GNULIB_SYMLINKAT@ GL_GNULIB_SYSTEM_POSIX = @GL_GNULIB_SYSTEM_POSIX@ GL_GNULIB_TANF = @GL_GNULIB_TANF@ GL_GNULIB_TANHF = @GL_GNULIB_TANHF@ GL_GNULIB_TANL = @GL_GNULIB_TANL@ GL_GNULIB_TIMEGM = @GL_GNULIB_TIMEGM@ GL_GNULIB_TIMESPEC_GET = @GL_GNULIB_TIMESPEC_GET@ GL_GNULIB_TIMESPEC_GETRES = @GL_GNULIB_TIMESPEC_GETRES@ GL_GNULIB_TIME_R = @GL_GNULIB_TIME_R@ GL_GNULIB_TIME_RZ = @GL_GNULIB_TIME_RZ@ GL_GNULIB_TMPFILE = @GL_GNULIB_TMPFILE@ GL_GNULIB_TOWCTRANS = @GL_GNULIB_TOWCTRANS@ GL_GNULIB_TRUNC = @GL_GNULIB_TRUNC@ GL_GNULIB_TRUNCATE = @GL_GNULIB_TRUNCATE@ GL_GNULIB_TRUNCF = @GL_GNULIB_TRUNCF@ GL_GNULIB_TRUNCL = @GL_GNULIB_TRUNCL@ GL_GNULIB_TTYNAME_R = @GL_GNULIB_TTYNAME_R@ GL_GNULIB_TZSET = @GL_GNULIB_TZSET@ GL_GNULIB_UNISTD_H_GETOPT = @GL_GNULIB_UNISTD_H_GETOPT@ GL_GNULIB_UNISTD_H_NONBLOCKING = @GL_GNULIB_UNISTD_H_NONBLOCKING@ GL_GNULIB_UNISTD_H_SIGPIPE = @GL_GNULIB_UNISTD_H_SIGPIPE@ GL_GNULIB_UNLINK = @GL_GNULIB_UNLINK@ GL_GNULIB_UNLINKAT = @GL_GNULIB_UNLINKAT@ GL_GNULIB_UNLOCKPT = @GL_GNULIB_UNLOCKPT@ GL_GNULIB_UNSETENV = @GL_GNULIB_UNSETENV@ GL_GNULIB_USLEEP = @GL_GNULIB_USLEEP@ GL_GNULIB_UTIME = @GL_GNULIB_UTIME@ GL_GNULIB_UTIMENSAT = @GL_GNULIB_UTIMENSAT@ GL_GNULIB_VASPRINTF = @GL_GNULIB_VASPRINTF@ GL_GNULIB_VDPRINTF = @GL_GNULIB_VDPRINTF@ GL_GNULIB_VFPRINTF = @GL_GNULIB_VFPRINTF@ GL_GNULIB_VFPRINTF_POSIX = @GL_GNULIB_VFPRINTF_POSIX@ GL_GNULIB_VFSCANF = @GL_GNULIB_VFSCANF@ GL_GNULIB_VPRINTF = @GL_GNULIB_VPRINTF@ GL_GNULIB_VPRINTF_POSIX = @GL_GNULIB_VPRINTF_POSIX@ GL_GNULIB_VSCANF = @GL_GNULIB_VSCANF@ GL_GNULIB_VSNPRINTF = @GL_GNULIB_VSNPRINTF@ GL_GNULIB_VSPRINTF_POSIX = @GL_GNULIB_VSPRINTF_POSIX@ GL_GNULIB_WAITPID = @GL_GNULIB_WAITPID@ GL_GNULIB_WCPCPY = @GL_GNULIB_WCPCPY@ GL_GNULIB_WCPNCPY = @GL_GNULIB_WCPNCPY@ GL_GNULIB_WCRTOMB = @GL_GNULIB_WCRTOMB@ GL_GNULIB_WCSCASECMP = @GL_GNULIB_WCSCASECMP@ GL_GNULIB_WCSCAT = @GL_GNULIB_WCSCAT@ GL_GNULIB_WCSCHR = @GL_GNULIB_WCSCHR@ GL_GNULIB_WCSCMP = @GL_GNULIB_WCSCMP@ GL_GNULIB_WCSCOLL = @GL_GNULIB_WCSCOLL@ GL_GNULIB_WCSCPY = @GL_GNULIB_WCSCPY@ GL_GNULIB_WCSCSPN = @GL_GNULIB_WCSCSPN@ GL_GNULIB_WCSDUP = @GL_GNULIB_WCSDUP@ GL_GNULIB_WCSFTIME = @GL_GNULIB_WCSFTIME@ GL_GNULIB_WCSLEN = @GL_GNULIB_WCSLEN@ GL_GNULIB_WCSNCASECMP = @GL_GNULIB_WCSNCASECMP@ GL_GNULIB_WCSNCAT = @GL_GNULIB_WCSNCAT@ GL_GNULIB_WCSNCMP = @GL_GNULIB_WCSNCMP@ GL_GNULIB_WCSNCPY = @GL_GNULIB_WCSNCPY@ GL_GNULIB_WCSNLEN = @GL_GNULIB_WCSNLEN@ GL_GNULIB_WCSNRTOMBS = @GL_GNULIB_WCSNRTOMBS@ GL_GNULIB_WCSPBRK = @GL_GNULIB_WCSPBRK@ GL_GNULIB_WCSRCHR = @GL_GNULIB_WCSRCHR@ GL_GNULIB_WCSRTOMBS = @GL_GNULIB_WCSRTOMBS@ GL_GNULIB_WCSSPN = @GL_GNULIB_WCSSPN@ GL_GNULIB_WCSSTR = @GL_GNULIB_WCSSTR@ GL_GNULIB_WCSTOK = @GL_GNULIB_WCSTOK@ GL_GNULIB_WCSWIDTH = @GL_GNULIB_WCSWIDTH@ GL_GNULIB_WCSXFRM = @GL_GNULIB_WCSXFRM@ GL_GNULIB_WCTOB = @GL_GNULIB_WCTOB@ GL_GNULIB_WCTOMB = @GL_GNULIB_WCTOMB@ GL_GNULIB_WCTRANS = @GL_GNULIB_WCTRANS@ GL_GNULIB_WCTYPE = @GL_GNULIB_WCTYPE@ GL_GNULIB_WCWIDTH = @GL_GNULIB_WCWIDTH@ GL_GNULIB_WMEMCHR = @GL_GNULIB_WMEMCHR@ GL_GNULIB_WMEMCMP = @GL_GNULIB_WMEMCMP@ GL_GNULIB_WMEMCPY = @GL_GNULIB_WMEMCPY@ GL_GNULIB_WMEMMOVE = @GL_GNULIB_WMEMMOVE@ GL_GNULIB_WMEMPCPY = @GL_GNULIB_WMEMPCPY@ GL_GNULIB_WMEMSET = @GL_GNULIB_WMEMSET@ GL_GNULIB_WRITE = @GL_GNULIB_WRITE@ GL_GNULIB__EXIT = @GL_GNULIB__EXIT@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNULIBHEADERS_OVERRIDE_WINT_T = @GNULIBHEADERS_OVERRIDE_WINT_T@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GREP = @GREP@ HARD_LOCALE_LIB = @HARD_LOCALE_LIB@ HAVE_ACOSF = @HAVE_ACOSF@ HAVE_ACOSL = @HAVE_ACOSL@ HAVE_ALIGNED_ALLOC = @HAVE_ALIGNED_ALLOC@ HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ HAVE_ASINF = @HAVE_ASINF@ HAVE_ASINL = @HAVE_ASINL@ HAVE_ATAN2F = @HAVE_ATAN2F@ HAVE_ATANF = @HAVE_ATANF@ HAVE_ATANL = @HAVE_ATANL@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CBRT = @HAVE_CBRT@ HAVE_CBRTF = @HAVE_CBRTF@ HAVE_CBRTL = @HAVE_CBRTL@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_COPYSIGN = @HAVE_COPYSIGN@ HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@ HAVE_COSF = @HAVE_COSF@ HAVE_COSHF = @HAVE_COSHF@ HAVE_COSL = @HAVE_COSL@ HAVE_CRTDEFS_H = @HAVE_CRTDEFS_H@ HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ HAVE_DECL_COSL = @HAVE_DECL_COSL@ HAVE_DECL_ECVT = @HAVE_DECL_ECVT@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_EXECVPE = @HAVE_DECL_EXECVPE@ HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FCLOSEALL = @HAVE_DECL_FCLOSEALL@ HAVE_DECL_FCVT = @HAVE_DECL_FCVT@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GCVT = @HAVE_DECL_GCVT@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_GETW = @HAVE_DECL_GETW@ HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@ HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_PUTW = @HAVE_DECL_PUTW@ HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@ HAVE_DECL_SINL = @HAVE_DECL_SINL@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ HAVE_DECL_TANL = @HAVE_DECL_TANL@ HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@ HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DECL_WCSDUP = @HAVE_DECL_WCSDUP@ HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ HAVE_ERROR = @HAVE_ERROR@ HAVE_ERROR_AT_LINE = @HAVE_ERROR_AT_LINE@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_EXECVPE = @HAVE_EXECVPE@ HAVE_EXPF = @HAVE_EXPF@ HAVE_EXPL = @HAVE_EXPL@ HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@ HAVE_EXPM1 = @HAVE_EXPM1@ HAVE_EXPM1F = @HAVE_EXPM1F@ HAVE_FABSF = @HAVE_FABSF@ HAVE_FABSL = @HAVE_FABSL@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FCNTL = @HAVE_FCNTL@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FMA = @HAVE_FMA@ HAVE_FMAF = @HAVE_FMAF@ HAVE_FMAL = @HAVE_FMAL@ HAVE_FMODF = @HAVE_FMODF@ HAVE_FMODL = @HAVE_FMODL@ HAVE_FREELOCALE = @HAVE_FREELOCALE@ HAVE_FREXPF = @HAVE_FREXPF@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETENTROPY = @HAVE_GETENTROPY@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETPASS = @HAVE_GETPASS@ HAVE_GETPROGNAME = @HAVE_GETPROGNAME@ HAVE_GETRANDOM = @HAVE_GETRANDOM@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETUMASK = @HAVE_GETUMASK@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_HYPOTF = @HAVE_HYPOTF@ HAVE_HYPOTL = @HAVE_HYPOTL@ HAVE_ILOGB = @HAVE_ILOGB@ HAVE_ILOGBF = @HAVE_ILOGBF@ HAVE_ILOGBL = @HAVE_ILOGBL@ HAVE_IMAXABS = @HAVE_IMAXABS@ HAVE_IMAXDIV = @HAVE_IMAXDIV@ HAVE_IMAXDIV_T = @HAVE_IMAXDIV_T@ HAVE_INITSTATE = @HAVE_INITSTATE@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_ISNAND = @HAVE_ISNAND@ HAVE_ISNANF = @HAVE_ISNANF@ HAVE_ISNANL = @HAVE_ISNANL@ HAVE_ISWBLANK = @HAVE_ISWBLANK@ HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LDEXPF = @HAVE_LDEXPF@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LOG10F = @HAVE_LOG10F@ HAVE_LOG10L = @HAVE_LOG10L@ HAVE_LOG1P = @HAVE_LOG1P@ HAVE_LOG1PF = @HAVE_LOG1PF@ HAVE_LOG1PL = @HAVE_LOG1PL@ HAVE_LOGBF = @HAVE_LOGBF@ HAVE_LOGBL = @HAVE_LOGBL@ HAVE_LOGF = @HAVE_LOGF@ HAVE_LOGL = @HAVE_LOGL@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ HAVE_MBRLEN = @HAVE_MBRLEN@ HAVE_MBRTOWC = @HAVE_MBRTOWC@ HAVE_MBSINIT = @HAVE_MBSINIT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ HAVE_MBTOWC = @HAVE_MBTOWC@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MEMSET_EXPLICIT = @HAVE_MEMSET_EXPLICIT@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MODFF = @HAVE_MODFF@ HAVE_MODFL = @HAVE_MODFL@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ HAVE_OPENAT = @HAVE_OPENAT@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_MEMALIGN = @HAVE_POSIX_MEMALIGN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@ HAVE_POWF = @HAVE_POWF@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_QSORT_R = @HAVE_QSORT_R@ HAVE_RAISE = @HAVE_RAISE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_REMAINDER = @HAVE_REMAINDER@ HAVE_REMAINDERF = @HAVE_REMAINDERF@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RINT = @HAVE_RINT@ HAVE_RINTL = @HAVE_RINTL@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SETSTATE = @HAVE_SETSTATE@ HAVE_SIGABBREV_NP = @HAVE_SIGABBREV_NP@ HAVE_SIGACTION = @HAVE_SIGACTION@ HAVE_SIGDESCR_NP = @HAVE_SIGDESCR_NP@ HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@ HAVE_SIGINFO_T = @HAVE_SIGINFO_T@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SIGSET_T = @HAVE_SIGSET_T@ HAVE_SINF = @HAVE_SINF@ HAVE_SINHF = @HAVE_SINHF@ HAVE_SINL = @HAVE_SINL@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_SQRTF = @HAVE_SQRTF@ HAVE_SQRTL = @HAVE_SQRTL@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRERRORNAME_NP = @HAVE_STRERRORNAME_NP@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOL = @HAVE_STRTOL@ HAVE_STRTOLD = @HAVE_STRTOLD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOUL = @HAVE_STRTOUL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_CDEFS_H = @HAVE_SYS_CDEFS_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_RANDOM_H = @HAVE_SYS_RANDOM_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TANF = @HAVE_TANF@ HAVE_TANHF = @HAVE_TANHF@ HAVE_TANL = @HAVE_TANL@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_TIMESPEC_GET = @HAVE_TIMESPEC_GET@ HAVE_TIMESPEC_GETRES = @HAVE_TIMESPEC_GETRES@ HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIME = @HAVE_UTIME@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_UTIME_H = @HAVE_UTIME_H@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WCPCPY = @HAVE_WCPCPY@ HAVE_WCPNCPY = @HAVE_WCPNCPY@ HAVE_WCRTOMB = @HAVE_WCRTOMB@ HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ HAVE_WCSCAT = @HAVE_WCSCAT@ HAVE_WCSCHR = @HAVE_WCSCHR@ HAVE_WCSCMP = @HAVE_WCSCMP@ HAVE_WCSCOLL = @HAVE_WCSCOLL@ HAVE_WCSCPY = @HAVE_WCSCPY@ HAVE_WCSCSPN = @HAVE_WCSCSPN@ HAVE_WCSDUP = @HAVE_WCSDUP@ HAVE_WCSFTIME = @HAVE_WCSFTIME@ HAVE_WCSLEN = @HAVE_WCSLEN@ HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ HAVE_WCSNCAT = @HAVE_WCSNCAT@ HAVE_WCSNCMP = @HAVE_WCSNCMP@ HAVE_WCSNCPY = @HAVE_WCSNCPY@ HAVE_WCSNLEN = @HAVE_WCSNLEN@ HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ HAVE_WCSPBRK = @HAVE_WCSPBRK@ HAVE_WCSRCHR = @HAVE_WCSRCHR@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ HAVE_WCSSPN = @HAVE_WCSSPN@ HAVE_WCSSTR = @HAVE_WCSSTR@ HAVE_WCSTOK = @HAVE_WCSTOK@ HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ HAVE_WCSXFRM = @HAVE_WCSXFRM@ HAVE_WCTRANS_T = @HAVE_WCTRANS_T@ HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ HAVE_WCTYPE_T = @HAVE_WCTYPE_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE_WINT_T = @HAVE_WINT_T@ HAVE_WMEMCHR = @HAVE_WMEMCHR@ HAVE_WMEMCMP = @HAVE_WMEMCMP@ HAVE_WMEMCPY = @HAVE_WMEMCPY@ HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ HAVE_WMEMPCPY = @HAVE_WMEMPCPY@ HAVE_WMEMSET = @HAVE_WMEMSET@ HAVE_XLOCALE_H = @HAVE_XLOCALE_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ ISYSTEM = @ISYSTEM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBPMULTITHREAD = @LIBPMULTITHREAD@ LIBPTHREAD = @LIBPTHREAD@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIB_GETRANDOM = @LIB_GETRANDOM@ LIB_HARD_LOCALE = @LIB_HARD_LOCALE@ LIB_MBRTOWC = @LIB_MBRTOWC@ LIB_SCHED_YIELD = @LIB_SCHED_YIELD@ LIB_SETLOCALE_NULL = @LIB_SETLOCALE_NULL@ LIMITS_H = @LIMITS_H@ LIPO = @LIPO@ LN_S = @LN_S@ LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ LOCALENAME_ENHANCE_LOCALE_FUNCS = @LOCALENAME_ENHANCE_LOCALE_FUNCS@ LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ LOCALE_JA = @LOCALE_JA@ LOCALE_ZH_CN = @LOCALE_ZH_CN@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MBRTOWC_LIB = @MBRTOWC_LIB@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NEXT_ASSERT_H = @NEXT_ASSERT_H@ NEXT_AS_FIRST_DIRECTIVE_ASSERT_H = @NEXT_AS_FIRST_DIRECTIVE_ASSERT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@ NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_UTIME_H = @NEXT_AS_FIRST_DIRECTIVE_UTIME_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ NEXT_FLOAT_H = @NEXT_FLOAT_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ NEXT_LIMITS_H = @NEXT_LIMITS_H@ NEXT_LOCALE_H = @NEXT_LOCALE_H@ NEXT_MATH_H = @NEXT_MATH_H@ NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_RANDOM_H = @NEXT_SYS_RANDOM_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_SYS_WAIT_H = @NEXT_SYS_WAIT_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NEXT_UTIME_H = @NEXT_UTIME_H@ NEXT_WCHAR_H = @NEXT_WCHAR_H@ NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ POSUB = @POSUB@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PRIPTR_PREFIX = @PRIPTR_PREFIX@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REPLACE_ACCESS = @REPLACE_ACCESS@ REPLACE_ACOSF = @REPLACE_ACOSF@ REPLACE_ALIGNED_ALLOC = @REPLACE_ALIGNED_ALLOC@ REPLACE_ASINF = @REPLACE_ASINF@ REPLACE_ATAN2F = @REPLACE_ATAN2F@ REPLACE_ATANF = @REPLACE_ATANF@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CBRTF = @REPLACE_CBRTF@ REPLACE_CBRTL = @REPLACE_CBRTL@ REPLACE_CEIL = @REPLACE_CEIL@ REPLACE_CEILF = @REPLACE_CEILF@ REPLACE_CEILL = @REPLACE_CEILL@ REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ REPLACE_COSF = @REPLACE_COSF@ REPLACE_COSHF = @REPLACE_COSHF@ REPLACE_CREAT = @REPLACE_CREAT@ REPLACE_CTIME = @REPLACE_CTIME@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_DUP3 = @REPLACE_DUP3@ REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ REPLACE_ERROR = @REPLACE_ERROR@ REPLACE_ERROR_AT_LINE = @REPLACE_ERROR_AT_LINE@ REPLACE_EXECL = @REPLACE_EXECL@ REPLACE_EXECLE = @REPLACE_EXECLE@ REPLACE_EXECLP = @REPLACE_EXECLP@ REPLACE_EXECV = @REPLACE_EXECV@ REPLACE_EXECVE = @REPLACE_EXECVE@ REPLACE_EXECVP = @REPLACE_EXECVP@ REPLACE_EXECVPE = @REPLACE_EXECVPE@ REPLACE_EXP2 = @REPLACE_EXP2@ REPLACE_EXP2L = @REPLACE_EXP2L@ REPLACE_EXPF = @REPLACE_EXPF@ REPLACE_EXPL = @REPLACE_EXPL@ REPLACE_EXPM1 = @REPLACE_EXPM1@ REPLACE_EXPM1F = @REPLACE_EXPM1F@ REPLACE_EXPM1L = @REPLACE_EXPM1L@ REPLACE_FABSL = @REPLACE_FABSL@ REPLACE_FACCESSAT = @REPLACE_FACCESSAT@ REPLACE_FCHMODAT = @REPLACE_FCHMODAT@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDATASYNC = @REPLACE_FDATASYNC@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FFSLL = @REPLACE_FFSLL@ REPLACE_FLOOR = @REPLACE_FLOOR@ REPLACE_FLOORF = @REPLACE_FLOORF@ REPLACE_FLOORL = @REPLACE_FLOORL@ REPLACE_FMA = @REPLACE_FMA@ REPLACE_FMAF = @REPLACE_FMAF@ REPLACE_FMAL = @REPLACE_FMAL@ REPLACE_FMOD = @REPLACE_FMOD@ REPLACE_FMODF = @REPLACE_FMODF@ REPLACE_FMODL = @REPLACE_FMODL@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FOPEN_FOR_FOPEN_GNU = @REPLACE_FOPEN_FOR_FOPEN_GNU@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREE = @REPLACE_FREE@ REPLACE_FREELOCALE = @REPLACE_FREELOCALE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FREXP = @REPLACE_FREXP@ REPLACE_FREXPF = @REPLACE_FREXPF@ REPLACE_FREXPL = @REPLACE_FREXPL@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETENTROPY = @REPLACE_GETENTROPY@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOADAVG = @REPLACE_GETLOADAVG@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETPASS = @REPLACE_GETPASS@ REPLACE_GETPASS_FOR_GETPASS_GNU = @REPLACE_GETPASS_FOR_GETPASS_GNU@ REPLACE_GETPROGNAME = @REPLACE_GETPROGNAME@ REPLACE_GETRANDOM = @REPLACE_GETRANDOM@ REPLACE_GETSUBOPT = @REPLACE_GETSUBOPT@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ REPLACE_HYPOT = @REPLACE_HYPOT@ REPLACE_HYPOTF = @REPLACE_HYPOTF@ REPLACE_HYPOTL = @REPLACE_HYPOTL@ REPLACE_ILOGB = @REPLACE_ILOGB@ REPLACE_ILOGBF = @REPLACE_ILOGBF@ REPLACE_ILOGBL = @REPLACE_ILOGBL@ REPLACE_IMAXABS = @REPLACE_IMAXABS@ REPLACE_IMAXDIV = @REPLACE_IMAXDIV@ REPLACE_INITSTATE = @REPLACE_INITSTATE@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_ISFINITE = @REPLACE_ISFINITE@ REPLACE_ISINF = @REPLACE_ISINF@ REPLACE_ISNAN = @REPLACE_ISNAN@ REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ REPLACE_ISWDIGIT = @REPLACE_ISWDIGIT@ REPLACE_ISWXDIGIT = @REPLACE_ISWXDIGIT@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LOG = @REPLACE_LOG@ REPLACE_LOG10 = @REPLACE_LOG10@ REPLACE_LOG10F = @REPLACE_LOG10F@ REPLACE_LOG10L = @REPLACE_LOG10L@ REPLACE_LOG1P = @REPLACE_LOG1P@ REPLACE_LOG1PF = @REPLACE_LOG1PF@ REPLACE_LOG1PL = @REPLACE_LOG1PL@ REPLACE_LOG2 = @REPLACE_LOG2@ REPLACE_LOG2F = @REPLACE_LOG2F@ REPLACE_LOG2L = @REPLACE_LOG2L@ REPLACE_LOGB = @REPLACE_LOGB@ REPLACE_LOGBF = @REPLACE_LOGBF@ REPLACE_LOGBL = @REPLACE_LOGBL@ REPLACE_LOGF = @REPLACE_LOGF@ REPLACE_LOGL = @REPLACE_LOGL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC_FOR_MALLOC_GNU = @REPLACE_MALLOC_FOR_MALLOC_GNU@ REPLACE_MALLOC_FOR_MALLOC_POSIX = @REPLACE_MALLOC_FOR_MALLOC_POSIX@ REPLACE_MBRLEN = @REPLACE_MBRLEN@ REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ REPLACE_MBSINIT = @REPLACE_MBSINIT@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MEMPCPY = @REPLACE_MEMPCPY@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKFIFOAT = @REPLACE_MKFIFOAT@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKNODAT = @REPLACE_MKNODAT@ REPLACE_MKOSTEMP = @REPLACE_MKOSTEMP@ REPLACE_MKOSTEMPS = @REPLACE_MKOSTEMPS@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_MODF = @REPLACE_MODF@ REPLACE_MODFF = @REPLACE_MODFF@ REPLACE_MODFL = @REPLACE_MODFL@ REPLACE_NAN = @REPLACE_NAN@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NEWLOCALE = @REPLACE_NEWLOCALE@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_OPEN = @REPLACE_OPEN@ REPLACE_OPENAT = @REPLACE_OPENAT@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_PIPE2 = @REPLACE_PIPE2@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_POSIX_MEMALIGN = @REPLACE_POSIX_MEMALIGN@ REPLACE_POSIX_OPENPT = @REPLACE_POSIX_OPENPT@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_QSORT_R = @REPLACE_QSORT_R@ REPLACE_RAISE = @REPLACE_RAISE@ REPLACE_RANDOM = @REPLACE_RANDOM@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_READLINKAT = @REPLACE_READLINKAT@ REPLACE_REALLOCARRAY = @REPLACE_REALLOCARRAY@ REPLACE_REALLOC_FOR_REALLOC_GNU = @REPLACE_REALLOC_FOR_REALLOC_GNU@ REPLACE_REALLOC_FOR_REALLOC_POSIX = @REPLACE_REALLOC_FOR_REALLOC_POSIX@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMAINDER = @REPLACE_REMAINDER@ REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RINTL = @REPLACE_RINTL@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_ROUND = @REPLACE_ROUND@ REPLACE_ROUNDF = @REPLACE_ROUNDF@ REPLACE_ROUNDL = @REPLACE_ROUNDL@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SETHOSTNAME = @REPLACE_SETHOSTNAME@ REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ REPLACE_SETSTATE = @REPLACE_SETSTATE@ REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ REPLACE_SIGNBIT_USING_BUILTINS = @REPLACE_SIGNBIT_USING_BUILTINS@ REPLACE_SINF = @REPLACE_SINF@ REPLACE_SINHF = @REPLACE_SINHF@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_SQRTF = @REPLACE_SQRTF@ REPLACE_SQRTL = @REPLACE_SQRTL@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPCPY = @REPLACE_STPCPY@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERRORNAME_NP = @REPLACE_STRERRORNAME_NP@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRFTIME = @REPLACE_STRFTIME@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRTOL = @REPLACE_STRTOL@ REPLACE_STRTOLD = @REPLACE_STRTOLD@ REPLACE_STRTOLL = @REPLACE_STRTOLL@ REPLACE_STRTOUL = @REPLACE_STRTOUL@ REPLACE_STRTOULL = @REPLACE_STRTOULL@ REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ REPLACE_TANF = @REPLACE_TANF@ REPLACE_TANHF = @REPLACE_TANHF@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TIMESPEC_GET = @REPLACE_TIMESPEC_GET@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ REPLACE_TRUNC = @REPLACE_TRUNC@ REPLACE_TRUNCATE = @REPLACE_TRUNCATE@ REPLACE_TRUNCF = @REPLACE_TRUNCF@ REPLACE_TRUNCL = @REPLACE_TRUNCL@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_TZSET = @REPLACE_TZSET@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIME = @REPLACE_UTIME@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ REPLACE_WCSFTIME = @REPLACE_WCSFTIME@ REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ REPLACE_WCSTOK = @REPLACE_WCSTOK@ REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ REPLACE_WCTOB = @REPLACE_WCTOB@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ REPLACE_WMEMPCPY = @REPLACE_WMEMPCPY@ REPLACE_WRITE = @REPLACE_WRITE@ REPLACE__EXIT = @REPLACE__EXIT@ SCHED_YIELD_LIB = @SCHED_YIELD_LIB@ SED = @SED@ SETLOCALE_NULL_LIB = @SETLOCALE_NULL_LIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TESTS_ENVIRONMENT_EXTRA = @TESTS_ENVIRONMENT_EXTRA@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_TIME_UTC = @TIME_H_DEFINES_TIME_UTC@ UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_DEFINES_STRUCT_TIMESPEC = @UNISTD_H_DEFINES_STRUCT_TIMESPEC@ UNISTD_H_HAVE_SYS_RANDOM_H = @UNISTD_H_HAVE_SYS_RANDOM_H@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSION_INFO = @VERSION_INFO@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@ WINDOWS_STAT_TIMESPEC = @WINDOWS_STAT_TIMESPEC@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ objdir = @objdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyextext = @pyextext@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = gnits # LIMIT= may limit testing. For example, "make check LIMIT='-l 1'" stops # testing after the first error, "make check LIMIT='-k utf7' runs files # matched by the "utf7" regexp. Try "./pytest -h" for a list of options. SUITE = t21_names.py t22_lists.py t25_subsets.py t30_base64.py \ t30_dumps.py t30_quoted.py t40_african.py t40_combine.py t40_testdump.py \ t40_utf7.py t40_utf8.py t50_methods.py t90_bigauto.py EXTRA_DIST = Recode.c Recode.pyx pytest common.py asan-suppressions.txt $(SUITE) CLEANFILES = Recode.body.c DISTCLEANFILES = Recode.c all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): setup.py: $(top_builddir)/config.status $(srcdir)/setup.py.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: all all-am check check-am check-local clean clean-generic \ clean-libtool clean-local cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am .PRECIOUS: Makefile # TESTS_ENVIRONMENT_EXTRA can be set at configure time @HAVE_CYTHON_TRUE@check-local: Recode@pyextext@ @HAVE_CYTHON_TRUE@ export SHARED_LIB_DIR=$(abs_top_builddir)/src/@objdir@; \ @HAVE_CYTHON_TRUE@ export LD_LIBRARY_PATH=$$SHARED_LIB_DIR; \ @HAVE_CYTHON_TRUE@ export DYLD_LIBRARY_PATH=$$SHARED_LIB_DIR; \ @HAVE_CYTHON_TRUE@ export LSAN_OPTIONS=$$LSAN_OPTIONS:fast_unwind_on_malloc=0:print_suppressions=0:suppressions=$(srcdir)/asan-suppressions.txt; \ @HAVE_CYTHON_TRUE@ RECODE=$(top_builddir)/src/recode$(EXEEXT) PYTHONPATH=.:$(abs_srcdir) \ @HAVE_CYTHON_TRUE@ $(TESTS_ENVIRONMENT_EXTRA) $(PYTHON) $(srcdir)/pytest $(LIMIT) $(srcdir)/t*.py @HAVE_CYTHON_TRUE@Recode@pyextext@: Recode.c setup.py @HAVE_CYTHON_TRUE@ rm -f *@pyextext@ @HAVE_CYTHON_TRUE@ $(PYTHON) setup.py build_ext --inplace @HAVE_CYTHON_TRUE@ rm -fr build @HAVE_CYTHON_TRUE@Recode.c: Recode.pyx Makefile @HAVE_CYTHON_TRUE@ rm -f Recode.c && \ @HAVE_CYTHON_TRUE@ $(CYTHON) -3 -o Recode.body.c $(srcdir)/Recode.pyx && \ @HAVE_CYTHON_TRUE@ echo '#include "config.h"' > Recode.c && \ @HAVE_CYTHON_TRUE@ cat Recode.body.c >> Recode.c @HAVE_CYTHON_FALSE@check-local: @HAVE_CYTHON_FALSE@ echo "The tests need cython to run!" @HAVE_CYTHON_FALSE@ exit 1 clean-local: rm -rf __pycache__ *@pyextext@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: recode-3.7.15/tests/Makefile.am0000644000175000017500000000440114574155670011744 # Makefile for Recode regression tests. # Copyright © 1996-2023 Free Software Foundation, Inc. # François Pinard , 1988. # 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 3, 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, see . AUTOMAKE_OPTIONS = gnits # LIMIT= may limit testing. For example, "make check LIMIT='-l 1'" stops # testing after the first error, "make check LIMIT='-k utf7' runs files # matched by the "utf7" regexp. Try "./pytest -h" for a list of options. SUITE = t21_names.py t22_lists.py t25_subsets.py t30_base64.py \ t30_dumps.py t30_quoted.py t40_african.py t40_combine.py t40_testdump.py \ t40_utf7.py t40_utf8.py t50_methods.py t90_bigauto.py CYTHON = @CYTHON@ EXTRA_DIST = Recode.c Recode.pyx pytest common.py asan-suppressions.txt $(SUITE) CLEANFILES = Recode.body.c DISTCLEANFILES = Recode.c if HAVE_CYTHON # TESTS_ENVIRONMENT_EXTRA can be set at configure time check-local: Recode@pyextext@ export SHARED_LIB_DIR=$(abs_top_builddir)/src/@objdir@; \ export LD_LIBRARY_PATH=$$SHARED_LIB_DIR; \ export DYLD_LIBRARY_PATH=$$SHARED_LIB_DIR; \ export LSAN_OPTIONS=$$LSAN_OPTIONS:fast_unwind_on_malloc=0:print_suppressions=0:suppressions=$(srcdir)/asan-suppressions.txt; \ RECODE=$(top_builddir)/src/recode$(EXEEXT) PYTHONPATH=.:$(abs_srcdir) \ $(TESTS_ENVIRONMENT_EXTRA) $(PYTHON) $(srcdir)/pytest $(LIMIT) $(srcdir)/t*.py Recode@pyextext@: Recode.c setup.py rm -f *@pyextext@ $(PYTHON) setup.py build_ext --inplace rm -fr build Recode.c: Recode.pyx Makefile rm -f Recode.c && \ $(CYTHON) -3 -o Recode.body.c $(srcdir)/Recode.pyx && \ echo '#include "config.h"' > Recode.c && \ cat Recode.body.c >> Recode.c else check-local: echo "The tests need cython to run!" exit 1 endif clean-local: rm -rf __pycache__ *@pyextext@ recode-3.7.15/tests/t22_lists.py0000644000175000017500000004714313226751246012113 # -*- coding: utf-8 -*- import common from common import setup_module, teardown_module class Test_decimal: # Decimal listing of a charset. expected = '''\ ISO-8859-1 0 NU 16 DL 32 SP 48 0 64 At 80 P 96 '! 112 p 1 SH 17 D1 33 ! 49 1 65 A 81 Q 97 a 113 q 2 SX 18 D2 34 " 50 2 66 B 82 R 98 b 114 r 3 EX 19 D3 35 Nb 51 3 67 C 83 S 99 c 115 s 4 ET 20 D4 36 DO 52 4 68 D 84 T 100 d 116 t 5 EQ 21 NK 37 % 53 5 69 E 85 U 101 e 117 u 6 AK 22 SY 38 & 54 6 70 F 86 V 102 f 118 v 7 BL 23 EB 39 ' 55 7 71 G 87 W 103 g 119 w 8 BS 24 CN 40 ( 56 8 72 H 88 X 104 h 120 x 9 HT 25 EM 41 ) 57 9 73 I 89 Y 105 i 121 y 10 LF 26 SB 42 * 58 : 74 J 90 Z 106 j 122 z 11 VT 27 EC 43 + 59 ; 75 K 91 <( 107 k 123 (! 12 FF 28 FS 44 , 60 < 76 L 92 // 108 l 124 !! 13 CR 29 GS 45 - 61 = 77 M 93 )> 109 m 125 !) 14 SO 30 RS 46 . 62 > 78 N 94 '> 110 n 126 '? 15 SI 31 US 47 / 63 ? 79 O 95 _ 111 o 127 DT 128 PA 144 DC 160 NS 176 DG 192 A! 208 D- 224 a! 240 d- 129 HO 145 P1 161 !I 177 +- 193 A' 209 N? 225 a' 241 n? 130 BH 146 P2 162 Ct 178 2S 194 A> 210 O! 226 a> 242 o! 131 NH 147 TS 163 Pd 179 3S 195 A? 211 O' 227 a? 243 o' 132 IN 148 CC 164 Cu 180 '' 196 A: 212 O> 228 a: 244 o> 133 NL 149 MW 165 Ye 181 My 197 AA 213 O? 229 aa 245 o? 134 SA 150 SG 166 BB 182 PI 198 AE 214 O: 230 ae 246 o: 135 ES 151 EG 167 SE 183 .M 199 C, 215 *X 231 c, 247 -: 136 HS 152 SS 168 ': 184 ', 200 E! 216 O/ 232 e! 248 o/ 137 HJ 153 GC 169 Co 185 1S 201 E' 217 U! 233 e' 249 u! 138 VS 154 SC 170 -a 186 -o 202 E> 218 U' 234 e> 250 u' 139 PD 155 CI 171 << 187 >> 203 E: 219 U> 235 e: 251 u> 140 PU 156 ST 172 NO 188 14 204 I! 220 U: 236 i! 252 u: 141 RI 157 OC 173 -- 189 12 205 I' 221 Y' 237 i' 253 y' 142 S2 158 PM 174 Rg 190 34 206 I> 222 TH 238 i> 254 th 143 S3 159 AC 175 'm 191 ?I 207 I: 223 ss 239 i: 255 y: ''' def test_1(self): print('*1') output = common.external_output('$R -ld latin-1') common.assert_or_diff(output, self.expected) class Test_hexadecimal: # Hexadecimal listing of a charset. expected = '''\ ISO-8859-1 00 NU 10 DL 20 SP 30 0 40 At 50 P 60 '! 70 p 01 SH 11 D1 21 ! 31 1 41 A 51 Q 61 a 71 q 02 SX 12 D2 22 " 32 2 42 B 52 R 62 b 72 r 03 EX 13 D3 23 Nb 33 3 43 C 53 S 63 c 73 s 04 ET 14 D4 24 DO 34 4 44 D 54 T 64 d 74 t 05 EQ 15 NK 25 % 35 5 45 E 55 U 65 e 75 u 06 AK 16 SY 26 & 36 6 46 F 56 V 66 f 76 v 07 BL 17 EB 27 ' 37 7 47 G 57 W 67 g 77 w 08 BS 18 CN 28 ( 38 8 48 H 58 X 68 h 78 x 09 HT 19 EM 29 ) 39 9 49 I 59 Y 69 i 79 y 0a LF 1a SB 2a * 3a : 4a J 5a Z 6a j 7a z 0b VT 1b EC 2b + 3b ; 4b K 5b <( 6b k 7b (! 0c FF 1c FS 2c , 3c < 4c L 5c // 6c l 7c !! 0d CR 1d GS 2d - 3d = 4d M 5d )> 6d m 7d !) 0e SO 1e RS 2e . 3e > 4e N 5e '> 6e n 7e '? 0f SI 1f US 2f / 3f ? 4f O 5f _ 6f o 7f DT 80 PA 90 DC a0 NS b0 DG c0 A! d0 D- e0 a! f0 d- 81 HO 91 P1 a1 !I b1 +- c1 A' d1 N? e1 a' f1 n? 82 BH 92 P2 a2 Ct b2 2S c2 A> d2 O! e2 a> f2 o! 83 NH 93 TS a3 Pd b3 3S c3 A? d3 O' e3 a? f3 o' 84 IN 94 CC a4 Cu b4 '' c4 A: d4 O> e4 a: f4 o> 85 NL 95 MW a5 Ye b5 My c5 AA d5 O? e5 aa f5 o? 86 SA 96 SG a6 BB b6 PI c6 AE d6 O: e6 ae f6 o: 87 ES 97 EG a7 SE b7 .M c7 C, d7 *X e7 c, f7 -: 88 HS 98 SS a8 ': b8 ', c8 E! d8 O/ e8 e! f8 o/ 89 HJ 99 GC a9 Co b9 1S c9 E' d9 U! e9 e' f9 u! 8a VS 9a SC aa -a ba -o ca E> da U' ea e> fa u' 8b PD 9b CI ab << bb >> cb E: db U> eb e: fb u> 8c PU 9c ST ac NO bc 14 cc I! dc U: ec i! fc u: 8d RI 9d OC ad -- bd 12 cd I' dd Y' ed i' fd y' 8e S2 9e PM ae Rg be 34 ce I> de TH ee i> fe th 8f S3 9f AC af 'm bf ?I cf I: df ss ef i: ff y: ''' def test_1(self): output = common.external_output('$R -lh latin-1') common.assert_or_diff(output, self.expected) class Test_octal: # Octal listing of a charset. expected = '''\ ISO-8859-1 000 NU 020 DL 040 SP 060 0 100 At 120 P 140 '! 160 p 001 SH 021 D1 041 ! 061 1 101 A 121 Q 141 a 161 q 002 SX 022 D2 042 " 062 2 102 B 122 R 142 b 162 r 003 EX 023 D3 043 Nb 063 3 103 C 123 S 143 c 163 s 004 ET 024 D4 044 DO 064 4 104 D 124 T 144 d 164 t 005 EQ 025 NK 045 % 065 5 105 E 125 U 145 e 165 u 006 AK 026 SY 046 & 066 6 106 F 126 V 146 f 166 v 007 BL 027 EB 047 ' 067 7 107 G 127 W 147 g 167 w 010 BS 030 CN 050 ( 070 8 110 H 130 X 150 h 170 x 011 HT 031 EM 051 ) 071 9 111 I 131 Y 151 i 171 y 012 LF 032 SB 052 * 072 : 112 J 132 Z 152 j 172 z 013 VT 033 EC 053 + 073 ; 113 K 133 <( 153 k 173 (! 014 FF 034 FS 054 , 074 < 114 L 134 // 154 l 174 !! 015 CR 035 GS 055 - 075 = 115 M 135 )> 155 m 175 !) 016 SO 036 RS 056 . 076 > 116 N 136 '> 156 n 176 '? 017 SI 037 US 057 / 077 ? 117 O 137 _ 157 o 177 DT 200 PA 220 DC 240 NS 260 DG 300 A! 320 D- 340 a! 360 d- 201 HO 221 P1 241 !I 261 +- 301 A' 321 N? 341 a' 361 n? 202 BH 222 P2 242 Ct 262 2S 302 A> 322 O! 342 a> 362 o! 203 NH 223 TS 243 Pd 263 3S 303 A? 323 O' 343 a? 363 o' 204 IN 224 CC 244 Cu 264 '' 304 A: 324 O> 344 a: 364 o> 205 NL 225 MW 245 Ye 265 My 305 AA 325 O? 345 aa 365 o? 206 SA 226 SG 246 BB 266 PI 306 AE 326 O: 346 ae 366 o: 207 ES 227 EG 247 SE 267 .M 307 C, 327 *X 347 c, 367 -: 210 HS 230 SS 250 ': 270 ', 310 E! 330 O/ 350 e! 370 o/ 211 HJ 231 GC 251 Co 271 1S 311 E' 331 U! 351 e' 371 u! 212 VS 232 SC 252 -a 272 -o 312 E> 332 U' 352 e> 372 u' 213 PD 233 CI 253 << 273 >> 313 E: 333 U> 353 e: 373 u> 214 PU 234 ST 254 NO 274 14 314 I! 334 U: 354 i! 374 u: 215 RI 235 OC 255 -- 275 12 315 I' 335 Y' 355 i' 375 y' 216 S2 236 PM 256 Rg 276 34 316 I> 336 TH 356 i> 376 th 217 S3 237 AC 257 'm 277 ?I 317 I: 337 ss 357 i: 377 y: ''' def test_1(self): output = common.external_output('$R -lo latin-1') common.assert_or_diff(output, self.expected) class Test_full: # Full listing of a charset. expected = '''\ Dec Oct Hex UCS2 Mne ISO-8859-1 0 000 00 0000 NU null (nul) 1 001 01 0001 SH start of heading (soh) 2 002 02 0002 SX start of text (stx) 3 003 03 0003 EX end of text (etx) 4 004 04 0004 ET end of transmission (eot) 5 005 05 0005 EQ enquiry (enq) 6 006 06 0006 AK acknowledge (ack) 7 007 07 0007 BL bell (bel) 8 010 08 0008 BS backspace (bs) 9 011 09 0009 HT character tabulation (ht) 10 012 0a 000A LF line feed (lf) 11 013 0b 000B VT line tabulation (vt) 12 014 0c 000C FF form feed (ff) 13 015 0d 000D CR carriage return (cr) 14 016 0e 000E SO shift out (so) 15 017 0f 000F SI shift in (si) 16 020 10 0010 DL datalink escape (dle) 17 021 11 0011 D1 device control one (dc1) 18 022 12 0012 D2 device control two (dc2) 19 023 13 0013 D3 device control three (dc3) 20 024 14 0014 D4 device control four (dc4) 21 025 15 0015 NK negative acknowledge (nak) 22 026 16 0016 SY syncronous idle (syn) 23 027 17 0017 EB end of transmission block (etb) 24 030 18 0018 CN cancel (can) 25 031 19 0019 EM end of medium (em) 26 032 1a 001A SB substitute (sub) 27 033 1b 001B EC escape (esc) 28 034 1c 001C FS file separator (is4) 29 035 1d 001D GS group separator (is3) 30 036 1e 001E RS record separator (is2) 31 037 1f 001F US unit separator (is1) 32 040 20 0020 SP space 33 041 21 0021 ! exclamation mark 34 042 22 0022 " quotation mark 35 043 23 0023 Nb number sign 36 044 24 0024 DO dollar sign 37 045 25 0025 % percent sign 38 046 26 0026 & ampersand 39 047 27 0027 ' apostrophe 40 050 28 0028 ( left parenthesis 41 051 29 0029 ) right parenthesis 42 052 2a 002A * asterisk 43 053 2b 002B + plus sign 44 054 2c 002C , comma 45 055 2d 002D - hyphen-minus 46 056 2e 002E . full stop 47 057 2f 002F / solidus 48 060 30 0030 0 digit zero 49 061 31 0031 1 digit one 50 062 32 0032 2 digit two 51 063 33 0033 3 digit three 52 064 34 0034 4 digit four 53 065 35 0035 5 digit five 54 066 36 0036 6 digit six 55 067 37 0037 7 digit seven 56 070 38 0038 8 digit eight 57 071 39 0039 9 digit nine 58 072 3a 003A : colon 59 073 3b 003B ; semicolon 60 074 3c 003C < less-than sign 61 075 3d 003D = equals sign 62 076 3e 003E > greater-than sign 63 077 3f 003F ? question mark 64 100 40 0040 At commercial at 65 101 41 0041 A latin capital letter a 66 102 42 0042 B latin capital letter b 67 103 43 0043 C latin capital letter c 68 104 44 0044 D latin capital letter d 69 105 45 0045 E latin capital letter e 70 106 46 0046 F latin capital letter f 71 107 47 0047 G latin capital letter g 72 110 48 0048 H latin capital letter h 73 111 49 0049 I latin capital letter i 74 112 4a 004A J latin capital letter j 75 113 4b 004B K latin capital letter k 76 114 4c 004C L latin capital letter l 77 115 4d 004D M latin capital letter m 78 116 4e 004E N latin capital letter n 79 117 4f 004F O latin capital letter o 80 120 50 0050 P latin capital letter p 81 121 51 0051 Q latin capital letter q 82 122 52 0052 R latin capital letter r 83 123 53 0053 S latin capital letter s 84 124 54 0054 T latin capital letter t 85 125 55 0055 U latin capital letter u 86 126 56 0056 V latin capital letter v 87 127 57 0057 W latin capital letter w 88 130 58 0058 X latin capital letter x 89 131 59 0059 Y latin capital letter y 90 132 5a 005A Z latin capital letter z 91 133 5b 005B <( left square bracket 92 134 5c 005C // reverse solidus 93 135 5d 005D )> right square bracket 94 136 5e 005E '> circumflex accent 95 137 5f 005F _ low line 96 140 60 0060 '! grave accent 97 141 61 0061 a latin small letter a 98 142 62 0062 b latin small letter b 99 143 63 0063 c latin small letter c 100 144 64 0064 d latin small letter d 101 145 65 0065 e latin small letter e 102 146 66 0066 f latin small letter f 103 147 67 0067 g latin small letter g 104 150 68 0068 h latin small letter h 105 151 69 0069 i latin small letter i 106 152 6a 006A j latin small letter j 107 153 6b 006B k latin small letter k 108 154 6c 006C l latin small letter l 109 155 6d 006D m latin small letter m 110 156 6e 006E n latin small letter n 111 157 6f 006F o latin small letter o 112 160 70 0070 p latin small letter p 113 161 71 0071 q latin small letter q 114 162 72 0072 r latin small letter r 115 163 73 0073 s latin small letter s 116 164 74 0074 t latin small letter t 117 165 75 0075 u latin small letter u 118 166 76 0076 v latin small letter v 119 167 77 0077 w latin small letter w 120 170 78 0078 x latin small letter x 121 171 79 0079 y latin small letter y 122 172 7a 007A z latin small letter z 123 173 7b 007B (! left curly bracket 124 174 7c 007C !! vertical line 125 175 7d 007D !) right curly bracket 126 176 7e 007E '? tilde 127 177 7f 007F DT delete (del) 128 200 80 0080 PA padding character (pad) 129 201 81 0081 HO high octet preset (hop) 130 202 82 0082 BH break permitted here (bph) 131 203 83 0083 NH no break here (nbh) 132 204 84 0084 IN index (ind) 133 205 85 0085 NL next line (nel) 134 206 86 0086 SA start of selected area (ssa) 135 207 87 0087 ES end of selected area (esa) 136 210 88 0088 HS character tabulation set (hts) 137 211 89 0089 HJ character tabulation with justification (htj) 138 212 8a 008A VS line tabulation set (vts) 139 213 8b 008B PD partial line forward (pld) 140 214 8c 008C PU partial line backward (plu) 141 215 8d 008D RI reverse line feed (ri) 142 216 8e 008E S2 single-shift two (ss2) 143 217 8f 008F S3 single-shift three (ss3) 144 220 90 0090 DC device control string (dcs) 145 221 91 0091 P1 private use one (pu1) 146 222 92 0092 P2 private use two (pu2) 147 223 93 0093 TS set transmit state (sts) 148 224 94 0094 CC cancel character (cch) 149 225 95 0095 MW message waiting (mw) 150 226 96 0096 SG start of guarded area (spa) 151 227 97 0097 EG end of guarded area (epa) 152 230 98 0098 SS start of string (sos) 153 231 99 0099 GC single graphic character introducer (sgci) 154 232 9a 009A SC single character introducer (sci) 155 233 9b 009B CI control sequence introducer (csi) 156 234 9c 009C ST string terminator (st) 157 235 9d 009D OC operating system command (osc) 158 236 9e 009E PM privacy message (pm) 159 237 9f 009F AC application program command (apc) 160 240 a0 00A0 NS no-break space 161 241 a1 00A1 !I inverted exclamation mark 162 242 a2 00A2 Ct cent sign 163 243 a3 00A3 Pd pound sign 164 244 a4 00A4 Cu currency sign 165 245 a5 00A5 Ye yen sign 166 246 a6 00A6 BB broken bar 167 247 a7 00A7 SE section sign 168 250 a8 00A8 ': diaeresis 169 251 a9 00A9 Co copyright sign 170 252 aa 00AA -a feminine ordinal indicator 171 253 ab 00AB << left-pointing double angle quotation mark 172 254 ac 00AC NO not sign 173 255 ad 00AD -- soft hyphen 174 256 ae 00AE Rg registered sign 175 257 af 00AF 'm macron 176 260 b0 00B0 DG degree sign 177 261 b1 00B1 +- plus-minus sign 178 262 b2 00B2 2S superscript two 179 263 b3 00B3 3S superscript three 180 264 b4 00B4 '' acute accent 181 265 b5 00B5 My micro sign 182 266 b6 00B6 PI pilcrow sign 183 267 b7 00B7 .M middle dot 184 270 b8 00B8 ', cedilla 185 271 b9 00B9 1S superscript one 186 272 ba 00BA -o masculine ordinal indicator 187 273 bb 00BB >> right-pointing double angle quotation mark 188 274 bc 00BC 14 vulgar fraction one quarter 189 275 bd 00BD 12 vulgar fraction one half 190 276 be 00BE 34 vulgar fraction three quarters 191 277 bf 00BF ?I inverted question mark 192 300 c0 00C0 A! latin capital letter a with grave 193 301 c1 00C1 A' latin capital letter a with acute 194 302 c2 00C2 A> latin capital letter a with circumflex 195 303 c3 00C3 A? latin capital letter a with tilde 196 304 c4 00C4 A: latin capital letter a with diaeresis 197 305 c5 00C5 AA latin capital letter a with ring above 198 306 c6 00C6 AE latin capital letter ae 199 307 c7 00C7 C, latin capital letter c with cedilla 200 310 c8 00C8 E! latin capital letter e with grave 201 311 c9 00C9 E' latin capital letter e with acute 202 312 ca 00CA E> latin capital letter e with circumflex 203 313 cb 00CB E: latin capital letter e with diaeresis 204 314 cc 00CC I! latin capital letter i with grave 205 315 cd 00CD I' latin capital letter i with acute 206 316 ce 00CE I> latin capital letter i with circumflex 207 317 cf 00CF I: latin capital letter i with diaeresis 208 320 d0 00D0 D- latin capital letter eth (icelandic) 209 321 d1 00D1 N? latin capital letter n with tilde 210 322 d2 00D2 O! latin capital letter o with grave 211 323 d3 00D3 O' latin capital letter o with acute 212 324 d4 00D4 O> latin capital letter o with circumflex 213 325 d5 00D5 O? latin capital letter o with tilde 214 326 d6 00D6 O: latin capital letter o with diaeresis 215 327 d7 00D7 *X multiplication sign 216 330 d8 00D8 O/ latin capital letter o with stroke 217 331 d9 00D9 U! latin capital letter u with grave 218 332 da 00DA U' latin capital letter u with acute 219 333 db 00DB U> latin capital letter u with circumflex 220 334 dc 00DC U: latin capital letter u with diaeresis 221 335 dd 00DD Y' latin capital letter y with acute 222 336 de 00DE TH latin capital letter thorn (icelandic) 223 337 df 00DF ss latin small letter sharp s (german) 224 340 e0 00E0 a! latin small letter a with grave 225 341 e1 00E1 a' latin small letter a with acute 226 342 e2 00E2 a> latin small letter a with circumflex 227 343 e3 00E3 a? latin small letter a with tilde 228 344 e4 00E4 a: latin small letter a with diaeresis 229 345 e5 00E5 aa latin small letter a with ring above 230 346 e6 00E6 ae latin small letter ae 231 347 e7 00E7 c, latin small letter c with cedilla 232 350 e8 00E8 e! latin small letter e with grave 233 351 e9 00E9 e' latin small letter e with acute 234 352 ea 00EA e> latin small letter e with circumflex 235 353 eb 00EB e: latin small letter e with diaeresis 236 354 ec 00EC i! latin small letter i with grave 237 355 ed 00ED i' latin small letter i with acute 238 356 ee 00EE i> latin small letter i with circumflex 239 357 ef 00EF i: latin small letter i with diaeresis 240 360 f0 00F0 d- latin small letter eth (icelandic) 241 361 f1 00F1 n? latin small letter n with tilde 242 362 f2 00F2 o! latin small letter o with grave 243 363 f3 00F3 o' latin small letter o with acute 244 364 f4 00F4 o> latin small letter o with circumflex 245 365 f5 00F5 o? latin small letter o with tilde 246 366 f6 00F6 o: latin small letter o with diaeresis 247 367 f7 00F7 -: division sign 248 370 f8 00F8 o/ latin small letter o with stroke 249 371 f9 00F9 u! latin small letter u with grave 250 372 fa 00FA u' latin small letter u with acute 251 373 fb 00FB u> latin small letter u with circumflex 252 374 fc 00FC u: latin small letter u with diaeresis 253 375 fd 00FD y' latin small letter y with acute 254 376 fe 00FE th latin small letter thorn (icelandic) 255 377 ff 00FF y: latin small letter y with diaeresis ''' def test_1(self): output = common.external_output('$R -lf latin-1') common.assert_or_diff(output, self.expected) recode-3.7.15/tests/t30_dumps.py0000644000175000017500000006231613226751246012103 # -*- coding: utf-8 -*- import common from common import setup_module, teardown_module class Data: inputs = [ '\n', 'a\n', 'ab\n', 'abc\n', 'abcd\n', 'abcdefghi\n', 'abcdefghijklmnopqrs\n', 'abcdefghijklmnopqrstuvwzyzABC\n', 'abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLM\n', 'abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVW\n', 'abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456\n', ] class Test_Decimal(Data): def test_d1_1(self): # Single lines to Decimal-1. common.request('../d1') outputs = ['''\ 10 ''', '''\ 97, 10 ''', '''\ 97, 98, 10 ''', '''\ 97, 98, 99, 10 ''', '''\ 97, 98, 99, 100, 10 ''', '''\ 97, 98, 99, 100, 101, 102, 103, 104, 105, 10 ''', '''\ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 10 ''', '''\ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 10 ''', '''\ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 10 ''', '''\ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 10 ''', '''\ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 48, 49, 50, 51, 52, 53, 54, 10 '''] for input, output in zip(self.inputs, outputs): common.validate(input, output) def test_d1_2(self): # Block of lines to Decimal-1. common.request('../d1') input = ''.join(self.inputs) output = '''\ 10, 97, 10, 97, 98, 10, 97, 98, 99, 10, 97, 98, 99, 100, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 48, 49, 50, 51, 52, 53, 54, 10 ''' common.validate(input, output) def test_d1_3(self): # Single lines to Decimal-1 and back. common.request('../d1') for input in self.inputs: common.validate_back(input) def test_d1_4(self): # Block of lines to Decimal-1 and back. common.request('../d1') input = ''.join(self.inputs) common.validate_back(input) def test_d2_1(self): # Single lines to Decimal-2. common.request('../d2') outputs = ['''\ 10 ''', '''\ 24842 ''', '''\ 24930, 10 ''', '''\ 24930, 25354 ''', '''\ 24930, 25444, 10 ''', '''\ 24930, 25444, 25958, 26472, 26890 ''', '''\ 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29450 ''', '''\ 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29556, 30070, 30586, 31098, 16706, 17162 ''', '''\ 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29556, 30070, 30586, 31098, 16706, 17220, 17734, 18248, 18762, 19276, 19722 ''', '''\ 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29556, 30070, 30586, 31098, 16706, 17220, 17734, 18248, 18762, 19276, 19790, 20304, 20818, 21332, 21846, 22282 ''', '''\ 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29556, 30070, 30586, 31098, 16706, 17220, 17734, 18248, 18762, 19276, 19790, 20304, 20818, 21332, 21846, 22360, 22874, 12337, 12851, 13365, 13834 '''] for input, output in zip(self.inputs, outputs): common.validate(input, output) def test_d2_2(self): # Block of lines to Decimal-2. common.request('../d2') input = ''.join(self.inputs) output = '''\ 2657, 2657, 25098, 24930, 25354, 24930, 25444, 2657, 25187, 25701, 26215, 26729, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 29813, 30327, 31353, 31297, 16963, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 29813, 30327, 31353, 31297, 16963, 17477, 17991, 18505, 19019, 19533, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 29813, 30327, 31353, 31297, 16963, 17477, 17991, 18505, 19019, 19533, 20047, 20561, 21075, 21589, 22103, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 29813, 30327, 31353, 31297, 16963, 17477, 17991, 18505, 19019, 19533, 20047, 20561, 21075, 21589, 22103, 22617, 23088, 12594, 13108, 13622, 10 ''' common.validate(input, output) def test_d2_3(self): # Single lines to Decimal-2 and back. common.request('../d2') for input in self.inputs: common.validate_back(input) def test_d2_4(self): # Block of lines to Decimal-2 and back. common.request('../d2') input = ''.join(self.inputs) common.validate_back(input) def test_d4_1(self): # Single lines to Decimal-4. common.request('../d4') outputs = ['''\ 10 ''', '''\ 24842 ''', '''\ 6382090 ''', '''\ 1633837834 ''', '''\ 1633837924, 10 ''', '''\ 1633837924, 1701209960, 26890 ''', '''\ 1633837924, 1701209960, 1768581996, 1835954032, 1903325962 ''', '''\ 1633837924, 1701209960, 1768581996, 1835954032, 1903326068, 1970698106, 2038055234, 17162 ''', '''\ 1633837924, 1701209960, 1768581996, 1835954032, 1903326068, 1970698106, 2038055234, 1128547654, 1195919690, 1263291658 ''', '''\ 1633837924, 1701209960, 1768581996, 1835954032, 1903326068, 1970698106, 2038055234, 1128547654, 1195919690, 1263291726, 1330663762, 1398035798, 22282 ''', '''\ 1633837924, 1701209960, 1768581996, 1835954032, 1903326068, 1970698106, 2038055234, 1128547654, 1195919690, 1263291726, 1330663762, 1398035798, 1465407834, 808530483, 875902474 '''] for input, output in zip(self.inputs, outputs): common.validate(input, output) def test_d4_2(self): # Block of lines to Decimal-4. common.request('../d4') input = ''.join(self.inputs) output = '''\ 174131809, 1644847458, 1661624674, 1667500641, 1650680933, 1718052969, 174154339, 1684366951, 1751738987, 1819111023, 1886483059, 174154339, 1684366951, 1751738987, 1819111023, 1886483059, 1953855095, 2054781505, 1111689825, 1650680933, 1718052969, 1785425005, 1852797041, 1920169077, 1987541625, 2051097155, 1145390663, 1212762699, 1280117345, 1650680933, 1718052969, 1785425005, 1852797041, 1920169077, 1987541625, 2051097155, 1145390663, 1212762699, 1280134735, 1347506771, 1414878807, 174154339, 1684366951, 1751738987, 1819111023, 1886483059, 1953855095, 2054781505, 1111704645, 1179076681, 1246448717, 1313820753, 1381192789, 1448564825, 1513107762, 859059510, 10 ''' common.validate(input, output) def test_d4_3(self): # Single lines to Decimal-4 and back. common.request('../d4') for input in self.inputs: common.validate_back(input) def test_d4_4(self): # Block of lines to Decimal-4 and back. common.request('../d4') input = ''.join(self.inputs) common.validate_back(input) class Test_Hexadecimal(Data): def test_x1_1(self): # Single lines to Hexadecimal-1. common.request('../x1') outputs = ['''\ 0x0A ''', '''\ 0x61, 0x0A ''', '''\ 0x61, 0x62, 0x0A ''', '''\ 0x61, 0x62, 0x63, 0x0A ''', '''\ 0x61, 0x62, 0x63, 0x64, 0x0A ''', '''\ 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x0A ''', '''\ 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x0A ''', '''\ 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x0A ''', '''\ 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x0A ''', '''\ 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x0A ''', '''\ 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0A '''] for input, output in zip(self.inputs, outputs): common.validate(input, output) def test_x1_2(self): # Block of lines to Hexadecimal-1. common.request('../x1') input = ''.join(self.inputs) output = '''\ 0x0A, 0x61, 0x0A, 0x61, 0x62, 0x0A, 0x61, 0x62, 0x63, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0A ''' common.validate(input, output) def test_x1_3(self): # Single lines to Hexadecimal-1 and back. common.request('../x1') for input in self.inputs: common.validate_back(input) def test_x1_4(self): # Block of lines to Hexadecimal-1 and back. common.request('../x1') input = ''.join(self.inputs) common.validate_back(input) def test_x2_1(self): # Single lines to Hexadecimal-2. common.request('../x2') outputs = ['''\ 0x0A ''', '''\ 0x610A ''', '''\ 0x6162, 0x0A ''', '''\ 0x6162, 0x630A ''', '''\ 0x6162, 0x6364, 0x0A ''', '''\ 0x6162, 0x6364, 0x6566, 0x6768, 0x690A ''', '''\ 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x730A ''', '''\ 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x7374, 0x7576, 0x777A, 0x797A, 0x4142, 0x430A ''', '''\ 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x7374, 0x7576, 0x777A, 0x797A, 0x4142, 0x4344, 0x4546, 0x4748, 0x494A, 0x4B4C, 0x4D0A ''', '''\ 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x7374, 0x7576, 0x777A, 0x797A, 0x4142, 0x4344, 0x4546, 0x4748, 0x494A, 0x4B4C, 0x4D4E, 0x4F50, 0x5152, 0x5354, 0x5556, 0x570A ''', '''\ 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x7374, 0x7576, 0x777A, 0x797A, 0x4142, 0x4344, 0x4546, 0x4748, 0x494A, 0x4B4C, 0x4D4E, 0x4F50, 0x5152, 0x5354, 0x5556, 0x5758, 0x595A, 0x3031, 0x3233, 0x3435, 0x360A '''] for input, output in zip(self.inputs, outputs): common.validate(input, output) def test_x2_2(self): # Block of lines to Hexadecimal-2. common.request('../x2') input = ''.join(self.inputs) output = '''\ 0x0A61, 0x0A61, 0x620A, 0x6162, 0x630A, 0x6162, 0x6364, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x7475, 0x7677, 0x7A79, 0x7A41, 0x4243, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x7475, 0x7677, 0x7A79, 0x7A41, 0x4243, 0x4445, 0x4647, 0x4849, 0x4A4B, 0x4C4D, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x7475, 0x7677, 0x7A79, 0x7A41, 0x4243, 0x4445, 0x4647, 0x4849, 0x4A4B, 0x4C4D, 0x4E4F, 0x5051, 0x5253, 0x5455, 0x5657, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x7475, 0x7677, 0x7A79, 0x7A41, 0x4243, 0x4445, 0x4647, 0x4849, 0x4A4B, 0x4C4D, 0x4E4F, 0x5051, 0x5253, 0x5455, 0x5657, 0x5859, 0x5A30, 0x3132, 0x3334, 0x3536, 0x0A ''' common.validate(input, output) def test_x2_3(self): # Single lines to Hexadecimal-2 and back. common.request('../x2') for input in self.inputs: common.validate_back(input) def test_x2_4(self): # Block of lines to Hexadecimal-2 and back. common.request('../x2') input = ''.join(self.inputs) common.validate_back(input) def test_x4_1(self): # Single lines to Hexadecimal-4. common.request('../x4') outputs = ['''\ 0x0A ''', '''\ 0x610A ''', '''\ 0x61620A ''', '''\ 0x6162630A ''', '''\ 0x61626364, 0x0A ''', '''\ 0x61626364, 0x65666768, 0x690A ''', '''\ 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x7172730A ''', '''\ 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x71727374, 0x7576777A, 0x797A4142, 0x430A ''', '''\ 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x71727374, 0x7576777A, 0x797A4142, 0x43444546, 0x4748494A, 0x4B4C4D0A ''', '''\ 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x71727374, 0x7576777A, 0x797A4142, 0x43444546, 0x4748494A, 0x4B4C4D4E, 0x4F505152, 0x53545556, 0x570A ''', '''\ 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x71727374, 0x7576777A, 0x797A4142, 0x43444546, 0x4748494A, 0x4B4C4D4E, 0x4F505152, 0x53545556, 0x5758595A, 0x30313233, 0x3435360A '''] for input, output in zip(self.inputs, outputs): common.validate(input, output) def test_x4_2(self): # Block of lines to Hexadecimal-4. common.request('../x4') input = ''.join(self.inputs) output = '''\ 0x0A610A61, 0x620A6162, 0x630A6162, 0x63640A61, 0x62636465, 0x66676869, 0x0A616263, 0x64656667, 0x68696A6B, 0x6C6D6E6F, 0x70717273, 0x0A616263, 0x64656667, 0x68696A6B, 0x6C6D6E6F, 0x70717273, 0x74757677, 0x7A797A41, 0x42430A61, 0x62636465, 0x66676869, 0x6A6B6C6D, 0x6E6F7071, 0x72737475, 0x76777A79, 0x7A414243, 0x44454647, 0x48494A4B, 0x4C4D0A61, 0x62636465, 0x66676869, 0x6A6B6C6D, 0x6E6F7071, 0x72737475, 0x76777A79, 0x7A414243, 0x44454647, 0x48494A4B, 0x4C4D4E4F, 0x50515253, 0x54555657, 0x0A616263, 0x64656667, 0x68696A6B, 0x6C6D6E6F, 0x70717273, 0x74757677, 0x7A797A41, 0x42434445, 0x46474849, 0x4A4B4C4D, 0x4E4F5051, 0x52535455, 0x56575859, 0x5A303132, 0x33343536, 0x0A ''' common.validate(input, output) def test_x4_3(self): # Single lines to Hexadecimal-4 and back. common.request('../x4') for input in self.inputs: common.validate_back(input) def test_x4_4(self): # Block of lines to Hexadecimal-4 and back. common.request('../x4') input = ''.join(self.inputs) common.validate_back(input) class Test_Octal(Data): def test_o1_1(self): # Single lines to Octal-1. common.request('../o1') outputs = ['''\ 0012 ''', '''\ 0141, 0012 ''', '''\ 0141, 0142, 0012 ''', '''\ 0141, 0142, 0143, 0012 ''', '''\ 0141, 0142, 0143, 0144, 0012 ''', '''\ 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0012 ''', '''\ 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0012 ''', '''\ 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0012 ''', '''\ 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0012 ''', '''\ 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 0012 ''', '''\ 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 0130, 0131, 0132, 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0012 '''] for input, output in zip(self.inputs, outputs): common.validate(input, output) def test_o1_2(self): # Block of lines to Octal-1. common.request('../o1') input = ''.join(self.inputs) output = '''\ 0012, 0141, 0012, 0141, 0142, 0012, 0141, 0142, 0143, 0012, 0141, 0142, 0143, 0144, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 0130, 0131, 0132, 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0012 ''' common.validate(input, output) def test_o1_3(self): # Single lines to Octal-1 and back. common.request('../o1') for input in self.inputs: common.validate_back(input) def test_o1_4(self): # Block of lines to Octal-1 and back. common.request('../o1') input = ''.join(self.inputs) common.validate_back(input) def test_o2_1(self): # Single lines to Octal-2. common.request('../o2') outputs = ['''\ 0012 ''', '''\ 0060412 ''', '''\ 0060542, 0012 ''', '''\ 0060542, 0061412 ''', '''\ 0060542, 0061544, 0012 ''', '''\ 0060542, 0061544, 0062546, 0063550, 0064412 ''', '''\ 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071412 ''', '''\ 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071564, 0072566, 0073572, 0074572, 0040502, 0041412 ''', '''\ 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071564, 0072566, 0073572, 0074572, 0040502, 0041504, 0042506, 0043510, 0044512, 0045514, 0046412 ''', '''\ 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071564, 0072566, 0073572, 0074572, 0040502, 0041504, 0042506, 0043510, 0044512, 0045514, 0046516, 0047520, 0050522, 0051524, 0052526, 0053412 ''', '''\ 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071564, 0072566, 0073572, 0074572, 0040502, 0041504, 0042506, 0043510, 0044512, 0045514, 0046516, 0047520, 0050522, 0051524, 0052526, 0053530, 0054532, 0030061, 0031063, 0032065, 0033012 '''] for input, output in zip(self.inputs, outputs): common.validate(input, output) def test_o2_2(self): # Block of lines to Octal-2. common.request('../o2') input = ''.join(self.inputs) output = '''\ 0005141, 0005141, 0061012, 0060542, 0061412, 0060542, 0061544, 0005141, 0061143, 0062145, 0063147, 0064151, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0072165, 0073167, 0075171, 0075101, 0041103, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0072165, 0073167, 0075171, 0075101, 0041103, 0042105, 0043107, 0044111, 0045113, 0046115, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0072165, 0073167, 0075171, 0075101, 0041103, 0042105, 0043107, 0044111, 0045113, 0046115, 0047117, 0050121, 0051123, 0052125, 0053127, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0072165, 0073167, 0075171, 0075101, 0041103, 0042105, 0043107, 0044111, 0045113, 0046115, 0047117, 0050121, 0051123, 0052125, 0053127, 0054131, 0055060, 0030462, 0031464, 0032466, 0012 ''' common.validate(input, output) def test_o2_3(self): # Single lines to Octal-2 and back. common.request('../o2') for input in self.inputs: common.validate_back(input) def test_o2_4(self): # Block of lines to Octal-2 and back. common.request('../o2') input = ''.join(self.inputs) common.validate_back(input) def test_o4_1(self): # Single lines to Octal-4. common.request('../o4') outputs = ['''\ 0012 ''', '''\ 0060412 ''', '''\ 030261012 ''', '''\ 014130461412 ''', '''\ 014130461544, 0012 ''', '''\ 014130461544, 014531463550, 0064412 ''', '''\ 014130461544, 014531463550, 015132465554, 015533467560, 016134471412 ''', '''\ 014130461544, 014531463550, 015132465554, 015533467560, 016134471564, 016535473572, 017136440502, 0041412 ''', '''\ 014130461544, 014531463550, 015132465554, 015533467560, 016134471564, 016535473572, 017136440502, 010321042506, 010722044512, 011323046412 ''', '''\ 014130461544, 014531463550, 015132465554, 015533467560, 016134471564, 016535473572, 017136440502, 010321042506, 010722044512, 011323046516, 011724050522, 012325052526, 0053412 ''', '''\ 014130461544, 014531463550, 015132465554, 015533467560, 016134471564, 016535473572, 017136440502, 010321042506, 010722044512, 011323046516, 011724050522, 012325052526, 012726054532, 006014231063, 006415233012 '''] for input, output in zip(self.inputs, outputs): common.validate(input, output) def test_o4_2(self): # Block of lines to Octal-4. common.request('../o4') input = ''.join(self.inputs) output = '''\ 001230205141, 014202460542, 014302460542, 014331005141, 014230662145, 014631664151, 001230261143, 014431263147, 015032265153, 015433267157, 016034271163, 001230261143, 014431263147, 015032265153, 015433267157, 016034271163, 016435273167, 017236275101, 010220605141, 014230662145, 014631664151, 015232666155, 015633670161, 016234672165, 016635675171, 017220241103, 010421243107, 011022245113, 011423205141, 014230662145, 014631664151, 015232666155, 015633670161, 016234672165, 016635675171, 017220241103, 010421243107, 011022245113, 011423247117, 012024251123, 012425253127, 001230261143, 014431263147, 015032265153, 015433267157, 016034271163, 016435273167, 017236275101, 010220642105, 010621644111, 011222646115, 011623650121, 012224652125, 012625654131, 013214030462, 006315032466, 0012 ''' common.validate(input, output) def test_o4_3(self): # Single lines to Octal-4 and back. common.request('../o4') for input in self.inputs: common.validate_back(input) def test_o4_4(self): # Block of lines to Octal-4 and back. common.request('../o4') input = ''.join(self.inputs) common.validate_back(input) recode-3.7.15/tests/t50_methods.py0000644000175000017500000000324714172605021012404 # -*- coding: utf-8 -*- import common from common import setup_module, teardown_module from __main__ import py import os, sys input_name = '%s/../COPYING' % os.path.dirname(sys.argv[0]) with open(input_name) as f: input = f.read() def test_1(): # No step at all. yield validate, 'texte..texte' # One single step. yield validate, 'latin1..ibmpc/' # One single step and a surface yield validate, 'latin1..ibmpc' # One single step. yield validate, 'texte..latin1' # Two single steps. yield validate, 'texte..bangbang' # Two single steps and a surface. yield validate, 'texte..ibmpc' # Three single steps. yield validate, 'texte..iconqnx' # Four single steps, optimized into three (with iconv) or two (without). yield validate, 'ascii-bs..ebcdic' def validate(request): before, after = request.split('..') # With a pipe if os.name == 'nt': py.test.skip() command = ('$R --quiet --force < %s %s' '| $R --quiet --force %s..%s' % (input_name, request, after, before)) print(command) output = common.external_output(command) common.assert_or_diff(output, input) # With an intermediate file with open(common.run.work, 'w') as f: f.write(input) command1 = ('$R --quiet --force %s %s' % (request, common.run.work)) command2 = ('$R --quiet --force %s..%s %s' % (after, before, common.run.work)) print(command1) print(command2) common.external_output(command1) common.external_output(command2) with open(common.run.work) as f: output = f.read() common.assert_or_diff(output, input) recode-3.7.15/tests/t40_utf7.py0000644000175000017500000000210013226751246011622 # -*- coding: utf-8 -*- import common from common import setup_module, teardown_module inputs = [ '\n', 'A+ImIDkQ.\n', 'Hi Mom +Jjo!\n', '+ZeVnLIqe\n', 'Item 3 is +AKM-1.\n', ] outputs = [ '0xFEFF, 0x000A\n', '0xFEFF, 0x0041, 0x2262, 0x0391, 0x002E, 0x000A\n', ('0xFEFF, 0x0048, 0x0069, 0x0020, 0x004D, 0x006F, 0x006D, 0x0020,\n' '0x263A, 0x0021, 0x000A\n'), '0xFEFF, 0x65E5, 0x672C, 0x8A9E, 0x000A\n', ('0xFEFF, 0x0049, 0x0074, 0x0065, 0x006D, 0x0020, 0x0033, 0x0020,\n' '0x0069, 0x0073, 0x0020, 0x00A3, 0x0031, 0x002E, 0x000A\n')] class Test: def setup_method(self, method): common.request('u7..u6/x2') def test_1(self): # Single lines from UTF-7. for input, output in zip(inputs, outputs): yield common.validate, input, output def test_2(self): # Single lines from UTF-7 and back. for input in inputs: yield common.validate_back, input def test_3(self): # All lines at once and back. yield common.validate_back, ''.join(inputs) recode-3.7.15/tests/Recode.c0000644000175000017500000240227514766021056011263 #include "config.h" /* Generated by Cython 3.0.8 */ #ifndef PY_SSIZE_T_CLEAN #define PY_SSIZE_T_CLEAN #endif /* PY_SSIZE_T_CLEAN */ #if defined(CYTHON_LIMITED_API) && 0 #ifndef Py_LIMITED_API #if CYTHON_LIMITED_API+0 > 0x03030000 #define Py_LIMITED_API CYTHON_LIMITED_API #else #define Py_LIMITED_API 0x03030000 #endif #endif #endif #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.7+ or Python 3.3+. #else #if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API #define __PYX_EXTRA_ABI_MODULE_NAME "limited" #else #define __PYX_EXTRA_ABI_MODULE_NAME "" #endif #define CYTHON_ABI "3_0_8" __PYX_EXTRA_ABI_MODULE_NAME #define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI #define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." #define CYTHON_HEX_VERSION 0x030008F0 #define CYTHON_FUTURE_DIVISION 1 #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall #define __stdcall #endif #ifndef __cdecl #define __cdecl #endif #ifndef __fastcall #define __fastcall #endif #endif #ifndef DL_IMPORT #define DL_IMPORT(t) t #endif #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif #define __PYX_COMMA , #ifndef HAVE_LONG_LONG #define HAVE_LONG_LONG #endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif #ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL #endif #define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX #if defined(GRAALVM_PYTHON) /* For very preliminary testing purposes. Most variables are set the same as PyPy. The existence of this section does not imply that anything works or is even tested */ #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #define CYTHON_COMPILING_IN_LIMITED_API 0 #define CYTHON_COMPILING_IN_GRAAL 1 #define CYTHON_COMPILING_IN_NOGIL 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_TYPE_SPECS #define CYTHON_USE_TYPE_SPECS 0 #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #if PY_VERSION_HEX < 0x03050000 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_GIL #define CYTHON_FAST_GIL 0 #undef CYTHON_METH_FASTCALL #define CYTHON_METH_FASTCALL 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #ifndef CYTHON_PEP487_INIT_SUBCLASS #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) #endif #undef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 1 #undef CYTHON_USE_MODULE_STATE #define CYTHON_USE_MODULE_STATE 0 #undef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 0 #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 #endif #elif defined(PYPY_VERSION) #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #define CYTHON_COMPILING_IN_LIMITED_API 0 #define CYTHON_COMPILING_IN_GRAAL 0 #define CYTHON_COMPILING_IN_NOGIL 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #ifndef CYTHON_USE_TYPE_SPECS #define CYTHON_USE_TYPE_SPECS 0 #endif #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #if PY_VERSION_HEX < 0x03050000 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_GIL #define CYTHON_FAST_GIL 0 #undef CYTHON_METH_FASTCALL #define CYTHON_METH_FASTCALL 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #ifndef CYTHON_PEP487_INIT_SUBCLASS #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3) #endif #if PY_VERSION_HEX < 0x03090000 #undef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 0 #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) #define CYTHON_PEP489_MULTI_PHASE_INIT 1 #endif #undef CYTHON_USE_MODULE_STATE #define CYTHON_USE_MODULE_STATE 0 #undef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00) #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 #endif #elif defined(CYTHON_LIMITED_API) #ifdef Py_LIMITED_API #undef __PYX_LIMITED_VERSION_HEX #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API #endif #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #define CYTHON_COMPILING_IN_LIMITED_API 1 #define CYTHON_COMPILING_IN_GRAAL 0 #define CYTHON_COMPILING_IN_NOGIL 0 #undef CYTHON_CLINE_IN_TRACEBACK #define CYTHON_CLINE_IN_TRACEBACK 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_TYPE_SPECS #define CYTHON_USE_TYPE_SPECS 1 #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #endif #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_GIL #define CYTHON_FAST_GIL 0 #undef CYTHON_METH_FASTCALL #define CYTHON_METH_FASTCALL 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #ifndef CYTHON_PEP487_INIT_SUBCLASS #define CYTHON_PEP487_INIT_SUBCLASS 1 #endif #undef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 0 #undef CYTHON_USE_MODULE_STATE #define CYTHON_USE_MODULE_STATE 1 #ifndef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 0 #endif #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 #endif #elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #define CYTHON_COMPILING_IN_LIMITED_API 0 #define CYTHON_COMPILING_IN_GRAAL 0 #define CYTHON_COMPILING_IN_NOGIL 1 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #ifndef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 1 #endif #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #ifndef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 1 #endif #ifndef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 1 #endif #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #define CYTHON_COMPILING_IN_LIMITED_API 0 #define CYTHON_COMPILING_IN_GRAAL 0 #define CYTHON_COMPILING_IN_NOGIL 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #ifndef CYTHON_USE_TYPE_SPECS #define CYTHON_USE_TYPE_SPECS 0 #endif #ifndef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 1 #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #ifndef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 1 #endif #ifndef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 1 #endif #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) #define CYTHON_USE_UNICODE_WRITER 1 #endif #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #ifndef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_GIL #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6) #endif #ifndef CYTHON_METH_FASTCALL #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1) #endif #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 1 #endif #ifndef CYTHON_PEP487_INIT_SUBCLASS #define CYTHON_PEP487_INIT_SUBCLASS 1 #endif #if PY_VERSION_HEX < 0x03050000 #undef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 0 #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) #define CYTHON_PEP489_MULTI_PHASE_INIT 1 #endif #ifndef CYTHON_USE_MODULE_STATE #define CYTHON_USE_MODULE_STATE 0 #endif #if PY_VERSION_HEX < 0x030400a1 #undef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 0 #elif !defined(CYTHON_USE_TP_FINALIZE) #define CYTHON_USE_TP_FINALIZE 1 #endif #if PY_VERSION_HEX < 0x030600B1 #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #elif !defined(CYTHON_USE_DICT_VERSIONS) #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5) #endif #if PY_VERSION_HEX < 0x030700A3 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #elif !defined(CYTHON_USE_EXC_INFO_STACK) #define CYTHON_USE_EXC_INFO_STACK 1 #endif #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if !defined(CYTHON_VECTORCALL) #define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) #endif #define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) #if CYTHON_USE_PYLONG_INTERNALS #if PY_MAJOR_VERSION < 3 #include "longintrepr.h" #endif #undef SHIFT #undef BASE #undef MASK #ifdef SIZEOF_VOID_P enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; #endif #endif #ifndef __has_attribute #define __has_attribute(x) 0 #endif #ifndef __has_cpp_attribute #define __has_cpp_attribute(x) 0 #endif #ifndef CYTHON_RESTRICT #if defined(__GNUC__) #define CYTHON_RESTRICT __restrict__ #elif defined(_MSC_VER) && _MSC_VER >= 1400 #define CYTHON_RESTRICT __restrict #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_RESTRICT restrict #else #define CYTHON_RESTRICT #endif #endif #ifndef CYTHON_UNUSED #if defined(__cplusplus) /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 * but leads to warnings with -pedantic, since it is a C++17 feature */ #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) #if __has_cpp_attribute(maybe_unused) #define CYTHON_UNUSED [[maybe_unused]] #endif #endif #endif #endif #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif #endif #ifndef CYTHON_UNUSED_VAR # if defined(__cplusplus) template void CYTHON_UNUSED_VAR( const T& ) { } # else # define CYTHON_UNUSED_VAR(x) (void)(x) # endif #endif #ifndef CYTHON_MAYBE_UNUSED_VAR #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) #endif #ifndef CYTHON_NCP_UNUSED # if CYTHON_COMPILING_IN_CPYTHON # define CYTHON_NCP_UNUSED # else # define CYTHON_NCP_UNUSED CYTHON_UNUSED # endif #endif #ifndef CYTHON_USE_CPP_STD_MOVE #if defined(__cplusplus) && (\ __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) #define CYTHON_USE_CPP_STD_MOVE 1 #else #define CYTHON_USE_CPP_STD_MOVE 0 #endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) #ifdef _MSC_VER #ifndef _MSC_STDINT_H_ #if _MSC_VER < 1300 typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #else typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; #endif #endif #if _MSC_VER < 1300 #ifdef _WIN64 typedef unsigned long long __pyx_uintptr_t; #else typedef unsigned int __pyx_uintptr_t; #endif #else #ifdef _WIN64 typedef unsigned __int64 __pyx_uintptr_t; #else typedef unsigned __int32 __pyx_uintptr_t; #endif #endif #else #include typedef uintptr_t __pyx_uintptr_t; #endif #ifndef CYTHON_FALLTHROUGH #if defined(__cplusplus) /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 * but leads to warnings with -pedantic, since it is a C++17 feature */ #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) #if __has_cpp_attribute(fallthrough) #define CYTHON_FALLTHROUGH [[fallthrough]] #endif #endif #ifndef CYTHON_FALLTHROUGH #if __has_cpp_attribute(clang::fallthrough) #define CYTHON_FALLTHROUGH [[clang::fallthrough]] #elif __has_cpp_attribute(gnu::fallthrough) #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] #endif #endif #endif #ifndef CYTHON_FALLTHROUGH #if __has_attribute(fallthrough) #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) #else #define CYTHON_FALLTHROUGH #endif #endif #if defined(__clang__) && defined(__apple_build_version__) #if __apple_build_version__ < 7000000 #undef CYTHON_FALLTHROUGH #define CYTHON_FALLTHROUGH #endif #endif #endif #ifdef __cplusplus template struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) #else #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) #endif #if CYTHON_COMPILING_IN_PYPY == 1 #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) #else #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) #endif #define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) #ifndef CYTHON_INLINE #if defined(__clang__) #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) #elif defined(__GNUC__) #define CYTHON_INLINE __inline__ #elif defined(_MSC_VER) #define CYTHON_INLINE __inline #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_INLINE inline #else #define CYTHON_INLINE #endif #endif #define __PYX_BUILD_PY_SSIZE_T "n" #define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" #define __Pyx_DefaultClassType PyClass_Type #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_DefaultClassType PyType_Type #if CYTHON_COMPILING_IN_LIMITED_API static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, PyObject *code, PyObject *c, PyObject* n, PyObject *v, PyObject *fv, PyObject *cell, PyObject* fn, PyObject *name, int fline, PyObject *lnos) { PyObject *exception_table = NULL; PyObject *types_module=NULL, *code_type=NULL, *result=NULL; #if __PYX_LIMITED_VERSION_HEX < 0x030B0000 PyObject *version_info; PyObject *py_minor_version = NULL; #endif long minor_version = 0; PyObject *type, *value, *traceback; PyErr_Fetch(&type, &value, &traceback); #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000 minor_version = 11; #else if (!(version_info = PySys_GetObject("version_info"))) goto end; if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; minor_version = PyLong_AsLong(py_minor_version); Py_DECREF(py_minor_version); if (minor_version == -1 && PyErr_Occurred()) goto end; #endif if (!(types_module = PyImport_ImportModule("types"))) goto end; if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; if (minor_version <= 7) { (void)p; result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code, c, n, v, fn, name, fline, lnos, fv, cell); } else if (minor_version <= 10) { result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code, c, n, v, fn, name, fline, lnos, fv, cell); } else { if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code, c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); } end: Py_XDECREF(code_type); Py_XDECREF(exception_table); Py_XDECREF(types_module); if (type) { PyErr_Restore(type, value, traceback); } return result; } #ifndef CO_OPTIMIZED #define CO_OPTIMIZED 0x0001 #endif #ifndef CO_NEWLOCALS #define CO_NEWLOCALS 0x0002 #endif #ifndef CO_VARARGS #define CO_VARARGS 0x0004 #endif #ifndef CO_VARKEYWORDS #define CO_VARKEYWORDS 0x0008 #endif #ifndef CO_ASYNC_GENERATOR #define CO_ASYNC_GENERATOR 0x0200 #endif #ifndef CO_GENERATOR #define CO_GENERATOR 0x0020 #endif #ifndef CO_COROUTINE #define CO_COROUTINE 0x0080 #endif #elif PY_VERSION_HEX >= 0x030B0000 static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f, PyObject *code, PyObject *c, PyObject* n, PyObject *v, PyObject *fv, PyObject *cell, PyObject* fn, PyObject *name, int fline, PyObject *lnos) { PyCodeObject *result; PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0); if (!empty_bytes) return NULL; result = #if PY_VERSION_HEX >= 0x030C0000 PyUnstable_Code_NewWithPosOnlyArgs #else PyCode_NewWithPosOnlyArgs #endif (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes); Py_DECREF(empty_bytes); return result; } #elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #else #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #endif #endif #if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) #else #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) #endif #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) #define __Pyx_Py_Is(x, y) Py_Is(x, y) #else #define __Pyx_Py_Is(x, y) ((x) == (y)) #endif #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) #else #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) #endif #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) #else #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) #endif #if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) #else #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) #endif #define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) #if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) #else #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) #endif #ifndef CO_COROUTINE #define CO_COROUTINE 0x80 #endif #ifndef CO_ASYNC_GENERATOR #define CO_ASYNC_GENERATOR 0x200 #endif #ifndef Py_TPFLAGS_CHECKTYPES #define Py_TPFLAGS_CHECKTYPES 0 #endif #ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0 #endif #ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif #ifndef Py_TPFLAGS_SEQUENCE #define Py_TPFLAGS_SEQUENCE 0 #endif #ifndef Py_TPFLAGS_MAPPING #define Py_TPFLAGS_MAPPING 0 #endif #ifndef METH_STACKLESS #define METH_STACKLESS 0 #endif #if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 #endif typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords #endif #if CYTHON_METH_FASTCALL #define __Pyx_METH_FASTCALL METH_FASTCALL #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords #else #define __Pyx_METH_FASTCALL METH_VARARGS #define __Pyx_PyCFunction_FastCall PyCFunction #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords #endif #if CYTHON_VECTORCALL #define __pyx_vectorcallfunc vectorcallfunc #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) #elif CYTHON_BACKPORT_VECTORCALL typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, size_t nargsf, PyObject *kwnames); #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) #else #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) #endif #if PY_MAJOR_VERSION >= 0x030900B1 #define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) #else #define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) #endif #define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) #elif !CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) #endif #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; } #endif static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) { #if CYTHON_COMPILING_IN_LIMITED_API return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; #else return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; #endif } #define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) #if __PYX_LIMITED_VERSION_HEX < 0x030900B1 #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); #else #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) #define __Pyx_PyCMethod PyCMethod #endif #ifndef METH_METHOD #define METH_METHOD 0x200 #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) #define PyObject_Realloc(p) PyMem_Realloc(p) #endif #if CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) #else #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) #endif #if CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_PyThreadState_Current PyThreadState_Get() #elif !CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_Current PyThreadState_GET() #elif PY_VERSION_HEX >= 0x030d00A1 #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() #elif PY_VERSION_HEX >= 0x03060000 #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() #elif PY_VERSION_HEX >= 0x03000000 #define __Pyx_PyThreadState_Current PyThreadState_GET() #else #define __Pyx_PyThreadState_Current _PyThreadState_Current #endif #if CYTHON_COMPILING_IN_LIMITED_API static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op) { void *result; result = PyModule_GetState(op); if (!result) Py_FatalError("Couldn't find the module state"); return result; } #endif #define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype) #if CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) #else #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) #endif #if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) #include "pythread.h" #define Py_tss_NEEDS_INIT 0 typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); return 0; } static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); *key = Py_tss_NEEDS_INIT; return key; } static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { PyObject_Free(key); } static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { return *key != Py_tss_NEEDS_INIT; } static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { PyThread_delete_key(*key); *key = Py_tss_NEEDS_INIT; } static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { return PyThread_set_key_value(*key, value); } static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } #endif #if PY_MAJOR_VERSION < 3 #if CYTHON_COMPILING_IN_PYPY #if PYPY_VERSION_NUM < 0x07030600 #if defined(__cplusplus) && __cplusplus >= 201402L [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]] #elif defined(__GNUC__) || defined(__clang__) __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))) #elif defined(_MSC_VER) __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")) #endif static CYTHON_INLINE int PyGILState_Check(void) { return 0; } #else // PYPY_VERSION_NUM < 0x07030600 #endif // PYPY_VERSION_NUM < 0x07030600 #else static CYTHON_INLINE int PyGILState_Check(void) { PyThreadState * tstate = _PyThreadState_Current; return tstate && (tstate == PyGILState_GetThisThreadState()); } #endif #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else #define __Pyx_PyDict_NewPresized(n) PyDict_New() #endif #if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #else #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS #define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); if (res == NULL) PyErr_Clear(); return res; } #elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000) #define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError #define __Pyx_PyDict_GetItemStr PyDict_GetItem #else static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { #if CYTHON_COMPILING_IN_PYPY return PyDict_GetItem(dict, name); #else PyDictEntry *ep; PyDictObject *mp = (PyDictObject*) dict; long hash = ((PyStringObject *) name)->ob_shash; assert(hash != -1); ep = (mp->ma_lookup)(mp, name, hash); if (ep == NULL) { return NULL; } return ep->me_value; #endif } #define __Pyx_PyDict_GetItemStr PyDict_GetItem #endif #if CYTHON_USE_TYPE_SLOTS #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) #define __Pyx_PyObject_GetIterNextFunc(obj) (Py_TYPE(obj)->tp_iternext) #else #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) #define __Pyx_PyObject_GetIterNextFunc(obj) PyIter_Next #endif #if CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v) #else #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v) #endif #if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 #define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ PyTypeObject *type = Py_TYPE((PyObject*)obj);\ assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ PyObject_GC_Del(obj);\ Py_DECREF(type);\ } #else #define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) #endif #if CYTHON_COMPILING_IN_LIMITED_API #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GetLength(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) #define __Pyx_PyUnicode_DATA(u) ((void*)u) #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) #elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #if PY_VERSION_HEX >= 0x030C0000 #define __Pyx_PyUnicode_READY(op) (0) #else #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #endif #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) #if PY_VERSION_HEX >= 0x030C0000 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) #else #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) #else #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #endif #endif #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 #define PyUnicode_2BYTE_KIND 2 #define PyUnicode_4BYTE_KIND 4 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U) #define __Pyx_PyUnicode_KIND(u) ((int)sizeof(Py_UNICODE)) #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) #endif #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) #else #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) #endif #if CYTHON_COMPILING_IN_PYPY #if !defined(PyUnicode_DecodeUnicodeEscape) #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) #endif #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500) #undef PyUnicode_Contains #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) #endif #if !defined(PyByteArray_Check) #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) #endif #if !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif #endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) #else #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) #endif #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) #define PyObject_ASCII(o) PyObject_Repr(o) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type #define PyStringObject PyUnicodeObject #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #ifndef PyObject_Unicode #define PyObject_Unicode PyObject_Str #endif #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) #else #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) #endif #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_PySequence_ListKeepNew(obj)\ (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) #else #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) #endif #if PY_VERSION_HEX >= 0x030900A4 #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) #else #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) #endif #if CYTHON_ASSUME_SAFE_MACROS #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) #else #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) #endif #if PY_VERSION_HEX >= 0x030d00A1 #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) #else static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { PyObject *module = PyImport_AddModule(name); Py_XINCREF(module); return module; } #endif #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type #define PyInt_Check(op) PyLong_Check(op) #define PyInt_CheckExact(op) PyLong_CheckExact(op) #define __Pyx_Py3Int_Check(op) PyLong_Check(op) #define __Pyx_Py3Int_CheckExact(op) PyLong_CheckExact(op) #define PyInt_FromString PyLong_FromString #define PyInt_FromUnicode PyLong_FromUnicode #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSize_t PyLong_FromSize_t #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong #define PyInt_AS_LONG PyLong_AS_LONG #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask #define PyNumber_Int PyNumber_Long #else #define __Pyx_Py3Int_Check(op) (PyLong_Check(op) || PyInt_Check(op)) #define __Pyx_Py3Int_CheckExact(op) (PyLong_CheckExact(op) || PyInt_CheckExact(op)) #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY #ifndef PyUnicode_InternFromString #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif #endif #if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t #endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #endif #else #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef __Pyx_PyAsyncMethodsStruct typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #endif #if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) #if !defined(_USE_MATH_DEFINES) #define _USE_MATH_DEFINES #endif #endif #include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else #define __Pyx_truncl truncl #endif #define __PYX_MARK_ERR_POS(f_index, lineno) \ { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } #define __PYX_ERR(f_index, lineno, Ln_error) \ { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } #ifdef CYTHON_EXTERN_C #undef __PYX_EXTERN_C #define __PYX_EXTERN_C CYTHON_EXTERN_C #elif defined(__PYX_EXTERN_C) #ifdef _MSC_VER #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") #else #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. #endif #else #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif #endif #define __PYX_HAVE__Recode #define __PYX_HAVE_API__Recode /* Early includes */ #include #include #include #include "common.h" #ifdef _OPENMP #include #endif /* _OPENMP */ #if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) #define CYTHON_WITHOUT_ASSERTIONS #endif typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) #define __PYX_DEFAULT_STRING_ENCODING "" #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #define __Pyx_uchar_cast(c) ((unsigned char)c) #define __Pyx_long_cast(x) ((long)x) #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ (sizeof(type) < sizeof(Py_ssize_t)) ||\ (sizeof(type) > sizeof(Py_ssize_t) &&\ likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX) &&\ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ v == (type)PY_SSIZE_T_MIN))) ||\ (sizeof(type) == sizeof(Py_ssize_t) &&\ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX))) ) static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { return (size_t) i < (size_t) limit; } #if defined (__cplusplus) && __cplusplus >= 201103L #include #define __Pyx_sst_abs(value) std::abs(value) #elif SIZEOF_INT >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) abs(value) #elif SIZEOF_LONG >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) labs(value) #elif defined (_MSC_VER) #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __Pyx_sst_abs(value) llabs(value) #elif defined (__GNUC__) #define __Pyx_sst_abs(value) __builtin_llabs(value) #else #define __Pyx_sst_abs(value) ((value<0) ? -value : value) #endif static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #else #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) #define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) #if CYTHON_COMPILING_IN_LIMITED_API static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const wchar_t *u) { const wchar_t *u_end = u; while (*u_end++) ; return (size_t)(u_end - u - 1); } #else static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { const Py_UNICODE *u_end = u; while (*u_end++) ; return (size_t)(u_end - u - 1); } #endif #define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); #define __Pyx_PySequence_Tuple(obj)\ (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); #if CYTHON_ASSUME_SAFE_MACROS #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) #else #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) #endif #if CYTHON_USE_PYLONG_INTERNALS #if PY_VERSION_HEX >= 0x030C00A7 #ifndef _PyLong_SIGN_MASK #define _PyLong_SIGN_MASK 3 #endif #ifndef _PyLong_NON_SIZE_BITS #define _PyLong_NON_SIZE_BITS 3 #endif #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) #define __Pyx_PyLong_SignedDigitCount(x)\ ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) #else #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) #endif typedef Py_ssize_t __Pyx_compact_pylong; typedef size_t __Pyx_compact_upylong; #else #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) #define __Pyx_PyLong_CompactValue(x)\ ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) typedef sdigit __Pyx_compact_pylong; typedef digit __Pyx_compact_upylong; #endif #if PY_VERSION_HEX >= 0x030C00A5 #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) #else #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) #endif #endif #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII #include static int __Pyx_sys_getdefaultencoding_not_ascii; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; const char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; if (strcmp(default_encoding_c, "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { ascii_chars[c] = (char) c; } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); if (!ascii_chars_u) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", default_encoding_c); goto bad; } Py_DECREF(ascii_chars_u); Py_DECREF(ascii_chars_b); } Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); return -1; } #endif #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) #else #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT #include static char* __PYX_DEFAULT_STRING_ENCODING; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); return -1; } #endif #endif /* Test for GCC > 2.95 */ #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #else /* !__GNUC__ or GCC < 2.95 */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } #if !CYTHON_USE_MODULE_STATE static PyObject *__pyx_m = NULL; #endif static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm = __FILE__; static const char *__pyx_filename; /* #### Code section: filename_table ### */ static const char *__pyx_f[] = { "", "Recode.pyx", }; /* #### Code section: utility_code_proto_before_types ### */ /* ForceInitThreads.proto */ #ifndef __PYX_FORCE_INIT_THREADS #define __PYX_FORCE_INIT_THREADS 0 #endif /* #### Code section: numeric_typedefs ### */ /* #### Code section: complex_type_declarations ### */ /* #### Code section: type_declarations ### */ /*--- Type declarations ---*/ struct __pyx_obj_6Recode_Outer; struct __pyx_obj_6Recode_Request; struct __pyx_obj_6Recode_Task; /* "Recode.pyx":522 * ## Recode library at OUTER level. * * cdef class Outer: # <<<<<<<<<<<<<< * cdef RECODE_OUTER outer * */ struct __pyx_obj_6Recode_Outer { PyObject_HEAD RECODE_OUTER outer; }; /* "Recode.pyx":589 * # Recode library at REQUEST level. * * cdef class Request: # <<<<<<<<<<<<<< * cdef RECODE_REQUEST request * */ struct __pyx_obj_6Recode_Request { PyObject_HEAD RECODE_REQUEST request; }; /* "Recode.pyx":668 * # Recode library at TASK level. * * cdef class Task: # <<<<<<<<<<<<<< * cdef RECODE_TASK task * */ struct __pyx_obj_6Recode_Task { PyObject_HEAD RECODE_TASK task; }; /* #### Code section: utility_code_proto ### */ /* --- Runtime support code (head) --- */ /* Refnanny.proto */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif #if CYTHON_REFNANNY typedef struct { void (*INCREF)(void*, PyObject*, Py_ssize_t); void (*DECREF)(void*, PyObject*, Py_ssize_t); void (*GOTREF)(void*, PyObject*, Py_ssize_t); void (*GIVEREF)(void*, PyObject*, Py_ssize_t); void* (*SetupContext)(const char*, Py_ssize_t, const char*); void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD #define __Pyx_RefNannySetupContext(name, acquire_gil)\ if (acquire_gil) {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ PyGILState_Release(__pyx_gilstate_save);\ } else {\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ } #define __Pyx_RefNannyFinishContextNogil() {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __Pyx_RefNannyFinishContext();\ PyGILState_Release(__pyx_gilstate_save);\ } #else #define __Pyx_RefNannySetupContext(name, acquire_gil)\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__)) #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext() #endif #define __Pyx_RefNannyFinishContextNogil() {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __Pyx_RefNannyFinishContext();\ PyGILState_Release(__pyx_gilstate_save);\ } #define __Pyx_RefNannyFinishContext()\ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) #else #define __Pyx_RefNannyDeclarations #define __Pyx_RefNannySetupContext(name, acquire_gil) #define __Pyx_RefNannyFinishContextNogil() #define __Pyx_RefNannyFinishContext() #define __Pyx_INCREF(r) Py_INCREF(r) #define __Pyx_DECREF(r) Py_DECREF(r) #define __Pyx_GOTREF(r) #define __Pyx_GIVEREF(r) #define __Pyx_XINCREF(r) Py_XINCREF(r) #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) #endif #define __Pyx_Py_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; Py_XDECREF(tmp);\ } while (0) #define __Pyx_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_XDECREF(tmp);\ } while (0) #define __Pyx_DECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_DECREF(tmp);\ } while (0) #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) /* PyErrExceptionMatches.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); #else #define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) #endif /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; #define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; #if PY_VERSION_HEX >= 0x030C00A6 #define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) #define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) #else #define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) #define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) #endif #else #define __Pyx_PyThreadState_declare #define __Pyx_PyThreadState_assign #define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) #define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() #endif /* PyErrFetchRestore.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 #define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) #else #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) #endif #else #define __Pyx_PyErr_Clear() PyErr_Clear() #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) #endif /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif /* PyObjectGetAttrStrNoError.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); /* TupleAndListFromArray.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); #endif /* IncludeStringH.proto */ #include /* BytesEquals.proto */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); /* UnicodeEquals.proto */ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); /* fastcall.proto */ #if CYTHON_AVOID_BORROWED_REFS #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i) #elif CYTHON_ASSUME_SAFE_MACROS #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i) #else #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i) #endif #if CYTHON_AVOID_BORROWED_REFS #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg) #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg) #else #define __Pyx_Arg_NewRef_VARARGS(arg) arg #define __Pyx_Arg_XDECREF_VARARGS(arg) #endif #define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) #define __Pyx_KwValues_VARARGS(args, nargs) NULL #define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) #define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) #if CYTHON_METH_FASTCALL #define __Pyx_Arg_FASTCALL(args, i) args[i] #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds) #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); #else #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) #endif #define __Pyx_Arg_NewRef_FASTCALL(arg) arg /* no-op, __Pyx_Arg_FASTCALL is direct and this needs to have the same reference counting */ #define __Pyx_Arg_XDECREF_FASTCALL(arg) #else #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg) #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg) #endif #if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS #define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start) #define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start) #else #define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) #define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) #endif /* RaiseDoubleKeywords.proto */ static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /* ParseKeywords.proto */ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name); /* RaiseArgTupleInvalid.proto */ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /* KeywordStringCheck.proto */ static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed); /* ListAppend.proto */ #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { Py_INCREF(x); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 L->ob_item[len] = x; #else PyList_SET_ITEM(list, len, x); #endif __Pyx_SET_SIZE(list, len + 1); return 0; } return PyList_Append(list, x); } #else #define __Pyx_PyList_Append(L,x) PyList_Append(L,x) #endif /* PyDictVersioning.proto */ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS #define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) #define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ (version_var) = __PYX_GET_DICT_VERSION(dict);\ (cache_var) = (value); #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ static PY_UINT64_T __pyx_dict_version = 0;\ static PyObject *__pyx_dict_cached_value = NULL;\ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ (VAR) = __pyx_dict_cached_value;\ } else {\ (VAR) = __pyx_dict_cached_value = (LOOKUP);\ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ }\ } static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); #else #define __PYX_GET_DICT_VERSION(dict) (0) #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); #endif /* GetModuleGlobalName.proto */ #if CYTHON_USE_DICT_VERSIONS #define __Pyx_GetModuleGlobalName(var, name) do {\ static PY_UINT64_T __pyx_dict_version = 0;\ static PyObject *__pyx_dict_cached_value = NULL;\ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ } while(0) #define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ PY_UINT64_T __pyx_dict_version;\ PyObject *__pyx_dict_cached_value;\ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ } while(0) static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); #else #define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) #define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); #endif /* RaiseException.proto */ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /* PyFunctionFastCall.proto */ #if CYTHON_FAST_PYCALL #if !CYTHON_VECTORCALL #define __Pyx_PyFunction_FastCall(func, args, nargs)\ __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); #endif #define __Pyx_BUILD_ASSERT_EXPR(cond)\ (sizeof(char [1 - 2*!(cond)]) - 1) #ifndef Py_MEMBER_SIZE #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) #endif #if !CYTHON_VECTORCALL #if PY_VERSION_HEX >= 0x03080000 #include "frameobject.h" #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API #ifndef Py_BUILD_CORE #define Py_BUILD_CORE 1 #endif #include "internal/pycore_frame.h" #endif #define __Pxy_PyFrame_Initialize_Offsets() #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) #else static size_t __pyx_pyframe_localsplus_offset = 0; #include "frameobject.h" #define __Pxy_PyFrame_Initialize_Offsets()\ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) #define __Pyx_PyFrame_GetLocalsplus(frame)\ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) #endif #endif #endif /* PyObjectCall.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); #else #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif /* PyObjectCallMethO.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); #endif /* PyObjectFastCall.proto */ #define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs); /* PyObjectCallOneArg.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); /* ArgTypeTest.proto */ #define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\ __Pyx__ArgTypeTest(obj, type, name, exact)) static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); /* GetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); #endif /* SwapException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); #endif /* GetTopmostException.proto */ #if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); #endif /* SaveResetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); #else #define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) #define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) #endif /* IncludeStructmemberH.proto */ #include /* FixUpExtensionType.proto */ #if CYTHON_USE_TYPE_SPECS static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); #endif /* PyObjectCallNoArg.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); /* PyObjectGetMethod.proto */ static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); /* PyObjectCallMethod0.proto */ static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); /* ValidateBasesTuple.proto */ #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); #endif /* PyType_Ready.proto */ CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); /* PyObject_GenericGetAttrNoDict.proto */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); #else #define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr #endif /* PyObject_GenericGetAttr.proto */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); #else #define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr #endif /* SetupReduce.proto */ #if !CYTHON_COMPILING_IN_LIMITED_API static int __Pyx_setup_reduce(PyObject* type_obj); #endif /* Py3UpdateBases.proto */ static PyObject* __Pyx_PEP560_update_bases(PyObject *bases); /* CalculateMetaclass.proto */ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); /* PyObjectCall2Args.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); /* PyObjectLookupSpecial.proto */ #if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS #define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) #define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); #else #define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) #define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) #endif /* Py3ClassCreate.proto */ static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc); static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); /* FetchSharedCythonModule.proto */ static PyObject *__Pyx_FetchSharedCythonABIModule(void); /* FetchCommonType.proto */ #if !CYTHON_USE_TYPE_SPECS static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); #else static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases); #endif /* PyMethodNew.proto */ #if CYTHON_COMPILING_IN_LIMITED_API static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { PyObject *typesModule=NULL, *methodType=NULL, *result=NULL; CYTHON_UNUSED_VAR(typ); if (!self) return __Pyx_NewRef(func); typesModule = PyImport_ImportModule("types"); if (!typesModule) return NULL; methodType = PyObject_GetAttrString(typesModule, "MethodType"); Py_DECREF(typesModule); if (!methodType) return NULL; result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL); Py_DECREF(methodType); return result; } #elif PY_MAJOR_VERSION >= 3 static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { CYTHON_UNUSED_VAR(typ); if (!self) return __Pyx_NewRef(func); return PyMethod_New(func, self); } #else #define __Pyx_PyMethod_New PyMethod_New #endif /* PyVectorcallFastCallDict.proto */ #if CYTHON_METH_FASTCALL static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); #endif /* CythonFunctionShared.proto */ #define __Pyx_CyFunction_USED #define __Pyx_CYFUNCTION_STATICMETHOD 0x01 #define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 #define __Pyx_CYFUNCTION_CCLASS 0x04 #define __Pyx_CYFUNCTION_COROUTINE 0x08 #define __Pyx_CyFunction_GetClosure(f)\ (((__pyx_CyFunctionObject *) (f))->func_closure) #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_CyFunction_GetClassObj(f)\ (((__pyx_CyFunctionObject *) (f))->func_classobj) #else #define __Pyx_CyFunction_GetClassObj(f)\ ((PyObject*) ((PyCMethodObject *) (f))->mm_class) #endif #define __Pyx_CyFunction_SetClassObj(f, classobj)\ __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) #define __Pyx_CyFunction_Defaults(type, f)\ ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) #define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) typedef struct { #if CYTHON_COMPILING_IN_LIMITED_API PyObject_HEAD PyObject *func; #elif PY_VERSION_HEX < 0x030900B1 PyCFunctionObject func; #else PyCMethodObject func; #endif #if CYTHON_BACKPORT_VECTORCALL __pyx_vectorcallfunc func_vectorcall; #endif #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API PyObject *func_weakreflist; #endif PyObject *func_dict; PyObject *func_name; PyObject *func_qualname; PyObject *func_doc; PyObject *func_globals; PyObject *func_code; PyObject *func_closure; #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API PyObject *func_classobj; #endif void *defaults; int defaults_pyobjects; size_t defaults_size; int flags; PyObject *defaults_tuple; PyObject *defaults_kwdict; PyObject *(*defaults_getter)(PyObject *); PyObject *func_annotations; PyObject *func_is_coroutine; } __pyx_CyFunctionObject; #undef __Pyx_CyOrPyCFunction_Check #define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_CyFunctionType) #define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type) #define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CyFunctionType) static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc); #undef __Pyx_IsSameCFunction #define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, int flags, PyObject* qualname, PyObject *closure, PyObject *module, PyObject *globals, PyObject* code); static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, size_t size, int pyobjects); static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, PyObject *tuple); static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, PyObject *dict); static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, PyObject *dict); static int __pyx_CyFunction_init(PyObject *module); #if CYTHON_METH_FASTCALL static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); #if CYTHON_BACKPORT_VECTORCALL #define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) #else #define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) #endif #endif /* CythonFunction.proto */ static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, PyObject *closure, PyObject *module, PyObject *globals, PyObject* code); /* CLineInTraceback.proto */ #ifdef CYTHON_CLINE_IN_TRACEBACK #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) #else static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); #endif /* CodeObjectCache.proto */ #if !CYTHON_COMPILING_IN_LIMITED_API typedef struct { PyCodeObject* code_object; int code_line; } __Pyx_CodeObjectCacheEntry; struct __Pyx_CodeObjectCache { int count; int max_count; __Pyx_CodeObjectCacheEntry* entries; }; static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); static PyCodeObject *__pyx_find_code_object(int code_line); static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); #endif /* AddTraceback.proto */ static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); /* GCCDiagnostics.proto */ #if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) #define __Pyx_HAS_GCC_DIAGNOSTIC #endif /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_symbol_type(enum recode_symbol_type value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_data_type(enum recode_data_type value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_size(enum recode_size value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_step_type(enum recode_step_type value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_swap_input(enum recode_swap_input value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_error(enum recode_error value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_list_format(enum recode_list_format value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_programming_language(enum recode_programming_language value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From___pyx_anon_enum(int value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__alias_find_type(enum alias_find_type value); /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE enum recode_list_format __Pyx_PyInt_As_enum__recode_list_format(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE enum recode_error __Pyx_PyInt_As_enum__recode_error(PyObject *); /* FormatTypeName.proto */ #if CYTHON_COMPILING_IN_LIMITED_API typedef PyObject *__Pyx_TypeName; #define __Pyx_FMT_TYPENAME "%U" static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp); #define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) #else typedef const char *__Pyx_TypeName; #define __Pyx_FMT_TYPENAME "%.200s" #define __Pyx_PyType_GetName(tp) ((tp)->tp_name) #define __Pyx_DECREF_TypeName(obj) #endif /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); /* FastTypeChecks.proto */ #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) #define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); #else #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) #define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) #define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) #endif #define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) /* CheckBinaryVersion.proto */ static unsigned long __Pyx_get_runtime_version(void); static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); /* InitStrings.proto */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /* #### Code section: module_declarations ### */ /* Module declarations from "libcpp" */ /* Module declarations from "libc.string" */ /* Module declarations from "libc.stdlib" */ /* Module declarations from "libc.stdio" */ /* Module declarations from "Recode" */ /* #### Code section: typeinfo ### */ /* #### Code section: before_global_var ### */ #define __Pyx_MODULE_NAME "Recode" extern int __pyx_module_is_main_Recode; int __pyx_module_is_main_Recode = 0; /* Implementation of "Recode" */ /* #### Code section: global_var ### */ static PyObject *__pyx_builtin_TypeError; /* #### Code section: string_decls ### */ static const char __pyx_k_gc[] = "gc"; static const char __pyx_k_ok[] = "ok"; static const char __pyx_k_NUL[] = "NUL"; static const char __pyx_k__41[] = "?"; static const char __pyx_k_doc[] = "__doc__"; static const char __pyx_k_Task[] = "Task"; static const char __pyx_k_dict[] = "__dict__"; static const char __pyx_k_flag[] = "flag"; static const char __pyx_k_list[] = "list"; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_name[] = "__name__"; static const char __pyx_k_scan[] = "scan"; static const char __pyx_k_self[] = "self"; static const char __pyx_k_step[] = "step"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_text[] = "text"; static const char __pyx_k_Outer[] = "Outer"; static const char __pyx_k_error[] = "error"; static const char __pyx_k_iconv[] = "iconv"; static const char __pyx_k_input[] = "input"; static const char __pyx_k_outer[] = "outer"; static const char __pyx_k_saved[] = "saved"; static const char __pyx_k_super[] = "super"; static const char __pyx_k_xDONE[] = "xDONE"; static const char __pyx_k_xELSE[] = "xELSE"; static const char __pyx_k_Recode[] = "Recode"; static const char __pyx_k_SIZE_1[] = "SIZE_1"; static const char __pyx_k_SIZE_2[] = "SIZE_2"; static const char __pyx_k_SIZE_4[] = "SIZE_4"; static const char __pyx_k_SIZE_N[] = "SIZE_N"; static const char __pyx_k_enable[] = "enable"; static const char __pyx_k_format[] = "format"; static const char __pyx_k_module[] = "__module__"; static const char __pyx_k_output[] = "output"; static const char __pyx_k_recode[] = "recode"; static const char __pyx_k_reduce[] = "__reduce__"; static const char __pyx_k_result[] = "result"; static const char __pyx_k_strict[] = "strict"; static const char __pyx_k_string[] = "string"; static const char __pyx_k_symbol[] = "symbol"; static const char __pyx_k_CHARSET[] = "CHARSET"; static const char __pyx_k_Request[] = "Request"; static const char __pyx_k_SWAP_NO[] = "SWAP_NO"; static const char __pyx_k_charset[] = "charset"; static const char __pyx_k_command[] = "command"; static const char __pyx_k_counter[] = "counter"; static const char __pyx_k_disable[] = "disable"; static const char __pyx_k_perform[] = "perform"; static const char __pyx_k_prepare[] = "__prepare__"; static const char __pyx_k_request[] = "request"; static const char __pyx_k_verbose[] = "verbose"; static const char __pyx_k_NO_ERROR[] = "NO_ERROR"; static const char __pyx_k_SWAP_YES[] = "SWAP_YES"; static const char __pyx_k_getstate[] = "__getstate__"; static const char __pyx_k_language[] = "language"; static const char __pyx_k_previous[] = "previous"; static const char __pyx_k_qualname[] = "__qualname__"; static const char __pyx_k_set_name[] = "__set_name__"; static const char __pyx_k_setstate[] = "__setstate__"; static const char __pyx_k_NO_FORMAT[] = "NO_FORMAT"; static const char __pyx_k_TypeError[] = "TypeError"; static const char __pyx_k_get_error[] = "get_error"; static const char __pyx_k_input_len[] = "input_len"; static const char __pyx_k_isenabled[] = "isenabled"; static const char __pyx_k_metaclass[] = "__metaclass__"; static const char __pyx_k_py_string[] = "py_string"; static const char __pyx_k_pyx_state[] = "__pyx_state"; static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; static const char __pyx_k_set_input[] = "set_input"; static const char __pyx_k_LANGUAGE_C[] = "LANGUAGE_C"; static const char __pyx_k_Recode_pyx[] = "Recode.pyx"; static const char __pyx_k_STRIP_DATA[] = "STRIP_DATA"; static const char __pyx_k_STRIP_SIZE[] = "STRIP_SIZE"; static const char __pyx_k_USER_ERROR[] = "USER_ERROR"; static const char __pyx_k_auto_abort[] = "auto_abort"; static const char __pyx_k_fail_level[] = "fail_level"; static const char __pyx_k_get_output[] = "get_output"; static const char __pyx_k_output_len[] = "output_len"; static const char __pyx_k_FULL_FORMAT[] = "FULL_FORMAT"; static const char __pyx_k_NO_LANGUAGE[] = "NO_LANGUAGE"; static const char __pyx_k_abort_level[] = "abort_level"; static const char __pyx_k_mro_entries[] = "__mro_entries__"; static const char __pyx_k_set_verbose[] = "set_verbose"; static const char __pyx_k_BYTE_TO_BYTE[] = "BYTE_TO_BYTE"; static const char __pyx_k_COMBINE_STEP[] = "COMBINE_STEP"; static const char __pyx_k_DATA_SURFACE[] = "DATA_SURFACE"; static const char __pyx_k_EXPLODE_DATA[] = "EXPLODE_DATA"; static const char __pyx_k_EXPLODE_STEP[] = "EXPLODE_STEP"; static const char __pyx_k_OCTAL_FORMAT[] = "OCTAL_FORMAT"; static const char __pyx_k_Outer_recode[] = "Outer.recode"; static const char __pyx_k_Request_scan[] = "Request.scan"; static const char __pyx_k_SYSTEM_ERROR[] = "SYSTEM_ERROR"; static const char __pyx_k_Task_perform[] = "Task.perform"; static const char __pyx_k_UCS2_TO_BYTE[] = "UCS2_TO_BYTE"; static const char __pyx_k_all_charsets[] = "all_charsets"; static const char __pyx_k_all_surfaces[] = "all_surfaces"; static const char __pyx_k_format_table[] = "format_table"; static const char __pyx_k_full_charset[] = "full_charset"; static const char __pyx_k_is_coroutine[] = "_is_coroutine"; static const char __pyx_k_stringsource[] = ""; static const char __pyx_k_INVALID_INPUT[] = "INVALID_INPUT"; static const char __pyx_k_LANGUAGE_PERL[] = "LANGUAGE_PERL"; static const char __pyx_k_MAXIMUM_ERROR[] = "MAXIMUM_ERROR"; static const char __pyx_k_NOT_CANONICAL[] = "NOT_CANONICAL"; static const char __pyx_k_NO_ICONV_FLAG[] = "NO_ICONV_FLAG"; static const char __pyx_k_NO_STEP_TABLE[] = "NO_STEP_TABLE"; static const char __pyx_k_init_subclass[] = "__init_subclass__"; static const char __pyx_k_pair_sequence[] = "pair_sequence"; static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; static const char __pyx_k_BYTE_TO_STRING[] = "BYTE_TO_STRING"; static const char __pyx_k_DECIMAL_FORMAT[] = "DECIMAL_FORMAT"; static const char __pyx_k_INTERNAL_ERROR[] = "INTERNAL_ERROR"; static const char __pyx_k_NO_SYMBOL_TYPE[] = "NO_SYMBOL_TYPE"; static const char __pyx_k_Request_string[] = "Request.string"; static const char __pyx_k_STRING_TO_UCS2[] = "STRING_TO_UCS2"; static const char __pyx_k_SWAP_UNDECIDED[] = "SWAP_UNDECIDED"; static const char __pyx_k_Task_get_error[] = "Task.get_error"; static const char __pyx_k_Task_set_input[] = "Task.set_input"; static const char __pyx_k_UCS2_TO_STRING[] = "UCS2_TO_STRING"; static const char __pyx_k_UNTRANSLATABLE[] = "UNTRANSLATABLE"; static const char __pyx_k_set_fail_level[] = "set_fail_level"; static const char __pyx_k_AUTO_ABORT_FLAG[] = "AUTO_ABORT_FLAG"; static const char __pyx_k_BYTE_ORDER_MARK[] = "BYTE_ORDER_MARK"; static const char __pyx_k_COMBINE_EXPLODE[] = "COMBINE_EXPLODE"; static const char __pyx_k_NOT_A_CHARACTER[] = "NOT_A_CHARACTER"; static const char __pyx_k_NO_CHARSET_DATA[] = "NO_CHARSET_DATA"; static const char __pyx_k_Task_get_output[] = "Task.get_output"; static const char __pyx_k_concise_charset[] = "concise_charset"; static const char __pyx_k_default_charset[] = "default_charset"; static const char __pyx_k_set_abort_level[] = "set_abort_level"; static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; static const char __pyx_k_AMBIGUOUS_OUTPUT[] = "AMBIGUOUS_OUTPUT"; static const char __pyx_k_output_allocated[] = "output_allocated"; static const char __pyx_k_HEXADECIMAL_FORMAT[] = "HEXADECIMAL_FORMAT"; static const char __pyx_k_Outer_all_charsets[] = "Outer.all_charsets"; static const char __pyx_k_Outer_all_surfaces[] = "Outer.all_surfaces"; static const char __pyx_k_Outer_full_charset[] = "Outer.full_charset"; static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; static const char __pyx_k_Request_set_verbose[] = "Request.set_verbose"; static const char __pyx_k_STRICT_MAPPING_FLAG[] = "STRICT_MAPPING_FLAG"; static const char __pyx_k_Task_set_fail_level[] = "Task.set_fail_level"; static const char __pyx_k_set_byte_order_mark[] = "set_byte_order_mark"; static const char __pyx_k_ALIAS_FIND_AS_EITHER[] = "ALIAS_FIND_AS_EITHER"; static const char __pyx_k_Request_format_table[] = "Request.format_table"; static const char __pyx_k_Task___reduce_cython[] = "Task.__reduce_cython__"; static const char __pyx_k_Task_set_abort_level[] = "Task.set_abort_level"; static const char __pyx_k_ALIAS_FIND_AS_CHARSET[] = "ALIAS_FIND_AS_CHARSET"; static const char __pyx_k_ALIAS_FIND_AS_SURFACE[] = "ALIAS_FIND_AS_SURFACE"; static const char __pyx_k_Outer___reduce_cython[] = "Outer.__reduce_cython__"; static const char __pyx_k_Outer_concise_charset[] = "Outer.concise_charset"; static const char __pyx_k_Outer_default_charset[] = "Outer.default_charset"; static const char __pyx_k_REPLACEMENT_CHARACTER[] = "REPLACEMENT_CHARACTER"; static const char __pyx_k_Request_pair_sequence[] = "Request.pair_sequence"; static const char __pyx_k_SYMBOL_CREATE_CHARSET[] = "SYMBOL_CREATE_CHARSET"; static const char __pyx_k_Task___setstate_cython[] = "Task.__setstate_cython__"; static const char __pyx_k_BYTE_ORDER_MARK_SWAPPED[] = "BYTE_ORDER_MARK_SWAPPED"; static const char __pyx_k_Outer___setstate_cython[] = "Outer.__setstate_cython__"; static const char __pyx_k_Request___reduce_cython[] = "Request.__reduce_cython__"; static const char __pyx_k_Task_set_byte_order_mark[] = "Task.set_byte_order_mark"; static const char __pyx_k_Request___setstate_cython[] = "Request.__setstate_cython__"; static const char __pyx_k_SYMBOL_CREATE_DATA_SURFACE[] = "SYMBOL_CREATE_DATA_SURFACE"; static const char __pyx_k_self_outer_cannot_be_converted_t[] = "self.outer cannot be converted to a Python object for pickling"; static const char __pyx_k_self_request_cannot_be_converted[] = "self.request cannot be converted to a Python object for pickling"; static const char __pyx_k_self_task_cannot_be_converted_to[] = "self.task cannot be converted to a Python object for pickling"; /* #### Code section: decls ### */ static int __pyx_pf_6Recode_5Outer___init__(struct __pyx_obj_6Recode_Outer *__pyx_v_self, PyObject *__pyx_v_auto_abort, PyObject *__pyx_v_iconv, PyObject *__pyx_v_strict); /* proto */ static void __pyx_pf_6Recode_5Outer_2__dealloc__(struct __pyx_obj_6Recode_Outer *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6Recode_5Outer_4default_charset(CYTHON_UNUSED struct __pyx_obj_6Recode_Outer *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6Recode_5Outer_6all_charsets(struct __pyx_obj_6Recode_Outer *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6Recode_5Outer_8all_surfaces(struct __pyx_obj_6Recode_Outer *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6Recode_5Outer_10concise_charset(struct __pyx_obj_6Recode_Outer *__pyx_v_self, PyObject *__pyx_v_format); /* proto */ static PyObject *__pyx_pf_6Recode_5Outer_12full_charset(struct __pyx_obj_6Recode_Outer *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6Recode_5Outer_14recode(struct __pyx_obj_6Recode_Outer *__pyx_v_self, char *__pyx_v_command, char *__pyx_v_input, PyObject *__pyx_v_verbose); /* proto */ static PyObject *__pyx_pf_6Recode_5Outer_16__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6Recode_Outer *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6Recode_5Outer_18__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6Recode_Outer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_6Recode_7Request___init__(struct __pyx_obj_6Recode_Request *__pyx_v_self, struct __pyx_obj_6Recode_Outer *__pyx_v_outer); /* proto */ static void __pyx_pf_6Recode_7Request_2__dealloc__(struct __pyx_obj_6Recode_Request *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6Recode_7Request_4set_verbose(struct __pyx_obj_6Recode_Request *__pyx_v_self, PyObject *__pyx_v_flag); /* proto */ static PyObject *__pyx_pf_6Recode_7Request_6scan(struct __pyx_obj_6Recode_Request *__pyx_v_self, char *__pyx_v_text); /* proto */ static PyObject *__pyx_pf_6Recode_7Request_8pair_sequence(struct __pyx_obj_6Recode_Request *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6Recode_7Request_10format_table(struct __pyx_obj_6Recode_Request *__pyx_v_self, int __pyx_v_language, char *__pyx_v_charset); /* proto */ static PyObject *__pyx_pf_6Recode_7Request_12string(struct __pyx_obj_6Recode_Request *__pyx_v_self, PyObject *__pyx_v_text); /* proto */ static PyObject *__pyx_pf_6Recode_7Request_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6Recode_Request *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6Recode_7Request_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6Recode_Request *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_6Recode_4Task___init__(struct __pyx_obj_6Recode_Task *__pyx_v_self, struct __pyx_obj_6Recode_Request *__pyx_v_request); /* proto */ static void __pyx_pf_6Recode_4Task_2__dealloc__(struct __pyx_obj_6Recode_Task *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6Recode_4Task_4set_byte_order_mark(struct __pyx_obj_6Recode_Task *__pyx_v_self, PyObject *__pyx_v_flag); /* proto */ static PyObject *__pyx_pf_6Recode_4Task_6get_error(struct __pyx_obj_6Recode_Task *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6Recode_4Task_8set_fail_level(struct __pyx_obj_6Recode_Task *__pyx_v_self, PyObject *__pyx_v_fail_level); /* proto */ static PyObject *__pyx_pf_6Recode_4Task_10set_abort_level(struct __pyx_obj_6Recode_Task *__pyx_v_self, PyObject *__pyx_v_abort_level); /* proto */ static PyObject *__pyx_pf_6Recode_4Task_12set_input(struct __pyx_obj_6Recode_Task *__pyx_v_self, PyObject *__pyx_v_text); /* proto */ static PyObject *__pyx_pf_6Recode_4Task_14get_output(struct __pyx_obj_6Recode_Task *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6Recode_4Task_16perform(struct __pyx_obj_6Recode_Task *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6Recode_4Task_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6Recode_Task *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_6Recode_4Task_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6Recode_Task *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_tp_new_6Recode_Outer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_6Recode_Request(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_6Recode_Task(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ /* #### Code section: late_includes ### */ /* #### Code section: module_state ### */ typedef struct { PyObject *__pyx_d; PyObject *__pyx_b; PyObject *__pyx_cython_runtime; PyObject *__pyx_empty_tuple; PyObject *__pyx_empty_bytes; PyObject *__pyx_empty_unicode; #ifdef __Pyx_CyFunction_USED PyTypeObject *__pyx_CyFunctionType; #endif #ifdef __Pyx_FusedFunction_USED PyTypeObject *__pyx_FusedFunctionType; #endif #ifdef __Pyx_Generator_USED PyTypeObject *__pyx_GeneratorType; #endif #ifdef __Pyx_IterableCoroutine_USED PyTypeObject *__pyx_IterableCoroutineType; #endif #ifdef __Pyx_Coroutine_USED PyTypeObject *__pyx_CoroutineAwaitType; #endif #ifdef __Pyx_Coroutine_USED PyTypeObject *__pyx_CoroutineType; #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE PyObject *__pyx_type_6Recode_Outer; PyObject *__pyx_type_6Recode_Request; PyObject *__pyx_type_6Recode_Task; #endif PyTypeObject *__pyx_ptype_6Recode_Outer; PyTypeObject *__pyx_ptype_6Recode_Request; PyTypeObject *__pyx_ptype_6Recode_Task; PyObject *__pyx_n_s_ALIAS_FIND_AS_CHARSET; PyObject *__pyx_n_s_ALIAS_FIND_AS_EITHER; PyObject *__pyx_n_s_ALIAS_FIND_AS_SURFACE; PyObject *__pyx_n_s_AMBIGUOUS_OUTPUT; PyObject *__pyx_n_s_AUTO_ABORT_FLAG; PyObject *__pyx_n_s_BYTE_ORDER_MARK; PyObject *__pyx_n_s_BYTE_ORDER_MARK_SWAPPED; PyObject *__pyx_n_s_BYTE_TO_BYTE; PyObject *__pyx_n_s_BYTE_TO_STRING; PyObject *__pyx_n_s_CHARSET; PyObject *__pyx_n_s_COMBINE_EXPLODE; PyObject *__pyx_n_s_COMBINE_STEP; PyObject *__pyx_n_s_DATA_SURFACE; PyObject *__pyx_n_s_DECIMAL_FORMAT; PyObject *__pyx_n_s_EXPLODE_DATA; PyObject *__pyx_n_s_EXPLODE_STEP; PyObject *__pyx_n_s_FULL_FORMAT; PyObject *__pyx_n_s_HEXADECIMAL_FORMAT; PyObject *__pyx_n_s_INTERNAL_ERROR; PyObject *__pyx_n_s_INVALID_INPUT; PyObject *__pyx_n_s_LANGUAGE_C; PyObject *__pyx_n_s_LANGUAGE_PERL; PyObject *__pyx_n_s_MAXIMUM_ERROR; PyObject *__pyx_n_s_NOT_A_CHARACTER; PyObject *__pyx_n_s_NOT_CANONICAL; PyObject *__pyx_n_s_NO_CHARSET_DATA; PyObject *__pyx_n_s_NO_ERROR; PyObject *__pyx_n_s_NO_FORMAT; PyObject *__pyx_n_s_NO_ICONV_FLAG; PyObject *__pyx_n_s_NO_LANGUAGE; PyObject *__pyx_n_s_NO_STEP_TABLE; PyObject *__pyx_n_s_NO_SYMBOL_TYPE; PyObject *__pyx_n_s_NUL; PyObject *__pyx_n_s_OCTAL_FORMAT; PyObject *__pyx_n_s_Outer; PyObject *__pyx_n_s_Outer___reduce_cython; PyObject *__pyx_n_s_Outer___setstate_cython; PyObject *__pyx_n_s_Outer_all_charsets; PyObject *__pyx_n_s_Outer_all_surfaces; PyObject *__pyx_n_s_Outer_concise_charset; PyObject *__pyx_n_s_Outer_default_charset; PyObject *__pyx_n_s_Outer_full_charset; PyObject *__pyx_n_s_Outer_recode; PyObject *__pyx_n_s_REPLACEMENT_CHARACTER; PyObject *__pyx_n_s_Recode; PyObject *__pyx_kp_s_Recode_pyx; PyObject *__pyx_n_s_Request; PyObject *__pyx_n_s_Request___reduce_cython; PyObject *__pyx_n_s_Request___setstate_cython; PyObject *__pyx_n_s_Request_format_table; PyObject *__pyx_n_s_Request_pair_sequence; PyObject *__pyx_n_s_Request_scan; PyObject *__pyx_n_s_Request_set_verbose; PyObject *__pyx_n_s_Request_string; PyObject *__pyx_n_s_SIZE_1; PyObject *__pyx_n_s_SIZE_2; PyObject *__pyx_n_s_SIZE_4; PyObject *__pyx_n_s_SIZE_N; PyObject *__pyx_n_s_STRICT_MAPPING_FLAG; PyObject *__pyx_n_s_STRING_TO_UCS2; PyObject *__pyx_n_s_STRIP_DATA; PyObject *__pyx_n_s_STRIP_SIZE; PyObject *__pyx_n_s_SWAP_NO; PyObject *__pyx_n_s_SWAP_UNDECIDED; PyObject *__pyx_n_s_SWAP_YES; PyObject *__pyx_n_s_SYMBOL_CREATE_CHARSET; PyObject *__pyx_n_s_SYMBOL_CREATE_DATA_SURFACE; PyObject *__pyx_n_s_SYSTEM_ERROR; PyObject *__pyx_n_s_Task; PyObject *__pyx_n_s_Task___reduce_cython; PyObject *__pyx_n_s_Task___setstate_cython; PyObject *__pyx_n_s_Task_get_error; PyObject *__pyx_n_s_Task_get_output; PyObject *__pyx_n_s_Task_perform; PyObject *__pyx_n_s_Task_set_abort_level; PyObject *__pyx_n_s_Task_set_byte_order_mark; PyObject *__pyx_n_s_Task_set_fail_level; PyObject *__pyx_n_s_Task_set_input; PyObject *__pyx_n_s_TypeError; PyObject *__pyx_n_s_UCS2_TO_BYTE; PyObject *__pyx_n_s_UCS2_TO_STRING; PyObject *__pyx_n_s_UNTRANSLATABLE; PyObject *__pyx_n_s_USER_ERROR; PyObject *__pyx_n_s__41; PyObject *__pyx_n_s_abort_level; PyObject *__pyx_n_s_all_charsets; PyObject *__pyx_n_s_all_surfaces; PyObject *__pyx_n_s_asyncio_coroutines; PyObject *__pyx_n_s_auto_abort; PyObject *__pyx_n_s_charset; PyObject *__pyx_n_s_cline_in_traceback; PyObject *__pyx_n_s_command; PyObject *__pyx_n_s_concise_charset; PyObject *__pyx_n_s_counter; PyObject *__pyx_n_s_default_charset; PyObject *__pyx_n_s_dict; PyObject *__pyx_kp_u_disable; PyObject *__pyx_n_s_doc; PyObject *__pyx_kp_u_enable; PyObject *__pyx_n_s_error; PyObject *__pyx_n_s_fail_level; PyObject *__pyx_n_s_flag; PyObject *__pyx_n_s_format; PyObject *__pyx_n_s_format_table; PyObject *__pyx_n_s_full_charset; PyObject *__pyx_kp_u_gc; PyObject *__pyx_n_s_get_error; PyObject *__pyx_n_s_get_output; PyObject *__pyx_n_s_getstate; PyObject *__pyx_n_s_iconv; PyObject *__pyx_n_s_init_subclass; PyObject *__pyx_n_s_input; PyObject *__pyx_n_s_input_len; PyObject *__pyx_n_s_is_coroutine; PyObject *__pyx_kp_u_isenabled; PyObject *__pyx_n_s_language; PyObject *__pyx_n_s_list; PyObject *__pyx_n_s_main; PyObject *__pyx_n_s_metaclass; PyObject *__pyx_n_s_module; PyObject *__pyx_n_s_mro_entries; PyObject *__pyx_n_s_name; PyObject *__pyx_n_s_ok; PyObject *__pyx_n_s_outer; PyObject *__pyx_n_s_output; PyObject *__pyx_n_s_output_allocated; PyObject *__pyx_n_s_output_len; PyObject *__pyx_n_s_pair_sequence; PyObject *__pyx_n_s_perform; PyObject *__pyx_n_s_prepare; PyObject *__pyx_n_s_previous; PyObject *__pyx_n_s_py_string; PyObject *__pyx_n_s_pyx_state; PyObject *__pyx_n_s_qualname; PyObject *__pyx_n_s_recode; PyObject *__pyx_n_s_reduce; PyObject *__pyx_n_s_reduce_cython; PyObject *__pyx_n_s_reduce_ex; PyObject *__pyx_n_s_request; PyObject *__pyx_n_s_result; PyObject *__pyx_n_s_saved; PyObject *__pyx_n_s_scan; PyObject *__pyx_n_s_self; PyObject *__pyx_kp_s_self_outer_cannot_be_converted_t; PyObject *__pyx_kp_s_self_request_cannot_be_converted; PyObject *__pyx_kp_s_self_task_cannot_be_converted_to; PyObject *__pyx_n_s_set_abort_level; PyObject *__pyx_n_s_set_byte_order_mark; PyObject *__pyx_n_s_set_fail_level; PyObject *__pyx_n_s_set_input; PyObject *__pyx_n_s_set_name; PyObject *__pyx_n_s_set_verbose; PyObject *__pyx_n_s_setstate; PyObject *__pyx_n_s_setstate_cython; PyObject *__pyx_n_s_step; PyObject *__pyx_n_s_strict; PyObject *__pyx_n_s_string; PyObject *__pyx_kp_s_stringsource; PyObject *__pyx_n_s_super; PyObject *__pyx_n_s_symbol; PyObject *__pyx_n_s_test; PyObject *__pyx_n_s_text; PyObject *__pyx_n_s_verbose; PyObject *__pyx_n_s_xDONE; PyObject *__pyx_n_s_xELSE; PyObject *__pyx_k_; PyObject *__pyx_tuple__2; PyObject *__pyx_tuple__4; PyObject *__pyx_tuple__7; PyObject *__pyx_tuple__9; PyObject *__pyx_tuple__11; PyObject *__pyx_tuple__13; PyObject *__pyx_tuple__15; PyObject *__pyx_tuple__17; PyObject *__pyx_tuple__19; PyObject *__pyx_tuple__21; PyObject *__pyx_tuple__23; PyObject *__pyx_tuple__25; PyObject *__pyx_tuple__31; PyObject *__pyx_tuple__33; PyObject *__pyx_tuple__35; PyObject *__pyx_codeobj__3; PyObject *__pyx_codeobj__5; PyObject *__pyx_codeobj__6; PyObject *__pyx_codeobj__8; PyObject *__pyx_codeobj__10; PyObject *__pyx_codeobj__12; PyObject *__pyx_codeobj__14; PyObject *__pyx_codeobj__16; PyObject *__pyx_codeobj__18; PyObject *__pyx_codeobj__20; PyObject *__pyx_codeobj__22; PyObject *__pyx_codeobj__24; PyObject *__pyx_codeobj__26; PyObject *__pyx_codeobj__27; PyObject *__pyx_codeobj__28; PyObject *__pyx_codeobj__29; PyObject *__pyx_codeobj__30; PyObject *__pyx_codeobj__32; PyObject *__pyx_codeobj__34; PyObject *__pyx_codeobj__36; PyObject *__pyx_codeobj__37; PyObject *__pyx_codeobj__38; PyObject *__pyx_codeobj__39; PyObject *__pyx_codeobj__40; } __pyx_mstate; #if CYTHON_USE_MODULE_STATE #ifdef __cplusplus namespace { extern struct PyModuleDef __pyx_moduledef; } /* anonymous namespace */ #else static struct PyModuleDef __pyx_moduledef; #endif #define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o)) #define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef))) #define __pyx_m (PyState_FindModule(&__pyx_moduledef)) #else static __pyx_mstate __pyx_mstate_global_static = #ifdef __cplusplus {}; #else {0}; #endif static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static; #endif /* #### Code section: module_state_clear ### */ #if CYTHON_USE_MODULE_STATE static int __pyx_m_clear(PyObject *m) { __pyx_mstate *clear_module_state = __pyx_mstate(m); if (!clear_module_state) return 0; Py_CLEAR(clear_module_state->__pyx_d); Py_CLEAR(clear_module_state->__pyx_b); Py_CLEAR(clear_module_state->__pyx_cython_runtime); Py_CLEAR(clear_module_state->__pyx_empty_tuple); Py_CLEAR(clear_module_state->__pyx_empty_bytes); Py_CLEAR(clear_module_state->__pyx_empty_unicode); #ifdef __Pyx_CyFunction_USED Py_CLEAR(clear_module_state->__pyx_CyFunctionType); #endif #ifdef __Pyx_FusedFunction_USED Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); #endif Py_CLEAR(clear_module_state->__pyx_ptype_6Recode_Outer); Py_CLEAR(clear_module_state->__pyx_type_6Recode_Outer); Py_CLEAR(clear_module_state->__pyx_ptype_6Recode_Request); Py_CLEAR(clear_module_state->__pyx_type_6Recode_Request); Py_CLEAR(clear_module_state->__pyx_ptype_6Recode_Task); Py_CLEAR(clear_module_state->__pyx_type_6Recode_Task); Py_CLEAR(clear_module_state->__pyx_n_s_ALIAS_FIND_AS_CHARSET); Py_CLEAR(clear_module_state->__pyx_n_s_ALIAS_FIND_AS_EITHER); Py_CLEAR(clear_module_state->__pyx_n_s_ALIAS_FIND_AS_SURFACE); Py_CLEAR(clear_module_state->__pyx_n_s_AMBIGUOUS_OUTPUT); Py_CLEAR(clear_module_state->__pyx_n_s_AUTO_ABORT_FLAG); Py_CLEAR(clear_module_state->__pyx_n_s_BYTE_ORDER_MARK); Py_CLEAR(clear_module_state->__pyx_n_s_BYTE_ORDER_MARK_SWAPPED); Py_CLEAR(clear_module_state->__pyx_n_s_BYTE_TO_BYTE); Py_CLEAR(clear_module_state->__pyx_n_s_BYTE_TO_STRING); Py_CLEAR(clear_module_state->__pyx_n_s_CHARSET); Py_CLEAR(clear_module_state->__pyx_n_s_COMBINE_EXPLODE); Py_CLEAR(clear_module_state->__pyx_n_s_COMBINE_STEP); Py_CLEAR(clear_module_state->__pyx_n_s_DATA_SURFACE); Py_CLEAR(clear_module_state->__pyx_n_s_DECIMAL_FORMAT); Py_CLEAR(clear_module_state->__pyx_n_s_EXPLODE_DATA); Py_CLEAR(clear_module_state->__pyx_n_s_EXPLODE_STEP); Py_CLEAR(clear_module_state->__pyx_n_s_FULL_FORMAT); Py_CLEAR(clear_module_state->__pyx_n_s_HEXADECIMAL_FORMAT); Py_CLEAR(clear_module_state->__pyx_n_s_INTERNAL_ERROR); Py_CLEAR(clear_module_state->__pyx_n_s_INVALID_INPUT); Py_CLEAR(clear_module_state->__pyx_n_s_LANGUAGE_C); Py_CLEAR(clear_module_state->__pyx_n_s_LANGUAGE_PERL); Py_CLEAR(clear_module_state->__pyx_n_s_MAXIMUM_ERROR); Py_CLEAR(clear_module_state->__pyx_n_s_NOT_A_CHARACTER); Py_CLEAR(clear_module_state->__pyx_n_s_NOT_CANONICAL); Py_CLEAR(clear_module_state->__pyx_n_s_NO_CHARSET_DATA); Py_CLEAR(clear_module_state->__pyx_n_s_NO_ERROR); Py_CLEAR(clear_module_state->__pyx_n_s_NO_FORMAT); Py_CLEAR(clear_module_state->__pyx_n_s_NO_ICONV_FLAG); Py_CLEAR(clear_module_state->__pyx_n_s_NO_LANGUAGE); Py_CLEAR(clear_module_state->__pyx_n_s_NO_STEP_TABLE); Py_CLEAR(clear_module_state->__pyx_n_s_NO_SYMBOL_TYPE); Py_CLEAR(clear_module_state->__pyx_n_s_NUL); Py_CLEAR(clear_module_state->__pyx_n_s_OCTAL_FORMAT); Py_CLEAR(clear_module_state->__pyx_n_s_Outer); Py_CLEAR(clear_module_state->__pyx_n_s_Outer___reduce_cython); Py_CLEAR(clear_module_state->__pyx_n_s_Outer___setstate_cython); Py_CLEAR(clear_module_state->__pyx_n_s_Outer_all_charsets); Py_CLEAR(clear_module_state->__pyx_n_s_Outer_all_surfaces); Py_CLEAR(clear_module_state->__pyx_n_s_Outer_concise_charset); Py_CLEAR(clear_module_state->__pyx_n_s_Outer_default_charset); Py_CLEAR(clear_module_state->__pyx_n_s_Outer_full_charset); Py_CLEAR(clear_module_state->__pyx_n_s_Outer_recode); Py_CLEAR(clear_module_state->__pyx_n_s_REPLACEMENT_CHARACTER); Py_CLEAR(clear_module_state->__pyx_n_s_Recode); Py_CLEAR(clear_module_state->__pyx_kp_s_Recode_pyx); Py_CLEAR(clear_module_state->__pyx_n_s_Request); Py_CLEAR(clear_module_state->__pyx_n_s_Request___reduce_cython); Py_CLEAR(clear_module_state->__pyx_n_s_Request___setstate_cython); Py_CLEAR(clear_module_state->__pyx_n_s_Request_format_table); Py_CLEAR(clear_module_state->__pyx_n_s_Request_pair_sequence); Py_CLEAR(clear_module_state->__pyx_n_s_Request_scan); Py_CLEAR(clear_module_state->__pyx_n_s_Request_set_verbose); Py_CLEAR(clear_module_state->__pyx_n_s_Request_string); Py_CLEAR(clear_module_state->__pyx_n_s_SIZE_1); Py_CLEAR(clear_module_state->__pyx_n_s_SIZE_2); Py_CLEAR(clear_module_state->__pyx_n_s_SIZE_4); Py_CLEAR(clear_module_state->__pyx_n_s_SIZE_N); Py_CLEAR(clear_module_state->__pyx_n_s_STRICT_MAPPING_FLAG); Py_CLEAR(clear_module_state->__pyx_n_s_STRING_TO_UCS2); Py_CLEAR(clear_module_state->__pyx_n_s_STRIP_DATA); Py_CLEAR(clear_module_state->__pyx_n_s_STRIP_SIZE); Py_CLEAR(clear_module_state->__pyx_n_s_SWAP_NO); Py_CLEAR(clear_module_state->__pyx_n_s_SWAP_UNDECIDED); Py_CLEAR(clear_module_state->__pyx_n_s_SWAP_YES); Py_CLEAR(clear_module_state->__pyx_n_s_SYMBOL_CREATE_CHARSET); Py_CLEAR(clear_module_state->__pyx_n_s_SYMBOL_CREATE_DATA_SURFACE); Py_CLEAR(clear_module_state->__pyx_n_s_SYSTEM_ERROR); Py_CLEAR(clear_module_state->__pyx_n_s_Task); Py_CLEAR(clear_module_state->__pyx_n_s_Task___reduce_cython); Py_CLEAR(clear_module_state->__pyx_n_s_Task___setstate_cython); Py_CLEAR(clear_module_state->__pyx_n_s_Task_get_error); Py_CLEAR(clear_module_state->__pyx_n_s_Task_get_output); Py_CLEAR(clear_module_state->__pyx_n_s_Task_perform); Py_CLEAR(clear_module_state->__pyx_n_s_Task_set_abort_level); Py_CLEAR(clear_module_state->__pyx_n_s_Task_set_byte_order_mark); Py_CLEAR(clear_module_state->__pyx_n_s_Task_set_fail_level); Py_CLEAR(clear_module_state->__pyx_n_s_Task_set_input); Py_CLEAR(clear_module_state->__pyx_n_s_TypeError); Py_CLEAR(clear_module_state->__pyx_n_s_UCS2_TO_BYTE); Py_CLEAR(clear_module_state->__pyx_n_s_UCS2_TO_STRING); Py_CLEAR(clear_module_state->__pyx_n_s_UNTRANSLATABLE); Py_CLEAR(clear_module_state->__pyx_n_s_USER_ERROR); Py_CLEAR(clear_module_state->__pyx_n_s__41); Py_CLEAR(clear_module_state->__pyx_n_s_abort_level); Py_CLEAR(clear_module_state->__pyx_n_s_all_charsets); Py_CLEAR(clear_module_state->__pyx_n_s_all_surfaces); Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines); Py_CLEAR(clear_module_state->__pyx_n_s_auto_abort); Py_CLEAR(clear_module_state->__pyx_n_s_charset); Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback); Py_CLEAR(clear_module_state->__pyx_n_s_command); Py_CLEAR(clear_module_state->__pyx_n_s_concise_charset); Py_CLEAR(clear_module_state->__pyx_n_s_counter); Py_CLEAR(clear_module_state->__pyx_n_s_default_charset); Py_CLEAR(clear_module_state->__pyx_n_s_dict); Py_CLEAR(clear_module_state->__pyx_kp_u_disable); Py_CLEAR(clear_module_state->__pyx_n_s_doc); Py_CLEAR(clear_module_state->__pyx_kp_u_enable); Py_CLEAR(clear_module_state->__pyx_n_s_error); Py_CLEAR(clear_module_state->__pyx_n_s_fail_level); Py_CLEAR(clear_module_state->__pyx_n_s_flag); Py_CLEAR(clear_module_state->__pyx_n_s_format); Py_CLEAR(clear_module_state->__pyx_n_s_format_table); Py_CLEAR(clear_module_state->__pyx_n_s_full_charset); Py_CLEAR(clear_module_state->__pyx_kp_u_gc); Py_CLEAR(clear_module_state->__pyx_n_s_get_error); Py_CLEAR(clear_module_state->__pyx_n_s_get_output); Py_CLEAR(clear_module_state->__pyx_n_s_getstate); Py_CLEAR(clear_module_state->__pyx_n_s_iconv); Py_CLEAR(clear_module_state->__pyx_n_s_init_subclass); Py_CLEAR(clear_module_state->__pyx_n_s_input); Py_CLEAR(clear_module_state->__pyx_n_s_input_len); Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine); Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled); Py_CLEAR(clear_module_state->__pyx_n_s_language); Py_CLEAR(clear_module_state->__pyx_n_s_list); Py_CLEAR(clear_module_state->__pyx_n_s_main); Py_CLEAR(clear_module_state->__pyx_n_s_metaclass); Py_CLEAR(clear_module_state->__pyx_n_s_module); Py_CLEAR(clear_module_state->__pyx_n_s_mro_entries); Py_CLEAR(clear_module_state->__pyx_n_s_name); Py_CLEAR(clear_module_state->__pyx_n_s_ok); Py_CLEAR(clear_module_state->__pyx_n_s_outer); Py_CLEAR(clear_module_state->__pyx_n_s_output); Py_CLEAR(clear_module_state->__pyx_n_s_output_allocated); Py_CLEAR(clear_module_state->__pyx_n_s_output_len); Py_CLEAR(clear_module_state->__pyx_n_s_pair_sequence); Py_CLEAR(clear_module_state->__pyx_n_s_perform); Py_CLEAR(clear_module_state->__pyx_n_s_prepare); Py_CLEAR(clear_module_state->__pyx_n_s_previous); Py_CLEAR(clear_module_state->__pyx_n_s_py_string); Py_CLEAR(clear_module_state->__pyx_n_s_pyx_state); Py_CLEAR(clear_module_state->__pyx_n_s_qualname); Py_CLEAR(clear_module_state->__pyx_n_s_recode); Py_CLEAR(clear_module_state->__pyx_n_s_reduce); Py_CLEAR(clear_module_state->__pyx_n_s_reduce_cython); Py_CLEAR(clear_module_state->__pyx_n_s_reduce_ex); Py_CLEAR(clear_module_state->__pyx_n_s_request); Py_CLEAR(clear_module_state->__pyx_n_s_result); Py_CLEAR(clear_module_state->__pyx_n_s_saved); Py_CLEAR(clear_module_state->__pyx_n_s_scan); Py_CLEAR(clear_module_state->__pyx_n_s_self); Py_CLEAR(clear_module_state->__pyx_kp_s_self_outer_cannot_be_converted_t); Py_CLEAR(clear_module_state->__pyx_kp_s_self_request_cannot_be_converted); Py_CLEAR(clear_module_state->__pyx_kp_s_self_task_cannot_be_converted_to); Py_CLEAR(clear_module_state->__pyx_n_s_set_abort_level); Py_CLEAR(clear_module_state->__pyx_n_s_set_byte_order_mark); Py_CLEAR(clear_module_state->__pyx_n_s_set_fail_level); Py_CLEAR(clear_module_state->__pyx_n_s_set_input); Py_CLEAR(clear_module_state->__pyx_n_s_set_name); Py_CLEAR(clear_module_state->__pyx_n_s_set_verbose); Py_CLEAR(clear_module_state->__pyx_n_s_setstate); Py_CLEAR(clear_module_state->__pyx_n_s_setstate_cython); Py_CLEAR(clear_module_state->__pyx_n_s_step); Py_CLEAR(clear_module_state->__pyx_n_s_strict); Py_CLEAR(clear_module_state->__pyx_n_s_string); Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource); Py_CLEAR(clear_module_state->__pyx_n_s_super); Py_CLEAR(clear_module_state->__pyx_n_s_symbol); Py_CLEAR(clear_module_state->__pyx_n_s_test); Py_CLEAR(clear_module_state->__pyx_n_s_text); Py_CLEAR(clear_module_state->__pyx_n_s_verbose); Py_CLEAR(clear_module_state->__pyx_n_s_xDONE); Py_CLEAR(clear_module_state->__pyx_n_s_xELSE); Py_CLEAR(clear_module_state->__pyx_k_); Py_CLEAR(clear_module_state->__pyx_tuple__2); Py_CLEAR(clear_module_state->__pyx_tuple__4); Py_CLEAR(clear_module_state->__pyx_tuple__7); Py_CLEAR(clear_module_state->__pyx_tuple__9); Py_CLEAR(clear_module_state->__pyx_tuple__11); Py_CLEAR(clear_module_state->__pyx_tuple__13); Py_CLEAR(clear_module_state->__pyx_tuple__15); Py_CLEAR(clear_module_state->__pyx_tuple__17); Py_CLEAR(clear_module_state->__pyx_tuple__19); Py_CLEAR(clear_module_state->__pyx_tuple__21); Py_CLEAR(clear_module_state->__pyx_tuple__23); Py_CLEAR(clear_module_state->__pyx_tuple__25); Py_CLEAR(clear_module_state->__pyx_tuple__31); Py_CLEAR(clear_module_state->__pyx_tuple__33); Py_CLEAR(clear_module_state->__pyx_tuple__35); Py_CLEAR(clear_module_state->__pyx_codeobj__3); Py_CLEAR(clear_module_state->__pyx_codeobj__5); Py_CLEAR(clear_module_state->__pyx_codeobj__6); Py_CLEAR(clear_module_state->__pyx_codeobj__8); Py_CLEAR(clear_module_state->__pyx_codeobj__10); Py_CLEAR(clear_module_state->__pyx_codeobj__12); Py_CLEAR(clear_module_state->__pyx_codeobj__14); Py_CLEAR(clear_module_state->__pyx_codeobj__16); Py_CLEAR(clear_module_state->__pyx_codeobj__18); Py_CLEAR(clear_module_state->__pyx_codeobj__20); Py_CLEAR(clear_module_state->__pyx_codeobj__22); Py_CLEAR(clear_module_state->__pyx_codeobj__24); Py_CLEAR(clear_module_state->__pyx_codeobj__26); Py_CLEAR(clear_module_state->__pyx_codeobj__27); Py_CLEAR(clear_module_state->__pyx_codeobj__28); Py_CLEAR(clear_module_state->__pyx_codeobj__29); Py_CLEAR(clear_module_state->__pyx_codeobj__30); Py_CLEAR(clear_module_state->__pyx_codeobj__32); Py_CLEAR(clear_module_state->__pyx_codeobj__34); Py_CLEAR(clear_module_state->__pyx_codeobj__36); Py_CLEAR(clear_module_state->__pyx_codeobj__37); Py_CLEAR(clear_module_state->__pyx_codeobj__38); Py_CLEAR(clear_module_state->__pyx_codeobj__39); Py_CLEAR(clear_module_state->__pyx_codeobj__40); return 0; } #endif /* #### Code section: module_state_traverse ### */ #if CYTHON_USE_MODULE_STATE static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { __pyx_mstate *traverse_module_state = __pyx_mstate(m); if (!traverse_module_state) return 0; Py_VISIT(traverse_module_state->__pyx_d); Py_VISIT(traverse_module_state->__pyx_b); Py_VISIT(traverse_module_state->__pyx_cython_runtime); Py_VISIT(traverse_module_state->__pyx_empty_tuple); Py_VISIT(traverse_module_state->__pyx_empty_bytes); Py_VISIT(traverse_module_state->__pyx_empty_unicode); #ifdef __Pyx_CyFunction_USED Py_VISIT(traverse_module_state->__pyx_CyFunctionType); #endif #ifdef __Pyx_FusedFunction_USED Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); #endif Py_VISIT(traverse_module_state->__pyx_ptype_6Recode_Outer); Py_VISIT(traverse_module_state->__pyx_type_6Recode_Outer); Py_VISIT(traverse_module_state->__pyx_ptype_6Recode_Request); Py_VISIT(traverse_module_state->__pyx_type_6Recode_Request); Py_VISIT(traverse_module_state->__pyx_ptype_6Recode_Task); Py_VISIT(traverse_module_state->__pyx_type_6Recode_Task); Py_VISIT(traverse_module_state->__pyx_n_s_ALIAS_FIND_AS_CHARSET); Py_VISIT(traverse_module_state->__pyx_n_s_ALIAS_FIND_AS_EITHER); Py_VISIT(traverse_module_state->__pyx_n_s_ALIAS_FIND_AS_SURFACE); Py_VISIT(traverse_module_state->__pyx_n_s_AMBIGUOUS_OUTPUT); Py_VISIT(traverse_module_state->__pyx_n_s_AUTO_ABORT_FLAG); Py_VISIT(traverse_module_state->__pyx_n_s_BYTE_ORDER_MARK); Py_VISIT(traverse_module_state->__pyx_n_s_BYTE_ORDER_MARK_SWAPPED); Py_VISIT(traverse_module_state->__pyx_n_s_BYTE_TO_BYTE); Py_VISIT(traverse_module_state->__pyx_n_s_BYTE_TO_STRING); Py_VISIT(traverse_module_state->__pyx_n_s_CHARSET); Py_VISIT(traverse_module_state->__pyx_n_s_COMBINE_EXPLODE); Py_VISIT(traverse_module_state->__pyx_n_s_COMBINE_STEP); Py_VISIT(traverse_module_state->__pyx_n_s_DATA_SURFACE); Py_VISIT(traverse_module_state->__pyx_n_s_DECIMAL_FORMAT); Py_VISIT(traverse_module_state->__pyx_n_s_EXPLODE_DATA); Py_VISIT(traverse_module_state->__pyx_n_s_EXPLODE_STEP); Py_VISIT(traverse_module_state->__pyx_n_s_FULL_FORMAT); Py_VISIT(traverse_module_state->__pyx_n_s_HEXADECIMAL_FORMAT); Py_VISIT(traverse_module_state->__pyx_n_s_INTERNAL_ERROR); Py_VISIT(traverse_module_state->__pyx_n_s_INVALID_INPUT); Py_VISIT(traverse_module_state->__pyx_n_s_LANGUAGE_C); Py_VISIT(traverse_module_state->__pyx_n_s_LANGUAGE_PERL); Py_VISIT(traverse_module_state->__pyx_n_s_MAXIMUM_ERROR); Py_VISIT(traverse_module_state->__pyx_n_s_NOT_A_CHARACTER); Py_VISIT(traverse_module_state->__pyx_n_s_NOT_CANONICAL); Py_VISIT(traverse_module_state->__pyx_n_s_NO_CHARSET_DATA); Py_VISIT(traverse_module_state->__pyx_n_s_NO_ERROR); Py_VISIT(traverse_module_state->__pyx_n_s_NO_FORMAT); Py_VISIT(traverse_module_state->__pyx_n_s_NO_ICONV_FLAG); Py_VISIT(traverse_module_state->__pyx_n_s_NO_LANGUAGE); Py_VISIT(traverse_module_state->__pyx_n_s_NO_STEP_TABLE); Py_VISIT(traverse_module_state->__pyx_n_s_NO_SYMBOL_TYPE); Py_VISIT(traverse_module_state->__pyx_n_s_NUL); Py_VISIT(traverse_module_state->__pyx_n_s_OCTAL_FORMAT); Py_VISIT(traverse_module_state->__pyx_n_s_Outer); Py_VISIT(traverse_module_state->__pyx_n_s_Outer___reduce_cython); Py_VISIT(traverse_module_state->__pyx_n_s_Outer___setstate_cython); Py_VISIT(traverse_module_state->__pyx_n_s_Outer_all_charsets); Py_VISIT(traverse_module_state->__pyx_n_s_Outer_all_surfaces); Py_VISIT(traverse_module_state->__pyx_n_s_Outer_concise_charset); Py_VISIT(traverse_module_state->__pyx_n_s_Outer_default_charset); Py_VISIT(traverse_module_state->__pyx_n_s_Outer_full_charset); Py_VISIT(traverse_module_state->__pyx_n_s_Outer_recode); Py_VISIT(traverse_module_state->__pyx_n_s_REPLACEMENT_CHARACTER); Py_VISIT(traverse_module_state->__pyx_n_s_Recode); Py_VISIT(traverse_module_state->__pyx_kp_s_Recode_pyx); Py_VISIT(traverse_module_state->__pyx_n_s_Request); Py_VISIT(traverse_module_state->__pyx_n_s_Request___reduce_cython); Py_VISIT(traverse_module_state->__pyx_n_s_Request___setstate_cython); Py_VISIT(traverse_module_state->__pyx_n_s_Request_format_table); Py_VISIT(traverse_module_state->__pyx_n_s_Request_pair_sequence); Py_VISIT(traverse_module_state->__pyx_n_s_Request_scan); Py_VISIT(traverse_module_state->__pyx_n_s_Request_set_verbose); Py_VISIT(traverse_module_state->__pyx_n_s_Request_string); Py_VISIT(traverse_module_state->__pyx_n_s_SIZE_1); Py_VISIT(traverse_module_state->__pyx_n_s_SIZE_2); Py_VISIT(traverse_module_state->__pyx_n_s_SIZE_4); Py_VISIT(traverse_module_state->__pyx_n_s_SIZE_N); Py_VISIT(traverse_module_state->__pyx_n_s_STRICT_MAPPING_FLAG); Py_VISIT(traverse_module_state->__pyx_n_s_STRING_TO_UCS2); Py_VISIT(traverse_module_state->__pyx_n_s_STRIP_DATA); Py_VISIT(traverse_module_state->__pyx_n_s_STRIP_SIZE); Py_VISIT(traverse_module_state->__pyx_n_s_SWAP_NO); Py_VISIT(traverse_module_state->__pyx_n_s_SWAP_UNDECIDED); Py_VISIT(traverse_module_state->__pyx_n_s_SWAP_YES); Py_VISIT(traverse_module_state->__pyx_n_s_SYMBOL_CREATE_CHARSET); Py_VISIT(traverse_module_state->__pyx_n_s_SYMBOL_CREATE_DATA_SURFACE); Py_VISIT(traverse_module_state->__pyx_n_s_SYSTEM_ERROR); Py_VISIT(traverse_module_state->__pyx_n_s_Task); Py_VISIT(traverse_module_state->__pyx_n_s_Task___reduce_cython); Py_VISIT(traverse_module_state->__pyx_n_s_Task___setstate_cython); Py_VISIT(traverse_module_state->__pyx_n_s_Task_get_error); Py_VISIT(traverse_module_state->__pyx_n_s_Task_get_output); Py_VISIT(traverse_module_state->__pyx_n_s_Task_perform); Py_VISIT(traverse_module_state->__pyx_n_s_Task_set_abort_level); Py_VISIT(traverse_module_state->__pyx_n_s_Task_set_byte_order_mark); Py_VISIT(traverse_module_state->__pyx_n_s_Task_set_fail_level); Py_VISIT(traverse_module_state->__pyx_n_s_Task_set_input); Py_VISIT(traverse_module_state->__pyx_n_s_TypeError); Py_VISIT(traverse_module_state->__pyx_n_s_UCS2_TO_BYTE); Py_VISIT(traverse_module_state->__pyx_n_s_UCS2_TO_STRING); Py_VISIT(traverse_module_state->__pyx_n_s_UNTRANSLATABLE); Py_VISIT(traverse_module_state->__pyx_n_s_USER_ERROR); Py_VISIT(traverse_module_state->__pyx_n_s__41); Py_VISIT(traverse_module_state->__pyx_n_s_abort_level); Py_VISIT(traverse_module_state->__pyx_n_s_all_charsets); Py_VISIT(traverse_module_state->__pyx_n_s_all_surfaces); Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines); Py_VISIT(traverse_module_state->__pyx_n_s_auto_abort); Py_VISIT(traverse_module_state->__pyx_n_s_charset); Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback); Py_VISIT(traverse_module_state->__pyx_n_s_command); Py_VISIT(traverse_module_state->__pyx_n_s_concise_charset); Py_VISIT(traverse_module_state->__pyx_n_s_counter); Py_VISIT(traverse_module_state->__pyx_n_s_default_charset); Py_VISIT(traverse_module_state->__pyx_n_s_dict); Py_VISIT(traverse_module_state->__pyx_kp_u_disable); Py_VISIT(traverse_module_state->__pyx_n_s_doc); Py_VISIT(traverse_module_state->__pyx_kp_u_enable); Py_VISIT(traverse_module_state->__pyx_n_s_error); Py_VISIT(traverse_module_state->__pyx_n_s_fail_level); Py_VISIT(traverse_module_state->__pyx_n_s_flag); Py_VISIT(traverse_module_state->__pyx_n_s_format); Py_VISIT(traverse_module_state->__pyx_n_s_format_table); Py_VISIT(traverse_module_state->__pyx_n_s_full_charset); Py_VISIT(traverse_module_state->__pyx_kp_u_gc); Py_VISIT(traverse_module_state->__pyx_n_s_get_error); Py_VISIT(traverse_module_state->__pyx_n_s_get_output); Py_VISIT(traverse_module_state->__pyx_n_s_getstate); Py_VISIT(traverse_module_state->__pyx_n_s_iconv); Py_VISIT(traverse_module_state->__pyx_n_s_init_subclass); Py_VISIT(traverse_module_state->__pyx_n_s_input); Py_VISIT(traverse_module_state->__pyx_n_s_input_len); Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine); Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled); Py_VISIT(traverse_module_state->__pyx_n_s_language); Py_VISIT(traverse_module_state->__pyx_n_s_list); Py_VISIT(traverse_module_state->__pyx_n_s_main); Py_VISIT(traverse_module_state->__pyx_n_s_metaclass); Py_VISIT(traverse_module_state->__pyx_n_s_module); Py_VISIT(traverse_module_state->__pyx_n_s_mro_entries); Py_VISIT(traverse_module_state->__pyx_n_s_name); Py_VISIT(traverse_module_state->__pyx_n_s_ok); Py_VISIT(traverse_module_state->__pyx_n_s_outer); Py_VISIT(traverse_module_state->__pyx_n_s_output); Py_VISIT(traverse_module_state->__pyx_n_s_output_allocated); Py_VISIT(traverse_module_state->__pyx_n_s_output_len); Py_VISIT(traverse_module_state->__pyx_n_s_pair_sequence); Py_VISIT(traverse_module_state->__pyx_n_s_perform); Py_VISIT(traverse_module_state->__pyx_n_s_prepare); Py_VISIT(traverse_module_state->__pyx_n_s_previous); Py_VISIT(traverse_module_state->__pyx_n_s_py_string); Py_VISIT(traverse_module_state->__pyx_n_s_pyx_state); Py_VISIT(traverse_module_state->__pyx_n_s_qualname); Py_VISIT(traverse_module_state->__pyx_n_s_recode); Py_VISIT(traverse_module_state->__pyx_n_s_reduce); Py_VISIT(traverse_module_state->__pyx_n_s_reduce_cython); Py_VISIT(traverse_module_state->__pyx_n_s_reduce_ex); Py_VISIT(traverse_module_state->__pyx_n_s_request); Py_VISIT(traverse_module_state->__pyx_n_s_result); Py_VISIT(traverse_module_state->__pyx_n_s_saved); Py_VISIT(traverse_module_state->__pyx_n_s_scan); Py_VISIT(traverse_module_state->__pyx_n_s_self); Py_VISIT(traverse_module_state->__pyx_kp_s_self_outer_cannot_be_converted_t); Py_VISIT(traverse_module_state->__pyx_kp_s_self_request_cannot_be_converted); Py_VISIT(traverse_module_state->__pyx_kp_s_self_task_cannot_be_converted_to); Py_VISIT(traverse_module_state->__pyx_n_s_set_abort_level); Py_VISIT(traverse_module_state->__pyx_n_s_set_byte_order_mark); Py_VISIT(traverse_module_state->__pyx_n_s_set_fail_level); Py_VISIT(traverse_module_state->__pyx_n_s_set_input); Py_VISIT(traverse_module_state->__pyx_n_s_set_name); Py_VISIT(traverse_module_state->__pyx_n_s_set_verbose); Py_VISIT(traverse_module_state->__pyx_n_s_setstate); Py_VISIT(traverse_module_state->__pyx_n_s_setstate_cython); Py_VISIT(traverse_module_state->__pyx_n_s_step); Py_VISIT(traverse_module_state->__pyx_n_s_strict); Py_VISIT(traverse_module_state->__pyx_n_s_string); Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource); Py_VISIT(traverse_module_state->__pyx_n_s_super); Py_VISIT(traverse_module_state->__pyx_n_s_symbol); Py_VISIT(traverse_module_state->__pyx_n_s_test); Py_VISIT(traverse_module_state->__pyx_n_s_text); Py_VISIT(traverse_module_state->__pyx_n_s_verbose); Py_VISIT(traverse_module_state->__pyx_n_s_xDONE); Py_VISIT(traverse_module_state->__pyx_n_s_xELSE); Py_VISIT(traverse_module_state->__pyx_k_); Py_VISIT(traverse_module_state->__pyx_tuple__2); Py_VISIT(traverse_module_state->__pyx_tuple__4); Py_VISIT(traverse_module_state->__pyx_tuple__7); Py_VISIT(traverse_module_state->__pyx_tuple__9); Py_VISIT(traverse_module_state->__pyx_tuple__11); Py_VISIT(traverse_module_state->__pyx_tuple__13); Py_VISIT(traverse_module_state->__pyx_tuple__15); Py_VISIT(traverse_module_state->__pyx_tuple__17); Py_VISIT(traverse_module_state->__pyx_tuple__19); Py_VISIT(traverse_module_state->__pyx_tuple__21); Py_VISIT(traverse_module_state->__pyx_tuple__23); Py_VISIT(traverse_module_state->__pyx_tuple__25); Py_VISIT(traverse_module_state->__pyx_tuple__31); Py_VISIT(traverse_module_state->__pyx_tuple__33); Py_VISIT(traverse_module_state->__pyx_tuple__35); Py_VISIT(traverse_module_state->__pyx_codeobj__3); Py_VISIT(traverse_module_state->__pyx_codeobj__5); Py_VISIT(traverse_module_state->__pyx_codeobj__6); Py_VISIT(traverse_module_state->__pyx_codeobj__8); Py_VISIT(traverse_module_state->__pyx_codeobj__10); Py_VISIT(traverse_module_state->__pyx_codeobj__12); Py_VISIT(traverse_module_state->__pyx_codeobj__14); Py_VISIT(traverse_module_state->__pyx_codeobj__16); Py_VISIT(traverse_module_state->__pyx_codeobj__18); Py_VISIT(traverse_module_state->__pyx_codeobj__20); Py_VISIT(traverse_module_state->__pyx_codeobj__22); Py_VISIT(traverse_module_state->__pyx_codeobj__24); Py_VISIT(traverse_module_state->__pyx_codeobj__26); Py_VISIT(traverse_module_state->__pyx_codeobj__27); Py_VISIT(traverse_module_state->__pyx_codeobj__28); Py_VISIT(traverse_module_state->__pyx_codeobj__29); Py_VISIT(traverse_module_state->__pyx_codeobj__30); Py_VISIT(traverse_module_state->__pyx_codeobj__32); Py_VISIT(traverse_module_state->__pyx_codeobj__34); Py_VISIT(traverse_module_state->__pyx_codeobj__36); Py_VISIT(traverse_module_state->__pyx_codeobj__37); Py_VISIT(traverse_module_state->__pyx_codeobj__38); Py_VISIT(traverse_module_state->__pyx_codeobj__39); Py_VISIT(traverse_module_state->__pyx_codeobj__40); return 0; } #endif /* #### Code section: module_state_defines ### */ #define __pyx_d __pyx_mstate_global->__pyx_d #define __pyx_b __pyx_mstate_global->__pyx_b #define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime #define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple #define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes #define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode #ifdef __Pyx_CyFunction_USED #define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType #endif #ifdef __Pyx_FusedFunction_USED #define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType #endif #ifdef __Pyx_Generator_USED #define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType #endif #ifdef __Pyx_IterableCoroutine_USED #define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType #endif #ifdef __Pyx_Coroutine_USED #define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType #endif #ifdef __Pyx_Coroutine_USED #define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #endif #if CYTHON_USE_MODULE_STATE #define __pyx_type_6Recode_Outer __pyx_mstate_global->__pyx_type_6Recode_Outer #define __pyx_type_6Recode_Request __pyx_mstate_global->__pyx_type_6Recode_Request #define __pyx_type_6Recode_Task __pyx_mstate_global->__pyx_type_6Recode_Task #endif #define __pyx_ptype_6Recode_Outer __pyx_mstate_global->__pyx_ptype_6Recode_Outer #define __pyx_ptype_6Recode_Request __pyx_mstate_global->__pyx_ptype_6Recode_Request #define __pyx_ptype_6Recode_Task __pyx_mstate_global->__pyx_ptype_6Recode_Task #define __pyx_n_s_ALIAS_FIND_AS_CHARSET __pyx_mstate_global->__pyx_n_s_ALIAS_FIND_AS_CHARSET #define __pyx_n_s_ALIAS_FIND_AS_EITHER __pyx_mstate_global->__pyx_n_s_ALIAS_FIND_AS_EITHER #define __pyx_n_s_ALIAS_FIND_AS_SURFACE __pyx_mstate_global->__pyx_n_s_ALIAS_FIND_AS_SURFACE #define __pyx_n_s_AMBIGUOUS_OUTPUT __pyx_mstate_global->__pyx_n_s_AMBIGUOUS_OUTPUT #define __pyx_n_s_AUTO_ABORT_FLAG __pyx_mstate_global->__pyx_n_s_AUTO_ABORT_FLAG #define __pyx_n_s_BYTE_ORDER_MARK __pyx_mstate_global->__pyx_n_s_BYTE_ORDER_MARK #define __pyx_n_s_BYTE_ORDER_MARK_SWAPPED __pyx_mstate_global->__pyx_n_s_BYTE_ORDER_MARK_SWAPPED #define __pyx_n_s_BYTE_TO_BYTE __pyx_mstate_global->__pyx_n_s_BYTE_TO_BYTE #define __pyx_n_s_BYTE_TO_STRING __pyx_mstate_global->__pyx_n_s_BYTE_TO_STRING #define __pyx_n_s_CHARSET __pyx_mstate_global->__pyx_n_s_CHARSET #define __pyx_n_s_COMBINE_EXPLODE __pyx_mstate_global->__pyx_n_s_COMBINE_EXPLODE #define __pyx_n_s_COMBINE_STEP __pyx_mstate_global->__pyx_n_s_COMBINE_STEP #define __pyx_n_s_DATA_SURFACE __pyx_mstate_global->__pyx_n_s_DATA_SURFACE #define __pyx_n_s_DECIMAL_FORMAT __pyx_mstate_global->__pyx_n_s_DECIMAL_FORMAT #define __pyx_n_s_EXPLODE_DATA __pyx_mstate_global->__pyx_n_s_EXPLODE_DATA #define __pyx_n_s_EXPLODE_STEP __pyx_mstate_global->__pyx_n_s_EXPLODE_STEP #define __pyx_n_s_FULL_FORMAT __pyx_mstate_global->__pyx_n_s_FULL_FORMAT #define __pyx_n_s_HEXADECIMAL_FORMAT __pyx_mstate_global->__pyx_n_s_HEXADECIMAL_FORMAT #define __pyx_n_s_INTERNAL_ERROR __pyx_mstate_global->__pyx_n_s_INTERNAL_ERROR #define __pyx_n_s_INVALID_INPUT __pyx_mstate_global->__pyx_n_s_INVALID_INPUT #define __pyx_n_s_LANGUAGE_C __pyx_mstate_global->__pyx_n_s_LANGUAGE_C #define __pyx_n_s_LANGUAGE_PERL __pyx_mstate_global->__pyx_n_s_LANGUAGE_PERL #define __pyx_n_s_MAXIMUM_ERROR __pyx_mstate_global->__pyx_n_s_MAXIMUM_ERROR #define __pyx_n_s_NOT_A_CHARACTER __pyx_mstate_global->__pyx_n_s_NOT_A_CHARACTER #define __pyx_n_s_NOT_CANONICAL __pyx_mstate_global->__pyx_n_s_NOT_CANONICAL #define __pyx_n_s_NO_CHARSET_DATA __pyx_mstate_global->__pyx_n_s_NO_CHARSET_DATA #define __pyx_n_s_NO_ERROR __pyx_mstate_global->__pyx_n_s_NO_ERROR #define __pyx_n_s_NO_FORMAT __pyx_mstate_global->__pyx_n_s_NO_FORMAT #define __pyx_n_s_NO_ICONV_FLAG __pyx_mstate_global->__pyx_n_s_NO_ICONV_FLAG #define __pyx_n_s_NO_LANGUAGE __pyx_mstate_global->__pyx_n_s_NO_LANGUAGE #define __pyx_n_s_NO_STEP_TABLE __pyx_mstate_global->__pyx_n_s_NO_STEP_TABLE #define __pyx_n_s_NO_SYMBOL_TYPE __pyx_mstate_global->__pyx_n_s_NO_SYMBOL_TYPE #define __pyx_n_s_NUL __pyx_mstate_global->__pyx_n_s_NUL #define __pyx_n_s_OCTAL_FORMAT __pyx_mstate_global->__pyx_n_s_OCTAL_FORMAT #define __pyx_n_s_Outer __pyx_mstate_global->__pyx_n_s_Outer #define __pyx_n_s_Outer___reduce_cython __pyx_mstate_global->__pyx_n_s_Outer___reduce_cython #define __pyx_n_s_Outer___setstate_cython __pyx_mstate_global->__pyx_n_s_Outer___setstate_cython #define __pyx_n_s_Outer_all_charsets __pyx_mstate_global->__pyx_n_s_Outer_all_charsets #define __pyx_n_s_Outer_all_surfaces __pyx_mstate_global->__pyx_n_s_Outer_all_surfaces #define __pyx_n_s_Outer_concise_charset __pyx_mstate_global->__pyx_n_s_Outer_concise_charset #define __pyx_n_s_Outer_default_charset __pyx_mstate_global->__pyx_n_s_Outer_default_charset #define __pyx_n_s_Outer_full_charset __pyx_mstate_global->__pyx_n_s_Outer_full_charset #define __pyx_n_s_Outer_recode __pyx_mstate_global->__pyx_n_s_Outer_recode #define __pyx_n_s_REPLACEMENT_CHARACTER __pyx_mstate_global->__pyx_n_s_REPLACEMENT_CHARACTER #define __pyx_n_s_Recode __pyx_mstate_global->__pyx_n_s_Recode #define __pyx_kp_s_Recode_pyx __pyx_mstate_global->__pyx_kp_s_Recode_pyx #define __pyx_n_s_Request __pyx_mstate_global->__pyx_n_s_Request #define __pyx_n_s_Request___reduce_cython __pyx_mstate_global->__pyx_n_s_Request___reduce_cython #define __pyx_n_s_Request___setstate_cython __pyx_mstate_global->__pyx_n_s_Request___setstate_cython #define __pyx_n_s_Request_format_table __pyx_mstate_global->__pyx_n_s_Request_format_table #define __pyx_n_s_Request_pair_sequence __pyx_mstate_global->__pyx_n_s_Request_pair_sequence #define __pyx_n_s_Request_scan __pyx_mstate_global->__pyx_n_s_Request_scan #define __pyx_n_s_Request_set_verbose __pyx_mstate_global->__pyx_n_s_Request_set_verbose #define __pyx_n_s_Request_string __pyx_mstate_global->__pyx_n_s_Request_string #define __pyx_n_s_SIZE_1 __pyx_mstate_global->__pyx_n_s_SIZE_1 #define __pyx_n_s_SIZE_2 __pyx_mstate_global->__pyx_n_s_SIZE_2 #define __pyx_n_s_SIZE_4 __pyx_mstate_global->__pyx_n_s_SIZE_4 #define __pyx_n_s_SIZE_N __pyx_mstate_global->__pyx_n_s_SIZE_N #define __pyx_n_s_STRICT_MAPPING_FLAG __pyx_mstate_global->__pyx_n_s_STRICT_MAPPING_FLAG #define __pyx_n_s_STRING_TO_UCS2 __pyx_mstate_global->__pyx_n_s_STRING_TO_UCS2 #define __pyx_n_s_STRIP_DATA __pyx_mstate_global->__pyx_n_s_STRIP_DATA #define __pyx_n_s_STRIP_SIZE __pyx_mstate_global->__pyx_n_s_STRIP_SIZE #define __pyx_n_s_SWAP_NO __pyx_mstate_global->__pyx_n_s_SWAP_NO #define __pyx_n_s_SWAP_UNDECIDED __pyx_mstate_global->__pyx_n_s_SWAP_UNDECIDED #define __pyx_n_s_SWAP_YES __pyx_mstate_global->__pyx_n_s_SWAP_YES #define __pyx_n_s_SYMBOL_CREATE_CHARSET __pyx_mstate_global->__pyx_n_s_SYMBOL_CREATE_CHARSET #define __pyx_n_s_SYMBOL_CREATE_DATA_SURFACE __pyx_mstate_global->__pyx_n_s_SYMBOL_CREATE_DATA_SURFACE #define __pyx_n_s_SYSTEM_ERROR __pyx_mstate_global->__pyx_n_s_SYSTEM_ERROR #define __pyx_n_s_Task __pyx_mstate_global->__pyx_n_s_Task #define __pyx_n_s_Task___reduce_cython __pyx_mstate_global->__pyx_n_s_Task___reduce_cython #define __pyx_n_s_Task___setstate_cython __pyx_mstate_global->__pyx_n_s_Task___setstate_cython #define __pyx_n_s_Task_get_error __pyx_mstate_global->__pyx_n_s_Task_get_error #define __pyx_n_s_Task_get_output __pyx_mstate_global->__pyx_n_s_Task_get_output #define __pyx_n_s_Task_perform __pyx_mstate_global->__pyx_n_s_Task_perform #define __pyx_n_s_Task_set_abort_level __pyx_mstate_global->__pyx_n_s_Task_set_abort_level #define __pyx_n_s_Task_set_byte_order_mark __pyx_mstate_global->__pyx_n_s_Task_set_byte_order_mark #define __pyx_n_s_Task_set_fail_level __pyx_mstate_global->__pyx_n_s_Task_set_fail_level #define __pyx_n_s_Task_set_input __pyx_mstate_global->__pyx_n_s_Task_set_input #define __pyx_n_s_TypeError __pyx_mstate_global->__pyx_n_s_TypeError #define __pyx_n_s_UCS2_TO_BYTE __pyx_mstate_global->__pyx_n_s_UCS2_TO_BYTE #define __pyx_n_s_UCS2_TO_STRING __pyx_mstate_global->__pyx_n_s_UCS2_TO_STRING #define __pyx_n_s_UNTRANSLATABLE __pyx_mstate_global->__pyx_n_s_UNTRANSLATABLE #define __pyx_n_s_USER_ERROR __pyx_mstate_global->__pyx_n_s_USER_ERROR #define __pyx_n_s__41 __pyx_mstate_global->__pyx_n_s__41 #define __pyx_n_s_abort_level __pyx_mstate_global->__pyx_n_s_abort_level #define __pyx_n_s_all_charsets __pyx_mstate_global->__pyx_n_s_all_charsets #define __pyx_n_s_all_surfaces __pyx_mstate_global->__pyx_n_s_all_surfaces #define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines #define __pyx_n_s_auto_abort __pyx_mstate_global->__pyx_n_s_auto_abort #define __pyx_n_s_charset __pyx_mstate_global->__pyx_n_s_charset #define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback #define __pyx_n_s_command __pyx_mstate_global->__pyx_n_s_command #define __pyx_n_s_concise_charset __pyx_mstate_global->__pyx_n_s_concise_charset #define __pyx_n_s_counter __pyx_mstate_global->__pyx_n_s_counter #define __pyx_n_s_default_charset __pyx_mstate_global->__pyx_n_s_default_charset #define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict #define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable #define __pyx_n_s_doc __pyx_mstate_global->__pyx_n_s_doc #define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable #define __pyx_n_s_error __pyx_mstate_global->__pyx_n_s_error #define __pyx_n_s_fail_level __pyx_mstate_global->__pyx_n_s_fail_level #define __pyx_n_s_flag __pyx_mstate_global->__pyx_n_s_flag #define __pyx_n_s_format __pyx_mstate_global->__pyx_n_s_format #define __pyx_n_s_format_table __pyx_mstate_global->__pyx_n_s_format_table #define __pyx_n_s_full_charset __pyx_mstate_global->__pyx_n_s_full_charset #define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc #define __pyx_n_s_get_error __pyx_mstate_global->__pyx_n_s_get_error #define __pyx_n_s_get_output __pyx_mstate_global->__pyx_n_s_get_output #define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate #define __pyx_n_s_iconv __pyx_mstate_global->__pyx_n_s_iconv #define __pyx_n_s_init_subclass __pyx_mstate_global->__pyx_n_s_init_subclass #define __pyx_n_s_input __pyx_mstate_global->__pyx_n_s_input #define __pyx_n_s_input_len __pyx_mstate_global->__pyx_n_s_input_len #define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine #define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled #define __pyx_n_s_language __pyx_mstate_global->__pyx_n_s_language #define __pyx_n_s_list __pyx_mstate_global->__pyx_n_s_list #define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main #define __pyx_n_s_metaclass __pyx_mstate_global->__pyx_n_s_metaclass #define __pyx_n_s_module __pyx_mstate_global->__pyx_n_s_module #define __pyx_n_s_mro_entries __pyx_mstate_global->__pyx_n_s_mro_entries #define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name #define __pyx_n_s_ok __pyx_mstate_global->__pyx_n_s_ok #define __pyx_n_s_outer __pyx_mstate_global->__pyx_n_s_outer #define __pyx_n_s_output __pyx_mstate_global->__pyx_n_s_output #define __pyx_n_s_output_allocated __pyx_mstate_global->__pyx_n_s_output_allocated #define __pyx_n_s_output_len __pyx_mstate_global->__pyx_n_s_output_len #define __pyx_n_s_pair_sequence __pyx_mstate_global->__pyx_n_s_pair_sequence #define __pyx_n_s_perform __pyx_mstate_global->__pyx_n_s_perform #define __pyx_n_s_prepare __pyx_mstate_global->__pyx_n_s_prepare #define __pyx_n_s_previous __pyx_mstate_global->__pyx_n_s_previous #define __pyx_n_s_py_string __pyx_mstate_global->__pyx_n_s_py_string #define __pyx_n_s_pyx_state __pyx_mstate_global->__pyx_n_s_pyx_state #define __pyx_n_s_qualname __pyx_mstate_global->__pyx_n_s_qualname #define __pyx_n_s_recode __pyx_mstate_global->__pyx_n_s_recode #define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce #define __pyx_n_s_reduce_cython __pyx_mstate_global->__pyx_n_s_reduce_cython #define __pyx_n_s_reduce_ex __pyx_mstate_global->__pyx_n_s_reduce_ex #define __pyx_n_s_request __pyx_mstate_global->__pyx_n_s_request #define __pyx_n_s_result __pyx_mstate_global->__pyx_n_s_result #define __pyx_n_s_saved __pyx_mstate_global->__pyx_n_s_saved #define __pyx_n_s_scan __pyx_mstate_global->__pyx_n_s_scan #define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self #define __pyx_kp_s_self_outer_cannot_be_converted_t __pyx_mstate_global->__pyx_kp_s_self_outer_cannot_be_converted_t #define __pyx_kp_s_self_request_cannot_be_converted __pyx_mstate_global->__pyx_kp_s_self_request_cannot_be_converted #define __pyx_kp_s_self_task_cannot_be_converted_to __pyx_mstate_global->__pyx_kp_s_self_task_cannot_be_converted_to #define __pyx_n_s_set_abort_level __pyx_mstate_global->__pyx_n_s_set_abort_level #define __pyx_n_s_set_byte_order_mark __pyx_mstate_global->__pyx_n_s_set_byte_order_mark #define __pyx_n_s_set_fail_level __pyx_mstate_global->__pyx_n_s_set_fail_level #define __pyx_n_s_set_input __pyx_mstate_global->__pyx_n_s_set_input #define __pyx_n_s_set_name __pyx_mstate_global->__pyx_n_s_set_name #define __pyx_n_s_set_verbose __pyx_mstate_global->__pyx_n_s_set_verbose #define __pyx_n_s_setstate __pyx_mstate_global->__pyx_n_s_setstate #define __pyx_n_s_setstate_cython __pyx_mstate_global->__pyx_n_s_setstate_cython #define __pyx_n_s_step __pyx_mstate_global->__pyx_n_s_step #define __pyx_n_s_strict __pyx_mstate_global->__pyx_n_s_strict #define __pyx_n_s_string __pyx_mstate_global->__pyx_n_s_string #define __pyx_kp_s_stringsource __pyx_mstate_global->__pyx_kp_s_stringsource #define __pyx_n_s_super __pyx_mstate_global->__pyx_n_s_super #define __pyx_n_s_symbol __pyx_mstate_global->__pyx_n_s_symbol #define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test #define __pyx_n_s_text __pyx_mstate_global->__pyx_n_s_text #define __pyx_n_s_verbose __pyx_mstate_global->__pyx_n_s_verbose #define __pyx_n_s_xDONE __pyx_mstate_global->__pyx_n_s_xDONE #define __pyx_n_s_xELSE __pyx_mstate_global->__pyx_n_s_xELSE #define __pyx_k_ __pyx_mstate_global->__pyx_k_ #define __pyx_tuple__2 __pyx_mstate_global->__pyx_tuple__2 #define __pyx_tuple__4 __pyx_mstate_global->__pyx_tuple__4 #define __pyx_tuple__7 __pyx_mstate_global->__pyx_tuple__7 #define __pyx_tuple__9 __pyx_mstate_global->__pyx_tuple__9 #define __pyx_tuple__11 __pyx_mstate_global->__pyx_tuple__11 #define __pyx_tuple__13 __pyx_mstate_global->__pyx_tuple__13 #define __pyx_tuple__15 __pyx_mstate_global->__pyx_tuple__15 #define __pyx_tuple__17 __pyx_mstate_global->__pyx_tuple__17 #define __pyx_tuple__19 __pyx_mstate_global->__pyx_tuple__19 #define __pyx_tuple__21 __pyx_mstate_global->__pyx_tuple__21 #define __pyx_tuple__23 __pyx_mstate_global->__pyx_tuple__23 #define __pyx_tuple__25 __pyx_mstate_global->__pyx_tuple__25 #define __pyx_tuple__31 __pyx_mstate_global->__pyx_tuple__31 #define __pyx_tuple__33 __pyx_mstate_global->__pyx_tuple__33 #define __pyx_tuple__35 __pyx_mstate_global->__pyx_tuple__35 #define __pyx_codeobj__3 __pyx_mstate_global->__pyx_codeobj__3 #define __pyx_codeobj__5 __pyx_mstate_global->__pyx_codeobj__5 #define __pyx_codeobj__6 __pyx_mstate_global->__pyx_codeobj__6 #define __pyx_codeobj__8 __pyx_mstate_global->__pyx_codeobj__8 #define __pyx_codeobj__10 __pyx_mstate_global->__pyx_codeobj__10 #define __pyx_codeobj__12 __pyx_mstate_global->__pyx_codeobj__12 #define __pyx_codeobj__14 __pyx_mstate_global->__pyx_codeobj__14 #define __pyx_codeobj__16 __pyx_mstate_global->__pyx_codeobj__16 #define __pyx_codeobj__18 __pyx_mstate_global->__pyx_codeobj__18 #define __pyx_codeobj__20 __pyx_mstate_global->__pyx_codeobj__20 #define __pyx_codeobj__22 __pyx_mstate_global->__pyx_codeobj__22 #define __pyx_codeobj__24 __pyx_mstate_global->__pyx_codeobj__24 #define __pyx_codeobj__26 __pyx_mstate_global->__pyx_codeobj__26 #define __pyx_codeobj__27 __pyx_mstate_global->__pyx_codeobj__27 #define __pyx_codeobj__28 __pyx_mstate_global->__pyx_codeobj__28 #define __pyx_codeobj__29 __pyx_mstate_global->__pyx_codeobj__29 #define __pyx_codeobj__30 __pyx_mstate_global->__pyx_codeobj__30 #define __pyx_codeobj__32 __pyx_mstate_global->__pyx_codeobj__32 #define __pyx_codeobj__34 __pyx_mstate_global->__pyx_codeobj__34 #define __pyx_codeobj__36 __pyx_mstate_global->__pyx_codeobj__36 #define __pyx_codeobj__37 __pyx_mstate_global->__pyx_codeobj__37 #define __pyx_codeobj__38 __pyx_mstate_global->__pyx_codeobj__38 #define __pyx_codeobj__39 __pyx_mstate_global->__pyx_codeobj__39 #define __pyx_codeobj__40 __pyx_mstate_global->__pyx_codeobj__40 /* #### Code section: module_code ### */ /* "Recode.pyx":525 * cdef RECODE_OUTER outer * * def __init__(self, auto_abort=False, iconv=False, strict=False): # <<<<<<<<<<<<<< * cdef int flags * cdef RECODE_SINGLE single */ /* Python wrapper */ static int __pyx_pw_6Recode_5Outer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_6Recode_5Outer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_auto_abort = 0; PyObject *__pyx_v_iconv = 0; PyObject *__pyx_v_strict = 0; CYTHON_UNUSED Py_ssize_t __pyx_nargs; CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[3] = {0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; #endif __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_auto_abort,&__pyx_n_s_iconv,&__pyx_n_s_strict,0}; values[0] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False)); values[1] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False)); values[2] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False)); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); switch (__pyx_nargs) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_auto_abort); if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 525, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_iconv); if (value) { values[1] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 525, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_strict); if (value) { values[2] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 525, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(1, 525, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_auto_abort = values[0]; __pyx_v_iconv = values[1]; __pyx_v_strict = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, __pyx_nargs); __PYX_ERR(1, 525, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Outer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6Recode_5Outer___init__(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self), __pyx_v_auto_abort, __pyx_v_iconv, __pyx_v_strict); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_6Recode_5Outer___init__(struct __pyx_obj_6Recode_Outer *__pyx_v_self, PyObject *__pyx_v_auto_abort, PyObject *__pyx_v_iconv, PyObject *__pyx_v_strict) { int __pyx_v_flags; RECODE_SINGLE __pyx_v_single; int __pyx_r; int __pyx_t_1; int __pyx_t_2; struct recode_single *__pyx_t_3; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* "Recode.pyx":528 * cdef int flags * cdef RECODE_SINGLE single * flags = 0 # <<<<<<<<<<<<<< * if auto_abort: * flags = flags | RECODE_AUTO_ABORT_FLAG */ __pyx_v_flags = 0; /* "Recode.pyx":529 * cdef RECODE_SINGLE single * flags = 0 * if auto_abort: # <<<<<<<<<<<<<< * flags = flags | RECODE_AUTO_ABORT_FLAG * if not iconv: */ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_auto_abort); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 529, __pyx_L1_error) if (__pyx_t_1) { /* "Recode.pyx":530 * flags = 0 * if auto_abort: * flags = flags | RECODE_AUTO_ABORT_FLAG # <<<<<<<<<<<<<< * if not iconv: * flags = flags | RECODE_NO_ICONV_FLAG */ __pyx_v_flags = (__pyx_v_flags | RECODE_AUTO_ABORT_FLAG); /* "Recode.pyx":529 * cdef RECODE_SINGLE single * flags = 0 * if auto_abort: # <<<<<<<<<<<<<< * flags = flags | RECODE_AUTO_ABORT_FLAG * if not iconv: */ } /* "Recode.pyx":531 * if auto_abort: * flags = flags | RECODE_AUTO_ABORT_FLAG * if not iconv: # <<<<<<<<<<<<<< * flags = flags | RECODE_NO_ICONV_FLAG * if strict: */ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_iconv); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 531, __pyx_L1_error) __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { /* "Recode.pyx":532 * flags = flags | RECODE_AUTO_ABORT_FLAG * if not iconv: * flags = flags | RECODE_NO_ICONV_FLAG # <<<<<<<<<<<<<< * if strict: * flags = flags | RECODE_STRICT_MAPPING_FLAG */ __pyx_v_flags = (__pyx_v_flags | RECODE_NO_ICONV_FLAG); /* "Recode.pyx":531 * if auto_abort: * flags = flags | RECODE_AUTO_ABORT_FLAG * if not iconv: # <<<<<<<<<<<<<< * flags = flags | RECODE_NO_ICONV_FLAG * if strict: */ } /* "Recode.pyx":533 * if not iconv: * flags = flags | RECODE_NO_ICONV_FLAG * if strict: # <<<<<<<<<<<<<< * flags = flags | RECODE_STRICT_MAPPING_FLAG * self.outer = recode_new_outer(flags) */ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_strict); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 533, __pyx_L1_error) if (__pyx_t_2) { /* "Recode.pyx":534 * flags = flags | RECODE_NO_ICONV_FLAG * if strict: * flags = flags | RECODE_STRICT_MAPPING_FLAG # <<<<<<<<<<<<<< * self.outer = recode_new_outer(flags) * if strict: */ __pyx_v_flags = (__pyx_v_flags | RECODE_STRICT_MAPPING_FLAG); /* "Recode.pyx":533 * if not iconv: * flags = flags | RECODE_NO_ICONV_FLAG * if strict: # <<<<<<<<<<<<<< * flags = flags | RECODE_STRICT_MAPPING_FLAG * self.outer = recode_new_outer(flags) */ } /* "Recode.pyx":535 * if strict: * flags = flags | RECODE_STRICT_MAPPING_FLAG * self.outer = recode_new_outer(flags) # <<<<<<<<<<<<<< * if strict: * single = self.outer.single_list */ __pyx_v_self->outer = recode_new_outer(__pyx_v_flags); /* "Recode.pyx":536 * flags = flags | RECODE_STRICT_MAPPING_FLAG * self.outer = recode_new_outer(flags) * if strict: # <<<<<<<<<<<<<< * single = self.outer.single_list * while single is not NULL: */ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_strict); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 536, __pyx_L1_error) if (__pyx_t_2) { /* "Recode.pyx":537 * self.outer = recode_new_outer(flags) * if strict: * single = self.outer.single_list # <<<<<<<<<<<<<< * while single is not NULL: * single.fallback_routine = NULL */ __pyx_t_3 = __pyx_v_self->outer->single_list; __pyx_v_single = __pyx_t_3; /* "Recode.pyx":538 * if strict: * single = self.outer.single_list * while single is not NULL: # <<<<<<<<<<<<<< * single.fallback_routine = NULL * single = single.next */ while (1) { __pyx_t_2 = (__pyx_v_single != NULL); if (!__pyx_t_2) break; /* "Recode.pyx":539 * single = self.outer.single_list * while single is not NULL: * single.fallback_routine = NULL # <<<<<<<<<<<<<< * single = single.next * */ __pyx_v_single->fallback_routine = NULL; /* "Recode.pyx":540 * while single is not NULL: * single.fallback_routine = NULL * single = single.next # <<<<<<<<<<<<<< * * def __dealloc__(self): */ __pyx_t_3 = __pyx_v_single->next; __pyx_v_single = __pyx_t_3; } /* "Recode.pyx":536 * flags = flags | RECODE_STRICT_MAPPING_FLAG * self.outer = recode_new_outer(flags) * if strict: # <<<<<<<<<<<<<< * single = self.outer.single_list * while single is not NULL: */ } /* "Recode.pyx":525 * cdef RECODE_OUTER outer * * def __init__(self, auto_abort=False, iconv=False, strict=False): # <<<<<<<<<<<<<< * cdef int flags * cdef RECODE_SINGLE single */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("Recode.Outer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } /* "Recode.pyx":542 * single = single.next * * def __dealloc__(self): # <<<<<<<<<<<<<< * recode_delete_outer(self.outer) * */ /* Python wrapper */ static void __pyx_pw_6Recode_5Outer_3__dealloc__(PyObject *__pyx_v_self); /*proto*/ static void __pyx_pw_6Recode_5Outer_3__dealloc__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_pf_6Recode_5Outer_2__dealloc__(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); } static void __pyx_pf_6Recode_5Outer_2__dealloc__(struct __pyx_obj_6Recode_Outer *__pyx_v_self) { /* "Recode.pyx":543 * * def __dealloc__(self): * recode_delete_outer(self.outer) # <<<<<<<<<<<<<< * * def default_charset(self): */ (void)(recode_delete_outer(__pyx_v_self->outer)); /* "Recode.pyx":542 * single = single.next * * def __dealloc__(self): # <<<<<<<<<<<<<< * recode_delete_outer(self.outer) * */ /* function exit code */ } /* "Recode.pyx":545 * recode_delete_outer(self.outer) * * def default_charset(self): # <<<<<<<<<<<<<< * return locale_charset() * */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_5Outer_5default_charset(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_5Outer_5default_charset = {"default_charset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_5default_charset, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_5Outer_5default_charset(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("default_charset (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("default_charset", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "default_charset", 0))) return NULL; __pyx_r = __pyx_pf_6Recode_5Outer_4default_charset(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_5Outer_4default_charset(CYTHON_UNUSED struct __pyx_obj_6Recode_Outer *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("default_charset", 1); /* "Recode.pyx":546 * * def default_charset(self): * return locale_charset() # <<<<<<<<<<<<<< * * def all_charsets(self): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyBytes_FromString(locale_charset()); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "Recode.pyx":545 * recode_delete_outer(self.outer) * * def default_charset(self): # <<<<<<<<<<<<<< * return locale_charset() * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("Recode.Outer.default_charset", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":548 * return locale_charset() * * def all_charsets(self): # <<<<<<<<<<<<<< * list = [] * cdef RECODE_SYMBOL symbol */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_5Outer_7all_charsets(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_5Outer_7all_charsets = {"all_charsets", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_7all_charsets, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_5Outer_7all_charsets(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("all_charsets (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("all_charsets", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "all_charsets", 0))) return NULL; __pyx_r = __pyx_pf_6Recode_5Outer_6all_charsets(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_5Outer_6all_charsets(struct __pyx_obj_6Recode_Outer *__pyx_v_self) { PyObject *__pyx_v_list = NULL; RECODE_SYMBOL __pyx_v_symbol; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; RECODE_SYMBOL __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; struct recode_symbol *__pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("all_charsets", 1); /* "Recode.pyx":549 * * def all_charsets(self): * list = [] # <<<<<<<<<<<<<< * cdef RECODE_SYMBOL symbol * symbol = self.outer.symbol_list */ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_list = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "Recode.pyx":551 * list = [] * cdef RECODE_SYMBOL symbol * symbol = self.outer.symbol_list # <<<<<<<<<<<<<< * while symbol is not NULL: * if (symbol.type == RECODE_CHARSET */ __pyx_t_2 = __pyx_v_self->outer->symbol_list; __pyx_v_symbol = __pyx_t_2; /* "Recode.pyx":552 * cdef RECODE_SYMBOL symbol * symbol = self.outer.symbol_list * while symbol is not NULL: # <<<<<<<<<<<<<< * if (symbol.type == RECODE_CHARSET * and symbol is not self.outer.iconv_pivot */ while (1) { __pyx_t_3 = (__pyx_v_symbol != NULL); if (!__pyx_t_3) break; /* "Recode.pyx":553 * symbol = self.outer.symbol_list * while symbol is not NULL: * if (symbol.type == RECODE_CHARSET # <<<<<<<<<<<<<< * and symbol is not self.outer.iconv_pivot * and symbol is not self.outer.data_symbol): */ __pyx_t_4 = (__pyx_v_symbol->type == RECODE_CHARSET); if (__pyx_t_4) { } else { __pyx_t_3 = __pyx_t_4; goto __pyx_L6_bool_binop_done; } /* "Recode.pyx":554 * while symbol is not NULL: * if (symbol.type == RECODE_CHARSET * and symbol is not self.outer.iconv_pivot # <<<<<<<<<<<<<< * and symbol is not self.outer.data_symbol): * list.append(symbol.name) */ __pyx_t_4 = (__pyx_v_symbol != __pyx_v_self->outer->iconv_pivot); if (__pyx_t_4) { } else { __pyx_t_3 = __pyx_t_4; goto __pyx_L6_bool_binop_done; } /* "Recode.pyx":555 * if (symbol.type == RECODE_CHARSET * and symbol is not self.outer.iconv_pivot * and symbol is not self.outer.data_symbol): # <<<<<<<<<<<<<< * list.append(symbol.name) * symbol = symbol.next */ __pyx_t_4 = (__pyx_v_symbol != __pyx_v_self->outer->data_symbol); __pyx_t_3 = __pyx_t_4; __pyx_L6_bool_binop_done:; /* "Recode.pyx":553 * symbol = self.outer.symbol_list * while symbol is not NULL: * if (symbol.type == RECODE_CHARSET # <<<<<<<<<<<<<< * and symbol is not self.outer.iconv_pivot * and symbol is not self.outer.data_symbol): */ if (__pyx_t_3) { /* "Recode.pyx":556 * and symbol is not self.outer.iconv_pivot * and symbol is not self.outer.data_symbol): * list.append(symbol.name) # <<<<<<<<<<<<<< * symbol = symbol.next * return list */ __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_symbol->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_list, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 556, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "Recode.pyx":553 * symbol = self.outer.symbol_list * while symbol is not NULL: * if (symbol.type == RECODE_CHARSET # <<<<<<<<<<<<<< * and symbol is not self.outer.iconv_pivot * and symbol is not self.outer.data_symbol): */ } /* "Recode.pyx":557 * and symbol is not self.outer.data_symbol): * list.append(symbol.name) * symbol = symbol.next # <<<<<<<<<<<<<< * return list * */ __pyx_t_6 = __pyx_v_symbol->next; __pyx_v_symbol = __pyx_t_6; } /* "Recode.pyx":558 * list.append(symbol.name) * symbol = symbol.next * return list # <<<<<<<<<<<<<< * * def all_surfaces(self): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_list); __pyx_r = __pyx_v_list; goto __pyx_L0; /* "Recode.pyx":548 * return locale_charset() * * def all_charsets(self): # <<<<<<<<<<<<<< * list = [] * cdef RECODE_SYMBOL symbol */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("Recode.Outer.all_charsets", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_list); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":560 * return list * * def all_surfaces(self): # <<<<<<<<<<<<<< * list = [] * cdef RECODE_SYMBOL symbol */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_5Outer_9all_surfaces(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_5Outer_9all_surfaces = {"all_surfaces", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_9all_surfaces, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_5Outer_9all_surfaces(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("all_surfaces (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("all_surfaces", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "all_surfaces", 0))) return NULL; __pyx_r = __pyx_pf_6Recode_5Outer_8all_surfaces(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_5Outer_8all_surfaces(struct __pyx_obj_6Recode_Outer *__pyx_v_self) { PyObject *__pyx_v_list = NULL; RECODE_SYMBOL __pyx_v_symbol; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; RECODE_SYMBOL __pyx_t_2; int __pyx_t_3; int __pyx_t_4; struct recode_symbol *__pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("all_surfaces", 1); /* "Recode.pyx":561 * * def all_surfaces(self): * list = [] # <<<<<<<<<<<<<< * cdef RECODE_SYMBOL symbol * symbol = self.outer.symbol_list */ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 561, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_list = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "Recode.pyx":563 * list = [] * cdef RECODE_SYMBOL symbol * symbol = self.outer.symbol_list # <<<<<<<<<<<<<< * while symbol is not NULL: * if symbol.type != RECODE_CHARSET: */ __pyx_t_2 = __pyx_v_self->outer->symbol_list; __pyx_v_symbol = __pyx_t_2; /* "Recode.pyx":564 * cdef RECODE_SYMBOL symbol * symbol = self.outer.symbol_list * while symbol is not NULL: # <<<<<<<<<<<<<< * if symbol.type != RECODE_CHARSET: * list.append(symbol.name) */ while (1) { __pyx_t_3 = (__pyx_v_symbol != NULL); if (!__pyx_t_3) break; /* "Recode.pyx":565 * symbol = self.outer.symbol_list * while symbol is not NULL: * if symbol.type != RECODE_CHARSET: # <<<<<<<<<<<<<< * list.append(symbol.name) * symbol = symbol.next */ __pyx_t_3 = (__pyx_v_symbol->type != RECODE_CHARSET); if (__pyx_t_3) { /* "Recode.pyx":566 * while symbol is not NULL: * if symbol.type != RECODE_CHARSET: * list.append(symbol.name) # <<<<<<<<<<<<<< * symbol = symbol.next * return list */ __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_symbol->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_list, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 566, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "Recode.pyx":565 * symbol = self.outer.symbol_list * while symbol is not NULL: * if symbol.type != RECODE_CHARSET: # <<<<<<<<<<<<<< * list.append(symbol.name) * symbol = symbol.next */ } /* "Recode.pyx":567 * if symbol.type != RECODE_CHARSET: * list.append(symbol.name) * symbol = symbol.next # <<<<<<<<<<<<<< * return list * */ __pyx_t_5 = __pyx_v_symbol->next; __pyx_v_symbol = __pyx_t_5; } /* "Recode.pyx":568 * list.append(symbol.name) * symbol = symbol.next * return list # <<<<<<<<<<<<<< * * def concise_charset(self, format=NO_FORMAT): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_list); __pyx_r = __pyx_v_list; goto __pyx_L0; /* "Recode.pyx":560 * return list * * def all_surfaces(self): # <<<<<<<<<<<<<< * list = [] * cdef RECODE_SYMBOL symbol */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("Recode.Outer.all_surfaces", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_list); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":570 * return list * * def concise_charset(self, format=NO_FORMAT): # <<<<<<<<<<<<<< * ok = recode_list_concise_charset(self.outer, NULL, format) * if not ok: */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_5Outer_11concise_charset(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_5Outer_11concise_charset = {"concise_charset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_11concise_charset, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_5Outer_11concise_charset(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_format = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("concise_charset (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_format,0}; values[0] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k_); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_format); if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 570, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "concise_charset") < 0)) __PYX_ERR(1, 570, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_format = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("concise_charset", 0, 0, 1, __pyx_nargs); __PYX_ERR(1, 570, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Outer.concise_charset", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6Recode_5Outer_10concise_charset(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self), __pyx_v_format); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_5Outer_10concise_charset(struct __pyx_obj_6Recode_Outer *__pyx_v_self, PyObject *__pyx_v_format) { bool __pyx_v_ok; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations enum recode_list_format __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("concise_charset", 1); /* "Recode.pyx":571 * * def concise_charset(self, format=NO_FORMAT): * ok = recode_list_concise_charset(self.outer, NULL, format) # <<<<<<<<<<<<<< * if not ok: * raise error */ __pyx_t_1 = ((enum recode_list_format)__Pyx_PyInt_As_enum__recode_list_format(__pyx_v_format)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 571, __pyx_L1_error) __pyx_v_ok = recode_list_concise_charset(__pyx_v_self->outer, NULL, __pyx_t_1); /* "Recode.pyx":572 * def concise_charset(self, format=NO_FORMAT): * ok = recode_list_concise_charset(self.outer, NULL, format) * if not ok: # <<<<<<<<<<<<<< * raise error * */ __pyx_t_2 = (!(__pyx_v_ok != 0)); if (unlikely(__pyx_t_2)) { /* "Recode.pyx":573 * ok = recode_list_concise_charset(self.outer, NULL, format) * if not ok: * raise error # <<<<<<<<<<<<<< * * def full_charset(self): */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 573, __pyx_L1_error) /* "Recode.pyx":572 * def concise_charset(self, format=NO_FORMAT): * ok = recode_list_concise_charset(self.outer, NULL, format) * if not ok: # <<<<<<<<<<<<<< * raise error * */ } /* "Recode.pyx":570 * return list * * def concise_charset(self, format=NO_FORMAT): # <<<<<<<<<<<<<< * ok = recode_list_concise_charset(self.outer, NULL, format) * if not ok: */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("Recode.Outer.concise_charset", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":575 * raise error * * def full_charset(self): # <<<<<<<<<<<<<< * ok = recode_list_full_charset(self.outer, NULL) * if not ok: */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_5Outer_13full_charset(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_5Outer_13full_charset = {"full_charset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_13full_charset, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_5Outer_13full_charset(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("full_charset (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("full_charset", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "full_charset", 0))) return NULL; __pyx_r = __pyx_pf_6Recode_5Outer_12full_charset(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_5Outer_12full_charset(struct __pyx_obj_6Recode_Outer *__pyx_v_self) { bool __pyx_v_ok; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("full_charset", 1); /* "Recode.pyx":576 * * def full_charset(self): * ok = recode_list_full_charset(self.outer, NULL) # <<<<<<<<<<<<<< * if not ok: * raise error */ __pyx_v_ok = recode_list_full_charset(__pyx_v_self->outer, NULL); /* "Recode.pyx":577 * def full_charset(self): * ok = recode_list_full_charset(self.outer, NULL) * if not ok: # <<<<<<<<<<<<<< * raise error * */ __pyx_t_1 = (!(__pyx_v_ok != 0)); if (unlikely(__pyx_t_1)) { /* "Recode.pyx":578 * ok = recode_list_full_charset(self.outer, NULL) * if not ok: * raise error # <<<<<<<<<<<<<< * * # Lazy, all in one call. */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 578, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(1, 578, __pyx_L1_error) /* "Recode.pyx":577 * def full_charset(self): * ok = recode_list_full_charset(self.outer, NULL) * if not ok: # <<<<<<<<<<<<<< * raise error * */ } /* "Recode.pyx":575 * raise error * * def full_charset(self): # <<<<<<<<<<<<<< * ok = recode_list_full_charset(self.outer, NULL) * if not ok: */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("Recode.Outer.full_charset", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":581 * * # Lazy, all in one call. * def recode(self, char *command, char *input, verbose=False): # <<<<<<<<<<<<<< * request = Request(self) * request.set_verbose(verbose) */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_5Outer_15recode(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_5Outer_15recode = {"recode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_15recode, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_5Outer_15recode(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { char *__pyx_v_command; char *__pyx_v_input; PyObject *__pyx_v_verbose = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[3] = {0,0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("recode (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_command,&__pyx_n_s_input,&__pyx_n_s_verbose,0}; values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False)); if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_command)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 581, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_input)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 581, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("recode", 0, 2, 3, 1); __PYX_ERR(1, 581, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_verbose); if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 581, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "recode") < 0)) __PYX_ERR(1, 581, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_command = __Pyx_PyObject_AsWritableString(values[0]); if (unlikely((!__pyx_v_command) && PyErr_Occurred())) __PYX_ERR(1, 581, __pyx_L3_error) __pyx_v_input = __Pyx_PyObject_AsWritableString(values[1]); if (unlikely((!__pyx_v_input) && PyErr_Occurred())) __PYX_ERR(1, 581, __pyx_L3_error) __pyx_v_verbose = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("recode", 0, 2, 3, __pyx_nargs); __PYX_ERR(1, 581, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Outer.recode", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6Recode_5Outer_14recode(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self), __pyx_v_command, __pyx_v_input, __pyx_v_verbose); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_5Outer_14recode(struct __pyx_obj_6Recode_Outer *__pyx_v_self, char *__pyx_v_command, char *__pyx_v_input, PyObject *__pyx_v_verbose) { struct __pyx_obj_6Recode_Request *__pyx_v_request = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("recode", 1); /* "Recode.pyx":582 * # Lazy, all in one call. * def recode(self, char *command, char *input, verbose=False): * request = Request(self) # <<<<<<<<<<<<<< * request.set_verbose(verbose) * request.scan(command) */ __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_6Recode_Request), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_request = ((struct __pyx_obj_6Recode_Request *)__pyx_t_1); __pyx_t_1 = 0; /* "Recode.pyx":583 * def recode(self, char *command, char *input, verbose=False): * request = Request(self) * request.set_verbose(verbose) # <<<<<<<<<<<<<< * request.scan(command) * return request.string(input) */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_request), __pyx_n_s_set_verbose); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_verbose}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "Recode.pyx":584 * request = Request(self) * request.set_verbose(verbose) * request.scan(command) # <<<<<<<<<<<<<< * return request.string(input) * */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_request), __pyx_n_s_scan); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_command); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "Recode.pyx":585 * request.set_verbose(verbose) * request.scan(command) * return request.string(input) # <<<<<<<<<<<<<< * * # Recode library at REQUEST level. */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_request), __pyx_n_s_string); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_input); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; __pyx_t_4 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "Recode.pyx":581 * * # Lazy, all in one call. * def recode(self, char *command, char *input, verbose=False): # <<<<<<<<<<<<<< * request = Request(self) * request.set_verbose(verbose) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("Recode.Outer.recode", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_request); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.outer cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_5Outer_17__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_5Outer_17__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_17__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_5Outer_17__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; __pyx_r = __pyx_pf_6Recode_5Outer_16__reduce_cython__(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_5Outer_16__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6Recode_Outer *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 1); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError, "self.outer cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError, "self.outer cannot be converted to a Python object for pickling" */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_outer_cannot_be_converted_t, 0, 0); __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.outer cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("Recode.Outer.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.outer cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.outer cannot be converted to a Python object for pickling" */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_5Outer_19__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_5Outer_19__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_19__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_5Outer_19__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v___pyx_state = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Outer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6Recode_5Outer_18__setstate_cython__(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_5Outer_18__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6Recode_Outer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 1); /* "(tree fragment)":4 * raise TypeError, "self.outer cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): * raise TypeError, "self.outer cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_outer_cannot_be_converted_t, 0, 0); __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.outer cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.outer cannot be converted to a Python object for pickling" */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("Recode.Outer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":592 * cdef RECODE_REQUEST request * * def __init__(self, Outer outer): # <<<<<<<<<<<<<< * self.request = recode_new_request(outer.outer) * */ /* Python wrapper */ static int __pyx_pw_6Recode_7Request_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_6Recode_7Request_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { struct __pyx_obj_6Recode_Outer *__pyx_v_outer = 0; CYTHON_UNUSED Py_ssize_t __pyx_nargs; CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; #endif __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_outer,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_outer)) != 0)) { (void)__Pyx_Arg_NewRef_VARARGS(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 592, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(1, 592, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); } __pyx_v_outer = ((struct __pyx_obj_6Recode_Outer *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 592, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Request.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_outer), __pyx_ptype_6Recode_Outer, 1, "outer", 0))) __PYX_ERR(1, 592, __pyx_L1_error) __pyx_r = __pyx_pf_6Recode_7Request___init__(((struct __pyx_obj_6Recode_Request *)__pyx_v_self), __pyx_v_outer); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_6Recode_7Request___init__(struct __pyx_obj_6Recode_Request *__pyx_v_self, struct __pyx_obj_6Recode_Outer *__pyx_v_outer) { int __pyx_r; /* "Recode.pyx":593 * * def __init__(self, Outer outer): * self.request = recode_new_request(outer.outer) # <<<<<<<<<<<<<< * * def __dealloc__(self): */ __pyx_v_self->request = recode_new_request(__pyx_v_outer->outer); /* "Recode.pyx":592 * cdef RECODE_REQUEST request * * def __init__(self, Outer outer): # <<<<<<<<<<<<<< * self.request = recode_new_request(outer.outer) * */ /* function exit code */ __pyx_r = 0; return __pyx_r; } /* "Recode.pyx":595 * self.request = recode_new_request(outer.outer) * * def __dealloc__(self): # <<<<<<<<<<<<<< * recode_delete_request(self.request) * */ /* Python wrapper */ static void __pyx_pw_6Recode_7Request_3__dealloc__(PyObject *__pyx_v_self); /*proto*/ static void __pyx_pw_6Recode_7Request_3__dealloc__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_pf_6Recode_7Request_2__dealloc__(((struct __pyx_obj_6Recode_Request *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); } static void __pyx_pf_6Recode_7Request_2__dealloc__(struct __pyx_obj_6Recode_Request *__pyx_v_self) { /* "Recode.pyx":596 * * def __dealloc__(self): * recode_delete_request(self.request) # <<<<<<<<<<<<<< * * def set_verbose(self, flag): */ (void)(recode_delete_request(__pyx_v_self->request)); /* "Recode.pyx":595 * self.request = recode_new_request(outer.outer) * * def __dealloc__(self): # <<<<<<<<<<<<<< * recode_delete_request(self.request) * */ /* function exit code */ } /* "Recode.pyx":598 * recode_delete_request(self.request) * * def set_verbose(self, flag): # <<<<<<<<<<<<<< * previous = self.request.verbose_flag != 0 * self.request.verbose_flag = int(flag) */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_7Request_5set_verbose(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_7Request_5set_verbose = {"set_verbose", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_7Request_5set_verbose, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_7Request_5set_verbose(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_flag = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_verbose (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flag,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flag)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 598, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "set_verbose") < 0)) __PYX_ERR(1, 598, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_flag = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_verbose", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 598, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Request.set_verbose", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6Recode_7Request_4set_verbose(((struct __pyx_obj_6Recode_Request *)__pyx_v_self), __pyx_v_flag); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_7Request_4set_verbose(struct __pyx_obj_6Recode_Request *__pyx_v_self, PyObject *__pyx_v_flag) { PyObject *__pyx_v_previous = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; bool __pyx_t_2; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("set_verbose", 1); /* "Recode.pyx":599 * * def set_verbose(self, flag): * previous = self.request.verbose_flag != 0 # <<<<<<<<<<<<<< * self.request.verbose_flag = int(flag) * return previous */ __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_self->request->verbose_flag != 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_previous = __pyx_t_1; __pyx_t_1 = 0; /* "Recode.pyx":600 * def set_verbose(self, flag): * previous = self.request.verbose_flag != 0 * self.request.verbose_flag = int(flag) # <<<<<<<<<<<<<< * return previous * */ __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(1, 600, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_self->request->verbose_flag = __pyx_t_2; /* "Recode.pyx":601 * previous = self.request.verbose_flag != 0 * self.request.verbose_flag = int(flag) * return previous # <<<<<<<<<<<<<< * * def scan(self, char *text): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_previous); __pyx_r = __pyx_v_previous; goto __pyx_L0; /* "Recode.pyx":598 * recode_delete_request(self.request) * * def set_verbose(self, flag): # <<<<<<<<<<<<<< * previous = self.request.verbose_flag != 0 * self.request.verbose_flag = int(flag) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("Recode.Request.set_verbose", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_previous); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":603 * return previous * * def scan(self, char *text): # <<<<<<<<<<<<<< * ok = recode_scan_request(self.request, text) * if not ok: */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_7Request_7scan(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_7Request_7scan = {"scan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_7Request_7scan, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_7Request_7scan(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { char *__pyx_v_text; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("scan (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_text,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_text)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 603, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scan") < 0)) __PYX_ERR(1, 603, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_text = __Pyx_PyObject_AsWritableString(values[0]); if (unlikely((!__pyx_v_text) && PyErr_Occurred())) __PYX_ERR(1, 603, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("scan", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 603, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Request.scan", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6Recode_7Request_6scan(((struct __pyx_obj_6Recode_Request *)__pyx_v_self), __pyx_v_text); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_7Request_6scan(struct __pyx_obj_6Recode_Request *__pyx_v_self, char *__pyx_v_text) { bool __pyx_v_ok; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("scan", 1); /* "Recode.pyx":604 * * def scan(self, char *text): * ok = recode_scan_request(self.request, text) # <<<<<<<<<<<<<< * if not ok: * raise error */ __pyx_v_ok = recode_scan_request(__pyx_v_self->request, __pyx_v_text); /* "Recode.pyx":605 * def scan(self, char *text): * ok = recode_scan_request(self.request, text) * if not ok: # <<<<<<<<<<<<<< * raise error * */ __pyx_t_1 = (!(__pyx_v_ok != 0)); if (unlikely(__pyx_t_1)) { /* "Recode.pyx":606 * ok = recode_scan_request(self.request, text) * if not ok: * raise error # <<<<<<<<<<<<<< * * def pair_sequence(self): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(1, 606, __pyx_L1_error) /* "Recode.pyx":605 * def scan(self, char *text): * ok = recode_scan_request(self.request, text) * if not ok: # <<<<<<<<<<<<<< * raise error * */ } /* "Recode.pyx":603 * return previous * * def scan(self, char *text): # <<<<<<<<<<<<<< * ok = recode_scan_request(self.request, text) * if not ok: */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("Recode.Request.scan", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":608 * raise error * * def pair_sequence(self): # <<<<<<<<<<<<<< * list = [] * cdef recode_step step */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_7Request_9pair_sequence(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_7Request_9pair_sequence = {"pair_sequence", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_7Request_9pair_sequence, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_7Request_9pair_sequence(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pair_sequence (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("pair_sequence", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "pair_sequence", 0))) return NULL; __pyx_r = __pyx_pf_6Recode_7Request_8pair_sequence(((struct __pyx_obj_6Recode_Request *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_7Request_8pair_sequence(struct __pyx_obj_6Recode_Request *__pyx_v_self) { PyObject *__pyx_v_list = NULL; struct recode_step __pyx_v_step; short __pyx_v_counter; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; short __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("pair_sequence", 1); /* "Recode.pyx":609 * * def pair_sequence(self): * list = [] # <<<<<<<<<<<<<< * cdef recode_step step * cdef short counter */ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_list = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "Recode.pyx":612 * cdef recode_step step * cdef short counter * for counter from 0 <= counter < self.request.sequence_length: # <<<<<<<<<<<<<< * step = self.request.sequence_array[counter] * list.append((step.before.name, step.after.name)) */ __pyx_t_2 = __pyx_v_self->request->sequence_length; for (__pyx_v_counter = 0; __pyx_v_counter < __pyx_t_2; __pyx_v_counter++) { /* "Recode.pyx":613 * cdef short counter * for counter from 0 <= counter < self.request.sequence_length: * step = self.request.sequence_array[counter] # <<<<<<<<<<<<<< * list.append((step.before.name, step.after.name)) * return list */ __pyx_v_step = (__pyx_v_self->request->sequence_array[__pyx_v_counter]); /* "Recode.pyx":614 * for counter from 0 <= counter < self.request.sequence_length: * step = self.request.sequence_array[counter] * list.append((step.before.name, step.after.name)) # <<<<<<<<<<<<<< * return list * */ __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_step.before->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_step.after->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(1, 614, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(1, 614, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_list, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 614, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } /* "Recode.pyx":615 * step = self.request.sequence_array[counter] * list.append((step.before.name, step.after.name)) * return list # <<<<<<<<<<<<<< * * def format_table(self, int language, char *charset): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_list); __pyx_r = __pyx_v_list; goto __pyx_L0; /* "Recode.pyx":608 * raise error * * def pair_sequence(self): # <<<<<<<<<<<<<< * list = [] * cdef recode_step step */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("Recode.Request.pair_sequence", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_list); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":617 * return list * * def format_table(self, int language, char *charset): # <<<<<<<<<<<<<< * cdef RECODE_OUTER outer * cdef bool saved */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_7Request_11format_table(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_7Request_11format_table = {"format_table", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_7Request_11format_table, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_7Request_11format_table(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { int __pyx_v_language; char *__pyx_v_charset; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[2] = {0,0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("format_table (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_language,&__pyx_n_s_charset,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_language)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 617, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_charset)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[1]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 617, __pyx_L3_error) else { __Pyx_RaiseArgtupleInvalid("format_table", 1, 2, 2, 1); __PYX_ERR(1, 617, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "format_table") < 0)) __PYX_ERR(1, 617, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); } __pyx_v_language = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_language == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 617, __pyx_L3_error) __pyx_v_charset = __Pyx_PyObject_AsWritableString(values[1]); if (unlikely((!__pyx_v_charset) && PyErr_Occurred())) __PYX_ERR(1, 617, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("format_table", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 617, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Request.format_table", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6Recode_7Request_10format_table(((struct __pyx_obj_6Recode_Request *)__pyx_v_self), __pyx_v_language, __pyx_v_charset); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_7Request_10format_table(struct __pyx_obj_6Recode_Request *__pyx_v_self, int __pyx_v_language, char *__pyx_v_charset) { RECODE_OUTER __pyx_v_outer; bool __pyx_v_saved; bool __pyx_v_ok; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations RECODE_OUTER __pyx_t_1; bool __pyx_t_2; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("format_table", 1); /* "Recode.pyx":620 * cdef RECODE_OUTER outer * cdef bool saved * outer = self.request.outer # <<<<<<<<<<<<<< * saved = outer.iconv_pivot.ignore * outer.iconv_pivot.ignore = True */ __pyx_t_1 = __pyx_v_self->request->outer; __pyx_v_outer = __pyx_t_1; /* "Recode.pyx":621 * cdef bool saved * outer = self.request.outer * saved = outer.iconv_pivot.ignore # <<<<<<<<<<<<<< * outer.iconv_pivot.ignore = True * ok = recode_format_table( */ __pyx_t_2 = __pyx_v_outer->iconv_pivot->ignore; __pyx_v_saved = __pyx_t_2; /* "Recode.pyx":622 * outer = self.request.outer * saved = outer.iconv_pivot.ignore * outer.iconv_pivot.ignore = True # <<<<<<<<<<<<<< * ok = recode_format_table( * self.request, language, charset) */ __pyx_v_outer->iconv_pivot->ignore = 1; /* "Recode.pyx":623 * saved = outer.iconv_pivot.ignore * outer.iconv_pivot.ignore = True * ok = recode_format_table( # <<<<<<<<<<<<<< * self.request, language, charset) * outer.iconv_pivot.ignore = saved */ __pyx_v_ok = recode_format_table(__pyx_v_self->request, ((enum recode_programming_language)__pyx_v_language), __pyx_v_charset); /* "Recode.pyx":625 * ok = recode_format_table( * self.request, language, charset) * outer.iconv_pivot.ignore = saved # <<<<<<<<<<<<<< * if not ok: * raise error */ __pyx_v_outer->iconv_pivot->ignore = __pyx_v_saved; /* "Recode.pyx":626 * self.request, language, charset) * outer.iconv_pivot.ignore = saved * if not ok: # <<<<<<<<<<<<<< * raise error * */ __pyx_t_3 = (!(__pyx_v_ok != 0)); if (unlikely(__pyx_t_3)) { /* "Recode.pyx":627 * outer.iconv_pivot.ignore = saved * if not ok: * raise error # <<<<<<<<<<<<<< * * def string(self, text): */ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(1, 627, __pyx_L1_error) /* "Recode.pyx":626 * self.request, language, charset) * outer.iconv_pivot.ignore = saved * if not ok: # <<<<<<<<<<<<<< * raise error * */ } /* "Recode.pyx":617 * return list * * def format_table(self, int language, char *charset): # <<<<<<<<<<<<<< * cdef RECODE_OUTER outer * cdef bool saved */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("Recode.Request.format_table", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":629 * raise error * * def string(self, text): # <<<<<<<<<<<<<< * cdef char *input = text * cdef size_t input_len = len(text) */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_7Request_13string(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_7Request_13string = {"string", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_7Request_13string, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_7Request_13string(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_text = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("string (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_text,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_text)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 629, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "string") < 0)) __PYX_ERR(1, 629, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_text = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("string", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 629, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Request.string", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6Recode_7Request_12string(((struct __pyx_obj_6Recode_Request *)__pyx_v_self), __pyx_v_text); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_7Request_12string(struct __pyx_obj_6Recode_Request *__pyx_v_self, PyObject *__pyx_v_text) { char *__pyx_v_input; size_t __pyx_v_input_len; char *__pyx_v_output; size_t __pyx_v_output_len; size_t __pyx_v_output_allocated; bool __pyx_v_result; PyObject *__pyx_v_py_string = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations char *__pyx_t_1; Py_ssize_t __pyx_t_2; int __pyx_t_3; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; int __pyx_t_7; char const *__pyx_t_8; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; PyObject *__pyx_t_12 = NULL; PyObject *__pyx_t_13 = NULL; PyObject *__pyx_t_14 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("string", 1); /* "Recode.pyx":630 * * def string(self, text): * cdef char *input = text # <<<<<<<<<<<<<< * cdef size_t input_len = len(text) * cdef char *output = NULL */ __pyx_t_1 = __Pyx_PyObject_AsWritableString(__pyx_v_text); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 630, __pyx_L1_error) __pyx_v_input = __pyx_t_1; /* "Recode.pyx":631 * def string(self, text): * cdef char *input = text * cdef size_t input_len = len(text) # <<<<<<<<<<<<<< * cdef char *output = NULL * cdef size_t output_len */ __pyx_t_2 = PyObject_Length(__pyx_v_text); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 631, __pyx_L1_error) __pyx_v_input_len = __pyx_t_2; /* "Recode.pyx":632 * cdef char *input = text * cdef size_t input_len = len(text) * cdef char *output = NULL # <<<<<<<<<<<<<< * cdef size_t output_len * cdef size_t output_allocated = 0 */ __pyx_v_output = NULL; /* "Recode.pyx":634 * cdef char *output = NULL * cdef size_t output_len * cdef size_t output_allocated = 0 # <<<<<<<<<<<<<< * result = recode_buffer_to_buffer(self.request, input, input_len, &output, &output_len, &output_allocated) * if result is False or output is NULL: */ __pyx_v_output_allocated = 0; /* "Recode.pyx":635 * cdef size_t output_len * cdef size_t output_allocated = 0 * result = recode_buffer_to_buffer(self.request, input, input_len, &output, &output_len, &output_allocated) # <<<<<<<<<<<<<< * if result is False or output is NULL: * raise error */ __pyx_v_result = recode_buffer_to_buffer(__pyx_v_self->request, __pyx_v_input, __pyx_v_input_len, (&__pyx_v_output), (&__pyx_v_output_len), (&__pyx_v_output_allocated)); /* "Recode.pyx":636 * cdef size_t output_allocated = 0 * result = recode_buffer_to_buffer(self.request, input, input_len, &output, &output_len, &output_allocated) * if result is False or output is NULL: # <<<<<<<<<<<<<< * raise error * try: */ __pyx_t_4 = (__pyx_v_result == 0); if (!__pyx_t_4) { } else { __pyx_t_3 = __pyx_t_4; goto __pyx_L4_bool_binop_done; } __pyx_t_4 = (__pyx_v_output == NULL); __pyx_t_3 = __pyx_t_4; __pyx_L4_bool_binop_done:; if (unlikely(__pyx_t_3)) { /* "Recode.pyx":637 * result = recode_buffer_to_buffer(self.request, input, input_len, &output, &output_len, &output_allocated) * if result is False or output is NULL: * raise error # <<<<<<<<<<<<<< * try: * py_string = output[:output_len] */ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(1, 637, __pyx_L1_error) /* "Recode.pyx":636 * cdef size_t output_allocated = 0 * result = recode_buffer_to_buffer(self.request, input, input_len, &output, &output_len, &output_allocated) * if result is False or output is NULL: # <<<<<<<<<<<<<< * raise error * try: */ } /* "Recode.pyx":638 * if result is False or output is NULL: * raise error * try: # <<<<<<<<<<<<<< * py_string = output[:output_len] * finally: */ /*try:*/ { /* "Recode.pyx":639 * raise error * try: * py_string = output[:output_len] # <<<<<<<<<<<<<< * finally: * free (output) */ __pyx_t_5 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_output + 0, __pyx_v_output_len - 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 639, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_5); __pyx_v_py_string = ((PyObject*)__pyx_t_5); __pyx_t_5 = 0; } /* "Recode.pyx":641 * py_string = output[:output_len] * finally: * free (output) # <<<<<<<<<<<<<< * return py_string * */ /*finally:*/ { /*normal exit:*/{ free(__pyx_v_output); goto __pyx_L8; } __pyx_L7_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_14); __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename; { free(__pyx_v_output); } if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14); } __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11); __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8; goto __pyx_L1_error; } __pyx_L8:; } /* "Recode.pyx":642 * finally: * free (output) * return py_string # <<<<<<<<<<<<<< * * # Unexposed APIs: */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_py_string); __pyx_r = __pyx_v_py_string; goto __pyx_L0; /* "Recode.pyx":629 * raise error * * def string(self, text): # <<<<<<<<<<<<<< * cdef char *input = text * cdef size_t input_len = len(text) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("Recode.Request.string", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_py_string); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.request cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_7Request_15__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_7Request_15__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_7Request_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_7Request_15__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; __pyx_r = __pyx_pf_6Recode_7Request_14__reduce_cython__(((struct __pyx_obj_6Recode_Request *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_7Request_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6Recode_Request *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 1); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError, "self.request cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError, "self.request cannot be converted to a Python object for pickling" */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_request_cannot_be_converted, 0, 0); __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.request cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("Recode.Request.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.request cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.request cannot be converted to a Python object for pickling" */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_7Request_17__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_7Request_17__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_7Request_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_7Request_17__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v___pyx_state = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Request.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6Recode_7Request_16__setstate_cython__(((struct __pyx_obj_6Recode_Request *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_7Request_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6Recode_Request *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 1); /* "(tree fragment)":4 * raise TypeError, "self.request cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): * raise TypeError, "self.request cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_request_cannot_be_converted, 0, 0); __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.request cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.request cannot be converted to a Python object for pickling" */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("Recode.Request.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":671 * cdef RECODE_TASK task * * def __init__(self, Request request): # <<<<<<<<<<<<<< * self.task = recode_new_task(request.request) * */ /* Python wrapper */ static int __pyx_pw_6Recode_4Task_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_6Recode_4Task_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { struct __pyx_obj_6Recode_Request *__pyx_v_request = 0; CYTHON_UNUSED Py_ssize_t __pyx_nargs; CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1; #endif __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_request,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_request)) != 0)) { (void)__Pyx_Arg_NewRef_VARARGS(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 671, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(1, 671, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0); } __pyx_v_request = ((struct __pyx_obj_6Recode_Request *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 671, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Task.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_request), __pyx_ptype_6Recode_Request, 1, "request", 0))) __PYX_ERR(1, 671, __pyx_L1_error) __pyx_r = __pyx_pf_6Recode_4Task___init__(((struct __pyx_obj_6Recode_Task *)__pyx_v_self), __pyx_v_request); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_6Recode_4Task___init__(struct __pyx_obj_6Recode_Task *__pyx_v_self, struct __pyx_obj_6Recode_Request *__pyx_v_request) { int __pyx_r; /* "Recode.pyx":672 * * def __init__(self, Request request): * self.task = recode_new_task(request.request) # <<<<<<<<<<<<<< * * def __dealloc__(self): */ __pyx_v_self->task = recode_new_task(__pyx_v_request->request); /* "Recode.pyx":671 * cdef RECODE_TASK task * * def __init__(self, Request request): # <<<<<<<<<<<<<< * self.task = recode_new_task(request.request) * */ /* function exit code */ __pyx_r = 0; return __pyx_r; } /* "Recode.pyx":674 * self.task = recode_new_task(request.request) * * def __dealloc__(self): # <<<<<<<<<<<<<< * free (self.task.output.buffer) * recode_delete_task(self.task) */ /* Python wrapper */ static void __pyx_pw_6Recode_4Task_3__dealloc__(PyObject *__pyx_v_self); /*proto*/ static void __pyx_pw_6Recode_4Task_3__dealloc__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_pf_6Recode_4Task_2__dealloc__(((struct __pyx_obj_6Recode_Task *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); } static void __pyx_pf_6Recode_4Task_2__dealloc__(struct __pyx_obj_6Recode_Task *__pyx_v_self) { /* "Recode.pyx":675 * * def __dealloc__(self): * free (self.task.output.buffer) # <<<<<<<<<<<<<< * recode_delete_task(self.task) * */ free(__pyx_v_self->task->output.buffer); /* "Recode.pyx":676 * def __dealloc__(self): * free (self.task.output.buffer) * recode_delete_task(self.task) # <<<<<<<<<<<<<< * * def set_byte_order_mark(self, flag): */ (void)(recode_delete_task(__pyx_v_self->task)); /* "Recode.pyx":674 * self.task = recode_new_task(request.request) * * def __dealloc__(self): # <<<<<<<<<<<<<< * free (self.task.output.buffer) * recode_delete_task(self.task) */ /* function exit code */ } /* "Recode.pyx":678 * recode_delete_task(self.task) * * def set_byte_order_mark(self, flag): # <<<<<<<<<<<<<< * previous = self.task.byte_order_mark != 0 * self.task.byte_order_mark = int(flag) */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_4Task_5set_byte_order_mark(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_4Task_5set_byte_order_mark = {"set_byte_order_mark", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_5set_byte_order_mark, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_4Task_5set_byte_order_mark(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_flag = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_byte_order_mark (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flag,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flag)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 678, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "set_byte_order_mark") < 0)) __PYX_ERR(1, 678, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_flag = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_byte_order_mark", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 678, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Task.set_byte_order_mark", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6Recode_4Task_4set_byte_order_mark(((struct __pyx_obj_6Recode_Task *)__pyx_v_self), __pyx_v_flag); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_4Task_4set_byte_order_mark(struct __pyx_obj_6Recode_Task *__pyx_v_self, PyObject *__pyx_v_flag) { PyObject *__pyx_v_previous = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; bool __pyx_t_2; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("set_byte_order_mark", 1); /* "Recode.pyx":679 * * def set_byte_order_mark(self, flag): * previous = self.task.byte_order_mark != 0 # <<<<<<<<<<<<<< * self.task.byte_order_mark = int(flag) * return previous */ __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_self->task->byte_order_mark != 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_previous = __pyx_t_1; __pyx_t_1 = 0; /* "Recode.pyx":680 * def set_byte_order_mark(self, flag): * previous = self.task.byte_order_mark != 0 * self.task.byte_order_mark = int(flag) # <<<<<<<<<<<<<< * return previous * */ __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 680, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(1, 680, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_self->task->byte_order_mark = __pyx_t_2; /* "Recode.pyx":681 * previous = self.task.byte_order_mark != 0 * self.task.byte_order_mark = int(flag) * return previous # <<<<<<<<<<<<<< * * def get_error(self): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_previous); __pyx_r = __pyx_v_previous; goto __pyx_L0; /* "Recode.pyx":678 * recode_delete_task(self.task) * * def set_byte_order_mark(self, flag): # <<<<<<<<<<<<<< * previous = self.task.byte_order_mark != 0 * self.task.byte_order_mark = int(flag) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("Recode.Task.set_byte_order_mark", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_previous); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":683 * return previous * * def get_error(self): # <<<<<<<<<<<<<< * return self.task.error_so_far * */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_4Task_7get_error(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_4Task_7get_error = {"get_error", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_7get_error, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_4Task_7get_error(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_error (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("get_error", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "get_error", 0))) return NULL; __pyx_r = __pyx_pf_6Recode_4Task_6get_error(((struct __pyx_obj_6Recode_Task *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_4Task_6get_error(struct __pyx_obj_6Recode_Task *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_error", 1); /* "Recode.pyx":684 * * def get_error(self): * return self.task.error_so_far # <<<<<<<<<<<<<< * * def set_fail_level(self, fail_level): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_enum__recode_error(__pyx_v_self->task->error_so_far); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "Recode.pyx":683 * return previous * * def get_error(self): # <<<<<<<<<<<<<< * return self.task.error_so_far * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("Recode.Task.get_error", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":686 * return self.task.error_so_far * * def set_fail_level(self, fail_level): # <<<<<<<<<<<<<< * previous = self.task.fail_level * self.task.fail_level = fail_level */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_4Task_9set_fail_level(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_4Task_9set_fail_level = {"set_fail_level", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_9set_fail_level, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_4Task_9set_fail_level(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_fail_level = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_fail_level (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fail_level,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fail_level)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 686, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "set_fail_level") < 0)) __PYX_ERR(1, 686, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_fail_level = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_fail_level", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 686, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Task.set_fail_level", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6Recode_4Task_8set_fail_level(((struct __pyx_obj_6Recode_Task *)__pyx_v_self), __pyx_v_fail_level); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_4Task_8set_fail_level(struct __pyx_obj_6Recode_Task *__pyx_v_self, PyObject *__pyx_v_fail_level) { enum recode_error __pyx_v_previous; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations enum recode_error __pyx_t_1; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("set_fail_level", 1); /* "Recode.pyx":687 * * def set_fail_level(self, fail_level): * previous = self.task.fail_level # <<<<<<<<<<<<<< * self.task.fail_level = fail_level * return previous */ __pyx_t_1 = __pyx_v_self->task->fail_level; __pyx_v_previous = __pyx_t_1; /* "Recode.pyx":688 * def set_fail_level(self, fail_level): * previous = self.task.fail_level * self.task.fail_level = fail_level # <<<<<<<<<<<<<< * return previous * */ __pyx_t_1 = ((enum recode_error)__Pyx_PyInt_As_enum__recode_error(__pyx_v_fail_level)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 688, __pyx_L1_error) __pyx_v_self->task->fail_level = __pyx_t_1; /* "Recode.pyx":689 * previous = self.task.fail_level * self.task.fail_level = fail_level * return previous # <<<<<<<<<<<<<< * * def set_abort_level(self, abort_level): */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyInt_From_enum__recode_error(__pyx_v_previous); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "Recode.pyx":686 * return self.task.error_so_far * * def set_fail_level(self, fail_level): # <<<<<<<<<<<<<< * previous = self.task.fail_level * self.task.fail_level = fail_level */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("Recode.Task.set_fail_level", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":691 * return previous * * def set_abort_level(self, abort_level): # <<<<<<<<<<<<<< * previous = self.task.abort_level * self.task.abort_level = abort_level */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_4Task_11set_abort_level(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_4Task_11set_abort_level = {"set_abort_level", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_11set_abort_level, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_4Task_11set_abort_level(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_abort_level = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_abort_level (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_abort_level,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_abort_level)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 691, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "set_abort_level") < 0)) __PYX_ERR(1, 691, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_abort_level = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_abort_level", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 691, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Task.set_abort_level", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6Recode_4Task_10set_abort_level(((struct __pyx_obj_6Recode_Task *)__pyx_v_self), __pyx_v_abort_level); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_4Task_10set_abort_level(struct __pyx_obj_6Recode_Task *__pyx_v_self, PyObject *__pyx_v_abort_level) { enum recode_error __pyx_v_previous; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations enum recode_error __pyx_t_1; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("set_abort_level", 1); /* "Recode.pyx":692 * * def set_abort_level(self, abort_level): * previous = self.task.abort_level # <<<<<<<<<<<<<< * self.task.abort_level = abort_level * return previous */ __pyx_t_1 = __pyx_v_self->task->abort_level; __pyx_v_previous = __pyx_t_1; /* "Recode.pyx":693 * def set_abort_level(self, abort_level): * previous = self.task.abort_level * self.task.abort_level = abort_level # <<<<<<<<<<<<<< * return previous * */ __pyx_t_1 = ((enum recode_error)__Pyx_PyInt_As_enum__recode_error(__pyx_v_abort_level)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 693, __pyx_L1_error) __pyx_v_self->task->abort_level = __pyx_t_1; /* "Recode.pyx":694 * previous = self.task.abort_level * self.task.abort_level = abort_level * return previous # <<<<<<<<<<<<<< * * def set_input(self, text): */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyInt_From_enum__recode_error(__pyx_v_previous); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "Recode.pyx":691 * return previous * * def set_abort_level(self, abort_level): # <<<<<<<<<<<<<< * previous = self.task.abort_level * self.task.abort_level = abort_level */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("Recode.Task.set_abort_level", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":696 * return previous * * def set_input(self, text): # <<<<<<<<<<<<<< * cdef char *input = text * cdef size_t input_len = len(text) */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_4Task_13set_input(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_4Task_13set_input = {"set_input", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_13set_input, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_4Task_13set_input(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_text = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_input (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_text,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_text)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 696, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "set_input") < 0)) __PYX_ERR(1, 696, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v_text = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_input", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 696, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Task.set_input", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6Recode_4Task_12set_input(((struct __pyx_obj_6Recode_Task *)__pyx_v_self), __pyx_v_text); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_4Task_12set_input(struct __pyx_obj_6Recode_Task *__pyx_v_self, PyObject *__pyx_v_text) { char *__pyx_v_input; size_t __pyx_v_input_len; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations char *__pyx_t_1; Py_ssize_t __pyx_t_2; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("set_input", 1); /* "Recode.pyx":697 * * def set_input(self, text): * cdef char *input = text # <<<<<<<<<<<<<< * cdef size_t input_len = len(text) * self.task.input.buffer = input */ __pyx_t_1 = __Pyx_PyObject_AsWritableString(__pyx_v_text); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 697, __pyx_L1_error) __pyx_v_input = __pyx_t_1; /* "Recode.pyx":698 * def set_input(self, text): * cdef char *input = text * cdef size_t input_len = len(text) # <<<<<<<<<<<<<< * self.task.input.buffer = input * self.task.input.cursor = input */ __pyx_t_2 = PyObject_Length(__pyx_v_text); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 698, __pyx_L1_error) __pyx_v_input_len = __pyx_t_2; /* "Recode.pyx":699 * cdef char *input = text * cdef size_t input_len = len(text) * self.task.input.buffer = input # <<<<<<<<<<<<<< * self.task.input.cursor = input * self.task.input.limit = input + input_len */ __pyx_v_self->task->input.buffer = __pyx_v_input; /* "Recode.pyx":700 * cdef size_t input_len = len(text) * self.task.input.buffer = input * self.task.input.cursor = input # <<<<<<<<<<<<<< * self.task.input.limit = input + input_len * */ __pyx_v_self->task->input.cursor = __pyx_v_input; /* "Recode.pyx":701 * self.task.input.buffer = input * self.task.input.cursor = input * self.task.input.limit = input + input_len # <<<<<<<<<<<<<< * * def get_output(self): */ __pyx_v_self->task->input.limit = (__pyx_v_input + __pyx_v_input_len); /* "Recode.pyx":696 * return previous * * def set_input(self, text): # <<<<<<<<<<<<<< * cdef char *input = text * cdef size_t input_len = len(text) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("Recode.Task.set_input", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":703 * self.task.input.limit = input + input_len * * def get_output(self): # <<<<<<<<<<<<<< * return self.task.output.buffer[:self.task.output.cursor - self.task.output.buffer] * */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_4Task_15get_output(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_4Task_15get_output = {"get_output", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_15get_output, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_4Task_15get_output(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_output (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("get_output", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "get_output", 0))) return NULL; __pyx_r = __pyx_pf_6Recode_4Task_14get_output(((struct __pyx_obj_6Recode_Task *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_4Task_14get_output(struct __pyx_obj_6Recode_Task *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_output", 1); /* "Recode.pyx":704 * * def get_output(self): * return self.task.output.buffer[:self.task.output.cursor - self.task.output.buffer] # <<<<<<<<<<<<<< * * def perform(self): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_self->task->output.buffer + 0, (__pyx_v_self->task->output.cursor - __pyx_v_self->task->output.buffer) - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "Recode.pyx":703 * self.task.input.limit = input + input_len * * def get_output(self): # <<<<<<<<<<<<<< * return self.task.output.buffer[:self.task.output.cursor - self.task.output.buffer] * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("Recode.Task.get_output", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "Recode.pyx":706 * return self.task.output.buffer[:self.task.output.cursor - self.task.output.buffer] * * def perform(self): # <<<<<<<<<<<<<< * return recode_perform_task(self.task) */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_4Task_17perform(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_4Task_17perform = {"perform", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_17perform, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_4Task_17perform(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("perform (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("perform", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "perform", 0))) return NULL; __pyx_r = __pyx_pf_6Recode_4Task_16perform(((struct __pyx_obj_6Recode_Task *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_4Task_16perform(struct __pyx_obj_6Recode_Task *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("perform", 1); /* "Recode.pyx":707 * * def perform(self): * return recode_perform_task(self.task) # <<<<<<<<<<<<<< */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyBool_FromLong(recode_perform_task(__pyx_v_self->task)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "Recode.pyx":706 * return self.task.output.buffer[:self.task.output.cursor - self.task.output.buffer] * * def perform(self): # <<<<<<<<<<<<<< * return recode_perform_task(self.task) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("Recode.Task.perform", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.task cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_4Task_19__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_4Task_19__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_19__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_4Task_19__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;} if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL; __pyx_r = __pyx_pf_6Recode_4Task_18__reduce_cython__(((struct __pyx_obj_6Recode_Task *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_4Task_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6Recode_Task *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 1); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError, "self.task cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError, "self.task cannot be converted to a Python object for pickling" */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_task_cannot_be_converted_to, 0, 0); __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.task cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("Recode.Task.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.task cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.task cannot be converted to a Python object for pickling" */ /* Python wrapper */ static PyObject *__pyx_pw_6Recode_4Task_21__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ static PyMethodDef __pyx_mdef_6Recode_4Task_21__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_21__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_6Recode_4Task_21__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject* values[1] = {0}; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error) else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error) } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); } __pyx_v___pyx_state = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("Recode.Task.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_6Recode_4Task_20__setstate_cython__(((struct __pyx_obj_6Recode_Task *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6Recode_4Task_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6Recode_Task *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 1); /* "(tree fragment)":4 * raise TypeError, "self.task cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): * raise TypeError, "self.task cannot be converted to a Python object for pickling" # <<<<<<<<<<<<<< */ __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_task_cannot_be_converted_to, 0, 0); __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.task cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.task cannot be converted to a Python object for pickling" */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("Recode.Task.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_tp_new_6Recode_Outer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; #endif return o; } static void __pyx_tp_dealloc_6Recode_Outer(PyObject *o) { #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6Recode_Outer) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif { PyObject *etype, *eval, *etb; PyErr_Fetch(&etype, &eval, &etb); __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); __pyx_pw_6Recode_5Outer_3__dealloc__(o); __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); PyErr_Restore(etype, eval, etb); } #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } static PyMethodDef __pyx_methods_6Recode_Outer[] = { {"default_charset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_5default_charset, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"all_charsets", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_7all_charsets, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"all_surfaces", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_9all_surfaces, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"concise_charset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_11concise_charset, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"full_charset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_13full_charset, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"recode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_15recode, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_17__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_5Outer_19__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_6Recode_Outer_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6Recode_Outer}, {Py_tp_methods, (void *)__pyx_methods_6Recode_Outer}, {Py_tp_init, (void *)__pyx_pw_6Recode_5Outer_1__init__}, {Py_tp_new, (void *)__pyx_tp_new_6Recode_Outer}, {0, 0}, }; static PyType_Spec __pyx_type_6Recode_Outer_spec = { "Recode.Outer", sizeof(struct __pyx_obj_6Recode_Outer), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, __pyx_type_6Recode_Outer_slots, }; #else static PyTypeObject __pyx_type_6Recode_Outer = { PyVarObject_HEAD_INIT(0, 0) "Recode.""Outer", /*tp_name*/ sizeof(struct __pyx_obj_6Recode_Outer), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6Recode_Outer, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ 0, /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_6Recode_Outer, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif __pyx_pw_6Recode_5Outer_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_6Recode_Outer, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif static PyObject *__pyx_tp_new_6Recode_Request(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; #endif return o; } static void __pyx_tp_dealloc_6Recode_Request(PyObject *o) { #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6Recode_Request) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif { PyObject *etype, *eval, *etb; PyErr_Fetch(&etype, &eval, &etb); __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); __pyx_pw_6Recode_7Request_3__dealloc__(o); __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); PyErr_Restore(etype, eval, etb); } #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } static PyMethodDef __pyx_methods_6Recode_Request[] = { {"set_verbose", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_7Request_5set_verbose, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"scan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_7Request_7scan, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"pair_sequence", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_7Request_9pair_sequence, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"format_table", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_7Request_11format_table, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"string", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_7Request_13string, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_7Request_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_7Request_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_6Recode_Request_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6Recode_Request}, {Py_tp_methods, (void *)__pyx_methods_6Recode_Request}, {Py_tp_init, (void *)__pyx_pw_6Recode_7Request_1__init__}, {Py_tp_new, (void *)__pyx_tp_new_6Recode_Request}, {0, 0}, }; static PyType_Spec __pyx_type_6Recode_Request_spec = { "Recode.Request", sizeof(struct __pyx_obj_6Recode_Request), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, __pyx_type_6Recode_Request_slots, }; #else static PyTypeObject __pyx_type_6Recode_Request = { PyVarObject_HEAD_INIT(0, 0) "Recode.""Request", /*tp_name*/ sizeof(struct __pyx_obj_6Recode_Request), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6Recode_Request, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ 0, /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_6Recode_Request, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif __pyx_pw_6Recode_7Request_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_6Recode_Request, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif static PyObject *__pyx_tp_new_6Recode_Task(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_COMPILING_IN_LIMITED_API allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); o = alloc_func(t, 0); #else if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; #endif return o; } static void __pyx_tp_dealloc_6Recode_Task(PyObject *o) { #if CYTHON_USE_TP_FINALIZE if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6Recode_Task) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } #endif { PyObject *etype, *eval, *etb; PyErr_Fetch(&etype, &eval, &etb); __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); __pyx_pw_6Recode_4Task_3__dealloc__(o); __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); PyErr_Restore(etype, eval, etb); } #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY (*Py_TYPE(o)->tp_free)(o); #else { freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif } static PyMethodDef __pyx_methods_6Recode_Task[] = { {"set_byte_order_mark", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_5set_byte_order_mark, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"get_error", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_7get_error, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"set_fail_level", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_9set_fail_level, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"set_abort_level", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_11set_abort_level, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"set_input", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_13set_input, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"get_output", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_15get_output, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"perform", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_17perform, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_19__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6Recode_4Task_21__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_type_6Recode_Task_slots[] = { {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6Recode_Task}, {Py_tp_methods, (void *)__pyx_methods_6Recode_Task}, {Py_tp_init, (void *)__pyx_pw_6Recode_4Task_1__init__}, {Py_tp_new, (void *)__pyx_tp_new_6Recode_Task}, {0, 0}, }; static PyType_Spec __pyx_type_6Recode_Task_spec = { "Recode.Task", sizeof(struct __pyx_obj_6Recode_Task), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, __pyx_type_6Recode_Task_slots, }; #else static PyTypeObject __pyx_type_6Recode_Task = { PyVarObject_HEAD_INIT(0, 0) "Recode.""Task", /*tp_name*/ sizeof(struct __pyx_obj_6Recode_Task), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_6Recode_Task, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ 0, /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_6Recode_Task, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif __pyx_pw_6Recode_4Task_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_6Recode_Task, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 #if CYTHON_USE_TP_FINALIZE 0, /*tp_finalize*/ #else NULL, /*tp_finalize*/ #endif #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030C0000 0, /*tp_watched*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, /*tp_pypy_flags*/ #endif }; #endif static PyMethodDef __pyx_methods[] = { {0, 0, 0, 0} }; #ifndef CYTHON_SMALL_CODE #if defined(__clang__) #define CYTHON_SMALL_CODE #elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) #define CYTHON_SMALL_CODE __attribute__((cold)) #else #define CYTHON_SMALL_CODE #endif #endif /* #### Code section: pystring_table ### */ static int __Pyx_CreateStringTabAndInitStrings(void) { __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_ALIAS_FIND_AS_CHARSET, __pyx_k_ALIAS_FIND_AS_CHARSET, sizeof(__pyx_k_ALIAS_FIND_AS_CHARSET), 0, 0, 1, 1}, {&__pyx_n_s_ALIAS_FIND_AS_EITHER, __pyx_k_ALIAS_FIND_AS_EITHER, sizeof(__pyx_k_ALIAS_FIND_AS_EITHER), 0, 0, 1, 1}, {&__pyx_n_s_ALIAS_FIND_AS_SURFACE, __pyx_k_ALIAS_FIND_AS_SURFACE, sizeof(__pyx_k_ALIAS_FIND_AS_SURFACE), 0, 0, 1, 1}, {&__pyx_n_s_AMBIGUOUS_OUTPUT, __pyx_k_AMBIGUOUS_OUTPUT, sizeof(__pyx_k_AMBIGUOUS_OUTPUT), 0, 0, 1, 1}, {&__pyx_n_s_AUTO_ABORT_FLAG, __pyx_k_AUTO_ABORT_FLAG, sizeof(__pyx_k_AUTO_ABORT_FLAG), 0, 0, 1, 1}, {&__pyx_n_s_BYTE_ORDER_MARK, __pyx_k_BYTE_ORDER_MARK, sizeof(__pyx_k_BYTE_ORDER_MARK), 0, 0, 1, 1}, {&__pyx_n_s_BYTE_ORDER_MARK_SWAPPED, __pyx_k_BYTE_ORDER_MARK_SWAPPED, sizeof(__pyx_k_BYTE_ORDER_MARK_SWAPPED), 0, 0, 1, 1}, {&__pyx_n_s_BYTE_TO_BYTE, __pyx_k_BYTE_TO_BYTE, sizeof(__pyx_k_BYTE_TO_BYTE), 0, 0, 1, 1}, {&__pyx_n_s_BYTE_TO_STRING, __pyx_k_BYTE_TO_STRING, sizeof(__pyx_k_BYTE_TO_STRING), 0, 0, 1, 1}, {&__pyx_n_s_CHARSET, __pyx_k_CHARSET, sizeof(__pyx_k_CHARSET), 0, 0, 1, 1}, {&__pyx_n_s_COMBINE_EXPLODE, __pyx_k_COMBINE_EXPLODE, sizeof(__pyx_k_COMBINE_EXPLODE), 0, 0, 1, 1}, {&__pyx_n_s_COMBINE_STEP, __pyx_k_COMBINE_STEP, sizeof(__pyx_k_COMBINE_STEP), 0, 0, 1, 1}, {&__pyx_n_s_DATA_SURFACE, __pyx_k_DATA_SURFACE, sizeof(__pyx_k_DATA_SURFACE), 0, 0, 1, 1}, {&__pyx_n_s_DECIMAL_FORMAT, __pyx_k_DECIMAL_FORMAT, sizeof(__pyx_k_DECIMAL_FORMAT), 0, 0, 1, 1}, {&__pyx_n_s_EXPLODE_DATA, __pyx_k_EXPLODE_DATA, sizeof(__pyx_k_EXPLODE_DATA), 0, 0, 1, 1}, {&__pyx_n_s_EXPLODE_STEP, __pyx_k_EXPLODE_STEP, sizeof(__pyx_k_EXPLODE_STEP), 0, 0, 1, 1}, {&__pyx_n_s_FULL_FORMAT, __pyx_k_FULL_FORMAT, sizeof(__pyx_k_FULL_FORMAT), 0, 0, 1, 1}, {&__pyx_n_s_HEXADECIMAL_FORMAT, __pyx_k_HEXADECIMAL_FORMAT, sizeof(__pyx_k_HEXADECIMAL_FORMAT), 0, 0, 1, 1}, {&__pyx_n_s_INTERNAL_ERROR, __pyx_k_INTERNAL_ERROR, sizeof(__pyx_k_INTERNAL_ERROR), 0, 0, 1, 1}, {&__pyx_n_s_INVALID_INPUT, __pyx_k_INVALID_INPUT, sizeof(__pyx_k_INVALID_INPUT), 0, 0, 1, 1}, {&__pyx_n_s_LANGUAGE_C, __pyx_k_LANGUAGE_C, sizeof(__pyx_k_LANGUAGE_C), 0, 0, 1, 1}, {&__pyx_n_s_LANGUAGE_PERL, __pyx_k_LANGUAGE_PERL, sizeof(__pyx_k_LANGUAGE_PERL), 0, 0, 1, 1}, {&__pyx_n_s_MAXIMUM_ERROR, __pyx_k_MAXIMUM_ERROR, sizeof(__pyx_k_MAXIMUM_ERROR), 0, 0, 1, 1}, {&__pyx_n_s_NOT_A_CHARACTER, __pyx_k_NOT_A_CHARACTER, sizeof(__pyx_k_NOT_A_CHARACTER), 0, 0, 1, 1}, {&__pyx_n_s_NOT_CANONICAL, __pyx_k_NOT_CANONICAL, sizeof(__pyx_k_NOT_CANONICAL), 0, 0, 1, 1}, {&__pyx_n_s_NO_CHARSET_DATA, __pyx_k_NO_CHARSET_DATA, sizeof(__pyx_k_NO_CHARSET_DATA), 0, 0, 1, 1}, {&__pyx_n_s_NO_ERROR, __pyx_k_NO_ERROR, sizeof(__pyx_k_NO_ERROR), 0, 0, 1, 1}, {&__pyx_n_s_NO_FORMAT, __pyx_k_NO_FORMAT, sizeof(__pyx_k_NO_FORMAT), 0, 0, 1, 1}, {&__pyx_n_s_NO_ICONV_FLAG, __pyx_k_NO_ICONV_FLAG, sizeof(__pyx_k_NO_ICONV_FLAG), 0, 0, 1, 1}, {&__pyx_n_s_NO_LANGUAGE, __pyx_k_NO_LANGUAGE, sizeof(__pyx_k_NO_LANGUAGE), 0, 0, 1, 1}, {&__pyx_n_s_NO_STEP_TABLE, __pyx_k_NO_STEP_TABLE, sizeof(__pyx_k_NO_STEP_TABLE), 0, 0, 1, 1}, {&__pyx_n_s_NO_SYMBOL_TYPE, __pyx_k_NO_SYMBOL_TYPE, sizeof(__pyx_k_NO_SYMBOL_TYPE), 0, 0, 1, 1}, {&__pyx_n_s_NUL, __pyx_k_NUL, sizeof(__pyx_k_NUL), 0, 0, 1, 1}, {&__pyx_n_s_OCTAL_FORMAT, __pyx_k_OCTAL_FORMAT, sizeof(__pyx_k_OCTAL_FORMAT), 0, 0, 1, 1}, {&__pyx_n_s_Outer, __pyx_k_Outer, sizeof(__pyx_k_Outer), 0, 0, 1, 1}, {&__pyx_n_s_Outer___reduce_cython, __pyx_k_Outer___reduce_cython, sizeof(__pyx_k_Outer___reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_Outer___setstate_cython, __pyx_k_Outer___setstate_cython, sizeof(__pyx_k_Outer___setstate_cython), 0, 0, 1, 1}, {&__pyx_n_s_Outer_all_charsets, __pyx_k_Outer_all_charsets, sizeof(__pyx_k_Outer_all_charsets), 0, 0, 1, 1}, {&__pyx_n_s_Outer_all_surfaces, __pyx_k_Outer_all_surfaces, sizeof(__pyx_k_Outer_all_surfaces), 0, 0, 1, 1}, {&__pyx_n_s_Outer_concise_charset, __pyx_k_Outer_concise_charset, sizeof(__pyx_k_Outer_concise_charset), 0, 0, 1, 1}, {&__pyx_n_s_Outer_default_charset, __pyx_k_Outer_default_charset, sizeof(__pyx_k_Outer_default_charset), 0, 0, 1, 1}, {&__pyx_n_s_Outer_full_charset, __pyx_k_Outer_full_charset, sizeof(__pyx_k_Outer_full_charset), 0, 0, 1, 1}, {&__pyx_n_s_Outer_recode, __pyx_k_Outer_recode, sizeof(__pyx_k_Outer_recode), 0, 0, 1, 1}, {&__pyx_n_s_REPLACEMENT_CHARACTER, __pyx_k_REPLACEMENT_CHARACTER, sizeof(__pyx_k_REPLACEMENT_CHARACTER), 0, 0, 1, 1}, {&__pyx_n_s_Recode, __pyx_k_Recode, sizeof(__pyx_k_Recode), 0, 0, 1, 1}, {&__pyx_kp_s_Recode_pyx, __pyx_k_Recode_pyx, sizeof(__pyx_k_Recode_pyx), 0, 0, 1, 0}, {&__pyx_n_s_Request, __pyx_k_Request, sizeof(__pyx_k_Request), 0, 0, 1, 1}, {&__pyx_n_s_Request___reduce_cython, __pyx_k_Request___reduce_cython, sizeof(__pyx_k_Request___reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_Request___setstate_cython, __pyx_k_Request___setstate_cython, sizeof(__pyx_k_Request___setstate_cython), 0, 0, 1, 1}, {&__pyx_n_s_Request_format_table, __pyx_k_Request_format_table, sizeof(__pyx_k_Request_format_table), 0, 0, 1, 1}, {&__pyx_n_s_Request_pair_sequence, __pyx_k_Request_pair_sequence, sizeof(__pyx_k_Request_pair_sequence), 0, 0, 1, 1}, {&__pyx_n_s_Request_scan, __pyx_k_Request_scan, sizeof(__pyx_k_Request_scan), 0, 0, 1, 1}, {&__pyx_n_s_Request_set_verbose, __pyx_k_Request_set_verbose, sizeof(__pyx_k_Request_set_verbose), 0, 0, 1, 1}, {&__pyx_n_s_Request_string, __pyx_k_Request_string, sizeof(__pyx_k_Request_string), 0, 0, 1, 1}, {&__pyx_n_s_SIZE_1, __pyx_k_SIZE_1, sizeof(__pyx_k_SIZE_1), 0, 0, 1, 1}, {&__pyx_n_s_SIZE_2, __pyx_k_SIZE_2, sizeof(__pyx_k_SIZE_2), 0, 0, 1, 1}, {&__pyx_n_s_SIZE_4, __pyx_k_SIZE_4, sizeof(__pyx_k_SIZE_4), 0, 0, 1, 1}, {&__pyx_n_s_SIZE_N, __pyx_k_SIZE_N, sizeof(__pyx_k_SIZE_N), 0, 0, 1, 1}, {&__pyx_n_s_STRICT_MAPPING_FLAG, __pyx_k_STRICT_MAPPING_FLAG, sizeof(__pyx_k_STRICT_MAPPING_FLAG), 0, 0, 1, 1}, {&__pyx_n_s_STRING_TO_UCS2, __pyx_k_STRING_TO_UCS2, sizeof(__pyx_k_STRING_TO_UCS2), 0, 0, 1, 1}, {&__pyx_n_s_STRIP_DATA, __pyx_k_STRIP_DATA, sizeof(__pyx_k_STRIP_DATA), 0, 0, 1, 1}, {&__pyx_n_s_STRIP_SIZE, __pyx_k_STRIP_SIZE, sizeof(__pyx_k_STRIP_SIZE), 0, 0, 1, 1}, {&__pyx_n_s_SWAP_NO, __pyx_k_SWAP_NO, sizeof(__pyx_k_SWAP_NO), 0, 0, 1, 1}, {&__pyx_n_s_SWAP_UNDECIDED, __pyx_k_SWAP_UNDECIDED, sizeof(__pyx_k_SWAP_UNDECIDED), 0, 0, 1, 1}, {&__pyx_n_s_SWAP_YES, __pyx_k_SWAP_YES, sizeof(__pyx_k_SWAP_YES), 0, 0, 1, 1}, {&__pyx_n_s_SYMBOL_CREATE_CHARSET, __pyx_k_SYMBOL_CREATE_CHARSET, sizeof(__pyx_k_SYMBOL_CREATE_CHARSET), 0, 0, 1, 1}, {&__pyx_n_s_SYMBOL_CREATE_DATA_SURFACE, __pyx_k_SYMBOL_CREATE_DATA_SURFACE, sizeof(__pyx_k_SYMBOL_CREATE_DATA_SURFACE), 0, 0, 1, 1}, {&__pyx_n_s_SYSTEM_ERROR, __pyx_k_SYSTEM_ERROR, sizeof(__pyx_k_SYSTEM_ERROR), 0, 0, 1, 1}, {&__pyx_n_s_Task, __pyx_k_Task, sizeof(__pyx_k_Task), 0, 0, 1, 1}, {&__pyx_n_s_Task___reduce_cython, __pyx_k_Task___reduce_cython, sizeof(__pyx_k_Task___reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_Task___setstate_cython, __pyx_k_Task___setstate_cython, sizeof(__pyx_k_Task___setstate_cython), 0, 0, 1, 1}, {&__pyx_n_s_Task_get_error, __pyx_k_Task_get_error, sizeof(__pyx_k_Task_get_error), 0, 0, 1, 1}, {&__pyx_n_s_Task_get_output, __pyx_k_Task_get_output, sizeof(__pyx_k_Task_get_output), 0, 0, 1, 1}, {&__pyx_n_s_Task_perform, __pyx_k_Task_perform, sizeof(__pyx_k_Task_perform), 0, 0, 1, 1}, {&__pyx_n_s_Task_set_abort_level, __pyx_k_Task_set_abort_level, sizeof(__pyx_k_Task_set_abort_level), 0, 0, 1, 1}, {&__pyx_n_s_Task_set_byte_order_mark, __pyx_k_Task_set_byte_order_mark, sizeof(__pyx_k_Task_set_byte_order_mark), 0, 0, 1, 1}, {&__pyx_n_s_Task_set_fail_level, __pyx_k_Task_set_fail_level, sizeof(__pyx_k_Task_set_fail_level), 0, 0, 1, 1}, {&__pyx_n_s_Task_set_input, __pyx_k_Task_set_input, sizeof(__pyx_k_Task_set_input), 0, 0, 1, 1}, {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, {&__pyx_n_s_UCS2_TO_BYTE, __pyx_k_UCS2_TO_BYTE, sizeof(__pyx_k_UCS2_TO_BYTE), 0, 0, 1, 1}, {&__pyx_n_s_UCS2_TO_STRING, __pyx_k_UCS2_TO_STRING, sizeof(__pyx_k_UCS2_TO_STRING), 0, 0, 1, 1}, {&__pyx_n_s_UNTRANSLATABLE, __pyx_k_UNTRANSLATABLE, sizeof(__pyx_k_UNTRANSLATABLE), 0, 0, 1, 1}, {&__pyx_n_s_USER_ERROR, __pyx_k_USER_ERROR, sizeof(__pyx_k_USER_ERROR), 0, 0, 1, 1}, {&__pyx_n_s__41, __pyx_k__41, sizeof(__pyx_k__41), 0, 0, 1, 1}, {&__pyx_n_s_abort_level, __pyx_k_abort_level, sizeof(__pyx_k_abort_level), 0, 0, 1, 1}, {&__pyx_n_s_all_charsets, __pyx_k_all_charsets, sizeof(__pyx_k_all_charsets), 0, 0, 1, 1}, {&__pyx_n_s_all_surfaces, __pyx_k_all_surfaces, sizeof(__pyx_k_all_surfaces), 0, 0, 1, 1}, {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, {&__pyx_n_s_auto_abort, __pyx_k_auto_abort, sizeof(__pyx_k_auto_abort), 0, 0, 1, 1}, {&__pyx_n_s_charset, __pyx_k_charset, sizeof(__pyx_k_charset), 0, 0, 1, 1}, {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, {&__pyx_n_s_command, __pyx_k_command, sizeof(__pyx_k_command), 0, 0, 1, 1}, {&__pyx_n_s_concise_charset, __pyx_k_concise_charset, sizeof(__pyx_k_concise_charset), 0, 0, 1, 1}, {&__pyx_n_s_counter, __pyx_k_counter, sizeof(__pyx_k_counter), 0, 0, 1, 1}, {&__pyx_n_s_default_charset, __pyx_k_default_charset, sizeof(__pyx_k_default_charset), 0, 0, 1, 1}, {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1}, {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0}, {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0}, {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1}, {&__pyx_n_s_fail_level, __pyx_k_fail_level, sizeof(__pyx_k_fail_level), 0, 0, 1, 1}, {&__pyx_n_s_flag, __pyx_k_flag, sizeof(__pyx_k_flag), 0, 0, 1, 1}, {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1}, {&__pyx_n_s_format_table, __pyx_k_format_table, sizeof(__pyx_k_format_table), 0, 0, 1, 1}, {&__pyx_n_s_full_charset, __pyx_k_full_charset, sizeof(__pyx_k_full_charset), 0, 0, 1, 1}, {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0}, {&__pyx_n_s_get_error, __pyx_k_get_error, sizeof(__pyx_k_get_error), 0, 0, 1, 1}, {&__pyx_n_s_get_output, __pyx_k_get_output, sizeof(__pyx_k_get_output), 0, 0, 1, 1}, {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, {&__pyx_n_s_iconv, __pyx_k_iconv, sizeof(__pyx_k_iconv), 0, 0, 1, 1}, {&__pyx_n_s_init_subclass, __pyx_k_init_subclass, sizeof(__pyx_k_init_subclass), 0, 0, 1, 1}, {&__pyx_n_s_input, __pyx_k_input, sizeof(__pyx_k_input), 0, 0, 1, 1}, {&__pyx_n_s_input_len, __pyx_k_input_len, sizeof(__pyx_k_input_len), 0, 0, 1, 1}, {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1}, {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0}, {&__pyx_n_s_language, __pyx_k_language, sizeof(__pyx_k_language), 0, 0, 1, 1}, {&__pyx_n_s_list, __pyx_k_list, sizeof(__pyx_k_list), 0, 0, 1, 1}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, {&__pyx_n_s_mro_entries, __pyx_k_mro_entries, sizeof(__pyx_k_mro_entries), 0, 0, 1, 1}, {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, {&__pyx_n_s_ok, __pyx_k_ok, sizeof(__pyx_k_ok), 0, 0, 1, 1}, {&__pyx_n_s_outer, __pyx_k_outer, sizeof(__pyx_k_outer), 0, 0, 1, 1}, {&__pyx_n_s_output, __pyx_k_output, sizeof(__pyx_k_output), 0, 0, 1, 1}, {&__pyx_n_s_output_allocated, __pyx_k_output_allocated, sizeof(__pyx_k_output_allocated), 0, 0, 1, 1}, {&__pyx_n_s_output_len, __pyx_k_output_len, sizeof(__pyx_k_output_len), 0, 0, 1, 1}, {&__pyx_n_s_pair_sequence, __pyx_k_pair_sequence, sizeof(__pyx_k_pair_sequence), 0, 0, 1, 1}, {&__pyx_n_s_perform, __pyx_k_perform, sizeof(__pyx_k_perform), 0, 0, 1, 1}, {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, {&__pyx_n_s_previous, __pyx_k_previous, sizeof(__pyx_k_previous), 0, 0, 1, 1}, {&__pyx_n_s_py_string, __pyx_k_py_string, sizeof(__pyx_k_py_string), 0, 0, 1, 1}, {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1}, {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, {&__pyx_n_s_recode, __pyx_k_recode, sizeof(__pyx_k_recode), 0, 0, 1, 1}, {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, {&__pyx_n_s_request, __pyx_k_request, sizeof(__pyx_k_request), 0, 0, 1, 1}, {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1}, {&__pyx_n_s_saved, __pyx_k_saved, sizeof(__pyx_k_saved), 0, 0, 1, 1}, {&__pyx_n_s_scan, __pyx_k_scan, sizeof(__pyx_k_scan), 0, 0, 1, 1}, {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, {&__pyx_kp_s_self_outer_cannot_be_converted_t, __pyx_k_self_outer_cannot_be_converted_t, sizeof(__pyx_k_self_outer_cannot_be_converted_t), 0, 0, 1, 0}, {&__pyx_kp_s_self_request_cannot_be_converted, __pyx_k_self_request_cannot_be_converted, sizeof(__pyx_k_self_request_cannot_be_converted), 0, 0, 1, 0}, {&__pyx_kp_s_self_task_cannot_be_converted_to, __pyx_k_self_task_cannot_be_converted_to, sizeof(__pyx_k_self_task_cannot_be_converted_to), 0, 0, 1, 0}, {&__pyx_n_s_set_abort_level, __pyx_k_set_abort_level, sizeof(__pyx_k_set_abort_level), 0, 0, 1, 1}, {&__pyx_n_s_set_byte_order_mark, __pyx_k_set_byte_order_mark, sizeof(__pyx_k_set_byte_order_mark), 0, 0, 1, 1}, {&__pyx_n_s_set_fail_level, __pyx_k_set_fail_level, sizeof(__pyx_k_set_fail_level), 0, 0, 1, 1}, {&__pyx_n_s_set_input, __pyx_k_set_input, sizeof(__pyx_k_set_input), 0, 0, 1, 1}, {&__pyx_n_s_set_name, __pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 0, 1, 1}, {&__pyx_n_s_set_verbose, __pyx_k_set_verbose, sizeof(__pyx_k_set_verbose), 0, 0, 1, 1}, {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, {&__pyx_n_s_step, __pyx_k_step, sizeof(__pyx_k_step), 0, 0, 1, 1}, {&__pyx_n_s_strict, __pyx_k_strict, sizeof(__pyx_k_strict), 0, 0, 1, 1}, {&__pyx_n_s_string, __pyx_k_string, sizeof(__pyx_k_string), 0, 0, 1, 1}, {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0}, {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1}, {&__pyx_n_s_symbol, __pyx_k_symbol, sizeof(__pyx_k_symbol), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, {&__pyx_n_s_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 0, 1, 1}, {&__pyx_n_s_verbose, __pyx_k_verbose, sizeof(__pyx_k_verbose), 0, 0, 1, 1}, {&__pyx_n_s_xDONE, __pyx_k_xDONE, sizeof(__pyx_k_xDONE), 0, 0, 1, 1}, {&__pyx_n_s_xELSE, __pyx_k_xELSE, sizeof(__pyx_k_xELSE), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; return __Pyx_InitStrings(__pyx_string_tab); } /* #### Code section: cached_builtins ### */ static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 2, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } /* #### Code section: cached_constants ### */ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); /* "Recode.pyx":545 * recode_delete_outer(self.outer) * * def default_charset(self): # <<<<<<<<<<<<<< * return locale_charset() * */ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(1, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_default_charset, 545, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(1, 545, __pyx_L1_error) /* "Recode.pyx":548 * return locale_charset() * * def all_charsets(self): # <<<<<<<<<<<<<< * list = [] * cdef RECODE_SYMBOL symbol */ __pyx_tuple__4 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_list, __pyx_n_s_symbol); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 548, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__4, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_all_charsets, 548, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(1, 548, __pyx_L1_error) /* "Recode.pyx":560 * return list * * def all_surfaces(self): # <<<<<<<<<<<<<< * list = [] * cdef RECODE_SYMBOL symbol */ __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__4, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_all_surfaces, 560, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(1, 560, __pyx_L1_error) /* "Recode.pyx":570 * return list * * def concise_charset(self, format=NO_FORMAT): # <<<<<<<<<<<<<< * ok = recode_list_concise_charset(self.outer, NULL, format) * if not ok: */ __pyx_tuple__7 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_format, __pyx_n_s_ok); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7); __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_concise_charset, 570, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(1, 570, __pyx_L1_error) /* "Recode.pyx":575 * raise error * * def full_charset(self): # <<<<<<<<<<<<<< * ok = recode_list_full_charset(self.outer, NULL) * if not ok: */ __pyx_tuple__9 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_ok); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 575, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9); __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__9, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_full_charset, 575, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(1, 575, __pyx_L1_error) /* "Recode.pyx":581 * * # Lazy, all in one call. * def recode(self, char *command, char *input, verbose=False): # <<<<<<<<<<<<<< * request = Request(self) * request.set_verbose(verbose) */ __pyx_tuple__11 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_command, __pyx_n_s_input, __pyx_n_s_verbose, __pyx_n_s_request); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 581, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__11); __Pyx_GIVEREF(__pyx_tuple__11); __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_recode, 581, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(1, 581, __pyx_L1_error) __pyx_tuple__13 = PyTuple_Pack(1, Py_False); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 581, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__13); __Pyx_GIVEREF(__pyx_tuple__13); /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.outer cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 1, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.outer cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.outer cannot be converted to a Python object for pickling" */ __pyx_tuple__15 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15); __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 3, __pyx_L1_error) /* "Recode.pyx":598 * recode_delete_request(self.request) * * def set_verbose(self, flag): # <<<<<<<<<<<<<< * previous = self.request.verbose_flag != 0 * self.request.verbose_flag = int(flag) */ __pyx_tuple__17 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_flag, __pyx_n_s_previous); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_set_verbose, 598, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(1, 598, __pyx_L1_error) /* "Recode.pyx":603 * return previous * * def scan(self, char *text): # <<<<<<<<<<<<<< * ok = recode_scan_request(self.request, text) * if not ok: */ __pyx_tuple__19 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_text, __pyx_n_s_ok); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 603, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__19); __Pyx_GIVEREF(__pyx_tuple__19); __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_scan, 603, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(1, 603, __pyx_L1_error) /* "Recode.pyx":608 * raise error * * def pair_sequence(self): # <<<<<<<<<<<<<< * list = [] * cdef recode_step step */ __pyx_tuple__21 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_list, __pyx_n_s_step, __pyx_n_s_counter); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 608, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__21); __Pyx_GIVEREF(__pyx_tuple__21); __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_pair_sequence, 608, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(1, 608, __pyx_L1_error) /* "Recode.pyx":617 * return list * * def format_table(self, int language, char *charset): # <<<<<<<<<<<<<< * cdef RECODE_OUTER outer * cdef bool saved */ __pyx_tuple__23 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_language, __pyx_n_s_charset, __pyx_n_s_outer, __pyx_n_s_saved, __pyx_n_s_ok); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23); __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_format_table, 617, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(1, 617, __pyx_L1_error) /* "Recode.pyx":629 * raise error * * def string(self, text): # <<<<<<<<<<<<<< * cdef char *input = text * cdef size_t input_len = len(text) */ __pyx_tuple__25 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_text, __pyx_n_s_input, __pyx_n_s_input_len, __pyx_n_s_output, __pyx_n_s_output_len, __pyx_n_s_output_allocated, __pyx_n_s_result, __pyx_n_s_py_string); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 629, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_string, 629, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(1, 629, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.request cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 1, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.request cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.request cannot be converted to a Python object for pickling" */ __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 3, __pyx_L1_error) /* "Recode.pyx":678 * recode_delete_task(self.task) * * def set_byte_order_mark(self, flag): # <<<<<<<<<<<<<< * previous = self.task.byte_order_mark != 0 * self.task.byte_order_mark = int(flag) */ __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_set_byte_order_mark, 678, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(1, 678, __pyx_L1_error) /* "Recode.pyx":683 * return previous * * def get_error(self): # <<<<<<<<<<<<<< * return self.task.error_so_far * */ __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_get_error, 683, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(1, 683, __pyx_L1_error) /* "Recode.pyx":686 * return self.task.error_so_far * * def set_fail_level(self, fail_level): # <<<<<<<<<<<<<< * previous = self.task.fail_level * self.task.fail_level = fail_level */ __pyx_tuple__31 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_fail_level, __pyx_n_s_previous); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 686, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__31); __Pyx_GIVEREF(__pyx_tuple__31); __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_set_fail_level, 686, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(1, 686, __pyx_L1_error) /* "Recode.pyx":691 * return previous * * def set_abort_level(self, abort_level): # <<<<<<<<<<<<<< * previous = self.task.abort_level * self.task.abort_level = abort_level */ __pyx_tuple__33 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_abort_level, __pyx_n_s_previous); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(1, 691, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__33); __Pyx_GIVEREF(__pyx_tuple__33); __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_set_abort_level, 691, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(1, 691, __pyx_L1_error) /* "Recode.pyx":696 * return previous * * def set_input(self, text): # <<<<<<<<<<<<<< * cdef char *input = text * cdef size_t input_len = len(text) */ __pyx_tuple__35 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_text, __pyx_n_s_input, __pyx_n_s_input_len); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(1, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__35); __Pyx_GIVEREF(__pyx_tuple__35); __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_set_input, 696, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(1, 696, __pyx_L1_error) /* "Recode.pyx":703 * self.task.input.limit = input + input_len * * def get_output(self): # <<<<<<<<<<<<<< * return self.task.output.buffer[:self.task.output.cursor - self.task.output.buffer] * */ __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_get_output, 703, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(1, 703, __pyx_L1_error) /* "Recode.pyx":706 * return self.task.output.buffer[:self.task.output.cursor - self.task.output.buffer] * * def perform(self): # <<<<<<<<<<<<<< * return recode_perform_task(self.task) */ __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Recode_pyx, __pyx_n_s_perform, 706, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(1, 706, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.task cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 1, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.task cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.task cannot be converted to a Python object for pickling" */ __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } /* #### Code section: init_constants ### */ static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) { if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(1, 1, __pyx_L1_error); return 0; __pyx_L1_error:; return -1; } /* #### Code section: init_globals ### */ static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { return 0; } /* #### Code section: init_module ### */ static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ static int __Pyx_modinit_global_init_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); /*--- Global init code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_variable_export_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); /*--- Variable export code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_function_export_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); /*--- Function export code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_type_init_code(void) { __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); /*--- Type init code ---*/ #if CYTHON_USE_TYPE_SPECS __pyx_ptype_6Recode_Outer = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6Recode_Outer_spec, NULL); if (unlikely(!__pyx_ptype_6Recode_Outer)) __PYX_ERR(1, 522, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6Recode_Outer_spec, __pyx_ptype_6Recode_Outer) < 0) __PYX_ERR(1, 522, __pyx_L1_error) #else __pyx_ptype_6Recode_Outer = &__pyx_type_6Recode_Outer; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_6Recode_Outer) < 0) __PYX_ERR(1, 522, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_6Recode_Outer->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6Recode_Outer->tp_dictoffset && __pyx_ptype_6Recode_Outer->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_6Recode_Outer->tp_getattro = __Pyx_PyObject_GenericGetAttr; } #endif if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Outer, (PyObject *) __pyx_ptype_6Recode_Outer) < 0) __PYX_ERR(1, 522, __pyx_L1_error) #if !CYTHON_COMPILING_IN_LIMITED_API if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_6Recode_Outer) < 0) __PYX_ERR(1, 522, __pyx_L1_error) #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_6Recode_Request = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6Recode_Request_spec, NULL); if (unlikely(!__pyx_ptype_6Recode_Request)) __PYX_ERR(1, 589, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6Recode_Request_spec, __pyx_ptype_6Recode_Request) < 0) __PYX_ERR(1, 589, __pyx_L1_error) #else __pyx_ptype_6Recode_Request = &__pyx_type_6Recode_Request; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_6Recode_Request) < 0) __PYX_ERR(1, 589, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_6Recode_Request->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6Recode_Request->tp_dictoffset && __pyx_ptype_6Recode_Request->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_6Recode_Request->tp_getattro = __Pyx_PyObject_GenericGetAttr; } #endif if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Request, (PyObject *) __pyx_ptype_6Recode_Request) < 0) __PYX_ERR(1, 589, __pyx_L1_error) #if !CYTHON_COMPILING_IN_LIMITED_API if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_6Recode_Request) < 0) __PYX_ERR(1, 589, __pyx_L1_error) #endif #if CYTHON_USE_TYPE_SPECS __pyx_ptype_6Recode_Task = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6Recode_Task_spec, NULL); if (unlikely(!__pyx_ptype_6Recode_Task)) __PYX_ERR(1, 668, __pyx_L1_error) if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6Recode_Task_spec, __pyx_ptype_6Recode_Task) < 0) __PYX_ERR(1, 668, __pyx_L1_error) #else __pyx_ptype_6Recode_Task = &__pyx_type_6Recode_Task; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS if (__Pyx_PyType_Ready(__pyx_ptype_6Recode_Task) < 0) __PYX_ERR(1, 668, __pyx_L1_error) #endif #if PY_MAJOR_VERSION < 3 __pyx_ptype_6Recode_Task->tp_print = 0; #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6Recode_Task->tp_dictoffset && __pyx_ptype_6Recode_Task->tp_getattro == PyObject_GenericGetAttr)) { __pyx_ptype_6Recode_Task->tp_getattro = __Pyx_PyObject_GenericGetAttr; } #endif if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Task, (PyObject *) __pyx_ptype_6Recode_Task) < 0) __PYX_ERR(1, 668, __pyx_L1_error) #if !CYTHON_COMPILING_IN_LIMITED_API if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_6Recode_Task) < 0) __PYX_ERR(1, 668, __pyx_L1_error) #endif __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_modinit_type_import_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); /*--- Type import code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_variable_import_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); /*--- Variable import code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_function_import_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); /*--- Function import code ---*/ __Pyx_RefNannyFinishContext(); return 0; } #if PY_MAJOR_VERSION >= 3 #if CYTHON_PEP489_MULTI_PHASE_INIT static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ static int __pyx_pymod_exec_Recode(PyObject* module); /*proto*/ static PyModuleDef_Slot __pyx_moduledef_slots[] = { {Py_mod_create, (void*)__pyx_pymod_create}, {Py_mod_exec, (void*)__pyx_pymod_exec_Recode}, {0, NULL} }; #endif #ifdef __cplusplus namespace { struct PyModuleDef __pyx_moduledef = #else static struct PyModuleDef __pyx_moduledef = #endif { PyModuleDef_HEAD_INIT, "Recode", 0, /* m_doc */ #if CYTHON_PEP489_MULTI_PHASE_INIT 0, /* m_size */ #elif CYTHON_USE_MODULE_STATE sizeof(__pyx_mstate), /* m_size */ #else -1, /* m_size */ #endif __pyx_methods /* m_methods */, #if CYTHON_PEP489_MULTI_PHASE_INIT __pyx_moduledef_slots, /* m_slots */ #else NULL, /* m_reload */ #endif #if CYTHON_USE_MODULE_STATE __pyx_m_traverse, /* m_traverse */ __pyx_m_clear, /* m_clear */ NULL /* m_free */ #else NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ #endif }; #ifdef __cplusplus } /* anonymous namespace */ #endif #endif #ifndef CYTHON_NO_PYINIT_EXPORT #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC #elif PY_MAJOR_VERSION < 3 #ifdef __cplusplus #define __Pyx_PyMODINIT_FUNC extern "C" void #else #define __Pyx_PyMODINIT_FUNC void #endif #else #ifdef __cplusplus #define __Pyx_PyMODINIT_FUNC extern "C" PyObject * #else #define __Pyx_PyMODINIT_FUNC PyObject * #endif #endif #if PY_MAJOR_VERSION < 3 __Pyx_PyMODINIT_FUNC initRecode(void) CYTHON_SMALL_CODE; /*proto*/ __Pyx_PyMODINIT_FUNC initRecode(void) #else __Pyx_PyMODINIT_FUNC PyInit_Recode(void) CYTHON_SMALL_CODE; /*proto*/ __Pyx_PyMODINIT_FUNC PyInit_Recode(void) #if CYTHON_PEP489_MULTI_PHASE_INIT { return PyModuleDef_Init(&__pyx_moduledef); } static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { #if PY_VERSION_HEX >= 0x030700A1 static PY_INT64_T main_interpreter_id = -1; PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); if (main_interpreter_id == -1) { main_interpreter_id = current_id; return (unlikely(current_id == -1)) ? -1 : 0; } else if (unlikely(main_interpreter_id != current_id)) #else static PyInterpreterState *main_interpreter = NULL; PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; if (!main_interpreter) { main_interpreter = current_interpreter; } else if (unlikely(main_interpreter != current_interpreter)) #endif { PyErr_SetString( PyExc_ImportError, "Interpreter change detected - this module can only be loaded into one interpreter per process."); return -1; } return 0; } #if CYTHON_COMPILING_IN_LIMITED_API static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none) #else static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) #endif { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { if (allow_none || value != Py_None) { #if CYTHON_COMPILING_IN_LIMITED_API result = PyModule_AddObject(module, to_name, value); #else result = PyDict_SetItemString(moddict, to_name, value); #endif } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); } else { result = -1; } return result; } static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { PyObject *module = NULL, *moddict, *modname; CYTHON_UNUSED_VAR(def); if (__Pyx_check_single_interpreter()) return NULL; if (__pyx_m) return __Pyx_NewRef(__pyx_m); modname = PyObject_GetAttrString(spec, "name"); if (unlikely(!modname)) goto bad; module = PyModule_NewObject(modname); Py_DECREF(modname); if (unlikely(!module)) goto bad; #if CYTHON_COMPILING_IN_LIMITED_API moddict = module; #else moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; #endif if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; return module; bad: Py_XDECREF(module); return NULL; } static CYTHON_SMALL_CODE int __pyx_pymod_exec_Recode(PyObject *__pyx_pyinit_module) #endif #endif { int stringtab_initialized = 0; #if CYTHON_USE_MODULE_STATE int pystate_addmodule_run = 0; #endif PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations #if CYTHON_PEP489_MULTI_PHASE_INIT if (__pyx_m) { if (__pyx_m == __pyx_pyinit_module) return 0; PyErr_SetString(PyExc_RuntimeError, "Module 'Recode' has already been imported. Re-initialisation is not supported."); return -1; } #elif PY_MAJOR_VERSION >= 3 if (__pyx_m) return __Pyx_NewRef(__pyx_m); #endif /*--- Module creation code ---*/ #if CYTHON_PEP489_MULTI_PHASE_INIT __pyx_m = __pyx_pyinit_module; Py_INCREF(__pyx_m); #else #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4("Recode", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); if (unlikely(!__pyx_m)) __PYX_ERR(1, 1, __pyx_L1_error) #elif CYTHON_USE_MODULE_STATE __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1, __pyx_L1_error) { int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef); __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "Recode" pseudovariable */ if (unlikely((add_module_result < 0))) __PYX_ERR(1, 1, __pyx_L1_error) pystate_addmodule_run = 1; } #else __pyx_m = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_m)) __PYX_ERR(1, 1, __pyx_L1_error) #endif #endif CYTHON_UNUSED_VAR(__pyx_t_1); __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(1, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(1, 1, __pyx_L1_error) __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(1, 1, __pyx_L1_error) if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(1, 1, __pyx_L1_error) #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); if (!__Pyx_RefNanny) { PyErr_Clear(); __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); if (!__Pyx_RefNanny) Py_FatalError("failed to import 'refnanny' module"); } #endif __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_Recode(void)", 0); if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(1, 1, __pyx_L1_error) #ifdef __Pxy_PyFrame_Initialize_Offsets __Pxy_PyFrame_Initialize_Offsets(); #endif __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(1, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(1, 1, __pyx_L1_error) __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(1, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif #ifdef __Pyx_Coroutine_USED if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif #ifdef __Pyx_AsyncGen_USED if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif #ifdef __Pyx_StopAsyncIteration_USED if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS PyEval_InitThreads(); #endif /*--- Initialize various global constants etc. ---*/ if (__Pyx_InitConstants() < 0) __PYX_ERR(1, 1, __pyx_L1_error) stringtab_initialized = 1; if (__Pyx_InitGlobals() < 0) __PYX_ERR(1, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif if (__pyx_module_is_main_Recode) { if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(1, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(1, 1, __pyx_L1_error) if (!PyDict_GetItemString(modules, "Recode")) { if (unlikely((PyDict_SetItemString(modules, "Recode", __pyx_m) < 0))) __PYX_ERR(1, 1, __pyx_L1_error) } } #endif /*--- Builtin init code ---*/ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(1, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(1, 1, __pyx_L1_error) /*--- Global type/function init code ---*/ (void)__Pyx_modinit_global_init_code(); (void)__Pyx_modinit_variable_export_code(); (void)__Pyx_modinit_function_export_code(); if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(1, 1, __pyx_L1_error) (void)__Pyx_modinit_type_import_code(); (void)__Pyx_modinit_variable_import_code(); (void)__Pyx_modinit_function_import_code(); /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif /* "Recode.pyx":447 * bool recode_perform_task(RECODE_TASK) * * class error(Exception): # <<<<<<<<<<<<<< * pass * */ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])); __Pyx_GIVEREF((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])))) __PYX_ERR(1, 447, __pyx_L1_error); __pyx_t_3 = __Pyx_PEP560_update_bases(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_CalculateMetaclass(NULL, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_4, __pyx_t_3, __pyx_n_s_error, __pyx_n_s_error, (PyObject *) NULL, __pyx_n_s_Recode, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3 != __pyx_t_2) { if (unlikely((PyDict_SetItemString(__pyx_t_5, "__orig_bases__", __pyx_t_2) < 0))) __PYX_ERR(1, 447, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_4, __pyx_n_s_error, __pyx_t_3, __pyx_t_5, NULL, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_error, __pyx_t_2) < 0) __PYX_ERR(1, 447, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":452 * ## Enums repeated for Python. * * NO_SYMBOL_TYPE = RECODE_NO_SYMBOL_TYPE # <<<<<<<<<<<<<< * CHARSET = RECODE_CHARSET * DATA_SURFACE = RECODE_DATA_SURFACE */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_symbol_type(RECODE_NO_SYMBOL_TYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_SYMBOL_TYPE, __pyx_t_3) < 0) __PYX_ERR(1, 452, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":453 * * NO_SYMBOL_TYPE = RECODE_NO_SYMBOL_TYPE * CHARSET = RECODE_CHARSET # <<<<<<<<<<<<<< * DATA_SURFACE = RECODE_DATA_SURFACE * */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_symbol_type(RECODE_CHARSET); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_CHARSET, __pyx_t_3) < 0) __PYX_ERR(1, 453, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":454 * NO_SYMBOL_TYPE = RECODE_NO_SYMBOL_TYPE * CHARSET = RECODE_CHARSET * DATA_SURFACE = RECODE_DATA_SURFACE # <<<<<<<<<<<<<< * * NO_CHARSET_DATA = RECODE_NO_CHARSET_DATA */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_symbol_type(RECODE_DATA_SURFACE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_DATA_SURFACE, __pyx_t_3) < 0) __PYX_ERR(1, 454, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":456 * DATA_SURFACE = RECODE_DATA_SURFACE * * NO_CHARSET_DATA = RECODE_NO_CHARSET_DATA # <<<<<<<<<<<<<< * STRIP_DATA = RECODE_STRIP_DATA * EXPLODE_DATA = RECODE_EXPLODE_DATA */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_data_type(RECODE_NO_CHARSET_DATA); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 456, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_CHARSET_DATA, __pyx_t_3) < 0) __PYX_ERR(1, 456, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":457 * * NO_CHARSET_DATA = RECODE_NO_CHARSET_DATA * STRIP_DATA = RECODE_STRIP_DATA # <<<<<<<<<<<<<< * EXPLODE_DATA = RECODE_EXPLODE_DATA * */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_data_type(RECODE_STRIP_DATA); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 457, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_STRIP_DATA, __pyx_t_3) < 0) __PYX_ERR(1, 457, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":458 * NO_CHARSET_DATA = RECODE_NO_CHARSET_DATA * STRIP_DATA = RECODE_STRIP_DATA * EXPLODE_DATA = RECODE_EXPLODE_DATA # <<<<<<<<<<<<<< * * SIZE_1 = RECODE_1 */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_data_type(RECODE_EXPLODE_DATA); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_EXPLODE_DATA, __pyx_t_3) < 0) __PYX_ERR(1, 458, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":460 * EXPLODE_DATA = RECODE_EXPLODE_DATA * * SIZE_1 = RECODE_1 # <<<<<<<<<<<<<< * SIZE_2 = RECODE_2 * SIZE_4 = RECODE_4 */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_size(RECODE_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIZE_1, __pyx_t_3) < 0) __PYX_ERR(1, 460, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":461 * * SIZE_1 = RECODE_1 * SIZE_2 = RECODE_2 # <<<<<<<<<<<<<< * SIZE_4 = RECODE_4 * SIZE_N = RECODE_N */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_size(RECODE_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIZE_2, __pyx_t_3) < 0) __PYX_ERR(1, 461, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":462 * SIZE_1 = RECODE_1 * SIZE_2 = RECODE_2 * SIZE_4 = RECODE_4 # <<<<<<<<<<<<<< * SIZE_N = RECODE_N * */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_size(RECODE_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 462, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIZE_4, __pyx_t_3) < 0) __PYX_ERR(1, 462, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":463 * SIZE_2 = RECODE_2 * SIZE_4 = RECODE_4 * SIZE_N = RECODE_N # <<<<<<<<<<<<<< * * NO_STEP_TABLE = RECODE_NO_STEP_TABLE */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_size(RECODE_N); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIZE_N, __pyx_t_3) < 0) __PYX_ERR(1, 463, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":465 * SIZE_N = RECODE_N * * NO_STEP_TABLE = RECODE_NO_STEP_TABLE # <<<<<<<<<<<<<< * BYTE_TO_BYTE = RECODE_BYTE_TO_BYTE * BYTE_TO_STRING = RECODE_BYTE_TO_STRING */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_NO_STEP_TABLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_STEP_TABLE, __pyx_t_3) < 0) __PYX_ERR(1, 465, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":466 * * NO_STEP_TABLE = RECODE_NO_STEP_TABLE * BYTE_TO_BYTE = RECODE_BYTE_TO_BYTE # <<<<<<<<<<<<<< * BYTE_TO_STRING = RECODE_BYTE_TO_STRING * UCS2_TO_BYTE = RECODE_UCS2_TO_BYTE */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_BYTE_TO_BYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 466, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_BYTE_TO_BYTE, __pyx_t_3) < 0) __PYX_ERR(1, 466, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":467 * NO_STEP_TABLE = RECODE_NO_STEP_TABLE * BYTE_TO_BYTE = RECODE_BYTE_TO_BYTE * BYTE_TO_STRING = RECODE_BYTE_TO_STRING # <<<<<<<<<<<<<< * UCS2_TO_BYTE = RECODE_UCS2_TO_BYTE * UCS2_TO_STRING = RECODE_UCS2_TO_STRING */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_BYTE_TO_STRING); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 467, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_BYTE_TO_STRING, __pyx_t_3) < 0) __PYX_ERR(1, 467, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":468 * BYTE_TO_BYTE = RECODE_BYTE_TO_BYTE * BYTE_TO_STRING = RECODE_BYTE_TO_STRING * UCS2_TO_BYTE = RECODE_UCS2_TO_BYTE # <<<<<<<<<<<<<< * UCS2_TO_STRING = RECODE_UCS2_TO_STRING * STRING_TO_UCS2 = RECODE_STRING_TO_UCS2 */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_UCS2_TO_BYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_UCS2_TO_BYTE, __pyx_t_3) < 0) __PYX_ERR(1, 468, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":469 * BYTE_TO_STRING = RECODE_BYTE_TO_STRING * UCS2_TO_BYTE = RECODE_UCS2_TO_BYTE * UCS2_TO_STRING = RECODE_UCS2_TO_STRING # <<<<<<<<<<<<<< * STRING_TO_UCS2 = RECODE_STRING_TO_UCS2 * COMBINE_EXPLODE = RECODE_COMBINE_EXPLODE */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_UCS2_TO_STRING); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 469, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_UCS2_TO_STRING, __pyx_t_3) < 0) __PYX_ERR(1, 469, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":470 * UCS2_TO_BYTE = RECODE_UCS2_TO_BYTE * UCS2_TO_STRING = RECODE_UCS2_TO_STRING * STRING_TO_UCS2 = RECODE_STRING_TO_UCS2 # <<<<<<<<<<<<<< * COMBINE_EXPLODE = RECODE_COMBINE_EXPLODE * COMBINE_STEP = RECODE_COMBINE_STEP */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_STRING_TO_UCS2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_STRING_TO_UCS2, __pyx_t_3) < 0) __PYX_ERR(1, 470, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":471 * UCS2_TO_STRING = RECODE_UCS2_TO_STRING * STRING_TO_UCS2 = RECODE_STRING_TO_UCS2 * COMBINE_EXPLODE = RECODE_COMBINE_EXPLODE # <<<<<<<<<<<<<< * COMBINE_STEP = RECODE_COMBINE_STEP * EXPLODE_STEP = RECODE_EXPLODE_STEP */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_COMBINE_EXPLODE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINE_EXPLODE, __pyx_t_3) < 0) __PYX_ERR(1, 471, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":472 * STRING_TO_UCS2 = RECODE_STRING_TO_UCS2 * COMBINE_EXPLODE = RECODE_COMBINE_EXPLODE * COMBINE_STEP = RECODE_COMBINE_STEP # <<<<<<<<<<<<<< * EXPLODE_STEP = RECODE_EXPLODE_STEP * */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_COMBINE_STEP); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINE_STEP, __pyx_t_3) < 0) __PYX_ERR(1, 472, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":473 * COMBINE_EXPLODE = RECODE_COMBINE_EXPLODE * COMBINE_STEP = RECODE_COMBINE_STEP * EXPLODE_STEP = RECODE_EXPLODE_STEP # <<<<<<<<<<<<<< * * SWAP_UNDECIDED = RECODE_SWAP_UNDECIDED */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_EXPLODE_STEP); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_EXPLODE_STEP, __pyx_t_3) < 0) __PYX_ERR(1, 473, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":475 * EXPLODE_STEP = RECODE_EXPLODE_STEP * * SWAP_UNDECIDED = RECODE_SWAP_UNDECIDED # <<<<<<<<<<<<<< * SWAP_NO = RECODE_SWAP_NO * SWAP_YES = RECODE_SWAP_YES */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_swap_input(RECODE_SWAP_UNDECIDED); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_SWAP_UNDECIDED, __pyx_t_3) < 0) __PYX_ERR(1, 475, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":476 * * SWAP_UNDECIDED = RECODE_SWAP_UNDECIDED * SWAP_NO = RECODE_SWAP_NO # <<<<<<<<<<<<<< * SWAP_YES = RECODE_SWAP_YES * */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_swap_input(RECODE_SWAP_NO); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_SWAP_NO, __pyx_t_3) < 0) __PYX_ERR(1, 476, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":477 * SWAP_UNDECIDED = RECODE_SWAP_UNDECIDED * SWAP_NO = RECODE_SWAP_NO * SWAP_YES = RECODE_SWAP_YES # <<<<<<<<<<<<<< * * NO_ERROR = RECODE_NO_ERROR */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_swap_input(RECODE_SWAP_YES); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_SWAP_YES, __pyx_t_3) < 0) __PYX_ERR(1, 477, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":479 * SWAP_YES = RECODE_SWAP_YES * * NO_ERROR = RECODE_NO_ERROR # <<<<<<<<<<<<<< * NOT_CANONICAL = RECODE_NOT_CANONICAL * AMBIGUOUS_OUTPUT = RECODE_AMBIGUOUS_OUTPUT */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_error(RECODE_NO_ERROR); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_ERROR, __pyx_t_3) < 0) __PYX_ERR(1, 479, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":480 * * NO_ERROR = RECODE_NO_ERROR * NOT_CANONICAL = RECODE_NOT_CANONICAL # <<<<<<<<<<<<<< * AMBIGUOUS_OUTPUT = RECODE_AMBIGUOUS_OUTPUT * UNTRANSLATABLE = RECODE_UNTRANSLATABLE */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_error(RECODE_NOT_CANONICAL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_NOT_CANONICAL, __pyx_t_3) < 0) __PYX_ERR(1, 480, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":481 * NO_ERROR = RECODE_NO_ERROR * NOT_CANONICAL = RECODE_NOT_CANONICAL * AMBIGUOUS_OUTPUT = RECODE_AMBIGUOUS_OUTPUT # <<<<<<<<<<<<<< * UNTRANSLATABLE = RECODE_UNTRANSLATABLE * INVALID_INPUT = RECODE_INVALID_INPUT */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_error(RECODE_AMBIGUOUS_OUTPUT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_AMBIGUOUS_OUTPUT, __pyx_t_3) < 0) __PYX_ERR(1, 481, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":482 * NOT_CANONICAL = RECODE_NOT_CANONICAL * AMBIGUOUS_OUTPUT = RECODE_AMBIGUOUS_OUTPUT * UNTRANSLATABLE = RECODE_UNTRANSLATABLE # <<<<<<<<<<<<<< * INVALID_INPUT = RECODE_INVALID_INPUT * SYSTEM_ERROR = RECODE_SYSTEM_ERROR */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_error(RECODE_UNTRANSLATABLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNTRANSLATABLE, __pyx_t_3) < 0) __PYX_ERR(1, 482, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":483 * AMBIGUOUS_OUTPUT = RECODE_AMBIGUOUS_OUTPUT * UNTRANSLATABLE = RECODE_UNTRANSLATABLE * INVALID_INPUT = RECODE_INVALID_INPUT # <<<<<<<<<<<<<< * SYSTEM_ERROR = RECODE_SYSTEM_ERROR * USER_ERROR = RECODE_USER_ERROR */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_error(RECODE_INVALID_INPUT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_INVALID_INPUT, __pyx_t_3) < 0) __PYX_ERR(1, 483, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":484 * UNTRANSLATABLE = RECODE_UNTRANSLATABLE * INVALID_INPUT = RECODE_INVALID_INPUT * SYSTEM_ERROR = RECODE_SYSTEM_ERROR # <<<<<<<<<<<<<< * USER_ERROR = RECODE_USER_ERROR * INTERNAL_ERROR = RECODE_INTERNAL_ERROR */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_error(RECODE_SYSTEM_ERROR); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_SYSTEM_ERROR, __pyx_t_3) < 0) __PYX_ERR(1, 484, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":485 * INVALID_INPUT = RECODE_INVALID_INPUT * SYSTEM_ERROR = RECODE_SYSTEM_ERROR * USER_ERROR = RECODE_USER_ERROR # <<<<<<<<<<<<<< * INTERNAL_ERROR = RECODE_INTERNAL_ERROR * MAXIMUM_ERROR = RECODE_MAXIMUM_ERROR */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_error(RECODE_USER_ERROR); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 485, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_USER_ERROR, __pyx_t_3) < 0) __PYX_ERR(1, 485, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":486 * SYSTEM_ERROR = RECODE_SYSTEM_ERROR * USER_ERROR = RECODE_USER_ERROR * INTERNAL_ERROR = RECODE_INTERNAL_ERROR # <<<<<<<<<<<<<< * MAXIMUM_ERROR = RECODE_MAXIMUM_ERROR * */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_error(RECODE_INTERNAL_ERROR); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 486, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_INTERNAL_ERROR, __pyx_t_3) < 0) __PYX_ERR(1, 486, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":487 * USER_ERROR = RECODE_USER_ERROR * INTERNAL_ERROR = RECODE_INTERNAL_ERROR * MAXIMUM_ERROR = RECODE_MAXIMUM_ERROR # <<<<<<<<<<<<<< * * NO_FORMAT = RECODE_NO_FORMAT */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_error(RECODE_MAXIMUM_ERROR); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAXIMUM_ERROR, __pyx_t_3) < 0) __PYX_ERR(1, 487, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":489 * MAXIMUM_ERROR = RECODE_MAXIMUM_ERROR * * NO_FORMAT = RECODE_NO_FORMAT # <<<<<<<<<<<<<< * DECIMAL_FORMAT = RECODE_DECIMAL_FORMAT * OCTAL_FORMAT = RECODE_OCTAL_FORMAT */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_list_format(RECODE_NO_FORMAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_FORMAT, __pyx_t_3) < 0) __PYX_ERR(1, 489, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":490 * * NO_FORMAT = RECODE_NO_FORMAT * DECIMAL_FORMAT = RECODE_DECIMAL_FORMAT # <<<<<<<<<<<<<< * OCTAL_FORMAT = RECODE_OCTAL_FORMAT * HEXADECIMAL_FORMAT = RECODE_HEXADECIMAL_FORMAT */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_list_format(RECODE_DECIMAL_FORMAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_DECIMAL_FORMAT, __pyx_t_3) < 0) __PYX_ERR(1, 490, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":491 * NO_FORMAT = RECODE_NO_FORMAT * DECIMAL_FORMAT = RECODE_DECIMAL_FORMAT * OCTAL_FORMAT = RECODE_OCTAL_FORMAT # <<<<<<<<<<<<<< * HEXADECIMAL_FORMAT = RECODE_HEXADECIMAL_FORMAT * FULL_FORMAT = RECODE_FULL_FORMAT */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_list_format(RECODE_OCTAL_FORMAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_OCTAL_FORMAT, __pyx_t_3) < 0) __PYX_ERR(1, 491, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":492 * DECIMAL_FORMAT = RECODE_DECIMAL_FORMAT * OCTAL_FORMAT = RECODE_OCTAL_FORMAT * HEXADECIMAL_FORMAT = RECODE_HEXADECIMAL_FORMAT # <<<<<<<<<<<<<< * FULL_FORMAT = RECODE_FULL_FORMAT * */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_list_format(RECODE_HEXADECIMAL_FORMAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_HEXADECIMAL_FORMAT, __pyx_t_3) < 0) __PYX_ERR(1, 492, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":493 * OCTAL_FORMAT = RECODE_OCTAL_FORMAT * HEXADECIMAL_FORMAT = RECODE_HEXADECIMAL_FORMAT * FULL_FORMAT = RECODE_FULL_FORMAT # <<<<<<<<<<<<<< * * NO_LANGUAGE = RECODE_NO_LANGUAGE */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_list_format(RECODE_FULL_FORMAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_FULL_FORMAT, __pyx_t_3) < 0) __PYX_ERR(1, 493, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":495 * FULL_FORMAT = RECODE_FULL_FORMAT * * NO_LANGUAGE = RECODE_NO_LANGUAGE # <<<<<<<<<<<<<< * LANGUAGE_C = RECODE_LANGUAGE_C * LANGUAGE_PERL = RECODE_LANGUAGE_PERL */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_programming_language(RECODE_NO_LANGUAGE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 495, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_LANGUAGE, __pyx_t_3) < 0) __PYX_ERR(1, 495, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":496 * * NO_LANGUAGE = RECODE_NO_LANGUAGE * LANGUAGE_C = RECODE_LANGUAGE_C # <<<<<<<<<<<<<< * LANGUAGE_PERL = RECODE_LANGUAGE_PERL * */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_programming_language(RECODE_LANGUAGE_C); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_LANGUAGE_C, __pyx_t_3) < 0) __PYX_ERR(1, 496, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":497 * NO_LANGUAGE = RECODE_NO_LANGUAGE * LANGUAGE_C = RECODE_LANGUAGE_C * LANGUAGE_PERL = RECODE_LANGUAGE_PERL # <<<<<<<<<<<<<< * * NUL = NUL_ */ __pyx_t_3 = __Pyx_PyInt_From_enum__recode_programming_language(RECODE_LANGUAGE_PERL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_LANGUAGE_PERL, __pyx_t_3) < 0) __PYX_ERR(1, 497, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":499 * LANGUAGE_PERL = RECODE_LANGUAGE_PERL * * NUL = NUL_ # <<<<<<<<<<<<<< * STRIP_SIZE = STRIP_SIZE_ * */ __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(NUL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_NUL, __pyx_t_3) < 0) __PYX_ERR(1, 499, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":500 * * NUL = NUL_ * STRIP_SIZE = STRIP_SIZE_ # <<<<<<<<<<<<<< * * SYMBOL_CREATE_CHARSET = SYMBOL_CREATE_CHARSET_ */ __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(STRIP_SIZE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 500, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_STRIP_SIZE, __pyx_t_3) < 0) __PYX_ERR(1, 500, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":502 * STRIP_SIZE = STRIP_SIZE_ * * SYMBOL_CREATE_CHARSET = SYMBOL_CREATE_CHARSET_ # <<<<<<<<<<<<<< * SYMBOL_CREATE_DATA_SURFACE = SYMBOL_CREATE_DATA_SURFACE_ * ALIAS_FIND_AS_CHARSET = ALIAS_FIND_AS_CHARSET_ */ __pyx_t_3 = __Pyx_PyInt_From_enum__alias_find_type(SYMBOL_CREATE_CHARSET); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_SYMBOL_CREATE_CHARSET, __pyx_t_3) < 0) __PYX_ERR(1, 502, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":503 * * SYMBOL_CREATE_CHARSET = SYMBOL_CREATE_CHARSET_ * SYMBOL_CREATE_DATA_SURFACE = SYMBOL_CREATE_DATA_SURFACE_ # <<<<<<<<<<<<<< * ALIAS_FIND_AS_CHARSET = ALIAS_FIND_AS_CHARSET_ * ALIAS_FIND_AS_SURFACE = ALIAS_FIND_AS_SURFACE_ */ __pyx_t_3 = __Pyx_PyInt_From_enum__alias_find_type(SYMBOL_CREATE_DATA_SURFACE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_SYMBOL_CREATE_DATA_SURFACE, __pyx_t_3) < 0) __PYX_ERR(1, 503, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":504 * SYMBOL_CREATE_CHARSET = SYMBOL_CREATE_CHARSET_ * SYMBOL_CREATE_DATA_SURFACE = SYMBOL_CREATE_DATA_SURFACE_ * ALIAS_FIND_AS_CHARSET = ALIAS_FIND_AS_CHARSET_ # <<<<<<<<<<<<<< * ALIAS_FIND_AS_SURFACE = ALIAS_FIND_AS_SURFACE_ * ALIAS_FIND_AS_EITHER = ALIAS_FIND_AS_EITHER_ */ __pyx_t_3 = __Pyx_PyInt_From_enum__alias_find_type(ALIAS_FIND_AS_CHARSET); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_ALIAS_FIND_AS_CHARSET, __pyx_t_3) < 0) __PYX_ERR(1, 504, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":505 * SYMBOL_CREATE_DATA_SURFACE = SYMBOL_CREATE_DATA_SURFACE_ * ALIAS_FIND_AS_CHARSET = ALIAS_FIND_AS_CHARSET_ * ALIAS_FIND_AS_SURFACE = ALIAS_FIND_AS_SURFACE_ # <<<<<<<<<<<<<< * ALIAS_FIND_AS_EITHER = ALIAS_FIND_AS_EITHER_ * */ __pyx_t_3 = __Pyx_PyInt_From_enum__alias_find_type(ALIAS_FIND_AS_SURFACE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_ALIAS_FIND_AS_SURFACE, __pyx_t_3) < 0) __PYX_ERR(1, 505, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":506 * ALIAS_FIND_AS_CHARSET = ALIAS_FIND_AS_CHARSET_ * ALIAS_FIND_AS_SURFACE = ALIAS_FIND_AS_SURFACE_ * ALIAS_FIND_AS_EITHER = ALIAS_FIND_AS_EITHER_ # <<<<<<<<<<<<<< * * xDONE = DONE */ __pyx_t_3 = __Pyx_PyInt_From_enum__alias_find_type(ALIAS_FIND_AS_EITHER); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_ALIAS_FIND_AS_EITHER, __pyx_t_3) < 0) __PYX_ERR(1, 506, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":508 * ALIAS_FIND_AS_EITHER = ALIAS_FIND_AS_EITHER_ * * xDONE = DONE # <<<<<<<<<<<<<< * xELSE = ELSE_ * */ __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(DONE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_xDONE, __pyx_t_3) < 0) __PYX_ERR(1, 508, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":509 * * xDONE = DONE * xELSE = ELSE_ # <<<<<<<<<<<<<< * * REPLACEMENT_CHARACTER = REPLACEMENT_CHARACTER_ */ __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(ELSE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_xELSE, __pyx_t_3) < 0) __PYX_ERR(1, 509, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":511 * xELSE = ELSE_ * * REPLACEMENT_CHARACTER = REPLACEMENT_CHARACTER_ # <<<<<<<<<<<<<< * NOT_A_CHARACTER = NOT_A_CHARACTER_ * BYTE_ORDER_MARK = BYTE_ORDER_MARK_ */ __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(REPLACEMENT_CHARACTER); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_REPLACEMENT_CHARACTER, __pyx_t_3) < 0) __PYX_ERR(1, 511, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":512 * * REPLACEMENT_CHARACTER = REPLACEMENT_CHARACTER_ * NOT_A_CHARACTER = NOT_A_CHARACTER_ # <<<<<<<<<<<<<< * BYTE_ORDER_MARK = BYTE_ORDER_MARK_ * BYTE_ORDER_MARK_SWAPPED = BYTE_ORDER_MARK_SWAPPED_ */ __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(NOT_A_CHARACTER); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_NOT_A_CHARACTER, __pyx_t_3) < 0) __PYX_ERR(1, 512, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":513 * REPLACEMENT_CHARACTER = REPLACEMENT_CHARACTER_ * NOT_A_CHARACTER = NOT_A_CHARACTER_ * BYTE_ORDER_MARK = BYTE_ORDER_MARK_ # <<<<<<<<<<<<<< * BYTE_ORDER_MARK_SWAPPED = BYTE_ORDER_MARK_SWAPPED_ * */ __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(BYTE_ORDER_MARK); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_BYTE_ORDER_MARK, __pyx_t_3) < 0) __PYX_ERR(1, 513, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":514 * NOT_A_CHARACTER = NOT_A_CHARACTER_ * BYTE_ORDER_MARK = BYTE_ORDER_MARK_ * BYTE_ORDER_MARK_SWAPPED = BYTE_ORDER_MARK_SWAPPED_ # <<<<<<<<<<<<<< * * AUTO_ABORT_FLAG = RECODE_AUTO_ABORT_FLAG */ __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(BYTE_ORDER_MARK_SWAPPED); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_BYTE_ORDER_MARK_SWAPPED, __pyx_t_3) < 0) __PYX_ERR(1, 514, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":516 * BYTE_ORDER_MARK_SWAPPED = BYTE_ORDER_MARK_SWAPPED_ * * AUTO_ABORT_FLAG = RECODE_AUTO_ABORT_FLAG # <<<<<<<<<<<<<< * NO_ICONV_FLAG = RECODE_NO_ICONV_FLAG * STRICT_MAPPING_FLAG = RECODE_STRICT_MAPPING_FLAG */ __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(RECODE_AUTO_ABORT_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_AUTO_ABORT_FLAG, __pyx_t_3) < 0) __PYX_ERR(1, 516, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":517 * * AUTO_ABORT_FLAG = RECODE_AUTO_ABORT_FLAG * NO_ICONV_FLAG = RECODE_NO_ICONV_FLAG # <<<<<<<<<<<<<< * STRICT_MAPPING_FLAG = RECODE_STRICT_MAPPING_FLAG * */ __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(RECODE_NO_ICONV_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_ICONV_FLAG, __pyx_t_3) < 0) __PYX_ERR(1, 517, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":518 * AUTO_ABORT_FLAG = RECODE_AUTO_ABORT_FLAG * NO_ICONV_FLAG = RECODE_NO_ICONV_FLAG * STRICT_MAPPING_FLAG = RECODE_STRICT_MAPPING_FLAG # <<<<<<<<<<<<<< * * ## Recode library at OUTER level. */ __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(RECODE_STRICT_MAPPING_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 518, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_STRICT_MAPPING_FLAG, __pyx_t_3) < 0) __PYX_ERR(1, 518, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":545 * recode_delete_outer(self.outer) * * def default_charset(self): # <<<<<<<<<<<<<< * return locale_charset() * */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_5Outer_5default_charset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Outer_default_charset, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Outer, __pyx_n_s_default_charset, __pyx_t_3) < 0) __PYX_ERR(1, 545, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Outer); /* "Recode.pyx":548 * return locale_charset() * * def all_charsets(self): # <<<<<<<<<<<<<< * list = [] * cdef RECODE_SYMBOL symbol */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_5Outer_7all_charsets, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Outer_all_charsets, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Outer, __pyx_n_s_all_charsets, __pyx_t_3) < 0) __PYX_ERR(1, 548, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Outer); /* "Recode.pyx":560 * return list * * def all_surfaces(self): # <<<<<<<<<<<<<< * list = [] * cdef RECODE_SYMBOL symbol */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_5Outer_9all_surfaces, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Outer_all_surfaces, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Outer, __pyx_n_s_all_surfaces, __pyx_t_3) < 0) __PYX_ERR(1, 560, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Outer); /* "Recode.pyx":570 * return list * * def concise_charset(self, format=NO_FORMAT): # <<<<<<<<<<<<<< * ok = recode_list_concise_charset(self.outer, NULL, format) * if not ok: */ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_NO_FORMAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_k_ = __pyx_t_3; __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_NO_FORMAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(1, 570, __pyx_L1_error); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_5Outer_11concise_charset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Outer_concise_charset, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Outer, __pyx_n_s_concise_charset, __pyx_t_3) < 0) __PYX_ERR(1, 570, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Outer); /* "Recode.pyx":575 * raise error * * def full_charset(self): # <<<<<<<<<<<<<< * ok = recode_list_full_charset(self.outer, NULL) * if not ok: */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_5Outer_13full_charset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Outer_full_charset, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__10)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Outer, __pyx_n_s_full_charset, __pyx_t_3) < 0) __PYX_ERR(1, 575, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Outer); /* "Recode.pyx":581 * * # Lazy, all in one call. * def recode(self, char *command, char *input, verbose=False): # <<<<<<<<<<<<<< * request = Request(self) * request.set_verbose(verbose) */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_5Outer_15recode, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Outer_recode, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__13); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Outer, __pyx_n_s_recode, __pyx_t_3) < 0) __PYX_ERR(1, 581, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Outer); /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.outer cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_5Outer_17__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Outer___reduce_cython, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.outer cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.outer cannot be converted to a Python object for pickling" */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_5Outer_19__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Outer___setstate_cython, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":598 * recode_delete_request(self.request) * * def set_verbose(self, flag): # <<<<<<<<<<<<<< * previous = self.request.verbose_flag != 0 * self.request.verbose_flag = int(flag) */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_7Request_5set_verbose, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_set_verbose, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Request, __pyx_n_s_set_verbose, __pyx_t_3) < 0) __PYX_ERR(1, 598, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Request); /* "Recode.pyx":603 * return previous * * def scan(self, char *text): # <<<<<<<<<<<<<< * ok = recode_scan_request(self.request, text) * if not ok: */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_7Request_7scan, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_scan, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Request, __pyx_n_s_scan, __pyx_t_3) < 0) __PYX_ERR(1, 603, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Request); /* "Recode.pyx":608 * raise error * * def pair_sequence(self): # <<<<<<<<<<<<<< * list = [] * cdef recode_step step */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_7Request_9pair_sequence, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_pair_sequence, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Request, __pyx_n_s_pair_sequence, __pyx_t_3) < 0) __PYX_ERR(1, 608, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Request); /* "Recode.pyx":617 * return list * * def format_table(self, int language, char *charset): # <<<<<<<<<<<<<< * cdef RECODE_OUTER outer * cdef bool saved */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_7Request_11format_table, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_format_table, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Request, __pyx_n_s_format_table, __pyx_t_3) < 0) __PYX_ERR(1, 617, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Request); /* "Recode.pyx":629 * raise error * * def string(self, text): # <<<<<<<<<<<<<< * cdef char *input = text * cdef size_t input_len = len(text) */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_7Request_13string, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_string, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Request, __pyx_n_s_string, __pyx_t_3) < 0) __PYX_ERR(1, 629, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Request); /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.request cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_7Request_15__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request___reduce_cython, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.request cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.request cannot be converted to a Python object for pickling" */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_7Request_17__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request___setstate_cython, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":678 * recode_delete_task(self.task) * * def set_byte_order_mark(self, flag): # <<<<<<<<<<<<<< * previous = self.task.byte_order_mark != 0 * self.task.byte_order_mark = int(flag) */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_4Task_5set_byte_order_mark, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Task_set_byte_order_mark, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Task, __pyx_n_s_set_byte_order_mark, __pyx_t_3) < 0) __PYX_ERR(1, 678, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Task); /* "Recode.pyx":683 * return previous * * def get_error(self): # <<<<<<<<<<<<<< * return self.task.error_so_far * */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_4Task_7get_error, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Task_get_error, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Task, __pyx_n_s_get_error, __pyx_t_3) < 0) __PYX_ERR(1, 683, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Task); /* "Recode.pyx":686 * return self.task.error_so_far * * def set_fail_level(self, fail_level): # <<<<<<<<<<<<<< * previous = self.task.fail_level * self.task.fail_level = fail_level */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_4Task_9set_fail_level, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Task_set_fail_level, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 686, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Task, __pyx_n_s_set_fail_level, __pyx_t_3) < 0) __PYX_ERR(1, 686, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Task); /* "Recode.pyx":691 * return previous * * def set_abort_level(self, abort_level): # <<<<<<<<<<<<<< * previous = self.task.abort_level * self.task.abort_level = abort_level */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_4Task_11set_abort_level, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Task_set_abort_level, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Task, __pyx_n_s_set_abort_level, __pyx_t_3) < 0) __PYX_ERR(1, 691, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Task); /* "Recode.pyx":696 * return previous * * def set_input(self, text): # <<<<<<<<<<<<<< * cdef char *input = text * cdef size_t input_len = len(text) */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_4Task_13set_input, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Task_set_input, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Task, __pyx_n_s_set_input, __pyx_t_3) < 0) __PYX_ERR(1, 696, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Task); /* "Recode.pyx":703 * self.task.input.limit = input + input_len * * def get_output(self): # <<<<<<<<<<<<<< * return self.task.output.buffer[:self.task.output.cursor - self.task.output.buffer] * */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_4Task_15get_output, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Task_get_output, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Task, __pyx_n_s_get_output, __pyx_t_3) < 0) __PYX_ERR(1, 703, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Task); /* "Recode.pyx":706 * return self.task.output.buffer[:self.task.output.cursor - self.task.output.buffer] * * def perform(self): # <<<<<<<<<<<<<< * return recode_perform_task(self.task) */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_4Task_17perform, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Task_perform, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6Recode_Task, __pyx_n_s_perform, __pyx_t_3) < 0) __PYX_ERR(1, 706, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; PyType_Modified(__pyx_ptype_6Recode_Task); /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError, "self.task cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_4Task_19__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Task___reduce_cython, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError, "self.task cannot be converted to a Python object for pickling" * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError, "self.task cannot be converted to a Python object for pickling" */ __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6Recode_4Task_21__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Task___setstate_cython, NULL, __pyx_n_s_Recode, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "Recode.pyx":1 * # -*- coding: utf-8 -*- # <<<<<<<<<<<<<< * # Python interface to the Recode C library, for testing. * # Copyright 1996-2008 Free Software Foundation, Inc. */ __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /*--- Wrapped vars code ---*/ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); if (__pyx_m) { if (__pyx_d && stringtab_initialized) { __Pyx_AddTraceback("init Recode", __pyx_clineno, __pyx_lineno, __pyx_filename); } #if !CYTHON_USE_MODULE_STATE Py_CLEAR(__pyx_m); #else Py_DECREF(__pyx_m); if (pystate_addmodule_run) { PyObject *tp, *value, *tb; PyErr_Fetch(&tp, &value, &tb); PyState_RemoveModule(&__pyx_moduledef); PyErr_Restore(tp, value, tb); } #endif } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "init Recode"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); #if CYTHON_PEP489_MULTI_PHASE_INIT return (__pyx_m != NULL) ? 0 : -1; #elif PY_MAJOR_VERSION >= 3 return __pyx_m; #else return; #endif } /* #### Code section: cleanup_globals ### */ /* #### Code section: cleanup_module ### */ /* #### Code section: main_method ### */ /* #### Code section: utility_code_pragmas ### */ #ifdef _MSC_VER #pragma warning( push ) /* Warning 4127: conditional expression is constant * Cython uses constant conditional expressions to allow in inline functions to be optimized at * compile-time, so this warning is not useful */ #pragma warning( disable : 4127 ) #endif /* #### Code section: utility_code_def ### */ /* --- Runtime support code --- */ /* Refnanny */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; void *r = NULL; m = PyImport_ImportModule(modname); if (!m) goto end; p = PyObject_GetAttrString(m, "RefNannyAPI"); if (!p) goto end; r = PyLong_AsVoidPtr(p); end: Py_XDECREF(p); Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } #endif /* PyErrExceptionMatches */ #if CYTHON_FAST_THREAD_STATE static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { Py_ssize_t i, n; n = PyTuple_GET_SIZE(tuple); #if PY_MAJOR_VERSION >= 3 for (i=0; i= 0x030C00A6 PyObject *current_exception = tstate->current_exception; if (unlikely(!current_exception)) return 0; exc_type = (PyObject*) Py_TYPE(current_exception); if (exc_type == err) return 1; #else exc_type = tstate->curexc_type; if (exc_type == err) return 1; if (unlikely(!exc_type)) return 0; #endif #if CYTHON_AVOID_BORROWED_REFS Py_INCREF(exc_type); #endif if (unlikely(PyTuple_Check(err))) { result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); } else { result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); } #if CYTHON_AVOID_BORROWED_REFS Py_DECREF(exc_type); #endif return result; } #endif /* PyErrFetchRestore */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { #if PY_VERSION_HEX >= 0x030C00A6 PyObject *tmp_value; assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); if (value) { #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) #endif PyException_SetTraceback(value, tb); } tmp_value = tstate->current_exception; tstate->current_exception = value; Py_XDECREF(tmp_value); Py_XDECREF(type); Py_XDECREF(tb); #else PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; tstate->curexc_type = type; tstate->curexc_value = value; tstate->curexc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); #endif } static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #if PY_VERSION_HEX >= 0x030C00A6 PyObject* exc_value; exc_value = tstate->current_exception; tstate->current_exception = 0; *value = exc_value; *type = NULL; *tb = NULL; if (exc_value) { *type = (PyObject*) Py_TYPE(exc_value); Py_INCREF(*type); #if CYTHON_COMPILING_IN_CPYTHON *tb = ((PyBaseExceptionObject*) exc_value)->traceback; Py_XINCREF(*tb); #else *tb = PyException_GetTraceback(exc_value); #endif } #else *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; #endif } #endif /* PyObjectGetAttrStr */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro)) return tp->tp_getattro(obj, attr_name); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_getattr)) return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); #endif return PyObject_GetAttr(obj, attr_name); } #endif /* PyObjectGetAttrStrNoError */ #if __PYX_LIMITED_VERSION_HEX < 0x030d00A1 static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) __Pyx_PyErr_Clear(); } #endif static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { PyObject *result; #if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1 (void) PyObject_GetOptionalAttr(obj, attr_name, &result); return result; #else #if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); } #endif result = __Pyx_PyObject_GetAttrStr(obj, attr_name); if (unlikely(!result)) { __Pyx_PyObject_GetAttrStr_ClearAttributeError(); } return result; #endif } /* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name); if (unlikely(!result) && !PyErr_Occurred()) { PyErr_Format(PyExc_NameError, #if PY_MAJOR_VERSION >= 3 "name '%U' is not defined", name); #else "name '%.200s' is not defined", PyString_AS_STRING(name)); #endif } return result; } /* TupleAndListFromArray */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { PyObject *v; Py_ssize_t i; for (i = 0; i < length; i++) { v = dest[i] = src[i]; Py_INCREF(v); } } static CYTHON_INLINE PyObject * __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) { PyObject *res; if (n <= 0) { Py_INCREF(__pyx_empty_tuple); return __pyx_empty_tuple; } res = PyTuple_New(n); if (unlikely(res == NULL)) return NULL; __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); return res; } static CYTHON_INLINE PyObject * __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) { PyObject *res; if (n <= 0) { return PyList_New(0); } res = PyList_New(n); if (unlikely(res == NULL)) return NULL; __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); return res; } #endif /* BytesEquals */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API return PyObject_RichCompareBool(s1, s2, equals); #else if (s1 == s2) { return (equals == Py_EQ); } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { const char *ps1, *ps2; Py_ssize_t length = PyBytes_GET_SIZE(s1); if (length != PyBytes_GET_SIZE(s2)) return (equals == Py_NE); ps1 = PyBytes_AS_STRING(s1); ps2 = PyBytes_AS_STRING(s2); if (ps1[0] != ps2[0]) { return (equals == Py_NE); } else if (length == 1) { return (equals == Py_EQ); } else { int result; #if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) Py_hash_t hash1, hash2; hash1 = ((PyBytesObject*)s1)->ob_shash; hash2 = ((PyBytesObject*)s2)->ob_shash; if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { return (equals == Py_NE); } #endif result = memcmp(ps1, ps2, (size_t)length); return (equals == Py_EQ) ? (result == 0) : (result != 0); } } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { return (equals == Py_NE); } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { return (equals == Py_NE); } else { int result; PyObject* py_result = PyObject_RichCompare(s1, s2, equals); if (!py_result) return -1; result = __Pyx_PyObject_IsTrue(py_result); Py_DECREF(py_result); return result; } #endif } /* UnicodeEquals */ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API return PyObject_RichCompareBool(s1, s2, equals); #else #if PY_MAJOR_VERSION < 3 PyObject* owned_ref = NULL; #endif int s1_is_unicode, s2_is_unicode; if (s1 == s2) { goto return_eq; } s1_is_unicode = PyUnicode_CheckExact(s1); s2_is_unicode = PyUnicode_CheckExact(s2); #if PY_MAJOR_VERSION < 3 if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { owned_ref = PyUnicode_FromObject(s2); if (unlikely(!owned_ref)) return -1; s2 = owned_ref; s2_is_unicode = 1; } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { owned_ref = PyUnicode_FromObject(s1); if (unlikely(!owned_ref)) return -1; s1 = owned_ref; s1_is_unicode = 1; } else if (((!s2_is_unicode) & (!s1_is_unicode))) { return __Pyx_PyBytes_Equals(s1, s2, equals); } #endif if (s1_is_unicode & s2_is_unicode) { Py_ssize_t length; int kind; void *data1, *data2; if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) return -1; length = __Pyx_PyUnicode_GET_LENGTH(s1); if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { goto return_ne; } #if CYTHON_USE_UNICODE_INTERNALS { Py_hash_t hash1, hash2; #if CYTHON_PEP393_ENABLED hash1 = ((PyASCIIObject*)s1)->hash; hash2 = ((PyASCIIObject*)s2)->hash; #else hash1 = ((PyUnicodeObject*)s1)->hash; hash2 = ((PyUnicodeObject*)s2)->hash; #endif if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { goto return_ne; } } #endif kind = __Pyx_PyUnicode_KIND(s1); if (kind != __Pyx_PyUnicode_KIND(s2)) { goto return_ne; } data1 = __Pyx_PyUnicode_DATA(s1); data2 = __Pyx_PyUnicode_DATA(s2); if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { goto return_ne; } else if (length == 1) { goto return_eq; } else { int result = memcmp(data1, data2, (size_t)(length * kind)); #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_EQ) ? (result == 0) : (result != 0); } } else if ((s1 == Py_None) & s2_is_unicode) { goto return_ne; } else if ((s2 == Py_None) & s1_is_unicode) { goto return_ne; } else { int result; PyObject* py_result = PyObject_RichCompare(s1, s2, equals); #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif if (!py_result) return -1; result = __Pyx_PyObject_IsTrue(py_result); Py_DECREF(py_result); return result; } return_eq: #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_EQ); return_ne: #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_NE); #endif } /* fastcall */ #if CYTHON_METH_FASTCALL static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) { Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames); for (i = 0; i < n; i++) { if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i]; } for (i = 0; i < n; i++) { int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ); if (unlikely(eq != 0)) { if (unlikely(eq < 0)) return NULL; return kwvalues[i]; } } return NULL; } #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames); PyObject *dict; dict = PyDict_New(); if (unlikely(!dict)) return NULL; for (i=0; i= 3 "%s() got multiple values for keyword argument '%U'", func_name, kw_name); #else "%s() got multiple values for keyword argument '%s'", func_name, PyString_AsString(kw_name)); #endif } /* ParseKeywords */ static int __Pyx_ParseOptionalKeywords( PyObject *kwds, PyObject *const *kwvalues, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name) { PyObject *key = 0, *value = 0; Py_ssize_t pos = 0; PyObject*** name; PyObject*** first_kw_arg = argnames + num_pos_args; int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)); while (1) { Py_XDECREF(key); key = NULL; Py_XDECREF(value); value = NULL; if (kwds_is_tuple) { Py_ssize_t size; #if CYTHON_ASSUME_SAFE_MACROS size = PyTuple_GET_SIZE(kwds); #else size = PyTuple_Size(kwds); if (size < 0) goto bad; #endif if (pos >= size) break; #if CYTHON_AVOID_BORROWED_REFS key = __Pyx_PySequence_ITEM(kwds, pos); if (!key) goto bad; #elif CYTHON_ASSUME_SAFE_MACROS key = PyTuple_GET_ITEM(kwds, pos); #else key = PyTuple_GetItem(kwds, pos); if (!key) goto bad; #endif value = kwvalues[pos]; pos++; } else { if (!PyDict_Next(kwds, &pos, &key, &value)) break; #if CYTHON_AVOID_BORROWED_REFS Py_INCREF(key); #endif } name = first_kw_arg; while (*name && (**name != key)) name++; if (*name) { values[name-argnames] = value; #if CYTHON_AVOID_BORROWED_REFS Py_INCREF(value); Py_DECREF(key); #endif key = NULL; value = NULL; continue; } #if !CYTHON_AVOID_BORROWED_REFS Py_INCREF(key); #endif Py_INCREF(value); name = first_kw_arg; #if PY_MAJOR_VERSION < 3 if (likely(PyString_Check(key))) { while (*name) { if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) && _PyString_Eq(**name, key)) { values[name-argnames] = value; #if CYTHON_AVOID_BORROWED_REFS value = NULL; #endif break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { if ((**argname == key) || ( (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) && _PyString_Eq(**argname, key))) { goto arg_passed_twice; } argname++; } } } else #endif if (likely(PyUnicode_Check(key))) { while (*name) { int cmp = ( #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : #endif PyUnicode_Compare(**name, key) ); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) { values[name-argnames] = value; #if CYTHON_AVOID_BORROWED_REFS value = NULL; #endif break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { int cmp = (**argname == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : #endif PyUnicode_Compare(**argname, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) goto arg_passed_twice; argname++; } } } else goto invalid_keyword_type; if (kwds2) { if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; } else { goto invalid_keyword; } } Py_XDECREF(key); Py_XDECREF(value); return 0; arg_passed_twice: __Pyx_RaiseDoubleKeywordsError(function_name, key); goto bad; invalid_keyword_type: PyErr_Format(PyExc_TypeError, "%.200s() keywords must be strings", function_name); goto bad; invalid_keyword: #if PY_MAJOR_VERSION < 3 PyErr_Format(PyExc_TypeError, "%.200s() got an unexpected keyword argument '%.200s'", function_name, PyString_AsString(key)); #else PyErr_Format(PyExc_TypeError, "%s() got an unexpected keyword argument '%U'", function_name, key); #endif bad: Py_XDECREF(key); Py_XDECREF(value); return -1; } /* RaiseArgTupleInvalid */ static void __Pyx_RaiseArgtupleInvalid( const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found) { Py_ssize_t num_expected; const char *more_or_less; if (num_found < num_min) { num_expected = num_min; more_or_less = "at least"; } else { num_expected = num_max; more_or_less = "at most"; } if (exact) { more_or_less = "exactly"; } PyErr_Format(PyExc_TypeError, "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", func_name, more_or_less, num_expected, (num_expected == 1) ? "" : "s", num_found); } /* KeywordStringCheck */ static int __Pyx_CheckKeywordStrings( PyObject *kw, const char* function_name, int kw_allowed) { PyObject* key = 0; Py_ssize_t pos = 0; #if CYTHON_COMPILING_IN_PYPY if (!kw_allowed && PyDict_Next(kw, &pos, &key, 0)) goto invalid_keyword; return 1; #else if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kw))) { Py_ssize_t kwsize; #if CYTHON_ASSUME_SAFE_MACROS kwsize = PyTuple_GET_SIZE(kw); #else kwsize = PyTuple_Size(kw); if (kwsize < 0) return 0; #endif if (unlikely(kwsize == 0)) return 1; if (!kw_allowed) { #if CYTHON_ASSUME_SAFE_MACROS key = PyTuple_GET_ITEM(kw, 0); #else key = PyTuple_GetItem(kw, pos); if (!key) return 0; #endif goto invalid_keyword; } #if PY_VERSION_HEX < 0x03090000 for (pos = 0; pos < kwsize; pos++) { #if CYTHON_ASSUME_SAFE_MACROS key = PyTuple_GET_ITEM(kw, pos); #else key = PyTuple_GetItem(kw, pos); if (!key) return 0; #endif if (unlikely(!PyUnicode_Check(key))) goto invalid_keyword_type; } #endif return 1; } while (PyDict_Next(kw, &pos, &key, 0)) { #if PY_MAJOR_VERSION < 3 if (unlikely(!PyString_Check(key))) #endif if (unlikely(!PyUnicode_Check(key))) goto invalid_keyword_type; } if (!kw_allowed && unlikely(key)) goto invalid_keyword; return 1; invalid_keyword_type: PyErr_Format(PyExc_TypeError, "%.200s() keywords must be strings", function_name); return 0; #endif invalid_keyword: #if PY_MAJOR_VERSION < 3 PyErr_Format(PyExc_TypeError, "%.200s() got an unexpected keyword argument '%.200s'", function_name, PyString_AsString(key)); #else PyErr_Format(PyExc_TypeError, "%s() got an unexpected keyword argument '%U'", function_name, key); #endif return 0; } /* PyDictVersioning */ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { PyObject *dict = Py_TYPE(obj)->tp_dict; return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; } static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { PyObject **dictptr = NULL; Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; if (offset) { #if CYTHON_COMPILING_IN_CPYTHON dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); #else dictptr = _PyObject_GetDictPtr(obj); #endif } return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; } static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { PyObject *dict = Py_TYPE(obj)->tp_dict; if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) return 0; return obj_dict_version == __Pyx_get_object_dict_version(obj); } #endif /* GetModuleGlobalName */ #if CYTHON_USE_DICT_VERSIONS static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) #else static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) #endif { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000 result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } else if (unlikely(PyErr_Occurred())) { return NULL; } #elif CYTHON_COMPILING_IN_LIMITED_API if (unlikely(!__pyx_m)) { return NULL; } result = PyObject_GetAttr(__pyx_m, name); if (likely(result)) { return result; } #else result = PyDict_GetItem(__pyx_d, name); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } #endif #else result = PyObject_GetItem(__pyx_d, name); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } PyErr_Clear(); #endif return __Pyx_GetBuiltinName(name); } /* RaiseException */ #if PY_MAJOR_VERSION < 3 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { __Pyx_PyThreadState_declare CYTHON_UNUSED_VAR(cause); Py_XINCREF(type); if (!value || value == Py_None) value = NULL; else Py_INCREF(value); if (!tb || tb == Py_None) tb = NULL; else { Py_INCREF(tb); if (!PyTraceBack_Check(tb)) { PyErr_SetString(PyExc_TypeError, "raise: arg 3 must be a traceback or None"); goto raise_error; } } if (PyType_Check(type)) { #if CYTHON_COMPILING_IN_PYPY if (!value) { Py_INCREF(Py_None); value = Py_None; } #endif PyErr_NormalizeException(&type, &value, &tb); } else { if (value) { PyErr_SetString(PyExc_TypeError, "instance exception may not have a separate value"); goto raise_error; } value = type; type = (PyObject*) Py_TYPE(type); Py_INCREF(type); if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { PyErr_SetString(PyExc_TypeError, "raise: exception class must be a subclass of BaseException"); goto raise_error; } } __Pyx_PyThreadState_assign __Pyx_ErrRestore(type, value, tb); return; raise_error: Py_XDECREF(value); Py_XDECREF(type); Py_XDECREF(tb); return; } #else static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { PyObject* owned_instance = NULL; if (tb == Py_None) { tb = 0; } else if (tb && !PyTraceBack_Check(tb)) { PyErr_SetString(PyExc_TypeError, "raise: arg 3 must be a traceback or None"); goto bad; } if (value == Py_None) value = 0; if (PyExceptionInstance_Check(type)) { if (value) { PyErr_SetString(PyExc_TypeError, "instance exception may not have a separate value"); goto bad; } value = type; type = (PyObject*) Py_TYPE(value); } else if (PyExceptionClass_Check(type)) { PyObject *instance_class = NULL; if (value && PyExceptionInstance_Check(value)) { instance_class = (PyObject*) Py_TYPE(value); if (instance_class != type) { int is_subclass = PyObject_IsSubclass(instance_class, type); if (!is_subclass) { instance_class = NULL; } else if (unlikely(is_subclass == -1)) { goto bad; } else { type = instance_class; } } } if (!instance_class) { PyObject *args; if (!value) args = PyTuple_New(0); else if (PyTuple_Check(value)) { Py_INCREF(value); args = value; } else args = PyTuple_Pack(1, value); if (!args) goto bad; owned_instance = PyObject_Call(type, args, NULL); Py_DECREF(args); if (!owned_instance) goto bad; value = owned_instance; if (!PyExceptionInstance_Check(value)) { PyErr_Format(PyExc_TypeError, "calling %R should have returned an instance of " "BaseException, not %R", type, Py_TYPE(value)); goto bad; } } } else { PyErr_SetString(PyExc_TypeError, "raise: exception class must be a subclass of BaseException"); goto bad; } if (cause) { PyObject *fixed_cause; if (cause == Py_None) { fixed_cause = NULL; } else if (PyExceptionClass_Check(cause)) { fixed_cause = PyObject_CallObject(cause, NULL); if (fixed_cause == NULL) goto bad; } else if (PyExceptionInstance_Check(cause)) { fixed_cause = cause; Py_INCREF(fixed_cause); } else { PyErr_SetString(PyExc_TypeError, "exception causes must derive from " "BaseException"); goto bad; } PyException_SetCause(value, fixed_cause); } PyErr_SetObject(type, value); if (tb) { #if PY_VERSION_HEX >= 0x030C00A6 PyException_SetTraceback(value, tb); #elif CYTHON_FAST_THREAD_STATE PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject* tmp_tb = tstate->curexc_traceback; if (tb != tmp_tb) { Py_INCREF(tb); tstate->curexc_traceback = tb; Py_XDECREF(tmp_tb); } #else PyObject *tmp_type, *tmp_value, *tmp_tb; PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); Py_INCREF(tb); PyErr_Restore(tmp_type, tmp_value, tb); Py_XDECREF(tmp_tb); #endif } bad: Py_XDECREF(owned_instance); return; } #endif /* PyFunctionFastCall */ #if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, PyObject *globals) { PyFrameObject *f; PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject **fastlocals; Py_ssize_t i; PyObject *result; assert(globals != NULL); /* XXX Perhaps we should create a specialized PyFrame_New() that doesn't take locals, but does take builtins without sanity checking them. */ assert(tstate != NULL); f = PyFrame_New(tstate, co, globals, NULL); if (f == NULL) { return NULL; } fastlocals = __Pyx_PyFrame_GetLocalsplus(f); for (i = 0; i < na; i++) { Py_INCREF(*args); fastlocals[i] = *args++; } result = PyEval_EvalFrameEx(f,0); ++tstate->recursion_depth; Py_DECREF(f); --tstate->recursion_depth; return result; } static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); PyObject *globals = PyFunction_GET_GLOBALS(func); PyObject *argdefs = PyFunction_GET_DEFAULTS(func); PyObject *closure; #if PY_MAJOR_VERSION >= 3 PyObject *kwdefs; #endif PyObject *kwtuple, **k; PyObject **d; Py_ssize_t nd; Py_ssize_t nk; PyObject *result; assert(kwargs == NULL || PyDict_Check(kwargs)); nk = kwargs ? PyDict_Size(kwargs) : 0; #if PY_MAJOR_VERSION < 3 if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) { return NULL; } #else if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { return NULL; } #endif if ( #if PY_MAJOR_VERSION >= 3 co->co_kwonlyargcount == 0 && #endif likely(kwargs == NULL || nk == 0) && co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { if (argdefs == NULL && co->co_argcount == nargs) { result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); goto done; } else if (nargs == 0 && argdefs != NULL && co->co_argcount == Py_SIZE(argdefs)) { /* function called with no arguments, but all parameters have a default value: use default values as arguments .*/ args = &PyTuple_GET_ITEM(argdefs, 0); result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); goto done; } } if (kwargs != NULL) { Py_ssize_t pos, i; kwtuple = PyTuple_New(2 * nk); if (kwtuple == NULL) { result = NULL; goto done; } k = &PyTuple_GET_ITEM(kwtuple, 0); pos = i = 0; while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { Py_INCREF(k[i]); Py_INCREF(k[i+1]); i += 2; } nk = i / 2; } else { kwtuple = NULL; k = NULL; } closure = PyFunction_GET_CLOSURE(func); #if PY_MAJOR_VERSION >= 3 kwdefs = PyFunction_GET_KW_DEFAULTS(func); #endif if (argdefs != NULL) { d = &PyTuple_GET_ITEM(argdefs, 0); nd = Py_SIZE(argdefs); } else { d = NULL; nd = 0; } #if PY_MAJOR_VERSION >= 3 result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, args, (int)nargs, k, (int)nk, d, (int)nd, kwdefs, closure); #else result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, args, (int)nargs, k, (int)nk, d, (int)nd, closure); #endif Py_XDECREF(kwtuple); done: Py_LeaveRecursiveCall(); return result; } #endif /* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; ternaryfunc call = Py_TYPE(func)->tp_call; if (unlikely(!call)) return PyObject_Call(func, arg, kw); #if PY_MAJOR_VERSION < 3 if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; #else if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) return NULL; #endif result = (*call)(func, arg, kw); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyObjectCallMethO */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { PyObject *self, *result; PyCFunction cfunc; cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); self = __Pyx_CyOrPyCFunction_GET_SELF(func); #if PY_MAJOR_VERSION < 3 if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; #else if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) return NULL; #endif result = cfunc(self, arg); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyObjectFastCall */ #if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) { PyObject *argstuple; PyObject *result = 0; size_t i; argstuple = PyTuple_New((Py_ssize_t)nargs); if (unlikely(!argstuple)) return NULL; for (i = 0; i < nargs; i++) { Py_INCREF(args[i]); if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad; } result = __Pyx_PyObject_Call(func, argstuple, kwargs); bad: Py_DECREF(argstuple); return result; } #endif static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) { Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); #if CYTHON_COMPILING_IN_CPYTHON if (nargs == 0 && kwargs == NULL) { if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) return __Pyx_PyObject_CallMethO(func, NULL); } else if (nargs == 1 && kwargs == NULL) { if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) return __Pyx_PyObject_CallMethO(func, args[0]); } #endif #if PY_VERSION_HEX < 0x030800B1 #if CYTHON_FAST_PYCCALL if (PyCFunction_Check(func)) { if (kwargs) { return _PyCFunction_FastCallDict(func, args, nargs, kwargs); } else { return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); } } #if PY_VERSION_HEX >= 0x030700A1 if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); } #endif #endif #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); } #endif #endif if (kwargs == NULL) { #if CYTHON_VECTORCALL #if PY_VERSION_HEX < 0x03090000 vectorcallfunc f = _PyVectorcall_Function(func); #else vectorcallfunc f = PyVectorcall_Function(func); #endif if (f) { return f(func, args, (size_t)nargs, NULL); } #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL if (__Pyx_CyFunction_CheckExact(func)) { __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); if (f) return f(func, args, (size_t)nargs, NULL); } #endif } if (nargs == 0) { return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs); } #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); #else return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); #endif } /* PyObjectCallOneArg */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *args[2] = {NULL, arg}; return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); } /* ArgTypeTest */ static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) { __Pyx_TypeName type_name; __Pyx_TypeName obj_type_name; if (unlikely(!type)) { PyErr_SetString(PyExc_SystemError, "Missing type object"); return 0; } else if (exact) { #if PY_MAJOR_VERSION == 2 if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; #endif } else { if (likely(__Pyx_TypeCheck(obj, type))) return 1; } type_name = __Pyx_PyType_GetName(type); obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj)); PyErr_Format(PyExc_TypeError, "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME ", got " __Pyx_FMT_TYPENAME ")", name, type_name, obj_type_name); __Pyx_DECREF_TypeName(type_name); __Pyx_DECREF_TypeName(obj_type_name); return 0; } /* GetException */ #if CYTHON_FAST_THREAD_STATE static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) #endif { PyObject *local_type = NULL, *local_value, *local_tb = NULL; #if CYTHON_FAST_THREAD_STATE PyObject *tmp_type, *tmp_value, *tmp_tb; #if PY_VERSION_HEX >= 0x030C00A6 local_value = tstate->current_exception; tstate->current_exception = 0; if (likely(local_value)) { local_type = (PyObject*) Py_TYPE(local_value); Py_INCREF(local_type); local_tb = PyException_GetTraceback(local_value); } #else local_type = tstate->curexc_type; local_value = tstate->curexc_value; local_tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; #endif #else PyErr_Fetch(&local_type, &local_value, &local_tb); #endif PyErr_NormalizeException(&local_type, &local_value, &local_tb); #if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6 if (unlikely(tstate->current_exception)) #elif CYTHON_FAST_THREAD_STATE if (unlikely(tstate->curexc_type)) #else if (unlikely(PyErr_Occurred())) #endif goto bad; #if PY_MAJOR_VERSION >= 3 if (local_tb) { if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) goto bad; } #endif Py_XINCREF(local_tb); Py_XINCREF(local_type); Py_XINCREF(local_value); *type = local_type; *value = local_value; *tb = local_tb; #if CYTHON_FAST_THREAD_STATE #if CYTHON_USE_EXC_INFO_STACK { _PyErr_StackItem *exc_info = tstate->exc_info; #if PY_VERSION_HEX >= 0x030B00a4 tmp_value = exc_info->exc_value; exc_info->exc_value = local_value; tmp_type = NULL; tmp_tb = NULL; Py_XDECREF(local_type); Py_XDECREF(local_tb); #else tmp_type = exc_info->exc_type; tmp_value = exc_info->exc_value; tmp_tb = exc_info->exc_traceback; exc_info->exc_type = local_type; exc_info->exc_value = local_value; exc_info->exc_traceback = local_tb; #endif } #else tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = local_type; tstate->exc_value = local_value; tstate->exc_traceback = local_tb; #endif Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); #else PyErr_SetExcInfo(local_type, local_value, local_tb); #endif return 0; bad: *type = 0; *value = 0; *tb = 0; Py_XDECREF(local_type); Py_XDECREF(local_value); Py_XDECREF(local_tb); return -1; } /* SwapException */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 _PyErr_StackItem *exc_info = tstate->exc_info; tmp_value = exc_info->exc_value; exc_info->exc_value = *value; if (tmp_value == NULL || tmp_value == Py_None) { Py_XDECREF(tmp_value); tmp_value = NULL; tmp_type = NULL; tmp_tb = NULL; } else { tmp_type = (PyObject*) Py_TYPE(tmp_value); Py_INCREF(tmp_type); #if CYTHON_COMPILING_IN_CPYTHON tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; Py_XINCREF(tmp_tb); #else tmp_tb = PyException_GetTraceback(tmp_value); #endif } #elif CYTHON_USE_EXC_INFO_STACK _PyErr_StackItem *exc_info = tstate->exc_info; tmp_type = exc_info->exc_type; tmp_value = exc_info->exc_value; tmp_tb = exc_info->exc_traceback; exc_info->exc_type = *type; exc_info->exc_value = *value; exc_info->exc_traceback = *tb; #else tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = *type; tstate->exc_value = *value; tstate->exc_traceback = *tb; #endif *type = tmp_type; *value = tmp_value; *tb = tmp_tb; } #else static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); PyErr_SetExcInfo(*type, *value, *tb); *type = tmp_type; *value = tmp_value; *tb = tmp_tb; } #endif /* GetTopmostException */ #if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate) { _PyErr_StackItem *exc_info = tstate->exc_info; while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && exc_info->previous_item != NULL) { exc_info = exc_info->previous_item; } return exc_info; } #endif /* SaveResetException */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); PyObject *exc_value = exc_info->exc_value; if (exc_value == NULL || exc_value == Py_None) { *value = NULL; *type = NULL; *tb = NULL; } else { *value = exc_value; Py_INCREF(*value); *type = (PyObject*) Py_TYPE(exc_value); Py_INCREF(*type); *tb = PyException_GetTraceback(exc_value); } #elif CYTHON_USE_EXC_INFO_STACK _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); *type = exc_info->exc_type; *value = exc_info->exc_value; *tb = exc_info->exc_traceback; Py_XINCREF(*type); Py_XINCREF(*value); Py_XINCREF(*tb); #else *type = tstate->exc_type; *value = tstate->exc_value; *tb = tstate->exc_traceback; Py_XINCREF(*type); Py_XINCREF(*value); Py_XINCREF(*tb); #endif } static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 _PyErr_StackItem *exc_info = tstate->exc_info; PyObject *tmp_value = exc_info->exc_value; exc_info->exc_value = value; Py_XDECREF(tmp_value); Py_XDECREF(type); Py_XDECREF(tb); #else PyObject *tmp_type, *tmp_value, *tmp_tb; #if CYTHON_USE_EXC_INFO_STACK _PyErr_StackItem *exc_info = tstate->exc_info; tmp_type = exc_info->exc_type; tmp_value = exc_info->exc_value; tmp_tb = exc_info->exc_traceback; exc_info->exc_type = type; exc_info->exc_value = value; exc_info->exc_traceback = tb; #else tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = type; tstate->exc_value = value; tstate->exc_traceback = tb; #endif Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); #endif } #endif /* FixUpExtensionType */ #if CYTHON_USE_TYPE_SPECS static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { #if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API CYTHON_UNUSED_VAR(spec); CYTHON_UNUSED_VAR(type); #else const PyType_Slot *slot = spec->slots; while (slot && slot->slot && slot->slot != Py_tp_members) slot++; if (slot && slot->slot == Py_tp_members) { int changed = 0; #if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON) const #endif PyMemberDef *memb = (PyMemberDef*) slot->pfunc; while (memb && memb->name) { if (memb->name[0] == '_' && memb->name[1] == '_') { #if PY_VERSION_HEX < 0x030900b1 if (strcmp(memb->name, "__weaklistoffset__") == 0) { assert(memb->type == T_PYSSIZET); assert(memb->flags == READONLY); type->tp_weaklistoffset = memb->offset; changed = 1; } else if (strcmp(memb->name, "__dictoffset__") == 0) { assert(memb->type == T_PYSSIZET); assert(memb->flags == READONLY); type->tp_dictoffset = memb->offset; changed = 1; } #if CYTHON_METH_FASTCALL else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { assert(memb->type == T_PYSSIZET); assert(memb->flags == READONLY); #if PY_VERSION_HEX >= 0x030800b4 type->tp_vectorcall_offset = memb->offset; #else type->tp_print = (printfunc) memb->offset; #endif changed = 1; } #endif #else if ((0)); #endif #if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON else if (strcmp(memb->name, "__module__") == 0) { PyObject *descr; assert(memb->type == T_OBJECT); assert(memb->flags == 0 || memb->flags == READONLY); descr = PyDescr_NewMember(type, memb); if (unlikely(!descr)) return -1; if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) { Py_DECREF(descr); return -1; } Py_DECREF(descr); changed = 1; } #endif } memb++; } if (changed) PyType_Modified(type); } #endif return 0; } #endif /* PyObjectCallNoArg */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { PyObject *arg[2] = {NULL, NULL}; return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); } /* PyObjectGetMethod */ static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { PyObject *attr; #if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP __Pyx_TypeName type_name; PyTypeObject *tp = Py_TYPE(obj); PyObject *descr; descrgetfunc f = NULL; PyObject **dictptr, *dict; int meth_found = 0; assert (*method == NULL); if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { attr = __Pyx_PyObject_GetAttrStr(obj, name); goto try_unpack; } if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { return 0; } descr = _PyType_Lookup(tp, name); if (likely(descr != NULL)) { Py_INCREF(descr); #if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) #elif PY_MAJOR_VERSION >= 3 #ifdef __Pyx_CyFunction_USED if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) #else if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) #endif #else #ifdef __Pyx_CyFunction_USED if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr))) #else if (likely(PyFunction_Check(descr))) #endif #endif { meth_found = 1; } else { f = Py_TYPE(descr)->tp_descr_get; if (f != NULL && PyDescr_IsData(descr)) { attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); Py_DECREF(descr); goto try_unpack; } } } dictptr = _PyObject_GetDictPtr(obj); if (dictptr != NULL && (dict = *dictptr) != NULL) { Py_INCREF(dict); attr = __Pyx_PyDict_GetItemStr(dict, name); if (attr != NULL) { Py_INCREF(attr); Py_DECREF(dict); Py_XDECREF(descr); goto try_unpack; } Py_DECREF(dict); } if (meth_found) { *method = descr; return 1; } if (f != NULL) { attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); Py_DECREF(descr); goto try_unpack; } if (likely(descr != NULL)) { *method = descr; return 0; } type_name = __Pyx_PyType_GetName(tp); PyErr_Format(PyExc_AttributeError, #if PY_MAJOR_VERSION >= 3 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", type_name, name); #else "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", type_name, PyString_AS_STRING(name)); #endif __Pyx_DECREF_TypeName(type_name); return 0; #else attr = __Pyx_PyObject_GetAttrStr(obj, name); goto try_unpack; #endif try_unpack: #if CYTHON_UNPACK_METHODS if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { PyObject *function = PyMethod_GET_FUNCTION(attr); Py_INCREF(function); Py_DECREF(attr); *method = function; return 1; } #endif *method = attr; return 0; } /* PyObjectCallMethod0 */ static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { PyObject *method = NULL, *result = NULL; int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); if (likely(is_method)) { result = __Pyx_PyObject_CallOneArg(method, obj); Py_DECREF(method); return result; } if (unlikely(!method)) goto bad; result = __Pyx_PyObject_CallNoArg(method); Py_DECREF(method); bad: return result; } /* ValidateBasesTuple */ #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { Py_ssize_t i, n; #if CYTHON_ASSUME_SAFE_MACROS n = PyTuple_GET_SIZE(bases); #else n = PyTuple_Size(bases); if (n < 0) return -1; #endif for (i = 1; i < n; i++) { #if CYTHON_AVOID_BORROWED_REFS PyObject *b0 = PySequence_GetItem(bases, i); if (!b0) return -1; #elif CYTHON_ASSUME_SAFE_MACROS PyObject *b0 = PyTuple_GET_ITEM(bases, i); #else PyObject *b0 = PyTuple_GetItem(bases, i); if (!b0) return -1; #endif PyTypeObject *b; #if PY_MAJOR_VERSION < 3 if (PyClass_Check(b0)) { PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class", PyString_AS_STRING(((PyClassObject*)b0)->cl_name)); #if CYTHON_AVOID_BORROWED_REFS Py_DECREF(b0); #endif return -1; } #endif b = (PyTypeObject*) b0; if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) { __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); PyErr_Format(PyExc_TypeError, "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); __Pyx_DECREF_TypeName(b_name); #if CYTHON_AVOID_BORROWED_REFS Py_DECREF(b0); #endif return -1; } if (dictoffset == 0) { Py_ssize_t b_dictoffset = 0; #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY b_dictoffset = b->tp_dictoffset; #else PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); if (!py_b_dictoffset) goto dictoffset_return; b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); Py_DECREF(py_b_dictoffset); if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; #endif if (b_dictoffset) { { __Pyx_TypeName b_name = __Pyx_PyType_GetName(b); PyErr_Format(PyExc_TypeError, "extension type '%.200s' has no __dict__ slot, " "but base type '" __Pyx_FMT_TYPENAME "' has: " "either add 'cdef dict __dict__' to the extension type " "or add '__slots__ = [...]' to the base type", type_name, b_name); __Pyx_DECREF_TypeName(b_name); } #if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY) dictoffset_return: #endif #if CYTHON_AVOID_BORROWED_REFS Py_DECREF(b0); #endif return -1; } } #if CYTHON_AVOID_BORROWED_REFS Py_DECREF(b0); #endif } return 0; } #endif /* PyType_Ready */ static int __Pyx_PyType_Ready(PyTypeObject *t) { #if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION) (void)__Pyx_PyObject_CallMethod0; #if CYTHON_USE_TYPE_SPECS (void)__Pyx_validate_bases_tuple; #endif return PyType_Ready(t); #else int r; PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) return -1; #if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) { int gc_was_enabled; #if PY_VERSION_HEX >= 0x030A00b1 gc_was_enabled = PyGC_Disable(); (void)__Pyx_PyObject_CallMethod0; #else PyObject *ret, *py_status; PyObject *gc = NULL; #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) gc = PyImport_GetModule(__pyx_kp_u_gc); #endif if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc); if (unlikely(!gc)) return -1; py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled); if (unlikely(!py_status)) { Py_DECREF(gc); return -1; } gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); Py_DECREF(py_status); if (gc_was_enabled > 0) { ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable); if (unlikely(!ret)) { Py_DECREF(gc); return -1; } Py_DECREF(ret); } else if (unlikely(gc_was_enabled == -1)) { Py_DECREF(gc); return -1; } #endif t->tp_flags |= Py_TPFLAGS_HEAPTYPE; #if PY_VERSION_HEX >= 0x030A0000 t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; #endif #else (void)__Pyx_PyObject_CallMethod0; #endif r = PyType_Ready(t); #if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION) t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; #if PY_VERSION_HEX >= 0x030A00b1 if (gc_was_enabled) PyGC_Enable(); #else if (gc_was_enabled) { PyObject *tp, *v, *tb; PyErr_Fetch(&tp, &v, &tb); ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable); if (likely(ret || r == -1)) { Py_XDECREF(ret); PyErr_Restore(tp, v, tb); } else { Py_XDECREF(tp); Py_XDECREF(v); Py_XDECREF(tb); r = -1; } } Py_DECREF(gc); #endif } #endif return r; #endif } /* PyObject_GenericGetAttrNoDict */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp); PyErr_Format(PyExc_AttributeError, #if PY_MAJOR_VERSION >= 3 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", type_name, attr_name); #else "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'", type_name, PyString_AS_STRING(attr_name)); #endif __Pyx_DECREF_TypeName(type_name); return NULL; } static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { PyObject *descr; PyTypeObject *tp = Py_TYPE(obj); if (unlikely(!PyString_Check(attr_name))) { return PyObject_GenericGetAttr(obj, attr_name); } assert(!tp->tp_dictoffset); descr = _PyType_Lookup(tp, attr_name); if (unlikely(!descr)) { return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); } Py_INCREF(descr); #if PY_MAJOR_VERSION < 3 if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) #endif { descrgetfunc f = Py_TYPE(descr)->tp_descr_get; if (unlikely(f)) { PyObject *res = f(descr, obj, (PyObject *)tp); Py_DECREF(descr); return res; } } return descr; } #endif /* PyObject_GenericGetAttr */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { return PyObject_GenericGetAttr(obj, attr_name); } return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); } #endif /* SetupReduce */ #if !CYTHON_COMPILING_IN_LIMITED_API static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { int ret; PyObject *name_attr; name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_n_s_name); if (likely(name_attr)) { ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); } else { ret = -1; } if (unlikely(ret < 0)) { PyErr_Clear(); ret = 0; } Py_XDECREF(name_attr); return ret; } static int __Pyx_setup_reduce(PyObject* type_obj) { int ret = 0; PyObject *object_reduce = NULL; PyObject *object_getstate = NULL; PyObject *object_reduce_ex = NULL; PyObject *reduce = NULL; PyObject *reduce_ex = NULL; PyObject *reduce_cython = NULL; PyObject *setstate = NULL; PyObject *setstate_cython = NULL; PyObject *getstate = NULL; #if CYTHON_USE_PYTYPE_LOOKUP getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate); #else getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate); if (!getstate && PyErr_Occurred()) { goto __PYX_BAD; } #endif if (getstate) { #if CYTHON_USE_PYTYPE_LOOKUP object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate); #else object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate); if (!object_getstate && PyErr_Occurred()) { goto __PYX_BAD; } #endif if (object_getstate != getstate) { goto __PYX_GOOD; } } #if CYTHON_USE_PYTYPE_LOOKUP object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; #else object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; #endif reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; if (reduce_ex == object_reduce_ex) { #if CYTHON_USE_PYTYPE_LOOKUP object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; #else object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; #endif reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); if (likely(reduce_cython)) { ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; } else if (reduce == object_reduce || PyErr_Occurred()) { goto __PYX_BAD; } setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate); if (!setstate) PyErr_Clear(); if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); if (likely(setstate_cython)) { ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; } else if (!setstate || PyErr_Occurred()) { goto __PYX_BAD; } } PyType_Modified((PyTypeObject*)type_obj); } } goto __PYX_GOOD; __PYX_BAD: if (!PyErr_Occurred()) { __Pyx_TypeName type_obj_name = __Pyx_PyType_GetName((PyTypeObject*)type_obj); PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name); __Pyx_DECREF_TypeName(type_obj_name); } ret = -1; __PYX_GOOD: #if !CYTHON_USE_PYTYPE_LOOKUP Py_XDECREF(object_reduce); Py_XDECREF(object_reduce_ex); Py_XDECREF(object_getstate); Py_XDECREF(getstate); #endif Py_XDECREF(reduce); Py_XDECREF(reduce_ex); Py_XDECREF(reduce_cython); Py_XDECREF(setstate); Py_XDECREF(setstate_cython); return ret; } #endif /* Py3UpdateBases */ static PyObject* __Pyx_PEP560_update_bases(PyObject *bases) { Py_ssize_t i, j, size_bases; PyObject *base, *meth, *new_base, *result, *new_bases = NULL; size_bases = PyTuple_GET_SIZE(bases); for (i = 0; i < size_bases; i++) { base = PyTuple_GET_ITEM(bases, i); if (PyType_Check(base)) { if (new_bases) { if (PyList_Append(new_bases, base) < 0) { goto error; } } continue; } meth = __Pyx_PyObject_GetAttrStrNoError(base, __pyx_n_s_mro_entries); if (!meth && PyErr_Occurred()) { goto error; } if (!meth) { if (new_bases) { if (PyList_Append(new_bases, base) < 0) { goto error; } } continue; } new_base = __Pyx_PyObject_CallOneArg(meth, bases); Py_DECREF(meth); if (!new_base) { goto error; } if (!PyTuple_Check(new_base)) { PyErr_SetString(PyExc_TypeError, "__mro_entries__ must return a tuple"); Py_DECREF(new_base); goto error; } if (!new_bases) { if (!(new_bases = PyList_New(i))) { goto error; } for (j = 0; j < i; j++) { base = PyTuple_GET_ITEM(bases, j); PyList_SET_ITEM(new_bases, j, base); Py_INCREF(base); } } j = PyList_GET_SIZE(new_bases); if (PyList_SetSlice(new_bases, j, j, new_base) < 0) { goto error; } Py_DECREF(new_base); } if (!new_bases) { Py_INCREF(bases); return bases; } result = PyList_AsTuple(new_bases); Py_DECREF(new_bases); return result; error: Py_XDECREF(new_bases); return NULL; } /* CalculateMetaclass */ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { Py_ssize_t i, nbases; #if CYTHON_ASSUME_SAFE_MACROS nbases = PyTuple_GET_SIZE(bases); #else nbases = PyTuple_Size(bases); if (nbases < 0) return NULL; #endif for (i=0; i < nbases; i++) { PyTypeObject *tmptype; #if CYTHON_ASSUME_SAFE_MACROS PyObject *tmp = PyTuple_GET_ITEM(bases, i); #else PyObject *tmp = PyTuple_GetItem(bases, i); if (!tmp) return NULL; #endif tmptype = Py_TYPE(tmp); #if PY_MAJOR_VERSION < 3 if (tmptype == &PyClass_Type) continue; #endif if (!metaclass) { metaclass = tmptype; continue; } if (PyType_IsSubtype(metaclass, tmptype)) continue; if (PyType_IsSubtype(tmptype, metaclass)) { metaclass = tmptype; continue; } PyErr_SetString(PyExc_TypeError, "metaclass conflict: " "the metaclass of a derived class " "must be a (non-strict) subclass " "of the metaclasses of all its bases"); return NULL; } if (!metaclass) { #if PY_MAJOR_VERSION < 3 metaclass = &PyClass_Type; #else metaclass = &PyType_Type; #endif } Py_INCREF((PyObject*) metaclass); return (PyObject*) metaclass; } /* PyObjectCall2Args */ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { PyObject *args[3] = {NULL, arg1, arg2}; return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); } /* PyObjectLookupSpecial */ #if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { PyObject *res; PyTypeObject *tp = Py_TYPE(obj); #if PY_MAJOR_VERSION < 3 if (unlikely(PyInstance_Check(obj))) return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name); #endif res = _PyType_Lookup(tp, attr_name); if (likely(res)) { descrgetfunc f = Py_TYPE(res)->tp_descr_get; if (!f) { Py_INCREF(res); } else { res = f(res, obj, (PyObject *)tp); } } else if (with_error) { PyErr_SetObject(PyExc_AttributeError, attr_name); } return res; } #endif /* Py3ClassCreate */ static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { PyObject *ns; if (metaclass) { PyObject *prep = __Pyx_PyObject_GetAttrStrNoError(metaclass, __pyx_n_s_prepare); if (prep) { PyObject *pargs[3] = {NULL, name, bases}; ns = __Pyx_PyObject_FastCallDict(prep, pargs+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw); Py_DECREF(prep); } else { if (unlikely(PyErr_Occurred())) return NULL; ns = PyDict_New(); } } else { ns = PyDict_New(); } if (unlikely(!ns)) return NULL; if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; #if PY_VERSION_HEX >= 0x03030000 if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; #else CYTHON_MAYBE_UNUSED_VAR(qualname); #endif if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; return ns; bad: Py_DECREF(ns); return NULL; } #if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS static int __Pyx_SetNamesPEP487(PyObject *type_obj) { PyTypeObject *type = (PyTypeObject*) type_obj; PyObject *names_to_set, *key, *value, *set_name, *tmp; Py_ssize_t i = 0; #if CYTHON_USE_TYPE_SLOTS names_to_set = PyDict_Copy(type->tp_dict); #else { PyObject *d = PyObject_GetAttr(type_obj, __pyx_n_s_dict); names_to_set = NULL; if (likely(d)) { PyObject *names_to_set = PyDict_New(); int ret = likely(names_to_set) ? PyDict_Update(names_to_set, d) : -1; Py_DECREF(d); if (unlikely(ret < 0)) Py_CLEAR(names_to_set); } } #endif if (unlikely(names_to_set == NULL)) goto bad; while (PyDict_Next(names_to_set, &i, &key, &value)) { set_name = __Pyx_PyObject_LookupSpecialNoError(value, __pyx_n_s_set_name); if (unlikely(set_name != NULL)) { tmp = __Pyx_PyObject_Call2Args(set_name, type_obj, key); Py_DECREF(set_name); if (unlikely(tmp == NULL)) { __Pyx_TypeName value_type_name = __Pyx_PyType_GetName(Py_TYPE(value)); __Pyx_TypeName type_name = __Pyx_PyType_GetName(type); PyErr_Format(PyExc_RuntimeError, #if PY_MAJOR_VERSION >= 3 "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %R " "in '" __Pyx_FMT_TYPENAME "'", value_type_name, key, type_name); #else "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %.100s in '" __Pyx_FMT_TYPENAME "'", value_type_name, PyString_Check(key) ? PyString_AS_STRING(key) : "?", type_name); #endif goto bad; } else { Py_DECREF(tmp); } } else if (unlikely(PyErr_Occurred())) { goto bad; } } Py_DECREF(names_to_set); return 0; bad: Py_XDECREF(names_to_set); return -1; } static PyObject *__Pyx_InitSubclassPEP487(PyObject *type_obj, PyObject *mkw) { #if CYTHON_USE_TYPE_SLOTS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS PyTypeObject *type = (PyTypeObject*) type_obj; PyObject *mro = type->tp_mro; Py_ssize_t i, nbases; if (unlikely(!mro)) goto done; (void) &__Pyx_GetBuiltinName; Py_INCREF(mro); nbases = PyTuple_GET_SIZE(mro); assert(PyTuple_GET_ITEM(mro, 0) == type_obj); for (i = 1; i < nbases-1; i++) { PyObject *base, *dict, *meth; base = PyTuple_GET_ITEM(mro, i); dict = ((PyTypeObject *)base)->tp_dict; meth = __Pyx_PyDict_GetItemStrWithError(dict, __pyx_n_s_init_subclass); if (unlikely(meth)) { descrgetfunc f = Py_TYPE(meth)->tp_descr_get; PyObject *res; Py_INCREF(meth); if (likely(f)) { res = f(meth, NULL, type_obj); Py_DECREF(meth); if (unlikely(!res)) goto bad; meth = res; } res = __Pyx_PyObject_FastCallDict(meth, NULL, 0, mkw); Py_DECREF(meth); if (unlikely(!res)) goto bad; Py_DECREF(res); goto done; } else if (unlikely(PyErr_Occurred())) { goto bad; } } done: Py_XDECREF(mro); return type_obj; bad: Py_XDECREF(mro); Py_DECREF(type_obj); return NULL; #else PyObject *super_type, *super, *func, *res; #if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) super_type = __Pyx_GetBuiltinName(__pyx_n_s_super); #else super_type = (PyObject*) &PySuper_Type; (void) &__Pyx_GetBuiltinName; #endif super = likely(super_type) ? __Pyx_PyObject_Call2Args(super_type, type_obj, type_obj) : NULL; #if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type) Py_XDECREF(super_type); #endif if (unlikely(!super)) { Py_CLEAR(type_obj); goto done; } func = __Pyx_PyObject_GetAttrStrNoError(super, __pyx_n_s_init_subclass); Py_DECREF(super); if (likely(!func)) { if (unlikely(PyErr_Occurred())) Py_CLEAR(type_obj); goto done; } res = __Pyx_PyObject_FastCallDict(func, NULL, 0, mkw); Py_DECREF(func); if (unlikely(!res)) Py_CLEAR(type_obj); Py_XDECREF(res); done: return type_obj; #endif } #endif static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass) { PyObject *result; PyObject *owned_metaclass = NULL; PyObject *margs[4] = {NULL, name, bases, dict}; if (allow_py2_metaclass) { owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); if (owned_metaclass) { metaclass = owned_metaclass; } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { PyErr_Clear(); } else { return NULL; } } if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); Py_XDECREF(owned_metaclass); if (unlikely(!metaclass)) return NULL; owned_metaclass = metaclass; } result = __Pyx_PyObject_FastCallDict(metaclass, margs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, #if PY_VERSION_HEX < 0x030600A4 (metaclass == (PyObject*)&PyType_Type) ? NULL : mkw #else mkw #endif ); Py_XDECREF(owned_metaclass); #if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS if (likely(result) && likely(PyType_Check(result))) { if (unlikely(__Pyx_SetNamesPEP487(result) < 0)) { Py_CLEAR(result); } else { result = __Pyx_InitSubclassPEP487(result, mkw); } } #else (void) &__Pyx_GetBuiltinName; #endif return result; } /* FetchSharedCythonModule */ static PyObject *__Pyx_FetchSharedCythonABIModule(void) { return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME); } /* FetchCommonType */ static int __Pyx_VerifyCachedType(PyObject *cached_type, const char *name, Py_ssize_t basicsize, Py_ssize_t expected_basicsize) { if (!PyType_Check(cached_type)) { PyErr_Format(PyExc_TypeError, "Shared Cython type %.200s is not a type object", name); return -1; } if (basicsize != expected_basicsize) { PyErr_Format(PyExc_TypeError, "Shared Cython type %.200s has the wrong size, try recompiling", name); return -1; } return 0; } #if !CYTHON_USE_TYPE_SPECS static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { PyObject* abi_module; const char* object_name; PyTypeObject *cached_type = NULL; abi_module = __Pyx_FetchSharedCythonABIModule(); if (!abi_module) return NULL; object_name = strrchr(type->tp_name, '.'); object_name = object_name ? object_name+1 : type->tp_name; cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name); if (cached_type) { if (__Pyx_VerifyCachedType( (PyObject *)cached_type, object_name, cached_type->tp_basicsize, type->tp_basicsize) < 0) { goto bad; } goto done; } if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; PyErr_Clear(); if (PyType_Ready(type) < 0) goto bad; if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0) goto bad; Py_INCREF(type); cached_type = type; done: Py_DECREF(abi_module); return cached_type; bad: Py_XDECREF(cached_type); cached_type = NULL; goto done; } #else static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) { PyObject *abi_module, *cached_type = NULL; const char* object_name = strrchr(spec->name, '.'); object_name = object_name ? object_name+1 : spec->name; abi_module = __Pyx_FetchSharedCythonABIModule(); if (!abi_module) return NULL; cached_type = PyObject_GetAttrString(abi_module, object_name); if (cached_type) { Py_ssize_t basicsize; #if CYTHON_COMPILING_IN_LIMITED_API PyObject *py_basicsize; py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); if (unlikely(!py_basicsize)) goto bad; basicsize = PyLong_AsSsize_t(py_basicsize); Py_DECREF(py_basicsize); py_basicsize = 0; if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad; #else basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1; #endif if (__Pyx_VerifyCachedType( cached_type, object_name, basicsize, spec->basicsize) < 0) { goto bad; } goto done; } if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; PyErr_Clear(); CYTHON_UNUSED_VAR(module); cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases); if (unlikely(!cached_type)) goto bad; if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad; done: Py_DECREF(abi_module); assert(cached_type == NULL || PyType_Check(cached_type)); return (PyTypeObject *) cached_type; bad: Py_XDECREF(cached_type); cached_type = NULL; goto done; } #endif /* PyVectorcallFastCallDict */ #if CYTHON_METH_FASTCALL static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) { PyObject *res = NULL; PyObject *kwnames; PyObject **newargs; PyObject **kwvalues; Py_ssize_t i, pos; size_t j; PyObject *key, *value; unsigned long keys_are_strings; Py_ssize_t nkw = PyDict_GET_SIZE(kw); newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); if (unlikely(newargs == NULL)) { PyErr_NoMemory(); return NULL; } for (j = 0; j < nargs; j++) newargs[j] = args[j]; kwnames = PyTuple_New(nkw); if (unlikely(kwnames == NULL)) { PyMem_Free(newargs); return NULL; } kwvalues = newargs + nargs; pos = i = 0; keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; while (PyDict_Next(kw, &pos, &key, &value)) { keys_are_strings &= Py_TYPE(key)->tp_flags; Py_INCREF(key); Py_INCREF(value); PyTuple_SET_ITEM(kwnames, i, key); kwvalues[i] = value; i++; } if (unlikely(!keys_are_strings)) { PyErr_SetString(PyExc_TypeError, "keywords must be strings"); goto cleanup; } res = vc(func, newargs, nargs, kwnames); cleanup: Py_DECREF(kwnames); for (i = 0; i < nkw; i++) Py_DECREF(kwvalues[i]); PyMem_Free(newargs); return res; } static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) { if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) { return vc(func, args, nargs, NULL); } return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); } #endif /* CythonFunctionShared */ #if CYTHON_COMPILING_IN_LIMITED_API static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { if (__Pyx_CyFunction_Check(func)) { return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; } else if (PyCFunction_Check(func)) { return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; } return 0; } #else static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) { return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; } #endif static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API __Pyx_Py_XDECREF_SET( __Pyx_CyFunction_GetClassObj(f), ((classobj) ? __Pyx_NewRef(classobj) : NULL)); #else __Pyx_Py_XDECREF_SET( ((PyCMethodObject *) (f))->mm_class, (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); #endif } static PyObject * __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) { CYTHON_UNUSED_VAR(closure); if (unlikely(op->func_doc == NULL)) { #if CYTHON_COMPILING_IN_LIMITED_API op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); if (unlikely(!op->func_doc)) return NULL; #else if (((PyCFunctionObject*)op)->m_ml->ml_doc) { #if PY_MAJOR_VERSION >= 3 op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); #else op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); #endif if (unlikely(op->func_doc == NULL)) return NULL; } else { Py_INCREF(Py_None); return Py_None; } #endif } Py_INCREF(op->func_doc); return op->func_doc; } static int __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) { CYTHON_UNUSED_VAR(context); if (value == NULL) { value = Py_None; } Py_INCREF(value); __Pyx_Py_XDECREF_SET(op->func_doc, value); return 0; } static PyObject * __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) { CYTHON_UNUSED_VAR(context); if (unlikely(op->func_name == NULL)) { #if CYTHON_COMPILING_IN_LIMITED_API op->func_name = PyObject_GetAttrString(op->func, "__name__"); #elif PY_MAJOR_VERSION >= 3 op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); #else op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); #endif if (unlikely(op->func_name == NULL)) return NULL; } Py_INCREF(op->func_name); return op->func_name; } static int __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) { CYTHON_UNUSED_VAR(context); #if PY_MAJOR_VERSION >= 3 if (unlikely(value == NULL || !PyUnicode_Check(value))) #else if (unlikely(value == NULL || !PyString_Check(value))) #endif { PyErr_SetString(PyExc_TypeError, "__name__ must be set to a string object"); return -1; } Py_INCREF(value); __Pyx_Py_XDECREF_SET(op->func_name, value); return 0; } static PyObject * __Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) { CYTHON_UNUSED_VAR(context); Py_INCREF(op->func_qualname); return op->func_qualname; } static int __Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) { CYTHON_UNUSED_VAR(context); #if PY_MAJOR_VERSION >= 3 if (unlikely(value == NULL || !PyUnicode_Check(value))) #else if (unlikely(value == NULL || !PyString_Check(value))) #endif { PyErr_SetString(PyExc_TypeError, "__qualname__ must be set to a string object"); return -1; } Py_INCREF(value); __Pyx_Py_XDECREF_SET(op->func_qualname, value); return 0; } static PyObject * __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) { CYTHON_UNUSED_VAR(context); if (unlikely(op->func_dict == NULL)) { op->func_dict = PyDict_New(); if (unlikely(op->func_dict == NULL)) return NULL; } Py_INCREF(op->func_dict); return op->func_dict; } static int __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) { CYTHON_UNUSED_VAR(context); if (unlikely(value == NULL)) { PyErr_SetString(PyExc_TypeError, "function's dictionary may not be deleted"); return -1; } if (unlikely(!PyDict_Check(value))) { PyErr_SetString(PyExc_TypeError, "setting function's dictionary to a non-dict"); return -1; } Py_INCREF(value); __Pyx_Py_XDECREF_SET(op->func_dict, value); return 0; } static PyObject * __Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) { CYTHON_UNUSED_VAR(context); Py_INCREF(op->func_globals); return op->func_globals; } static PyObject * __Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) { CYTHON_UNUSED_VAR(op); CYTHON_UNUSED_VAR(context); Py_INCREF(Py_None); return Py_None; } static PyObject * __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) { PyObject* result = (op->func_code) ? op->func_code : Py_None; CYTHON_UNUSED_VAR(context); Py_INCREF(result); return result; } static int __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { int result = 0; PyObject *res = op->defaults_getter((PyObject *) op); if (unlikely(!res)) return -1; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS op->defaults_tuple = PyTuple_GET_ITEM(res, 0); Py_INCREF(op->defaults_tuple); op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); Py_INCREF(op->defaults_kwdict); #else op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); if (unlikely(!op->defaults_tuple)) result = -1; else { op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); if (unlikely(!op->defaults_kwdict)) result = -1; } #endif Py_DECREF(res); return result; } static int __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { CYTHON_UNUSED_VAR(context); if (!value) { value = Py_None; } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { PyErr_SetString(PyExc_TypeError, "__defaults__ must be set to a tuple object"); return -1; } PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " "currently affect the values used in function calls", 1); Py_INCREF(value); __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); return 0; } static PyObject * __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { PyObject* result = op->defaults_tuple; CYTHON_UNUSED_VAR(context); if (unlikely(!result)) { if (op->defaults_getter) { if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; result = op->defaults_tuple; } else { result = Py_None; } } Py_INCREF(result); return result; } static int __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { CYTHON_UNUSED_VAR(context); if (!value) { value = Py_None; } else if (unlikely(value != Py_None && !PyDict_Check(value))) { PyErr_SetString(PyExc_TypeError, "__kwdefaults__ must be set to a dict object"); return -1; } PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " "currently affect the values used in function calls", 1); Py_INCREF(value); __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); return 0; } static PyObject * __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { PyObject* result = op->defaults_kwdict; CYTHON_UNUSED_VAR(context); if (unlikely(!result)) { if (op->defaults_getter) { if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; result = op->defaults_kwdict; } else { result = Py_None; } } Py_INCREF(result); return result; } static int __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { CYTHON_UNUSED_VAR(context); if (!value || value == Py_None) { value = NULL; } else if (unlikely(!PyDict_Check(value))) { PyErr_SetString(PyExc_TypeError, "__annotations__ must be set to a dict object"); return -1; } Py_XINCREF(value); __Pyx_Py_XDECREF_SET(op->func_annotations, value); return 0; } static PyObject * __Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { PyObject* result = op->func_annotations; CYTHON_UNUSED_VAR(context); if (unlikely(!result)) { result = PyDict_New(); if (unlikely(!result)) return NULL; op->func_annotations = result; } Py_INCREF(result); return result; } static PyObject * __Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { int is_coroutine; CYTHON_UNUSED_VAR(context); if (op->func_is_coroutine) { return __Pyx_NewRef(op->func_is_coroutine); } is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; #if PY_VERSION_HEX >= 0x03050000 if (is_coroutine) { PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine; fromlist = PyList_New(1); if (unlikely(!fromlist)) return NULL; Py_INCREF(marker); #if CYTHON_ASSUME_SAFE_MACROS PyList_SET_ITEM(fromlist, 0, marker); #else if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { Py_DECREF(marker); Py_DECREF(fromlist); return NULL; } #endif module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0); Py_DECREF(fromlist); if (unlikely(!module)) goto ignore; op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker); Py_DECREF(module); if (likely(op->func_is_coroutine)) { return __Pyx_NewRef(op->func_is_coroutine); } ignore: PyErr_Clear(); } #endif op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine); return __Pyx_NewRef(op->func_is_coroutine); } #if CYTHON_COMPILING_IN_LIMITED_API static PyObject * __Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { CYTHON_UNUSED_VAR(context); return PyObject_GetAttrString(op->func, "__module__"); } static int __Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { CYTHON_UNUSED_VAR(context); return PyObject_SetAttrString(op->func, "__module__", value); } #endif static PyGetSetDef __pyx_CyFunction_getsets[] = { {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, #if CYTHON_COMPILING_IN_LIMITED_API {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, #endif {0, 0, 0, 0, 0} }; static PyMemberDef __pyx_CyFunction_members[] = { #if !CYTHON_COMPILING_IN_LIMITED_API {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, #endif #if CYTHON_USE_TYPE_SPECS {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, #if CYTHON_METH_FASTCALL #if CYTHON_BACKPORT_VECTORCALL {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, #else #if !CYTHON_COMPILING_IN_LIMITED_API {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, #endif #endif #endif #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, #else {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, #endif #endif {0, 0, 0, 0, 0} }; static PyObject * __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) { CYTHON_UNUSED_VAR(args); #if PY_MAJOR_VERSION >= 3 Py_INCREF(m->func_qualname); return m->func_qualname; #else return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name); #endif } static PyMethodDef __pyx_CyFunction_methods[] = { {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, {0, 0, 0, 0} }; #if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) #else #define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) #endif static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { #if !CYTHON_COMPILING_IN_LIMITED_API PyCFunctionObject *cf = (PyCFunctionObject*) op; #endif if (unlikely(op == NULL)) return NULL; #if CYTHON_COMPILING_IN_LIMITED_API op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); if (unlikely(!op->func)) return NULL; #endif op->flags = flags; __Pyx_CyFunction_weakreflist(op) = NULL; #if !CYTHON_COMPILING_IN_LIMITED_API cf->m_ml = ml; cf->m_self = (PyObject *) op; #endif Py_XINCREF(closure); op->func_closure = closure; #if !CYTHON_COMPILING_IN_LIMITED_API Py_XINCREF(module); cf->m_module = module; #endif op->func_dict = NULL; op->func_name = NULL; Py_INCREF(qualname); op->func_qualname = qualname; op->func_doc = NULL; #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API op->func_classobj = NULL; #else ((PyCMethodObject*)op)->mm_class = NULL; #endif op->func_globals = globals; Py_INCREF(op->func_globals); Py_XINCREF(code); op->func_code = code; op->defaults_pyobjects = 0; op->defaults_size = 0; op->defaults = NULL; op->defaults_tuple = NULL; op->defaults_kwdict = NULL; op->defaults_getter = NULL; op->func_annotations = NULL; op->func_is_coroutine = NULL; #if CYTHON_METH_FASTCALL switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { case METH_NOARGS: __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; break; case METH_O: __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; break; case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; break; case METH_FASTCALL | METH_KEYWORDS: __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; break; case METH_VARARGS | METH_KEYWORDS: __Pyx_CyFunction_func_vectorcall(op) = NULL; break; default: PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); Py_DECREF(op); return NULL; } #endif return (PyObject *) op; } static int __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) { Py_CLEAR(m->func_closure); #if CYTHON_COMPILING_IN_LIMITED_API Py_CLEAR(m->func); #else Py_CLEAR(((PyCFunctionObject*)m)->m_module); #endif Py_CLEAR(m->func_dict); Py_CLEAR(m->func_name); Py_CLEAR(m->func_qualname); Py_CLEAR(m->func_doc); Py_CLEAR(m->func_globals); Py_CLEAR(m->func_code); #if !CYTHON_COMPILING_IN_LIMITED_API #if PY_VERSION_HEX < 0x030900B1 Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); #else { PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; ((PyCMethodObject *) (m))->mm_class = NULL; Py_XDECREF(cls); } #endif #endif Py_CLEAR(m->defaults_tuple); Py_CLEAR(m->defaults_kwdict); Py_CLEAR(m->func_annotations); Py_CLEAR(m->func_is_coroutine); if (m->defaults) { PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); int i; for (i = 0; i < m->defaults_pyobjects; i++) Py_XDECREF(pydefaults[i]); PyObject_Free(m->defaults); m->defaults = NULL; } return 0; } static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) { if (__Pyx_CyFunction_weakreflist(m) != NULL) PyObject_ClearWeakRefs((PyObject *) m); __Pyx_CyFunction_clear(m); __Pyx_PyHeapTypeObject_GC_Del(m); } static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) { PyObject_GC_UnTrack(m); __Pyx__CyFunction_dealloc(m); } static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) { Py_VISIT(m->func_closure); #if CYTHON_COMPILING_IN_LIMITED_API Py_VISIT(m->func); #else Py_VISIT(((PyCFunctionObject*)m)->m_module); #endif Py_VISIT(m->func_dict); Py_VISIT(m->func_name); Py_VISIT(m->func_qualname); Py_VISIT(m->func_doc); Py_VISIT(m->func_globals); Py_VISIT(m->func_code); #if !CYTHON_COMPILING_IN_LIMITED_API Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); #endif Py_VISIT(m->defaults_tuple); Py_VISIT(m->defaults_kwdict); Py_VISIT(m->func_is_coroutine); if (m->defaults) { PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); int i; for (i = 0; i < m->defaults_pyobjects; i++) Py_VISIT(pydefaults[i]); } return 0; } static PyObject* __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) { #if PY_MAJOR_VERSION >= 3 return PyUnicode_FromFormat("", op->func_qualname, (void *)op); #else return PyString_FromFormat("", PyString_AsString(op->func_qualname), (void *)op); #endif } static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { #if CYTHON_COMPILING_IN_LIMITED_API PyObject *f = ((__pyx_CyFunctionObject*)func)->func; PyObject *py_name = NULL; PyCFunction meth; int flags; meth = PyCFunction_GetFunction(f); if (unlikely(!meth)) return NULL; flags = PyCFunction_GetFlags(f); if (unlikely(flags < 0)) return NULL; #else PyCFunctionObject* f = (PyCFunctionObject*)func; PyCFunction meth = f->m_ml->ml_meth; int flags = f->m_ml->ml_flags; #endif Py_ssize_t size; switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { case METH_VARARGS: if (likely(kw == NULL || PyDict_Size(kw) == 0)) return (*meth)(self, arg); break; case METH_VARARGS | METH_KEYWORDS: return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); case METH_NOARGS: if (likely(kw == NULL || PyDict_Size(kw) == 0)) { #if CYTHON_ASSUME_SAFE_MACROS size = PyTuple_GET_SIZE(arg); #else size = PyTuple_Size(arg); if (unlikely(size < 0)) return NULL; #endif if (likely(size == 0)) return (*meth)(self, NULL); #if CYTHON_COMPILING_IN_LIMITED_API py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); if (!py_name) return NULL; PyErr_Format(PyExc_TypeError, "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", py_name, size); Py_DECREF(py_name); #else PyErr_Format(PyExc_TypeError, "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", f->m_ml->ml_name, size); #endif return NULL; } break; case METH_O: if (likely(kw == NULL || PyDict_Size(kw) == 0)) { #if CYTHON_ASSUME_SAFE_MACROS size = PyTuple_GET_SIZE(arg); #else size = PyTuple_Size(arg); if (unlikely(size < 0)) return NULL; #endif if (likely(size == 1)) { PyObject *result, *arg0; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS arg0 = PyTuple_GET_ITEM(arg, 0); #else arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; #endif result = (*meth)(self, arg0); #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) Py_DECREF(arg0); #endif return result; } #if CYTHON_COMPILING_IN_LIMITED_API py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); if (!py_name) return NULL; PyErr_Format(PyExc_TypeError, "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", py_name, size); Py_DECREF(py_name); #else PyErr_Format(PyExc_TypeError, "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", f->m_ml->ml_name, size); #endif return NULL; } break; default: PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); return NULL; } #if CYTHON_COMPILING_IN_LIMITED_API py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL); if (!py_name) return NULL; PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments", py_name); Py_DECREF(py_name); #else PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", f->m_ml->ml_name); #endif return NULL; } static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *self, *result; #if CYTHON_COMPILING_IN_LIMITED_API self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); if (unlikely(!self) && PyErr_Occurred()) return NULL; #else self = ((PyCFunctionObject*)func)->m_self; #endif result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); return result; } static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { PyObject *result; __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; #if CYTHON_METH_FASTCALL __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); if (vc) { #if CYTHON_ASSUME_SAFE_MACROS return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); #else (void) &__Pyx_PyVectorcall_FastCallDict; return PyVectorcall_Call(func, args, kw); #endif } #endif if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { Py_ssize_t argc; PyObject *new_args; PyObject *self; #if CYTHON_ASSUME_SAFE_MACROS argc = PyTuple_GET_SIZE(args); #else argc = PyTuple_Size(args); if (unlikely(!argc) < 0) return NULL; #endif new_args = PyTuple_GetSlice(args, 1, argc); if (unlikely(!new_args)) return NULL; self = PyTuple_GetItem(args, 0); if (unlikely(!self)) { Py_DECREF(new_args); #if PY_MAJOR_VERSION > 2 PyErr_Format(PyExc_TypeError, "unbound method %.200S() needs an argument", cyfunc->func_qualname); #else PyErr_SetString(PyExc_TypeError, "unbound method needs an argument"); #endif return NULL; } result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); Py_DECREF(new_args); } else { result = __Pyx_CyFunction_Call(func, args, kw); } return result; } #if CYTHON_METH_FASTCALL static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) { int ret = 0; if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { if (unlikely(nargs < 1)) { PyErr_Format(PyExc_TypeError, "%.200s() needs an argument", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); return -1; } ret = 1; } if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) { PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name); return -1; } return ret; } static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) { __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; #if CYTHON_BACKPORT_VECTORCALL Py_ssize_t nargs = (Py_ssize_t)nargsf; #else Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); #endif PyObject *self; switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { case 1: self = args[0]; args += 1; nargs -= 1; break; case 0: self = ((PyCFunctionObject*)cyfunc)->m_self; break; default: return NULL; } if (unlikely(nargs != 0)) { PyErr_Format(PyExc_TypeError, "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", def->ml_name, nargs); return NULL; } return def->ml_meth(self, NULL); } static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) { __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; #if CYTHON_BACKPORT_VECTORCALL Py_ssize_t nargs = (Py_ssize_t)nargsf; #else Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); #endif PyObject *self; switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { case 1: self = args[0]; args += 1; nargs -= 1; break; case 0: self = ((PyCFunctionObject*)cyfunc)->m_self; break; default: return NULL; } if (unlikely(nargs != 1)) { PyErr_Format(PyExc_TypeError, "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", def->ml_name, nargs); return NULL; } return def->ml_meth(self, args[0]); } static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) { __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; #if CYTHON_BACKPORT_VECTORCALL Py_ssize_t nargs = (Py_ssize_t)nargsf; #else Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); #endif PyObject *self; switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { case 1: self = args[0]; args += 1; nargs -= 1; break; case 0: self = ((PyCFunctionObject*)cyfunc)->m_self; break; default: return NULL; } return ((_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames); } static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) { __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml; PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); #if CYTHON_BACKPORT_VECTORCALL Py_ssize_t nargs = (Py_ssize_t)nargsf; #else Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); #endif PyObject *self; switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { case 1: self = args[0]; args += 1; nargs -= 1; break; case 0: self = ((PyCFunctionObject*)cyfunc)->m_self; break; default: return NULL; } return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames); } #endif #if CYTHON_USE_TYPE_SPECS static PyType_Slot __pyx_CyFunctionType_slots[] = { {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, {Py_tp_methods, (void *)__pyx_CyFunction_methods}, {Py_tp_members, (void *)__pyx_CyFunction_members}, {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, {0, 0}, }; static PyType_Spec __pyx_CyFunctionType_spec = { __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", sizeof(__pyx_CyFunctionObject), 0, #ifdef Py_TPFLAGS_METHOD_DESCRIPTOR Py_TPFLAGS_METHOD_DESCRIPTOR | #endif #if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL) _Py_TPFLAGS_HAVE_VECTORCALL | #endif Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, __pyx_CyFunctionType_slots }; #else static PyTypeObject __pyx_CyFunctionType_type = { PyVarObject_HEAD_INIT(0, 0) __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", sizeof(__pyx_CyFunctionObject), 0, (destructor) __Pyx_CyFunction_dealloc, #if !CYTHON_METH_FASTCALL 0, #elif CYTHON_BACKPORT_VECTORCALL (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall), #else offsetof(PyCFunctionObject, vectorcall), #endif 0, 0, #if PY_MAJOR_VERSION < 3 0, #else 0, #endif (reprfunc) __Pyx_CyFunction_repr, 0, 0, 0, 0, __Pyx_CyFunction_CallAsMethod, 0, 0, 0, 0, #ifdef Py_TPFLAGS_METHOD_DESCRIPTOR Py_TPFLAGS_METHOD_DESCRIPTOR | #endif #if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL _Py_TPFLAGS_HAVE_VECTORCALL | #endif Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, 0, (traverseproc) __Pyx_CyFunction_traverse, (inquiry) __Pyx_CyFunction_clear, 0, #if PY_VERSION_HEX < 0x030500A0 offsetof(__pyx_CyFunctionObject, func_weakreflist), #else offsetof(PyCFunctionObject, m_weakreflist), #endif 0, 0, __pyx_CyFunction_methods, __pyx_CyFunction_members, __pyx_CyFunction_getsets, 0, 0, __Pyx_PyMethod_New, 0, offsetof(__pyx_CyFunctionObject, func_dict), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, #if PY_VERSION_HEX >= 0x030400a1 0, #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, #endif #if __PYX_NEED_TP_PRINT_SLOT 0, #endif #if PY_VERSION_HEX >= 0x030C0000 0, #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 0, #endif }; #endif static int __pyx_CyFunction_init(PyObject *module) { #if CYTHON_USE_TYPE_SPECS __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL); #else CYTHON_UNUSED_VAR(module); __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); #endif if (unlikely(__pyx_CyFunctionType == NULL)) { return -1; } return 0; } static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; m->defaults = PyObject_Malloc(size); if (unlikely(!m->defaults)) return PyErr_NoMemory(); memset(m->defaults, 0, size); m->defaults_pyobjects = pyobjects; m->defaults_size = size; return m->defaults; } static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; m->defaults_tuple = tuple; Py_INCREF(tuple); } static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; m->defaults_kwdict = dict; Py_INCREF(dict); } static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; m->func_annotations = dict; Py_INCREF(dict); } /* CythonFunction */ static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { PyObject *op = __Pyx_CyFunction_Init( PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), ml, flags, qualname, closure, module, globals, code ); if (likely(op)) { PyObject_GC_Track(op); } return op; } /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { PyObject *use_cline; PyObject *ptype, *pvalue, *ptraceback; #if CYTHON_COMPILING_IN_CPYTHON PyObject **cython_runtime_dict; #endif CYTHON_MAYBE_UNUSED_VAR(tstate); if (unlikely(!__pyx_cython_runtime)) { return c_line; } __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); #if CYTHON_COMPILING_IN_CPYTHON cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); if (likely(cython_runtime_dict)) { __PYX_PY_DICT_LOOKUP_IF_MODIFIED( use_cline, *cython_runtime_dict, __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) } else #endif { PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); if (use_cline_obj) { use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; Py_DECREF(use_cline_obj); } else { PyErr_Clear(); use_cline = NULL; } } if (!use_cline) { c_line = 0; (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); } else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { c_line = 0; } __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); return c_line; } #endif /* CodeObjectCache */ #if !CYTHON_COMPILING_IN_LIMITED_API static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; } while (start < end) { mid = start + (end - start) / 2; if (code_line < entries[mid].code_line) { end = mid; } else if (code_line > entries[mid].code_line) { start = mid + 1; } else { return mid; } } if (code_line <= entries[mid].code_line) { return mid; } else { return mid + 1; } } static PyCodeObject *__pyx_find_code_object(int code_line) { PyCodeObject* code_object; int pos; if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { return NULL; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { return NULL; } code_object = __pyx_code_cache.entries[pos].code_object; Py_INCREF(code_object); return code_object; } static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { int pos, i; __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; if (unlikely(!code_line)) { return; } if (unlikely(!entries)) { entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); if (likely(entries)) { __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = 64; __pyx_code_cache.count = 1; entries[0].code_line = code_line; entries[0].code_object = code_object; Py_INCREF(code_object); } return; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { PyCodeObject* tmp = entries[pos].code_object; entries[pos].code_object = code_object; Py_DECREF(tmp); return; } if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = new_max; } for (i=__pyx_code_cache.count; i>pos; i--) { entries[i] = entries[i-1]; } entries[pos].code_line = code_line; entries[pos].code_object = code_object; __pyx_code_cache.count++; Py_INCREF(code_object); } #endif /* AddTraceback */ #include "compile.h" #include "frameobject.h" #include "traceback.h" #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API #ifndef Py_BUILD_CORE #define Py_BUILD_CORE 1 #endif #include "internal/pycore_frame.h" #endif #if CYTHON_COMPILING_IN_LIMITED_API static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, PyObject *firstlineno, PyObject *name) { PyObject *replace = NULL; if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; replace = PyObject_GetAttrString(code, "replace"); if (likely(replace)) { PyObject *result; result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict); Py_DECREF(replace); return result; } PyErr_Clear(); #if __PYX_LIMITED_VERSION_HEX < 0x030780000 { PyObject *compiled = NULL, *result = NULL; if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL; if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL; compiled = Py_CompileString( "out = type(code)(\n" " code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n" " code.co_flags, code.co_code, code.co_consts, code.co_names,\n" " code.co_varnames, code.co_filename, co_name, co_firstlineno,\n" " code.co_lnotab)\n", "", Py_file_input); if (!compiled) return NULL; result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict); Py_DECREF(compiled); if (!result) PyErr_Print(); Py_DECREF(result); result = PyDict_GetItemString(scratch_dict, "out"); if (result) Py_INCREF(result); return result; } #else return NULL; #endif } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; PyObject *replace = NULL, *getframe = NULL, *frame = NULL; PyObject *exc_type, *exc_value, *exc_traceback; int success = 0; if (c_line) { (void) __pyx_cfilenm; (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); } PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); code_object = Py_CompileString("_getframe()", filename, Py_eval_input); if (unlikely(!code_object)) goto bad; py_py_line = PyLong_FromLong(py_line); if (unlikely(!py_py_line)) goto bad; py_funcname = PyUnicode_FromString(funcname); if (unlikely(!py_funcname)) goto bad; dict = PyDict_New(); if (unlikely(!dict)) goto bad; { PyObject *old_code_object = code_object; code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); Py_DECREF(old_code_object); } if (unlikely(!code_object)) goto bad; getframe = PySys_GetObject("_getframe"); if (unlikely(!getframe)) goto bad; if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; frame = PyEval_EvalCode(code_object, dict, dict); if (unlikely(!frame) || frame == Py_None) goto bad; success = 1; bad: PyErr_Restore(exc_type, exc_value, exc_traceback); Py_XDECREF(code_object); Py_XDECREF(py_py_line); Py_XDECREF(py_funcname); Py_XDECREF(dict); Py_XDECREF(replace); if (success) { PyTraceBack_Here( (struct _frame*)frame); } Py_XDECREF(frame); } #else static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = NULL; PyObject *py_funcname = NULL; #if PY_MAJOR_VERSION < 3 PyObject *py_srcfile = NULL; py_srcfile = PyString_FromString(filename); if (!py_srcfile) goto bad; #endif if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); if (!py_funcname) goto bad; #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); if (!py_funcname) goto bad; funcname = PyUnicode_AsUTF8(py_funcname); if (!funcname) goto bad; #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); if (!py_funcname) goto bad; #endif } #if PY_MAJOR_VERSION < 3 py_code = __Pyx_PyCode_New( 0, 0, 0, 0, 0, 0, __pyx_empty_bytes, /*PyObject *code,*/ __pyx_empty_tuple, /*PyObject *consts,*/ __pyx_empty_tuple, /*PyObject *names,*/ __pyx_empty_tuple, /*PyObject *varnames,*/ __pyx_empty_tuple, /*PyObject *freevars,*/ __pyx_empty_tuple, /*PyObject *cellvars,*/ py_srcfile, /*PyObject *filename,*/ py_funcname, /*PyObject *name,*/ py_line, __pyx_empty_bytes /*PyObject *lnotab*/ ); Py_DECREF(py_srcfile); #else py_code = PyCode_NewEmpty(filename, funcname, py_line); #endif Py_XDECREF(py_funcname); return py_code; bad: Py_XDECREF(py_funcname); #if PY_MAJOR_VERSION < 3 Py_XDECREF(py_srcfile); #endif return NULL; } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject *ptype, *pvalue, *ptraceback; if (c_line) { c_line = __Pyx_CLineForTraceback(tstate, c_line); } py_code = __pyx_find_code_object(c_line ? -c_line : py_line); if (!py_code) { __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) { /* If the code object creation fails, then we should clear the fetched exception references and propagate the new exception */ Py_XDECREF(ptype); Py_XDECREF(pvalue); Py_XDECREF(ptraceback); goto bad; } __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); } py_frame = PyFrame_New( tstate, /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ __pyx_d, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; __Pyx_PyFrame_SetLineNumber(py_frame, py_line); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); Py_XDECREF(py_frame); } #endif /* CIntFromPyVerify */ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ {\ func_type value = func_value;\ if (sizeof(target_type) < sizeof(func_type)) {\ if (unlikely(value != (func_type) (target_type) value)) {\ func_type zero = 0;\ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ return (target_type) -1;\ if (is_unsigned && unlikely(value < zero))\ goto raise_neg_overflow;\ else\ goto raise_overflow;\ }\ }\ return (target_type) value;\ } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_symbol_type(enum recode_symbol_type value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const enum recode_symbol_type neg_one = (enum recode_symbol_type) -1, const_zero = (enum recode_symbol_type) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum recode_symbol_type) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum recode_symbol_type) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_symbol_type) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum recode_symbol_type) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_symbol_type) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 return _PyLong_FromByteArray(bytes, sizeof(enum recode_symbol_type), little, !is_unsigned); #else PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(enum recode_symbol_type)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_data_type(enum recode_data_type value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const enum recode_data_type neg_one = (enum recode_data_type) -1, const_zero = (enum recode_data_type) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum recode_data_type) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum recode_data_type) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_data_type) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum recode_data_type) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_data_type) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 return _PyLong_FromByteArray(bytes, sizeof(enum recode_data_type), little, !is_unsigned); #else PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(enum recode_data_type)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_size(enum recode_size value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const enum recode_size neg_one = (enum recode_size) -1, const_zero = (enum recode_size) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum recode_size) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum recode_size) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_size) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum recode_size) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_size) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 return _PyLong_FromByteArray(bytes, sizeof(enum recode_size), little, !is_unsigned); #else PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(enum recode_size)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_step_type(enum recode_step_type value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const enum recode_step_type neg_one = (enum recode_step_type) -1, const_zero = (enum recode_step_type) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum recode_step_type) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum recode_step_type) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_step_type) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum recode_step_type) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_step_type) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 return _PyLong_FromByteArray(bytes, sizeof(enum recode_step_type), little, !is_unsigned); #else PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(enum recode_step_type)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_swap_input(enum recode_swap_input value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const enum recode_swap_input neg_one = (enum recode_swap_input) -1, const_zero = (enum recode_swap_input) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum recode_swap_input) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum recode_swap_input) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_swap_input) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum recode_swap_input) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_swap_input) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 return _PyLong_FromByteArray(bytes, sizeof(enum recode_swap_input), little, !is_unsigned); #else PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(enum recode_swap_input)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_error(enum recode_error value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const enum recode_error neg_one = (enum recode_error) -1, const_zero = (enum recode_error) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum recode_error) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum recode_error) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_error) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum recode_error) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_error) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 return _PyLong_FromByteArray(bytes, sizeof(enum recode_error), little, !is_unsigned); #else PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(enum recode_error)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_list_format(enum recode_list_format value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const enum recode_list_format neg_one = (enum recode_list_format) -1, const_zero = (enum recode_list_format) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum recode_list_format) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum recode_list_format) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_list_format) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum recode_list_format) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_list_format) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 return _PyLong_FromByteArray(bytes, sizeof(enum recode_list_format), little, !is_unsigned); #else PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(enum recode_list_format)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_programming_language(enum recode_programming_language value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const enum recode_programming_language neg_one = (enum recode_programming_language) -1, const_zero = (enum recode_programming_language) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum recode_programming_language) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum recode_programming_language) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_programming_language) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum recode_programming_language) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum recode_programming_language) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 return _PyLong_FromByteArray(bytes, sizeof(enum recode_programming_language), little, !is_unsigned); #else PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(enum recode_programming_language)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From___pyx_anon_enum(int value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const int neg_one = (int) -1, const_zero = (int) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(int) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(int) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 return _PyLong_FromByteArray(bytes, sizeof(int), little, !is_unsigned); #else PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__alias_find_type(enum alias_find_type value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const enum alias_find_type neg_one = (enum alias_find_type) -1, const_zero = (enum alias_find_type) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum alias_find_type) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum alias_find_type) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum alias_find_type) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum alias_find_type) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum alias_find_type) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 return _PyLong_FromByteArray(bytes, sizeof(enum alias_find_type), little, !is_unsigned); #else PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(enum alias_find_type)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const int neg_one = (int) -1, const_zero = (int) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(int) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (int) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 3: if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 4: if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (int) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(int) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 2: if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -3: if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 3: if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -4: if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 4: if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; } } #endif if ((sizeof(int) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { int val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int ret = -1; #if PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; long idigit; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (unlikely(!PyLong_CheckExact(v))) { PyObject *tmp = v; v = PyNumber_Long(v); assert(PyLong_CheckExact(v)); Py_DECREF(tmp); if (unlikely(!v)) return (int) -1; } #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 if (Py_SIZE(x) == 0) return (int) 0; is_negative = Py_SIZE(x) < 0; #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (int) -1; is_negative = result == 1; } #endif if (is_unsigned && unlikely(is_negative)) { goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); if (unlikely(!stepval)) return (int) -1; } else { stepval = __Pyx_NewRef(v); } val = (int) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; val |= ((int) idigit) << bits; #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 if (Py_SIZE(stepval) == 0) goto unpacking_done; #endif } idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((int) idigit) << bits; #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 unpacking_done: #endif if (!is_unsigned) { if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif Py_DECREF(v); if (likely(!ret)) return val; } return (int) -1; } } else { int val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (int) -1; val = __Pyx_PyInt_As_int(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to int"); return (int) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to int"); return (int) -1; } /* CIntFromPy */ static CYTHON_INLINE enum recode_list_format __Pyx_PyInt_As_enum__recode_list_format(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const enum recode_list_format neg_one = (enum recode_list_format) -1, const_zero = (enum recode_list_format) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(enum recode_list_format) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(enum recode_list_format, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (enum recode_list_format) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(enum recode_list_format, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(enum recode_list_format) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_list_format, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_list_format) >= 2 * PyLong_SHIFT)) { return (enum recode_list_format) (((((enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0])); } } break; case 3: if ((8 * sizeof(enum recode_list_format) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_list_format, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_list_format) >= 3 * PyLong_SHIFT)) { return (enum recode_list_format) (((((((enum recode_list_format)digits[2]) << PyLong_SHIFT) | (enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0])); } } break; case 4: if ((8 * sizeof(enum recode_list_format) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_list_format, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_list_format) >= 4 * PyLong_SHIFT)) { return (enum recode_list_format) (((((((((enum recode_list_format)digits[3]) << PyLong_SHIFT) | (enum recode_list_format)digits[2]) << PyLong_SHIFT) | (enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (enum recode_list_format) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(enum recode_list_format) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(enum recode_list_format, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(enum recode_list_format) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(enum recode_list_format, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(enum recode_list_format, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(enum recode_list_format) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_list_format, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_list_format) - 1 > 2 * PyLong_SHIFT)) { return (enum recode_list_format) (((enum recode_list_format)-1)*(((((enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0]))); } } break; case 2: if ((8 * sizeof(enum recode_list_format) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_list_format, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_list_format) - 1 > 2 * PyLong_SHIFT)) { return (enum recode_list_format) ((((((enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0]))); } } break; case -3: if ((8 * sizeof(enum recode_list_format) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_list_format, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_list_format) - 1 > 3 * PyLong_SHIFT)) { return (enum recode_list_format) (((enum recode_list_format)-1)*(((((((enum recode_list_format)digits[2]) << PyLong_SHIFT) | (enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0]))); } } break; case 3: if ((8 * sizeof(enum recode_list_format) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_list_format, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_list_format) - 1 > 3 * PyLong_SHIFT)) { return (enum recode_list_format) ((((((((enum recode_list_format)digits[2]) << PyLong_SHIFT) | (enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0]))); } } break; case -4: if ((8 * sizeof(enum recode_list_format) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_list_format, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_list_format) - 1 > 4 * PyLong_SHIFT)) { return (enum recode_list_format) (((enum recode_list_format)-1)*(((((((((enum recode_list_format)digits[3]) << PyLong_SHIFT) | (enum recode_list_format)digits[2]) << PyLong_SHIFT) | (enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0]))); } } break; case 4: if ((8 * sizeof(enum recode_list_format) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_list_format, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_list_format) - 1 > 4 * PyLong_SHIFT)) { return (enum recode_list_format) ((((((((((enum recode_list_format)digits[3]) << PyLong_SHIFT) | (enum recode_list_format)digits[2]) << PyLong_SHIFT) | (enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0]))); } } break; } } #endif if ((sizeof(enum recode_list_format) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(enum recode_list_format, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(enum recode_list_format) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(enum recode_list_format, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available, cannot convert large enums"); return (enum recode_list_format) -1; } else { enum recode_list_format val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (enum recode_list_format) -1; val = __Pyx_PyInt_As_enum__recode_list_format(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to enum recode_list_format"); return (enum recode_list_format) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to enum recode_list_format"); return (enum recode_list_format) -1; } /* CIntFromPy */ static CYTHON_INLINE enum recode_error __Pyx_PyInt_As_enum__recode_error(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const enum recode_error neg_one = (enum recode_error) -1, const_zero = (enum recode_error) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(enum recode_error) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(enum recode_error, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (enum recode_error) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(enum recode_error, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(enum recode_error) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_error, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_error) >= 2 * PyLong_SHIFT)) { return (enum recode_error) (((((enum recode_error)digits[1]) << PyLong_SHIFT) | (enum recode_error)digits[0])); } } break; case 3: if ((8 * sizeof(enum recode_error) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_error, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_error) >= 3 * PyLong_SHIFT)) { return (enum recode_error) (((((((enum recode_error)digits[2]) << PyLong_SHIFT) | (enum recode_error)digits[1]) << PyLong_SHIFT) | (enum recode_error)digits[0])); } } break; case 4: if ((8 * sizeof(enum recode_error) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_error, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_error) >= 4 * PyLong_SHIFT)) { return (enum recode_error) (((((((((enum recode_error)digits[3]) << PyLong_SHIFT) | (enum recode_error)digits[2]) << PyLong_SHIFT) | (enum recode_error)digits[1]) << PyLong_SHIFT) | (enum recode_error)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (enum recode_error) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(enum recode_error) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(enum recode_error, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(enum recode_error) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(enum recode_error, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(enum recode_error, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(enum recode_error) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_error, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_error) - 1 > 2 * PyLong_SHIFT)) { return (enum recode_error) (((enum recode_error)-1)*(((((enum recode_error)digits[1]) << PyLong_SHIFT) | (enum recode_error)digits[0]))); } } break; case 2: if ((8 * sizeof(enum recode_error) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_error, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_error) - 1 > 2 * PyLong_SHIFT)) { return (enum recode_error) ((((((enum recode_error)digits[1]) << PyLong_SHIFT) | (enum recode_error)digits[0]))); } } break; case -3: if ((8 * sizeof(enum recode_error) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_error, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_error) - 1 > 3 * PyLong_SHIFT)) { return (enum recode_error) (((enum recode_error)-1)*(((((((enum recode_error)digits[2]) << PyLong_SHIFT) | (enum recode_error)digits[1]) << PyLong_SHIFT) | (enum recode_error)digits[0]))); } } break; case 3: if ((8 * sizeof(enum recode_error) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_error, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_error) - 1 > 3 * PyLong_SHIFT)) { return (enum recode_error) ((((((((enum recode_error)digits[2]) << PyLong_SHIFT) | (enum recode_error)digits[1]) << PyLong_SHIFT) | (enum recode_error)digits[0]))); } } break; case -4: if ((8 * sizeof(enum recode_error) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_error, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_error) - 1 > 4 * PyLong_SHIFT)) { return (enum recode_error) (((enum recode_error)-1)*(((((((((enum recode_error)digits[3]) << PyLong_SHIFT) | (enum recode_error)digits[2]) << PyLong_SHIFT) | (enum recode_error)digits[1]) << PyLong_SHIFT) | (enum recode_error)digits[0]))); } } break; case 4: if ((8 * sizeof(enum recode_error) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(enum recode_error, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(enum recode_error) - 1 > 4 * PyLong_SHIFT)) { return (enum recode_error) ((((((((((enum recode_error)digits[3]) << PyLong_SHIFT) | (enum recode_error)digits[2]) << PyLong_SHIFT) | (enum recode_error)digits[1]) << PyLong_SHIFT) | (enum recode_error)digits[0]))); } } break; } } #endif if ((sizeof(enum recode_error) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(enum recode_error, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(enum recode_error) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(enum recode_error, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available, cannot convert large enums"); return (enum recode_error) -1; } else { enum recode_error val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (enum recode_error) -1; val = __Pyx_PyInt_As_enum__recode_error(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to enum recode_error"); return (enum recode_error) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to enum recode_error"); return (enum recode_error) -1; } /* FormatTypeName */ #if CYTHON_COMPILING_IN_LIMITED_API static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp) { PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, __pyx_n_s_name); if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) { PyErr_Clear(); Py_XDECREF(name); name = __Pyx_NewRef(__pyx_n_s__41); } return name; } #endif /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const long neg_one = (long) -1, const_zero = (long) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(long) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; #if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 return _PyLong_FromByteArray(bytes, sizeof(long), little, !is_unsigned); #else PyObject *from_bytes, *result = NULL; PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL; from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); if (!from_bytes) return NULL; py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); if (!py_bytes) goto limited_bad; order_str = PyUnicode_FromString(little ? "little" : "big"); if (!order_str) goto limited_bad; arg_tuple = PyTuple_Pack(2, py_bytes, order_str); if (!arg_tuple) goto limited_bad; if (!is_unsigned) { kwds = PyDict_New(); if (!kwds) goto limited_bad; if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad; } result = PyObject_Call(from_bytes, arg_tuple, kwds); limited_bad: Py_XDECREF(kwds); Py_XDECREF(arg_tuple); Py_XDECREF(order_str); Py_XDECREF(py_bytes); Py_XDECREF(from_bytes); return result; #endif } } /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const long neg_one = (long) -1, const_zero = (long) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if ((sizeof(long) < sizeof(long))) { __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (long) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS if (unlikely(__Pyx_PyLong_IsNeg(x))) { goto raise_neg_overflow; } else if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_DigitCount(x)) { case 2: if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 3: if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 4: if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; } } #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (long) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if ((sizeof(long) <= sizeof(unsigned long))) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS if (__Pyx_PyLong_IsCompact(x)) { __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) } else { const digit* digits = __Pyx_PyLong_Digits(x); assert(__Pyx_PyLong_DigitCount(x) > 1); switch (__Pyx_PyLong_SignedDigitCount(x)) { case -2: if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 2: if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -3: if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 3: if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -4: if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 4: if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; } } #endif if ((sizeof(long) <= sizeof(long))) { __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { long val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int ret = -1; #if PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); #else PyObject *stepval = NULL, *mask = NULL, *shift = NULL; int bits, remaining_bits, is_negative = 0; long idigit; int chunk_size = (sizeof(long) < 8) ? 30 : 62; if (unlikely(!PyLong_CheckExact(v))) { PyObject *tmp = v; v = PyNumber_Long(v); assert(PyLong_CheckExact(v)); Py_DECREF(tmp); if (unlikely(!v)) return (long) -1; } #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 if (Py_SIZE(x) == 0) return (long) 0; is_negative = Py_SIZE(x) < 0; #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (long) -1; is_negative = result == 1; } #endif if (is_unsigned && unlikely(is_negative)) { goto raise_neg_overflow; } else if (is_negative) { stepval = PyNumber_Invert(v); if (unlikely(!stepval)) return (long) -1; } else { stepval = __Pyx_NewRef(v); } val = (long) 0; mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { PyObject *tmp, *digit; digit = PyNumber_And(stepval, mask); if (unlikely(!digit)) goto done; idigit = PyLong_AsLong(digit); Py_DECREF(digit); if (unlikely(idigit < 0)) goto done; tmp = PyNumber_Rshift(stepval, shift); if (unlikely(!tmp)) goto done; Py_DECREF(stepval); stepval = tmp; val |= ((long) idigit) << bits; #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 if (Py_SIZE(stepval) == 0) goto unpacking_done; #endif } idigit = PyLong_AsLong(stepval); if (unlikely(idigit < 0)) goto done; remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); if (unlikely(idigit >= (1L << remaining_bits))) goto raise_overflow; val |= ((long) idigit) << bits; #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000 unpacking_done: #endif if (!is_unsigned) { if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) goto raise_overflow; if (is_negative) val = ~val; } ret = 0; done: Py_XDECREF(shift); Py_XDECREF(mask); Py_XDECREF(stepval); #endif Py_DECREF(v); if (likely(!ret)) return val; } return (long) -1; } } else { long val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (long) -1; val = __Pyx_PyInt_As_long(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to long"); return (long) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); return (long) -1; } /* FastTypeChecks */ #if CYTHON_COMPILING_IN_CPYTHON static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { while (a) { a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); if (a == b) return 1; } return b == &PyBaseObject_Type; } static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { PyObject *mro; if (a == b) return 1; mro = a->tp_mro; if (likely(mro)) { Py_ssize_t i, n; n = PyTuple_GET_SIZE(mro); for (i = 0; i < n; i++) { if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) return 1; } return 0; } return __Pyx_InBases(a, b); } static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { PyObject *mro; if (cls == a || cls == b) return 1; mro = cls->tp_mro; if (likely(mro)) { Py_ssize_t i, n; n = PyTuple_GET_SIZE(mro); for (i = 0; i < n; i++) { PyObject *base = PyTuple_GET_ITEM(mro, i); if (base == (PyObject *)a || base == (PyObject *)b) return 1; } return 0; } return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); } #if PY_MAJOR_VERSION == 2 static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { PyObject *exception, *value, *tb; int res; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&exception, &value, &tb); res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; if (unlikely(res == -1)) { PyErr_WriteUnraisable(err); res = 0; } if (!res) { res = PyObject_IsSubclass(err, exc_type2); if (unlikely(res == -1)) { PyErr_WriteUnraisable(err); res = 0; } } __Pyx_ErrRestore(exception, value, tb); return res; } #else static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { if (exc_type1) { return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); } else { return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); } } #endif static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { Py_ssize_t i, n; assert(PyExceptionClass_Check(exc_type)); n = PyTuple_GET_SIZE(tuple); #if PY_MAJOR_VERSION >= 3 for (i=0; i= 0x030B00A4 return Py_Version & ~0xFFUL; #else const char* rt_version = Py_GetVersion(); unsigned long version = 0; unsigned long factor = 0x01000000UL; unsigned int digit = 0; int i = 0; while (factor) { while ('0' <= rt_version[i] && rt_version[i] <= '9') { digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); ++i; } version += factor * digit; if (rt_version[i] != '.') break; digit = 0; factor >>= 8; ++i; } return version; #endif } static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { const unsigned long MAJOR_MINOR = 0xFFFF0000UL; if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) return 0; if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) return 1; { char message[200]; PyOS_snprintf(message, sizeof(message), "compile time Python version %d.%d " "of module '%.100s' " "%s " "runtime version %d.%d", (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), __Pyx_MODULE_NAME, (allow_newer) ? "was newer than" : "does not match", (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) ); return PyErr_WarnEx(NULL, message, 1); } } /* InitStrings */ #if PY_MAJOR_VERSION >= 3 static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) { if (t.is_unicode | t.is_str) { if (t.intern) { *str = PyUnicode_InternFromString(t.s); } else if (t.encoding) { *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL); } else { *str = PyUnicode_FromStringAndSize(t.s, t.n - 1); } } else { *str = PyBytes_FromStringAndSize(t.s, t.n - 1); } if (!*str) return -1; if (PyObject_Hash(*str) == -1) return -1; return 0; } #endif static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION >= 3 __Pyx_InitString(*t, t->p); #else if (t->is_unicode) { *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); } else if (t->intern) { *t->p = PyString_InternFromString(t->s); } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } if (!*t->p) return -1; if (PyObject_Hash(*t->p) == -1) return -1; #endif ++t; } return 0; } #include static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { size_t len = strlen(s); if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { PyErr_SetString(PyExc_OverflowError, "byte string is too long"); return -1; } return (Py_ssize_t) len; } static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { Py_ssize_t len = __Pyx_ssize_strlen(c_str); if (unlikely(len < 0)) return NULL; return __Pyx_PyUnicode_FromStringAndSize(c_str, len); } static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { Py_ssize_t len = __Pyx_ssize_strlen(c_str); if (unlikely(len < 0)) return NULL; return PyByteArray_FromStringAndSize(c_str, len); } static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT #if !CYTHON_PEP393_ENABLED static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { char* defenc_c; PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); if (!defenc) return NULL; defenc_c = PyBytes_AS_STRING(defenc); #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII { char* end = defenc_c + PyBytes_GET_SIZE(defenc); char* c; for (c = defenc_c; c < end; c++) { if ((unsigned char) (*c) >= 128) { PyUnicode_AsASCIIString(o); return NULL; } } } #endif *length = PyBytes_GET_SIZE(defenc); return defenc_c; } #else static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (likely(PyUnicode_IS_ASCII(o))) { *length = PyUnicode_GET_LENGTH(o); return PyUnicode_AsUTF8(o); } else { PyUnicode_AsASCIIString(o); return NULL; } #else return PyUnicode_AsUTF8AndSize(o, length); #endif } #endif #endif static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && #endif PyUnicode_Check(o)) { return __Pyx_PyUnicode_AsStringAndSize(o, length); } else #endif #if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) if (PyByteArray_Check(o)) { *length = PyByteArray_GET_SIZE(o); return PyByteArray_AS_STRING(o); } else #endif { char* result; int r = PyBytes_AsStringAndSize(o, &result, length); if (unlikely(r < 0)) { return NULL; } else { return result; } } } static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { int retval; if (unlikely(!x)) return -1; retval = __Pyx_PyObject_IsTrue(x); Py_DECREF(x); return retval; } static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result)); #if PY_MAJOR_VERSION >= 3 if (PyLong_Check(result)) { if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " "The ability to return an instance of a strict subclass of int is deprecated, " "and may be removed in a future version of Python.", result_type_name)) { __Pyx_DECREF_TypeName(result_type_name); Py_DECREF(result); return NULL; } __Pyx_DECREF_TypeName(result_type_name); return result; } #endif PyErr_Format(PyExc_TypeError, "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")", type_name, type_name, result_type_name); __Pyx_DECREF_TypeName(result_type_name); Py_DECREF(result); return NULL; } static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; #endif const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x) || PyLong_Check(x))) #else if (likely(PyLong_Check(x))) #endif return __Pyx_NewRef(x); #if CYTHON_USE_TYPE_SLOTS m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = m->nb_int(x); } else if (m && m->nb_long) { name = "long"; res = m->nb_long(x); } #else if (likely(m && m->nb_int)) { name = "int"; res = m->nb_int(x); } #endif #else if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { res = PyNumber_Int(x); } #endif if (likely(res)) { #if PY_MAJOR_VERSION < 3 if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { #else if (unlikely(!PyLong_CheckExact(res))) { #endif return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); } } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "an integer is required"); } return res; } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject *x; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(b))) { if (sizeof(Py_ssize_t) >= sizeof(long)) return PyInt_AS_LONG(b); else return PyInt_AsSsize_t(b); } #endif if (likely(PyLong_CheckExact(b))) { #if CYTHON_USE_PYLONG_INTERNALS if (likely(__Pyx_PyLong_IsCompact(b))) { return __Pyx_PyLong_CompactValue(b); } else { const digit* digits = __Pyx_PyLong_Digits(b); const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); switch (size) { case 2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; } } #endif return PyLong_AsSsize_t(b); } x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); #if PY_MAJOR_VERSION < 3 } else if (likely(PyInt_CheckExact(o))) { return PyInt_AS_LONG(o); #endif } else { Py_ssize_t ival; PyObject *x; x = PyNumber_Index(o); if (!x) return -1; ival = PyInt_AsLong(x); Py_DECREF(x); return ival; } } static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } /* #### Code section: utility_code_pragmas_end ### */ #ifdef _MSC_VER #pragma warning( pop ) #endif /* #### Code section: end ### */ #endif /* Py_PYTHON_H */ recode-3.7.15/tests/asan-suppressions.txt0000644000175000017500000000003514172742375014143 leak:/bin/bash leak:/bin/sed recode-3.7.15/tests/t40_african.py0000644000175000017500000001241613226751246012353 # -*- coding: utf-8 -*- import common from common import setup_module, teardown_module class Test_Bambara: # Bambara. input = """\ N ye n ka nsiirin nin da Amadu Tara la. Jamanatigi d=F2 tun b=E8 yen muso k=F2n=F2nt=F2 de tun b=E8 a f=E8. Muso k=F2n=F2nt=F2 b=E8=E8 ye denk=E8 ke= len kelen wolo a ye. A denk=E8 kelen kelen b=E8=E8 fana t=F2g=F2 ye ko Amadu. Amadu ninw, u ba t=F2g=F2 de tun b=E8 da u kan ka u b=F2 ny=F2g=F2n na. Amadu b= =E8=E8 ncinin tun ye denk=E8 ninw b=E8=E8 la d=F2g=F2nin o de tun ye Amadu Tara ye. O tun ye jamanatigi nin ka taramuso den ye. """ output = """\ TiB5ZSBuIGthIG5zaWlyaW4gbmluIGRhIEFtYWR1IFRhcmEgbGEuICBKYW1hbmF0aWdpIGRvYCB0 dW4gYmVgIHllbiBtdXNvCmtvYG5vYG50b2AgZGUgdHVuIGJlYCBhIGZlYC4gIE11c28ga29gbm9g bnRvYCBiZWBlYCB5ZSBkZW5rZWAga2VsZW4ga2VsZW4Kd29sbyBhIHllLiAgQSBkZW5rZWAga2Vs ZW4ga2VsZW4gYmVgZWAgZmFuYSB0b2Bnb2AgeWUga28gQW1hZHUuICBBbWFkdQpuaW53LCB1IGJh IHRvYGdvYCBkZSB0dW4gYmVgIGRhIHUga2FuIGthIHUgYm9gIG55b2Bnb2BuIG5hLiAgQW1hZHUg YmVgZWAKbmNpbmluIHR1biB5ZSBkZW5rZWAgbmludyBiZWBlYCBsYSBkb2Bnb2BuaW4gbyBkZSB0 dW4geWUgQW1hZHUgVGFyYSB5ZS4KTyB0dW4geWUgamFtYW5hdGlnaSBuaW4ga2EgdGFyYW11c28g ZGVuIHllLgo= """ def test_1(self): common.request('../,bambara/qp..t-bambara/64') common.validate(self.input, self.output) def test_2(self): common.request('../,t-bambara/64..bambara/qp') common.validate(self.output, self.input) class Test_Peul_Fulfulde: input = """\ Woni =B2on haa =B1ooyi. Oya mar=B2o jiwo kaanaro on maayi. Suka no ton no wi=BDee Buubu Yee=B1e, on suka e nder sukaa=B1e aduna on alaa bur=B2o mo labeede. On suka yahi safaari, o woni ton haa nee=B1i --- wa duu=B1i sappo o ko fawi! --- Yumma makko maraa =B1i=B2=B2o go=BDo si wonaa kanko. """ output = """\ V29uaSBkW29uIGhhYSBiW29veWkuICBPeWEgbWFyZFtvIGppd28ga2FhbmFybyBvbiBtYWF5aS4g IFN1a2Egbm8KdG9uIG5vIHdpP15lZSBCdXVidSBZZWViW2UsIG9uIHN1a2EgZSBuZGVyIHN1a2Fh YltlIGFkdW5hIG9uIGFsYWEKYnVyZFtvIG1vIGxhYmVlZGUuICBPbiBzdWthIHlhaGkgc2FmYWFy aSwgbyB3b25pIHRvbiBoYWEgbmVlYltpIC0tLQp3YSBkdXViW2kgc2FwcG8gbyBrbyBmYXdpISAt LS0gWXVtbWEgbWFra28gbWFyYWEgYltpZFtkW28KZ28/Xm8gc2kgd29uYWEga2Fua28uCg== """ def test_1(self): common.request('../,fulfulde/qp..t-fulfulde/64') common.validate(self.input, self.output) def test_2(self): common.request ('../,t-fulfulde/64..fulfulde/qp') common.validate(self.output, self.input) class Test_Lingala: input = """\ Mob=E1li m=B6k=B6, azal=E1k=ED s=E9 y=E9m=B6k=B6 n=E1 bil=B6k=F8 m=EDngi. Mok=F8l=F8 m=B6k=B6 alob=ED: t=EDk=E1 n=E1k=F0nd=F0 koluka mw=E3s=ED. Ak= =F0=ED. At=E1mb=F3l=ED k=E1 k=E1 k=E1, ak=F3m=ED namb=F3ka m=B6k=B6, ak=FAt=ED w=E2= n=E1 Ntaba. Ntaba at=FAn=ED y=FD: ndeko, =F5kok=F0nd=F0 w=E1pi? Moto alob=ED: n=E3kok= =F0nd=F0 koluka mw=E3si yakob=E1la nay=E9. Ntaba alob=ED: zil=E1 ng=E1=ED t=F3k=F0n= d=F0 el=F8ng=B6. """ output = """\ TW9iYVwnbGkgbW9bJ2tvWycsIGF6YWxhXCdraVwnIHNlXCcgeWVcJ21vWydrb1snIG5hXCcgYmls b1sna29bIG1pXCduZ2kuCk1va29bbG9bIG1vWydrb1snIGFsb2JpXCc6IHRpXCdrYVwnIG5hXCdr ZVtuZGVbIGtvbHVrYSBtd2FcdnNpXCcuICBBa2VbaVwnLgpBdGFcJ21ib1wnbGlcJyBrYVwnIGth XCcga2FcJywgYWtvXCdtaVwnIG5hbWJvXCdrYSBtb1sna29bJywgYWt1XCd0aVwnIHdhXm5hXCcg TnRhYmEuCk50YWJhIGF0dVwnbmlcJyB5ZVx2OiBuZGVrbywgb1x2a29rZVtuZGVbIHdhXCdwaT8g IE1vdG8gYWxvYmlcJzogbmFcdmtva2VbbmRlWwprb2x1a2EgbXdhXHZzaSB5YWtvYmFcJ2xhIG5h eWVcJy4gIE50YWJhIGFsb2JpXCc6IHppbGFcJyBuZ2FcJ2lcJyB0b1wna2VbbmRlWwplbG9bbmdv WycuCg== """ def test_1(self): common.request('../,lingala/qp..t-lingala/64') common.validate(self.input, self.output) def test_2(self): common.request('../,t-lingala/64..lingala/qp') common.validate(self.output, self.input) class Test_Sango: input = """\ M=E2ley=F6mb=F6 ayeke mb=EAn=EE wakua t=EE let=E4a. Lo yeke zo s=F4 lo y= =EA kua t=EE lo m=EEngi. Azo t=EE y=E2 t=EE vaka s=F4 s=EF lo yeke l=E4ng=F6 da=E4 s=F4= ay=EA t=EBn=EB t=EE lo m=EEngi ngbanga t=EE nz=F6n=EE dut=EF t=EE lo na y=E2ng=E2= da t=EE lo na =E2s=EBw=E4 t=EE lo. """ output = """\ TWFebGV5byJtYm8iIGF5ZWtlIG1iZV5uaV4gd2FrdWEgdGleIGxldGEiYS4gIExvIHlla2Ugem8g c29eIGxvIHllXiBrdWEgdGleCmxvIG1pXm5naS4gIEF6byB0aV4geWFeIHRpXiB2YWthIHNvXiBz aSIgbG8geWVrZSBsYSJuZ28iIGRhYSIgc29eIGF5ZV4KdGUibmUiIHRpXiBsbyBtaV5uZ2kgbmdi YW5nYSB0aV4gbnpvIm5pXiBkdXRpIiB0aV4gbG8gbmEgeWFebmdhXmRhIHRpXgpsbyBuYSBhXnNl IndhIiB0aV4gbG8uCg== """ def test_1(self): common.request('../,sango/qp..t-sango/64') common.validate(self.input, self.output) def test_2(self): common.request('../,t-sango/64..sango/qp') common.validate(self.output, self.input) class Test_Wolof: input = """\ Ca 1965 ba leegi, Suwaahili mooy l=E0kk r=E9=E9wum Tansani. L=E0kk woowu la=BAuy j=E0ngalee ci daara yu ndaw yi ag yu yem yi. Ci moom la =BAuy jottalee xabaar yi =BAuy wax ag yi =BAuy bind. """ output = """\ Q2EgMTk2NSBiYSBsZWVnaSwgU3V3YWFoaWxpIG1vb3kgbGFga2sgcmVcJ2VcJ3d1bSBUYW5zYW5p LiAgTGFga2sgd29vd3UKbGFuXnV5IGphYG5nYWxlZSBjaSBkYWFyYSB5dSBuZGF3IHlpIGFnIHl1 IHllbSB5aS4gIENpIG1vb20gbGEgbl51eQpqb3R0YWxlZSB4YWJhYXIgeWkgbl51eSB3YXggYWcg eWkgbl51eSBiaW5kLgo= """ def test_1(self): common.request('../,wolof/qp..t-wolof/64') common.validate(self.input, self.output) def test_2(self): common.request('../,t-wolof/64..wolof/qp') common.validate(self.output, self.input) recode-3.7.15/tests/t40_utf8.py0000644000175000017500000000335413226751246011637 # -*- coding: utf-8 -*- import common from common import setup_module, teardown_module input = '''\ Dear =DEorvard=F0ur, =AB O=F9 qu'il r=E9side, =E0 N=EEmes ou m=EAme Capharna=FCm, tout Fran=E7ai= s inscrit au r=F4le payera son d=FB d=E8s avant No=EBl, qu'il soit na=EFf ou r=E2leur= . =BB Incomplete last line= ''' output = '''\ 0x44, 0x65, 0x61, 0x72, 0x20, 0xC3, 0x9E, 0x6F, 0x72, 0x76, 0x61, 0x72, 0x64, 0xC3, 0xB0, 0x75, 0x72, 0x2C, 0x0A, 0x0A, 0xC2, 0xAB, 0x20, 0x4F, 0xC3, 0xB9, 0x20, 0x71, 0x75, 0x27, 0x69, 0x6C, 0x20, 0x72, 0xC3, 0xA9, 0x73, 0x69, 0x64, 0x65, 0x2C, 0x20, 0xC3, 0xA0, 0x20, 0x4E, 0xC3, 0xAE, 0x6D, 0x65, 0x73, 0x20, 0x6F, 0x75, 0x20, 0x6D, 0xC3, 0xAA, 0x6D, 0x65, 0x20, 0x43, 0x61, 0x70, 0x68, 0x61, 0x72, 0x6E, 0x61, 0xC3, 0xBC, 0x6D, 0x2C, 0x20, 0x74, 0x6F, 0x75, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6E, 0xC3, 0xA7, 0x61, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x63, 0x72, 0x69, 0x74, 0x0A, 0x61, 0x75, 0x20, 0x72, 0xC3, 0xB4, 0x6C, 0x65, 0x20, 0x70, 0x61, 0x79, 0x65, 0x72, 0x61, 0x20, 0x73, 0x6F, 0x6E, 0x20, 0x64, 0xC3, 0xBB, 0x20, 0x64, 0xC3, 0xA8, 0x73, 0x20, 0x61, 0x76, 0x61, 0x6E, 0x74, 0x20, 0x4E, 0x6F, 0xC3, 0xAB, 0x6C, 0x2C, 0x20, 0x71, 0x75, 0x27, 0x69, 0x6C, 0x20, 0x73, 0x6F, 0x69, 0x74, 0x20, 0x6E, 0x61, 0xC3, 0xAF, 0x66, 0x20, 0x6F, 0x75, 0x20, 0x72, 0xC3, 0xA2, 0x6C, 0x65, 0x75, 0x72, 0x2E, 0x20, 0xC2, 0xBB, 0x0A, 0x49, 0x6E, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65 ''' class Test: def test_1(self): # Block of lines to UTF-8. common.request('l1/qp..u8/x') common.validate(input, output) def test_2(self): # Block of lines to UTF-8 and back. common.request('l1/qp..u8/x') common.validate_back(input) recode-3.7.15/tests/t40_testdump.py0000644000175000017500000000374413226751246012621 # -*- coding: utf-8 -*- import common from common import setup_module, teardown_module # Testing and counting. # FIXME: In internal, output is produced to stdout, not in the string. class Test_test7: output = '''\ 11 000A LF 117 0020 SP 127 002C , 152 0030 0 24 0031 1 24 0032 2 24 0033 3 24 0034 4 24 0035 5 24 0036 6 24 0037 7 8 0038 8 8 0039 9 8 0041 A 8 0042 B 8 0043 C 8 0044 D 8 0045 E 8 0046 F 128 0078 x ''' def test_1(self): common.request('test7..x,us..count') common.validate('', self.output) class Test_test8: output = '''\ 22 000A LF 234 0020 SP 255 002C , 288 0030 0 32 0031 1 32 0032 2 32 0033 3 32 0034 4 32 0035 5 32 0036 6 32 0037 7 32 0038 8 32 0039 9 32 0041 A 32 0042 B 32 0043 C 32 0044 D 32 0045 E 32 0046 F 256 0078 x ''' def test_1(self): common.request('test8..x,us..count') common.validate('', self.output) class Test_test15: output = '''\ 8064 000A LF 56445 0020 SP 64508 002C , 80765 0030 0 16256 0031 1 16256 0032 2 16256 0033 3 16256 0034 4 16256 0035 5 16256 0036 6 16256 0037 7 16256 0038 8 16256 0039 9 16256 0041 A 16256 0042 B 16000 0043 C 14975 0044 D 15999 0045 E 15990 0046 F 64509 0078 x ''' def test_1(self): common.request('test15..x2,us..count') common.validate('', self.output) class Test_test16: output = '''\ 8192 000A LF 57344 0020 SP 65535 002C , 81920 0030 0 16384 0031 1 16384 0032 2 16384 0033 3 16384 0034 4 16384 0035 5 16384 0036 6 16384 0037 7 16384 0038 8 16384 0039 9 16384 0041 A 16384 0042 B 16384 0043 C 16384 0044 D 16384 0045 E 16384 0046 F 65536 0078 x ''' def test_1(self): common.request('test16..x2,us..count') common.validate('', self.output) recode-3.7.15/tests/t90_bigauto.py0000644000175000017500000001603614357336470012415 #!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright © 1997-2000 Progiciels Bourbeau-Pinard, Inc. # François Pinard , 1997. """\ NOTE: This script has not been revised yet as a main program. Currently, it is only meant as a part of the Recode test suite. -------------------------------------------------------------------------- Produce statistics from the results of the bigauto check. Usage: bigauto [RECODE_OPTION]... [CHARSET_OPTION]... This script makes a simple analysis for the connectivity of the various charsets and produce a report on standard output. The reports include statistics about the number of steps before and after optimisation. The option `-hNAME' would affect the resulting output, because there are more merging rules when this option is in effect. Other options affect the result: `-d', `-g' and, notably, `-s'. All non-option arguments are interpreted as charset names. If any is given, the study is limited to those recodings having any of the given charsets both as a starting and ending points. If there is no such non-option argument, all possible possible recodings are considered. """ import os, sys from common import py, Recode from common import setup_module, teardown_module class Test: avoid_as_before = b'count-characters', b'dump-with-names', b'flat' def test_1(self): if Recode is None: py.test.skip() self.outer = Recode.Outer(strict=False) self.charsets = sorted(self.outer.all_charsets()) for before in self.charsets: if before not in self.avoid_as_before: yield self.validate, before def test_2(self): if Recode is None: py.test.skip() self.outer = Recode.Outer(strict=True) self.charsets = sorted(self.outer.all_charsets()) for before in self.charsets: if before not in self.avoid_as_before: yield self.validate, before def validate(self, before): # As a compromise between being too terse or too verbose, we # consider as a single test, one "before" against all "after"s. # However, without a Recode module, we do not know how many # "before"s exist, and the skip count is then rather small. print(before) for after in self.charsets: if after is not before: request = Recode.Request(self.outer) request.scan(b'%s..%s' % (before, after)) def main(*arguments): recode_options = [] charset_options = [] for argument in arguments: if arguments[0] == '-': recode_options.append(argument) else: charset_options.append(argument) report = Report() report.digest_data(file(work_name).readline) report.produce_report(sys.stdout.write) class Report: def __init__(self): self.recode_calls = 0 self.original_count = {} self.original_example = {} self.original_total = 0 self.shrunk_count = {} self.shrunk_example = {} self.shrunk_total = 0 def digest_data(self, readline): lensep = len(os.linesep) line = readline() while line: type, request = line[:-lensep].split(':', 1) if type == 'Request': steps = self.get_steps(request) self.count_original_request(steps, request) line = readline() if line: if len(line[:-lensep].split(':', 1)) != 2: print('*', line, end='') type, shrunk_to = line[:-lensep].split(':', 1) if type == 'Shrunk to': steps = self.get_steps(shrunk_to) self.count_shrunk_request(steps, shrunk_to) line = readline() else: self.count_shrunk_request(steps, request) else: self.count_shrunk_request(steps, request) else: sys.stderr.write('Unrecognized line: ' + line) line = readline() def get_steps(self, text): if text == '*mere copy*': return 0 if text[-1] == '/': text = text[:-1] text = text.replace('/..', '..') count = 0 for fragment in text.split('..'): count += len(fragment.split('/')) return count - 1 def count_original_request(self, steps, text): self.recode_calls += 1 if steps in self.original_count: self.original_count[steps] += 1 else: self.original_count[steps] = 1 self.original_example[steps] = text.strip() if self.original_total == 0: self.original_minimum = self.original_maximum = steps else: if steps < self.original_minimum: self.original_minimum = steps if steps > self.original_maximum: self.original_maximum = steps self.original_total = self.original_total + steps def count_shrunk_request(self, steps, text): if steps in self.shrunk_count: self.shrunk_count[steps] += 1 else: self.shrunk_count[steps] = 1 self.shrunk_example[steps] = text.strip() if self.shrunk_total == 0: self.shrunk_minimum = self.shrunk_maximum = steps else: if steps < self.shrunk_minimum: self.shrunk_minimum = steps if steps > self.shrunk_maximum: self.shrunk_maximum = steps self.shrunk_total = self.shrunk_total + steps def produce_report(self, write): if self.recode_calls == 0: sys.stderr.write("No call to report\n") return write("\n" "Optimisation Original Shrunk\n" " .-------------------\n" "Minimum | %2d %2d\n" "Maximum | %2d %2d\n" "Average | %4.1f %4.1f\n" % (self.original_minimum, self.shrunk_minimum, self.original_maximum, self.shrunk_maximum, float(self.original_total) / float(self.recode_calls), float(self.shrunk_total) / float(self.recode_calls))) write("\n" "Histogram for original requests\n") for steps in range(self.original_minimum, self.original_maximum + 1): if steps in self.original_count: write("%5d steps, %5d times %s\n" % (steps, self.original_count[steps], self.original_example[steps])) write("\n" "Histogram for shrunk requests\n") for steps in range(self.shrunk_minimum, self.shrunk_maximum + 1): if steps in self.shrunk_count: write("%5d steps, %5d times %s\n" % (steps, self.shrunk_count[steps], self.shrunk_example[steps])) if __name__ == '__main__': main(*sys.argv[1:]) recode-3.7.15/tests/Recode.pyx0000644000175000017500000005113114374760602011650 # -*- coding: utf-8 -*- # Python interface to the Recode C library, for testing. # Copyright © 1996-2008 Free Software Foundation, Inc. # François Pinard , 1988. # 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 3, 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, see . from libcpp cimport bool from libc.stdlib cimport free from libc.stdio cimport FILE cdef extern from "common.h": ## Forwarded. cdef struct recode_outer ctypedef recode_outer *RECODE_OUTER ctypedef recode_outer *RECODE_CONST_OUTER cdef struct recode_single ctypedef recode_single *RECODE_SINGLE ## Symbols. enum recode_symbol_type: RECODE_NO_SYMBOL_TYPE RECODE_CHARSET RECODE_DATA_SURFACE enum recode_data_type: RECODE_NO_CHARSET_DATA RECODE_STRIP_DATA RECODE_EXPLODE_DATA struct recode_symbol: recode_symbol *next unsigned ordinal char *name char *iconv_name recode_data_type data_type void *data RECODE_SINGLE resurfacer RECODE_SINGLE unsurfacer recode_symbol_type type bool ignore ctypedef recode_symbol *RECODE_SYMBOL ctypedef recode_symbol *RECODE_CONST_SYMBOL struct recode_surface_list: RECODE_CONST_SYMBOL surface recode_surface_list *next struct recode_alias: char *name RECODE_SYMBOL symbol recode_surface_list *implied_surfaces ctypedef recode_alias *RECODE_ALIAS ctypedef recode_alias *RECODE_CONST_ALIAS ## Steps. enum recode_size: RECODE_1 RECODE_2 RECODE_4 RECODE_N struct recode_quality: recode_size in_size recode_size out_size bool reversible bool slower bool faster struct recode_option_list: char *option recode_option_list *next ctypedef recode_option_list *RECODE_OPTION_LIST ctypedef recode_option_list *RECODE_CONST_OPTION_LIST ctypedef bool (*Recode_init)(RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST) ctypedef bool (*Recode_term)(RECODE_STEP, RECODE_CONST_REQUEST) ctypedef bool (*Recode_transform)(RECODE_SUBTASK) ctypedef bool (*Recode_fallback)(RECODE_SUBTASK, unsigned) struct recode_single: recode_single *next RECODE_SYMBOL before RECODE_SYMBOL after short conversion_cost void *initial_step_table recode_quality quality Recode_init init_routine Recode_transform transform_routine Recode_fallback fallback_routine enum recode_step_type: RECODE_NO_STEP_TABLE RECODE_BYTE_TO_BYTE RECODE_BYTE_TO_STRING RECODE_UCS2_TO_BYTE RECODE_UCS2_TO_STRING RECODE_STRING_TO_UCS2 RECODE_COMBINE_EXPLODE RECODE_COMBINE_STEP RECODE_EXPLODE_STEP struct recode_step: RECODE_SYMBOL before RECODE_SYMBOL after recode_quality quality recode_step_type step_type void *step_table void *local Recode_transform transform_routine Recode_fallback fallback_routine Recode_term term_routine ctypedef recode_step *RECODE_STEP ctypedef recode_step *RECODE_CONST_STEP ## Requests. struct recode_request: RECODE_OUTER outer bool verbose_flag char diaeresis_char bool make_header_flag bool diacritics_only bool ascii_graphics RECODE_STEP sequence_array size_t sequence_allocated short sequence_length ctypedef recode_request *RECODE_REQUEST ctypedef recode_request *RECODE_CONST_REQUEST ## Tasks. struct recode_read_only_text: char *name FILE *file char *buffer char *cursor char *limit struct recode_read_write_text: char *name FILE *file char *buffer char *cursor char *limit enum recode_swap_input: RECODE_SWAP_UNDECIDED RECODE_SWAP_NO RECODE_SWAP_YES enum recode_error_ 'recode_error': RECODE_NO_ERROR RECODE_NOT_CANONICAL RECODE_AMBIGUOUS_OUTPUT RECODE_UNTRANSLATABLE RECODE_INVALID_INPUT RECODE_SYSTEM_ERROR RECODE_USER_ERROR RECODE_INTERNAL_ERROR RECODE_MAXIMUM_ERROR struct recode_task: RECODE_CONST_REQUEST request recode_read_only_text input recode_read_write_text output bool byte_order_mark recode_swap_input swap_input recode_error_ fail_level recode_error_ abort_level recode_error_ error_so_far RECODE_CONST_STEP error_at_step ctypedef recode_task *RECODE_TASK ctypedef recode_task *RECODE_CONST_TASK struct recode_subtask: RECODE_TASK task RECODE_CONST_STEP step recode_read_only_text input recode_read_write_text output unsigned newline_count unsigned character_count ctypedef recode_subtask *RECODE_SUBTASK int recode_get_byte(RECODE_SUBTASK) void recode_put_byte(int, RECODE_SUBTASK) void SET_SUBTASK_ERROR(recode_error_, RECODE_SUBTASK) bool SUBTASK_RETURN(RECODE_SUBTASK) void RETURN_IF_NOGO(recode_error_, RECODE_SUBTASK) void GOT_CHARACTER(RECODE_SUBTASK) void GOT_NEWLINE(RECODE_SUBTASK) ## Outers. struct recode_known_pair: unsigned char left unsigned char right struct recode_outer: bool auto_abort bool use_iconv # charset.c: recode_known_pair *pair_restriction unsigned pair_restrictions void *alias_table RECODE_SYMBOL symbol_list unsigned number_of_symbols char **argmatch_charset_array char **argmatch_surface_array char **realname_charset_array char **realname_surface_array # recode.c: recode_single *single_list unsigned number_of_singles unsigned char *one_to_same RECODE_SYMBOL data_symbol RECODE_SYMBOL ucs2_charset RECODE_SYMBOL iconv_pivot RECODE_SYMBOL crlf_surface RECODE_SYMBOL cr_surface recode_quality quality_byte_reversible recode_quality quality_byte_to_byte recode_quality quality_byte_to_ucs2 recode_quality quality_byte_to_variable recode_quality quality_ucs2_to_byte recode_quality quality_ucs2_to_variable recode_quality quality_variable_to_byte recode_quality quality_variable_to_ucs2 recode_quality quality_variable_to_variable ## Miscellaneous. enum recode_list_format: RECODE_NO_FORMAT RECODE_DECIMAL_FORMAT RECODE_OCTAL_FORMAT RECODE_HEXADECIMAL_FORMAT RECODE_FULL_FORMAT enum recode_programming_language: RECODE_NO_LANGUAGE RECODE_LANGUAGE_C RECODE_LANGUAGE_PERL enum: NUL_ 'NUL' STRIP_SIZE_ 'STRIP_SIZE' ctypedef unsigned short recode_ucs2 struct strip_data: recode_ucs2 *pool short offset[256 // STRIP_SIZE_] struct ucs2_to_byte: recode_ucs2 code unsigned char byte struct ucs2_to_string: recode_ucs2 code unsigned short flags char *string ## Per module declarations. # recode.c void recode_error(RECODE_OUTER, char *, ...) void recode_perror(RECODE_OUTER, char *, ...) void *recode_malloc(RECODE_OUTER, size_t) void *recode_realloc(RECODE_OUTER, void *, size_t) unsigned char *invert_table(RECODE_OUTER, unsigned char *) bool complete_pairs(RECODE_OUTER, RECODE_STEP, recode_known_pair *, unsigned, bool, bool) bool transform_byte_to_ucs2(RECODE_SUBTASK) bool init_ucs2_to_byte(RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST) bool transform_ucs2_to_byte(RECODE_SUBTASK) # charname.c and fr-charname.c char *ucs2_to_charname(int) char *ucs2_to_french_charname(int) # charset.c enum alias_find_type: SYMBOL_CREATE_CHARSET_ 'SYMBOL_CREATE_CHARSET' SYMBOL_CREATE_DATA_SURFACE_ 'SYMBOL_CREATE_DATA_SURFACE' ALIAS_FIND_AS_CHARSET_ 'ALIAS_FIND_AS_CHARSET' ALIAS_FIND_AS_SURFACE_ 'ALIAS_FIND_AS_SURFACE' ALIAS_FIND_AS_EITHER_ 'ALIAS_FIND_AS_EITHER' int code_to_ucs2(RECODE_CONST_SYMBOL, unsigned) bool prepare_for_aliases(RECODE_OUTER) RECODE_ALIAS recode_declare_alias(RECODE_OUTER, char *, char *) bool recode_declare_implied_surface(RECODE_OUTER, RECODE_ALIAS, RECODE_CONST_SYMBOL) bool make_argmatch_arrays(RECODE_OUTER) RECODE_ALIAS find_alias(RECODE_OUTER, char *, alias_find_type) bool find_and_report_subsets(RECODE_OUTER) bool decode_known_pairs(RECODE_OUTER, char *) # combine.c enum: DONE ELSE_ 'ELSE' bool init_explode(RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST) bool explode_byte_byte(RECODE_SUBTASK) bool explode_ucs2_byte(RECODE_SUBTASK) bool explode_byte_ucs2(RECODE_SUBTASK) bool explode_ucs2_ucs2(RECODE_SUBTASK) bool init_combine(RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST) bool combine_byte_byte(RECODE_SUBTASK) bool combine_ucs2_byte(RECODE_SUBTASK) bool combine_byte_ucs2(RECODE_SUBTASK) bool combine_ucs2_ucs2(RECODE_SUBTASK) # freeze.c void recode_freeze_tables(RECODE_OUTER) # iconv.c bool transform_with_iconv(RECODE_SUBTASK) # localcharset.c char *locale_charset() # names.c bool should_prefer_french() # mixed.c bool transform_c_source(RECODE_TASK) bool transform_po_source(RECODE_TASK) # outer.c ctypedef bool (*declare_single_Arg5)( RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST) ctypedef bool (*declare_single_Arg6)(RECODE_SUBTASK) bool reversibility(RECODE_SUBTASK, unsigned) RECODE_SINGLE declare_single( RECODE_OUTER, char *, char *, recode_quality, declare_single_Arg5, declare_single_Arg6) bool declare_iconv(RECODE_OUTER, char *, char *) bool recode_declare_explode_data(RECODE_OUTER, unsigned short *, char *, char *) bool recode_declare_strip_data(RECODE_OUTER, strip_data *, char *) # pool.c extern recode_ucs2 ucs2_data_pool[] # request.c char *edit_sequence(RECODE_REQUEST, bool) # rfc1345.c char *ucs2_to_rfc1345(recode_ucs2) # task.c int get_byte(RECODE_SUBTASK) void recode_put_byte(int, RECODE_SUBTASK) bool recode_if_nogo(recode_error_, RECODE_SUBTASK) bool transform_byte_to_byte(RECODE_SUBTASK) bool transform_byte_to_variable(RECODE_SUBTASK) # ucs.c enum: REPLACEMENT_CHARACTER_ 'REPLACEMENT_CHARACTER' NOT_A_CHARACTER_ 'NOT_A_CHARACTER' BYTE_ORDER_MARK_ 'BYTE_ORDER_MARK' BYTE_ORDER_MARK_SWAPPED_ 'BYTE_ORDER_MARK_SWAPPED' bool get_ucs2(unsigned *, RECODE_SUBTASK) bool get_ucs4(unsigned *, RECODE_SUBTASK) bool put_ucs2(unsigned, RECODE_SUBTASK) bool put_ucs4(unsigned, RECODE_SUBTASK) ## Recode library at OUTER level. enum: RECODE_AUTO_ABORT_FLAG RECODE_NO_ICONV_FLAG RECODE_STRICT_MAPPING_FLAG RECODE_OUTER recode_new_outer(unsigned) bool recode_delete_outer(RECODE_OUTER) bool recode_list_all_symbols(RECODE_OUTER, RECODE_CONST_SYMBOL) bool recode_list_concise_charset(RECODE_OUTER, RECODE_CONST_SYMBOL, recode_list_format) bool recode_list_full_charset(RECODE_OUTER, RECODE_CONST_SYMBOL) # Recode library at REQUEST level. RECODE_REQUEST recode_new_request(RECODE_OUTER) bool recode_delete_request(RECODE_REQUEST) bool recode_scan_request(RECODE_REQUEST, char *) bool recode_format_table( RECODE_REQUEST, recode_programming_language, char *) bool recode_buffer_to_buffer( RECODE_CONST_REQUEST, char *, size_t, char **, size_t *, size_t *) bool recode_buffer_to_file( RECODE_CONST_REQUEST, char *, size_t, FILE *) bool recode_file_to_buffer( RECODE_CONST_REQUEST, FILE *, char **, size_t *, size_t *) bool recode_file_to_file(RECODE_CONST_REQUEST, FILE *, FILE *) # Recode library at TASK level. RECODE_TASK recode_new_task(RECODE_CONST_REQUEST) bool recode_delete_task(RECODE_TASK) bool recode_perform_task(RECODE_TASK) class error(Exception): pass ## Enums repeated for Python. NO_SYMBOL_TYPE = RECODE_NO_SYMBOL_TYPE CHARSET = RECODE_CHARSET DATA_SURFACE = RECODE_DATA_SURFACE NO_CHARSET_DATA = RECODE_NO_CHARSET_DATA STRIP_DATA = RECODE_STRIP_DATA EXPLODE_DATA = RECODE_EXPLODE_DATA SIZE_1 = RECODE_1 SIZE_2 = RECODE_2 SIZE_4 = RECODE_4 SIZE_N = RECODE_N NO_STEP_TABLE = RECODE_NO_STEP_TABLE BYTE_TO_BYTE = RECODE_BYTE_TO_BYTE BYTE_TO_STRING = RECODE_BYTE_TO_STRING UCS2_TO_BYTE = RECODE_UCS2_TO_BYTE UCS2_TO_STRING = RECODE_UCS2_TO_STRING STRING_TO_UCS2 = RECODE_STRING_TO_UCS2 COMBINE_EXPLODE = RECODE_COMBINE_EXPLODE COMBINE_STEP = RECODE_COMBINE_STEP EXPLODE_STEP = RECODE_EXPLODE_STEP SWAP_UNDECIDED = RECODE_SWAP_UNDECIDED SWAP_NO = RECODE_SWAP_NO SWAP_YES = RECODE_SWAP_YES NO_ERROR = RECODE_NO_ERROR NOT_CANONICAL = RECODE_NOT_CANONICAL AMBIGUOUS_OUTPUT = RECODE_AMBIGUOUS_OUTPUT UNTRANSLATABLE = RECODE_UNTRANSLATABLE INVALID_INPUT = RECODE_INVALID_INPUT SYSTEM_ERROR = RECODE_SYSTEM_ERROR USER_ERROR = RECODE_USER_ERROR INTERNAL_ERROR = RECODE_INTERNAL_ERROR MAXIMUM_ERROR = RECODE_MAXIMUM_ERROR NO_FORMAT = RECODE_NO_FORMAT DECIMAL_FORMAT = RECODE_DECIMAL_FORMAT OCTAL_FORMAT = RECODE_OCTAL_FORMAT HEXADECIMAL_FORMAT = RECODE_HEXADECIMAL_FORMAT FULL_FORMAT = RECODE_FULL_FORMAT NO_LANGUAGE = RECODE_NO_LANGUAGE LANGUAGE_C = RECODE_LANGUAGE_C LANGUAGE_PERL = RECODE_LANGUAGE_PERL NUL = NUL_ STRIP_SIZE = STRIP_SIZE_ SYMBOL_CREATE_CHARSET = SYMBOL_CREATE_CHARSET_ SYMBOL_CREATE_DATA_SURFACE = SYMBOL_CREATE_DATA_SURFACE_ ALIAS_FIND_AS_CHARSET = ALIAS_FIND_AS_CHARSET_ ALIAS_FIND_AS_SURFACE = ALIAS_FIND_AS_SURFACE_ ALIAS_FIND_AS_EITHER = ALIAS_FIND_AS_EITHER_ xDONE = DONE xELSE = ELSE_ REPLACEMENT_CHARACTER = REPLACEMENT_CHARACTER_ NOT_A_CHARACTER = NOT_A_CHARACTER_ BYTE_ORDER_MARK = BYTE_ORDER_MARK_ BYTE_ORDER_MARK_SWAPPED = BYTE_ORDER_MARK_SWAPPED_ AUTO_ABORT_FLAG = RECODE_AUTO_ABORT_FLAG NO_ICONV_FLAG = RECODE_NO_ICONV_FLAG STRICT_MAPPING_FLAG = RECODE_STRICT_MAPPING_FLAG ## Recode library at OUTER level. cdef class Outer: cdef RECODE_OUTER outer def __init__(self, auto_abort=False, iconv=False, strict=False): cdef int flags cdef RECODE_SINGLE single flags = 0 if auto_abort: flags = flags | RECODE_AUTO_ABORT_FLAG if not iconv: flags = flags | RECODE_NO_ICONV_FLAG if strict: flags = flags | RECODE_STRICT_MAPPING_FLAG self.outer = recode_new_outer(flags) if strict: single = self.outer.single_list while single is not NULL: single.fallback_routine = NULL single = single.next def __dealloc__(self): recode_delete_outer(self.outer) def default_charset(self): return locale_charset() def all_charsets(self): list = [] cdef RECODE_SYMBOL symbol symbol = self.outer.symbol_list while symbol is not NULL: if (symbol.type == RECODE_CHARSET and symbol is not self.outer.iconv_pivot and symbol is not self.outer.data_symbol): list.append(symbol.name) symbol = symbol.next return list def all_surfaces(self): list = [] cdef RECODE_SYMBOL symbol symbol = self.outer.symbol_list while symbol is not NULL: if symbol.type != RECODE_CHARSET: list.append(symbol.name) symbol = symbol.next return list def concise_charset(self, format=NO_FORMAT): ok = recode_list_concise_charset(self.outer, NULL, format) if not ok: raise error def full_charset(self): ok = recode_list_full_charset(self.outer, NULL) if not ok: raise error # Lazy, all in one call. def recode(self, char *command, char *input, verbose=False): request = Request(self) request.set_verbose(verbose) request.scan(command) return request.string(input) # Recode library at REQUEST level. cdef class Request: cdef RECODE_REQUEST request def __init__(self, Outer outer): self.request = recode_new_request(outer.outer) def __dealloc__(self): recode_delete_request(self.request) def set_verbose(self, flag): previous = self.request.verbose_flag != 0 self.request.verbose_flag = int(flag) return previous def scan(self, char *text): ok = recode_scan_request(self.request, text) if not ok: raise error def pair_sequence(self): list = [] cdef recode_step step cdef short counter for counter from 0 <= counter < self.request.sequence_length: step = self.request.sequence_array[counter] list.append((step.before.name, step.after.name)) return list def format_table(self, int language, char *charset): cdef RECODE_OUTER outer cdef bool saved outer = self.request.outer saved = outer.iconv_pivot.ignore outer.iconv_pivot.ignore = True ok = recode_format_table( self.request, language, charset) outer.iconv_pivot.ignore = saved if not ok: raise error def string(self, text): cdef char *input = text cdef size_t input_len = len(text) cdef char *output = NULL cdef size_t output_len cdef size_t output_allocated = 0 result = recode_buffer_to_buffer(self.request, input, input_len, &output, &output_len, &output_allocated) if result is False or output is NULL: raise error try: py_string = output[:output_len] finally: free (output) return py_string # Unexposed APIs: # Don't expose recode_string; always check return value # #char *recode_string( # RECODE_CONST_REQUEST, char *) # Prefer buffer APIs, which allow NUL characters. # #bool recode_string_to_buffer( # RECODE_CONST_REQUEST, char *, char **, size_t *, size_t *) #bool recode_string_to_file( # RECODE_CONST_REQUEST, char *, FILE *) # FIXME: Expose these? # #bool recode_buffer_to_file( # RECODE_CONST_REQUEST, char *, size_t, FILE *) #bool recode_file_to_buffer( # RECODE_CONST_REQUEST, FILE *, char **, size_t *, size_t *) #bool recode_file_to_file(RECODE_CONST_REQUEST, FILE *, FILE *) # Recode library at TASK level. cdef class Task: cdef RECODE_TASK task def __init__(self, Request request): self.task = recode_new_task(request.request) def __dealloc__(self): free (self.task.output.buffer) recode_delete_task(self.task) def set_byte_order_mark(self, flag): previous = self.task.byte_order_mark != 0 self.task.byte_order_mark = int(flag) return previous def get_error(self): return self.task.error_so_far def set_fail_level(self, fail_level): previous = self.task.fail_level self.task.fail_level = fail_level return previous def set_abort_level(self, abort_level): previous = self.task.abort_level self.task.abort_level = abort_level return previous def set_input(self, text): cdef char *input = text cdef size_t input_len = len(text) self.task.input.buffer = input self.task.input.cursor = input self.task.input.limit = input + input_len def get_output(self): return self.task.output.buffer[:self.task.output.cursor - self.task.output.buffer] def perform(self): return recode_perform_task(self.task) recode-3.7.15/tests/t30_base64.py0000644000175000017500000000364113227512763012033 # -*- coding: utf-8 -*- import common from common import setup_module, teardown_module class Test: inputs = [ '\n', 'a\n', 'ab\n', 'abc\n', 'abcd\n', 'abcdefghi\n', 'abcdefghijklmnopqrs\n', 'abcdefghijklmnopqrstuvwzyzABC\n', 'abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLM\n', 'abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVW\n', 'abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456\n', ] def test_1(self): # Single lines to Base64. common.request('../64') output = ['''\ Cg== ''', '''\ YQo= ''', '''\ YWIK ''', '''\ YWJjCg== ''', '''\ YWJjZAo= ''', '''\ YWJjZGVmZ2hpCg== ''', '''\ YWJjZGVmZ2hpamtsbW5vcHFycwo= ''', '''\ YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkMK ''', '''\ YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNCg== ''', '''\ YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWVwo= ''', '''\ YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0 NTYK ''' ] for input, output in zip(self.inputs, output): common.validate(input, output) def test_2(self): # Block of lines to Base64. common.request('/../64') output = '''\ CmEKYWIKYWJjCmFiY2QKYWJjZGVmZ2hpCmFiY2RlZmdoaWprbG1ub3BxcnMKYWJjZGVmZ2hpamts bW5vcHFyc3R1dnd6eXpBQkMKYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xN CmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3enl6QUJDREVGR0hJSktMTU5PUFFSU1RVVlcKYWJjZGVm Z2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTYK ''' common.validate(''.join(self.inputs), output) def test_3(self): # Single lines to Base64 and back. common.request('/../64') for input in self.inputs: common.validate_back(input) def test_4(self): # Block of lines to Base64 and back. common.request('/../64') common.validate_back(''.join(self.inputs)) recode-3.7.15/tests/t30_quoted.py0000644000175000017500000000314413531321552012236 # -*- coding: utf-8 -*- import common from common import setup_module, teardown_module input = '''\ Dear =DEorvard=F0ur, =AB O=F9 qu'il r=E9side, =E0 N=EEmes ou m=EAme Capharna=FCm, tout Fran=E7ai= s inscrit au r=F4le payera son d=FB d=E8s avant No=EBl, qu'il soit na=EFf ou r=E2leur= . =BB Incomplete last line= ''' def test_1(): # Block of lines from Quoted Printable. common.request('qp..x1') output = '''\ 0x44, 0x65, 0x61, 0x72, 0x20, 0xDE, 0x6F, 0x72, 0x76, 0x61, 0x72, 0x64, 0xF0, 0x75, 0x72, 0x2C, 0x0A, 0x0A, 0xAB, 0x20, 0x4F, 0xF9, 0x20, 0x71, 0x75, 0x27, 0x69, 0x6C, 0x20, 0x72, 0xE9, 0x73, 0x69, 0x64, 0x65, 0x2C, 0x20, 0xE0, 0x20, 0x4E, 0xEE, 0x6D, 0x65, 0x73, 0x20, 0x6F, 0x75, 0x20, 0x6D, 0xEA, 0x6D, 0x65, 0x20, 0x43, 0x61, 0x70, 0x68, 0x61, 0x72, 0x6E, 0x61, 0xFC, 0x6D, 0x2C, 0x20, 0x74, 0x6F, 0x75, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6E, 0xE7, 0x61, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x63, 0x72, 0x69, 0x74, 0x0A, 0x61, 0x75, 0x20, 0x72, 0xF4, 0x6C, 0x65, 0x20, 0x70, 0x61, 0x79, 0x65, 0x72, 0x61, 0x20, 0x73, 0x6F, 0x6E, 0x20, 0x64, 0xFB, 0x20, 0x64, 0xE8, 0x73, 0x20, 0x61, 0x76, 0x61, 0x6E, 0x74, 0x20, 0x4E, 0x6F, 0xEB, 0x6C, 0x2C, 0x20, 0x71, 0x75, 0x27, 0x69, 0x6C, 0x20, 0x73, 0x6F, 0x69, 0x74, 0x20, 0x6E, 0x61, 0xEF, 0x66, 0x20, 0x6F, 0x75, 0x20, 0x72, 0xE2, 0x6C, 0x65, 0x75, 0x72, 0x2E, 0x20, 0xBB, 0x0A, 0x49, 0x6E, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65 ''' common.validate(input, output) def test_2(): # Block of lines from Quoted Printable and back. common.request('qp..x1') common.validate_back(input) recode-3.7.15/tests/t21_names.py0000644000175000017500000001641514173607740012056 # -*- coding: utf-8 -*- import common from common import setup_module, teardown_module # Checking list of charsets and surfaces. expected = '''\ /21-Permutation swabytes /4321-Permutation /Base64 64 b64 /CR /CR-LF cl /Decimal-1 d d1 /Decimal-2 d2 /Decimal-4 d4 /Hexadecimal-1 x x1 /Hexadecimal-2 x2 /Hexadecimal-4 x4 /Octal-1 o o1 /Octal-2 o2 /Octal-4 o4 /Quoted-Printable QP quote-printable /test7 /test8 /test15 /test16 AFRFUL-102-BPI_OCIL bambara bra ewondo fulfulde AFRFUL-103-BPI_OCIL t-bambara t-bra t-ewondo t-fulfulde AFRL1-101-BPI_OCIL t-fra t-francais AFRLIN-104-BPI_OCIL lin lingala sango wolof AFRLIN-105-BPI_OCIL t-lin t-lingala t-sango t-wolof ANSI_X3.4-1968 367/CR-LF ANSI_X3.4-1986 ASCII CP367/CR-LF IBM367/CR-LF ISO646-US iso-ir-6 ISO_646.irv:1991 us US-ASCII ASCII-BS BS ASMO_449 arabic7 iso-ir-89 ISO_9036 AtariST baltic iso-ir-179 Bang-Bang BibTeX bibtex btex BS_4730 gb ISO646-GB iso-ir-4 uk BS_viewdata iso-ir-47 CDC-NOS NOS combined-UCS-2 co CORK T1 count-characters CP1250/CR-LF 1250/CR-LF ms-ee windows-1250 CP1251/CR-LF 1251/CR-LF ms-cyrl windows-1251 CP1252/CR-LF 1252/CR-LF ms-ansi windows-1252 CP1253/CR-LF 1253/CR-LF ms-greek windows-1253 CP1254/CR-LF 1254/CR-LF ms-turk windows-1254 CP1255/CR-LF 1255/CR-LF ms-hebr windows-1255 CP1256/CR-LF 1256/CR-LF ms-arab windows-1256 CP1257/CR-LF 1257/CR-LF WinBaltRim windows-1257 CSA_Z243.4-1985-1 ca csa7-1 ISO646-CA iso-ir-121 CSA_Z243.4-1985-2 csa7-2 ISO646-CA2 iso-ir-122 CSA_Z243.4-1985-gr iso-ir-123 CSN_369103 iso-ir-139 koi8l2 KOI-8_L2 CWI cp-hu CWI-2 data DEC-MCS dec DIN_66003 de ISO646-DE iso-ir-21 DS_2089 dk DS2089 ISO646-DK dump-with-names EBCDIC EBCDIC-AT-DE EBCDIC-AT-DE-A EBCDIC-CA-FR EBCDIC-CCC EBCDIC-DK-NO EBCDIC-DK-NO-A EBCDIC-ES EBCDIC-ES-A EBCDIC-ES-S EBCDIC-FI-SE EBCDIC-FI-SE-A EBCDIC-FR EBCDIC-IBM EBCDIC-IS-FRISS friss EBCDIC-IT EBCDIC-PT EBCDIC-UK EBCDIC-US ECMA-cyrillic ECMA-113 ECMA-113:1986 iso-ir-111 ES ISO646-ES iso-ir-17 ES2 ISO646-ES2 iso-ir-85 flat GB_1988-80 cn ISO646-CN iso-ir-57 GOST_19768-87 iso-ir-153 ST_SEV_358-88 greek7 iso-ir-88 greek7-old iso-ir-18 greek-ccitt iso-ir-150 hp-roman8 r8 roman8 HTML-i18n 2070 RFC2070 HTML_1.1 h1 HTML_2.0 1866 h2 RFC1866 HTML_3.2 h3 HTML_4.0 h h4 HTML IBM037/CR-LF 037/CR-LF CP037/CR-LF ebcdic-cp-ca ebcdic-cp-nl ebcdic-cp-us ebcdic-cp-wt IBM038/CR-LF 038/CR-LF CP038/CR-LF EBCDIC-INT IBM256/CR-LF 256/CR-LF CP256/CR-LF EBCDIC-INT1 IBM273/CR-LF 273/CR-LF CP273/CR-LF IBM274/CR-LF 274/CR-LF CP274/CR-LF EBCDIC-BE IBM275/CR-LF 275/CR-LF CP275/CR-LF EBCDIC-BR IBM277/CR-LF EBCDIC-CP-DK EBCDIC-CP-NO IBM278/CR-LF 278/CR-LF CP278/CR-LF ebcdic-cp-fi ebcdic-cp-se IBM280/CR-LF 280/CR-LF CP280/CR-LF ebcdic-cp-it IBM281/CR-LF 281/CR-LF CP281/CR-LF EBCDIC-JP-E IBM284/CR-LF 284/CR-LF CP284/CR-LF ebcdic-cp-es IBM285/CR-LF 285/CR-LF CP285/CR-LF ebcdic-cp-gb IBM290/CR-LF 290/CR-LF CP290/CR-LF EBCDIC-JP-kana IBM297/CR-LF 297/CR-LF CP297/CR-LF ebcdic-cp-fr IBM420/CR-LF 420/CR-LF CP420/CR-LF ebcdic-cp-ar1 IBM423/CR-LF 423/CR-LF CP423/CR-LF ebcdic-cp-gr IBM424/CR-LF 424/CR-LF CP424/CR-LF ebcdic-cp-he IBM437/CR-LF 437/CR-LF CP437/CR-LF IBM500/CR-LF 500/CR-LF 500V1 CP500/CR-LF ebcdic-cp-be ebcdic-cp-ch IBM850/CR-LF 850/CR-LF CP850/CR-LF IBM851/CR-LF 851/CR-LF CP851/CR-LF IBM852/CR-LF 852/CR-LF CP852/CR-LF pcl2 pclatin2 IBM855/CR-LF 855/CR-LF CP855/CR-LF IBM857/CR-LF 857/CR-LF CP857/CR-LF IBM860/CR-LF 860/CR-LF CP860/CR-LF IBM861/CR-LF 861/CR-LF CP861/CR-LF cp-is IBM862/CR-LF 862/CR-LF CP862/CR-LF IBM863/CR-LF 863/CR-LF CP863/CR-LF IBM864/CR-LF 864/CR-LF CP864/CR-LF IBM865/CR-LF 865/CR-LF CP865/CR-LF IBM868/CR-LF 868/CR-LF CP868/CR-LF cp-ar IBM869/CR-LF 869/CR-LF CP869/CR-LF cp-gr IBM870/CR-LF 870/CR-LF CP870/CR-LF ebcdic-cp-roece ebcdic-cp-yu IBM871/CR-LF 871/CR-LF CP871/CR-LF ebcdic-cp-is IBM875/CR-LF 875/CR-LF CP875/CR-LF EBCDIC-Greek IBM880/CR-LF 880/CR-LF CP880/CR-LF EBCDIC-Cyrillic IBM891/CR-LF 891/CR-LF CP891/CR-LF IBM903/CR-LF 903/CR-LF CP903/CR-LF IBM904/CR-LF 904/CR-LF CP904/CR-LF IBM905/CR-LF 905/CR-LF CP905/CR-LF ebcdic-cp-tr IBM918/CR-LF 918/CR-LF CP918/CR-LF ebcdic-cp-ar2 IBM1004/CR-LF 1004/CR-LF CP1004/CR-LF os2latin1 IBM1026/CR-LF 1026/CR-LF CP1026/CR-LF IBM1047/CR-LF 1047/CR-LF CP1047/CR-LF IBM-PC/CR-LF dos/CR-LF MSDOS/CR-LF pc/CR-LF Icon-QNX QNX IEC_P27-1 iso-ir-143 INIS iso-ir-49 INIS-8 iso-ir-50 INIS-cyrillic iso-ir-51 INVARIANT iso-ir-170 ISO-8859-1 819/CR-LF CP819/CR-LF IBM819/CR-LF ISO8859-1 iso-ir-100 ISO_8859-1 ISO_8859-1:1987 l1 latin1 Latin-1 ISO-8859-2 912/CR-LF CP912/CR-LF IBM912/CR-LF ISO8859-2 iso-ir-101 ISO_8859-2 ISO_8859-2:1987 l2 latin2 ISO-8859-3 ISO8859-3 iso-ir-109 ISO_8859-3 ISO_8859-3:1988 l3 latin3 ISO-8859-4 ISO8859-4 iso-ir-110 ISO_8859-4 ISO_8859-4:1988 l4 latin4 ISO-8859-5 cyrillic ISO8859-5 iso-ir-144 ISO_8859-5 ISO_8859-5:1988 ISO-8859-6 arabic ASMO-708 ECMA-114 ISO8859-6 iso-ir-127 ISO_8859-6 ISO_8859-6:1987 ISO-8859-7 ECMA-118 ELOT_928 greek greek8 ISO8859-7 iso-ir-126 ISO_8859-7 ISO_8859-7:1987 ISO-8859-8 hebrew ISO8859-8 iso-ir-138 ISO_8859-8 ISO_8859-8:1988 ISO-8859-9 ISO8859-9 iso-ir-148 ISO_8859-9 ISO_8859-9:1989 l5 latin5 ISO-8859-10 ISO8859-10 iso-ir-157 ISO_8859-10 ISO_8859-10:1993 L6 latin6 ISO-8859-13 ISO8859-13 iso-baltic iso-ir-179a ISO_8859-13 ISO_8859-13:1998 l7 latin7 ISO-8859-14 ISO8859-14 iso-celtic iso-ir-199 ISO_8859-14 ISO_8859-14:1998 l8 latin8 ISO-8859-15 ISO8859-15 iso-ir-203 ISO_8859-15 ISO_8859-15:1998 l9 latin9 ISO-10646-UCS-2 BMP rune u2 UCS-2 UNICODE-1-1 ISO-10646-UCS-4 10646 ISO_10646 u4 UCS UCS-4 ISO_646.basic ISO_646.basic:1983 ref ISO_646.irv irv iso-ir-2 ISO_646.irv:1983 ISO_2033-1983 e13b iso-ir-98 ISO_5426:1983-DB-MAB2 DB-MAB2 DDB ISO_5426 MAB MAB2 ISO_5427 iso-ir-37 ISO_5427-ext iso-ir-54 ISO_5427:1981 ISO_5428 iso-ir-55 ISO_5428:1980 ISO_6937-2-25 iso-ir-152 ISO_8859-supp iso-ir-154 latin1-2-5 ISO_10367-box iso-ir-155 IT ISO646-IT iso-ir-15 Java JIS_C6220-1969-jp iso-ir-13 JIS_C6220-1969 katakana x0201-7 JIS_C6220-1969-ro ISO646-JP iso-ir-14 jp JIS_C6229-1984-a jp-ocr-a JIS_C6229-1984-b ISO646-JP-OCR-B jp-ocr-b JIS_C6229-1984-b-add iso-ir-93 jp-ocr-b-add JIS_C6229-1984-hand iso-ir-94 jp-ocr-hand JIS_C6229-1984-hand-add iso-ir-95 jp-ocr-hand-add JIS_C6229-1984-kana iso-ir-96 JIS_X0201 X0201 JUS_I.B1.002 ISO646-YU iso-ir-141 js yu JUS_I.B1.003-mac iso-ir-147 macedonian JUS_I.B1.003-serb iso-ir-146 serbian KEYBCS2 Kamenicky KOI8-R 878 1489 CP878 IBM878 RFC1489 KOI8-RU KOI8-U KOI-7 KOI-8 GOST_19768-74 KOI-8_CS2 KSC5636 ISO646-KR LaTeX ltex TeX latin-greek iso-ir-19 Latin-greek-1 iso-ir-27 mac-is macintosh/CR Apple-Mac/CR mac/CR macintosh_ce/CR macce/CR MSZ_7795.3 hu ISO646-HU iso-ir-86 Mule NATS-DANO iso-ir-9-1 NATS-DANO-ADD iso-ir-9-2 NATS-SEFI iso-ir-8-1 NATS-SEFI-ADD iso-ir-8-2 NC_NC00-10 cuba ISO646-CU iso-ir-151 NC_NC00-10:81 NeXTSTEP next NF_Z_62-010 fr ISO646-FR iso-ir-69 NF_Z_62-010_(1973) ISO646-FR1 iso-ir-25 NS_4551-1 ISO646-NO iso-ir-60 no NS_4551-2 ISO646-NO2 iso-ir-61 no2 PT ISO646-PT iso-ir-16 PT2 ISO646-PT2 iso-ir-84 RFC1345 1345 mnemonic sami iso-ir-158 lap latin-lap SEN_850200_B FI ISO646-FI ISO646-SE iso-ir-10 se SS636127 SEN_850200_C ISO646-SE2 iso-ir-11 se2 T.61-7bit iso-ir-102 TCVN Texinfo texi ti Texte txte UNICODE-1-1-UTF-7 TF-7 u7 UTF-7 UTF-8 FSS_UTF TF-8 u8 UTF-2 UTF-FSS UTF-16 TF-16 u6 Unicode VIQR VISCII VNI VPS XML-standalone h0 Z39.47:1993 8bitANSEL ANSEL LOC MARC USMARC Z39.47 ''' def test_1(): output = common.external_output('$R --ignore=:iconv: -l') common.assert_or_diff(output, expected) recode-3.7.15/tests/setup.py.in0000644000175000017500000000263514765654444012043 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import os from setuptools import setup, Extension build = 'build' srcdir = '@srcdir@' top_builddir = '@top_builddir@' top_srcdir = '@top_srcdir@' libintl = '@LIBINTL@' libiconv = '@LIBICONV@' extra_libs = [] extra_libs.extend(libintl.split()) extra_libs.extend(libiconv.split()) # FIXME: On Mingw, Cython seems to call gcc in such a way that it doesn't understand UNIX paths if os.name == 'nt': for i in range(len(extra_libs)): if extra_libs[i][0] == '/': extra_libs[i] = os.popen('cygpath --windows ' + extra_libs[i]).read().rstrip() try: if srcdir != '.': with open(os.path.join(srcdir, 'Recode.c')) as f: buffer = f.read() with open('Recode.c', 'w') as f: f.write(buffer) setup(ext_modules=[ Extension('Recode', ['Recode.c'], include_dirs=[top_builddir, os.path.join(top_srcdir, 'src'), os.path.join(top_srcdir, 'lib'), os.path.join(top_builddir, 'lib')], library_dirs=[os.path.join(top_builddir, 'src', '.libs'), os.path.join(top_builddir, 'lib', '.libs')], libraries=['recode', 'gnu'], extra_link_args=extra_libs) ]) finally: if srcdir != '.': if os.path.exists('Recode.c'): os.remove('Recode.c') recode-3.7.15/tests/pytest0000754000175000017500000004532514671121616011166 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright © 2005 Progiciels Bourbeau-Pinard, Inc. # François Pinard , 2005. u"""\ Execute a validation suite built in pylib's py.test style. Usage: pytest [OPTION]... [PATH]... Options: -h Print this help and exit right away. -v Produce one line per test, instead of a dot per test. -n Do not capture stdout nor stderr. -p Profile validation suite (through "lsprof"). -f PREFIX Use PREFIX instead of "test_" for file names. -s FILE Save ordinals of failed tests, one per line. -o ORDINALS Only consider tests having these execution ordinals. -k PATTERN Only retain tests which names match PATTERN. -x PATTERN Exclude tests which names match PATTERN. -l LIMIT Stop the validation suite after LIMIT errors. If -l is not used, the validation will stop after 10 errors. ORDINALS is a sequence of comma-separated integers. Options -k, -o and -x may be repeated; then a test should match at least one of -k options if any, one of -o options is any, and none of -x options. When PATH names a directory, it is recursively searched to find files matching "test_.*\\.py". Otherwise, it should give a ".py" ended file name containing tests. If no PATH are given, the current directory is implied. Test progression is first displayed on standard error. Then, unless -s is selected, failed tests are detailed on stdout and, if there is at least one such failed test, the return status of this program is non-zero. """ # This tool implements a minimal set of specifications stolen from the # excellent Codespeak's py.test, at a time I really needed py.test to be # more Unicode-aware. __metaclass__ = type import inspect, os, sys, time, traceback from io import StringIO if os.name == 'nt': os.add_dll_directory(os.environ['SHARED_LIB_DIR']) # How many displayable characters in an output line. WIDTH = 79 class Limit_Reached(Exception): pass class Main: prefix = 'test_' pattern = [] exclusion = [] ordinals = [] verbose = False profile = False limit = 10 capture = True save = None # For handling setup/teardown laziness. delayed_setup_module = None delayed_setup_class = None did_tests_in_module = False did_tests_in_class = False def main(self, *arguments): if sys.getdefaultencoding() == 'ascii': sys.stdout = Friendly_StreamWriter(sys.stdout) sys.stderr = Friendly_StreamWriter(sys.stderr) import getopt options, arguments = getopt.getopt(arguments, u'f:hk:l:no:ps:vx:') for option, value in options: if option == u'-f': self.prefix = value elif option == u'-h': sys.stdout.write(__doc__) return elif option == u'-k': self.pattern.append(value) elif option == u'-l': self.limit = int(value) elif option == u'-n': self.capture = False elif option == u'-o': self.ordinals += [ int(text) for text in value.replace(u',', u' ').split()] elif option == u'-p': self.profile = True elif option == u'-s': self.save = value elif option == u'-v': self.verbose = True elif option == u'-x': self.exclusion.append(value) if not arguments: arguments = u'.', if self.pattern: import re self.pattern = re.compile(u'|'.join(self.pattern)) else: self.pattern = None if self.exclusion: import re self.exclusion = re.compile(u'|'.join(self.exclusion)) else: self.exclusion = None write = sys.stderr.write self.failures = [] self.total_count = 0 self.skip_count = 0 start_time = time.time() if self.profile: try: import lsprof except ImportError: write(u"WARNING: profiler unavailable.\n") self.profiler = None else: self.profiler = lsprof.Profiler() else: self.profiler = None try: try: for argument in arguments: for file_name in self.each_file(argument): self.identifier = file_name self.column = 0 self.counter = 0 directory, base = os.path.split(file_name) sys.path.insert(0, directory) try: try: module = __import__(base[:-3]) except ImportError: if self.save: self.failures.append(self.total_count + 1) else: tracing = StringIO() traceback.print_exc(file=tracing) self.failures.append( (self.total_count + 1, file_name, None, None, None, None, tracing.getvalue())) else: self.handle_module(file_name, module) finally: del sys.path[0] if self.counter and not self.verbose: text = u'(%d)' % self.counter if self.column + 1 + len(text) >= WIDTH: write(u'\n%5d ' % self.counter) else: text = u' ' + text write(text + u'\n') except Exit as exception: if not self.verbose: write(u'\n') write(u'\n* %s *\n' % str(exception)) except Limit_Reached: if not self.verbose: write(u'\n') if not self.save: if len(self.failures) == 1: write(u'\n* One error already! *\n') else: write(u'\n* %d errors already! *\n' % self.limit) finally: if self.profiler is not None: stats = lsprof.Stats(self.profiler.getstats()) stats.sort(u'inlinetime') write(u'\n') stats.pprint(15) if self.failures: if len(self.failures) == 1: text = u"one FAILED test" else: text = u"%d FAILED tests" % len(self.failures) first = False else: text = u'' first = True good_count = (self.total_count - self.skip_count - len(self.failures)) if good_count: if first: if good_count == 1: text += u"one good test" else: text += u"%d good tests" % good_count first = False else: if good_count == 1: text += u", one good" else: text += u", %d good" % good_count if self.skip_count: if first: if self.skip_count == 1: text += u"one skipped test" else: text += u"%d skipped tests" % self.skip_count first = False else: if self.skip_count == 1: text += u", one skipped" else: text += u", %d skipped" % self.skip_count if first: text = u"No test" summary = (u"\nSummary: %s in %.2f seconds.\n" % (text, time.time() - start_time)) write(summary) if self.save: write = open(self.save, u'w').write for ordinal in self.failures: write(u'%d\n' % ordinal) else: write = sys.stdout.write for (ordinal, prefix, function, arguments, stdout, stderr, tracing) in self.failures: write(u'\n' + u'=' * WIDTH + u'\n') write(u'%d. %s\n' % (ordinal, prefix)) if function and function.__name__ != os.path.basename(prefix): write(u" Function %s\n" % function.__name__) if arguments: for counter, argument in enumerate(arguments): write(u" Arg %d = %r\n" % (counter + 1, argument)) for buffer, titre in ((stdout, u'STDOUT'), (stderr, u'STDERR')): if buffer: write(u'\n' + titre + u' >>>\n') write(buffer) if not buffer.endswith(u'\n'): write(u'\n') write(u'-' * WIDTH + u'\n') write(tracing) if self.failures: write(summary) sys.exit(1) def each_file(self, path): if os.path.isdir(path): stack = [path] while stack: directory = stack.pop(0) for base in sorted(os.listdir(directory)): file_name = os.path.join(directory, base) if base.startswith(self.prefix) and base.endswith(u'.py'): yield file_name elif os.path.isdir(file_name): stack.append(file_name) else: if not path.endswith(u'.py'): sys.exit("%s: Should have a `.py' suffix." % path) yield path def handle_module(self, prefix, module): collection = [] for name, objet in inspect.getmembers(module): if name.startswith(u'Test') and inspect.isclass(objet): if getattr(object, u'disabled', False): continue minimum = None for _, func in inspect.getmembers(objet, inspect.isfunction): number = func.__code__.co_firstlineno if minimum is None or number < minimum: minimum = number if minimum is not None: collection.append((minimum, name, objet, False)) elif name.startswith(u'test_') and inspect.isfunction(objet): code = objet.__code__ collection.append((code.co_firstlineno, name, objet, bool(code.co_flags & 32))) if not collection: return self.delayed_setup_module = None self.did_tests_in_module = False if hasattr(module, u'setup_module'): self.delayed_setup_module = module.setup_module, module for _, name, objet, generator in sorted(collection): self.delayed_setup_class = None self.did_tests_in_class = False if inspect.isclass(objet): if not getattr(object, u'disabled', False): self.handle_class(prefix + u'/' + name, objet) else: self.handle_function(prefix + u'/' + name, objet, generator, None) if self.did_tests_in_module and hasattr(module, u'teardown_module'): module.teardown_module(module) def handle_class(self, prefix, classe): collection = [] for name, func in inspect.getmembers(classe, inspect.isfunction): if name.startswith(u'test_'): code = func.__code__ collection.append((code.co_firstlineno, name, func, bool(code.co_flags & inspect.CO_GENERATOR))) if not collection: return # FIXME: Should likely do module setup here! instance = classe() if hasattr(instance, u'setup_class'): self.delayed_setup_module = instance.setup_class, classe for _, name, method, generator in sorted(collection): self.handle_function(prefix + u'/' + name, getattr(instance, name), generator, instance) if self.did_tests_in_class and hasattr(instance, u'teardown_class'): instance.teardown_class(classe) def handle_function(self, prefix, function, generator, instance): collection = [] if generator: # FIXME: Should likely do class setup here. try: for counter, arguments in enumerate(function()): collection.append((prefix + u'/' + str(counter + 1), arguments[0], arguments[1:])) except Skipped: return else: collection.append((prefix, function, ())) for prefix, function, arguments in collection: self.launch_test(prefix, function, arguments, instance) def launch_test(self, prefix, function, arguments, instance): # Check if this test should be retained. if (self.exclusion is not None and self.exclusion.search(prefix) or self.pattern is not None and not self.pattern.search(prefix) or self.ordinals and self.total_count + 1 not in self.ordinals): self.mark_progression(prefix, None) return # This test should definitely be executed. if self.delayed_setup_module is not None: self.delayed_setup_module[0](self.delayed_setup_module[1]) self.delayed_setup_module = None if self.delayed_setup_class is not None: self.delayed_setup_class[0](self.delayed_setup_class[1]) self.delayed_setup_class = None if instance is not None and hasattr(instance, u'setup_method'): instance.setup_method(function) if self.capture: saved_stdout = sys.stdout saved_stderr = sys.stderr stdout = sys.stdout = StringIO() stderr = sys.stderr = StringIO() self.activate_profiling() try: try: function(*arguments) except Exit: success = False raise except Failed: success = False except Skipped: success = None except KeyboardInterrupt: success = None raise Exit("Interruption!") except: success = False else: success = True finally: self.deactivate_profiling() if self.capture: sys.stdout = saved_stdout sys.stderr = saved_stderr stdout = stdout.getvalue() stderr = stderr.getvalue() else: stdout = None stderr = None self.mark_progression(prefix, success) if success is False: if self.save: self.failures.append(self.total_count) else: tracing = StringIO() traceback.print_exc(file=tracing) self.failures.append( (self.total_count, prefix, function, arguments, stdout, stderr, tracing.getvalue())) if instance is not None and hasattr(instance, u'teardown_method'): instance.teardown_method(function) self.did_tests_in_class = True self.did_tests_in_module = True if success is not None and len(self.failures) == self.limit: raise Limit_Reached def mark_progression(self, prefix, success): self.total_count += 1 if self.verbose: if success is None: self.skip_count += 1 mark = u"skipped" elif success: mark = u"ok" else: mark = u"FAILED" sys.stderr.write(u'%5d. [%s] %s\n' % (self.total_count, prefix, mark)) else: if success is None: self.skip_count += 1 mark = u's' elif success: mark = u'.' else: mark = 'E' if self.column == WIDTH: sys.stderr.write(u'\n') self.column = 0 if not self.column: if self.counter: text = u'%5d ' % (self.counter + 1) else: text = self.identifier + u' ' sys.stderr.write(text) self.column = len(text) sys.stderr.write(mark) sys.stderr.flush() self.column += 1 self.counter += 1 sys.stderr.flush() def activate_profiling(self): if self.profiler is not None: self.profiler.enable(subcalls=True, builtins=True) def deactivate_profiling(self): if self.profiler is not None: self.profiler.disable() class Friendly_StreamWriter: # Avoid some Unicode nightmares, by allowing both unicode and # UTF-8 str strings to be written (given our sources are all UTF-8). def __init__(self, stream): import codecs, locale writer = codecs.getwriter(locale.getpreferredencoding()) self.stream = writer(stream, 'backslashreplace') def flush(self): self.stream.flush() def write(self, text): if not isinstance(text, unicode): text = text.encode('UTF-8') self.stream.write(text) def writelines(self, lines): for line in lines: self.write(line) run = Main() main = run.main class Exit(Exception): pass class Failed(Exception): pass class NotRaised(Exception): pass class Skipped(Exception): pass class py: class test: @staticmethod def exit(message="Unknown reason"): raise Exit(message) @staticmethod def fail(message="Unknown reason"): raise Failed(message) @staticmethod def skip(message="Unknown reason"): raise Skipped(message) @staticmethod def raises(expected, *args, **kws): try: if isinstance(args[0], unicode) and not kws: eval(args[0]) else: args[0](*args[1:], **kws) except expected: return else: raise NotRaised(u"Exception did not happen.") if __name__ == u'__main__': main(*sys.argv[1:]) recode-3.7.15/tests/t25_subsets.py0000644000175000017500000003037614172742375012454 # -*- coding: utf-8 -*- import common from common import setup_module, teardown_module # Checking the --find-subsets option. expected = '''\ [ 0] ANSI_X3.4-1968 == IBM891 [ 0] ANSI_X3.4-1968 == IBM903 [ 0] IBM891 == ANSI_X3.4-1968 [ 0] IBM891 == IBM903 [ 0] IBM903 == ANSI_X3.4-1968 [ 0] IBM903 == IBM891 [ 3] ANSI_X3.4-1968 < IBM904 [ 3] IBM891 < IBM904 [ 3] IBM903 < IBM904 [ 3] JIS_C6229-1984-hand-add < JIS_C6229-1984-b-add [ 4] IBM1004 < CP1252 [ 6] INVARIANT < T.61-7bit [ 6] T.61-7bit < ISO_646.irv [ 10] INVARIANT < JIS_C6229-1984-b [ 12] INVARIANT < ANSI_X3.4-1968 [ 12] INVARIANT < BS_4730 [ 12] INVARIANT < CSA_Z243.4-1985-1 [ 12] INVARIANT < CSA_Z243.4-1985-2 [ 12] INVARIANT < DIN_66003 [ 12] INVARIANT < DS_2089 [ 12] INVARIANT < ES [ 12] INVARIANT < ES2 [ 12] INVARIANT < GB_1988-80 [ 12] INVARIANT < IBM891 [ 12] INVARIANT < IBM903 [ 12] INVARIANT < ISO_646.irv [ 12] INVARIANT < IT [ 12] INVARIANT < JIS_C6220-1969-ro [ 12] INVARIANT < JUS_I.B1.002 [ 12] INVARIANT < KSC5636 [ 12] INVARIANT < MSZ_7795.3 [ 12] INVARIANT < NATS-SEFI [ 12] INVARIANT < NC_NC00-10 [ 12] INVARIANT < NF_Z_62-010 [ 12] INVARIANT < NF_Z_62-010_(1973) [ 12] INVARIANT < NS_4551-1 [ 12] INVARIANT < NS_4551-2 [ 12] INVARIANT < PT [ 12] INVARIANT < PT2 [ 12] INVARIANT < SEN_850200_B [ 12] INVARIANT < SEN_850200_C [ 12] JIS_C6229-1984-kana < JIS_C6220-1969-jp [ 13] INIS < ANSI_X3.4-1968 [ 13] INIS < BS_4730 [ 13] INIS < IBM891 [ 13] INIS < IBM903 [ 13] INIS < JIS_C6220-1969-ro [ 13] INIS < KSC5636 [ 15] INVARIANT < IBM904 [ 16] INIS < IBM904 [ 28] GOST_19768-87 < ISO-8859-5 [ 28] JIS_C6229-1984-hand < JIS_C6229-1984-b [ 33] ISO_646.basic < INVARIANT [ 39] ISO_646.basic < T.61-7bit [ 43] ISO_646.basic < JIS_C6229-1984-b [ 45] ISO_646.basic < ANSI_X3.4-1968 [ 45] ISO_646.basic < BS_4730 [ 45] ISO_646.basic < CSA_Z243.4-1985-1 [ 45] ISO_646.basic < CSA_Z243.4-1985-2 [ 45] ISO_646.basic < DIN_66003 [ 45] ISO_646.basic < DS_2089 [ 45] ISO_646.basic < ES [ 45] ISO_646.basic < ES2 [ 45] ISO_646.basic < GB_1988-80 [ 45] ISO_646.basic < IBM891 [ 45] ISO_646.basic < IBM903 [ 45] ISO_646.basic < ISO_646.irv [ 45] ISO_646.basic < IT [ 45] ISO_646.basic < JIS_C6220-1969-ro [ 45] ISO_646.basic < JUS_I.B1.002 [ 45] ISO_646.basic < KSC5636 [ 45] ISO_646.basic < MSZ_7795.3 [ 45] ISO_646.basic < NATS-SEFI [ 45] ISO_646.basic < NC_NC00-10 [ 45] ISO_646.basic < NF_Z_62-010 [ 45] ISO_646.basic < NF_Z_62-010_(1973) [ 45] ISO_646.basic < NS_4551-1 [ 45] ISO_646.basic < NS_4551-2 [ 45] ISO_646.basic < PT [ 45] ISO_646.basic < PT2 [ 45] ISO_646.basic < SEN_850200_B [ 45] ISO_646.basic < SEN_850200_C [ 48] ISO_646.basic < IBM904 [ 57] EBCDIC-US < IBM424 [ 61] ANSI_X3.4-1968 < ISO_10367-box [ 61] IBM891 < ISO_10367-box [ 61] IBM903 < ISO_10367-box [ 63] ANSI_X3.4-1968 < KOI-8 [ 63] IBM891 < KOI-8 [ 63] IBM903 < KOI-8 [ 64] T.61-7bit < ISO_6937-2-25 [ 65] KOI-8 < ECMA-cyrillic [ 65] KOI-8 < KOI8-R [ 65] KOI-8 < KOI8-RU [ 66] ANSI_X3.4-1968 < sami [ 66] IBM891 < sami [ 66] IBM903 < sami [ 70] INVARIANT < ISO_6937-2-25 [ 73] INVARIANT < ISO_10367-box [ 74] INIS < ISO_10367-box [ 75] INVARIANT < KOI-8 [ 76] INIS < KOI-8 [ 78] ANSI_X3.4-1968 < CP1255 [ 78] IBM891 < CP1255 [ 78] IBM903 < CP1255 [ 78] INVARIANT < sami [ 79] INIS < sami [ 83] ANSI_X3.4-1968 < ISO-8859-6 [ 83] IBM891 < ISO-8859-6 [ 83] IBM903 < ISO-8859-6 [ 90] ANSI_X3.4-1968 < ISO-8859-8 [ 90] IBM891 < ISO-8859-8 [ 90] IBM903 < ISO-8859-8 [ 90] INVARIANT < CP1255 [ 91] INIS < CP1255 [ 95] INVARIANT < ISO-8859-6 [ 95] JIS_C6220-1969-ro < JIS_X0201 [ 96] EBCDIC-AT-DE < IBM273 [ 96] EBCDIC-DK-NO < IBM277 [ 96] EBCDIC-IT < IBM280 [ 96] EBCDIC-UK < IBM285 [ 96] EBCDIC-US < IBM037 [ 96] IBM038 < IBM256 [ 96] IBM038 < IBM500 [ 96] INIS < ISO-8859-6 [100] ANSI_X3.4-1968 < GOST_19768-87 [100] IBM891 < GOST_19768-87 [100] IBM903 < GOST_19768-87 [102] INVARIANT < ISO-8859-8 [103] ANSI_X3.4-1968 < IBM868 [103] IBM891 < IBM868 [103] IBM903 < IBM868 [103] INIS < ISO-8859-8 [103] ISO_646.basic < ISO_6937-2-25 [106] ISO_646.basic < ISO_10367-box [107] INVARIANT < JIS_X0201 [108] INIS < JIS_X0201 [108] ISO_646.basic < KOI-8 [109] ANSI_X3.4-1968 < CP1257 [109] IBM891 < CP1257 [109] IBM903 < CP1257 [111] ANSI_X3.4-1968 < CP1253 [111] IBM891 < CP1253 [111] IBM903 < CP1253 [111] ISO_646.basic < sami [112] ANSI_X3.4-1968 < KOI8-U [112] IBM891 < KOI8-U [112] IBM903 < KOI8-U [112] INVARIANT < GOST_19768-87 [113] ANSI_X3.4-1968 < DEC-MCS [113] IBM891 < DEC-MCS [113] IBM903 < DEC-MCS [113] INIS < GOST_19768-87 [115] INVARIANT < IBM868 [116] INIS < IBM868 [119] ANSI_X3.4-1968 < IBM1004 [119] ANSI_X3.4-1968 < IBM869 [119] IBM891 < IBM1004 [119] IBM891 < IBM869 [119] IBM903 < IBM1004 [119] IBM903 < IBM869 [121] ANSI_X3.4-1968 < CP1254 [121] ANSI_X3.4-1968 < ISO-8859-3 [121] ANSI_X3.4-1968 < NeXTSTEP [121] IBM891 < CP1254 [121] IBM891 < ISO-8859-3 [121] IBM891 < NeXTSTEP [121] IBM903 < CP1254 [121] IBM903 < ISO-8859-3 [121] IBM903 < NeXTSTEP [121] INVARIANT < CP1257 [122] ANSI_X3.4-1968 < ISO-8859-7 [122] ANSI_X3.4-1968 < ISO_8859-supp [122] IBM891 < ISO-8859-7 [122] IBM891 < ISO_8859-supp [122] IBM903 < ISO-8859-7 [122] IBM903 < ISO_8859-supp [122] INIS < CP1257 [123] ANSI_X3.4-1968 < CP1250 [123] ANSI_X3.4-1968 < CP1252 [123] ANSI_X3.4-1968 < IBM864 [123] IBM891 < CP1250 [123] IBM891 < CP1252 [123] IBM891 < IBM864 [123] IBM903 < CP1250 [123] IBM903 < CP1252 [123] IBM903 < IBM864 [123] INVARIANT < CP1253 [123] ISO_646.basic < CP1255 [124] INIS < CP1253 [124] INVARIANT < KOI8-U [125] ANSI_X3.4-1968 < IBM857 [125] IBM891 < IBM857 [125] IBM903 < IBM857 [125] INIS < KOI8-U [125] INVARIANT < DEC-MCS [126] ANSI_X3.4-1968 < CP1256 [126] ANSI_X3.4-1968 < mac-is [126] ANSI_X3.4-1968 < macintosh [126] IBM891 < CP1256 [126] IBM891 < mac-is [126] IBM891 < macintosh [126] IBM903 < CP1256 [126] IBM903 < mac-is [126] IBM903 < macintosh [126] INIS < DEC-MCS [127] ANSI_X3.4-1968 < CP1251 [127] ANSI_X3.4-1968 < IBM851 [127] ANSI_X3.4-1968 < IBM855 [127] ANSI_X3.4-1968 < IBM861 [127] ANSI_X3.4-1968 < IBM862 [127] ANSI_X3.4-1968 < hp-roman8 [127] IBM891 < CP1251 [127] IBM891 < IBM851 [127] IBM891 < IBM855 [127] IBM891 < IBM861 [127] IBM891 < IBM862 [127] IBM891 < hp-roman8 [127] IBM903 < CP1251 [127] IBM903 < IBM851 [127] IBM903 < IBM855 [127] IBM903 < IBM861 [127] IBM903 < IBM862 [127] IBM903 < hp-roman8 [128] ANSI_X3.4-1968 < AtariST [128] ANSI_X3.4-1968 < CSA_Z243.4-1985-gr [128] ANSI_X3.4-1968 < CWI [128] ANSI_X3.4-1968 < ECMA-cyrillic [128] ANSI_X3.4-1968 < IBM437 [128] ANSI_X3.4-1968 < IBM850 [128] ANSI_X3.4-1968 < IBM852 [128] ANSI_X3.4-1968 < IBM860 [128] ANSI_X3.4-1968 < IBM863 [128] ANSI_X3.4-1968 < IBM865 [128] ANSI_X3.4-1968 < IEC_P27-1 [128] ANSI_X3.4-1968 < ISO-8859-1 [128] ANSI_X3.4-1968 < ISO-8859-10 [128] ANSI_X3.4-1968 < ISO-8859-13 [128] ANSI_X3.4-1968 < ISO-8859-14 [128] ANSI_X3.4-1968 < ISO-8859-15 [128] ANSI_X3.4-1968 < ISO-8859-2 [128] ANSI_X3.4-1968 < ISO-8859-4 [128] ANSI_X3.4-1968 < ISO-8859-5 [128] ANSI_X3.4-1968 < ISO-8859-9 [128] ANSI_X3.4-1968 < KOI8-R [128] ANSI_X3.4-1968 < KOI8-RU [128] ANSI_X3.4-1968 < baltic [128] ANSI_X3.4-1968 < macintosh_ce [128] IBM891 < AtariST [128] IBM891 < CSA_Z243.4-1985-gr [128] IBM891 < CWI [128] IBM891 < ECMA-cyrillic [128] IBM891 < IBM437 [128] IBM891 < IBM850 [128] IBM891 < IBM852 [128] IBM891 < IBM860 [128] IBM891 < IBM863 [128] IBM891 < IBM865 [128] IBM891 < IEC_P27-1 [128] IBM891 < ISO-8859-1 [128] IBM891 < ISO-8859-10 [128] IBM891 < ISO-8859-13 [128] IBM891 < ISO-8859-14 [128] IBM891 < ISO-8859-15 [128] IBM891 < ISO-8859-2 [128] IBM891 < ISO-8859-4 [128] IBM891 < ISO-8859-5 [128] IBM891 < ISO-8859-9 [128] IBM891 < KOI8-R [128] IBM891 < KOI8-RU [128] IBM891 < baltic [128] IBM891 < macintosh_ce [128] IBM903 < AtariST [128] IBM903 < CSA_Z243.4-1985-gr [128] IBM903 < CWI [128] IBM903 < ECMA-cyrillic [128] IBM903 < IBM437 [128] IBM903 < IBM850 [128] IBM903 < IBM852 [128] IBM903 < IBM860 [128] IBM903 < IBM863 [128] IBM903 < IBM865 [128] IBM903 < IEC_P27-1 [128] IBM903 < ISO-8859-1 [128] IBM903 < ISO-8859-10 [128] IBM903 < ISO-8859-13 [128] IBM903 < ISO-8859-14 [128] IBM903 < ISO-8859-15 [128] IBM903 < ISO-8859-2 [128] IBM903 < ISO-8859-4 [128] IBM903 < ISO-8859-5 [128] IBM903 < ISO-8859-9 [128] IBM903 < KOI8-R [128] IBM903 < KOI8-RU [128] IBM903 < baltic [128] IBM903 < macintosh_ce [128] ISO_646.basic < ISO-8859-6 [131] INVARIANT < IBM1004 [131] INVARIANT < IBM869 [132] INIS < IBM1004 [132] INIS < IBM869 [133] INVARIANT < CP1254 [133] INVARIANT < ISO-8859-3 [133] INVARIANT < NeXTSTEP [134] INIS < CP1254 [134] INIS < ISO-8859-3 [134] INIS < NeXTSTEP [134] INVARIANT < ISO-8859-7 [134] INVARIANT < ISO_8859-supp [134] T.61-7bit < CSN_369103 [135] INIS < ISO-8859-7 [135] INIS < ISO_8859-supp [135] INVARIANT < CP1250 [135] INVARIANT < CP1252 [135] INVARIANT < IBM864 [135] ISO_646.basic < ISO-8859-8 [136] INIS < CP1250 [136] INIS < CP1252 [136] INIS < IBM864 [137] INVARIANT < IBM857 [138] INIS < IBM857 [138] INVARIANT < CP1256 [138] INVARIANT < mac-is [138] INVARIANT < macintosh [139] INIS < CP1256 [139] INIS < mac-is [139] INIS < macintosh [139] INVARIANT < CP1251 [139] INVARIANT < IBM851 [139] INVARIANT < IBM855 [139] INVARIANT < IBM861 [139] INVARIANT < IBM862 [139] INVARIANT < hp-roman8 [140] INIS < CP1251 [140] INIS < IBM851 [140] INIS < IBM855 [140] INIS < IBM861 [140] INIS < IBM862 [140] INIS < hp-roman8 [140] INVARIANT < AtariST [140] INVARIANT < CSA_Z243.4-1985-gr [140] INVARIANT < CSN_369103 [140] INVARIANT < CWI [140] INVARIANT < ECMA-cyrillic [140] INVARIANT < IBM437 [140] INVARIANT < IBM850 [140] INVARIANT < IBM852 [140] INVARIANT < IBM860 [140] INVARIANT < IBM863 [140] INVARIANT < IBM865 [140] INVARIANT < IEC_P27-1 [140] INVARIANT < ISO-8859-1 [140] INVARIANT < ISO-8859-10 [140] INVARIANT < ISO-8859-13 [140] INVARIANT < ISO-8859-14 [140] INVARIANT < ISO-8859-15 [140] INVARIANT < ISO-8859-2 [140] INVARIANT < ISO-8859-4 [140] INVARIANT < ISO-8859-5 [140] INVARIANT < ISO-8859-9 [140] INVARIANT < KOI8-R [140] INVARIANT < KOI8-RU [140] INVARIANT < baltic [140] INVARIANT < macintosh_ce [140] ISO_646.basic < JIS_X0201 [141] INIS < AtariST [141] INIS < CSA_Z243.4-1985-gr [141] INIS < CWI [141] INIS < ECMA-cyrillic [141] INIS < IBM437 [141] INIS < IBM850 [141] INIS < IBM852 [141] INIS < IBM860 [141] INIS < IBM863 [141] INIS < IBM865 [141] INIS < IEC_P27-1 [141] INIS < ISO-8859-1 [141] INIS < ISO-8859-10 [141] INIS < ISO-8859-13 [141] INIS < ISO-8859-14 [141] INIS < ISO-8859-15 [141] INIS < ISO-8859-2 [141] INIS < ISO-8859-4 [141] INIS < ISO-8859-5 [141] INIS < ISO-8859-9 [141] INIS < KOI8-R [141] INIS < KOI8-RU [141] INIS < baltic [141] INIS < macintosh_ce [145] ISO_646.basic < GOST_19768-87 [148] ISO_646.basic < IBM868 [154] ISO_646.basic < CP1257 [156] ISO_646.basic < CP1253 [157] ISO_646.basic < KOI8-U [158] ISO_646.basic < DEC-MCS [164] ISO_646.basic < IBM1004 [164] ISO_646.basic < IBM869 [164] ISO_646.basic < VPS [166] ISO_646.basic < CP1254 [166] ISO_646.basic < ISO-8859-3 [166] ISO_646.basic < NeXTSTEP [167] ISO_646.basic < ISO-8859-7 [167] ISO_646.basic < ISO_8859-supp [167] ISO_646.basic < TCVN [168] ISO_646.basic < CP1250 [168] ISO_646.basic < CP1252 [168] ISO_646.basic < IBM864 [170] ISO_646.basic < IBM857 [171] ISO_646.basic < CP1256 [171] ISO_646.basic < mac-is [171] ISO_646.basic < macintosh [172] ISO_646.basic < CP1251 [172] ISO_646.basic < IBM851 [172] ISO_646.basic < IBM855 [172] ISO_646.basic < IBM861 [172] ISO_646.basic < IBM862 [172] ISO_646.basic < hp-roman8 [173] ISO_646.basic < AtariST [173] ISO_646.basic < CSA_Z243.4-1985-gr [173] ISO_646.basic < CSN_369103 [173] ISO_646.basic < CWI [173] ISO_646.basic < ECMA-cyrillic [173] ISO_646.basic < IBM437 [173] ISO_646.basic < IBM850 [173] ISO_646.basic < IBM852 [173] ISO_646.basic < IBM860 [173] ISO_646.basic < IBM863 [173] ISO_646.basic < IBM865 [173] ISO_646.basic < IEC_P27-1 [173] ISO_646.basic < ISO-8859-1 [173] ISO_646.basic < ISO-8859-10 [173] ISO_646.basic < ISO-8859-13 [173] ISO_646.basic < ISO-8859-14 [173] ISO_646.basic < ISO-8859-15 [173] ISO_646.basic < ISO-8859-2 [173] ISO_646.basic < ISO-8859-4 [173] ISO_646.basic < ISO-8859-5 [173] ISO_646.basic < ISO-8859-9 [173] ISO_646.basic < KOI8-R [173] ISO_646.basic < KOI8-RU [173] ISO_646.basic < VISCII [173] ISO_646.basic < baltic [173] ISO_646.basic < macintosh_ce ''' def test_1(): output = common.external_output('$R --find-subsets') # FIXME: The output is not sorted appropriately. output2 = ''.join(sorted(output.splitlines(True))) expected2 = ''.join(sorted(expected.splitlines(True))) common.assert_or_diff(output2, expected2) recode-3.7.15/tests/t40_combine.py0000644000175000017500000000030213226751246012353 # -*- coding: utf-8 -*- import common from common import setup_module, teardown_module def test_1(): # That combine does not crash. common.request('co..l1') common.validate('', '') recode-3.7.15/tests/common.py0000644000175000017500000000625314172742375011557 # -*- coding: utf-8 -*- __metaclass__ = type import os import subprocess from __main__ import py recode_program = os.environ.get('RECODE') import Recode outer = Recode.Outer(iconv=False) outer_iconv = Recode.Outer(iconv=True) class Run(dict): def __getattr__(self, attribute): return self[attribute] def __setattr__(self, attribute, value): self[attribute] = value run = Run() def external(flag): run.external = flag def request(text, encoding='utf-8'): run.request = bytes(text, encoding) # Functions only meant to be imported into real testing modules, where # pytest is meant to find and use them. def setup_module(module): for variable in ('LANG', 'LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LC_COLLATE'): if variable in os.environ: del os.environ[variable] os.environ['DEFAULT_CHARSET'] = 'ASCII' run.external = outer is None import tempfile run.work = tempfile.mktemp() def teardown_module(module): if os.path.exists(run.work): os.remove(run.work) # Useful functions for various test modules. def assert_or_diff(output, expected): if output != expected: import difflib diff = difflib.ndiff(expected.splitlines(True), output.splitlines(True)) import sys sys.stdout.write(''.join(diff)) assert False, (len(output), len(expected)) def external_output(command): if not recode_program: py.test.skip() command = command.replace('$R', recode_program) # FIXME: Find a more portable solution than checking the OS return subprocess.check_output(command, universal_newlines=True, shell=os.name != 'nt') def recode_output(input, encoding='utf-8'): if type(input) != bytes: input = bytes(input, encoding) if run.external: open(run.work, 'wb').write(input) return external_output('$R %s < %s' % (run.request, run.work)) if outer is None: py.test.skip() return outer.recode(run.request, input) def recode_iconv_output(input, encoding='utf-8'): if type(input) != bytes: input = bytes(input, encoding) if run.external or outer_iconv is None: py.test.skip() return outer_iconv.recode(run.request, input) def recode_back_output(input, encoding='utf-8'): if type(input) != bytes: input = bytes(input, encoding) before, after = run.request.split(b'..') if run.external: open(run.work, 'wb').write(input) external_output(b'$R %s %s' % (run.request, run.work)) return external_output(b'$R %s..%s < %s' % (after, before, run.work)) if outer is None: py.test.skip() temp = outer.recode(run.request, input) return outer.recode(b'%s..%s' % (after, before), temp) def validate(input, expected, encoding='utf-8'): output = recode_output(input) if type(input) != bytes: output = output.decode(encoding) import sys print(type(input), type(output), type(expected)) assert_or_diff(output, expected) def validate_back(input, encoding='utf-8'): output = recode_back_output(input) if type(input) != bytes: output = output.decode(encoding) assert_or_diff(output, input) recode-3.7.15/THANKS0000644000175000017500000003561213226751246007463 Recode has originally been written by François Pinard. Other people contributed to Recode by reporting problems, suggesting various improvements or submitting actual code. Here is a list of these people. Help me keeping it complete and exempt of errors. See various ChangeLogs for a detailed description of contributions. Santiago Vila Doncel deserves a special mention for his dedication and patience! ======================= ====================================================== Akim Demaille | demaille at inf dot enst dot fr Alain Labonté | alb at riq dot qc dot ca Alain Magloire | alainm at macs dot ee dot mcgill dot ca Alan J. Flavell | flavell at a5 dot ph dot gla dot ac dot uk Alexander Kurz | akurz at blala dot de Alexander L. Belikoff | abel at vallinor4 dot com | http://www.vallinor4.com Alexandre Duret-Lutz | duret_g at epita dot fr Alexandre Oliva | oliva at dcc dot unicamp dot br | http://www.dcc.unicamp.br/~oliva Andreas Dietrich | quasi at mathematik dot uni-marburg dot de Andreas Frick | afr at aifb dot uni-karlsruhe dot de Andreas Kunert | akunert at main-rheiner dot de Andreas Mueller | afm at othello dot ch | http://www.othello.ch Andreas Schwab | schwab at suse dot de Andrew Green | andrew at article7 dot co dot uk Andries Brouwer | Andries dot Brouwer at cwi dot nl Arnaldo Mandel | am at ime dot usp dot br Bastian Schlueter | buzz at gmx dot de | http://home.pages.de/~buzz Ben Sittler | bsittler at knownow dot com Bennett Todd | bet at rahul dot net | http://bent.latency.net/ Bernt Guldbrandtsen | bg at rs580 dot sh dot dk Bert Schweitzer | b dot schweitzer at tu-bs dot de Branimir Dolicki Brendan O'Dea | bod at compusol dot com dot au | http://www.ozemail.com.au/~bod/ Bruno Haible | haible at ilog dot fr | http://clisp.cons.org/~haible/ Christian Limpach | Christian dot Limpach at nice dot ch | http://www.nice.ch/~chris/ Christian Recktenwald | chris at citecs dot de | http://www.citecs.de/ Christian Rolland Christian Weisgerber | naddy at mips dot inka dot de | http://home.pages.de/~naddy/ Claude Goutier | goutier at jsp dot umontreal dot ca Colin Plumb Dagobert Michelsen | dam at baltic-online dot de | http://www.familie-michelsen.de Dan Jacobson | jidanni at jidanni dot org | http://jidanni.org/ Daniel Pfeiffer | occitan at esperanto dot org | http://makepp.sourceforge.net Daniel Quinlan | quinlan at best dot com Daniel Taupin | taupin at lps dot u-psud dot fr David E. A. Wilson | david_wilson at uow dot edu dot au | http://www.uow.edu.au/~david David Kastrup David Lebel | lebel at lebel dot org David Mentre David Necas | yeti at monoceros dot physics dot muni dot cz | http://physics.muni.cz/~yeti/ David van Leeuwen Detlev Droege | droege at informatik dot uni-koblenz dot de Dennis Veatch | dennisveatch at bellsouth dot net Dominique Quatravaux | Dominique dot Quatravaux at quatramaran dot ens dot fr | http://www.piren.epita.fr/~dom Dominique Schmit | dschmit at tabarly dot saclay dot cea dot fr Duane Ellis | duane at franklin dot com | http://www.franklin.com Eli Zaretskii | eliz at is dot elta dot co dot il Enrik Berkhan | Enrik dot Berkhan at planb dot de Eric Backus | eric_backus at hp dot com | http://www.wolfenet.com/~ericjb Éric Bischoff | eric at caldera dot de Erick Branderhorst | Erick dot Branderhorst at asml dot nl Erwan Mas | erwanmas at chez dot com | http://www.chez.com/erwanmas/ Farzad Farid Florian Oelmaier | 100265 dot 2501 at compuserve dot com François Pinard | pinard at iro dot umontreal dot ca | http://www.iro.umontreal.ca/~pinard François Robitaille François Yergeau | yergeau at alis dot com | http://www.alis.com/~yergeau/ Francois-Xavier Bergot | bergotfx at com dot enst dot fr Françoise Audebrand | audebran at ere dot umontreal dot ca Frederic Albrecht Frederic Gobry | frederic dot gobry at epfl dot ch Frederik Fouvry | fouvry at CoLi dot Uni-SB dot DE Frère Roy | roy at taize dot fr | http://www.taize.fr Gabriel P. Silva | gpsilva at geocities dot com | http://www.nce.ufrj.br/~gabriel Gaël Le Mignot | kilobug at freesurf dot fr Ghislain Plamondon Georg Haefele | haefele at atlas dot gis dot univie dot ac dot at Greg McGary Guillaume Rumeau | rumeau at isty-info dot uvsq dot fr Guy Lapalme | lapalme at iro dot umontreal dot ca | http://www.iro.umontreal.ca/~lapalme Harald Falkenberg | harald dot falkenberg at desy dot de Harald Koenig | koenig at tat dot physik dot uni-tuebingen dot de Hermann Hueni | hueni at iam dot unibe dot ch Hennus Bergman Hilmar Schlegel | hs at semic dot ag-berlin dot mpg dot de Holger Benl | benl at websphere dot de Hrvoje Niksic | hniksic at srce dot hr Jacques Madelaine | jacques at info dot unicaen dot fr | http://www.info.unicaen.r/~jacques Jacques Richer | Jacques dot Richer at CERCA dot UMontreal dot CA | http://www.CERCA.UMontreal.CA/~richer Jan Djarv | jan dot djarv at mbox200 dot swipnet dot se Jean-Christophe Guillain | jcg at adviseo dot fr Jean-Claude Nadeau | nadeau at jsp dot umontreal dot ca Jean-Michel Dault | jmdault at mandrakesoft dot com Jens Quade | jens at ronja dot dinoco dot de Jim Meyering | meyering at na-net dot ornl dot gov Joelle Stemp John Gorman | jgorman at webbysoft dot com John van Krieken | John dot van dot Krieken at ATComputing dot nl | http://www.ATComputing.nl/images/pasfotos/john.jpg Jörg Höhle | Joerg dot Hoehle at gmd dot de | http://fit.gmd.de/~hoehle/ Jose Joao Almeida | jj at di dot uminho dot pt | http://www.di.uminho.pt/~jj Juan Manuel Guerrero | juan dot guerrero at gmx dot de Julio Sanchez | jsanchez at gmv dot es Juliusz Chroboczek | jch at clipper dot ens dot fr Juergen Zeller | zet at rupert dot franken dot de Kai Uwe Rommel Karl Berry | karl at cs dot umb dot edu | http://www.cs.umb.edu/~karl/ Keld Jørn Simonsen | keld at dkuug dot dk Kester Habermann | kester at unix-ag dot uni-kl dot de | http://www.unix-ag.uni-kl.de/~kester/ Kevin Stuckless | kevins at stuck dot warped dot com | http://stuck.warped.com/~kevins Konstantin Osipov | rabid at spylog dot ru Kristian Köhntopp | kk at netuse dot de Laurent Bourbeau | bourbeau at progiciels-bpi dot ca Larry W. Virden | lvirden at cas dot org | http://purl.org/net/lvirden/ Liisa R{ih{ | lr at cs dot uta dot fi Lionel Elie Mamane | lionel at mamane dot lu Loic Dachary Luc Maisonobe | Luc dot Maisonobe at free dot fr | http://www.spaceroots.org/ Lukas Petrlik Mac Pigman | gwp at dido dot caltech dot edu Magnus Määttä | novell at kiruna dot nu | http://novell.stoldgods.nu Marc Gingold | gingold at spht dot saclay dot cea dot fr | http:////www-spht.cea.fr/doc.html Marc Shapiro | shapiro at prof dot inria dot fr Marc Verreault Marcin Owsiany | marcin at owsiany dot pl | http://marcin.owsiany.pl/ Mario Gay | mgay at ti-edu dot ch Markus Kuhn | Markus dot Kuhn at cl dot cam dot ac dot uk | http://www.cl.cam.ac.uk/~mgk25/ Martin J. Dürst | duerst at w3 dot org | http://www.w3.org/People/D%C3%BCrst Martin Maechler | maechler at stat dot math dot ethz dot ch Martin Michlmayr | tbm at cyrius dot com | http://www.cyrius.com/ Martin Trautmann | traut at gmx dot de Martin Mares | mj at ucw dot cz | http://atrey.karlin.mff.cuni.cz/~mj/ Marty Leisner | martyleisner at yahoo dot com Michael Gschwind | mike at vlsivie dot tuwien dot ac dot at Michael L. Dowling | M dot Dowling at tu-bs dot de | http://www.mathematik.tu-bs.de Michael Schmidt | mschmidt at koblenz dot fh-rpl dot de Michael Shields | shields at msrl dot com | http://www.msrl.com/ Mikko Harjula | mikko dot harjula at gware dot com Mikko Silvonen | silvonen at iki dot fi | http://www.iki.fi/silvonen/ Nathanael Makarevitch Nathaniel Borenstein | nsb at aa dot fv dot com Neal McBurnett | http://bcn.boulder.co.us/~neal/ Nguyên-Ãai Quý | daiquy dot nguyen at ulg dot ac dot be Nicolas Anquetil Nicolas Thiery | Nicolas dot Thiery at jonas dot univ-lyon1 dot fr | http://www.lmd.univ-lyon1.fr/home/nthiery/ Niels Kr. Bech Jensen | nkbj at image dot dk | http://www.image.dk/~nkbj/ Noèl Köthe | noel at debian dot org | http://www.koethe.net/ Olivier Lecarme | Olivier dot Lecarme at unice dot fr Olivier Tharan | olive at laria dot u-picardie dot fr | http://www.laria.u-picardie.fr/~olive/ Pascal Gourdel | gourdel at univ-paris1 dot fr Patrick Andries | pandries at iti dot qc dot ca Pavel Osipov | forsite at spamtest dot ru | http://forsite.ibch.ru/ Pavel Pokorny | Pavel dot Pokorny at vscht dot cz | http://www.vscht.cz/mat/Pavel.Pokorny Pawel Krawczyk | kravietz at ceti dot pl | http://ceti.pl/~kravietz/ Per Andersson | perand at stacken dot kth dot se Per Starback | starback at ling dot uu dot se | http://stp.ling.uu.se/~starback/me.html Per Steinar Iversen Peter Much | pmc at citylink dot dinoex dot sub dot org Peter Poeml | poeml at cmdline dot net | http://www.poeml.de/ Peter Turcan | peter dot turcan at minerva-is dot sk Petr Pajas | pajas at ufal dot ms dot mff dot cuni dot cz | http://pajas.matfyz.cz Phyllis Frankl | phyllis at morph dot poly dot edu | http://ebbets.poly.edu/~pfrankl Pierre Gaumond | gaumondp at ere dot umontreal dot ca Pierre Girard | pierreg at crt dot umontreal dot ca Pierre Mathieu | mathieu at geod dot emr dot ca Povl H. Pedersen | pope at netguide dot dk Primož Peterlin | primoz dot peterlin at biofiz dot mf dot uni-lj dot si | http://sizif.mf.uni-lj.si/~peterlin/ Régis Martin | contact at interloc dot ca Réjean Payette | rejean dot payette at rtsq dot qc dot ca Reuben Thomas | rrt at sc3d dot org | http://rrt.sc3d.org/ Ricard Torres | torres at upf dot es Richard Nault | rnfc at videotron dot ca | www.RichardNault.com Richard Plasun | plasun at iue dot tuwien dot ac dot at Richard Stallman | rms at gnu dot org Robert Joop | rj at rainbow dot in-berlin dot de Roman Czyborra | roman at czyborra dot com | http://czyborra.com/ Roman Suzi | rnd at onego dot ru Ronald C.F. Antony | rcfa at cubiculum dot com | http://www.cubiculum.com/~rcfa Santiago Vila Doncel | sanvila at unex dot es Saverio Pangoli | saverio at mystere dot sci dot sns dot it Sebastian Huebner | cyco at baud dot de | http://www.baud.de/cyco/ Sean McLaughlin | Seanster at Seanster dot com Scott Schwartz | schwartz at bio dot cse dot psu dot edu Simon Cozens | simon at cozens dot net Slaven Rezic | eserte at cs dot tu-berlin dot de | http://user.cs.tu-berlin.de/~eserte Stefan Albertz | Stefan dot Albertz at rus dot uni-stuttgart dot de Stefan Haubenthal | haubi at geocities dot com | http://home.pages.de/~haubi Stephen Boulet | stephen at theboulets dot net Stephen Walkauskas | SWalkaus at endeca dot com Steinar Bang | sb at metis dot no Stephane Berube | berube at iro dot umontreal dot ca Stephen Grecni | steve at steem dot com | http://steem.com Steve Langasek | vorlon at netexpress dot net Sumit Bose | bose at physik dot tu-berlin dot de Thomas Gebhardt | gebhardt at hrz dot uni-marburg dot de | http://www.uni-marburg.de/hrz/mitarbeiter /gebhardt.html Thomas M. Ott Thomas Seeling Tom Hageman | tom at basil dot icce dot rug dot nl Tom Tromey | tromey at cygnus dot com | http://cafe.colorado.edu/~tromey/ Tomasz KÅ‚oczko | kloczek at wun dot zie dot pg dot gda dot pl Urban Mueller | mueller at iogram dot ch Ulrich Drepper | drepper at gnu dot org Ulrich Windl | Ulrich dot Windl at rz dot uni-regensburg dot de | http://www.uni-regensburg.de/Einrichtungen /Rechenzentrum/Orientierung/Mitarbeiter/windl.html Vern Paxson | vern at ee dot lbl dot gov Vitor Duarte | vad at di dot fct dot unl dot pt Volker Wysk | post at volker-wysk dot de Walter Müller | walt at pi4 dot informatik dot uni-mannheim dot de Wiel Seuskens | wiel at xs4all dot nl | http://www.xs4all.nl/~wiel/ Wilhelm Zadrapa | wfz at aon dot at William Bader | wbader at scarecrow dot csee dot lehigh dot edu Wolfgang Boerner | Wolfgang dot Boerner at rz dot uni-regensburg dot de Wolfgang Wander | wwc at hermes dot desy dot de Xabier Rodriguez Calvar | xrcalvar at igalia dot com Yves Arrouye ======================= ====================================================== recode-3.7.15/configure.ac0000644000175000017500000000743414766020571011037 # Configure template for Recode. # Copyright (C) 1994-2023 Free Software Foundation, Inc. # Process this file with autoconf to produce a configure script. AC_PREREQ([2.71]) AC_INIT([recode],[3.7.15],[rrt@sc3d.org]) AC_CONFIG_SRCDIR(src/recode.c) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE AC_CONFIG_MACRO_DIR(m4) AC_CANONICAL_HOST dnl Release number rules: dnl This is derived from "Versioning" chapter of info libtool documentation. dnl Format is MAJOR:MINOR:MICRO dnl 4a) Increment major when removing or changing interfaces. dnl 4a) 5) Increment minor when adding interfaces. dnl 6) Set minor to zero when removing or changing interfaces. dnl 3) Increment micro when interfaces not changed at all, dnl only bug fixes or internal changes made. dnl 4b) Set micro to zero when adding, removing or changing interfaces. dnl First extract pieces from the version number string RECODE_MAJOR_VERSION=`echo $VERSION | awk -F. '{print $1}'` RECODE_MINOR_VERSION=`echo $VERSION | awk -F. '{print $2}'` RECODE_MICRO_VERSION=`echo $VERSION | awk -F. '{print $3}'` dnl Version info for libraries = CURRENT:REVISION:AGE RECODE_SONUM=$RECODE_MAJOR_VERSION AGE=$RECODE_MINOR_VERSION REVISION=$RECODE_MICRO_VERSION CURRENT=`expr $RECODE_SONUM + $AGE` VERSION_INFO=$CURRENT:$REVISION:$AGE AC_SUBST(VERSION_INFO) AC_PROG_CC gl_EARLY LT_INIT AC_PROG_LEX([noyywrap]) AM_PATH_PYTHON([3.8]) gl_INIT dnl help2man AC_PATH_PROG([PERL], [perl]) AC_PATH_PROG([HELP2MAN], [help2man]) CROSS_COMPILING=$cross_compiling AC_SUBST([CROSS_COMPILING]) dnl Cython AC_CHECK_PROGS([CYTHON], [cython3 cython]) AM_CONDITIONAL([HAVE_CYTHON], test -n "$ac_cv_prog_CYTHON") AC_SUBST([objdir]) LT_SYS_MODULE_EXT case $host_os in *mingw* ) pyextext=.pyd;; *cygwin*) pyextext=.dll;; * ) pyextext=.so;; esac AC_SUBST([pyextext], [$pyextext]) dnl Extra warnings with GCC and compatible compilers AC_ARG_ENABLE([gcc-warnings], [AS_HELP_STRING([--disable-gcc-warnings], [turn off lots of GCC warnings])], [case $enableval in yes|no) ;; *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;; esac gl_gcc_warnings=$enableval], [gl_gcc_warnings=yes] ) if test "$gl_gcc_warnings" = yes; then dnl Set up the list of undesired warnings. nw= nw="$nw -Wsystem-headers" # Don’t let system headers trigger warnings nw="$nw -Wundef" # All compiler preprocessors support #if UNDEF nw="$nw -Wtraditional" # All compilers nowadays support ANSI C nw="$nw -Wdeclaration-after-statement" # We require C99. nw="$nw -Wstrict-overflow" # Use a lower level (see below). nw="$nw -Wconversion" # These warnings usually don’t point to mistakes. nw="$nw -Wsign-conversion" # Likewise. gl_MANYWARN_ALL_GCC([warnings]) dnl Enable all GCC warnings not in this list. gl_MANYWARN_COMPLEMENT([warnings], [$warnings], [$nw]) for w in $warnings; do gl_WARN_ADD([$w]) done dnl Add an extra warning gl_WARN_ADD([-Wstrict-overflow=1]) dnl Remove a warning being promoted to error: we trigger this and can't turn it off with pragmas. gl_WARN_ADD([-Wno-error=format-security]) # When compiling with GCC, prefer -isystem to -I when including system # include files, to avoid generating useless diagnostics for the files. ISYSTEM='-isystem ' else ISYSTEM='-I' fi AC_SUBST([ISYSTEM]) # Extra settings for running tests, e.g. LD_PRELOAD for ASAN AC_SUBST([TESTS_ENVIRONMENT_EXTRA]) # Gettext AM_GNU_GETTEXT_VERSION(0.19) AM_GNU_GETTEXT(external) AM_XGETTEXT_OPTION([--from-code=UTF-8]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile contrib/Makefile doc/Makefile lib/Makefile po/Makefile.in src/Makefile src/recode.x tests/Makefile tests/setup.py]) AC_CONFIG_FILES([build-aux/x-to-1], [chmod +x build-aux/x-to-1]) AC_OUTPUT recode-3.7.15/src/0000755000175000017500000000000014766021054007405 5recode-3.7.15/src/request.c0000644000175000017500000011311414574151715011167 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1990. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" /* Quality handling. */ /*---------------------------------------. | Return a string describing a quality. | `---------------------------------------*/ static const char * quality_to_string (struct recode_quality quality) { static char buffer[100]; if (quality.reversible) return _("reversible"); sprintf (buffer, _("%s to %s"), (quality.in_size == RECODE_1 ? _("byte") : quality.in_size == RECODE_2 ? _("ucs2") : _("variable")), (quality.out_size == RECODE_1 ? _("byte") : quality.out_size == RECODE_2 ? _("ucs2") : _("variable"))); return buffer; } /*-----------------------------------------------------------------------. | Adjust the FIRST quality of a step for the result of merging this step | | with another succeeding one, given its SECOND quality. | `-----------------------------------------------------------------------*/ static void merge_qualities (struct recode_quality *first, const struct recode_quality second) { first->out_size = second.out_size; first->reversible = first->reversible && second.reversible; first->slower = first->slower || second.slower; first->faster = first->faster && second.faster; } /* Editing out sequences. */ /*---------------------------------------------. | Add CHARACTER to the generated work string. | `---------------------------------------------*/ static void add_work_character (RECODE_REQUEST request, int character) { if (request->work_string_length + 1 >= request->work_string_allocated) { char *new_work_string; request->work_string_allocated += 100; new_work_string = (char *) realloc (request->work_string, request->work_string_allocated); if (new_work_string) request->work_string = new_work_string; else return; /* the diagnostic gets truncated, no need to fuss about it. */ } request->work_string[request->work_string_length++] = character; } /*----------------------------------. | Add a STRING to the work string. | `----------------------------------*/ static void add_work_string (RECODE_REQUEST request, const char *string) { while (*string) add_work_character (request, *string++); } /*----------------------------------------------------------------------. | Generate a string describing the current sequence and return it. | | Include a description of recoding quality only if EDIT_QUALITY is not | | zero. | `----------------------------------------------------------------------*/ char * recode_edit_sequence (RECODE_REQUEST request, bool edit_quality) { RECODE_OUTER outer = request->outer; request->work_string_length = 0; if (request->sequence_length < 0) add_work_string (request, _("*Unachievable*")); else if (request->sequence_length == 0) add_work_string (request, _("*mere copy*")); else { RECODE_SYMBOL last_charset_printed = NULL; RECODE_STEP step = request->sequence_array; while (step < request->sequence_array + request->sequence_length) { RECODE_STEP unsurfacer_start = step; RECODE_STEP unsurfacer_end; /* Find unsurfacers. */ while (step < request->sequence_array + request->sequence_length && step->after == outer->data_symbol) step++; unsurfacer_end = step; /* Print BEFORE, sparing it if syntax permits. */ if (step != unsurfacer_start || step == request->sequence_array + request->sequence_length || step->before != last_charset_printed) { if (unsurfacer_start != request->sequence_array) add_work_character (request, ','); if (step < request->sequence_array + request->sequence_length) { last_charset_printed = step->before; add_work_string (request, last_charset_printed->name); } } /* Print unsurfacers. */ for (step = unsurfacer_end - 1; step >= unsurfacer_start; step--) { add_work_character (request, '/'); add_work_string (request, step->before->name); } step = unsurfacer_end; /* Print AFTER. */ add_work_string (request, ".."); if (step < request->sequence_array + request->sequence_length && step->before != outer->data_symbol) { last_charset_printed = step->after; add_work_string (request, last_charset_printed->name); step++; } else { last_charset_printed = outer->data_symbol; add_work_string (request, last_charset_printed->name); } /* Print resurfacers. */ while (step < request->sequence_array + request->sequence_length && step->before == outer->data_symbol) { add_work_character (request, '/'); last_charset_printed = NULL; add_work_string (request, step->after->name); step++; } } if (edit_quality) { struct recode_quality quality = outer->quality_byte_reversible; RECODE_CONST_STEP step2; for (step2 = request->sequence_array; step2 < request->sequence_array + request->sequence_length; step2++) merge_qualities (&quality, step2->quality); add_work_character (request, ' '); add_work_character (request, '('); add_work_string (request, quality_to_string (quality)); add_work_character (request, ')'); } } add_work_character (request, NUL); return request->work_string; } /* Sequence construction and optimisation. */ /*-------------------------------------------------------------------------. | To the end of a given SEQUENCE, add a new recoding step initialised from | | SINGLE. | `-------------------------------------------------------------------------*/ static bool add_to_sequence (RECODE_REQUEST request, RECODE_SINGLE single, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; RECODE_STEP step; if ((unsigned)request->sequence_length == request->sequence_allocated) { unsigned old_allocated = request->sequence_allocated; if (request->sequence_allocated == 0) request->sequence_allocated = 16; else request->sequence_allocated *= 2; if (!REALLOC (request->sequence_array, request->sequence_allocated, struct recode_step)) { recode_error (outer, _("Virtual memory exhausted!")); return false; } memset (request->sequence_array + old_allocated, 0, (request->sequence_allocated - old_allocated) * sizeof (struct recode_step)); } step = request->sequence_array + request->sequence_length++; step->before = single->before; step->after = single->after; step->step_table = single->initial_step_table; step->step_table_term_routine = NULL; step->step_type = step->step_table ? RECODE_COMBINE_EXPLODE : RECODE_NO_STEP_TABLE; step->transform_routine = single->transform_routine; step->fallback_routine = single->fallback_routine; step->term_routine = NULL; if (single->init_routine) { if (!(*single->init_routine) (step, request, before_options, after_options)) { recode_error (outer, _("Step initialisation failed")); return false; } } else if (before_options || after_options) { recode_error (outer, _("Step initialisation failed (unprocessed options)")); return false; } return true; } /*----------------------------------------------------------------------. | Find a SEQUENCE of single steps to achieve a conversion from charset | | BEFORE to charset AFTER. Return false only if no sequence could been | | found. Explain what was selected if VERBOSE. | `----------------------------------------------------------------------*/ /* Cost corresponding to an impossible conversion. */ #define UNREACHABLE 30000 static bool find_sequence (RECODE_REQUEST request, RECODE_CONST_SYMBOL before, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_SYMBOL after, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; struct search { RECODE_SINGLE single; /* single step aiming towards after */ int cost; /* cost from here through after */ }; struct search *search_array; /* critical path search tree */ struct search *search; /* item in search_array for charset */ RECODE_SINGLE single; /* cursor in possible single_singles */ int cost; /* cost under consideration */ bool modified; /* if modified since last iteration */ RECODE_CONST_SYMBOL charset; /* charset while reconstructing */ if (!ALLOC (search_array, outer->number_of_symbols, struct search)) return false; /* Search for an economical route, looking our way backward from the after towards the before. */ for (search = search_array; search < search_array + outer->number_of_symbols; search++) { search->single = NULL; search->cost = UNREACHABLE; } search_array[after->ordinal].cost = 0; modified = true; while (modified) { modified = false; for (single = outer->single_list; single; single = single->next) if (!single->before->ignore) { cost = search_array[single->after->ordinal].cost; if (cost != UNREACHABLE) { cost += single->conversion_cost; search = search_array + single->before->ordinal; if (cost < search->cost) { search->single = single; search->cost = cost; modified = true; } } } } if (search_array[before->ordinal].cost == UNREACHABLE) { /* No path has been found. */ free (search_array); return false; } /* Save the retained best path in the sequence array. */ for (charset = before; charset != after; charset = single->after) { single = search_array[charset->ordinal].single; if (!add_to_sequence (request, single, charset == before ? before_options : NULL, single->after == after ? after_options : NULL)) break; } free (search_array); return charset == after; } /*---------------------------------------------------------------------------. | If the step table is usable for step merging, return its type. Otherwise, | | return RECODE_NO_STEP_TABLE. Any non-trivial algorithm for the step | | prevents step merging. | `---------------------------------------------------------------------------*/ static enum recode_step_type table_type (RECODE_CONST_REQUEST request, RECODE_CONST_STEP step) { /* When producing source headers, we do not care about algorithms. */ if (!request->make_header_flag) switch (step->step_type) { case RECODE_BYTE_TO_BYTE: if (step->transform_routine != recode_transform_byte_to_byte) return RECODE_NO_STEP_TABLE; break; case RECODE_BYTE_TO_STRING: if (step->transform_routine != recode_transform_byte_to_variable) return RECODE_NO_STEP_TABLE; break; default: return RECODE_NO_STEP_TABLE; } return step->step_type; } /*---------------------------------------------------------------. | Order two struct item's lexicographically of their key value. | `---------------------------------------------------------------*/ struct item { unsigned short code; /* UCS-2 value */ unsigned char byte; /* charset code [0..255] */ }; static int compare_struct_item (const void *void_first, const void *void_second) { return (((const struct item *) void_first)->code - ((const struct item *) void_second)->code); } /*------------------------------------------------------------------------. | Complete the initialisation of a double step which just has been merged | | into a single STEP. Establish known pairings by comparing UCS-2 values | | between the before and after charsets. Create new pairs only when | | fallback is recode_reversibility. | `------------------------------------------------------------------------*/ static bool complete_double_ucs2_step (RECODE_OUTER outer, RECODE_STEP step) { struct side { RECODE_SYMBOL charset; /* charset */ struct item item[256]; /* array of binding items */ size_t number_of_items; /* number of binding items in array */ }; const struct strip_data *data; /* UCS-2 data table */ struct side side_array[2]; /* information for each side */ struct side *side; /* cursor into side_array */ bool reversed; /* if both sides reversed */ const recode_ucs2 *pool; /* pool for fetching UCS-2 characters */ unsigned offset; /* cursor in double table strings */ unsigned byte; /* character code */ unsigned row_counter; /* double table row counter */ unsigned position_counter; /* double table column counter */ struct item *item_cursor; /* cursor in arrays of binding items */ struct item *left; /* left binding items cursor */ struct item *left_limit; /* limit value for left */ struct item *right; /* right binding items cursor */ struct item *right_limit; /* limit value for right */ struct recode_known_pair pair_array[256]; /* obtained pairings */ struct recode_known_pair *pair_cursor; /* cursor in array of pairings */ /* For ensuring recode_reversibility, known pairs should be computed the same way regardless of the direction of recoding. This canonalisation is ensured through the charset values, which are increasing along the initialisation order. This should also reflect the charset order in rfc1345.txt. */ if (step->before < step->after) { side_array[0].charset = step->before; side_array[1].charset = step->after; reversed = false; } else { side_array[0].charset = step->after; side_array[1].charset = step->before; reversed = true; } for (side = side_array; side < side_array + 2; side++) { /* Construct the array of binding items for the charset. */ data = (const struct strip_data *) side->charset->data; pool = data->pool; item_cursor = side->item; byte = 0; for (row_counter = 0; row_counter < (256 / STRIP_SIZE); row_counter++) if (offset = data->offset[row_counter], offset) for (position_counter = 0; position_counter < STRIP_SIZE; position_counter++) { unsigned code = pool[offset + position_counter]; if (code != BIT_MASK (16)) { /* Establish a new binding item. */ item_cursor->byte = byte; item_cursor->code = code; item_cursor++; } byte++; } else byte += STRIP_SIZE; side->number_of_items = item_cursor - side->item; } /* Sort both arrays of binding items into lexicographical order. The taken time, which is O(n.log(n)), is gained back when the further pairing is completed in a time which is linear instead of quadratic. */ qsort (side_array[0].item, side_array[0].number_of_items, sizeof (struct item), compare_struct_item); qsort (side_array[1].item, side_array[1].number_of_items, sizeof (struct item), compare_struct_item); /* Scan both arrays of binding items simultaneously, saving as pairs those codes having the same UCS-2 value. */ left = side_array[0].item; left_limit = left + side_array[0].number_of_items; right = side_array[1].item; right_limit = right + side_array[1].number_of_items; pair_cursor = pair_array; while (left < left_limit && right < right_limit) { int value = left->code - right->code; if (value < 0) left++; else if (value > 0) right++; else { pair_cursor->left = (left++)->byte; pair_cursor->right = (right++)->byte; pair_cursor++; } } /* Complete the recoding table out of this. */ return recode_complete_pairs (outer, step, pair_array, pair_cursor - pair_array, false, reversed); } static bool delete_compressed_one_to_many (RECODE_STEP step) { free (step->local); return true; } static void delete_step (RECODE_STEP step) { /* Run step destructor, and delete step_table if allocated. */ if (step->term_routine) (*step->term_routine) (step); if (step->step_table_term_routine != NULL) (*step->step_table_term_routine) (step->step_table); } /*---------------------------------------------------------------------. | Optimize a SEQUENCE of single steps by creating new single steps, if | | this can be done by merging adjacent steps which are simple enough. | `---------------------------------------------------------------------*/ static bool simplify_sequence (RECODE_REQUEST request) { RECODE_OUTER outer = request->outer; unsigned saved_steps; /* number of saved steps */ RECODE_STEP in; /* next studied sequence step */ RECODE_STEP out; /* next rewritten sequence step */ RECODE_STEP limit; /* last value for IN */ unsigned char *accum; /* byte_to_byte accumulated recoding */ const char **string; /* byte_to_variable recoding */ unsigned char temp[256]; /* temporary value for accum array */ unsigned counter; /* all purpose counter */ /* Tell users what is the goal. */ if (request->verbose_flag) fprintf (stderr, _("Request: %s\n"), recode_edit_sequence (request, 0)); saved_steps = 0; /* See if there are some double steps to merge. */ in = request->sequence_array; out = request->sequence_array; limit = in + request->sequence_length; while (in < limit) if (in < limit - 1 && in[0].before->data_type == RECODE_STRIP_DATA && in[0].after == outer->ucs2_charset && in[1].before == outer->ucs2_charset && in[1].after->data_type == RECODE_STRIP_DATA) { /* Free old steps before overwriting anything. */ delete_step (in); delete_step (in + 1); /* This is a double UCS-2 step. */ out->before = in[0].before; out->after = in[1].after; out->quality = in[0].quality; merge_qualities (&out->quality, in[1].quality); out->transform_routine = recode_transform_byte_to_byte; /* Initialize the new single step, so it can be later merged with others. */ if (!complete_double_ucs2_step (outer, out)) return false; in += 2; saved_steps++; out++; } else if (in < limit - 1 && in[0].after == outer->iconv_pivot && in[1].before == outer->iconv_pivot) { /* Free old steps before overwriting anything. */ delete_step (in); delete_step (in + 1); /* This is a double `iconv' step. */ out->before = in[0].before; out->after = in[1].after; out->quality = in[0].quality; merge_qualities (&out->quality, in[1].quality); out->transform_routine = recode_transform_with_iconv; in += 2; saved_steps++; out++; } else if (out != in) *out++ = *in++; else out++, in++; request->sequence_length = out - request->sequence_array; /* Recopy the sequence array over itself, while merging subsequences of one or more consecutive one-to-one recodings, including an optional final one-to-many recoding. */ in = request->sequence_array; out = request->sequence_array; limit = in + request->sequence_length; while (in < limit) if (in < limit - 1 && table_type (request, in) == RECODE_BYTE_TO_BYTE && table_type (request, in + 1) != RECODE_NO_STEP_TABLE /* Initialise a cumulative one-to-one recoding with the identity permutation. Just avoid doing it if not enough memory. */ && ALLOC (accum, 256, unsigned char)) { memcpy (accum, in->step_table, 256); out->before = in->before; out->after = in->after; out->quality = in->quality; delete_step (in++); /* Merge in all consecutive one-to-one recodings. */ while (in < limit && (table_type (request, in) == RECODE_BYTE_TO_BYTE)) { const unsigned char *table = (const unsigned char *) in->step_table; for (counter = 0; counter < 256; counter++) temp[counter] = table[accum[counter]]; memcpy (accum, temp, 256); out->after = in->after; merge_qualities (&out->quality, in->quality); delete_step (in++); saved_steps++; } /* Check for *one* possible one-to-many recoding. */ if (in < limit && (table_type (request, in) == RECODE_BYTE_TO_STRING) /* Merge in the one-to-many recoding. Just avoid doing it if not enough memory. */ && (ALLOC (string, 256, const char *))) { const char *const *table = (const char *const *) in->step_table; for (counter = 0; counter < 256; counter++) string[counter] = table[accum[counter]]; free (accum); out->step_type = RECODE_BYTE_TO_STRING; out->step_table = string; if (in->step_table_term_routine) { out->local = (void *) table; /* Save reference to old table for destructor. */ out->term_routine = delete_compressed_one_to_many; } out->step_table_term_routine = free; out->transform_routine = recode_transform_byte_to_variable; out->after = in->after; merge_qualities (&out->quality, in->quality); in++; saved_steps++; } else { /* Make the new single step be a one-to-one recoding. */ out->step_type = RECODE_BYTE_TO_BYTE; out->step_table = accum; out->transform_routine = recode_transform_byte_to_byte; } out++; } else if (out != in) *out++ = *in++; else out++, in++; request->sequence_length = out - request->sequence_array; /* Delete a single remaining step, if it happens to be the identity one-to-one recoding. */ in = request->sequence_array; if (request->sequence_length == 1 && table_type (request, in) == RECODE_BYTE_TO_BYTE && memcmp (in->step_table, outer->one_to_same, 256) == 0) { request->sequence_length = 0; saved_steps++; delete_step (in); } /* Tell the user if something changed. */ if (saved_steps > 0 && request->verbose_flag) fprintf (stderr, _("Shrunk to: %s\n"), recode_edit_sequence (request, 0)); return true; } /* Decoding step sequence parameters. */ /*-------------------------------------. | Scan next name into SCANNED_STRING. | `-------------------------------------*/ static bool scan_identifier (RECODE_REQUEST request) { char *cursor = request->scanned_string; while (*request->scan_cursor && *request->scan_cursor != ',' && (request->scan_cursor[0] != '.' || request->scan_cursor[1] != '.') && *request->scan_cursor != '/' && *request->scan_cursor != '+') *cursor++ = *request->scan_cursor++; *cursor = NUL; return true; } /*----------------------------------------------------------------. | Scan all options and return a list of them. | | FIXME: Need to be able to differentiate empty list from error. | `----------------------------------------------------------------*/ static RECODE_OPTION_LIST scan_options (RECODE_REQUEST request) { RECODE_OUTER outer = request->outer; RECODE_OPTION_LIST list = NULL; RECODE_OPTION_LIST last = NULL; while (*request->scan_cursor == '+') { RECODE_OPTION_LIST new_ = ALLOC (new_, 1, struct recode_option_list); char *copy; if (!new_) break; /* FIXME: should interrupt decoding */ request->scan_cursor++; scan_identifier (request); ALLOC (copy, strlen (request->scanned_string) + 1, char); if (!copy) { free (new_); break; /* FIXME: should interrupt decoding */ } strcpy (copy, request->scanned_string); new_->option = copy; if (!list) list = new_; new_->next = last; last = new_; } return list; } /*--------------------------------------------------------------------------. | See if there is another charset after the current one in the subrequest. | | In such case, skip and ignore current surfaces, and return false. | `--------------------------------------------------------------------------*/ static bool scan_check_if_last_charset (RECODE_REQUEST request) { const char *cursor = request->scan_cursor; while (*cursor && *cursor != ',' && !(cursor[0] == '.' && cursor[1] != '.')) cursor++; if (*cursor && *cursor != ',') { request->scan_cursor = cursor; return false; } return true; } /*------------------------------------------------------------------------. | Program, in the SEQUENCE under construction, the removal of surfaces in | | reverse order of their appearance, using recursion. | `------------------------------------------------------------------------*/ static bool scan_unsurfacers (RECODE_REQUEST request) { RECODE_OUTER outer = request->outer; RECODE_SYMBOL surface = NULL; RECODE_OPTION_LIST surface_options = NULL; request->scan_cursor++; scan_identifier (request); if (*request->scanned_string) { RECODE_ALIAS alias = recode_find_alias (outer, request->scanned_string, ALIAS_FIND_AS_SURFACE); if (!alias) { recode_error (outer, _("Unrecognised surface name `%s'"), request->scanned_string); return false; } surface = alias->symbol; /* FIXME: Should check that it does not itself have implied surfaces? */ } if (*request->scan_cursor == '+') surface_options = scan_options (request); if (*request->scan_cursor == '/') if (!scan_unsurfacers (request)) return false; if (surface && surface->unsurfacer) return add_to_sequence (request, surface->unsurfacer, surface_options, NULL); return true; } /*------------------------------------------------------------------------. | Program, in the SEQUENCE under construction, the removal of surfaces in | | reverse order of the given list, using recursion. | `------------------------------------------------------------------------*/ static bool add_unsurfacers_to_sequence (RECODE_REQUEST request, struct recode_surface_list *list) { if (list->next) if (!add_unsurfacers_to_sequence (request, list->next)) return false; if (list->surface->unsurfacer) return add_to_sequence (request, list->surface->unsurfacer, NULL, NULL); return true; } /*---------------------------------------------------------------------------. | Scan next surfaced charset of the form CHARSET[/SURFACE]*, and return this | | charset after having added it to the SEQUENCE under construction. If | | BEFORE is not NULL (BEFORE_OPTIONS then holds associated options), this | | charset is in another position then the first, and then, a sequence of | | steps will be generated. If BEFORE is NULL, then this charset is in a | | before position (seen options will be returned at the position indicated | | by OPTIONS_POINTER), surfaces should be removed from right to left instead | | of applied from left to right. If neither in an initial position nor in a | | final position, surfaces are ignored, that is optimised out. Tell what is | | going on if VERBOSE. | `---------------------------------------------------------------------------*/ static RECODE_SYMBOL scan_charset_before (RECODE_REQUEST request, RECODE_OPTION_LIST *options_pointer) { RECODE_OUTER outer = request->outer; RECODE_ALIAS alias; *options_pointer = NULL; scan_identifier (request); alias = recode_find_alias (outer, request->scanned_string, ALIAS_FIND_AS_EITHER); if (*request->scan_cursor == '+') *options_pointer = scan_options (request); if (!alias) return NULL; /* We are scanning in a BEFORE position. */ if (*request->scan_cursor == '/') { if (!scan_unsurfacers (request)) return NULL; } else if (alias->implied_surfaces && !request->make_header_flag) { if (!add_unsurfacers_to_sequence (request, alias->implied_surfaces)) return NULL; } return alias->symbol; } static RECODE_SYMBOL scan_charset_after (RECODE_REQUEST request, RECODE_CONST_SYMBOL before, RECODE_CONST_OPTION_LIST before_options) { RECODE_OUTER outer = request->outer; RECODE_ALIAS alias; RECODE_SYMBOL charset; RECODE_OPTION_LIST charset_options = NULL; scan_identifier (request); alias = recode_find_alias (outer, request->scanned_string, ALIAS_FIND_AS_EITHER); if (*request->scan_cursor == '+') charset_options = scan_options (request); if (!alias) return NULL; charset = alias->symbol; /* We are scanning in an AFTER position. */ if (!find_sequence (request, before, before_options, charset, charset_options)) { recode_error (outer, _("No way to recode from `%s' to `%s'"), before->name, charset->name); return NULL; } /* Ignore everything about surfaces, except in last position of a subrequest. This optimises out the application of surfaces, when these would be immediately followed by their removal. */ if (scan_check_if_last_charset (request)) { if (*request->scan_cursor == '/') { while (*request->scan_cursor == '/') { RECODE_SYMBOL surface = NULL; RECODE_OPTION_LIST surface_options = NULL; request->scan_cursor++; scan_identifier (request); if (*request->scanned_string) { RECODE_ALIAS alias2 = recode_find_alias (outer, request->scanned_string, ALIAS_FIND_AS_SURFACE); if (!alias2) { recode_error (outer, _("Unrecognised surface name `%s'"), request->scanned_string); return NULL; } surface = alias2->symbol; /* FIXME: Should check that it does not itself have implied surfaces? */ } if (*request->scan_cursor == '+') surface_options = scan_options (request); if (surface && surface->resurfacer) if (!add_to_sequence (request, surface->resurfacer, NULL, surface_options)) return NULL; } } else if (alias->implied_surfaces && !request->make_header_flag) { struct recode_surface_list *list; for (list = alias->implied_surfaces; list; list = list->next) if (list->surface->resurfacer) if (!add_to_sequence (request, list->surface->resurfacer, NULL, NULL)) return NULL; } } return charset; } /*-------------------------------------------------------------------. | Into SEQUENCE, scan next request of the form CHARSET[..CHARSET]*. | `-------------------------------------------------------------------*/ static bool scan_request (RECODE_REQUEST request) { RECODE_OUTER outer = request->outer; RECODE_OPTION_LIST before_options; RECODE_SYMBOL charset = scan_charset_before (request, &before_options); if (!charset) return false; if (request->scan_cursor[0] == '.' && request->scan_cursor[1] == '.') while (request->scan_cursor[0] == '.' && request->scan_cursor[1] == '.') { request->scan_cursor += 2; charset = scan_charset_after (request, charset, before_options); if (!charset) return false; } else if (*request->scan_cursor == NUL) { /* No `..' at all implies a conversion to the default charset. */ charset = scan_charset_after (request, charset, before_options); if (!charset) return false; } else { recode_error (outer, _("Expecting `..' in request")); return false; } return true; } /*-------------------------------------------------------------------------. | Establish a SEQUENCE of recoding steps described by the STRING argument, | | which should have the form: REQUEST[,REQUEST]*. | `-------------------------------------------------------------------------*/ static bool decode_request (RECODE_REQUEST request, const char *string) { RECODE_OUTER outer = request->outer; request->scan_cursor = string; if (!ALLOC (request->scanned_string, strlen (string) + 1, char)) return false; request->sequence_length = 0; if (*request->scan_cursor) { if (!scan_request (request)) { free (request->scanned_string); return false; } while (*request->scan_cursor == ',') { request->scan_cursor++; if (!scan_request (request)) { free (request->scanned_string); return false; } } } free (request->scanned_string); return true; } /* Library interface. */ /* See the recode manual for a more detailed description of the library interface. */ /*--------------------------. | REQUEST level functions. | `--------------------------*/ /* Guarantee four NULs at the end of the output memory buffer for TASK, yet not counting them as data. (Four is the maximum, needed for UCS-4.) */ static bool guarantee_nul_terminator (RECODE_TASK task) { if (task->output.cursor + 4 >= task->output.limit) { RECODE_OUTER outer = task->request->outer; size_t size = task->output.cursor - task->output.buffer; if (REALLOC (task->output.buffer, size + 4, char)) { task->output.cursor = task->output.buffer + size; task->output.limit = task->output.buffer + size + 4; } else return false; } task->output.cursor[0] = NUL; task->output.cursor[1] = NUL; task->output.cursor[2] = NUL; task->output.cursor[3] = NUL; return true; } RECODE_REQUEST recode_new_request (RECODE_OUTER outer) { RECODE_REQUEST request; if (!ALLOC (request, 1, struct recode_request)) return NULL; request->outer = outer; request->diaeresis_char = '"'; request->work_string_allocated = 0; return request; } bool recode_delete_request (RECODE_REQUEST request) { for (RECODE_STEP step = request->sequence_array; step < request->sequence_array + request->sequence_length; step++) delete_step (step); free (request->sequence_array); free (request->work_string); free (request); return true; } bool recode_scan_request (RECODE_REQUEST request, const char *string) { return decode_request (request, string) && simplify_sequence (request); } char * recode_string (RECODE_CONST_REQUEST request, const char *input_string) { char *output_buffer = NULL; size_t output_length = 0; size_t output_allocated = 0; recode_buffer_to_buffer (request, input_string, strlen (input_string), &output_buffer, &output_length, &output_allocated); return output_buffer; } bool recode_string_to_buffer (RECODE_CONST_REQUEST request, const char *input_string, char **output_buffer_pointer, size_t *output_length_pointer, size_t *output_allocated_pointer) { return recode_buffer_to_buffer (request, input_string, strlen (input_string), output_buffer_pointer, output_length_pointer, output_allocated_pointer); } bool recode_string_to_file (RECODE_CONST_REQUEST request, const char *input_string, FILE *output_file) { return recode_buffer_to_file (request, input_string, strlen (input_string), output_file); } bool recode_buffer_to_buffer (RECODE_CONST_REQUEST request, const char *input_buffer, size_t input_length, char **output_buffer_pointer, size_t *output_length_pointer, size_t *output_allocated_pointer) { RECODE_TASK task = recode_new_task (request); bool success; if (!task) return false; task->input.buffer = input_buffer; task->input.cursor = input_buffer; task->input.limit = input_buffer + input_length; task->output.buffer = *output_buffer_pointer; task->output.cursor = *output_buffer_pointer; task->output.limit = *output_buffer_pointer + *output_allocated_pointer; success = recode_perform_task (task) && guarantee_nul_terminator (task); *output_buffer_pointer = task->output.buffer; *output_length_pointer = task->output.cursor - task->output.buffer; *output_allocated_pointer = task->output.limit - task->output.buffer; recode_delete_task (task); return success; } bool recode_buffer_to_file (RECODE_CONST_REQUEST request, const char *input_buffer, size_t input_length, FILE *output_file) { RECODE_TASK task = recode_new_task (request); bool success; if (!task) return false; task->input.buffer = input_buffer; task->input.cursor = input_buffer; task->input.limit = input_buffer + input_length; task->output.file = output_file; success = recode_perform_task (task); recode_delete_task (task); return success; } bool recode_file_to_buffer (RECODE_CONST_REQUEST request, FILE *input_file, char **output_buffer_pointer, size_t *output_length_pointer, size_t *output_allocated_pointer) { RECODE_TASK task = recode_new_task (request); bool success; if (!task) return false; task->input.file = input_file; task->output.buffer = *output_buffer_pointer; task->output.cursor = *output_buffer_pointer; task->output.limit = *output_buffer_pointer + *output_allocated_pointer; success = recode_perform_task (task) && guarantee_nul_terminator (task); *output_buffer_pointer = task->output.buffer; *output_length_pointer = task->output.cursor - task->output.buffer; *output_allocated_pointer = task->output.limit - task->output.buffer; recode_delete_task (task); return success; } bool recode_file_to_file (RECODE_CONST_REQUEST request, FILE *input_file, FILE *output_file) { RECODE_TASK task = recode_new_task (request); bool success; if (!task) return false; task->input.file = input_file; task->output.file = output_file; success = recode_perform_task (task); recode_delete_task (task); return success; } recode-3.7.15/src/common.h0000644000175000017500000000321314355773501010772 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "cleaner.h" #include #include #include #include #include #include #include #include "xalloc.h" #include "argmatch.h" #include "localcharset.h" #include "error.h" #include "gettext.h" #if ENABLE_NLS # define _(Text) gettext (Text) #else # define _(Text) Text #endif #define N_(Text) Text #ifndef FALLTHROUGH # if __GNUC__ < 7 # define FALLTHROUGH ((void) 0) # else # define FALLTHROUGH __attribute__ ((__fallthrough__)) # endif #endif /* Generate a mask of LENGTH one-bits, right justified in a word. */ #define BIT_MASK(Length) ((1U << (Length)) - 1) /* Indicate if CHARACTER holds into 7 bits. */ #define IS_ASCII(Character) \ (!((Character) & ~BIT_MASK (7))) #include "recodext.h" recode-3.7.15/src/cleaner.h0000644000175000017500000001111314374760602011110 /* Conversion of files between different charsets and surfaces. Copyright © 2008-2023 Free Software Foundation, Inc. Contributed by François Pinard , 2008. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the Recode Library; see the file `COPYING.LIB'. If not, see . */ /* Definitions to clean up the linker namespace. */ #ifndef CLEANER_H_ # define CLEANER_H_ # define delmodule_african librecode_delmodule_african # define delmodule_afrtran librecode_delmodule_afrtran # define delmodule_applemac librecode_delmodule_applemac # define delmodule_ascii_latin1 librecode_delmodule_ascii_latin1 # define delmodule_atarist librecode_delmodule_atarist # define delmodule_bangbang librecode_delmodule_bangbang # define delmodule_base64 librecode_delmodule_base64 # define delmodule_cdcnos librecode_delmodule_cdcnos # define delmodule_dump librecode_delmodule_dump # define delmodule_ebcdic librecode_delmodule_ebcdic # define delmodule_endline librecode_delmodule_endline # define delmodule_flat librecode_delmodule_flat # define delmodule_html librecode_delmodule_html # define delmodule_ibmpc librecode_delmodule_ibmpc # define delmodule_iconqnx librecode_delmodule_iconqnx # define delmodule_iconv librecode_delmodule_iconv # define delmodule_latex_latin1 librecode_delmodule_latex_latin1 # define delmodule_latin1_ascii librecode_delmodule_latin1_ascii # define delmodule_latin1_latex librecode_delmodule_latin1_latex # define delmodule_latin1_texte librecode_delmodule_latin1_texte # define delmodule_mule librecode_delmodule_mule # define delmodule_permutations librecode_delmodule_permutations # define delmodule_quoted_printable librecode_delmodule_quoted_printable # define delmodule_rfc1345 librecode_delmodule_rfc1345 # define delmodule_strips librecode_delmodule_strips # define delmodule_testdump librecode_delmodule_testdump # define delmodule_texinfo librecode_delmodule_texinfo # define delmodule_texte_latin1 librecode_delmodule_texte_latin1 # define delmodule_ucs librecode_delmodule_ucs # define delmodule_utf16 librecode_delmodule_utf16 # define delmodule_utf7 librecode_delmodule_utf7 # define delmodule_utf8 librecode_delmodule_utf8 # define delmodule_varia librecode_delmodule_varia # define delmodule_vietnamese librecode_delmodule_vietnamese # define module_african librecode_module_african # define module_afrtran librecode_module_afrtran # define module_applemac librecode_module_applemac # define module_ascii_latin1 librecode_module_ascii_latin1 # define module_atarist librecode_module_atarist # define module_bangbang librecode_module_bangbang # define module_base64 librecode_module_base64 # define module_cdcnos librecode_module_cdcnos # define module_dump librecode_module_dump # define module_ebcdic librecode_module_ebcdic # define module_endline librecode_module_endline # define module_flat librecode_module_flat # define module_html librecode_module_html # define module_ibmpc librecode_module_ibmpc # define module_iconqnx librecode_module_iconqnx # define module_iconv librecode_module_iconv # define module_latex_latin1 librecode_module_latex_latin1 # define module_latin1_ascii librecode_module_latin1_ascii # define module_latin1_latex librecode_module_latin1_latex # define module_latin1_texte librecode_module_latin1_texte # define module_mule librecode_module_mule # define module_permutations librecode_module_permutations # define module_quoted_printable librecode_module_quoted_printable # define module_rfc1345 librecode_module_rfc1345 # define module_strips librecode_module_strips # define module_testdump librecode_module_testdump # define module_texinfo librecode_module_texinfo # define module_texte_latin1 librecode_module_texte_latin1 # define module_ucs librecode_module_ucs # define module_utf16 librecode_module_utf16 # define module_utf7 librecode_module_utf7 # define module_utf8 librecode_module_utf8 # define module_varia librecode_module_varia # define module_vietnamese librecode_module_vietnamese # define texte_latin1_diaeresis librecode_texte_latin1_diaeresis #endif /* ! CLEANER_H_ */ recode-3.7.15/src/inisteps.h0000644000175000017500000000341513330773300011331 if (!module_african (outer)) return false; if (!module_afrtran (outer)) return false; if (!module_atarist (outer)) return false; if (!module_bangbang (outer)) return false; if (!module_cdcnos (outer)) return false; if (!module_ebcdic (outer)) return false; if (!module_ibmpc (outer)) return false; if (!module_iconqnx (outer)) return false; if (!module_latin1_ascii (outer)) return false; if (!module_latin1_iso5426 (outer)) return false; if (!module_latin1_ansel (outer)) return false; if (!module_java (outer)) return false; if (!module_mule (outer)) return false; if (!module_strips (outer)) return false; if (!module_testdump (outer)) return false; if (!module_ucs (outer)) return false; if (!module_utf16 (outer)) return false; if (!module_utf7 (outer)) return false; if (!module_utf8 (outer)) return false; if (!module_varia (outer)) return false; if (!module_vietnamese (outer)) return false; if (!module_flat (outer)) return false; if (!module_html (outer)) return false; if (!module_latin1_latex (outer)) return false; if (!module_latin1_bibtex (outer)) return false; if (!module_latin1_texte (outer)) return false; if (!module_rfc1345 (outer)) return false; if (!module_texinfo (outer)) return false; if (!module_base64 (outer)) return false; if (!module_dump (outer)) return false; if (!module_endline (outer)) return false; if (!module_permutations (outer)) return false; if (!module_quoted_printable (outer)) return false; if (!module_ascii_latin1 (outer)) return false; if (!module_iso5426_latin1 (outer)) return false; if (!module_ansel_latin1 (outer)) return false; if (!module_latex_latin1 (outer)) return false; if (!module_bibtex_latin1 (outer)) return false; if (!module_texte_latin1 (outer)) return false; recode-3.7.15/src/testdump.c0000644000175000017500000002277714374760602011361 /* Conversion of files between different charsets and surfaces. Copyright © 1996-2019 Free Software Foundation, Inc. Contributed by François Pinard , 1997. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" #include "hash.h" /*------------------------. | Produce test patterns. | `------------------------*/ /* One should _remove_ pseudo-surfaces to _produce_ test patterns. This strange-looking decision comes from the fact that test patterns are usually requested from the `before' position in the request. */ static bool test7_data (RECODE_SUBTASK subtask) { unsigned counter; int value; for (counter = 0; counter < 1 << 7; counter++) recode_put_byte (counter, subtask); /* Copy the rest verbatim. */ while (value = recode_get_byte (subtask), value != EOF) recode_put_byte (value, subtask); SUBTASK_RETURN (subtask); } static bool test8_data (RECODE_SUBTASK subtask) { unsigned counter; int value; for (counter = 0; counter < 1 << 8; counter++) recode_put_byte (counter, subtask); /* Copy the rest verbatim. */ while (value = recode_get_byte (subtask), value != EOF) recode_put_byte (value, subtask); SUBTASK_RETURN (subtask); } static bool test15_data (RECODE_SUBTASK subtask) { unsigned counter; unsigned value; recode_put_ucs2 (BYTE_ORDER_MARK, subtask); /* Before surrogate area. */ for (counter = 0; counter < 0xDC00; counter++) recode_put_ucs2 (counter, subtask); /* After surrogate area. */ for (counter = 0xE000; counter < 1 << 16; counter++) switch (counter) { case BYTE_ORDER_MARK: case REPLACEMENT_CHARACTER: case BYTE_ORDER_MARK_SWAPPED: case NOT_A_CHARACTER: break; default: recode_put_ucs2 (counter, subtask); } /* Copy the rest verbatim. */ while (value = recode_get_byte (subtask), value != (unsigned)EOF) recode_put_byte (value, subtask); SUBTASK_RETURN (subtask); } static bool test16_data (RECODE_SUBTASK subtask) { unsigned counter; unsigned value; for (counter = 0; counter < 1 << 16; counter++) recode_put_ucs2 (counter, subtask); /* Copy the rest verbatim. */ while (value = recode_get_byte (subtask), value != (unsigned)EOF) recode_put_byte (value, subtask); SUBTASK_RETURN (subtask); } /*-----------------------------------------------. | Produce frequency count for UCS-2 characters. | `-----------------------------------------------*/ struct ucs2_to_count { recode_ucs2 code; /* UCS-2 value */ unsigned count; /* corresponding count */ }; static size_t ucs2_to_count_hash (const void *void_data, size_t table_size) { const struct ucs2_to_count *data = (const struct ucs2_to_count *) void_data; return data->code % table_size; } static bool ucs2_to_count_compare (const void *void_first, const void *void_second) { const struct ucs2_to_count *first = (const struct ucs2_to_count *) void_first; const struct ucs2_to_count *second = (const struct ucs2_to_count *) void_second; return first->code == second->code; } static int compare_item (const void *void_first, const void *void_second) { struct ucs2_to_count *const *first = (struct ucs2_to_count *const *) void_first; struct ucs2_to_count *const *second = (struct ucs2_to_count *const *) void_second; return (*first)->code - (*second)->code; } static void put_string (const char *string, RECODE_SUBTASK subtask) { const char *cursor; for (cursor = string; *cursor; cursor++) recode_put_byte (*cursor, subtask); } static bool produce_count (RECODE_SUBTASK subtask) { RECODE_OUTER outer = subtask->task->request->outer; Hash_table *table; /* hash table for UCS-2 characters */ size_t size; /* number of different characters */ struct ucs2_to_count **array; /* array into hash table items */ table = hash_initialize (0, NULL, ucs2_to_count_hash, ucs2_to_count_compare, free); if (!table) return false; /* Count characters. */ { unsigned character; /* current character being counted */ while (recode_get_ucs2 (&character, subtask)) { struct ucs2_to_count lookup; struct ucs2_to_count *entry; lookup.code = character; entry = (struct ucs2_to_count *) hash_lookup (table, &lookup); if (entry) entry->count++; else { if (!ALLOC (entry, 1, struct ucs2_to_count)) { hash_free (table); return false; } entry->code = character; entry->count = 1; if (!hash_insert (table, entry)) { hash_free (table); free (entry); return false; } } } } /* Sort results. */ size = hash_get_n_entries (table); if (!ALLOC (array, size, struct ucs2_to_count *)) { hash_free (table); return false; } hash_get_entries (table, (void **) array, size); qsort (array, size, sizeof (struct ucs2_to_count *), compare_item); /* Produce the report. */ /* FIXME: Produce it column-wise. (See transp.c). */ { const unsigned non_count_width = 12; struct ucs2_to_count **cursor; char *buffer; unsigned count_width; unsigned maximum_count = 0; unsigned column = 0; unsigned delayed = 0; for (cursor = array; cursor < array + size; cursor++) if ((*cursor)->count > maximum_count) maximum_count = (*cursor)->count; if (asprintf (&buffer, "%u", maximum_count) == -1) return false; count_width = strlen (buffer); free (buffer); for (cursor = array; cursor < array + size; cursor++) { unsigned character = (*cursor)->code; const char *mnemonic = recode_ucs2_to_rfc1345 (character); if (column + count_width + non_count_width > 80) { recode_put_byte ('\n', subtask); delayed = 0; column = 0; } else while (delayed) { recode_put_byte (' ', subtask); delayed--; } if (asprintf (&buffer, "%*u %.4X", (int)count_width, (*cursor)->count, character) == -1) return false; put_string (buffer, subtask); free (buffer); if (mnemonic) { recode_put_byte (' ', subtask); put_string (mnemonic, subtask); delayed = 6 - 1 - strlen (mnemonic); } else delayed = 6; column += count_width + non_count_width; } if (column) recode_put_byte ('\n', subtask); } /* Clean-up. */ free (array); hash_free (table); SUBTASK_RETURN (subtask); } /*---------------------------. | Fully dump an UCS-2 file. | `---------------------------*/ static bool produce_full_dump (RECODE_SUBTASK subtask) { unsigned character; /* character to dump */ /* Dump all characters. */ if (recode_get_ucs2 (&character, subtask)) { bool french = recode_should_prefer_french(); const char *charname; /* charname for code */ char buffer[50]; put_string (_("UCS2 Mne Description\n\n"), subtask); while (1) { const char *mnemonic = recode_ucs2_to_rfc1345 (character); sprintf (buffer, "%.4X", character); put_string (buffer, subtask); if (mnemonic) { sprintf (buffer, " %-3s", mnemonic); put_string (buffer, subtask); } else put_string (" ", subtask); if (french) { charname = recode_ucs2_to_french_charname (character); if (!charname) charname = recode_ucs2_to_charname (character); } else { charname = recode_ucs2_to_charname (character); if (!charname) charname = recode_ucs2_to_french_charname (character); } if (charname) { put_string (" ", subtask); put_string (charname, subtask); } recode_put_byte ('\n', subtask); if (!recode_get_ucs2 (&character, subtask)) break; } } SUBTASK_RETURN (subtask); } /*-----------------------------------------. | Declare charsets, surfaces and aliases. | `-----------------------------------------*/ bool module_testdump (RECODE_OUTER outer) { /* Test surfaces. */ if (!recode_declare_single (outer, "test7", "data", outer->quality_variable_to_byte, NULL, test7_data)) return false; if (!recode_declare_single (outer, "test8", "data", outer->quality_variable_to_byte, NULL, test8_data)) return false; if (!recode_declare_single (outer, "test15", "data", outer->quality_variable_to_ucs2, NULL, test15_data)) return false; if (!recode_declare_single (outer, "test16", "data", outer->quality_variable_to_ucs2, NULL, test16_data)) return false; /* Analysis charsets. */ if (!recode_declare_single (outer, "ISO-10646-UCS-2", "count-characters", outer->quality_ucs2_to_variable, NULL, produce_count)) return false; if (!recode_declare_single (outer, "ISO-10646-UCS-2", "dump-with-names", outer->quality_ucs2_to_variable, NULL, produce_full_dump)) return false; return true; } void delmodule_testdump (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/mixed.c0000644000175000017500000002652714374760602010617 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2023 Free Software Foundation, Inc. François Pinard , 1990. 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 3, 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 along with this program; if not, see . */ #include "config.h" #include "common.h" /*================================\ | Mixed charset file processors. | \================================*/ struct mixed { /* File names saved from original task. */ const char *input_name; const char *output_name; /* Subtask, from input directly to either output or in memory buffer. */ struct recode_subtask subtask; /* In memory buffer. */ struct recode_read_write_text buffer; }; static bool open_mixed (struct mixed *mixed, RECODE_TASK task) { mixed->input_name = task->input.name; mixed->output_name = task->output.name; task->byte_order_mark = false; /* Open both files ourselves. */ if (!*(task->input.name)) task->input.file = stdin; else if (task->input.file = fopen (mixed->input_name, "rb"), !task->input.file) { recode_perror (NULL, "fopen (%s)", task->input.name); return false; } task->input.name = NULL; if (!*(task->output.name)) task->output.file = stdout; else if (task->output.file = fopen (mixed->output_name, "wb"), !task->output.file) { recode_perror (NULL, "fopen (%s)", task->output.name); fclose (task->input.file); return false; } task->output.name = NULL; /* Prepare for dynamic plumbing copy. */ memset (&mixed->subtask, 0, sizeof (struct recode_subtask)); mixed->subtask.task = task; mixed->subtask.input = task->input; mixed->subtask.output = task->output; memset (&mixed->buffer, 0, sizeof (struct recode_read_write_text)); return true; } static bool close_mixed (struct mixed *mixed) { /* Clean up. */ if (mixed->subtask.task->input.file && fclose (mixed->subtask.task->input.file) != 0) return false; if (mixed->subtask.task->output.file && fclose (mixed->subtask.task->output.file) != 0) return false; return true; } static void start_accumulation (struct mixed *mixed) { mixed->buffer.cursor = mixed->buffer.buffer; mixed->subtask.output = mixed->buffer; } static bool recode_accumulated (struct mixed *mixed) { RECODE_TASK task = mixed->subtask.task; struct recode_read_only_text saved_input = task->input; bool status; mixed->buffer = mixed->subtask.output; task->input.file = NULL; task->input.buffer = mixed->buffer.buffer; task->input.cursor = mixed->buffer.buffer; task->input.limit = mixed->buffer.cursor; status = recode_perform_task (task); task->input = saved_input; mixed->subtask.output = task->output; return status; } /*-----------------------------------------------------------------------. | Transform only strings or comments in an C source, expected in ASCII. | `-----------------------------------------------------------------------*/ bool recode_transform_c_source (RECODE_TASK task) { struct mixed mixed; int character; if (!open_mixed (&mixed, task)) recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); else { character = recode_get_byte (&mixed.subtask); while (character != EOF) switch (character) { case '\'': /* Skip character constant, while copying it untranslated. */ recode_put_byte ('\'', &mixed.subtask); character = recode_get_byte (&mixed.subtask); if (character == EOF) { recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); break; } if (character == '\\') { recode_put_byte ('\\', &mixed.subtask); character = recode_get_byte (&mixed.subtask); if (character == EOF) { recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); break; } recode_put_byte (character, &mixed.subtask); character = recode_get_byte (&mixed.subtask); } if (character == '\'') { recode_put_byte ('\'', &mixed.subtask); character = recode_get_byte (&mixed.subtask); } else recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); break; case '"': /* Copy the string, translated. */ recode_put_byte ('"', &mixed.subtask); character = recode_get_byte (&mixed.subtask); /* Read in string. */ start_accumulation (&mixed); while (true) { if (character == EOF) { recode_accumulated (&mixed); recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); break; } if (character == '"') break; if (character == '\\') { recode_put_byte ('\\', &mixed.subtask); character = recode_get_byte (&mixed.subtask); if (character == EOF) { recode_accumulated (&mixed); recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); break; } } recode_put_byte (character, &mixed.subtask); character = recode_get_byte (&mixed.subtask); } if (character == EOF) break; /* Translate string and dump it. */ if (!recode_accumulated (&mixed)) recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); recode_put_byte ('"', &mixed.subtask); character = recode_get_byte (&mixed.subtask); break; case '/': recode_put_byte ('/', &mixed.subtask); character = recode_get_byte (&mixed.subtask); if (character == EOF) break; if (character == '*') { /* Copy the comment, translated. */ recode_put_byte ('*', &mixed.subtask); character = recode_get_byte (&mixed.subtask); /* Read in comment. */ start_accumulation (&mixed); while (true) { if (character == EOF) { recode_accumulated (&mixed); recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); break; } if (character == '*') { character = recode_get_byte (&mixed.subtask); if (character == EOF) { recode_accumulated (&mixed); recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); recode_put_byte ('*', &mixed.subtask); break; } if (character == '/') break; recode_put_byte ('*', &mixed.subtask); } else { recode_put_byte (character, &mixed.subtask); character = recode_get_byte (&mixed.subtask); } } if (character == EOF) break; /* Translate comment and dump it. */ if (!recode_accumulated (&mixed)) recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); recode_put_byte ('*', &mixed.subtask); recode_put_byte ('/', &mixed.subtask); character = recode_get_byte (&mixed.subtask); } break; default: recode_put_byte (character, &mixed.subtask); character = recode_get_byte (&mixed.subtask); break; } } if (!close_mixed (&mixed)) recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); SUBTASK_RETURN (&mixed.subtask); } /*------------------------------------------------------------------------. | Transform only strings or comments in an PO source, expected in ASCII. | `------------------------------------------------------------------------*/ /* There is a limitation to -Spo: if Recode converts some `msgstr' in a way that might produce quotes (or backslashes), these should then be requoted. Doing this would then also require to fully unquote the original `msgstr' string. But it seems that such a need does not occur in most cases I can imagine as practical, as the ASCII subset is generally invariant under recoding. My guess is that we should wait for someone to report the bug with a real case, to believe it is worth adding the complexity. */ bool recode_transform_po_source (RECODE_TASK task) { struct mixed mixed; bool recode = false; bool msgstr = false; if (!open_mixed (&mixed, task)) recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); else { int character = recode_get_byte (&mixed.subtask); while (character != EOF) switch (character) { case '#': /* Copy a comment, recoding only those written by translators. */ recode_put_byte ('#', &mixed.subtask); character = recode_get_byte (&mixed.subtask); if (character == EOF) break; recode = character == ' ' || character == '\t'; if (recode) start_accumulation (&mixed); while (character != '\n' && character != EOF) { recode_put_byte (character, &mixed.subtask); character = recode_get_byte (&mixed.subtask); } if (recode && !recode_accumulated (&mixed)) recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); if (character == EOF) break; recode_put_byte ('\n', &mixed.subtask); character = recode_get_byte (&mixed.subtask); break; case 'm': /* Attempt to recognise `msgstr'. */ msgstr = false; recode_put_byte ('m', &mixed.subtask); character = recode_get_byte (&mixed.subtask); if (character != 's') break; recode_put_byte ('s', &mixed.subtask); character = recode_get_byte (&mixed.subtask); if (character != 'g') break; recode_put_byte ('g', &mixed.subtask); character = recode_get_byte (&mixed.subtask); if (character != 's') break; recode_put_byte ('s', &mixed.subtask); character = recode_get_byte (&mixed.subtask); if (character != 't') break; recode_put_byte ('t', &mixed.subtask); character = recode_get_byte (&mixed.subtask); if (character != 'r') break; recode_put_byte ('r', &mixed.subtask); character = recode_get_byte (&mixed.subtask); msgstr = true; break; case '"': /* Copy the string, translating only the `msgstr' ones. */ recode_put_byte ('"', &mixed.subtask); character = recode_get_byte (&mixed.subtask); recode = msgstr; if (recode) start_accumulation (&mixed); while (true) { if (character == EOF) { if (recode) { recode_accumulated (&mixed); recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); } break; } if (character == '"') break; if (character == '\\') { recode_put_byte ('\\', &mixed.subtask); character = recode_get_byte (&mixed.subtask); if (character == EOF) { if (recode) { recode_accumulated (&mixed); recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); } break; } } recode_put_byte (character, &mixed.subtask); character = recode_get_byte (&mixed.subtask); } if (character == EOF) break; if (recode && !recode_accumulated (&mixed)) recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); recode_put_byte ('"', &mixed.subtask); character = recode_get_byte (&mixed.subtask); break; default: recode_put_byte (character, &mixed.subtask); character = recode_get_byte (&mixed.subtask); break; } } if (!close_mixed (&mixed)) recode_if_nogo (RECODE_SYSTEM_ERROR, &mixed.subtask); SUBTASK_RETURN (&mixed.subtask); } recode-3.7.15/src/lat1ansel.h0000644000175000017500000000263714374764133011401 {216, "¢"}, /* Ø */ {208, "£"}, /* Ð */ {222, "¤"}, /* Þ */ {198, "¥"}, /* Æ */ {177, "«"}, /* ± */ {248, "²"}, /* ø */ {240, "³"}, /* ð */ {254, "´"}, /* þ */ {230, "µ"}, /* æ */ {163, "¹"}, /* £ */ {169, "Ã"}, /* © */ {191, "à"}, /* ¿ */ {192, "áA"}, /* À */ {200, "áE"}, /* È */ {204, "áI"}, /* Ì */ {210, "áO"}, /* Ò */ {217, "áU"}, /* Ù */ {224, "áa"}, /* à */ {232, "áe"}, /* è */ {236, "ái"}, /* ì */ {242, "áo"}, /* ò */ {249, "áu"}, /* ù */ {193, "âA"}, /* Á */ {201, "âE"}, /* É */ {205, "âI"}, /* Í */ {211, "âO"}, /* Ó */ {218, "âU"}, /* Ú */ {221, "âY"}, /* Ý */ {225, "âa"}, /* á */ {233, "âe"}, /* é */ {237, "âi"}, /* í */ {243, "âo"}, /* ó */ {250, "âu"}, /* ú */ {253, "ây"}, /* ý */ {194, "ãA"}, /*  */ {202, "ãE"}, /* Ê */ {206, "ãI"}, /* Î */ {212, "ãO"}, /* Ô */ {219, "ãU"}, /* Û */ {226, "ãa"}, /* â */ {234, "ãe"}, /* ê */ {238, "ãi"}, /* î */ {244, "ão"}, /* ô */ {251, "ãu"}, /* û */ {195, "äA"}, /* à */ {213, "äO"}, /* Õ */ {209, "äN"}, /* Ñ */ {227, "äa"}, /* ã */ {245, "äo"}, /* õ */ {241, "än"}, /* ñ */ {175, "å"}, /* ¯ */ {196, "èA"}, /* Ä */ {203, "èE"}, /* Ë */ {207, "èI"}, /* Ï */ {214, "èO"}, /* Ö */ {220, "èU"}, /* Ü */ {228, "èa"}, /* ä */ {235, "èe"}, /* ë */ {239, "èi"}, /* ï */ {246, "èo"}, /* ö */ {252, "èu"}, /* ü */ {255, "èy"}, /* ÿ */ {197, "êA"}, /* Å */ {229, "êa"}, /* å */ {199, "ðC"}, /* Ç */ {231, "ðc"}, /* ç */ recode-3.7.15/src/Makefile.in0000644000175000017500000027204614766020640011405 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Makefile for Recode sources. # Copyright © 1991-2023 Free Software Foundation, Inc. # François Pinard , 1988. # 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 3, 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, see . VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = recode$(EXEEXT) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ $(top_srcdir)/m4/__inline.m4 \ $(top_srcdir)/m4/absolute-header.m4 $(top_srcdir)/m4/alloca.m4 \ $(top_srcdir)/m4/assert_h.m4 \ $(top_srcdir)/m4/builtin-expect.m4 $(top_srcdir)/m4/c-bool.m4 \ $(top_srcdir)/m4/calloc.m4 $(top_srcdir)/m4/canonicalize.m4 \ $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/close.m4 \ $(top_srcdir)/m4/codeset.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/error_h.m4 \ $(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/exponentf.m4 \ $(top_srcdir)/m4/exponentl.m4 $(top_srcdir)/m4/extensions.m4 \ $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \ $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \ $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fpieee.m4 \ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/frexp.m4 \ $(top_srcdir)/m4/frexpl.m4 $(top_srcdir)/m4/fseterr.m4 \ $(top_srcdir)/m4/fstat.m4 $(top_srcdir)/m4/getdtablesize.m4 \ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getprogname.m4 \ $(top_srcdir)/m4/getrandom.m4 $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gnulib-common.m4 \ $(top_srcdir)/m4/gnulib-comp.m4 \ $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/include_next.m4 \ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ $(top_srcdir)/m4/isatty.m4 $(top_srcdir)/m4/isnand.m4 \ $(top_srcdir)/m4/isnanf.m4 $(top_srcdir)/m4/isnanl.m4 \ $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/ldexpl.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/localcharset.m4 \ $(top_srcdir)/m4/locale-fr.m4 $(top_srcdir)/m4/locale-ja.m4 \ $(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/locale_h.m4 \ $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \ $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \ $(top_srcdir)/m4/math_h.m4 $(top_srcdir)/m4/mbrtowc.m4 \ $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \ $(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mkdir.m4 \ $(top_srcdir)/m4/mkstemps.m4 $(top_srcdir)/m4/mmap-anon.m4 \ $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \ $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \ $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open-cloexec.m4 \ $(top_srcdir)/m4/open-slash.m4 $(top_srcdir)/m4/open.m4 \ $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/pipe.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-frexp.m4 \ $(top_srcdir)/m4/printf-frexpl.m4 $(top_srcdir)/m4/printf.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quote.m4 \ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/raise.m4 \ $(top_srcdir)/m4/rawmemchr.m4 $(top_srcdir)/m4/readlink.m4 \ $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/reallocarray.m4 \ $(top_srcdir)/m4/setlocale_null.m4 \ $(top_srcdir)/m4/sigaction.m4 $(top_srcdir)/m4/signal_h.m4 \ $(top_srcdir)/m4/signalblocking.m4 $(top_srcdir)/m4/signbit.m4 \ $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/ssize_t.m4 \ $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \ $(top_srcdir)/m4/stdalign.m4 $(top_srcdir)/m4/stddef_h.m4 \ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \ $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \ $(top_srcdir)/m4/strerror.m4 $(top_srcdir)/m4/string_h.m4 \ $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \ $(top_srcdir)/m4/sys_random_h.m4 \ $(top_srcdir)/m4/sys_socket_h.m4 \ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_types_h.m4 \ $(top_srcdir)/m4/sys_wait_h.m4 $(top_srcdir)/m4/tempname.m4 \ $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/utime.m4 \ $(top_srcdir)/m4/utime_h.m4 $(top_srcdir)/m4/vasnprintf.m4 \ $(top_srcdir)/m4/vasprintf.m4 \ $(top_srcdir)/m4/vfprintf-posix.m4 \ $(top_srcdir)/m4/visibility.m4 \ $(top_srcdir)/m4/vprintf-posix.m4 \ $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \ $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \ $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wint_t.m4 \ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xsize.m4 \ $(top_srcdir)/m4/zzgnulib.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ $(noinst_HEADERS) $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = recode.x CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libdir)" \ "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(includedir)" PROGRAMS = $(bin_PROGRAMS) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) libmerged_la_LIBADD = am_libmerged_la_OBJECTS = libmerged_la-merged.lo libmerged_la_OBJECTS = $(am_libmerged_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = librecode_la_DEPENDENCIES = ../lib/libgnu.la libmerged.la am__objects_1 = african.lo afrtran.lo atarist.lo bangbang.lo cdcnos.lo \ ebcdic.lo ibmpc.lo iconqnx.lo lat1asci.lo lat1iso5426.lo \ lat1ansel.lo java.lo mule.lo strip-data.lo testdump.lo ucs.lo \ utf16.lo utf7.lo utf8.lo varia.lo vn.lo am__objects_2 = flat.lo html.lo lat1ltex.lo lat1btex.lo lat1txte.lo \ rfc1345.lo texinfo.lo am__objects_3 = base64.lo dump.lo endline.lo permut.lo quoted.lo am__objects_4 = $(am__objects_1) $(am__objects_2) $(am__objects_3) am__objects_5 = am__objects_6 = $(am__objects_5) am__objects_7 = $(am__objects_6) am_librecode_la_OBJECTS = charname.lo combine.lo fr-charname.lo \ iconv.lo names.lo outer.lo recode.lo request.lo strip-pool.lo \ task.lo $(am__objects_4) $(am__objects_5) $(am__objects_7) \ $(am__objects_6) librecode_la_OBJECTS = $(am_librecode_la_OBJECTS) librecode_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(librecode_la_LDFLAGS) $(LDFLAGS) -o $@ am_recode_OBJECTS = main.$(OBJEXT) mixed.$(OBJEXT) recode_OBJECTS = $(am_recode_OBJECTS) recode_DEPENDENCIES = librecode.la AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/african.Plo ./$(DEPDIR)/afrtran.Plo \ ./$(DEPDIR)/atarist.Plo ./$(DEPDIR)/bangbang.Plo \ ./$(DEPDIR)/base64.Plo ./$(DEPDIR)/cdcnos.Plo \ ./$(DEPDIR)/charname.Plo ./$(DEPDIR)/combine.Plo \ ./$(DEPDIR)/dump.Plo ./$(DEPDIR)/ebcdic.Plo \ ./$(DEPDIR)/endline.Plo ./$(DEPDIR)/flat.Plo \ ./$(DEPDIR)/fr-charname.Plo ./$(DEPDIR)/html.Plo \ ./$(DEPDIR)/ibmpc.Plo ./$(DEPDIR)/iconqnx.Plo \ ./$(DEPDIR)/iconv.Plo ./$(DEPDIR)/java.Plo \ ./$(DEPDIR)/lat1ansel.Plo ./$(DEPDIR)/lat1asci.Plo \ ./$(DEPDIR)/lat1btex.Plo ./$(DEPDIR)/lat1iso5426.Plo \ ./$(DEPDIR)/lat1ltex.Plo ./$(DEPDIR)/lat1txte.Plo \ ./$(DEPDIR)/libmerged_la-merged.Plo ./$(DEPDIR)/main.Po \ ./$(DEPDIR)/mixed.Po ./$(DEPDIR)/mule.Plo \ ./$(DEPDIR)/names.Plo ./$(DEPDIR)/outer.Plo \ ./$(DEPDIR)/permut.Plo ./$(DEPDIR)/quoted.Plo \ ./$(DEPDIR)/recode.Plo ./$(DEPDIR)/request.Plo \ ./$(DEPDIR)/rfc1345.Plo ./$(DEPDIR)/strip-data.Plo \ ./$(DEPDIR)/strip-pool.Plo ./$(DEPDIR)/task.Plo \ ./$(DEPDIR)/testdump.Plo ./$(DEPDIR)/texinfo.Plo \ ./$(DEPDIR)/ucs.Plo ./$(DEPDIR)/utf16.Plo ./$(DEPDIR)/utf7.Plo \ ./$(DEPDIR)/utf8.Plo ./$(DEPDIR)/varia.Plo ./$(DEPDIR)/vn.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libmerged_la_SOURCES) $(librecode_la_SOURCES) \ $(recode_SOURCES) DIST_SOURCES = $(libmerged_la_SOURCES) $(librecode_la_SOURCES) \ $(recode_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac man1dir = $(mandir)/man1 NROFF = nroff MANS = $(dist_man_MANS) HEADERS = $(include_HEADERS) $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \ $(srcdir)/recode.x.in $(top_srcdir)/build-aux/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ ALLOCA_H = @ALLOCA_H@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ ASSERT_H = @ASSERT_H@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CLOCK_TIME_LIB = @CLOCK_TIME_LIB@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CROSS_COMPILING = @CROSS_COMPILING@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ CYTHON = @CYTHON@ DEFS = -DLIBDIR=\"$(libdir)\" @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ ERROR_H = @ERROR_H@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ FLOAT_H = @FLOAT_H@ GETOPT_CDEFS_H = @GETOPT_CDEFS_H@ GETOPT_H = @GETOPT_H@ GETRANDOM_LIB = @GETRANDOM_LIB@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@ GL_CFLAG_GNULIB_WARNINGS = @GL_CFLAG_GNULIB_WARNINGS@ GL_GNULIB_ACCESS = @GL_GNULIB_ACCESS@ GL_GNULIB_ACOSF = @GL_GNULIB_ACOSF@ GL_GNULIB_ACOSL = @GL_GNULIB_ACOSL@ GL_GNULIB_ALIGNED_ALLOC = @GL_GNULIB_ALIGNED_ALLOC@ GL_GNULIB_ASINF = @GL_GNULIB_ASINF@ GL_GNULIB_ASINL = @GL_GNULIB_ASINL@ GL_GNULIB_ATAN2F = @GL_GNULIB_ATAN2F@ GL_GNULIB_ATANF = @GL_GNULIB_ATANF@ GL_GNULIB_ATANL = @GL_GNULIB_ATANL@ GL_GNULIB_ATOLL = @GL_GNULIB_ATOLL@ GL_GNULIB_BTOWC = @GL_GNULIB_BTOWC@ GL_GNULIB_CALLOC_GNU = @GL_GNULIB_CALLOC_GNU@ GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@ GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@ GL_GNULIB_CBRT = @GL_GNULIB_CBRT@ GL_GNULIB_CBRTF = @GL_GNULIB_CBRTF@ GL_GNULIB_CBRTL = @GL_GNULIB_CBRTL@ GL_GNULIB_CEIL = @GL_GNULIB_CEIL@ GL_GNULIB_CEILF = @GL_GNULIB_CEILF@ GL_GNULIB_CEILL = @GL_GNULIB_CEILL@ GL_GNULIB_CHDIR = @GL_GNULIB_CHDIR@ GL_GNULIB_CHMOD = @GL_GNULIB_CHMOD@ GL_GNULIB_CHOWN = @GL_GNULIB_CHOWN@ GL_GNULIB_CLOSE = @GL_GNULIB_CLOSE@ GL_GNULIB_COPYSIGN = @GL_GNULIB_COPYSIGN@ GL_GNULIB_COPYSIGNF = @GL_GNULIB_COPYSIGNF@ GL_GNULIB_COPYSIGNL = @GL_GNULIB_COPYSIGNL@ GL_GNULIB_COPY_FILE_RANGE = @GL_GNULIB_COPY_FILE_RANGE@ GL_GNULIB_COSF = @GL_GNULIB_COSF@ GL_GNULIB_COSHF = @GL_GNULIB_COSHF@ GL_GNULIB_COSL = @GL_GNULIB_COSL@ GL_GNULIB_CREAT = @GL_GNULIB_CREAT@ GL_GNULIB_CTIME = @GL_GNULIB_CTIME@ GL_GNULIB_DPRINTF = @GL_GNULIB_DPRINTF@ GL_GNULIB_DUP = @GL_GNULIB_DUP@ GL_GNULIB_DUP2 = @GL_GNULIB_DUP2@ GL_GNULIB_DUP3 = @GL_GNULIB_DUP3@ GL_GNULIB_DUPLOCALE = @GL_GNULIB_DUPLOCALE@ GL_GNULIB_ENVIRON = @GL_GNULIB_ENVIRON@ GL_GNULIB_EUIDACCESS = @GL_GNULIB_EUIDACCESS@ GL_GNULIB_EXECL = @GL_GNULIB_EXECL@ GL_GNULIB_EXECLE = @GL_GNULIB_EXECLE@ GL_GNULIB_EXECLP = @GL_GNULIB_EXECLP@ GL_GNULIB_EXECV = @GL_GNULIB_EXECV@ GL_GNULIB_EXECVE = @GL_GNULIB_EXECVE@ GL_GNULIB_EXECVP = @GL_GNULIB_EXECVP@ GL_GNULIB_EXECVPE = @GL_GNULIB_EXECVPE@ GL_GNULIB_EXP2 = @GL_GNULIB_EXP2@ GL_GNULIB_EXP2F = @GL_GNULIB_EXP2F@ GL_GNULIB_EXP2L = @GL_GNULIB_EXP2L@ GL_GNULIB_EXPF = @GL_GNULIB_EXPF@ GL_GNULIB_EXPL = @GL_GNULIB_EXPL@ GL_GNULIB_EXPLICIT_BZERO = @GL_GNULIB_EXPLICIT_BZERO@ GL_GNULIB_EXPM1 = @GL_GNULIB_EXPM1@ GL_GNULIB_EXPM1F = @GL_GNULIB_EXPM1F@ GL_GNULIB_EXPM1L = @GL_GNULIB_EXPM1L@ GL_GNULIB_FABSF = @GL_GNULIB_FABSF@ GL_GNULIB_FABSL = @GL_GNULIB_FABSL@ GL_GNULIB_FACCESSAT = @GL_GNULIB_FACCESSAT@ GL_GNULIB_FCHDIR = @GL_GNULIB_FCHDIR@ GL_GNULIB_FCHMODAT = @GL_GNULIB_FCHMODAT@ GL_GNULIB_FCHOWNAT = @GL_GNULIB_FCHOWNAT@ GL_GNULIB_FCLOSE = @GL_GNULIB_FCLOSE@ GL_GNULIB_FCNTL = @GL_GNULIB_FCNTL@ GL_GNULIB_FDATASYNC = @GL_GNULIB_FDATASYNC@ GL_GNULIB_FDOPEN = @GL_GNULIB_FDOPEN@ GL_GNULIB_FFLUSH = @GL_GNULIB_FFLUSH@ GL_GNULIB_FFSL = @GL_GNULIB_FFSL@ GL_GNULIB_FFSLL = @GL_GNULIB_FFSLL@ GL_GNULIB_FGETC = @GL_GNULIB_FGETC@ GL_GNULIB_FGETS = @GL_GNULIB_FGETS@ GL_GNULIB_FLOOR = @GL_GNULIB_FLOOR@ GL_GNULIB_FLOORF = @GL_GNULIB_FLOORF@ GL_GNULIB_FLOORL = @GL_GNULIB_FLOORL@ GL_GNULIB_FMA = @GL_GNULIB_FMA@ GL_GNULIB_FMAF = @GL_GNULIB_FMAF@ GL_GNULIB_FMAL = @GL_GNULIB_FMAL@ GL_GNULIB_FMOD = @GL_GNULIB_FMOD@ GL_GNULIB_FMODF = @GL_GNULIB_FMODF@ GL_GNULIB_FMODL = @GL_GNULIB_FMODL@ GL_GNULIB_FOPEN = @GL_GNULIB_FOPEN@ GL_GNULIB_FOPEN_GNU = @GL_GNULIB_FOPEN_GNU@ GL_GNULIB_FPRINTF = @GL_GNULIB_FPRINTF@ GL_GNULIB_FPRINTF_POSIX = @GL_GNULIB_FPRINTF_POSIX@ GL_GNULIB_FPURGE = @GL_GNULIB_FPURGE@ GL_GNULIB_FPUTC = @GL_GNULIB_FPUTC@ GL_GNULIB_FPUTS = @GL_GNULIB_FPUTS@ GL_GNULIB_FREAD = @GL_GNULIB_FREAD@ GL_GNULIB_FREE_POSIX = @GL_GNULIB_FREE_POSIX@ GL_GNULIB_FREOPEN = @GL_GNULIB_FREOPEN@ GL_GNULIB_FREXP = @GL_GNULIB_FREXP@ GL_GNULIB_FREXPF = @GL_GNULIB_FREXPF@ GL_GNULIB_FREXPL = @GL_GNULIB_FREXPL@ GL_GNULIB_FSCANF = @GL_GNULIB_FSCANF@ GL_GNULIB_FSEEK = @GL_GNULIB_FSEEK@ GL_GNULIB_FSEEKO = @GL_GNULIB_FSEEKO@ GL_GNULIB_FSTAT = @GL_GNULIB_FSTAT@ GL_GNULIB_FSTATAT = @GL_GNULIB_FSTATAT@ GL_GNULIB_FSYNC = @GL_GNULIB_FSYNC@ GL_GNULIB_FTELL = @GL_GNULIB_FTELL@ GL_GNULIB_FTELLO = @GL_GNULIB_FTELLO@ GL_GNULIB_FTRUNCATE = @GL_GNULIB_FTRUNCATE@ GL_GNULIB_FUTIMENS = @GL_GNULIB_FUTIMENS@ GL_GNULIB_FWRITE = @GL_GNULIB_FWRITE@ GL_GNULIB_GETC = @GL_GNULIB_GETC@ GL_GNULIB_GETCHAR = @GL_GNULIB_GETCHAR@ GL_GNULIB_GETCWD = @GL_GNULIB_GETCWD@ GL_GNULIB_GETDELIM = @GL_GNULIB_GETDELIM@ GL_GNULIB_GETDOMAINNAME = @GL_GNULIB_GETDOMAINNAME@ GL_GNULIB_GETDTABLESIZE = @GL_GNULIB_GETDTABLESIZE@ GL_GNULIB_GETENTROPY = @GL_GNULIB_GETENTROPY@ GL_GNULIB_GETGROUPS = @GL_GNULIB_GETGROUPS@ GL_GNULIB_GETHOSTNAME = @GL_GNULIB_GETHOSTNAME@ GL_GNULIB_GETLINE = @GL_GNULIB_GETLINE@ GL_GNULIB_GETLOADAVG = @GL_GNULIB_GETLOADAVG@ GL_GNULIB_GETLOGIN = @GL_GNULIB_GETLOGIN@ GL_GNULIB_GETLOGIN_R = @GL_GNULIB_GETLOGIN_R@ GL_GNULIB_GETOPT_POSIX = @GL_GNULIB_GETOPT_POSIX@ GL_GNULIB_GETPAGESIZE = @GL_GNULIB_GETPAGESIZE@ GL_GNULIB_GETPASS = @GL_GNULIB_GETPASS@ GL_GNULIB_GETPASS_GNU = @GL_GNULIB_GETPASS_GNU@ GL_GNULIB_GETPROGNAME = @GL_GNULIB_GETPROGNAME@ GL_GNULIB_GETRANDOM = @GL_GNULIB_GETRANDOM@ GL_GNULIB_GETSUBOPT = @GL_GNULIB_GETSUBOPT@ GL_GNULIB_GETUMASK = @GL_GNULIB_GETUMASK@ GL_GNULIB_GETUSERSHELL = @GL_GNULIB_GETUSERSHELL@ GL_GNULIB_GRANTPT = @GL_GNULIB_GRANTPT@ GL_GNULIB_GROUP_MEMBER = @GL_GNULIB_GROUP_MEMBER@ GL_GNULIB_HYPOT = @GL_GNULIB_HYPOT@ GL_GNULIB_HYPOTF = @GL_GNULIB_HYPOTF@ GL_GNULIB_HYPOTL = @GL_GNULIB_HYPOTL@ GL_GNULIB_ILOGB = @GL_GNULIB_ILOGB@ GL_GNULIB_ILOGBF = @GL_GNULIB_ILOGBF@ GL_GNULIB_ILOGBL = @GL_GNULIB_ILOGBL@ GL_GNULIB_IMAXABS = @GL_GNULIB_IMAXABS@ GL_GNULIB_IMAXDIV = @GL_GNULIB_IMAXDIV@ GL_GNULIB_ISATTY = @GL_GNULIB_ISATTY@ GL_GNULIB_ISFINITE = @GL_GNULIB_ISFINITE@ GL_GNULIB_ISINF = @GL_GNULIB_ISINF@ GL_GNULIB_ISNAN = @GL_GNULIB_ISNAN@ GL_GNULIB_ISNAND = @GL_GNULIB_ISNAND@ GL_GNULIB_ISNANF = @GL_GNULIB_ISNANF@ GL_GNULIB_ISNANL = @GL_GNULIB_ISNANL@ GL_GNULIB_ISWBLANK = @GL_GNULIB_ISWBLANK@ GL_GNULIB_ISWCTYPE = @GL_GNULIB_ISWCTYPE@ GL_GNULIB_ISWDIGIT = @GL_GNULIB_ISWDIGIT@ GL_GNULIB_ISWXDIGIT = @GL_GNULIB_ISWXDIGIT@ GL_GNULIB_LCHMOD = @GL_GNULIB_LCHMOD@ GL_GNULIB_LCHOWN = @GL_GNULIB_LCHOWN@ GL_GNULIB_LDEXPF = @GL_GNULIB_LDEXPF@ GL_GNULIB_LDEXPL = @GL_GNULIB_LDEXPL@ GL_GNULIB_LINK = @GL_GNULIB_LINK@ GL_GNULIB_LINKAT = @GL_GNULIB_LINKAT@ GL_GNULIB_LOCALECONV = @GL_GNULIB_LOCALECONV@ GL_GNULIB_LOCALENAME = @GL_GNULIB_LOCALENAME@ GL_GNULIB_LOCALTIME = @GL_GNULIB_LOCALTIME@ GL_GNULIB_LOG = @GL_GNULIB_LOG@ GL_GNULIB_LOG10 = @GL_GNULIB_LOG10@ GL_GNULIB_LOG10F = @GL_GNULIB_LOG10F@ GL_GNULIB_LOG10L = @GL_GNULIB_LOG10L@ GL_GNULIB_LOG1P = @GL_GNULIB_LOG1P@ GL_GNULIB_LOG1PF = @GL_GNULIB_LOG1PF@ GL_GNULIB_LOG1PL = @GL_GNULIB_LOG1PL@ GL_GNULIB_LOG2 = @GL_GNULIB_LOG2@ GL_GNULIB_LOG2F = @GL_GNULIB_LOG2F@ GL_GNULIB_LOG2L = @GL_GNULIB_LOG2L@ GL_GNULIB_LOGB = @GL_GNULIB_LOGB@ GL_GNULIB_LOGBF = @GL_GNULIB_LOGBF@ GL_GNULIB_LOGBL = @GL_GNULIB_LOGBL@ GL_GNULIB_LOGF = @GL_GNULIB_LOGF@ GL_GNULIB_LOGL = @GL_GNULIB_LOGL@ GL_GNULIB_LSEEK = @GL_GNULIB_LSEEK@ GL_GNULIB_LSTAT = @GL_GNULIB_LSTAT@ GL_GNULIB_MALLOC_GNU = @GL_GNULIB_MALLOC_GNU@ GL_GNULIB_MALLOC_POSIX = @GL_GNULIB_MALLOC_POSIX@ GL_GNULIB_MBRLEN = @GL_GNULIB_MBRLEN@ GL_GNULIB_MBRTOWC = @GL_GNULIB_MBRTOWC@ GL_GNULIB_MBSCASECMP = @GL_GNULIB_MBSCASECMP@ GL_GNULIB_MBSCASESTR = @GL_GNULIB_MBSCASESTR@ GL_GNULIB_MBSCHR = @GL_GNULIB_MBSCHR@ GL_GNULIB_MBSCSPN = @GL_GNULIB_MBSCSPN@ GL_GNULIB_MBSINIT = @GL_GNULIB_MBSINIT@ GL_GNULIB_MBSLEN = @GL_GNULIB_MBSLEN@ GL_GNULIB_MBSNCASECMP = @GL_GNULIB_MBSNCASECMP@ GL_GNULIB_MBSNLEN = @GL_GNULIB_MBSNLEN@ GL_GNULIB_MBSNRTOWCS = @GL_GNULIB_MBSNRTOWCS@ GL_GNULIB_MBSPBRK = @GL_GNULIB_MBSPBRK@ GL_GNULIB_MBSPCASECMP = @GL_GNULIB_MBSPCASECMP@ GL_GNULIB_MBSRCHR = @GL_GNULIB_MBSRCHR@ GL_GNULIB_MBSRTOWCS = @GL_GNULIB_MBSRTOWCS@ GL_GNULIB_MBSSEP = @GL_GNULIB_MBSSEP@ GL_GNULIB_MBSSPN = @GL_GNULIB_MBSSPN@ GL_GNULIB_MBSSTR = @GL_GNULIB_MBSSTR@ GL_GNULIB_MBSTOK_R = @GL_GNULIB_MBSTOK_R@ GL_GNULIB_MBTOWC = @GL_GNULIB_MBTOWC@ GL_GNULIB_MDA_ACCESS = @GL_GNULIB_MDA_ACCESS@ GL_GNULIB_MDA_CHDIR = @GL_GNULIB_MDA_CHDIR@ GL_GNULIB_MDA_CHMOD = @GL_GNULIB_MDA_CHMOD@ GL_GNULIB_MDA_CLOSE = @GL_GNULIB_MDA_CLOSE@ GL_GNULIB_MDA_CREAT = @GL_GNULIB_MDA_CREAT@ GL_GNULIB_MDA_DUP = @GL_GNULIB_MDA_DUP@ GL_GNULIB_MDA_DUP2 = @GL_GNULIB_MDA_DUP2@ GL_GNULIB_MDA_ECVT = @GL_GNULIB_MDA_ECVT@ GL_GNULIB_MDA_EXECL = @GL_GNULIB_MDA_EXECL@ GL_GNULIB_MDA_EXECLE = @GL_GNULIB_MDA_EXECLE@ GL_GNULIB_MDA_EXECLP = @GL_GNULIB_MDA_EXECLP@ GL_GNULIB_MDA_EXECV = @GL_GNULIB_MDA_EXECV@ GL_GNULIB_MDA_EXECVE = @GL_GNULIB_MDA_EXECVE@ GL_GNULIB_MDA_EXECVP = @GL_GNULIB_MDA_EXECVP@ GL_GNULIB_MDA_EXECVPE = @GL_GNULIB_MDA_EXECVPE@ GL_GNULIB_MDA_FCLOSEALL = @GL_GNULIB_MDA_FCLOSEALL@ GL_GNULIB_MDA_FCVT = @GL_GNULIB_MDA_FCVT@ GL_GNULIB_MDA_FDOPEN = @GL_GNULIB_MDA_FDOPEN@ GL_GNULIB_MDA_FILENO = @GL_GNULIB_MDA_FILENO@ GL_GNULIB_MDA_GCVT = @GL_GNULIB_MDA_GCVT@ GL_GNULIB_MDA_GETCWD = @GL_GNULIB_MDA_GETCWD@ GL_GNULIB_MDA_GETPID = @GL_GNULIB_MDA_GETPID@ GL_GNULIB_MDA_GETW = @GL_GNULIB_MDA_GETW@ GL_GNULIB_MDA_ISATTY = @GL_GNULIB_MDA_ISATTY@ GL_GNULIB_MDA_J0 = @GL_GNULIB_MDA_J0@ GL_GNULIB_MDA_J1 = @GL_GNULIB_MDA_J1@ GL_GNULIB_MDA_JN = @GL_GNULIB_MDA_JN@ GL_GNULIB_MDA_LSEEK = @GL_GNULIB_MDA_LSEEK@ GL_GNULIB_MDA_MEMCCPY = @GL_GNULIB_MDA_MEMCCPY@ GL_GNULIB_MDA_MKDIR = @GL_GNULIB_MDA_MKDIR@ GL_GNULIB_MDA_MKTEMP = @GL_GNULIB_MDA_MKTEMP@ GL_GNULIB_MDA_OPEN = @GL_GNULIB_MDA_OPEN@ GL_GNULIB_MDA_PUTENV = @GL_GNULIB_MDA_PUTENV@ GL_GNULIB_MDA_PUTW = @GL_GNULIB_MDA_PUTW@ GL_GNULIB_MDA_READ = @GL_GNULIB_MDA_READ@ GL_GNULIB_MDA_RMDIR = @GL_GNULIB_MDA_RMDIR@ GL_GNULIB_MDA_STRDUP = @GL_GNULIB_MDA_STRDUP@ GL_GNULIB_MDA_SWAB = @GL_GNULIB_MDA_SWAB@ GL_GNULIB_MDA_TEMPNAM = @GL_GNULIB_MDA_TEMPNAM@ GL_GNULIB_MDA_TZSET = @GL_GNULIB_MDA_TZSET@ GL_GNULIB_MDA_UMASK = @GL_GNULIB_MDA_UMASK@ GL_GNULIB_MDA_UNLINK = @GL_GNULIB_MDA_UNLINK@ GL_GNULIB_MDA_UTIME = @GL_GNULIB_MDA_UTIME@ GL_GNULIB_MDA_WCSDUP = @GL_GNULIB_MDA_WCSDUP@ GL_GNULIB_MDA_WRITE = @GL_GNULIB_MDA_WRITE@ GL_GNULIB_MDA_Y0 = @GL_GNULIB_MDA_Y0@ GL_GNULIB_MDA_Y1 = @GL_GNULIB_MDA_Y1@ GL_GNULIB_MDA_YN = @GL_GNULIB_MDA_YN@ GL_GNULIB_MEMCHR = @GL_GNULIB_MEMCHR@ GL_GNULIB_MEMMEM = @GL_GNULIB_MEMMEM@ GL_GNULIB_MEMPCPY = @GL_GNULIB_MEMPCPY@ GL_GNULIB_MEMRCHR = @GL_GNULIB_MEMRCHR@ GL_GNULIB_MEMSET_EXPLICIT = @GL_GNULIB_MEMSET_EXPLICIT@ GL_GNULIB_MKDIR = @GL_GNULIB_MKDIR@ GL_GNULIB_MKDIRAT = @GL_GNULIB_MKDIRAT@ GL_GNULIB_MKDTEMP = @GL_GNULIB_MKDTEMP@ GL_GNULIB_MKFIFO = @GL_GNULIB_MKFIFO@ GL_GNULIB_MKFIFOAT = @GL_GNULIB_MKFIFOAT@ GL_GNULIB_MKNOD = @GL_GNULIB_MKNOD@ GL_GNULIB_MKNODAT = @GL_GNULIB_MKNODAT@ GL_GNULIB_MKOSTEMP = @GL_GNULIB_MKOSTEMP@ GL_GNULIB_MKOSTEMPS = @GL_GNULIB_MKOSTEMPS@ GL_GNULIB_MKSTEMP = @GL_GNULIB_MKSTEMP@ GL_GNULIB_MKSTEMPS = @GL_GNULIB_MKSTEMPS@ GL_GNULIB_MKTIME = @GL_GNULIB_MKTIME@ GL_GNULIB_MODF = @GL_GNULIB_MODF@ GL_GNULIB_MODFF = @GL_GNULIB_MODFF@ GL_GNULIB_MODFL = @GL_GNULIB_MODFL@ GL_GNULIB_NANOSLEEP = @GL_GNULIB_NANOSLEEP@ GL_GNULIB_NONBLOCKING = @GL_GNULIB_NONBLOCKING@ GL_GNULIB_OBSTACK_PRINTF = @GL_GNULIB_OBSTACK_PRINTF@ GL_GNULIB_OBSTACK_PRINTF_POSIX = @GL_GNULIB_OBSTACK_PRINTF_POSIX@ GL_GNULIB_OPEN = @GL_GNULIB_OPEN@ GL_GNULIB_OPENAT = @GL_GNULIB_OPENAT@ GL_GNULIB_OVERRIDES_STRUCT_STAT = @GL_GNULIB_OVERRIDES_STRUCT_STAT@ GL_GNULIB_PCLOSE = @GL_GNULIB_PCLOSE@ GL_GNULIB_PERROR = @GL_GNULIB_PERROR@ GL_GNULIB_PIPE = @GL_GNULIB_PIPE@ GL_GNULIB_PIPE2 = @GL_GNULIB_PIPE2@ GL_GNULIB_POPEN = @GL_GNULIB_POPEN@ GL_GNULIB_POSIX_MEMALIGN = @GL_GNULIB_POSIX_MEMALIGN@ GL_GNULIB_POSIX_OPENPT = @GL_GNULIB_POSIX_OPENPT@ GL_GNULIB_POWF = @GL_GNULIB_POWF@ GL_GNULIB_PREAD = @GL_GNULIB_PREAD@ GL_GNULIB_PRINTF = @GL_GNULIB_PRINTF@ GL_GNULIB_PRINTF_POSIX = @GL_GNULIB_PRINTF_POSIX@ GL_GNULIB_PTHREAD_SIGMASK = @GL_GNULIB_PTHREAD_SIGMASK@ GL_GNULIB_PTSNAME = @GL_GNULIB_PTSNAME@ GL_GNULIB_PTSNAME_R = @GL_GNULIB_PTSNAME_R@ GL_GNULIB_PUTC = @GL_GNULIB_PUTC@ GL_GNULIB_PUTCHAR = @GL_GNULIB_PUTCHAR@ GL_GNULIB_PUTENV = @GL_GNULIB_PUTENV@ GL_GNULIB_PUTS = @GL_GNULIB_PUTS@ GL_GNULIB_PWRITE = @GL_GNULIB_PWRITE@ GL_GNULIB_QSORT_R = @GL_GNULIB_QSORT_R@ GL_GNULIB_RAISE = @GL_GNULIB_RAISE@ GL_GNULIB_RANDOM = @GL_GNULIB_RANDOM@ GL_GNULIB_RANDOM_R = @GL_GNULIB_RANDOM_R@ GL_GNULIB_RAWMEMCHR = @GL_GNULIB_RAWMEMCHR@ GL_GNULIB_READ = @GL_GNULIB_READ@ GL_GNULIB_READLINK = @GL_GNULIB_READLINK@ GL_GNULIB_READLINKAT = @GL_GNULIB_READLINKAT@ GL_GNULIB_REALLOCARRAY = @GL_GNULIB_REALLOCARRAY@ GL_GNULIB_REALLOC_GNU = @GL_GNULIB_REALLOC_GNU@ GL_GNULIB_REALLOC_POSIX = @GL_GNULIB_REALLOC_POSIX@ GL_GNULIB_REALPATH = @GL_GNULIB_REALPATH@ GL_GNULIB_REMAINDER = @GL_GNULIB_REMAINDER@ GL_GNULIB_REMAINDERF = @GL_GNULIB_REMAINDERF@ GL_GNULIB_REMAINDERL = @GL_GNULIB_REMAINDERL@ GL_GNULIB_REMOVE = @GL_GNULIB_REMOVE@ GL_GNULIB_RENAME = @GL_GNULIB_RENAME@ GL_GNULIB_RENAMEAT = @GL_GNULIB_RENAMEAT@ GL_GNULIB_RINT = @GL_GNULIB_RINT@ GL_GNULIB_RINTF = @GL_GNULIB_RINTF@ GL_GNULIB_RINTL = @GL_GNULIB_RINTL@ GL_GNULIB_RMDIR = @GL_GNULIB_RMDIR@ GL_GNULIB_ROUND = @GL_GNULIB_ROUND@ GL_GNULIB_ROUNDF = @GL_GNULIB_ROUNDF@ GL_GNULIB_ROUNDL = @GL_GNULIB_ROUNDL@ GL_GNULIB_RPMATCH = @GL_GNULIB_RPMATCH@ GL_GNULIB_SCANF = @GL_GNULIB_SCANF@ GL_GNULIB_SECURE_GETENV = @GL_GNULIB_SECURE_GETENV@ GL_GNULIB_SETENV = @GL_GNULIB_SETENV@ GL_GNULIB_SETHOSTNAME = @GL_GNULIB_SETHOSTNAME@ GL_GNULIB_SETLOCALE = @GL_GNULIB_SETLOCALE@ GL_GNULIB_SETLOCALE_NULL = @GL_GNULIB_SETLOCALE_NULL@ GL_GNULIB_SIGABBREV_NP = @GL_GNULIB_SIGABBREV_NP@ GL_GNULIB_SIGACTION = @GL_GNULIB_SIGACTION@ GL_GNULIB_SIGDESCR_NP = @GL_GNULIB_SIGDESCR_NP@ GL_GNULIB_SIGNAL_H_SIGPIPE = @GL_GNULIB_SIGNAL_H_SIGPIPE@ GL_GNULIB_SIGNBIT = @GL_GNULIB_SIGNBIT@ GL_GNULIB_SIGPROCMASK = @GL_GNULIB_SIGPROCMASK@ GL_GNULIB_SINF = @GL_GNULIB_SINF@ GL_GNULIB_SINHF = @GL_GNULIB_SINHF@ GL_GNULIB_SINL = @GL_GNULIB_SINL@ GL_GNULIB_SLEEP = @GL_GNULIB_SLEEP@ GL_GNULIB_SNPRINTF = @GL_GNULIB_SNPRINTF@ GL_GNULIB_SPRINTF_POSIX = @GL_GNULIB_SPRINTF_POSIX@ GL_GNULIB_SQRTF = @GL_GNULIB_SQRTF@ GL_GNULIB_SQRTL = @GL_GNULIB_SQRTL@ GL_GNULIB_STAT = @GL_GNULIB_STAT@ GL_GNULIB_STDIO_H_NONBLOCKING = @GL_GNULIB_STDIO_H_NONBLOCKING@ GL_GNULIB_STDIO_H_SIGPIPE = @GL_GNULIB_STDIO_H_SIGPIPE@ GL_GNULIB_STPCPY = @GL_GNULIB_STPCPY@ GL_GNULIB_STPNCPY = @GL_GNULIB_STPNCPY@ GL_GNULIB_STRCASESTR = @GL_GNULIB_STRCASESTR@ GL_GNULIB_STRCHRNUL = @GL_GNULIB_STRCHRNUL@ GL_GNULIB_STRDUP = @GL_GNULIB_STRDUP@ GL_GNULIB_STRERROR = @GL_GNULIB_STRERROR@ GL_GNULIB_STRERRORNAME_NP = @GL_GNULIB_STRERRORNAME_NP@ GL_GNULIB_STRERROR_R = @GL_GNULIB_STRERROR_R@ GL_GNULIB_STRFTIME = @GL_GNULIB_STRFTIME@ GL_GNULIB_STRNCAT = @GL_GNULIB_STRNCAT@ GL_GNULIB_STRNDUP = @GL_GNULIB_STRNDUP@ GL_GNULIB_STRNLEN = @GL_GNULIB_STRNLEN@ GL_GNULIB_STRPBRK = @GL_GNULIB_STRPBRK@ GL_GNULIB_STRPTIME = @GL_GNULIB_STRPTIME@ GL_GNULIB_STRSEP = @GL_GNULIB_STRSEP@ GL_GNULIB_STRSIGNAL = @GL_GNULIB_STRSIGNAL@ GL_GNULIB_STRSTR = @GL_GNULIB_STRSTR@ GL_GNULIB_STRTOD = @GL_GNULIB_STRTOD@ GL_GNULIB_STRTOIMAX = @GL_GNULIB_STRTOIMAX@ GL_GNULIB_STRTOK_R = @GL_GNULIB_STRTOK_R@ GL_GNULIB_STRTOL = @GL_GNULIB_STRTOL@ GL_GNULIB_STRTOLD = @GL_GNULIB_STRTOLD@ GL_GNULIB_STRTOLL = @GL_GNULIB_STRTOLL@ GL_GNULIB_STRTOUL = @GL_GNULIB_STRTOUL@ GL_GNULIB_STRTOULL = @GL_GNULIB_STRTOULL@ GL_GNULIB_STRTOUMAX = @GL_GNULIB_STRTOUMAX@ GL_GNULIB_STRVERSCMP = @GL_GNULIB_STRVERSCMP@ GL_GNULIB_SYMLINK = @GL_GNULIB_SYMLINK@ GL_GNULIB_SYMLINKAT = @GL_GNULIB_SYMLINKAT@ GL_GNULIB_SYSTEM_POSIX = @GL_GNULIB_SYSTEM_POSIX@ GL_GNULIB_TANF = @GL_GNULIB_TANF@ GL_GNULIB_TANHF = @GL_GNULIB_TANHF@ GL_GNULIB_TANL = @GL_GNULIB_TANL@ GL_GNULIB_TIMEGM = @GL_GNULIB_TIMEGM@ GL_GNULIB_TIMESPEC_GET = @GL_GNULIB_TIMESPEC_GET@ GL_GNULIB_TIMESPEC_GETRES = @GL_GNULIB_TIMESPEC_GETRES@ GL_GNULIB_TIME_R = @GL_GNULIB_TIME_R@ GL_GNULIB_TIME_RZ = @GL_GNULIB_TIME_RZ@ GL_GNULIB_TMPFILE = @GL_GNULIB_TMPFILE@ GL_GNULIB_TOWCTRANS = @GL_GNULIB_TOWCTRANS@ GL_GNULIB_TRUNC = @GL_GNULIB_TRUNC@ GL_GNULIB_TRUNCATE = @GL_GNULIB_TRUNCATE@ GL_GNULIB_TRUNCF = @GL_GNULIB_TRUNCF@ GL_GNULIB_TRUNCL = @GL_GNULIB_TRUNCL@ GL_GNULIB_TTYNAME_R = @GL_GNULIB_TTYNAME_R@ GL_GNULIB_TZSET = @GL_GNULIB_TZSET@ GL_GNULIB_UNISTD_H_GETOPT = @GL_GNULIB_UNISTD_H_GETOPT@ GL_GNULIB_UNISTD_H_NONBLOCKING = @GL_GNULIB_UNISTD_H_NONBLOCKING@ GL_GNULIB_UNISTD_H_SIGPIPE = @GL_GNULIB_UNISTD_H_SIGPIPE@ GL_GNULIB_UNLINK = @GL_GNULIB_UNLINK@ GL_GNULIB_UNLINKAT = @GL_GNULIB_UNLINKAT@ GL_GNULIB_UNLOCKPT = @GL_GNULIB_UNLOCKPT@ GL_GNULIB_UNSETENV = @GL_GNULIB_UNSETENV@ GL_GNULIB_USLEEP = @GL_GNULIB_USLEEP@ GL_GNULIB_UTIME = @GL_GNULIB_UTIME@ GL_GNULIB_UTIMENSAT = @GL_GNULIB_UTIMENSAT@ GL_GNULIB_VASPRINTF = @GL_GNULIB_VASPRINTF@ GL_GNULIB_VDPRINTF = @GL_GNULIB_VDPRINTF@ GL_GNULIB_VFPRINTF = @GL_GNULIB_VFPRINTF@ GL_GNULIB_VFPRINTF_POSIX = @GL_GNULIB_VFPRINTF_POSIX@ GL_GNULIB_VFSCANF = @GL_GNULIB_VFSCANF@ GL_GNULIB_VPRINTF = @GL_GNULIB_VPRINTF@ GL_GNULIB_VPRINTF_POSIX = @GL_GNULIB_VPRINTF_POSIX@ GL_GNULIB_VSCANF = @GL_GNULIB_VSCANF@ GL_GNULIB_VSNPRINTF = @GL_GNULIB_VSNPRINTF@ GL_GNULIB_VSPRINTF_POSIX = @GL_GNULIB_VSPRINTF_POSIX@ GL_GNULIB_WAITPID = @GL_GNULIB_WAITPID@ GL_GNULIB_WCPCPY = @GL_GNULIB_WCPCPY@ GL_GNULIB_WCPNCPY = @GL_GNULIB_WCPNCPY@ GL_GNULIB_WCRTOMB = @GL_GNULIB_WCRTOMB@ GL_GNULIB_WCSCASECMP = @GL_GNULIB_WCSCASECMP@ GL_GNULIB_WCSCAT = @GL_GNULIB_WCSCAT@ GL_GNULIB_WCSCHR = @GL_GNULIB_WCSCHR@ GL_GNULIB_WCSCMP = @GL_GNULIB_WCSCMP@ GL_GNULIB_WCSCOLL = @GL_GNULIB_WCSCOLL@ GL_GNULIB_WCSCPY = @GL_GNULIB_WCSCPY@ GL_GNULIB_WCSCSPN = @GL_GNULIB_WCSCSPN@ GL_GNULIB_WCSDUP = @GL_GNULIB_WCSDUP@ GL_GNULIB_WCSFTIME = @GL_GNULIB_WCSFTIME@ GL_GNULIB_WCSLEN = @GL_GNULIB_WCSLEN@ GL_GNULIB_WCSNCASECMP = @GL_GNULIB_WCSNCASECMP@ GL_GNULIB_WCSNCAT = @GL_GNULIB_WCSNCAT@ GL_GNULIB_WCSNCMP = @GL_GNULIB_WCSNCMP@ GL_GNULIB_WCSNCPY = @GL_GNULIB_WCSNCPY@ GL_GNULIB_WCSNLEN = @GL_GNULIB_WCSNLEN@ GL_GNULIB_WCSNRTOMBS = @GL_GNULIB_WCSNRTOMBS@ GL_GNULIB_WCSPBRK = @GL_GNULIB_WCSPBRK@ GL_GNULIB_WCSRCHR = @GL_GNULIB_WCSRCHR@ GL_GNULIB_WCSRTOMBS = @GL_GNULIB_WCSRTOMBS@ GL_GNULIB_WCSSPN = @GL_GNULIB_WCSSPN@ GL_GNULIB_WCSSTR = @GL_GNULIB_WCSSTR@ GL_GNULIB_WCSTOK = @GL_GNULIB_WCSTOK@ GL_GNULIB_WCSWIDTH = @GL_GNULIB_WCSWIDTH@ GL_GNULIB_WCSXFRM = @GL_GNULIB_WCSXFRM@ GL_GNULIB_WCTOB = @GL_GNULIB_WCTOB@ GL_GNULIB_WCTOMB = @GL_GNULIB_WCTOMB@ GL_GNULIB_WCTRANS = @GL_GNULIB_WCTRANS@ GL_GNULIB_WCTYPE = @GL_GNULIB_WCTYPE@ GL_GNULIB_WCWIDTH = @GL_GNULIB_WCWIDTH@ GL_GNULIB_WMEMCHR = @GL_GNULIB_WMEMCHR@ GL_GNULIB_WMEMCMP = @GL_GNULIB_WMEMCMP@ GL_GNULIB_WMEMCPY = @GL_GNULIB_WMEMCPY@ GL_GNULIB_WMEMMOVE = @GL_GNULIB_WMEMMOVE@ GL_GNULIB_WMEMPCPY = @GL_GNULIB_WMEMPCPY@ GL_GNULIB_WMEMSET = @GL_GNULIB_WMEMSET@ GL_GNULIB_WRITE = @GL_GNULIB_WRITE@ GL_GNULIB__EXIT = @GL_GNULIB__EXIT@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GNULIBHEADERS_OVERRIDE_WINT_T = @GNULIBHEADERS_OVERRIDE_WINT_T@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GREP = @GREP@ HARD_LOCALE_LIB = @HARD_LOCALE_LIB@ HAVE_ACOSF = @HAVE_ACOSF@ HAVE_ACOSL = @HAVE_ACOSL@ HAVE_ALIGNED_ALLOC = @HAVE_ALIGNED_ALLOC@ HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ HAVE_ASINF = @HAVE_ASINF@ HAVE_ASINL = @HAVE_ASINL@ HAVE_ATAN2F = @HAVE_ATAN2F@ HAVE_ATANF = @HAVE_ATANF@ HAVE_ATANL = @HAVE_ATANL@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_BTOWC = @HAVE_BTOWC@ HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CBRT = @HAVE_CBRT@ HAVE_CBRTF = @HAVE_CBRTF@ HAVE_CBRTL = @HAVE_CBRTL@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_COPYSIGN = @HAVE_COPYSIGN@ HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@ HAVE_COSF = @HAVE_COSF@ HAVE_COSHF = @HAVE_COSHF@ HAVE_COSL = @HAVE_COSL@ HAVE_CRTDEFS_H = @HAVE_CRTDEFS_H@ HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ HAVE_DECL_COSL = @HAVE_DECL_COSL@ HAVE_DECL_ECVT = @HAVE_DECL_ECVT@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_EXECVPE = @HAVE_DECL_EXECVPE@ HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FCLOSEALL = @HAVE_DECL_FCLOSEALL@ HAVE_DECL_FCVT = @HAVE_DECL_FCVT@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GCVT = @HAVE_DECL_GCVT@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_GETW = @HAVE_DECL_GETW@ HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@ HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_PUTW = @HAVE_DECL_PUTW@ HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@ HAVE_DECL_SINL = @HAVE_DECL_SINL@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ HAVE_DECL_TANL = @HAVE_DECL_TANL@ HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@ HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DECL_WCSDUP = @HAVE_DECL_WCSDUP@ HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ HAVE_ERROR = @HAVE_ERROR@ HAVE_ERROR_AT_LINE = @HAVE_ERROR_AT_LINE@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_EXECVPE = @HAVE_EXECVPE@ HAVE_EXPF = @HAVE_EXPF@ HAVE_EXPL = @HAVE_EXPL@ HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@ HAVE_EXPM1 = @HAVE_EXPM1@ HAVE_EXPM1F = @HAVE_EXPM1F@ HAVE_FABSF = @HAVE_FABSF@ HAVE_FABSL = @HAVE_FABSL@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FCNTL = @HAVE_FCNTL@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FEATURES_H = @HAVE_FEATURES_H@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FMA = @HAVE_FMA@ HAVE_FMAF = @HAVE_FMAF@ HAVE_FMAL = @HAVE_FMAL@ HAVE_FMODF = @HAVE_FMODF@ HAVE_FMODL = @HAVE_FMODL@ HAVE_FREELOCALE = @HAVE_FREELOCALE@ HAVE_FREXPF = @HAVE_FREXPF@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETENTROPY = @HAVE_GETENTROPY@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETPASS = @HAVE_GETPASS@ HAVE_GETPROGNAME = @HAVE_GETPROGNAME@ HAVE_GETRANDOM = @HAVE_GETRANDOM@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETUMASK = @HAVE_GETUMASK@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_HYPOTF = @HAVE_HYPOTF@ HAVE_HYPOTL = @HAVE_HYPOTL@ HAVE_ILOGB = @HAVE_ILOGB@ HAVE_ILOGBF = @HAVE_ILOGBF@ HAVE_ILOGBL = @HAVE_ILOGBL@ HAVE_IMAXABS = @HAVE_IMAXABS@ HAVE_IMAXDIV = @HAVE_IMAXDIV@ HAVE_IMAXDIV_T = @HAVE_IMAXDIV_T@ HAVE_INITSTATE = @HAVE_INITSTATE@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_ISNAND = @HAVE_ISNAND@ HAVE_ISNANF = @HAVE_ISNANF@ HAVE_ISNANL = @HAVE_ISNANL@ HAVE_ISWBLANK = @HAVE_ISWBLANK@ HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LDEXPF = @HAVE_LDEXPF@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LOG10F = @HAVE_LOG10F@ HAVE_LOG10L = @HAVE_LOG10L@ HAVE_LOG1P = @HAVE_LOG1P@ HAVE_LOG1PF = @HAVE_LOG1PF@ HAVE_LOG1PL = @HAVE_LOG1PL@ HAVE_LOGBF = @HAVE_LOGBF@ HAVE_LOGBL = @HAVE_LOGBL@ HAVE_LOGF = @HAVE_LOGF@ HAVE_LOGL = @HAVE_LOGL@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ HAVE_MBRLEN = @HAVE_MBRLEN@ HAVE_MBRTOWC = @HAVE_MBRTOWC@ HAVE_MBSINIT = @HAVE_MBSINIT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ HAVE_MBTOWC = @HAVE_MBTOWC@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MEMSET_EXPLICIT = @HAVE_MEMSET_EXPLICIT@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MODFF = @HAVE_MODFF@ HAVE_MODFL = @HAVE_MODFL@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ HAVE_OPENAT = @HAVE_OPENAT@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_MEMALIGN = @HAVE_POSIX_MEMALIGN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@ HAVE_POWF = @HAVE_POWF@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_QSORT_R = @HAVE_QSORT_R@ HAVE_RAISE = @HAVE_RAISE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_REMAINDER = @HAVE_REMAINDER@ HAVE_REMAINDERF = @HAVE_REMAINDERF@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RINT = @HAVE_RINT@ HAVE_RINTL = @HAVE_RINTL@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SETSTATE = @HAVE_SETSTATE@ HAVE_SIGABBREV_NP = @HAVE_SIGABBREV_NP@ HAVE_SIGACTION = @HAVE_SIGACTION@ HAVE_SIGDESCR_NP = @HAVE_SIGDESCR_NP@ HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@ HAVE_SIGINFO_T = @HAVE_SIGINFO_T@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SIGSET_T = @HAVE_SIGSET_T@ HAVE_SINF = @HAVE_SINF@ HAVE_SINHF = @HAVE_SINHF@ HAVE_SINL = @HAVE_SINL@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_SQRTF = @HAVE_SQRTF@ HAVE_SQRTL = @HAVE_SQRTL@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRERRORNAME_NP = @HAVE_STRERRORNAME_NP@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOL = @HAVE_STRTOL@ HAVE_STRTOLD = @HAVE_STRTOLD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOUL = @HAVE_STRTOUL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_CDEFS_H = @HAVE_SYS_CDEFS_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_RANDOM_H = @HAVE_SYS_RANDOM_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TANF = @HAVE_TANF@ HAVE_TANHF = @HAVE_TANHF@ HAVE_TANL = @HAVE_TANL@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_TIMESPEC_GET = @HAVE_TIMESPEC_GET@ HAVE_TIMESPEC_GETRES = @HAVE_TIMESPEC_GETRES@ HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIME = @HAVE_UTIME@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_UTIME_H = @HAVE_UTIME_H@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WCPCPY = @HAVE_WCPCPY@ HAVE_WCPNCPY = @HAVE_WCPNCPY@ HAVE_WCRTOMB = @HAVE_WCRTOMB@ HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ HAVE_WCSCAT = @HAVE_WCSCAT@ HAVE_WCSCHR = @HAVE_WCSCHR@ HAVE_WCSCMP = @HAVE_WCSCMP@ HAVE_WCSCOLL = @HAVE_WCSCOLL@ HAVE_WCSCPY = @HAVE_WCSCPY@ HAVE_WCSCSPN = @HAVE_WCSCSPN@ HAVE_WCSDUP = @HAVE_WCSDUP@ HAVE_WCSFTIME = @HAVE_WCSFTIME@ HAVE_WCSLEN = @HAVE_WCSLEN@ HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ HAVE_WCSNCAT = @HAVE_WCSNCAT@ HAVE_WCSNCMP = @HAVE_WCSNCMP@ HAVE_WCSNCPY = @HAVE_WCSNCPY@ HAVE_WCSNLEN = @HAVE_WCSNLEN@ HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ HAVE_WCSPBRK = @HAVE_WCSPBRK@ HAVE_WCSRCHR = @HAVE_WCSRCHR@ HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ HAVE_WCSSPN = @HAVE_WCSSPN@ HAVE_WCSSTR = @HAVE_WCSSTR@ HAVE_WCSTOK = @HAVE_WCSTOK@ HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ HAVE_WCSXFRM = @HAVE_WCSXFRM@ HAVE_WCTRANS_T = @HAVE_WCTRANS_T@ HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ HAVE_WCTYPE_T = @HAVE_WCTYPE_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE_WINT_T = @HAVE_WINT_T@ HAVE_WMEMCHR = @HAVE_WMEMCHR@ HAVE_WMEMCMP = @HAVE_WMEMCMP@ HAVE_WMEMCPY = @HAVE_WMEMCPY@ HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ HAVE_WMEMPCPY = @HAVE_WMEMPCPY@ HAVE_WMEMSET = @HAVE_WMEMSET@ HAVE_XLOCALE_H = @HAVE_XLOCALE_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ ISYSTEM = @ISYSTEM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBPMULTITHREAD = @LIBPMULTITHREAD@ LIBPTHREAD = @LIBPTHREAD@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIB_GETRANDOM = @LIB_GETRANDOM@ LIB_HARD_LOCALE = @LIB_HARD_LOCALE@ LIB_MBRTOWC = @LIB_MBRTOWC@ LIB_SCHED_YIELD = @LIB_SCHED_YIELD@ LIB_SETLOCALE_NULL = @LIB_SETLOCALE_NULL@ LIMITS_H = @LIMITS_H@ LIPO = @LIPO@ LN_S = @LN_S@ LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ LOCALENAME_ENHANCE_LOCALE_FUNCS = @LOCALENAME_ENHANCE_LOCALE_FUNCS@ LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ LOCALE_JA = @LOCALE_JA@ LOCALE_ZH_CN = @LOCALE_ZH_CN@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MBRTOWC_LIB = @MBRTOWC_LIB@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NEXT_ASSERT_H = @NEXT_ASSERT_H@ NEXT_AS_FIRST_DIRECTIVE_ASSERT_H = @NEXT_AS_FIRST_DIRECTIVE_ASSERT_H@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@ NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_AS_FIRST_DIRECTIVE_UTIME_H = @NEXT_AS_FIRST_DIRECTIVE_UTIME_H@ NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_FCNTL_H = @NEXT_FCNTL_H@ NEXT_FLOAT_H = @NEXT_FLOAT_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ NEXT_LIMITS_H = @NEXT_LIMITS_H@ NEXT_LOCALE_H = @NEXT_LOCALE_H@ NEXT_MATH_H = @NEXT_MATH_H@ NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_RANDOM_H = @NEXT_SYS_RANDOM_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_SYS_WAIT_H = @NEXT_SYS_WAIT_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NEXT_UTIME_H = @NEXT_UTIME_H@ NEXT_WCHAR_H = @NEXT_WCHAR_H@ NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ POSUB = @POSUB@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PRIPTR_PREFIX = @PRIPTR_PREFIX@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REPLACE_ACCESS = @REPLACE_ACCESS@ REPLACE_ACOSF = @REPLACE_ACOSF@ REPLACE_ALIGNED_ALLOC = @REPLACE_ALIGNED_ALLOC@ REPLACE_ASINF = @REPLACE_ASINF@ REPLACE_ATAN2F = @REPLACE_ATAN2F@ REPLACE_ATANF = @REPLACE_ATANF@ REPLACE_BTOWC = @REPLACE_BTOWC@ REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@ REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CBRTF = @REPLACE_CBRTF@ REPLACE_CBRTL = @REPLACE_CBRTL@ REPLACE_CEIL = @REPLACE_CEIL@ REPLACE_CEILF = @REPLACE_CEILF@ REPLACE_CEILL = @REPLACE_CEILL@ REPLACE_CHMOD = @REPLACE_CHMOD@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_COPY_FILE_RANGE = @REPLACE_COPY_FILE_RANGE@ REPLACE_COSF = @REPLACE_COSF@ REPLACE_COSHF = @REPLACE_COSHF@ REPLACE_CREAT = @REPLACE_CREAT@ REPLACE_CTIME = @REPLACE_CTIME@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_DUP3 = @REPLACE_DUP3@ REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ REPLACE_ERROR = @REPLACE_ERROR@ REPLACE_ERROR_AT_LINE = @REPLACE_ERROR_AT_LINE@ REPLACE_EXECL = @REPLACE_EXECL@ REPLACE_EXECLE = @REPLACE_EXECLE@ REPLACE_EXECLP = @REPLACE_EXECLP@ REPLACE_EXECV = @REPLACE_EXECV@ REPLACE_EXECVE = @REPLACE_EXECVE@ REPLACE_EXECVP = @REPLACE_EXECVP@ REPLACE_EXECVPE = @REPLACE_EXECVPE@ REPLACE_EXP2 = @REPLACE_EXP2@ REPLACE_EXP2L = @REPLACE_EXP2L@ REPLACE_EXPF = @REPLACE_EXPF@ REPLACE_EXPL = @REPLACE_EXPL@ REPLACE_EXPM1 = @REPLACE_EXPM1@ REPLACE_EXPM1F = @REPLACE_EXPM1F@ REPLACE_EXPM1L = @REPLACE_EXPM1L@ REPLACE_FABSL = @REPLACE_FABSL@ REPLACE_FACCESSAT = @REPLACE_FACCESSAT@ REPLACE_FCHMODAT = @REPLACE_FCHMODAT@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FCNTL = @REPLACE_FCNTL@ REPLACE_FDATASYNC = @REPLACE_FDATASYNC@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FFSLL = @REPLACE_FFSLL@ REPLACE_FLOOR = @REPLACE_FLOOR@ REPLACE_FLOORF = @REPLACE_FLOORF@ REPLACE_FLOORL = @REPLACE_FLOORL@ REPLACE_FMA = @REPLACE_FMA@ REPLACE_FMAF = @REPLACE_FMAF@ REPLACE_FMAL = @REPLACE_FMAL@ REPLACE_FMOD = @REPLACE_FMOD@ REPLACE_FMODF = @REPLACE_FMODF@ REPLACE_FMODL = @REPLACE_FMODL@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FOPEN_FOR_FOPEN_GNU = @REPLACE_FOPEN_FOR_FOPEN_GNU@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREE = @REPLACE_FREE@ REPLACE_FREELOCALE = @REPLACE_FREELOCALE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FREXP = @REPLACE_FREXP@ REPLACE_FREXPF = @REPLACE_FREXPF@ REPLACE_FREXPL = @REPLACE_FREXPL@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ REPLACE_GETENTROPY = @REPLACE_GETENTROPY@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOADAVG = @REPLACE_GETLOADAVG@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETPASS = @REPLACE_GETPASS@ REPLACE_GETPASS_FOR_GETPASS_GNU = @REPLACE_GETPASS_FOR_GETPASS_GNU@ REPLACE_GETPROGNAME = @REPLACE_GETPROGNAME@ REPLACE_GETRANDOM = @REPLACE_GETRANDOM@ REPLACE_GETSUBOPT = @REPLACE_GETSUBOPT@ REPLACE_GMTIME = @REPLACE_GMTIME@ REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ REPLACE_HYPOT = @REPLACE_HYPOT@ REPLACE_HYPOTF = @REPLACE_HYPOTF@ REPLACE_HYPOTL = @REPLACE_HYPOTL@ REPLACE_ILOGB = @REPLACE_ILOGB@ REPLACE_ILOGBF = @REPLACE_ILOGBF@ REPLACE_ILOGBL = @REPLACE_ILOGBL@ REPLACE_IMAXABS = @REPLACE_IMAXABS@ REPLACE_IMAXDIV = @REPLACE_IMAXDIV@ REPLACE_INITSTATE = @REPLACE_INITSTATE@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_ISFINITE = @REPLACE_ISFINITE@ REPLACE_ISINF = @REPLACE_ISINF@ REPLACE_ISNAN = @REPLACE_ISNAN@ REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ REPLACE_ISWDIGIT = @REPLACE_ISWDIGIT@ REPLACE_ISWXDIGIT = @REPLACE_ISWXDIGIT@ REPLACE_ITOLD = @REPLACE_ITOLD@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LDEXPL = @REPLACE_LDEXPL@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LOG = @REPLACE_LOG@ REPLACE_LOG10 = @REPLACE_LOG10@ REPLACE_LOG10F = @REPLACE_LOG10F@ REPLACE_LOG10L = @REPLACE_LOG10L@ REPLACE_LOG1P = @REPLACE_LOG1P@ REPLACE_LOG1PF = @REPLACE_LOG1PF@ REPLACE_LOG1PL = @REPLACE_LOG1PL@ REPLACE_LOG2 = @REPLACE_LOG2@ REPLACE_LOG2F = @REPLACE_LOG2F@ REPLACE_LOG2L = @REPLACE_LOG2L@ REPLACE_LOGB = @REPLACE_LOGB@ REPLACE_LOGBF = @REPLACE_LOGBF@ REPLACE_LOGBL = @REPLACE_LOGBL@ REPLACE_LOGF = @REPLACE_LOGF@ REPLACE_LOGL = @REPLACE_LOGL@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC_FOR_MALLOC_GNU = @REPLACE_MALLOC_FOR_MALLOC_GNU@ REPLACE_MALLOC_FOR_MALLOC_POSIX = @REPLACE_MALLOC_FOR_MALLOC_POSIX@ REPLACE_MBRLEN = @REPLACE_MBRLEN@ REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ REPLACE_MBSINIT = @REPLACE_MBSINIT@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MEMPCPY = @REPLACE_MEMPCPY@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKFIFOAT = @REPLACE_MKFIFOAT@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKNODAT = @REPLACE_MKNODAT@ REPLACE_MKOSTEMP = @REPLACE_MKOSTEMP@ REPLACE_MKOSTEMPS = @REPLACE_MKOSTEMPS@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_MODF = @REPLACE_MODF@ REPLACE_MODFF = @REPLACE_MODFF@ REPLACE_MODFL = @REPLACE_MODFL@ REPLACE_NAN = @REPLACE_NAN@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NEWLOCALE = @REPLACE_NEWLOCALE@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_OPEN = @REPLACE_OPEN@ REPLACE_OPENAT = @REPLACE_OPENAT@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_PIPE2 = @REPLACE_PIPE2@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_POSIX_MEMALIGN = @REPLACE_POSIX_MEMALIGN@ REPLACE_POSIX_OPENPT = @REPLACE_POSIX_OPENPT@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_QSORT_R = @REPLACE_QSORT_R@ REPLACE_RAISE = @REPLACE_RAISE@ REPLACE_RANDOM = @REPLACE_RANDOM@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_READLINKAT = @REPLACE_READLINKAT@ REPLACE_REALLOCARRAY = @REPLACE_REALLOCARRAY@ REPLACE_REALLOC_FOR_REALLOC_GNU = @REPLACE_REALLOC_FOR_REALLOC_GNU@ REPLACE_REALLOC_FOR_REALLOC_POSIX = @REPLACE_REALLOC_FOR_REALLOC_POSIX@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMAINDER = @REPLACE_REMAINDER@ REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RINTL = @REPLACE_RINTL@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_ROUND = @REPLACE_ROUND@ REPLACE_ROUNDF = @REPLACE_ROUNDF@ REPLACE_ROUNDL = @REPLACE_ROUNDL@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SETHOSTNAME = @REPLACE_SETHOSTNAME@ REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ REPLACE_SETSTATE = @REPLACE_SETSTATE@ REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ REPLACE_SIGNBIT_USING_BUILTINS = @REPLACE_SIGNBIT_USING_BUILTINS@ REPLACE_SINF = @REPLACE_SINF@ REPLACE_SINHF = @REPLACE_SINHF@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_SQRTF = @REPLACE_SQRTF@ REPLACE_SQRTL = @REPLACE_SQRTL@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPCPY = @REPLACE_STPCPY@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERRORNAME_NP = @REPLACE_STRERRORNAME_NP@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRFTIME = @REPLACE_STRFTIME@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRTOL = @REPLACE_STRTOL@ REPLACE_STRTOLD = @REPLACE_STRTOLD@ REPLACE_STRTOLL = @REPLACE_STRTOLL@ REPLACE_STRTOUL = @REPLACE_STRTOUL@ REPLACE_STRTOULL = @REPLACE_STRTOULL@ REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ REPLACE_TANF = @REPLACE_TANF@ REPLACE_TANHF = @REPLACE_TANHF@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TIMESPEC_GET = @REPLACE_TIMESPEC_GET@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ REPLACE_TRUNC = @REPLACE_TRUNC@ REPLACE_TRUNCATE = @REPLACE_TRUNCATE@ REPLACE_TRUNCF = @REPLACE_TRUNCF@ REPLACE_TRUNCL = @REPLACE_TRUNCL@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_TZSET = @REPLACE_TZSET@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIME = @REPLACE_UTIME@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ REPLACE_WCSFTIME = @REPLACE_WCSFTIME@ REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ REPLACE_WCSTOK = @REPLACE_WCSTOK@ REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ REPLACE_WCTOB = @REPLACE_WCTOB@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ REPLACE_WMEMPCPY = @REPLACE_WMEMPCPY@ REPLACE_WRITE = @REPLACE_WRITE@ REPLACE__EXIT = @REPLACE__EXIT@ SCHED_YIELD_LIB = @SCHED_YIELD_LIB@ SED = @SED@ SETLOCALE_NULL_LIB = @SETLOCALE_NULL_LIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDCKDINT_H = @STDCKDINT_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TESTS_ENVIRONMENT_EXTRA = @TESTS_ENVIRONMENT_EXTRA@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_TIME_UTC = @TIME_H_DEFINES_TIME_UTC@ UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_DEFINES_STRUCT_TIMESPEC = @UNISTD_H_DEFINES_STRUCT_TIMESPEC@ UNISTD_H_HAVE_SYS_RANDOM_H = @UNISTD_H_HAVE_SYS_RANDOM_H@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSION_INFO = @VERSION_INFO@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@ WINDOWS_STAT_TIMESPEC = @WINDOWS_STAT_TIMESPEC@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ objdir = @objdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyextext = @pyextext@ pythondir = @pythondir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = gnits lib_LTLIBRARIES = librecode.la noinst_LTLIBRARIES = libmerged.la dist_man_MANS = recode.1 include_HEADERS = recode.h recodext.h H_STEPS = common.h decsteps.h inisteps.h tersteps.h \ $(H_SURFACES) noinst_HEADERS = $(H_STEPS) cleaner.h charname.h fr-charname.h iconvdecl.h \ rfc1345.h lat1iso5426.h lat1ansel.h EXTRA_DIST = stamp-steps stamp-strip $(L_STEPS) mergelex.py $(MANS) lat1ansel.h lat1iso5426.h CLEANFILES = iconvdecl.h C_STEPS = african.c afrtran.c atarist.c bangbang.c cdcnos.c \ ebcdic.c ibmpc.c iconqnx.c lat1asci.c lat1iso5426.c lat1ansel.c \ java.c mule.c strip-data.c testdump.c ucs.c utf16.c utf7.c utf8.c varia.c vn.c ALL_STEPS = $(C_STEPS) $(C_FALLBACKS) $(C_SURFACES) L_STEPS = ascilat1.l iso5426lat1.l ansellat1.l $(L_FALLBACKS) C_FALLBACKS = flat.c html.c lat1ltex.c lat1btex.c lat1txte.c rfc1345.c texinfo.c L_FALLBACKS = ltexlat1.l btexlat1.l txtelat1.l H_SURFACES = base64.h C_SURFACES = base64.c dump.c endline.c permut.c quoted.c recode_SOURCES = main.c mixed.c common.h recode_LDADD = librecode.la librecode_la_SOURCES = charname.c combine.c fr-charname.c iconv.c \ names.c outer.c recode.c request.c strip-pool.c task.c $(ALL_STEPS) \ $(include_HEADERS) $(noinst_HEADERS) $(H_STEPS) librecode_la_LDFLAGS = -no-undefined -version-info $(VERSION_INFO) $(LTLIBICONV) $(LTLIBINTL) \ $(LIB_CLOCK_GETTIME) $(LIB_GETRANDOM) $(LIB_HARD_LOCALE) $(LIB_MBRTOWC) $(LIB_SETLOCALE_NULL) librecode_la_LIBADD = ../lib/libgnu.la libmerged.la libmerged_la_SOURCES = merged.c libmerged_la_CPPFLAGS = $(NON_WARN_CFLAGS) # Relative to $(srcdir). ALAIN = $(KELD) KELD = ../keld CHARSETS_DEF = $(KELD)/charsets.def MNEMONICS_DS = $(KELD)/iso10646.def $(KELD)/other.def $(KELD)/control.def RFC1345_TXT = $(KELD)/rfc1345.txt NOMS_CARACS = $(ALAIN)/NomsSeulsfinal.lst NON_WARN_CFLAGS = -I.. -I$(srcdir) $(ISYSTEM)$(top_builddir)/lib $(ISYSTEM)$(top_srcdir)/lib AM_CPPFLAGS = $(NON_WARN_CFLAGS) $(WARN_CFLAGS) ETAGS_ARGS = $(L_STEPS) TAGS_DEPENDENCIES = $(L_STEPS) TABLES_PY = $(PYTHON) $(top_srcdir)/tables.py all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): recode.x: $(top_builddir)/config.status $(srcdir)/recode.x.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list installcheck-binPROGRAMS: $(bin_PROGRAMS) bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ esac; \ f=`echo "$$p" | \ sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ for opt in --help --version; do \ if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \ 2>c$${pid}_.err &2; bad=1; fi; \ done; \ done; rm -f c$${pid}_.???; exit $$bad install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libmerged.la: $(libmerged_la_OBJECTS) $(libmerged_la_DEPENDENCIES) $(EXTRA_libmerged_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libmerged_la_OBJECTS) $(libmerged_la_LIBADD) $(LIBS) librecode.la: $(librecode_la_OBJECTS) $(librecode_la_DEPENDENCIES) $(EXTRA_librecode_la_DEPENDENCIES) $(AM_V_CCLD)$(librecode_la_LINK) -rpath $(libdir) $(librecode_la_OBJECTS) $(librecode_la_LIBADD) $(LIBS) recode$(EXEEXT): $(recode_OBJECTS) $(recode_DEPENDENCIES) $(EXTRA_recode_DEPENDENCIES) @rm -f recode$(EXEEXT) $(AM_V_CCLD)$(LINK) $(recode_OBJECTS) $(recode_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/african.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/afrtran.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atarist.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bangbang.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base64.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdcnos.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/charname.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/combine.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ebcdic.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/endline.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flat.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fr-charname.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/html.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibmpc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iconqnx.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iconv.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/java.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lat1ansel.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lat1asci.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lat1btex.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lat1iso5426.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lat1ltex.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lat1txte.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmerged_la-merged.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mixed.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mule.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/names.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/outer.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/permut.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quoted.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recode.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/request.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rfc1345.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strip-data.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strip-pool.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testdump.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/texinfo.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ucs.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf16.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf7.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf8.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/varia.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vn.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libmerged_la-merged.lo: merged.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmerged_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmerged_la-merged.lo -MD -MP -MF $(DEPDIR)/libmerged_la-merged.Tpo -c -o libmerged_la-merged.lo `test -f 'merged.c' || echo '$(srcdir)/'`merged.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmerged_la-merged.Tpo $(DEPDIR)/libmerged_la-merged.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='merged.c' object='libmerged_la-merged.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmerged_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmerged_la-merged.lo `test -f 'merged.c' || echo '$(srcdir)/'`merged.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(dist_man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(MANS) $(HEADERS) install-binPROGRAMS: install-libLTLIBRARIES installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ clean-libtool clean-noinstLTLIBRARIES mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/african.Plo -rm -f ./$(DEPDIR)/afrtran.Plo -rm -f ./$(DEPDIR)/atarist.Plo -rm -f ./$(DEPDIR)/bangbang.Plo -rm -f ./$(DEPDIR)/base64.Plo -rm -f ./$(DEPDIR)/cdcnos.Plo -rm -f ./$(DEPDIR)/charname.Plo -rm -f ./$(DEPDIR)/combine.Plo -rm -f ./$(DEPDIR)/dump.Plo -rm -f ./$(DEPDIR)/ebcdic.Plo -rm -f ./$(DEPDIR)/endline.Plo -rm -f ./$(DEPDIR)/flat.Plo -rm -f ./$(DEPDIR)/fr-charname.Plo -rm -f ./$(DEPDIR)/html.Plo -rm -f ./$(DEPDIR)/ibmpc.Plo -rm -f ./$(DEPDIR)/iconqnx.Plo -rm -f ./$(DEPDIR)/iconv.Plo -rm -f ./$(DEPDIR)/java.Plo -rm -f ./$(DEPDIR)/lat1ansel.Plo -rm -f ./$(DEPDIR)/lat1asci.Plo -rm -f ./$(DEPDIR)/lat1btex.Plo -rm -f ./$(DEPDIR)/lat1iso5426.Plo -rm -f ./$(DEPDIR)/lat1ltex.Plo -rm -f ./$(DEPDIR)/lat1txte.Plo -rm -f ./$(DEPDIR)/libmerged_la-merged.Plo -rm -f ./$(DEPDIR)/main.Po -rm -f ./$(DEPDIR)/mixed.Po -rm -f ./$(DEPDIR)/mule.Plo -rm -f ./$(DEPDIR)/names.Plo -rm -f ./$(DEPDIR)/outer.Plo -rm -f ./$(DEPDIR)/permut.Plo -rm -f ./$(DEPDIR)/quoted.Plo -rm -f ./$(DEPDIR)/recode.Plo -rm -f ./$(DEPDIR)/request.Plo -rm -f ./$(DEPDIR)/rfc1345.Plo -rm -f ./$(DEPDIR)/strip-data.Plo -rm -f ./$(DEPDIR)/strip-pool.Plo -rm -f ./$(DEPDIR)/task.Plo -rm -f ./$(DEPDIR)/testdump.Plo -rm -f ./$(DEPDIR)/texinfo.Plo -rm -f ./$(DEPDIR)/ucs.Plo -rm -f ./$(DEPDIR)/utf16.Plo -rm -f ./$(DEPDIR)/utf7.Plo -rm -f ./$(DEPDIR)/utf8.Plo -rm -f ./$(DEPDIR)/varia.Plo -rm -f ./$(DEPDIR)/vn.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-includeHEADERS install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: installcheck-binPROGRAMS maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/african.Plo -rm -f ./$(DEPDIR)/afrtran.Plo -rm -f ./$(DEPDIR)/atarist.Plo -rm -f ./$(DEPDIR)/bangbang.Plo -rm -f ./$(DEPDIR)/base64.Plo -rm -f ./$(DEPDIR)/cdcnos.Plo -rm -f ./$(DEPDIR)/charname.Plo -rm -f ./$(DEPDIR)/combine.Plo -rm -f ./$(DEPDIR)/dump.Plo -rm -f ./$(DEPDIR)/ebcdic.Plo -rm -f ./$(DEPDIR)/endline.Plo -rm -f ./$(DEPDIR)/flat.Plo -rm -f ./$(DEPDIR)/fr-charname.Plo -rm -f ./$(DEPDIR)/html.Plo -rm -f ./$(DEPDIR)/ibmpc.Plo -rm -f ./$(DEPDIR)/iconqnx.Plo -rm -f ./$(DEPDIR)/iconv.Plo -rm -f ./$(DEPDIR)/java.Plo -rm -f ./$(DEPDIR)/lat1ansel.Plo -rm -f ./$(DEPDIR)/lat1asci.Plo -rm -f ./$(DEPDIR)/lat1btex.Plo -rm -f ./$(DEPDIR)/lat1iso5426.Plo -rm -f ./$(DEPDIR)/lat1ltex.Plo -rm -f ./$(DEPDIR)/lat1txte.Plo -rm -f ./$(DEPDIR)/libmerged_la-merged.Plo -rm -f ./$(DEPDIR)/main.Po -rm -f ./$(DEPDIR)/mixed.Po -rm -f ./$(DEPDIR)/mule.Plo -rm -f ./$(DEPDIR)/names.Plo -rm -f ./$(DEPDIR)/outer.Plo -rm -f ./$(DEPDIR)/permut.Plo -rm -f ./$(DEPDIR)/quoted.Plo -rm -f ./$(DEPDIR)/recode.Plo -rm -f ./$(DEPDIR)/request.Plo -rm -f ./$(DEPDIR)/rfc1345.Plo -rm -f ./$(DEPDIR)/strip-data.Plo -rm -f ./$(DEPDIR)/strip-pool.Plo -rm -f ./$(DEPDIR)/task.Plo -rm -f ./$(DEPDIR)/testdump.Plo -rm -f ./$(DEPDIR)/texinfo.Plo -rm -f ./$(DEPDIR)/ucs.Plo -rm -f ./$(DEPDIR)/utf16.Plo -rm -f ./$(DEPDIR)/utf7.Plo -rm -f ./$(DEPDIR)/utf8.Plo -rm -f ./$(DEPDIR)/varia.Plo -rm -f ./$(DEPDIR)/vn.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \ uninstall-libLTLIBRARIES uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-libLTLIBRARIES install-man install-man1 install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installcheck-binPROGRAMS \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-includeHEADERS \ uninstall-libLTLIBRARIES uninstall-man uninstall-man1 .PRECIOUS: Makefile loc: cloc \ charname.c combine.c fr-charname.c iconv.c \ names.c outer.c recode.c request.c task.c \ $(ALL_STEPS) $(L_STEPS) common.h $(H_SURFACES) \ $(top_srcdir)/tables.py mergelex.py $(top_srcdir)/tests/Recode.pyx \ Makefile.am $(top_srcdir)/configure.ac $(top_srcdir)/Makefile.am \ $(top_srcdir)/doc/Makefile.am $(top_srcdir)/tests/Makefile.am $(top_srcdir)/bootstrap.conf merged.c: mergelex.py $(L_STEPS) echo '#include "config.h"' > merged.c (cd $(srcdir) && cat $(L_STEPS)) \ | $(PYTHON) $(srcdir)/mergelex.py > merged.tm1 $(LEX) -t -8 -Plibrecode_yy merged.tm1 > merged.tm2 grep -av '^# *line [0-9]' merged.tm2 >> merged.c rm merged.tm1 merged.tm2 recode.1: main.c $(top_srcdir)/configure.ac recode$(EXEEXT) $(AM_V_GEN)if ( touch $@.w && rm -f $@.w; ) >/dev/null 2>&1; then \ $(top_builddir)/build-aux/x-to-1 \ $(PERL) $(HELP2MAN) \ --locale=en_US.UTF-8 \ ./recode$(EXEEXT) recode.x $@; \ fi main.o: main.c ../config.status charname.lo: charname.h charname.h: ../tables.py $(MNEMONICS_DS) $(RFC1345_TXT) $(TABLES_PY) -C $(srcdir) -n $(MNEMONICS_DS) $(RFC1345_TXT) fr-charname.lo: fr-charname.h fr-charname.h: ../tables.py $(NOMS_CARACS) $(TABLES_PY) -C $(srcdir) -Fn $(NOMS_CARACS) iconv.lo: iconvdecl.h iconvdecl.h: ../tables.py $(TABLES_PY) -i lat1ansel.lo: lat1ansel.h lat1ansel.h: ansellat1.l $(top_srcdir)/build-aux/invert-l-to-h ansellat1.l > $@ lat1iso5426.lo: lat1iso5426.h lat1iso5426.h: iso5426lat1.l $(top_srcdir)/build-aux/invert-l-to-h iso5426lat1.l > $@ african.lo afrtran.lo atarist.lo bangbang.lo cdcnos.lo \ ebcdic.lo ibmpc.lo iconqnx.lo lat1asci.lo lat1iso5426.lo lat1ansel.lo \ java.lo mule.lo strip-data.lo testdump.lo ucs.lo utf16.lo utf7.lo utf8.lo \ varia.lo vn.lo flat.lo html.lo lat1ltex.lo lat1btex.lo lat1txte.lo rfc1345.lo \ texinfo.lo base64.lo dump.lo endline.lo permut.lo quoted.lo \ iconv.lo outer.lo: decsteps.h inisteps.h tersteps.h decsteps.h inisteps.h tersteps.h: stamp-steps stamp-steps: $(ALL_STEPS) merged.c @echo "Updating {dec,ini,ter}steps.h" @(cd $(srcdir) && grep -h '^module_' $(ALL_STEPS) merged.c) \ | sed 's/ .*//' > liste.tmp @sed 's/\(.*\)/bool \1 (struct recode_outer *);/' \ liste.tmp > decsteps.tmp @sed 's/\(.*\)/void del\1 (struct recode_outer *);/' \ liste.tmp >> decsteps.tmp @sed 's/\(.*\)/ if (!\1 (outer)) return false;/' \ liste.tmp > inisteps.tmp @sed 's/\(.*\)/ del\1 (outer);/' \ liste.tmp > tersteps.tmp @rm liste.tmp @if cmp -s $(srcdir)/decsteps.h decsteps.tmp; then rm decsteps.tmp; \ else mv decsteps.tmp $(srcdir)/decsteps.h; fi @if cmp -s $(srcdir)/inisteps.h inisteps.tmp; then rm inisteps.tmp; \ else mv inisteps.tmp $(srcdir)/inisteps.h; fi @if cmp -s $(srcdir)/tersteps.h tersteps.tmp; then rm tersteps.tmp; \ else mv tersteps.tmp $(srcdir)/tersteps.h; fi @echo timestamp > $(srcdir)/$@ rfc1345.lo: rfc1345.h rfc1345.h: ../tables.py $(MNEMONICS_DS) $(TABLES_PY) -C $(srcdir) -m $(MNEMONICS_DS) # There is duplication of work with making doc/rfc1345.texi. # This used to be combined, but it seems clearer to keep both separate. strip-pool.c strip-data.c: stamp-strip stamp-strip: ../tables.py $(MNEMONICS_DS) $(CHARSETS_DEF) $(TABLES_PY) -C $(srcdir) -p $(MNEMONICS_DS) $(CHARSETS_DEF) @echo timestamp > $(srcdir)/$@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: recode-3.7.15/src/atarist.c0000644000175000017500000001235114374760602011146 /* Conversion of files between different charsets and surfaces. Copyright © 1993-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1993. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" /* RFC 1345 style description for AtariST (non official). NUSHSXEXETEQAKBLBSHTLFVTFFCRSOSIDLD1D2D3D4NKSYEBCNEMSBECFSGSRSUS SP! " NbDO% & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? AtA B C D E F G H I J K L M N O P Q R S T U V W X Y Z <(//)>'>_ '!a b c d e f g h i j k l m n o p q r s t u v w x y z (!!!!)'?DT C,u:e'a>a:a!aac,e>e:e!i:i>i!A:AAE'aeAEo>o:o!u>u!y:O:U:CtPdYessf2 a'i'o'u'n?N?-a-o?ININO1214!I<<>>a?o?O/o/oeOEA!A?O?':''/-PICoRgTM ijIJA+B+G+D+H+W+Z+X+TjJ+K+L+M+N+S+E+P+ZJQ+R+ShT+N%K%M%P%ZjSECa00 a*b*G*p*S*s*Myt*F*h*Omd*Iof*(-*P=3+->==, 1988. # 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 3, 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, see . AUTOMAKE_OPTIONS = gnits bin_PROGRAMS = recode lib_LTLIBRARIES = librecode.la noinst_LTLIBRARIES = libmerged.la dist_man_MANS = recode.1 include_HEADERS = recode.h recodext.h H_STEPS = common.h decsteps.h inisteps.h tersteps.h \ $(H_SURFACES) noinst_HEADERS = $(H_STEPS) cleaner.h charname.h fr-charname.h iconvdecl.h \ rfc1345.h lat1iso5426.h lat1ansel.h EXTRA_DIST = stamp-steps stamp-strip $(L_STEPS) mergelex.py $(MANS) lat1ansel.h lat1iso5426.h CLEANFILES = iconvdecl.h C_STEPS = african.c afrtran.c atarist.c bangbang.c cdcnos.c \ ebcdic.c ibmpc.c iconqnx.c lat1asci.c lat1iso5426.c lat1ansel.c \ java.c mule.c strip-data.c testdump.c ucs.c utf16.c utf7.c utf8.c varia.c vn.c ALL_STEPS = $(C_STEPS) $(C_FALLBACKS) $(C_SURFACES) L_STEPS = ascilat1.l iso5426lat1.l ansellat1.l $(L_FALLBACKS) C_FALLBACKS = flat.c html.c lat1ltex.c lat1btex.c lat1txte.c rfc1345.c texinfo.c L_FALLBACKS = ltexlat1.l btexlat1.l txtelat1.l H_SURFACES = base64.h C_SURFACES = base64.c dump.c endline.c permut.c quoted.c recode_SOURCES = main.c mixed.c common.h recode_LDADD = librecode.la librecode_la_SOURCES = charname.c combine.c fr-charname.c iconv.c \ names.c outer.c recode.c request.c strip-pool.c task.c $(ALL_STEPS) \ $(include_HEADERS) $(noinst_HEADERS) $(H_STEPS) librecode_la_LDFLAGS = -no-undefined -version-info $(VERSION_INFO) $(LTLIBICONV) $(LTLIBINTL) \ $(LIB_CLOCK_GETTIME) $(LIB_GETRANDOM) $(LIB_HARD_LOCALE) $(LIB_MBRTOWC) $(LIB_SETLOCALE_NULL) librecode_la_LIBADD = ../lib/libgnu.la libmerged.la libmerged_la_SOURCES = merged.c libmerged_la_CPPFLAGS = $(NON_WARN_CFLAGS) loc: cloc \ charname.c combine.c fr-charname.c iconv.c \ names.c outer.c recode.c request.c task.c \ $(ALL_STEPS) $(L_STEPS) common.h $(H_SURFACES) \ $(top_srcdir)/tables.py mergelex.py $(top_srcdir)/tests/Recode.pyx \ Makefile.am $(top_srcdir)/configure.ac $(top_srcdir)/Makefile.am \ $(top_srcdir)/doc/Makefile.am $(top_srcdir)/tests/Makefile.am $(top_srcdir)/bootstrap.conf # Relative to $(srcdir). ALAIN = $(KELD) KELD = ../keld CHARSETS_DEF = $(KELD)/charsets.def MNEMONICS_DS = $(KELD)/iso10646.def $(KELD)/other.def $(KELD)/control.def RFC1345_TXT = $(KELD)/rfc1345.txt NOMS_CARACS = $(ALAIN)/NomsSeulsfinal.lst NON_WARN_CFLAGS = -I.. -I$(srcdir) $(ISYSTEM)$(top_builddir)/lib $(ISYSTEM)$(top_srcdir)/lib AM_CPPFLAGS = $(NON_WARN_CFLAGS) $(WARN_CFLAGS) DEFS = -DLIBDIR=\"$(libdir)\" @DEFS@ ETAGS_ARGS = $(L_STEPS) TAGS_DEPENDENCIES = $(L_STEPS) LEX = @LEX@ PYTHON = @PYTHON@ TABLES_PY = $(PYTHON) $(top_srcdir)/tables.py merged.c: mergelex.py $(L_STEPS) echo '#include "config.h"' > merged.c (cd $(srcdir) && cat $(L_STEPS)) \ | $(PYTHON) $(srcdir)/mergelex.py > merged.tm1 $(LEX) -t -8 -Plibrecode_yy merged.tm1 > merged.tm2 grep -av '^# *line [0-9]' merged.tm2 >> merged.c rm merged.tm1 merged.tm2 recode.1: main.c $(top_srcdir)/configure.ac recode$(EXEEXT) ## Exit gracefully if recode.1 is not writeable, such as during distcheck! $(AM_V_GEN)if ( touch $@.w && rm -f $@.w; ) >/dev/null 2>&1; then \ $(top_builddir)/build-aux/x-to-1 \ $(PERL) $(HELP2MAN) \ --locale=en_US.UTF-8 \ ./recode$(EXEEXT) recode.x $@; \ fi main.o: main.c ../config.status charname.lo: charname.h charname.h: ../tables.py $(MNEMONICS_DS) $(RFC1345_TXT) $(TABLES_PY) -C $(srcdir) -n $(MNEMONICS_DS) $(RFC1345_TXT) fr-charname.lo: fr-charname.h fr-charname.h: ../tables.py $(NOMS_CARACS) $(TABLES_PY) -C $(srcdir) -Fn $(NOMS_CARACS) iconv.lo: iconvdecl.h iconvdecl.h: ../tables.py $(TABLES_PY) -i lat1ansel.lo: lat1ansel.h lat1ansel.h: ansellat1.l $(top_srcdir)/build-aux/invert-l-to-h ansellat1.l > $@ lat1iso5426.lo: lat1iso5426.h lat1iso5426.h: iso5426lat1.l $(top_srcdir)/build-aux/invert-l-to-h iso5426lat1.l > $@ african.lo afrtran.lo atarist.lo bangbang.lo cdcnos.lo \ ebcdic.lo ibmpc.lo iconqnx.lo lat1asci.lo lat1iso5426.lo lat1ansel.lo \ java.lo mule.lo strip-data.lo testdump.lo ucs.lo utf16.lo utf7.lo utf8.lo \ varia.lo vn.lo flat.lo html.lo lat1ltex.lo lat1btex.lo lat1txte.lo rfc1345.lo \ texinfo.lo base64.lo dump.lo endline.lo permut.lo quoted.lo \ iconv.lo outer.lo: decsteps.h inisteps.h tersteps.h decsteps.h inisteps.h tersteps.h: stamp-steps stamp-steps: $(ALL_STEPS) merged.c @echo "Updating {dec,ini,ter}steps.h" @(cd $(srcdir) && grep -h '^module_' $(ALL_STEPS) merged.c) \ | sed 's/ .*//' > liste.tmp @sed 's/\(.*\)/bool \1 (struct recode_outer *);/' \ liste.tmp > decsteps.tmp @sed 's/\(.*\)/void del\1 (struct recode_outer *);/' \ liste.tmp >> decsteps.tmp @sed 's/\(.*\)/ if (!\1 (outer)) return false;/' \ liste.tmp > inisteps.tmp @sed 's/\(.*\)/ del\1 (outer);/' \ liste.tmp > tersteps.tmp @rm liste.tmp @if cmp -s $(srcdir)/decsteps.h decsteps.tmp; then rm decsteps.tmp; \ else mv decsteps.tmp $(srcdir)/decsteps.h; fi @if cmp -s $(srcdir)/inisteps.h inisteps.tmp; then rm inisteps.tmp; \ else mv inisteps.tmp $(srcdir)/inisteps.h; fi @if cmp -s $(srcdir)/tersteps.h tersteps.tmp; then rm tersteps.tmp; \ else mv tersteps.tmp $(srcdir)/tersteps.h; fi @echo timestamp > $(srcdir)/$@ rfc1345.lo: rfc1345.h rfc1345.h: ../tables.py $(MNEMONICS_DS) $(TABLES_PY) -C $(srcdir) -m $(MNEMONICS_DS) # There is duplication of work with making doc/rfc1345.texi. # This used to be combined, but it seems clearer to keep both separate. strip-pool.c strip-data.c: stamp-strip stamp-strip: ../tables.py $(MNEMONICS_DS) $(CHARSETS_DEF) $(TABLES_PY) -C $(srcdir) -p $(MNEMONICS_DS) $(CHARSETS_DEF) @echo timestamp > $(srcdir)/$@ recode-3.7.15/src/iso5426lat1.l0000644000175000017500000002045514374760602011411 /* * Copyright (c) 1998, Wolfram Schneider * Konrad Zuse Zentrum für Informationstechnik Berlin. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * * iso5426 to iso8859-1 conversion. This file support only a subset * of ISO 5426:1983. It is incomplete due the lack of free * available documentation ;-( * * The character conversion based on the german MAB2 (Maschinelles * Austauschformat für Bibliotheken) documentation, October 1996, * die Deutsche Bibliothek, Frankfurt am Main. * URL: http://www.ddb.de, ftp://ftp.ddb.de/pub/mab/ * * * http://lcweb.loc.gov/loc/standards/isotc46/sc4standards.html * Character sets: * ISO 5426:1983 - Extension of the Latin alphabet coded character * set for bibliographic information interchange * ISO 5426-2:1996 - Extension of the Latin alphabet coded character set * for bibliographic information interchange * Part 2: Latin characters used in minor European * languages and obsolete typography * * * ISO 5426:1983 * * Extension of the Latin alphabet coded character set for bibliographic * information interchange * * Contains a set of 76 graphic characters with their coded * representations. It includes a code table and a legend showing each * graphic, its name and use, and explanatory notes. Primarily intended * for information interchange among data processing systems and within * message transmission systems, this character set is designed to handle * information in 39 specified languages, as well as transliterated or * romanized forms of an additional 32 languages. These characters, * together with the characters in the international reference version of * ISO 646 (ISO escape sequence ESC 2/8 4/0), constitute a character set * for the international interchange of bibliographic citations, * including their annotations, in the Latin alphabet. * * ISO 5426-2:1996 * * Extension of the Latin alphabet coded character set for bibliographic * information interchange Part 2: Latin characters used in minor * European languages and obsolete typography * * Contains a set of 70 graphic characters, and their coded * representations. These characters form a supplement to those provided * in ISO 5426 by addressing less common and obsolete languages which use * the Latin script and obsolete printing conventions. Included is a code * table and a legend showing each graphic, its name and use, and * explanatory notes. This character set is primarily intended for * information interchange among data processing systems and within * message transmission systems. These characters, together with the * characters from ISO 646/IEC and ISO 5426, is intended to handle * information in the following languages: Anglo-Saxon, Greenlandic, * Lappish, Latin, Latvian (older forms), and Maltese. It is also * intended to cover printing conventions associated with older books, in * particular marks associated with binding signatures. * */ /* Step name: iso5426_latin1. */ %% \173 { recode_put_byte (123, subtask); } \174 { recode_put_byte (124, subtask); } \175 { recode_put_byte (125, subtask); } \37 { recode_put_byte (36, subtask); } \266 { recode_put_byte (158, subtask); } \241 { recode_put_byte (161, subtask); } \243 { recode_put_byte (163, subtask); } \244 { recode_put_byte (36, subtask); } \247 { recode_put_byte (167, subtask); } \210 { recode_put_byte (172, subtask); } \211 { recode_put_byte (172, subtask); } \253 { recode_put_byte (171, subtask); } \273 { recode_put_byte (187, subtask); } \277 { recode_put_byte (191, subtask); } \341 { recode_put_byte (198, subtask); } \342 { recode_put_byte (208, subtask); } \350 { recode_put_byte (76, subtask); } \351 { recode_put_byte (216, subtask); } \354 { recode_put_byte (254, subtask); } \361 { recode_put_byte (230, subtask); } \362 { recode_put_byte (100, subtask); } \363 { recode_put_byte (240, subtask); } \365 { recode_put_byte (134, subtask); } \370 { recode_put_byte (108, subtask); } \371 { recode_put_byte (248, subtask); } \373 { recode_put_byte (223, subtask); } \374 { recode_put_byte (222, subtask); } \301a { recode_put_byte (224, subtask); } \301e { recode_put_byte (232, subtask); } \301i { recode_put_byte (236, subtask); } \301o { recode_put_byte (242, subtask); } \301u { recode_put_byte (249, subtask); } \301A { recode_put_byte (192, subtask); } \301E { recode_put_byte (200, subtask); } \301I { recode_put_byte (204, subtask); } \301O { recode_put_byte (210, subtask); } \301U { recode_put_byte (217, subtask); } \302a { recode_put_byte (225, subtask); } \302e { recode_put_byte (233, subtask); } \302i { recode_put_byte (237, subtask); } \302o { recode_put_byte (243, subtask); } \302u { recode_put_byte (250, subtask); } \302y { recode_put_byte (253, subtask); } \302A { recode_put_byte (193, subtask); } \302E { recode_put_byte (201, subtask); } \302I { recode_put_byte (205, subtask); } \302O { recode_put_byte (211, subtask); } \302U { recode_put_byte (218, subtask); } \302Y { recode_put_byte (221, subtask); } \303a { recode_put_byte (226, subtask); } \303e { recode_put_byte (234, subtask); } \303i { recode_put_byte (238, subtask); } \303o { recode_put_byte (244, subtask); } \303u { recode_put_byte (251, subtask); } \303A { recode_put_byte (194, subtask); } \303E { recode_put_byte (202, subtask); } \303I { recode_put_byte (206, subtask); } \303O { recode_put_byte (212, subtask); } \303U { recode_put_byte (219, subtask); } \304a { recode_put_byte (227, subtask); } \304o { recode_put_byte (245, subtask); } \304n { recode_put_byte (241, subtask); } \304A { recode_put_byte (195, subtask); } \304O { recode_put_byte (213, subtask); } \304N { recode_put_byte (209, subtask); } \310e { recode_put_byte (235, subtask); } \310i { recode_put_byte (239, subtask); } \310y { recode_put_byte (255, subtask); } \310E { recode_put_byte (203, subtask); } \310I { recode_put_byte (207, subtask); } \312a { recode_put_byte (229, subtask); } \312A { recode_put_byte (197, subtask); } \320c { recode_put_byte (231, subtask); } \320C { recode_put_byte (199, subtask); } \311a { recode_put_byte (228, subtask); } \311o { recode_put_byte (246, subtask); } \311u { recode_put_byte (252, subtask); } \311A { recode_put_byte (196, subtask); } \311O { recode_put_byte (214, subtask); } \311U { recode_put_byte (220, subtask); } %% bool module_iso5426_latin1 (RECODE_OUTER outer) { return recode_declare_single (outer, "ISO_5426:1983-DB-MAB2", "Latin-1", outer->quality_variable_to_byte, NULL, transform_iso5426_latin1) && recode_declare_alias (outer, "ISO_5426", "ISO_5426:1983-DB-MAB2") && recode_declare_alias (outer, "DB-MAB2", "ISO_5426:1983-DB-MAB2") && recode_declare_alias (outer, "MAB2", "ISO_5426:1983-DB-MAB2") && recode_declare_alias (outer, "MAB", "ISO_5426:1983-DB-MAB2") && recode_declare_alias (outer, "DDB", "ISO_5426:1983-DB-MAB2"); /* Die Deutsche Bibliothek */ } void delmodule_iso5426_latin1 (RECODE_OUTER outer) { } recode-3.7.15/src/ibmpc.c0000644000175000017500000002712014374760602010571 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" /* Previously, the CR-LF surface was built-in. It is now handled through a separate, optional step. An optimisation might use a flag to trigger old built-in code. For now, depend on a variable preset to false. */ static const bool auto_crlf = false; #define DOS_EOF 26 /* oldish end of file */ #define DOS_CR 13 /* carriage return */ #define DOS_LF 10 /* line feed */ /* Correspondance for IBM PC ruler graphics characters into ASCII graphics approximations. The current principles are: - Single horizontal rulers are made up of dashes. - Double horizontal rulers are made up of equal signs. - Both single and double vertical are made up with `|'. - Both upper corners are rounded down with periods. - Lower corners are rounded up with grave/acute accent on left/right. - Other crossing rulers are approximated with plus signs, with exceptions for double horizontal ruler crossings but not at corners: they are equal signs inside a table, and `|' at left or right margin. */ unsigned char convert_rulers[48] = { '#', /* 176 */ '#', /* 177 */ '#', /* 178 */ '|', /* 179 */ '+', /* 180 */ '|', /* 181 */ '+', /* 182 */ '.', /* 183 */ '.', /* 184 */ '|', /* 185 */ '|', /* 186 */ '.', /* 187 */ '\'', /* 188 */ '\'', /* 189 */ '\'', /* 190 */ '.', /* 191 */ '`', /* 192 */ '+', /* 193 */ '+', /* 194 */ '+', /* 195 */ '-', /* 196 */ '+', /* 197 */ '|', /* 198 */ '+', /* 199 */ '`', /* 200 */ '.', /* 201 */ '=', /* 202 */ '=', /* 203 */ '|', /* 204 */ '=', /* 205 */ '=', /* 206 */ '=', /* 207 */ '+', /* 208 */ '=', /* 209 */ '+', /* 210 */ '`', /* 211 */ '`', /* 212 */ '.', /* 213 */ '.', /* 214 */ '+', /* 215 */ '=', /* 216 */ '\'', /* 217 */ '.', /* 218 */ '#', /* 219 */ '#', /* 220 */ '#', /* 221 */ '#', /* 222 */ '#', /* 223 */ }; /* Data for IBM PC to ISO Latin-1 code conversions. */ static struct recode_known_pair known_pairs[] = { { 20, 182}, /* pilcrow sign */ { 21, 167}, /* section sign */ {128, 199}, /* capital letter C with cedilla */ {129, 252}, /* small letter u with diaeresis */ {130, 233}, /* small letter e with acute accent */ {131, 226}, /* small letter a with circumflex accent */ {132, 228}, /* small letter a with diaeresis */ {133, 224}, /* small letter a with grave accent */ {134, 229}, /* small letter a with ring above */ {135, 231}, /* small letter c with cedilla */ {136, 234}, /* small letter e with circumflex accent */ {137, 235}, /* small letter e with diaeresis */ {138, 232}, /* small letter e with grave accent */ {139, 239}, /* small letter i with diaeresis */ {140, 238}, /* small letter i with circumflex accent */ {141, 236}, /* small letter i with grave accent */ {142, 196}, /* capital letter A with diaeresis */ {143, 197}, /* capital letter A with ring above */ {144, 201}, /* capital letter E with acute accent */ {145, 230}, /* small ligature a with e */ {146, 198}, /* capital ligature A with E */ {147, 244}, /* small letter o with circumblex accent */ {148, 246}, /* small letter o with diaeresis */ {149, 242}, /* small letter o with grave accent */ {150, 251}, /* small letter u with circumflex accent */ {151, 249}, /* small letter u with grave accent */ {152, 255}, /* small letter y with diaeresis */ {153, 214}, /* capital letter O with diaeresis */ {154, 220}, /* capital letter U with diaeresis */ {155, 162}, /* cent sign */ {156, 163}, /* pound sign */ {157, 165}, /* yen sign */ {160, 225}, /* small letter a with acute accent */ {161, 237}, /* small letter i with acute accent */ {162, 243}, /* small letter o with acute accent */ {163, 250}, /* small letter u with acute accent */ {164, 241}, /* small letter n with tilde */ {165, 209}, /* capital letter N with tilde */ {166, 170}, /* feminine ordinal indicator */ {167, 186}, /* masculine ordinal indicator */ {168, 191}, /* inverted question mark */ {170, 172}, /* not sign */ {171, 189}, /* vulgar fraction one half */ {172, 188}, /* vulgar fraction one quarter */ {173, 161}, /* inverted exclamation mark */ {174, 171}, /* left angle quotation mark */ {175, 187}, /* right angle quotation mark */ {225, 223}, /* small german letter sharp s */ {230, 181}, /* small Greek letter mu micro sign */ {241, 177}, /* plus-minus sign */ {246, 247}, /* division sign */ {248, 176}, /* degree sign */ {250, 183}, /* middle dot */ {253, 178}, /* superscript two */ {255, 160}, /* no-break space */ }; #define NUMBER_OF_PAIRS \ (sizeof (known_pairs) / sizeof (struct recode_known_pair)) static bool transform_latin1_ibmpc (RECODE_SUBTASK subtask) { if (subtask->step->fallback_routine == recode_reversibility) { const unsigned char *table = (const unsigned char *) subtask->step->step_table; int input_char; while (input_char = recode_get_byte (subtask), input_char != EOF) if (input_char == '\n') { recode_put_byte (DOS_CR, subtask); recode_put_byte (DOS_LF, subtask); } else recode_put_byte (table[input_char], subtask); } else { const char *const *table = (const char *const *) subtask->step->step_table; int input_char; while (input_char = recode_get_byte (subtask), input_char != EOF) if (input_char == '\n') { recode_put_byte (DOS_CR, subtask); recode_put_byte (DOS_LF, subtask); } else if (table[input_char]) recode_put_byte (*table[input_char], subtask); else RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); } SUBTASK_RETURN (subtask); } static bool transform_ibmpc_latin1 (RECODE_SUBTASK subtask) { if (subtask->step->fallback_routine == recode_reversibility) { const unsigned char *table = (const unsigned char *) subtask->step->step_table; int input_char = recode_get_byte (subtask); while (input_char != EOF) switch (input_char) { case DOS_EOF: RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); input_char = EOF; break; case DOS_CR: input_char = recode_get_byte (subtask); if (input_char == DOS_LF) { recode_put_byte ('\n', subtask); input_char = recode_get_byte (subtask); } else recode_put_byte (table[DOS_CR], subtask); break; case DOS_LF: RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); FALLTHROUGH; default: recode_put_byte (table[input_char], subtask); input_char = recode_get_byte (subtask); } } else { const char *const *table = (const char *const *) subtask->step->step_table; int input_char = recode_get_byte (subtask); while (input_char != EOF) switch (input_char) { case DOS_EOF: RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); input_char = EOF; break; case DOS_CR: input_char = recode_get_byte (subtask); if (input_char == DOS_LF) { recode_put_byte ('\n', subtask); input_char = recode_get_byte (subtask); } else if (table[DOS_CR]) recode_put_byte (*table[DOS_CR], subtask); else RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); break; case DOS_LF: RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); FALLTHROUGH; default: if (table[input_char]) recode_put_byte (*table[input_char], subtask); else RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); input_char = recode_get_byte (subtask); } } SUBTASK_RETURN (subtask); } static bool init_latin1_ibmpc (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; if (!recode_complete_pairs (request->outer, step, known_pairs, NUMBER_OF_PAIRS, true, true)) return false; if (auto_crlf) step->transform_routine = transform_latin1_ibmpc; else if (step->fallback_routine == recode_reversibility) step->transform_routine = recode_transform_byte_to_byte; else step->transform_routine = recode_transform_byte_to_variable; return true; } static bool init_ibmpc_latin1 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; unsigned char *table; if (before_options || after_options) return false; if (!recode_complete_pairs (outer, step, known_pairs, NUMBER_OF_PAIRS, true, false)) return false; if (auto_crlf) step->transform_routine = transform_ibmpc_latin1; else if (step->fallback_routine == recode_reversibility) step->transform_routine = recode_transform_byte_to_byte; else step->transform_routine = recode_transform_byte_to_variable; /* FIXME: Allow ascii_graphics even with strict mapping. Reported by David E. A. Wilson . */ if (request->ascii_graphics) { if (!ALLOC (table, 256, unsigned char)) return false; memcpy (table, step->step_table, 256); memcpy (table + 176, convert_rulers, 48); free (step->step_table); step->step_table = table; } return true; } bool module_ibmpc (RECODE_OUTER outer) { RECODE_ALIAS alias; if (!recode_declare_single (outer, "Latin-1", "IBM-PC", outer->quality_byte_to_variable, init_latin1_ibmpc, transform_latin1_ibmpc)) return false; if (!recode_declare_single (outer, "IBM-PC", "Latin-1", outer->quality_variable_to_variable, init_ibmpc_latin1, transform_ibmpc_latin1)) return false; if (alias = recode_declare_alias (outer, "IBM-PC", "IBM-PC"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "dos", "IBM-PC"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "MSDOS", "IBM-PC"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "pc", "IBM-PC"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; return true; } void delmodule_ibmpc (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/tersteps.h0000644000175000017500000000223513330773300011343 delmodule_african (outer); delmodule_afrtran (outer); delmodule_atarist (outer); delmodule_bangbang (outer); delmodule_cdcnos (outer); delmodule_ebcdic (outer); delmodule_ibmpc (outer); delmodule_iconqnx (outer); delmodule_latin1_ascii (outer); delmodule_latin1_iso5426 (outer); delmodule_latin1_ansel (outer); delmodule_java (outer); delmodule_mule (outer); delmodule_strips (outer); delmodule_testdump (outer); delmodule_ucs (outer); delmodule_utf16 (outer); delmodule_utf7 (outer); delmodule_utf8 (outer); delmodule_varia (outer); delmodule_vietnamese (outer); delmodule_flat (outer); delmodule_html (outer); delmodule_latin1_latex (outer); delmodule_latin1_bibtex (outer); delmodule_latin1_texte (outer); delmodule_rfc1345 (outer); delmodule_texinfo (outer); delmodule_base64 (outer); delmodule_dump (outer); delmodule_endline (outer); delmodule_permutations (outer); delmodule_quoted_printable (outer); delmodule_ascii_latin1 (outer); delmodule_iso5426_latin1 (outer); delmodule_ansel_latin1 (outer); delmodule_latex_latin1 (outer); delmodule_bibtex_latin1 (outer); delmodule_texte_latin1 (outer); recode-3.7.15/src/mule.c0000644000175000017500000000670114374760602010443 /* Conversion of files between different charsets and surfaces. Copyright © 1997-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1997. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" static bool transform_latin_mule (RECODE_SUBTASK subtask, unsigned prefix) { int character; while (character = recode_get_byte (subtask), character != EOF) { if (!IS_ASCII (character)) recode_put_byte (prefix, subtask); recode_put_byte (character, subtask); } SUBTASK_RETURN (subtask); } static bool transform_mule_latin (RECODE_SUBTASK subtask, unsigned prefix) { int character; while (character = recode_get_byte (subtask), character != EOF) if (IS_ASCII (character)) recode_put_byte (character, subtask); else if ((character & BIT_MASK (8)) == prefix) { character = recode_get_byte (subtask); while ((character & BIT_MASK (8)) == prefix) { /* This happens in practice, sometimes, that Emacs goes a bit berzerk and generates strings of prefix characters. Remove all succeeding prefixes in a row. This is irreversible. */ RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); character = recode_get_byte (subtask); } if (character == EOF) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } if (IS_ASCII (character)) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); recode_put_byte (character, subtask); } else RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); SUBTASK_RETURN (subtask); } #define TRANSFORM_LATIN(To_mule, From_mule, Prefix) \ \ static bool \ To_mule (RECODE_SUBTASK subtask) \ { \ return transform_latin_mule (subtask, Prefix); \ } \ \ static bool \ From_mule (RECODE_SUBTASK subtask) \ { \ return transform_mule_latin (subtask, Prefix); \ } TRANSFORM_LATIN (transform_latin1_mule, transform_mule_latin1, 129) TRANSFORM_LATIN (transform_latin2_mule, transform_mule_latin2, 130) /*-------------------. | Register methods. | `-------------------*/ bool module_mule (RECODE_OUTER outer) { return recode_declare_single (outer, "ISO-8859-1", "Mule", outer->quality_byte_to_variable, NULL, transform_latin1_mule) && recode_declare_single (outer, "Mule", "ISO-8859-1", outer->quality_variable_to_byte, NULL, transform_mule_latin1) && recode_declare_single (outer, "ISO-8859-2", "Mule", outer->quality_byte_to_variable, NULL, transform_latin2_mule) && recode_declare_single (outer, "Mule", "ISO-8859-2", outer->quality_variable_to_byte, NULL, transform_mule_latin2); } void delmodule_mule (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/fr-charname.h0000644000175000017500000232646514765654536011723 /* DO NOT MODIFY THIS FILE! It was generated by `recode/tables.py'. */ /* Conversion of files between different charsets and surfaces. Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . Suite 330, Boston, MA 02111-1307, USA. */ #define NUMBER_OF_SINGLES 236 #define MAX_CHARNAME_LENGTH 90 #define NUMBER_OF_CHARNAMES 10653 static const char *const word[4886] = { "lettre", /* \001 */ "syllabe", /* \002 */ "yi", /* \003 */ "arabe", /* \004 */ "minuscule", /* \005 */ "latine", /* \006 */ "de", /* \007 */ "majuscule", /* \010 */ "canadienne", /* \011 */ "ligature", /* \012 */ "en", /* \013 */ "hangûl", /* \014 */ "vers", /* \015 */ "idéogramme", /* \016 */ "clé", /* \017 */ "et", /* \020 */ "accent", /* \021 */ "symbole", /* \022 */ "éthiopienne", /* \023 */ "chiffre", /* \024 */ "compatibilité", /* \025 */ "diacritique", /* \026 */ "grecque", /* \027 */ "braille", /* \030 */ "combinaison", /* \031 */ "final", /* \032 */ "la", /* \033 */ "cyrillique", /* \034 */ "carré", /* \035 */ "isolé", /* \036 */ "point", /* \037 */ "chef", /* \040 */ "chinoise", /* \041 */ "voyelle", /* \042 */ "souscrit", /* \043 */ "à", /* \044 */ "katakana", /* \045 */ "disposé", /* \046 */ "mîm", /* \047 */ "le", /* \050 */ "cerclé", /* \051 */ "gauche", /* \052 */ "droite", /* \053 */ "porteur", /* \054 */ "initial", /* \055 */ "ya'", /* \056 */ "signe", /* \057 */ "esprit", /* \060 */ "flèche", /* \061 */ "aigu", /* \062 */ "a", /* \063 */ "o", /* \064 */ "filet", /* \065 */ "mongole", /* \066 */ "grave", /* \067 */ "double", /* \070 */ "demi-chasse", /* \071 */ "circonflexe", /* \072 */ "pleine", /* \073 */ "cjc", /* \074 */ "entre", /* \075 */ "idéographique", /* \076 */ "parenthèses", /* \077 */ "alif", /* \100 */ "bas", /* \101 */ "haut", /* \102 */ "i", /* \103 */ "iota", /* \104 */ "chasse", /* \105 */ "dévanâgarî", /* \106 */ "un", /* \107 */ "tibétaine", /* \110 */ "ha'", /* \111 */ "cri", /* \112 */ "ou", /* \113 */ "des", /* \114 */ "djîm", /* \115 */ "fin", /* \116 */ "tch'ôsong", /* \117 */ "tibétain", /* \120 */ "bengali", /* \121 */ "crochet", /* \122 */ "plaines", /* \123 */ "hiragana", /* \124 */ "arménienne", /* \125 */ "chérokie", /* \126 */ "deux", /* \127 */ "e", /* \130 */ "médial", /* \131 */ "u", /* \132 */ "djôngsong", /* \133 */ "rude", /* \134 */ "runique", /* \135 */ "trois", /* \136 */ "hébraïque", /* \137 */ "kannara", /* \140 */ "télougou", /* \141 */ "oriya", /* \142 */ "doux", /* \143 */ "goudjarati", /* \144 */ "malayalam", /* \145 */ "géorgienne", /* \146 */ "blanc", /* \147 */ "gourmoukhî", /* \150 */ "gras", /* \151 */ "singhalaise", /* \152 */ "thaïe", /* \153 */ "fonction", /* \154 */ "apl", /* \155 */ "hamza", /* \156 */ "khmère", /* \157 */ "maksoura", /* \160 */ "syriaque", /* \161 */ "télégraphique", /* \162 */ "djoungsong", /* \163 */ "", /* \164 */ "avec", /* \165 */ "tréma", /* \166 */ "bopomofo", /* \167 */ "r", /* \170 */ "kha'", /* \171 */ "tamoul", /* \172 */ "tilde", /* \173 */ "égal", /* \174 */ "macron", /* \175 */ "petit", /* \176 */ "birmane", /* \177 */ "cerclée", /* \200 */ "modificative", /* \201 */ "oméga", /* \202 */ "vertical", /* \203 */ "alpha", /* \204 */ "marque", /* \205 */ "vocalique", /* \206 */ "lam", /* \207 */ "noir", /* \210 */ "nombre", /* \211 */ "l", /* \212 */ "du", /* \213 */ "brève", /* \214 */ "plus", /* \215 */ "noûn", /* \216 */ "thâna", /* \217 */ "é", /* \220 */ "quatre", /* \221 */ "droit", /* \222 */ "hébreu", /* \223 */ "s", /* \224 */ "êta", /* \225 */ "caron", /* \226 */ "huit", /* \227 */ "laotienne", /* \230 */ "cinq", /* \231 */ "hé'", /* \232 */ "barré", /* \233 */ "té'", /* \234 */ "ali", /* \235 */ "gali", /* \236 */ "subjointe", /* \237 */ "h", /* \240 */ "ka", /* \241 */ "n", /* \242 */ "horizontal", /* \243 */ "ligne", /* \244 */ "ni", /* \245 */ "sîn", /* \246 */ "barre", /* \247 */ "chîn", /* \250 */ "mkhedrouli", /* \251 */ "points", /* \252 */ "sept", /* \253 */ "assomtavrouli", /* \254 */ "kaf", /* \255 */ "six", /* \256 */ "verticale", /* \257 */ "neuf", /* \260 */ "romain", /* \261 */ "t", /* \262 */ "upsilon", /* \263 */ "", /* \264 */ "forme", /* \265 */ "noire", /* \266 */ "y", /* \267 */ "g", /* \270 */ "khmer", /* \271 */ "sans", /* \272 */ "z", /* \273 */ "cercle", /* \274 */ "coin", /* \275 */ "cédille", /* \276 */ "d", /* \277 */ "m", /* \300 */ "ma", /* \301 */ "négatif", /* \302 */ "souscrite", /* \303 */ "rond", /* \304 */ "jour", /* \305 */ "vignette", /* \306 */ "ya", /* \307 */ "ô", /* \310 */ "aï", /* \311 */ "d'ogam", /* \312 */ "ta", /* \313 */ "todo", /* \314 */ "c", /* \315 */ "ha", /* \316 */ "î", /* \317 */ "blanche", /* \320 */ "grec", /* \321 */ "inférieur", /* \322 */ "pointant", /* \323 */ "ra", /* \324 */ "â", /* \325 */ "ba'", /* \326 */ "culbuté", /* \327 */ "epsilon", /* \330 */ "pa", /* \331 */ "virgule", /* \332 */ "zéro", /* \333 */ "éthiopien", /* \334 */ "aou", /* \335 */ "b", /* \336 */ "caractère", /* \337 */ "cornu", /* \340 */ "crosse", /* \341 */ "grand", /* \342 */ "heure", /* \343 */ "oû", /* \344 */ "ra'", /* \345 */ "supérieur", /* \346 */ "ton", /* \347 */ "triangle", /* \350 */ "w", /* \351 */ "dad", /* \352 */ "fa'", /* \353 */ "k", /* \354 */ "moitié", /* \355\001 */ "na", /* \355\002 */ "simple", /* \355\003 */ "da", /* \355\004 */ "pointe", /* \355\005 */ "sa", /* \355\006 */ "sad", /* \355\007 */ "sîbé", /* \355\010 */ "tiret", /* \355\011 */ "c-simplifié", /* \355\012 */ "daguèch", /* \355\013 */ "mongol", /* \355\014 */ "réfléchi", /* \355\015 */ "taquet", /* \355\016 */ "étoile", /* \355\017 */ "bloc", /* \355\020 */ "ga", /* \355\021 */ "moins", /* \355\022 */ "p", /* \355\023 */ "présentation", /* \355\024 */ "que", /* \355\025 */ "tcha", /* \355\026 */ "v", /* \355\027 */ "x", /* \355\030 */ "'aïn", /* \355\031 */ "arabe-hindi", /* \355\032 */ "birman", /* \355\033 */ "cha", /* \355\034 */ "croix", /* \355\035 */ "dix", /* \355\036 */ "empattement", /* \355\037 */ "omicron", /* \355\040 */ "qaf", /* \355\041 */ "yo", /* \355\042 */ "d'annotation", /* \355\043 */ "laotien", /* \355\044 */ "non", /* \355\045 */ "oblique", /* \355\046 */ "séparateur", /* \355\047 */ "ta'", /* \355\050 */ "tonos", /* \355\051 */ "wa", /* \355\052 */ "waw", /* \355\053 */ "ba", /* \355\054 */ "j", /* \355\055 */ "kha", /* \355\056 */ "ogonek", /* \355\057 */ "pas", /* \355\060 */ "pour", /* \355\061 */ "thé'", /* \355\062 */ "dialytika", /* \355\063 */ "f", /* \355\064 */ "ghaïn", /* \355\065 */ "hameçon", /* \355\066 */ "mandchou", /* \355\067 */ "nga", /* \355\070 */ "pied-noir", /* \355\071 */ "so", /* \355\072 */ "tché", /* \355\073 */ "tha", /* \355\074 */ "espace", /* \355\075 */ "exposant", /* \355\076 */ "quadrat", /* \355\077 */ "renversée", /* \355\100 */ "tho", /* \355\101 */ "tta", /* \355\102 */ "za", /* \355\103 */ "cramponné", /* \355\104 */ "deux-points", /* \355\105 */ "dja", /* \355\106 */ "fraction", /* \355\107 */ "gha", /* \355\110 */ "ho", /* \355\111 */ "indice", /* \355\112 */ "mu", /* \355\113 */ "naskapi", /* \355\114 */ "no", /* \355\115 */ "rr", /* \355\116 */ "astérisque", /* \355\117 */ "branches", /* \355\120 */ "copte", /* \355\121 */ "dda", /* \355\122 */ "grasse", /* \355\123 */ "gros", /* \355\124 */ "parenthèse", /* \355\125 */ "pha", /* \355\126 */ "sara", /* \355\127 */ "trait", /* \355\130 */ "ttha", /* \355\131 */ "équivalent", /* \355\132 */ "brisé", /* \355\133 */ "contour", /* \355\134 */ "demi", /* \355\135 */ "digramme", /* \355\136 */ "guillemet", /* \355\137 */ "mo", /* \355\140 */ "médian", /* \355\141 */ "ne", /* \355\142 */ "nna", /* \355\143 */ "petite", /* \355\144 */ "renversé", /* \355\145 */ "ronde", /* \355\146 */ "sayissi", /* \355\147 */ "sur", /* \355\150 */ "thaï", /* \355\151 */ "wo", /* \355\152 */ "you", /* \355\153 */ "ça", /* \355\154 */ "bha", /* \355\155 */ "chadda", /* \355\156 */ "commande", /* \355\157 */ "cri-y", /* \355\160 */ "d'échecs", /* \355\161 */ "ddha", /* \355\162 */ "description", /* \355\163 */ "dha", /* \355\164 */ "finale", /* \355\165 */ "hangzhou", /* \355\166 */ "harpon", /* \355\167 */ "jeu", /* \355\170 */ "ko", /* \355\171 */ "lo", /* \355\172 */ "opérateur", /* \355\173 */ "pé", /* \355\174 */ "q", /* \355\175 */ "ro", /* \355\176 */ "son", /* \355\177 */ "to", /* \355\200 */ "tsa", /* \355\201 */ "ê", /* \355\202 */ "ña", /* \355\203 */ "arc", /* \355\204 */ "coeur", /* \355\205 */ "jé", /* \355\206 */ "kirghize", /* \355\207 */ "ll", /* \355\210 */ "mgo", /* \355\211 */ "oe", /* \355\212 */ "roc", /* \355\213 */ "rra", /* \355\214 */ "rtags", /* \355\215 */ "rétroflexe", /* \355\216 */ "sens", /* \355\217 */ "souligné", /* \355\220 */ "ti", /* \355\221 */ "triple", /* \355\222 */ "alpaprâna", /* \355\223 */ "anousvâra", /* \355\224 */ "bref", /* \355\225 */ "coup", /* \355\226 */ "fa", /* \355\227 */ "glotte", /* \355\230 */ "mahâprâna", /* \355\231 */ "mi", /* \355\232 */ "normal", /* \355\233 */ "par", /* \355\234 */ "pi", /* \355\235 */ "ponctuation", /* \355\236 */ "prime", /* \355\237 */ "quartier", /* \355\240 */ "souscrits", /* \355\241 */ "tchha", /* \355\242 */ "va", /* \355\243 */ "virâma", /* \355\244 */ "visarga", /* \355\245 */ "étendu", /* \355\246 */ "cent", /* \355\247 */ "comme", /* \355\250 */ "dans", /* \355\251 */ "dent", /* \355\252 */ "djha", /* \355\253 */ "do", /* \355\254 */ "empennage", /* \355\255 */ "gué", /* \355\256 */ "hi", /* \355\257 */ "huitièmes", /* \355\260 */ "intégrale", /* \355\261 */ "ié", /* \355\262 */ "kho", /* \355\263 */ "large", /* \355\264 */ "lla", /* \355\265 */ "long", /* \355\266 */ "longueur", /* \355\267 */ "losange", /* \355\270 */ "mais", /* \355\271 */ "maï", /* \355\272 */ "mille", /* \355\273 */ "monétaire", /* \355\274 */ "po", /* \355\275 */ "shad", /* \355\276 */ "si", /* \355\277 */ "tchiûtch", /* \355\300 */ "tcho", /* \355\301 */ "tu", /* \355\302 */ "té", /* \355\303 */ "yig", /* \355\304 */ "yé", /* \355\305 */ "abkhaze", /* \355\306 */ "ae", /* \355\307 */ "apostrophe", /* \355\310 */ "au", /* \355\311 */ "chine", /* \355\312 */ "cri-th", /* \355\313 */ "d'exclamation", /* \355\314 */ "d'interrogation", /* \355\315 */ "d'un", /* \355\316 */ "d'union", /* \355\317 */ "dal", /* \355\320 */ "douze", /* \355\321 */ "début", /* \355\322 */ "ej", /* \355\323 */ "gaf", /* \355\324 */ "glottal", /* \355\325 */ "grosse", /* \355\326 */ "hiûh", /* \355\327 */ "index", /* \355\330 */ "iûng", /* \355\331 */ "k'iûk'", /* \355\332 */ "ke", /* \355\333 */ "ki", /* \355\334 */ "kiyok", /* \355\335 */ "me", /* \355\336 */ "miûm", /* \355\337 */ "ng", /* \355\340 */ "niûn", /* \355\341 */ "nou", /* \355\342 */ "nunavik", /* \355\343 */ "ombrée", /* \355\344 */ "ouvert", /* \355\345 */ "p'iûp'", /* \355\346 */ "piûp", /* \355\347 */ "rdel", /* \355\350 */ "ri", /* \355\351 */ "riûl", /* \355\352 */ "siôs", /* \355\353 */ "sous-groupe", /* \355\354 */ "sud-est", /* \355\355 */ "supérieure", /* \355\356 */ "t'iût'", /* \355\357 */ "tch'iûtch'", /* \355\360 */ "tchandra", /* \355\361 */ "tikût", /* \355\362 */ "trigramme", /* \355\363 */ "wi", /* \355\364 */ "yousse", /* \355\365 */ "yu", /* \355\366 */ "zha", /* \355\367 */ "zza'", /* \355\370 */ "zé", /* \355\371 */ "écaille", /* \355\372 */ "ajouré", /* \355\373 */ "alef", /* \355\374 */ "ang", /* \355\375 */ "angle", /* \355\376 */ "autour", /* \355\377 */ "barrée", /* \356\001 */ "bo", /* \356\002 */ "bois", /* \356\003 */ "bouclé", /* \356\004 */ "bu", /* \356\005 */ "cadratin", /* \356\006 */ "demi-cercle", /* \356\007 */ "diga", /* \356\010 */ "eng", /* \356\011 */ "enne", /* \356\012 */ "eu", /* \356\013 */ "famille", /* \356\014 */ "fantaisie", /* \356\015 */ "fo", /* \356\016 */ "gôl", /* \356\017 */ "hé", /* \356\020 */ "image", /* \356\021 */ "inférieure", /* \356\022 */ "ku", /* \356\023 */ "madda", /* \356\024 */ "nord-est", /* \356\025 */ "nord-ouest", /* \356\026 */ "nu", /* \356\027 */ "ombre", /* \356\030 */ "onze", /* \356\031 */ "par-dessus", /* \356\032 */ "partir", /* \356\033 */ "pharyngal", /* \356\034 */ "pho", /* \356\035 */ "pointé", /* \356\036 */ "re", /* \356\037 */ "rhô", /* \356\040 */ "ru", /* \356\041 */ "ré", /* \356\042 */ "schwa", /* \356\043 */ "se", /* \356\044 */ "seize", /* \356\045 */ "soleil", /* \356\046 */ "transmission", /* \356\047 */ "tsheg", /* \356\050 */ "tsé", /* \356\051 */ "vingt", /* \356\052 */ "accolade", /* \356\053 */ "arménien", /* \356\054 */ "carrée", /* \356\055 */ "cho", /* \356\056 */ "contient", /* \356\057 */ "couvrante", /* \356\060 */ "d'insertion", /* \356\061 */ "delta", /* \356\062 */ "demi-rond", /* \356\063 */ "di", /* \356\064 */ "djé", /* \356\065 */ "dz", /* \356\066 */ "dza", /* \356\067 */ "eau", /* \356\070 */ "farsi", /* \356\071 */ "gamma", /* \356\072 */ "go", /* \356\073 */ "he", /* \356\074 */ "inversée", /* \356\075 */ "iotacisme", /* \356\076 */ "katakana-hiragana", /* \356\077 */ "lenticulaire", /* \356\100 */ "li", /* \356\101 */ "logique", /* \356\102 */ "lune", /* \356\103 */ "mèn", /* \356\104 */ "numérateur", /* \356\105 */ "point-virgule", /* \356\106 */ "positif", /* \356\107 */ "produit", /* \356\110 */ "puce", /* \356\111 */ "quadrant", /* \356\112 */ "rectangle", /* \356\113 */ "répétition", /* \356\114 */ "simplifié", /* \356\115 */ "singhalais", /* \356\116 */ "soung", /* \356\117 */ "sous-ensemble", /* \356\120 */ "suit", /* \356\121 */ "sur-ensemble", /* \356\122 */ "sé", /* \356\123 */ "tam", /* \356\124 */ "tchandrabindou", /* \356\125 */ "tchim'", /* \356\126 */ "te", /* \356\127 */ "terre", /* \356\130 */ "thi", /* \356\131 */ "thé", /* \356\132 */ "triangulaire", /* \356\133 */ "vo", /* \356\134 */ "vrakhy", /* \356\135 */ "zay", /* \356\136 */ "zo", /* \356\137 */ "è", /* \356\140 */ "ajourée", /* \356\141 */ "approximativement", /* \356\142 */ "arrêt", /* \356\143 */ "be", /* \356\144 */ "bea'", /* \356\145 */ "beha'", /* \356\146 */ "bourre", /* \356\147 */ "bulletin", /* \356\150 */ "bé", /* \356\151 */ "can", /* \356\152 */ "che", /* \356\153 */ "clic", /* \356\154 */ "couché", /* \356\155 */ "culbutée", /* \356\156 */ "d'appareil", /* \356\157 */ "d'itération", /* \356\160 */ "damma", /* \356\161 */ "dix-huit", /* \356\162 */ "dix-neuf", /* \356\163 */ "dix-sept", /* \356\164 */ "doatchachmi", /* \356\165 */ "dya'", /* \356\166 */ "dzé", /* \356\167 */ "dé", /* \356\170 */ "ech", /* \356\171 */ "encadré", /* \356\172 */ "englobant", /* \356\173 */ "esclave", /* \356\174 */ "esse", /* \356\175 */ "est", /* \356\176 */ "fatha", /* \356\177 */ "fathatan", /* \356\200 */ "feu", /* \356\201 */ "fi", /* \356\202 */ "fixe", /* \356\203 */ "fé", /* \356\204 */ "ge", /* \356\205 */ "gi", /* \356\206 */ "gothique", /* \356\207 */ "gter", /* \356\210 */ "hachuré", /* \356\211 */ "huitième", /* \356\212 */ "hâ", /* \356\213 */ "infirme", /* \356\214 */ "jusqu'à", /* \356\215 */ "kana", /* \356\216 */ "kasra", /* \356\217 */ "keha'", /* \356\220 */ "kombouva", /* \356\221 */ "ké", /* \356\222 */ "longue", /* \356\223 */ "lé", /* \356\224 */ "manger", /* \356\225 */ "mou", /* \356\226 */ "ngo", /* \356\227 */ "ngoa'", /* \356\230 */ "noukta", /* \356\231 */ "nya'", /* \356\232 */ "né", /* \356\233 */ "ondulé", /* \356\234 */ "original", /* \356\235 */ "oua", /* \356\236 */ "oué", /* \356\237 */ "ouïgour", /* \356\240 */ "pa'", /* \356\241 */ "peha'", /* \356\242 */ "phi", /* \356\243 */ "pied", /* \356\244 */ "plume", /* \356\245 */ "précède", /* \356\246 */ "qa", /* \356\247 */ "quatorze", /* \356\250 */ "queue", /* \356\251 */ "quinze", /* \356\252 */ "repère", /* \356\253 */ "ssa", /* \356\254 */ "su", /* \356\255 */ "sélecteur", /* \356\256 */ "tcheha'", /* \356\257 */ "teha'", /* \356\260 */ "th", /* \356\261 */ "treize", /* \356\262 */ "tta'", /* \356\263 */ "tteha'", /* \356\264 */ "tô", /* \356\265 */ "va'", /* \356\266 */ "visage", /* \356\267 */ "voisé", /* \356\270 */ "vote", /* \356\271 */ "we", /* \356\272 */ "wé", /* \356\273 */ "yod", /* \356\274 */ "yô", /* \356\275 */ "ze", /* \356\276 */ "zi", /* \356\277 */ "élevé", /* \356\300 */ "am", /* \356\301 */ "anglais", /* \356\302 */ "angulaire", /* \356\303 */ "barbe", /* \356\304 */ "barri", /* \356\305 */ "bi", /* \356\306 */ "bêta", /* \356\307 */ "cantilation", /* \356\310 */ "centre", /* \356\311 */ "chi", /* \356\312 */ "ché", /* \356\313 */ "ciseaux", /* \356\314 */ "code", /* \356\315 */ "courte", /* \356\316 */ "couvrant", /* \356\317 */ "cube", /* \356\320 */ "dalèt", /* \356\321 */ "dché", /* \356\322 */ "dhal", /* \356\323 */ "dispositif", /* \356\324 */ "dkar", /* \356\325 */ "dur", /* \356\326 */ "elle", /* \356\327 */ "emme", /* \356\330 */ "erre", /* \356\331 */ "flèches", /* \356\332 */ "gua'", /* \356\333 */ "guillemet-apostrophe", /* \356\334 */ "guillemet-virgule", /* \356\335 */ "herbe", /* \356\336 */ "horizontale", /* \356\337 */ "hu", /* \356\340 */ "ijitsa", /* \356\341 */ "j-simplifié", /* \356\342 */ "khi", /* \356\343 */ "khé", /* \356\344 */ "km", /* \356\345 */ "koppa", /* \356\346 */ "l'avant", /* \356\347 */ "lambda", /* \356\350 */ "lamèd", /* \356\351 */ "larmé", /* \356\352 */ "latin", /* \356\353 */ "lou", /* \356\354 */ "main", /* \356\355 */ "marbouta", /* \356\356 */ "multiplication", /* \356\357 */ "mé", /* \356\360 */ "mém", /* \356\361 */ "nag", /* \356\362 */ "neige", /* \356\363 */ "noeud", /* \356\364 */ "nor", /* \356\365 */ "négation", /* \356\366 */ "ohm", /* \356\367 */ "om", /* \356\370 */ "ondulée", /* \356\371 */ "oui", /* \356\372 */ "ouo", /* \356\373 */ "page", /* \356\374 */ "paire", /* \356\375 */ "patah", /* \356\376 */ "pe", /* \356\377 */ "penché", /* \357\001 */ "perluète", /* \357\002 */ "pique", /* \357\003 */ "piûp-siôs", /* \357\004 */ "pointes", /* \357\005 */ "pointeur", /* \357\006 */ "pointillé", /* \357\007 */ "pointillée", /* \357\010 */ "pointillés", /* \357\011 */ "potence", /* \357\012 */ "presque", /* \357\013 */ "privé", /* \357\014 */ "prolongé", /* \357\015 */ "promenade", /* \357\016 */ "psi", /* \357\017 */ "quadruple", /* \357\020 */ "quart", /* \357\021 */ "rad", /* \357\022 */ "rafe", /* \357\023 */ "remplacement", /* \357\024 */ "riûl-hiûh", /* \357\025 */ "rnoûn", /* \357\026 */ "réception", /* \357\027 */ "sañaka", /* \357\030 */ "semi-direct", /* \357\031 */ "sigma", /* \357\032 */ "sixième", /* \357\033 */ "socle", /* \357\034 */ "sortie", /* \357\035 */ "sou", /* \357\036 */ "soudé", /* \357\037 */ "soukoun", /* \357\040 */ "sous", /* \357\041 */ "ssangkiyok", /* \357\042 */ "ssangsiôs", /* \357\043 */ "sud", /* \357\044 */ "sud-ouest", /* \357\045 */ "syriaques", /* \357\046 */ "tabulation", /* \357\047 */ "texte", /* \357\050 */ "tortue", /* \357\051 */ "téléphone", /* \357\052 */ "unique", /* \357\053 */ "variation", /* \357\054 */ "ve", /* \357\055 */ "vé", /* \357\056 */ "xi", /* \357\057 */ "yidich", /* \357\060 */ "yètch", /* \357\061 */ "yérou", /* \357\062 */ "zone", /* \357\063 */ "ère", /* \357\064 */ "ño", /* \357\065 */ "an", /* \357\066 */ "arrobe", /* \357\067 */ "astrologique", /* \357\070 */ "avagraha", /* \357\071 */ "bayanna", /* \357\072 */ "boucle", /* \357\073 */ "bèt", /* \357\074 */ "ca", /* \357\075 */ "centime", /* \357\076 */ "ch", /* \357\077 */ "chaîne", /* \357\100 */ "chin", /* \357\101 */ "ciel", /* \357\102 */ "cinquante", /* \357\103 */ "cinquième", /* \357\104 */ "cinquièmes", /* \357\105 */ "cm", /* \357\106 */ "constante", /* \357\107 */ "corne", /* \357\110 */ "couteau", /* \357\111 */ "crayon", /* \357\112 */ "cri-n", /* \357\113 */ "croisillon", /* \357\114 */ "cuir", /* \357\115 */ "d'abréviation", /* \357\116 */ "d'accentuation", /* \357\117 */ "d'amorce", /* \357\120 */ "d'en", /* \357\121 */ "d'une", /* \357\122 */ "dahal", /* \357\123 */ "dammatan", /* \357\124 */ "dantadja", /* \357\125 */ "dayanna", /* \357\126 */ "ddahal", /* \357\127 */ "ddal", /* \357\130 */ "ddayanna", /* \357\131 */ "degré", /* \357\132 */ "demi-cadratin", /* \357\133 */ "dessus", /* \357\134 */ "diagonal", /* \357\135 */ "différent", /* \357\136 */ "division", /* \357\137 */ "djayanna", /* \357\140 */ "dji", /* \357\141 */ "djou", /* \357\142 */ "dollar", /* \357\143 */ "dragon", /* \357\144 */ "droite-à-gauche", /* \357\145 */ "dul", /* \357\146 */ "encochée", /* \357\147 */ "fermé", /* \357\150 */ "flocon", /* \357\151 */ "floral", /* \357\152 */ "fou", /* \357\153 */ "gauche-à-droite", /* \357\154 */ "gayanna", /* \357\155 */ "gayanoukitta", /* \357\156 */ "gou", /* \357\157 */ "groin", /* \357\160 */ "gsum", /* \357\161 */ "gu", /* \357\162 */ "haa", /* \357\163 */ "hampe", /* \357\164 */ "hampé", /* \357\165 */ "harmonie", /* \357\166 */ "hataf", /* \357\167 */ "haut-bas", /* \357\170 */ "hioun", /* \357\171 */ "hè", /* \357\172 */ "héracléen", /* \357\173 */ "hî", /* \357\174 */ "hô", /* \357\175 */ "il", /* \357\176 */ "in", /* \357\177 */ "indicateur", /* \357\200 */ "ini", /* \357\201 */ "inscrit", /* \357\202 */ "insécable", /* \357\203 */ "interligne", /* \357\204 */ "interlinéaire", /* \357\205 */ "intersection", /* \357\206 */ "introducteur", /* \357\207 */ "ja", /* \357\210 */ "ja'", /* \357\211 */ "jambage", /* \357\212 */ "jo", /* \357\213 */ "kappa", /* \357\214 */ "kapyo-ounmiûm", /* \357\215 */ "kapyo-ounp'iûp'", /* \357\216 */ "kapyo-ounpiûp", /* \357\217 */ "kasratan", /* \357\220 */ "khan", /* \357\221 */ "khaï", /* \357\222 */ "kiyok-siôs", /* \357\223 */ "kouâ", /* \357\224 */ "kssa", /* \357\225 */ "kétti", /* \357\226 */ "larmée", /* \357\227 */ "lha", /* \357\230 */ "libre", /* \357\231 */ "llla", /* \357\232 */ "man", /* \357\233 */ "mapiq", /* \357\234 */ "milliers", /* \357\235 */ "mince", /* \357\236 */ "miûm-piûp", /* \357\237 */ "mm", /* \357\240 */ "mouche", /* \357\241 */ "mouâ", /* \357\242 */ "moûrdhadja", /* \357\243 */ "multiensemble", /* \357\244 */ "multiplié", /* \357\245 */ "méga", /* \357\246 */ "niûn-hiûh", /* \357\247 */ "niûn-tchiûtch", /* \357\250 */ "niûn-tikût", /* \357\251 */ "note", /* \357\252 */ "noun", /* \357\253 */ "nouâ", /* \357\254 */ "obèle", /* \357\255 */ "oiseau", /* \357\256 */ "ombré", /* \357\257 */ "on", /* \357\260 */ "os", /* \357\261 */ "ouest", /* \357\262 */ "ouk", /* \357\263 */ "ouâ", /* \357\264 */ "ouô", /* \357\265 */ "palatal", /* \357\266 */ "pansiôs", /* \357\267 */ "paragraphes", /* \357\270 */ "parallèle", /* \357\271 */ "percée", /* \357\272 */ "pethâhhâ", /* \357\273 */ "pinceau", /* \357\274 */ "pontet", /* \357\275 */ "porte", /* \357\276 */ "postale", /* \357\277 */ "pouâ", /* \357\300 */ "pu", /* \357\301 */ "qamats", /* \357\302 */ "qi", /* \357\303 */ "qo", /* \357\304 */ "quarts", /* \357\305 */ "racine", /* \357\306 */ "rha", /* \357\307 */ "rites", /* \357\310 */ "riûl-kiyok", /* \357\311 */ "riûl-miûm", /* \357\312 */ "riûl-p'iûp'", /* \357\313 */ "riûl-piûp", /* \357\314 */ "riûl-siôs", /* \357\315 */ "riûl-t'iût'", /* \357\316 */ "rou", /* \357\317 */ "roupie", /* \357\320 */ "rra'", /* \357\321 */ "râ", /* \357\322 */ "rèch", /* \357\323 */ "réfléchie", /* \357\324 */ "second", /* \357\325 */ "semi-voisé", /* \357\326 */ "sha", /* \357\327 */ "siôs-kiyok", /* \357\330 */ "siôs-piûp", /* \357\331 */ "siôs-tikût", /* \357\332 */ "société", /* \357\333 */ "soie", /* \357\334 */ "soua", /* \357\335 */ "souâ", /* \357\336 */ "ssangiûng", /* \357\337 */ "ssangpiûp", /* \357\340 */ "ssangtchiûtch", /* \357\341 */ "ssangtikût", /* \357\342 */ "strictement", /* \357\343 */ "sublinéaire", /* \357\344 */ "substitution", /* \357\345 */ "supralinéaire", /* \357\346 */ "suspension", /* \357\347 */ "tabulateur", /* \357\350 */ "tav", /* \357\351 */ "tche", /* \357\352 */ "tchi", /* \357\353 */ "tchouâ", /* \357\354 */ "tertre", /* \357\355 */ "than", /* \357\356 */ "thâ", /* \357\357 */ "thêta", /* \357\360 */ "thî", /* \357\361 */ "tiers", /* \357\362 */ "titlo", /* \357\363 */ "tourniquet", /* \357\364 */ "touâ", /* \357\365 */ "travail", /* \357\366 */ "trente", /* \357\367 */ "tsadé", /* \357\370 */ "tsi", /* \357\371 */ "tso", /* \357\372 */ "tsou", /* \357\373 */ "tâloudja", /* \357\374 */ "tête", /* \357\375 */ "union", /* \357\376 */ "vent", /* \357\377 */ "verticalement", /* \360\001 */ "verticaux", /* \360\002 */ "vi", /* \360\003 */ "vin", /* \360\004 */ "voisée", /* \360\005 */ "vu", /* \360\006 */ "vèv", /* \360\007 */ "wasla", /* \360\010 */ "wynn", /* \360\011 */ "wè", /* \360\012 */ "yang", /* \360\013 */ "yesiûng", /* \360\014 */ "yorinhiûh", /* \360\015 */ "youâ", /* \360\016 */ "yya", /* \360\017 */ "yè", /* \360\020 */ "zaï", /* \360\021 */ "zaïn", /* \360\022 */ "zeqâphâ", /* \360\023 */ "zu", /* \360\024 */ "Æ", /* \360\025 */ "Æla-pilla", /* \360\026 */ "échappement", /* \360\027 */ "écran", /* \360\030 */ "élément", /* \360\031 */ "ñi", /* \360\032 */ "ñis", /* \360\033 */ "ñé", /* \360\034 */ "û", /* \360\035 */ "ûi", /* \360\036 */ "'a", /* \360\037 */ "'essâsâ", /* \360\040 */ "'khyÃŒl", /* \360\041 */ "'um", /* \360\042 */ "<=", /* \360\043 */ "", /* \360\110 */ "carreau", /* \360\111 */ "cavalier", /* \360\112 */ "ce", /* \360\113 */ "central", /* \360\114 */ "centré", /* \360\115 */ "cents", /* \360\116 */ "changement", /* \360\117 */ "chariot", /* \360\120 */ "cheval", /* \360\121 */ "chien", /* \360\122 */ "chofar", /* \360\123 */ "chou", /* \360\124 */ "choua", /* \360\125 */ "choui", /* \360\126 */ "chouo", /* \360\127 */ "chouâ", /* \360\130 */ "choué", /* \360\131 */ "chouî", /* \360\132 */ "chouô", /* \360\133 */ "chtcha", /* \360\134 */ "cip", /* \360\135 */ "circuit", /* \360\136 */ "co", /* \360\137 */ "colon", /* \360\140 */ "considéralement", /* \360\141 */ "continu", /* \360\142 */ "copyright", /* \360\143 */ "coquillage", /* \360\144 */ "coranique", /* \360\145 */ "coronis", /* \360\146 */ "courbée", /* \360\147 */ "croches", /* \360\150 */ "cuop", /* \360\151 */ "cy", /* \360\152 */ "cyp", /* \360\153 */ "cyt", /* \360\154 */ "d'accolade", /* \360\155 */ "d'accusé", /* \360\156 */ "d'annulation", /* \360\157 */ "d'arrêt", /* \360\160 */ "d'en-tête", /* \360\161 */ "d'intégrale", /* \360\162 */ "d'échange", /* \360\163 */ "d'étoffe", /* \360\164 */ "dame", /* \360\165 */ "danndda", /* \360\166 */ "dde", /* \360\167 */ "ddi", /* \360\170 */ "ddo", /* \360\171 */ "ddur", /* \360\172 */ "demande", /* \360\173 */ "demi-anneau", /* \360\174 */ "demi-disque", /* \360\175 */ "demi-voyelle", /* \360\176 */ "dents", /* \360\177 */ "deuxième", /* \360\200 */ "diagonaux", /* \360\201 */ "différence", /* \360\202 */ "digamma", /* \360\203 */ "dioun", /* \360\204 */ "disque", /* \360\205 */ "divination", /* \360\206 */ "diviseur", /* \360\207 */ "djan", /* \360\210 */ "djanda", /* \360\211 */ "dje", /* \360\212 */ "djo", /* \360\213 */ "dla", /* \360\214 */ "don", /* \360\215 */ "dou", /* \360\216 */ "doubles", /* \360\217 */ "dzha", /* \360\220 */ "dzil", /* \360\221 */ "dzud", /* \360\222 */ "dzêta", /* \360\223 */ "dâlath", /* \360\224 */ "décimal", /* \360\225 */ "démon", /* \360\226 */ "dénominateur", /* \360\227 */ "départ", /* \360\230 */ "ed", /* \360\231 */ "effe", /* \360\232 */ "ek", /* \360\233 */ "enchâssement", /* \360\234 */ "encoignure", /* \360\235 */ "entreprise", /* \360\236 */ "ett", /* \360\237 */ "facteur", /* \360\240 */ "falaise", /* \360\241 */ "faï", /* \360\242 */ "femelle", /* \360\243 */ "feuille", /* \360\244 */ "financier", /* \360\245 */ "fine", /* \360\246 */ "fita", /* \360\247 */ "formage", /* \360\250 */ "formatage", /* \360\251 */ "formes", /* \360\252 */ "forçage", /* \360\253 */ "fourche", /* \360\254 */ "fourchette", /* \360\255 */ "fouâ", /* \360\256 */ "fractionnaire", /* \360\257 */ "félicitations", /* \360\260 */ "féminin", /* \360\261 */ "gadol", /* \360\262 */ "gan", /* \360\263 */ "garchouni", /* \360\264 */ "gauche-droite", /* \360\265 */ "gcig", /* \360\266 */ "gep", /* \360\267 */ "gerich", /* \360\270 */ "gga", /* \360\271 */ "gge", /* \360\272 */ "ggi", /* \360\273 */ "ggo", /* \360\274 */ "ggop", /* \360\275 */ "gguo", /* \360\276 */ "ghad", /* \360\277 */ "ghan", /* \360\300 */ "ghha", /* \360\301 */ "ghunna", /* \360\302 */ "got", /* \360\303 */ "gram", /* \360\304 */ "gru", /* \360\305 */ "gug", /* \360\306 */ "guimel", /* \360\307 */ "guié", /* \360\310 */ "guén", /* \360\311 */ "gyas", /* \360\312 */ "gyon", /* \360\313 */ "gÆtta-pilla", /* \360\314 */ "gâ", /* \360\315 */ "gâmal", /* \360\316 */ "gé", /* \360\317 */ "géométriquement", /* \360\320 */ "gñis", /* \360\321 */ "h'ar", /* \360\322 */ "habits", /* \360\323 */ "haË", /* \360\324 */ "hhevâssâ", /* \360\325 */ "hirik", /* \360\326 */ "hmo", /* \360\327 */ "hna", /* \360\330 */ "holam", /* \360\331 */ "homme", /* \360\332 */ "homothétique", /* \360\333 */ "hori", /* \360\334 */ "hors", /* \360\335 */ "hou", /* \360\336 */ "hoË", /* \360\337 */ "hxit", /* \360\340 */ "hxop", /* \360\341 */ "hxot", /* \360\342 */ "hxuo", /* \360\343 */ "hê", /* \360\344 */ "ia", /* \360\345 */ "ici", /* \360\346 */ "identique", /* \360\347 */ "ij", /* \360\350 */ "imprimer", /* \360\351 */ "inhibiteur", /* \360\352 */ "inhérente", /* \360\353 */ "io", /* \360\354 */ "iou", /* \360\355 */ "is-pilla", /* \360\356 */ "iËn", /* \360\357 */ "iûng-kiyok", /* \360\360 */ "jade", /* \360\361 */ "jan", /* \360\362 */ "jaune", /* \360\363 */ "ji", /* \360\364 */ "jjut", /* \360\365 */ "jjy", /* \360\366 */ "k'", /* \360\367 */ "k'an", /* \360\370 */ "kapyo-ounssangpiûp", /* \360\371 */ "kayanna", /* \360\372 */ "kazakhe", /* \360\373 */ "kg", /* \360\374 */ "khakasse", /* \360\375 */ "khang", /* \360\376 */ "khar", /* \360\377 */ "khha", /* \361\001 */ "kim", /* \361\002 */ "kip", /* \361\003 */ "kit", /* \361\004 */ "kié", /* \361\005 */ "kk", /* \361\006 */ "kou", /* \361\007 */ "koua", /* \361\010 */ "koui", /* \361\011 */ "kouo", /* \361\012 */ "koué", /* \361\013 */ "kouî", /* \361\014 */ "kouô", /* \361\015 */ "ksi", /* \361\016 */ "kwa", /* \361\017 */ "kwi", /* \361\020 */ "kwé", /* \361\021 */ "kô", /* \361\022 */ "l'arrière", /* \361\023 */ "lame", /* \361\024 */ "larmées", /* \361\025 */ "lass", /* \361\026 */ "layanna", /* \361\027 */ "lhi", /* \361\030 */ "lho", /* \361\031 */ "liant", /* \361\032 */ "lie", /* \361\033 */ "ling", /* \361\034 */ "lioun", /* \361\035 */ "livre", /* \361\036 */ "lié", /* \361\037 */ "lj", /* \361\040 */ "logotype", /* \361\041 */ "loua", /* \361\042 */ "loui", /* \361\043 */ "louo", /* \361\044 */ "louâ", /* \361\045 */ "loué", /* \361\046 */ "louî", /* \361\047 */ "louô", /* \361\050 */ "lyr", /* \361\051 */ "lô", /* \361\052 */ "mai", /* \361\053 */ "marchandises", /* \361\054 */ "mb", /* \361\055 */ "message", /* \361\056 */ "mesuré", /* \361\057 */ "mig", /* \361\060 */ "milieu", /* \361\061 */ "miûm-pansiôs", /* \361\062 */ "miûm-siôs", /* \361\063 */ "molette", /* \361\064 */ "montagne", /* \361\065 */ "mop", /* \361\066 */ "mort", /* \361\067 */ "mortier", /* \361\070 */ "mot", /* \361\071 */ "moua", /* \361\072 */ "moue", /* \361\073 */ "moui", /* \361\074 */ "mouo", /* \361\075 */ "mouton", /* \361\076 */ "moué", /* \361\077 */ "mouî", /* \361\100 */ "mouô", /* \361\101 */ "moyenne", /* \361\102 */ "mur", /* \361\103 */ "mv", /* \361\104 */ "mw", /* \361\105 */ "mâle", /* \361\106 */ "métal", /* \361\107 */ "mô", /* \361\110 */ "nar", /* \361\111 */ "nayanna", /* \361\112 */ "nbie", /* \361\113 */ "ngas", /* \361\114 */ "niûn-kiyok", /* \361\115 */ "niûn-pansiôs", /* \361\116 */ "niûn-siôs", /* \361\117 */ "nj", /* \361\120 */ "nnna", /* \361\121 */ "nom", /* \361\122 */ "norme", /* \361\123 */ "noua", /* \361\124 */ "noué", /* \361\125 */ "nul", /* \361\126 */ "numéral", /* \361\127 */ "numérique", /* \361\130 */ "numéro", /* \361\131 */ "nyip", /* \361\132 */ "nyop", /* \361\133 */ "nzur", /* \361\134 */ "nâ", /* \361\135 */ "nâsikyaya", /* \361\136 */ "nô", /* \361\137 */ "obliquement", /* \361\140 */ "oeil", /* \361\141 */ "ondé", /* \361\142 */ "onn", /* \361\143 */ "op", /* \361\144 */ "or", /* \361\145 */ "ordinal", /* \361\146 */ "ornée", /* \361\147 */ "otte", /* \361\150 */ "oubadama", /* \361\151 */ "oun", /* \361\152 */ "ouverte", /* \361\153 */ "ouî", /* \361\154 */ "p'iûp'-piûp", /* \361\155 */ "papillon", /* \361\156 */ "paragraphe", /* \361\157 */ "parallélogramme", /* \361\160 */ "parole", /* \361\161 */ "partiel", /* \361\162 */ "passive", /* \361\163 */ "patte", /* \361\164 */ "payanna", /* \361\165 */ "penchée", /* \361\166 */ "percussion", /* \361\167 */ "percé", /* \361\170 */ "phar", /* \361\171 */ "phur", /* \361\172 */ "pion", /* \361\173 */ "piour", /* \361\174 */ "pièce", /* \361\175 */ "piûp-kiyok", /* \361\176 */ "piûp-p'iûp'", /* \361\177 */ "piûp-siôs-kiyok", /* \361\200 */ "piûp-siôs-tikût", /* \361\201 */ "piûp-t'iût'", /* \361\202 */ "piûp-tchiûtch", /* \361\203 */ "piûp-tikût", /* \361\204 */ "place", /* \361\205 */ "plafond", /* \361\206 */ "plancher", /* \361\207 */ "planck", /* \361\210 */ "plein", /* \361\211 */ "pluie", /* \361\212 */ "pneumata", /* \361\213 */ "poil", /* \361\214 */ "poisson", /* \361\215 */ "pommetée", /* \361\216 */ "pou", /* \361\217 */ "poua", /* \361\220 */ "poui", /* \361\221 */ "pouo", /* \361\222 */ "poué", /* \361\223 */ "pouî", /* \361\224 */ "pouô", /* \361\225 */ "premier", /* \361\226 */ "projetée", /* \361\227 */ "proportion", /* \361\230 */ "protégée", /* \361\231 */ "précédant", /* \361\232 */ "puis", /* \361\233 */ "put", /* \361\234 */ "pyt", /* \361\235 */ "pâ-pilla", /* \361\236 */ "pèn", /* \361\237 */ "pê", /* \361\240 */ "pî", /* \361\241 */ "pô", /* \361\242 */ "q'ar", /* \361\243 */ "qadma", /* \361\244 */ "qot", /* \361\245 */ "quadrillé", /* \361\246 */ "quatrième", /* \361\247 */ "quintefeuille", /* \361\250 */ "ramées", /* \361\251 */ "rat", /* \361\252 */ "rayonnante", /* \361\253 */ "rayons", /* \361\254 */ "rdo", /* \361\255 */ "recourbé", /* \361\256 */ "rectiligne", /* \361\257 */ "relation", /* \361\260 */ "repos", /* \361\261 */ "ressource", /* \361\262 */ "retour", /* \361\263 */ "revâssâ", /* \361\264 */ "rgya", /* \361\265 */ "rgyings", /* \361\266 */ "riûl-kiyok-siôs", /* \361\267 */ "riûl-niûn", /* \361\270 */ "riûl-pansiôs", /* \361\271 */ "riûl-piûp-siôs", /* \361\272 */ "riûl-tikût", /* \361\273 */ "riûl-yorinhiûh", /* \361\274 */ "rje", /* \361\275 */ "rnam", /* \361\276 */ "roi", /* \361\277 */ "roue", /* \361\300 */ "rouâ", /* \361\301 */ "rîch", /* \361\302 */ "salla", /* \361\303 */ "sampi", /* \361\304 */ "samèkh", /* \361\305 */ "san", /* \361\306 */ "saturne", /* \361\307 */ "sceau", /* \361\310 */ "section", /* \361\311 */ "sel", /* \361\312 */ "semi-circulaire", /* \361\313 */ "semi-mou", /* \361\314 */ "semkath", /* \361\315 */ "shat", /* \361\316 */ "shop", /* \361\317 */ "shur", /* \361\320 */ "shy", /* \361\321 */ "sindhi", /* \361\322 */ "sine", /* \361\323 */ "siôs-niûn", /* \361\324 */ "siôs-riûl", /* \361\325 */ "siôs-tchiûtch", /* \361\326 */ "sonnerie", /* \361\327 */ "soui", /* \361\330 */ "soulignement", /* \361\331 */ "souo", /* \361\332 */ "souriant", /* \361\333 */ "soué", /* \361\334 */ "souî", /* \361\335 */ "souô", /* \361\336 */ "spécial", /* \361\337 */ "ssanghiûh", /* \361\340 */ "ssangniûn", /* \361\341 */ "ssangriûl", /* \361\342 */ "ssi", /* \361\343 */ "stigma", /* \361\344 */ "suivant", /* \361\345 */ "suivante", /* \361\346 */ "support", /* \361\347 */ "suppression", /* \361\350 */ "symétrique", /* \361\351 */ "synchronisation", /* \361\352 */ "sélectionnée", /* \361\353 */ "sô", /* \361\354 */ "t'ar", /* \361\355 */ "tabouret", /* \361\356 */ "tanné", /* \361\357 */ "taper", /* \361\360 */ "tatouïl", /* \361\361 */ "tau", /* \361\362 */ "tayanna", /* \361\363 */ "tch", /* \361\364 */ "tch'ar", /* \361\365 */ "tchan", /* \361\366 */ "tchayanna", /* \361\367 */ "tchima", /* \361\370 */ "tchin", /* \361\371 */ "tchou", /* \361\372 */ "tchoua", /* \361\373 */ "tchoui", /* \361\374 */ "tchouo", /* \361\375 */ "tchoué", /* \361\376 */ "tchouî", /* \361\377 */ "tchouô", /* \362\001 */ "tchô", /* \362\002 */ "temps", /* \362\003 */ "the", /* \362\004 */ "thorn", /* \362\005 */ "thou", /* \362\006 */ "thouâ", /* \362\007 */ "thô", /* \362\010 */ "tigre", /* \362\011 */ "tikût-kiyok", /* \362\012 */ "tirant", /* \362\013 */ "tire-bouchon", /* \362\014 */ "tié", /* \362\015 */ "tla", /* \362\016 */ "tlha", /* \362\017 */ "tlhi", /* \362\020 */ "tlho", /* \362\021 */ "tlhé", /* \362\022 */ "tli", /* \362\023 */ "tlo", /* \362\024 */ "tlou", /* \362\025 */ "tlé", /* \362\026 */ "toua", /* \362\027 */ "touche", /* \362\030 */ "toui", /* \362\031 */ "touo", /* \362\032 */ "tour", /* \362\033 */ "toué", /* \362\034 */ "touî", /* \362\035 */ "touô", /* \362\036 */ "traits", /* \362\037 */ "trompe-l'oeil", /* \362\040 */ "tronquée", /* \362\041 */ "trèfle", /* \362\042 */ "très", /* \362\043 */ "ts", /* \362\044 */ "ts'il", /* \362\045 */ "tse", /* \362\046 */ "tsha", /* \362\047 */ "tshes", /* \362\050 */ "tsin", /* \362\051 */ "tsô", /* \362\052 */ "ttayanna", /* \362\053 */ "ttho", /* \362\054 */ "tti", /* \362\055 */ "tto", /* \362\056 */ "tté", /* \362\057 */ "ttêth", /* \362\060 */ "type", /* \362\061 */ "tèt", /* \362\062 */ "usage", /* \362\063 */ "utilisé", /* \362\064 */ "vecteur", /* \362\065 */ "vep", /* \362\066 */ "viande", /* \362\067 */ "vieux", /* \362\070 */ "vingt-deux", /* \362\071 */ "vingt-et-un", /* \362\072 */ "vingt-quatre", /* \362\073 */ "vingt-trois", /* \362\074 */ "virtuel", /* \362\075 */ "visible", /* \362\076 */ "viË", /* \362\077 */ "voir", /* \362\100 */ "voltiger", /* \362\101 */ "vrai", /* \362\102 */ "vur", /* \362\103 */ "véhicule", /* \362\104 */ "vérification", /* \362\105 */ "wasallam", /* \362\106 */ "won", /* \362\107 */ "wou", /* \362\110 */ "wËn", /* \362\111 */ "xo", /* \362\112 */ "yate", /* \362\113 */ "ye", /* \362\114 */ "yen", /* \362\115 */ "yesiûng-pansiôs", /* \362\116 */ "yesiûng-siôs", /* \362\117 */ "yin", /* \362\120 */ "yit", /* \362\121 */ "yogh", /* \362\122 */ "yot", /* \362\123 */ "you-i", /* \362\124 */ "you-yo", /* \362\125 */ "you-yé", /* \362\126 */ "youa", /* \362\127 */ "youd", /* \362\130 */ "youi", /* \362\131 */ "youo", /* \362\132 */ "youé", /* \362\133 */ "youî", /* \362\134 */ "youô", /* \362\135 */ "yoûdh", /* \362\136 */ "yr", /* \362\137 */ "yâ", /* \362\140 */ "yô-i", /* \362\141 */ "yô-ya", /* \362\142 */ "yô-yè", /* \362\143 */ "zaqef", /* \362\144 */ "zelâmâ", /* \362\145 */ "zla", /* \362\146 */ "zot", /* \362\147 */ "zou", /* \362\150 */ "zur", /* \362\151 */ "zziet", /* \362\152 */ "zzip", /* \362\153 */ "zén", /* \362\154 */ "Ä", /* \362\155 */ "Æda-pilla", /* \362\156 */ "Ëe", /* \362\157 */ "âlaph", /* \362\160 */ "éclairée", /* \362\161 */ "étincellement", /* \362\162 */ "étude", /* \362\163 */ "îschar", /* \362\164 */ "'char", /* \362\165 */ "'khyil", /* \362\166 */ "'khyud", /* \362\167 */ "'phru", /* \362\170 */ "'ê", /* \362\171 */ "(ack)", /* \362\172 */ "(apc)", /* \362\173 */ "(bel)", /* \362\174 */ "(bph)", /* \362\175 */ "(bs)", /* \362\176 */ "(can)", /* \362\177 */ "(cch)", /* \362\200 */ "(cr)", /* \362\201 */ "(csi)", /* \362\202 */ "(dc1)", /* \362\203 */ "(dc2)", /* \362\204 */ "(dc3)", /* \362\205 */ "(dc4)", /* \362\206 */ "(dcs)", /* \362\207 */ "(del)", /* \362\210 */ "(dle)", /* \362\211 */ "(ega)", /* \362\212 */ "(em)", /* \362\213 */ "(enq)", /* \362\214 */ "(eot)", /* \362\215 */ "(esa)", /* \362\216 */ "(esc)", /* \362\217 */ "(etb)", /* \362\220 */ "(etx)", /* \362\221 */ "(ff)", /* \362\222 */ "(fs)", /* \362\223 */ "(gs)", /* \362\224 */ "(hop)", /* \362\225 */ "(ht)", /* \362\226 */ "(htj)", /* \362\227 */ "(hts)", /* \362\230 */ "(ind)", /* \362\231 */ "(lf)", /* \362\232 */ "(mw)", /* \362\233 */ "(nak)", /* \362\234 */ "(nbh)", /* \362\235 */ "(nel)", /* \362\236 */ "(nul)", /* \362\237 */ "(osc)", /* \362\240 */ "(pad)", /* \362\241 */ "(pld)", /* \362\242 */ "(plu)", /* \362\243 */ "(pm)", /* \362\244 */ "(pu1)", /* \362\245 */ "(pu2)", /* \362\246 */ "(ri)", /* \362\247 */ "(rs)", /* \362\250 */ "(sci)", /* \362\251 */ "(sga)", /* \362\252 */ "(sgci)", /* \362\253 */ "(si)", /* \362\254 */ "(so)", /* \362\255 */ "(soh)", /* \362\256 */ "(sos)", /* \362\257 */ "(ss2)", /* \362\260 */ "(ss3)", /* \362\261 */ "(ssa)", /* \362\262 */ "(st)", /* \362\263 */ "(sts)", /* \362\264 */ "(stx)", /* \362\265 */ "(sub)", /* \362\266 */ "(syn)", /* \362\267 */ "(us)", /* \362\270 */ "(vt)", /* \362\271 */ "(vts)", /* \362\272 */ "a-ou", /* \362\273 */ "a-ô", /* \362\274 */ "abafili", /* \362\275 */ "abaisseuse", /* \362\276 */ "abat-jour", /* \362\277 */ "abîme", /* \362\300 */ "ac", /* \362\301 */ "accentué", /* \362\302 */ "acceptable", /* \362\303 */ "accompli", /* \362\304 */ "addak", /* \362\305 */ "africain", /* \362\306 */ "ah", /* \362\307 */ "ahsda", /* \362\310 */ "ailm", /* \362\311 */ "akat", /* \362\312 */ "akbar", /* \362\313 */ "al-lakouna", /* \362\314 */ "algiz", /* \362\315 */ "alifou", /* \362\316 */ "alignés", /* \362\317 */ "allah", /* \362\320 */ "aller", /* \362\321 */ "aloha", /* \362\322 */ "alors", /* \362\323 */ "alvéolaire", /* \362\324 */ "alésage", /* \362\325 */ "amba", /* \362\326 */ "ampères", /* \362\327 */ "ancre", /* \362\330 */ "angkhankhou", /* \362\331 */ "angström", /* \362\332 */ "animal", /* \362\333 */ "ankh", /* \362\334 */ "ann", /* \362\335 */ "anne", /* \362\336 */ "anneau", /* \362\337 */ "ano", /* \362\340 */ "anoudatta", /* \362\341 */ "anousvâraya", /* \362\342 */ "anpea", /* \362\343 */ "ansuz", /* \362\344 */ "anti-liant", /* \362\345 */ "ao", /* \362\346 */ "aonn", /* \362\347 */ "aouyanna", /* \362\350 */ "août", /* \362\351 */ "ap", /* \362\352 */ "appel", /* \362\353 */ "appentis", /* \362\354 */ "appuyée", /* \362\355 */ "apâto", /* \362\356 */ "ar", /* \362\357 */ "ar-à-longue-branche", /* \362\360 */ "arbre", /* \362\361 */ "arlaug", /* \362\362 */ "arme", /* \362\363 */ "arriver", /* \362\364 */ "arrondi", /* \362\365 */ "arrondie", /* \362\366 */ "arrondis", /* \362\367 */ "article", /* \362\370 */ "aruhua", /* \362\371 */ "arèa-i", /* \362\372 */ "arèa-o", /* \362\373 */ "arèa-ou", /* \362\374 */ "arèè", /* \362\375 */ "as", /* \362\376 */ "aspirée", /* \362\377 */ "assertion", /* \363\001 */ "astérique", /* \363\002 */ "astérisme", /* \363\003 */ "at", /* \363\004 */ "atnah", /* \363\005 */ "atteindre", /* \363\006 */ "attente", /* \363\007 */ "attention", /* \363\010 */ "aux", /* \363\011 */ "avakrahasañña", /* \363\012 */ "avion", /* \363\013 */ "avril", /* \363\014 */ "ax", /* \363\015 */ "ay", /* \363\016 */ "ayah", /* \363\017 */ "ayanna", /* \363\020 */ "aïnn", /* \363\021 */ "aïnou", /* \363\022 */ "aïvilik", /* \363\023 */ "aïyanna", /* \363\024 */ "aû", /* \363\025 */ "baht", /* \363\026 */ "balance", /* \363\027 */ "balouda", /* \363\030 */ "baloudas", /* \363\031 */ "bancaire", /* \363\032 */ "bantotch", /* \363\033 */ "bap", /* \363\034 */ "bar", /* \363\035 */ "barbiche", /* \363\036 */ "bariyôsan", /* \363\037 */ "barrekh", /* \363\040 */ "barricade", /* \363\041 */ "base", /* \363\042 */ "bat", /* \363\043 */ "bathamasat", /* \363\044 */ "battant", /* \363\045 */ "bax", /* \363\046 */ "baïmaï", /* \363\047 */ "bba", /* \363\050 */ "bbap", /* \363\051 */ "bbat", /* \363\052 */ "bbax", /* \363\053 */ "bbe", /* \363\054 */ "bbep", /* \363\055 */ "bbex", /* \363\056 */ "bbi", /* \363\057 */ "bbie", /* \363\060 */ "bbiep", /* \363\061 */ "bbiet", /* \363\062 */ "bbiex", /* \363\063 */ "bbip", /* \363\064 */ "bbit", /* \363\065 */ "bbix", /* \363\066 */ "bbo", /* \363\067 */ "bbop", /* \363\070 */ "bbot", /* \363\071 */ "bbox", /* \363\072 */ "bbu", /* \363\073 */ "bbuo", /* \363\074 */ "bbuop", /* \363\075 */ "bbuox", /* \363\076 */ "bbup", /* \363\077 */ "bbur", /* \363\100 */ "bburx", /* \363\101 */ "bbux", /* \363\102 */ "bby", /* \363\103 */ "bbyp", /* \363\104 */ "bbyt", /* \363\105 */ "bbyx", /* \363\106 */ "bchi", /* \363\107 */ "beigne", /* \363\110 */ "beith", /* \363\111 */ "belgthor", /* \363\112 */ "ben", /* \363\113 */ "benzène", /* \363\114 */ "beorc", /* \363\115 */ "bep", /* \363\116 */ "berkanan", /* \363\117 */ "bet", /* \363\120 */ "bex", /* \363\121 */ "beyyal", /* \363\122 */ "biarkan", /* \363\123 */ "biarkan-à-ramille", /* \363\124 */ "biblique", /* \363\125 */ "bidentale", /* \363\126 */ "bie", /* \363\127 */ "biep", /* \363\130 */ "biet", /* \363\131 */ "biex", /* \363\132 */ "bilabial", /* \363\133 */ "bilaliale", /* \363\134 */ "bindi", /* \363\135 */ "biologique", /* \363\136 */ "bip", /* \363\137 */ "birga", /* \363\140 */ "biru", /* \363\141 */ "bis", /* \363\142 */ "bisectrice", /* \363\143 */ "bit", /* \363\144 */ "bix", /* \363\145 */ "bka'", /* \363\146 */ "blancs", /* \363\147 */ "boisseau", /* \363\150 */ "bonhomme", /* \363\151 */ "bons", /* \363\152 */ "bop", /* \363\153 */ "boruto", /* \363\154 */ "bot", /* \363\155 */ "bou", /* \363\156 */ "bouche", /* \363\157 */ "bourgeon", /* \363\160 */ "bouton", /* \363\161 */ "box", /* \363\162 */ "boîte", /* \363\163 */ "bq", /* \363\164 */ "branche", /* \363\165 */ "brebis", /* \363\166 */ "broderie", /* \363\167 */ "bsdus", /* \363\170 */ "bskur", /* \363\171 */ "bstar", /* \363\172 */ "buo", /* \363\173 */ "buop", /* \363\174 */ "buox", /* \363\175 */ "bup", /* \363\176 */ "bureau", /* \363\177 */ "burx", /* \363\200 */ "bussyeru", /* \363\201 */ "but", /* \363\202 */ "bux", /* \363\203 */ "bwa", /* \363\204 */ "by", /* \363\205 */ "byp", /* \363\206 */ "byr", /* \363\207 */ "byrx", /* \363\210 */ "byt", /* \363\211 */ "byx", /* \363\212 */ "bÄ", /* \363\213 */ "bâ", /* \363\214 */ "bâreru", /* \363\215 */ "bécarre", /* \363\216 */ "bémol", /* \363\217 */ "bêth", /* \363\220 */ "bûche", /* \363\221 */ "c'hal", /* \363\222 */ "cachette", /* \363\223 */ "cada", /* \363\224 */ "cadavre", /* \363\225 */ "cadrat", /* \363\226 */ "caducée", /* \363\227 */ "caisse", /* \363\230 */ "cal", /* \363\231 */ "calage", /* \363\232 */ "calc", /* \363\233 */ "cancer", /* \363\234 */ "cang", /* \363\235 */ "cap", /* \363\236 */ "capricorne", /* \363\237 */ "care-of", /* \363\240 */ "carotte", /* \363\241 */ "cat", /* \363\242 */ "caverne", /* \363\243 */ "cax", /* \363\244 */ "cc", /* \363\245 */ "cd", /* \363\246 */ "cealc", /* \363\247 */ "ceinture", /* \363\250 */ "ceirt", /* \363\251 */ "celsius", /* \363\252 */ "cen", /* \363\253 */ "centaine", /* \363\254 */ "cep", /* \363\255 */ "cerf", /* \363\256 */ "cex", /* \363\257 */ "chad", /* \363\260 */ "chaise", /* \363\261 */ "chalchelet", /* \363\262 */ "champ", /* \363\263 */ "chanvre", /* \363\264 */ "chap", /* \363\265 */ "chapeau", /* \363\266 */ "charrue", /* \363\267 */ "chat", /* \363\270 */ "chaudes", /* \363\271 */ "chaudron", /* \363\272 */ "chaviyani", /* \363\273 */ "chax", /* \363\274 */ "chayanna", /* \363\275 */ "chaï", /* \363\276 */ "chei", /* \363\277 */ "cheminer", /* \363\300 */ "chen", /* \363\301 */ "chené", /* \363\302 */ "chep", /* \363\303 */ "chet", /* \363\304 */ "cheva", /* \363\305 */ "chevauchement", /* \363\306 */ "chevelure", /* \363\307 */ "chevron", /* \363\310 */ "chevrons", /* \363\311 */ "chex", /* \363\312 */ "chifre", /* \363\313 */ "chop", /* \363\314 */ "chot", /* \363\315 */ "chox", /* \363\316 */ "chrisme", /* \363\317 */ "chu", /* \363\320 */ "chuo", /* \363\321 */ "chuop", /* \363\322 */ "chuot", /* \363\323 */ "chuox", /* \363\324 */ "chup", /* \363\325 */ "chur", /* \363\326 */ "churx", /* \363\327 */ "chux", /* \363\330 */ "chwa", /* \363\331 */ "chy", /* \363\332 */ "chyp", /* \363\333 */ "chyr", /* \363\334 */ "chyrx", /* \363\335 */ "chyt", /* \363\336 */ "chyx", /* \363\337 */ "chÄ", /* \363\340 */ "châ", /* \363\341 */ "chèque", /* \363\342 */ "chékel", /* \363\343 */ "chî", /* \363\344 */ "chînou", /* \363\345 */ "chô", /* \363\346 */ "chôwa", /* \363\347 */ "ci", /* \363\350 */ "ciboulette", /* \363\351 */ "cie", /* \363\352 */ "ciep", /* \363\353 */ "ciet", /* \363\354 */ "ciex", /* \363\355 */ "circulaire", /* \363\356 */ "cit", /* \363\357 */ "citron", /* \363\360 */ "civil", /* \363\361 */ "cix", /* \363\362 */ "cjc-f900", /* \363\363 */ "cjc-f901", /* \363\364 */ "cjc-f902", /* \363\365 */ "cjc-f903", /* \363\366 */ "cjc-f904", /* \363\367 */ "cjc-f905", /* \363\370 */ "cjc-f906", /* \363\371 */ "cjc-f907", /* \363\372 */ "cjc-f908", /* \363\373 */ "cjc-f909", /* \363\374 */ "cjc-f90a", /* \363\375 */ "cjc-f90b", /* \363\376 */ "cjc-f90c", /* \363\377 */ "cjc-f90d", /* \364\001 */ "cjc-f90e", /* \364\002 */ "cjc-f90f", /* \364\003 */ "cjc-f910", /* \364\004 */ "cjc-f911", /* \364\005 */ "cjc-f912", /* \364\006 */ "cjc-f913", /* \364\007 */ "cjc-f914", /* \364\010 */ "cjc-f915", /* \364\011 */ "cjc-f916", /* \364\012 */ "cjc-f917", /* \364\013 */ "cjc-f918", /* \364\014 */ "cjc-f919", /* \364\015 */ "cjc-f91a", /* \364\016 */ "cjc-f91b", /* \364\017 */ "cjc-f91c", /* \364\020 */ "cjc-f91d", /* \364\021 */ "cjc-f91e", /* \364\022 */ "cjc-f91f", /* \364\023 */ "cjc-f920", /* \364\024 */ "cjc-f921", /* \364\025 */ "cjc-f922", /* \364\026 */ "cjc-f923", /* \364\027 */ "cjc-f924", /* \364\030 */ "cjc-f925", /* \364\031 */ "cjc-f926", /* \364\032 */ "cjc-f927", /* \364\033 */ "cjc-f928", /* \364\034 */ "cjc-f929", /* \364\035 */ "cjc-f92a", /* \364\036 */ "cjc-f92b", /* \364\037 */ "cjc-f92c", /* \364\040 */ "cjc-f92d", /* \364\041 */ "cjc-f92e", /* \364\042 */ "cjc-f92f", /* \364\043 */ "cjc-f930", /* \364\044 */ "cjc-f931", /* \364\045 */ "cjc-f932", /* \364\046 */ "cjc-f933", /* \364\047 */ "cjc-f934", /* \364\050 */ "cjc-f935", /* \364\051 */ "cjc-f936", /* \364\052 */ "cjc-f937", /* \364\053 */ "cjc-f938", /* \364\054 */ "cjc-f939", /* \364\055 */ "cjc-f93a", /* \364\056 */ "cjc-f93b", /* \364\057 */ "cjc-f93c", /* \364\060 */ "cjc-f93d", /* \364\061 */ "cjc-f93e", /* \364\062 */ "cjc-f93f", /* \364\063 */ "cjc-f940", /* \364\064 */ "cjc-f941", /* \364\065 */ "cjc-f942", /* \364\066 */ "cjc-f943", /* \364\067 */ "cjc-f944", /* \364\070 */ "cjc-f945", /* \364\071 */ "cjc-f946", /* \364\072 */ "cjc-f947", /* \364\073 */ "cjc-f948", /* \364\074 */ "cjc-f949", /* \364\075 */ "cjc-f94a", /* \364\076 */ "cjc-f94b", /* \364\077 */ "cjc-f94c", /* \364\100 */ "cjc-f94d", /* \364\101 */ "cjc-f94e", /* \364\102 */ "cjc-f94f", /* \364\103 */ "cjc-f950", /* \364\104 */ "cjc-f951", /* \364\105 */ "cjc-f952", /* \364\106 */ "cjc-f953", /* \364\107 */ "cjc-f954", /* \364\110 */ "cjc-f955", /* \364\111 */ "cjc-f956", /* \364\112 */ "cjc-f957", /* \364\113 */ "cjc-f958", /* \364\114 */ "cjc-f959", /* \364\115 */ "cjc-f95a", /* \364\116 */ "cjc-f95b", /* \364\117 */ "cjc-f95c", /* \364\120 */ "cjc-f95d", /* \364\121 */ "cjc-f95e", /* \364\122 */ "cjc-f95f", /* \364\123 */ "cjc-f960", /* \364\124 */ "cjc-f961", /* \364\125 */ "cjc-f962", /* \364\126 */ "cjc-f963", /* \364\127 */ "cjc-f964", /* \364\130 */ "cjc-f965", /* \364\131 */ "cjc-f966", /* \364\132 */ "cjc-f967", /* \364\133 */ "cjc-f968", /* \364\134 */ "cjc-f969", /* \364\135 */ "cjc-f96a", /* \364\136 */ "cjc-f96b", /* \364\137 */ "cjc-f96c", /* \364\140 */ "cjc-f96d", /* \364\141 */ "cjc-f96e", /* \364\142 */ "cjc-f96f", /* \364\143 */ "cjc-f970", /* \364\144 */ "cjc-f971", /* \364\145 */ "cjc-f972", /* \364\146 */ "cjc-f973", /* \364\147 */ "cjc-f974", /* \364\150 */ "cjc-f975", /* \364\151 */ "cjc-f976", /* \364\152 */ "cjc-f977", /* \364\153 */ "cjc-f978", /* \364\154 */ "cjc-f979", /* \364\155 */ "cjc-f97a", /* \364\156 */ "cjc-f97b", /* \364\157 */ "cjc-f97c", /* \364\160 */ "cjc-f97d", /* \364\161 */ "cjc-f97e", /* \364\162 */ "cjc-f97f", /* \364\163 */ "cjc-f980", /* \364\164 */ "cjc-f981", /* \364\165 */ "cjc-f982", /* \364\166 */ "cjc-f983", /* \364\167 */ "cjc-f984", /* \364\170 */ "cjc-f985", /* \364\171 */ "cjc-f986", /* \364\172 */ "cjc-f987", /* \364\173 */ "cjc-f988", /* \364\174 */ "cjc-f989", /* \364\175 */ "cjc-f98a", /* \364\176 */ "cjc-f98b", /* \364\177 */ "cjc-f98c", /* \364\200 */ "cjc-f98d", /* \364\201 */ "cjc-f98e", /* \364\202 */ "cjc-f98f", /* \364\203 */ "cjc-f990", /* \364\204 */ "cjc-f991", /* \364\205 */ "cjc-f992", /* \364\206 */ "cjc-f993", /* \364\207 */ "cjc-f994", /* \364\210 */ "cjc-f995", /* \364\211 */ "cjc-f996", /* \364\212 */ "cjc-f997", /* \364\213 */ "cjc-f998", /* \364\214 */ "cjc-f999", /* \364\215 */ "cjc-f99a", /* \364\216 */ "cjc-f99b", /* \364\217 */ "cjc-f99c", /* \364\220 */ "cjc-f99d", /* \364\221 */ "cjc-f99e", /* \364\222 */ "cjc-f99f", /* \364\223 */ "cjc-f9a0", /* \364\224 */ "cjc-f9a1", /* \364\225 */ "cjc-f9a2", /* \364\226 */ "cjc-f9a3", /* \364\227 */ "cjc-f9a4", /* \364\230 */ "cjc-f9a5", /* \364\231 */ "cjc-f9a6", /* \364\232 */ "cjc-f9a7", /* \364\233 */ "cjc-f9a8", /* \364\234 */ "cjc-f9a9", /* \364\235 */ "cjc-f9aa", /* \364\236 */ "cjc-f9ab", /* \364\237 */ "cjc-f9ac", /* \364\240 */ "cjc-f9ad", /* \364\241 */ "cjc-f9ae", /* \364\242 */ "cjc-f9af", /* \364\243 */ "cjc-f9b0", /* \364\244 */ "cjc-f9b1", /* \364\245 */ "cjc-f9b2", /* \364\246 */ "cjc-f9b3", /* \364\247 */ "cjc-f9b4", /* \364\250 */ "cjc-f9b5", /* \364\251 */ "cjc-f9b6", /* \364\252 */ "cjc-f9b7", /* \364\253 */ "cjc-f9b8", /* \364\254 */ "cjc-f9b9", /* \364\255 */ "cjc-f9ba", /* \364\256 */ "cjc-f9bb", /* \364\257 */ "cjc-f9bc", /* \364\260 */ "cjc-f9bd", /* \364\261 */ "cjc-f9be", /* \364\262 */ "cjc-f9bf", /* \364\263 */ "cjc-f9c0", /* \364\264 */ "cjc-f9c1", /* \364\265 */ "cjc-f9c2", /* \364\266 */ "cjc-f9c3", /* \364\267 */ "cjc-f9c4", /* \364\270 */ "cjc-f9c5", /* \364\271 */ "cjc-f9c6", /* \364\272 */ "cjc-f9c7", /* \364\273 */ "cjc-f9c8", /* \364\274 */ "cjc-f9c9", /* \364\275 */ "cjc-f9ca", /* \364\276 */ "cjc-f9cb", /* \364\277 */ "cjc-f9cc", /* \364\300 */ "cjc-f9cd", /* \364\301 */ "cjc-f9ce", /* \364\302 */ "cjc-f9cf", /* \364\303 */ "cjc-f9d0", /* \364\304 */ "cjc-f9d1", /* \364\305 */ "cjc-f9d2", /* \364\306 */ "cjc-f9d3", /* \364\307 */ "cjc-f9d4", /* \364\310 */ "cjc-f9d5", /* \364\311 */ "cjc-f9d6", /* \364\312 */ "cjc-f9d7", /* \364\313 */ "cjc-f9d8", /* \364\314 */ "cjc-f9d9", /* \364\315 */ "cjc-f9da", /* \364\316 */ "cjc-f9db", /* \364\317 */ "cjc-f9dc", /* \364\320 */ "cjc-f9dd", /* \364\321 */ "cjc-f9de", /* \364\322 */ "cjc-f9df", /* \364\323 */ "cjc-f9e0", /* \364\324 */ "cjc-f9e1", /* \364\325 */ "cjc-f9e2", /* \364\326 */ "cjc-f9e3", /* \364\327 */ "cjc-f9e4", /* \364\330 */ "cjc-f9e5", /* \364\331 */ "cjc-f9e6", /* \364\332 */ "cjc-f9e7", /* \364\333 */ "cjc-f9e8", /* \364\334 */ "cjc-f9e9", /* \364\335 */ "cjc-f9ea", /* \364\336 */ "cjc-f9eb", /* \364\337 */ "cjc-f9ec", /* \364\340 */ "cjc-f9ed", /* \364\341 */ "cjc-f9ee", /* \364\342 */ "cjc-f9ef", /* \364\343 */ "cjc-f9f0", /* \364\344 */ "cjc-f9f1", /* \364\345 */ "cjc-f9f2", /* \364\346 */ "cjc-f9f3", /* \364\347 */ "cjc-f9f4", /* \364\350 */ "cjc-f9f5", /* \364\351 */ "cjc-f9f6", /* \364\352 */ "cjc-f9f7", /* \364\353 */ "cjc-f9f8", /* \364\354 */ "cjc-f9f9", /* \364\355 */ "cjc-f9fa", /* \364\356 */ "cjc-f9fb", /* \364\357 */ "cjc-f9fc", /* \364\360 */ "cjc-f9fd", /* \364\361 */ "cjc-f9fe", /* \364\362 */ "cjc-f9ff", /* \364\363 */ "cjc-fa00", /* \364\364 */ "cjc-fa01", /* \364\365 */ "cjc-fa02", /* \364\366 */ "cjc-fa03", /* \364\367 */ "cjc-fa04", /* \364\370 */ "cjc-fa05", /* \364\371 */ "cjc-fa06", /* \364\372 */ "cjc-fa07", /* \364\373 */ "cjc-fa08", /* \364\374 */ "cjc-fa09", /* \364\375 */ "cjc-fa0a", /* \364\376 */ "cjc-fa0b", /* \364\377 */ "cjc-fa0c", /* \365\001 */ "cjc-fa0d", /* \365\002 */ "cjc-fa0e", /* \365\003 */ "cjc-fa0f", /* \365\004 */ "cjc-fa10", /* \365\005 */ "cjc-fa11", /* \365\006 */ "cjc-fa12", /* \365\007 */ "cjc-fa13", /* \365\010 */ "cjc-fa14", /* \365\011 */ "cjc-fa15", /* \365\012 */ "cjc-fa16", /* \365\013 */ "cjc-fa17", /* \365\014 */ "cjc-fa18", /* \365\015 */ "cjc-fa19", /* \365\016 */ "cjc-fa1a", /* \365\017 */ "cjc-fa1b", /* \365\020 */ "cjc-fa1c", /* \365\021 */ "cjc-fa1d", /* \365\022 */ "cjc-fa1e", /* \365\023 */ "cjc-fa1f", /* \365\024 */ "cjc-fa20", /* \365\025 */ "cjc-fa21", /* \365\026 */ "cjc-fa22", /* \365\027 */ "cjc-fa23", /* \365\030 */ "cjc-fa24", /* \365\031 */ "cjc-fa25", /* \365\032 */ "cjc-fa26", /* \365\033 */ "cjc-fa27", /* \365\034 */ "cjc-fa28", /* \365\035 */ "cjc-fa29", /* \365\036 */ "cjc-fa2a", /* \365\037 */ "cjc-fa2b", /* \365\040 */ "cjc-fa2c", /* \365\041 */ "cjc-fa2d", /* \365\042 */ "clan", /* \365\043 */ "clavier", /* \365\044 */ "cochon", /* \365\045 */ "coché", /* \365\046 */ "coffre", /* \365\047 */ "coins", /* \365\050 */ "coll", /* \365\051 */ "commerce", /* \365\052 */ "comparer", /* \365\053 */ "complément", /* \365\054 */ "composition", /* \365\055 */ "compte", /* \365\056 */ "compte-client", /* \365\057 */ "comète", /* \365\060 */ "concave", /* \365\061 */ "conique", /* \365\062 */ "conjonction", /* \365\063 */ "conjuguée", /* \365\064 */ "conservateur", /* \365\065 */ "conséquent", /* \365\066 */ "contenant", /* \365\067 */ "contraction", /* \365\070 */ "contre-cotice", /* \365\071 */ "cop", /* \365\072 */ "copie", /* \365\073 */ "coproduit", /* \365\074 */ "coq", /* \365\075 */ "corbeau", /* \365\076 */ "corps", /* \365\077 */ "correct", /* \365\100 */ "correspond", /* \365\101 */ "coréenne", /* \365\102 */ "cot", /* \365\103 */ "cotice", /* \365\104 */ "couleur", /* \365\105 */ "coupe", /* \365\106 */ "coupure", /* \365\107 */ "courant", /* \365\110 */ "courbé", /* \365\111 */ "courir", /* \365\112 */ "couronne", /* \365\113 */ "course", /* \365\114 */ "court", /* \365\115 */ "courts", /* \365\116 */ "couvrir", /* \365\117 */ "cox", /* \365\120 */ "cri-r", /* \365\121 */ "croc", /* \365\122 */ "croche", /* \365\123 */ "croissant", /* \365\124 */ "croisée", /* \365\125 */ "cruzeiro", /* \365\126 */ "cu", /* \365\127 */ "cubique", /* \365\130 */ "cueillir", /* \365\131 */ "cuillère", /* \365\132 */ "cuo", /* \365\133 */ "cuox", /* \365\134 */ "cup", /* \365\135 */ "cur", /* \365\136 */ "cursif", /* \365\137 */ "curx", /* \365\140 */ "cut", /* \365\141 */ "cux", /* \365\142 */ "cweorth", /* \365\143 */ "cylindricité", /* \365\144 */ "cyr", /* \365\145 */ "cyrx", /* \365\146 */ "cyx", /* \365\147 */ "céréales", /* \365\150 */ "d'article", /* \365\151 */ "d'emplacement", /* \365\152 */ "d'enregistrements", /* \365\153 */ "d'ensemble", /* \365\154 */ "d'entrée", /* \365\155 */ "d'euler", /* \365\156 */ "d'exclamation-interrogation",/* \365\157 */ "d'exploitation", /* \365\160 */ "d'information", /* \365\161 */ "d'insistance", /* \365\162 */ "d'interrogation-exclamation",/* \365\163 */ "d'intérêt", /* \365\164 */ "d'inversion", /* \365\165 */ "d'objet", /* \365\166 */ "d'unités", /* \365\167 */ "d'échappement", /* \365\170 */ "d'écrire", /* \365\171 */ "dagalga", /* \365\172 */ "dagaz", /* \365\173 */ "daguech", /* \365\174 */ "dair", /* \365\175 */ "damarou", /* \365\176 */ "danger", /* \365\177 */ "dap", /* \365\200 */ "darga", /* \365\201 */ "dasia", /* \365\202 */ "dat", /* \365\203 */ "david", /* \365\204 */ "daviyani", /* \365\205 */ "dax", /* \365\206 */ "db", /* \365\207 */ "ddap", /* \365\210 */ "ddat", /* \365\211 */ "ddax", /* \365\212 */ "dddha", /* \365\213 */ "ddep", /* \365\214 */ "ddex", /* \365\215 */ "ddie", /* \365\216 */ "ddiep", /* \365\217 */ "ddiex", /* \365\220 */ "ddip", /* \365\221 */ "ddit", /* \365\222 */ "ddix", /* \365\223 */ "ddop", /* \365\224 */ "ddot", /* \365\225 */ "ddou", /* \365\226 */ "ddox", /* \365\227 */ "ddu", /* \365\230 */ "dduo", /* \365\231 */ "dduop", /* \365\232 */ "dduox", /* \365\233 */ "ddup", /* \365\234 */ "ddurx", /* \365\235 */ "ddut", /* \365\236 */ "ddux", /* \365\237 */ "ddwa", /* \365\240 */ "ddÄ", /* \365\241 */ "ddé", /* \365\242 */ "debout", /* \365\243 */ "dehi", /* \365\244 */ "dej", /* \365\245 */ "dek", /* \365\246 */ "deka", /* \365\247 */ "del", /* \365\250 */ "demi-arbre", /* \365\251 */ "demi-cadrat", /* \365\252 */ "demi-espace", /* \365\253 */ "dental", /* \365\254 */ "dep", /* \365\255 */ "dernier", /* \365\256 */ "descendant", /* \365\257 */ "descendu", /* \365\260 */ "desi", /* \365\261 */ "dessous", /* \365\262 */ "dex", /* \365\263 */ "dharma", /* \365\264 */ "dhâlou", /* \365\265 */ "diagonale", /* \365\266 */ "diamètre", /* \365\267 */ "die", /* \365\270 */ "diep", /* \365\271 */ "diex", /* \365\272 */ "dingot", /* \365\273 */ "dip", /* \365\274 */ "dire", /* \365\275 */ "directionnel", /* \365\276 */ "discontinu", /* \365\277 */ "dit", /* \365\300 */ "divisé", /* \365\301 */ "dièse", /* \365\302 */ "dj", /* \365\303 */ "djalladjalalouhou", /* \365\304 */ "djaviyani", /* \365\305 */ "djia", /* \365\306 */ "djja", /* \365\307 */ "djje", /* \365\310 */ "djji", /* \365\311 */ "djjo", /* \365\312 */ "djjou", /* \365\313 */ "djjé", /* \365\314 */ "djwa", /* \365\315 */ "djÄ", /* \365\316 */ "dl", /* \365\317 */ "dle", /* \365\320 */ "dli", /* \365\321 */ "dlo", /* \365\322 */ "dlou", /* \365\323 */ "dlé", /* \365\324 */ "domino", /* \365\325 */ "dong", /* \365\326 */ "dop", /* \365\327 */ "doru", /* \365\330 */ "dot", /* \365\331 */ "doute", /* \365\332 */ "dox", /* \365\333 */ "drachme", /* \365\334 */ "dril", /* \365\335 */ "duo", /* \365\336 */ "duox", /* \365\337 */ "dup", /* \365\340 */ "durx", /* \365\341 */ "dut", /* \365\342 */ "dux", /* \365\343 */ "dwa", /* \365\344 */ "dze", /* \365\345 */ "dzi", /* \365\346 */ "dzo", /* \365\347 */ "dzou", /* \365\350 */ "dÄ", /* \365\351 */ "dÆg", /* \365\352 */ "dËn", /* \365\353 */ "dâdhou", /* \365\354 */ "dâsu", /* \365\355 */ "décembre", /* \365\356 */ "défaire", /* \365\357 */ "défiler", /* \365\360 */ "définition", /* \365\361 */ "délimiteur", /* \365\362 */ "démontrer", /* \365\363 */ "dépilement", /* \365\364 */ "déposée", /* \365\365 */ "dérivée", /* \365\366 */ "dérouleur", /* \365\367 */ "eadhadh", /* \365\370 */ "eamhancholl", /* \365\371 */ "ear", /* \365\372 */ "effacement", /* \365\373 */ "effachement", /* \365\374 */ "egal", /* \365\375 */ "eh", /* \365\376 */ "ehwaz", /* \365\377 */ "el", /* \366\001 */ "elliptique", /* \366\002 */ "emjambée", /* \366\003 */ "enceinte", /* \366\004 */ "encore", /* \366\005 */ "enfant", /* \366\006 */ "enfer", /* \366\007 */ "englobante", /* \366\010 */ "enn", /* \366\011 */ "enregistreur", /* \366\012 */ "ensemble", /* \366\013 */ "entièrement", /* \366\014 */ "entrant", /* \366\015 */ "entrelacé", /* \366\016 */ "entrer", /* \366\017 */ "enveloppe", /* \366\020 */ "envelopper", /* \366\021 */ "eoh", /* \366\022 */ "eolhx", /* \366\023 */ "eou", /* \366\024 */ "estime", /* \366\025 */ "estimé", /* \366\026 */ "esukûdo", /* \366\027 */ "eth", /* \366\030 */ "ethel", /* \366\031 */ "eul", /* \366\032 */ "euro", /* \366\033 */ "ex", /* \366\034 */ "excellent", /* \366\035 */ "exclarrogatif", /* \366\036 */ "exclusif", /* \366\037 */ "excès", /* \366\040 */ "existe", /* \366\041 */ "exécution", /* \366\042 */ "eï", /* \366\043 */ "fahrenheit", /* \366\044 */ "faible", /* \366\045 */ "fallait", /* \366\046 */ "fan", /* \366\047 */ "fap", /* \366\050 */ "farah", /* \366\051 */ "fat", /* \366\052 */ "faucille", /* \366\053 */ "fax", /* \366\054 */ "fayanna", /* \366\055 */ "fe", /* \366\056 */ "fearn", /* \366\057 */ "femme", /* \366\060 */ "feng", /* \366\061 */ "fermant", /* \366\062 */ "fermeture", /* \366\063 */ "festival", /* \366\064 */ "ff", /* \366\065 */ "ffi", /* \366\066 */ "ffl", /* \366\067 */ "fichier", /* \366\070 */ "fichiers", /* \366\071 */ "fil", /* \366\072 */ "fip", /* \366\073 */ "fit", /* \366\074 */ "fix", /* \366\075 */ "fl", /* \366\076 */ "fléche", /* \366\077 */ "flûte", /* \366\100 */ "fm", /* \366\101 */ "folioles", /* \366\102 */ "foncée", /* \366\103 */ "fongman", /* \366\104 */ "fop", /* \366\105 */ "force", /* \366\106 */ "fort", /* \366\107 */ "fosse", /* \366\110 */ "fox", /* \366\111 */ "fraisage", /* \366\112 */ "franc", /* \366\113 */ "français", /* \366\114 */ "fu", /* \366\115 */ "fup", /* \366\116 */ "fur", /* \366\117 */ "furx", /* \366\120 */ "fuseau", /* \366\121 */ "fut", /* \366\122 */ "fux", /* \366\123 */ "fwa", /* \366\124 */ "fy", /* \366\125 */ "fyp", /* \366\126 */ "fyt", /* \366\127 */ "fyx", /* \366\130 */ "fyÄ", /* \366\131 */ "fÄ", /* \366\132 */ "fâ", /* \366\133 */ "fâfou", /* \366\134 */ "fâï", /* \366\135 */ "féhu", /* \366\136 */ "féoh", /* \366\137 */ "février", /* \366\140 */ "fî", /* \366\141 */ "fô", /* \366\142 */ "ganma", /* \366\143 */ "gap", /* \366\144 */ "gar", /* \366\145 */ "garon", /* \366\146 */ "gat", /* \366\147 */ "gax", /* \366\150 */ "gb", /* \366\151 */ "gcan", /* \366\152 */ "gdan", /* \366\153 */ "gebo", /* \366\154 */ "geofu", /* \366\155 */ "ger", /* \366\156 */ "gerchâïm", /* \366\157 */ "gerech", /* \366\160 */ "get", /* \366\161 */ "gex", /* \366\162 */ "ggap", /* \366\163 */ "ggat", /* \366\164 */ "ggax", /* \366\165 */ "ggep", /* \366\166 */ "gget", /* \366\167 */ "ggex", /* \366\170 */ "ggie", /* \366\171 */ "ggiep", /* \366\172 */ "ggiex", /* \366\173 */ "ggit", /* \366\174 */ "ggix", /* \366\175 */ "ggot", /* \366\176 */ "ggou", /* \366\177 */ "ggox", /* \366\200 */ "ggu", /* \366\201 */ "gguop", /* \366\202 */ "gguot", /* \366\203 */ "gguox", /* \366\204 */ "ggup", /* \366\205 */ "ggur", /* \366\206 */ "ggurx", /* \366\207 */ "ggut", /* \366\210 */ "ggux", /* \366\211 */ "ggÄ", /* \366\212 */ "ggé", /* \366\213 */ "ghaïnou", /* \366\214 */ "ghe", /* \366\215 */ "ghi", /* \366\216 */ "gho", /* \366\217 */ "ghou", /* \366\220 */ "ghz", /* \366\221 */ "ghé", /* \366\222 */ "gie", /* \366\223 */ "giep", /* \366\224 */ "giet", /* \366\225 */ "giex", /* \366\226 */ "giga", /* \366\227 */ "gimel", /* \366\230 */ "ginî", /* \366\231 */ "gip", /* \366\232 */ "girudâ", /* \366\233 */ "git", /* \366\234 */ "gix", /* \366\235 */ "glace", /* \366\236 */ "gn", /* \366\237 */ "gnaviyani", /* \366\240 */ "gop", /* \366\241 */ "gort", /* \366\242 */ "goua'", /* \366\243 */ "gox", /* \366\244 */ "gpa", /* \366\245 */ "graphique", /* \366\246 */ "grenouille", /* \366\247 */ "grichine", /* \366\250 */ "griffe", /* \366\251 */ "grimaçant", /* \366\252 */ "groupe", /* \366\253 */ "groupes", /* \366\254 */ "gui", /* \366\255 */ "guillemets", /* \366\256 */ "guo", /* \366\257 */ "guop", /* \366\260 */ "guot", /* \366\261 */ "guox", /* \366\262 */ "gup", /* \366\263 */ "gur", /* \366\264 */ "guramu", /* \366\265 */ "guramuton", /* \366\266 */ "gurx", /* \366\267 */ "gut", /* \366\270 */ "gux", /* \366\271 */ "guËn", /* \366\272 */ "gwa", /* \366\273 */ "gwe", /* \366\274 */ "gwi", /* \366\275 */ "gwÄ", /* \366\276 */ "gwé", /* \366\277 */ "gy", /* \366\300 */ "gÄ", /* \366\301 */ "gâfou", /* \366\302 */ "gémeaux", /* \366\303 */ "génitif", /* \366\304 */ "géométrique", /* \366\305 */ "géorgien", /* \366\306 */ "gêta", /* \366\307 */ "hache", /* \366\310 */ "hagall-à-longue-branche", /* \366\311 */ "hagall-à-ramille", /* \366\312 */ "haglaz", /* \366\313 */ "haitu", /* \366\314 */ "halanta", /* \366\315 */ "hallebarde", /* \366\316 */ "hameau", /* \366\317 */ "han", /* \366\320 */ "hap", /* \366\321 */ "haricot", /* \366\322 */ "hat", /* \366\323 */ "haute", /* \366\324 */ "hax", /* \366\325 */ "hayanna", /* \366\326 */ "hekutâru", /* \366\327 */ "hep", /* \366\330 */ "hermitienne", /* \366\331 */ "herutu", /* \366\332 */ "hex", /* \366\333 */ "heïseï", /* \366\334 */ "hha", /* \366\335 */ "hhe", /* \366\336 */ "hhevâssâ/'essâsâ", /* \366\337 */ "hhi", /* \366\340 */ "hho", /* \366\341 */ "hhou", /* \366\342 */ "hhwa", /* \366\343 */ "hhÄ", /* \366\344 */ "hhâ", /* \366\345 */ "hhé", /* \366\346 */ "hhêth", /* \366\347 */ "hie", /* \366\350 */ "hiex", /* \366\351 */ "hip", /* \366\352 */ "hit", /* \366\353 */ "hizb", /* \366\354 */ "hiûh-miûm", /* \366\355 */ "hiûh-niûn", /* \366\356 */ "hiûh-piûp", /* \366\357 */ "hiûh-riûl", /* \366\360 */ "hk", /* \366\361 */ "hla", /* \366\362 */ "hlap", /* \366\363 */ "hlat", /* \366\364 */ "hlax", /* \366\365 */ "hle", /* \366\366 */ "hlep", /* \366\367 */ "hlex", /* \366\370 */ "hli", /* \366\371 */ "hlie", /* \366\372 */ "hliep", /* \366\373 */ "hliex", /* \366\374 */ "hlip", /* \366\375 */ "hlit", /* \366\376 */ "hlix", /* \366\377 */ "hlo", /* \367\001 */ "hlop", /* \367\002 */ "hlox", /* \367\003 */ "hlu", /* \367\004 */ "hluo", /* \367\005 */ "hluop", /* \367\006 */ "hluox", /* \367\007 */ "hlup", /* \367\010 */ "hlur", /* \367\011 */ "hlurx", /* \367\012 */ "hlut", /* \367\013 */ "hlux", /* \367\014 */ "hly", /* \367\015 */ "hlyp", /* \367\016 */ "hlyr", /* \367\017 */ "hlyrx", /* \367\020 */ "hlyt", /* \367\021 */ "hlyx", /* \367\022 */ "hma", /* \367\023 */ "hmap", /* \367\024 */ "hmat", /* \367\025 */ "hmax", /* \367\026 */ "hmi", /* \367\027 */ "hmie", /* \367\030 */ "hmiep", /* \367\031 */ "hmiex", /* \367\032 */ "hmip", /* \367\033 */ "hmit", /* \367\034 */ "hmix", /* \367\035 */ "hmop", /* \367\036 */ "hmot", /* \367\037 */ "hmox", /* \367\040 */ "hmu", /* \367\041 */ "hmuo", /* \367\042 */ "hmuop", /* \367\043 */ "hmuox", /* \367\044 */ "hmup", /* \367\045 */ "hmur", /* \367\046 */ "hmurx", /* \367\047 */ "hmut", /* \367\050 */ "hmux", /* \367\051 */ "hmy", /* \367\052 */ "hmyp", /* \367\053 */ "hmyr", /* \367\054 */ "hmyrx", /* \367\055 */ "hmyx", /* \367\056 */ "hnap", /* \367\057 */ "hnat", /* \367\060 */ "hnax", /* \367\061 */ "hne", /* \367\062 */ "hnep", /* \367\063 */ "hnex", /* \367\064 */ "hni", /* \367\065 */ "hnie", /* \367\066 */ "hniep", /* \367\067 */ "hniet", /* \367\070 */ "hniex", /* \367\071 */ "hnip", /* \367\072 */ "hnit", /* \367\073 */ "hnix", /* \367\074 */ "hnop", /* \367\075 */ "hnot", /* \367\076 */ "hnox", /* \367\077 */ "hnuo", /* \367\100 */ "hnuox", /* \367\101 */ "hnut", /* \367\102 */ "holekh", /* \367\103 */ "hon", /* \367\104 */ "hop", /* \367\105 */ "horizontalement", /* \367\106 */ "horizontaux", /* \367\107 */ "hors-tout", /* \367\110 */ "hot", /* \367\111 */ "houa", /* \367\112 */ "houe", /* \367\113 */ "houi", /* \367\114 */ "houo", /* \367\115 */ "houou", /* \367\116 */ "houé", /* \367\117 */ "hox", /* \367\120 */ "hp", /* \367\121 */ "hpa", /* \367\122 */ "hs", /* \367\123 */ "huarado", /* \367\124 */ "huo", /* \367\125 */ "huop", /* \367\126 */ "huot", /* \367\127 */ "huox", /* \367\130 */ "huran", /* \367\131 */ "huîto", /* \367\132 */ "hv", /* \367\133 */ "hwair", /* \367\134 */ "hxa", /* \367\135 */ "hxap", /* \367\136 */ "hxat", /* \367\137 */ "hxax", /* \367\140 */ "hxe", /* \367\141 */ "hxep", /* \367\142 */ "hxex", /* \367\143 */ "hxi", /* \367\144 */ "hxie", /* \367\145 */ "hxiep", /* \367\146 */ "hxiet", /* \367\147 */ "hxiex", /* \367\150 */ "hxip", /* \367\151 */ "hxix", /* \367\152 */ "hxo", /* \367\153 */ "hxox", /* \367\154 */ "hxuop", /* \367\155 */ "hxuot", /* \367\156 */ "hxuox", /* \367\157 */ "hystérésis", /* \367\160 */ "hz", /* \367\161 */ "hÄ", /* \367\162 */ "hÆgl", /* \367\163 */ "hËn", /* \367\164 */ "hèt", /* \367\165 */ "hôn", /* \367\166 */ "hôru", /* \367\167 */ "i-a", /* \367\170 */ "i-arèa", /* \367\171 */ "i-ou", /* \367\172 */ "i-ya", /* \367\173 */ "i-ô", /* \367\174 */ "i-û", /* \367\175 */ "ibifili", /* \367\176 */ "identification", /* \367\177 */ "ie", /* \367\200 */ "iep", /* \367\201 */ "iet", /* \367\202 */ "iex", /* \367\203 */ "ifÃn", /* \367\204 */ "ilouyanna", /* \367\205 */ "ilouz", /* \367\206 */ "iloûyanna", /* \367\207 */ "im", /* \367\210 */ "incrément", /* \367\211 */ "industrielle", /* \367\212 */ "infini", /* \367\213 */ "info", /* \367\214 */ "ing", /* \367\215 */ "ingwaz", /* \367\216 */ "iningu", /* \367\217 */ "inn", /* \367\220 */ "inne", /* \367\221 */ "innn", /* \367\222 */ "insecte", /* \367\223 */ "intercale", /* \367\224 */ "intersyllabique", /* \367\225 */ "inti", /* \367\226 */ "inversé", /* \367\227 */ "iodhadh", /* \367\230 */ "ior", /* \367\231 */ "ip", /* \367\232 */ "iri", /* \367\233 */ "irouyanna", /* \367\234 */ "iroûyanna", /* \367\235 */ "is", /* \367\236 */ "isa", /* \367\237 */ "iss", /* \367\240 */ "it", /* \367\241 */ "iwaz", /* \367\242 */ "ix", /* \367\243 */ "iy", /* \367\244 */ "iyanna", /* \367\245 */ "iûng-k'iûk'", /* \367\246 */ "iûng-miûm", /* \367\247 */ "iûng-p'iûp'", /* \367\250 */ "iûng-pansiôs", /* \367\251 */ "iûng-piûp", /* \367\252 */ "iûng-siôs", /* \367\253 */ "iûng-ssangkiyok", /* \367\254 */ "iûng-t'iût'", /* \367\255 */ "iûng-tch'iûtch'", /* \367\256 */ "iûng-tchiûtch", /* \367\257 */ "iûng-tikût", /* \367\260 */ "jambes", /* \367\261 */ "janvier", /* \367\262 */ "japonaise", /* \367\263 */ "je", /* \367\264 */ "jeran", /* \367\265 */ "jie", /* \367\266 */ "jiep", /* \367\267 */ "jiet", /* \367\270 */ "jiex", /* \367\271 */ "jip", /* \367\272 */ "jit", /* \367\273 */ "jix", /* \367\274 */ "jji", /* \367\275 */ "jjie", /* \367\276 */ "jjiep", /* \367\277 */ "jjiet", /* \367\300 */ "jjiex", /* \367\301 */ "jjip", /* \367\302 */ "jjit", /* \367\303 */ "jjix", /* \367\304 */ "jjo", /* \367\305 */ "jjop", /* \367\306 */ "jjot", /* \367\307 */ "jjox", /* \367\310 */ "jju", /* \367\311 */ "jjuo", /* \367\312 */ "jjuop", /* \367\313 */ "jjuox", /* \367\314 */ "jjup", /* \367\315 */ "jjur", /* \367\316 */ "jjurx", /* \367\317 */ "jjux", /* \367\320 */ "jjyp", /* \367\321 */ "jjyt", /* \367\322 */ "jjyx", /* \367\323 */ "jop", /* \367\324 */ "jot", /* \367\325 */ "jou", /* \367\326 */ "jox", /* \367\327 */ "ju", /* \367\330 */ "judéo-espagnol", /* \367\331 */ "juillet", /* \367\332 */ "juin", /* \367\333 */ "juo", /* \367\334 */ "juop", /* \367\335 */ "juot", /* \367\336 */ "juox", /* \367\337 */ "jup", /* \367\340 */ "jupiter", /* \367\341 */ "jur", /* \367\342 */ "jurx", /* \367\343 */ "justification", /* \367\344 */ "jut", /* \367\345 */ "jux", /* \367\346 */ "jwa", /* \367\347 */ "jy", /* \367\350 */ "jyp", /* \367\351 */ "jyr", /* \367\352 */ "jyrx", /* \367\353 */ "jyt", /* \367\354 */ "jyx", /* \367\355 */ "jÄ", /* \367\356 */ "jérusalem", /* \367\357 */ "kah", /* \367\360 */ "kai", /* \367\361 */ "kairi", /* \367\362 */ "kakabat", /* \367\363 */ "kan", /* \367\364 */ "kantadja", /* \367\365 */ "kap", /* \367\366 */ "kapyo-ounriûl", /* \367\367 */ "karatto", /* \367\370 */ "karné", /* \367\371 */ "karorî", /* \367\372 */ "kat", /* \367\373 */ "kaun", /* \367\374 */ "kauna", /* \367\375 */ "kax", /* \367\376 */ "kaï", /* \367\377 */ "kb", /* \370\001 */ "kcal", /* \370\002 */ "kelvin", /* \370\003 */ "kep", /* \370\004 */ "ket", /* \370\005 */ "kex", /* \370\006 */ "khe", /* \370\007 */ "khomout", /* \370\010 */ "khon", /* \370\011 */ "khou", /* \370\012 */ "khouat", /* \370\013 */ "khwaï", /* \370\014 */ "khz", /* \370\015 */ "khâ", /* \370\016 */ "kie", /* \370\017 */ "kiep", /* \370\020 */ "kiex", /* \370\021 */ "kih", /* \370\022 */ "kiro", /* \370\023 */ "kiroguramu", /* \370\024 */ "kiromêtoru", /* \370\025 */ "kirowatto", /* \370\026 */ "kix", /* \370\027 */ "kiyok-riûl", /* \370\030 */ "kiyok-siôs-kiyok", /* \370\031 */ "kka", /* \370\032 */ "kke", /* \370\033 */ "kki", /* \370\034 */ "kko", /* \370\035 */ "kkou", /* \370\036 */ "kké", /* \370\037 */ "kl", /* \370\040 */ "koh", /* \370\041 */ "kombou", /* \370\042 */ "kon", /* \370\043 */ "kop", /* \370\044 */ "koruna", /* \370\045 */ "kot", /* \370\046 */ "koubouts", /* \370\047 */ "kounddaliya", /* \370\050 */ "kox", /* \370\051 */ "koûh", /* \370\052 */ "kpa", /* \370\053 */ "kra", /* \370\054 */ "kt", /* \370\055 */ "kuo", /* \370\056 */ "kuop", /* \370\057 */ "kuox", /* \370\060 */ "kup", /* \370\061 */ "kur", /* \370\062 */ "kuruzeiro", /* \370\063 */ "kurx", /* \370\064 */ "kurône", /* \370\065 */ "kut", /* \370\066 */ "kux", /* \370\067 */ "kv", /* \370\070 */ "kw", /* \370\071 */ "kwe", /* \370\072 */ "kwo", /* \370\073 */ "kwou", /* \370\074 */ "kwÄ", /* \370\075 */ "kwËn", /* \370\076 */ "kxa", /* \370\077 */ "kxe", /* \370\100 */ "kxi", /* \370\101 */ "kxo", /* \370\102 */ "kxou", /* \370\103 */ "kxwa", /* \370\104 */ "kxwe", /* \370\105 */ "kxwi", /* \370\106 */ "kxwÄ", /* \370\107 */ "kxwé", /* \370\110 */ "kxÄ", /* \370\111 */ "kxé", /* \370\112 */ "kyurî", /* \370\113 */ "kÄ", /* \370\114 */ "kâ", /* \370\115 */ "kâfou", /* \370\116 */ "kâph", /* \370\117 */ "kâï", /* \370\120 */ "kéh", /* \370\121 */ "kêsu", /* \370\122 */ "kî", /* \370\123 */ "kômoût", /* \370\124 */ "kôpo", /* \370\125 */ "l'espace", /* \370\126 */ "l'homme", /* \370\127 */ "l-pointé", /* \370\130 */ "lac", /* \370\131 */ "lagu", /* \370\132 */ "lakkhangyao", /* \370\133 */ "lance", /* \370\134 */ "langue", /* \370\135 */ "laotiens", /* \370\136 */ "lap", /* \370\137 */ "lat", /* \370\140 */ "latéral", /* \370\141 */ "laukaz", /* \370\142 */ "lax", /* \370\143 */ "lce", /* \370\144 */ "lci", /* \370\145 */ "ldan", /* \370\146 */ "ledit", /* \370\147 */ "lej", /* \370\150 */ "lek", /* \370\151 */ "lep", /* \370\152 */ "lettré", /* \370\153 */ "lex", /* \370\154 */ "lh", /* \370\155 */ "lhag", /* \370\156 */ "lhaviyani", /* \370\157 */ "lhe", /* \370\160 */ "lhou", /* \370\161 */ "lhâ", /* \370\162 */ "lhé", /* \370\163 */ "lhî", /* \370\164 */ "lhô", /* \370\165 */ "liaison", /* \370\166 */ "libéral", /* \370\167 */ "liep", /* \370\170 */ "liet", /* \370\171 */ "liex", /* \370\172 */ "lignes", /* \370\173 */ "limite", /* \370\174 */ "lion", /* \370\175 */ "lip", /* \370\176 */ "lire", /* \370\177 */ "lit", /* \370\200 */ "lix", /* \370\201 */ "lm", /* \370\202 */ "ln", /* \370\203 */ "locatif", /* \370\204 */ "log", /* \370\205 */ "logicielle", /* \370\206 */ "logr", /* \370\207 */ "lop", /* \370\210 */ "lorraine", /* \370\211 */ "lot", /* \370\212 */ "lout", /* \370\213 */ "lox", /* \370\214 */ "ls", /* \370\215 */ "lu", /* \370\216 */ "luis", /* \370\217 */ "lunaire", /* \370\220 */ "luo", /* \370\221 */ "luop", /* \370\222 */ "luot", /* \370\223 */ "luox", /* \370\224 */ "lup", /* \370\225 */ "lur", /* \370\226 */ "lurx", /* \370\227 */ "lut", /* \370\230 */ "lux", /* \370\231 */ "lwa", /* \370\232 */ "lx", /* \370\233 */ "ly", /* \370\234 */ "lyp", /* \370\235 */ "lyrx", /* \370\236 */ "lyt", /* \370\237 */ "lyx", /* \370\240 */ "lz", /* \370\241 */ "lÄ", /* \370\242 */ "lËn", /* \370\243 */ "lÜ", /* \370\244 */ "lÜÜ", /* \370\245 */ "lâ", /* \370\246 */ "lâmadh", /* \370\247 */ "lâmou", /* \370\250 */ "lâï", /* \370\251 */ "légère", /* \370\252 */ "lî", /* \370\253 */ "madr-à-longue-branche", /* \370\254 */ "madr-à-ramille", /* \370\255 */ "mahha", /* \370\256 */ "maille", /* \370\257 */ "mains", /* \370\260 */ "maison", /* \370\261 */ "makku", /* \370\262 */ "maladie", /* \370\263 */ "malte", /* \370\264 */ "mandchoue", /* \370\265 */ "mannaz", /* \370\266 */ "manque", /* \370\267 */ "mansyon", /* \370\270 */ "map", /* \370\271 */ "maqaf", /* \370\272 */ "mar", /* \370\273 */ "marqué", /* \370\274 */ "mars", /* \370\275 */ "marteau", /* \370\276 */ "masculin", /* \370\277 */ "massorétique", /* \370\300 */ "mat", /* \370\301 */ "matin", /* \370\302 */ "matrice", /* \370\303 */ "mauvais", /* \370\304 */ "max", /* \370\305 */ "mayakru", /* \370\306 */ "mayakuro", /* \370\307 */ "mayanna", /* \370\310 */ "maïmalaï", /* \370\311 */ "maïmouan", /* \370\312 */ "maïtaïkhou", /* \370\313 */ "maïyamok", /* \370\314 */ "mchu", /* \370\315 */ "mdun", /* \370\316 */ "med", /* \370\317 */ "mehouppakh", /* \370\320 */ "melon", /* \370\321 */ "men", /* \370\322 */ "mercure", /* \370\323 */ "mesure", /* \370\324 */ "meteg", /* \370\325 */ "mex", /* \370\326 */ "meïji", /* \370\327 */ "mg", /* \370\330 */ "mga", /* \370\331 */ "mgap", /* \370\332 */ "mgat", /* \370\333 */ "mgax", /* \370\334 */ "mge", /* \370\335 */ "mgep", /* \370\336 */ "mgex", /* \370\337 */ "mgie", /* \370\340 */ "mgiex", /* \370\341 */ "mgop", /* \370\342 */ "mgot", /* \370\343 */ "mgox", /* \370\344 */ "mgu", /* \370\345 */ "mguo", /* \370\346 */ "mguop", /* \370\347 */ "mguox", /* \370\350 */ "mgup", /* \370\351 */ "mgur", /* \370\352 */ "mgurx", /* \370\353 */ "mgut", /* \370\354 */ "mgux", /* \370\355 */ "mh", /* \370\356 */ "mhz", /* \370\357 */ "micro", /* \370\360 */ "mie", /* \370\361 */ "miep", /* \370\362 */ "miex", /* \370\363 */ "mikuron", /* \370\364 */ "mil", /* \370\365 */ "millet", /* \370\366 */ "millions", /* \370\367 */ "millième", /* \370\370 */ "ministre", /* \370\371 */ "minnie", /* \370\372 */ "mip", /* \370\373 */ "miri", /* \370\374 */ "miribâru", /* \370\375 */ "mise", /* \370\376 */ "mit", /* \370\377 */ "mix", /* \371\001 */ "miûm-hiûh", /* \371\002 */ "miûm-kiyok", /* \371\003 */ "miûm-riûl", /* \371\004 */ "miûm-ssangsiôs", /* \371\005 */ "miûm-tch'iûtch'", /* \371\006 */ "ml", /* \371\007 */ "moan", /* \371\010 */ "mode", /* \371\011 */ "modélise", /* \371\012 */ "mohammad", /* \371\013 */ "moineau", /* \371\014 */ "moins-ou-plus", /* \371\015 */ "mol", /* \371\016 */ "mongols", /* \371\017 */ "monostable", /* \371\020 */ "montant", /* \371\021 */ "monter", /* \371\022 */ "montre", /* \371\023 */ "moose", /* \371\024 */ "mouette", /* \371\025 */ "mouqdam", /* \371\026 */ "mox", /* \371\027 */ "moyen", /* \371\030 */ "moûsikatoan", /* \371\031 */ "mpa", /* \371\032 */ "ms", /* \371\033 */ "muin", /* \371\034 */ "multijection", /* \371\035 */ "multiple", /* \371\036 */ "muo", /* \371\037 */ "muop", /* \371\040 */ "muot", /* \371\041 */ "muox", /* \371\042 */ "mup", /* \371\043 */ "murx", /* \371\044 */ "musique", /* \371\045 */ "mut", /* \371\046 */ "mux", /* \371\047 */ "mwa", /* \371\050 */ "my", /* \371\051 */ "myp", /* \371\052 */ "mystérieux", /* \371\053 */ "myt", /* \371\054 */ "myx", /* \371\055 */ "myÄ", /* \371\056 */ "mÄ", /* \371\057 */ "mâ", /* \371\060 */ "mârikh", /* \371\061 */ "mâï", /* \371\062 */ "mère", /* \371\063 */ "médecine", /* \371\064 */ "médiane", /* \371\065 */ "médians", /* \371\066 */ "mégatonne", /* \371\067 */ "métobèle", /* \371\070 */ "mêtoru", /* \371\071 */ "mî", /* \371\072 */ "mîmou", /* \371\073 */ "n'appartient", /* \371\074 */ "n'est", /* \371\075 */ "n'existe", /* \371\076 */ "n'oblige", /* \371\077 */ "n'y", /* \371\100 */ "n-pointé", /* \371\101 */ "nabla", /* \371\102 */ "nah", /* \371\103 */ "naira", /* \371\104 */ "nangmontho", /* \371\105 */ "nano", /* \371\106 */ "nap", /* \371\107 */ "nationales", /* \371\110 */ "naud", /* \371\111 */ "naud-à-ramille", /* \371\112 */ "naudiz", /* \371\113 */ "nax", /* \371\114 */ "naître", /* \371\115 */ "nba", /* \371\116 */ "nbap", /* \371\117 */ "nbat", /* \371\120 */ "nbax", /* \371\121 */ "nbi", /* \371\122 */ "nbiep", /* \371\123 */ "nbiex", /* \371\124 */ "nbip", /* \371\125 */ "nbit", /* \371\126 */ "nbix", /* \371\127 */ "nbo", /* \371\130 */ "nbop", /* \371\131 */ "nbot", /* \371\132 */ "nbox", /* \371\133 */ "nbu", /* \371\134 */ "nbup", /* \371\135 */ "nbur", /* \371\136 */ "nburx", /* \371\137 */ "nbut", /* \371\140 */ "nbux", /* \371\141 */ "nby", /* \371\142 */ "nbyp", /* \371\143 */ "nbyr", /* \371\144 */ "nbyrx", /* \371\145 */ "nbyt", /* \371\146 */ "nbyx", /* \371\147 */ "nda", /* \371\150 */ "ndap", /* \371\151 */ "ndat", /* \371\152 */ "ndax", /* \371\153 */ "nde", /* \371\154 */ "ndep", /* \371\155 */ "ndex", /* \371\156 */ "ndi", /* \371\157 */ "ndie", /* \371\160 */ "ndiex", /* \371\161 */ "ndip", /* \371\162 */ "ndit", /* \371\163 */ "ndix", /* \371\164 */ "ndo", /* \371\165 */ "ndop", /* \371\166 */ "ndot", /* \371\167 */ "ndox", /* \371\170 */ "ndu", /* \371\171 */ "ndup", /* \371\172 */ "ndur", /* \371\173 */ "ndurx", /* \371\174 */ "ndut", /* \371\175 */ "ndux", /* \371\176 */ "nen", /* \371\177 */ "nep", /* \371\200 */ "neptune", /* \371\201 */ "nettoyer", /* \371\202 */ "nex", /* \371\203 */ "nez", /* \371\204 */ "nf", /* \371\205 */ "ngap", /* \371\206 */ "ngat", /* \371\207 */ "ngax", /* \371\210 */ "ngaï", /* \371\211 */ "nge", /* \371\212 */ "ngep", /* \371\213 */ "ngex", /* \371\214 */ "ngg", /* \371\215 */ "ngi", /* \371\216 */ "ngie", /* \371\217 */ "ngiep", /* \371\220 */ "ngiex", /* \371\221 */ "ngop", /* \371\222 */ "ngot", /* \371\223 */ "ngou", /* \371\224 */ "ngox", /* \371\225 */ "nguo", /* \371\226 */ "nguot", /* \371\227 */ "nguox", /* \371\230 */ "ngâ", /* \371\231 */ "ngâï", /* \371\232 */ "ngéadal", /* \371\233 */ "ngî", /* \371\234 */ "ngô", /* \371\235 */ "nh", /* \371\236 */ "nia", /* \371\237 */ "nie", /* \371\240 */ "niep", /* \371\241 */ "niex", /* \371\242 */ "niggahita", /* \371\243 */ "nikahit", /* \371\244 */ "nikhahit", /* \371\245 */ "nion", /* \371\246 */ "nip", /* \371\247 */ "nirougou", /* \371\250 */ "nit", /* \371\251 */ "nix", /* \371\252 */ "niûn-piûp", /* \371\253 */ "niûn-t'iût'", /* \371\254 */ "nji", /* \371\255 */ "njie", /* \371\256 */ "njiep", /* \371\257 */ "njiet", /* \371\260 */ "njiex", /* \371\261 */ "njip", /* \371\262 */ "njit", /* \371\263 */ "njix", /* \371\264 */ "njo", /* \371\265 */ "njop", /* \371\266 */ "njot", /* \371\267 */ "njox", /* \371\270 */ "nju", /* \371\271 */ "njuo", /* \371\272 */ "njuox", /* \371\273 */ "njup", /* \371\274 */ "njur", /* \371\275 */ "njurx", /* \371\276 */ "njux", /* \371\277 */ "njy", /* \371\300 */ "njyp", /* \371\301 */ "njyr", /* \371\302 */ "njyrx", /* \371\303 */ "njyt", /* \371\304 */ "njyx", /* \371\305 */ "nm", /* \371\306 */ "nng", /* \371\307 */ "nnga", /* \371\310 */ "nngi", /* \371\311 */ "nngo", /* \371\312 */ "nngâ", /* \371\313 */ "nngî", /* \371\314 */ "nngô", /* \371\315 */ "nno", /* \371\316 */ "nnoûn", /* \371\317 */ "noirs", /* \371\320 */ "nokhouk", /* \371\321 */ "nominales", /* \371\322 */ "non-barre", /* \371\323 */ "non-et", /* \371\324 */ "non-ou", /* \371\325 */ "non-vérification", /* \371\326 */ "nop", /* \371\327 */ "not", /* \371\330 */ "notto", /* \371\331 */ "nouveau", /* \371\332 */ "nouvelle", /* \371\333 */ "novembre", /* \371\334 */ "nox", /* \371\335 */ "noûnou", /* \371\336 */ "nra", /* \371\337 */ "nrap", /* \371\340 */ "nrat", /* \371\341 */ "nrax", /* \371\342 */ "nre", /* \371\343 */ "nrep", /* \371\344 */ "nret", /* \371\345 */ "nrex", /* \371\346 */ "nro", /* \371\347 */ "nrop", /* \371\350 */ "nrox", /* \371\351 */ "nru", /* \371\352 */ "nrup", /* \371\353 */ "nrur", /* \371\354 */ "nrurx", /* \371\355 */ "nrut", /* \371\356 */ "nrux", /* \371\357 */ "nry", /* \371\360 */ "nryp", /* \371\361 */ "nryr", /* \371\362 */ "nryrx", /* \371\363 */ "nryt", /* \371\364 */ "nryx", /* \371\365 */ "ns", /* \371\366 */ "nuage", /* \371\367 */ "nuit", /* \371\370 */ "nunavut", /* \371\371 */ "nuo", /* \371\372 */ "nuop", /* \371\373 */ "nuox", /* \371\374 */ "nup", /* \371\375 */ "nur", /* \371\376 */ "nurx", /* \371\377 */ "nut", /* \372\001 */ "nux", /* \372\002 */ "nv", /* \372\003 */ "nw", /* \372\004 */ "nwa", /* \372\005 */ "nyd", /* \372\006 */ "nyi", /* \372\007 */ "nyie", /* \372\010 */ "nyiep", /* \372\011 */ "nyiet", /* \372\012 */ "nyiex", /* \372\013 */ "nyit", /* \372\014 */ "nyix", /* \372\015 */ "nyo", /* \372\016 */ "nyot", /* \372\017 */ "nyox", /* \372\020 */ "nyu", /* \372\021 */ "nyuo", /* \372\022 */ "nyuop", /* \372\023 */ "nyuox", /* \372\024 */ "nyup", /* \372\025 */ "nyut", /* \372\026 */ "nyux", /* \372\027 */ "nza", /* \372\030 */ "nzap", /* \372\031 */ "nzat", /* \372\032 */ "nzax", /* \372\033 */ "nze", /* \372\034 */ "nzex", /* \372\035 */ "nzi", /* \372\036 */ "nzie", /* \372\037 */ "nziep", /* \372\040 */ "nziex", /* \372\041 */ "nzip", /* \372\042 */ "nzit", /* \372\043 */ "nzix", /* \372\044 */ "nzop", /* \372\045 */ "nzox", /* \372\046 */ "nzu", /* \372\047 */ "nzuo", /* \372\050 */ "nzuox", /* \372\051 */ "nzup", /* \372\052 */ "nzurx", /* \372\053 */ "nzux", /* \372\054 */ "nzy", /* \372\055 */ "nzyp", /* \372\056 */ "nzyr", /* \372\057 */ "nzyrx", /* \372\060 */ "nzyt", /* \372\061 */ "nzyx", /* \372\062 */ "nÄ", /* \372\063 */ "nËn", /* \372\064 */ "nâksikyaya", /* \372\065 */ "nâï", /* \372\066 */ "nî", /* \372\067 */ "o-ou", /* \372\070 */ "o-ô", /* \372\071 */ "o-û", /* \372\072 */ "oblige", /* \372\073 */ "obofili", /* \372\074 */ "occidentale", /* \372\075 */ "octet", /* \372\076 */ "octobre", /* \372\077 */ "oleh", /* \372\100 */ "once", /* \372\101 */ "one", /* \372\102 */ "ong", /* \372\103 */ "onkar", /* \372\104 */ "onne", /* \372\105 */ "onsu", /* \372\106 */ "opposition", /* \372\107 */ "option", /* \372\110 */ "orage", /* \372\111 */ "ordonnances", /* \372\112 */ "oreille", /* \372\113 */ "orientale", /* \372\114 */ "origine", /* \372\115 */ "orthodoxe", /* \372\116 */ "oss-à-branche-longue", /* \372\117 */ "oss-à-ramille", /* \372\120 */ "ot", /* \372\121 */ "othalan", /* \372\122 */ "ou-a", /* \372\123 */ "ou-o-û", /* \372\124 */ "ou-ou", /* \372\125 */ "ou-yé", /* \372\126 */ "ou-è", /* \372\127 */ "ouboufili", /* \372\130 */ "oudatta", /* \372\131 */ "oue", /* \372\132 */ "ounn", /* \372\133 */ "ouou", /* \372\134 */ "oura", /* \372\135 */ "ouvrant", /* \372\136 */ "ouyanna", /* \372\137 */ "ouê", /* \372\140 */ "ov", /* \372\141 */ "ox", /* \372\142 */ "oyanna", /* \372\143 */ "oûboûfili", /* \372\144 */ "oûyanna", /* \372\145 */ "p'", /* \372\146 */ "p'ar", /* \372\147 */ "p-ouvert", /* \372\150 */ "p-pointé", /* \372\151 */ "padma", /* \372\152 */ "paix", /* \372\153 */ "palatalisation", /* \372\154 */ "palotchka", /* \372\155 */ "paluta", /* \372\156 */ "pap", /* \372\157 */ "parapluie", /* \372\160 */ "parce", /* \372\161 */ "parfum", /* \372\162 */ "partie", /* \372\163 */ "partielle", /* \372\164 */ "paseq", /* \372\165 */ "pasouq", /* \372\166 */ "pastille", /* \372\167 */ "pat", /* \372\170 */ "patak", /* \372\171 */ "paviyani", /* \372\172 */ "pax", /* \372\173 */ "pazer", /* \372\174 */ "païyannoï", /* \372\175 */ "pc", /* \372\176 */ "peau", /* \372\177 */ "peith", /* \372\200 */ "penihi", /* \372\201 */ "pensu", /* \372\202 */ "pente", /* \372\203 */ "peorth", /* \372\204 */ "permis", /* \372\205 */ "personnellement", /* \372\206 */ "perspective", /* \372\207 */ "perthro", /* \372\210 */ "peseta", /* \372\211 */ "peso", /* \372\212 */ "pf", /* \372\213 */ "ph", /* \372\214 */ "phan", /* \372\215 */ "phe", /* \372\216 */ "phinthou", /* \372\217 */ "phnèk", /* \372\220 */ "phonogramme", /* \372\221 */ "phou", /* \372\222 */ "phoung", /* \372\223 */ "phouthao", /* \372\224 */ "phwa", /* \372\225 */ "phÄ", /* \372\226 */ "phé", /* \372\227 */ "piasutoru", /* \372\230 */ "pie", /* \372\231 */ "piep", /* \372\232 */ "pierre", /* \372\233 */ "piex", /* \372\234 */ "piko", /* \372\235 */ "pikuru", /* \372\236 */ "pip", /* \372\237 */ "pit", /* \372\240 */ "pix", /* \372\241 */ "piûp-hiûh", /* \372\242 */ "piûp-niûn", /* \372\243 */ "piûp-riûl", /* \372\244 */ "piûp-siôs-piûp", /* \372\245 */ "piûp-siôs-tchiûtch", /* \372\246 */ "piûp-ssangsiôs", /* \372\247 */ "piûp-tch'iûtch'", /* \372\250 */ "pla", /* \372\251 */ "plus-ou-moins", /* \372\252 */ "pluton", /* \372\253 */ "pm", /* \372\254 */ "pointo", /* \372\255 */ "points-1", /* \372\256 */ "points-12", /* \372\257 */ "points-123", /* \372\260 */ "points-1234", /* \372\261 */ "points-12345", /* \372\262 */ "points-123456", /* \372\263 */ "points-1234567", /* \372\264 */ "points-12345678", /* \372\265 */ "points-1234568", /* \372\266 */ "points-123457", /* \372\267 */ "points-1234578", /* \372\270 */ "points-123458", /* \372\271 */ "points-12346", /* \372\272 */ "points-123467", /* \372\273 */ "points-1234678", /* \372\274 */ "points-123468", /* \372\275 */ "points-12347", /* \372\276 */ "points-123478", /* \372\277 */ "points-12348", /* \372\300 */ "points-1235", /* \372\301 */ "points-12356", /* \372\302 */ "points-123567", /* \372\303 */ "points-1235678", /* \372\304 */ "points-123568", /* \372\305 */ "points-12357", /* \372\306 */ "points-123578", /* \372\307 */ "points-12358", /* \372\310 */ "points-1236", /* \372\311 */ "points-12367", /* \372\312 */ "points-123678", /* \372\313 */ "points-12368", /* \372\314 */ "points-1237", /* \372\315 */ "points-12378", /* \372\316 */ "points-1238", /* \372\317 */ "points-124", /* \372\320 */ "points-1245", /* \372\321 */ "points-12456", /* \372\322 */ "points-124567", /* \372\323 */ "points-1245678", /* \372\324 */ "points-124568", /* \372\325 */ "points-12457", /* \372\326 */ "points-124578", /* \372\327 */ "points-12458", /* \372\330 */ "points-1246", /* \372\331 */ "points-12467", /* \372\332 */ "points-124678", /* \372\333 */ "points-12468", /* \372\334 */ "points-1247", /* \372\335 */ "points-12478", /* \372\336 */ "points-1248", /* \372\337 */ "points-125", /* \372\340 */ "points-1256", /* \372\341 */ "points-12567", /* \372\342 */ "points-125678", /* \372\343 */ "points-12568", /* \372\344 */ "points-1257", /* \372\345 */ "points-12578", /* \372\346 */ "points-1258", /* \372\347 */ "points-126", /* \372\350 */ "points-1267", /* \372\351 */ "points-12678", /* \372\352 */ "points-1268", /* \372\353 */ "points-127", /* \372\354 */ "points-1278", /* \372\355 */ "points-128", /* \372\356 */ "points-13", /* \372\357 */ "points-134", /* \372\360 */ "points-1345", /* \372\361 */ "points-13456", /* \372\362 */ "points-134567", /* \372\363 */ "points-1345678", /* \372\364 */ "points-134568", /* \372\365 */ "points-13457", /* \372\366 */ "points-134578", /* \372\367 */ "points-13458", /* \372\370 */ "points-1346", /* \372\371 */ "points-13467", /* \372\372 */ "points-134678", /* \372\373 */ "points-13468", /* \372\374 */ "points-1347", /* \372\375 */ "points-13478", /* \372\376 */ "points-1348", /* \372\377 */ "points-135", /* \373\001 */ "points-1356", /* \373\002 */ "points-13567", /* \373\003 */ "points-135678", /* \373\004 */ "points-13568", /* \373\005 */ "points-1357", /* \373\006 */ "points-13578", /* \373\007 */ "points-1358", /* \373\010 */ "points-136", /* \373\011 */ "points-1367", /* \373\012 */ "points-13678", /* \373\013 */ "points-1368", /* \373\014 */ "points-137", /* \373\015 */ "points-1378", /* \373\016 */ "points-138", /* \373\017 */ "points-14", /* \373\020 */ "points-145", /* \373\021 */ "points-1456", /* \373\022 */ "points-14567", /* \373\023 */ "points-145678", /* \373\024 */ "points-14568", /* \373\025 */ "points-1457", /* \373\026 */ "points-14578", /* \373\027 */ "points-1458", /* \373\030 */ "points-146", /* \373\031 */ "points-1467", /* \373\032 */ "points-14678", /* \373\033 */ "points-1468", /* \373\034 */ "points-147", /* \373\035 */ "points-1478", /* \373\036 */ "points-148", /* \373\037 */ "points-15", /* \373\040 */ "points-156", /* \373\041 */ "points-1567", /* \373\042 */ "points-15678", /* \373\043 */ "points-1568", /* \373\044 */ "points-157", /* \373\045 */ "points-1578", /* \373\046 */ "points-158", /* \373\047 */ "points-16", /* \373\050 */ "points-167", /* \373\051 */ "points-1678", /* \373\052 */ "points-168", /* \373\053 */ "points-17", /* \373\054 */ "points-178", /* \373\055 */ "points-18", /* \373\056 */ "points-2", /* \373\057 */ "points-23", /* \373\060 */ "points-234", /* \373\061 */ "points-2345", /* \373\062 */ "points-23456", /* \373\063 */ "points-234567", /* \373\064 */ "points-2345678", /* \373\065 */ "points-234568", /* \373\066 */ "points-23457", /* \373\067 */ "points-234578", /* \373\070 */ "points-23458", /* \373\071 */ "points-2346", /* \373\072 */ "points-23467", /* \373\073 */ "points-234678", /* \373\074 */ "points-23468", /* \373\075 */ "points-2347", /* \373\076 */ "points-23478", /* \373\077 */ "points-2348", /* \373\100 */ "points-235", /* \373\101 */ "points-2356", /* \373\102 */ "points-23567", /* \373\103 */ "points-235678", /* \373\104 */ "points-23568", /* \373\105 */ "points-2357", /* \373\106 */ "points-23578", /* \373\107 */ "points-2358", /* \373\110 */ "points-236", /* \373\111 */ "points-2367", /* \373\112 */ "points-23678", /* \373\113 */ "points-2368", /* \373\114 */ "points-237", /* \373\115 */ "points-2378", /* \373\116 */ "points-238", /* \373\117 */ "points-24", /* \373\120 */ "points-245", /* \373\121 */ "points-2456", /* \373\122 */ "points-24567", /* \373\123 */ "points-245678", /* \373\124 */ "points-24568", /* \373\125 */ "points-2457", /* \373\126 */ "points-24578", /* \373\127 */ "points-2458", /* \373\130 */ "points-246", /* \373\131 */ "points-2467", /* \373\132 */ "points-24678", /* \373\133 */ "points-2468", /* \373\134 */ "points-247", /* \373\135 */ "points-2478", /* \373\136 */ "points-248", /* \373\137 */ "points-25", /* \373\140 */ "points-256", /* \373\141 */ "points-2567", /* \373\142 */ "points-25678", /* \373\143 */ "points-2568", /* \373\144 */ "points-257", /* \373\145 */ "points-2578", /* \373\146 */ "points-258", /* \373\147 */ "points-26", /* \373\150 */ "points-267", /* \373\151 */ "points-2678", /* \373\152 */ "points-268", /* \373\153 */ "points-27", /* \373\154 */ "points-278", /* \373\155 */ "points-28", /* \373\156 */ "points-3", /* \373\157 */ "points-34", /* \373\160 */ "points-345", /* \373\161 */ "points-3456", /* \373\162 */ "points-34567", /* \373\163 */ "points-345678", /* \373\164 */ "points-34568", /* \373\165 */ "points-3457", /* \373\166 */ "points-34578", /* \373\167 */ "points-3458", /* \373\170 */ "points-346", /* \373\171 */ "points-3467", /* \373\172 */ "points-34678", /* \373\173 */ "points-3468", /* \373\174 */ "points-347", /* \373\175 */ "points-3478", /* \373\176 */ "points-348", /* \373\177 */ "points-35", /* \373\200 */ "points-356", /* \373\201 */ "points-3567", /* \373\202 */ "points-35678", /* \373\203 */ "points-3568", /* \373\204 */ "points-357", /* \373\205 */ "points-3578", /* \373\206 */ "points-358", /* \373\207 */ "points-36", /* \373\210 */ "points-367", /* \373\211 */ "points-3678", /* \373\212 */ "points-368", /* \373\213 */ "points-37", /* \373\214 */ "points-378", /* \373\215 */ "points-38", /* \373\216 */ "points-4", /* \373\217 */ "points-45", /* \373\220 */ "points-456", /* \373\221 */ "points-4567", /* \373\222 */ "points-45678", /* \373\223 */ "points-4568", /* \373\224 */ "points-457", /* \373\225 */ "points-4578", /* \373\226 */ "points-458", /* \373\227 */ "points-46", /* \373\230 */ "points-467", /* \373\231 */ "points-4678", /* \373\232 */ "points-468", /* \373\233 */ "points-47", /* \373\234 */ "points-478", /* \373\235 */ "points-48", /* \373\236 */ "points-5", /* \373\237 */ "points-56", /* \373\240 */ "points-567", /* \373\241 */ "points-5678", /* \373\242 */ "points-568", /* \373\243 */ "points-57", /* \373\244 */ "points-578", /* \373\245 */ "points-58", /* \373\246 */ "points-6", /* \373\247 */ "points-67", /* \373\250 */ "points-678", /* \373\251 */ "points-68", /* \373\252 */ "points-7", /* \373\253 */ "points-78", /* \373\254 */ "points-8", /* \373\255 */ "poissons", /* \373\256 */ "pommeté", /* \373\257 */ "pondo", /* \373\260 */ "pop", /* \373\261 */ "postposition", /* \373\262 */ "pot", /* \373\263 */ "poterie", /* \373\264 */ "pouce", /* \373\265 */ "pox", /* \373\266 */ "ppm", /* \373\267 */ "pr", /* \373\270 */ "precède", /* \373\271 */ "profil", /* \373\272 */ "progiciel", /* \373\273 */ "projective", /* \373\274 */ "proportionnel", /* \373\275 */ "prosternation", /* \373\276 */ "prouve", /* \373\277 */ "précédent", /* \373\300 */ "précédente", /* \373\301 */ "précédée", /* \373\302 */ "prédéfini", /* \373\303 */ "préface", /* \373\304 */ "ps", /* \373\305 */ "psili", /* \373\306 */ "puo", /* \373\307 */ "puop", /* \373\310 */ "puox", /* \373\311 */ "pup", /* \373\312 */ "pur", /* \373\313 */ "purx", /* \373\314 */ "pux", /* \373\315 */ "pv", /* \373\316 */ "pw", /* \373\317 */ "pwa", /* \373\320 */ "py", /* \373\321 */ "pyp", /* \373\322 */ "pyr", /* \373\323 */ "pyrx", /* \373\324 */ "pyx", /* \373\325 */ "pÄ", /* \373\326 */ "pâ", /* \373\327 */ "pâsento", /* \373\330 */ "pâtu", /* \373\331 */ "pâï", /* \373\332 */ "père", /* \373\333 */ "pêzi", /* \373\334 */ "qala", /* \373\335 */ "qaton", /* \373\336 */ "qaï", /* \373\337 */ "qe", /* \373\340 */ "qha", /* \373\341 */ "qhe", /* \373\342 */ "qhi", /* \373\343 */ "qho", /* \373\344 */ "qhou", /* \373\345 */ "qhwa", /* \373\346 */ "qhwe", /* \373\347 */ "qhwi", /* \373\350 */ "qhwÄ", /* \373\351 */ "qhwé", /* \373\352 */ "qhÄ", /* \373\353 */ "qhé", /* \373\354 */ "qie", /* \373\355 */ "qiep", /* \373\356 */ "qiet", /* \373\357 */ "qiex", /* \373\360 */ "qip", /* \373\361 */ "qit", /* \373\362 */ "qix", /* \373\363 */ "qof", /* \373\364 */ "qop", /* \373\365 */ "qou", /* \373\366 */ "qouchchâi", /* \373\367 */ "qouf", /* \373\370 */ "qox", /* \373\371 */ "qoûph", /* \373\372 */ "qu", /* \373\373 */ "qu'il", /* \373\374 */ "quarante", /* \373\375 */ "quartefeuille", /* \373\376 */ "quatre-points", /* \373\377 */ "quatre-vingt-dix", /* \374\001 */ "quatre-vingts", /* \374\002 */ "quo", /* \374\003 */ "quop", /* \374\004 */ "quot", /* \374\005 */ "quox", /* \374\006 */ "qup", /* \374\007 */ "qur", /* \374\010 */ "qurx", /* \374\011 */ "qut", /* \374\012 */ "qux", /* \374\013 */ "qwa", /* \374\014 */ "qwe", /* \374\015 */ "qwi", /* \374\016 */ "qwÄ", /* \374\017 */ "qwé", /* \374\020 */ "qy", /* \374\021 */ "qyp", /* \374\022 */ "qyr", /* \374\023 */ "qyrx", /* \374\024 */ "qyt", /* \374\025 */ "qyx", /* \374\026 */ "qÄ", /* \374\027 */ "qâ", /* \374\030 */ "qâfou", /* \374\031 */ "qâï", /* \374\032 */ "qé", /* \374\033 */ "qî", /* \374\034 */ "qô", /* \374\035 */ "radioactivivité", /* \374\036 */ "rae", /* \374\037 */ "raido", /* \374\040 */ "rail", /* \374\041 */ "rakhang", /* \374\042 */ "rap", /* \374\043 */ "rapport", /* \374\044 */ "rasoul", /* \374\045 */ "ravia", /* \374\046 */ "rax", /* \374\047 */ "rayanna", /* \374\050 */ "rayonnant", /* \374\051 */ "rayé", /* \374\052 */ "raé", /* \374\053 */ "rectangulaire", /* \374\054 */ "reid", /* \374\055 */ "religion", /* \374\056 */ "remu", /* \374\057 */ "rentogen", /* \374\060 */ "rep", /* \374\061 */ "représente", /* \374\062 */ "rewâhhâ", /* \374\063 */ "rex", /* \374\064 */ "rhotacisme", /* \374\065 */ "rhéostat", /* \374\066 */ "rideaux", /* \374\067 */ "riel", /* \374\070 */ "rin", /* \374\071 */ "rira", /* \374\072 */ "rittoru", /* \374\073 */ "rivière", /* \374\074 */ "rixe", /* \374\075 */ "riz", /* \374\076 */ "riûl-k'iûk'", /* \374\077 */ "riûl-kapyo-ounpiûp", /* \374\100 */ "riûl-miûm-kiyok", /* \374\101 */ "riûl-miûm-siôs", /* \374\102 */ "riûl-piûp-hiûh", /* \374\103 */ "riûl-ssangsiôs", /* \374\104 */ "riûl-tikût-hiûh", /* \374\105 */ "rjes", /* \374\106 */ "robat", /* \374\107 */ "rop", /* \374\110 */ "rot", /* \374\111 */ "roua", /* \374\112 */ "roub", /* \374\113 */ "rouge", /* \374\114 */ "roukkâkh", /* \374\115 */ "rousi", /* \374\116 */ "rox", /* \374\117 */ "rrax", /* \374\120 */ "rre", /* \374\121 */ "rrep", /* \374\122 */ "rret", /* \374\123 */ "rrex", /* \374\124 */ "rro", /* \374\125 */ "rrop", /* \374\126 */ "rrot", /* \374\127 */ "rrox", /* \374\130 */ "rru", /* \374\131 */ "rruo", /* \374\132 */ "rruox", /* \374\133 */ "rrup", /* \374\134 */ "rrur", /* \374\135 */ "rrurx", /* \374\136 */ "rrut", /* \374\137 */ "rrux", /* \374\140 */ "rry", /* \374\141 */ "rryp", /* \374\142 */ "rryr", /* \374\143 */ "rryrx", /* \374\144 */ "rryt", /* \374\145 */ "rryx", /* \374\146 */ "ruban", /* \374\147 */ "ruis", /* \374\150 */ "ruo", /* \374\151 */ "ruop", /* \374\152 */ "ruox", /* \374\153 */ "rup", /* \374\154 */ "rupî", /* \374\155 */ "rur", /* \374\156 */ "rurx", /* \374\157 */ "rut", /* \374\160 */ "rux", /* \374\161 */ "rwa", /* \374\162 */ "ry", /* \374\163 */ "ryp", /* \374\164 */ "ryr", /* \374\165 */ "ryrx", /* \374\166 */ "ryt", /* \374\167 */ "ryx", /* \374\170 */ "ryÄ", /* \374\171 */ "rÄ", /* \374\172 */ "rÜ", /* \374\173 */ "rÜÜ", /* \374\174 */ "râï", /* \374\175 */ "réahmouk", /* \374\176 */ "référence", /* \374\177 */ "région", /* \374\200 */ "réponse", /* \374\201 */ "résister", /* \374\202 */ "rétrécissement", /* \374\203 */ "réunion", /* \374\204 */ "rî", /* \374\205 */ "rô", /* \374\206 */ "rûburu", /* \374\207 */ "s'opposer", /* \374\210 */ "s-ou", /* \374\211 */ "sablier", /* \374\212 */ "sacrificiel", /* \374\213 */ "sagittaire", /* \374\214 */ "saikuru", /* \374\215 */ "sail", /* \374\216 */ "sala", /* \374\217 */ "salam", /* \374\220 */ "sallallahou", /* \374\221 */ "samphao", /* \374\222 */ "sang", /* \374\223 */ "sanglé", /* \374\224 */ "santîmu", /* \374\225 */ "sanyôga", /* \374\226 */ "sap", /* \374\227 */ "sapin", /* \374\230 */ "sat", /* \374\231 */ "saut", /* \374\232 */ "sax", /* \374\233 */ "sayanna", /* \374\234 */ "sañña", /* \374\235 */ "saññok", /* \374\236 */ "sbroul", /* \374\237 */ "sbub", /* \374\240 */ "scorpion", /* \374\241 */ "scrupule", /* \374\242 */ "sdong", /* \374\243 */ "sec", /* \374\244 */ "seconde", /* \374\245 */ "secret", /* \374\246 */ "secteur", /* \374\247 */ "segment", /* \374\250 */ "segol", /* \374\251 */ "segolta", /* \374\252 */ "senti", /* \374\253 */ "sento", /* \374\254 */ "sep", /* \374\255 */ "septembre", /* \374\256 */ "serpent", /* \374\257 */ "service", /* \374\260 */ "serviette", /* \374\261 */ "sex", /* \374\262 */ "sgab", /* \374\263 */ "sgor", /* \374\264 */ "sgra", /* \374\265 */ "shap", /* \374\266 */ "shax", /* \374\267 */ "she", /* \374\270 */ "shep", /* \374\271 */ "shet", /* \374\272 */ "shex", /* \374\273 */ "sho", /* \374\274 */ "shog", /* \374\275 */ "shot", /* \374\276 */ "shox", /* \374\277 */ "shu", /* \374\300 */ "shuo", /* \374\301 */ "shuop", /* \374\302 */ "shuox", /* \374\303 */ "shup", /* \374\304 */ "shurx", /* \374\305 */ "shut", /* \374\306 */ "shux", /* \374\307 */ "shyp", /* \374\310 */ "shyr", /* \374\311 */ "shyrx", /* \374\312 */ "shyt", /* \374\313 */ "shyx", /* \374\314 */ "sie", /* \374\315 */ "siep", /* \374\316 */ "siex", /* \374\317 */ "sigel", /* \374\320 */ "sign", /* \374\321 */ "sin", /* \374\322 */ "sinusoïde", /* \374\323 */ "sip", /* \374\324 */ "siringu", /* \374\325 */ "sit", /* \374\326 */ "sixièmes", /* \374\327 */ "sixtefeuille", /* \374\330 */ "siôs-hiûh", /* \374\331 */ "siôs-iûng", /* \374\332 */ "siôs-k'iûk'", /* \374\333 */ "siôs-miûm", /* \374\334 */ "siôs-p'iûp'", /* \374\335 */ "siôs-piûp-kiyok", /* \374\336 */ "siôs-ssangsiôs", /* \374\337 */ "siôs-t'iût'", /* \374\340 */ "siôs-tch'iûtch'", /* \374\341 */ "sk", /* \374\342 */ "skou", /* \374\343 */ "skoua", /* \374\344 */ "sna", /* \374\345 */ "sof", /* \374\346 */ "soi", /* \374\347 */ "soi-même", /* \374\350 */ "soins", /* \374\351 */ "soir", /* \374\352 */ "soixante", /* \374\353 */ "soixante-dix", /* \374\354 */ "sol-à-longue-branche", /* \374\355 */ "sol-à-ramille", /* \374\356 */ "sommation", /* \374\357 */ "sonnette", /* \374\360 */ "sop", /* \374\361 */ "sortant", /* \374\362 */ "sot", /* \374\363 */ "sources", /* \374\364 */ "sourire", /* \374\365 */ "sous-article", /* \374\366 */ "sowilo", /* \374\367 */ "sox", /* \374\370 */ "sphérique", /* \374\371 */ "spoua", /* \374\372 */ "spungs", /* \374\373 */ "sr", /* \374\374 */ "ssangarèa", /* \374\375 */ "ssap", /* \374\376 */ "ssat", /* \374\377 */ "ssax", /* \375\001 */ "sse", /* \375\002 */ "ssep", /* \375\003 */ "ssex", /* \375\004 */ "ssie", /* \375\005 */ "ssiep", /* \375\006 */ "ssiex", /* \375\007 */ "ssip", /* \375\010 */ "ssit", /* \375\011 */ "ssix", /* \375\012 */ "sso", /* \375\013 */ "ssop", /* \375\014 */ "ssot", /* \375\015 */ "ssox", /* \375\016 */ "ssu", /* \375\017 */ "ssup", /* \375\020 */ "ssut", /* \375\021 */ "ssux", /* \375\022 */ "ssy", /* \375\023 */ "ssyp", /* \375\024 */ "ssyr", /* \375\025 */ "ssyrx", /* \375\026 */ "ssyt", /* \375\027 */ "ssyx", /* \375\030 */ "ssâdhê", /* \375\031 */ "st", /* \375\032 */ "stan", /* \375\033 */ "stchoua", /* \375\034 */ "stoua", /* \375\035 */ "straif", /* \375\036 */ "succursale", /* \375\037 */ "suo", /* \375\040 */ "suop", /* \375\041 */ "suox", /* \375\042 */ "sup", /* \375\043 */ "supervise", /* \375\044 */ "superviser", /* \375\045 */ "supression", /* \375\046 */ "surface", /* \375\047 */ "surx", /* \375\050 */ "suspendus", /* \375\051 */ "sut", /* \375\052 */ "sux", /* \375\053 */ "sv", /* \375\054 */ "swa", /* \375\055 */ "sy", /* \375\056 */ "syllabes", /* \375\057 */ "symétrie", /* \375\060 */ "syp", /* \375\061 */ "syr", /* \375\062 */ "syrx", /* \375\063 */ "système", /* \375\064 */ "syt", /* \375\065 */ "syx", /* \375\066 */ "sÄ", /* \375\067 */ "sËn", /* \375\070 */ "sâ", /* \375\071 */ "sâdhou", /* \375\072 */ "sâï", /* \375\073 */ "sègol", /* \375\074 */ "séquence", /* \375\075 */ "sérieux", /* \375\076 */ "sî", /* \375\077 */ "sînou", /* \375\100 */ "sûr", /* \375\101 */ "t'", /* \375\102 */ "tah", /* \375\103 */ "talchah", /* \375\104 */ "tambour", /* \375\105 */ "tao", /* \375\106 */ "tap", /* \375\107 */ "tarha", /* \375\110 */ "tarsa", /* \375\111 */ "tat", /* \375\112 */ "taureau", /* \375\113 */ "taviyani", /* \375\114 */ "taw", /* \375\115 */ "tax", /* \375\116 */ "taïchô", /* \375\117 */ "tc", /* \375\120 */ "tch'", /* \375\121 */ "tch'e", /* \375\122 */ "tch'itouûmsiôs", /* \375\123 */ "tch'itouûmssangsiôs", /* \375\124 */ "tch'itouûmssangtchiûtch", /* \375\125 */ "tch'itouûmtch'iûtch'", /* \375\126 */ "tch'itouûmtchiûtch", /* \375\127 */ "tch'iûtch'-hiûh", /* \375\130 */ "tch'iûtch'-k'iûk'", /* \375\131 */ "tchada", /* \375\132 */ "tchamnotch", /* \375\133 */ "tchang", /* \375\134 */ "tchatawa", /* \375\135 */ "tchattawa", /* \375\136 */ "tchaviyani", /* \375\137 */ "tchho", /* \375\140 */ "tching", /* \375\141 */ "tchiûtch-iûng", /* \375\142 */ "tchoeng", /* \375\143 */ "tchongtch'iûmsiôs", /* \375\144 */ "tchongtch'iûmssangsiôs", /* \375\145 */ "tchongtch'iûmssangtchiûtch",/* \375\146 */ "tchongtch'iûmtch'iûtch'", /* \375\147 */ "tchongtch'iûmtchiûtch", /* \375\150 */ "tchoula", /* \375\151 */ "tchoé", /* \375\152 */ "tchwa", /* \375\153 */ "tchya", /* \375\154 */ "tchÄ", /* \375\155 */ "tchâ", /* \375\156 */ "tchâï", /* \375\157 */ "tchî", /* \375\160 */ "te'u", /* \375\161 */ "tech", /* \375\162 */ "teleia", /* \375\163 */ "tend", /* \375\164 */ "tep", /* \375\165 */ "terminateur", /* \375\166 */ "teré", /* \375\167 */ "tevir", /* \375\170 */ "tex", /* \375\171 */ "thahan", /* \375\172 */ "thanthakhat", /* \375\173 */ "thong", /* \375\174 */ "thorn,", /* \375\175 */ "thoung", /* \375\176 */ "thurisaz,", /* \375\177 */ "thurs,", /* \375\200 */ "thwa", /* \375\201 */ "thz", /* \375\202 */ "thÄ", /* \375\203 */ "thâlu", /* \375\204 */ "tibetain", /* \375\205 */ "tie", /* \375\206 */ "tiep", /* \375\207 */ "tiex", /* \375\210 */ "tikût-riûl", /* \375\211 */ "tinne", /* \375\212 */ "tip", /* \375\213 */ "tippi", /* \375\214 */ "tir", /* \375\215 */ "tirer", /* \375\216 */ "tironnienne", /* \375\217 */ "tit", /* \375\220 */ "tiwaz", /* \375\221 */ "tix", /* \375\222 */ "tja", /* \375\223 */ "tle", /* \375\224 */ "tlhe", /* \375\225 */ "tlhou", /* \375\226 */ "tlËn", /* \375\227 */ "toandakhiat", /* \375\230 */ "toit", /* \375\231 */ "tonne", /* \375\232 */ "tonnerre", /* \375\233 */ "top", /* \375\234 */ "tort", /* \375\235 */ "tot", /* \375\236 */ "totale", /* \375\237 */ "tou", /* \375\240 */ "touffe", /* \375\241 */ "tougrik", /* \375\242 */ "tous", /* \375\243 */ "tout", /* \375\244 */ "tox", /* \375\245 */ "traces", /* \375\246 */ "train", /* \375\247 */ "trait-d'union", /* \375\250 */ "tranche", /* \375\251 */ "transpercés", /* \375\252 */ "trappu", /* \375\253 */ "trappue", /* \375\254 */ "traversé", /* \375\255 */ "traçage", /* \375\256 */ "trente-et-un", /* \375\257 */ "tri", /* \375\260 */ "triangulaires", /* \375\261 */ "tripode", /* \375\262 */ "troisième", /* \375\263 */ "tronqué", /* \375\264 */ "tréflée", /* \375\265 */ "trîsap", /* \375\266 */ "ts'", /* \375\267 */ "tshugs", /* \375\270 */ "tsinor", /* \375\271 */ "tswa", /* \375\272 */ "tsÄ", /* \375\273 */ "tsËn", /* \375\274 */ "tsérè", /* \375\275 */ "ttcha", /* \375\276 */ "ttche", /* \375\277 */ "ttchi", /* \375\300 */ "ttcho", /* \375\301 */ "ttchou", /* \375\302 */ "ttchwa", /* \375\303 */ "ttchÄ", /* \375\304 */ "ttché", /* \375\305 */ "tte", /* \375\306 */ "tth", /* \375\307 */ "tthi", /* \375\310 */ "tthé", /* \375\311 */ "ttou", /* \375\312 */ "ttsa", /* \375\313 */ "ttse", /* \375\314 */ "ttsi", /* \375\315 */ "ttso", /* \375\316 */ "ttsou", /* \375\317 */ "ttsé", /* \375\320 */ "ttâ", /* \375\321 */ "tuile", /* \375\322 */ "tuo", /* \375\323 */ "tuop", /* \375\324 */ "tuot", /* \375\325 */ "tuox", /* \375\326 */ "tup", /* \375\327 */ "tur", /* \375\330 */ "turx", /* \375\331 */ "tut", /* \375\332 */ "tux", /* \375\333 */ "tvimadur", /* \375\334 */ "twa", /* \375\335 */ "tya", /* \375\336 */ "tyi", /* \375\337 */ "tyo", /* \375\340 */ "type-h", /* \375\341 */ "type-l", /* \375\342 */ "tyr", /* \375\343 */ "tyr-à-ramille", /* \375\344 */ "tyé", /* \375\345 */ "tz", /* \375\346 */ "tz'", /* \375\347 */ "tza", /* \375\350 */ "tze", /* \375\351 */ "tzi", /* \375\352 */ "tzo", /* \375\353 */ "tzou", /* \375\354 */ "tzÄ", /* \375\355 */ "tzé", /* \375\356 */ "tÄ", /* \375\357 */ "tâ", /* \375\360 */ "tâmé", /* \375\361 */ "tâï", /* \375\362 */ "téléphonique", /* \375\363 */ "têtard", /* \375\364 */ "tî", /* \375\365 */ "uath", /* \375\366 */ "ubjointe", /* \375\367 */ "uilleann", /* \375\370 */ "ukrainien", /* \375\371 */ "ukrainienne", /* \375\372 */ "ultra-fine", /* \375\373 */ "una", /* \375\374 */ "une", /* \375\375 */ "uo", /* \375\376 */ "uon", /* \375\377 */ "uop", /* \376\001 */ "uox", /* \376\002 */ "ur", /* \376\003 */ "uranus", /* \376\004 */ "uruz", /* \376\005 */ "utiliser", /* \376\006 */ "uu", /* \376\007 */ "vaisselle", /* \376\010 */ "vallée", /* \376\011 */ "vap", /* \376\012 */ "vapeur", /* \376\013 */ "variant", /* \376\014 */ "varika", /* \376\015 */ "vat", /* \376\016 */ "vax", /* \376\017 */ "vayanna", /* \376\020 */ "verrou", /* \376\021 */ "verseau", /* \376\022 */ "versicule", /* \376\023 */ "vex", /* \376\024 */ "victoire", /* \376\025 */ "vide", /* \376\026 */ "vidée", /* \376\027 */ "vie", /* \376\030 */ "viep", /* \376\031 */ "vierge", /* \376\032 */ "viet", /* \376\033 */ "viex", /* \376\034 */ "ville", /* \376\035 */ "vingt-cinq", /* \376\036 */ "vingt-huit", /* \376\037 */ "vingt-neuf", /* \376\040 */ "vingt-sept", /* \376\041 */ "vingt-six", /* \376\042 */ "vip", /* \376\043 */ "virages", /* \376\044 */ "viriam", /* \376\045 */ "virtuelle", /* \376\046 */ "visargaya", /* \376\047 */ "visualisation", /* \376\050 */ "visuel", /* \376\051 */ "vit", /* \376\052 */ "vix", /* \376\053 */ "volume", /* \376\054 */ "vop", /* \376\055 */ "vot", /* \376\056 */ "vou", /* \376\057 */ "vox", /* \376\060 */ "voyelles", /* \376\061 */ "vup", /* \376\062 */ "vurx", /* \376\063 */ "vut", /* \376\064 */ "vux", /* \376\065 */ "vwa", /* \376\066 */ "vy", /* \376\067 */ "vyp", /* \376\070 */ "vyr", /* \376\071 */ "vyrx", /* \376\072 */ "vyt", /* \376\073 */ "vyx", /* \376\074 */ "vÄ", /* \376\075 */ "vâvou", /* \376\076 */ "wap", /* \376\077 */ "wat", /* \376\100 */ "watto", /* \376\101 */ "wax", /* \376\102 */ "wb", /* \376\103 */ "weierstrass", /* \376\104 */ "wep", /* \376\105 */ "wex", /* \376\106 */ "wop", /* \376\107 */ "wox", /* \376\110 */ "wu", /* \376\111 */ "wunjo", /* \376\112 */ "wuo", /* \376\113 */ "wuop", /* \376\114 */ "wuox", /* \376\115 */ "wÄ", /* \376\116 */ "wâvou", /* \376\117 */ "xa", /* \376\120 */ "xe", /* \376\121 */ "xie", /* \376\122 */ "xiep", /* \376\123 */ "xiet", /* \376\124 */ "xiex", /* \376\125 */ "xip", /* \376\126 */ "xit", /* \376\127 */ "xix", /* \376\130 */ "xop", /* \376\131 */ "xot", /* \376\132 */ "xou", /* \376\133 */ "xox", /* \376\134 */ "xuo", /* \376\135 */ "xuox", /* \376\136 */ "xwa", /* \376\137 */ "xwe", /* \376\140 */ "xwi", /* \376\141 */ "xwÄ", /* \376\142 */ "xwé", /* \376\143 */ "xy", /* \376\144 */ "xyp", /* \376\145 */ "xyr", /* \376\146 */ "xyrx", /* \376\147 */ "xyt", /* \376\150 */ "xyx", /* \376\151 */ "xÄ", /* \376\152 */ "xé", /* \376\153 */ "ya-yô", /* \376\154 */ "ya-ô", /* \376\155 */ "yak", /* \376\156 */ "yamakkan", /* \376\157 */ "yar", /* \376\160 */ "yaréah", /* \376\161 */ "yayanna", /* \376\162 */ "yetiv", /* \376\163 */ "yie", /* \376\164 */ "yiep", /* \376\165 */ "yiet", /* \376\166 */ "yiex", /* \376\167 */ "ying", /* \376\170 */ "yip", /* \376\171 */ "yix", /* \376\172 */ "yo-ou", /* \376\173 */ "yo-ô", /* \376\174 */ "yomo", /* \376\175 */ "yop", /* \376\176 */ "you-a", /* \376\177 */ "you-o", /* \376\200 */ "you-ou", /* \376\201 */ "you-é", /* \376\202 */ "yox", /* \376\203 */ "yoûkaléapintou", /* \376\204 */ "yr-islandais", /* \376\205 */ "yr-à-longue-branche", /* \376\206 */ "yr-à-ramille", /* \376\207 */ "yuan", /* \376\210 */ "yuo", /* \376\211 */ "yuop", /* \376\212 */ "yuot", /* \376\213 */ "yuox", /* \376\214 */ "yup", /* \376\215 */ "yur", /* \376\216 */ "yurx", /* \376\217 */ "yut", /* \376\220 */ "yux", /* \376\221 */ "yy", /* \376\222 */ "yyp", /* \376\223 */ "yyr", /* \376\224 */ "yyrx", /* \376\225 */ "yyt", /* \376\226 */ "yyx", /* \376\227 */ "yÄ", /* \376\230 */ "yËn", /* \376\231 */ "yâdo", /* \376\232 */ "yâru", /* \376\233 */ "yâï", /* \376\234 */ "yî", /* \376\235 */ "yô-yo", /* \376\236 */ "yô-ô", /* \376\237 */ "zap", /* \376\240 */ "zarqa", /* \376\241 */ "zat", /* \376\242 */ "zaviyani", /* \376\243 */ "zax", /* \376\244 */ "zep", /* \376\245 */ "zex", /* \376\246 */ "zhap", /* \376\247 */ "zhat", /* \376\250 */ "zhax", /* \376\251 */ "zhe", /* \376\252 */ "zhep", /* \376\253 */ "zhet", /* \376\254 */ "zhex", /* \376\255 */ "zho", /* \376\256 */ "zhop", /* \376\257 */ "zhot", /* \376\260 */ "zhox", /* \376\261 */ "zhu", /* \376\262 */ "zhuo", /* \376\263 */ "zhuop", /* \376\264 */ "zhuox", /* \376\265 */ "zhup", /* \376\266 */ "zhur", /* \376\267 */ "zhurx", /* \376\270 */ "zhut", /* \376\271 */ "zhux", /* \376\272 */ "zhy", /* \376\273 */ "zhyp", /* \376\274 */ "zhyr", /* \376\275 */ "zhyrx", /* \376\276 */ "zhyt", /* \376\277 */ "zhyx", /* \376\300 */ "zie", /* \376\301 */ "ziep", /* \376\302 */ "ziex", /* \376\303 */ "zigzag", /* \376\304 */ "zilde", /* \376\305 */ "zip", /* \376\306 */ "zit", /* \376\307 */ "zix", /* \376\310 */ "zop", /* \376\311 */ "zox", /* \376\312 */ "zra", /* \376\313 */ "zuo", /* \376\314 */ "zuop", /* \376\315 */ "zuox", /* \376\316 */ "zup", /* \376\317 */ "zurx", /* \376\320 */ "zut", /* \376\321 */ "zux", /* \376\322 */ "zwa", /* \376\323 */ "zy", /* \376\324 */ "zyp", /* \376\325 */ "zyr", /* \376\326 */ "zyrx", /* \376\327 */ "zyt", /* \376\330 */ "zyx", /* \376\331 */ "zza", /* \376\332 */ "zzap", /* \376\333 */ "zzat", /* \376\334 */ "zzax", /* \376\335 */ "zze", /* \376\336 */ "zzep", /* \376\337 */ "zzex", /* \376\340 */ "zzi", /* \376\341 */ "zzie", /* \376\342 */ "zziep", /* \376\343 */ "zziex", /* \376\344 */ "zzit", /* \376\345 */ "zzix", /* \376\346 */ "zzo", /* \376\347 */ "zzop", /* \376\350 */ "zzox", /* \376\351 */ "zzu", /* \376\352 */ "zzup", /* \376\353 */ "zzur", /* \376\354 */ "zzurx", /* \376\355 */ "zzux", /* \376\356 */ "zzy", /* \376\357 */ "zzyp", /* \376\360 */ "zzyr", /* \376\361 */ "zzyrx", /* \376\362 */ "zzyt", /* \376\363 */ "zzyx", /* \376\364 */ "zÄ", /* \376\365 */ "zâ", /* \376\366 */ "Æsc", /* \376\367 */ "Æyanna", /* \376\370 */ "ÆÆyanna", /* \376\371 */ "Ë", /* \376\372 */ "Ën", /* \376\373 */ "Ór", /* \376\374 */ "Úr", /* \376\375 */ "Ü", /* \376\376 */ "܌", /* \376\377 */ "ÜÜ", /* \377\001 */ "âbâfili", /* \377\002 */ "âcre", /* \377\003 */ "âdi", /* \377\004 */ "âru", /* \377\005 */ "âyanna", /* \377\006 */ "âï", /* \377\007 */ "çad", /* \377\010 */ "çakti", /* \377\011 */ "çayanna", /* \377\012 */ "çe", /* \377\013 */ "çi", /* \377\014 */ "ço", /* \377\015 */ "çou", /* \377\016 */ "çwa", /* \377\017 */ "çÄ", /* \377\020 */ "çé", /* \377\021 */ "èn", /* \377\022 */ "èni", /* \377\023 */ "éabhadh", /* \377\024 */ "ébéfili", /* \377\025 */ "éclair", /* \377\026 */ "écrasé", /* \377\027 */ "écriture", /* \377\030 */ "écu", /* \377\031 */ "égalité", /* \377\032 */ "ék", /* \377\033 */ "électrique", /* \377\034 */ "éleveuse", /* \377\035 */ "épaisse", /* \377\036 */ "épaulement", /* \377\037 */ "équiangulaire", /* \377\040 */ "étagère", /* \377\041 */ "étiré", /* \377\042 */ "étrangler", /* \377\043 */ "étroite", /* \377\044 */ "éyanna", /* \377\045 */ "êbêfili", /* \377\046 */ "êkâ", /* \377\047 */ "êyanna", /* \377\050 */ "îbîfili", /* \377\051 */ "îl", /* \377\052 */ "îyanna", /* \377\053 */ "ñasubjointe", /* \377\054 */ "ñe", /* \377\055 */ "ñou", /* \377\056 */ "ñwa", /* \377\057 */ "ñÄ", /* \377\060 */ "ñña", /* \377\061 */ "ô-o", /* \377\062 */ "ô-ou", /* \377\063 */ "ô-yé", /* \377\064 */ "ô-é", /* \377\065 */ "ô-ô", /* \377\066 */ "ôbôfili", /* \377\067 */ "ômu", /* \377\070 */ "ôyanna", /* \377\071 */ "û-ou", /* \377\072 */ "û-û", /* \377\073 */ "ûi-ou", /* \377\074 */ }; struct charname { recode_ucs2 code; const char *crypted; }; static const struct charname charname[NUMBER_OF_CHARNAMES] = { {0x0000, "\164"}, {0x0001, "\164"}, {0x0002, "\164"}, {0x0003, "\164"}, {0x0004, "\164"}, {0x0005, "\164"}, {0x0006, "\164"}, {0x0007, "\164"}, {0x0008, "\164"}, {0x0009, "\164"}, {0x000A, "\164"}, {0x000B, "\164"}, {0x000C, "\164"}, {0x000D, "\164"}, {0x000E, "\164"}, {0x000F, "\164"}, {0x0010, "\164"}, {0x0011, "\164"}, {0x0012, "\164"}, {0x0013, "\164"}, {0x0014, "\164"}, {0x0015, "\164"}, {0x0016, "\164"}, {0x0017, "\164"}, {0x0018, "\164"}, {0x0019, "\164"}, {0x001A, "\164"}, {0x001B, "\164"}, {0x001C, "\164"}, {0x001D, "\164"}, {0x001E, "\164"}, {0x001F, "\164"}, {0x0020, "\355\075"}, {0x0021, "\037\355\314"}, {0x0022, "\355\137\356\302"}, {0x0023, "\357\114"}, {0x0024, "\022\357\143"}, {0x0025, "\022\355\061\355\247"}, {0x0026, "\357\002"}, {0x0027, "\355\310"}, {0x0028, "\355\125\052"}, {0x0029, "\355\125\053"}, {0x002A, "\355\117"}, {0x002B, "\057\215"}, {0x002C, "\332"}, {0x002D, "\355\011"}, {0x002E, "\037"}, {0x002F, "\247\355\046"}, {0x0030, "\024\333"}, {0x0031, "\024\107"}, {0x0032, "\024\127"}, {0x0033, "\024\136"}, {0x0034, "\024\221"}, {0x0035, "\024\231"}, {0x0036, "\024\256"}, {0x0037, "\024\253"}, {0x0038, "\024\227"}, {0x0039, "\024\260"}, {0x003A, "\355\105"}, {0x003B, "\356\106"}, {0x003C, "\057\322\044"}, {0x003D, "\057\174\044"}, {0x003E, "\057\346\044"}, {0x003F, "\037\355\315"}, {0x0040, "\357\067"}, {0x0041, "\001\010\006\063"}, {0x0042, "\001\010\006\336"}, {0x0043, "\001\010\006\315"}, {0x0044, "\001\010\006\277"}, {0x0045, "\001\010\006\130"}, {0x0046, "\001\010\006\355\064"}, {0x0047, "\001\010\006\270"}, {0x0048, "\001\010\006\240"}, {0x0049, "\001\010\006\103"}, {0x004A, "\001\010\006\355\055"}, {0x004B, "\001\010\006\354"}, {0x004C, "\001\010\006\212"}, {0x004D, "\001\010\006\300"}, {0x004E, "\001\010\006\242"}, {0x004F, "\001\010\006\064"}, {0x0050, "\001\010\006\355\023"}, {0x0051, "\001\010\006\355\175"}, {0x0052, "\001\010\006\170"}, {0x0053, "\001\010\006\224"}, {0x0054, "\001\010\006\262"}, {0x0055, "\001\010\006\132"}, {0x0056, "\001\010\006\355\027"}, {0x0057, "\001\010\006\351"}, {0x0058, "\001\010\006\355\030"}, {0x0059, "\001\010\006\267"}, {0x005A, "\001\010\006\273"}, {0x005B, "\122\052"}, {0x005C, "\247\355\046\356\075"}, {0x005D, "\122\222"}, {0x005E, "\021\072"}, {0x005F, "\355\011\101"}, {0x0060, "\021\067"}, {0x0061, "\001\005\006\063"}, {0x0062, "\001\005\006\336"}, {0x0063, "\001\005\006\315"}, {0x0064, "\001\005\006\277"}, {0x0065, "\001\005\006\130"}, {0x0066, "\001\005\006\355\064"}, {0x0067, "\001\005\006\270"}, {0x0068, "\001\005\006\240"}, {0x0069, "\001\005\006\103"}, {0x006A, "\001\005\006\355\055"}, {0x006B, "\001\005\006\354"}, {0x006C, "\001\005\006\212"}, {0x006D, "\001\005\006\300"}, {0x006E, "\001\005\006\242"}, {0x006F, "\001\005\006\064"}, {0x0070, "\001\005\006\355\023"}, {0x0071, "\001\005\006\355\175"}, {0x0072, "\001\005\006\170"}, {0x0073, "\001\005\006\224"}, {0x0074, "\001\005\006\262"}, {0x0075, "\001\005\006\132"}, {0x0076, "\001\005\006\355\027"}, {0x0077, "\001\005\006\351"}, {0x0078, "\001\005\006\355\030"}, {0x0079, "\001\005\006\267"}, {0x007A, "\001\005\006\273"}, {0x007B, "\356\053\052"}, {0x007C, "\247\257"}, {0x007D, "\356\053\053"}, {0x007E, "\173"}, {0x007F, "\164"}, {0x0080, "\164"}, {0x0081, "\164"}, {0x0082, "\164"}, {0x0083, "\164"}, {0x0084, "\164"}, {0x0085, "\164"}, {0x0086, "\164"}, {0x0087, "\164"}, {0x0088, "\164"}, {0x0089, "\164"}, {0x008A, "\164"}, {0x008B, "\164"}, {0x008C, "\164"}, {0x008D, "\164"}, {0x008E, "\164"}, {0x008F, "\164"}, {0x0090, "\164"}, {0x0091, "\164"}, {0x0092, "\164"}, {0x0093, "\164"}, {0x0094, "\164"}, {0x0095, "\164"}, {0x0096, "\164"}, {0x0097, "\164"}, {0x0098, "\164"}, {0x0099, "\164"}, {0x009A, "\164"}, {0x009B, "\164"}, {0x009C, "\164"}, {0x009D, "\164"}, {0x009E, "\164"}, {0x009F, "\164"}, {0x00A0, "\355\075\357\203"}, {0x00A1, "\037\355\314\355\145"}, {0x00A2, "\022\357\076"}, {0x00A3, "\022\361\036"}, {0x00A4, "\022\355\274"}, {0x00A5, "\022\362\115"}, {0x00A6, "\247\257\360\103"}, {0x00A7, "\361\157"}, {0x00A8, "\166"}, {0x00A9, "\022\360\143"}, {0x00AA, "\357\200\361\146\360\261"}, {0x00AB, "\355\137\052"}, {0x00AC, "\057\356\366"}, {0x00AD, "\355\130\355\317\362\075"}, {0x00AE, "\022\205\365\365"}, {0x00AF, "\175"}, {0x00B0, "\022\357\132"}, {0x00B1, "\057\372\252"}, {0x00B2, "\355\076\127"}, {0x00B3, "\355\076\136"}, {0x00B4, "\021\062"}, {0x00B5, "\022\370\360"}, {0x00B6, "\356\244\007\357\241"}, {0x00B7, "\037\355\141"}, {0x00B8, "\276"}, {0x00B9, "\355\076\107"}, {0x00BA, "\357\200\361\146\370\277"}, {0x00BB, "\355\137\222"}, {0x00BC, "\355\107\107\357\021"}, {0x00BD, "\355\107\107\355\135"}, {0x00BE, "\355\107\136\357\305"}, {0x00BF, "\037\355\315\355\145"}, {0x00C0, "\001\010\006\063\021\067"}, {0x00C1, "\001\010\006\063\021\062"}, {0x00C2, "\001\010\006\063\021\072"}, {0x00C3, "\001\010\006\063\173"}, {0x00C4, "\001\010\006\063\166"}, {0x00C5, "\001\010\006\063\304\013\040"}, {0x00C6, "\001\010\006\355\307"}, {0x00C7, "\001\010\006\315\276"}, {0x00C8, "\001\010\006\130\021\067"}, {0x00C9, "\001\010\006\130\021\062"}, {0x00CA, "\001\010\006\130\021\072"}, {0x00CB, "\001\010\006\130\166"}, {0x00CC, "\001\010\006\103\021\067"}, {0x00CD, "\001\010\006\103\021\062"}, {0x00CE, "\001\010\006\103\021\072"}, {0x00CF, "\001\010\006\103\166"}, {0x00D0, "\001\010\006\360\231"}, {0x00D1, "\001\010\006\242\173"}, {0x00D2, "\001\010\006\064\021\067"}, {0x00D3, "\001\010\006\064\021\062"}, {0x00D4, "\001\010\006\064\021\072"}, {0x00D5, "\001\010\006\064\173"}, {0x00D6, "\001\010\006\064\166"}, {0x00D7, "\057\356\357"}, {0x00D8, "\001\010\006\064\233\361\140"}, {0x00D9, "\001\010\006\132\021\067"}, {0x00DA, "\001\010\006\132\021\062"}, {0x00DB, "\001\010\006\132\021\072"}, {0x00DC, "\001\010\006\132\166"}, {0x00DD, "\001\010\006\267\021\062"}, {0x00DE, "\001\010\006\362\005"}, {0x00DF, "\001\005\006\224\356\326"}, {0x00E0, "\001\005\006\063\021\067"}, {0x00E1, "\001\005\006\063\021\062"}, {0x00E2, "\001\005\006\063\021\072"}, {0x00E3, "\001\005\006\063\173"}, {0x00E4, "\001\005\006\063\166"}, {0x00E5, "\001\005\006\063\304\013\040"}, {0x00E6, "\001\005\006\355\307"}, {0x00E7, "\001\005\006\315\276"}, {0x00E8, "\001\005\006\130\021\067"}, {0x00E9, "\001\005\006\130\021\062"}, {0x00EA, "\001\005\006\130\021\072"}, {0x00EB, "\001\005\006\130\166"}, {0x00EC, "\001\005\006\103\021\067"}, {0x00ED, "\001\005\006\103\021\062"}, {0x00EE, "\001\005\006\103\021\072"}, {0x00EF, "\001\005\006\103\166"}, {0x00F0, "\001\005\006\360\231"}, {0x00F1, "\001\005\006\242\173"}, {0x00F2, "\001\005\006\064\021\067"}, {0x00F3, "\001\005\006\064\021\062"}, {0x00F4, "\001\005\006\064\021\072"}, {0x00F5, "\001\005\006\064\173"}, {0x00F6, "\001\005\006\064\166"}, {0x00F7, "\057\357\137"}, {0x00F8, "\001\005\006\064\233\361\140"}, {0x00F9, "\001\005\006\132\021\067"}, {0x00FA, "\001\005\006\132\021\062"}, {0x00FB, "\001\005\006\132\021\072"}, {0x00FC, "\001\005\006\132\166"}, {0x00FD, "\001\005\006\267\021\062"}, {0x00FE, "\001\005\006\362\005"}, {0x00FF, "\001\005\006\267\166"}, {0x0100, "\001\010\006\063\175"}, {0x0101, "\001\005\006\063\175"}, {0x0102, "\001\010\006\063\214"}, {0x0103, "\001\005\006\063\214"}, {0x0104, "\001\010\006\063\355\057"}, {0x0105, "\001\005\006\063\355\057"}, {0x0106, "\001\010\006\315\021\062"}, {0x0107, "\001\005\006\315\021\062"}, {0x0108, "\001\010\006\315\021\072"}, {0x0109, "\001\005\006\315\021\072"}, {0x010A, "\001\010\006\315\037\013\040"}, {0x010B, "\001\005\006\315\037\013\040"}, {0x010C, "\001\010\006\315\226"}, {0x010D, "\001\005\006\315\226"}, {0x010E, "\001\010\006\277\226"}, {0x010F, "\001\005\006\277\226"}, {0x0110, "\001\010\006\277\233"}, {0x0111, "\001\005\006\277\233"}, {0x0112, "\001\010\006\130\175"}, {0x0113, "\001\005\006\130\175"}, {0x0114, "\001\010\006\130\214"}, {0x0115, "\001\005\006\130\214"}, {0x0116, "\001\010\006\130\037\013\040"}, {0x0117, "\001\005\006\130\037\013\040"}, {0x0118, "\001\010\006\130\355\057"}, {0x0119, "\001\005\006\130\355\057"}, {0x011A, "\001\010\006\130\226"}, {0x011B, "\001\005\006\130\226"}, {0x011C, "\001\010\006\270\021\072"}, {0x011D, "\001\005\006\270\021\072"}, {0x011E, "\001\010\006\270\214"}, {0x011F, "\001\005\006\270\214"}, {0x0120, "\001\010\006\270\037\013\040"}, {0x0121, "\001\005\006\270\037\013\040"}, {0x0122, "\001\010\006\270\276"}, {0x0123, "\001\005\006\270\276"}, {0x0124, "\001\010\006\240\021\072"}, {0x0125, "\001\005\006\240\021\072"}, {0x0126, "\001\010\006\240\233"}, {0x0127, "\001\005\006\240\233"}, {0x0128, "\001\010\006\103\173"}, {0x0129, "\001\005\006\103\173"}, {0x012A, "\001\010\006\103\175"}, {0x012B, "\001\005\006\103\175"}, {0x012C, "\001\010\006\103\214"}, {0x012D, "\001\005\006\103\214"}, {0x012E, "\001\010\006\103\355\057"}, {0x012F, "\001\005\006\103\355\057"}, {0x0130, "\001\010\006\103\037\013\040"}, {0x0131, "\001\005\006\103\272\037"}, {0x0132, "\355\136\357\037\010\356\353\360\350"}, {0x0133, "\355\136\357\037\005\356\353\360\350"}, {0x0134, "\001\010\006\355\055\021\072"}, {0x0135, "\001\005\006\355\055\021\072"}, {0x0136, "\001\010\006\354\276"}, {0x0137, "\001\005\006\354\276"}, {0x0138, "\001\005\006\370\054"}, {0x0139, "\001\010\006\212\021\062"}, {0x013A, "\001\005\006\212\021\062"}, {0x013B, "\001\010\006\212\276"}, {0x013C, "\001\005\006\212\276"}, {0x013D, "\001\010\006\212\226"}, {0x013E, "\001\005\006\212\226"}, {0x013F, "\001\010\006\212\037\355\141"}, {0x0140, "\001\005\006\212\037\355\141"}, {0x0141, "\001\010\006\212\233"}, {0x0142, "\001\005\006\212\233"}, {0x0143, "\001\010\006\242\021\062"}, {0x0144, "\001\005\006\242\021\062"}, {0x0145, "\001\010\006\242\276"}, {0x0146, "\001\005\006\242\276"}, {0x0147, "\001\010\006\242\226"}, {0x0148, "\001\005\006\242\226"}, {0x0149, "\001\005\006\242\373\302\357\122\355\310"}, {0x014A, "\001\010\006\356\011"}, {0x014B, "\001\005\006\356\011"}, {0x014C, "\001\010\006\064\175"}, {0x014D, "\001\005\006\064\175"}, {0x014E, "\001\010\006\064\214"}, {0x014F, "\001\005\006\064\214"}, {0x0150, "\001\010\006\064\070\021\062"}, {0x0151, "\001\005\006\064\070\021\062"}, {0x0152, "\355\136\357\037\010\356\353\355\212"}, {0x0153, "\355\136\357\037\005\356\353\355\212"}, {0x0154, "\001\010\006\170\021\062"}, {0x0155, "\001\005\006\170\021\062"}, {0x0156, "\001\010\006\170\276"}, {0x0157, "\001\005\006\170\276"}, {0x0158, "\001\010\006\170\226"}, {0x0159, "\001\005\006\170\226"}, {0x015A, "\001\010\006\224\021\062"}, {0x015B, "\001\005\006\224\021\062"}, {0x015C, "\001\010\006\224\021\072"}, {0x015D, "\001\005\006\224\021\072"}, {0x015E, "\001\010\006\224\276"}, {0x015F, "\001\005\006\224\276"}, {0x0160, "\001\010\006\224\226"}, {0x0161, "\001\005\006\224\226"}, {0x0162, "\001\010\006\262\276"}, {0x0163, "\001\005\006\262\276"}, {0x0164, "\001\010\006\262\226"}, {0x0165, "\001\005\006\262\226"}, {0x0166, "\001\010\006\262\233"}, {0x0167, "\001\005\006\262\233"}, {0x0168, "\001\010\006\132\173"}, {0x0169, "\001\005\006\132\173"}, {0x016A, "\001\010\006\132\175"}, {0x016B, "\001\005\006\132\175"}, {0x016C, "\001\010\006\132\214"}, {0x016D, "\001\005\006\132\214"}, {0x016E, "\001\010\006\132\304\013\040"}, {0x016F, "\001\005\006\132\304\013\040"}, {0x0170, "\001\010\006\132\070\021\062"}, {0x0171, "\001\005\006\132\070\021\062"}, {0x0172, "\001\010\006\132\355\057"}, {0x0173, "\001\005\006\132\355\057"}, {0x0174, "\001\010\006\351\021\072"}, {0x0175, "\001\005\006\351\021\072"}, {0x0176, "\001\010\006\267\021\072"}, {0x0177, "\001\005\006\267\021\072"}, {0x0178, "\001\010\006\267\166"}, {0x0179, "\001\010\006\273\021\062"}, {0x017A, "\001\005\006\273\021\062"}, {0x017B, "\001\010\006\273\037\013\040"}, {0x017C, "\001\005\006\273\037\013\040"}, {0x017D, "\001\010\006\273\226"}, {0x017E, "\001\005\006\273\226"}, {0x017F, "\001\005\006\224\355\266"}, {0x0180, "\001\005\006\336\233"}, {0x0181, "\001\010\006\336\341"}, {0x0182, "\001\010\006\336\357\012"}, {0x0183, "\001\005\006\336\357\012"}, {0x0184, "\001\010\006\357\033\347"}, {0x0185, "\001\005\006\357\033\347"}, {0x0186, "\001\010\006\064\355\345"}, {0x0187, "\001\010\006\315\341"}, {0x0188, "\001\005\006\315\341"}, {0x0189, "\001\010\006\277\362\306"}, {0x018A, "\001\010\006\277\341"}, {0x018B, "\001\010\006\277\357\012"}, {0x018C, "\001\005\006\277\357\012"}, {0x018D, "\001\005\006\356\062\356\156"}, {0x018E, "\001\010\006\130\355\015"}, {0x018F, "\001\010\006\356\043"}, {0x0190, "\001\010\006\130\355\345"}, {0x0191, "\001\010\006\355\064\355\066"}, {0x0192, "\001\005\006\355\064\355\066"}, {0x0193, "\001\010\006\270\341"}, {0x0194, "\001\010\006\356\072"}, {0x0195, "\001\005\006\367\133"}, {0x0196, "\001\010\006\104"}, {0x0197, "\001\010\006\103\233"}, {0x0198, "\001\010\006\354\341"}, {0x0199, "\001\005\006\354\341"}, {0x019A, "\001\005\006\212\374\052"}, {0x019B, "\001\005\006\356\350\233"}, {0x019C, "\001\010\006\300\327"}, {0x019D, "\001\010\006\242\355\066"}, {0x019E, "\001\005\006\242\044\355\266\357\212\222"}, {0x019F, "\001\010\006\064\173\355\141"}, {0x01A0, "\001\010\006\064\340"}, {0x01A1, "\001\005\006\064\340"}, {0x01A2, "\001\010\006\355\110"}, {0x01A3, "\001\005\006\355\110"}, {0x01A4, "\001\010\006\355\023\341"}, {0x01A5, "\001\005\006\355\023\341"}, {0x01A6, "\001\006\362\137"}, {0x01A7, "\001\010\006\360\200\347"}, {0x01A8, "\001\005\006\360\200\347"}, {0x01A9, "\001\010\006\356\171"}, {0x01AA, "\001\006\356\171\355\015\356\004"}, {0x01AB, "\001\005\006\262\355\066\357\266"}, {0x01AC, "\001\010\006\262\341"}, {0x01AD, "\001\005\006\262\341"}, {0x01AE, "\001\010\006\262\355\066\355\216"}, {0x01AF, "\001\010\006\132\340"}, {0x01B0, "\001\005\006\132\340"}, {0x01B1, "\001\010\006\263"}, {0x01B2, "\001\010\006\355\027\341"}, {0x01B3, "\001\010\006\267\341"}, {0x01B4, "\001\005\006\267\341"}, {0x01B5, "\001\010\006\273\233"}, {0x01B6, "\001\005\006\273\233"}, {0x01B7, "\001\010\006\355\323"}, {0x01B8, "\001\010\006\355\323\355\015"}, {0x01B9, "\001\005\006\355\323\355\015"}, {0x01BA, "\001\005\006\355\323\355\066"}, {0x01BB, "\001\006\127\233"}, {0x01BC, "\001\010\006\357\104\347"}, {0x01BD, "\001\005\006\357\104\347"}, {0x01BE, "\001\006\355\226\007\355\230\233\355\145"}, {0x01BF, "\001\006\360\011"}, {0x01C0, "\001\006\356\154\365\254"}, {0x01C1, "\001\006\356\154\370\141"}, {0x01C2, "\001\006\356\154\362\324"}, {0x01C3, "\001\006\356\154\355\216"}, {0x01C4, "\001\010\006\356\066\226"}, {0x01C5, "\001\010\006\277\165\001\005\273\226"}, {0x01C6, "\001\005\006\356\066\226"}, {0x01C7, "\001\010\006\361\040"}, {0x01C8, "\001\010\006\212\165\001\005\355\055"}, {0x01C9, "\001\005\006\361\040"}, {0x01CA, "\001\010\006\361\120"}, {0x01CB, "\001\010\006\242\165\001\005\355\055"}, {0x01CC, "\001\005\006\361\120"}, {0x01CD, "\001\010\006\063\226"}, {0x01CE, "\001\005\006\063\226"}, {0x01CF, "\001\010\006\103\226"}, {0x01D0, "\001\005\006\103\226"}, {0x01D1, "\001\010\006\064\226"}, {0x01D2, "\001\005\006\064\226"}, {0x01D3, "\001\010\006\132\226"}, {0x01D4, "\001\005\006\132\226"}, {0x01D5, "\001\010\006\132\166\020\175"}, {0x01D6, "\001\005\006\132\166\020\175"}, {0x01D7, "\001\010\006\132\166\020\021\062"}, {0x01D8, "\001\005\006\132\166\020\021\062"}, {0x01D9, "\001\010\006\132\166\020\226"}, {0x01DA, "\001\005\006\132\166\020\226"}, {0x01DB, "\001\010\006\132\166\020\021\067"}, {0x01DC, "\001\005\006\132\166\020\021\067"}, {0x01DD, "\001\005\006\130\327"}, {0x01DE, "\001\010\006\063\166\020\175"}, {0x01DF, "\001\005\006\063\166\020\175"}, {0x01E0, "\001\010\006\063\037\013\040\020\175"}, {0x01E1, "\001\005\006\063\037\013\040\020\175"}, {0x01E2, "\001\010\006\355\307\175"}, {0x01E3, "\001\005\006\355\307\175"}, {0x01E4, "\001\010\006\270\233"}, {0x01E5, "\001\005\006\270\233"}, {0x01E6, "\001\010\006\270\226"}, {0x01E7, "\001\005\006\270\226"}, {0x01E8, "\001\010\006\354\226"}, {0x01E9, "\001\005\006\354\226"}, {0x01EA, "\001\010\006\064\355\057"}, {0x01EB, "\001\005\006\064\355\057"}, {0x01EC, "\001\010\006\064\355\057\020\175"}, {0x01ED, "\001\005\006\064\355\057\020\175"}, {0x01EE, "\001\010\006\355\323\226"}, {0x01EF, "\001\005\006\355\323\226"}, {0x01F0, "\001\005\006\355\055\226"}, {0x01F1, "\001\010\006\356\066"}, {0x01F2, "\001\010\006\277\165\001\005\273"}, {0x01F3, "\001\005\006\356\066"}, {0x01F4, "\001\010\006\270\021\062"}, {0x01F5, "\001\005\006\270\021\062"}, {0x01F6, "\001\010\006\367\134"}, {0x01F7, "\001\010\006\360\011"}, {0x01F8, "\001\010\006\242\067"}, {0x01F9, "\001\005\006\242\067"}, {0x01FA, "\001\010\006\063\304\013\040\020\021\062"}, {0x01FB, "\001\005\006\063\304\013\040\020\021\062"}, {0x01FC, "\001\010\006\355\307\021\062"}, {0x01FD, "\001\005\006\355\307\021\062"}, {0x01FE, "\001\010\006\064\233\021\062"}, {0x01FF, "\001\005\006\064\233\021\062"}, {0x0200, "\001\010\006\063\070\021\067"}, {0x0201, "\001\005\006\063\070\021\067"}, {0x0202, "\001\010\006\063\214\355\100"}, {0x0203, "\001\005\006\063\214\355\100"}, {0x0204, "\001\010\006\130\070\021\067"}, {0x0205, "\001\005\006\130\070\021\067"}, {0x0206, "\001\010\006\130\214\355\100"}, {0x0207, "\001\005\006\130\214\355\100"}, {0x0208, "\001\010\006\103\070\021\067"}, {0x0209, "\001\005\006\103\070\021\067"}, {0x020A, "\001\010\006\103\214\355\100"}, {0x020B, "\001\005\006\103\214\355\100"}, {0x020C, "\001\010\006\064\070\021\067"}, {0x020D, "\001\005\006\064\070\021\067"}, {0x020E, "\001\010\006\064\214\355\100"}, {0x020F, "\001\005\006\064\214\355\100"}, {0x0210, "\001\010\006\170\070\021\067"}, {0x0211, "\001\005\006\170\070\021\067"}, {0x0212, "\001\010\006\170\214\355\100"}, {0x0213, "\001\005\006\170\214\355\100"}, {0x0214, "\001\010\006\132\070\021\067"}, {0x0215, "\001\005\006\132\070\021\067"}, {0x0216, "\001\010\006\132\214\355\100"}, {0x0217, "\001\005\006\132\214\355\100"}, {0x0218, "\001\010\006\224\332\303"}, {0x0219, "\001\005\006\224\332\303"}, {0x021A, "\001\010\006\262\332\303"}, {0x021B, "\001\005\006\262\332\303"}, {0x021C, "\001\010\006\362\122"}, {0x021D, "\001\005\006\362\122"}, {0x021E, "\001\010\006\240\226"}, {0x021F, "\001\005\006\240\226"}, {0x0222, "\001\010\006\113"}, {0x0223, "\001\005\006\113"}, {0x0224, "\001\010\006\273\122"}, {0x0225, "\001\005\006\273\122"}, {0x0226, "\001\010\006\063\037\013\040"}, {0x0227, "\001\005\006\063\037\013\040"}, {0x0228, "\001\010\006\130\276"}, {0x0229, "\001\005\006\130\276"}, {0x022A, "\001\010\006\064\166\020\175"}, {0x022B, "\001\005\006\064\166\020\175"}, {0x022C, "\001\010\006\064\173\020\175"}, {0x022D, "\001\005\006\064\173\020\175"}, {0x022E, "\001\010\006\064\037\013\040"}, {0x022F, "\001\005\006\064\037\013\040"}, {0x0230, "\001\010\006\064\037\013\040\020\175"}, {0x0231, "\001\005\006\064\037\013\040\020\175"}, {0x0232, "\001\010\006\267\175"}, {0x0233, "\001\005\006\267\175"}, {0x0250, "\001\005\006\063\327"}, {0x0251, "\001\005\006\204"}, {0x0252, "\001\005\006\204\327"}, {0x0253, "\001\005\006\336\341"}, {0x0254, "\001\005\006\064\355\345"}, {0x0255, "\001\005\006\315\356\004"}, {0x0256, "\001\005\006\277\355\066\355\216"}, {0x0257, "\001\005\006\277\341"}, {0x0258, "\001\005\006\130\355\015"}, {0x0259, "\001\005\006\356\043"}, {0x025A, "\001\005\006\356\043\122"}, {0x025B, "\001\005\006\330"}, {0x025C, "\001\005\006\330\355\015"}, {0x025D, "\001\005\006\330\355\015\122"}, {0x025E, "\001\005\006\330\355\015\357\150"}, {0x025F, "\001\005\006\355\055\272\037\233"}, {0x0260, "\001\005\006\270\341"}, {0x0261, "\001\005\006\270\365\137"}, {0x0262, "\001\006\355\144\010\270"}, {0x0263, "\001\005\006\356\072"}, {0x0264, "\001\005\006\176\356\072"}, {0x0265, "\001\005\006\240\327"}, {0x0266, "\001\005\006\240\341"}, {0x0267, "\001\005\006\356\011\341"}, {0x0268, "\001\005\006\103\233"}, {0x0269, "\001\005\006\104"}, {0x026A, "\001\006\355\144\010\103"}, {0x026B, "\001\005\006\212\173\355\141"}, {0x026C, "\001\005\006\212\374\224"}, {0x026D, "\001\005\006\212\355\066\355\216"}, {0x026E, "\001\005\006\370\150"}, {0x026F, "\001\005\006\300\327"}, {0x0270, "\001\005\006\300\357\165\327"}, {0x0271, "\001\005\006\300\355\066\357\266"}, {0x0272, "\001\005\006\242\355\066\044\052"}, {0x0273, "\001\005\006\242\355\066\355\216"}, {0x0274, "\001\006\355\144\010\242"}, {0x0275, "\001\005\006\064\233"}, {0x0276, "\001\006\355\144\010\355\212"}, {0x0277, "\001\005\006\202\357\150"}, {0x0278, "\001\005\006\356\243"}, {0x0279, "\001\005\006\170\327"}, {0x027A, "\001\005\006\170\357\015\327"}, {0x027B, "\001\005\006\170\341\327"}, {0x027C, "\001\005\006\170\357\015"}, {0x027D, "\001\005\006\170\355\066\355\216"}, {0x027E, "\001\005\006\170\272\357\164"}, {0x027F, "\001\005\006\170\272\357\164\355\015"}, {0x0280, "\001\006\355\144\010\170"}, {0x0281, "\001\006\355\144\010\170\355\145"}, {0x0282, "\001\005\006\224\355\066\355\216"}, {0x0283, "\001\005\006\356\171"}, {0x0284, "\001\005\006\355\055\272\037\233\341"}, {0x0285, "\001\005\006\356\171\375\253\355\145"}, {0x0286, "\001\005\006\356\171\356\004"}, {0x0287, "\001\005\006\262\327"}, {0x0288, "\001\005\006\262\355\066\355\216"}, {0x0289, "\001\005\006\132\233"}, {0x028A, "\001\005\006\263"}, {0x028B, "\001\005\006\355\027\007\355\146"}, {0x028C, "\001\005\006\355\027\327"}, {0x028D, "\001\005\006\351\327"}, {0x028E, "\001\005\006\267\327"}, {0x028F, "\001\006\355\144\010\267"}, {0x0290, "\001\005\006\273\355\066\355\216"}, {0x0291, "\001\005\006\273\356\004"}, {0x0292, "\001\005\006\355\323"}, {0x0293, "\001\005\006\355\323\356\004"}, {0x0294, "\001\006\355\226\007\355\230"}, {0x0295, "\001\006\355\226\007\355\230\355\015"}, {0x0296, "\001\006\355\226\007\355\230\355\145"}, {0x0297, "\001\006\315\377\042"}, {0x0298, "\001\006\356\154\363\133"}, {0x0299, "\001\006\355\144\010\336"}, {0x029A, "\001\005\006\330\357\150"}, {0x029B, "\001\006\355\144\010\270\341"}, {0x029C, "\001\006\355\144\010\240"}, {0x029D, "\001\005\006\355\055\356\251\365\125"}, {0x029E, "\001\005\006\354\327"}, {0x029F, "\001\006\355\144\010\212"}, {0x02A0, "\001\005\006\355\175\341"}, {0x02A1, "\001\006\355\226\007\355\230\233"}, {0x02A2, "\001\006\355\226\007\355\230\233\355\015"}, {0x02A3, "\001\005\006\355\136\356\066"}, {0x02A4, "\001\005\006\355\136\365\245"}, {0x02A5, "\001\005\006\355\136\356\066\356\004"}, {0x02A6, "\001\005\006\355\136\362\044"}, {0x02A7, "\001\005\006\355\136\375\162"}, {0x02A8, "\001\005\006\355\136\375\120\356\004"}, {0x02A9, "\001\005\006\355\136\366\061"}, {0x02AA, "\001\005\006\355\136\370\215"}, {0x02AB, "\001\005\006\355\136\370\241"}, {0x02AC, "\001\006\361\167\363\134"}, {0x02AD, "\001\006\361\167\363\126"}, {0x02B0, "\001\201\005\240"}, {0x02B1, "\001\201\005\240\341"}, {0x02B2, "\001\201\005\355\055"}, {0x02B3, "\001\201\005\170"}, {0x02B4, "\001\201\005\170\327"}, {0x02B5, "\001\201\005\170\341\327"}, {0x02B6, "\001\201\355\144\010\170\355\145"}, {0x02B7, "\001\201\005\351"}, {0x02B8, "\001\201\005\267"}, {0x02B9, "\001\201\355\237"}, {0x02BA, "\001\201\374\245"}, {0x02BB, "\001\201\332\356\156"}, {0x02BC, "\001\201\355\310"}, {0x02BD, "\001\201\332\357\324"}, {0x02BE, "\001\201\360\174\044\053"}, {0x02BF, "\001\201\360\174\044\052"}, {0x02C0, "\001\201\355\226\007\355\230"}, {0x02C1, "\001\201\355\226\007\355\230\355\015"}, {0x02C2, "\001\201\355\005\007\061\015\033\052"}, {0x02C3, "\001\201\355\005\007\061\015\033\053"}, {0x02C4, "\001\201\355\005\007\061\015\050\102"}, {0x02C5, "\001\201\355\005\007\061\015\050\101"}, {0x02C6, "\001\201\021\072"}, {0x02C7, "\226"}, {0x02C8, "\001\201\244\257"}, {0x02C9, "\001\201\175"}, {0x02CA, "\001\201\021\062"}, {0x02CB, "\001\201\021\067"}, {0x02CC, "\001\201\244\257\101"}, {0x02CD, "\001\201\175\101"}, {0x02CE, "\001\201\021\067\101"}, {0x02CF, "\001\201\021\062\101"}, {0x02D0, "\001\201\127\252\375\261"}, {0x02D1, "\001\201\037\356\133"}, {0x02D2, "\001\201\356\063\044\053\360\115"}, {0x02D3, "\001\201\356\063\044\052\360\115"}, {0x02D4, "\001\201\355\016\102"}, {0x02D5, "\001\201\355\016\101"}, {0x02D6, "\001\201\057\215"}, {0x02D7, "\001\201\057\355\022"}, {0x02D8, "\214"}, {0x02D9, "\037\013\040"}, {0x02DA, "\304\013\040"}, {0x02DB, "\355\057"}, {0x02DC, "\176\173"}, {0x02DD, "\070\021\062"}, {0x02DE, "\001\201\122\007\374\065"}, {0x02DF, "\001\201\021\013\355\035"}, {0x02E0, "\001\201\356\072\005"}, {0x02E1, "\001\201\212\005"}, {0x02E2, "\001\201\224\005"}, {0x02E3, "\001\201\355\030\005"}, {0x02E4, "\001\201\355\226\007\355\230\355\015\005"}, {0x02E5, "\001\201\247\007\347\362\043\102"}, {0x02E6, "\001\201\247\007\347\102"}, {0x02E7, "\001\201\247\007\347\371\030"}, {0x02E8, "\001\201\247\007\347\101"}, {0x02E9, "\001\201\247\007\347\362\043\101"}, {0x02EA, "\001\201\057\007\347\007\360\230\362\120"}, {0x02EB, "\001\201\057\007\347\007\360\230\360\013"}, {0x02EC, "\001\201\360\005"}, {0x02ED, "\001\201\355\045\362\377"}, {0x02EE, "\001\201\070\355\310"}, {0x0300, "\026\021\067"}, {0x0301, "\026\021\062"}, {0x0302, "\026\021\072"}, {0x0303, "\026\173"}, {0x0304, "\026\175"}, {0x0305, "\026\355\011\102"}, {0x0306, "\026\214"}, {0x0307, "\026\037\013\040"}, {0x0308, "\026\166"}, {0x0309, "\026\122\013\040"}, {0x030A, "\026\304\013\040"}, {0x030B, "\026\070\021\062"}, {0x030C, "\026\226"}, {0x030D, "\026\244\257\013\040"}, {0x030E, "\026\070\244\257\013\040"}, {0x030F, "\026\070\021\067"}, {0x0310, "\026\356\125"}, {0x0311, "\026\214\355\100"}, {0x0312, "\026\332\356\156\013\040"}, {0x0313, "\026\332\013\040"}, {0x0314, "\026\332\357\324\013\040"}, {0x0315, "\026\332\013\040\044\053"}, {0x0316, "\026\021\067\043"}, {0x0317, "\026\021\062\043"}, {0x0318, "\026\355\016\052\043"}, {0x0319, "\026\355\016\222\043"}, {0x031A, "\026\355\376\052\013\040"}, {0x031B, "\026\340"}, {0x031C, "\026\356\063\052\043"}, {0x031D, "\026\355\016\102\043"}, {0x031E, "\026\355\016\101\043"}, {0x031F, "\026\057\215\043"}, {0x0320, "\026\057\355\022\043"}, {0x0321, "\026\355\066\357\266\043"}, {0x0322, "\026\355\066\355\216\043"}, {0x0323, "\026\037\043"}, {0x0324, "\026\166\043"}, {0x0325, "\026\304\043"}, {0x0326, "\026\332\303"}, {0x0327, "\026\276"}, {0x0328, "\026\355\057"}, {0x0329, "\026\244\257\303"}, {0x032A, "\026\357\275\043"}, {0x032B, "\026\202\043"}, {0x032C, "\026\226\043"}, {0x032D, "\026\021\072\043"}, {0x032E, "\026\214\303"}, {0x032F, "\026\214\355\100\303"}, {0x0330, "\026\173\043"}, {0x0331, "\026\175\043"}, {0x0332, "\026\355\130\043"}, {0x0333, "\026\070\355\130\043"}, {0x0334, "\026\173\356\317"}, {0x0335, "\026\247\356\316\356\060"}, {0x0336, "\026\247\356\223\356\060"}, {0x0337, "\026\247\355\046\356\316\356\060"}, {0x0338, "\026\247\355\046\356\223\356\060"}, {0x0339, "\026\356\063\044\053\043"}, {0x033A, "\026\357\275\355\145\043"}, {0x033B, "\026\035\043"}, {0x033C, "\026\371\025\303"}, {0x033D, "\026\355\030\013\040"}, {0x033E, "\026\173\203"}, {0x033F, "\026\070\355\130\013\040"}, {0x0340, "\026\205\007\347\067"}, {0x0341, "\026\205\007\347\062"}, {0x0342, "\026\321\021\072"}, {0x0343, "\026\321\360\146"}, {0x0344, "\026\321\355\063\355\051"}, {0x0345, "\026\321\104\043"}, {0x0346, "\026\357\275\013\040"}, {0x0347, "\026\057\174\043"}, {0x0348, "\026\070\244\257\303"}, {0x0349, "\026\355\376\052\043"}, {0x034A, "\026\173\233\013\040"}, {0x034B, "\026\360\333\013\040"}, {0x034C, "\026\357\013\174\044\013\040"}, {0x034D, "\026\366\077\052\020\053\303"}, {0x034E, "\026\061\015\050\102\303"}, {0x0360, "\026\070\173"}, {0x0361, "\026\070\214\355\100"}, {0x0362, "\026\070\061\015\033\053\303"}, {0x0374, "\057\361\127\321"}, {0x0375, "\057\361\127\043\321"}, {0x037A, "\337\321\104\043"}, {0x037E, "\037\355\315\321"}, {0x0384, "\337\321\355\051"}, {0x0385, "\337\321\355\063\355\051"}, {0x0386, "\001\010\027\204\355\051"}, {0x0387, "\337\321\362\340\375\163"}, {0x0388, "\001\010\027\330\355\051"}, {0x0389, "\001\010\027\225\355\051"}, {0x038A, "\001\010\027\104\355\051"}, {0x038C, "\001\010\027\355\040\355\051"}, {0x038E, "\001\010\027\263\355\051"}, {0x038F, "\001\010\027\202\355\051"}, {0x0390, "\001\005\027\104\355\063\020\355\051"}, {0x0391, "\001\010\027\204"}, {0x0392, "\001\010\027\356\307"}, {0x0393, "\001\010\027\356\072"}, {0x0394, "\001\010\027\356\062"}, {0x0395, "\001\010\027\330"}, {0x0396, "\001\010\027\360\223"}, {0x0397, "\001\010\027\225"}, {0x0398, "\001\010\027\357\360"}, {0x0399, "\001\010\027\104"}, {0x039A, "\001\010\027\357\214"}, {0x039B, "\001\010\027\356\350"}, {0x039C, "\001\010\027\355\113"}, {0x039D, "\001\010\027\356\027"}, {0x039E, "\001\010\027\357\057"}, {0x039F, "\001\010\027\355\040"}, {0x03A0, "\001\010\027\355\235"}, {0x03A1, "\001\010\027\356\040"}, {0x03A3, "\001\010\027\357\032"}, {0x03A4, "\001\010\027\361\362"}, {0x03A5, "\001\010\027\263"}, {0x03A6, "\001\010\027\356\243"}, {0x03A7, "\001\010\027\356\343"}, {0x03A8, "\001\010\027\357\017"}, {0x03A9, "\001\010\027\202"}, {0x03AA, "\001\010\027\104\355\063"}, {0x03AB, "\001\010\027\263\355\063"}, {0x03AC, "\001\005\027\204\355\051"}, {0x03AD, "\001\005\027\330\355\051"}, {0x03AE, "\001\005\027\225\355\051"}, {0x03AF, "\001\005\027\104\355\051"}, {0x03B0, "\001\005\027\263\355\063\020\355\051"}, {0x03B1, "\001\005\027\204"}, {0x03B2, "\001\005\027\356\307"}, {0x03B3, "\001\005\027\356\072"}, {0x03B4, "\001\005\027\356\062"}, {0x03B5, "\001\005\027\330"}, {0x03B6, "\001\005\027\360\223"}, {0x03B7, "\001\005\027\225"}, {0x03B8, "\001\005\027\357\360"}, {0x03B9, "\001\005\027\104"}, {0x03BA, "\001\005\027\357\214"}, {0x03BB, "\001\005\027\356\350"}, {0x03BC, "\001\005\027\355\113"}, {0x03BD, "\001\005\027\356\027"}, {0x03BE, "\001\005\027\357\057"}, {0x03BF, "\001\005\027\355\040"}, {0x03C0, "\001\005\027\355\235"}, {0x03C1, "\001\005\027\356\040"}, {0x03C2, "\001\005\027\357\032\032"}, {0x03C3, "\001\005\027\357\032"}, {0x03C4, "\001\005\027\361\362"}, {0x03C5, "\001\005\027\263"}, {0x03C6, "\001\005\027\356\243"}, {0x03C7, "\001\005\027\356\343"}, {0x03C8, "\001\005\027\357\017"}, {0x03C9, "\001\005\027\202"}, {0x03CA, "\001\005\027\104\355\063"}, {0x03CB, "\001\005\027\263\355\063"}, {0x03CC, "\001\005\027\355\040\355\051"}, {0x03CD, "\001\005\027\263\355\051"}, {0x03CE, "\001\005\027\202\355\051"}, {0x03D0, "\022\321\356\307"}, {0x03D1, "\022\321\357\360"}, {0x03D2, "\022\321\263\122"}, {0x03D3, "\022\321\263\021\062\020\122"}, {0x03D4, "\022\321\263\166\020\122"}, {0x03D5, "\022\321\356\243"}, {0x03D6, "\022\321\355\235"}, {0x03D7, "\022\321\367\361"}, {0x03DA, "\001\027\361\344"}, {0x03DB, "\001\005\027\361\344"}, {0x03DC, "\001\027\360\203"}, {0x03DD, "\001\005\027\360\203"}, {0x03DE, "\001\027\356\346"}, {0x03DF, "\001\005\027\356\346"}, {0x03E0, "\001\027\361\304"}, {0x03E1, "\001\005\027\361\304"}, {0x03E2, "\001\010\355\121\363\277"}, {0x03E3, "\001\005\355\121\363\276"}, {0x03E4, "\001\010\355\121\360\242"}, {0x03E5, "\001\005\355\121\360\242"}, {0x03E6, "\001\010\355\121\357\222"}, {0x03E7, "\001\005\355\121\357\222"}, {0x03E8, "\001\010\355\121\360\334"}, {0x03E9, "\001\005\355\121\360\334"}, {0x03EA, "\001\010\355\121\360\211"}, {0x03EB, "\001\005\355\121\360\211"}, {0x03EC, "\001\010\355\121\361\370"}, {0x03ED, "\001\005\355\121\361\370"}, {0x03EE, "\001\010\355\121\355\221"}, {0x03EF, "\001\005\355\121\355\221"}, {0x03F0, "\022\321\357\214"}, {0x03F1, "\022\321\356\040"}, {0x03F2, "\022\321\370\220\357\032"}, {0x03F3, "\001\027\362\123"}, {0x0400, "\001\010\034\355\262\067"}, {0x0401, "\001\010\034\360\354"}, {0x0402, "\001\010\034\356\065"}, {0x0403, "\001\010\034\360\310"}, {0x0404, "\001\010\034\355\262\375\371"}, {0x0405, "\001\010\034\356\167"}, {0x0406, "\001\010\034\103\360\077"}, {0x0407, "\001\010\034\003"}, {0x0408, "\001\010\034\355\305"}, {0x0409, "\001\010\034\361\037"}, {0x040A, "\001\010\034\360\034"}, {0x040B, "\001\010\034\362\015"}, {0x040C, "\001\010\034\361\005"}, {0x040D, "\001\010\034\103\067"}, {0x040E, "\001\010\034\113\355\225"}, {0x040F, "\001\010\034\356\322"}, {0x0410, "\001\010\034\063"}, {0x0411, "\001\010\034\356\151"}, {0x0412, "\001\010\034\357\056"}, {0x0413, "\001\010\034\355\256"}, {0x0414, "\001\010\034\356\170"}, {0x0415, "\001\010\034\355\262"}, {0x0416, "\001\010\034\355\206"}, {0x0417, "\001\010\034\355\371"}, {0x0418, "\001\010\034\103"}, {0x0419, "\001\010\034\103\355\225"}, {0x041A, "\001\010\034\241"}, {0x041B, "\001\010\034\356\327"}, {0x041C, "\001\010\034\356\330"}, {0x041D, "\001\010\034\356\012"}, {0x041E, "\001\010\034\064"}, {0x041F, "\001\010\034\355\174"}, {0x0420, "\001\010\034\356\331"}, {0x0421, "\001\010\034\356\175"}, {0x0422, "\001\010\034\355\303"}, {0x0423, "\001\010\034\113"}, {0x0424, "\001\010\034\360\232"}, {0x0425, "\001\010\034\355\056"}, {0x0426, "\001\010\034\356\051"}, {0x0427, "\001\010\034\355\073"}, {0x0428, "\001\010\034\355\034"}, {0x0429, "\001\010\034\360\134"}, {0x042A, "\001\010\034\057\356\326"}, {0x042B, "\001\010\034\357\062"}, {0x042C, "\001\010\034\057\356\226"}, {0x042D, "\001\010\034\220"}, {0x042E, "\001\010\034\360\355"}, {0x042F, "\001\010\034\360\345"}, {0x0430, "\001\005\034\063"}, {0x0431, "\001\005\034\356\151"}, {0x0432, "\001\005\034\357\056"}, {0x0433, "\001\005\034\355\256"}, {0x0434, "\001\005\034\356\170"}, {0x0435, "\001\005\034\355\262"}, {0x0436, "\001\005\034\355\206"}, {0x0437, "\001\005\034\355\371"}, {0x0438, "\001\005\034\103"}, {0x0439, "\001\005\034\103\355\225"}, {0x043A, "\001\005\034\241"}, {0x043B, "\001\005\034\356\327"}, {0x043C, "\001\005\034\356\330"}, {0x043D, "\001\005\034\356\012"}, {0x043E, "\001\005\034\064"}, {0x043F, "\001\005\034\355\174"}, {0x0440, "\001\005\034\356\331"}, {0x0441, "\001\005\034\356\175"}, {0x0442, "\001\005\034\355\303"}, {0x0443, "\001\005\034\113"}, {0x0444, "\001\005\034\360\232"}, {0x0445, "\001\005\034\355\056"}, {0x0446, "\001\005\034\356\051"}, {0x0447, "\001\005\034\355\073"}, {0x0448, "\001\005\034\355\034"}, {0x0449, "\001\005\034\360\134"}, {0x044A, "\001\005\034\057\356\326"}, {0x044B, "\001\005\034\357\062"}, {0x044C, "\001\005\034\057\356\226"}, {0x044D, "\001\005\034\220"}, {0x044E, "\001\005\034\360\355"}, {0x044F, "\001\005\034\360\345"}, {0x0450, "\001\005\034\355\262\067"}, {0x0451, "\001\005\034\360\354"}, {0x0452, "\001\005\034\356\065"}, {0x0453, "\001\005\034\360\310"}, {0x0454, "\001\005\034\375\372\355\262"}, {0x0455, "\001\005\034\356\167"}, {0x0456, "\001\005\034\103\360\077"}, {0x0457, "\001\005\034\003"}, {0x0458, "\001\005\034\355\305"}, {0x0459, "\001\005\034\361\037"}, {0x045A, "\001\005\034\360\034"}, {0x045B, "\001\005\034\362\015"}, {0x045C, "\001\005\034\361\005"}, {0x045D, "\001\005\034\103\067"}, {0x045E, "\001\005\034\113\355\225"}, {0x045F, "\001\005\034\356\322"}, {0x0460, "\001\010\034\202"}, {0x0461, "\001\005\034\202"}, {0x0462, "\001\010\034\362\113"}, {0x0463, "\001\005\034\362\113"}, {0x0464, "\001\010\034\220\356\076"}, {0x0465, "\001\005\034\220\356\076"}, {0x0466, "\001\010\034\176\355\365"}, {0x0467, "\001\005\034\176\355\365"}, {0x0468, "\001\010\034\176\355\365\356\076"}, {0x0469, "\001\005\034\176\355\365\356\076"}, {0x046A, "\001\010\034\342\355\365"}, {0x046B, "\001\005\034\342\355\365"}, {0x046C, "\001\010\034\342\355\365\356\076"}, {0x046D, "\001\005\034\342\355\365\356\076"}, {0x046E, "\001\010\034\361\016"}, {0x046F, "\001\005\034\361\016"}, {0x0470, "\001\010\034\357\017"}, {0x0471, "\001\005\034\357\017"}, {0x0472, "\001\010\034\360\247"}, {0x0473, "\001\005\034\360\247"}, {0x0474, "\001\010\034\356\341"}, {0x0475, "\001\005\034\356\341"}, {0x0476, "\001\010\034\356\341\070\021\067"}, {0x0477, "\001\005\034\356\341\070\021\067"}, {0x0478, "\001\010\034\357\263"}, {0x0479, "\001\005\034\357\263"}, {0x047A, "\001\010\034\202\304"}, {0x047B, "\001\005\034\202\304"}, {0x047C, "\001\010\034\202\357\363"}, {0x047D, "\001\005\034\202\357\363"}, {0x047E, "\001\010\034\361\150"}, {0x047F, "\001\005\034\361\150"}, {0x0480, "\001\010\034\356\346"}, {0x0481, "\001\005\034\356\346"}, {0x0482, "\057\034\357\235"}, {0x0483, "\026\034\357\363"}, {0x0484, "\026\034\007\372\154"}, {0x0485, "\026\034\365\202\361\213"}, {0x0486, "\026\034\373\306\361\213"}, {0x0488, "\057\034\363\254\007\357\235"}, {0x0489, "\057\034\370\367"}, {0x048C, "\001\010\034\057\361\314"}, {0x048D, "\001\005\034\057\361\314"}, {0x048E, "\001\010\034\356\331\360\047"}, {0x048F, "\001\005\034\356\331\360\047"}, {0x0490, "\001\010\034\355\256\357\165"}, {0x0491, "\001\005\034\355\256\357\165"}, {0x0492, "\001\010\034\355\256\233"}, {0x0493, "\001\005\034\355\256\233"}, {0x0494, "\001\010\034\355\256\122\355\141"}, {0x0495, "\001\005\034\355\256\122\355\141"}, {0x0496, "\001\010\034\355\206\355\104"}, {0x0497, "\001\005\034\355\206\355\104"}, {0x0498, "\001\010\034\355\371\276"}, {0x0499, "\001\005\034\355\371\276"}, {0x049A, "\001\010\034\241\357\212"}, {0x049B, "\001\005\034\241\355\104"}, {0x049C, "\001\010\034\241\247\257"}, {0x049D, "\001\005\034\241\247\257"}, {0x049E, "\001\010\034\241\233"}, {0x049F, "\001\005\034\241\233"}, {0x04A0, "\001\010\034\241\360\067"}, {0x04A1, "\001\005\034\241\360\067"}, {0x04A2, "\001\010\034\356\012\355\104"}, {0x04A3, "\001\005\034\356\012\355\104"}, {0x04A4, "\012\034\010\356\011"}, {0x04A5, "\012\034\005\356\011"}, {0x04A6, "\001\010\034\355\174\122\355\141"}, {0x04A7, "\001\005\034\355\174\122\355\141"}, {0x04A8, "\001\010\034\316\355\306"}, {0x04A9, "\001\005\034\316\355\306"}, {0x04AA, "\001\010\034\356\175\276"}, {0x04AB, "\001\005\034\356\175\276"}, {0x04AC, "\001\010\034\355\303\355\104"}, {0x04AD, "\001\005\034\355\303\355\104"}, {0x04AE, "\001\010\034\113\222"}, {0x04AF, "\001\005\034\113\222"}, {0x04B0, "\001\010\034\113\222\233"}, {0x04B1, "\001\005\034\113\222\233"}, {0x04B2, "\001\010\034\316\355\057"}, {0x04B3, "\001\005\034\316\355\057"}, {0x04B4, "\012\010\034\355\303\356\051"}, {0x04B5, "\012\005\034\355\303\356\051"}, {0x04B6, "\001\010\034\355\073\355\104"}, {0x04B7, "\001\005\034\355\073\355\104"}, {0x04B8, "\001\010\034\355\073\247\257"}, {0x04B9, "\001\005\034\355\073\247\257"}, {0x04BA, "\001\010\034\356\020"}, {0x04BB, "\001\005\034\356\020"}, {0x04BC, "\001\010\034\355\073\355\306"}, {0x04BD, "\001\005\034\355\073\355\306"}, {0x04BE, "\001\010\034\355\073\355\306\355\057"}, {0x04BF, "\001\005\034\355\073\355\306\355\057"}, {0x04C0, "\001\034\372\155"}, {0x04C1, "\001\010\034\355\206\214"}, {0x04C2, "\001\005\034\355\206\214"}, {0x04C3, "\001\010\034\241\122"}, {0x04C4, "\001\005\034\241\122"}, {0x04C5, "\001\010\034\356\327\355\104"}, {0x04C6, "\001\005\034\356\327\355\104"}, {0x04C7, "\001\010\034\356\012\122"}, {0x04C8, "\001\005\034\356\012\122"}, {0x04C9, "\001\010\034\103\355\225\355\104"}, {0x04CA, "\001\005\034\103\355\225\355\104"}, {0x04CB, "\001\010\034\355\073\360\375"}, {0x04CC, "\001\005\034\355\073\360\375"}, {0x04CD, "\001\010\034\356\330\355\104"}, {0x04CE, "\001\005\034\356\330\355\104"}, {0x04D0, "\001\010\034\063\214"}, {0x04D1, "\001\005\034\063\214"}, {0x04D2, "\001\010\034\063\166"}, {0x04D3, "\001\005\034\063\166"}, {0x04D4, "\001\010\034\360\025"}, {0x04D5, "\001\005\034\360\025"}, {0x04D6, "\001\010\034\355\262\214"}, {0x04D7, "\001\005\034\355\262\214"}, {0x04D8, "\001\010\034\356\043"}, {0x04D9, "\001\005\034\356\043"}, {0x04DA, "\001\010\034\356\043\166"}, {0x04DB, "\001\005\034\356\043\166"}, {0x04DC, "\001\010\034\355\206\166"}, {0x04DD, "\001\005\034\355\206\166"}, {0x04DE, "\001\010\034\355\371\166"}, {0x04DF, "\001\005\034\355\371\166"}, {0x04E0, "\001\010\034\356\167\355\306"}, {0x04E1, "\001\005\034\356\167\355\306"}, {0x04E2, "\001\010\034\103\175"}, {0x04E3, "\001\005\034\103\175"}, {0x04E4, "\001\010\034\103\166"}, {0x04E5, "\001\005\034\103\166"}, {0x04E6, "\001\010\034\064\166"}, {0x04E7, "\001\005\034\064\166"}, {0x04E8, "\001\010\034\064\233"}, {0x04E9, "\001\005\034\064\233"}, {0x04EA, "\001\010\034\064\233\166"}, {0x04EB, "\001\005\034\064\233\166"}, {0x04EC, "\001\010\034\220\166"}, {0x04ED, "\001\005\034\220\166"}, {0x04EE, "\001\010\034\113\175"}, {0x04EF, "\001\005\034\113\175"}, {0x04F0, "\001\010\034\113\166"}, {0x04F1, "\001\005\034\113\166"}, {0x04F2, "\001\010\034\113\070\021\062"}, {0x04F3, "\001\005\034\113\070\021\062"}, {0x04F4, "\001\010\034\355\073\166"}, {0x04F5, "\001\005\034\355\073\166"}, {0x04F8, "\001\010\034\357\062\166"}, {0x04F9, "\001\005\034\357\062\166"}, {0x0531, "\001\010\125\360\066"}, {0x0532, "\001\010\125\361\237"}, {0x0533, "\001\010\125\361\002"}, {0x0534, "\001\010\125\313"}, {0x0535, "\001\010\125\357\061"}, {0x0536, "\001\010\125\355\103"}, {0x0537, "\001\010\125\220"}, {0x0538, "\001\010\125\360\237"}, {0x0539, "\001\010\125\356\265"}, {0x053A, "\001\010\125\355\206"}, {0x053B, "\001\010\125\357\201"}, {0x053C, "\001\010\125\361\035"}, {0x053D, "\001\010\125\356\344"}, {0x053E, "\001\010\125\356\067"}, {0x053F, "\001\010\125\360\311"}, {0x0540, "\001\010\125\357\175"}, {0x0541, "\001\010\125\355\201"}, {0x0542, "\001\010\125\360\277"}, {0x0543, "\001\010\125\356\065"}, {0x0544, "\001\010\125\356\104"}, {0x0545, "\001\010\125\357\174"}, {0x0546, "\001\010\125\355\342"}, {0x0547, "\001\010\125\355\034"}, {0x0548, "\001\010\125\356\134"}, {0x0549, "\001\010\125\355\026"}, {0x054A, "\001\010\125\356\151"}, {0x054B, "\001\010\125\356\322"}, {0x054C, "\001\010\125\355\214"}, {0x054D, "\001\010\125\356\123"}, {0x054E, "\001\010\125\360\007"}, {0x054F, "\001\010\125\360\204"}, {0x0550, "\001\010\125\356\042"}, {0x0551, "\001\010\125\362\052"}, {0x0552, "\001\010\125\357\171"}, {0x0553, "\001\010\125\361\174"}, {0x0554, "\001\010\125\356\222"}, {0x0555, "\001\010\125\310"}, {0x0556, "\001\010\125\356\204"}, {0x0559, "\001\201\125\356\063\052"}, {0x055A, "\355\310\125"}, {0x055B, "\057\357\117\356\054"}, {0x055C, "\037\355\314\356\054"}, {0x055D, "\332\125"}, {0x055E, "\037\355\315\356\054"}, {0x055F, "\022\357\116\356\054"}, {0x0561, "\001\005\125\360\066"}, {0x0562, "\001\005\125\361\237"}, {0x0563, "\001\005\125\361\002"}, {0x0564, "\001\005\125\313"}, {0x0565, "\001\005\125\357\061"}, {0x0566, "\001\005\125\355\103"}, {0x0567, "\001\005\125\220"}, {0x0568, "\001\005\125\360\237"}, {0x0569, "\001\005\125\356\265"}, {0x056A, "\001\005\125\355\206"}, {0x056B, "\001\005\125\357\201"}, {0x056C, "\001\005\125\361\035"}, {0x056D, "\001\005\125\356\344"}, {0x056E, "\001\005\125\356\067"}, {0x056F, "\001\005\125\360\311"}, {0x0570, "\001\005\125\357\175"}, {0x0571, "\001\005\125\355\201"}, {0x0572, "\001\005\125\360\277"}, {0x0573, "\001\005\125\356\065"}, {0x0574, "\001\005\125\356\104"}, {0x0575, "\001\005\125\357\174"}, {0x0576, "\001\005\125\355\342"}, {0x0577, "\001\005\125\355\034"}, {0x0578, "\001\005\125\356\134"}, {0x0579, "\001\005\125\355\026"}, {0x057A, "\001\005\125\356\151"}, {0x057B, "\001\005\125\356\322"}, {0x057C, "\001\005\125\355\214"}, {0x057D, "\001\005\125\356\123"}, {0x057E, "\001\005\125\360\007"}, {0x057F, "\001\005\125\360\204"}, {0x0580, "\001\005\125\356\042"}, {0x0581, "\001\005\125\362\052"}, {0x0582, "\001\005\125\357\171"}, {0x0583, "\001\005\125\361\174"}, {0x0584, "\001\005\125\356\222"}, {0x0585, "\001\005\125\310"}, {0x0586, "\001\005\125\356\204"}, {0x0587, "\012\005\125\357\061\357\171"}, {0x0589, "\037\356\054"}, {0x058A, "\375\250\356\054"}, {0x0591, "\021\223\363\005"}, {0x0592, "\021\223\374\252"}, {0x0593, "\021\223\363\262"}, {0x0594, "\021\223\362\144\373\336"}, {0x0595, "\021\223\362\144\360\262"}, {0x0596, "\021\223\375\110"}, {0x0597, "\021\223\374\046"}, {0x0598, "\021\223\376\241"}, {0x0599, "\021\223\361\244"}, {0x059A, "\021\223\376\163"}, {0x059B, "\021\223\375\170"}, {0x059C, "\021\223\360\270"}, {0x059D, "\021\223\360\270\371\026"}, {0x059E, "\021\223\363\302\366\250"}, {0x059F, "\021\223\367\371\366\051"}, {0x05A0, "\021\223\375\104"}, {0x05A1, "\021\223\372\174\360\262"}, {0x05A3, "\021\223\360\123\367\103"}, {0x05A4, "\021\223\360\123\370\320"}, {0x05A5, "\021\223\371\061"}, {0x05A6, "\021\223\375\167\375\361"}, {0x05A7, "\021\223\365\201"}, {0x05A8, "\021\223\361\244"}, {0x05A9, "\021\223\375\111"}, {0x05AA, "\021\223\376\161\363\113\376\175"}, {0x05AB, "\021\223\372\100"}, {0x05AC, "\021\223\367\206"}, {0x05AD, "\021\223\365\244"}, {0x05AE, "\021\223\375\271"}, {0x05AF, "\274\370\300"}, {0x05B0, "\037\223\363\305"}, {0x05B1, "\037\223\357\167\374\251"}, {0x05B2, "\037\223\357\167\356\376"}, {0x05B3, "\037\223\357\167\357\302"}, {0x05B4, "\037\223\360\326"}, {0x05B5, "\037\223\375\275"}, {0x05B6, "\037\223\375\074"}, {0x05B7, "\037\223\356\376"}, {0x05B8, "\037\223\357\302"}, {0x05B9, "\037\223\360\331"}, {0x05BB, "\037\223\370\047"}, {0x05BC, "\037\223\355\013\113\357\234"}, {0x05BD, "\037\223\370\325"}, {0x05BE, "\355\236\137\370\272"}, {0x05BF, "\037\223\357\023"}, {0x05C0, "\355\236\137\372\165"}, {0x05C1, "\037\223\357\101"}, {0x05C2, "\037\223\374\322"}, {0x05C3, "\355\236\137\374\346\372\166"}, {0x05C4, "\057\223\037\346"}, {0x05D0, "\001\137\355\374"}, {0x05D1, "\001\137\357\074"}, {0x05D2, "\001\137\360\307"}, {0x05D3, "\001\137\356\321"}, {0x05D4, "\001\137\357\172"}, {0x05D5, "\001\137\355\053"}, {0x05D6, "\001\137\360\022"}, {0x05D7, "\001\137\367\165"}, {0x05D8, "\001\137\362\062"}, {0x05D9, "\001\137\362\130"}, {0x05DA, "\001\137\255\032"}, {0x05DB, "\001\137\255"}, {0x05DC, "\001\137\356\351"}, {0x05DD, "\001\137\356\361\032"}, {0x05DE, "\001\137\356\361"}, {0x05DF, "\001\137\357\253\032"}, {0x05E0, "\001\137\357\253"}, {0x05E1, "\001\137\361\305"}, {0x05E2, "\001\137\360\065"}, {0x05E3, "\001\137\355\174\032"}, {0x05E4, "\001\137\355\174"}, {0x05E5, "\001\137\357\370\032"}, {0x05E6, "\001\137\357\370"}, {0x05E7, "\001\137\373\370"}, {0x05E8, "\001\137\357\323"}, {0x05E9, "\001\137\355\312"}, {0x05EA, "\001\137\357\351"}, {0x05F0, "\012\137\357\060\070\355\053"}, {0x05F1, "\012\137\357\060\355\053\356\274"}, {0x05F2, "\012\137\357\060\070\362\130"}, {0x05F3, "\355\236\137\366\160"}, {0x05F4, "\355\236\137\366\157"}, {0x060C, "\332\004"}, {0x061B, "\356\106\004"}, {0x061F, "\037\355\315\004"}, {0x0621, "\001\004\156"}, {0x0622, "\001\004\100\356\024\013\040"}, {0x0623, "\001\004\100\156\013\040"}, {0x0624, "\001\004\355\053\156\013\040"}, {0x0625, "\001\004\100\156\043"}, {0x0626, "\001\004\056\156\013\040"}, {0x0627, "\001\004\100"}, {0x0628, "\001\004\326"}, {0x0629, "\001\004\234\356\356"}, {0x062A, "\001\004\234"}, {0x062B, "\001\004\355\062"}, {0x062C, "\001\004\115"}, {0x062D, "\001\004\111"}, {0x062E, "\001\004\171"}, {0x062F, "\001\004\355\320"}, {0x0630, "\001\004\356\323"}, {0x0631, "\001\004\345"}, {0x0632, "\001\004\360\021"}, {0x0633, "\001\004\246"}, {0x0634, "\001\004\250"}, {0x0635, "\001\004\377\010"}, {0x0636, "\001\004\352"}, {0x0637, "\001\004\355\050"}, {0x0638, "\001\004\355\370"}, {0x0639, "\001\004\355\031"}, {0x063A, "\001\004\355\065"}, {0x0640, "\361\361\004"}, {0x0641, "\001\004\353"}, {0x0642, "\001\004\355\041"}, {0x0643, "\001\004\255"}, {0x0644, "\001\004\207"}, {0x0645, "\001\004\047"}, {0x0646, "\001\004\216"}, {0x0647, "\001\004\232"}, {0x0648, "\001\004\355\053"}, {0x0649, "\001\004\100\160"}, {0x064A, "\001\004\056"}, {0x064B, "\356\200\004"}, {0x064C, "\357\124\004"}, {0x064D, "\357\220\004"}, {0x064E, "\356\177\004"}, {0x064F, "\356\161\004"}, {0x0650, "\356\217\004"}, {0x0651, "\355\156\004"}, {0x0652, "\357\040\004"}, {0x0653, "\356\024\004\013\040"}, {0x0654, "\156\004\013\040"}, {0x0655, "\156\004\043"}, {0x0660, "\024\355\032\333"}, {0x0661, "\024\355\032\107"}, {0x0662, "\024\355\032\127"}, {0x0663, "\024\355\032\136"}, {0x0664, "\024\355\032\221"}, {0x0665, "\024\355\032\231"}, {0x0666, "\024\355\032\256"}, {0x0667, "\024\355\032\253"}, {0x0668, "\024\355\032\227"}, {0x0669, "\024\355\032\260"}, {0x066A, "\022\355\061\355\247\004"}, {0x066B, "\355\047\360\225\004"}, {0x066C, "\355\047\357\235\004"}, {0x066D, "\355\017\044\231\355\120\004"}, {0x0670, "\001\004\100\013\040"}, {0x0671, "\001\004\100\360\010"}, {0x0672, "\001\004\100\156\361\142\013\040"}, {0x0673, "\001\004\100\156\361\142\043"}, {0x0674, "\001\004\156\356\300"}, {0x0675, "\001\004\100\156\356\300"}, {0x0676, "\001\004\355\053\156\356\300"}, {0x0677, "\001\004\113\156\356\300"}, {0x0678, "\001\004\056\156\356\300"}, {0x0679, "\001\004\356\263"}, {0x067A, "\001\004\356\264"}, {0x067B, "\001\004\356\145"}, {0x067C, "\001\004\234\304"}, {0x067D, "\001\004\234\136\252\013\040\323\015\050\101"}, {0x067E, "\001\004\356\241"}, {0x067F, "\001\004\356\260"}, {0x0680, "\001\004\356\146"}, {0x0681, "\001\004\111\156\013\040"}, {0x0682, "\001\004\111\127\252\362\317\360\001\355\311\357\134"}, {0x0683, "\001\004\356\232"}, {0x0684, "\001\004\356\166"}, {0x0685, "\001\004\111\136\252\013\040"}, {0x0686, "\001\004\356\126"}, {0x0687, "\001\004\356\257"}, {0x0688, "\001\004\357\130"}, {0x0689, "\001\004\355\320\304"}, {0x068A, "\001\004\355\320\037\043"}, {0x068B, "\001\004\355\320\037\043\020\176\375\103"}, {0x068C, "\001\004\357\123"}, {0x068D, "\001\004\357\127"}, {0x068E, "\001\004\357\146"}, {0x068F, "\001\004\355\320\136\252\013\040\323\015\050\101"}, {0x0690, "\001\004\355\320\221\252\013\040"}, {0x0691, "\001\004\357\321"}, {0x0692, "\001\004\345\176\355\027"}, {0x0693, "\001\004\345\304"}, {0x0694, "\001\004\345\037\043"}, {0x0695, "\001\004\345\176\355\027\043"}, {0x0696, "\001\004\345\037\043\020\037\013\040"}, {0x0697, "\001\004\345\127\252\013\040"}, {0x0698, "\001\004\357\211"}, {0x0699, "\001\004\345\221\252\013\040"}, {0x069A, "\001\004\246\037\043\020\037\013\040"}, {0x069B, "\001\004\246\136\252\355\241"}, {0x069C, "\001\004\246\136\252\355\241\020\136\252\013\040"}, {0x069D, "\001\004\355\007\127\252\355\241"}, {0x069E, "\001\004\355\007\136\252\013\040"}, {0x069F, "\001\004\355\050\136\252\013\040"}, {0x06A0, "\001\004\355\031\136\252\013\040"}, {0x06A1, "\001\004\353\272\037"}, {0x06A2, "\001\004\353\037\365\260"}, {0x06A3, "\001\004\353\037\043"}, {0x06A4, "\001\004\356\266"}, {0x06A5, "\001\004\353\136\252\355\241"}, {0x06A6, "\001\004\356\242"}, {0x06A7, "\001\004\355\041\037\013\040"}, {0x06A8, "\001\004\355\041\136\252\013\040"}, {0x06A9, "\001\004\356\220"}, {0x06AA, "\001\004\255\377\027"}, {0x06AB, "\001\004\255\304"}, {0x06AC, "\001\004\255\037\013\040"}, {0x06AD, "\001\004\355\340"}, {0x06AE, "\001\004\255\136\252\355\241"}, {0x06AF, "\001\004\355\324"}, {0x06B0, "\001\004\355\324\304"}, {0x06B1, "\001\004\356\230"}, {0x06B2, "\001\004\355\324\127\252\355\241"}, {0x06B3, "\001\004\366\243"}, {0x06B4, "\001\004\355\324\136\252\013\040"}, {0x06B5, "\001\004\207\176\355\027"}, {0x06B6, "\001\004\207\037\013\040"}, {0x06B7, "\001\004\207\136\252\013\040"}, {0x06B8, "\001\004\207\136\252\355\241"}, {0x06B9, "\001\004\216\037\043"}, {0x06BA, "\001\004\216\272\037"}, {0x06BB, "\001\004\371\317\355\216"}, {0x06BC, "\001\004\216\304"}, {0x06BD, "\001\004\216\136\252\013\040"}, {0x06BE, "\001\004\232\356\165"}, {0x06BF, "\001\004\356\126\037\013\040"}, {0x06C0, "\001\004\232\056\013\040"}, {0x06C1, "\001\004\232\356\017"}, {0x06C2, "\001\004\232\356\017\156\013\040"}, {0x06C3, "\356\356\356\017"}, {0x06C4, "\001\004\355\053\304"}, {0x06C5, "\001\004\355\207\356\013"}, {0x06C6, "\001\004\356\013"}, {0x06C7, "\001\004\113"}, {0x06C8, "\001\004\132"}, {0x06C9, "\001\004\355\207\355\153"}, {0x06CA, "\001\004\355\053\127\252\013\040"}, {0x06CB, "\001\004\357\056"}, {0x06CC, "\001\004\356\071\056"}, {0x06CD, "\001\004\056\356\251"}, {0x06CE, "\001\004\056\176\355\027"}, {0x06CF, "\001\004\355\053\037\013\040"}, {0x06D0, "\001\004\220"}, {0x06D1, "\001\004\056\136\252\355\241"}, {0x06D2, "\001\004\056\233"}, {0x06D3, "\001\004\056\233\156\013\040"}, {0x06D4, "\037\004"}, {0x06D5, "\001\004\130"}, {0x06D6, "\012\004\005\355\007\013\040\207\100\160"}, {0x06D7, "\012\004\005\355\041\013\040\207\100\160"}, {0x06D8, "\001\004\005\047\013\040\055"}, {0x06D9, "\001\004\005\100\207\013\040"}, {0x06DA, "\001\004\005\115\013\040"}, {0x06DB, "\136\252\013\040\004"}, {0x06DC, "\001\004\005\246\013\040"}, {0x06DD, "\116\007\363\017\004"}, {0x06DE, "\355\322\007\374\113\366\001\366\354\004"}, {0x06DF, "\333\362\365\013\040\004"}, {0x06E0, "\333\374\054\013\040\004"}, {0x06E1, "\372\163\366\324\007\171\272\037\013\040\004"}, {0x06E2, "\001\004\005\047\013\040\036"}, {0x06E3, "\001\004\005\246\043"}, {0x06E4, "\001\004\005\356\024\013\040"}, {0x06E5, "\001\004\005\355\053"}, {0x06E6, "\001\004\005\056"}, {0x06E7, "\001\004\005\056\013\040"}, {0x06E8, "\001\004\005\216\013\040"}, {0x06E9, "\057\007\373\276\004"}, {0x06EA, "\037\355\134\043\004"}, {0x06EB, "\037\355\134\013\040\004"}, {0x06EC, "\037\361\211\043\004"}, {0x06ED, "\001\004\005\047\043"}, {0x06F0, "\024\355\032\355\246\333"}, {0x06F1, "\024\355\032\355\246\107"}, {0x06F2, "\024\355\032\355\246\127"}, {0x06F3, "\024\355\032\355\246\136"}, {0x06F4, "\024\355\032\355\246\221"}, {0x06F5, "\024\355\032\355\246\231"}, {0x06F6, "\024\355\032\355\246\256"}, {0x06F7, "\024\355\032\355\246\253"}, {0x06F8, "\024\355\032\355\246\227"}, {0x06F9, "\024\355\032\355\246\260"}, {0x06FA, "\001\004\250\037\043"}, {0x06FB, "\001\004\352\037\043"}, {0x06FC, "\001\004\355\065\037\043"}, {0x06FD, "\057\004\361\322\357\002"}, {0x06FE, "\057\004\361\322\373\262\370\322"}, {0x0700, "\116\007\361\157\161"}, {0x0701, "\037\161\357\346"}, {0x0702, "\037\161\357\344"}, {0x0703, "\355\105\161\357\346"}, {0x0704, "\355\105\161\357\344"}, {0x0705, "\355\105\161\243"}, {0x0706, "\355\105\161\357\001\044\052"}, {0x0707, "\355\105\161\357\001\044\053"}, {0x0708, "\355\105\161\357\346\357\001\044\052"}, {0x0709, "\355\105\161\357\344\357\001\044\053"}, {0x070A, "\365\070\161"}, {0x070B, "\357\255\161\357\173"}, {0x070C, "\371\070\161\357\173"}, {0x070D, "\355\117\161\357\173"}, {0x070F, "\022\357\116\161"}, {0x0710, "\001\161\362\160"}, {0x0711, "\001\161\362\160\013\040"}, {0x0712, "\001\161\363\220"}, {0x0713, "\001\161\360\316"}, {0x0714, "\001\161\360\316\360\264"}, {0x0715, "\001\161\360\224"}, {0x0716, "\001\161\360\224\361\302\272\037"}, {0x0717, "\001\161\360\344"}, {0x0718, "\001\161\355\053"}, {0x0719, "\001\161\360\022"}, {0x071A, "\001\161\366\347"}, {0x071B, "\001\161\362\060"}, {0x071C, "\001\161\362\060\360\264"}, {0x071D, "\001\161\362\136"}, {0x071E, "\001\161\362\136\360\344"}, {0x071F, "\001\161\370\117"}, {0x0720, "\001\161\370\247"}, {0x0721, "\001\161\047"}, {0x0722, "\001\161\216"}, {0x0723, "\001\161\361\315"}, {0x0724, "\001\161\361\315\032"}, {0x0725, "\001\161\362\171"}, {0x0726, "\001\161\361\240"}, {0x0727, "\001\161\361\240\355\015"}, {0x0728, "\001\161\375\031"}, {0x0729, "\001\161\373\372"}, {0x072A, "\001\161\361\302"}, {0x072B, "\001\161\250"}, {0x072C, "\001\161\375\115"}, {0x0730, "\357\273\161\013\040"}, {0x0731, "\357\273\161\043"}, {0x0732, "\357\273\161\356\036"}, {0x0733, "\360\023\161\013\040"}, {0x0734, "\360\023\161\043"}, {0x0735, "\360\023\161\357\007"}, {0x0736, "\361\264\161\013\040"}, {0x0737, "\361\264\161\043"}, {0x0738, "\362\145\161\357\007\243"}, {0x0739, "\362\145\161\357\007\355\046"}, {0x073A, "\360\325\161\013\040"}, {0x073B, "\360\325\161\043"}, {0x073C, "\366\337\161\356\036"}, {0x073D, "\360\040\161\013\040"}, {0x073E, "\360\040\161\043"}, {0x073F, "\374\063\161"}, {0x0740, "\037\360\261\161"}, {0x0741, "\373\367\161"}, {0x0742, "\374\115\161"}, {0x0743, "\127\252\360\002\357\046\013\040"}, {0x0744, "\127\252\360\002\357\046\355\241"}, {0x0745, "\136\252\357\046\013\040"}, {0x0746, "\136\252\357\046\355\241"}, {0x0747, "\244\355\046\161\013\040"}, {0x0748, "\244\355\046\161\303"}, {0x0749, "\371\045\161"}, {0x074A, "\363\040\161"}, {0x0780, "\001\217\356\213"}, {0x0781, "\001\217\363\273"}, {0x0782, "\001\217\371\336"}, {0x0783, "\001\217\357\322"}, {0x0784, "\001\217\363\214"}, {0x0785, "\001\217\370\157"}, {0x0786, "\001\217\370\116"}, {0x0787, "\001\217\362\316"}, {0x0788, "\001\217\376\076"}, {0x0789, "\001\217\371\073"}, {0x078A, "\001\217\366\134"}, {0x078B, "\001\217\365\265"}, {0x078C, "\001\217\357\357"}, {0x078D, "\001\217\370\250"}, {0x078E, "\001\217\366\302"}, {0x078F, "\001\217\366\240"}, {0x0790, "\001\217\375\100"}, {0x0791, "\001\217\365\205"}, {0x0792, "\001\217\376\243"}, {0x0793, "\001\217\375\114"}, {0x0794, "\001\217\362\140"}, {0x0795, "\001\217\372\172"}, {0x0796, "\001\217\365\305"}, {0x0797, "\001\217\375\137"}, {0x0798, "\001\217\375\321"}, {0x0799, "\001\217\366\345"}, {0x079A, "\001\217\370\016"}, {0x079B, "\001\217\375\204"}, {0x079C, "\001\217\376\366"}, {0x079D, "\001\217\363\345"}, {0x079E, "\001\217\375\072"}, {0x079F, "\001\217\365\354"}, {0x07A0, "\001\217\355\200"}, {0x07A1, "\001\217\356\137"}, {0x07A2, "\001\217\363\022"}, {0x07A3, "\001\217\366\214"}, {0x07A4, "\001\217\374\031"}, {0x07A5, "\001\217\376\117"}, {0x07A6, "\217\362\275"}, {0x07A7, "\217\377\002"}, {0x07A8, "\217\367\176"}, {0x07A9, "\217\377\051"}, {0x07AA, "\217\372\130"}, {0x07AB, "\217\372\144"}, {0x07AC, "\217\377\025"}, {0x07AD, "\217\377\046"}, {0x07AE, "\217\372\074"}, {0x07AF, "\217\377\067"}, {0x07B0, "\217\357\040"}, {0x0901, "\022\106\356\125"}, {0x0902, "\022\106\355\224"}, {0x0903, "\022\106\355\245"}, {0x0905, "\001\106\063"}, {0x0906, "\001\106\325"}, {0x0907, "\001\106\103"}, {0x0908, "\001\106\317"}, {0x0909, "\001\106\113"}, {0x090A, "\001\106\344"}, {0x090B, "\001\106\170\206"}, {0x090C, "\001\106\212\206"}, {0x090D, "\001\106\220\355\361"}, {0x090E, "\001\106\220\355\225"}, {0x090F, "\001\106\220"}, {0x0910, "\001\106\311"}, {0x0911, "\001\106\064\355\361"}, {0x0912, "\001\106\064\355\225"}, {0x0913, "\001\106\310"}, {0x0914, "\001\106\335"}, {0x0915, "\001\106\241"}, {0x0916, "\001\106\355\056"}, {0x0917, "\001\106\355\021"}, {0x0918, "\001\106\355\110"}, {0x0919, "\001\106\355\070"}, {0x091A, "\001\106\355\026"}, {0x091B, "\001\106\355\242"}, {0x091C, "\001\106\355\106"}, {0x091D, "\001\106\355\253"}, {0x091E, "\001\106\355\203"}, {0x091F, "\001\106\355\102"}, {0x0920, "\001\106\355\131"}, {0x0921, "\001\106\355\122"}, {0x0922, "\001\106\355\162"}, {0x0923, "\001\106\355\143"}, {0x0924, "\001\106\313"}, {0x0925, "\001\106\355\074"}, {0x0926, "\001\106\355\004"}, {0x0927, "\001\106\355\164"}, {0x0928, "\001\106\355\002"}, {0x0929, "\001\106\361\121"}, {0x092A, "\001\106\331"}, {0x092B, "\001\106\355\126"}, {0x092C, "\001\106\355\054"}, {0x092D, "\001\106\355\155"}, {0x092E, "\001\106\301"}, {0x092F, "\001\106\307"}, {0x0930, "\001\106\324"}, {0x0931, "\001\106\355\214"}, {0x0932, "\001\106\033"}, {0x0933, "\001\106\355\265"}, {0x0934, "\001\106\357\232"}, {0x0935, "\001\106\355\243"}, {0x0936, "\001\106\355\154"}, {0x0937, "\001\106\355\034"}, {0x0938, "\001\106\355\006"}, {0x0939, "\001\106\316"}, {0x093C, "\022\106\356\231"}, {0x093D, "\022\106\357\071"}, {0x093E, "\042\026\106\325"}, {0x093F, "\042\026\106\103"}, {0x0940, "\042\026\106\317"}, {0x0941, "\042\026\106\113"}, {0x0942, "\042\026\106\344"}, {0x0943, "\042\026\106\170\206"}, {0x0944, "\042\026\106\355\116\206"}, {0x0945, "\042\026\106\220\355\361"}, {0x0946, "\042\026\106\220\355\225"}, {0x0947, "\042\026\106\220"}, {0x0948, "\042\026\106\311"}, {0x0949, "\042\026\106\064\355\361"}, {0x094A, "\042\026\106\064\355\225"}, {0x094B, "\042\026\106\310"}, {0x094C, "\042\026\106\335"}, {0x094D, "\022\106\355\244"}, {0x0950, "\356\370\106"}, {0x0951, "\057\357\117\106\372\131"}, {0x0952, "\057\357\117\106\362\341"}, {0x0953, "\021\067\106"}, {0x0954, "\021\062\106"}, {0x0958, "\001\106\356\247"}, {0x0959, "\001\106\361\001"}, {0x095A, "\001\106\360\301"}, {0x095B, "\001\106\355\103"}, {0x095C, "\001\106\365\213"}, {0x095D, "\001\106\357\307"}, {0x095E, "\001\106\355\227"}, {0x095F, "\001\106\360\017"}, {0x0960, "\001\106\355\116\206"}, {0x0961, "\001\106\355\210\206"}, {0x0962, "\042\026\106\212\206"}, {0x0963, "\042\026\106\355\210\206"}, {0x0964, "\360\166\106"}, {0x0965, "\070\360\166\106"}, {0x0966, "\024\106\333"}, {0x0967, "\024\106\107"}, {0x0968, "\024\106\127"}, {0x0969, "\024\106\136"}, {0x096A, "\024\106\221"}, {0x096B, "\024\106\231"}, {0x096C, "\024\106\256"}, {0x096D, "\024\106\253"}, {0x096E, "\024\106\227"}, {0x096F, "\024\106\260"}, {0x0970, "\022\106\357\116"}, {0x0981, "\022\121\356\125"}, {0x0982, "\022\121\355\224"}, {0x0983, "\022\121\355\245"}, {0x0985, "\001\121\063"}, {0x0986, "\001\121\325"}, {0x0987, "\001\121\103"}, {0x0988, "\001\121\317"}, {0x0989, "\001\121\113"}, {0x098A, "\001\121\344"}, {0x098B, "\001\121\170\206"}, {0x098C, "\001\121\212\206"}, {0x098F, "\001\121\220"}, {0x0990, "\001\121\311"}, {0x0993, "\001\121\310"}, {0x0994, "\001\121\335"}, {0x0995, "\001\121\241"}, {0x0996, "\001\121\355\056"}, {0x0997, "\001\121\355\021"}, {0x0998, "\001\121\355\110"}, {0x0999, "\001\121\355\070"}, {0x099A, "\001\121\355\026"}, {0x099B, "\001\121\355\242"}, {0x099C, "\001\121\355\106"}, {0x099D, "\001\121\355\253"}, {0x099E, "\001\121\355\203"}, {0x099F, "\001\121\355\102"}, {0x09A0, "\001\121\355\131"}, {0x09A1, "\001\121\355\122"}, {0x09A2, "\001\121\355\162"}, {0x09A3, "\001\121\355\143"}, {0x09A4, "\001\121\313"}, {0x09A5, "\001\121\355\074"}, {0x09A6, "\001\121\355\004"}, {0x09A7, "\001\121\355\164"}, {0x09A8, "\001\121\355\002"}, {0x09AA, "\001\121\331"}, {0x09AB, "\001\121\355\126"}, {0x09AC, "\001\121\355\054"}, {0x09AD, "\001\121\355\155"}, {0x09AE, "\001\121\301"}, {0x09AF, "\001\121\307"}, {0x09B0, "\001\121\324"}, {0x09B2, "\001\121\033"}, {0x09B6, "\001\121\355\154"}, {0x09B7, "\001\121\355\034"}, {0x09B8, "\001\121\355\006"}, {0x09B9, "\001\121\316"}, {0x09BC, "\022\121\356\231"}, {0x09BE, "\042\026\121\325"}, {0x09BF, "\042\026\121\103"}, {0x09C0, "\042\026\121\317"}, {0x09C1, "\042\026\121\113"}, {0x09C2, "\042\026\121\344"}, {0x09C3, "\042\026\121\170\206"}, {0x09C4, "\042\026\121\355\116\206"}, {0x09C7, "\042\026\121\220"}, {0x09C8, "\042\026\121\311"}, {0x09CB, "\042\026\121\310"}, {0x09CC, "\042\026\121\335"}, {0x09CD, "\022\121\355\244"}, {0x09D7, "\057\007\355\267\121\335"}, {0x09DC, "\001\121\355\214"}, {0x09DD, "\001\121\357\307"}, {0x09DF, "\001\121\360\017"}, {0x09E0, "\001\121\355\116\206"}, {0x09E1, "\001\121\355\210\206"}, {0x09E2, "\042\026\121\212\206"}, {0x09E3, "\042\026\121\355\210\206"}, {0x09E6, "\024\121\333"}, {0x09E7, "\024\121\107"}, {0x09E8, "\024\121\127"}, {0x09E9, "\024\121\136"}, {0x09EA, "\024\121\221"}, {0x09EB, "\024\121\231"}, {0x09EC, "\024\121\256"}, {0x09ED, "\024\121\253"}, {0x09EE, "\024\121\227"}, {0x09EF, "\024\121\260"}, {0x09F0, "\001\121\324\165\247\355\046\371\065"}, {0x09F1, "\001\121\324\165\247\355\046\303"}, {0x09F2, "\057\121\357\320"}, {0x09F3, "\022\121\357\320"}, {0x09F4, "\356\105\355\274\121\107"}, {0x09F5, "\356\105\355\274\121\127"}, {0x09F6, "\356\105\355\274\121\136"}, {0x09F7, "\356\105\355\274\121\221"}, {0x09F8, "\356\105\355\274\121\360\227\355\022\107"}, {0x09F9, "\360\227\355\274\121\356\045"}, {0x09FA, "\362\164\121"}, {0x0A02, "\022\150\363\135"}, {0x0A05, "\001\150\063"}, {0x0A06, "\001\150\325"}, {0x0A07, "\001\150\103"}, {0x0A08, "\001\150\317"}, {0x0A09, "\001\150\113"}, {0x0A0A, "\001\150\344"}, {0x0A0F, "\001\150\355\202"}, {0x0A10, "\001\150\311"}, {0x0A13, "\001\150\310"}, {0x0A14, "\001\150\335"}, {0x0A15, "\001\150\241"}, {0x0A16, "\001\150\355\056"}, {0x0A17, "\001\150\355\021"}, {0x0A18, "\001\150\355\110"}, {0x0A19, "\001\150\355\070"}, {0x0A1A, "\001\150\355\026"}, {0x0A1B, "\001\150\355\242"}, {0x0A1C, "\001\150\355\106"}, {0x0A1D, "\001\150\375\223"}, {0x0A1E, "\001\150\355\203"}, {0x0A1F, "\001\150\355\102"}, {0x0A20, "\001\150\355\131"}, {0x0A21, "\001\150\355\122"}, {0x0A22, "\001\150\355\162"}, {0x0A23, "\001\150\355\143"}, {0x0A24, "\001\150\313"}, {0x0A25, "\001\150\355\074"}, {0x0A26, "\001\150\355\004"}, {0x0A27, "\001\150\355\164"}, {0x0A28, "\001\150\355\002"}, {0x0A2A, "\001\150\331"}, {0x0A2B, "\001\150\355\126"}, {0x0A2C, "\001\150\355\054"}, {0x0A2D, "\001\150\355\155"}, {0x0A2E, "\001\150\301"}, {0x0A2F, "\001\150\307"}, {0x0A30, "\001\150\324"}, {0x0A32, "\001\150\033"}, {0x0A33, "\001\150\355\265"}, {0x0A35, "\001\150\355\243"}, {0x0A36, "\001\150\355\154"}, {0x0A38, "\001\150\355\006"}, {0x0A39, "\001\150\316"}, {0x0A3C, "\022\150\356\231"}, {0x0A3E, "\042\026\150\325"}, {0x0A3F, "\042\026\150\103"}, {0x0A40, "\042\026\150\317"}, {0x0A41, "\042\026\150\113"}, {0x0A42, "\042\026\150\344"}, {0x0A47, "\042\026\150\355\202"}, {0x0A48, "\042\026\150\311"}, {0x0A4B, "\042\026\150\310"}, {0x0A4C, "\042\026\150\335"}, {0x0A4D, "\022\150\355\244"}, {0x0A59, "\001\150\361\001"}, {0x0A5A, "\001\150\360\301"}, {0x0A5B, "\001\150\355\103"}, {0x0A5C, "\001\150\355\214"}, {0x0A5E, "\001\150\355\227"}, {0x0A66, "\024\150\333"}, {0x0A67, "\024\150\107"}, {0x0A68, "\024\150\127"}, {0x0A69, "\024\150\136"}, {0x0A6A, "\024\150\221"}, {0x0A6B, "\024\150\231"}, {0x0A6C, "\024\150\256"}, {0x0A6D, "\024\150\253"}, {0x0A6E, "\024\150\227"}, {0x0A6F, "\024\150\260"}, {0x0A70, "\375\214\150"}, {0x0A71, "\362\305\150"}, {0x0A72, "\367\233\150"}, {0x0A73, "\372\135\150"}, {0x0A74, "\360\233\372\104\150"}, {0x0A81, "\022\144\356\125"}, {0x0A82, "\022\144\355\224"}, {0x0A83, "\022\144\355\245"}, {0x0A85, "\001\144\063"}, {0x0A86, "\001\144\325"}, {0x0A87, "\001\144\103"}, {0x0A88, "\001\144\317"}, {0x0A89, "\001\144\113"}, {0x0A8A, "\001\144\344"}, {0x0A8B, "\001\144\170\206"}, {0x0A8D, "\042\144\220\355\361"}, {0x0A8F, "\001\144\220"}, {0x0A90, "\001\144\311"}, {0x0A91, "\042\144\064\355\361"}, {0x0A93, "\001\144\310"}, {0x0A94, "\001\144\335"}, {0x0A95, "\001\144\241"}, {0x0A96, "\001\144\355\056"}, {0x0A97, "\001\144\355\021"}, {0x0A98, "\001\144\355\110"}, {0x0A99, "\001\144\355\070"}, {0x0A9A, "\001\144\355\026"}, {0x0A9B, "\001\144\355\242"}, {0x0A9C, "\001\144\355\106"}, {0x0A9D, "\001\144\355\253"}, {0x0A9E, "\001\144\355\203"}, {0x0A9F, "\001\144\355\102"}, {0x0AA0, "\001\144\355\131"}, {0x0AA1, "\001\144\355\122"}, {0x0AA2, "\001\144\355\162"}, {0x0AA3, "\001\144\355\143"}, {0x0AA4, "\001\144\313"}, {0x0AA5, "\001\144\355\074"}, {0x0AA6, "\001\144\355\004"}, {0x0AA7, "\001\144\355\164"}, {0x0AA8, "\001\144\355\002"}, {0x0AAA, "\001\144\331"}, {0x0AAB, "\001\144\355\126"}, {0x0AAC, "\001\144\355\054"}, {0x0AAD, "\001\144\355\155"}, {0x0AAE, "\001\144\301"}, {0x0AAF, "\001\144\307"}, {0x0AB0, "\001\144\324"}, {0x0AB2, "\001\144\033"}, {0x0AB3, "\001\144\355\265"}, {0x0AB5, "\001\144\355\243"}, {0x0AB6, "\001\144\355\154"}, {0x0AB7, "\001\144\355\034"}, {0x0AB8, "\001\144\355\006"}, {0x0AB9, "\001\144\316"}, {0x0ABC, "\022\144\356\231"}, {0x0ABD, "\022\144\357\071"}, {0x0ABE, "\042\026\144\325"}, {0x0ABF, "\042\026\144\103"}, {0x0AC0, "\042\026\144\317"}, {0x0AC1, "\042\026\144\113"}, {0x0AC2, "\042\026\144\344"}, {0x0AC3, "\042\026\144\170\206"}, {0x0AC4, "\042\026\144\355\116\206"}, {0x0AC5, "\042\026\144\220\355\361"}, {0x0AC7, "\042\026\144\220"}, {0x0AC8, "\042\026\144\311"}, {0x0AC9, "\042\026\144\064\355\361"}, {0x0ACB, "\042\026\144\310"}, {0x0ACC, "\042\026\144\335"}, {0x0ACD, "\022\144\355\244"}, {0x0AD0, "\356\370\144"}, {0x0AE0, "\001\144\355\116\206"}, {0x0AE6, "\363\313\144\333"}, {0x0AE7, "\024\144\107"}, {0x0AE8, "\024\144\127"}, {0x0AE9, "\024\144\136"}, {0x0AEA, "\024\144\221"}, {0x0AEB, "\024\144\231"}, {0x0AEC, "\024\144\256"}, {0x0AED, "\024\144\253"}, {0x0AEE, "\024\144\227"}, {0x0AEF, "\024\144\260"}, {0x0B01, "\022\142\356\125"}, {0x0B02, "\022\142\355\224"}, {0x0B03, "\022\142\355\245"}, {0x0B05, "\001\142\063"}, {0x0B06, "\001\142\325"}, {0x0B07, "\001\142\103"}, {0x0B08, "\001\142\317"}, {0x0B09, "\001\142\113"}, {0x0B0A, "\001\142\344"}, {0x0B0B, "\001\142\170\206"}, {0x0B0C, "\001\142\212\206"}, {0x0B0F, "\001\142\220"}, {0x0B10, "\001\142\311"}, {0x0B13, "\001\142\310"}, {0x0B14, "\001\142\335"}, {0x0B15, "\001\142\241"}, {0x0B16, "\001\142\355\056"}, {0x0B17, "\001\142\355\021"}, {0x0B18, "\001\142\355\110"}, {0x0B19, "\001\142\355\070"}, {0x0B1A, "\001\142\355\026"}, {0x0B1B, "\001\142\355\242"}, {0x0B1C, "\001\142\355\106"}, {0x0B1D, "\001\142\355\253"}, {0x0B1E, "\001\142\355\203"}, {0x0B1F, "\001\142\355\102"}, {0x0B20, "\001\142\355\131"}, {0x0B21, "\001\142\355\122"}, {0x0B22, "\001\142\355\162"}, {0x0B23, "\001\142\355\143"}, {0x0B24, "\001\142\313"}, {0x0B25, "\001\142\355\074"}, {0x0B26, "\001\142\355\004"}, {0x0B27, "\001\142\355\164"}, {0x0B28, "\001\142\355\002"}, {0x0B2A, "\001\142\331"}, {0x0B2B, "\001\142\355\126"}, {0x0B2C, "\001\142\355\054"}, {0x0B2D, "\001\142\355\155"}, {0x0B2E, "\001\142\301"}, {0x0B2F, "\001\142\307"}, {0x0B30, "\001\142\324"}, {0x0B32, "\001\142\033"}, {0x0B33, "\001\142\355\265"}, {0x0B35, "\264"}, {0x0B36, "\001\142\355\154"}, {0x0B37, "\001\142\356\254"}, {0x0B38, "\001\142\355\006"}, {0x0B39, "\001\142\316"}, {0x0B3C, "\022\142\356\231"}, {0x0B3D, "\022\142\357\071"}, {0x0B3E, "\042\026\142\325"}, {0x0B3F, "\042\026\142\103"}, {0x0B40, "\042\026\142\317"}, {0x0B41, "\042\026\142\113"}, {0x0B42, "\042\026\142\344"}, {0x0B43, "\042\026\142\170\206"}, {0x0B47, "\042\026\142\220"}, {0x0B48, "\042\026\142\311"}, {0x0B4B, "\042\026\142\310"}, {0x0B4C, "\042\026\142\335"}, {0x0B4D, "\022\142\355\244"}, {0x0B56, "\057\007\355\267\142\311"}, {0x0B57, "\057\007\355\267\142\335"}, {0x0B5C, "\001\142\355\214"}, {0x0B5D, "\001\142\357\307"}, {0x0B5F, "\001\142\360\017"}, {0x0B60, "\001\142\355\116\206"}, {0x0B61, "\001\142\355\210\206"}, {0x0B66, "\024\142\333"}, {0x0B67, "\024\142\107"}, {0x0B68, "\024\142\127"}, {0x0B69, "\024\142\136"}, {0x0B6A, "\024\142\221"}, {0x0B6B, "\024\142\231"}, {0x0B6C, "\024\142\256"}, {0x0B6D, "\024\142\253"}, {0x0B6E, "\024\142\227"}, {0x0B6F, "\024\142\260"}, {0x0B70, "\362\164\142"}, {0x0B82, "\022\172\355\224"}, {0x0B83, "\022\172\355\245"}, {0x0B85, "\001\172\063"}, {0x0B86, "\001\172\325"}, {0x0B87, "\001\172\103"}, {0x0B88, "\001\172\317"}, {0x0B89, "\001\172\113"}, {0x0B8A, "\001\172\344"}, {0x0B8E, "\001\172\220"}, {0x0B8F, "\001\172\355\202"}, {0x0B90, "\001\172\311"}, {0x0B92, "\001\172\064"}, {0x0B93, "\001\172\310"}, {0x0B94, "\001\172\335"}, {0x0B95, "\001\172\241"}, {0x0B99, "\001\172\355\070"}, {0x0B9A, "\001\172\355\026"}, {0x0B9C, "\001\172\355\106"}, {0x0B9E, "\001\172\355\203"}, {0x0B9F, "\001\172\355\102"}, {0x0BA3, "\001\172\355\143"}, {0x0BA4, "\001\172\313"}, {0x0BA8, "\001\172\355\002"}, {0x0BA9, "\001\172\361\121"}, {0x0BAA, "\001\172\331"}, {0x0BAE, "\001\172\301"}, {0x0BAF, "\001\172\307"}, {0x0BB0, "\001\172\324"}, {0x0BB1, "\001\172\355\214"}, {0x0BB2, "\001\172\033"}, {0x0BB3, "\001\172\355\265"}, {0x0BB4, "\001\172\357\232"}, {0x0BB5, "\001\172\355\243"}, {0x0BB7, "\001\172\356\254"}, {0x0BB8, "\001\172\355\006"}, {0x0BB9, "\001\172\316"}, {0x0BBE, "\042\026\172\325"}, {0x0BBF, "\042\026\172\103"}, {0x0BC0, "\042\026\172\317"}, {0x0BC1, "\042\026\172\113"}, {0x0BC2, "\042\026\172\344"}, {0x0BC6, "\042\026\172\220"}, {0x0BC7, "\042\026\172\355\202"}, {0x0BC8, "\042\026\172\311"}, {0x0BCA, "\042\026\172\064"}, {0x0BCB, "\042\026\172\310"}, {0x0BCC, "\042\026\172\335"}, {0x0BCD, "\022\172\355\244"}, {0x0BD7, "\057\007\355\267\172\335"}, {0x0BE6, "\264"}, {0x0BE7, "\024\172\107"}, {0x0BE8, "\024\172\127"}, {0x0BE9, "\024\172\136"}, {0x0BEA, "\024\172\221"}, {0x0BEB, "\024\172\231"}, {0x0BEC, "\024\172\256"}, {0x0BED, "\024\172\253"}, {0x0BEE, "\024\172\227"}, {0x0BEF, "\024\172\260"}, {0x0BF0, "\211\172\355\036"}, {0x0BF1, "\211\172\355\247"}, {0x0BF2, "\211\172\355\273"}, {0x0C01, "\022\141\356\125"}, {0x0C02, "\022\141\355\224"}, {0x0C03, "\022\141\355\245"}, {0x0C05, "\001\141\063"}, {0x0C06, "\001\141\325"}, {0x0C07, "\001\141\103"}, {0x0C08, "\001\141\317"}, {0x0C09, "\001\141\113"}, {0x0C0A, "\001\141\344"}, {0x0C0B, "\001\141\170\206"}, {0x0C0C, "\001\141\212\206"}, {0x0C0E, "\001\141\220"}, {0x0C0F, "\001\141\355\202"}, {0x0C10, "\001\141\311"}, {0x0C12, "\001\141\064"}, {0x0C13, "\001\141\310"}, {0x0C14, "\001\141\335"}, {0x0C15, "\001\141\241"}, {0x0C16, "\001\141\355\056"}, {0x0C17, "\001\141\355\021"}, {0x0C18, "\001\141\355\110"}, {0x0C19, "\001\141\355\070"}, {0x0C1A, "\001\141\355\026"}, {0x0C1B, "\001\141\355\242"}, {0x0C1C, "\001\141\355\106"}, {0x0C1D, "\001\141\355\253"}, {0x0C1E, "\001\141\355\203"}, {0x0C1F, "\001\141\355\102"}, {0x0C20, "\001\141\355\131"}, {0x0C21, "\001\141\355\122"}, {0x0C22, "\001\141\355\162"}, {0x0C23, "\001\141\355\143"}, {0x0C24, "\001\141\313"}, {0x0C25, "\001\141\355\074"}, {0x0C26, "\001\141\355\004"}, {0x0C27, "\001\141\355\164"}, {0x0C28, "\001\141\355\002"}, {0x0C2A, "\001\141\331"}, {0x0C2B, "\001\141\355\126"}, {0x0C2C, "\001\141\355\054"}, {0x0C2D, "\001\141\355\155"}, {0x0C2E, "\001\141\301"}, {0x0C2F, "\001\141\307"}, {0x0C30, "\001\141\324"}, {0x0C31, "\001\141\355\214"}, {0x0C32, "\001\141\033"}, {0x0C33, "\001\141\355\265"}, {0x0C35, "\001\141\355\243"}, {0x0C36, "\001\141\355\154"}, {0x0C37, "\001\141\355\034"}, {0x0C38, "\001\141\355\006"}, {0x0C39, "\001\141\316"}, {0x0C3E, "\042\026\141\325"}, {0x0C3F, "\042\026\141\103"}, {0x0C40, "\042\026\141\317"}, {0x0C41, "\042\026\141\113"}, {0x0C42, "\042\026\141\344"}, {0x0C43, "\042\026\141\170\206"}, {0x0C44, "\042\026\141\355\116\206"}, {0x0C46, "\042\026\141\130"}, {0x0C47, "\042\026\141\355\202"}, {0x0C48, "\042\026\141\311"}, {0x0C4A, "\042\026\141\064"}, {0x0C4B, "\042\026\141\310"}, {0x0C4C, "\042\026\141\335"}, {0x0C4D, "\022\141\355\244"}, {0x0C55, "\057\007\355\267\141"}, {0x0C56, "\057\007\355\267\141\311"}, {0x0C60, "\001\141\355\116\206"}, {0x0C61, "\001\141\355\210\206"}, {0x0C66, "\024\141\333"}, {0x0C67, "\024\141\107"}, {0x0C68, "\024\141\127"}, {0x0C69, "\024\141\136"}, {0x0C6A, "\024\141\221"}, {0x0C6B, "\024\141\231"}, {0x0C6C, "\024\141\256"}, {0x0C6D, "\024\141\253"}, {0x0C6E, "\024\141\227"}, {0x0C6F, "\024\141\260"}, {0x0C82, "\022\140\355\224"}, {0x0C83, "\022\140\355\245"}, {0x0C85, "\001\140\063"}, {0x0C86, "\001\140\325"}, {0x0C87, "\001\140\103"}, {0x0C88, "\001\140\317"}, {0x0C89, "\001\140\113"}, {0x0C8A, "\001\140\344"}, {0x0C8B, "\001\140\170\206"}, {0x0C8C, "\001\140\212\206"}, {0x0C8E, "\001\140\220"}, {0x0C8F, "\001\140\355\202"}, {0x0C90, "\001\140\311"}, {0x0C92, "\001\140\064"}, {0x0C93, "\001\140\310"}, {0x0C94, "\001\140\335"}, {0x0C95, "\001\140\241"}, {0x0C96, "\001\140\355\056"}, {0x0C97, "\001\140\355\021"}, {0x0C98, "\001\140\355\110"}, {0x0C99, "\001\140\355\070"}, {0x0C9A, "\001\140\355\026"}, {0x0C9B, "\001\140\355\242"}, {0x0C9C, "\001\140\355\106"}, {0x0C9D, "\001\140\355\253"}, {0x0C9E, "\001\140\355\203"}, {0x0C9F, "\001\140\355\102"}, {0x0CA0, "\001\140\355\131"}, {0x0CA1, "\001\140\355\122"}, {0x0CA2, "\001\140\355\162"}, {0x0CA3, "\001\140\355\143"}, {0x0CA4, "\001\140\313"}, {0x0CA5, "\001\140\355\074"}, {0x0CA6, "\001\140\355\004"}, {0x0CA7, "\001\140\355\164"}, {0x0CA8, "\001\140\355\002"}, {0x0CAA, "\001\140\331"}, {0x0CAB, "\001\140\355\126"}, {0x0CAC, "\001\140\355\054"}, {0x0CAD, "\001\140\355\155"}, {0x0CAE, "\001\140\301"}, {0x0CAF, "\001\140\307"}, {0x0CB0, "\001\140\324"}, {0x0CB1, "\001\140\355\214"}, {0x0CB2, "\001\140\033"}, {0x0CB3, "\001\140\355\265"}, {0x0CB5, "\001\140\355\243"}, {0x0CB6, "\001\140\355\154"}, {0x0CB7, "\001\140\355\034"}, {0x0CB8, "\001\140\355\006"}, {0x0CB9, "\001\140\316"}, {0x0CBE, "\042\026\140\325"}, {0x0CBF, "\042\026\140\103"}, {0x0CC0, "\042\026\140\317"}, {0x0CC1, "\042\026\140\113"}, {0x0CC2, "\042\026\140\344"}, {0x0CC3, "\042\026\140\170\206"}, {0x0CC4, "\042\026\140\355\116\206"}, {0x0CC6, "\042\026\140\220"}, {0x0CC7, "\042\026\140\355\202"}, {0x0CC8, "\042\026\140\311"}, {0x0CCA, "\042\026\140\064"}, {0x0CCB, "\042\026\140\310"}, {0x0CCC, "\042\026\140\335"}, {0x0CCD, "\022\140\355\244"}, {0x0CD5, "\057\007\355\267\140"}, {0x0CD6, "\057\007\355\267\140\311"}, {0x0CDE, "\001\140\355\227"}, {0x0CE0, "\001\140\355\116\206"}, {0x0CE1, "\001\140\355\210\206"}, {0x0CE6, "\024\140\333"}, {0x0CE7, "\024\140\107"}, {0x0CE8, "\024\140\127"}, {0x0CE9, "\024\140\136"}, {0x0CEA, "\024\140\221"}, {0x0CEB, "\024\140\231"}, {0x0CEC, "\024\140\256"}, {0x0CED, "\024\140\253"}, {0x0CEE, "\024\140\227"}, {0x0CEF, "\024\140\260"}, {0x0D02, "\022\145\355\224"}, {0x0D03, "\022\145\355\245"}, {0x0D05, "\001\145\063"}, {0x0D06, "\001\145\325"}, {0x0D07, "\001\145\103"}, {0x0D08, "\001\145\317"}, {0x0D09, "\001\145\113"}, {0x0D0A, "\001\145\344"}, {0x0D0B, "\001\145\170\206"}, {0x0D0C, "\001\145\212\206"}, {0x0D0E, "\001\145\220"}, {0x0D0F, "\001\145\355\202"}, {0x0D10, "\001\145\311"}, {0x0D12, "\001\145\064"}, {0x0D13, "\001\145\310"}, {0x0D14, "\001\145\335"}, {0x0D15, "\001\145\241"}, {0x0D16, "\001\145\355\056"}, {0x0D17, "\001\145\355\021"}, {0x0D18, "\001\145\355\110"}, {0x0D19, "\001\145\355\070"}, {0x0D1A, "\001\145\355\026"}, {0x0D1B, "\001\145\355\242"}, {0x0D1C, "\001\145\355\106"}, {0x0D1D, "\001\145\355\253"}, {0x0D1E, "\001\145\355\203"}, {0x0D1F, "\001\145\355\102"}, {0x0D20, "\001\145\355\131"}, {0x0D21, "\001\145\355\122"}, {0x0D22, "\001\145\355\162"}, {0x0D23, "\001\145\355\143"}, {0x0D24, "\001\145\313"}, {0x0D25, "\001\145\355\074"}, {0x0D26, "\001\145\355\004"}, {0x0D27, "\001\145\355\164"}, {0x0D28, "\001\145\355\002"}, {0x0D2A, "\001\145\331"}, {0x0D2B, "\001\145\355\126"}, {0x0D2C, "\001\145\355\054"}, {0x0D2D, "\001\145\355\155"}, {0x0D2E, "\001\145\301"}, {0x0D2F, "\001\145\307"}, {0x0D30, "\001\145\324"}, {0x0D31, "\001\145\355\214"}, {0x0D32, "\001\145\033"}, {0x0D33, "\001\145\355\265"}, {0x0D34, "\001\145\357\232"}, {0x0D35, "\001\145\355\243"}, {0x0D36, "\001\145\355\154"}, {0x0D37, "\001\145\355\034"}, {0x0D38, "\001\145\355\006"}, {0x0D39, "\001\145\316"}, {0x0D3E, "\042\026\145\325"}, {0x0D3F, "\042\026\145\103"}, {0x0D40, "\042\026\145\317"}, {0x0D41, "\042\026\145\113"}, {0x0D42, "\042\026\145\344"}, {0x0D43, "\042\026\145\170\206"}, {0x0D46, "\042\026\145\220"}, {0x0D47, "\042\026\145\355\202"}, {0x0D48, "\042\026\145\311"}, {0x0D49, "\264"}, {0x0D4A, "\042\026\145\064"}, {0x0D4B, "\042\026\145\310"}, {0x0D4C, "\042\026\145\335"}, {0x0D4D, "\022\145\355\244"}, {0x0D57, "\057\007\355\267\145\335"}, {0x0D60, "\001\145\355\116\206"}, {0x0D61, "\001\145\355\210\206"}, {0x0D66, "\024\145\333"}, {0x0D67, "\024\145\107"}, {0x0D68, "\024\145\127"}, {0x0D69, "\024\145\136"}, {0x0D6A, "\024\145\221"}, {0x0D6B, "\024\145\231"}, {0x0D6C, "\024\145\256"}, {0x0D6D, "\024\145\253"}, {0x0D6E, "\024\145\227"}, {0x0D6F, "\024\145\260"}, {0x0D82, "\022\356\116\362\342"}, {0x0D83, "\022\356\116\376\047"}, {0x0D85, "\001\152\363\020"}, {0x0D86, "\001\152\377\006"}, {0x0D87, "\001\152\376\370"}, {0x0D88, "\001\152\376\371"}, {0x0D89, "\001\152\367\245"}, {0x0D8A, "\001\152\377\053"}, {0x0D8B, "\001\152\372\137"}, {0x0D8C, "\001\152\372\145"}, {0x0D8D, "\001\152\367\234"}, {0x0D8E, "\001\152\367\235"}, {0x0D8F, "\001\152\367\205"}, {0x0D90, "\001\152\367\207"}, {0x0D91, "\001\152\377\045"}, {0x0D92, "\001\152\377\050"}, {0x0D93, "\001\152\363\024"}, {0x0D94, "\001\152\372\143"}, {0x0D95, "\001\152\377\071"}, {0x0D96, "\001\152\362\350"}, {0x0D9A, "\001\152\355\223\360\372"}, {0x0D9B, "\001\152\355\231\360\372"}, {0x0D9C, "\001\152\355\223\357\155"}, {0x0D9D, "\001\152\355\231\357\155"}, {0x0D9E, "\001\152\367\365\361\136"}, {0x0D9F, "\001\152\357\030\357\155"}, {0x0DA0, "\001\152\355\223\361\367"}, {0x0DA1, "\001\152\355\231\361\367"}, {0x0DA2, "\001\152\355\223\357\140"}, {0x0DA3, "\001\152\355\231\357\140"}, {0x0DA4, "\001\152\357\374\361\136"}, {0x0DA5, "\001\152\357\374\374\226\372\065"}, {0x0DA6, "\001\152\357\030\357\140"}, {0x0DA7, "\001\152\355\223\362\053"}, {0x0DA8, "\001\152\355\231\362\053"}, {0x0DA9, "\001\152\355\223\357\131"}, {0x0DAA, "\001\152\355\231\357\131"}, {0x0DAB, "\001\152\357\243\361\112"}, {0x0DAC, "\001\152\357\030\357\131"}, {0x0DAD, "\001\152\355\223\361\363"}, {0x0DAE, "\001\152\355\231\361\363"}, {0x0DAF, "\001\152\355\223\357\126"}, {0x0DB0, "\001\152\355\231\357\126"}, {0x0DB1, "\001\152\357\125\361\112"}, {0x0DB3, "\001\152\357\030\357\126"}, {0x0DB4, "\001\152\355\223\361\165"}, {0x0DB5, "\001\152\355\231\361\165"}, {0x0DB6, "\001\152\355\223\357\072"}, {0x0DB7, "\001\152\355\231\357\072"}, {0x0DB8, "\001\152\370\310"}, {0x0DB9, "\001\152\362\326\357\072"}, {0x0DBA, "\001\152\376\162"}, {0x0DBB, "\001\152\374\050"}, {0x0DBD, "\001\152\357\125\361\027"}, {0x0DC0, "\001\152\376\020"}, {0x0DC1, "\001\152\357\374\377\012"}, {0x0DC2, "\001\152\357\243\363\275"}, {0x0DC3, "\001\152\357\125\374\234"}, {0x0DC4, "\001\152\366\326"}, {0x0DC5, "\001\152\357\243\361\027"}, {0x0DC6, "\001\152\366\055"}, {0x0DCA, "\022\356\116\362\314"}, {0x0DCF, "\042\026\152\360\026"}, {0x0DD0, "\042\026\152\357\226\362\156"}, {0x0DD1, "\042\026\152\356\010\362\156"}, {0x0DD2, "\042\026\152\357\226\360\356"}, {0x0DD3, "\042\026\152\356\010\360\356"}, {0x0DD4, "\042\026\152\357\226\361\236"}, {0x0DD6, "\042\026\152\356\010\361\236"}, {0x0DD8, "\042\026\152\360\314"}, {0x0DD9, "\042\026\152\356\221"}, {0x0DDA, "\042\026\356\116\356\010\356\221"}, {0x0DDB, "\042\026\152\370\042\365\247"}, {0x0DDC, "\042\026\356\116\356\221\357\163\360\026"}, {0x0DDD, "\042\026\152\356\221\357\163\356\010\360\026"}, {0x0DDE, "\042\026\152\356\221\357\163\357\156"}, {0x0DDF, "\042\026\356\116\357\156"}, {0x0DF2, "\042\026\152\356\010\360\314"}, {0x0DF3, "\042\026\152\356\010\357\156"}, {0x0DF4, "\355\236\152\370\050"}, {0x0E01, "\001\153\355\171\367\377"}, {0x0E02, "\001\153\355\263\357\222"}, {0x0E03, "\001\153\355\263\370\013"}, {0x0E04, "\001\153\355\263\370\014"}, {0x0E05, "\001\153\355\263\370\011"}, {0x0E06, "\001\153\355\263\374\042"}, {0x0E07, "\001\153\356\227\371\224"}, {0x0E08, "\001\153\355\301\361\366"}, {0x0E09, "\001\153\355\301\375\141"}, {0x0E0A, "\001\153\355\301\375\134"}, {0x0E0B, "\001\153\355\072\355\072"}, {0x0E0C, "\001\153\355\301\375\152"}, {0x0E0D, "\001\153\355\042\376\170"}, {0x0E0E, "\001\153\355\254\375\132"}, {0x0E0F, "\001\153\355\200\372\171"}, {0x0E10, "\001\153\355\101\357\356"}, {0x0E11, "\001\153\355\101\371\105"}, {0x0E12, "\001\153\355\101\372\224"}, {0x0E13, "\001\153\355\115\371\177"}, {0x0E14, "\001\153\355\254\365\246"}, {0x0E15, "\001\153\355\200\375\106"}, {0x0E16, "\001\153\355\101\375\176"}, {0x0E17, "\001\153\355\101\375\172"}, {0x0E18, "\001\153\355\101\375\174"}, {0x0E19, "\001\153\355\115\355\342"}, {0x0E1A, "\001\153\356\002\363\047"}, {0x0E1B, "\001\153\355\275\372\251"}, {0x0E1C, "\001\153\356\035\372\223"}, {0x0E1D, "\001\153\356\016\355\227"}, {0x0E1E, "\001\153\356\035\372\215"}, {0x0E1F, "\001\153\356\016\366\047"}, {0x0E20, "\001\153\356\035\374\222"}, {0x0E21, "\001\153\355\140\301"}, {0x0E22, "\001\153\355\042\376\156"}, {0x0E23, "\001\153\355\176\374\112"}, {0x0E24, "\001\153\357\317"}, {0x0E25, "\001\153\355\172\361\034"}, {0x0E26, "\001\153\356\354"}, {0x0E27, "\001\153\355\152\362\111"}, {0x0E28, "\001\153\355\072\374\217"}, {0x0E29, "\001\153\355\072\374\116"}, {0x0E2A, "\001\153\355\072\357\335"}, {0x0E2B, "\001\153\355\111\366\352"}, {0x0E2C, "\001\153\355\172\375\151"}, {0x0E2D, "\001\153\064\355\375"}, {0x0E2E, "\001\153\355\111\371\321"}, {0x0E2F, "\001\153\372\175"}, {0x0E30, "\001\153\355\127\063"}, {0x0E31, "\001\153\361\053\366\320\362\312"}, {0x0E32, "\001\153\355\127\325"}, {0x0E33, "\001\153\355\127\356\301"}, {0x0E34, "\001\153\355\127\103"}, {0x0E35, "\001\153\355\127\317"}, {0x0E36, "\001\153\355\127\356\237"}, {0x0E37, "\001\153\355\127\372\140"}, {0x0E38, "\001\153\355\127\113"}, {0x0E39, "\001\153\355\127\344"}, {0x0E3A, "\001\153\372\217"}, {0x0E3F, "\022\355\274\355\151\363\026"}, {0x0E40, "\001\153\355\127\220"}, {0x0E41, "\001\153\355\127\376\372"}, {0x0E42, "\001\153\355\127\064"}, {0x0E43, "\001\153\355\127\311\370\312"}, {0x0E44, "\001\153\355\127\311\370\311"}, {0x0E45, "\001\153\370\133"}, {0x0E46, "\001\153\370\314"}, {0x0E47, "\001\153\370\313"}, {0x0E48, "\001\153\355\272\360\233"}, {0x0E49, "\001\153\355\272\355\101"}, {0x0E4A, "\001\153\355\272\375\260"}, {0x0E4B, "\001\153\355\272\375\136"}, {0x0E4C, "\001\153\375\173"}, {0x0E4D, "\001\153\371\245"}, {0x0E4E, "\001\153\376\157"}, {0x0E4F, "\001\153\366\104"}, {0x0E50, "\024\355\151\333"}, {0x0E51, "\024\355\151\107"}, {0x0E52, "\024\355\151\127"}, {0x0E53, "\024\355\151\136"}, {0x0E54, "\024\355\151\221"}, {0x0E55, "\024\355\151\231"}, {0x0E56, "\024\355\151\256"}, {0x0E57, "\024\355\151\253"}, {0x0E58, "\024\355\151\227"}, {0x0E59, "\024\355\151\260"}, {0x0E5A, "\337\355\151\362\331"}, {0x0E5B, "\337\355\151\370\010"}, {0x0E81, "\001\230\355\171"}, {0x0E82, "\001\230\355\263\356\117"}, {0x0E84, "\001\230\355\263\356\124"}, {0x0E87, "\001\230\356\227"}, {0x0E88, "\001\230\355\301"}, {0x0E8A, "\001\230\355\072\356\124"}, {0x0E8D, "\001\230\357\065"}, {0x0E94, "\001\230\355\254"}, {0x0E95, "\001\230\355\200"}, {0x0E96, "\001\230\355\101\356\117"}, {0x0E97, "\001\230\355\101\356\124"}, {0x0E99, "\001\230\355\115"}, {0x0E9A, "\001\230\356\002"}, {0x0E9B, "\001\230\355\275"}, {0x0E9C, "\001\230\356\035\356\117"}, {0x0E9D, "\001\230\356\016\356\124"}, {0x0E9E, "\001\230\356\035\356\124"}, {0x0E9F, "\001\230\356\016\356\117"}, {0x0EA1, "\001\230\355\140"}, {0x0EA2, "\001\230\355\042"}, {0x0EA3, "\001\230\355\172\361\034"}, {0x0EA5, "\001\230\355\172\370\213"}, {0x0EA7, "\001\230\355\152"}, {0x0EAA, "\001\230\355\072\356\117"}, {0x0EAB, "\001\230\355\111\356\117"}, {0x0EAD, "\001\230\064"}, {0x0EAE, "\001\230\355\111\356\124"}, {0x0EAF, "\252\007\357\347\370\136"}, {0x0EB0, "\042\026\230\063"}, {0x0EB1, "\042\026\230\355\272\367\364"}, {0x0EB2, "\042\026\230\325"}, {0x0EB3, "\042\026\230\356\301"}, {0x0EB4, "\042\026\230\103"}, {0x0EB5, "\042\026\230\317"}, {0x0EB6, "\042\026\230\132"}, {0x0EB7, "\042\026\230\376\007"}, {0x0EB8, "\042\026\230\113"}, {0x0EB9, "\042\026\230\344"}, {0x0EBB, "\042\026\230\355\272\370\043"}, {0x0EBC, "\360\176\026\230\355\172"}, {0x0EBD, "\360\176\026\230\357\065"}, {0x0EC0, "\042\026\230\220"}, {0x0EC1, "\042\026\230\355\202"}, {0x0EC2, "\042\026\230\064"}, {0x0EC3, "\042\026\230\363\016"}, {0x0EC4, "\042\026\230\311"}, {0x0EC6, "\022\355\044\355\171\033"}, {0x0EC8, "\205\007\347\355\044\355\272\377\033"}, {0x0EC9, "\205\007\347\355\044\355\272\355\101"}, {0x0ECA, "\205\007\347\355\044\355\272\355\221"}, {0x0ECB, "\205\007\347\355\044\301\375\135"}, {0x0ECC, "\057\360\157\355\044"}, {0x0ECD, "\022\355\044\371\243"}, {0x0ED0, "\024\355\044\333"}, {0x0ED1, "\024\355\044\107"}, {0x0ED2, "\024\355\044\127"}, {0x0ED3, "\024\355\044\136"}, {0x0ED4, "\024\355\044\221"}, {0x0ED5, "\024\355\044\231"}, {0x0ED6, "\024\355\044\256"}, {0x0ED7, "\024\355\044\253"}, {0x0ED8, "\024\355\044\227"}, {0x0ED9, "\024\355\044\260"}, {0x0EDC, "\022\355\044\355\111\355\115"}, {0x0EDD, "\022\355\044\355\111\355\140"}, {0x0F00, "\002\110\356\370"}, {0x0F01, "\057\120\356\210\355\304\355\211\063\375\264"}, {0x0F02, "\057\120\356\210\355\304\355\211\360\042\361\276\360\074\301"}, {0x0F03, "\057\120\356\210\355\304\355\211\360\042\356\210\356\050\301"}, {0x0F04, "\057\120\355\304\355\211\370\316\301\372\136"}, {0x0F05, "\057\120\355\304\355\211\374\263\301\366\062"}, {0x0F06, "\057\120\356\061\355\304\355\211\361\172\355\276\301"}, {0x0F07, "\057\120\355\304\355\211\356\050\355\276\301"}, {0x0F08, "\057\120\374\237\355\276"}, {0x0F09, "\057\120\363\171\355\304\355\211"}, {0x0F0A, "\057\120\363\146\374\275\355\304\355\211"}, {0x0F0B, "\057\120\367\225\356\050"}, {0x0F0C, "\057\365\362\120\356\050\363\172"}, {0x0F0D, "\057\120\355\276"}, {0x0F0E, "\057\120\360\033\355\276"}, {0x0F0F, "\057\120\356\050\355\276"}, {0x0F10, "\057\120\360\033\356\050\355\276"}, {0x0F11, "\057\120\374\071\363\301\374\373\355\276"}, {0x0F12, "\057\120\361\265\360\304\355\276"}, {0x0F13, "\057\120\356\061\360\222\355\215\355\336\355\266\361\366"}, {0x0F14, "\057\120\356\210\356\050"}, {0x0F15, "\361\041\375\205\363\260\355\215"}, {0x0F16, "\361\041\120\370\156\355\215"}, {0x0F17, "\057\120\357\070\374\265\366\152\362\165\355\215"}, {0x0F18, "\057\120\357\070\362\167\331"}, {0x0F19, "\057\120\357\070\374\243\375\270"}, {0x0F1A, "\057\120\355\350\356\325\360\266"}, {0x0F1B, "\057\120\355\350\356\325\360\321"}, {0x0F1C, "\057\120\355\350\356\325\357\161"}, {0x0F1D, "\057\120\355\350\356\362\360\266"}, {0x0F1E, "\057\120\355\350\356\362\360\321"}, {0x0F1F, "\057\120\355\350\356\325\355\350\356\362"}, {0x0F20, "\024\120\333"}, {0x0F21, "\024\120\107"}, {0x0F22, "\024\120\127"}, {0x0F23, "\024\120\136"}, {0x0F24, "\024\120\221"}, {0x0F25, "\024\120\231"}, {0x0F26, "\024\120\256"}, {0x0F27, "\024\120\253"}, {0x0F28, "\024\120\227"}, {0x0F29, "\024\120\260"}, {0x0F2A, "\024\120\107\355\022\107\355\135"}, {0x0F2B, "\024\120\127\355\022\107\355\135"}, {0x0F2C, "\024\120\136\355\022\107\355\135"}, {0x0F2D, "\024\120\221\355\022\107\355\135"}, {0x0F2E, "\024\120\231\355\022\107\355\135"}, {0x0F2F, "\024\120\256\355\022\107\355\135"}, {0x0F30, "\024\120\253\355\022\107\355\135"}, {0x0F31, "\024\120\227\355\022\107\355\135"}, {0x0F32, "\024\120\260\355\022\107\355\135"}, {0x0F33, "\024\120\333\355\022\107\355\135"}, {0x0F34, "\057\120\363\170\355\215"}, {0x0F35, "\057\120\361\114\360\106\360\032\362\146"}, {0x0F36, "\057\120\356\061\360\222\355\215\360\105\361\060\356\152"}, {0x0F37, "\057\120\361\114\360\106\374\264\355\215"}, {0x0F38, "\057\120\356\153\355\211"}, {0x0F39, "\057\120\355\201\362\170"}, {0x0F3A, "\057\120\360\306\355\215\360\313"}, {0x0F3B, "\057\120\360\306\355\215\360\312"}, {0x0F3C, "\057\120\355\375\360\376\360\313"}, {0x0F3D, "\057\120\355\375\360\376\360\312"}, {0x0F3E, "\057\120\376\160\362\050"}, {0x0F3F, "\057\120\370\273\362\050"}, {0x0F40, "\001\110\241"}, {0x0F41, "\001\110\355\056"}, {0x0F42, "\001\110\355\021"}, {0x0F43, "\001\110\355\110"}, {0x0F44, "\001\110\355\070"}, {0x0F45, "\001\110\357\075"}, {0x0F46, "\001\110\355\034"}, {0x0F47, "\001\110\357\210"}, {0x0F49, "\001\110\355\203"}, {0x0F4A, "\001\110\355\102"}, {0x0F4B, "\001\110\355\131"}, {0x0F4C, "\001\110\355\122"}, {0x0F4D, "\001\110\355\162"}, {0x0F4E, "\001\110\355\143"}, {0x0F4F, "\001\110\313"}, {0x0F50, "\001\110\355\074"}, {0x0F51, "\001\110\355\004"}, {0x0F52, "\001\110\355\164"}, {0x0F53, "\001\110\355\002"}, {0x0F54, "\001\110\331"}, {0x0F55, "\001\110\355\126"}, {0x0F56, "\001\110\355\054"}, {0x0F57, "\001\110\355\155"}, {0x0F58, "\001\110\301"}, {0x0F59, "\001\110\355\201"}, {0x0F5A, "\001\110\362\047"}, {0x0F5B, "\001\110\356\067"}, {0x0F5C, "\001\110\360\220"}, {0x0F5D, "\001\110\355\052"}, {0x0F5E, "\001\110\355\367"}, {0x0F5F, "\001\110\355\103"}, {0x0F60, "\001\110\360\037"}, {0x0F61, "\001\110\307"}, {0x0F62, "\001\110\324"}, {0x0F63, "\001\110\033"}, {0x0F64, "\001\110\357\327"}, {0x0F65, "\001\110\356\254"}, {0x0F66, "\001\110\355\006"}, {0x0F67, "\001\110\316"}, {0x0F68, "\001\110\063"}, {0x0F69, "\001\110\357\225"}, {0x0F6A, "\001\110\324\044\265\356\203"}, {0x0F71, "\042\026\110\325"}, {0x0F72, "\042\026\110\103"}, {0x0F73, "\042\026\110\317"}, {0x0F74, "\042\026\110\113"}, {0x0F75, "\042\026\110\344"}, {0x0F76, "\042\026\110\170\206"}, {0x0F77, "\042\026\110\355\116\206"}, {0x0F78, "\042\026\110\212\206"}, {0x0F79, "\042\026\110\355\210\206"}, {0x0F7A, "\042\026\110\220"}, {0x0F7B, "\042\026\110\355\202"}, {0x0F7C, "\042\026\110\064"}, {0x0F7D, "\042\026\110\310"}, {0x0F7E, "\057\120\374\106\355\072\355\070\355\176"}, {0x0F7F, "\057\120\361\276\360\074"}, {0x0F80, "\042\026\103\355\015"}, {0x0F81, "\042\026\317\355\015"}, {0x0F82, "\057\120\360\032\362\146\361\135\355\004"}, {0x0F83, "\057\120\374\345\370\146"}, {0x0F84, "\057\120\366\315"}, {0x0F85, "\057\120\372\156"}, {0x0F86, "\057\120\370\145\355\215"}, {0x0F87, "\057\120\360\013\355\215"}, {0x0F88, "\057\120\370\144\355\201\356\152"}, {0x0F89, "\057\120\370\315\356\152"}, {0x0F8A, "\057\120\360\305\356\152\361\266"}, {0x0F8B, "\057\120\360\305\370\317\361\266"}, {0x0F90, "\001\110\241\237"}, {0x0F91, "\001\110\355\056\237"}, {0x0F92, "\001\110\355\021\237"}, {0x0F93, "\001\110\355\110\237"}, {0x0F94, "\001\110\355\070\237"}, {0x0F95, "\001\110\357\075\237"}, {0x0F96, "\001\110\355\034\237"}, {0x0F97, "\001\110\357\210\237"}, {0x0F99, "\001\110\377\054"}, {0x0F9A, "\001\110\355\102\237"}, {0x0F9B, "\001\110\355\131\237"}, {0x0F9C, "\001\110\355\122\237"}, {0x0F9D, "\001\110\355\162\237"}, {0x0F9E, "\001\110\355\143\237"}, {0x0F9F, "\001\110\313\237"}, {0x0FA0, "\001\110\355\074\237"}, {0x0FA1, "\001\110\355\004\237"}, {0x0FA2, "\001\110\355\164\237"}, {0x0FA3, "\001\110\355\002\237"}, {0x0FA4, "\001\110\331\237"}, {0x0FA5, "\001\110\355\126\237"}, {0x0FA6, "\001\110\355\054\237"}, {0x0FA7, "\001\110\355\155\237"}, {0x0FA8, "\001\110\301\237"}, {0x0FA9, "\001\110\355\201\237"}, {0x0FAA, "\001\110\362\047\237"}, {0x0FAB, "\001\110\356\067\237"}, {0x0FAC, "\001\110\360\220\237"}, {0x0FAD, "\001\110\355\052\237"}, {0x0FAE, "\001\110\355\367\237"}, {0x0FAF, "\001\110\355\103\237"}, {0x0FB0, "\001\110\360\037\237"}, {0x0FB1, "\001\110\307\237"}, {0x0FB2, "\001\110\324\237"}, {0x0FB3, "\001\110\033\237"}, {0x0FB4, "\001\110\357\327\375\367"}, {0x0FB5, "\001\110\356\254\237"}, {0x0FB6, "\001\110\355\006\237"}, {0x0FB7, "\001\110\316\237"}, {0x0FB8, "\001\110\063\237"}, {0x0FB9, "\001\110\357\225\237\357\225"}, {0x0FBA, "\001\110\355\052\237\044\265\356\203"}, {0x0FBB, "\001\110\237\307\044\265\356\203"}, {0x0FBC, "\001\110\237\324\044\265\356\203"}, {0x0FBE, "\057\120\356\023\356\041\355\056"}, {0x0FBF, "\057\120\356\023\356\041\355\056\360\105\361\060\356\152"}, {0x0FC0, "\057\120\007\356\310\362\003\366\107"}, {0x0FC1, "\057\120\007\356\310\362\003\366\045"}, {0x0FC2, "\057\120\007\356\310\363\235\375\161"}, {0x0FC3, "\374\321\120\007\356\310\374\240\363\222"}, {0x0FC4, "\022\120\365\335\356\005"}, {0x0FC5, "\022\120\361\255\361\275"}, {0x0FC6, "\022\120\372\152\366\153"}, {0x0FC7, "\022\120\361\255\361\275\361\265\360\304"}, {0x0FC8, "\022\120\361\172\331"}, {0x0FC9, "\022\120\356\365\356\005"}, {0x0FCA, "\022\120\356\365\356\005\360\033\362\166"}, {0x0FCB, "\022\120\356\365\356\005\357\161\360\041"}, {0x0FCC, "\022\120\356\365\356\002\363\107\360\041"}, {0x0FCF, "\057\120\355\350\356\362\357\161"}, {0x1000, "\001\177\241"}, {0x1001, "\001\177\355\056"}, {0x1002, "\001\177\355\021"}, {0x1003, "\001\177\355\110"}, {0x1004, "\001\177\355\070"}, {0x1005, "\001\177\355\026"}, {0x1006, "\001\177\355\242"}, {0x1007, "\001\177\355\106"}, {0x1008, "\001\177\355\253"}, {0x1009, "\001\177\355\203"}, {0x100A, "\001\177\377\061"}, {0x100B, "\001\177\355\102"}, {0x100C, "\001\177\355\131"}, {0x100D, "\001\177\355\122"}, {0x100E, "\001\177\355\162"}, {0x100F, "\001\177\355\143"}, {0x1010, "\001\177\313"}, {0x1011, "\001\177\355\074"}, {0x1012, "\001\177\355\004"}, {0x1013, "\001\177\355\164"}, {0x1014, "\001\177\355\002"}, {0x1015, "\001\177\331"}, {0x1016, "\001\177\355\126"}, {0x1017, "\001\177\355\054"}, {0x1018, "\001\177\355\155"}, {0x1019, "\001\177\301"}, {0x101A, "\001\177\307"}, {0x101B, "\001\177\324"}, {0x101C, "\001\177\033"}, {0x101D, "\001\177\355\052"}, {0x101E, "\001\177\355\006"}, {0x101F, "\001\177\316"}, {0x1020, "\001\177\355\265"}, {0x1021, "\001\177\325"}, {0x1023, "\001\177\103"}, {0x1024, "\001\177\317"}, {0x1025, "\001\177\113"}, {0x1026, "\001\177\344"}, {0x1027, "\001\177\220"}, {0x1029, "\001\177\064"}, {0x102A, "\001\177\335"}, {0x102C, "\042\026\177\325"}, {0x102D, "\042\026\177\103"}, {0x102E, "\042\026\177\317"}, {0x102F, "\042\026\177\113"}, {0x1030, "\042\026\177\344"}, {0x1031, "\042\026\177\220"}, {0x1032, "\042\026\177\311"}, {0x1036, "\022\355\033\355\224"}, {0x1037, "\037\043\355\033"}, {0x1038, "\355\245\355\033"}, {0x1039, "\022\355\033\355\244"}, {0x1040, "\024\355\033\333"}, {0x1041, "\024\355\033\107"}, {0x1042, "\024\355\033\127"}, {0x1043, "\024\355\033\136"}, {0x1044, "\024\355\033\221"}, {0x1045, "\024\355\033\231"}, {0x1046, "\024\355\033\256"}, {0x1047, "\024\355\033\253"}, {0x1048, "\024\355\033\227"}, {0x1049, "\024\355\033\260"}, {0x104A, "\057\355\033\355\144\361\311"}, {0x104B, "\057\355\033\361\311"}, {0x104C, "\022\355\033\370\204"}, {0x104D, "\022\355\033\362\304"}, {0x104E, "\022\355\033\370\147"}, {0x104F, "\022\355\033\366\304"}, {0x1050, "\001\177\355\154"}, {0x1051, "\001\177\355\034"}, {0x1052, "\001\177\170\206"}, {0x1053, "\001\177\355\116\206"}, {0x1054, "\001\177\212\206"}, {0x1055, "\001\177\355\210\206"}, {0x1056, "\042\026\177\170\206"}, {0x1057, "\042\026\177\355\116\206"}, {0x1058, "\042\026\177\212\206"}, {0x1059, "\042\026\177\355\210\206"}, {0x10A0, "\001\146\254\357\066"}, {0x10A1, "\001\146\254\360\071"}, {0x10A2, "\001\146\254\360\263"}, {0x10A3, "\001\146\254\360\215"}, {0x10A4, "\001\146\254\377\022"}, {0x10A5, "\001\146\254\360\004"}, {0x10A6, "\001\146\254\362\154"}, {0x10A7, "\001\146\254\357\356"}, {0x10A8, "\001\146\254\357\177"}, {0x10A9, "\001\146\254\360\370"}, {0x10AA, "\001\146\254\361\026"}, {0x10AB, "\001\146\254\357\233"}, {0x10AC, "\001\146\254\361\111"}, {0x10AD, "\001\146\254\357\260"}, {0x10AE, "\001\146\254\372\147"}, {0x10AF, "\001\146\254\360\362"}, {0x10B0, "\001\146\254\374\053"}, {0x10B1, "\001\146\254\361\306"}, {0x10B2, "\001\146\254\361\355"}, {0x10B3, "\001\146\254\361\152"}, {0x10B4, "\001\146\254\361\171"}, {0x10B5, "\001\146\254\360\377"}, {0x10B6, "\001\146\254\360\300"}, {0x10B7, "\001\146\254\361\243"}, {0x10B8, "\001\146\254\357\101"}, {0x10B9, "\001\146\254\361\371"}, {0x10BA, "\001\146\254\362\051"}, {0x10BB, "\001\146\254\360\221"}, {0x10BC, "\001\146\254\362\045"}, {0x10BD, "\001\146\254\361\365"}, {0x10BE, "\001\146\254\357\221"}, {0x10BF, "\001\146\254\360\210"}, {0x10C0, "\001\146\254\360\324"}, {0x10C1, "\001\146\254\362\157"}, {0x10C2, "\001\146\254\360\357"}, {0x10C3, "\001\146\254\362\077"}, {0x10C4, "\001\146\254\360\322"}, {0x10C5, "\001\146\254\360\337"}, {0x10D0, "\001\146\251\357\066"}, {0x10D1, "\001\146\251\360\071"}, {0x10D2, "\001\146\251\360\263"}, {0x10D3, "\001\146\251\360\215"}, {0x10D4, "\001\146\251\377\023"}, {0x10D5, "\001\146\251\360\004"}, {0x10D6, "\001\146\251\362\154"}, {0x10D7, "\001\146\251\357\356"}, {0x10D8, "\001\146\251\357\177"}, {0x10D9, "\001\146\251\360\370"}, {0x10DA, "\001\146\251\361\026"}, {0x10DB, "\001\146\251\357\233"}, {0x10DC, "\001\146\251\361\111"}, {0x10DD, "\001\146\251\357\260"}, {0x10DE, "\001\146\251\355\234"}, {0x10DF, "\001\146\251\360\362"}, {0x10E0, "\001\146\251\374\037"}, {0x10E1, "\001\146\251\361\306"}, {0x10E2, "\001\146\251\361\355"}, {0x10E3, "\001\146\251\361\152"}, {0x10E4, "\001\146\251\361\171"}, {0x10E5, "\001\146\251\360\377"}, {0x10E6, "\001\146\251\360\300"}, {0x10E7, "\001\146\251\361\243"}, {0x10E8, "\001\146\251\357\101"}, {0x10E9, "\001\146\251\361\371"}, {0x10EA, "\001\146\251\362\051"}, {0x10EB, "\001\146\251\360\221"}, {0x10EC, "\001\146\251\362\045"}, {0x10ED, "\001\146\251\361\365"}, {0x10EE, "\001\146\251\357\221"}, {0x10EF, "\001\146\251\360\210"}, {0x10F0, "\001\146\251\360\324"}, {0x10F1, "\001\146\251\362\157"}, {0x10F2, "\001\146\251\360\357"}, {0x10F3, "\001\146\251\362\077"}, {0x10F4, "\001\146\251\360\322"}, {0x10F5, "\001\146\251\360\337"}, {0x10F6, "\001\146\251\356\202"}, {0x10FB, "\355\047\007\357\270\366\306"}, {0x1100, "\014\117\355\335"}, {0x1101, "\014\117\357\042"}, {0x1102, "\014\117\355\341"}, {0x1103, "\014\117\355\362"}, {0x1104, "\014\117\357\342"}, {0x1105, "\014\117\355\352"}, {0x1106, "\014\117\355\337"}, {0x1107, "\014\117\355\347"}, {0x1108, "\014\117\357\340"}, {0x1109, "\014\117\355\353"}, {0x110A, "\014\117\357\043"}, {0x110B, "\014\117\355\331"}, {0x110C, "\014\117\355\300"}, {0x110D, "\014\117\357\341"}, {0x110E, "\014\117\355\360"}, {0x110F, "\014\117\355\332"}, {0x1110, "\014\117\355\357"}, {0x1111, "\014\117\355\346"}, {0x1112, "\014\117\355\327"}, {0x1113, "\014\117\361\115"}, {0x1114, "\014\117\361\341"}, {0x1115, "\014\117\357\251"}, {0x1116, "\014\117\371\253"}, {0x1117, "\014\117\362\012"}, {0x1118, "\014\117\361\270"}, {0x1119, "\014\117\361\342"}, {0x111A, "\014\117\357\025"}, {0x111B, "\014\117\367\367"}, {0x111C, "\014\117\357\237"}, {0x111D, "\014\117\357\215"}, {0x111E, "\014\117\361\176"}, {0x111F, "\014\117\372\243"}, {0x1120, "\014\117\361\204"}, {0x1121, "\014\117\357\004"}, {0x1122, "\014\117\361\200"}, {0x1123, "\014\117\361\201"}, {0x1124, "\014\117\372\245"}, {0x1125, "\014\117\372\247"}, {0x1126, "\014\117\372\246"}, {0x1127, "\014\117\361\203"}, {0x1128, "\014\117\372\250"}, {0x1129, "\014\117\361\202"}, {0x112A, "\014\117\361\177"}, {0x112B, "\014\117\357\217"}, {0x112C, "\014\117\360\371"}, {0x112D, "\014\117\357\330"}, {0x112E, "\014\117\361\324"}, {0x112F, "\014\117\357\332"}, {0x1130, "\014\117\361\325"}, {0x1131, "\014\117\374\334"}, {0x1132, "\014\117\357\331"}, {0x1133, "\014\117\374\336"}, {0x1134, "\014\117\374\337"}, {0x1135, "\014\117\374\332"}, {0x1136, "\014\117\361\326"}, {0x1137, "\014\117\374\341"}, {0x1138, "\014\117\374\333"}, {0x1139, "\014\117\374\340"}, {0x113A, "\014\117\374\335"}, {0x113B, "\014\117\374\331"}, {0x113C, "\014\117\375\123"}, {0x113D, "\014\117\375\124"}, {0x113E, "\014\117\375\144"}, {0x113F, "\014\117\375\145"}, {0x1140, "\014\117\357\267"}, {0x1141, "\014\117\360\360"}, {0x1142, "\014\117\367\260"}, {0x1143, "\014\117\367\247"}, {0x1144, "\014\117\367\252"}, {0x1145, "\014\117\367\253"}, {0x1146, "\014\117\367\251"}, {0x1147, "\014\117\357\337"}, {0x1148, "\014\117\367\257"}, {0x1149, "\014\117\367\256"}, {0x114A, "\014\117\367\255"}, {0x114B, "\014\117\367\250"}, {0x114C, "\014\117\360\014"}, {0x114D, "\014\117\375\142"}, {0x114E, "\014\117\375\127"}, {0x114F, "\014\117\375\125"}, {0x1150, "\014\117\375\150"}, {0x1151, "\014\117\375\146"}, {0x1152, "\014\117\375\131"}, {0x1153, "\014\117\375\130"}, {0x1154, "\014\117\375\126"}, {0x1155, "\014\117\375\147"}, {0x1156, "\014\117\361\155"}, {0x1157, "\014\117\357\216"}, {0x1158, "\014\117\361\340"}, {0x1159, "\014\117\360\015"}, {0x115F, "\356\147\014\117"}, {0x1160, "\356\147\014\163"}, {0x1161, "\014\163\063"}, {0x1162, "\014\163\356\140"}, {0x1163, "\014\163\307"}, {0x1164, "\014\163\360\020"}, {0x1165, "\014\163\064"}, {0x1166, "\014\163\220"}, {0x1167, "\014\163\355\042"}, {0x1168, "\014\163\355\305"}, {0x1169, "\014\163\310"}, {0x116A, "\014\163\355\052"}, {0x116B, "\014\163\360\012"}, {0x116C, "\014\163\356\013"}, {0x116D, "\014\163\356\275"}, {0x116E, "\014\163\113"}, {0x116F, "\014\163\355\152"}, {0x1170, "\014\163\356\273"}, {0x1171, "\014\163\355\364"}, {0x1172, "\014\163\355\153"}, {0x1173, "\014\163\360\035"}, {0x1174, "\014\163\360\036"}, {0x1175, "\014\163\103"}, {0x1176, "\014\163\362\274"}, {0x1177, "\014\163\362\273"}, {0x1178, "\014\163\376\155"}, {0x1179, "\014\163\376\154"}, {0x117A, "\014\163\372\071"}, {0x117B, "\014\163\372\070"}, {0x117C, "\014\163\372\072"}, {0x117D, "\014\163\376\174"}, {0x117E, "\014\163\376\173"}, {0x117F, "\014\163\377\062"}, {0x1180, "\014\163\377\065"}, {0x1181, "\014\163\377\064"}, {0x1182, "\014\163\377\066"}, {0x1183, "\014\163\377\063"}, {0x1184, "\014\163\362\142"}, {0x1185, "\014\163\362\143"}, {0x1186, "\014\163\376\236"}, {0x1187, "\014\163\376\237"}, {0x1188, "\014\163\362\141"}, {0x1189, "\014\163\372\123"}, {0x118A, "\014\163\372\127"}, {0x118B, "\014\163\372\124"}, {0x118C, "\014\163\372\126"}, {0x118D, "\014\163\372\125"}, {0x118E, "\014\163\376\177"}, {0x118F, "\014\163\376\200"}, {0x1190, "\014\163\376\202"}, {0x1191, "\014\163\362\125"}, {0x1192, "\014\163\362\126"}, {0x1193, "\014\163\376\201"}, {0x1194, "\014\163\362\124"}, {0x1195, "\014\163\377\072"}, {0x1196, "\014\163\377\073"}, {0x1197, "\014\163\377\074"}, {0x1198, "\014\163\367\170"}, {0x1199, "\014\163\367\173"}, {0x119A, "\014\163\367\174"}, {0x119B, "\014\163\367\172"}, {0x119C, "\014\163\367\175"}, {0x119D, "\014\163\367\171"}, {0x119E, "\014\163\360\056"}, {0x119F, "\014\163\362\373"}, {0x11A0, "\014\163\362\374"}, {0x11A1, "\014\163\362\372"}, {0x11A2, "\014\163\374\375"}, {0x11A8, "\014\133\355\335"}, {0x11A9, "\014\133\357\042"}, {0x11AA, "\014\133\357\223"}, {0x11AB, "\014\133\355\341"}, {0x11AC, "\014\133\357\250"}, {0x11AD, "\014\133\357\247"}, {0x11AE, "\014\133\355\362"}, {0x11AF, "\014\133\355\352"}, {0x11B0, "\014\133\357\311"}, {0x11B1, "\014\133\357\312"}, {0x11B2, "\014\133\357\314"}, {0x11B3, "\014\133\357\315"}, {0x11B4, "\014\133\357\316"}, {0x11B5, "\014\133\357\313"}, {0x11B6, "\014\133\357\025"}, {0x11B7, "\014\133\355\337"}, {0x11B8, "\014\133\355\347"}, {0x11B9, "\014\133\357\004"}, {0x11BA, "\014\133\355\353"}, {0x11BB, "\014\133\357\043"}, {0x11BC, "\014\133\355\331"}, {0x11BD, "\014\133\355\300"}, {0x11BE, "\014\133\355\360"}, {0x11BF, "\014\133\355\332"}, {0x11C0, "\014\133\355\357"}, {0x11C1, "\014\133\355\346"}, {0x11C2, "\014\133\355\327"}, {0x11C3, "\014\133\370\030"}, {0x11C4, "\014\133\370\031"}, {0x11C5, "\014\133\361\115"}, {0x11C6, "\014\133\357\251"}, {0x11C7, "\014\133\361\117"}, {0x11C8, "\014\133\361\116"}, {0x11C9, "\014\133\371\254"}, {0x11CA, "\014\133\362\012"}, {0x11CB, "\014\133\375\211"}, {0x11CC, "\014\133\361\267"}, {0x11CD, "\014\133\361\270"}, {0x11CE, "\014\133\361\273"}, {0x11CF, "\014\133\374\105"}, {0x11D0, "\014\133\361\342"}, {0x11D1, "\014\133\374\101"}, {0x11D2, "\014\133\374\102"}, {0x11D3, "\014\133\361\272"}, {0x11D4, "\014\133\374\103"}, {0x11D5, "\014\133\374\100"}, {0x11D6, "\014\133\374\104"}, {0x11D7, "\014\133\361\271"}, {0x11D8, "\014\133\374\077"}, {0x11D9, "\014\133\361\274"}, {0x11DA, "\014\133\371\003"}, {0x11DB, "\014\133\371\004"}, {0x11DC, "\014\133\357\237"}, {0x11DD, "\014\133\361\063"}, {0x11DE, "\014\133\371\005"}, {0x11DF, "\014\133\361\062"}, {0x11E0, "\014\133\371\006"}, {0x11E1, "\014\133\371\002"}, {0x11E2, "\014\133\357\215"}, {0x11E3, "\014\133\372\244"}, {0x11E4, "\014\133\361\177"}, {0x11E5, "\014\133\372\242"}, {0x11E6, "\014\133\357\217"}, {0x11E7, "\014\133\357\330"}, {0x11E8, "\014\133\357\332"}, {0x11E9, "\014\133\361\325"}, {0x11EA, "\014\133\357\331"}, {0x11EB, "\014\133\357\267"}, {0x11EC, "\014\133\360\360"}, {0x11ED, "\014\133\367\254"}, {0x11EE, "\014\133\357\337"}, {0x11EF, "\014\133\367\246"}, {0x11F0, "\014\133\360\014"}, {0x11F1, "\014\133\362\117"}, {0x11F2, "\014\133\362\116"}, {0x11F3, "\014\133\361\155"}, {0x11F4, "\014\133\357\216"}, {0x11F5, "\014\133\366\356"}, {0x11F6, "\014\133\366\360"}, {0x11F7, "\014\133\366\355"}, {0x11F8, "\014\133\366\357"}, {0x11F9, "\014\133\360\015"}, {0x1200, "\002\023\367\162"}, {0x1201, "\002\023\360\336"}, {0x1202, "\002\023\355\257"}, {0x1203, "\002\023\316"}, {0x1204, "\002\023\356\020"}, {0x1205, "\002\023\356\074"}, {0x1206, "\002\023\355\111"}, {0x1208, "\002\023\370\242"}, {0x1209, "\002\023\356\354"}, {0x120A, "\002\023\356\101"}, {0x120B, "\002\023\033"}, {0x120C, "\002\023\356\224"}, {0x120D, "\002\023\050"}, {0x120E, "\002\023\355\172"}, {0x120F, "\002\023\370\232"}, {0x1210, "\002\023\366\344"}, {0x1211, "\002\023\366\342"}, {0x1212, "\002\023\366\340"}, {0x1213, "\002\023\366\335"}, {0x1214, "\002\023\366\346"}, {0x1215, "\002\023\366\336"}, {0x1216, "\002\023\366\341"}, {0x1217, "\002\023\366\343"}, {0x1218, "\002\023\371\057"}, {0x1219, "\002\023\356\226"}, {0x121A, "\002\023\355\232"}, {0x121B, "\002\023\301"}, {0x121C, "\002\023\356\360"}, {0x121D, "\002\023\355\336"}, {0x121E, "\002\023\355\140"}, {0x121F, "\002\023\371\050"}, {0x1220, "\002\023\377\020"}, {0x1221, "\002\023\377\016"}, {0x1222, "\002\023\377\014"}, {0x1223, "\002\023\355\154"}, {0x1224, "\002\023\377\021"}, {0x1225, "\002\023\377\013"}, {0x1226, "\002\023\377\015"}, {0x1227, "\002\023\377\017"}, {0x1228, "\002\023\374\172"}, {0x1229, "\002\023\357\317"}, {0x122A, "\002\023\355\351"}, {0x122B, "\002\023\324"}, {0x122C, "\002\023\356\042"}, {0x122D, "\002\023\356\037"}, {0x122E, "\002\023\355\176"}, {0x122F, "\002\023\374\162"}, {0x1230, "\002\023\375\067"}, {0x1231, "\002\023\357\036"}, {0x1232, "\002\023\355\277"}, {0x1233, "\002\023\355\006"}, {0x1234, "\002\023\356\123"}, {0x1235, "\002\023\356\044"}, {0x1236, "\002\023\355\072"}, {0x1237, "\002\023\375\055"}, {0x1238, "\002\023\363\340"}, {0x1239, "\002\023\360\124"}, {0x123A, "\002\023\356\312"}, {0x123B, "\002\023\355\034"}, {0x123C, "\002\023\356\313"}, {0x123D, "\002\023\356\153"}, {0x123E, "\002\023\356\056"}, {0x123F, "\002\023\363\331"}, {0x1240, "\002\023\374\027"}, {0x1241, "\002\023\373\366"}, {0x1242, "\002\023\357\303"}, {0x1243, "\002\023\356\247"}, {0x1244, "\002\023\374\033"}, {0x1245, "\002\023\373\340"}, {0x1246, "\002\023\357\304"}, {0x1248, "\002\023\374\017"}, {0x124A, "\002\023\374\016"}, {0x124B, "\002\023\374\014"}, {0x124C, "\002\023\374\020"}, {0x124D, "\002\023\374\015"}, {0x1250, "\002\023\373\353"}, {0x1251, "\002\023\373\345"}, {0x1252, "\002\023\373\343"}, {0x1253, "\002\023\373\341"}, {0x1254, "\002\023\373\354"}, {0x1255, "\002\023\373\342"}, {0x1256, "\002\023\373\344"}, {0x1258, "\002\023\373\351"}, {0x125A, "\002\023\373\350"}, {0x125B, "\002\023\373\346"}, {0x125C, "\002\023\373\352"}, {0x125D, "\002\023\373\347"}, {0x1260, "\002\023\363\213"}, {0x1261, "\002\023\363\156"}, {0x1262, "\002\023\356\306"}, {0x1263, "\002\023\355\054"}, {0x1264, "\002\023\356\151"}, {0x1265, "\002\023\356\144"}, {0x1266, "\002\023\356\002"}, {0x1267, "\002\023\363\204"}, {0x1268, "\002\023\376\075"}, {0x1269, "\002\023\376\057"}, {0x126A, "\002\023\360\003"}, {0x126B, "\002\023\355\243"}, {0x126C, "\002\023\357\056"}, {0x126D, "\002\023\357\055"}, {0x126E, "\002\023\356\134"}, {0x126F, "\002\023\376\066"}, {0x1270, "\002\023\375\357"}, {0x1271, "\002\023\375\240"}, {0x1272, "\002\023\355\221"}, {0x1273, "\002\023\313"}, {0x1274, "\002\023\355\303"}, {0x1275, "\002\023\356\127"}, {0x1276, "\002\023\355\200"}, {0x1277, "\002\023\375\335"}, {0x1278, "\002\023\375\155"}, {0x1279, "\002\023\361\372"}, {0x127A, "\002\023\357\353"}, {0x127B, "\002\023\355\026"}, {0x127C, "\002\023\355\073"}, {0x127D, "\002\023\357\352"}, {0x127E, "\002\023\355\301"}, {0x127F, "\002\023\375\153"}, {0x1280, "\002\023\376\152"}, {0x1281, "\002\023\376\133"}, {0x1282, "\002\023\357\057"}, {0x1283, "\002\023\376\120"}, {0x1284, "\002\023\376\153"}, {0x1285, "\002\023\376\121"}, {0x1286, "\002\023\362\112"}, {0x1288, "\002\023\376\142"}, {0x128A, "\002\023\376\141"}, {0x128B, "\002\023\376\137"}, {0x128C, "\002\023\376\143"}, {0x128D, "\002\023\376\140"}, {0x1290, "\002\023\372\063"}, {0x1291, "\002\023\355\342"}, {0x1292, "\002\023\245"}, {0x1293, "\002\023\355\002"}, {0x1294, "\002\023\356\233"}, {0x1295, "\002\023\355\142"}, {0x1296, "\002\023\355\115"}, {0x1297, "\002\023\372\005"}, {0x1298, "\002\023\377\060"}, {0x1299, "\002\023\377\056"}, {0x129A, "\002\023\360\032"}, {0x129B, "\002\023\355\203"}, {0x129C, "\002\023\360\034"}, {0x129D, "\002\023\377\055"}, {0x129E, "\002\023\357\065"}, {0x129F, "\002\023\377\057"}, {0x12A0, "\002\023\362\155\355\325"}, {0x12A1, "\002\023\113\355\325"}, {0x12A2, "\002\023\103\355\325"}, {0x12A3, "\002\023\063\355\325"}, {0x12A4, "\002\023\220\355\325"}, {0x12A5, "\002\023\130\355\325"}, {0x12A6, "\002\023\064\355\325"}, {0x12A7, "\002\023\355\052\355\325"}, {0x12A8, "\002\023\370\114"}, {0x12A9, "\002\023\361\007"}, {0x12AA, "\002\023\355\334"}, {0x12AB, "\002\023\241"}, {0x12AC, "\002\023\356\222"}, {0x12AD, "\002\023\355\333"}, {0x12AE, "\002\023\355\171"}, {0x12B0, "\002\023\370\075"}, {0x12B2, "\002\023\361\020"}, {0x12B3, "\002\023\361\017"}, {0x12B4, "\002\023\361\021"}, {0x12B5, "\002\023\370\072"}, {0x12B8, "\002\023\370\111"}, {0x12B9, "\002\023\370\103"}, {0x12BA, "\002\023\370\101"}, {0x12BB, "\002\023\370\077"}, {0x12BC, "\002\023\370\112"}, {0x12BD, "\002\023\370\100"}, {0x12BE, "\002\023\370\102"}, {0x12C0, "\002\023\370\107"}, {0x12C2, "\002\023\370\106"}, {0x12C3, "\002\023\370\104"}, {0x12C4, "\002\023\370\110"}, {0x12C5, "\002\023\370\105"}, {0x12C8, "\002\023\376\116"}, {0x12C9, "\002\023\362\110"}, {0x12CA, "\002\023\355\364"}, {0x12CB, "\002\023\355\052"}, {0x12CC, "\002\023\356\273"}, {0x12CD, "\002\023\356\272"}, {0x12CE, "\002\023\355\152"}, {0x12D0, "\002\023\362\155\356\034"}, {0x12D1, "\002\023\113\356\034"}, {0x12D2, "\002\023\103\356\034"}, {0x12D3, "\002\023\063\356\034"}, {0x12D4, "\002\023\220\356\034"}, {0x12D5, "\002\023\130\356\034"}, {0x12D6, "\002\023\064\356\034"}, {0x12D8, "\002\023\376\365"}, {0x12D9, "\002\023\362\150"}, {0x12DA, "\002\023\356\277"}, {0x12DB, "\002\023\355\103"}, {0x12DC, "\002\023\355\371"}, {0x12DD, "\002\023\356\276"}, {0x12DE, "\002\023\356\137"}, {0x12DF, "\002\023\376\323"}, {0x12E0, "\002\023\367\356"}, {0x12E1, "\002\023\367\326"}, {0x12E2, "\002\023\360\364"}, {0x12E3, "\002\023\357\210"}, {0x12E4, "\002\023\355\206"}, {0x12E5, "\002\023\367\264"}, {0x12E6, "\002\023\357\213"}, {0x12E7, "\002\023\367\347"}, {0x12E8, "\002\023\376\230"}, {0x12E9, "\002\023\355\153"}, {0x12EA, "\002\023\003"}, {0x12EB, "\002\023\307"}, {0x12EC, "\002\023\355\305"}, {0x12ED, "\002\023\362\114"}, {0x12EE, "\002\023\355\042"}, {0x12F0, "\002\023\365\351"}, {0x12F1, "\002\023\360\216"}, {0x12F2, "\002\023\356\064"}, {0x12F3, "\002\023\355\004"}, {0x12F4, "\002\023\356\170"}, {0x12F5, "\002\023\007"}, {0x12F6, "\002\023\355\254"}, {0x12F7, "\002\023\365\344"}, {0x12F8, "\002\023\365\241"}, {0x12F9, "\002\023\365\226"}, {0x12FA, "\002\023\360\170"}, {0x12FB, "\002\023\355\122"}, {0x12FC, "\002\023\365\242"}, {0x12FD, "\002\023\360\167"}, {0x12FE, "\002\023\360\171"}, {0x12FF, "\002\023\365\240"}, {0x1300, "\002\023\365\316"}, {0x1301, "\002\023\357\142"}, {0x1302, "\002\023\357\141"}, {0x1303, "\002\023\355\106"}, {0x1304, "\002\023\356\065"}, {0x1305, "\002\023\360\212"}, {0x1306, "\002\023\360\213"}, {0x1307, "\002\023\365\315"}, {0x1308, "\002\023\366\301"}, {0x1309, "\002\023\357\157"}, {0x130A, "\002\023\356\206"}, {0x130B, "\002\023\355\021"}, {0x130C, "\002\023\360\317"}, {0x130D, "\002\023\356\205"}, {0x130E, "\002\023\356\073"}, {0x1310, "\002\023\366\276"}, {0x1312, "\002\023\366\275"}, {0x1313, "\002\023\366\273"}, {0x1314, "\002\023\366\277"}, {0x1315, "\002\023\366\274"}, {0x1318, "\002\023\366\212"}, {0x1319, "\002\023\366\177"}, {0x131A, "\002\023\360\273"}, {0x131B, "\002\023\360\271"}, {0x131C, "\002\023\366\213"}, {0x131D, "\002\023\360\272"}, {0x131E, "\002\023\360\274"}, {0x1320, "\002\023\375\203"}, {0x1321, "\002\023\362\006"}, {0x1322, "\002\023\356\131"}, {0x1323, "\002\023\355\074"}, {0x1324, "\002\023\356\132"}, {0x1325, "\002\023\362\004"}, {0x1326, "\002\023\355\101"}, {0x1327, "\002\023\375\201"}, {0x1328, "\002\023\375\304"}, {0x1329, "\002\023\375\302"}, {0x132A, "\002\023\375\300"}, {0x132B, "\002\023\375\276"}, {0x132C, "\002\023\375\305"}, {0x132D, "\002\023\375\277"}, {0x132E, "\002\023\375\301"}, {0x132F, "\002\023\375\303"}, {0x1330, "\002\023\372\226"}, {0x1331, "\002\023\372\222"}, {0x1332, "\002\023\356\243"}, {0x1333, "\002\023\355\126"}, {0x1334, "\002\023\372\227"}, {0x1335, "\002\023\372\216"}, {0x1336, "\002\023\356\035"}, {0x1337, "\002\023\372\225"}, {0x1338, "\002\023\375\273"}, {0x1339, "\002\023\357\373"}, {0x133A, "\002\023\357\371"}, {0x133B, "\002\023\355\201"}, {0x133C, "\002\023\356\051"}, {0x133D, "\002\023\362\046"}, {0x133E, "\002\023\357\372"}, {0x133F, "\002\023\375\272"}, {0x1340, "\002\023\375\355"}, {0x1341, "\002\023\375\354"}, {0x1342, "\002\023\375\352"}, {0x1343, "\002\023\375\350"}, {0x1344, "\002\023\375\356"}, {0x1345, "\002\023\375\351"}, {0x1346, "\002\023\375\353"}, {0x1348, "\002\023\366\132"}, {0x1349, "\002\023\357\153"}, {0x134A, "\002\023\356\202"}, {0x134B, "\002\023\355\227"}, {0x134C, "\002\023\356\204"}, {0x134D, "\002\023\366\056"}, {0x134E, "\002\023\356\016"}, {0x134F, "\002\023\366\124"}, {0x1350, "\002\023\373\326"}, {0x1351, "\002\023\361\217"}, {0x1352, "\002\023\355\235"}, {0x1353, "\002\023\331"}, {0x1354, "\002\023\355\174"}, {0x1355, "\002\023\356\377"}, {0x1356, "\002\023\355\275"}, {0x1357, "\002\023\373\320"}, {0x1358, "\002\023\374\171"}, {0x1359, "\002\023\371\056"}, {0x135A, "\002\023\366\131"}, {0x1361, "\355\075\023"}, {0x1362, "\037\334"}, {0x1363, "\332\023"}, {0x1364, "\356\106\334"}, {0x1365, "\355\105\334"}, {0x1366, "\355\105\007\373\304\334"}, {0x1367, "\037\355\315\334"}, {0x1368, "\355\047\007\357\270\334"}, {0x1369, "\024\334\107"}, {0x136A, "\024\334\127"}, {0x136B, "\024\334\136"}, {0x136C, "\024\334\221"}, {0x136D, "\024\334\231"}, {0x136E, "\024\334\256"}, {0x136F, "\024\334\253"}, {0x1370, "\024\334\227"}, {0x1371, "\024\334\260"}, {0x1372, "\211\334\355\036"}, {0x1373, "\211\334\356\052"}, {0x1374, "\211\334\357\367"}, {0x1375, "\211\334\373\375"}, {0x1376, "\211\334\357\103"}, {0x1377, "\211\334\374\353"}, {0x1378, "\211\334\374\354"}, {0x1379, "\211\334\374\002"}, {0x137A, "\211\334\374\001"}, {0x137B, "\211\334\355\247"}, {0x137C, "\211\334\355\036\355\273"}, {0x13A0, "\002\126\063"}, {0x13A1, "\002\126\220"}, {0x13A2, "\002\126\103"}, {0x13A3, "\002\126\064"}, {0x13A4, "\002\126\113"}, {0x13A5, "\002\126\376\373"}, {0x13A6, "\002\126\355\021"}, {0x13A7, "\002\126\241"}, {0x13A8, "\002\126\355\256"}, {0x13A9, "\002\126\366\255"}, {0x13AA, "\002\126\356\073"}, {0x13AB, "\002\126\357\157"}, {0x13AC, "\002\126\366\272"}, {0x13AD, "\002\126\316"}, {0x13AE, "\002\126\356\020"}, {0x13AF, "\002\126\355\257"}, {0x13B0, "\002\126\355\111"}, {0x13B1, "\002\126\360\336"}, {0x13B2, "\002\126\367\164"}, {0x13B3, "\002\126\033"}, {0x13B4, "\002\126\356\224"}, {0x13B5, "\002\126\356\101"}, {0x13B6, "\002\126\355\172"}, {0x13B7, "\002\126\356\354"}, {0x13B8, "\002\126\370\243"}, {0x13B9, "\002\126\301"}, {0x13BA, "\002\126\356\360"}, {0x13BB, "\002\126\355\232"}, {0x13BC, "\002\126\355\140"}, {0x13BD, "\002\126\356\226"}, {0x13BE, "\002\126\355\002"}, {0x13BF, "\002\126\360\330"}, {0x13C0, "\002\126\371\103"}, {0x13C1, "\002\126\356\233"}, {0x13C2, "\002\126\245"}, {0x13C3, "\002\126\355\115"}, {0x13C4, "\002\126\355\342"}, {0x13C5, "\002\126\372\064"}, {0x13C6, "\002\126\361\017"}, {0x13C7, "\002\126\361\021"}, {0x13C8, "\002\126\361\020"}, {0x13C9, "\002\126\370\073"}, {0x13CA, "\002\126\370\074"}, {0x13CB, "\002\126\370\076"}, {0x13CC, "\002\126\355\006"}, {0x13CD, "\002\126\224"}, {0x13CE, "\002\126\356\123"}, {0x13CF, "\002\126\355\277"}, {0x13D0, "\002\126\355\072"}, {0x13D1, "\002\126\357\036"}, {0x13D2, "\002\126\375\070"}, {0x13D3, "\002\126\355\004"}, {0x13D4, "\002\126\313"}, {0x13D5, "\002\126\356\170"}, {0x13D6, "\002\126\355\303"}, {0x13D7, "\002\126\356\064"}, {0x13D8, "\002\126\355\221"}, {0x13D9, "\002\126\355\254"}, {0x13DA, "\002\126\360\216"}, {0x13DB, "\002\126\365\353"}, {0x13DC, "\002\126\360\214"}, {0x13DD, "\002\126\362\016"}, {0x13DE, "\002\126\362\026"}, {0x13DF, "\002\126\362\023"}, {0x13E0, "\002\126\362\024"}, {0x13E1, "\002\126\362\025"}, {0x13E2, "\002\126\375\227"}, {0x13E3, "\002\126\355\201"}, {0x13E4, "\002\126\356\051"}, {0x13E5, "\002\126\357\371"}, {0x13E6, "\002\126\357\372"}, {0x13E7, "\002\126\357\373"}, {0x13E8, "\002\126\375\274"}, {0x13E9, "\002\126\355\052"}, {0x13EA, "\002\126\356\273"}, {0x13EB, "\002\126\355\364"}, {0x13EC, "\002\126\355\152"}, {0x13ED, "\002\126\362\110"}, {0x13EE, "\002\126\362\111"}, {0x13EF, "\002\126\307"}, {0x13F0, "\002\126\355\305"}, {0x13F1, "\002\126\003"}, {0x13F2, "\002\126\355\042"}, {0x13F3, "\002\126\355\153"}, {0x13F4, "\002\126\376\231"}, {0x1401, "\002\011\220"}, {0x1402, "\002\011\377\007"}, {0x1403, "\002\011\103"}, {0x1404, "\002\011\317"}, {0x1405, "\002\011\064"}, {0x1406, "\002\011\310"}, {0x1407, "\002\011\310\355\160"}, {0x1408, "\002\011\220\054"}, {0x1409, "\002\011\103\054"}, {0x140A, "\002\011\063"}, {0x140B, "\002\011\325"}, {0x140C, "\002\011\356\237"}, {0x140D, "\002\011\356\237\112\114\123"}, {0x140E, "\002\011\356\372"}, {0x140F, "\002\011\356\372\112\114\123"}, {0x1410, "\002\011\361\154"}, {0x1411, "\002\011\361\154\112\114\123"}, {0x1412, "\002\011\356\373"}, {0x1413, "\002\011\356\373\112\114\123"}, {0x1414, "\002\011\357\265"}, {0x1415, "\002\011\357\265\112\114\123"}, {0x1416, "\002\011\357\265\355\114"}, {0x1417, "\002\011\356\236"}, {0x1418, "\002\011\356\236\112\114\123"}, {0x1419, "\002\011\357\264"}, {0x141A, "\002\011\357\264\112\114\123"}, {0x141B, "\002\011\357\264\355\114"}, {0x141C, "\002\011\311"}, {0x141D, "\002\011\113\355\160"}, {0x141E, "\002\011\355\226\007\355\230"}, {0x141F, "\002\011\355\165\021\062"}, {0x1420, "\002\011\355\165\021\067"}, {0x1421, "\002\011\355\165\356\007\322"}, {0x1422, "\002\011\355\165\356\007\346"}, {0x1423, "\002\011\355\165\356\007\044\053"}, {0x1424, "\002\011\355\165\274"}, {0x1425, "\002\011\355\165\070\021\062"}, {0x1426, "\002\011\355\165\360\217\362\037\360\002\365\116"}, {0x1427, "\002\011\355\165\037\355\141"}, {0x1428, "\002\011\355\165\355\130\243\365\115"}, {0x1429, "\002\011\355\165\057\215"}, {0x142A, "\002\011\355\165\355\016\015\050\101"}, {0x142B, "\002\011\356\012"}, {0x142C, "\002\011\367\221"}, {0x142D, "\002\011\372\105"}, {0x142E, "\002\011\362\336"}, {0x142F, "\002\011\355\174"}, {0x1430, "\002\011\373\332"}, {0x1431, "\002\011\355\235"}, {0x1432, "\002\011\361\241"}, {0x1433, "\002\011\355\275"}, {0x1434, "\002\011\361\242"}, {0x1435, "\002\011\361\242\355\160"}, {0x1436, "\002\011\356\020\054"}, {0x1437, "\002\011\355\257\054"}, {0x1438, "\002\011\331"}, {0x1439, "\002\011\373\327"}, {0x143A, "\002\011\361\223"}, {0x143B, "\002\011\361\223\112\114\123"}, {0x143C, "\002\011\361\221"}, {0x143D, "\002\011\361\221\112\114\123"}, {0x143E, "\002\011\361\224"}, {0x143F, "\002\011\361\224\112\114\123"}, {0x1440, "\002\011\361\222"}, {0x1441, "\002\011\361\222\112\114\123"}, {0x1442, "\002\011\361\225"}, {0x1443, "\002\011\361\225\112\114\123"}, {0x1444, "\002\011\361\220"}, {0x1445, "\002\011\361\220\112\114\123"}, {0x1446, "\002\011\357\300"}, {0x1447, "\002\011\357\300\112\114\123"}, {0x1448, "\002\011\357\300\355\160"}, {0x1449, "\002\011\355\023"}, {0x144A, "\002\011\355\023\112\114\123"}, {0x144B, "\002\011\240\054"}, {0x144C, "\002\011\355\303"}, {0x144D, "\002\011\375\362"}, {0x144E, "\002\011\355\221"}, {0x144F, "\002\011\375\365"}, {0x1450, "\002\011\355\200"}, {0x1451, "\002\011\356\265"}, {0x1452, "\002\011\356\265\355\160"}, {0x1453, "\002\011\356\170\054"}, {0x1454, "\002\011\356\064\054"}, {0x1455, "\002\011\313"}, {0x1456, "\002\011\375\360"}, {0x1457, "\002\011\362\034"}, {0x1458, "\002\011\362\034\112\114\123"}, {0x1459, "\002\011\362\031"}, {0x145A, "\002\011\362\031\112\114\123"}, {0x145B, "\002\011\362\035"}, {0x145C, "\002\011\362\035\112\114\123"}, {0x145D, "\002\011\362\032"}, {0x145E, "\002\011\362\032\112\114\123"}, {0x145F, "\002\011\362\036"}, {0x1460, "\002\011\362\036\112\114\123"}, {0x1461, "\002\011\362\027"}, {0x1462, "\002\011\362\027\112\114\123"}, {0x1463, "\002\011\357\365"}, {0x1464, "\002\011\357\365\112\114\123"}, {0x1465, "\002\011\357\365\355\114"}, {0x1466, "\002\011\262"}, {0x1467, "\002\011\362\057"}, {0x1468, "\002\011\362\055"}, {0x1469, "\002\011\362\056"}, {0x146A, "\002\011\355\102"}, {0x146B, "\002\011\356\222"}, {0x146C, "\002\011\370\120"}, {0x146D, "\002\011\355\334"}, {0x146E, "\002\011\370\123"}, {0x146F, "\002\011\355\171"}, {0x1470, "\002\011\361\022"}, {0x1471, "\002\011\361\022\355\160"}, {0x1472, "\002\011\241"}, {0x1473, "\002\011\370\115"}, {0x1474, "\002\011\361\013"}, {0x1475, "\002\011\361\013\112\114\123"}, {0x1476, "\002\011\361\011"}, {0x1477, "\002\011\361\011\112\114\123"}, {0x1478, "\002\011\361\014"}, {0x1479, "\002\011\361\014\112\114\123"}, {0x147A, "\002\011\361\012"}, {0x147B, "\002\011\361\012\112\114\123"}, {0x147C, "\002\011\361\015"}, {0x147D, "\002\011\361\015\112\114\123"}, {0x147E, "\002\011\361\010"}, {0x147F, "\002\011\361\010\112\114\123"}, {0x1480, "\002\011\357\224"}, {0x1481, "\002\011\357\224\112\114\123"}, {0x1482, "\002\011\357\224\355\114"}, {0x1483, "\002\011\354"}, {0x1484, "\002\011\361\007"}, {0x1485, "\002\011\370\121\356\174\213\357\044"}, {0x1486, "\002\011\370\022\356\174\213\357\044"}, {0x1487, "\002\011\370\041\356\174\213\357\044"}, {0x1488, "\002\011\367\360\356\174\213\357\044"}, {0x1489, "\002\011\355\073"}, {0x148A, "\002\011\375\157"}, {0x148B, "\002\011\357\353"}, {0x148C, "\002\011\375\160"}, {0x148D, "\002\011\355\301"}, {0x148E, "\002\011\362\002"}, {0x148F, "\002\011\362\002\355\160"}, {0x1490, "\002\011\355\026"}, {0x1491, "\002\011\375\156"}, {0x1492, "\002\011\361\376"}, {0x1493, "\002\011\361\376\112\114\123"}, {0x1494, "\002\011\361\374"}, {0x1495, "\002\011\361\374\112\114\123"}, {0x1496, "\002\011\361\377"}, {0x1497, "\002\011\361\377\112\114\123"}, {0x1498, "\002\011\361\375"}, {0x1499, "\002\011\361\375\112\114\123"}, {0x149A, "\002\011\362\001"}, {0x149B, "\002\011\362\001\112\114\123"}, {0x149C, "\002\011\361\373"}, {0x149D, "\002\011\361\373\112\114\123"}, {0x149E, "\002\011\357\354"}, {0x149F, "\002\011\357\354\112\114\123"}, {0x14A0, "\002\011\357\354\355\114"}, {0x14A1, "\002\011\361\364"}, {0x14A2, "\002\011\356\261\355\147"}, {0x14A3, "\002\011\356\360"}, {0x14A4, "\002\011\371\062"}, {0x14A5, "\002\011\355\232"}, {0x14A6, "\002\011\371\072"}, {0x14A7, "\002\011\355\140"}, {0x14A8, "\002\011\361\110"}, {0x14A9, "\002\011\361\110\355\160"}, {0x14AA, "\002\011\301"}, {0x14AB, "\002\011\371\060"}, {0x14AC, "\002\011\361\077"}, {0x14AD, "\002\011\361\077\112\114\123"}, {0x14AE, "\002\011\361\074"}, {0x14AF, "\002\011\361\074\112\114\123"}, {0x14B0, "\002\011\361\100"}, {0x14B1, "\002\011\361\100\112\114\123"}, {0x14B2, "\002\011\361\075"}, {0x14B3, "\002\011\361\075\112\114\123"}, {0x14B4, "\002\011\361\101"}, {0x14B5, "\002\011\361\101\112\114\123"}, {0x14B6, "\002\011\361\072"}, {0x14B7, "\002\011\361\072\112\114\123"}, {0x14B8, "\002\011\357\242"}, {0x14B9, "\002\011\357\242\112\114\123"}, {0x14BA, "\002\011\357\242\355\114"}, {0x14BB, "\002\011\300"}, {0x14BC, "\002\011\300\112\114\123"}, {0x14BD, "\002\011\370\356"}, {0x14BE, "\002\011\300\360\062"}, {0x14BF, "\002\011\300\355\147"}, {0x14C0, "\002\011\356\233"}, {0x14C1, "\002\011\372\066"}, {0x14C2, "\002\011\245"}, {0x14C3, "\002\011\372\067"}, {0x14C4, "\002\011\355\115"}, {0x14C5, "\002\011\361\137"}, {0x14C6, "\002\011\361\137\355\160"}, {0x14C7, "\002\011\355\002"}, {0x14C8, "\002\011\361\135"}, {0x14C9, "\002\011\361\125"}, {0x14CA, "\002\011\361\125\112\114\123"}, {0x14CB, "\002\011\361\124"}, {0x14CC, "\002\011\361\124\112\114\123"}, {0x14CD, "\002\011\357\254"}, {0x14CE, "\002\011\357\254\112\114\123"}, {0x14CF, "\002\011\357\254\355\114"}, {0x14D0, "\002\011\242"}, {0x14D1, "\002\011\355\340\054"}, {0x14D2, "\002\011\371\236"}, {0x14D3, "\002\011\356\224"}, {0x14D4, "\002\011\370\251"}, {0x14D5, "\002\011\356\101"}, {0x14D6, "\002\011\370\253"}, {0x14D7, "\002\011\355\172"}, {0x14D8, "\002\011\361\052"}, {0x14D9, "\002\011\361\052\355\160"}, {0x14DA, "\002\011\033"}, {0x14DB, "\002\011\370\246"}, {0x14DC, "\002\011\361\046"}, {0x14DD, "\002\011\361\046\112\114\123"}, {0x14DE, "\002\011\361\043"}, {0x14DF, "\002\011\361\043\112\114\123"}, {0x14E0, "\002\011\361\047"}, {0x14E1, "\002\011\361\047\112\114\123"}, {0x14E2, "\002\011\361\044"}, {0x14E3, "\002\011\361\044\112\114\123"}, {0x14E4, "\002\011\361\050"}, {0x14E5, "\002\011\361\050\112\114\123"}, {0x14E6, "\002\011\361\042"}, {0x14E7, "\002\011\361\042\112\114\123"}, {0x14E8, "\002\011\361\045"}, {0x14E9, "\002\011\361\045\112\114\123"}, {0x14EA, "\002\011\212"}, {0x14EB, "\002\011\212\112\114\123"}, {0x14EC, "\002\011\212\131"}, {0x14ED, "\002\011\356\123"}, {0x14EE, "\002\011\375\073"}, {0x14EF, "\002\011\355\277"}, {0x14F0, "\002\011\375\077"}, {0x14F1, "\002\011\355\072"}, {0x14F2, "\002\011\361\354"}, {0x14F3, "\002\011\361\354\355\160"}, {0x14F4, "\002\011\355\006"}, {0x14F5, "\002\011\375\071"}, {0x14F6, "\002\011\361\334"}, {0x14F7, "\002\011\361\334\112\114\123"}, {0x14F8, "\002\011\361\330"}, {0x14F9, "\002\011\361\330\112\114\123"}, {0x14FA, "\002\011\361\335"}, {0x14FB, "\002\011\361\335\112\114\123"}, {0x14FC, "\002\011\361\332"}, {0x14FD, "\002\011\361\332\112\114\123"}, {0x14FE, "\002\011\361\336"}, {0x14FF, "\002\011\361\336\112\114\123"}, {0x1500, "\002\011\357\335"}, {0x1501, "\002\011\357\335\112\114\123"}, {0x1502, "\002\011\357\336"}, {0x1503, "\002\011\357\336\112\114\123"}, {0x1504, "\002\011\357\336\355\114"}, {0x1505, "\002\011\224"}, {0x1506, "\002\011\224\360\062"}, {0x1507, "\002\011\357\036"}, {0x1508, "\002\011\224\355\071"}, {0x1509, "\002\011\374\342\112\007\371\024"}, {0x150A, "\002\011\374\343\355\114"}, {0x150B, "\002\011\374\211\355\114"}, {0x150C, "\002\011\374\372\355\114"}, {0x150D, "\002\011\375\035\355\114"}, {0x150E, "\002\011\374\344\355\114"}, {0x150F, "\002\011\375\034\355\114"}, {0x1510, "\002\011\356\313"}, {0x1511, "\002\011\356\312"}, {0x1512, "\002\011\363\344"}, {0x1513, "\002\011\356\056"}, {0x1514, "\002\011\363\346"}, {0x1515, "\002\011\355\034"}, {0x1516, "\002\011\363\341"}, {0x1517, "\002\011\360\131"}, {0x1518, "\002\011\360\131\112\114\123"}, {0x1519, "\002\011\360\126"}, {0x151A, "\002\011\360\126\112\114\123"}, {0x151B, "\002\011\360\132"}, {0x151C, "\002\011\360\132\112\114\123"}, {0x151D, "\002\011\360\127"}, {0x151E, "\002\011\360\127\112\114\123"}, {0x151F, "\002\011\360\133"}, {0x1520, "\002\011\360\133\112\114\123"}, {0x1521, "\002\011\360\125"}, {0x1522, "\002\011\360\125\112\114\123"}, {0x1523, "\002\011\360\130"}, {0x1524, "\002\011\360\130\112\114\123"}, {0x1525, "\002\011\357\077"}, {0x1526, "\002\011\355\305"}, {0x1527, "\002\011\376\234"}, {0x1528, "\002\011\003"}, {0x1529, "\002\011\376\235"}, {0x152A, "\002\011\355\042"}, {0x152B, "\002\011\356\275"}, {0x152C, "\002\011\356\275\355\160"}, {0x152D, "\002\011\307"}, {0x152E, "\002\011\362\140"}, {0x152F, "\002\011\362\133"}, {0x1530, "\002\011\362\133\112\114\123"}, {0x1531, "\002\011\362\131"}, {0x1532, "\002\011\362\131\112\114\123"}, {0x1533, "\002\011\362\134"}, {0x1534, "\002\011\362\134\112\114\123"}, {0x1535, "\002\011\362\132"}, {0x1536, "\002\011\362\132\112\114\123"}, {0x1537, "\002\011\362\135"}, {0x1538, "\002\011\362\135\112\114\123"}, {0x1539, "\002\011\362\127"}, {0x153A, "\002\011\362\127\112\114\123"}, {0x153B, "\002\011\360\016"}, {0x153C, "\002\011\360\016\112\114\123"}, {0x153D, "\002\011\360\016\355\114"}, {0x153E, "\002\011\267"}, {0x153F, "\002\011\267\112\363\125"}, {0x1540, "\002\011\267\112\114\123"}, {0x1541, "\002\011\003\355\147"}, {0x1542, "\002\011\356\042"}, {0x1543, "\002\011\356\042\365\121"}, {0x1544, "\002\011\356\224\112\114\123"}, {0x1545, "\002\011\374\175"}, {0x1546, "\002\011\355\351"}, {0x1547, "\002\011\374\205"}, {0x1548, "\002\011\355\176"}, {0x1549, "\002\011\374\206"}, {0x154A, "\002\011\355\172\112\114\123"}, {0x154B, "\002\011\324"}, {0x154C, "\002\011\357\322"}, {0x154D, "\002\011\033\112\114\123"}, {0x154E, "\002\011\361\301"}, {0x154F, "\002\011\361\301\112\114\123"}, {0x1550, "\002\011\170"}, {0x1551, "\002\011\170\112\114\123"}, {0x1552, "\002\011\170\131"}, {0x1553, "\002\011\356\204"}, {0x1554, "\002\011\366\135"}, {0x1555, "\002\011\356\202"}, {0x1556, "\002\011\366\141"}, {0x1557, "\002\011\356\016"}, {0x1558, "\002\011\366\142"}, {0x1559, "\002\011\355\227"}, {0x155A, "\002\011\366\133"}, {0x155B, "\002\011\360\256"}, {0x155C, "\002\011\360\256\112\114\123"}, {0x155D, "\002\011\355\064"}, {0x155E, "\002\011\356\132"}, {0x155F, "\002\011\356\132\357\113"}, {0x1560, "\002\011\356\131"}, {0x1561, "\002\011\356\131\357\113"}, {0x1562, "\002\011\357\361"}, {0x1563, "\002\011\357\361\357\113"}, {0x1564, "\002\011\355\101"}, {0x1565, "\002\011\362\010"}, {0x1566, "\002\011\355\074"}, {0x1567, "\002\011\357\357"}, {0x1568, "\002\011\362\007"}, {0x1569, "\002\011\362\007\112\114\123"}, {0x156A, "\002\011\356\261"}, {0x156B, "\002\011\375\311"}, {0x156C, "\002\011\375\310"}, {0x156D, "\002\011\362\054"}, {0x156E, "\002\011\355\131"}, {0x156F, "\002\011\375\307"}, {0x1570, "\002\011\375\345"}, {0x1571, "\002\011\375\337"}, {0x1572, "\002\011\375\340"}, {0x1573, "\002\011\375\336"}, {0x1574, "\002\011\356\020\213\355\343"}, {0x1575, "\002\011\355\257\213\355\343"}, {0x1576, "\002\011\357\174\213\355\343"}, {0x1577, "\002\011\355\111\213\355\343"}, {0x1578, "\002\011\357\175\213\355\343"}, {0x1579, "\002\011\316\213\355\343"}, {0x157A, "\002\011\356\213\213\355\343"}, {0x157B, "\002\011\240\213\355\343"}, {0x157C, "\002\011\240\213\371\371"}, {0x157D, "\002\011\366\361"}, {0x157E, "\002\011\374\032"}, {0x157F, "\002\011\357\303"}, {0x1580, "\002\011\374\034"}, {0x1581, "\002\011\357\304"}, {0x1582, "\002\011\374\035"}, {0x1583, "\002\011\356\247"}, {0x1584, "\002\011\374\030"}, {0x1585, "\002\011\355\175"}, {0x1586, "\002\011\362\022"}, {0x1587, "\002\011\362\020"}, {0x1588, "\002\011\362\021"}, {0x1589, "\002\011\362\017"}, {0x158A, "\002\011\356\042\112\114\123"}, {0x158B, "\002\011\355\351\112\114\123"}, {0x158C, "\002\011\355\176\112\114\123"}, {0x158D, "\002\011\324\112\114\123"}, {0x158E, "\002\011\371\232"}, {0x158F, "\002\011\371\216"}, {0x1590, "\002\011\371\234"}, {0x1591, "\002\011\356\227"}, {0x1592, "\002\011\371\235"}, {0x1593, "\002\011\355\070"}, {0x1594, "\002\011\371\231"}, {0x1595, "\002\011\355\340"}, {0x1596, "\002\011\371\307"}, {0x1597, "\002\011\356\313\355\147"}, {0x1598, "\002\011\356\312\355\147"}, {0x1599, "\002\011\356\056\355\147"}, {0x159A, "\002\011\355\034\355\147"}, {0x159B, "\002\011\356\132\112\114\356\003"}, {0x159C, "\002\011\356\131\112\114\356\003"}, {0x159D, "\002\011\355\101\112\114\356\003"}, {0x159E, "\002\011\355\074\112\114\356\003"}, {0x159F, "\002\011\356\261\112\114\356\003"}, {0x15A0, "\002\011\361\030"}, {0x15A1, "\002\011\370\164"}, {0x15A2, "\002\011\361\031"}, {0x15A3, "\002\011\370\165"}, {0x15A4, "\002\011\357\230"}, {0x15A5, "\002\011\370\162"}, {0x15A6, "\002\011\370\155"}, {0x15A7, "\002\011\356\132\355\313"}, {0x15A8, "\002\011\356\131\355\313"}, {0x15A9, "\002\011\357\361\355\313"}, {0x15AA, "\002\011\355\101\355\313"}, {0x15AB, "\002\011\362\010\355\313"}, {0x15AC, "\002\011\355\074\355\313"}, {0x15AD, "\002\011\357\357\355\313"}, {0x15AE, "\002\011\356\261\355\313"}, {0x15AF, "\002\011\336\363\023"}, {0x15B0, "\002\011\220\355\071"}, {0x15B1, "\002\011\103\355\071"}, {0x15B2, "\002\011\064\355\071"}, {0x15B3, "\002\011\063\355\071"}, {0x15B4, "\002\011\356\237\355\071"}, {0x15B5, "\002\011\356\372\355\071"}, {0x15B6, "\002\011\356\373\355\071"}, {0x15B7, "\002\011\356\236\355\071"}, {0x15B8, "\002\011\356\233\355\071"}, {0x15B9, "\002\011\245\355\071"}, {0x15BA, "\002\011\355\115\355\071"}, {0x15BB, "\002\011\355\002\355\071"}, {0x15BC, "\002\011\356\222\355\071"}, {0x15BD, "\002\011\355\334\355\071"}, {0x15BE, "\002\011\355\171\355\071"}, {0x15BF, "\002\011\241\355\071"}, {0x15C0, "\002\011\356\020\355\147"}, {0x15C1, "\002\011\355\257\355\147"}, {0x15C2, "\002\011\355\111\355\147"}, {0x15C3, "\002\011\316\355\147"}, {0x15C4, "\002\011\366\220\054"}, {0x15C5, "\002\011\366\217\054"}, {0x15C6, "\002\011\366\215\054"}, {0x15C7, "\002\011\366\222\054"}, {0x15C8, "\002\011\366\216\054"}, {0x15C9, "\002\011\355\110\054"}, {0x15CA, "\002\011\357\317\054"}, {0x15CB, "\002\011\355\176\054"}, {0x15CC, "\002\011\356\037\054"}, {0x15CD, "\002\011\356\042\054"}, {0x15CE, "\002\011\355\351\054"}, {0x15CF, "\002\011\324\054"}, {0x15D0, "\002\011\372\134\054"}, {0x15D1, "\002\011\356\373\054"}, {0x15D2, "\002\011\372\132\054"}, {0x15D3, "\002\011\356\237\054"}, {0x15D4, "\002\011\356\372\054"}, {0x15D5, "\002\011\356\236\054"}, {0x15D6, "\002\011\367\116\054"}, {0x15D7, "\002\011\367\115\054"}, {0x15D8, "\002\011\367\113\054"}, {0x15D9, "\002\011\367\117\054"}, {0x15DA, "\002\011\367\114\054"}, {0x15DB, "\002\011\367\112\054"}, {0x15DC, "\002\011\362\006\054"}, {0x15DD, "\002\011\355\101\054"}, {0x15DE, "\002\011\362\004\054"}, {0x15DF, "\002\011\356\132\054"}, {0x15E0, "\002\011\356\131\054"}, {0x15E1, "\002\011\355\074\054"}, {0x15E2, "\002\011\375\312\054"}, {0x15E3, "\002\011\362\056\054"}, {0x15E4, "\002\011\375\306\054"}, {0x15E5, "\002\011\362\057\054"}, {0x15E6, "\002\011\362\055\054"}, {0x15E7, "\002\011\355\102\054"}, {0x15E8, "\002\011\361\217\054"}, {0x15E9, "\002\011\355\275\054"}, {0x15EA, "\002\011\356\377\054"}, {0x15EB, "\002\011\355\174\054"}, {0x15EC, "\002\011\355\235\054"}, {0x15ED, "\002\011\331\054"}, {0x15EE, "\002\011\355\023\054"}, {0x15EF, "\002\011\357\157\054"}, {0x15F0, "\002\011\356\073\054"}, {0x15F1, "\002\011\356\205\054"}, {0x15F2, "\002\011\360\317\054"}, {0x15F3, "\002\011\356\206\054"}, {0x15F4, "\002\011\355\021\054"}, {0x15F5, "\002\011\370\012\054"}, {0x15F6, "\002\011\355\263\054"}, {0x15F7, "\002\011\370\007\054"}, {0x15F8, "\002\011\356\344\054"}, {0x15F9, "\002\011\356\343\054"}, {0x15FA, "\002\011\355\056\054"}, {0x15FB, "\002\011\370\036\054"}, {0x15FC, "\002\011\370\035\054"}, {0x15FD, "\002\011\370\033\054"}, {0x15FE, "\002\011\370\037\054"}, {0x15FF, "\002\011\370\034\054"}, {0x1600, "\002\011\370\032\054"}, {0x1601, "\002\011\361\006\054"}, {0x1602, "\002\011\355\342\054"}, {0x1603, "\002\011\355\115\054"}, {0x1604, "\002\011\355\142\054"}, {0x1605, "\002\011\356\233\054"}, {0x1606, "\002\011\245\054"}, {0x1607, "\002\011\355\002\054"}, {0x1608, "\002\011\356\226\054"}, {0x1609, "\002\011\355\140\054"}, {0x160A, "\002\011\355\336\054"}, {0x160B, "\002\011\356\360\054"}, {0x160C, "\002\011\355\232\054"}, {0x160D, "\002\011\301\054"}, {0x160E, "\002\011\355\153\054"}, {0x160F, "\002\011\355\042\054"}, {0x1610, "\002\011\362\114\054"}, {0x1611, "\002\011\355\305\054"}, {0x1612, "\002\011\003\054"}, {0x1613, "\002\011\307\054"}, {0x1614, "\002\011\357\142\054"}, {0x1615, "\002\011\357\142\355\147"}, {0x1616, "\002\011\360\213\054"}, {0x1617, "\002\011\360\212\054"}, {0x1618, "\002\011\356\065\054"}, {0x1619, "\002\011\357\141\054"}, {0x161A, "\002\011\357\141\355\147"}, {0x161B, "\002\011\355\106\054"}, {0x161C, "\002\011\365\313\054"}, {0x161D, "\002\011\365\312\054"}, {0x161E, "\002\011\365\310\054"}, {0x161F, "\002\011\365\314\054"}, {0x1620, "\002\011\365\311\054"}, {0x1621, "\002\011\365\307\054"}, {0x1622, "\002\011\356\354\054"}, {0x1623, "\002\011\355\172\054"}, {0x1624, "\002\011\050\054"}, {0x1625, "\002\011\356\224\054"}, {0x1626, "\002\011\356\101\054"}, {0x1627, "\002\011\033\054"}, {0x1628, "\002\011\365\323\054"}, {0x1629, "\002\011\365\322\054"}, {0x162A, "\002\011\365\320\054"}, {0x162B, "\002\011\365\324\054"}, {0x162C, "\002\011\365\321\054"}, {0x162D, "\002\011\360\214\054"}, {0x162E, "\002\011\370\161\054"}, {0x162F, "\002\011\361\031\054"}, {0x1630, "\002\011\370\160\054"}, {0x1631, "\002\011\370\163\054"}, {0x1632, "\002\011\361\030\054"}, {0x1633, "\002\011\357\230\054"}, {0x1634, "\002\011\375\226\054"}, {0x1635, "\002\011\362\021\054"}, {0x1636, "\002\011\375\225\054"}, {0x1637, "\002\011\362\022\054"}, {0x1638, "\002\011\362\020\054"}, {0x1639, "\002\011\362\017\054"}, {0x163A, "\002\011\362\025\054"}, {0x163B, "\002\011\362\024\054"}, {0x163C, "\002\011\375\224\054"}, {0x163D, "\002\011\362\026\054"}, {0x163E, "\002\011\362\023\054"}, {0x163F, "\002\011\362\016\054"}, {0x1640, "\002\011\362\150\054"}, {0x1641, "\002\011\356\137\054"}, {0x1642, "\002\011\356\276\054"}, {0x1643, "\002\011\355\371\054"}, {0x1644, "\002\011\356\277\054"}, {0x1645, "\002\011\355\103\054"}, {0x1646, "\002\011\273\054"}, {0x1647, "\002\011\273\054\055"}, {0x1648, "\002\011\365\350\054"}, {0x1649, "\002\011\365\347\054"}, {0x164A, "\002\011\365\345\054"}, {0x164B, "\002\011\356\167\054"}, {0x164C, "\002\011\365\346\054"}, {0x164D, "\002\011\356\067\054"}, {0x164E, "\002\011\357\036\054"}, {0x164F, "\002\011\355\072\054"}, {0x1650, "\002\011\356\044\054"}, {0x1651, "\002\011\356\123\054"}, {0x1652, "\002\011\355\277\054"}, {0x1653, "\002\011\355\006\054"}, {0x1654, "\002\011\360\124\054"}, {0x1655, "\002\011\356\056\054"}, {0x1656, "\002\011\356\153\054"}, {0x1657, "\002\011\356\313\054"}, {0x1658, "\002\011\356\312\054"}, {0x1659, "\002\011\355\034\054"}, {0x165A, "\002\011\357\077\054"}, {0x165B, "\002\011\357\373\054"}, {0x165C, "\002\011\357\372\054"}, {0x165D, "\002\011\362\046\054"}, {0x165E, "\002\011\356\051\054"}, {0x165F, "\002\011\357\371\054"}, {0x1660, "\002\011\355\201\054"}, {0x1661, "\002\011\361\372\054"}, {0x1662, "\002\011\355\301\054"}, {0x1663, "\002\011\357\352\054"}, {0x1664, "\002\011\355\073\054"}, {0x1665, "\002\011\357\353\054"}, {0x1666, "\002\011\355\026\054"}, {0x1667, "\002\011\375\317\054"}, {0x1668, "\002\011\375\316\054"}, {0x1669, "\002\011\375\314\054"}, {0x166A, "\002\011\375\320\054"}, {0x166B, "\002\011\375\315\054"}, {0x166C, "\002\011\375\313\054"}, {0x166D, "\057\002\011\356\343"}, {0x166E, "\037\002\011"}, {0x166F, "\002\011\373\337"}, {0x1670, "\002\011\371\211"}, {0x1671, "\002\011\371\311"}, {0x1672, "\002\011\371\314"}, {0x1673, "\002\011\371\312"}, {0x1674, "\002\011\371\315"}, {0x1675, "\002\011\371\310"}, {0x1676, "\002\011\371\313"}, {0x1680, "\355\075\312"}, {0x1681, "\001\312\363\111"}, {0x1682, "\001\312\370\217"}, {0x1683, "\001\312\366\057"}, {0x1684, "\001\312\374\216"}, {0x1685, "\001\312\371\246"}, {0x1686, "\001\312\375\366"}, {0x1687, "\001\312\365\175"}, {0x1688, "\001\312\375\212"}, {0x1689, "\001\312\365\051"}, {0x168A, "\001\312\363\251"}, {0x168B, "\001\312\371\034"}, {0x168C, "\001\312\366\242"}, {0x168D, "\001\312\371\233"}, {0x168E, "\001\312\375\036"}, {0x168F, "\001\312\374\150"}, {0x1690, "\001\312\362\311"}, {0x1691, "\001\312\361\143"}, {0x1692, "\001\312\376\375"}, {0x1693, "\001\312\365\370"}, {0x1694, "\001\312\367\230"}, {0x1695, "\001\312\377\024"}, {0x1696, "\001\312\376\374"}, {0x1697, "\001\312\375\370"}, {0x1698, "\001\312\367\204"}, {0x1699, "\001\312\365\371"}, {0x169A, "\001\312\372\200"}, {0x169B, "\356\245\312"}, {0x169C, "\356\245\357\324\312"}, {0x16A0, "\001\135\366\136\366\137\356\204\355\064"}, {0x16A1, "\001\135\355\027"}, {0x16A2, "\001\135\376\005\376\003\113"}, {0x16A3, "\001\135\362\137"}, {0x16A4, "\001\135\267"}, {0x16A5, "\001\135\351"}, {0x16A6, "\001\135\375\177\375\175\375\200\356\261"}, {0x16A7, "\001\135\366\030"}, {0x16A8, "\001\135\362\344\063"}, {0x16A9, "\001\135\357\261\064"}, {0x16AA, "\001\135\362\301\063"}, {0x16AB, "\001\135\376\367"}, {0x16AC, "\001\135\372\117\064"}, {0x16AD, "\001\135\372\120\064"}, {0x16AE, "\001\135\064"}, {0x16AF, "\001\135\355\212"}, {0x16B0, "\001\135\357\260"}, {0x16B1, "\001\135\374\040\357\022\374\055\170"}, {0x16B2, "\001\135\367\375"}, {0x16B3, "\001\135\363\253"}, {0x16B4, "\001\135\367\374\354"}, {0x16B5, "\001\135\270"}, {0x16B6, "\001\135\356\011"}, {0x16B7, "\001\135\366\154\366\155\270"}, {0x16B8, "\001\135\366\145"}, {0x16B9, "\001\135\376\112\360\011\351"}, {0x16BA, "\001\135\366\313\240"}, {0x16BB, "\001\135\367\163\240"}, {0x16BC, "\001\135\366\311\240"}, {0x16BD, "\001\135\366\312\240"}, {0x16BE, "\001\135\371\113\372\006\371\111\242"}, {0x16BF, "\001\135\371\112\242"}, {0x16C0, "\001\135\371\101"}, {0x16C1, "\001\135\367\237\367\236\367\240\103"}, {0x16C2, "\001\135\130"}, {0x16C3, "\001\135\367\265\355\055"}, {0x16C4, "\001\135\366\156"}, {0x16C5, "\001\135\362\360\360\025"}, {0x16C6, "\001\135\362\357\063"}, {0x16C7, "\001\135\367\242\366\022"}, {0x16C8, "\001\135\372\210\372\204\355\023"}, {0x16C9, "\001\135\362\315\366\023"}, {0x16CA, "\001\135\374\367\224"}, {0x16CB, "\001\135\374\320\374\355\224"}, {0x16CC, "\001\135\374\356\224"}, {0x16CD, "\001\135\315"}, {0x16CE, "\001\135\273"}, {0x16CF, "\001\135\375\221\375\215\375\343\262"}, {0x16D0, "\001\135\375\344\262"}, {0x16D1, "\001\135\277"}, {0x16D2, "\001\135\363\117\363\115\363\123\336"}, {0x16D3, "\001\135\363\124\336"}, {0x16D4, "\001\135\372\151"}, {0x16D5, "\001\135\372\150"}, {0x16D6, "\001\135\365\377\365\376\130"}, {0x16D7, "\001\135\370\266\357\233\300"}, {0x16D8, "\001\135\370\254\300"}, {0x16D9, "\001\135\370\255\300"}, {0x16DA, "\001\135\370\142\370\132\370\207\212"}, {0x16DB, "\001\135\370\130"}, {0x16DC, "\001\135\367\216"}, {0x16DD, "\001\135\367\215"}, {0x16DE, "\001\135\365\173\365\352\277"}, {0x16DF, "\001\135\372\122\366\031\064"}, {0x16E0, "\001\135\365\372"}, {0x16E1, "\001\135\367\231"}, {0x16E2, "\001\135\365\143"}, {0x16E3, "\001\135\363\233"}, {0x16E4, "\001\135\363\247"}, {0x16E5, "\001\135\375\033"}, {0x16E6, "\001\135\376\206"}, {0x16E7, "\001\135\376\207"}, {0x16E8, "\001\135\376\205"}, {0x16E9, "\001\135\355\175"}, {0x16EA, "\001\135\355\030"}, {0x16EB, "\355\236\135\355\003"}, {0x16EC, "\355\236\135\371\036"}, {0x16ED, "\355\236\135\013\355\035"}, {0x16EE, "\022\135\362\362"}, {0x16EF, "\022\135\375\334"}, {0x16F0, "\022\135\363\112"}, {0x1780, "\001\157\241"}, {0x1781, "\001\157\355\056"}, {0x1782, "\001\157\355\171"}, {0x1783, "\001\157\355\263"}, {0x1784, "\001\157\356\227"}, {0x1785, "\001\157\355\026"}, {0x1786, "\001\157\355\242"}, {0x1787, "\001\157\355\301"}, {0x1788, "\001\157\375\140"}, {0x1789, "\001\157\357\065"}, {0x178A, "\001\157\355\004"}, {0x178B, "\001\157\355\131"}, {0x178C, "\001\157\355\254"}, {0x178D, "\001\157\362\054"}, {0x178E, "\001\157\371\316"}, {0x178F, "\001\157\313"}, {0x1790, "\001\157\355\074"}, {0x1791, "\001\157\355\200"}, {0x1792, "\001\157\355\101"}, {0x1793, "\001\157\355\115"}, {0x1794, "\001\157\355\054"}, {0x1795, "\001\157\355\126"}, {0x1796, "\001\157\355\275"}, {0x1797, "\001\157\356\035"}, {0x1798, "\001\157\355\140"}, {0x1799, "\001\157\355\042"}, {0x179A, "\001\157\355\176"}, {0x179B, "\001\157\355\172"}, {0x179C, "\001\157\356\134"}, {0x179D, "\001\157\355\154"}, {0x179E, "\001\157\356\056"}, {0x179F, "\001\157\355\006"}, {0x17A0, "\001\157\316"}, {0x17A1, "\001\157\033"}, {0x17A2, "\001\157\063"}, {0x17A3, "\042\073\157\063"}, {0x17A4, "\042\073\157\325"}, {0x17A5, "\042\073\157\103"}, {0x17A6, "\042\073\157\317"}, {0x17A7, "\042\073\157\113"}, {0x17A8, "\042\073\157\357\263"}, {0x17A9, "\042\073\157\344"}, {0x17AA, "\042\073\157\363\025"}, {0x17AB, "\042\073\157\374\173"}, {0x17AC, "\042\073\157\374\174"}, {0x17AD, "\042\073\157\370\244"}, {0x17AE, "\042\073\157\370\245"}, {0x17AF, "\042\073\157\220"}, {0x17B0, "\042\073\157\311"}, {0x17B1, "\042\073\157\310\362\061\107"}, {0x17B2, "\042\073\157\310\362\061\127"}, {0x17B3, "\042\073\157\335"}, {0x17B4, "\042\157\360\353\063"}, {0x17B5, "\042\157\360\353\325"}, {0x17B6, "\042\026\157\325"}, {0x17B7, "\042\026\157\103"}, {0x17B8, "\042\026\157\317"}, {0x17B9, "\042\026\157\376\376"}, {0x17BA, "\042\026\157\377\001"}, {0x17BB, "\042\026\157\113"}, {0x17BC, "\042\026\157\344"}, {0x17BD, "\042\026\157\356\236"}, {0x17BE, "\042\026\157\355\212"}, {0x17BF, "\042\026\157\376\377"}, {0x17C0, "\042\026\157\355\262"}, {0x17C1, "\042\026\157\220"}, {0x17C2, "\042\026\157\356\140"}, {0x17C3, "\042\026\157\311"}, {0x17C4, "\042\026\157\310"}, {0x17C5, "\042\026\157\335"}, {0x17C6, "\057\271\371\244"}, {0x17C7, "\057\271\374\176"}, {0x17C8, "\057\271\376\204"}, {0x17C9, "\057\271\371\031"}, {0x17CA, "\057\271\375\266"}, {0x17CB, "\057\271\363\033"}, {0x17CC, "\057\271\374\107"}, {0x17CD, "\057\271\375\230"}, {0x17CE, "\057\271\367\363"}, {0x17CF, "\057\271\362\310"}, {0x17D0, "\057\271\374\236\374\235"}, {0x17D1, "\057\271\376\045"}, {0x17D2, "\057\271\375\143"}, {0x17D3, "\057\271\363\044"}, {0x17D4, "\057\271\357\221"}, {0x17D5, "\057\271\363\037"}, {0x17D6, "\057\271\375\133\361\241\370\052"}, {0x17D7, "\057\271\370\151\356\265"}, {0x17D8, "\057\271\363\122"}, {0x17D9, "\057\271\372\220\371\010"}, {0x17DA, "\057\271\370\124"}, {0x17DB, "\022\355\274\271\374\070"}, {0x17DC, "\057\271\363\012"}, {0x17E0, "\024\271\333"}, {0x17E1, "\024\271\107"}, {0x17E2, "\024\271\127"}, {0x17E3, "\024\271\136"}, {0x17E4, "\024\271\221"}, {0x17E5, "\024\271\231"}, {0x17E6, "\024\271\256"}, {0x17E7, "\024\271\253"}, {0x17E8, "\024\271\227"}, {0x17E9, "\024\271\260"}, {0x1800, "\363\140\355\014"}, {0x1801, "\252\007\357\347\371\017"}, {0x1802, "\332\066"}, {0x1803, "\037\355\014"}, {0x1804, "\355\105\355\014"}, {0x1805, "\373\377\355\014"}, {0x1806, "\355\130\355\317\362\075\355\014\314"}, {0x1807, "\355\047\007\375\057\355\014\355\010"}, {0x1808, "\332\066\370\265"}, {0x1809, "\037\355\014\355\067"}, {0x180A, "\371\250\355\014"}, {0x180B, "\356\256\007\357\054\357\231\355\014\107"}, {0x180C, "\356\256\007\357\054\357\231\355\014\127"}, {0x180D, "\356\256\007\357\054\357\231\355\014\136"}, {0x180E, "\355\047\007\376\061\355\014"}, {0x1810, "\024\355\014\333"}, {0x1811, "\024\355\014\107"}, {0x1812, "\024\355\014\127"}, {0x1813, "\024\355\014\136"}, {0x1814, "\024\355\014\221"}, {0x1815, "\024\355\014\231"}, {0x1816, "\024\355\014\256"}, {0x1817, "\024\355\014\253"}, {0x1818, "\024\355\014\227"}, {0x1819, "\024\355\014\260"}, {0x1820, "\001\066\063"}, {0x1821, "\001\066\356\140"}, {0x1822, "\001\066\103"}, {0x1823, "\001\066\064"}, {0x1824, "\001\066\113"}, {0x1825, "\001\066\356\013"}, {0x1826, "\001\066\132"}, {0x1827, "\001\066\317"}, {0x1828, "\001\066\355\002"}, {0x1829, "\001\066\355\375"}, {0x182A, "\001\066\355\054"}, {0x182B, "\001\066\331"}, {0x182C, "\001\066\356\247"}, {0x182D, "\001\066\355\021"}, {0x182E, "\001\066\301"}, {0x182F, "\001\066\033"}, {0x1830, "\001\066\355\006"}, {0x1831, "\001\066\355\034"}, {0x1832, "\001\066\313"}, {0x1833, "\001\066\355\004"}, {0x1834, "\001\066\355\026"}, {0x1835, "\001\066\355\106"}, {0x1836, "\001\066\307"}, {0x1837, "\001\066\324"}, {0x1838, "\001\066\355\052"}, {0x1839, "\001\066\355\227"}, {0x183A, "\001\066\241"}, {0x183B, "\001\066\355\056"}, {0x183C, "\001\066\355\201"}, {0x183D, "\001\066\355\103"}, {0x183E, "\001\066\356\213"}, {0x183F, "\001\066\376\313"}, {0x1840, "\001\066\357\230"}, {0x1841, "\001\066\357\352"}, {0x1842, "\001\066\375\122"}, {0x1843, "\001\066\026\356\223\042\314"}, {0x1844, "\001\066\220\314"}, {0x1845, "\001\066\103\314"}, {0x1846, "\001\066\064\314"}, {0x1847, "\001\066\113\314"}, {0x1848, "\001\066\356\013\314"}, {0x1849, "\001\066\132\314"}, {0x184A, "\001\066\355\375\314"}, {0x184B, "\001\066\355\054\314"}, {0x184C, "\001\066\331\314"}, {0x184D, "\001\066\356\247\314"}, {0x184E, "\001\066\355\021\314"}, {0x184F, "\001\066\301\314"}, {0x1850, "\001\066\313\314"}, {0x1851, "\001\066\355\004\314"}, {0x1852, "\001\066\355\026\314"}, {0x1853, "\001\066\355\106\314"}, {0x1854, "\001\066\355\201\314"}, {0x1855, "\001\066\307\314"}, {0x1856, "\001\066\355\052\314"}, {0x1857, "\001\066\241\314"}, {0x1858, "\001\066\360\315\314"}, {0x1859, "\001\066\356\213\314"}, {0x185A, "\001\066\365\306\314"}, {0x185B, "\001\066\371\237\314"}, {0x185C, "\001\066\356\067\314"}, {0x185D, "\001\066\220\355\010"}, {0x185E, "\001\066\103\355\010"}, {0x185F, "\001\066\367\244\355\010"}, {0x1860, "\001\066\132\355\010"}, {0x1861, "\001\066\113\355\010"}, {0x1862, "\001\066\355\375\355\010"}, {0x1863, "\001\066\241\355\010"}, {0x1864, "\001\066\355\021\355\010"}, {0x1865, "\001\066\316\355\010"}, {0x1866, "\001\066\331\355\010"}, {0x1867, "\001\066\355\034\355\010"}, {0x1868, "\001\066\313\355\010"}, {0x1869, "\001\066\355\004\355\010"}, {0x186A, "\001\066\355\106\355\010"}, {0x186B, "\001\066\355\227\355\010"}, {0x186C, "\001\066\360\315\355\010"}, {0x186D, "\001\066\356\213\355\010"}, {0x186E, "\001\066\355\201\355\010"}, {0x186F, "\001\066\355\103\355\010"}, {0x1870, "\001\066\357\322\355\010"}, {0x1871, "\001\066\355\026\355\010"}, {0x1872, "\001\066\355\367\355\010"}, {0x1873, "\001\066\103\355\067"}, {0x1874, "\001\066\241\355\067"}, {0x1875, "\001\066\324\355\067"}, {0x1876, "\001\066\355\227\355\067"}, {0x1877, "\001\066\355\367\355\067"}, {0x1880, "\001\066\355\224\107\235\236"}, {0x1881, "\001\066\355\245\107\235\236"}, {0x1882, "\001\066\365\176\235\236"}, {0x1883, "\001\066\361\151\235\236"}, {0x1884, "\001\066\361\151\235\236\327"}, {0x1885, "\001\066\363\030\235\236"}, {0x1886, "\001\066\136\363\031\235\236"}, {0x1887, "\001\066\063\235\236"}, {0x1888, "\001\066\103\235\236"}, {0x1889, "\001\066\241\235\236"}, {0x188A, "\001\066\355\070\235\236"}, {0x188B, "\001\066\355\026\235\236"}, {0x188C, "\001\066\355\102\235\236"}, {0x188D, "\001\066\355\131\235\236"}, {0x188E, "\001\066\355\122\235\236"}, {0x188F, "\001\066\355\143\235\236"}, {0x1890, "\001\066\313\235\236"}, {0x1891, "\001\066\355\004\235\236"}, {0x1892, "\001\066\331\235\236"}, {0x1893, "\001\066\355\126\235\236"}, {0x1894, "\001\066\355\154\235\236"}, {0x1895, "\001\066\355\367\235\236"}, {0x1896, "\001\066\355\103\235\236"}, {0x1897, "\001\066\362\307\235\236"}, {0x1898, "\001\066\313\314\235\236"}, {0x1899, "\001\066\355\367\314\235\236"}, {0x189A, "\001\066\355\110\235\236"}, {0x189B, "\001\066\355\070\355\067\235\236"}, {0x189C, "\001\066\355\026\355\067\235\236"}, {0x189D, "\001\066\355\253\355\067\235\236"}, {0x189E, "\001\066\355\102\355\067\235\236"}, {0x189F, "\001\066\355\162\355\067\235\236"}, {0x18A0, "\001\066\313\355\067\235\236"}, {0x18A1, "\001\066\355\164\355\067\235\236"}, {0x18A2, "\001\066\355\154\355\067\235\236"}, {0x18A3, "\001\066\375\154\355\067\235\236"}, {0x18A4, "\001\066\355\367\355\067\235\236"}, {0x18A5, "\001\066\355\103\355\067\235\236"}, {0x18A6, "\001\066\355\135\113\235\236"}, {0x18A7, "\001\066\355\135\307\235\236"}, {0x18A8, "\001\066\355\155\235\236"}, {0x18A9, "\001\066\365\172\235\236"}, {0x1E00, "\001\010\006\063\304\043"}, {0x1E01, "\001\005\006\063\304\043"}, {0x1E02, "\001\010\006\336\037\013\040"}, {0x1E03, "\001\005\006\336\037\013\040"}, {0x1E04, "\001\010\006\336\037\043"}, {0x1E05, "\001\005\006\336\037\043"}, {0x1E06, "\001\010\006\336\244\303"}, {0x1E07, "\001\005\006\336\244\303"}, {0x1E08, "\001\010\006\315\276\020\021\062"}, {0x1E09, "\001\005\006\315\276\020\021\062"}, {0x1E0A, "\001\010\006\277\037\013\040"}, {0x1E0B, "\001\005\006\277\037\013\040"}, {0x1E0C, "\001\010\006\277\037\043"}, {0x1E0D, "\001\005\006\277\037\043"}, {0x1E0E, "\001\010\006\277\244\303"}, {0x1E0F, "\001\005\006\277\244\303"}, {0x1E10, "\001\010\006\277\276"}, {0x1E11, "\001\005\006\277\276"}, {0x1E12, "\001\010\006\277\021\072\043"}, {0x1E13, "\001\005\006\277\021\072\043"}, {0x1E14, "\001\010\006\130\175\020\021\067"}, {0x1E15, "\001\005\006\130\175\020\021\067"}, {0x1E16, "\001\010\006\130\175\020\021\062"}, {0x1E17, "\001\005\006\130\175\020\021\062"}, {0x1E18, "\001\010\006\130\021\072\043"}, {0x1E19, "\001\005\006\130\021\072\043"}, {0x1E1A, "\001\010\006\130\173\043"}, {0x1E1B, "\001\005\006\130\173\043"}, {0x1E1C, "\001\010\006\130\276\020\214"}, {0x1E1D, "\001\005\006\130\276\020\214"}, {0x1E1E, "\001\010\006\355\064\037\013\040"}, {0x1E1F, "\001\005\006\355\064\037\013\040"}, {0x1E20, "\001\010\006\270\175"}, {0x1E21, "\001\005\006\270\175"}, {0x1E22, "\001\010\006\240\037\013\040"}, {0x1E23, "\001\005\006\240\037\013\040"}, {0x1E24, "\001\010\006\240\037\043"}, {0x1E25, "\001\005\006\240\037\043"}, {0x1E26, "\001\010\006\240\166"}, {0x1E27, "\001\005\006\240\166"}, {0x1E28, "\001\010\006\240\276"}, {0x1E29, "\001\005\006\240\276"}, {0x1E2A, "\001\010\006\240\214\043"}, {0x1E2B, "\001\005\006\240\214\043"}, {0x1E2C, "\001\010\006\103\173\043"}, {0x1E2D, "\001\005\006\103\173\043"}, {0x1E2E, "\001\010\006\103\166\020\021\062"}, {0x1E2F, "\001\005\006\103\166\020\021\062"}, {0x1E30, "\001\010\006\354\021\062"}, {0x1E31, "\001\005\006\354\021\062"}, {0x1E32, "\001\010\006\354\037\043"}, {0x1E33, "\001\005\006\354\037\043"}, {0x1E34, "\001\010\006\354\244\303"}, {0x1E35, "\001\005\006\354\244\303"}, {0x1E36, "\001\010\006\212\037\043"}, {0x1E37, "\001\005\006\212\037\043"}, {0x1E38, "\001\010\006\212\037\043\020\175"}, {0x1E39, "\001\005\006\212\037\043\020\175"}, {0x1E3A, "\001\010\006\212\244\303"}, {0x1E3B, "\001\005\006\212\244\303"}, {0x1E3C, "\001\010\006\212\021\072\043"}, {0x1E3D, "\001\005\006\212\021\072\043"}, {0x1E3E, "\001\010\006\300\021\062"}, {0x1E3F, "\001\005\006\300\021\062"}, {0x1E40, "\001\010\006\300\037\013\040"}, {0x1E41, "\001\005\006\300\037\013\040"}, {0x1E42, "\001\010\006\300\037\043"}, {0x1E43, "\001\005\006\300\037\043"}, {0x1E44, "\001\010\006\242\037\013\040"}, {0x1E45, "\001\005\006\242\037\013\040"}, {0x1E46, "\001\010\006\242\037\043"}, {0x1E47, "\001\005\006\242\037\043"}, {0x1E48, "\001\010\006\242\244\303"}, {0x1E49, "\001\005\006\242\244\303"}, {0x1E4A, "\001\010\006\242\021\072\043"}, {0x1E4B, "\001\005\006\242\021\072\043"}, {0x1E4C, "\001\010\006\064\173\020\021\062"}, {0x1E4D, "\001\005\006\064\173\020\021\062"}, {0x1E4E, "\001\010\006\064\173\020\166"}, {0x1E4F, "\001\005\006\064\173\020\166"}, {0x1E50, "\001\010\006\064\175\020\021\067"}, {0x1E51, "\001\005\006\064\175\020\021\067"}, {0x1E52, "\001\010\006\064\175\020\021\062"}, {0x1E53, "\001\005\006\064\175\020\021\062"}, {0x1E54, "\001\010\006\355\023\021\062"}, {0x1E55, "\001\005\006\355\023\021\062"}, {0x1E56, "\001\010\006\355\023\037\013\040"}, {0x1E57, "\001\005\006\355\023\037\013\040"}, {0x1E58, "\001\010\006\170\037\013\040"}, {0x1E59, "\001\005\006\170\037\013\040"}, {0x1E5A, "\001\010\006\170\037\043"}, {0x1E5B, "\001\005\006\170\037\043"}, {0x1E5C, "\001\010\006\170\037\043\020\175"}, {0x1E5D, "\001\005\006\170\037\043\020\175"}, {0x1E5E, "\001\010\006\170\244\303"}, {0x1E5F, "\001\005\006\170\244\303"}, {0x1E60, "\001\010\006\224\037\013\040"}, {0x1E61, "\001\005\006\224\037\013\040"}, {0x1E62, "\001\010\006\224\037\043"}, {0x1E63, "\001\005\006\224\037\043"}, {0x1E64, "\001\010\006\224\021\062\020\037\013\040"}, {0x1E65, "\001\005\006\224\021\062\020\037\013\040"}, {0x1E66, "\001\010\006\224\226\020\037\013\040"}, {0x1E67, "\001\005\006\224\226\020\037\013\040"}, {0x1E68, "\001\010\006\224\037\043\020\037\013\040"}, {0x1E69, "\001\005\006\224\037\043\020\037\013\040"}, {0x1E6A, "\001\010\006\262\037\013\040"}, {0x1E6B, "\001\005\006\262\037\013\040"}, {0x1E6C, "\001\010\006\262\037\043"}, {0x1E6D, "\001\005\006\262\037\043"}, {0x1E6E, "\001\010\006\262\244\303"}, {0x1E6F, "\001\005\006\262\244\303"}, {0x1E70, "\001\010\006\262\021\072\043"}, {0x1E71, "\001\005\006\262\021\072\043"}, {0x1E72, "\001\010\006\132\166\043"}, {0x1E73, "\001\005\006\132\166\043"}, {0x1E74, "\001\010\006\132\173\043"}, {0x1E75, "\001\005\006\132\173\043"}, {0x1E76, "\001\010\006\132\021\072\043"}, {0x1E77, "\001\005\006\132\021\072\043"}, {0x1E78, "\001\010\006\132\173\020\021\062"}, {0x1E79, "\001\005\006\132\173\020\021\062"}, {0x1E7A, "\001\010\006\132\175\020\166"}, {0x1E7B, "\001\005\006\132\175\020\166"}, {0x1E7C, "\001\010\006\355\027\173"}, {0x1E7D, "\001\005\006\355\027\173"}, {0x1E7E, "\001\010\006\355\027\037\043"}, {0x1E7F, "\001\005\006\355\027\037\043"}, {0x1E80, "\001\010\006\351\021\067"}, {0x1E81, "\001\005\006\351\021\067"}, {0x1E82, "\001\010\006\351\021\062"}, {0x1E83, "\001\005\006\351\021\062"}, {0x1E84, "\001\010\006\351\166"}, {0x1E85, "\001\005\006\351\166"}, {0x1E86, "\001\010\006\351\037\013\040"}, {0x1E87, "\001\005\006\351\037\013\040"}, {0x1E88, "\001\010\006\351\037\043"}, {0x1E89, "\001\005\006\351\037\043"}, {0x1E8A, "\001\010\006\355\030\037\013\040"}, {0x1E8B, "\001\005\006\355\030\037\013\040"}, {0x1E8C, "\001\010\006\355\030\166"}, {0x1E8D, "\001\005\006\355\030\166"}, {0x1E8E, "\001\010\006\267\037\013\040"}, {0x1E8F, "\001\005\006\267\037\013\040"}, {0x1E90, "\001\010\006\273\021\072"}, {0x1E91, "\001\005\006\273\021\072"}, {0x1E92, "\001\010\006\273\037\043"}, {0x1E93, "\001\005\006\273\037\043"}, {0x1E94, "\001\010\006\273\244\303"}, {0x1E95, "\001\005\006\273\244\303"}, {0x1E96, "\001\005\006\240\244\303"}, {0x1E97, "\001\005\006\262\166"}, {0x1E98, "\001\005\006\351\304\013\040"}, {0x1E99, "\001\005\006\267\304\013\040"}, {0x1E9A, "\001\005\006\063\356\063\044\053"}, {0x1E9B, "\001\005\006\355\266\224\037\013\040"}, {0x1EA0, "\001\010\006\063\037\043"}, {0x1EA1, "\001\005\006\063\037\043"}, {0x1EA2, "\001\010\006\063\122\013\040"}, {0x1EA3, "\001\005\006\063\122\013\040"}, {0x1EA4, "\001\010\006\063\021\072\020\021\062"}, {0x1EA5, "\001\005\006\063\021\072\020\021\062"}, {0x1EA6, "\001\010\006\063\021\072\020\021\067"}, {0x1EA7, "\001\005\006\063\021\072\020\021\067"}, {0x1EA8, "\001\010\006\063\021\072\020\122\013\040"}, {0x1EA9, "\001\005\006\063\021\072\020\122\013\040"}, {0x1EAA, "\001\010\006\063\021\072\020\173"}, {0x1EAB, "\001\005\006\063\021\072\020\173"}, {0x1EAC, "\001\010\006\063\021\072\020\037\043"}, {0x1EAD, "\001\005\006\063\021\072\020\037\043"}, {0x1EAE, "\001\010\006\063\214\020\021\062"}, {0x1EAF, "\001\005\006\063\214\020\021\062"}, {0x1EB0, "\001\010\006\063\214\020\021\067"}, {0x1EB1, "\001\005\006\063\214\020\021\067"}, {0x1EB2, "\001\010\006\063\214\020\122\013\040"}, {0x1EB3, "\001\005\006\063\214\020\122\013\040"}, {0x1EB4, "\001\010\006\063\214\020\173"}, {0x1EB5, "\001\005\006\063\214\020\173"}, {0x1EB6, "\001\010\006\063\214\020\037\043"}, {0x1EB7, "\001\005\006\063\214\020\037\043"}, {0x1EB8, "\001\010\006\130\037\043"}, {0x1EB9, "\001\005\006\130\037\043"}, {0x1EBA, "\001\010\006\130\122\013\040"}, {0x1EBB, "\001\005\006\130\122\013\040"}, {0x1EBC, "\001\010\006\130\173"}, {0x1EBD, "\001\005\006\130\173"}, {0x1EBE, "\001\010\006\130\021\072\020\021\062"}, {0x1EBF, "\001\005\006\130\021\072\020\021\062"}, {0x1EC0, "\001\010\006\130\021\072\020\021\067"}, {0x1EC1, "\001\005\006\130\021\072\020\021\067"}, {0x1EC2, "\001\010\006\130\021\072\020\122\013\040"}, {0x1EC3, "\001\005\006\130\021\072\020\122\013\040"}, {0x1EC4, "\001\010\006\130\021\072\020\173"}, {0x1EC5, "\001\005\006\130\021\072\020\173"}, {0x1EC6, "\001\010\006\130\021\072\020\037\043"}, {0x1EC7, "\001\005\006\130\021\072\020\037\043"}, {0x1EC8, "\001\010\006\103\122\013\040"}, {0x1EC9, "\001\005\006\103\122\013\040"}, {0x1ECA, "\001\010\006\103\037\043"}, {0x1ECB, "\001\005\006\103\037\043"}, {0x1ECC, "\001\010\006\064\037\043"}, {0x1ECD, "\001\005\006\064\037\043"}, {0x1ECE, "\001\010\006\064\122\013\040"}, {0x1ECF, "\001\005\006\064\122\013\040"}, {0x1ED0, "\001\010\006\064\021\072\020\021\062"}, {0x1ED1, "\001\005\006\064\021\072\020\021\062"}, {0x1ED2, "\001\010\006\064\021\072\020\021\067"}, {0x1ED3, "\001\005\006\064\021\072\020\021\067"}, {0x1ED4, "\001\010\006\064\021\072\020\122\013\040"}, {0x1ED5, "\001\005\006\064\021\072\020\122\013\040"}, {0x1ED6, "\001\010\006\064\021\072\020\173"}, {0x1ED7, "\001\005\006\064\021\072\020\173"}, {0x1ED8, "\001\010\006\064\021\072\020\037\043"}, {0x1ED9, "\001\005\006\064\021\072\020\037\043"}, {0x1EDA, "\001\010\006\064\340\021\062"}, {0x1EDB, "\001\005\006\064\340\021\062"}, {0x1EDC, "\001\010\006\064\340\021\067"}, {0x1EDD, "\001\005\006\064\340\021\067"}, {0x1EDE, "\001\010\006\064\340\122\013\040"}, {0x1EDF, "\001\005\006\064\340\122\013\040"}, {0x1EE0, "\001\010\006\064\340\173"}, {0x1EE1, "\001\005\006\064\340\173"}, {0x1EE2, "\001\010\006\064\340\037\043"}, {0x1EE3, "\001\005\006\064\340\037\043"}, {0x1EE4, "\001\010\006\132\037\043"}, {0x1EE5, "\001\005\006\132\037\043"}, {0x1EE6, "\001\010\006\132\122\013\040"}, {0x1EE7, "\001\005\006\132\122\013\040"}, {0x1EE8, "\001\010\006\132\340\021\062"}, {0x1EE9, "\001\005\006\132\340\021\062"}, {0x1EEA, "\001\010\006\132\340\021\067"}, {0x1EEB, "\001\005\006\132\340\021\067"}, {0x1EEC, "\001\010\006\132\340\122\013\040"}, {0x1EED, "\001\005\006\132\340\122\013\040"}, {0x1EEE, "\001\010\006\132\340\173"}, {0x1EEF, "\001\005\006\132\340\173"}, {0x1EF0, "\001\010\006\132\340\037\043"}, {0x1EF1, "\001\005\006\132\340\037\043"}, {0x1EF2, "\001\010\006\267\021\067"}, {0x1EF3, "\001\005\006\267\021\067"}, {0x1EF4, "\001\010\006\267\037\043"}, {0x1EF5, "\001\005\006\267\037\043"}, {0x1EF6, "\001\010\006\267\122\013\040"}, {0x1EF7, "\001\005\006\267\122\013\040"}, {0x1EF8, "\001\010\006\267\173"}, {0x1EF9, "\001\005\006\267\173"}, {0x1F00, "\001\005\027\204\060\143"}, {0x1F01, "\001\005\027\204\060\134"}, {0x1F02, "\001\005\027\204\060\143\020\021\067"}, {0x1F03, "\001\005\027\204\060\134\020\021\067"}, {0x1F04, "\001\005\027\204\060\143\020\021\062"}, {0x1F05, "\001\005\027\204\060\134\020\021\062"}, {0x1F06, "\001\005\027\204\060\143\020\072"}, {0x1F07, "\001\005\027\204\060\134\020\072"}, {0x1F08, "\001\010\027\204\060\143"}, {0x1F09, "\001\010\027\204\060\134"}, {0x1F0A, "\001\010\027\204\060\143\020\021\067"}, {0x1F0B, "\001\010\027\204\060\134\020\021\067"}, {0x1F0C, "\001\010\027\204\060\143\020\021\062"}, {0x1F0D, "\001\010\027\204\060\134\020\021\062"}, {0x1F0E, "\001\010\027\204\060\143\020\072"}, {0x1F0F, "\001\010\027\204\060\134\020\072"}, {0x1F10, "\001\005\027\330\060\143"}, {0x1F11, "\001\005\027\330\060\134"}, {0x1F12, "\001\005\027\330\060\143\020\021\067"}, {0x1F13, "\001\005\027\330\060\134\020\021\067"}, {0x1F14, "\001\005\027\330\060\143\020\021\062"}, {0x1F15, "\001\005\027\330\060\134\020\021\062"}, {0x1F18, "\001\010\027\330\060\143"}, {0x1F19, "\001\010\027\330\060\134"}, {0x1F1A, "\001\010\027\330\060\143\020\021\067"}, {0x1F1B, "\001\010\027\330\060\134\020\021\067"}, {0x1F1C, "\001\010\027\330\060\143\020\021\062"}, {0x1F1D, "\001\010\027\330\060\134\020\021\062"}, {0x1F20, "\001\005\027\225\060\143"}, {0x1F21, "\001\005\027\225\060\134"}, {0x1F22, "\001\005\027\225\060\143\020\021\067"}, {0x1F23, "\001\005\027\225\060\134\020\021\067"}, {0x1F24, "\001\005\027\225\060\143\020\021\062"}, {0x1F25, "\001\005\027\225\060\134\020\021\062"}, {0x1F26, "\001\005\027\225\060\143\020\072"}, {0x1F27, "\001\005\027\225\060\134\020\072"}, {0x1F28, "\001\010\027\225\060\143"}, {0x1F29, "\001\010\027\225\060\134"}, {0x1F2A, "\001\010\027\225\060\143\020\021\067"}, {0x1F2B, "\001\010\027\225\060\134\020\021\067"}, {0x1F2C, "\001\010\027\225\060\143\020\021\062"}, {0x1F2D, "\001\010\027\225\060\134\020\021\062"}, {0x1F2E, "\001\010\027\225\060\143\020\072"}, {0x1F2F, "\001\010\027\225\060\134\020\072"}, {0x1F30, "\001\005\027\104\060\143"}, {0x1F31, "\001\005\027\104\060\134"}, {0x1F32, "\001\005\027\104\060\143\020\021\067"}, {0x1F33, "\001\005\027\104\060\134\020\021\067"}, {0x1F34, "\001\005\027\104\060\143\020\021\062"}, {0x1F35, "\001\005\027\104\060\134\020\021\062"}, {0x1F36, "\001\005\027\104\060\143\020\072"}, {0x1F37, "\001\005\027\104\060\134\020\072"}, {0x1F38, "\001\010\027\104\060\143"}, {0x1F39, "\001\010\027\104\060\134"}, {0x1F3A, "\001\010\027\104\060\143\020\021\067"}, {0x1F3B, "\001\010\027\104\060\134\020\021\067"}, {0x1F3C, "\001\010\027\104\060\143\020\021\062"}, {0x1F3D, "\001\010\027\104\060\134\020\021\062"}, {0x1F3E, "\001\010\027\104\060\143\020\072"}, {0x1F3F, "\001\010\027\104\060\134\020\072"}, {0x1F40, "\001\005\027\355\040\060\143"}, {0x1F41, "\001\005\027\355\040\060\134"}, {0x1F42, "\001\005\027\355\040\060\143\020\021\067"}, {0x1F43, "\001\005\027\355\040\060\134\020\021\067"}, {0x1F44, "\001\005\027\355\040\060\143\020\021\062"}, {0x1F45, "\001\005\027\355\040\060\134\020\021\062"}, {0x1F48, "\001\010\027\355\040\060\143"}, {0x1F49, "\001\010\027\355\040\060\134"}, {0x1F4A, "\001\010\027\355\040\060\143\020\021\067"}, {0x1F4B, "\001\010\027\355\040\060\134\020\021\067"}, {0x1F4C, "\001\010\027\355\040\060\143\020\021\062"}, {0x1F4D, "\001\010\027\355\040\060\134\020\021\062"}, {0x1F50, "\001\005\027\263\060\143"}, {0x1F51, "\001\005\027\263\060\134"}, {0x1F52, "\001\005\027\263\060\143\020\021\067"}, {0x1F53, "\001\005\027\263\060\134\020\021\067"}, {0x1F54, "\001\005\027\263\060\143\020\021\062"}, {0x1F55, "\001\005\027\263\060\134\020\021\062"}, {0x1F56, "\001\005\027\263\060\143\020\072"}, {0x1F57, "\001\005\027\263\060\134\020\072"}, {0x1F59, "\001\010\027\263\060\134"}, {0x1F5B, "\001\010\027\263\060\134\020\021\067"}, {0x1F5D, "\001\010\027\263\060\134\020\021\062"}, {0x1F5F, "\001\010\027\263\060\134\020\072"}, {0x1F60, "\001\005\027\202\060\143"}, {0x1F61, "\001\005\027\202\060\134"}, {0x1F62, "\001\005\027\202\060\143\020\021\067"}, {0x1F63, "\001\005\027\202\060\134\020\021\067"}, {0x1F64, "\001\005\027\202\060\143\020\021\062"}, {0x1F65, "\001\005\027\202\060\134\020\021\062"}, {0x1F66, "\001\005\027\202\060\143\020\072"}, {0x1F67, "\001\005\027\202\060\134\020\072"}, {0x1F68, "\001\010\027\202\060\143"}, {0x1F69, "\001\010\027\202\060\134"}, {0x1F6A, "\001\010\027\202\060\143\020\021\067"}, {0x1F6B, "\001\010\027\202\060\134\020\021\067"}, {0x1F6C, "\001\010\027\202\060\143\020\021\062"}, {0x1F6D, "\001\010\027\202\060\134\020\021\062"}, {0x1F6E, "\001\010\027\202\060\143\020\072"}, {0x1F6F, "\001\010\027\202\060\134\020\072"}, {0x1F70, "\001\005\027\204\021\067"}, {0x1F71, "\001\005\027\204\021\062"}, {0x1F72, "\001\005\027\330\021\067"}, {0x1F73, "\001\005\027\330\021\062"}, {0x1F74, "\001\005\027\225\021\067"}, {0x1F75, "\001\005\027\225\021\062"}, {0x1F76, "\001\005\027\104\021\067"}, {0x1F77, "\001\005\027\104\021\062"}, {0x1F78, "\001\005\027\355\040\021\067"}, {0x1F79, "\001\005\027\355\040\021\062"}, {0x1F7A, "\001\005\027\263\021\067"}, {0x1F7B, "\001\005\027\263\021\062"}, {0x1F7C, "\001\005\027\202\021\067"}, {0x1F7D, "\001\005\027\202\021\062"}, {0x1F80, "\001\005\027\204\060\143\104\043"}, {0x1F81, "\001\005\027\204\060\134\104\043"}, {0x1F82, "\001\005\027\204\060\143\021\067\020\104\043"}, {0x1F83, "\001\005\027\204\060\134\021\067\020\104\043"}, {0x1F84, "\001\005\027\204\060\143\021\062\020\104\043"}, {0x1F85, "\001\005\027\204\060\134\021\062\020\104\043"}, {0x1F86, "\001\005\027\204\060\143\072\020\104\043"}, {0x1F87, "\001\005\027\204\060\134\072\020\104\043"}, {0x1F88, "\001\010\027\204\060\143\104\043"}, {0x1F89, "\001\010\027\204\060\134\104\043"}, {0x1F8A, "\001\010\027\204\060\143\021\067\020\104\043"}, {0x1F8B, "\001\010\027\204\060\134\021\067\020\104\043"}, {0x1F8C, "\001\010\027\204\060\143\021\062\020\104\043"}, {0x1F8D, "\001\010\027\204\060\134\021\062\020\104\043"}, {0x1F8E, "\001\010\027\204\060\143\072\020\104\043"}, {0x1F8F, "\001\010\027\204\060\134\072\020\104\043"}, {0x1F90, "\001\005\027\225\060\143\104\043"}, {0x1F91, "\001\005\027\225\060\134\104\043"}, {0x1F92, "\001\005\027\225\060\143\021\067\020\104\043"}, {0x1F93, "\001\005\027\225\060\134\021\067\020\104\043"}, {0x1F94, "\001\005\027\225\060\143\021\062\020\104\043"}, {0x1F95, "\001\005\027\225\060\134\021\062\020\104\043"}, {0x1F96, "\001\005\027\225\060\143\072\020\104\043"}, {0x1F97, "\001\005\027\225\060\134\072\020\104\043"}, {0x1F98, "\001\010\027\225\060\143\104\043"}, {0x1F99, "\001\010\027\225\060\134\104\043"}, {0x1F9A, "\001\010\027\225\060\143\021\067\020\104\043"}, {0x1F9B, "\001\010\027\225\060\134\021\067\020\104\043"}, {0x1F9C, "\001\010\027\225\060\143\021\062\020\104\043"}, {0x1F9D, "\001\010\027\225\060\134\021\062\020\104\043"}, {0x1F9E, "\001\010\027\225\060\143\072\020\104\043"}, {0x1F9F, "\001\010\027\225\060\134\072\020\104\043"}, {0x1FA0, "\001\005\027\202\060\143\104\043"}, {0x1FA1, "\001\005\027\202\060\134\104\043"}, {0x1FA2, "\001\005\027\202\060\143\021\067\020\104\043"}, {0x1FA3, "\001\005\027\202\060\134\021\067\020\104\043"}, {0x1FA4, "\001\005\027\202\060\143\021\062\020\104\043"}, {0x1FA5, "\001\005\027\202\060\134\021\062\020\104\043"}, {0x1FA6, "\001\005\027\202\060\143\072\020\104\043"}, {0x1FA7, "\001\005\027\202\060\134\072\020\104\043"}, {0x1FA8, "\001\010\027\202\060\143\104\043"}, {0x1FA9, "\001\010\027\202\060\134\104\043"}, {0x1FAA, "\001\010\027\202\060\143\021\067\020\104\043"}, {0x1FAB, "\001\010\027\202\060\134\021\067\020\104\043"}, {0x1FAC, "\001\010\027\202\060\143\021\062\020\104\043"}, {0x1FAD, "\001\010\027\202\060\134\021\062\020\104\043"}, {0x1FAE, "\001\010\027\202\060\143\072\020\104\043"}, {0x1FAF, "\001\010\027\202\060\134\072\020\104\043"}, {0x1FB0, "\001\005\027\204\356\135"}, {0x1FB1, "\001\005\027\204\175"}, {0x1FB2, "\001\005\027\204\021\067\104\043"}, {0x1FB3, "\001\005\027\204\104\043"}, {0x1FB4, "\001\005\027\204\021\062\104\043"}, {0x1FB6, "\001\005\027\204\072"}, {0x1FB7, "\001\005\027\204\072\104\043"}, {0x1FB8, "\001\010\027\204\356\135"}, {0x1FB9, "\001\010\027\204\175"}, {0x1FBA, "\001\010\027\204\021\067"}, {0x1FBB, "\001\010\027\204\021\062"}, {0x1FBC, "\001\010\027\204\104\043"}, {0x1FBD, "\360\146"}, {0x1FBE, "\104\043"}, {0x1FBF, "\060\143"}, {0x1FC0, "\072\321"}, {0x1FC1, "\355\063\020\072"}, {0x1FC2, "\001\005\027\225\021\067\104\043"}, {0x1FC3, "\001\005\027\225\104\043"}, {0x1FC4, "\001\005\027\225\021\062\104\043"}, {0x1FC6, "\001\005\027\225\072"}, {0x1FC7, "\001\005\027\225\072\104\043"}, {0x1FC8, "\001\010\027\330\021\067"}, {0x1FC9, "\001\010\027\330\021\062"}, {0x1FCA, "\001\010\027\225\021\067"}, {0x1FCB, "\001\010\027\225\021\062"}, {0x1FCC, "\001\010\027\225\104\043"}, {0x1FCD, "\060\143\020\021\067"}, {0x1FCE, "\060\143\020\021\062"}, {0x1FCF, "\060\143\020\072\321"}, {0x1FD0, "\001\005\027\104\356\135"}, {0x1FD1, "\001\005\027\104\175"}, {0x1FD2, "\001\005\027\104\355\063\020\021\067"}, {0x1FD3, "\001\005\027\104\355\063\020\021\062"}, {0x1FD6, "\001\005\027\104\072"}, {0x1FD7, "\001\005\027\104\355\063\020\072"}, {0x1FD8, "\001\010\027\104\356\135"}, {0x1FD9, "\001\010\027\104\175"}, {0x1FDA, "\001\010\027\104\021\067"}, {0x1FDB, "\001\010\027\104\021\062"}, {0x1FDD, "\060\134\020\021\067"}, {0x1FDE, "\060\134\020\021\062"}, {0x1FDF, "\060\134\020\072\321"}, {0x1FE0, "\001\005\027\263\356\135"}, {0x1FE1, "\001\005\027\263\175"}, {0x1FE2, "\001\005\027\263\355\063\020\021\067"}, {0x1FE3, "\001\005\027\263\355\063\020\021\062"}, {0x1FE4, "\001\005\027\356\040\060\143"}, {0x1FE5, "\001\005\027\356\040\060\134"}, {0x1FE6, "\001\005\027\263\072"}, {0x1FE7, "\001\005\027\263\355\063\020\072"}, {0x1FE8, "\001\010\027\263\356\135"}, {0x1FE9, "\001\010\027\263\175"}, {0x1FEA, "\001\010\027\263\021\067"}, {0x1FEB, "\001\010\027\263\021\062"}, {0x1FEC, "\001\010\027\356\040\060\134"}, {0x1FED, "\355\063\020\021\067"}, {0x1FEE, "\355\063\020\021\062"}, {0x1FEF, "\021\067\321"}, {0x1FF2, "\001\005\027\202\021\067\104\043"}, {0x1FF3, "\001\005\027\202\104\043"}, {0x1FF4, "\001\005\027\202\021\062\104\043"}, {0x1FF6, "\001\005\027\202\072"}, {0x1FF7, "\001\005\027\202\072\104\043"}, {0x1FF8, "\001\010\027\355\040\021\067"}, {0x1FF9, "\001\010\027\355\040\021\062"}, {0x1FFA, "\001\010\027\202\021\067"}, {0x1FFB, "\001\010\027\202\021\062"}, {0x1FFC, "\001\010\027\202\104\043"}, {0x1FFD, "\021\062\321"}, {0x1FFE, "\060\134"}, {0x2000, "\357\133"}, {0x2001, "\356\006"}, {0x2002, "\365\252"}, {0x2003, "\363\226"}, {0x2004, "\357\362\007\356\006"}, {0x2005, "\357\021\007\356\006"}, {0x2006, "\357\033\007\356\006"}, {0x2007, "\355\075\361\130"}, {0x2008, "\355\075\355\236"}, {0x2009, "\355\075\360\246"}, {0x200A, "\355\075\375\373"}, {0x200B, "\355\075\272\105"}, {0x200C, "\362\345\272\105"}, {0x200D, "\361\032\272\105"}, {0x200E, "\205\357\154"}, {0x200F, "\205\357\145"}, {0x2010, "\355\130\355\317"}, {0x2011, "\355\130\355\317\361\032"}, {0x2012, "\355\011\361\130"}, {0x2013, "\355\011\357\133"}, {0x2014, "\355\011\356\006"}, {0x2015, "\247\356\337"}, {0x2016, "\070\244\257"}, {0x2017, "\070\355\130\043"}, {0x2018, "\356\334\327"}, {0x2019, "\356\334"}, {0x201A, "\356\335\322"}, {0x201B, "\356\335\346\327"}, {0x201C, "\356\334\070\327"}, {0x201D, "\356\334\070"}, {0x201E, "\356\335\070\322"}, {0x201F, "\356\335\070\346\327"}, {0x2020, "\357\255"}, {0x2021, "\070\357\255"}, {0x2022, "\356\111"}, {0x2023, "\356\111\356\133"}, {0x2024, "\037\357\120\355\003"}, {0x2025, "\037\357\120\070"}, {0x2026, "\252\007\357\347"}, {0x2027, "\037\007\365\107\007\361\071"}, {0x2028, "\355\047\007\370\173"}, {0x2029, "\355\047\007\357\270"}, {0x202A, "\360\234\357\154"}, {0x202B, "\360\234\357\145"}, {0x202C, "\365\364\007\360\251\365\276"}, {0x202D, "\360\253\357\154"}, {0x202E, "\360\253\357\145"}, {0x202F, "\355\075\357\203\377\044"}, {0x2030, "\022\355\061\355\273"}, {0x2031, "\022\355\061\355\036\355\273"}, {0x2032, "\355\237"}, {0x2033, "\070\355\237"}, {0x2034, "\355\222\355\237"}, {0x2035, "\355\237\355\015"}, {0x2036, "\070\355\237\355\015"}, {0x2037, "\355\222\355\237\355\015"}, {0x2038, "\363\310\356\061"}, {0x2039, "\355\137\355\003\015\033\052"}, {0x203A, "\355\137\355\003\015\033\053"}, {0x203B, "\205\007\374\177"}, {0x203C, "\070\037\355\314"}, {0x203D, "\037\366\036"}, {0x203E, "\355\011\013\040"}, {0x203F, "\362\013\043"}, {0x2040, "\362\013\013\040"}, {0x2041, "\356\350\356\061"}, {0x2042, "\363\003"}, {0x2043, "\356\111\355\130\355\317"}, {0x2044, "\247\360\257"}, {0x2045, "\122\052\165\357\003"}, {0x2046, "\122\222\165\357\003"}, {0x2048, "\037\365\163"}, {0x2049, "\037\365\157"}, {0x204A, "\357\252\375\217\020"}, {0x204B, "\356\244\007\357\241\355\015"}, {0x204C, "\356\111\266\362\041\044\053"}, {0x204D, "\356\111\266\362\041\044\052"}, {0x204F, "\355\075\376\046"}, {0x206A, "\360\352\360\163\361\351"}, {0x206B, "\360\046\360\163\361\351"}, {0x206C, "\360\352\007\360\250\004"}, {0x206D, "\360\046\007\360\250\004"}, {0x206E, "\356\256\007\360\252\007\024\371\110"}, {0x206F, "\356\256\007\360\252\007\024\371\322"}, {0x2070, "\355\076\333"}, {0x2071, "\264"}, {0x2072, "\264"}, {0x2073, "\264"}, {0x2074, "\355\076\221"}, {0x2075, "\355\076\231"}, {0x2076, "\355\076\256"}, {0x2077, "\355\076\253"}, {0x2078, "\355\076\227"}, {0x2079, "\355\076\260"}, {0x207A, "\355\076\057\215"}, {0x207B, "\355\076\057\355\022"}, {0x207C, "\355\076\057\174"}, {0x207D, "\355\076\355\125\052"}, {0x207E, "\355\076\355\125\053"}, {0x207F, "\355\076\001\005\006\242"}, {0x2080, "\355\112\333"}, {0x2081, "\355\112\107"}, {0x2082, "\355\112\127"}, {0x2083, "\355\112\136"}, {0x2084, "\355\112\221"}, {0x2085, "\355\112\231"}, {0x2086, "\355\112\256"}, {0x2087, "\355\112\253"}, {0x2088, "\355\112\227"}, {0x2089, "\355\112\260"}, {0x208A, "\355\112\057\215"}, {0x208B, "\355\112\057\355\022"}, {0x208C, "\355\112\057\174"}, {0x208D, "\355\112\355\125\052"}, {0x208E, "\355\112\355\125\053"}, {0x20A0, "\022\377\031"}, {0x20A1, "\022\360\140"}, {0x20A2, "\022\365\126"}, {0x20A3, "\022\366\113\366\114"}, {0x20A4, "\022\370\177"}, {0x20A5, "\022\370\370"}, {0x20A6, "\022\371\104"}, {0x20A7, "\022\372\211"}, {0x20A8, "\022\357\320"}, {0x20A9, "\022\362\107"}, {0x20AA, "\022\371\332\363\343"}, {0x20AB, "\022\365\326"}, {0x20AC, "\022\366\033"}, {0x20AD, "\022\361\003"}, {0x20AE, "\022\375\242"}, {0x20AF, "\022\365\334"}, {0x20D0, "\026\362\065\015\033\052\013\040"}, {0x20D1, "\026\362\065\015\033\053\013\040"}, {0x20D2, "\026\244\257\356\223\356\060"}, {0x20D3, "\026\244\257\356\316\356\060"}, {0x20D4, "\026\061\013\355\217\356\107\013\040"}, {0x20D5, "\026\061\013\355\217\302\013\040"}, {0x20D6, "\026\061\015\033\052\013\040"}, {0x20D7, "\026\061\015\033\053\013\040"}, {0x20D8, "\026\304\356\317"}, {0x20D9, "\026\304\013\355\217\302\356\317"}, {0x20DA, "\026\304\013\355\217\356\107\356\317"}, {0x20DB, "\026\136\252\013\040"}, {0x20DC, "\026\221\252\013\040"}, {0x20DD, "\026\274\356\173"}, {0x20DE, "\026\035\356\173"}, {0x20DF, "\026\355\270\356\173"}, {0x20E0, "\026\274\356\173\020\247\355\046\356\075"}, {0x20E1, "\026\061\052\020\053\013\040"}, {0x20E2, "\026\360\030\356\173"}, {0x20E3, "\026\362\030\366\010\355\023"}, {0x2100, "\022\355\311\365\056\007"}, {0x2101, "\022\363\011\363\152\374\351\007"}, {0x2102, "\315\010\355\373"}, {0x2103, "\357\132\363\252"}, {0x2104, "\022\244\007\356\311"}, {0x2105, "\022\356\302\363\240"}, {0x2106, "\022\363\224\375\374"}, {0x2107, "\357\107\365\156"}, {0x2108, "\374\242"}, {0x2109, "\357\132\366\044"}, {0x210A, "\005\270\007\355\146"}, {0x210B, "\010\240\007\355\146"}, {0x210C, "\010\240\356\207"}, {0x210D, "\240\010\355\373"}, {0x210E, "\357\107\007\361\210"}, {0x210F, "\357\107\007\361\210\355\150\127\355\235"}, {0x2110, "\010\103\007\355\146"}, {0x2111, "\010\103\356\207"}, {0x2112, "\010\212\007\355\146"}, {0x2113, "\005\212\007\355\146"}, {0x2114, "\022\212\336\233"}, {0x2115, "\242\010\355\373"}, {0x2116, "\022\361\131"}, {0x2117, "\360\143\007\372\221"}, {0x2118, "\154\366\002\007\376\104"}, {0x2119, "\355\023\010\355\373"}, {0x211A, "\355\175\010\355\373"}, {0x211B, "\010\170\007\355\146"}, {0x211C, "\010\170\356\207"}, {0x211D, "\170\010\355\373"}, {0x211E, "\372\112"}, {0x211F, "\374\201"}, {0x2120, "\022\356\302\205\007\374\260"}, {0x2121, "\022\357\052"}, {0x2122, "\022\356\302\205\007\365\052"}, {0x2123, "\376\023"}, {0x2124, "\273\010\355\373"}, {0x2125, "\022\372\101"}, {0x2126, "\022\356\367"}, {0x2127, "\022\356\367\355\145"}, {0x2128, "\010\273\356\207"}, {0x2129, "\005\027\104\327"}, {0x212A, "\022\370\003"}, {0x212B, "\022\362\332"}, {0x212C, "\010\336\007\355\146"}, {0x212D, "\010\315\356\207"}, {0x212E, "\022\366\026"}, {0x212F, "\005\130\007\355\146"}, {0x2130, "\010\130\007\355\146"}, {0x2131, "\010\355\064\007\355\146"}, {0x2132, "\010\355\064\327"}, {0x2133, "\010\300\007\355\146"}, {0x2134, "\005\064\007\355\146"}, {0x2135, "\022\355\374"}, {0x2136, "\022\357\074"}, {0x2137, "\022\366\230"}, {0x2138, "\022\356\321"}, {0x2139, "\103\363\177\365\161"}, {0x213A, "\355\175\010\356\155"}, {0x2153, "\355\107\107\357\362"}, {0x2154, "\355\107\127\357\362"}, {0x2155, "\355\107\107\357\104"}, {0x2156, "\355\107\127\357\105"}, {0x2157, "\355\107\136\357\105"}, {0x2158, "\355\107\221\357\105"}, {0x2159, "\355\107\107\357\033"}, {0x215A, "\355\107\231\374\327"}, {0x215B, "\355\107\107\356\212"}, {0x215C, "\355\107\136\355\260"}, {0x215D, "\355\107\231\355\260"}, {0x215E, "\355\107\253\355\260"}, {0x215F, "\356\105\360\257\107"}, {0x2160, "\024\261\107"}, {0x2161, "\024\261\127"}, {0x2162, "\024\261\136"}, {0x2163, "\024\261\221"}, {0x2164, "\024\261\231"}, {0x2165, "\024\261\256"}, {0x2166, "\024\261\253"}, {0x2167, "\024\261\227"}, {0x2168, "\024\261\260"}, {0x2169, "\024\261\355\036"}, {0x216A, "\024\261\356\031"}, {0x216B, "\024\261\355\321"}, {0x216C, "\024\261\357\103"}, {0x216D, "\024\261\355\247"}, {0x216E, "\024\261\231\360\116"}, {0x216F, "\024\261\355\273"}, {0x2170, "\024\261\005\107"}, {0x2171, "\024\261\005\127"}, {0x2172, "\024\261\005\136"}, {0x2173, "\024\261\005\221"}, {0x2174, "\024\261\005\231"}, {0x2175, "\024\261\005\256"}, {0x2176, "\024\261\005\253"}, {0x2177, "\024\261\005\227"}, {0x2178, "\024\261\005\260"}, {0x2179, "\024\261\005\355\036"}, {0x217A, "\024\261\005\356\031"}, {0x217B, "\024\261\005\355\321"}, {0x217C, "\024\261\005\357\103"}, {0x217D, "\024\261\005\355\247"}, {0x217E, "\024\261\005\231\360\116"}, {0x217F, "\024\261\005\355\273"}, {0x2180, "\024\261\355\273\315\277"}, {0x2181, "\024\261\231\355\273"}, {0x2182, "\024\261\355\036\355\273"}, {0x2183, "\024\261\355\247\327"}, {0x2190, "\061\015\033\052"}, {0x2191, "\061\015\050\102"}, {0x2192, "\061\015\033\053"}, {0x2193, "\061\015\050\101"}, {0x2194, "\061\052\020\053"}, {0x2195, "\061\357\170"}, {0x2196, "\061\356\026"}, {0x2197, "\061\356\025"}, {0x2198, "\061\355\355"}, {0x2199, "\061\357\045"}, {0x219A, "\061\015\033\052\356\001"}, {0x219B, "\061\015\033\053\356\001"}, {0x219C, "\061\015\033\052\356\371"}, {0x219D, "\061\015\033\053\356\371"}, {0x219E, "\061\015\033\052\044\127\357\005"}, {0x219F, "\061\015\050\102\044\127\357\005"}, {0x21A0, "\061\015\033\053\044\127\357\005"}, {0x21A1, "\061\015\050\101\044\127\357\005"}, {0x21A2, "\061\015\033\052\044\355\255"}, {0x21A3, "\061\015\033\053\044\355\255"}, {0x21A4, "\061\355\316\355\016\015\033\052"}, {0x21A5, "\061\355\316\355\016\015\050\102"}, {0x21A6, "\061\355\316\355\016\015\033\053"}, {0x21A7, "\061\355\316\355\016\015\050\101"}, {0x21A8, "\061\357\170\355\150\363\042"}, {0x21A9, "\061\015\033\052\165\122"}, {0x21AA, "\061\015\033\053\165\122"}, {0x21AB, "\061\015\033\052\165\357\073"}, {0x21AC, "\061\015\033\053\165\357\073"}, {0x21AD, "\061\360\265\356\371"}, {0x21AE, "\061\360\265\356\001"}, {0x21AF, "\061\015\050\101\013\376\304"}, {0x21B0, "\061\015\050\102\165\355\005\015\033\052"}, {0x21B1, "\061\015\050\102\165\355\005\015\033\053"}, {0x21B2, "\061\015\050\101\165\355\005\015\033\052"}, {0x21B3, "\061\015\050\101\165\355\005\015\033\053"}, {0x21B4, "\061\015\033\053\165\275\015\050\101"}, {0x21B5, "\061\015\050\101\165\275\015\033\052"}, {0x21B6, "\061\361\313\013\355\217\356\107\013\040"}, {0x21B7, "\061\361\313\013\355\217\302\013\040"}, {0x21B8, "\061\356\026\356\215\375\375\247\356\223"}, {0x21B9, "\061\015\033\052\356\215\107\355\016\356\032\061\015\033\053\356\215\107\355\016"}, {0x21BA, "\061\013\355\217\356\107\044\274\355\345"}, {0x21BB, "\061\013\355\217\302\044\274\355\345"}, {0x21BC, "\355\167\015\033\052\165\355\252\015\050\102"}, {0x21BD, "\355\167\015\033\052\165\355\252\015\050\101"}, {0x21BE, "\355\167\015\050\102\165\355\252\015\033\053"}, {0x21BF, "\355\167\015\050\102\165\355\252\015\033\052"}, {0x21C0, "\355\167\015\033\053\165\355\252\015\050\102"}, {0x21C1, "\355\167\015\033\053\165\355\252\015\050\101"}, {0x21C2, "\355\167\015\050\101\165\355\252\015\033\053"}, {0x21C3, "\355\167\015\050\101\165\355\252\015\033\052"}, {0x21C4, "\061\015\033\053\356\032\061\015\033\052"}, {0x21C5, "\061\015\050\102\044\052\357\122\061\015\050\101"}, {0x21C6, "\061\015\033\052\356\032\061\015\033\053"}, {0x21C7, "\356\375\007\356\332\015\033\052"}, {0x21C8, "\356\375\007\356\332\015\050\102"}, {0x21C9, "\356\375\007\356\332\015\033\053"}, {0x21CA, "\356\375\007\356\332\015\050\101"}, {0x21CB, "\355\167\015\033\052\356\032\355\167\015\033\053"}, {0x21CC, "\355\167\015\033\053\356\032\355\167\015\033\052"}, {0x21CD, "\070\061\015\033\052\356\001"}, {0x21CE, "\070\061\052\020\053\356\001"}, {0x21CF, "\070\061\015\033\053\356\001"}, {0x21D0, "\070\061\015\033\052"}, {0x21D1, "\070\061\015\050\102"}, {0x21D2, "\070\061\015\033\053"}, {0x21D3, "\070\061\015\050\101"}, {0x21D4, "\070\061\052\020\053"}, {0x21D5, "\070\061\357\170"}, {0x21D6, "\070\061\356\026"}, {0x21D7, "\070\061\356\025"}, {0x21D8, "\070\061\355\355"}, {0x21D9, "\070\061\357\045"}, {0x21DA, "\355\222\061\015\033\052"}, {0x21DB, "\355\222\061\015\033\053"}, {0x21DC, "\061\015\033\052\013\362\014"}, {0x21DD, "\061\015\033\053\013\362\014"}, {0x21DE, "\061\015\050\102\165\070\247"}, {0x21DF, "\061\015\050\101\165\070\247"}, {0x21E0, "\061\357\010\015\033\052"}, {0x21E1, "\061\357\010\015\050\102"}, {0x21E2, "\061\357\010\015\033\053"}, {0x21E3, "\061\357\010\015\050\101"}, {0x21E4, "\061\015\033\052\356\215\107\355\016"}, {0x21E5, "\061\015\033\053\356\215\107\355\016"}, {0x21E6, "\061\356\141\015\033\052"}, {0x21E7, "\061\356\141\015\050\102"}, {0x21E8, "\061\356\141\015\033\053"}, {0x21E9, "\061\356\141\015\050\101"}, {0x21EA, "\061\356\141\015\050\102\044\356\033\355\316\355\016"}, {0x21EB, "\061\320\015\050\102\355\150\357\034"}, {0x21EC, "\061\320\015\050\102\355\150\357\034\020\355\130\243"}, {0x21ED, "\061\320\015\050\102\355\150\357\034\020\247\257"}, {0x21EE, "\070\061\320\015\050\102"}, {0x21EF, "\070\061\320\015\050\102\355\150\357\034"}, {0x21F0, "\061\320\015\033\053\362\355\355\150\361\103"}, {0x21F1, "\061\356\026\013\360\235"}, {0x21F2, "\061\355\355\013\360\235"}, {0x21F3, "\061\320\015\050\102\020\050\101"}, {0x2200, "\355\061\375\243"}, {0x2201, "\365\054"}, {0x2202, "\365\366\372\164"}, {0x2203, "\357\176\366\041"}, {0x2204, "\357\176\371\076\355\060"}, {0x2205, "\366\013\376\026"}, {0x2206, "\367\211"}, {0x2207, "\371\102"}, {0x2208, "\360\054\044"}, {0x2209, "\371\074\355\060\044"}, {0x220A, "\176\360\054\044"}, {0x220B, "\356\057\355\250\360\031"}, {0x220C, "\355\142\356\057\355\060\355\250\360\031"}, {0x220D, "\176\356\057\355\250\360\031"}, {0x220E, "\360\113\373\374\366\046\365\363"}, {0x220F, "\356\110\007\033\356\014"}, {0x2210, "\365\074\007\033\356\014"}, {0x2211, "\374\357\007\033\356\014"}, {0x2212, "\057\355\022"}, {0x2213, "\057\371\015"}, {0x2214, "\215\356\036"}, {0x2215, "\247\355\046\007\357\137"}, {0x2216, "\360\202\365\154"}, {0x2217, "\355\173\355\117"}, {0x2218, "\355\173\304"}, {0x2219, "\355\173\356\111"}, {0x221A, "\357\306\356\055"}, {0x221B, "\357\306\365\130"}, {0x221C, "\357\306\361\247"}, {0x221D, "\373\275\044"}, {0x221E, "\367\213"}, {0x221F, "\355\376\222"}, {0x2220, "\355\376"}, {0x2221, "\355\376\361\057"}, {0x2222, "\355\376\374\371"}, {0x2223, "\356\176\107\360\207\007"}, {0x2224, "\371\075\355\060\107\360\207\007"}, {0x2225, "\357\271\044"}, {0x2226, "\355\045\357\271\044"}, {0x2227, "\020\356\102"}, {0x2228, "\113\356\102"}, {0x2229, "\357\206"}, {0x222A, "\357\376"}, {0x222B, "\355\261"}, {0x222C, "\355\261\070"}, {0x222D, "\355\261\355\222"}, {0x222E, "\355\261\007\355\134"}, {0x222F, "\355\261\007\375\047"}, {0x2230, "\355\261\007\376\054"}, {0x2231, "\355\261\013\355\217\302"}, {0x2232, "\355\261\007\355\134\013\355\217\302"}, {0x2233, "\355\261\007\355\134\013\355\217\356\107"}, {0x2234, "\355\234\365\066"}, {0x2235, "\372\161\355\025"}, {0x2236, "\374\044"}, {0x2237, "\361\230"}, {0x2238, "\355\022\356\036"}, {0x2239, "\366\040"}, {0x223A, "\361\230\366\305"}, {0x223B, "\360\333"}, {0x223C, "\355\173\173"}, {0x223D, "\355\173\173\355\145"}, {0x223E, "\224\356\155\355\145"}, {0x223F, "\374\323"}, {0x2240, "\356\110\365\113"}, {0x2241, "\355\045\173"}, {0x2242, "\355\022\173"}, {0x2243, "\360\061\174\044"}, {0x2244, "\355\045\360\061\174\044"}, {0x2245, "\356\142\174\044"}, {0x2246, "\356\142\355\271\355\045\357\343\174\044"}, {0x2247, "\245\356\142\245\357\343\174\044"}, {0x2248, "\357\013\174\044"}, {0x2249, "\355\045\357\013\174\044"}, {0x224A, "\357\013\174\113\174\044"}, {0x224B, "\355\222\173"}, {0x224C, "\366\014\174\044"}, {0x224D, "\355\132\044"}, {0x224E, "\360\320\355\132\044"}, {0x224F, "\360\202\075"}, {0x2250, "\375\164\015\033\370\174"}, {0x2251, "\360\320\174\044"}, {0x2252, "\356\142\174\044\113\356\021\007"}, {0x2253, "\356\021\007\113\356\142\174\044"}, {0x2254, "\355\105\174"}, {0x2255, "\174\355\105"}, {0x2256, "\304\355\251\174"}, {0x2257, "\174\165\304\013\040"}, {0x2258, "\365\101\044"}, {0x2259, "\366\025"}, {0x225A, "\377\040\044"}, {0x225B, "\174\165\355\017\013\040"}, {0x225C, "\174\356\062"}, {0x225D, "\174\355\234\365\361\044"}, {0x225E, "\361\057\355\234"}, {0x225F, "\377\032\013\365\332"}, {0x2260, "\355\045\174\044"}, {0x2261, "\360\347\044"}, {0x2262, "\355\045\360\347\044"}, {0x2263, "\357\343\355\132\044"}, {0x2264, "\215\176\113\174\044"}, {0x2265, "\215\342\113\174\044"}, {0x2266, "\215\176\355\025\356\032\174\044"}, {0x2267, "\215\342\355\025\356\032\174\044"}, {0x2268, "\215\176\355\271\355\045\174\044"}, {0x2269, "\215\342\355\271\355\045\174\044"}, {0x226A, "\360\075\215\176\355\025"}, {0x226B, "\360\075\215\342\355\025"}, {0x226C, "\075"}, {0x226D, "\355\045\355\132\044"}, {0x226E, "\355\060\215\176\355\025"}, {0x226F, "\355\060\215\342\355\025"}, {0x2270, "\245\215\176\245\174\044"}, {0x2271, "\245\215\342\245\174\044"}, {0x2272, "\215\176\113\355\132\044"}, {0x2273, "\215\342\113\355\132\044"}, {0x2274, "\245\215\176\245\355\132\044"}, {0x2275, "\245\215\342\245\355\132\044"}, {0x2276, "\215\176\113\215\342\355\025"}, {0x2277, "\215\342\113\215\176\355\025"}, {0x2278, "\245\215\176\245\215\342\355\025"}, {0x2279, "\245\215\342\245\215\176\355\025"}, {0x227A, "\356\246"}, {0x227B, "\356\121"}, {0x227C, "\356\246\113\356\176\174\044"}, {0x227D, "\356\121\113\356\176\174\044"}, {0x227E, "\356\246\113\356\176\355\132\044"}, {0x227F, "\356\121\113\356\176\355\132\044"}, {0x2280, "\355\142\356\246\355\060"}, {0x2281, "\355\142\356\121\355\060"}, {0x2282, "\356\120\007"}, {0x2283, "\356\122\007"}, {0x2284, "\355\060\107\356\120\007"}, {0x2285, "\355\060\107\356\122\007"}, {0x2286, "\356\120\113\174\044"}, {0x2287, "\356\122\113\174\044"}, {0x2288, "\245\107\356\120\245\174\044"}, {0x2289, "\245\107\356\122\245\174\044"}, {0x228A, "\356\120\355\271\355\045\174\044"}, {0x228B, "\356\122\355\271\355\045\174\044"}, {0x228C, "\357\244"}, {0x228D, "\356\357\007\357\244"}, {0x228E, "\357\376\007\357\244"}, {0x228F, "\356\021\356\055\007"}, {0x2290, "\356\235\035\007"}, {0x2291, "\356\021\356\055\113\174\044"}, {0x2292, "\356\235\035\113\174\044"}, {0x2293, "\363\266\035"}, {0x2294, "\365\106\356\055"}, {0x2295, "\215\051"}, {0x2296, "\355\022\051"}, {0x2297, "\357\245\355\234\051"}, {0x2298, "\247\355\046\007\357\137\200"}, {0x2299, "\355\173\037\051"}, {0x229A, "\355\173\304\051"}, {0x229B, "\355\173\355\117\051"}, {0x229C, "\174\051"}, {0x229D, "\355\011\051"}, {0x229E, "\215\356\172"}, {0x229F, "\355\022\356\172"}, {0x22A0, "\357\245\355\234\356\172"}, {0x22A1, "\355\173\037\356\172"}, {0x22A2, "\355\016\222"}, {0x22A3, "\355\016\052"}, {0x22A4, "\355\016\015\050\101"}, {0x22A5, "\355\016\015\050\102"}, {0x22A6, "\363\001"}, {0x22A7, "\371\012"}, {0x22A8, "\362\102"}, {0x22A9, "\372\073"}, {0x22AA, "\247\257\355\222\165\357\364\044\053"}, {0x22AB, "\247\257\070\165\357\364\044\053\070"}, {0x22AC, "\355\142\373\277\355\060"}, {0x22AD, "\355\060\362\102"}, {0x22AE, "\371\077\355\060"}, {0x22AF, "\371\323\257\070\165\357\364\044\053\070"}, {0x22B0, "\373\271\357\041\361\260"}, {0x22B1, "\356\121\357\041\361\260"}, {0x22B2, "\355\354\355\233\007"}, {0x22B3, "\356\057\355\250\355\354\355\233"}, {0x22B4, "\355\354\355\233\113\174\044"}, {0x22B5, "\356\057\355\250\355\354\355\233\113\174\044"}, {0x22B6, "\356\235\007"}, {0x22B7, "\356\021\007"}, {0x22B8, "\371\035"}, {0x22B9, "\370\303\366\331\365\064"}, {0x22BA, "\367\224"}, {0x22BB, "\113\366\037"}, {0x22BC, "\355\045\020"}, {0x22BD, "\355\045\113"}, {0x22BE, "\355\376\222\165\355\204"}, {0x22BF, "\350\356\113"}, {0x22C0, "\020\356\102\007\033\356\014"}, {0x22C1, "\113\356\102\007\033\356\014"}, {0x22C2, "\357\206\007\033\356\014"}, {0x22C3, "\374\204\007\033\356\014"}, {0x22C4, "\355\173\355\270"}, {0x22C5, "\355\173\037"}, {0x22C6, "\355\173\355\017"}, {0x22C7, "\365\301\357\245"}, {0x22C8, "\356\364\361\156"}, {0x22C9, "\356\110\357\031\044\052\007\360\240\355\233"}, {0x22CA, "\356\110\357\031\044\053\007\360\240\355\233"}, {0x22CB, "\356\110\357\031\044\052"}, {0x22CC, "\356\110\357\031\044\053"}, {0x22CD, "\355\022\173\355\145"}, {0x22CE, "\113\356\102\361\256"}, {0x22CF, "\020\356\102\361\256"}, {0x22D0, "\356\120\070"}, {0x22D1, "\356\122\070"}, {0x22D2, "\357\206\070"}, {0x22D3, "\357\376\070"}, {0x22D4, "\360\254"}, {0x22D5, "\174\020\357\271\044"}, {0x22D6, "\215\176\355\025\356\036"}, {0x22D7, "\215\342\355\025\356\036"}, {0x22D8, "\360\141\215\176\355\025"}, {0x22D9, "\360\141\215\342\355\025"}, {0x22DA, "\215\176\113\174\113\215\342\355\025"}, {0x22DB, "\215\342\113\174\113\215\176\355\025"}, {0x22DC, "\174\113\215\176\355\025"}, {0x22DD, "\174\113\215\342\355\025"}, {0x22DE, "\174\113\356\246"}, {0x22DF, "\365\375\113\356\121"}, {0x22E0, "\245\361\232\245\174\044"}, {0x22E1, "\245\361\345\245\174\044"}, {0x22E2, "\245\356\021\356\055\245\174\044"}, {0x22E3, "\245\356\235\035\245\174\044"}, {0x22E4, "\356\021\035\113\357\136\007"}, {0x22E5, "\356\235\035\113\357\136\007"}, {0x22E6, "\215\176\355\271\355\045\355\132\044"}, {0x22E7, "\215\342\355\271\355\045\355\132\044"}, {0x22E8, "\361\232\355\271\355\045\355\132\044"}, {0x22E9, "\361\345\355\271\355\045\355\132\044"}, {0x22EA, "\355\060\107\355\354\355\233\007"}, {0x22EB, "\355\142\356\057\355\060\355\250\355\354\355\233"}, {0x22EC, "\245\355\354\355\233\245\174\044"}, {0x22ED, "\245\174\245\365\067\355\250\355\354\355\233"}, {0x22EE, "\136\252\375\051"}, {0x22EF, "\136\252\371\066"}, {0x22F0, "\136\252\360\201\015\050\275\102\044\053"}, {0x22F1, "\136\252\360\201\015\050\275\101\044\053"}, {0x2300, "\022\365\267"}, {0x2301, "\061\377\034"}, {0x2302, "\370\261"}, {0x2303, "\355\005\007\061\015\050\102"}, {0x2304, "\355\005\007\061\015\050\101"}, {0x2305, "\373\274"}, {0x2306, "\372\207"}, {0x2307, "\244\356\371"}, {0x2308, "\361\206\044\052"}, {0x2309, "\361\206\044\053"}, {0x230A, "\361\207\044\052"}, {0x230B, "\361\207\044\053"}, {0x230C, "\356\253\355\355"}, {0x230D, "\356\253\357\045"}, {0x230E, "\356\253\356\025"}, {0x230F, "\356\253\356\026"}, {0x2310, "\057\356\366\355\015"}, {0x2311, "\372\167\356\055"}, {0x2312, "\355\204"}, {0x2313, "\374\250"}, {0x2314, "\374\247"}, {0x2315, "\366\012\375\363"}, {0x2316, "\356\253\007\363\232"}, {0x2317, "\035\007\376\050"}, {0x2318, "\022\007\037\365\164"}, {0x2319, "\057\356\366\327"}, {0x231A, "\371\023"}, {0x231B, "\374\212"}, {0x231C, "\275\356\026"}, {0x231D, "\275\356\025"}, {0x231E, "\275\357\045"}, {0x231F, "\275\355\355"}, {0x2320, "\355\001\355\356\360\162"}, {0x2321, "\355\001\356\022\360\162"}, {0x2322, "\361\073"}, {0x2323, "\374\365"}, {0x2324, "\355\005\007\061\015\050\102\075\127\362\037\367\107"}, {0x2325, "\362\030\372\110"}, {0x2326, "\365\374\044\053"}, {0x2327, "\355\030\355\251\356\113"}, {0x2328, "\365\044"}, {0x2329, "\122\015\033\052"}, {0x232A, "\122\015\033\053"}, {0x232B, "\365\373\044\052"}, {0x232C, "\362\337\007\363\114"}, {0x232D, "\365\144"}, {0x232E, "\373\272\367\110"}, {0x232F, "\375\060"}, {0x2330, "\365\114\375\237"}, {0x2331, "\372\115\007\370\324"}, {0x2332, "\374\203\365\062"}, {0x2333, "\372\203"}, {0x2334, "\362\325"}, {0x2335, "\366\112"}, {0x2336, "\022\007\154\155\374\041"}, {0x2337, "\022\007\154\155\355\077\357\236"}, {0x2338, "\022\007\154\155\377\041"}, {0x2339, "\022\007\154\155\365\325"}, {0x233A, "\022\007\154\155\374\067"}, {0x233B, "\022\007\154\155\362\376"}, {0x233C, "\022\007\154\155\374\066"}, {0x233D, "\022\007\154\155\366\121"}, {0x233E, "\022\007\154\155\363\110"}, {0x233F, "\022\007\154\155\365\104\233"}, {0x2340, "\022\007\154\155\365\071\356\001"}, {0x2341, "\022\007\154\155\355\077\355\046"}, {0x2342, "\022\007\154\155\355\077\355\046\356\075"}, {0x2343, "\022\007\154\155\355\077\215\176\355\025"}, {0x2344, "\022\007\154\155\355\077\215\342\355\025"}, {0x2345, "\022\007\154\155\356\304\015\033\052"}, {0x2346, "\022\007\154\155\356\304\015\033\053"}, {0x2347, "\022\007\154\155\355\077\370\167"}, {0x2348, "\022\007\154\155\355\077\365\065"}, {0x2349, "\022\007\154\155\361\307"}, {0x234A, "\022\007\154\155\355\016\015\050\101\355\220"}, {0x234B, "\022\007\154\155\374\230"}, {0x234C, "\022\007\154\155\355\077\072\355\145"}, {0x234D, "\022\007\154\155\355\077\356\062"}, {0x234E, "\022\007\154\155\360\251"}, {0x234F, "\022\007\154\155\356\304\015\050\102"}, {0x2350, "\022\007\154\155\355\077\357\102"}, {0x2351, "\022\007\154\155\355\016\015\050\102"}, {0x2352, "\022\007\154\155\363\241"}, {0x2353, "\022\007\154\155\355\077\072"}, {0x2354, "\022\007\154\155\355\077\365\250"}, {0x2355, "\022\007\154\155\366\042"}, {0x2356, "\022\007\154\155\356\304\015\050\101"}, {0x2357, "\022\007\154\155\355\077\366\007"}, {0x2358, "\022\007\154\155\355\310\355\220"}, {0x2359, "\022\007\154\155\356\062\355\220"}, {0x235A, "\022\007\154\155\355\270\355\220"}, {0x235B, "\022\007\154\155\176\304\355\220"}, {0x235C, "\022\007\154\155\304\355\220"}, {0x235D, "\022\007\154\155\362\277"}, {0x235E, "\022\007\154\155\355\310\356\172"}, {0x235F, "\022\007\154\155\363\360"}, {0x2360, "\022\007\154\155\363\161\035"}, {0x2361, "\022\007\154\155\375\076"}, {0x2362, "\022\007\154\155\365\076"}, {0x2363, "\022\007\154\155\375\101"}, {0x2364, "\022\007\154\155\370\372"}, {0x2365, "\022\007\154\155\365\273"}, {0x2366, "\022\007\154\155\360\254"}, {0x2367, "\022\007\154\155\357\076"}, {0x2368, "\022\007\154\155\361\073"}, {0x2369, "\022\007\154\155\371\014"}, {0x236A, "\022\007\154\155\363\036"}, {0x236B, "\022\007\154\155\376\021"}, {0x236C, "\022\007\154\155\376\305"}, {0x236D, "\022\007\154\155\362\322"}, {0x236E, "\022\007\154\155\356\106\355\220"}, {0x236F, "\022\007\154\155\355\077\357\136\007"}, {0x2370, "\022\007\154\155\355\077\367\214"}, {0x2371, "\022\007\154\155\371\324"}, {0x2372, "\022\007\154\155\371\325"}, {0x2373, "\022\007\154\155\104"}, {0x2374, "\022\007\154\155\356\040"}, {0x2375, "\022\007\154\155\202"}, {0x2376, "\022\007\154\155\204\355\220"}, {0x2377, "\022\007\154\155\330\355\220"}, {0x2378, "\022\007\154\155\104\355\220"}, {0x2379, "\022\007\154\155\202\355\220"}, {0x237A, "\022\007\154\155\204"}, {0x237B, "\057\007\371\326"}, {0x237D, "\363\230\361\153\044\377\037"}, {0x237E, "\022\374\360"}, {0x237F, "\244\257\044\037\355\141"}, {0x2380, "\022\356\061"}, {0x2381, "\022\007\361\331\360\142"}, {0x2382, "\022\007\361\331\365\277"}, {0x2383, "\022\365\162"}, {0x2384, "\022\007\365\055"}, {0x2385, "\035\147\375\255\013\355\177\356\311\357\122\244\257"}, {0x2386, "\022\365\155"}, {0x2387, "\022\360\052"}, {0x2388, "\022\361\300\007\360\072"}, {0x2389, "\247\356\337\357\147\200"}, {0x238A, "\350\355\005\015\050\101\051"}, {0x238B, "\274\355\133\044\061\356\026"}, {0x238C, "\022\365\357"}, {0x238D, "\022\371\020"}, {0x238E, "\022\367\160"}, {0x238F, "\022\357\035\013\360\136\355\345\007\375\341"}, {0x2390, "\022\357\035\013\360\136\355\345\007\375\342"}, {0x2391, "\022\357\035\361\163\362\276"}, {0x2392, "\022\357\035\361\163\377\035"}, {0x2393, "\022\365\110\360\142\265\127"}, {0x2394, "\022\154\370\206"}, {0x2395, "\022\007\154\155\355\077"}, {0x2396, "\022\007\017\007\355\047\360\225"}, {0x2397, "\356\374\373\301"}, {0x2398, "\356\374\361\346"}, {0x2399, "\022\360\351\360\030"}, {0x239A, "\022\371\202\360\030"}, {0x2400, "\022\355\061\361\126"}, {0x2401, "\022\355\322\360\161"}, {0x2402, "\022\355\322\007\357\050"}, {0x2403, "\022\116\007\357\050"}, {0x2404, "\022\116\007\356\047"}, {0x2405, "\022\360\173"}, {0x2406, "\022\360\156\007\357\027"}, {0x2407, "\022\007\361\327"}, {0x2408, "\022\355\075\360\055"}, {0x2409, "\022\007\357\047\356\337"}, {0x240A, "\022\007\360\117\007\244"}, {0x240B, "\022\007\357\047\257"}, {0x240C, "\022\007\374\232\007\356\374"}, {0x240D, "\022\007\361\263\007\360\120"}, {0x240E, "\022\360\335\356\315"}, {0x240F, "\022\013\356\315"}, {0x2410, "\022\360\027\356\047"}, {0x2411, "\022\007\355\157\007\356\324\107"}, {0x2412, "\022\007\355\157\007\356\324\127"}, {0x2413, "\022\007\355\157\007\356\324\136"}, {0x2414, "\022\007\355\157\007\356\324\221"}, {0x2415, "\022\360\156\007\357\027\302"}, {0x2416, "\022\007\361\352"}, {0x2417, "\022\007\116\007\355\020\007\356\047"}, {0x2418, "\022\360\157"}, {0x2419, "\022\007\116\007\361\347"}, {0x241A, "\022\007\357\345"}, {0x241B, "\022\365\170"}, {0x241C, "\022\355\047\007\366\071"}, {0x241D, "\022\355\047\007\366\254"}, {0x241E, "\022\355\047\365\153"}, {0x241F, "\022\355\047\365\167"}, {0x2420, "\022\355\061\355\075"}, {0x2421, "\022\007\361\350"}, {0x2422, "\022\376\051\355\061\370\126"}, {0x2423, "\363\163\361\153"}, {0x2424, "\022\007\371\333\244"}, {0x2425, "\022\007\375\046\265\127"}, {0x2426, "\022\007\357\345\265\127"}, {0x2440, "\122\355\213"}, {0x2441, "\363\261\355\213"}, {0x2442, "\360\255\355\213"}, {0x2443, "\360\255\355\100\355\213"}, {0x2444, "\357\073\007\363\250\355\213"}, {0x2445, "\356\364\361\156\355\213"}, {0x2446, "\367\177\007\375\037\363\032\355\213"}, {0x2447, "\371\021\213\363\342\355\213"}, {0x2448, "\355\011\355\213"}, {0x2449, "\361\131\007\365\057\355\213"}, {0x244A, "\070\247\355\046\356\075\355\213"}, {0x2460, "\024\107\051"}, {0x2461, "\024\127\051"}, {0x2462, "\024\136\051"}, {0x2463, "\024\221\051"}, {0x2464, "\024\231\051"}, {0x2465, "\024\256\051"}, {0x2466, "\024\253\051"}, {0x2467, "\024\227\051"}, {0x2468, "\024\260\051"}, {0x2469, "\211\355\036\051"}, {0x246A, "\211\356\031\051"}, {0x246B, "\211\355\321\051"}, {0x246C, "\211\356\262\051"}, {0x246D, "\211\356\250\051"}, {0x246E, "\211\356\252\051"}, {0x246F, "\211\356\045\051"}, {0x2470, "\211\356\164\051"}, {0x2471, "\211\356\162\051"}, {0x2472, "\211\356\163\051"}, {0x2473, "\211\356\052\051"}, {0x2474, "\024\107\075\077"}, {0x2475, "\024\127\075\077"}, {0x2476, "\024\136\075\077"}, {0x2477, "\024\221\075\077"}, {0x2478, "\024\231\075\077"}, {0x2479, "\024\256\075\077"}, {0x247A, "\024\253\075\077"}, {0x247B, "\024\227\075\077"}, {0x247C, "\024\260\075\077"}, {0x247D, "\211\355\036\075\077"}, {0x247E, "\211\356\031\075\077"}, {0x247F, "\211\355\321\075\077"}, {0x2480, "\211\356\262\075\077"}, {0x2481, "\211\356\250\075\077"}, {0x2482, "\211\356\252\075\077"}, {0x2483, "\211\356\045\075\077"}, {0x2484, "\211\356\164\075\077"}, {0x2485, "\211\356\162\075\077"}, {0x2486, "\211\356\163\075\077"}, {0x2487, "\211\356\052\075\077"}, {0x2488, "\024\107\037"}, {0x2489, "\024\127\037"}, {0x248A, "\024\136\037"}, {0x248B, "\024\221\037"}, {0x248C, "\024\231\037"}, {0x248D, "\024\256\037"}, {0x248E, "\024\253\037"}, {0x248F, "\024\227\037"}, {0x2490, "\024\260\037"}, {0x2491, "\211\355\036\037"}, {0x2492, "\211\356\031\037"}, {0x2493, "\211\355\321\037"}, {0x2494, "\211\356\262\037"}, {0x2495, "\211\356\250\037"}, {0x2496, "\211\356\252\037"}, {0x2497, "\211\356\045\037"}, {0x2498, "\211\356\164\037"}, {0x2499, "\211\356\162\037"}, {0x249A, "\211\356\163\037"}, {0x249B, "\211\356\052\037"}, {0x249C, "\001\005\006\063\075\077"}, {0x249D, "\001\005\006\336\075\077"}, {0x249E, "\001\005\006\315\075\077"}, {0x249F, "\001\005\006\277\075\077"}, {0x24A0, "\001\005\006\130\075\077"}, {0x24A1, "\001\005\006\355\064\075\077"}, {0x24A2, "\001\005\006\270\075\077"}, {0x24A3, "\001\005\006\240\075\077"}, {0x24A4, "\001\005\006\103\075\077"}, {0x24A5, "\001\005\006\355\055\075\077"}, {0x24A6, "\001\005\006\354\075\077"}, {0x24A7, "\001\005\006\212\075\077"}, {0x24A8, "\001\005\006\300\075\077"}, {0x24A9, "\001\005\006\242\075\077"}, {0x24AA, "\001\005\006\064\075\077"}, {0x24AB, "\001\005\006\355\023\075\077"}, {0x24AC, "\001\005\006\355\175\075\077"}, {0x24AD, "\001\005\006\170\075\077"}, {0x24AE, "\001\005\006\224\075\077"}, {0x24AF, "\001\005\006\262\075\077"}, {0x24B0, "\001\005\006\132\075\077"}, {0x24B1, "\001\005\006\355\027\075\077"}, {0x24B2, "\001\005\006\351\075\077"}, {0x24B3, "\001\005\006\355\030\075\077"}, {0x24B4, "\001\005\006\267\075\077"}, {0x24B5, "\001\005\006\273\075\077"}, {0x24B6, "\001\010\006\063\200"}, {0x24B7, "\001\010\006\336\200"}, {0x24B8, "\001\010\006\315\200"}, {0x24B9, "\001\010\006\277\200"}, {0x24BA, "\001\010\006\130\200"}, {0x24BB, "\001\010\006\355\064\200"}, {0x24BC, "\001\010\006\270\200"}, {0x24BD, "\001\010\006\240\200"}, {0x24BE, "\001\010\006\103\200"}, {0x24BF, "\001\010\006\355\055\200"}, {0x24C0, "\001\010\006\354\200"}, {0x24C1, "\001\010\006\212\200"}, {0x24C2, "\001\010\006\300\200"}, {0x24C3, "\001\010\006\242\200"}, {0x24C4, "\001\010\006\064\200"}, {0x24C5, "\001\010\006\355\023\200"}, {0x24C6, "\001\010\006\355\175\200"}, {0x24C7, "\001\010\006\170\200"}, {0x24C8, "\001\010\006\224\200"}, {0x24C9, "\001\010\006\262\200"}, {0x24CA, "\001\010\006\132\200"}, {0x24CB, "\001\010\006\355\027\200"}, {0x24CC, "\001\010\006\351\200"}, {0x24CD, "\001\010\006\355\030\200"}, {0x24CE, "\001\010\006\267\200"}, {0x24CF, "\001\010\006\273\200"}, {0x24D0, "\001\005\006\063\200"}, {0x24D1, "\001\005\006\336\200"}, {0x24D2, "\001\005\006\315\200"}, {0x24D3, "\001\005\006\277\200"}, {0x24D4, "\001\005\006\130\200"}, {0x24D5, "\001\005\006\355\064\200"}, {0x24D6, "\001\005\006\270\200"}, {0x24D7, "\001\005\006\240\200"}, {0x24D8, "\001\005\006\103\200"}, {0x24D9, "\001\005\006\355\055\200"}, {0x24DA, "\001\005\006\354\200"}, {0x24DB, "\001\005\006\212\200"}, {0x24DC, "\001\005\006\300\200"}, {0x24DD, "\001\005\006\242\200"}, {0x24DE, "\001\005\006\064\200"}, {0x24DF, "\001\005\006\355\023\200"}, {0x24E0, "\001\005\006\355\175\200"}, {0x24E1, "\001\005\006\170\200"}, {0x24E2, "\001\005\006\224\200"}, {0x24E3, "\001\005\006\262\200"}, {0x24E4, "\001\005\006\132\200"}, {0x24E5, "\001\005\006\355\027\200"}, {0x24E6, "\001\005\006\351\200"}, {0x24E7, "\001\005\006\355\030\200"}, {0x24E8, "\001\005\006\267\200"}, {0x24E9, "\001\005\006\273\200"}, {0x24EA, "\024\333\051"}, {0x2500, "\065\243\116"}, {0x2501, "\065\243\151"}, {0x2502, "\065\203\116"}, {0x2503, "\065\203\151"}, {0x2504, "\065\355\133\355\222\243\116"}, {0x2505, "\065\355\133\355\222\243\151"}, {0x2506, "\065\355\133\355\222\203\116"}, {0x2507, "\065\355\133\355\222\203\151"}, {0x2508, "\065\355\133\357\020\243\116"}, {0x2509, "\065\355\133\357\020\243\151"}, {0x250A, "\065\355\133\357\020\203\116"}, {0x250B, "\065\355\133\357\020\203\151"}, {0x250C, "\065\116\015\050\101\020\015\033\053"}, {0x250D, "\065\116\015\050\101\020\151\015\033\053"}, {0x250E, "\065\151\015\050\101\020\116\015\033\053"}, {0x250F, "\065\151\015\050\101\020\015\033\053"}, {0x2510, "\065\116\015\050\101\020\015\033\052"}, {0x2511, "\065\116\015\050\101\020\151\015\033\052"}, {0x2512, "\065\151\015\050\101\020\116\015\033\052"}, {0x2513, "\065\151\015\050\101\020\015\033\052"}, {0x2514, "\065\116\015\050\102\020\015\033\053"}, {0x2515, "\065\116\015\050\102\020\151\015\033\053"}, {0x2516, "\065\151\015\050\102\020\116\015\033\053"}, {0x2517, "\065\151\015\050\102\020\015\033\053"}, {0x2518, "\065\116\015\050\102\020\015\033\052"}, {0x2519, "\065\116\015\050\102\020\151\015\033\052"}, {0x251A, "\065\151\015\050\102\020\116\015\033\052"}, {0x251B, "\065\151\015\050\102\020\015\033\052"}, {0x251C, "\065\116\203\020\015\033\053"}, {0x251D, "\065\116\203\020\151\015\033\053"}, {0x251E, "\065\151\015\050\102\020\116\015\033\053\020\015\050\101"}, {0x251F, "\065\151\015\050\101\020\116\015\033\053\020\015\050\102"}, {0x2520, "\065\151\203\020\116\015\033\053"}, {0x2521, "\065\116\015\050\101\020\151\015\033\053\020\015\050\102"}, {0x2522, "\065\116\015\050\102\020\151\015\033\053\020\015\050\101"}, {0x2523, "\065\151\203\020\015\033\053"}, {0x2524, "\065\116\203\020\015\033\052"}, {0x2525, "\065\116\203\020\151\015\033\052"}, {0x2526, "\065\151\015\050\102\020\116\015\033\052\020\015\050\101"}, {0x2527, "\065\151\015\050\101\020\116\015\033\052\020\015\050\102"}, {0x2528, "\065\151\203\020\116\015\033\052"}, {0x2529, "\065\116\015\050\101\020\151\015\033\052\020\015\050\102"}, {0x252A, "\065\116\015\050\102\020\151\015\033\052\020\015\050\101"}, {0x252B, "\065\151\203\020\015\033\052"}, {0x252C, "\065\116\015\050\101\020\243"}, {0x252D, "\065\151\015\033\052\020\116\015\033\053\020\015\050\101"}, {0x252E, "\065\151\015\033\053\020\116\015\033\052\020\015\050\101"}, {0x252F, "\065\116\015\050\101\020\151\243"}, {0x2530, "\065\151\015\050\101\020\116\243"}, {0x2531, "\065\116\015\033\053\020\151\015\033\052\020\015\050\101"}, {0x2532, "\065\116\015\033\052\020\151\015\033\053\020\015\050\101"}, {0x2533, "\065\151\015\050\101\020\243"}, {0x2534, "\065\116\015\050\102\020\243"}, {0x2535, "\065\151\015\033\052\020\116\015\033\053\020\015\050\102"}, {0x2536, "\065\151\015\033\053\020\116\015\033\052\020\015\050\102"}, {0x2537, "\065\116\015\050\102\020\151\243"}, {0x2538, "\065\151\015\050\102\020\116\243"}, {0x2539, "\065\116\015\033\053\020\151\015\033\052\020\015\050\102"}, {0x253A, "\065\116\015\033\052\020\151\015\033\053\020\015\050\102"}, {0x253B, "\065\151\015\050\102\020\243"}, {0x253C, "\065\116\203\020\243"}, {0x253D, "\065\151\015\033\052\020\116\015\033\053\020\203"}, {0x253E, "\065\151\015\033\053\020\116\015\033\052\020\203"}, {0x253F, "\065\203\116\020\243\151"}, {0x2540, "\065\151\015\050\102\020\116\015\050\101\020\243"}, {0x2541, "\065\151\015\050\101\020\116\015\050\102\020\243"}, {0x2542, "\065\203\151\020\243\116"}, {0x2543, "\065\151\015\033\052\020\015\050\102\020\116\015\033\053\020\015\050\101"}, {0x2544, "\065\151\015\033\053\020\015\050\102\020\116\015\033\052\020\015\050\101"}, {0x2545, "\065\151\015\033\052\020\015\050\101\020\116\015\033\053\020\015\050\102"}, {0x2546, "\065\151\015\033\053\020\015\050\101\020\116\015\033\052\020\015\050\102"}, {0x2547, "\065\116\015\050\101\020\151\015\050\102\020\243"}, {0x2548, "\065\116\015\050\102\020\151\015\050\101\020\243"}, {0x2549, "\065\116\015\033\053\020\151\015\033\052\020\203"}, {0x254A, "\065\116\015\033\052\020\151\015\033\053\020\203"}, {0x254B, "\065\203\020\243\151"}, {0x254C, "\065\355\133\070\243\116"}, {0x254D, "\065\355\133\070\243\151"}, {0x254E, "\065\355\133\070\203\116"}, {0x254F, "\065\355\133\070\203\151"}, {0x2550, "\065\070\243"}, {0x2551, "\065\070\203"}, {0x2552, "\065\355\003\050\101\020\070\015\033\053"}, {0x2553, "\065\070\015\050\101\020\355\003\015\033\053"}, {0x2554, "\065\070\015\050\101\020\015\033\053"}, {0x2555, "\065\355\003\015\050\101\020\070\015\033\052"}, {0x2556, "\065\070\015\050\101\020\355\003\015\033\052"}, {0x2557, "\065\070\015\050\101\020\015\033\052"}, {0x2558, "\065\355\003\015\050\102\020\070\015\033\053"}, {0x2559, "\065\070\015\050\102\020\355\003\015\033\053"}, {0x255A, "\065\070\015\050\102\020\015\033\053"}, {0x255B, "\065\355\003\015\050\102\020\070\015\033\052"}, {0x255C, "\065\070\015\050\102\020\355\003\015\033\052"}, {0x255D, "\065\070\015\050\102\020\015\033\052"}, {0x255E, "\065\203\355\003\020\222\070"}, {0x255F, "\065\203\070\020\222\355\003"}, {0x2560, "\065\070\203\020\015\033\053"}, {0x2561, "\065\203\355\003\020\052\070"}, {0x2562, "\065\203\070\020\052\355\003"}, {0x2563, "\065\070\203\020\015\033\052"}, {0x2564, "\065\015\050\101\355\003\020\243\070"}, {0x2565, "\065\015\050\101\070\020\243\355\003"}, {0x2566, "\065\070\015\050\101\020\243"}, {0x2567, "\065\015\050\102\355\003\020\243\070"}, {0x2568, "\065\015\050\102\070\020\243\355\003"}, {0x2569, "\065\070\015\050\102\020\243"}, {0x256A, "\065\203\355\003\020\243\070"}, {0x256B, "\065\203\070\020\243\355\003"}, {0x256C, "\065\070\203\020\243"}, {0x256D, "\065\116\355\204\015\050\101\020\015\033\053"}, {0x256E, "\065\116\355\204\015\050\101\020\015\033\052"}, {0x256F, "\065\116\355\204\015\050\102\020\015\033\052"}, {0x2570, "\065\116\355\204\015\050\102\020\015\033\053"}, {0x2571, "\065\357\135\116\213\275\346\222\355\311\275\322\052"}, {0x2572, "\065\357\135\116\213\275\346\052\015\050\275\322\222"}, {0x2573, "\065\357\135\116\013\355\035"}, {0x2574, "\065\116\015\033\052"}, {0x2575, "\065\116\015\050\102"}, {0x2576, "\065\116\015\033\053"}, {0x2577, "\065\116\015\050\101"}, {0x2578, "\065\151\015\033\052"}, {0x2579, "\065\151\015\050\102"}, {0x257A, "\065\151\015\033\053"}, {0x257B, "\065\151\015\050\101"}, {0x257C, "\065\116\015\033\052\020\151\015\033\053"}, {0x257D, "\065\116\015\050\102\020\151\015\050\101"}, {0x257E, "\065\151\015\033\052\020\116\015\033\053"}, {0x257F, "\065\151\015\050\102\020\116\015\050\101"}, {0x2580, "\355\020\355\001\355\356"}, {0x2581, "\355\020\107\356\212\322"}, {0x2582, "\355\020\107\357\021\322"}, {0x2583, "\355\020\136\355\260\322"}, {0x2584, "\355\020\355\001\356\022"}, {0x2585, "\355\020\231\355\260\322"}, {0x2586, "\355\020\136\357\305\322"}, {0x2587, "\355\020\253\355\260\322"}, {0x2588, "\355\020\361\211"}, {0x2589, "\355\020\253\355\260\052"}, {0x258A, "\355\020\136\357\305\052"}, {0x258B, "\355\020\231\355\260\052"}, {0x258C, "\355\020\355\001\052"}, {0x258D, "\355\020\136\355\260\052"}, {0x258E, "\355\020\107\357\021\052"}, {0x258F, "\355\020\107\356\212\052"}, {0x2590, "\355\020\355\001\053"}, {0x2591, "\356\030\370\252"}, {0x2592, "\356\030\361\102"}, {0x2593, "\356\030\366\103"}, {0x2594, "\355\020\107\356\212\346"}, {0x2595, "\355\020\107\356\212\222"}, {0x25A0, "\035\210"}, {0x25A1, "\035\147"}, {0x25A2, "\035\147\165\365\050\362\367"}, {0x25A3, "\176\035\210\357\202\355\251\107\035\147"}, {0x25A4, "\035\356\211\367\106"}, {0x25A5, "\035\356\211\360\001"}, {0x25A6, "\035\361\246"}, {0x25A7, "\035\356\211\213\102\044\052\015\050\101\044\053"}, {0x25A8, "\035\356\211\213\102\044\053\015\050\101\044\052"}, {0x25A9, "\035\361\246\013\365\266"}, {0x25AA, "\176\035\210"}, {0x25AB, "\176\035\147"}, {0x25AC, "\356\113\210"}, {0x25AD, "\356\113\147"}, {0x25AE, "\356\113\203\210"}, {0x25AF, "\356\113\203\147"}, {0x25B0, "\361\160\210"}, {0x25B1, "\361\160\147"}, {0x25B2, "\350\210\323\015\050\102"}, {0x25B3, "\350\147\323\015\050\102"}, {0x25B4, "\176\350\210\323\015\050\102"}, {0x25B5, "\176\350\147\323\015\050\102"}, {0x25B6, "\350\210\323\015\033\053"}, {0x25B7, "\350\147\323\015\033\053"}, {0x25B8, "\176\350\210\323\015\033\053"}, {0x25B9, "\176\350\147\323\015\033\053"}, {0x25BA, "\357\006\210\015\033\053"}, {0x25BB, "\357\006\147\015\033\053"}, {0x25BC, "\350\210\323\015\050\101"}, {0x25BD, "\350\147\323\015\050\101"}, {0x25BE, "\176\350\210\323\015\050\101"}, {0x25BF, "\176\350\147\323\015\050\101"}, {0x25C0, "\350\210\323\015\033\052"}, {0x25C1, "\350\147\323\015\033\052"}, {0x25C2, "\176\350\210\323\015\033\052"}, {0x25C3, "\176\350\147\323\015\033\052"}, {0x25C4, "\357\006\210\015\033\052"}, {0x25C5, "\357\006\147\015\033\052"}, {0x25C6, "\355\270\210"}, {0x25C7, "\355\270\147"}, {0x25C8, "\355\270\147\165\176\355\270\210\013\362\300"}, {0x25C9, "\176\274\210\357\202\355\251\107\274\147"}, {0x25CA, "\355\270"}, {0x25CB, "\274\147"}, {0x25CC, "\274\013\357\007"}, {0x25CD, "\274\356\211\360\001"}, {0x25CE, "\176\274\147\357\202\355\251\107\274\147"}, {0x25CF, "\360\205\210"}, {0x25D0, "\274\165\355\001\052\266"}, {0x25D1, "\274\165\355\001\053\266"}, {0x25D2, "\274\165\355\001\356\022\266"}, {0x25D3, "\274\165\355\001\355\356\266"}, {0x25D4, "\274\165\356\112\346\222\210"}, {0x25D5, "\360\205\165\356\112\346\052\147"}, {0x25D6, "\360\175\052\210"}, {0x25D7, "\360\175\053\210"}, {0x25D8, "\037\013\302"}, {0x25D9, "\274\147\013\302"}, {0x25DA, "\356\007\346\147\013\302"}, {0x25DB, "\356\007\322\147\013\302"}, {0x25DC, "\355\204\007\274\355\251\050\356\112\346\052"}, {0x25DD, "\355\204\007\274\355\251\050\356\112\346\222"}, {0x25DE, "\355\204\007\274\355\251\050\356\112\322\222"}, {0x25DF, "\355\204\007\274\355\251\050\356\112\322\052"}, {0x25E0, "\356\007\346"}, {0x25E1, "\356\007\322"}, {0x25E2, "\275\356\133\210\322\222"}, {0x25E3, "\275\356\133\210\322\052"}, {0x25E4, "\275\356\133\210\346\052"}, {0x25E5, "\275\356\133\210\346\222"}, {0x25E6, "\176\274\147"}, {0x25E7, "\035\165\355\001\052\266"}, {0x25E8, "\035\165\355\001\053\266"}, {0x25E9, "\035\165\355\001\355\356\052\266"}, {0x25EA, "\035\165\355\001\356\022\053\266"}, {0x25EB, "\035\147\165\244\363\143\257"}, {0x25EC, "\350\147\323\015\050\102\356\036"}, {0x25ED, "\350\323\015\050\102\165\355\001\052\266"}, {0x25EE, "\350\323\015\050\102\165\355\001\053\266"}, {0x25EF, "\342\274"}, {0x25F0, "\035\147\044\355\240\346\052"}, {0x25F1, "\035\147\044\355\240\322\052"}, {0x25F2, "\035\147\044\355\240\322\222"}, {0x25F3, "\035\147\044\355\240\346\222"}, {0x25F4, "\274\147\044\355\240\346\052"}, {0x25F5, "\274\147\044\355\240\322\052"}, {0x25F6, "\274\147\044\355\240\322\222"}, {0x25F7, "\274\147\044\355\240\346\222"}, {0x2600, "\356\046\210\165\361\254"}, {0x2601, "\371\367"}, {0x2602, "\372\160"}, {0x2603, "\363\151\007\356\363"}, {0x2604, "\365\060"}, {0x2605, "\355\017\266"}, {0x2606, "\355\017\320"}, {0x2607, "\377\026"}, {0x2608, "\372\111"}, {0x2609, "\356\046"}, {0x260A, "\356\364\360\057"}, {0x260B, "\356\364\365\257"}, {0x260C, "\365\063"}, {0x260D, "\372\107"}, {0x260E, "\357\052\210"}, {0x260F, "\357\052\147"}, {0x2610, "\356\150\007\356\271"}, {0x2611, "\356\150\007\356\271\365\046"}, {0x2612, "\356\150\007\356\271\165\355\030"}, {0x2613, "\363\041"}, {0x2619, "\355\205\357\152\356\155\044\053"}, {0x261A, "\355\330\210\323\015\033\052"}, {0x261B, "\355\330\210\323\015\033\053"}, {0x261C, "\355\330\147\323\015\033\052"}, {0x261D, "\355\330\147\323\015\050\102"}, {0x261E, "\355\330\147\323\015\033\053"}, {0x261F, "\355\330\147\323\015\050\101"}, {0x2620, "\357\375\007\361\067"}, {0x2621, "\376\044"}, {0x2622, "\057\007\374\036"}, {0x2623, "\057\007\365\177\363\136"}, {0x2624, "\363\227"}, {0x2625, "\362\334"}, {0x2626, "\355\035\372\116"}, {0x2627, "\363\317"}, {0x2628, "\355\035\007\370\211"}, {0x2629, "\355\035\007\367\357"}, {0x262A, "\355\017\020\365\124"}, {0x262B, "\022\356\071"}, {0x262C, "\377\004\377\011"}, {0x262D, "\366\053\020\370\276"}, {0x262E, "\022\007\372\153"}, {0x262F, "\022\213\362\120\020\213\360\013"}, {0x2630, "\355\363\355\061\357\102"}, {0x2631, "\355\363\355\061\370\131"}, {0x2632, "\355\363\355\061\356\201"}, {0x2633, "\355\363\355\061\375\233"}, {0x2634, "\355\363\355\061\357\377"}, {0x2635, "\355\363\355\061\356\070"}, {0x2636, "\355\363\355\061\361\065"}, {0x2637, "\355\363\355\061\356\130"}, {0x2638, "\361\300\007\365\264"}, {0x2639, "\356\267\147\366\252"}, {0x263A, "\356\267\147\361\333"}, {0x263B, "\356\267\210\361\333"}, {0x263C, "\356\046\147\165\361\254"}, {0x263D, "\361\226\355\240\007\356\103"}, {0x263E, "\365\256\355\240\007\356\103"}, {0x263F, "\370\323"}, {0x2640, "\057\360\243"}, {0x2641, "\356\130"}, {0x2642, "\057\361\106"}, {0x2643, "\367\341"}, {0x2644, "\361\307"}, {0x2645, "\376\004"}, {0x2646, "\371\201"}, {0x2647, "\372\253"}, {0x2648, "\360\107"}, {0x2649, "\375\113"}, {0x264A, "\366\303"}, {0x264B, "\363\234"}, {0x264C, "\370\175"}, {0x264D, "\376\032"}, {0x264E, "\363\027"}, {0x264F, "\374\241"}, {0x2650, "\374\214"}, {0x2651, "\363\237"}, {0x2652, "\376\022"}, {0x2653, "\373\256"}, {0x2654, "\361\277\147\213\355\170\355\161"}, {0x2655, "\360\165\320\213\355\170\355\161"}, {0x2656, "\362\033\320\213\355\170\355\161"}, {0x2657, "\357\153\147\213\355\170\355\161"}, {0x2658, "\360\112\147\213\355\170\355\161"}, {0x2659, "\361\173\147\213\355\170\355\161"}, {0x265A, "\361\277\210\213\355\170\355\161"}, {0x265B, "\360\165\266\213\355\170\355\161"}, {0x265C, "\362\033\266\213\355\170\355\161"}, {0x265D, "\357\153\210\213\355\170\355\161"}, {0x265E, "\360\112\210\213\355\170\355\161"}, {0x265F, "\361\173\210\213\355\170\355\161"}, {0x2660, "\357\003\210"}, {0x2661, "\355\205\147"}, {0x2662, "\360\111\147"}, {0x2663, "\362\042\210"}, {0x2664, "\357\003\147"}, {0x2665, "\355\205\210"}, {0x2666, "\360\111\210"}, {0x2667, "\362\042\147"}, {0x2668, "\374\364\363\271"}, {0x2669, "\357\252\266"}, {0x266A, "\357\252\365\123"}, {0x266B, "\127\360\150\361\251"}, {0x266C, "\127\360\217\360\150\361\251"}, {0x266D, "\363\217"}, {0x266E, "\363\216"}, {0x266F, "\365\302"}, {0x2670, "\355\035\161\372\075"}, {0x2671, "\355\035\161\372\114"}, {0x2701, "\356\314\044\361\024\355\356\362\076"}, {0x2702, "\356\314\371\320"}, {0x2703, "\356\314\044\361\024\356\022\362\076"}, {0x2704, "\356\314\363\147"}, {0x2705, "\264"}, {0x2706, "\022\365\152\213\357\052"}, {0x2707, "\365\367\007\374\147"}, {0x2708, "\363\013"}, {0x2709, "\366\020"}, {0x270A, "\264"}, {0x270B, "\264"}, {0x270C, "\356\355\007\033\376\025"}, {0x270D, "\356\355\013\375\247\365\171"}, {0x270E, "\357\112\015\050\101\044\053"}, {0x270F, "\357\112"}, {0x2710, "\357\112\015\050\102\044\053"}, {0x2711, "\360\076\007\356\245\147"}, {0x2712, "\360\076\007\356\245\210"}, {0x2713, "\057\007\362\105"}, {0x2714, "\355\124\057\007\362\105"}, {0x2715, "\355\030\007\356\357"}, {0x2716, "\355\124\355\030\007\356\357"}, {0x2717, "\355\030\007\356\150\007\356\271"}, {0x2718, "\355\124\355\030\007\356\150\007\356\271"}, {0x2719, "\355\035\027\165\355\134"}, {0x271A, "\355\326\355\035\027"}, {0x271B, "\355\035\357\272\355\316\035"}, {0x271C, "\355\326\355\035\357\272\355\316\035"}, {0x271D, "\355\035\006"}, {0x271E, "\355\035\006\376\027\355\344"}, {0x271F, "\355\035\006\165\355\134"}, {0x2720, "\355\035\007\370\264"}, {0x2721, "\355\017\007\365\204"}, {0x2722, "\355\035\357\227"}, {0x2723, "\355\035\361\216"}, {0x2724, "\355\326\355\035\361\216"}, {0x2725, "\355\035\375\265"}, {0x2726, "\355\017\266\044\221\355\120"}, {0x2727, "\355\017\320\044\221\355\120"}, {0x2728, "\264"}, {0x2729, "\355\017\320\044\355\134\362\302"}, {0x272A, "\355\017\320\200"}, {0x272B, "\361\064\266"}, {0x272C, "\361\064\320"}, {0x272D, "\355\017\266\165\355\134"}, {0x272E, "\355\017\266\165\355\124\355\134"}, {0x272F, "\355\017\361\253"}, {0x2730, "\355\017\320\355\344"}, {0x2731, "\355\124\355\117"}, {0x2732, "\355\117\361\170"}, {0x2733, "\355\117\044\227\355\120"}, {0x2734, "\355\017\266\044\227\355\120"}, {0x2735, "\355\017\361\253\044\227\355\120"}, {0x2736, "\355\017\266\044\256\355\120"}, {0x2737, "\355\017\361\257\044\227\355\120"}, {0x2738, "\355\326\355\017\361\257\044\227\355\120"}, {0x2739, "\355\017\266\044\355\321\355\120"}, {0x273A, "\355\117\044\356\045\355\120"}, {0x273B, "\355\117\356\352"}, {0x273C, "\355\117\356\352\361\170"}, {0x273D, "\355\124\355\117\356\352"}, {0x273E, "\374\330\320\020\266"}, {0x273F, "\361\250\266"}, {0x2740, "\361\250\320"}, {0x2741, "\070\373\376\266\165\355\134"}, {0x2742, "\355\017\200\357\272\044\227\355\120"}, {0x2743, "\355\124\363\002\374\051\356\352"}, {0x2744, "\357\151\007\356\363"}, {0x2745, "\357\151\007\356\363\044\136\366\102\375\252"}, {0x2746, "\355\124\357\151\007\356\363\044\363\311"}, {0x2747, "\362\162"}, {0x2748, "\355\124\362\162"}, {0x2749, "\355\117\373\257"}, {0x274A, "\360\060\044\227\355\120\361\025"}, {0x274B, "\355\124\360\060\044\227\355\120\361\025"}, {0x274C, "\264"}, {0x274D, "\274\147\357\257"}, {0x274E, "\264"}, {0x274F, "\035\147\165\356\030\361\227\357\041\050\275\322\222"}, {0x2750, "\035\147\165\356\030\361\227\357\041\050\275\346\222"}, {0x2751, "\035\147\357\257\355\311\275\322\222"}, {0x2752, "\035\147\357\257\355\311\275\346\222"}, {0x2753, "\264"}, {0x2754, "\264"}, {0x2755, "\264"}, {0x2756, "\355\270\210\370\274\355\316\355\030\147"}, {0x2757, "\264"}, {0x2758, "\247\257\360\246"}, {0x2759, "\247\257\361\102"}, {0x275A, "\247\257\377\036"}, {0x275B, "\355\137\007\356\015\013\265\007\355\326\332\355\003\356\156"}, {0x275C, "\355\137\007\356\015\013\265\007\355\326\332\355\003"}, {0x275D, "\355\137\007\356\015\013\265\007\355\326\332\070\356\156"}, {0x275E, "\355\137\007\356\015\013\265\007\355\326\332\070"}, {0x2761, "\356\244\007\357\241\007\356\015\044\357\212\365\111"}, {0x2762, "\355\124\037\355\314\007\356\015"}, {0x2763, "\355\124\037\355\314\007\356\015\013\265\007\355\205"}, {0x2764, "\355\124\355\205\210"}, {0x2765, "\355\124\355\205\210\356\155"}, {0x2766, "\355\205\357\152"}, {0x2767, "\355\205\357\152\356\155"}, {0x2768, "\264"}, {0x2769, "\264"}, {0x276A, "\264"}, {0x276B, "\264"}, {0x276C, "\264"}, {0x276D, "\264"}, {0x276E, "\264"}, {0x276F, "\264"}, {0x2770, "\264"}, {0x2771, "\264"}, {0x2772, "\264"}, {0x2773, "\264"}, {0x2774, "\264"}, {0x2775, "\264"}, {0x2776, "\306\024\107\302\051"}, {0x2777, "\306\024\127\302\051"}, {0x2778, "\306\024\136\302\051"}, {0x2779, "\306\024\221\302\051"}, {0x277A, "\306\024\231\302\051"}, {0x277B, "\306\024\256\302\051"}, {0x277C, "\306\024\253\302\051"}, {0x277D, "\306\024\227\302\051"}, {0x277E, "\306\024\260\302\051"}, {0x277F, "\306\211\355\036\302\051"}, {0x2780, "\306\024\107\272\355\037\051"}, {0x2781, "\306\024\127\272\355\037\051"}, {0x2782, "\306\024\136\272\355\037\051"}, {0x2783, "\306\024\221\272\355\037\051"}, {0x2784, "\306\024\231\272\355\037\051"}, {0x2785, "\306\024\256\272\355\037\051"}, {0x2786, "\306\024\253\272\355\037\051"}, {0x2787, "\306\024\227\272\355\037\051"}, {0x2788, "\306\024\260\272\355\037\051"}, {0x2789, "\306\211\355\036\272\355\037\051"}, {0x278A, "\306\024\107\272\355\037\302\051"}, {0x278B, "\306\024\127\272\355\037\302\051"}, {0x278C, "\306\024\136\272\355\037\302\051"}, {0x278D, "\306\024\221\272\355\037\302\051"}, {0x278E, "\306\024\231\272\355\037\302\051"}, {0x278F, "\306\024\256\272\355\037\302\051"}, {0x2790, "\306\024\253\272\355\037\302\051"}, {0x2791, "\306\024\227\272\355\037\302\051"}, {0x2792, "\306\024\260\272\355\037\302\051"}, {0x2793, "\306\211\355\036\272\355\037\302\051"}, {0x2794, "\061\355\123\015\033\053\044\355\005\355\264"}, {0x2795, "\264"}, {0x2796, "\264"}, {0x2797, "\264"}, {0x2798, "\061\355\123\355\355"}, {0x2799, "\061\355\123\015\033\053\355\123"}, {0x279A, "\061\355\123\356\025"}, {0x279B, "\061\007\375\256\015\033\053"}, {0x279C, "\061\355\123\044\355\005\362\366\015\033\053"}, {0x279D, "\061\044\355\005\013\350\015\033\053"}, {0x279E, "\061\355\123\044\355\005\013\350\015\033\053"}, {0x279F, "\061\165\357\011\044\355\005\013\350\015\033\053"}, {0x27A0, "\061\355\123\165\357\011\044\355\005\013\350\015\033\053"}, {0x27A1, "\061\266\015\033\053"}, {0x27A2, "\355\005\007\061\015\033\053\013\362\040\362\161\355\234\050\102"}, {0x27A3, "\355\005\007\061\015\033\053\013\362\040\362\161\355\234\050\101"}, {0x27A4, "\355\005\007\061\266\015\033\053"}, {0x27A5, "\061\266\355\123\360\147\015\050\101\020\015\033\053"}, {0x27A6, "\061\266\360\147\015\050\102\020\015\033\053"}, {0x27A7, "\061\266\375\254\015\033\053"}, {0x27A8, "\061\266\355\123\044\355\005\365\061\015\033\053"}, {0x27A9, "\061\320\015\033\053\355\344\044\356\347"}, {0x27AA, "\061\320\015\033\053\355\344\044\361\023"}, {0x27AB, "\061\320\015\033\053\361\166\015\361\023\020\355\344"}, {0x27AC, "\061\320\015\033\053\361\166\015\356\347\020\355\344"}, {0x27AD, "\061\320\355\123\015\033\053\044\356\030\356\022\053"}, {0x27AE, "\061\320\355\123\015\033\053\044\356\030\355\356\053"}, {0x27AF, "\061\357\147\320\015\033\053\355\344\044\356\347\020\355\234\365\262"}, {0x27B1, "\061\357\147\320\015\033\053\355\344\044\356\347\020\355\234\357\134"}, {0x27B2, "\061\320\355\123\015\033\053\044\355\134\363\356"}, {0x27B3, "\061\044\355\255\320\015\033\053"}, {0x27B4, "\061\044\355\255\210\355\355"}, {0x27B5, "\061\044\355\255\210\015\033\053"}, {0x27B6, "\061\044\355\255\210\356\025"}, {0x27B7, "\061\044\355\255\151\266\355\355"}, {0x27B8, "\061\044\355\255\151\266\015\033\053"}, {0x27B9, "\061\044\355\255\151\266\356\025"}, {0x27BA, "\061\015\033\053\044\355\005\357\227"}, {0x27BB, "\061\015\033\053\044\357\164\357\227"}, {0x27BC, "\061\015\033\053\044\356\251\013\265\007\275"}, {0x27BD, "\061\355\123\015\033\053\044\356\251\013\265\007\275"}, {0x27BE, "\061\015\033\053\044\355\134\355\345"}, {0x2800, "\031\030\147"}, {0x2801, "\031\030\372\256"}, {0x2802, "\031\030\373\057"}, {0x2803, "\031\030\372\257"}, {0x2804, "\031\030\373\157"}, {0x2805, "\031\030\372\357"}, {0x2806, "\031\030\373\060"}, {0x2807, "\031\030\372\260"}, {0x2808, "\031\030\373\217"}, {0x2809, "\031\030\373\020"}, {0x280A, "\031\030\373\120"}, {0x280B, "\031\030\372\320"}, {0x280C, "\031\030\373\160"}, {0x280D, "\031\030\372\360"}, {0x280E, "\031\030\373\061"}, {0x280F, "\031\030\372\261"}, {0x2810, "\031\030\373\237"}, {0x2811, "\031\030\373\040"}, {0x2812, "\031\030\373\140"}, {0x2813, "\031\030\372\340"}, {0x2814, "\031\030\373\200"}, {0x2815, "\031\030\373\001"}, {0x2816, "\031\030\373\101"}, {0x2817, "\031\030\372\301"}, {0x2818, "\031\030\373\220"}, {0x2819, "\031\030\373\021"}, {0x281A, "\031\030\373\121"}, {0x281B, "\031\030\372\321"}, {0x281C, "\031\030\373\161"}, {0x281D, "\031\030\372\361"}, {0x281E, "\031\030\373\062"}, {0x281F, "\031\030\372\262"}, {0x2820, "\031\030\373\247"}, {0x2821, "\031\030\373\050"}, {0x2822, "\031\030\373\150"}, {0x2823, "\031\030\372\350"}, {0x2824, "\031\030\373\210"}, {0x2825, "\031\030\373\011"}, {0x2826, "\031\030\373\111"}, {0x2827, "\031\030\372\311"}, {0x2828, "\031\030\373\230"}, {0x2829, "\031\030\373\031"}, {0x282A, "\031\030\373\131"}, {0x282B, "\031\030\372\331"}, {0x282C, "\031\030\373\171"}, {0x282D, "\031\030\372\371"}, {0x282E, "\031\030\373\072"}, {0x282F, "\031\030\372\272"}, {0x2830, "\031\030\373\240"}, {0x2831, "\031\030\373\041"}, {0x2832, "\031\030\373\141"}, {0x2833, "\031\030\372\341"}, {0x2834, "\031\030\373\201"}, {0x2835, "\031\030\373\002"}, {0x2836, "\031\030\373\102"}, {0x2837, "\031\030\372\302"}, {0x2838, "\031\030\373\221"}, {0x2839, "\031\030\373\022"}, {0x283A, "\031\030\373\122"}, {0x283B, "\031\030\372\322"}, {0x283C, "\031\030\373\162"}, {0x283D, "\031\030\372\362"}, {0x283E, "\031\030\373\063"}, {0x283F, "\031\030\372\263"}, {0x2840, "\031\030\373\253"}, {0x2841, "\031\030\373\054"}, {0x2842, "\031\030\373\154"}, {0x2843, "\031\030\372\354"}, {0x2844, "\031\030\373\214"}, {0x2845, "\031\030\373\015"}, {0x2846, "\031\030\373\115"}, {0x2847, "\031\030\372\315"}, {0x2848, "\031\030\373\234"}, {0x2849, "\031\030\373\035"}, {0x284A, "\031\030\373\135"}, {0x284B, "\031\030\372\335"}, {0x284C, "\031\030\373\175"}, {0x284D, "\031\030\372\375"}, {0x284E, "\031\030\373\076"}, {0x284F, "\031\030\372\276"}, {0x2850, "\031\030\373\244"}, {0x2851, "\031\030\373\045"}, {0x2852, "\031\030\373\145"}, {0x2853, "\031\030\372\345"}, {0x2854, "\031\030\373\205"}, {0x2855, "\031\030\373\006"}, {0x2856, "\031\030\373\106"}, {0x2857, "\031\030\372\306"}, {0x2858, "\031\030\373\225"}, {0x2859, "\031\030\373\026"}, {0x285A, "\031\030\373\126"}, {0x285B, "\031\030\372\326"}, {0x285C, "\031\030\373\166"}, {0x285D, "\031\030\372\366"}, {0x285E, "\031\030\373\067"}, {0x285F, "\031\030\372\267"}, {0x2860, "\031\030\373\250"}, {0x2861, "\031\030\373\051"}, {0x2862, "\031\030\373\151"}, {0x2863, "\031\030\372\351"}, {0x2864, "\031\030\373\211"}, {0x2865, "\031\030\373\012"}, {0x2866, "\031\030\373\112"}, {0x2867, "\031\030\372\312"}, {0x2868, "\031\030\373\231"}, {0x2869, "\031\030\373\032"}, {0x286A, "\031\030\373\132"}, {0x286B, "\031\030\372\332"}, {0x286C, "\031\030\373\172"}, {0x286D, "\031\030\372\372"}, {0x286E, "\031\030\373\073"}, {0x286F, "\031\030\372\273"}, {0x2870, "\031\030\373\241"}, {0x2871, "\031\030\373\042"}, {0x2872, "\031\030\373\142"}, {0x2873, "\031\030\372\342"}, {0x2874, "\031\030\373\202"}, {0x2875, "\031\030\373\003"}, {0x2876, "\031\030\373\103"}, {0x2877, "\031\030\372\303"}, {0x2878, "\031\030\373\222"}, {0x2879, "\031\030\373\023"}, {0x287A, "\031\030\373\123"}, {0x287B, "\031\030\372\323"}, {0x287C, "\031\030\373\163"}, {0x287D, "\031\030\372\363"}, {0x287E, "\031\030\373\064"}, {0x287F, "\031\030\372\264"}, {0x2880, "\031\030\373\255"}, {0x2881, "\031\030\373\056"}, {0x2882, "\031\030\373\156"}, {0x2883, "\031\030\372\356"}, {0x2884, "\031\030\373\216"}, {0x2885, "\031\030\373\017"}, {0x2886, "\031\030\373\117"}, {0x2887, "\031\030\372\317"}, {0x2888, "\031\030\373\236"}, {0x2889, "\031\030\373\037"}, {0x288A, "\031\030\373\137"}, {0x288B, "\031\030\372\337"}, {0x288C, "\031\030\373\177"}, {0x288D, "\031\030\372\377"}, {0x288E, "\031\030\373\100"}, {0x288F, "\031\030\372\300"}, {0x2890, "\031\030\373\246"}, {0x2891, "\031\030\373\047"}, {0x2892, "\031\030\373\147"}, {0x2893, "\031\030\372\347"}, {0x2894, "\031\030\373\207"}, {0x2895, "\031\030\373\010"}, {0x2896, "\031\030\373\110"}, {0x2897, "\031\030\372\310"}, {0x2898, "\031\030\373\227"}, {0x2899, "\031\030\373\030"}, {0x289A, "\031\030\373\130"}, {0x289B, "\031\030\372\330"}, {0x289C, "\031\030\373\170"}, {0x289D, "\031\030\372\370"}, {0x289E, "\031\030\373\071"}, {0x289F, "\031\030\372\271"}, {0x28A0, "\031\030\373\252"}, {0x28A1, "\031\030\373\053"}, {0x28A2, "\031\030\373\153"}, {0x28A3, "\031\030\372\353"}, {0x28A4, "\031\030\373\213"}, {0x28A5, "\031\030\373\014"}, {0x28A6, "\031\030\373\114"}, {0x28A7, "\031\030\372\314"}, {0x28A8, "\031\030\373\233"}, {0x28A9, "\031\030\373\034"}, {0x28AA, "\031\030\373\134"}, {0x28AB, "\031\030\372\334"}, {0x28AC, "\031\030\373\174"}, {0x28AD, "\031\030\372\374"}, {0x28AE, "\031\030\373\075"}, {0x28AF, "\031\030\372\275"}, {0x28B0, "\031\030\373\243"}, {0x28B1, "\031\030\373\044"}, {0x28B2, "\031\030\373\144"}, {0x28B3, "\031\030\372\344"}, {0x28B4, "\031\030\373\204"}, {0x28B5, "\031\030\373\005"}, {0x28B6, "\031\030\373\105"}, {0x28B7, "\031\030\372\305"}, {0x28B8, "\031\030\373\224"}, {0x28B9, "\031\030\373\025"}, {0x28BA, "\031\030\373\125"}, {0x28BB, "\031\030\372\325"}, {0x28BC, "\031\030\373\165"}, {0x28BD, "\031\030\372\365"}, {0x28BE, "\031\030\373\066"}, {0x28BF, "\031\030\372\266"}, {0x28C0, "\031\030\373\254"}, {0x28C1, "\031\030\373\055"}, {0x28C2, "\031\030\373\155"}, {0x28C3, "\031\030\372\355"}, {0x28C4, "\031\030\373\215"}, {0x28C5, "\031\030\373\016"}, {0x28C6, "\031\030\373\116"}, {0x28C7, "\031\030\372\316"}, {0x28C8, "\031\030\373\235"}, {0x28C9, "\031\030\373\036"}, {0x28CA, "\031\030\373\136"}, {0x28CB, "\031\030\372\336"}, {0x28CC, "\031\030\373\176"}, {0x28CD, "\031\030\372\376"}, {0x28CE, "\031\030\373\077"}, {0x28CF, "\031\030\372\277"}, {0x28D0, "\031\030\373\245"}, {0x28D1, "\031\030\373\046"}, {0x28D2, "\031\030\373\146"}, {0x28D3, "\031\030\372\346"}, {0x28D4, "\031\030\373\206"}, {0x28D5, "\031\030\373\007"}, {0x28D6, "\031\030\373\107"}, {0x28D7, "\031\030\372\307"}, {0x28D8, "\031\030\373\226"}, {0x28D9, "\031\030\373\027"}, {0x28DA, "\031\030\373\127"}, {0x28DB, "\031\030\372\327"}, {0x28DC, "\031\030\373\167"}, {0x28DD, "\031\030\372\367"}, {0x28DE, "\031\030\373\070"}, {0x28DF, "\031\030\372\270"}, {0x28E0, "\031\030\373\251"}, {0x28E1, "\031\030\373\052"}, {0x28E2, "\031\030\373\152"}, {0x28E3, "\031\030\372\352"}, {0x28E4, "\031\030\373\212"}, {0x28E5, "\031\030\373\013"}, {0x28E6, "\031\030\373\113"}, {0x28E7, "\031\030\372\313"}, {0x28E8, "\031\030\373\232"}, {0x28E9, "\031\030\373\033"}, {0x28EA, "\031\030\373\133"}, {0x28EB, "\031\030\372\333"}, {0x28EC, "\031\030\373\173"}, {0x28ED, "\031\030\372\373"}, {0x28EE, "\031\030\373\074"}, {0x28EF, "\031\030\372\274"}, {0x28F0, "\031\030\373\242"}, {0x28F1, "\031\030\373\043"}, {0x28F2, "\031\030\373\143"}, {0x28F3, "\031\030\372\343"}, {0x28F4, "\031\030\373\203"}, {0x28F5, "\031\030\373\004"}, {0x28F6, "\031\030\373\104"}, {0x28F7, "\031\030\372\304"}, {0x28F8, "\031\030\373\223"}, {0x28F9, "\031\030\373\024"}, {0x28FA, "\031\030\373\124"}, {0x28FB, "\031\030\372\324"}, {0x28FC, "\031\030\373\164"}, {0x28FD, "\031\030\372\364"}, {0x28FE, "\031\030\373\065"}, {0x28FF, "\031\030\372\265"}, {0x2E80, "\017\074\363\142"}, {0x2E81, "\017\074\360\241"}, {0x2E82, "\017\074\070\122\107"}, {0x2E83, "\017\074\357\325\127"}, {0x2E84, "\017\074\357\325\136"}, {0x2E85, "\017\074\360\332"}, {0x2E86, "\017\074\361\205"}, {0x2E87, "\017\074\361\356"}, {0x2E88, "\017\074\357\111\107"}, {0x2E89, "\017\074\357\111\127"}, {0x2E8A, "\017\074\360\206"}, {0x2E8B, "\017\074\361\310"}, {0x2E8C, "\017\074\176\107"}, {0x2E8D, "\017\074\176\127"}, {0x2E8E, "\017\074\356\214\372\102"}, {0x2E8F, "\017\074\356\214\127"}, {0x2E90, "\017\074\356\214\136"}, {0x2E91, "\017\074\356\214\221"}, {0x2E92, "\017\074\057\213\374\257"}, {0x2E93, "\017\074\366\072"}, {0x2E94, "\017\074\357\160\107"}, {0x2E95, "\017\074\357\160\127"}, {0x2E96, "\017\074\355\205\107"}, {0x2E97, "\017\074\355\205\127"}, {0x2E98, "\017\074\356\355"}, {0x2E99, "\017\074\361\360"}, {0x2E9A, "\017\074\356\115\360\063"}, {0x2E9B, "\017\074\377\043"}, {0x2E9C, "\017\074\356\046"}, {0x2E9D, "\017\074\356\103"}, {0x2E9E, "\017\074\370\304"}, {0x2E9F, "\017\074\371\063"}, {0x2EA0, "\017\074\363\361"}, {0x2EA1, "\017\074\356\070\107"}, {0x2EA2, "\017\074\356\070\127"}, {0x2EA3, "\017\074\356\201"}, {0x2EA4, "\017\074\361\164\107"}, {0x2EA5, "\017\074\361\164\127"}, {0x2EA6, "\017\074\365\251\356\115"}, {0x2EA7, "\017\074\360\102"}, {0x2EA8, "\017\074\360\122"}, {0x2EA9, "\017\074\360\361"}, {0x2EAA, "\017\074\361\175\360\164"}, {0x2EAB, "\017\074\361\141"}, {0x2EAC, "\017\074\357\310\107"}, {0x2EAD, "\017\074\357\310\127"}, {0x2EAE, "\017\074\360\070"}, {0x2EAF, "\017\074\357\334"}, {0x2EB0, "\017\074\355\012\357\334"}, {0x2EB1, "\017\074\065\107"}, {0x2EB2, "\017\074\065\127"}, {0x2EB3, "\017\074\065\136"}, {0x2EB4, "\017\074\065\221"}, {0x2EB5, "\017\074\370\257"}, {0x2EB6, "\017\074\361\076"}, {0x2EB7, "\017\074\360\107"}, {0x2EB8, "\017\074\363\166"}, {0x2EB9, "\017\074\362\070"}, {0x2EBA, "\017\074\357\274\107"}, {0x2EBB, "\017\074\357\274\127"}, {0x2EBC, "\017\074\362\067"}, {0x2EBD, "\017\074\361\070"}, {0x2EBE, "\017\074\356\336\107"}, {0x2EBF, "\017\074\356\336\127"}, {0x2EC0, "\017\074\356\336\136"}, {0x2EC1, "\017\074\362\011"}, {0x2EC2, "\017\074\360\323"}, {0x2EC3, "\017\074\357\262\107"}, {0x2EC4, "\017\074\357\262\127"}, {0x2EC5, "\017\074\355\012\362\100"}, {0x2EC6, "\017\074\356\115\357\110"}, {0x2EC7, "\017\074\357\110"}, {0x2EC8, "\017\074\355\012\361\161"}, {0x2EC9, "\017\074\355\012\360\144"}, {0x2ECA, "\017\074\356\244"}, {0x2ECB, "\017\074\355\012\362\104"}, {0x2ECC, "\017\074\356\115\357\016"}, {0x2ECD, "\017\074\357\016\107"}, {0x2ECE, "\017\074\357\016\127"}, {0x2ECF, "\017\074\376\035"}, {0x2ED0, "\017\074\355\012\361\145"}, {0x2ED1, "\017\074\355\266\107"}, {0x2ED2, "\017\074\355\266\127"}, {0x2ED3, "\017\074\355\012\355\266"}, {0x2ED4, "\017\074\355\012\357\276"}, {0x2ED5, "\017\074\357\355\107"}, {0x2ED6, "\017\074\357\355\127"}, {0x2ED7, "\017\074\361\212"}, {0x2ED8, "\017\074\360\100"}, {0x2ED9, "\017\074\355\012\357\115\361\357"}, {0x2EDA, "\017\074\355\012\360\244"}, {0x2EDB, "\017\074\355\012\357\377"}, {0x2EDC, "\017\074\355\012\362\101"}, {0x2EDD, "\017\074\356\225\107"}, {0x2EDE, "\017\074\356\225\127"}, {0x2EDF, "\017\074\356\225\136"}, {0x2EE0, "\017\074\355\012\356\225"}, {0x2EE1, "\017\074\357\375"}, {0x2EE2, "\017\074\355\012\360\121"}, {0x2EE3, "\017\074\357\261"}, {0x2EE4, "\017\074\360\226"}, {0x2EE5, "\017\074\355\012\361\215"}, {0x2EE6, "\017\074\355\012\357\256"}, {0x2EE7, "\017\074\355\012\361\312"}, {0x2EE8, "\017\074\356\115\360\101"}, {0x2EE9, "\017\074\356\115\360\363"}, {0x2EEA, "\017\074\355\012\375\364"}, {0x2EEB, "\017\074\356\342\357\166"}, {0x2EEC, "\017\074\355\012\357\166"}, {0x2EED, "\017\074\356\342\360\177"}, {0x2EEE, "\017\074\355\012\360\177"}, {0x2EEF, "\017\074\356\342\357\144"}, {0x2EF0, "\017\074\355\012\357\144"}, {0x2EF1, "\017\074\357\051"}, {0x2EF2, "\017\074\356\342\357\051"}, {0x2EF3, "\017\074\355\012\357\051"}, {0x2F00, "\017\041\107"}, {0x2F01, "\017\041\247"}, {0x2F02, "\017\041\037"}, {0x2F03, "\017\041\355\046\044\052"}, {0x2F04, "\017\041\070\122"}, {0x2F05, "\017\041\122"}, {0x2F06, "\017\041\127"}, {0x2F07, "\017\041\357\134"}, {0x2F08, "\017\041\360\332"}, {0x2F09, "\017\041\367\261"}, {0x2F0A, "\017\041\366\017"}, {0x2F0B, "\017\041\227"}, {0x2F0C, "\017\041\361\205"}, {0x2F0D, "\017\041\365\117"}, {0x2F0E, "\017\041\366\236"}, {0x2F0F, "\017\041\361\356"}, {0x2F10, "\017\041\366\110"}, {0x2F11, "\017\041\357\111"}, {0x2F12, "\017\041\366\106"}, {0x2F13, "\017\041\366\021"}, {0x2F14, "\017\041\365\132"}, {0x2F15, "\017\041\365\047"}, {0x2F16, "\017\041\363\223"}, {0x2F17, "\017\041\355\036"}, {0x2F18, "\017\041\360\206"}, {0x2F19, "\017\041\361\310"}, {0x2F1A, "\017\041\360\241"}, {0x2F1B, "\017\041\357\014"}, {0x2F1C, "\017\041\366\005"}, {0x2F1D, "\017\041\363\157"}, {0x2F1E, "\017\041\366\004"}, {0x2F1F, "\017\041\356\130"}, {0x2F20, "\017\041\370\153"}, {0x2F21, "\017\041\362\321"}, {0x2F22, "\017\041\363\300"}, {0x2F23, "\017\041\374\352"}, {0x2F24, "\017\041\342"}, {0x2F25, "\017\041\366\060"}, {0x2F26, "\017\041\366\006"}, {0x2F27, "\017\041\375\231"}, {0x2F28, "\017\041\373\265"}, {0x2F29, "\017\041\176"}, {0x2F2A, "\017\041\356\214"}, {0x2F2B, "\017\041\363\225"}, {0x2F2C, "\017\041\363\160"}, {0x2F2D, "\017\041\361\065"}, {0x2F2E, "\017\041\374\074"}, {0x2F2F, "\017\041\357\366"}, {0x2F30, "\017\041\374\350"}, {0x2F31, "\017\041\374\261"}, {0x2F32, "\017\041\374\244"}, {0x2F33, "\017\041\357\236"}, {0x2F34, "\017\041\362\354"}, {0x2F35, "\017\041\366\003"}, {0x2F36, "\017\041\127\370\260"}, {0x2F37, "\017\041\375\216"}, {0x2F38, "\017\041\355\204"}, {0x2F39, "\017\041\357\160"}, {0x2F3A, "\017\041\361\214"}, {0x2F3B, "\017\041\355\060"}, {0x2F3C, "\017\041\355\205"}, {0x2F3D, "\017\041\366\316"}, {0x2F3E, "\017\041\363\045\007\357\276"}, {0x2F3F, "\017\041\356\355"}, {0x2F40, "\017\041\363\165"}, {0x2F41, "\017\041\361\360"}, {0x2F42, "\017\041\377\030"}, {0x2F43, "\017\041\363\150"}, {0x2F44, "\017\041\366\310"}, {0x2F45, "\017\041\035"}, {0x2F46, "\017\041\355\142\355\060"}, {0x2F47, "\017\041\356\046"}, {0x2F48, "\017\041\365\275"}, {0x2F49, "\017\041\356\103"}, {0x2F4A, "\017\041\362\361"}, {0x2F4B, "\017\041\370\267"}, {0x2F4C, "\017\041\356\143"}, {0x2F4D, "\017\041\361\067"}, {0x2F4E, "\017\041\362\363"}, {0x2F4F, "\017\041\357\176\371\100\063\355\060"}, {0x2F50, "\017\041\365\053"}, {0x2F51, "\017\041\375\241\007\361\214"}, {0x2F52, "\017\041\365\043"}, {0x2F53, "\017\041\376\013"}, {0x2F54, "\017\041\356\070"}, {0x2F55, "\017\041\356\201"}, {0x2F56, "\017\041\366\251"}, {0x2F57, "\017\041\373\333"}, {0x2F58, "\017\041\366\016"}, {0x2F59, "\017\041\355\001\052\007\363\221"}, {0x2F5A, "\017\041\375\251"}, {0x2F5B, "\017\041\365\122"}, {0x2F5C, "\017\041\360\102"}, {0x2F5D, "\017\041\360\122"}, {0x2F5E, "\017\041\371\053"}, {0x2F5F, "\017\041\360\361"}, {0x2F60, "\017\041\370\321"}, {0x2F61, "\017\041\375\322"}, {0x2F62, "\017\041\143"}, {0x2F63, "\017\041\371\115"}, {0x2F64, "\017\041\376\006"}, {0x2F65, "\017\041\363\263"}, {0x2F66, "\017\041\361\175\360\164"}, {0x2F67, "\017\041\370\263"}, {0x2F68, "\017\041\371\022"}, {0x2F69, "\017\041\147"}, {0x2F6A, "\017\041\372\177"}, {0x2F6B, "\017\041\376\010"}, {0x2F6C, "\017\041\361\141"}, {0x2F6D, "\017\041\370\134"}, {0x2F6E, "\017\041\061"}, {0x2F6F, "\017\041\372\233"}, {0x2F70, "\017\041\357\310"}, {0x2F71, "\017\041\375\246"}, {0x2F72, "\017\041\365\150"}, {0x2F73, "\017\041\363\243"}, {0x2F74, "\017\041\365\243"}, {0x2F75, "\017\041\360\070"}, {0x2F76, "\017\041\374\076"}, {0x2F77, "\017\041\357\334"}, {0x2F78, "\017\041\373\264"}, {0x2F79, "\017\041\065"}, {0x2F7A, "\017\041\361\076"}, {0x2F7B, "\017\041\356\245"}, {0x2F7C, "\017\041\362\070"}, {0x2F7D, "\017\041\362\323"}, {0x2F7E, "\017\041\363\267"}, {0x2F7F, "\017\041\372\113"}, {0x2F80, "\017\041\357\274"}, {0x2F81, "\017\041\362\067"}, {0x2F82, "\017\041\370\371"}, {0x2F83, "\017\041\372\206"}, {0x2F84, "\017\041\362\364"}, {0x2F85, "\017\041\361\070"}, {0x2F86, "\017\041\370\135"}, {0x2F87, "\017\041\374\210"}, {0x2F88, "\017\041\360\072"}, {0x2F89, "\017\041\374\202"}, {0x2F8A, "\017\041\365\105"}, {0x2F8B, "\017\041\356\336"}, {0x2F8C, "\017\041\362\011"}, {0x2F8D, "\017\041\367\223"}, {0x2F8E, "\017\041\374\223"}, {0x2F8F, "\017\041\365\360"}, {0x2F90, "\017\041\360\323"}, {0x2F91, "\017\041\357\262"}, {0x2F92, "\017\041\362\100"}, {0x2F93, "\017\041\357\110"}, {0x2F94, "\017\041\361\161"}, {0x2F95, "\017\041\376\011"}, {0x2F96, "\017\041\366\322"}, {0x2F97, "\017\041\365\045"}, {0x2F98, "\017\041\362\333"}, {0x2F99, "\017\041\360\144"}, {0x2F9A, "\017\041\374\114"}, {0x2F9B, "\017\041\365\112"}, {0x2F9C, "\017\041\356\244"}, {0x2F9D, "\017\041\365\077"}, {0x2F9E, "\017\041\362\104"}, {0x2F9F, "\017\041\377\003"}, {0x2FA0, "\017\041\370\302"}, {0x2FA1, "\017\041\357\016"}, {0x2FA2, "\017\041\374\200"}, {0x2FA3, "\017\041\057\213\365\075"}, {0x2FA4, "\017\041\365\131"}, {0x2FA5, "\017\041\366\317"}, {0x2FA6, "\017\041\361\145"}, {0x2FA7, "\017\041\355\266"}, {0x2FA8, "\017\041\357\276"}, {0x2FA9, "\017\041\357\355"}, {0x2FAA, "\017\041\356\174"}, {0x2FAB, "\017\041\357\256\044\356\251\356\316"}, {0x2FAC, "\017\041\361\212"}, {0x2FAD, "\017\041\360\100"}, {0x2FAE, "\017\041\375\235"}, {0x2FAF, "\017\041\356\267"}, {0x2FB0, "\017\041\357\115"}, {0x2FB1, "\017\041\357\115\361\357"}, {0x2FB2, "\017\041\363\351"}, {0x2FB3, "\017\041\355\177"}, {0x2FB4, "\017\041\360\244"}, {0x2FB5, "\017\041\357\377"}, {0x2FB6, "\017\041\362\101"}, {0x2FB7, "\017\041\356\225"}, {0x2FB8, "\017\041\357\375"}, {0x2FB9, "\017\041\372\162"}, {0x2FBA, "\017\041\360\121"}, {0x2FBB, "\017\041\357\261"}, {0x2FBC, "\017\041\102"}, {0x2FBD, "\017\041\363\307"}, {0x2FBE, "\017\041\374\075"}, {0x2FBF, "\017\041\360\004\374\213"}, {0x2FC0, "\017\041\363\272"}, {0x2FC1, "\017\041\360\226"}, {0x2FC2, "\017\041\361\215"}, {0x2FC3, "\017\041\357\256"}, {0x2FC4, "\017\041\361\312"}, {0x2FC5, "\017\041\363\256"}, {0x2FC6, "\017\041\360\101"}, {0x2FC7, "\017\041\363\264"}, {0x2FC8, "\017\041\360\363"}, {0x2FC9, "\017\041\370\366"}, {0x2FCA, "\017\041\210"}, {0x2FCB, "\017\041\363\167"}, {0x2FCC, "\017\041\366\247"}, {0x2FCD, "\017\041\375\262"}, {0x2FCE, "\017\041\375\105"}, {0x2FCF, "\017\041\361\252"}, {0x2FD0, "\017\041\371\204"}, {0x2FD1, "\017\041\357\166"}, {0x2FD2, "\017\041\355\252"}, {0x2FD3, "\017\041\357\144"}, {0x2FD4, "\017\041\357\051"}, {0x2FD5, "\017\041\366\100"}, {0x2FF0, "\337\007\355\163\076\052\044\053"}, {0x2FF1, "\337\007\355\163\076\007\102\013\101"}, {0x2FF2, "\337\007\355\163\076\007\033\052\355\311\361\061\361\233\044\033\053"}, {0x2FF3, "\337\007\355\163\076\213\102\355\311\361\061\361\233\013\101"}, {0x2FF4, "\337\007\355\163\076\375\244\355\377"}, {0x2FF5, "\337\007\355\163\076\355\377\044\356\033\213\102"}, {0x2FF6, "\337\007\355\163\076\355\377\044\356\033\213\101"}, {0x2FF7, "\337\007\355\163\076\355\377\044\356\033\007\033\052"}, {0x2FF8, "\337\007\355\163\076\355\377\044\356\033\357\121\102\044\052"}, {0x2FF9, "\337\007\355\163\076\355\377\044\356\033\357\121\102\044\053"}, {0x2FFA, "\337\007\355\163\076\355\377\044\356\033\357\121\101\044\052"}, {0x2FFB, "\337\007\355\163\076\363\306"}, {0x3000, "\355\075\076"}, {0x3001, "\332\076"}, {0x3002, "\037\076"}, {0x3003, "\366\256\007\356\114"}, {0x3004, "\022\007\361\123\367\212\367\263"}, {0x3005, "\205\076\356\160"}, {0x3006, "\205\076\007\366\063"}, {0x3007, "\333\076"}, {0x3008, "\122\356\303\044\052"}, {0x3009, "\122\356\303\044\053"}, {0x300A, "\070\122\356\303\044\052"}, {0x300B, "\070\122\356\303\044\053"}, {0x300C, "\122\275\052"}, {0x300D, "\122\275\222"}, {0x300E, "\122\147\275\052"}, {0x300F, "\122\147\275\222"}, {0x3010, "\122\210\356\100\052"}, {0x3011, "\122\210\356\100\222"}, {0x3012, "\205\357\277"}, {0x3013, "\057\366\307"}, {0x3014, "\122\052\013\355\372"}, {0x3015, "\122\222\013\355\372"}, {0x3016, "\122\147\356\100\052"}, {0x3017, "\122\147\356\100\222"}, {0x3018, "\122\147\052\013\355\372"}, {0x3019, "\122\147\222\013\355\372"}, {0x301A, "\122\147\052"}, {0x301B, "\122\147\222"}, {0x301C, "\355\130\355\317\013\356\175"}, {0x301D, "\355\137\070\355\237\355\015"}, {0x301E, "\355\137\070\355\237"}, {0x301F, "\355\137\070\355\237\322"}, {0x3020, "\356\267\013\205\357\277"}, {0x3021, "\024\107\355\166"}, {0x3022, "\024\127\355\166"}, {0x3023, "\024\136\355\166"}, {0x3024, "\024\221\355\166"}, {0x3025, "\024\231\355\166"}, {0x3026, "\024\256\355\166"}, {0x3027, "\024\253\355\166"}, {0x3028, "\024\227\355\166"}, {0x3029, "\024\260\355\166"}, {0x302A, "\205\076\007\347\356\203"}, {0x302B, "\205\076\007\347\360\057"}, {0x302C, "\205\076\007\347\374\362"}, {0x302D, "\205\076\007\347\366\015"}, {0x302E, "\205\007\347\014\037"}, {0x302F, "\205\007\347\014\070\037"}, {0x3030, "\355\130\355\317\356\234"}, {0x3031, "\205\257\356\216\007\356\114"}, {0x3032, "\205\257\356\216\007\356\114\165\355\177\356\270"}, {0x3033, "\355\001\355\356\007\205\257\356\216\007\356\114"}, {0x3034, "\355\001\355\356\007\205\257\356\216\007\356\114\165\355\177\356\270"}, {0x3035, "\355\001\356\022\007\205\257\356\216\007\356\114"}, {0x3036, "\205\357\277\200"}, {0x3037, "\022\162\076\355\047\007\360\117\007\244"}, {0x3038, "\211\355\036\355\166"}, {0x3039, "\211\356\052\355\166"}, {0x303A, "\211\357\367\355\166"}, {0x303E, "\357\200\007\357\054\076"}, {0x303F, "\365\253\076"}, {0x3041, "\002\124\063\005"}, {0x3042, "\002\124\063"}, {0x3043, "\002\124\103\005"}, {0x3044, "\002\124\103"}, {0x3045, "\002\124\132\005"}, {0x3046, "\002\124\132"}, {0x3047, "\002\124\130\005"}, {0x3048, "\002\124\130"}, {0x3049, "\002\124\064\005"}, {0x304A, "\002\124\064"}, {0x304B, "\002\124\241"}, {0x304C, "\002\124\355\021"}, {0x304D, "\002\124\355\334"}, {0x304E, "\002\124\356\206"}, {0x304F, "\002\124\356\023"}, {0x3050, "\002\124\357\162"}, {0x3051, "\002\124\355\333"}, {0x3052, "\002\124\356\205"}, {0x3053, "\002\124\355\171"}, {0x3054, "\002\124\356\073"}, {0x3055, "\002\124\355\006"}, {0x3056, "\002\124\355\103"}, {0x3057, "\002\124\355\277"}, {0x3058, "\002\124\356\277"}, {0x3059, "\002\124\356\255"}, {0x305A, "\002\124\360\024"}, {0x305B, "\002\124\356\044"}, {0x305C, "\002\124\356\276"}, {0x305D, "\002\124\355\072"}, {0x305E, "\002\124\356\137"}, {0x305F, "\002\124\313"}, {0x3060, "\002\124\355\004"}, {0x3061, "\002\124\355\221"}, {0x3062, "\002\124\356\064"}, {0x3063, "\002\124\355\302\005"}, {0x3064, "\002\124\355\302"}, {0x3065, "\002\124\213"}, {0x3066, "\002\124\356\127"}, {0x3067, "\002\124\007"}, {0x3068, "\002\124\355\200"}, {0x3069, "\002\124\355\254"}, {0x306A, "\002\124\355\002"}, {0x306B, "\002\124\245"}, {0x306C, "\002\124\356\027"}, {0x306D, "\002\124\355\142"}, {0x306E, "\002\124\355\115"}, {0x306F, "\002\124\316"}, {0x3070, "\002\124\355\054"}, {0x3071, "\002\124\331"}, {0x3072, "\002\124\355\257"}, {0x3073, "\002\124\356\306"}, {0x3074, "\002\124\355\235"}, {0x3075, "\002\124\356\340"}, {0x3076, "\002\124\356\005"}, {0x3077, "\002\124\357\301"}, {0x3078, "\002\124\356\074"}, {0x3079, "\002\124\356\144"}, {0x307A, "\002\124\356\377"}, {0x307B, "\002\124\355\111"}, {0x307C, "\002\124\356\002"}, {0x307D, "\002\124\355\275"}, {0x307E, "\002\124\301"}, {0x307F, "\002\124\355\232"}, {0x3080, "\002\124\355\113"}, {0x3081, "\002\124\355\336"}, {0x3082, "\002\124\355\140"}, {0x3083, "\002\124\307\005"}, {0x3084, "\002\124\307"}, {0x3085, "\002\124\355\366\005"}, {0x3086, "\002\124\355\366"}, {0x3087, "\002\124\355\042\005"}, {0x3088, "\002\124\355\042"}, {0x3089, "\002\124\324"}, {0x308A, "\002\124\355\351"}, {0x308B, "\002\124\356\041"}, {0x308C, "\002\124\356\037"}, {0x308D, "\002\124\355\176"}, {0x308E, "\002\124\355\052\005"}, {0x308F, "\002\124\355\052"}, {0x3090, "\002\124\355\364"}, {0x3091, "\002\124\356\272"}, {0x3092, "\002\124\355\152"}, {0x3093, "\002\124\242"}, {0x3094, "\002\124\360\006"}, {0x3099, "\026\356\077\355\177\356\270"}, {0x309A, "\026\356\077\355\177\357\326"}, {0x309B, "\205\356\077\007\355\177\356\270"}, {0x309C, "\205\356\077\007\355\177\357\326"}, {0x309D, "\205\356\160\124"}, {0x309E, "\205\356\160\360\005\124"}, {0x30A1, "\002\045\063\005"}, {0x30A2, "\002\045\063"}, {0x30A3, "\002\045\103\005"}, {0x30A4, "\002\045\103"}, {0x30A5, "\002\045\132\005"}, {0x30A6, "\002\045\132"}, {0x30A7, "\002\045\130\005"}, {0x30A8, "\002\045\130"}, {0x30A9, "\002\045\064\005"}, {0x30AA, "\002\045\064"}, {0x30AB, "\002\045\241"}, {0x30AC, "\002\045\355\021"}, {0x30AD, "\002\045\355\334"}, {0x30AE, "\002\045\356\206"}, {0x30AF, "\002\045\356\023"}, {0x30B0, "\002\045\357\162"}, {0x30B1, "\002\045\355\333"}, {0x30B2, "\002\045\356\205"}, {0x30B3, "\002\045\355\171"}, {0x30B4, "\002\045\356\073"}, {0x30B5, "\002\045\355\006"}, {0x30B6, "\002\045\355\103"}, {0x30B7, "\002\045\355\277"}, {0x30B8, "\002\045\356\277"}, {0x30B9, "\002\045\356\255"}, {0x30BA, "\002\045\360\024"}, {0x30BB, "\002\045\356\044"}, {0x30BC, "\002\045\356\276"}, {0x30BD, "\002\045\355\072"}, {0x30BE, "\002\045\356\137"}, {0x30BF, "\002\045\313"}, {0x30C0, "\002\045\355\004"}, {0x30C1, "\002\045\355\221"}, {0x30C2, "\002\045\356\064"}, {0x30C3, "\002\045\355\302\005"}, {0x30C4, "\002\045\355\302"}, {0x30C5, "\002\045\213"}, {0x30C6, "\002\045\356\127"}, {0x30C7, "\002\045\007"}, {0x30C8, "\002\045\355\200"}, {0x30C9, "\002\045\355\254"}, {0x30CA, "\002\045\355\002"}, {0x30CB, "\002\045\245"}, {0x30CC, "\002\045\356\027"}, {0x30CD, "\002\045\355\142"}, {0x30CE, "\002\045\355\115"}, {0x30CF, "\002\045\316"}, {0x30D0, "\002\045\355\054"}, {0x30D1, "\002\045\331"}, {0x30D2, "\002\045\355\257"}, {0x30D3, "\002\045\356\306"}, {0x30D4, "\002\045\355\235"}, {0x30D5, "\002\045\356\340"}, {0x30D6, "\002\045\356\005"}, {0x30D7, "\002\045\357\301"}, {0x30D8, "\002\045\356\074"}, {0x30D9, "\002\045\356\144"}, {0x30DA, "\002\045\356\377"}, {0x30DB, "\002\045\355\111"}, {0x30DC, "\002\045\356\002"}, {0x30DD, "\002\045\355\275"}, {0x30DE, "\002\045\301"}, {0x30DF, "\002\045\355\232"}, {0x30E0, "\002\045\355\113"}, {0x30E1, "\002\045\355\336"}, {0x30E2, "\002\045\355\140"}, {0x30E3, "\002\045\307\005"}, {0x30E4, "\002\045\307"}, {0x30E5, "\002\045\355\366\005"}, {0x30E6, "\002\045\355\366"}, {0x30E7, "\002\045\355\042\005"}, {0x30E8, "\002\045\355\042"}, {0x30E9, "\002\045\324"}, {0x30EA, "\002\045\355\351"}, {0x30EB, "\002\045\356\041"}, {0x30EC, "\002\045\356\037"}, {0x30ED, "\002\045\355\176"}, {0x30EE, "\002\045\355\052\005"}, {0x30EF, "\002\045\355\052"}, {0x30F0, "\002\045\355\364"}, {0x30F1, "\002\045\356\272"}, {0x30F2, "\002\045\355\152"}, {0x30F3, "\002\045\242"}, {0x30F4, "\002\045\360\006"}, {0x30F5, "\002\045\241\005"}, {0x30F6, "\002\045\355\333\005"}, {0x30F7, "\002\045\355\243"}, {0x30F8, "\002\045\360\003"}, {0x30F9, "\002\045\357\055"}, {0x30FA, "\002\045\356\134"}, {0x30FB, "\037\355\141\045"}, {0x30FC, "\205\356\077\007\355\177\357\015"}, {0x30FD, "\205\356\160\045"}, {0x30FE, "\205\356\160\360\005\045"}, {0x3105, "\001\167\355\023"}, {0x3106, "\001\167\372\146"}, {0x3107, "\001\167\300"}, {0x3108, "\001\167\355\064"}, {0x3109, "\001\167\262"}, {0x310A, "\001\167\375\102"}, {0x310B, "\001\167\242"}, {0x310C, "\001\167\212"}, {0x310D, "\001\167\354"}, {0x310E, "\001\167\360\367"}, {0x310F, "\001\167\240"}, {0x3110, "\001\167\362\044"}, {0x3111, "\001\167\375\267"}, {0x3112, "\001\167\367\123"}, {0x3113, "\001\167\361\364"}, {0x3114, "\001\167\375\121"}, {0x3115, "\001\167\357\077"}, {0x3116, "\001\167\355\055"}, {0x3117, "\001\167\375\346"}, {0x3118, "\001\167\375\347"}, {0x3119, "\001\167\224"}, {0x311A, "\001\167\063"}, {0x311B, "\001\167\310"}, {0x311C, "\001\167\130"}, {0x311D, "\001\167\356\140"}, {0x311E, "\001\167\311"}, {0x311F, "\001\167\366\043"}, {0x3120, "\001\167\362\346"}, {0x3121, "\001\167\366\024"}, {0x3122, "\001\167\357\066"}, {0x3123, "\001\167\013"}, {0x3124, "\001\167\355\375"}, {0x3125, "\001\167\356\011"}, {0x3126, "\001\167\366\032"}, {0x3127, "\001\167\103"}, {0x3128, "\001\167\113"}, {0x3129, "\001\167\132"}, {0x312A, "\001\167\355\027"}, {0x312B, "\001\167\355\340"}, {0x312C, "\001\167\366\237"}, {0x3131, "\001\014\355\335"}, {0x3132, "\001\014\357\042"}, {0x3133, "\001\014\357\223"}, {0x3134, "\001\014\355\341"}, {0x3135, "\001\014\357\250"}, {0x3136, "\001\014\357\247"}, {0x3137, "\001\014\355\362"}, {0x3138, "\001\014\357\342"}, {0x3139, "\001\014\355\352"}, {0x313A, "\001\014\357\311"}, {0x313B, "\001\014\357\312"}, {0x313C, "\001\014\357\314"}, {0x313D, "\001\014\357\315"}, {0x313E, "\001\014\357\316"}, {0x313F, "\001\014\357\313"}, {0x3140, "\001\014\357\025"}, {0x3141, "\001\014\355\337"}, {0x3142, "\001\014\355\347"}, {0x3143, "\001\014\357\340"}, {0x3144, "\001\014\357\004"}, {0x3145, "\001\014\355\353"}, {0x3146, "\001\014\357\043"}, {0x3147, "\001\014\355\331"}, {0x3148, "\001\014\355\300"}, {0x3149, "\001\014\357\341"}, {0x314A, "\001\014\355\360"}, {0x314B, "\001\014\355\332"}, {0x314C, "\001\014\355\357"}, {0x314D, "\001\014\355\346"}, {0x314E, "\001\014\355\327"}, {0x314F, "\001\014\063"}, {0x3150, "\001\014\356\140"}, {0x3151, "\001\014\307"}, {0x3152, "\001\014\360\020"}, {0x3153, "\001\014\064"}, {0x3154, "\001\014\220"}, {0x3155, "\001\014\355\042"}, {0x3156, "\001\014\355\305"}, {0x3157, "\001\014\310"}, {0x3158, "\001\014\355\052"}, {0x3159, "\001\014\360\012"}, {0x315A, "\001\014\356\013"}, {0x315B, "\001\014\356\275"}, {0x315C, "\001\014\113"}, {0x315D, "\001\014\355\152"}, {0x315E, "\001\014\356\273"}, {0x315F, "\001\014\355\364"}, {0x3160, "\001\014\355\153"}, {0x3161, "\001\014\360\035"}, {0x3162, "\001\014\360\036"}, {0x3163, "\001\014\103"}, {0x3164, "\356\147\014"}, {0x3165, "\001\014\361\341"}, {0x3166, "\001\014\357\251"}, {0x3167, "\001\014\361\117"}, {0x3168, "\001\014\361\116"}, {0x3169, "\001\014\361\267"}, {0x316A, "\001\014\361\273"}, {0x316B, "\001\014\361\272"}, {0x316C, "\001\014\361\271"}, {0x316D, "\001\014\361\274"}, {0x316E, "\001\014\357\237"}, {0x316F, "\001\014\361\063"}, {0x3170, "\001\014\361\062"}, {0x3171, "\001\014\357\215"}, {0x3172, "\001\014\361\176"}, {0x3173, "\001\014\361\204"}, {0x3174, "\001\014\361\200"}, {0x3175, "\001\014\361\201"}, {0x3176, "\001\014\361\203"}, {0x3177, "\001\014\361\202"}, {0x3178, "\001\014\357\217"}, {0x3179, "\001\014\360\371"}, {0x317A, "\001\014\357\330"}, {0x317B, "\001\014\361\324"}, {0x317C, "\001\014\357\332"}, {0x317D, "\001\014\357\331"}, {0x317E, "\001\014\361\326"}, {0x317F, "\001\014\357\267"}, {0x3180, "\001\014\357\337"}, {0x3181, "\001\014\360\014"}, {0x3182, "\001\014\362\117"}, {0x3183, "\001\014\362\116"}, {0x3184, "\001\014\357\216"}, {0x3185, "\001\014\361\340"}, {0x3186, "\001\014\360\015"}, {0x3187, "\001\014\362\142"}, {0x3188, "\001\014\362\143"}, {0x3189, "\001\014\362\141"}, {0x318A, "\001\014\362\125"}, {0x318B, "\001\014\362\126"}, {0x318C, "\001\014\362\124"}, {0x318D, "\001\014\360\056"}, {0x318E, "\001\014\362\375"}, {0x3190, "\205\355\043\076\007\370\166"}, {0x3191, "\205\355\043\076\365\165"}, {0x3192, "\205\355\043\076\107"}, {0x3193, "\205\355\043\076\127"}, {0x3194, "\205\355\043\076\136"}, {0x3195, "\205\355\043\076\221"}, {0x3196, "\205\355\043\076\213\102"}, {0x3197, "\205\355\043\076\213\356\311"}, {0x3198, "\205\355\043\076\213\101"}, {0x3199, "\205\355\043\076\213\361\226"}, {0x319A, "\205\355\043\076\213\357\325"}, {0x319B, "\205\355\043\076\213\375\263"}, {0x319C, "\205\355\043\076\213\361\247"}, {0x319D, "\205\355\043\076\213\357\102"}, {0x319E, "\205\355\043\076\007\033\356\130"}, {0x319F, "\205\355\043\076\007\370\127"}, {0x31A0, "\001\167\336"}, {0x31A1, "\001\167\273"}, {0x31A2, "\001\167\365\303"}, {0x31A3, "\001\167\270"}, {0x31A4, "\001\167\220"}, {0x31A5, "\001\167\366\011"}, {0x31A6, "\001\167\064"}, {0x31A7, "\001\167\361\143"}, {0x31A8, "\001\167\377\052"}, {0x31A9, "\001\167\362\335"}, {0x31AA, "\001\167\367\220"}, {0x31AB, "\001\167\372\133"}, {0x31AC, "\001\167\367\210"}, {0x31AD, "\001\167\371\215"}, {0x31AE, "\001\167\363\021"}, {0x31AF, "\001\167\362\347"}, {0x31B0, "\001\167\356\301"}, {0x31B1, "\001\167\356\370"}, {0x31B2, "\001\167\372\103"}, {0x31B3, "\001\167\367\222"}, {0x31B4, "\001\167\355\023\032"}, {0x31B5, "\001\167\262\032"}, {0x31B6, "\001\167\360\367\032"}, {0x31B7, "\001\167\240\032"}, {0x3200, "\014\355\335\075\077"}, {0x3201, "\014\355\341\075\077"}, {0x3202, "\014\355\362\075\077"}, {0x3203, "\014\355\352\075\077"}, {0x3204, "\014\355\337\075\077"}, {0x3205, "\014\355\347\075\077"}, {0x3206, "\014\355\353\075\077"}, {0x3207, "\014\355\331\075\077"}, {0x3208, "\014\355\300\075\077"}, {0x3209, "\014\355\360\075\077"}, {0x320A, "\014\355\332\075\077"}, {0x320B, "\014\355\357\075\077"}, {0x320C, "\014\355\346\075\077"}, {0x320D, "\014\355\327\075\077"}, {0x320E, "\014\355\335\063\075\077"}, {0x320F, "\014\355\341\063\075\077"}, {0x3210, "\014\355\362\063\075\077"}, {0x3211, "\014\355\352\063\075\077"}, {0x3212, "\014\355\337\063\075\077"}, {0x3213, "\014\355\347\063\075\077"}, {0x3214, "\014\355\353\063\075\077"}, {0x3215, "\014\355\331\063\075\077"}, {0x3216, "\014\355\300\063\075\077"}, {0x3217, "\014\355\360\063\075\077"}, {0x3218, "\014\355\332\063\075\077"}, {0x3219, "\014\355\357\063\075\077"}, {0x321A, "\014\355\346\063\075\077"}, {0x321B, "\014\355\327\063\075\077"}, {0x321C, "\014\355\300\113\075\077"}, {0x3220, "\016\107\075\077"}, {0x3221, "\016\127\075\077"}, {0x3222, "\016\136\075\077"}, {0x3223, "\016\221\075\077"}, {0x3224, "\016\231\075\077"}, {0x3225, "\016\256\075\077"}, {0x3226, "\016\253\075\077"}, {0x3227, "\016\227\075\077"}, {0x3228, "\016\260\075\077"}, {0x3229, "\016\355\036\075\077"}, {0x322A, "\016\356\103\075\077"}, {0x322B, "\016\356\201\075\077"}, {0x322C, "\016\356\070\075\077"}, {0x322D, "\016\356\003\075\077"}, {0x322E, "\016\361\107\075\077"}, {0x322F, "\016\356\130\075\077"}, {0x3230, "\016\356\046\075\077"}, {0x3231, "\016\361\054\075\077"}, {0x3232, "\016\360\064\075\077"}, {0x3233, "\016\357\333\075\077"}, {0x3234, "\016\361\122\075\077"}, {0x3235, "\016\361\337\075\077"}, {0x3236, "\016\360\245\075\077"}, {0x3237, "\016\360\260\075\077"}, {0x3238, "\016\357\366\075\077"}, {0x3239, "\016\374\062\075\077"}, {0x323A, "\016\362\353\075\077"}, {0x323B, "\016\362\163\075\077"}, {0x323C, "\016\375\044\075\077"}, {0x323D, "\016\360\236\075\077"}, {0x323E, "\016\361\262\075\077"}, {0x323F, "\016\360\051\075\077"}, {0x3240, "\016\366\064\075\077"}, {0x3241, "\016\361\261\075\077"}, {0x3242, "\016\374\347\075\077"}, {0x3243, "\016\363\006\075\077"}, {0x3260, "\014\051\355\335"}, {0x3261, "\014\051\355\341"}, {0x3262, "\014\051\355\362"}, {0x3263, "\014\051\355\352"}, {0x3264, "\014\051\355\337"}, {0x3265, "\014\051\355\347"}, {0x3266, "\014\051\355\353"}, {0x3267, "\014\051\355\331"}, {0x3268, "\014\051\355\300"}, {0x3269, "\014\051\355\360"}, {0x326A, "\014\051\355\332"}, {0x326B, "\014\051\355\357"}, {0x326C, "\014\051\355\346"}, {0x326D, "\014\051\355\327"}, {0x326E, "\014\051\355\335\063"}, {0x326F, "\014\051\355\341\063"}, {0x3270, "\014\051\355\362\063"}, {0x3271, "\014\051\355\352\063"}, {0x3272, "\014\051\355\337\063"}, {0x3273, "\014\051\355\347\063"}, {0x3274, "\014\051\355\353\063"}, {0x3275, "\014\051\355\331\063"}, {0x3276, "\014\051\355\300\063"}, {0x3277, "\014\051\355\360\063"}, {0x3278, "\014\051\355\332\063"}, {0x3279, "\014\051\355\357\063"}, {0x327A, "\014\051\355\346\063"}, {0x327B, "\014\051\355\327\063"}, {0x327F, "\022\007\361\123\365\102"}, {0x3280, "\016\107\051"}, {0x3281, "\016\127\051"}, {0x3282, "\016\136\051"}, {0x3283, "\016\221\051"}, {0x3284, "\016\231\051"}, {0x3285, "\016\256\051"}, {0x3286, "\016\253\051"}, {0x3287, "\016\227\051"}, {0x3288, "\016\260\051"}, {0x3289, "\016\355\036\051"}, {0x328A, "\016\356\103\051"}, {0x328B, "\016\356\201\051"}, {0x328C, "\016\356\070\051"}, {0x328D, "\016\356\003\051"}, {0x328E, "\016\361\107\051"}, {0x328F, "\016\356\130\051"}, {0x3290, "\016\356\046\051"}, {0x3291, "\016\361\054\051"}, {0x3292, "\016\360\064\051"}, {0x3293, "\016\357\333\051"}, {0x3294, "\016\361\122\051"}, {0x3295, "\016\361\337\051"}, {0x3296, "\016\360\245\051"}, {0x3297, "\016\360\260\051"}, {0x3298, "\016\357\366\051"}, {0x3299, "\016\374\246\051"}, {0x329A, "\016\361\106\051"}, {0x329B, "\016\360\243\051"}, {0x329C, "\016\362\303\051"}, {0x329D, "\016\366\035\051"}, {0x329E, "\016\360\351\051"}, {0x329F, "\016\363\010\051"}, {0x32A0, "\016\362\370\051"}, {0x32A1, "\016\361\261\051"}, {0x32A2, "\016\365\073\051"}, {0x32A3, "\016\365\100\051"}, {0x32A4, "\016\102\051"}, {0x32A5, "\016\356\311\051"}, {0x32A6, "\016\101\051"}, {0x32A7, "\016\052\051"}, {0x32A8, "\016\222\051"}, {0x32A9, "\016\371\064\051"}, {0x32AA, "\016\374\056\051"}, {0x32AB, "\016\362\163\051"}, {0x32AC, "\016\375\045\051"}, {0x32AD, "\016\360\236\051"}, {0x32AE, "\016\361\262\051"}, {0x32AF, "\016\360\051\051"}, {0x32B0, "\016\371\370\051"}, {0x32C0, "\022\162\076\367\262"}, {0x32C1, "\022\162\076\366\140"}, {0x32C2, "\022\162\076\370\275"}, {0x32C3, "\022\162\076\363\014"}, {0x32C4, "\022\162\076\361\053"}, {0x32C5, "\022\162\076\367\333"}, {0x32C6, "\022\162\076\367\332"}, {0x32C7, "\022\162\076\362\351"}, {0x32C8, "\022\162\076\374\256"}, {0x32C9, "\022\162\076\372\077"}, {0x32CA, "\022\162\076\371\334"}, {0x32CB, "\022\162\076\365\356"}, {0x32D0, "\045\051\063"}, {0x32D1, "\045\051\103"}, {0x32D2, "\045\051\132"}, {0x32D3, "\045\051\130"}, {0x32D4, "\045\051\064"}, {0x32D5, "\045\051\241"}, {0x32D6, "\045\051\355\334"}, {0x32D7, "\045\051\356\023"}, {0x32D8, "\045\051\355\333"}, {0x32D9, "\045\051\355\171"}, {0x32DA, "\045\051\355\006"}, {0x32DB, "\045\051\355\277"}, {0x32DC, "\045\051\356\255"}, {0x32DD, "\045\051\356\044"}, {0x32DE, "\045\051\355\072"}, {0x32DF, "\045\051\313"}, {0x32E0, "\045\051\355\221"}, {0x32E1, "\045\051\355\302"}, {0x32E2, "\045\051\356\127"}, {0x32E3, "\045\051\355\200"}, {0x32E4, "\045\051\355\002"}, {0x32E5, "\045\051\245"}, {0x32E6, "\045\051\356\027"}, {0x32E7, "\045\051\355\142"}, {0x32E8, "\045\051\355\115"}, {0x32E9, "\045\051\316"}, {0x32EA, "\045\051\355\257"}, {0x32EB, "\045\051\356\340"}, {0x32EC, "\045\051\356\074"}, {0x32ED, "\045\051\355\111"}, {0x32EE, "\045\051\301"}, {0x32EF, "\045\051\355\232"}, {0x32F0, "\045\051\355\113"}, {0x32F1, "\045\051\355\336"}, {0x32F2, "\045\051\355\140"}, {0x32F3, "\045\051\307"}, {0x32F4, "\045\051\355\366"}, {0x32F5, "\045\051\355\042"}, {0x32F6, "\045\051\324"}, {0x32F7, "\045\051\355\351"}, {0x32F8, "\045\051\356\041"}, {0x32F9, "\045\051\356\037"}, {0x32FA, "\045\051\355\176"}, {0x32FB, "\045\051\355\052"}, {0x32FC, "\045\051\355\364"}, {0x32FD, "\045\051\356\272"}, {0x32FE, "\045\051\355\152"}, {0x3300, "\362\356\046\013\035"}, {0x3301, "\362\371\046\013\035"}, {0x3302, "\362\343\046\013\035"}, {0x3303, "\377\005\046\013\035"}, {0x3304, "\367\217\046\013\035"}, {0x3305, "\367\226\046\013\035"}, {0x3306, "\375\377\046\013\035"}, {0x3307, "\366\027\046\013\035"}, {0x3308, "\377\047\046\013\035"}, {0x3309, "\372\106\046\013\035"}, {0x330A, "\377\070\046\013\035"}, {0x330B, "\367\362\046\013\035"}, {0x330C, "\367\370\046\013\035"}, {0x330D, "\367\372\046\013\035"}, {0x330E, "\366\146\046\013\035"}, {0x330F, "\366\143\046\013\035"}, {0x3310, "\366\227\046\013\035"}, {0x3311, "\366\231\046\013\035"}, {0x3312, "\370\113\046\013\035"}, {0x3313, "\366\233\046\013\035"}, {0x3314, "\370\023\046\013\035"}, {0x3315, "\370\024\046\013\035"}, {0x3316, "\370\025\046\013\035"}, {0x3317, "\370\026\046\013\035"}, {0x3318, "\366\265\046\013\035"}, {0x3319, "\366\266\046\013\035"}, {0x331A, "\370\063\046\013\035"}, {0x331B, "\370\065\046\013\035"}, {0x331C, "\370\122\046\013\035"}, {0x331D, "\370\045\046\013\035"}, {0x331E, "\370\125\046\013\035"}, {0x331F, "\374\215\046\013\035"}, {0x3320, "\374\225\046\013\035"}, {0x3321, "\374\325\046\013\035"}, {0x3322, "\374\253\046\013\035"}, {0x3323, "\374\254\046\013\035"}, {0x3324, "\365\355\046\013\035"}, {0x3325, "\365\261\046\013\035"}, {0x3326, "\365\330\046\013\035"}, {0x3327, "\375\232\046\013\035"}, {0x3328, "\371\106\046\013\035"}, {0x3329, "\371\331\046\013\035"}, {0x332A, "\366\314\046\013\035"}, {0x332B, "\373\330\046\013\035"}, {0x332C, "\373\331\046\013\035"}, {0x332D, "\363\215\046\013\035"}, {0x332E, "\372\230\046\013\035"}, {0x332F, "\372\236\046\013\035"}, {0x3330, "\372\235\046\013\035"}, {0x3331, "\363\141\046\013\035"}, {0x3332, "\367\124\046\013\035"}, {0x3333, "\367\132\046\013\035"}, {0x3334, "\363\201\046\013\035"}, {0x3335, "\367\131\046\013\035"}, {0x3336, "\366\327\046\013\035"}, {0x3337, "\372\212\046\013\035"}, {0x3338, "\372\201\046\013\035"}, {0x3339, "\366\332\046\013\035"}, {0x333A, "\372\202\046\013\035"}, {0x333B, "\373\334\046\013\035"}, {0x333C, "\356\307\046\013\035"}, {0x333D, "\372\255\046\013\035"}, {0x333E, "\363\154\046\013\035"}, {0x333F, "\367\104\046\013\035"}, {0x3340, "\373\260\046\013\035"}, {0x3341, "\367\167\046\013\035"}, {0x3342, "\367\166\046\013\035"}, {0x3343, "\370\307\046\013\035"}, {0x3344, "\370\306\046\013\035"}, {0x3345, "\370\256\046\013\035"}, {0x3346, "\370\262\046\013\035"}, {0x3347, "\370\270\046\013\035"}, {0x3348, "\370\364\046\013\035"}, {0x3349, "\370\374\046\013\035"}, {0x334A, "\370\375\046\013\035"}, {0x334B, "\357\246\046\013\035"}, {0x334C, "\371\067\046\013\035"}, {0x334D, "\371\071\046\013\035"}, {0x334E, "\376\232\046\013\035"}, {0x334F, "\376\233\046\013\035"}, {0x3350, "\376\210\046\013\035"}, {0x3351, "\374\073\046\013\035"}, {0x3352, "\374\072\046\013\035"}, {0x3353, "\374\155\046\013\035"}, {0x3354, "\374\207\046\013\035"}, {0x3355, "\374\057\046\013\035"}, {0x3356, "\374\060\046\013\035"}, {0x3357, "\376\101\046\013\035"}, {0x3358, "\022\162\076\343\333"}, {0x3359, "\022\162\076\343\107"}, {0x335A, "\022\162\076\343\127"}, {0x335B, "\022\162\076\343\136"}, {0x335C, "\022\162\076\343\221"}, {0x335D, "\022\162\076\343\231"}, {0x335E, "\022\162\076\343\256"}, {0x335F, "\022\162\076\343\253"}, {0x3360, "\022\162\076\343\227"}, {0x3361, "\022\162\076\343\260"}, {0x3362, "\022\162\076\343\355\036"}, {0x3363, "\022\162\076\343\356\031"}, {0x3364, "\022\162\076\343\355\321"}, {0x3365, "\022\162\076\343\356\262"}, {0x3366, "\022\162\076\343\356\250"}, {0x3367, "\022\162\076\343\356\252"}, {0x3368, "\022\162\076\343\356\045"}, {0x3369, "\022\162\076\343\356\164"}, {0x336A, "\022\162\076\343\356\162"}, {0x336B, "\022\162\076\343\356\163"}, {0x336C, "\022\162\076\343\356\052"}, {0x336D, "\022\162\076\343\362\072"}, {0x336E, "\022\162\076\343\362\071"}, {0x336F, "\022\162\076\343\362\074"}, {0x3370, "\022\162\076\343\362\073"}, {0x3371, "\367\122\046\013\035"}, {0x3372, "\355\004\046\013\035"}, {0x3373, "\355\311\046\013\035"}, {0x3374, "\363\035\046\013\035"}, {0x3375, "\372\141\046\013\035"}, {0x3376, "\372\176\046\013\035"}, {0x337B, "\357\064\366\334\046\013\035"}, {0x337C, "\357\064\363\347\046\013\035"}, {0x337D, "\357\064\375\117\046\013\035"}, {0x337E, "\357\064\370\327\046\013\035"}, {0x337F, "\357\333\046\013\035"}, {0x3380, "\331\362\327\046\013\035"}, {0x3381, "\355\002\046\013\035"}, {0x3382, "\355\113\063\046\013\035"}, {0x3383, "\301\046\013\035"}, {0x3384, "\241\046\013\035"}, {0x3385, "\370\001\046\013\035"}, {0x3386, "\361\055\046\013\035"}, {0x3387, "\366\151\046\013\035"}, {0x3388, "\363\231\046\013\035"}, {0x3389, "\370\002\046\013\035"}, {0x338A, "\372\213\046\013\035"}, {0x338B, "\371\205\046\013\035"}, {0x338C, "\355\113\355\064\046\013\035"}, {0x338D, "\355\113\270\046\013\035"}, {0x338E, "\370\330\046\013\035"}, {0x338F, "\360\374\046\013\035"}, {0x3390, "\367\161\046\013\035"}, {0x3391, "\370\015\046\013\035"}, {0x3392, "\370\357\046\013\035"}, {0x3393, "\366\221\046\013\035"}, {0x3394, "\375\202\046\013\035"}, {0x3395, "\355\113\212\046\013\035"}, {0x3396, "\371\007\046\013\035"}, {0x3397, "\365\317\046\013\035"}, {0x3398, "\370\040\046\013\035"}, {0x3399, "\366\101\046\013\035"}, {0x339A, "\371\306\046\013\035"}, {0x339B, "\355\113\300\046\013\035"}, {0x339C, "\357\240\046\013\035"}, {0x339D, "\357\106\046\013\035"}, {0x339E, "\356\345\046\013\035"}, {0x339F, "\357\240\035\046\013\035"}, {0x33A0, "\357\106\035\046\013\035"}, {0x33A1, "\300\035\046\013\035"}, {0x33A2, "\356\345\035\046\013\035"}, {0x33A3, "\357\240\356\320\046\013\035"}, {0x33A4, "\357\106\356\320\046\013\035"}, {0x33A5, "\300\356\320\046\013\035"}, {0x33A6, "\356\345\356\320\046\013\035"}, {0x33A7, "\300\355\150\224\046\013\035"}, {0x33A8, "\300\355\150\224\035\046\013\035"}, {0x33A9, "\331\046\013\035"}, {0x33AA, "\370\053\046\013\035"}, {0x33AB, "\371\032\046\013\035"}, {0x33AC, "\366\245\046\013\035"}, {0x33AD, "\357\022\046\013\035"}, {0x33AE, "\357\022\355\150\224\046\013\035"}, {0x33AF, "\357\022\355\150\224\035\046\013\035"}, {0x33B0, "\373\305\046\013\035"}, {0x33B1, "\371\366\046\013\035"}, {0x33B2, "\355\113\224\046\013\035"}, {0x33B3, "\371\033\046\013\035"}, {0x33B4, "\373\316\046\013\035"}, {0x33B5, "\372\003\046\013\035"}, {0x33B6, "\355\113\355\027\046\013\035"}, {0x33B7, "\361\104\046\013\035"}, {0x33B8, "\370\070\046\013\035"}, {0x33B9, "\361\104\357\246\046\013\035"}, {0x33BA, "\373\317\046\013\035"}, {0x33BB, "\372\004\046\013\035"}, {0x33BC, "\355\113\351\046\013\035"}, {0x33BD, "\361\105\046\013\035"}, {0x33BE, "\370\071\046\013\035"}, {0x33BF, "\361\105\357\246\046\013\035"}, {0x33C0, "\354\356\367\046\013\035"}, {0x33C1, "\300\356\367\046\013\035"}, {0x33C2, "\356\301\046\013\035"}, {0x33C3, "\363\164\046\013\035"}, {0x33C4, "\363\245\046\013\035"}, {0x33C5, "\363\246\046\013\035"}, {0x33C6, "\315\355\150\360\374\046\013\035"}, {0x33C7, "\360\137\046\013\035"}, {0x33C8, "\365\207\046\013\035"}, {0x33C9, "\366\300\046\013\035"}, {0x33CA, "\316\046\013\035"}, {0x33CB, "\367\121\046\013\035"}, {0x33CC, "\357\177\046\013\035"}, {0x33CD, "\361\006\046\013\035"}, {0x33CE, "\356\345\010\046\013\035"}, {0x33CF, "\370\055\046\013\035"}, {0x33D0, "\370\202\046\013\035"}, {0x33D1, "\370\203\046\013\035"}, {0x33D2, "\370\205\046\013\035"}, {0x33D3, "\370\233\046\013\035"}, {0x33D4, "\361\055\005\046\013\035"}, {0x33D5, "\370\365\046\013\035"}, {0x33D6, "\371\016\046\013\035"}, {0x33D7, "\372\214\046\013\035"}, {0x33D8, "\372\254\046\013\035"}, {0x33D9, "\373\267\046\013\035"}, {0x33DA, "\373\270\046\013\035"}, {0x33DB, "\374\374\046\013\035"}, {0x33DC, "\375\054\046\013\035"}, {0x33DD, "\376\103\046\013\035"}, {0x33E0, "\022\162\076\305\107"}, {0x33E1, "\022\162\076\305\127"}, {0x33E2, "\022\162\076\305\136"}, {0x33E3, "\022\162\076\305\221"}, {0x33E4, "\022\162\076\305\231"}, {0x33E5, "\022\162\076\305\256"}, {0x33E6, "\022\162\076\305\253"}, {0x33E7, "\022\162\076\305\227"}, {0x33E8, "\022\162\076\305\260"}, {0x33E9, "\022\162\076\305\355\036"}, {0x33EA, "\022\162\076\305\356\031"}, {0x33EB, "\022\162\076\305\355\321"}, {0x33EC, "\022\162\076\356\262"}, {0x33ED, "\022\162\076\305\356\250"}, {0x33EE, "\022\162\076\305\356\252"}, {0x33EF, "\022\162\076\305\356\045"}, {0x33F0, "\022\162\076\305\356\164"}, {0x33F1, "\022\162\076\305\356\162"}, {0x33F2, "\022\162\076\305\356\163"}, {0x33F3, "\022\162\076\305\356\052"}, {0x33F4, "\022\162\076\305\362\072"}, {0x33F5, "\022\162\076\305\362\071"}, {0x33F6, "\022\162\076\305\362\074"}, {0x33F7, "\022\162\076\305\362\073"}, {0x33F8, "\022\162\076\305\376\036"}, {0x33F9, "\022\162\076\305\376\042"}, {0x33FA, "\022\162\076\305\376\041"}, {0x33FB, "\022\162\076\305\376\037"}, {0x33FC, "\022\162\076\305\376\040"}, {0x33FD, "\022\162\076\305\357\367"}, {0x33FE, "\022\162\076\305\375\257"}, {0xA000, "\002\003\367\241"}, {0xA001, "\002\003\367\243"}, {0xA002, "\002\003\103"}, {0xA003, "\002\003\367\232"}, {0xA004, "\002\003\367\202"}, {0xA005, "\002\003\367\203"}, {0xA006, "\002\003\367\200"}, {0xA007, "\002\003\367\201"}, {0xA008, "\002\003\363\004"}, {0xA009, "\002\003\363\015"}, {0xA00A, "\002\003\063"}, {0xA00B, "\002\003\362\352"}, {0xA00C, "\002\003\376\002"}, {0xA00D, "\002\003\375\376"}, {0xA00E, "\002\003\376\001"}, {0xA00F, "\002\003\372\121"}, {0xA010, "\002\003\372\142"}, {0xA011, "\002\003\064"}, {0xA012, "\002\003\361\144"}, {0xA013, "\002\003\366\034"}, {0xA014, "\002\003\130"}, {0xA015, "\002\003\376\111"}, {0xA016, "\002\003\363\144"}, {0xA017, "\002\003\363\145"}, {0xA018, "\002\003\356\306"}, {0xA019, "\002\003\363\137"}, {0xA01A, "\002\003\363\131"}, {0xA01B, "\002\003\363\132"}, {0xA01C, "\002\003\363\127"}, {0xA01D, "\002\003\363\130"}, {0xA01E, "\002\003\363\043"}, {0xA01F, "\002\003\363\046"}, {0xA020, "\002\003\355\054"}, {0xA021, "\002\003\363\034"}, {0xA022, "\002\003\363\175"}, {0xA023, "\002\003\363\173"}, {0xA024, "\002\003\363\174"}, {0xA025, "\002\003\363\155"}, {0xA026, "\002\003\363\162"}, {0xA027, "\002\003\356\002"}, {0xA028, "\002\003\363\153"}, {0xA029, "\002\003\363\121"}, {0xA02A, "\002\003\356\144"}, {0xA02B, "\002\003\363\116"}, {0xA02C, "\002\003\363\202"}, {0xA02D, "\002\003\363\203"}, {0xA02E, "\002\003\356\005"}, {0xA02F, "\002\003\363\176"}, {0xA030, "\002\003\363\200"}, {0xA031, "\002\003\360\104"}, {0xA032, "\002\003\363\211"}, {0xA033, "\002\003\363\212"}, {0xA034, "\002\003\363\205"}, {0xA035, "\002\003\363\206"}, {0xA036, "\002\003\363\210"}, {0xA037, "\002\003\363\207"}, {0xA038, "\002\003\372\240"}, {0xA039, "\002\003\372\241"}, {0xA03A, "\002\003\355\235"}, {0xA03B, "\002\003\372\237"}, {0xA03C, "\002\003\372\234"}, {0xA03D, "\002\003\372\231"}, {0xA03E, "\002\003\372\232"}, {0xA03F, "\002\003\372\170"}, {0xA040, "\002\003\372\173"}, {0xA041, "\002\003\331"}, {0xA042, "\002\003\372\157"}, {0xA043, "\002\003\373\311"}, {0xA044, "\002\003\373\307"}, {0xA045, "\002\003\373\310"}, {0xA046, "\002\003\373\263"}, {0xA047, "\002\003\373\266"}, {0xA048, "\002\003\355\275"}, {0xA049, "\002\003\373\261"}, {0xA04A, "\002\003\361\234"}, {0xA04B, "\002\003\373\315"}, {0xA04C, "\002\003\357\301"}, {0xA04D, "\002\003\373\312"}, {0xA04E, "\002\003\373\314"}, {0xA04F, "\002\003\373\313"}, {0xA050, "\002\003\361\235"}, {0xA051, "\002\003\373\325"}, {0xA052, "\002\003\373\321"}, {0xA053, "\002\003\373\322"}, {0xA054, "\002\003\373\324"}, {0xA055, "\002\003\373\323"}, {0xA056, "\002\003\363\065"}, {0xA057, "\002\003\363\066"}, {0xA058, "\002\003\363\057"}, {0xA059, "\002\003\363\064"}, {0xA05A, "\002\003\363\062"}, {0xA05B, "\002\003\363\063"}, {0xA05C, "\002\003\363\060"}, {0xA05D, "\002\003\363\061"}, {0xA05E, "\002\003\363\052"}, {0xA05F, "\002\003\363\053"}, {0xA060, "\002\003\363\050"}, {0xA061, "\002\003\363\051"}, {0xA062, "\002\003\363\076"}, {0xA063, "\002\003\363\074"}, {0xA064, "\002\003\363\075"}, {0xA065, "\002\003\363\071"}, {0xA066, "\002\003\363\072"}, {0xA067, "\002\003\363\067"}, {0xA068, "\002\003\363\070"}, {0xA069, "\002\003\363\056"}, {0xA06A, "\002\003\363\054"}, {0xA06B, "\002\003\363\055"}, {0xA06C, "\002\003\360\073"}, {0xA06D, "\002\003\363\102"}, {0xA06E, "\002\003\363\073"}, {0xA06F, "\002\003\363\077"}, {0xA070, "\002\003\363\101"}, {0xA071, "\002\003\363\100"}, {0xA072, "\002\003\363\105"}, {0xA073, "\002\003\363\106"}, {0xA074, "\002\003\363\103"}, {0xA075, "\002\003\363\104"}, {0xA076, "\002\003\371\126"}, {0xA077, "\002\003\371\127"}, {0xA078, "\002\003\371\122"}, {0xA079, "\002\003\371\125"}, {0xA07A, "\002\003\371\124"}, {0xA07B, "\002\003\361\113"}, {0xA07C, "\002\003\371\123"}, {0xA07D, "\002\003\371\120"}, {0xA07E, "\002\003\371\121"}, {0xA07F, "\002\003\371\116"}, {0xA080, "\002\003\371\117"}, {0xA081, "\002\003\371\132"}, {0xA082, "\002\003\371\133"}, {0xA083, "\002\003\371\130"}, {0xA084, "\002\003\371\131"}, {0xA085, "\002\003\371\140"}, {0xA086, "\002\003\371\141"}, {0xA087, "\002\003\371\134"}, {0xA088, "\002\003\371\135"}, {0xA089, "\002\003\371\137"}, {0xA08A, "\002\003\371\136"}, {0xA08B, "\002\003\371\146"}, {0xA08C, "\002\003\371\147"}, {0xA08D, "\002\003\371\142"}, {0xA08E, "\002\003\371\143"}, {0xA08F, "\002\003\371\145"}, {0xA090, "\002\003\371\144"}, {0xA091, "\002\003\367\034"}, {0xA092, "\002\003\367\035"}, {0xA093, "\002\003\367\027"}, {0xA094, "\002\003\367\033"}, {0xA095, "\002\003\367\032"}, {0xA096, "\002\003\367\030"}, {0xA097, "\002\003\367\031"}, {0xA098, "\002\003\367\025"}, {0xA099, "\002\003\367\026"}, {0xA09A, "\002\003\367\023"}, {0xA09B, "\002\003\367\024"}, {0xA09C, "\002\003\367\044"}, {0xA09D, "\002\003\367\042"}, {0xA09E, "\002\003\367\043"}, {0xA09F, "\002\003\367\037"}, {0xA0A0, "\002\003\367\040"}, {0xA0A1, "\002\003\360\327"}, {0xA0A2, "\002\003\367\036"}, {0xA0A3, "\002\003\367\050"}, {0xA0A4, "\002\003\367\051"}, {0xA0A5, "\002\003\367\041"}, {0xA0A6, "\002\003\367\045"}, {0xA0A7, "\002\003\367\047"}, {0xA0A8, "\002\003\367\046"}, {0xA0A9, "\002\003\367\056"}, {0xA0AA, "\002\003\367\052"}, {0xA0AB, "\002\003\367\053"}, {0xA0AC, "\002\003\367\055"}, {0xA0AD, "\002\003\367\054"}, {0xA0AE, "\002\003\370\377"}, {0xA0AF, "\002\003\371\001"}, {0xA0B0, "\002\003\355\232"}, {0xA0B1, "\002\003\370\373"}, {0xA0B2, "\002\003\370\363"}, {0xA0B3, "\002\003\370\361"}, {0xA0B4, "\002\003\370\362"}, {0xA0B5, "\002\003\370\301"}, {0xA0B6, "\002\003\370\305"}, {0xA0B7, "\002\003\301"}, {0xA0B8, "\002\003\370\271"}, {0xA0B9, "\002\003\371\041"}, {0xA0BA, "\002\003\371\042"}, {0xA0BB, "\002\003\371\037"}, {0xA0BC, "\002\003\371\040"}, {0xA0BD, "\002\003\361\071"}, {0xA0BE, "\002\003\371\027"}, {0xA0BF, "\002\003\355\140"}, {0xA0C0, "\002\003\361\066"}, {0xA0C1, "\002\003\370\326"}, {0xA0C2, "\002\003\355\336"}, {0xA0C3, "\002\003\371\046"}, {0xA0C4, "\002\003\371\047"}, {0xA0C5, "\002\003\355\113"}, {0xA0C6, "\002\003\371\043"}, {0xA0C7, "\002\003\371\044"}, {0xA0C8, "\002\003\361\103"}, {0xA0C9, "\002\003\371\054"}, {0xA0CA, "\002\003\371\055"}, {0xA0CB, "\002\003\371\051"}, {0xA0CC, "\002\003\371\052"}, {0xA0CD, "\002\003\366\074"}, {0xA0CE, "\002\003\366\075"}, {0xA0CF, "\002\003\356\202"}, {0xA0D0, "\002\003\366\073"}, {0xA0D1, "\002\003\366\052"}, {0xA0D2, "\002\003\366\054"}, {0xA0D3, "\002\003\355\227"}, {0xA0D4, "\002\003\366\050"}, {0xA0D5, "\002\003\366\111"}, {0xA0D6, "\002\003\356\016"}, {0xA0D7, "\002\003\366\105"}, {0xA0D8, "\002\003\366\122"}, {0xA0D9, "\002\003\366\123"}, {0xA0DA, "\002\003\366\115"}, {0xA0DB, "\002\003\366\116"}, {0xA0DC, "\002\003\366\120"}, {0xA0DD, "\002\003\366\117"}, {0xA0DE, "\002\003\366\127"}, {0xA0DF, "\002\003\366\130"}, {0xA0E0, "\002\003\366\125"}, {0xA0E1, "\002\003\366\126"}, {0xA0E2, "\002\003\376\052"}, {0xA0E3, "\002\003\376\053"}, {0xA0E4, "\002\003\360\003"}, {0xA0E5, "\002\003\376\043"}, {0xA0E6, "\002\003\376\033"}, {0xA0E7, "\002\003\376\034"}, {0xA0E8, "\002\003\376\030"}, {0xA0E9, "\002\003\376\031"}, {0xA0EA, "\002\003\376\016"}, {0xA0EB, "\002\003\376\017"}, {0xA0EC, "\002\003\355\243"}, {0xA0ED, "\002\003\376\012"}, {0xA0EE, "\002\003\376\056"}, {0xA0EF, "\002\003\376\060"}, {0xA0F0, "\002\003\356\134"}, {0xA0F1, "\002\003\376\055"}, {0xA0F2, "\002\003\376\024"}, {0xA0F3, "\002\003\362\066"}, {0xA0F4, "\002\003\376\064"}, {0xA0F5, "\002\003\376\065"}, {0xA0F6, "\002\003\360\006"}, {0xA0F7, "\002\003\376\062"}, {0xA0F8, "\002\003\376\063"}, {0xA0F9, "\002\003\362\103"}, {0xA0FA, "\002\003\376\073"}, {0xA0FB, "\002\003\376\074"}, {0xA0FC, "\002\003\376\067"}, {0xA0FD, "\002\003\376\070"}, {0xA0FE, "\002\003\376\072"}, {0xA0FF, "\002\003\376\071"}, {0xA100, "\002\003\365\300"}, {0xA101, "\002\003\355\036"}, {0xA102, "\002\003\356\064"}, {0xA103, "\002\003\365\274"}, {0xA104, "\002\003\365\272"}, {0xA105, "\002\003\365\270"}, {0xA106, "\002\003\365\271"}, {0xA107, "\002\003\365\203"}, {0xA108, "\002\003\365\206"}, {0xA109, "\002\003\355\004"}, {0xA10A, "\002\003\365\200"}, {0xA10B, "\002\003\365\337"}, {0xA10C, "\002\003\365\336"}, {0xA10D, "\002\003\365\331"}, {0xA10E, "\002\003\365\333"}, {0xA10F, "\002\003\355\254"}, {0xA110, "\002\003\365\327"}, {0xA111, "\002\003\365\263"}, {0xA112, "\002\003\007"}, {0xA113, "\002\003\365\255"}, {0xA114, "\002\003\365\342"}, {0xA115, "\002\003\365\343"}, {0xA116, "\002\003\213"}, {0xA117, "\002\003\365\340"}, {0xA118, "\002\003\365\341"}, {0xA119, "\002\003\356\326"}, {0xA11A, "\002\003\375\220"}, {0xA11B, "\002\003\375\222"}, {0xA11C, "\002\003\355\221"}, {0xA11D, "\002\003\375\213"}, {0xA11E, "\002\003\375\210"}, {0xA11F, "\002\003\375\206"}, {0xA120, "\002\003\375\207"}, {0xA121, "\002\003\375\112"}, {0xA122, "\002\003\375\116"}, {0xA123, "\002\003\313"}, {0xA124, "\002\003\375\107"}, {0xA125, "\002\003\375\325"}, {0xA126, "\002\003\375\326"}, {0xA127, "\002\003\375\323"}, {0xA128, "\002\003\375\324"}, {0xA129, "\002\003\375\236"}, {0xA12A, "\002\003\375\245"}, {0xA12B, "\002\003\355\200"}, {0xA12C, "\002\003\375\234"}, {0xA12D, "\002\003\375\171"}, {0xA12E, "\002\003\356\127"}, {0xA12F, "\002\003\375\165"}, {0xA130, "\002\003\375\332"}, {0xA131, "\002\003\375\333"}, {0xA132, "\002\003\355\302"}, {0xA133, "\002\003\375\327"}, {0xA134, "\002\003\375\331"}, {0xA135, "\002\003\375\330"}, {0xA136, "\002\003\365\222"}, {0xA137, "\002\003\365\223"}, {0xA138, "\002\003\360\170"}, {0xA139, "\002\003\365\221"}, {0xA13A, "\002\003\365\220"}, {0xA13B, "\002\003\365\216"}, {0xA13C, "\002\003\365\217"}, {0xA13D, "\002\003\365\211"}, {0xA13E, "\002\003\365\212"}, {0xA13F, "\002\003\355\122"}, {0xA140, "\002\003\365\210"}, {0xA141, "\002\003\365\233"}, {0xA142, "\002\003\365\231"}, {0xA143, "\002\003\365\232"}, {0xA144, "\002\003\365\225"}, {0xA145, "\002\003\365\227"}, {0xA146, "\002\003\360\171"}, {0xA147, "\002\003\365\224"}, {0xA148, "\002\003\365\215"}, {0xA149, "\002\003\360\167"}, {0xA14A, "\002\003\365\214"}, {0xA14B, "\002\003\365\236"}, {0xA14C, "\002\003\365\237"}, {0xA14D, "\002\003\365\230"}, {0xA14E, "\002\003\365\234"}, {0xA14F, "\002\003\365\235"}, {0xA150, "\002\003\360\172"}, {0xA151, "\002\003\371\163"}, {0xA152, "\002\003\371\164"}, {0xA153, "\002\003\371\157"}, {0xA154, "\002\003\371\162"}, {0xA155, "\002\003\371\161"}, {0xA156, "\002\003\371\160"}, {0xA157, "\002\003\371\152"}, {0xA158, "\002\003\371\153"}, {0xA159, "\002\003\371\150"}, {0xA15A, "\002\003\371\151"}, {0xA15B, "\002\003\371\167"}, {0xA15C, "\002\003\371\170"}, {0xA15D, "\002\003\371\165"}, {0xA15E, "\002\003\371\166"}, {0xA15F, "\002\003\371\156"}, {0xA160, "\002\003\371\154"}, {0xA161, "\002\003\371\155"}, {0xA162, "\002\003\371\175"}, {0xA163, "\002\003\371\176"}, {0xA164, "\002\003\371\171"}, {0xA165, "\002\003\371\172"}, {0xA166, "\002\003\371\174"}, {0xA167, "\002\003\371\173"}, {0xA168, "\002\003\367\073"}, {0xA169, "\002\003\367\074"}, {0xA16A, "\002\003\367\065"}, {0xA16B, "\002\003\367\072"}, {0xA16C, "\002\003\367\070"}, {0xA16D, "\002\003\367\071"}, {0xA16E, "\002\003\367\066"}, {0xA16F, "\002\003\367\067"}, {0xA170, "\002\003\367\060"}, {0xA171, "\002\003\367\061"}, {0xA172, "\002\003\360\330"}, {0xA173, "\002\003\367\057"}, {0xA174, "\002\003\367\101"}, {0xA175, "\002\003\367\100"}, {0xA176, "\002\003\367\076"}, {0xA177, "\002\003\367\077"}, {0xA178, "\002\003\367\075"}, {0xA179, "\002\003\367\064"}, {0xA17A, "\002\003\367\062"}, {0xA17B, "\002\003\367\063"}, {0xA17C, "\002\003\367\102"}, {0xA17D, "\002\003\371\251"}, {0xA17E, "\002\003\371\252"}, {0xA17F, "\002\003\245"}, {0xA180, "\002\003\371\247"}, {0xA181, "\002\003\371\242"}, {0xA182, "\002\003\371\240"}, {0xA183, "\002\003\371\241"}, {0xA184, "\002\003\371\114"}, {0xA185, "\002\003\355\002"}, {0xA186, "\002\003\371\107"}, {0xA187, "\002\003\371\374"}, {0xA188, "\002\003\371\372"}, {0xA189, "\002\003\371\373"}, {0xA18A, "\002\003\371\330"}, {0xA18B, "\002\003\371\335"}, {0xA18C, "\002\003\355\115"}, {0xA18D, "\002\003\371\327"}, {0xA18E, "\002\003\371\203"}, {0xA18F, "\002\003\355\142"}, {0xA190, "\002\003\371\200"}, {0xA191, "\002\003\372\001"}, {0xA192, "\002\003\372\002"}, {0xA193, "\002\003\356\027"}, {0xA194, "\002\003\371\375"}, {0xA195, "\002\003\371\377"}, {0xA196, "\002\003\371\376"}, {0xA197, "\002\003\366\376"}, {0xA198, "\002\003\366\377"}, {0xA199, "\002\003\366\371"}, {0xA19A, "\002\003\366\375"}, {0xA19B, "\002\003\366\374"}, {0xA19C, "\002\003\366\372"}, {0xA19D, "\002\003\366\373"}, {0xA19E, "\002\003\366\364"}, {0xA19F, "\002\003\366\365"}, {0xA1A0, "\002\003\366\362"}, {0xA1A1, "\002\003\366\363"}, {0xA1A2, "\002\003\367\007"}, {0xA1A3, "\002\003\367\005"}, {0xA1A4, "\002\003\367\006"}, {0xA1A5, "\002\003\367\003"}, {0xA1A6, "\002\003\367\001"}, {0xA1A7, "\002\003\367\002"}, {0xA1A8, "\002\003\366\370"}, {0xA1A9, "\002\003\366\366"}, {0xA1AA, "\002\003\366\367"}, {0xA1AB, "\002\003\367\013"}, {0xA1AC, "\002\003\367\014"}, {0xA1AD, "\002\003\367\004"}, {0xA1AE, "\002\003\367\010"}, {0xA1AF, "\002\003\367\012"}, {0xA1B0, "\002\003\367\011"}, {0xA1B1, "\002\003\367\021"}, {0xA1B2, "\002\003\367\022"}, {0xA1B3, "\002\003\367\015"}, {0xA1B4, "\002\003\367\016"}, {0xA1B5, "\002\003\367\020"}, {0xA1B6, "\002\003\367\017"}, {0xA1B7, "\002\003\370\200"}, {0xA1B8, "\002\003\370\201"}, {0xA1B9, "\002\003\356\101"}, {0xA1BA, "\002\003\370\176"}, {0xA1BB, "\002\003\370\171"}, {0xA1BC, "\002\003\370\172"}, {0xA1BD, "\002\003\361\033"}, {0xA1BE, "\002\003\370\170"}, {0xA1BF, "\002\003\370\140"}, {0xA1C0, "\002\003\370\143"}, {0xA1C1, "\002\003\033"}, {0xA1C2, "\002\003\370\137"}, {0xA1C3, "\002\003\370\223"}, {0xA1C4, "\002\003\370\224"}, {0xA1C5, "\002\003\370\221"}, {0xA1C6, "\002\003\370\222"}, {0xA1C7, "\002\003\370\212"}, {0xA1C8, "\002\003\370\214"}, {0xA1C9, "\002\003\355\172"}, {0xA1CA, "\002\003\370\210"}, {0xA1CB, "\002\003\370\154"}, {0xA1CC, "\002\003\050"}, {0xA1CD, "\002\003\370\152"}, {0xA1CE, "\002\003\370\230"}, {0xA1CF, "\002\003\370\231"}, {0xA1D0, "\002\003\370\216"}, {0xA1D1, "\002\003\370\225"}, {0xA1D2, "\002\003\370\227"}, {0xA1D3, "\002\003\370\226"}, {0xA1D4, "\002\003\370\237"}, {0xA1D5, "\002\003\370\240"}, {0xA1D6, "\002\003\370\234"}, {0xA1D7, "\002\003\370\235"}, {0xA1D8, "\002\003\370\236"}, {0xA1D9, "\002\003\361\051"}, {0xA1DA, "\002\003\366\234"}, {0xA1DB, "\002\003\366\235"}, {0xA1DC, "\002\003\356\206"}, {0xA1DD, "\002\003\366\232"}, {0xA1DE, "\002\003\366\225"}, {0xA1DF, "\002\003\366\226"}, {0xA1E0, "\002\003\366\223"}, {0xA1E1, "\002\003\366\224"}, {0xA1E2, "\002\003\366\147"}, {0xA1E3, "\002\003\366\150"}, {0xA1E4, "\002\003\355\021"}, {0xA1E5, "\002\003\366\144"}, {0xA1E6, "\002\003\366\261"}, {0xA1E7, "\002\003\366\262"}, {0xA1E8, "\002\003\366\257"}, {0xA1E9, "\002\003\366\260"}, {0xA1EA, "\002\003\360\303"}, {0xA1EB, "\002\003\366\244"}, {0xA1EC, "\002\003\356\073"}, {0xA1ED, "\002\003\366\241"}, {0xA1EE, "\002\003\366\161"}, {0xA1EF, "\002\003\366\162"}, {0xA1F0, "\002\003\356\205"}, {0xA1F1, "\002\003\360\267"}, {0xA1F2, "\002\003\366\270"}, {0xA1F3, "\002\003\366\271"}, {0xA1F4, "\002\003\357\162"}, {0xA1F5, "\002\003\366\263"}, {0xA1F6, "\002\003\366\267"}, {0xA1F7, "\002\003\366\264"}, {0xA1F8, "\002\003\361\004"}, {0xA1F9, "\002\003\370\027"}, {0xA1FA, "\002\003\355\334"}, {0xA1FB, "\002\003\361\003"}, {0xA1FC, "\002\003\370\021"}, {0xA1FD, "\002\003\370\017"}, {0xA1FE, "\002\003\370\020"}, {0xA1FF, "\002\003\367\373"}, {0xA200, "\002\003\367\376"}, {0xA201, "\002\003\241"}, {0xA202, "\002\003\367\366"}, {0xA203, "\002\003\370\060"}, {0xA204, "\002\003\370\056"}, {0xA205, "\002\003\370\057"}, {0xA206, "\002\003\370\046"}, {0xA207, "\002\003\370\051"}, {0xA208, "\002\003\355\171"}, {0xA209, "\002\003\370\044"}, {0xA20A, "\002\003\370\005"}, {0xA20B, "\002\003\370\006"}, {0xA20C, "\002\003\355\333"}, {0xA20D, "\002\003\370\004"}, {0xA20E, "\002\003\370\066"}, {0xA20F, "\002\003\370\067"}, {0xA210, "\002\003\356\023"}, {0xA211, "\002\003\370\061"}, {0xA212, "\002\003\370\064"}, {0xA213, "\002\003\370\062"}, {0xA214, "\002\003\366\174"}, {0xA215, "\002\003\366\175"}, {0xA216, "\002\003\360\273"}, {0xA217, "\002\003\366\173"}, {0xA218, "\002\003\366\171"}, {0xA219, "\002\003\366\172"}, {0xA21A, "\002\003\366\164"}, {0xA21B, "\002\003\366\165"}, {0xA21C, "\002\003\360\271"}, {0xA21D, "\002\003\366\163"}, {0xA21E, "\002\003\366\203"}, {0xA21F, "\002\003\366\204"}, {0xA220, "\002\003\360\276"}, {0xA221, "\002\003\366\202"}, {0xA222, "\002\003\366\176"}, {0xA223, "\002\003\366\200"}, {0xA224, "\002\003\360\274"}, {0xA225, "\002\003\360\275"}, {0xA226, "\002\003\366\167"}, {0xA227, "\002\003\366\170"}, {0xA228, "\002\003\360\272"}, {0xA229, "\002\003\366\166"}, {0xA22A, "\002\003\366\210"}, {0xA22B, "\002\003\366\211"}, {0xA22C, "\002\003\366\201"}, {0xA22D, "\002\003\366\205"}, {0xA22E, "\002\003\366\207"}, {0xA22F, "\002\003\366\206"}, {0xA230, "\002\003\370\341"}, {0xA231, "\002\003\370\340"}, {0xA232, "\002\003\370\333"}, {0xA233, "\002\003\370\334"}, {0xA234, "\002\003\370\331"}, {0xA235, "\002\003\370\332"}, {0xA236, "\002\003\370\350"}, {0xA237, "\002\003\370\346"}, {0xA238, "\002\003\370\347"}, {0xA239, "\002\003\370\343"}, {0xA23A, "\002\003\370\344"}, {0xA23B, "\002\003\355\211"}, {0xA23C, "\002\003\370\342"}, {0xA23D, "\002\003\370\337"}, {0xA23E, "\002\003\370\335"}, {0xA23F, "\002\003\370\336"}, {0xA240, "\002\003\370\354"}, {0xA241, "\002\003\370\355"}, {0xA242, "\002\003\370\345"}, {0xA243, "\002\003\370\351"}, {0xA244, "\002\003\370\353"}, {0xA245, "\002\003\370\352"}, {0xA246, "\002\003\360\340"}, {0xA247, "\002\003\367\152"}, {0xA248, "\002\003\367\144"}, {0xA249, "\002\003\367\151"}, {0xA24A, "\002\003\367\147"}, {0xA24B, "\002\003\367\150"}, {0xA24C, "\002\003\367\145"}, {0xA24D, "\002\003\367\146"}, {0xA24E, "\002\003\367\137"}, {0xA24F, "\002\003\367\140"}, {0xA250, "\002\003\367\135"}, {0xA251, "\002\003\367\136"}, {0xA252, "\002\003\367\156"}, {0xA253, "\002\003\367\157"}, {0xA254, "\002\003\360\343"}, {0xA255, "\002\003\367\155"}, {0xA256, "\002\003\360\342"}, {0xA257, "\002\003\367\154"}, {0xA258, "\002\003\367\153"}, {0xA259, "\002\003\360\341"}, {0xA25A, "\002\003\367\143"}, {0xA25B, "\002\003\367\141"}, {0xA25C, "\002\003\367\142"}, {0xA25D, "\002\003\371\221"}, {0xA25E, "\002\003\371\217"}, {0xA25F, "\002\003\371\220"}, {0xA260, "\002\003\371\207"}, {0xA261, "\002\003\371\210"}, {0xA262, "\002\003\355\070"}, {0xA263, "\002\003\371\206"}, {0xA264, "\002\003\371\227"}, {0xA265, "\002\003\371\230"}, {0xA266, "\002\003\371\226"}, {0xA267, "\002\003\371\223"}, {0xA268, "\002\003\371\225"}, {0xA269, "\002\003\356\227"}, {0xA26A, "\002\003\371\222"}, {0xA26B, "\002\003\371\214"}, {0xA26C, "\002\003\371\212"}, {0xA26D, "\002\003\371\213"}, {0xA26E, "\002\003\366\353"}, {0xA26F, "\002\003\366\351"}, {0xA270, "\002\003\366\350"}, {0xA271, "\002\003\366\323"}, {0xA272, "\002\003\366\325"}, {0xA273, "\002\003\316"}, {0xA274, "\002\003\366\321"}, {0xA275, "\002\003\367\127"}, {0xA276, "\002\003\367\130"}, {0xA277, "\002\003\367\125"}, {0xA278, "\002\003\367\126"}, {0xA279, "\002\003\367\111"}, {0xA27A, "\002\003\367\120"}, {0xA27B, "\002\003\355\111"}, {0xA27C, "\002\003\367\105"}, {0xA27D, "\002\003\366\333"}, {0xA27E, "\002\003\356\074"}, {0xA27F, "\002\003\366\330"}, {0xA280, "\002\003\376\100"}, {0xA281, "\002\003\376\102"}, {0xA282, "\002\003\355\052"}, {0xA283, "\002\003\376\077"}, {0xA284, "\002\003\376\115"}, {0xA285, "\002\003\376\113"}, {0xA286, "\002\003\376\114"}, {0xA287, "\002\003\376\110"}, {0xA288, "\002\003\355\152"}, {0xA289, "\002\003\376\107"}, {0xA28A, "\002\003\376\106"}, {0xA28B, "\002\003\356\272"}, {0xA28C, "\002\003\376\105"}, {0xA28D, "\002\003\376\307"}, {0xA28E, "\002\003\376\310"}, {0xA28F, "\002\003\356\277"}, {0xA290, "\002\003\376\306"}, {0xA291, "\002\003\376\303"}, {0xA292, "\002\003\376\301"}, {0xA293, "\002\003\376\302"}, {0xA294, "\002\003\376\242"}, {0xA295, "\002\003\376\244"}, {0xA296, "\002\003\355\103"}, {0xA297, "\002\003\376\240"}, {0xA298, "\002\003\376\316"}, {0xA299, "\002\003\376\314"}, {0xA29A, "\002\003\376\315"}, {0xA29B, "\002\003\362\147"}, {0xA29C, "\002\003\376\312"}, {0xA29D, "\002\003\356\137"}, {0xA29E, "\002\003\376\311"}, {0xA29F, "\002\003\376\246"}, {0xA2A0, "\002\003\356\276"}, {0xA2A1, "\002\003\376\245"}, {0xA2A2, "\002\003\376\321"}, {0xA2A3, "\002\003\376\322"}, {0xA2A4, "\002\003\360\024"}, {0xA2A5, "\002\003\376\317"}, {0xA2A6, "\002\003\376\320"}, {0xA2A7, "\002\003\362\151"}, {0xA2A8, "\002\003\376\330"}, {0xA2A9, "\002\003\376\331"}, {0xA2AA, "\002\003\376\324"}, {0xA2AB, "\002\003\376\325"}, {0xA2AC, "\002\003\376\327"}, {0xA2AD, "\002\003\376\326"}, {0xA2AE, "\002\003\363\357"}, {0xA2AF, "\002\003\363\362"}, {0xA2B0, "\002\003\363\350"}, {0xA2B1, "\002\003\360\135"}, {0xA2B2, "\002\003\363\354"}, {0xA2B3, "\002\003\363\355"}, {0xA2B4, "\002\003\363\352"}, {0xA2B5, "\002\003\363\353"}, {0xA2B6, "\002\003\363\242"}, {0xA2B7, "\002\003\363\244"}, {0xA2B8, "\002\003\357\075"}, {0xA2B9, "\002\003\363\236"}, {0xA2BA, "\002\003\365\134"}, {0xA2BB, "\002\003\365\133"}, {0xA2BC, "\002\003\360\151"}, {0xA2BD, "\002\003\365\103"}, {0xA2BE, "\002\003\365\120"}, {0xA2BF, "\002\003\360\137"}, {0xA2C0, "\002\003\365\072"}, {0xA2C1, "\002\003\363\257"}, {0xA2C2, "\002\003\360\113"}, {0xA2C3, "\002\003\363\255"}, {0xA2C4, "\002\003\365\141"}, {0xA2C5, "\002\003\365\142"}, {0xA2C6, "\002\003\365\127"}, {0xA2C7, "\002\003\365\135"}, {0xA2C8, "\002\003\365\140"}, {0xA2C9, "\002\003\365\136"}, {0xA2CA, "\002\003\360\154"}, {0xA2CB, "\002\003\365\147"}, {0xA2CC, "\002\003\360\152"}, {0xA2CD, "\002\003\360\153"}, {0xA2CE, "\002\003\365\146"}, {0xA2CF, "\002\003\365\145"}, {0xA2D0, "\002\003\376\345"}, {0xA2D1, "\002\003\376\346"}, {0xA2D2, "\002\003\376\341"}, {0xA2D3, "\002\003\362\153"}, {0xA2D4, "\002\003\362\152"}, {0xA2D5, "\002\003\376\344"}, {0xA2D6, "\002\003\376\342"}, {0xA2D7, "\002\003\376\343"}, {0xA2D8, "\002\003\376\334"}, {0xA2D9, "\002\003\376\335"}, {0xA2DA, "\002\003\376\332"}, {0xA2DB, "\002\003\376\333"}, {0xA2DC, "\002\003\376\351"}, {0xA2DD, "\002\003\376\347"}, {0xA2DE, "\002\003\376\350"}, {0xA2DF, "\002\003\376\340"}, {0xA2E0, "\002\003\376\336"}, {0xA2E1, "\002\003\376\337"}, {0xA2E2, "\002\003\376\356"}, {0xA2E3, "\002\003\376\352"}, {0xA2E4, "\002\003\376\353"}, {0xA2E5, "\002\003\376\355"}, {0xA2E6, "\002\003\376\354"}, {0xA2E7, "\002\003\376\363"}, {0xA2E8, "\002\003\376\364"}, {0xA2E9, "\002\003\376\357"}, {0xA2EA, "\002\003\376\360"}, {0xA2EB, "\002\003\376\362"}, {0xA2EC, "\002\003\376\361"}, {0xA2ED, "\002\003\372\043"}, {0xA2EE, "\002\003\372\044"}, {0xA2EF, "\002\003\372\036"}, {0xA2F0, "\002\003\372\042"}, {0xA2F1, "\002\003\372\041"}, {0xA2F2, "\002\003\372\037"}, {0xA2F3, "\002\003\372\040"}, {0xA2F4, "\002\003\372\032"}, {0xA2F5, "\002\003\372\033"}, {0xA2F6, "\002\003\372\030"}, {0xA2F7, "\002\003\372\031"}, {0xA2F8, "\002\003\372\051"}, {0xA2F9, "\002\003\372\050"}, {0xA2FA, "\002\003\372\046"}, {0xA2FB, "\002\003\372\045"}, {0xA2FC, "\002\003\372\035"}, {0xA2FD, "\002\003\372\034"}, {0xA2FE, "\002\003\372\054"}, {0xA2FF, "\002\003\372\047"}, {0xA300, "\002\003\372\052"}, {0xA301, "\002\003\372\053"}, {0xA302, "\002\003\361\134"}, {0xA303, "\002\003\372\061"}, {0xA304, "\002\003\372\062"}, {0xA305, "\002\003\372\055"}, {0xA306, "\002\003\372\056"}, {0xA307, "\002\003\372\060"}, {0xA308, "\002\003\372\057"}, {0xA309, "\002\003\374\326"}, {0xA30A, "\002\003\256"}, {0xA30B, "\002\003\355\277"}, {0xA30C, "\002\003\374\324"}, {0xA30D, "\002\003\374\317"}, {0xA30E, "\002\003\374\315"}, {0xA30F, "\002\003\374\316"}, {0xA310, "\002\003\374\231"}, {0xA311, "\002\003\374\233"}, {0xA312, "\002\003\355\006"}, {0xA313, "\002\003\374\227"}, {0xA314, "\002\003\375\042"}, {0xA315, "\002\003\375\040"}, {0xA316, "\002\003\375\041"}, {0xA317, "\002\003\374\363"}, {0xA318, "\002\003\374\370"}, {0xA319, "\002\003\355\072"}, {0xA31A, "\002\003\374\361"}, {0xA31B, "\002\003\374\262"}, {0xA31C, "\002\003\356\044"}, {0xA31D, "\002\003\374\255"}, {0xA31E, "\002\003\375\052"}, {0xA31F, "\002\003\375\053"}, {0xA320, "\002\003\356\255"}, {0xA321, "\002\003\375\043"}, {0xA322, "\002\003\375\050"}, {0xA323, "\002\003\355\150"}, {0xA324, "\002\003\375\065"}, {0xA325, "\002\003\375\066"}, {0xA326, "\002\003\375\056"}, {0xA327, "\002\003\375\061"}, {0xA328, "\002\003\375\063"}, {0xA329, "\002\003\375\062"}, {0xA32A, "\002\003\375\011"}, {0xA32B, "\002\003\375\012"}, {0xA32C, "\002\003\361\343"}, {0xA32D, "\002\003\375\010"}, {0xA32E, "\002\003\375\007"}, {0xA32F, "\002\003\375\005"}, {0xA330, "\002\003\375\006"}, {0xA331, "\002\003\374\377"}, {0xA332, "\002\003\375\001"}, {0xA333, "\002\003\356\254"}, {0xA334, "\002\003\374\376"}, {0xA335, "\002\003\375\015"}, {0xA336, "\002\003\375\016"}, {0xA337, "\002\003\375\013"}, {0xA338, "\002\003\375\014"}, {0xA339, "\002\003\375\004"}, {0xA33A, "\002\003\375\002"}, {0xA33B, "\002\003\375\003"}, {0xA33C, "\002\003\375\021"}, {0xA33D, "\002\003\375\022"}, {0xA33E, "\002\003\375\017"}, {0xA33F, "\002\003\375\020"}, {0xA340, "\002\003\375\027"}, {0xA341, "\002\003\375\030"}, {0xA342, "\002\003\375\023"}, {0xA343, "\002\003\375\024"}, {0xA344, "\002\003\375\026"}, {0xA345, "\002\003\375\025"}, {0xA346, "\002\003\376\250"}, {0xA347, "\002\003\376\251"}, {0xA348, "\002\003\355\367"}, {0xA349, "\002\003\376\247"}, {0xA34A, "\002\003\376\265"}, {0xA34B, "\002\003\376\263"}, {0xA34C, "\002\003\376\264"}, {0xA34D, "\002\003\376\260"}, {0xA34E, "\002\003\376\261"}, {0xA34F, "\002\003\376\256"}, {0xA350, "\002\003\376\257"}, {0xA351, "\002\003\376\254"}, {0xA352, "\002\003\376\255"}, {0xA353, "\002\003\376\252"}, {0xA354, "\002\003\376\253"}, {0xA355, "\002\003\376\271"}, {0xA356, "\002\003\376\272"}, {0xA357, "\002\003\376\262"}, {0xA358, "\002\003\376\266"}, {0xA359, "\002\003\376\270"}, {0xA35A, "\002\003\376\267"}, {0xA35B, "\002\003\376\277"}, {0xA35C, "\002\003\376\300"}, {0xA35D, "\002\003\376\273"}, {0xA35E, "\002\003\376\274"}, {0xA35F, "\002\003\376\276"}, {0xA360, "\002\003\376\275"}, {0xA361, "\002\003\363\270"}, {0xA362, "\002\003\363\274"}, {0xA363, "\002\003\355\034"}, {0xA364, "\002\003\363\265"}, {0xA365, "\002\003\363\323"}, {0xA366, "\002\003\363\324"}, {0xA367, "\002\003\363\321"}, {0xA368, "\002\003\363\322"}, {0xA369, "\002\003\363\315"}, {0xA36A, "\002\003\363\316"}, {0xA36B, "\002\003\356\056"}, {0xA36C, "\002\003\363\314"}, {0xA36D, "\002\003\363\304"}, {0xA36E, "\002\003\363\312"}, {0xA36F, "\002\003\356\153"}, {0xA370, "\002\003\363\303"}, {0xA371, "\002\003\363\330"}, {0xA372, "\002\003\363\320"}, {0xA373, "\002\003\363\325"}, {0xA374, "\002\003\363\327"}, {0xA375, "\002\003\363\326"}, {0xA376, "\002\003\363\336"}, {0xA377, "\002\003\363\337"}, {0xA378, "\002\003\363\332"}, {0xA379, "\002\003\363\333"}, {0xA37A, "\002\003\363\335"}, {0xA37B, "\002\003\363\334"}, {0xA37C, "\002\003\374\120"}, {0xA37D, "\002\003\355\214"}, {0xA37E, "\002\003\374\133"}, {0xA37F, "\002\003\374\132"}, {0xA380, "\002\003\374\127"}, {0xA381, "\002\003\374\130"}, {0xA382, "\002\003\374\125"}, {0xA383, "\002\003\374\126"}, {0xA384, "\002\003\374\123"}, {0xA385, "\002\003\374\124"}, {0xA386, "\002\003\374\121"}, {0xA387, "\002\003\374\122"}, {0xA388, "\002\003\374\137"}, {0xA389, "\002\003\374\140"}, {0xA38A, "\002\003\374\131"}, {0xA38B, "\002\003\374\134"}, {0xA38C, "\002\003\374\136"}, {0xA38D, "\002\003\374\135"}, {0xA38E, "\002\003\374\145"}, {0xA38F, "\002\003\374\146"}, {0xA390, "\002\003\374\141"}, {0xA391, "\002\003\374\142"}, {0xA392, "\002\003\374\144"}, {0xA393, "\002\003\374\143"}, {0xA394, "\002\003\371\341"}, {0xA395, "\002\003\371\342"}, {0xA396, "\002\003\371\337"}, {0xA397, "\002\003\371\340"}, {0xA398, "\002\003\371\351"}, {0xA399, "\002\003\371\347"}, {0xA39A, "\002\003\371\350"}, {0xA39B, "\002\003\371\345"}, {0xA39C, "\002\003\371\346"}, {0xA39D, "\002\003\371\343"}, {0xA39E, "\002\003\371\344"}, {0xA39F, "\002\003\371\356"}, {0xA3A0, "\002\003\371\357"}, {0xA3A1, "\002\003\371\352"}, {0xA3A2, "\002\003\371\353"}, {0xA3A3, "\002\003\371\355"}, {0xA3A4, "\002\003\371\354"}, {0xA3A5, "\002\003\371\364"}, {0xA3A6, "\002\003\371\365"}, {0xA3A7, "\002\003\371\360"}, {0xA3A8, "\002\003\371\361"}, {0xA3A9, "\002\003\371\363"}, {0xA3AA, "\002\003\371\362"}, {0xA3AB, "\002\003\361\316"}, {0xA3AC, "\002\003\374\267"}, {0xA3AD, "\002\003\357\327"}, {0xA3AE, "\002\003\374\266"}, {0xA3AF, "\002\003\374\303"}, {0xA3B0, "\002\003\374\301"}, {0xA3B1, "\002\003\374\302"}, {0xA3B2, "\002\003\374\276"}, {0xA3B3, "\002\003\374\277"}, {0xA3B4, "\002\003\374\274"}, {0xA3B5, "\002\003\361\317"}, {0xA3B6, "\002\003\374\272"}, {0xA3B7, "\002\003\374\273"}, {0xA3B8, "\002\003\374\270"}, {0xA3B9, "\002\003\374\271"}, {0xA3BA, "\002\003\374\306"}, {0xA3BB, "\002\003\374\307"}, {0xA3BC, "\002\003\374\300"}, {0xA3BD, "\002\003\374\304"}, {0xA3BE, "\002\003\374\305"}, {0xA3BF, "\002\003\361\320"}, {0xA3C0, "\002\003\374\313"}, {0xA3C1, "\002\003\374\314"}, {0xA3C2, "\002\003\361\321"}, {0xA3C3, "\002\003\374\310"}, {0xA3C4, "\002\003\374\312"}, {0xA3C5, "\002\003\374\311"}, {0xA3C6, "\002\003\361\252"}, {0xA3C7, "\002\003\374\047"}, {0xA3C8, "\002\003\324"}, {0xA3C9, "\002\003\374\043"}, {0xA3CA, "\002\003\374\153"}, {0xA3CB, "\002\003\374\151"}, {0xA3CC, "\002\003\374\152"}, {0xA3CD, "\002\003\374\111"}, {0xA3CE, "\002\003\374\117"}, {0xA3CF, "\002\003\355\176"}, {0xA3D0, "\002\003\374\110"}, {0xA3D1, "\002\003\374\064"}, {0xA3D2, "\002\003\356\037"}, {0xA3D3, "\002\003\374\061"}, {0xA3D4, "\002\003\374\160"}, {0xA3D5, "\002\003\374\161"}, {0xA3D6, "\002\003\356\041"}, {0xA3D7, "\002\003\374\154"}, {0xA3D8, "\002\003\374\157"}, {0xA3D9, "\002\003\374\156"}, {0xA3DA, "\002\003\374\167"}, {0xA3DB, "\002\003\374\170"}, {0xA3DC, "\002\003\374\163"}, {0xA3DD, "\002\003\374\164"}, {0xA3DE, "\002\003\374\166"}, {0xA3DF, "\002\003\374\165"}, {0xA3E0, "\002\003\367\273"}, {0xA3E1, "\002\003\367\274"}, {0xA3E2, "\002\003\360\364"}, {0xA3E3, "\002\003\367\272"}, {0xA3E4, "\002\003\367\270"}, {0xA3E5, "\002\003\367\271"}, {0xA3E6, "\002\003\367\266"}, {0xA3E7, "\002\003\367\267"}, {0xA3E8, "\002\003\367\336"}, {0xA3E9, "\002\003\367\337"}, {0xA3EA, "\002\003\367\334"}, {0xA3EB, "\002\003\367\335"}, {0xA3EC, "\002\003\367\325"}, {0xA3ED, "\002\003\367\327"}, {0xA3EE, "\002\003\357\213"}, {0xA3EF, "\002\003\367\324"}, {0xA3F0, "\002\003\367\345"}, {0xA3F1, "\002\003\367\346"}, {0xA3F2, "\002\003\367\330"}, {0xA3F3, "\002\003\367\340"}, {0xA3F4, "\002\003\367\343"}, {0xA3F5, "\002\003\367\342"}, {0xA3F6, "\002\003\367\354"}, {0xA3F7, "\002\003\367\355"}, {0xA3F8, "\002\003\367\350"}, {0xA3F9, "\002\003\367\351"}, {0xA3FA, "\002\003\367\353"}, {0xA3FB, "\002\003\367\352"}, {0xA3FC, "\002\003\373\362"}, {0xA3FD, "\002\003\373\363"}, {0xA3FE, "\002\003\357\303"}, {0xA3FF, "\002\003\373\361"}, {0xA400, "\002\003\373\357"}, {0xA401, "\002\003\373\360"}, {0xA402, "\002\003\373\355"}, {0xA403, "\002\003\373\356"}, {0xA404, "\002\003\374\005"}, {0xA405, "\002\003\374\006"}, {0xA406, "\002\003\374\003"}, {0xA407, "\002\003\374\004"}, {0xA408, "\002\003\361\245"}, {0xA409, "\002\003\373\371"}, {0xA40A, "\002\003\357\304"}, {0xA40B, "\002\003\373\365"}, {0xA40C, "\002\003\374\012"}, {0xA40D, "\002\003\374\013"}, {0xA40E, "\002\003\373\373"}, {0xA40F, "\002\003\374\007"}, {0xA410, "\002\003\374\011"}, {0xA411, "\002\003\374\010"}, {0xA412, "\002\003\374\025"}, {0xA413, "\002\003\374\026"}, {0xA414, "\002\003\374\021"}, {0xA415, "\002\003\374\022"}, {0xA416, "\002\003\374\024"}, {0xA417, "\002\003\374\023"}, {0xA418, "\002\003\367\303"}, {0xA419, "\002\003\367\304"}, {0xA41A, "\002\003\367\275"}, {0xA41B, "\002\003\367\302"}, {0xA41C, "\002\003\367\300"}, {0xA41D, "\002\003\367\301"}, {0xA41E, "\002\003\367\276"}, {0xA41F, "\002\003\367\277"}, {0xA420, "\002\003\367\314"}, {0xA421, "\002\003\367\312"}, {0xA422, "\002\003\367\313"}, {0xA423, "\002\003\367\307"}, {0xA424, "\002\003\367\310"}, {0xA425, "\002\003\367\305"}, {0xA426, "\002\003\367\306"}, {0xA427, "\002\003\360\365"}, {0xA428, "\002\003\367\320"}, {0xA429, "\002\003\367\311"}, {0xA42A, "\002\003\367\315"}, {0xA42B, "\002\003\367\317"}, {0xA42C, "\002\003\367\316"}, {0xA42D, "\002\003\367\322"}, {0xA42E, "\002\003\367\323"}, {0xA42F, "\002\003\360\366"}, {0xA430, "\002\003\367\321"}, {0xA431, "\002\003\371\263"}, {0xA432, "\002\003\371\264"}, {0xA433, "\002\003\371\255"}, {0xA434, "\002\003\371\262"}, {0xA435, "\002\003\371\260"}, {0xA436, "\002\003\371\261"}, {0xA437, "\002\003\371\256"}, {0xA438, "\002\003\371\257"}, {0xA439, "\002\003\371\273"}, {0xA43A, "\002\003\371\272"}, {0xA43B, "\002\003\371\267"}, {0xA43C, "\002\003\371\270"}, {0xA43D, "\002\003\371\265"}, {0xA43E, "\002\003\371\266"}, {0xA43F, "\002\003\371\277"}, {0xA440, "\002\003\371\271"}, {0xA441, "\002\003\371\274"}, {0xA442, "\002\003\371\276"}, {0xA443, "\002\003\371\275"}, {0xA444, "\002\003\371\304"}, {0xA445, "\002\003\371\305"}, {0xA446, "\002\003\371\300"}, {0xA447, "\002\003\371\301"}, {0xA448, "\002\003\371\303"}, {0xA449, "\002\003\371\302"}, {0xA44A, "\002\003\372\014"}, {0xA44B, "\002\003\372\015"}, {0xA44C, "\002\003\372\007"}, {0xA44D, "\002\003\361\132"}, {0xA44E, "\002\003\372\012"}, {0xA44F, "\002\003\372\013"}, {0xA450, "\002\003\372\010"}, {0xA451, "\002\003\372\011"}, {0xA452, "\002\003\372\024"}, {0xA453, "\002\003\372\022"}, {0xA454, "\002\003\372\023"}, {0xA455, "\002\003\372\017"}, {0xA456, "\002\003\372\020"}, {0xA457, "\002\003\372\016"}, {0xA458, "\002\003\361\133"}, {0xA459, "\002\003\372\026"}, {0xA45A, "\002\003\372\027"}, {0xA45B, "\002\003\372\021"}, {0xA45C, "\002\003\372\025"}, {0xA45D, "\002\003\376\127"}, {0xA45E, "\002\003\376\130"}, {0xA45F, "\002\003\357\057"}, {0xA460, "\002\003\376\126"}, {0xA461, "\002\003\376\124"}, {0xA462, "\002\003\376\125"}, {0xA463, "\002\003\376\122"}, {0xA464, "\002\003\376\123"}, {0xA465, "\002\003\376\136"}, {0xA466, "\002\003\376\135"}, {0xA467, "\002\003\376\132"}, {0xA468, "\002\003\376\134"}, {0xA469, "\002\003\362\112"}, {0xA46A, "\002\003\376\131"}, {0xA46B, "\002\003\376\150"}, {0xA46C, "\002\003\376\151"}, {0xA46D, "\002\003\376\144"}, {0xA46E, "\002\003\376\145"}, {0xA46F, "\002\003\376\147"}, {0xA470, "\002\003\376\146"}, {0xA471, "\002\003\362\121"}, {0xA472, "\002\003\376\172"}, {0xA473, "\002\003\003"}, {0xA474, "\002\003\376\171"}, {0xA475, "\002\003\376\166"}, {0xA476, "\002\003\376\167"}, {0xA477, "\002\003\376\164"}, {0xA478, "\002\003\376\165"}, {0xA479, "\002\003\376\213"}, {0xA47A, "\002\003\376\214"}, {0xA47B, "\002\003\376\211"}, {0xA47C, "\002\003\376\212"}, {0xA47D, "\002\003\362\123"}, {0xA47E, "\002\003\376\203"}, {0xA47F, "\002\003\355\042"}, {0xA480, "\002\003\376\176"}, {0xA481, "\002\003\376\220"}, {0xA482, "\002\003\376\221"}, {0xA483, "\002\003\355\366"}, {0xA484, "\002\003\376\215"}, {0xA485, "\002\003\376\217"}, {0xA486, "\002\003\376\216"}, {0xA487, "\002\003\376\226"}, {0xA488, "\002\003\376\227"}, {0xA489, "\002\003\376\222"}, {0xA48A, "\002\003\376\223"}, {0xA48B, "\002\003\376\225"}, {0xA48C, "\002\003\376\224"}, {0xA490, "\017\003\361\245"}, {0xA491, "\017\003\356\101"}, {0xA492, "\017\003\361\004"}, {0xA493, "\017\003\361\132"}, {0xA494, "\017\003\360\153"}, {0xA495, "\017\003\361\343"}, {0xA496, "\017\003\360\275"}, {0xA497, "\017\003\360\267"}, {0xA498, "\017\003\355\232"}, {0xA499, "\017\003\360\340"}, {0xA49A, "\017\003\361\051"}, {0xA49B, "\017\003\360\073"}, {0xA49C, "\017\003\361\066"}, {0xA49D, "\017\003\355\042"}, {0xA49E, "\017\003\361\234"}, {0xA49F, "\017\003\360\343"}, {0xA4A0, "\017\003\360\342"}, {0xA4A1, "\017\003\355\021"}, {0xA4A2, "\017\003\362\153"}, {0xA4A3, "\017\003\360\154"}, {0xA4A4, "\017\003\360\172"}, {0xA4A5, "\017\003\360\104"}, {0xA4A6, "\017\003\360\276"}, {0xA4A7, "\017\003\361\133"}, {0xA4A8, "\017\003\355\302"}, {0xA4A9, "\017\003\361\144"}, {0xA4AA, "\017\003\360\365"}, {0xA4AB, "\017\003\362\147"}, {0xA4AC, "\017\003\361\235"}, {0xA4AD, "\017\003\360\327"}, {0xA4AE, "\017\003\362\121"}, {0xA4AF, "\017\003\362\103"}, {0xA4B0, "\017\003\361\321"}, {0xA4B1, "\017\003\362\066"}, {0xA4B2, "\017\003\355\103"}, {0xA4B3, "\017\003\357\213"}, {0xA4B4, "\017\003\361\134"}, {0xA4B5, "\017\003\360\366"}, {0xA4B6, "\017\003\360\303"}, {0xA4B7, "\017\003\356\144"}, {0xA4B8, "\017\003\355\152"}, {0xA4B9, "\017\003\213"}, {0xA4BA, "\017\003\361\320"}, {0xA4BB, "\017\003\361\033"}, {0xA4BC, "\017\003\360\152"}, {0xA4BD, "\017\003\360\151"}, {0xA4BE, "\017\003\360\135"}, {0xA4BF, "\017\003\360\341"}, {0xA4C0, "\017\003\361\316"}, {0xA4C1, "\017\003\362\151"}, {0xA4C2, "\017\003\361\317"}, {0xA4C3, "\017\003\356\153"}, {0xA4C4, "\017\003\362\152"}, {0xA4C5, "\017\003\361\113"}, {0xA4C6, "\017\003\355\333"}, {0xF900, "\016\007\025\363\363"}, {0xF901, "\016\007\025\363\364"}, {0xF902, "\016\007\025\363\365"}, {0xF903, "\016\007\025\363\366"}, {0xF904, "\016\007\025\363\367"}, {0xF905, "\016\007\025\363\370"}, {0xF906, "\016\007\025\363\371"}, {0xF907, "\016\007\025\363\372"}, {0xF908, "\016\007\025\363\373"}, {0xF909, "\016\007\025\363\374"}, {0xF90A, "\016\007\025\363\375"}, {0xF90B, "\016\007\025\363\376"}, {0xF90C, "\016\007\025\363\377"}, {0xF90D, "\016\007\025\364\001"}, {0xF90E, "\016\007\025\364\002"}, {0xF90F, "\016\007\025\364\003"}, {0xF910, "\016\007\025\364\004"}, {0xF911, "\016\007\025\364\005"}, {0xF912, "\016\007\025\364\006"}, {0xF913, "\016\007\025\364\007"}, {0xF914, "\016\007\025\364\010"}, {0xF915, "\016\007\025\364\011"}, {0xF916, "\016\007\025\364\012"}, {0xF917, "\016\007\025\364\013"}, {0xF918, "\016\007\025\364\014"}, {0xF919, "\016\007\025\364\015"}, {0xF91A, "\016\007\025\364\016"}, {0xF91B, "\016\007\025\364\017"}, {0xF91C, "\016\007\025\364\020"}, {0xF91D, "\016\007\025\364\021"}, {0xF91E, "\016\007\025\364\022"}, {0xF91F, "\016\007\025\364\023"}, {0xF920, "\016\007\025\364\024"}, {0xF921, "\016\007\025\364\025"}, {0xF922, "\016\007\025\364\026"}, {0xF923, "\016\007\025\364\027"}, {0xF924, "\016\007\025\364\030"}, {0xF925, "\016\007\025\364\031"}, {0xF926, "\016\007\025\364\032"}, {0xF927, "\016\007\025\364\033"}, {0xF928, "\016\007\025\364\034"}, {0xF929, "\016\007\025\364\035"}, {0xF92A, "\016\007\025\364\036"}, {0xF92B, "\016\007\025\364\037"}, {0xF92C, "\016\007\025\364\040"}, {0xF92D, "\016\007\025\364\041"}, {0xF92E, "\016\007\025\364\042"}, {0xF92F, "\016\007\025\364\043"}, {0xF930, "\016\007\025\364\044"}, {0xF931, "\016\007\025\364\045"}, {0xF932, "\016\007\025\364\046"}, {0xF933, "\016\007\025\364\047"}, {0xF934, "\016\007\025\364\050"}, {0xF935, "\016\007\025\364\051"}, {0xF936, "\016\007\025\364\052"}, {0xF937, "\016\007\025\364\053"}, {0xF938, "\016\007\025\364\054"}, {0xF939, "\016\007\025\364\055"}, {0xF93A, "\016\007\025\364\056"}, {0xF93B, "\016\007\025\364\057"}, {0xF93C, "\016\007\025\364\060"}, {0xF93D, "\016\007\025\364\061"}, {0xF93E, "\016\007\025\364\062"}, {0xF93F, "\016\007\025\364\063"}, {0xF940, "\016\007\025\364\064"}, {0xF941, "\016\007\025\364\065"}, {0xF942, "\016\007\025\364\066"}, {0xF943, "\016\007\025\364\067"}, {0xF944, "\016\007\025\364\070"}, {0xF945, "\016\007\025\364\071"}, {0xF946, "\016\007\025\364\072"}, {0xF947, "\016\007\025\364\073"}, {0xF948, "\016\007\025\364\074"}, {0xF949, "\016\007\025\364\075"}, {0xF94A, "\016\007\025\364\076"}, {0xF94B, "\016\007\025\364\077"}, {0xF94C, "\016\007\025\364\100"}, {0xF94D, "\016\007\025\364\101"}, {0xF94E, "\016\007\025\364\102"}, {0xF94F, "\016\007\025\364\103"}, {0xF950, "\016\007\025\364\104"}, {0xF951, "\016\007\025\364\105"}, {0xF952, "\016\007\025\364\106"}, {0xF953, "\016\007\025\364\107"}, {0xF954, "\016\007\025\364\110"}, {0xF955, "\016\007\025\364\111"}, {0xF956, "\016\007\025\364\112"}, {0xF957, "\016\007\025\364\113"}, {0xF958, "\016\007\025\364\114"}, {0xF959, "\016\007\025\364\115"}, {0xF95A, "\016\007\025\364\116"}, {0xF95B, "\016\007\025\364\117"}, {0xF95C, "\016\007\025\364\120"}, {0xF95D, "\016\007\025\364\121"}, {0xF95E, "\016\007\025\364\122"}, {0xF95F, "\016\007\025\364\123"}, {0xF960, "\016\007\025\364\124"}, {0xF961, "\016\007\025\364\125"}, {0xF962, "\016\007\025\364\126"}, {0xF963, "\016\007\025\364\127"}, {0xF964, "\016\007\025\364\130"}, {0xF965, "\016\007\025\364\131"}, {0xF966, "\016\007\025\364\132"}, {0xF967, "\016\007\025\364\133"}, {0xF968, "\016\007\025\364\134"}, {0xF969, "\016\007\025\364\135"}, {0xF96A, "\016\007\025\364\136"}, {0xF96B, "\016\007\025\364\137"}, {0xF96C, "\016\007\025\364\140"}, {0xF96D, "\016\007\025\364\141"}, {0xF96E, "\016\007\025\364\142"}, {0xF96F, "\016\007\025\364\143"}, {0xF970, "\016\007\025\364\144"}, {0xF971, "\016\007\025\364\145"}, {0xF972, "\016\007\025\364\146"}, {0xF973, "\016\007\025\364\147"}, {0xF974, "\016\007\025\364\150"}, {0xF975, "\016\007\025\364\151"}, {0xF976, "\016\007\025\364\152"}, {0xF977, "\016\007\025\364\153"}, {0xF978, "\016\007\025\364\154"}, {0xF979, "\016\007\025\364\155"}, {0xF97A, "\016\007\025\364\156"}, {0xF97B, "\016\007\025\364\157"}, {0xF97C, "\016\007\025\364\160"}, {0xF97D, "\016\007\025\364\161"}, {0xF97E, "\016\007\025\364\162"}, {0xF97F, "\016\007\025\364\163"}, {0xF980, "\016\007\025\364\164"}, {0xF981, "\016\007\025\364\165"}, {0xF982, "\016\007\025\364\166"}, {0xF983, "\016\007\025\364\167"}, {0xF984, "\016\007\025\364\170"}, {0xF985, "\016\007\025\364\171"}, {0xF986, "\016\007\025\364\172"}, {0xF987, "\016\007\025\364\173"}, {0xF988, "\016\007\025\364\174"}, {0xF989, "\016\007\025\364\175"}, {0xF98A, "\016\007\025\364\176"}, {0xF98B, "\016\007\025\364\177"}, {0xF98C, "\016\007\025\364\200"}, {0xF98D, "\016\007\025\364\201"}, {0xF98E, "\016\007\025\364\202"}, {0xF98F, "\016\007\025\364\203"}, {0xF990, "\016\007\025\364\204"}, {0xF991, "\016\007\025\364\205"}, {0xF992, "\016\007\025\364\206"}, {0xF993, "\016\007\025\364\207"}, {0xF994, "\016\007\025\364\210"}, {0xF995, "\016\007\025\364\211"}, {0xF996, "\016\007\025\364\212"}, {0xF997, "\016\007\025\364\213"}, {0xF998, "\016\007\025\364\214"}, {0xF999, "\016\007\025\364\215"}, {0xF99A, "\016\007\025\364\216"}, {0xF99B, "\016\007\025\364\217"}, {0xF99C, "\016\007\025\364\220"}, {0xF99D, "\016\007\025\364\221"}, {0xF99E, "\016\007\025\364\222"}, {0xF99F, "\016\007\025\364\223"}, {0xF9A0, "\016\007\025\364\224"}, {0xF9A1, "\016\007\025\364\225"}, {0xF9A2, "\016\007\025\364\226"}, {0xF9A3, "\016\007\025\364\227"}, {0xF9A4, "\016\007\025\364\230"}, {0xF9A5, "\016\007\025\364\231"}, {0xF9A6, "\016\007\025\364\232"}, {0xF9A7, "\016\007\025\364\233"}, {0xF9A8, "\016\007\025\364\234"}, {0xF9A9, "\016\007\025\364\235"}, {0xF9AA, "\016\007\025\364\236"}, {0xF9AB, "\016\007\025\364\237"}, {0xF9AC, "\016\007\025\364\240"}, {0xF9AD, "\016\007\025\364\241"}, {0xF9AE, "\016\007\025\364\242"}, {0xF9AF, "\016\007\025\364\243"}, {0xF9B0, "\016\007\025\364\244"}, {0xF9B1, "\016\007\025\364\245"}, {0xF9B2, "\016\007\025\364\246"}, {0xF9B3, "\016\007\025\364\247"}, {0xF9B4, "\016\007\025\364\250"}, {0xF9B5, "\016\007\025\364\251"}, {0xF9B6, "\016\007\025\364\252"}, {0xF9B7, "\016\007\025\364\253"}, {0xF9B8, "\016\007\025\364\254"}, {0xF9B9, "\016\007\025\364\255"}, {0xF9BA, "\016\007\025\364\256"}, {0xF9BB, "\016\007\025\364\257"}, {0xF9BC, "\016\007\025\364\260"}, {0xF9BD, "\016\007\025\364\261"}, {0xF9BE, "\016\007\025\364\262"}, {0xF9BF, "\016\007\025\364\263"}, {0xF9C0, "\016\007\025\364\264"}, {0xF9C1, "\016\007\025\364\265"}, {0xF9C2, "\016\007\025\364\266"}, {0xF9C3, "\016\007\025\364\267"}, {0xF9C4, "\016\007\025\364\270"}, {0xF9C5, "\016\007\025\364\271"}, {0xF9C6, "\016\007\025\364\272"}, {0xF9C7, "\016\007\025\364\273"}, {0xF9C8, "\016\007\025\364\274"}, {0xF9C9, "\016\007\025\364\275"}, {0xF9CA, "\016\007\025\364\276"}, {0xF9CB, "\016\007\025\364\277"}, {0xF9CC, "\016\007\025\364\300"}, {0xF9CD, "\016\007\025\364\301"}, {0xF9CE, "\016\007\025\364\302"}, {0xF9CF, "\016\007\025\364\303"}, {0xF9D0, "\016\007\025\364\304"}, {0xF9D1, "\016\007\025\364\305"}, {0xF9D2, "\016\007\025\364\306"}, {0xF9D3, "\016\007\025\364\307"}, {0xF9D4, "\016\007\025\364\310"}, {0xF9D5, "\016\007\025\364\311"}, {0xF9D6, "\016\007\025\364\312"}, {0xF9D7, "\016\007\025\364\313"}, {0xF9D8, "\016\007\025\364\314"}, {0xF9D9, "\016\007\025\364\315"}, {0xF9DA, "\016\007\025\364\316"}, {0xF9DB, "\016\007\025\364\317"}, {0xF9DC, "\016\007\025\364\320"}, {0xF9DD, "\016\007\025\364\321"}, {0xF9DE, "\016\007\025\364\322"}, {0xF9DF, "\016\007\025\364\323"}, {0xF9E0, "\016\007\025\364\324"}, {0xF9E1, "\016\007\025\364\325"}, {0xF9E2, "\016\007\025\364\326"}, {0xF9E3, "\016\007\025\364\327"}, {0xF9E4, "\016\007\025\364\330"}, {0xF9E5, "\016\007\025\364\331"}, {0xF9E6, "\016\007\025\364\332"}, {0xF9E7, "\016\007\025\364\333"}, {0xF9E8, "\016\007\025\364\334"}, {0xF9E9, "\016\007\025\364\335"}, {0xF9EA, "\016\007\025\364\336"}, {0xF9EB, "\016\007\025\364\337"}, {0xF9EC, "\016\007\025\364\340"}, {0xF9ED, "\016\007\025\364\341"}, {0xF9EE, "\016\007\025\364\342"}, {0xF9EF, "\016\007\025\364\343"}, {0xF9F0, "\016\007\025\364\344"}, {0xF9F1, "\016\007\025\364\345"}, {0xF9F2, "\016\007\025\364\346"}, {0xF9F3, "\016\007\025\364\347"}, {0xF9F4, "\016\007\025\364\350"}, {0xF9F5, "\016\007\025\364\351"}, {0xF9F6, "\016\007\025\364\352"}, {0xF9F7, "\016\007\025\364\353"}, {0xF9F8, "\016\007\025\364\354"}, {0xF9F9, "\016\007\025\364\355"}, {0xF9FA, "\016\007\025\364\356"}, {0xF9FB, "\016\007\025\364\357"}, {0xF9FC, "\016\007\025\364\360"}, {0xF9FD, "\016\007\025\364\361"}, {0xF9FE, "\016\007\025\364\362"}, {0xF9FF, "\016\007\025\364\363"}, {0xFA00, "\016\007\025\364\364"}, {0xFA01, "\016\007\025\364\365"}, {0xFA02, "\016\007\025\364\366"}, {0xFA03, "\016\007\025\364\367"}, {0xFA04, "\016\007\025\364\370"}, {0xFA05, "\016\007\025\364\371"}, {0xFA06, "\016\007\025\364\372"}, {0xFA07, "\016\007\025\364\373"}, {0xFA08, "\016\007\025\364\374"}, {0xFA09, "\016\007\025\364\375"}, {0xFA0A, "\016\007\025\364\376"}, {0xFA0B, "\016\007\025\364\377"}, {0xFA0C, "\016\007\025\365\001"}, {0xFA0D, "\016\007\025\365\002"}, {0xFA0E, "\016\007\025\365\003"}, {0xFA0F, "\016\007\025\365\004"}, {0xFA10, "\016\007\025\365\005"}, {0xFA11, "\016\007\025\365\006"}, {0xFA12, "\016\007\025\365\007"}, {0xFA13, "\016\007\025\365\010"}, {0xFA14, "\016\007\025\365\011"}, {0xFA15, "\016\007\025\365\012"}, {0xFA16, "\016\007\025\365\013"}, {0xFA17, "\016\007\025\365\014"}, {0xFA18, "\016\007\025\365\015"}, {0xFA19, "\016\007\025\365\016"}, {0xFA1A, "\016\007\025\365\017"}, {0xFA1B, "\016\007\025\365\020"}, {0xFA1C, "\016\007\025\365\021"}, {0xFA1D, "\016\007\025\365\022"}, {0xFA1E, "\016\007\025\365\023"}, {0xFA1F, "\016\007\025\365\024"}, {0xFA20, "\016\007\025\365\025"}, {0xFA21, "\016\007\025\365\026"}, {0xFA22, "\016\007\025\365\027"}, {0xFA23, "\016\007\025\365\030"}, {0xFA24, "\016\007\025\365\031"}, {0xFA25, "\016\007\025\365\032"}, {0xFA26, "\016\007\025\365\033"}, {0xFA27, "\016\007\025\365\034"}, {0xFA28, "\016\007\025\365\035"}, {0xFA29, "\016\007\025\365\036"}, {0xFA2A, "\016\007\025\365\037"}, {0xFA2B, "\016\007\025\365\040"}, {0xFA2C, "\016\007\025\365\041"}, {0xFA2D, "\016\007\025\365\042"}, {0xFB00, "\012\005\006\366\065"}, {0xFB01, "\012\005\006\356\202"}, {0xFB02, "\012\005\006\366\076"}, {0xFB03, "\012\005\006\366\066"}, {0xFB04, "\012\005\006\366\067"}, {0xFB05, "\012\005\006\224\355\266\262"}, {0xFB06, "\012\005\006\375\032"}, {0xFB13, "\012\005\125\356\104\355\342"}, {0xFB14, "\012\005\125\356\104\357\061"}, {0xFB15, "\012\005\125\356\104\357\201"}, {0xFB16, "\012\005\125\360\007\355\342"}, {0xFB17, "\012\005\125\356\104\356\344"}, {0xFB1D, "\001\137\356\274\360\326"}, {0xFB1E, "\037\223\367\331\376\015"}, {0xFB1F, "\012\137\357\060\356\274\356\274\356\376"}, {0xFB20, "\001\137\360\052\360\065"}, {0xFB21, "\001\137\355\264\355\374"}, {0xFB22, "\001\137\355\264\356\321"}, {0xFB23, "\001\137\355\264\357\172"}, {0xFB24, "\001\137\355\264\255"}, {0xFB25, "\001\137\355\264\356\351"}, {0xFB26, "\001\137\355\264\356\361\032"}, {0xFB27, "\001\137\355\264\357\323"}, {0xFB28, "\001\137\355\264\357\351"}, {0xFB29, "\001\137\057\215\376\014"}, {0xFB2A, "\001\137\355\312\037\355\312"}, {0xFB2B, "\001\137\355\312\037\361\323"}, {0xFB2C, "\001\137\355\312\365\174\020\037\355\312"}, {0xFB2D, "\001\137\355\312\355\013\020\037\361\323"}, {0xFB2E, "\001\137\355\374\356\376"}, {0xFB2F, "\001\137\355\374\357\302"}, {0xFB30, "\001\137\355\374\357\234"}, {0xFB31, "\001\137\363\120\355\013"}, {0xFB32, "\001\137\360\307\355\013"}, {0xFB33, "\001\137\356\321\355\013"}, {0xFB34, "\001\137\357\172\357\234"}, {0xFB35, "\001\137\355\053\355\013"}, {0xFB36, "\001\137\360\022\355\013"}, {0xFB38, "\001\137\362\062\355\013"}, {0xFB39, "\001\137\356\274\355\013"}, {0xFB3A, "\001\137\255\355\013\032"}, {0xFB3B, "\001\137\255\355\013"}, {0xFB3C, "\001\137\356\351\355\013"}, {0xFB3E, "\001\137\356\361\355\013"}, {0xFB40, "\001\137\357\253\355\013"}, {0xFB41, "\001\137\361\305\355\013"}, {0xFB43, "\001\137\355\174\355\013\032"}, {0xFB44, "\001\137\355\174\355\013"}, {0xFB46, "\001\137\357\370\355\013"}, {0xFB47, "\001\137\373\364\355\013"}, {0xFB48, "\001\137\357\323\355\013"}, {0xFB49, "\001\137\355\312\355\013"}, {0xFB4A, "\001\137\357\351\355\013"}, {0xFB4B, "\001\137\355\053\360\331"}, {0xFB4C, "\001\137\357\074\357\023"}, {0xFB4D, "\001\137\255\357\023"}, {0xFB4E, "\001\137\355\174\357\023"}, {0xFB4F, "\012\137\355\374\356\351"}, {0xFB50, "\001\004\100\360\010\036"}, {0xFB51, "\001\004\100\360\010\032"}, {0xFB52, "\001\004\356\145\036"}, {0xFB53, "\001\004\356\145\032"}, {0xFB54, "\001\004\356\145\055"}, {0xFB55, "\001\004\356\145\131"}, {0xFB56, "\001\004\356\241\036"}, {0xFB57, "\001\004\356\241\032"}, {0xFB58, "\001\004\356\241\055"}, {0xFB59, "\001\004\356\241\131"}, {0xFB5A, "\001\004\356\146\036"}, {0xFB5B, "\001\004\356\146\032"}, {0xFB5C, "\001\004\356\146\055"}, {0xFB5D, "\001\004\356\146\131"}, {0xFB5E, "\001\004\356\264\036"}, {0xFB5F, "\001\004\356\264\032"}, {0xFB60, "\001\004\356\264\055"}, {0xFB61, "\001\004\356\264\131"}, {0xFB62, "\001\004\356\260\036"}, {0xFB63, "\001\004\356\260\032"}, {0xFB64, "\001\004\356\260\055"}, {0xFB65, "\001\004\356\260\131"}, {0xFB66, "\001\004\356\263\036"}, {0xFB67, "\001\004\356\263\032"}, {0xFB68, "\001\004\356\263\055"}, {0xFB69, "\001\004\356\263\131"}, {0xFB6A, "\001\004\356\266\036"}, {0xFB6B, "\001\004\356\266\032"}, {0xFB6C, "\001\004\356\266\055"}, {0xFB6D, "\001\004\356\266\131"}, {0xFB6E, "\001\004\356\242\036"}, {0xFB6F, "\001\004\356\242\032"}, {0xFB70, "\001\004\356\242\055"}, {0xFB71, "\001\004\356\242\131"}, {0xFB72, "\001\004\356\166\036"}, {0xFB73, "\001\004\356\166\032"}, {0xFB74, "\001\004\356\166\055"}, {0xFB75, "\001\004\356\166\131"}, {0xFB76, "\001\004\356\232\036"}, {0xFB77, "\001\004\356\232\032"}, {0xFB78, "\001\004\356\232\055"}, {0xFB79, "\001\004\356\232\131"}, {0xFB7A, "\001\004\356\126\036"}, {0xFB7B, "\001\004\356\126\032"}, {0xFB7C, "\001\004\356\126\055"}, {0xFB7D, "\001\004\356\126\131"}, {0xFB7E, "\001\004\356\257\036"}, {0xFB7F, "\001\004\356\257\032"}, {0xFB80, "\001\004\356\257\055"}, {0xFB81, "\001\004\356\257\131"}, {0xFB82, "\001\004\357\127\036"}, {0xFB83, "\001\004\357\127\032"}, {0xFB84, "\001\004\357\123\036"}, {0xFB85, "\001\004\357\123\032"}, {0xFB86, "\001\004\357\146\036"}, {0xFB87, "\001\004\357\146\032"}, {0xFB88, "\001\004\357\130\036"}, {0xFB89, "\001\004\357\130\032"}, {0xFB8A, "\001\004\357\211\036"}, {0xFB8B, "\001\004\357\211\032"}, {0xFB8C, "\001\004\357\321\036"}, {0xFB8D, "\001\004\357\321\032"}, {0xFB8E, "\001\004\356\220\036"}, {0xFB8F, "\001\004\356\220\032"}, {0xFB90, "\001\004\356\220\055"}, {0xFB91, "\001\004\356\220\131"}, {0xFB92, "\001\004\355\324\036"}, {0xFB93, "\001\004\355\324\032"}, {0xFB94, "\001\004\355\324\055"}, {0xFB95, "\001\004\355\324\131"}, {0xFB96, "\001\004\356\333\036"}, {0xFB97, "\001\004\356\333\032"}, {0xFB98, "\001\004\356\333\055"}, {0xFB99, "\001\004\356\333\131"}, {0xFB9A, "\001\004\356\230\036"}, {0xFB9B, "\001\004\356\230\032"}, {0xFB9C, "\001\004\356\230\055"}, {0xFB9D, "\001\004\356\230\131"}, {0xFB9E, "\001\004\216\360\302\036"}, {0xFB9F, "\001\004\216\360\302\032"}, {0xFBA0, "\001\004\357\026\036"}, {0xFBA1, "\001\004\357\026\032"}, {0xFBA2, "\001\004\357\026\055"}, {0xFBA3, "\001\004\357\026\131"}, {0xFBA4, "\001\004\232\056\013\040\036"}, {0xFBA5, "\001\004\232\056\013\040\032"}, {0xFBA6, "\001\004\232\356\017\036"}, {0xFBA7, "\001\004\232\356\017\032"}, {0xFBA8, "\001\004\232\356\017\055"}, {0xFBA9, "\001\004\232\356\017\131"}, {0xFBAA, "\001\004\232\356\165\036"}, {0xFBAB, "\001\004\232\356\165\032"}, {0xFBAC, "\001\004\232\356\165\055"}, {0xFBAD, "\001\004\232\356\165\131"}, {0xFBAE, "\001\004\056\356\305\036"}, {0xFBAF, "\001\004\056\356\305\032"}, {0xFBB0, "\001\004\056\356\305\156\013\040\036"}, {0xFBB1, "\001\004\056\356\305\156\013\040\032"}, {0xFBD3, "\001\004\355\340\036"}, {0xFBD4, "\001\004\355\340\032"}, {0xFBD5, "\001\004\355\340\055"}, {0xFBD6, "\001\004\355\340\131"}, {0xFBD7, "\001\004\113\036"}, {0xFBD8, "\001\004\113\032"}, {0xFBD9, "\001\004\355\212\036"}, {0xFBDA, "\001\004\355\212\032"}, {0xFBDB, "\001\004\355\153\036"}, {0xFBDC, "\001\004\355\153\032"}, {0xFBDD, "\001\004\113\156\013\040\036"}, {0xFBDE, "\001\004\357\055\036"}, {0xFBDF, "\001\004\357\055\032"}, {0xFBE0, "\001\004\355\207\355\212\036"}, {0xFBE1, "\001\004\355\207\355\212\032"}, {0xFBE2, "\001\004\355\207\355\153\036"}, {0xFBE3, "\001\004\355\207\355\153\032"}, {0xFBE4, "\001\004\130\036"}, {0xFBE5, "\001\004\130\032"}, {0xFBE6, "\001\004\130\055"}, {0xFBE7, "\001\004\130\131"}, {0xFBE8, "\001\004\356\240\360\373\355\207\100\160\055"}, {0xFBE9, "\001\004\356\240\360\373\355\207\100\160\131"}, {0xFBEA, "\012\004\056\156\013\040\100\036"}, {0xFBEB, "\012\004\056\156\013\040\100\032"}, {0xFBEC, "\012\004\056\156\013\040\355\307\036"}, {0xFBED, "\012\004\056\156\013\040\355\307\032"}, {0xFBEE, "\012\004\056\156\013\040\355\053\036"}, {0xFBEF, "\012\004\056\156\013\040\355\053\032"}, {0xFBF0, "\012\004\056\156\013\040\132\036"}, {0xFBF1, "\012\004\056\156\013\040\132\032"}, {0xFBF2, "\012\004\056\156\013\040\355\212\036"}, {0xFBF3, "\012\004\056\156\013\040\355\212\032"}, {0xFBF4, "\012\004\056\156\013\040\355\153\036"}, {0xFBF5, "\012\004\056\156\013\040\355\153\032"}, {0xFBF6, "\012\004\056\156\013\040\130\036"}, {0xFBF7, "\012\004\056\156\013\040\130\032"}, {0xFBF8, "\012\004\056\156\013\040\130\055"}, {0xFBF9, "\012\004\356\240\355\207\056\156\013\040\100\160\036"}, {0xFBFA, "\012\004\356\240\355\207\056\156\013\040\100\160\032"}, {0xFBFB, "\012\004\356\240\355\207\056\156\013\040\100\160\055"}, {0xFBFC, "\001\004\356\071\056\036"}, {0xFBFD, "\001\004\356\071\056\032"}, {0xFBFE, "\001\004\356\071\056\055"}, {0xFBFF, "\001\004\356\071\056\131"}, {0xFC00, "\012\004\056\156\013\040\115\036"}, {0xFC01, "\012\004\056\156\013\040\111\036"}, {0xFC02, "\012\004\056\156\013\040\047\036"}, {0xFC03, "\012\004\056\156\013\040\100\160\036"}, {0xFC04, "\012\004\056\156\013\040\056\036"}, {0xFC05, "\012\004\326\115\036"}, {0xFC06, "\012\004\326\111\036"}, {0xFC07, "\012\004\326\171\036"}, {0xFC08, "\012\004\326\047\036"}, {0xFC09, "\012\004\326\100\160\036"}, {0xFC0A, "\012\004\326\056\036"}, {0xFC0B, "\012\004\234\115\036"}, {0xFC0C, "\012\004\234\111\036"}, {0xFC0D, "\012\004\234\171\036"}, {0xFC0E, "\012\004\234\047\036"}, {0xFC0F, "\012\004\234\100\160\036"}, {0xFC10, "\012\004\234\056\036"}, {0xFC11, "\012\004\355\062\115\036"}, {0xFC12, "\012\004\355\062\047\036"}, {0xFC13, "\012\004\355\062\100\160\036"}, {0xFC14, "\012\004\355\062\056\036"}, {0xFC15, "\012\004\115\111\036"}, {0xFC16, "\012\004\115\047\036"}, {0xFC17, "\012\004\111\115\036"}, {0xFC18, "\012\004\111\047\036"}, {0xFC19, "\012\004\171\115\036"}, {0xFC1A, "\012\004\171\111\036"}, {0xFC1B, "\012\004\171\047\036"}, {0xFC1C, "\012\004\246\115\036"}, {0xFC1D, "\012\004\246\111\036"}, {0xFC1E, "\012\004\246\171\036"}, {0xFC1F, "\012\004\246\047\036"}, {0xFC20, "\012\004\355\007\111\036"}, {0xFC21, "\012\004\355\007\047\036"}, {0xFC22, "\012\004\352\115\036"}, {0xFC23, "\012\004\352\111\036"}, {0xFC24, "\012\004\352\171\036"}, {0xFC25, "\012\004\352\047\036"}, {0xFC26, "\012\004\355\050\111\036"}, {0xFC27, "\012\004\355\050\047\036"}, {0xFC28, "\012\004\355\370\047\036"}, {0xFC29, "\012\004\355\031\115\036"}, {0xFC2A, "\012\004\355\031\047\036"}, {0xFC2B, "\012\004\355\065\115\036"}, {0xFC2C, "\012\004\355\065\047\036"}, {0xFC2D, "\012\004\353\115\036"}, {0xFC2E, "\012\004\353\111\036"}, {0xFC2F, "\012\004\353\171\036"}, {0xFC30, "\012\004\353\047\036"}, {0xFC31, "\012\004\353\100\160\036"}, {0xFC32, "\012\004\353\056\036"}, {0xFC33, "\012\004\355\041\111\036"}, {0xFC34, "\012\004\355\041\047\036"}, {0xFC35, "\012\004\355\041\100\160\036"}, {0xFC36, "\012\004\355\041\056\036"}, {0xFC37, "\012\004\255\100\036"}, {0xFC38, "\012\004\255\115\036"}, {0xFC39, "\012\004\255\111\036"}, {0xFC3A, "\012\004\255\171\036"}, {0xFC3B, "\012\004\255\207\036"}, {0xFC3C, "\012\004\255\047\036"}, {0xFC3D, "\012\004\255\100\160\036"}, {0xFC3E, "\012\004\255\056\036"}, {0xFC3F, "\012\004\207\115\036"}, {0xFC40, "\012\004\207\111\036"}, {0xFC41, "\012\004\207\171\036"}, {0xFC42, "\012\004\207\047\036"}, {0xFC43, "\012\004\207\100\160\036"}, {0xFC44, "\012\004\207\056\036"}, {0xFC45, "\012\004\047\115\036"}, {0xFC46, "\012\004\047\111\036"}, {0xFC47, "\012\004\047\171\036"}, {0xFC48, "\012\004\047\047\036"}, {0xFC49, "\012\004\047\100\160\036"}, {0xFC4A, "\012\004\047\056\036"}, {0xFC4B, "\012\004\216\115\036"}, {0xFC4C, "\012\004\216\111\036"}, {0xFC4D, "\012\004\216\171\036"}, {0xFC4E, "\012\004\216\047\036"}, {0xFC4F, "\012\004\216\100\160\036"}, {0xFC50, "\012\004\216\056\036"}, {0xFC51, "\012\004\232\115\036"}, {0xFC52, "\012\004\232\047\036"}, {0xFC53, "\012\004\232\100\160\036"}, {0xFC54, "\012\004\232\056\036"}, {0xFC55, "\012\004\056\115\036"}, {0xFC56, "\012\004\056\111\036"}, {0xFC57, "\012\004\056\171\036"}, {0xFC58, "\012\004\056\047\036"}, {0xFC59, "\012\004\056\100\160\036"}, {0xFC5A, "\012\004\056\056\036"}, {0xFC5B, "\012\004\356\323\013\040\100\036"}, {0xFC5C, "\012\004\345\013\040\100\036"}, {0xFC5D, "\012\004\100\160\013\040\100\036"}, {0xFC5E, "\012\004\355\156\357\124\036"}, {0xFC5F, "\012\004\355\156\357\220\036"}, {0xFC60, "\012\004\355\156\356\177\036"}, {0xFC61, "\012\004\355\156\356\161\036"}, {0xFC62, "\012\004\355\156\356\217\036"}, {0xFC63, "\012\004\355\156\013\040\100\036"}, {0xFC64, "\012\004\056\156\013\040\345\032"}, {0xFC65, "\012\004\056\156\013\040\356\136\032"}, {0xFC66, "\012\004\056\156\013\040\047\032"}, {0xFC67, "\012\004\056\156\013\040\216\032"}, {0xFC68, "\012\004\056\156\013\040\100\160\032"}, {0xFC69, "\012\004\056\156\013\040\056\032"}, {0xFC6A, "\012\004\326\345\032"}, {0xFC6B, "\012\004\326\356\136\032"}, {0xFC6C, "\012\004\326\047\032"}, {0xFC6D, "\012\004\326\216\032"}, {0xFC6E, "\012\004\326\100\160\032"}, {0xFC6F, "\012\004\326\056\032"}, {0xFC70, "\012\004\234\345\032"}, {0xFC71, "\012\004\234\356\136\032"}, {0xFC72, "\012\004\234\047\032"}, {0xFC73, "\012\004\234\216\032"}, {0xFC74, "\012\004\234\100\160\032"}, {0xFC75, "\012\004\234\056\032"}, {0xFC76, "\012\004\355\062\345\032"}, {0xFC77, "\012\004\355\062\356\136\032"}, {0xFC78, "\012\004\355\062\047\032"}, {0xFC79, "\012\004\355\062\216\032"}, {0xFC7A, "\012\004\355\062\100\160\032"}, {0xFC7B, "\012\004\355\062\056\032"}, {0xFC7C, "\012\004\353\100\160\032"}, {0xFC7D, "\012\004\353\056\032"}, {0xFC7E, "\012\004\355\041\100\160\032"}, {0xFC7F, "\012\004\355\041\056\032"}, {0xFC80, "\012\004\255\100\032"}, {0xFC81, "\012\004\255\207\032"}, {0xFC82, "\012\004\255\047\032"}, {0xFC83, "\012\004\255\100\160\032"}, {0xFC84, "\012\004\255\056\032"}, {0xFC85, "\012\004\207\047\032"}, {0xFC86, "\012\004\207\100\160\032"}, {0xFC87, "\012\004\207\056\032"}, {0xFC88, "\012\004\047\100\032"}, {0xFC89, "\012\004\047\047\032"}, {0xFC8A, "\012\004\216\345\032"}, {0xFC8B, "\012\004\216\356\136\032"}, {0xFC8C, "\012\004\216\047\032"}, {0xFC8D, "\012\004\216\216\032"}, {0xFC8E, "\012\004\216\100\160\032"}, {0xFC8F, "\012\004\216\056\032"}, {0xFC90, "\012\004\100\160\013\040\100\032"}, {0xFC91, "\012\004\056\345\032"}, {0xFC92, "\012\004\056\356\136\032"}, {0xFC93, "\012\004\056\047\032"}, {0xFC94, "\012\004\056\216\032"}, {0xFC95, "\012\004\056\100\160\032"}, {0xFC96, "\012\004\056\056\032"}, {0xFC97, "\012\004\056\156\013\040\115\055"}, {0xFC98, "\012\004\056\156\013\040\111\055"}, {0xFC99, "\012\004\056\156\013\040\171\055"}, {0xFC9A, "\012\004\056\156\013\040\047\055"}, {0xFC9B, "\012\004\056\156\013\040\232\055"}, {0xFC9C, "\012\004\326\115\055"}, {0xFC9D, "\012\004\326\111\055"}, {0xFC9E, "\012\004\326\171\055"}, {0xFC9F, "\012\004\326\047\055"}, {0xFCA0, "\012\004\326\232\055"}, {0xFCA1, "\012\004\234\115\055"}, {0xFCA2, "\012\004\234\111\055"}, {0xFCA3, "\012\004\234\171\055"}, {0xFCA4, "\012\004\234\047\055"}, {0xFCA5, "\012\004\234\232\055"}, {0xFCA6, "\012\004\355\062\047\055"}, {0xFCA7, "\012\004\115\111\055"}, {0xFCA8, "\012\004\115\047\055"}, {0xFCA9, "\012\004\111\115\055"}, {0xFCAA, "\012\004\111\047\055"}, {0xFCAB, "\012\004\171\115\055"}, {0xFCAC, "\012\004\171\047\055"}, {0xFCAD, "\012\004\246\115\055"}, {0xFCAE, "\012\004\246\111\055"}, {0xFCAF, "\012\004\246\171\055"}, {0xFCB0, "\012\004\246\047\055"}, {0xFCB1, "\012\004\355\007\111\055"}, {0xFCB2, "\012\004\355\007\171\055"}, {0xFCB3, "\012\004\355\007\047\055"}, {0xFCB4, "\012\004\352\115\055"}, {0xFCB5, "\012\004\352\111\055"}, {0xFCB6, "\012\004\352\171\055"}, {0xFCB7, "\012\004\352\047\055"}, {0xFCB8, "\012\004\355\050\111\055"}, {0xFCB9, "\012\004\355\370\047\055"}, {0xFCBA, "\012\004\355\031\115\055"}, {0xFCBB, "\012\004\355\031\047\055"}, {0xFCBC, "\012\004\355\065\115\055"}, {0xFCBD, "\012\004\355\065\047\055"}, {0xFCBE, "\012\004\353\115\055"}, {0xFCBF, "\012\004\353\111\055"}, {0xFCC0, "\012\004\353\171\055"}, {0xFCC1, "\012\004\353\047\055"}, {0xFCC2, "\012\004\355\041\111\055"}, {0xFCC3, "\012\004\355\041\047\055"}, {0xFCC4, "\012\004\255\115\055"}, {0xFCC5, "\012\004\255\111\055"}, {0xFCC6, "\012\004\255\171\055"}, {0xFCC7, "\012\004\255\207\055"}, {0xFCC8, "\012\004\255\047\055"}, {0xFCC9, "\012\004\207\115\055"}, {0xFCCA, "\012\004\207\111\055"}, {0xFCCB, "\012\004\207\171\055"}, {0xFCCC, "\012\004\207\047\055"}, {0xFCCD, "\012\004\207\232\055"}, {0xFCCE, "\012\004\047\115\055"}, {0xFCCF, "\012\004\047\111\055"}, {0xFCD0, "\012\004\047\171\055"}, {0xFCD1, "\012\004\047\047\055"}, {0xFCD2, "\012\004\216\115\055"}, {0xFCD3, "\012\004\216\111\055"}, {0xFCD4, "\012\004\216\171\055"}, {0xFCD5, "\012\004\216\047\055"}, {0xFCD6, "\012\004\216\232\055"}, {0xFCD7, "\012\004\232\115\055"}, {0xFCD8, "\012\004\232\047\055"}, {0xFCD9, "\012\004\232\013\040\100\055"}, {0xFCDA, "\012\004\056\115\055"}, {0xFCDB, "\012\004\056\111\055"}, {0xFCDC, "\012\004\056\171\055"}, {0xFCDD, "\012\004\056\047\055"}, {0xFCDE, "\012\004\056\232\055"}, {0xFCDF, "\012\004\056\156\013\040\047\131"}, {0xFCE0, "\012\004\056\156\013\040\232\131"}, {0xFCE1, "\012\004\326\047\131"}, {0xFCE2, "\012\004\326\232\131"}, {0xFCE3, "\012\004\234\047\131"}, {0xFCE4, "\012\004\234\232\131"}, {0xFCE5, "\012\004\355\062\047\131"}, {0xFCE6, "\012\004\355\062\232\131"}, {0xFCE7, "\012\004\246\047\131"}, {0xFCE8, "\012\004\246\232\131"}, {0xFCE9, "\012\004\250\047\131"}, {0xFCEA, "\012\004\250\232\131"}, {0xFCEB, "\012\004\255\207\131"}, {0xFCEC, "\012\004\255\047\131"}, {0xFCED, "\012\004\207\047\131"}, {0xFCEE, "\012\004\216\047\131"}, {0xFCEF, "\012\004\216\232\131"}, {0xFCF0, "\012\004\056\047\131"}, {0xFCF1, "\012\004\056\232\131"}, {0xFCF2, "\012\004\355\156\356\177\131"}, {0xFCF3, "\012\004\355\156\356\161\131"}, {0xFCF4, "\012\004\355\156\356\217\131"}, {0xFCF5, "\012\004\355\050\100\160\036"}, {0xFCF6, "\012\004\355\050\056\036"}, {0xFCF7, "\012\004\355\031\100\160\036"}, {0xFCF8, "\012\004\355\031\056\036"}, {0xFCF9, "\012\004\355\065\100\160\036"}, {0xFCFA, "\012\004\355\065\056\036"}, {0xFCFB, "\012\004\246\100\160\036"}, {0xFCFC, "\012\004\246\056\036"}, {0xFCFD, "\012\004\250\100\160\036"}, {0xFCFE, "\012\004\250\056\036"}, {0xFCFF, "\012\004\111\100\160\036"}, {0xFD00, "\012\004\111\056\036"}, {0xFD01, "\012\004\115\100\160\036"}, {0xFD02, "\012\004\115\056\036"}, {0xFD03, "\012\004\171\100\160\036"}, {0xFD04, "\012\004\171\056\036"}, {0xFD05, "\012\004\355\007\100\160\036"}, {0xFD06, "\012\004\355\007\056\036"}, {0xFD07, "\012\004\352\100\160\036"}, {0xFD08, "\012\004\352\056\036"}, {0xFD09, "\012\004\250\115\036"}, {0xFD0A, "\012\004\250\111\036"}, {0xFD0B, "\012\004\250\171\036"}, {0xFD0C, "\012\004\250\047\036"}, {0xFD0D, "\012\004\250\345\036"}, {0xFD0E, "\012\004\246\345\036"}, {0xFD0F, "\012\004\355\007\345\036"}, {0xFD10, "\012\004\352\345\036"}, {0xFD11, "\012\004\355\050\100\160\032"}, {0xFD12, "\012\004\355\050\056\032"}, {0xFD13, "\012\004\355\031\100\160\032"}, {0xFD14, "\012\004\355\031\056\032"}, {0xFD15, "\012\004\355\065\100\160\032"}, {0xFD16, "\012\004\355\065\056\032"}, {0xFD17, "\012\004\246\100\160\032"}, {0xFD18, "\012\004\246\056\032"}, {0xFD19, "\012\004\250\100\160\032"}, {0xFD1A, "\012\004\250\056\032"}, {0xFD1B, "\012\004\111\100\160\032"}, {0xFD1C, "\012\004\111\056\032"}, {0xFD1D, "\012\004\115\100\160\032"}, {0xFD1E, "\012\004\115\056\032"}, {0xFD1F, "\012\004\171\100\160\032"}, {0xFD20, "\012\004\171\056\032"}, {0xFD21, "\012\004\355\007\100\160\032"}, {0xFD22, "\012\004\355\007\056\032"}, {0xFD23, "\012\004\352\100\160\032"}, {0xFD24, "\012\004\352\056\032"}, {0xFD25, "\012\004\250\115\032"}, {0xFD26, "\012\004\250\111\032"}, {0xFD27, "\012\004\250\171\032"}, {0xFD28, "\012\004\250\047\032"}, {0xFD29, "\012\004\250\345\032"}, {0xFD2A, "\012\004\246\345\032"}, {0xFD2B, "\012\004\355\007\345\032"}, {0xFD2C, "\012\004\352\345\032"}, {0xFD2D, "\012\004\250\115\055"}, {0xFD2E, "\012\004\250\111\055"}, {0xFD2F, "\012\004\250\171\055"}, {0xFD30, "\012\004\250\047\055"}, {0xFD31, "\012\004\246\232\055"}, {0xFD32, "\012\004\250\232\055"}, {0xFD33, "\012\004\355\050\047\055"}, {0xFD34, "\012\004\246\115\131"}, {0xFD35, "\012\004\246\111\131"}, {0xFD36, "\012\004\246\171\131"}, {0xFD37, "\012\004\250\115\131"}, {0xFD38, "\012\004\250\111\131"}, {0xFD39, "\012\004\250\171\131"}, {0xFD3A, "\012\004\355\050\047\131"}, {0xFD3B, "\012\004\355\370\047\131"}, {0xFD3C, "\012\004\100\356\200\032"}, {0xFD3D, "\012\004\100\356\200\036"}, {0xFD3E, "\355\125\052\361\147"}, {0xFD3F, "\355\125\053\361\147"}, {0xFD50, "\012\004\234\115\047\055"}, {0xFD51, "\012\004\234\111\115\032"}, {0xFD52, "\012\004\234\111\115\055"}, {0xFD53, "\012\004\234\111\047\055"}, {0xFD54, "\012\004\234\171\047\055"}, {0xFD55, "\012\004\234\047\115\055"}, {0xFD56, "\012\004\234\047\111\055"}, {0xFD57, "\012\004\234\047\171\055"}, {0xFD58, "\012\004\115\047\111\032"}, {0xFD59, "\012\004\115\047\111\055"}, {0xFD5A, "\012\004\111\047\056\032"}, {0xFD5B, "\012\004\111\047\100\160\032"}, {0xFD5C, "\012\004\246\111\115\055"}, {0xFD5D, "\012\004\246\115\111\055"}, {0xFD5E, "\012\004\246\115\100\160\032"}, {0xFD5F, "\012\004\246\047\111\032"}, {0xFD60, "\012\004\246\047\111\055"}, {0xFD61, "\012\004\246\047\115\055"}, {0xFD62, "\012\004\246\047\047\032"}, {0xFD63, "\012\004\246\047\047\055"}, {0xFD64, "\012\004\355\007\111\111\032"}, {0xFD65, "\012\004\355\007\111\111\055"}, {0xFD66, "\012\004\355\007\047\047\032"}, {0xFD67, "\012\004\250\111\047\032"}, {0xFD68, "\012\004\250\111\047\055"}, {0xFD69, "\012\004\250\115\056\032"}, {0xFD6A, "\012\004\250\047\171\032"}, {0xFD6B, "\012\004\250\047\171\055"}, {0xFD6C, "\012\004\250\047\047\032"}, {0xFD6D, "\012\004\250\047\047\055"}, {0xFD6E, "\012\004\352\111\100\160\032"}, {0xFD6F, "\012\004\352\171\047\032"}, {0xFD70, "\012\004\352\171\047\055"}, {0xFD71, "\012\004\355\050\047\111\032"}, {0xFD72, "\012\004\355\050\047\111\055"}, {0xFD73, "\012\004\355\050\047\047\055"}, {0xFD74, "\012\004\355\050\047\056\032"}, {0xFD75, "\012\004\355\031\115\047\032"}, {0xFD76, "\012\004\355\031\047\047\032"}, {0xFD77, "\012\004\355\031\047\047\055"}, {0xFD78, "\012\004\355\031\047\100\160\032"}, {0xFD79, "\012\004\355\065\047\047\032"}, {0xFD7A, "\012\004\355\065\047\056\032"}, {0xFD7B, "\012\004\355\065\047\100\160\032"}, {0xFD7C, "\012\004\353\171\047\032"}, {0xFD7D, "\012\004\353\171\047\055"}, {0xFD7E, "\012\004\355\041\047\111\032"}, {0xFD7F, "\012\004\355\041\047\047\032"}, {0xFD80, "\012\004\207\111\047\032"}, {0xFD81, "\012\004\207\111\056\032"}, {0xFD82, "\012\004\207\111\100\160\032"}, {0xFD83, "\012\004\207\115\115\055"}, {0xFD84, "\012\004\207\115\115\032"}, {0xFD85, "\012\004\207\171\047\032"}, {0xFD86, "\012\004\207\171\047\055"}, {0xFD87, "\012\004\207\047\111\032"}, {0xFD88, "\012\004\207\047\111\055"}, {0xFD89, "\012\004\047\111\115\055"}, {0xFD8A, "\012\004\047\111\047\055"}, {0xFD8B, "\012\004\047\111\056\032"}, {0xFD8C, "\012\004\047\115\111\055"}, {0xFD8D, "\012\004\047\115\047\055"}, {0xFD8E, "\012\004\047\171\115\055"}, {0xFD8F, "\012\004\047\171\047\055"}, {0xFD92, "\012\004\047\115\171\055"}, {0xFD93, "\012\004\232\047\115\055"}, {0xFD94, "\012\004\232\047\047\055"}, {0xFD95, "\012\004\216\111\047\055"}, {0xFD96, "\012\004\216\111\100\160\032"}, {0xFD97, "\012\004\216\115\047\032"}, {0xFD98, "\012\004\216\115\047\055"}, {0xFD99, "\012\004\216\115\100\160\032"}, {0xFD9A, "\012\004\216\047\056\032"}, {0xFD9B, "\012\004\216\047\100\160\032"}, {0xFD9C, "\012\004\056\047\047\032"}, {0xFD9D, "\012\004\056\047\047\055"}, {0xFD9E, "\012\004\326\171\056\032"}, {0xFD9F, "\012\004\234\115\056\032"}, {0xFDA0, "\012\004\234\115\100\160\032"}, {0xFDA1, "\012\004\234\171\056\032"}, {0xFDA2, "\012\004\234\171\100\160\032"}, {0xFDA3, "\012\004\234\047\056\032"}, {0xFDA4, "\012\004\234\047\100\160\032"}, {0xFDA5, "\012\004\115\047\056\032"}, {0xFDA6, "\012\004\115\111\100\160\032"}, {0xFDA7, "\012\004\115\047\100\160\032"}, {0xFDA8, "\012\004\246\171\100\160\032"}, {0xFDA9, "\012\004\355\007\111\056\032"}, {0xFDAA, "\012\004\250\111\056\032"}, {0xFDAB, "\012\004\352\111\056\032"}, {0xFDAC, "\012\004\207\115\056\032"}, {0xFDAD, "\012\004\207\047\056\032"}, {0xFDAE, "\012\004\056\111\056\032"}, {0xFDAF, "\012\004\056\115\056\032"}, {0xFDB0, "\012\004\056\047\056\032"}, {0xFDB1, "\012\004\047\047\056\032"}, {0xFDB2, "\012\004\355\041\047\056\032"}, {0xFDB3, "\012\004\216\111\056\032"}, {0xFDB4, "\012\004\355\041\047\111\055"}, {0xFDB5, "\012\004\207\111\047\055"}, {0xFDB6, "\012\004\355\031\047\056\032"}, {0xFDB7, "\012\004\255\047\056\032"}, {0xFDB8, "\012\004\216\115\111\055"}, {0xFDB9, "\012\004\047\171\056\032"}, {0xFDBA, "\012\004\207\115\047\055"}, {0xFDBB, "\012\004\255\047\047\032"}, {0xFDBC, "\012\004\207\115\047\032"}, {0xFDBD, "\012\004\216\115\111\032"}, {0xFDBE, "\012\004\115\111\056\032"}, {0xFDBF, "\012\004\111\115\056\032"}, {0xFDC0, "\012\004\047\115\056\032"}, {0xFDC1, "\012\004\353\047\056\032"}, {0xFDC2, "\012\004\326\111\056\032"}, {0xFDC3, "\012\004\255\047\047\055"}, {0xFDC4, "\012\004\355\031\115\047\055"}, {0xFDC5, "\012\004\355\007\047\047\055"}, {0xFDC6, "\012\004\246\171\056\032"}, {0xFDC7, "\012\004\216\115\056\032"}, {0xFDF0, "\012\004\361\303\036\362\064\355\250\057\360\160\360\145"}, {0xFDF1, "\012\004\373\335\036\362\064\355\250\057\360\160\360\145"}, {0xFDF2, "\012\004\362\320\036"}, {0xFDF3, "\012\004\362\313\036"}, {0xFDF4, "\012\004\371\013\036"}, {0xFDF5, "\012\004\374\220\036"}, {0xFDF6, "\012\004\374\045\036"}, {0xFDF7, "\012\004\360\050\036"}, {0xFDF8, "\012\004\362\106\036"}, {0xFDF9, "\012\004\361\303\036"}, {0xFDFA, "\012\004\374\221\360\050\362\106"}, {0xFDFB, "\012\004\365\304"}, {0xFE20, "\026\355\001\052\007\012"}, {0xFE21, "\026\355\001\053\007\012"}, {0xFE22, "\026\355\001\052\007\173\070"}, {0xFE23, "\026\355\001\053\007\173\070"}, {0xFE30, "\265\007\355\024\007\037\357\120\070\203"}, {0xFE31, "\265\007\355\024\007\355\011\356\006\203"}, {0xFE32, "\265\007\355\024\007\355\011\357\133\203"}, {0xFE33, "\265\007\355\024\007\355\011\101\203"}, {0xFE34, "\265\007\355\024\007\355\011\101\356\234\203"}, {0xFE35, "\265\007\355\024\007\355\125\052\257"}, {0xFE36, "\265\007\355\024\007\355\125\053\257"}, {0xFE37, "\265\007\355\024\360\155\052\257"}, {0xFE38, "\265\007\355\024\360\155\053\257"}, {0xFE39, "\265\007\355\024\007\122\052\203\013\355\372"}, {0xFE3A, "\265\007\355\024\007\122\222\203\013\355\372"}, {0xFE3B, "\265\007\355\024\007\122\052\356\100\210\203"}, {0xFE3C, "\265\007\355\024\007\122\222\356\100\210\203"}, {0xFE3D, "\265\007\355\024\007\122\070\052\203"}, {0xFE3E, "\265\007\355\024\007\122\070\222\203"}, {0xFE3F, "\265\007\355\024\007\122\052\203"}, {0xFE40, "\265\007\355\024\007\122\222\203"}, {0xFE41, "\265\007\355\024\007\122\203\052\013\275"}, {0xFE42, "\265\007\355\024\007\122\203\222\013\275"}, {0xFE43, "\265\007\355\024\007\122\147\203\052\013\275"}, {0xFE44, "\265\007\355\024\007\122\147\203\222\013\275"}, {0xFE49, "\355\011\102\013\357\011"}, {0xFE4A, "\355\011\102\044\037\360\114"}, {0xFE4B, "\355\011\102\356\234"}, {0xFE4C, "\355\011\102\070\356\234"}, {0xFE4D, "\355\011\101\165\357\011"}, {0xFE4E, "\355\011\101\044\037\360\114"}, {0xFE4F, "\355\011\101\356\234"}, {0xFE50, "\332\005"}, {0xFE51, "\332\076\005"}, {0xFE52, "\037\005"}, {0xFE53, "\264"}, {0xFE54, "\356\106\005"}, {0xFE55, "\355\105\005"}, {0xFE56, "\037\355\315\005"}, {0xFE57, "\037\355\314\005"}, {0xFE58, "\355\130\355\317\356\006\005"}, {0xFE59, "\355\125\052\005"}, {0xFE5A, "\355\125\053\005"}, {0xFE5B, "\356\053\052\005"}, {0xFE5C, "\356\053\053\005"}, {0xFE5D, "\122\052\013\355\372\005"}, {0xFE5E, "\122\222\013\355\372\005"}, {0xFE5F, "\357\114\005"}, {0xFE60, "\357\002\005"}, {0xFE61, "\355\117\005"}, {0xFE62, "\057\215\005"}, {0xFE63, "\355\011\005"}, {0xFE64, "\057\322\044\005"}, {0xFE65, "\057\346\044\005"}, {0xFE66, "\057\174\044\005"}, {0xFE67, "\264"}, {0xFE68, "\247\355\046\356\075\005"}, {0xFE69, "\022\357\143\005"}, {0xFE6A, "\022\355\061\355\247\005"}, {0xFE6B, "\357\067\005"}, {0xFE70, "\356\200\004\036"}, {0xFE71, "\361\361\356\200\013\040\004"}, {0xFE72, "\357\124\004\036"}, {0xFE74, "\357\220\036\004"}, {0xFE76, "\356\177\036\004"}, {0xFE77, "\356\177\131\004"}, {0xFE78, "\356\161\036\004"}, {0xFE79, "\356\161\131\004"}, {0xFE7A, "\356\217\036\004"}, {0xFE7B, "\356\217\131\004"}, {0xFE7C, "\355\156\036\004"}, {0xFE7D, "\355\156\131\004"}, {0xFE7E, "\357\040\036\004"}, {0xFE7F, "\357\040\131\004"}, {0xFE80, "\001\004\156\036"}, {0xFE81, "\001\004\100\356\024\013\040\036"}, {0xFE82, "\001\004\100\356\024\013\040\032"}, {0xFE83, "\001\004\100\156\013\040\036"}, {0xFE84, "\001\004\032"}, {0xFE85, "\001\004\355\053\156\013\040\036"}, {0xFE86, "\001\004\355\053\156\013\040\032"}, {0xFE87, "\001\004\100\156\043\036"}, {0xFE88, "\001\004\100\156\043\032"}, {0xFE89, "\001\004\056\156\013\040\036"}, {0xFE8A, "\001\004\056\156\013\040\032"}, {0xFE8B, "\001\004\056\156\013\040\055"}, {0xFE8C, "\001\004\056\156\013\040\131"}, {0xFE8D, "\001\004\100\036"}, {0xFE8E, "\001\004\100\032"}, {0xFE8F, "\001\004\326\036"}, {0xFE90, "\001\004\326\032"}, {0xFE91, "\001\004\326\055"}, {0xFE92, "\001\004\326\131"}, {0xFE93, "\001\004\234\356\356\036"}, {0xFE94, "\001\004\234\356\356\032"}, {0xFE95, "\001\004\234\036"}, {0xFE96, "\001\004\234\032"}, {0xFE97, "\001\004\234\055"}, {0xFE98, "\001\004\234\131"}, {0xFE99, "\001\004\355\062\036"}, {0xFE9A, "\001\004\355\062\032"}, {0xFE9B, "\001\004\355\062\055"}, {0xFE9C, "\001\004\355\062\131"}, {0xFE9D, "\001\004\115\036"}, {0xFE9E, "\001\004\115\032"}, {0xFE9F, "\001\004\115\055"}, {0xFEA0, "\001\004\115\131"}, {0xFEA1, "\001\004\111\036"}, {0xFEA2, "\001\004\111\032"}, {0xFEA3, "\001\004\111\055"}, {0xFEA4, "\001\004\111\131"}, {0xFEA5, "\001\004\171\036"}, {0xFEA6, "\001\004\171\032"}, {0xFEA7, "\001\004\171\055"}, {0xFEA8, "\001\004\171\131"}, {0xFEA9, "\001\004\355\320\036"}, {0xFEAA, "\001\004\355\320\032"}, {0xFEAB, "\001\004\356\323\036"}, {0xFEAC, "\001\004\356\323\032"}, {0xFEAD, "\001\004\345\036"}, {0xFEAE, "\001\004\345\032"}, {0xFEAF, "\001\004\360\021\036"}, {0xFEB0, "\001\004\360\021\032"}, {0xFEB1, "\001\004\246\036"}, {0xFEB2, "\001\004\246\032"}, {0xFEB3, "\001\004\246\055"}, {0xFEB4, "\001\004\246\131"}, {0xFEB5, "\001\004\250\036"}, {0xFEB6, "\001\004\250\032"}, {0xFEB7, "\001\004\250\055"}, {0xFEB8, "\001\004\250\131"}, {0xFEB9, "\001\004\355\007\036"}, {0xFEBA, "\001\004\355\007\032"}, {0xFEBB, "\001\004\355\007\055"}, {0xFEBC, "\001\004\355\007\131"}, {0xFEBD, "\001\004\352\036"}, {0xFEBE, "\001\004\352\032"}, {0xFEBF, "\001\004\352\055"}, {0xFEC0, "\001\004\352\131"}, {0xFEC1, "\001\004\355\050\036"}, {0xFEC2, "\001\004\355\050\032"}, {0xFEC3, "\001\004\355\050\055"}, {0xFEC4, "\001\004\355\050\131"}, {0xFEC5, "\001\004\355\370\036"}, {0xFEC6, "\001\004\355\370\032"}, {0xFEC7, "\001\004\355\370\055"}, {0xFEC8, "\001\004\355\370\131"}, {0xFEC9, "\001\004\355\031\036"}, {0xFECA, "\001\004\355\031\032"}, {0xFECB, "\001\004\355\031\055"}, {0xFECC, "\001\004\355\031\131"}, {0xFECD, "\001\004\355\065\036"}, {0xFECE, "\001\004\355\065\032"}, {0xFECF, "\001\004\355\065\055"}, {0xFED0, "\001\004\355\065\131"}, {0xFED1, "\001\004\353\036"}, {0xFED2, "\001\004\353\032"}, {0xFED3, "\001\004\353\055"}, {0xFED4, "\001\004\353\131"}, {0xFED5, "\001\004\355\041\036"}, {0xFED6, "\001\004\355\041\032"}, {0xFED7, "\001\004\355\041\055"}, {0xFED8, "\001\004\355\041\131"}, {0xFED9, "\001\004\255\036"}, {0xFEDA, "\001\004\255\032"}, {0xFEDB, "\001\004\255\055"}, {0xFEDC, "\001\004\255\131"}, {0xFEDD, "\001\004\207\036"}, {0xFEDE, "\001\004\207\032"}, {0xFEDF, "\001\004\207\055"}, {0xFEE0, "\001\004\207\131"}, {0xFEE1, "\001\004\047\036"}, {0xFEE2, "\001\004\047\032"}, {0xFEE3, "\001\004\047\055"}, {0xFEE4, "\001\004\047\131"}, {0xFEE5, "\001\004\216\036"}, {0xFEE6, "\001\004\216\032"}, {0xFEE7, "\001\004\216\055"}, {0xFEE8, "\001\004\216\131"}, {0xFEE9, "\001\004\232\036"}, {0xFEEA, "\001\004\232\032"}, {0xFEEB, "\001\004\232\055"}, {0xFEEC, "\001\004\232\131"}, {0xFEED, "\001\004\355\053\036"}, {0xFEEE, "\001\004\355\053\032"}, {0xFEEF, "\001\004\100\160\036"}, {0xFEF0, "\001\004\100\160\032"}, {0xFEF1, "\001\004\056\036"}, {0xFEF2, "\001\004\056\032"}, {0xFEF3, "\001\004\056\055"}, {0xFEF4, "\001\004\056\131"}, {0xFEF5, "\012\004\207\100\356\024\013\040\036"}, {0xFEF6, "\012\004\207\100\356\024\013\040\032"}, {0xFEF7, "\012\004\207\100\156\013\040\036"}, {0xFEF8, "\012\004\207\100\156\013\040\032"}, {0xFEF9, "\012\004\207\100\156\043\036"}, {0xFEFA, "\012\004\207\100\156\043\032"}, {0xFEFB, "\012\004\207\100\036"}, {0xFEFC, "\012\004\207\100\032"}, {0xFEFF, "\355\075\357\203\272\105"}, {0xFF01, "\037\355\314\073\105"}, {0xFF02, "\355\137\073\105"}, {0xFF03, "\357\114\073\105"}, {0xFF04, "\022\357\143\073\105"}, {0xFF05, "\022\355\061\355\247\073\105"}, {0xFF06, "\357\002\073\105"}, {0xFF07, "\355\310\073\105"}, {0xFF08, "\355\125\052\073\105"}, {0xFF09, "\355\125\053\073\105"}, {0xFF0A, "\355\117\073\105"}, {0xFF0B, "\057\215\073\105"}, {0xFF0C, "\332\073\105"}, {0xFF0D, "\355\011\073\105"}, {0xFF0E, "\037\073\105"}, {0xFF0F, "\247\355\046\073\105"}, {0xFF10, "\024\333\073\105"}, {0xFF11, "\024\107\073\105"}, {0xFF12, "\024\127\073\105"}, {0xFF13, "\024\136\073\105"}, {0xFF14, "\024\221\073\105"}, {0xFF15, "\024\231\073\105"}, {0xFF16, "\024\256\073\105"}, {0xFF17, "\024\253\073\105"}, {0xFF18, "\024\227\073\105"}, {0xFF19, "\024\260\073\105"}, {0xFF1A, "\355\105\360\140\073\105"}, {0xFF1B, "\356\106\073\105"}, {0xFF1C, "\057\322\044\073\105"}, {0xFF1D, "\057\174\044\073\105"}, {0xFF1E, "\057\346\044\073\105"}, {0xFF1F, "\037\355\315\073\105"}, {0xFF20, "\357\067\073\105"}, {0xFF21, "\001\010\006\063\073\105"}, {0xFF22, "\001\010\006\336\073\105"}, {0xFF23, "\001\010\006\315\073\105"}, {0xFF24, "\001\010\006\277\073\105"}, {0xFF25, "\001\010\006\130\073\105"}, {0xFF26, "\001\010\006\355\064\073\105"}, {0xFF27, "\001\010\006\270\073\105"}, {0xFF28, "\001\010\006\240\073\105"}, {0xFF29, "\001\010\006\103\073\105"}, {0xFF2A, "\001\010\006\355\055\073\105"}, {0xFF2B, "\001\010\006\354\073\105"}, {0xFF2C, "\001\010\006\212\073\105"}, {0xFF2D, "\001\010\006\300\073\105"}, {0xFF2E, "\001\010\006\242\073\105"}, {0xFF2F, "\001\010\006\064\073\105"}, {0xFF30, "\001\010\006\355\023\073\105"}, {0xFF31, "\001\010\006\355\175\073\105"}, {0xFF32, "\001\010\006\170\073\105"}, {0xFF33, "\001\010\006\224\073\105"}, {0xFF34, "\001\010\006\262\073\105"}, {0xFF35, "\001\010\006\132\073\105"}, {0xFF36, "\001\010\006\355\027\073\105"}, {0xFF37, "\001\010\006\351\073\105"}, {0xFF38, "\001\010\006\355\030\073\105"}, {0xFF39, "\001\010\006\267\073\105"}, {0xFF3A, "\001\010\006\273\073\105"}, {0xFF3B, "\122\052\073\105"}, {0xFF3C, "\247\355\046\356\075\073\105"}, {0xFF3D, "\122\222\073\105"}, {0xFF3E, "\021\072\073\105"}, {0xFF3F, "\355\011\101\073\105"}, {0xFF40, "\021\067\073\105"}, {0xFF41, "\001\005\006\063\073\105"}, {0xFF42, "\001\005\006\336\073\105"}, {0xFF43, "\001\005\006\315\073\105"}, {0xFF44, "\001\005\006\277\073\105"}, {0xFF45, "\001\005\006\130\073\105"}, {0xFF46, "\001\005\006\355\064\073\105"}, {0xFF47, "\001\005\006\270\073\105"}, {0xFF48, "\001\005\006\240\073\105"}, {0xFF49, "\001\005\006\103\073\105"}, {0xFF4A, "\001\005\006\355\055\073\105"}, {0xFF4B, "\001\005\006\354\073\105"}, {0xFF4C, "\001\005\006\212\073\105"}, {0xFF4D, "\001\005\006\300\073\105"}, {0xFF4E, "\001\005\006\242\073\105"}, {0xFF4F, "\001\005\006\064\073\105"}, {0xFF50, "\001\005\006\355\023\073\105"}, {0xFF51, "\001\005\006\355\175\073\105"}, {0xFF52, "\001\005\006\170\073\105"}, {0xFF53, "\001\005\006\224\073\105"}, {0xFF54, "\001\005\006\262\073\105"}, {0xFF55, "\001\005\006\132\073\105"}, {0xFF56, "\001\005\006\355\027\073\105"}, {0xFF57, "\001\005\006\351\073\105"}, {0xFF58, "\001\005\006\355\030\073\105"}, {0xFF59, "\001\005\006\267\073\105"}, {0xFF5A, "\001\005\006\273\073\105"}, {0xFF5B, "\356\053\052\073\105"}, {0xFF5C, "\244\257\073\105"}, {0xFF5D, "\356\053\053\073\105"}, {0xFF5E, "\173\073\105"}, {0xFF61, "\037\076\071"}, {0xFF62, "\122\052\013\275\071"}, {0xFF63, "\122\222\013\275\071"}, {0xFF64, "\332\076\071"}, {0xFF65, "\037\355\141\045\071"}, {0xFF66, "\002\045\355\152\071"}, {0xFF67, "\002\045\176\063\071"}, {0xFF68, "\002\045\176\103\071"}, {0xFF69, "\002\045\176\132\071"}, {0xFF6A, "\002\045\176\130\071"}, {0xFF6B, "\002\045\176\064\071"}, {0xFF6C, "\002\045\176\307\071"}, {0xFF6D, "\002\045\176\355\366\071"}, {0xFF6E, "\002\045\176\355\042\071"}, {0xFF6F, "\002\045\176\355\302\071"}, {0xFF70, "\205\356\077\007\355\177\357\015\071"}, {0xFF71, "\002\045\063\071"}, {0xFF72, "\002\045\103\071"}, {0xFF73, "\002\045\132\071"}, {0xFF74, "\002\045\130\071"}, {0xFF75, "\002\045\064\071"}, {0xFF76, "\002\045\241\071"}, {0xFF77, "\002\045\355\334\071"}, {0xFF78, "\002\045\356\023\071"}, {0xFF79, "\002\045\355\333\071"}, {0xFF7A, "\002\045\355\171\071"}, {0xFF7B, "\002\045\355\006\071"}, {0xFF7C, "\002\045\355\277\071"}, {0xFF7D, "\002\045\356\255\071"}, {0xFF7E, "\002\045\356\044\071"}, {0xFF7F, "\002\045\355\072\071"}, {0xFF80, "\002\045\313\071"}, {0xFF81, "\002\045\355\221\071"}, {0xFF82, "\002\045\355\302\071"}, {0xFF83, "\002\045\356\127\071"}, {0xFF84, "\002\045\355\200\071"}, {0xFF85, "\002\045\355\002\071"}, {0xFF86, "\002\045\245\071"}, {0xFF87, "\002\045\356\027\071"}, {0xFF88, "\002\045\355\142\071"}, {0xFF89, "\002\045\355\115\071"}, {0xFF8A, "\002\045\316\071"}, {0xFF8B, "\002\045\355\257\071"}, {0xFF8C, "\002\045\356\340\071"}, {0xFF8D, "\002\045\356\074\071"}, {0xFF8E, "\002\045\355\111\071"}, {0xFF8F, "\002\045\301\071"}, {0xFF90, "\002\045\355\232\071"}, {0xFF91, "\002\045\355\113\071"}, {0xFF92, "\002\045\355\336\071"}, {0xFF93, "\002\045\355\140\071"}, {0xFF94, "\002\045\307\071"}, {0xFF95, "\002\045\355\366\071"}, {0xFF96, "\002\045\355\042\071"}, {0xFF97, "\002\045\324\071"}, {0xFF98, "\002\045\355\351\071"}, {0xFF99, "\002\045\356\041\071"}, {0xFF9A, "\002\045\356\037\071"}, {0xFF9B, "\002\045\355\176\071"}, {0xFF9C, "\002\045\355\052\071"}, {0xFF9D, "\002\045\242\071"}, {0xFF9E, "\205\045\007\355\177\356\270\071"}, {0xFF9F, "\205\045\007\355\177\357\326\071"}, {0xFFA0, "\356\147\014\071"}, {0xFFA1, "\001\014\355\335\071"}, {0xFFA2, "\001\014\357\042\071"}, {0xFFA3, "\001\014\357\223\071"}, {0xFFA4, "\001\014\355\341\071"}, {0xFFA5, "\001\014\357\250\071"}, {0xFFA6, "\001\014\357\247\071"}, {0xFFA7, "\001\014\355\362\071"}, {0xFFA8, "\001\014\357\342\071"}, {0xFFA9, "\001\014\355\352\071"}, {0xFFAA, "\001\014\357\311\071"}, {0xFFAB, "\001\014\357\312\071"}, {0xFFAC, "\001\014\357\314\071"}, {0xFFAD, "\001\014\357\315\071"}, {0xFFAE, "\001\014\357\316\071"}, {0xFFAF, "\001\014\357\313\071"}, {0xFFB0, "\001\014\357\025\071"}, {0xFFB1, "\001\014\355\337\071"}, {0xFFB2, "\001\014\355\347\071"}, {0xFFB3, "\001\014\357\340\071"}, {0xFFB4, "\001\014\357\004\071"}, {0xFFB5, "\001\014\355\353\071"}, {0xFFB6, "\001\014\357\043\071"}, {0xFFB7, "\001\014\355\331\071"}, {0xFFB8, "\001\014\355\300\071"}, {0xFFB9, "\001\014\357\341\071"}, {0xFFBA, "\001\014\355\360\071"}, {0xFFBB, "\001\014\355\332\071"}, {0xFFBC, "\001\014\355\357\071"}, {0xFFBD, "\001\014\355\346\071"}, {0xFFBE, "\001\014\355\327\071"}, {0xFFC2, "\001\014\063\071"}, {0xFFC3, "\001\014\356\140\071"}, {0xFFC4, "\001\014\307\071"}, {0xFFC5, "\001\014\360\020\071"}, {0xFFC6, "\001\014\064\071"}, {0xFFC7, "\001\014\220\071"}, {0xFFCA, "\001\014\355\042\071"}, {0xFFCB, "\001\014\355\305\071"}, {0xFFCC, "\001\014\310\071"}, {0xFFCD, "\001\014\355\052\071"}, {0xFFCE, "\001\014\360\012\071"}, {0xFFCF, "\001\014\356\013\071"}, {0xFFD2, "\001\014\356\275\071"}, {0xFFD3, "\001\014\113\071"}, {0xFFD4, "\001\014\355\152\071"}, {0xFFD5, "\001\014\356\273\071"}, {0xFFD6, "\001\014\355\364\071"}, {0xFFD7, "\001\014\355\153\071"}, {0xFFDA, "\001\014\360\035\071"}, {0xFFDB, "\001\014\360\036\071"}, {0xFFDC, "\001\014\103\071"}, {0xFFE0, "\022\357\076\073\105"}, {0xFFE1, "\022\361\036\073\105"}, {0xFFE2, "\057\356\366\073\105"}, {0xFFE3, "\175\073\105"}, {0xFFE4, "\244\360\103\073\105"}, {0xFFE5, "\022\362\115\073\105"}, {0xFFE6, "\022\362\107\073\105"}, {0xFFE8, "\244\257\357\236\071"}, {0xFFE9, "\061\015\033\052\071"}, {0xFFEA, "\061\015\050\102\071"}, {0xFFEB, "\061\015\033\053\071"}, {0xFFEC, "\061\015\050\101\071"}, {0xFFED, "\035\210\071"}, {0xFFEE, "\274\147\071"}, {0xFFF9, "\362\330\355\043\357\205"}, {0xFFFA, "\355\047\355\043\357\205"}, {0xFFFB, "\375\166\355\043\357\205"}, {0xFFFC, "\337\007\357\024\365\166"}, {0xFFFD, "\337\007\357\024"}, {0xFFFE, "\360\044\107\360\110"}, {0xFFFF, "\360\044\107\360\110"}, }; recode-3.7.15/src/task.c0000644000175000017500000004047614376145045010452 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2023 Free Software Foundation, Inc. Contributed by François Pinard , 1990. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include #include #include #include #include "minmax.h" #include "xbinary-io.h" bool recode_interrupted = 0; /* set by signal handler when some signal has been received */ /* Input and output helpers. */ /*-------------------------------------------------------------------. | Read one byte from the input text of TASK, or EOF if none remain. | `-------------------------------------------------------------------*/ int recode_get_byte (RECODE_SUBTASK subtask) { if (subtask->input.file) return getc (subtask->input.file); else if (subtask->input.cursor == subtask->input.limit) return EOF; else return (unsigned char) *subtask->input.cursor++; } /*-------------------------------------------------------------------. | Read N bytes from the input text of TASK into DATA; return number | | of bytes read. | `-------------------------------------------------------------------*/ size_t recode_get_bytes (RECODE_SUBTASK subtask, char *data, size_t n) { if (subtask->input.file) return fread (data, 1, n, subtask->input.file); else { size_t bytes_left = subtask->output.limit - subtask->output.cursor; size_t bytes_to_copy = MIN (n, bytes_left); memcpy (data, subtask->output.cursor, bytes_to_copy); subtask->output.cursor += bytes_to_copy; return bytes_to_copy; } } /*-----------------------------------------. | Write BYTE on the output text for TASK. | `-----------------------------------------*/ void recode_put_byte (char byte, RECODE_SUBTASK subtask) { if (subtask->output.file) { if (putc (byte, subtask->output.file) == EOF) recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); } else if (subtask->output.cursor == subtask->output.limit) recode_put_bytes (&byte, 1, subtask); else *subtask->output.cursor++ = byte; } /*-----------------------------------------------------. | Write N bytes of DATA on the output text for TASK. | `-----------------------------------------------------*/ void recode_put_bytes (const char *data, size_t n, RECODE_SUBTASK subtask) { if (subtask->output.file) { if (fwrite (data, n, 1, subtask->output.file) != 1) { recode_perror (NULL, "fwrite ()"); recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); } } else { if (subtask->output.cursor + n > subtask->output.limit) { RECODE_OUTER outer = subtask->task->request->outer; size_t old_size = subtask->output.limit - subtask->output.buffer; size_t new_size = old_size * 3 / 2 + 40 + n; if (REALLOC (subtask->output.buffer, new_size, char)) { subtask->output.cursor = subtask->output.buffer + old_size; subtask->output.limit = subtask->output.buffer + new_size; } else { recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); return; } } memcpy (subtask->output.cursor, data, n); subtask->output.cursor += n; } } /* Error processing. */ /*------------------------------------------------------------------------. | Handle a given ERROR, while executing STEP within TASK. Return true if | | the abort level has been reached. | `------------------------------------------------------------------------*/ bool recode_if_nogo (enum recode_error new_error, RECODE_SUBTASK subtask) { RECODE_TASK task = subtask->task; if (new_error > task->error_so_far) { task->error_so_far = new_error; task->error_at_step = subtask->step; } return task->error_so_far >= task->abort_level; } /* Recoding execution control. */ /*--------------. | Copy a file. | `--------------*/ static void transform_mere_copy (RECODE_SUBTASK subtask) { if (subtask->input.file) { /* Reading from file. */ char buffer[BUFSIZ]; size_t size; while (size = recode_get_bytes (subtask, buffer, BUFSIZ), size == BUFSIZ) recode_put_bytes (buffer, BUFSIZ, subtask); if (size > 0) recode_put_bytes (buffer, size, subtask); } else /* Reading from buffer. */ if (subtask->input.cursor < subtask->input.limit) recode_put_bytes (subtask->input.cursor, (unsigned) (subtask->input.limit - subtask->input.cursor), subtask); } /*--------------------------------------------------. | Recode a file using a one-to-one recoding table. | `--------------------------------------------------*/ bool recode_transform_byte_to_byte (RECODE_SUBTASK subtask) { unsigned const char *table = (unsigned const char *) subtask->step->step_table; int input_char; while (input_char = recode_get_byte (subtask), input_char != EOF) recode_put_byte (table[input_char], subtask); SUBTASK_RETURN (subtask); } /*---------------------------------------------------. | Recode a file using a one-to-many recoding table. | `---------------------------------------------------*/ bool recode_transform_byte_to_variable (RECODE_SUBTASK subtask) { const char *const *table = (const char *const *) subtask->step->step_table; int input_char; const char *output_string; /* Copy the file through the one to many recoding table. */ while (input_char = recode_get_byte (subtask), input_char != EOF) if (output_string = table[input_char], output_string) while (*output_string) { recode_put_byte (*output_string, subtask); output_string++; } else RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); SUBTASK_RETURN (subtask); } /*------------------------------------------------------------------------. | Execute the conversion sequence for a recoding TASK. If no conversions | | are needed, merely copy the input onto the output. | | Returns zero if the recoding has been found to be non-reversible. | | Tell what goes on if VERBOSE. | `------------------------------------------------------------------------*/ bool recode_perform_task (RECODE_TASK task) { RECODE_CONST_REQUEST request = task->request; struct recode_subtask subtask_block; RECODE_SUBTASK subtask = &subtask_block; #if HAVE_PIPE int pipe_pair[2]; /* pair of file descriptors for a pipe */ pid_t wait_status; /* status returned by wait() */ #endif struct recode_read_write_text input; struct recode_read_write_text output; memset (&input, 0, sizeof (struct recode_read_write_text)); memset (&output, 0, sizeof (struct recode_read_write_text)); memset (subtask, 0, sizeof (struct recode_subtask)); subtask->task = task; subtask->input = task->input; /* Switch stdin and stdout to binary mode unless they are ttys, as this has nasty side-effects on several DOSish systems. For example, the Ctrl-Z character is no longer interpreted as EOF, and thus the poor user cannot signal end of input; the INTR character also doesn't work, so they cannot even interrupt the program, and are stuck. On the other hand, output to the screen doesn't have to follow the end-of-line format exactly, since it is going to be discarded anyway. */ if (task->input.name && !*task->input.name && !isatty (fileno (stdin))) xset_binary_mode (fileno (stdin), O_BINARY); if (task->output.name && !*task->output.name && !isatty (fileno (stdout))) xset_binary_mode (fileno (stdout), O_BINARY); /* Prepare the first input file. */ if (subtask->input.name) { if (!*subtask->input.name) subtask->input.file = stdin; else if (subtask->input.file = fopen (subtask->input.name, "rb"), subtask->input.file == NULL) { recode_perror (NULL, "fopen (%s)", subtask->input.name); recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); SUBTASK_RETURN (subtask); } } /* Execute one pass for each step of the sequence. */ int child_process = -1; /* child process number, -1 if process has not forked */ for (unsigned sequence_index = 0; task->error_so_far < task->abort_level; sequence_index++) { child_process = -1; if (sequence_index > 0) { /* Select the input text for this step. */ subtask->input.buffer = input.buffer; subtask->input.cursor = input.buffer; subtask->input.limit = input.cursor; subtask->input.file = input.file; } /* Select the output text for this step. */ if (sequence_index + 1 < (unsigned)request->sequence_length) { subtask->output = output; subtask->output.cursor = subtask->output.buffer; #if HAVE_PIPE /* Create all subprocesses, from the first to the last, and interconnect them. */ if (pipe (pipe_pair) < 0) { recode_perror (NULL, "pipe ()"); recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); SUBTASK_RETURN (subtask); } xset_binary_mode (pipe_pair[0], O_BINARY); xset_binary_mode (pipe_pair[1], O_BINARY); if (child_process = fork (), child_process < 0) { recode_perror (NULL, "fork ()"); recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); SUBTASK_RETURN (subtask); } if (child_process == 0) { /* The child executes its recoding step, reading from the current input file and writing to the pipe; then it exits. */ if (close (pipe_pair[0]) < 0) { recode_perror (NULL, "close ()"); recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); } if (subtask->output.file = fdopen (pipe_pair[1], "w"), subtask->output.file == NULL) { recode_perror (NULL, "fdopen ()"); recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); } } else { /* The parent saves the read end of the pipe for the next step. */ if (input.file = fdopen (pipe_pair[0], "r"), input.file == NULL) { recode_perror (NULL, "fdopen ()"); recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); close (pipe_pair[0]); close (pipe_pair[1]); SUBTASK_RETURN (subtask); } if (close (pipe_pair[1]) < 0) { recode_perror (NULL, "close ()"); recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); close (pipe_pair[0]); fclose (input.file); SUBTASK_RETURN (subtask); } /* Close the input file when we opened it. */ if (subtask->input.file && subtask->input.name && subtask->input.name[0]) fclose (subtask->input.file); } #endif } else { /* Prepare the final output file. */ subtask->output = task->output; if (subtask->output.name) { if (!*subtask->output.name) subtask->output.file = stdout; else if (subtask->output.file = fopen (subtask->output.name, "wb"), subtask->output.file == NULL) { recode_perror (NULL, "fopen (%s)", subtask->output.name); recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); goto exit; } } } /* Execute one recoding step. */ if (request->sequence_length == 0) { transform_mere_copy (subtask); break; } if (child_process <= 0) { subtask->step = request->sequence_array + sequence_index; (*subtask->step->transform_routine) (subtask); #if HAVE_PIPE break; /* child/top-level process: escape from loop */ #else /* Post-step clean up for memory sequence. */ if (subtask->input.file) { FILE *fp = subtask->input.file; subtask->input.file = NULL; if (fclose (fp) != 0) { recode_perror (NULL, "fclose (%s)", subtask->input.name); recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); goto exit; } } /* Prepare for next step. */ task->swap_input = RECODE_SWAP_UNDECIDED; if (sequence_index + 1 < (unsigned)request->sequence_length) { output = input; input = subtask->output; } #endif } if (sequence_index + 1 == (unsigned)request->sequence_length) break; } /* Final clean up. */ exit: if (subtask->input.file && subtask->input.file != task->input.file && fclose (subtask->input.file) != 0) { recode_perror (NULL, "fclose (%s)", subtask->input.name ? subtask->input.name : "stdin"); recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); } if (subtask->output.file && subtask->output.file != task->output.file && fclose (subtask->output.file) != 0) { recode_perror (NULL, "fclose (%s)", subtask->output.name ? subtask->output.name : "stdout"); recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); } #if HAVE_PIPE /* Child process exits here. */ if (child_process == 0) exit (task->error_so_far < task->fail_level ? EXIT_SUCCESS : EXIT_FAILURE); else { /* Wait on all children, mainly to avoid synchronisation problems on output file contents, but also to reduce the number of zombie processes in case the user recodes many files at once. */ while (wait (&wait_status) > 0) { /* Diagnose and abort on any abnormally terminating child. */ if (!(WIFEXITED (wait_status) || (WIFSIGNALED (wait_status) && WTERMSIG (wait_status) == SIGPIPE))) { recode_error (NULL, _("Child process wait status is 0x%0.2x"), wait_status); recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); SUBTASK_RETURN (subtask); } /* Check for a nonzero exit from the terminating child. */ if (WIFEXITED (wait_status) ? WEXITSTATUS (wait_status) != 0 : WTERMSIG (wait_status) != 0) /* FIXME: It is not very clear what happened in sub-processes. */ if (task->error_so_far < task->fail_level) { task->error_so_far = task->fail_level; task->error_at_step = request->sequence_array + (unsigned)request->sequence_length - 1; } } if (recode_interrupted) /* FIXME: It is not very clear what happened in sub-processes. */ if (task->error_so_far < task->fail_level) { task->error_so_far = task->fail_level; task->error_at_step = request->sequence_array + (unsigned)request->sequence_length - 1; } } #else free (input.buffer); free (output.buffer); #endif task->output = subtask->output; SUBTASK_RETURN (subtask); } /* Library interface. */ /* See the recode manual for a more detailed description of the library interface. */ /*-----------------------. | TASK level functions. | `-----------------------*/ RECODE_TASK recode_new_task (RECODE_CONST_REQUEST request) { RECODE_OUTER outer = request->outer; RECODE_TASK task; if (!ALLOC (task, 1, struct recode_task)) return NULL; task->request = request; task->fail_level = RECODE_NOT_CANONICAL; task->abort_level = RECODE_USER_ERROR; task->error_so_far = RECODE_NO_ERROR; task->swap_input = RECODE_SWAP_UNDECIDED; task->byte_order_mark = true; return task; } bool recode_delete_task (RECODE_TASK task) { free (task); return true; } recode-3.7.15/src/combine.c0000644000175000017500000004122614374760602011116 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1990. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "hash.h" /* FIXME: Softly report errors. */ /* The satisfactory aspects are that Recode is now able to combine a set of sequence of UCS-2 characters into single codes, or explode those single codes into the original sequence. It may happen that many sequences reduce to the same code, one of them is arbitrarily taken as canonical. Any combining sequence of an equivalent set produces the equivalent code, but at explode time, codes are always turned into their canonical sequence. I did not limit the length of a combining sequence, yet it is usually small. Also, I did not put any limit on the number of possibly equivalent sequences. For combining, for each possible partial match in any sequence, there is a state. States corresponding to the scan of a single code are found by hash coding, while other states are linearly searched on a linked list of possible shifts, rooted on the state corresponding to the partial sequence, but without its last code. I expect this combination of methods to execute reasonably fast. Exploding is much simpler, and I merely use hash coding. The less satisfactory aspects are that the user interface is still very crude. For the time being, I merely added a "combined" charset: combining is done by `u2..co', exploding is done by `co..u2'. We surely could do much better, and build on the concept of options (introduced by `+' in the request syntax), Options are probably going to be used for other transliteration matters. Even if built on UCS-2, combining matters would have natural extensions in other _smaller_ charsets, and it would be nice being able to derive the functionality automatically. One difficulty to foresee is that, contrarily to surfaces, options like transliteration or combining _require_ specific charsets (like UCS-2) as a vehicle, and if UCS-2 is not otherwise mandated in the request, we would have to create such an UCS-2 intermediate. On the other hand, if UCS-2 is sandwiched somewhere in a complex series of steps, we should implicitly propagate options towards the UCS-2 step. Even if nothing looks utterly difficult, I guess that for doing it right, a lot of attention and care is needed. Also, I'm pretty sure that scrutinizing the documents (from w3.org or Unicode) that were suggested to us will raise new specific concerns. */ /* Exploding. */ /*---------------------------. | Initialize for exploding. | `---------------------------*/ static size_t combined_hash (const void *void_data, size_t table_size) { const unsigned short *data = (const unsigned short *) void_data; return *data % table_size; } static bool combined_compare (const void *void_first, const void *void_second) { const unsigned short *first = (const unsigned short *) void_first; const unsigned short *second = (const unsigned short *) void_second; return *first == *second; } bool recode_init_explode (RECODE_STEP step, RECODE_CONST_REQUEST request _GL_UNUSED, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { const unsigned short *data = (const unsigned short *) step->step_table; Hash_table *table; if (before_options || after_options) return false; table = hash_initialize (0, NULL, combined_hash, combined_compare, NULL); if (!table) return false; step->step_type = RECODE_EXPLODE_STEP; step->step_table = table; step->step_table_term_routine = (void (*) (void *)) hash_free; if (!data) return true; while (*data != DONE) { if (!hash_insert (table, data)) return false; while (*data != DONE) data++; data++; } return true; } /*------------------------------------. | Execute exploding transformations. | `------------------------------------*/ bool recode_explode_byte_byte (RECODE_SUBTASK subtask) { Hash_table *table = (Hash_table *) subtask->step->step_table; unsigned value; while (value = recode_get_byte (subtask), value != (unsigned)EOF) { unsigned short lookup = value; unsigned short *result = (unsigned short *) hash_lookup (table, &lookup); if (result) { result++; while (*result != DONE && *result != ELSE) { recode_put_byte (*result, subtask); result++; } } else recode_put_byte (value, subtask); } SUBTASK_RETURN (subtask); } bool recode_explode_ucs2_byte (RECODE_SUBTASK subtask) { Hash_table *table = (Hash_table *) subtask->step->step_table; unsigned value; while (recode_get_ucs2 (&value, subtask)) { unsigned short lookup = value; unsigned short *result = (unsigned short *) hash_lookup (table, &lookup); if (result) { result++; while (*result != DONE && *result != ELSE) { recode_put_byte (*result, subtask); result++; } } else recode_put_byte (value, subtask); } SUBTASK_RETURN (subtask); } bool recode_explode_byte_ucs2 (RECODE_SUBTASK subtask) { Hash_table *table = (Hash_table *) subtask->step->step_table; unsigned value; if (value = recode_get_byte (subtask), value != (unsigned)EOF) { if (subtask->task->byte_order_mark) recode_put_ucs2 (BYTE_ORDER_MARK, subtask); while (true) { unsigned short lookup = value; unsigned short *result = (unsigned short *) hash_lookup (table, &lookup); if (result) { result++; while (*result != DONE && *result != ELSE) recode_put_ucs2 (*result++, subtask); } else recode_put_ucs2 (value, subtask); if (value = recode_get_byte (subtask), value == (unsigned)EOF) break; } } SUBTASK_RETURN (subtask); } bool recode_explode_ucs2_ucs2 (RECODE_SUBTASK subtask) { Hash_table *table = (Hash_table *) subtask->step->step_table; unsigned value; if (recode_get_ucs2 (&value, subtask)) { if (subtask->task->byte_order_mark) recode_put_ucs2 (BYTE_ORDER_MARK, subtask); while (true) { unsigned short lookup = value; unsigned short *result = (unsigned short *) hash_lookup (table, &lookup); if (result) { result++; while (*result != DONE && *result != ELSE) recode_put_ucs2 (*result++, subtask); } else recode_put_ucs2 (value, subtask); if (!recode_get_ucs2 (&value, subtask)) break; } } SUBTASK_RETURN (subtask); } /* Combining. */ /* A combining state represents the history of reading one or more characters while forming a combining sequence. Hash coding is used to find an initial state from the first character in a sequence. If that state is not found, the character surely does not start any sequence. For subsequent characters, possible shifted states from the current state are kept on that state, as a linked chain. This combination of methods is expected to behave fast enough in practice. */ struct state { unsigned short character; /* last character seen to trigger this state */ unsigned short result; /* character equivalent to the combination */ struct state *shift; /* list of states for one more character */ struct state *unshift; /* state for one less character (back link) */ struct state *next; /* next state in a linked chain of states */ }; /*---------------------------. | Initialize for combining. | `---------------------------*/ static size_t state_hash (const void *void_data, size_t table_size) { const struct state *data = (const struct state *) void_data; return data->character % table_size; } static bool state_compare (const void *void_first, const void *void_second) { const struct state *first = (const struct state *) void_first; const struct state *second = (const struct state *) void_second; return first->character == second->character; } static void state_free (void *void_state) { struct state *state = (struct state *) void_state; struct state *shift = state->shift; while (shift != NULL) { struct state *next_shift = shift->next; state_free (shift); shift = next_shift; } free (state); } static struct state * prepare_shifted_state (struct state *state, unsigned character, RECODE_CONST_STEP step) { if (state) { struct state *shift = state->shift; while (shift) if (shift->character == character) return shift; else shift = shift->next; if (shift = (struct state *) malloc (sizeof (struct state)), !shift) return NULL; shift->character = character; shift->result = NOT_A_CHARACTER; shift->shift = NULL; shift->unshift = state; shift->next = state->shift; state->shift = shift; return shift; } else { Hash_table *table = (Hash_table *) step->step_table; struct state lookup; lookup.character = character; state = (struct state *) hash_lookup (table, &lookup); if (!state) { if (state = (struct state *) malloc (sizeof (struct state)), !state) return NULL; state->character = character; state->result = character; state->shift = NULL; state->unshift = NULL; state->next = NULL; if (!hash_insert (table, state)) return NULL; } return state; } } static struct state * find_shifted_state (struct state *state, unsigned character, RECODE_CONST_STEP step) { if (state) { struct state *shift = state->shift; while (shift) if (shift->character == character) return shift; else shift = shift->next; return NULL; } else { Hash_table *table = (Hash_table *) step->step_table; struct state lookup; lookup.character = character; return (struct state *) hash_lookup (table, &lookup); } } bool recode_init_combine (RECODE_STEP step, RECODE_CONST_REQUEST request _GL_UNUSED, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { const unsigned short *data = (const unsigned short *) step->step_table; Hash_table *table; if (before_options || after_options) return false; table = hash_initialize (0, NULL, state_hash, state_compare, state_free); if (!table) return false; step->step_type = RECODE_COMBINE_STEP; step->step_table = table; step->step_table_term_routine = (void (*) (void *)) hash_free; if (!data) return true; while (*data != DONE) { unsigned short result = *data++; struct state *state = NULL; while (*data != DONE) if (*data == ELSE) { if (state) { if (state->result != NOT_A_CHARACTER) abort (); state->result = result; state = NULL; } data++; } else { state = prepare_shifted_state (state, *data++, step); if (!state) return false; } if (state) { if (state->result != NOT_A_CHARACTER && state->result != state->character) abort (); state->result = result; } data++; } return true; } /*------------------. | Handle bactrack. | `------------------*/ /* When we cannot shift into a state allowing a terminal resulting character, we ought to backtrack until such a terminal character if found, then output this resulting character for representing the partial sequence which ends with that state. Then, we merely copy characters seen after that state. This approach does not properly scan for combinings which might exist in the copied characters, presuming that this case does not occur in practice. If we later find that it does, backtracing will have to be revisited. */ static void backtrack_byte (struct state *state, RECODE_SUBTASK subtask) { if (state->result == NOT_A_CHARACTER) { backtrack_byte (state->unshift, subtask); recode_put_byte (state->character, subtask); } else recode_put_byte (state->result, subtask); } static void backtrack_ucs2 (struct state *state, RECODE_SUBTASK subtask) { if (state->result == NOT_A_CHARACTER) { backtrack_ucs2 (state->unshift, subtask); recode_put_ucs2 (state->character, subtask); } else recode_put_ucs2 (state->result, subtask); } /*------------------------------------. | Execute combining transformations. | `------------------------------------*/ bool recode_combine_byte_byte (RECODE_SUBTASK subtask) { struct state *state = NULL; unsigned value; if (value = recode_get_byte (subtask), value != (unsigned)EOF) { while (true) { struct state *shift = find_shifted_state (state, value, subtask->step); if (shift) { state = shift; if (value = recode_get_byte (subtask), value == (unsigned)EOF) break; } else if (state) { if (state->result == NOT_A_CHARACTER) backtrack_byte (state, subtask); else recode_put_byte (state->result, subtask); state = NULL; } else { recode_put_byte (value, subtask); if (value = recode_get_byte (subtask), value == (unsigned)EOF) break; } } if (state) { if (state->result == NOT_A_CHARACTER) backtrack_byte (state, subtask); else recode_put_byte (state->result, subtask); } } SUBTASK_RETURN (subtask); } bool recode_combine_ucs2_byte (RECODE_SUBTASK subtask) { struct state *state = NULL; unsigned value; if (recode_get_ucs2 (&value, subtask)) { while (true) { struct state *shift = find_shifted_state (state, value, subtask->step); if (shift) { state = shift; if (!recode_get_ucs2 (&value, subtask)) break; } else if (state) { if (state->result == NOT_A_CHARACTER) backtrack_byte (state, subtask); else recode_put_byte (state->result, subtask); state = NULL; } else { recode_put_byte (value, subtask); if (!recode_get_ucs2 (&value, subtask)) break; } } if (state) { if (state->result == NOT_A_CHARACTER) backtrack_byte (state, subtask); else recode_put_byte (state->result, subtask); } } SUBTASK_RETURN (subtask); } bool recode_combine_byte_ucs2 (RECODE_SUBTASK subtask) { unsigned value; if (value = recode_get_byte (subtask), value != (unsigned)EOF) { struct state *state = NULL; if (subtask->task->byte_order_mark) recode_put_ucs2 (BYTE_ORDER_MARK, subtask); while (true) { struct state *shift = find_shifted_state (state, value, subtask->step); if (shift) { state = shift; if (value = recode_get_byte (subtask), value == (unsigned)EOF) break; } else if (state) { if (state->result == NOT_A_CHARACTER) backtrack_ucs2 (state, subtask); else recode_put_ucs2 (state->result, subtask); state = NULL; } else { recode_put_ucs2 (value, subtask); if (value = recode_get_byte (subtask), value == (unsigned)EOF) break; } } if (state) { if (state->result == NOT_A_CHARACTER) backtrack_ucs2 (state, subtask); else recode_put_ucs2 (state->result, subtask); } } SUBTASK_RETURN (subtask); } bool recode_combine_ucs2_ucs2 (RECODE_SUBTASK subtask) { unsigned value; if (recode_get_ucs2 (&value, subtask)) { struct state *state = NULL; if (subtask->task->byte_order_mark) recode_put_ucs2 (BYTE_ORDER_MARK, subtask); while (true) { struct state *shift = find_shifted_state (state, value, subtask->step); if (shift) { state = shift; if (!recode_get_ucs2 (&value, subtask)) break; } else if (state) { if (state->result == NOT_A_CHARACTER) backtrack_ucs2 (state, subtask); else recode_put_ucs2 (state->result, subtask); state = NULL; } else { recode_put_ucs2 (value, subtask); if (!recode_get_ucs2 (&value, subtask)) break; } } if (state) { if (state->result == NOT_A_CHARACTER) backtrack_ucs2 (state, subtask); else recode_put_ucs2 (state->result, subtask); } } SUBTASK_RETURN (subtask); } recode-3.7.15/src/mergelex.py0000644000175000017500000001021014374760602011505 # -*- coding: utf-8 -*- # Conversion of files between different charsets and surfaces. # Copyright © 1990-2019 Free Software Foundation, Inc. # François Pinard , 1990. # # 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 3, 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, see . # This Python script merges several Flex sources intended for Recode. # It requires Flex 2.5 or later. import re, sys # Initial comments. section0 = [ "/* This file is generated automatically by `mergelex.py'. */\n"] # Flex and C declarations. section1 = '''\ %option nounput %option noyywrap %{ #include "common.h" static RECODE_CONST_REQUEST request; static RECODE_SUBTASK subtask; #define YY_INPUT(buf, result, max_size) \ { \ int c = recode_get_byte (subtask); \ result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \ } %} '''.splitlines(True) # Flex rules. section2 = '''\ %% <> { return 1; } '''.splitlines(True) # Rest of C code. section3 = ['%%\n'] within_C_code = False definitions = {} section = 3 while True: line = sys.stdin.readline() if not line: break # A `/* Step name: NAME. */' line indicates the start of a new file. # Generate an interface routine. The step name is saved for broketed # prefixes in rules. match = re.match(r'/\* Step name: (.*)\. \*/', line) if match: section = 1 step_name = match.group(1) section3.append('''\ static bool transform_%s (RECODE_SUBTASK subtask_argument) { subtask = subtask_argument; request = subtask->task->request; yy_init = 0; yyin = subtask->input.file; yyout = subtask->output.file; BEGIN %s; return yylex (); } ''' % (step_name, step_name)) continue # In section 1, any %% in column 1 signals the beginning of lex rules. # Remove all white lines. if section == 1: if re.match('^[ \t]*$', line): continue if line[:2] == '%%': section1.append('%%x %s\n' % step_name) section = 2 section2.append('\n' '<%s>{\n' % step_name) continue # A %{ comment in column 1 signals the start of a C code section ended # by a %} line. if line[:2] == '%{': within_C_code = True section1.append('\n') section1.append(line) continue if line[:2] == '%}': section1.append(line) section1.append('\n') within_C_code = False continue if within_C_code: section1.append(line) continue # Section 1 declarations are studied and copied, once each. # Conflicting declaractions are reported at beginning of output. if section == 1 and line[0] not in (' ', '\t', '\n'): key, rest = line.split(None, 1) if key in definitions: if definitions[key] != line: sys.stderr.write("** Conflicting definition: %s" % line) else: definitions[key] = line section1.append(line) continue # In section 2, a %% in column 1 starts section 3. if section == 2: if line[:2] == '%%': section2.append('}\n') section = 3 else: section2.append(line) continue # Section 3 contains C code, all copied verbatim. if section == 3: section3.append(line) continue # At end, output all temporary buffers. This produces the generated # interfaces: one routine for each step name. if section == 2: section2.append('}\n') sys.stdout.writelines(section0) sys.stdout.writelines(section1) sys.stdout.writelines(section2) sys.stdout.writelines(section3) recode-3.7.15/src/ansellat1.l0000644000175000017500000001726214374760602011402 /* * Copyright (c) 1998, Wolfram Schneider * Konrad Zuse Zentrum für Informationstechnik Berlin. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * * 8-Bit ANSEL to ISO8859-1 conversion. This file support only a subset * of Z39.47-1993 (ANSEL). It is incomplete due the lack of free * available documentation ;-( * * http://www.niso.org/pccodes.htm * Z39.47-1993 Extended Latin Alphabet Coded Character Set for * Bibliographic Use (ANSEL) * * Character sets are a basic building block of automated information * systems. Z39.47 provides a table of coded values for the * representation of characters of the extended Latin alphabet in * machine-readable form for thirty-five languages written in the Latin * alphabet and for fifty-one romanized languages. * * 27 pp. ISBN: 1-880124-02-5 Price: $40.00 * * * http://wwnet.com/~krugman1/gentext/gedstand.txt * 8-Bit ANSEL * * The 8-Bit ANSEL (American National Standard for Extended Latin * Alphabet Coded Character Set for Bibliographic Use, Z39.47, 1985 * copyright) is the default character set for GEDCOM. [...] * The ANSEL standard * specifies an extended 8-bit configuration (above 128) to represent the * spacing and non-spacing graphic characters that make up most of the * Latin based languages. ANSEL is a super-set of ASCII. The standard * ASCII characters including the control characters are preserved. * * ANSEL is known by two other names: (1) ANSI Z39.47-1985) and (2) the * American Library Association character set, used in library systems * worldwide, including the MARC (MAchine- Readable Catalog) format. * * A description of the codes for the ANSEL character set has been * reproduced with permission and is included with the printed version of * The GEDCOM Standard. The description of ANSEL codes is not included in * the electronic version. This description may be purchased from the * American National Standards Institute at 1430 Broadway, New York, * N.Y. 10018. The description of the ANSEL character set standard * includes the following: * * * An 8-Bit Code Table showing the ASCII and extended ANSEL codes * * An explanation or legend of these codes * * A chart that identifies the ANSEL Non-spacing Graphic Characters * * A chart that identifies the ASCII Control Characters * * A chart that identifies the ASCII Graphic Characters * * Character-set codes 0 through 127 are the same for 8-Bit ANSEL and * 8-Bit ASCII (USA version-- ANSI 8-Bit). Character-set codes 128 * through 255 are unique to the ANSEL character set. * * Changes * ======== * Fix ansel characters * * Capital C with cedilla * Lower case C with cedilla * Capital ETH * Lower case eth * Capital O with slash * Capital Y with acute accent * Lower case Icelandic thorn * capital OE ligature * * Thanks to Larry E. Dixson * */ /* Step name: ansel_latin1. */ %% \241 { recode_put_byte (76, subtask); } \242 { recode_put_byte (216, subtask); } \243 { recode_put_byte (208, subtask); } \244 { recode_put_byte (222, subtask); } \245 { recode_put_byte (198, subtask); } \253 { recode_put_byte (177, subtask); } \261 { recode_put_byte (108, subtask); } \262 { recode_put_byte (248, subtask); } \263 { recode_put_byte (240, subtask); } \264 { recode_put_byte (254, subtask); } \265 { recode_put_byte (230, subtask); } \266 { recode_put_byte (111, subtask); } \271 { recode_put_byte (163, subtask); } \303 { recode_put_byte (169, subtask); } \340 { recode_put_byte (191, subtask); } \341A { recode_put_byte (192, subtask); } \341E { recode_put_byte (200, subtask); } \341I { recode_put_byte (204, subtask); } \341O { recode_put_byte (210, subtask); } \341U { recode_put_byte (217, subtask); } \341a { recode_put_byte (224, subtask); } \341e { recode_put_byte (232, subtask); } \341i { recode_put_byte (236, subtask); } \341o { recode_put_byte (242, subtask); } \341u { recode_put_byte (249, subtask); } \342A { recode_put_byte (193, subtask); } \342E { recode_put_byte (201, subtask); } \342I { recode_put_byte (205, subtask); } \342O { recode_put_byte (211, subtask); } \342U { recode_put_byte (218, subtask); } \342Y { recode_put_byte (221, subtask); } \342a { recode_put_byte (225, subtask); } \342e { recode_put_byte (233, subtask); } \342i { recode_put_byte (237, subtask); } \342o { recode_put_byte (243, subtask); } \342u { recode_put_byte (250, subtask); } \342y { recode_put_byte (253, subtask); } \343A { recode_put_byte (194, subtask); } \343E { recode_put_byte (202, subtask); } \343I { recode_put_byte (206, subtask); } \343O { recode_put_byte (212, subtask); } \343U { recode_put_byte (219, subtask); } \343a { recode_put_byte (226, subtask); } \343e { recode_put_byte (234, subtask); } \343i { recode_put_byte (238, subtask); } \343o { recode_put_byte (244, subtask); } \343u { recode_put_byte (251, subtask); } \344A { recode_put_byte (195, subtask); } \344O { recode_put_byte (213, subtask); } \344N { recode_put_byte (209, subtask); } \344a { recode_put_byte (227, subtask); } \344o { recode_put_byte (245, subtask); } \344n { recode_put_byte (241, subtask); } \345 { recode_put_byte (175, subtask); } \350A { recode_put_byte (196, subtask); } \350E { recode_put_byte (203, subtask); } \350I { recode_put_byte (207, subtask); } \350O { recode_put_byte (214, subtask); } \350U { recode_put_byte (220, subtask); } \350a { recode_put_byte (228, subtask); } \350e { recode_put_byte (235, subtask); } \350i { recode_put_byte (239, subtask); } \350o { recode_put_byte (246, subtask); } \350u { recode_put_byte (252, subtask); } \350y { recode_put_byte (255, subtask); } \352A { recode_put_byte (197, subtask); } \352a { recode_put_byte (229, subtask); } \360C { recode_put_byte (199, subtask); } \360c { recode_put_byte (231, subtask); } %% bool module_ansel_latin1 (RECODE_OUTER outer) { return recode_declare_single (outer, "Z39.47:1993", "Latin-1", outer->quality_variable_to_byte, NULL, transform_ansel_latin1) && recode_declare_alias (outer, "8bitANSEL", "Z39.47:1993") && recode_declare_alias (outer, "Z39.47", "Z39.47:1993") && recode_declare_alias (outer, "ANSEL", "Z39.47:1993") && recode_declare_alias (outer, "USMARC", "Z39.47:1993") && recode_declare_alias (outer, "MARC", "Z39.47:1993") && recode_declare_alias (outer, "LOC", "Z39.47:1993"); /* Library of Congress */ } void delmodule_ansel_latin1 (RECODE_OUTER outer) { } recode-3.7.15/src/iconqnx.c0000644000175000017500000001442314374760602011160 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" #define DOS_CR 13 /* carriage return */ #define DOS_LF 10 /* line feed */ #define DOS_EOF 26 /* old end of file */ #define ESCAPE 25 /* escape for diacritic application */ #define ENDLINE 30 /* end-line code for QNX */ #define TRANSLATE_AND_BREAK(c2, c3) \ recode_put_byte (ESCAPE, subtask); \ recode_put_byte (c2, subtask); \ recode_put_byte (c3, subtask); \ input_char = recode_get_byte (subtask); \ break; static bool transform_ibmpc_iconqnx (RECODE_SUBTASK subtask) { int input_char; input_char = recode_get_byte (subtask); while (true) switch (input_char) { case DOS_EOF: RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); FALLTHROUGH; case EOF: SUBTASK_RETURN (subtask); case 133: TRANSLATE_AND_BREAK ('A', 'a'); case 138: TRANSLATE_AND_BREAK ('A', 'e'); case 151: TRANSLATE_AND_BREAK ('A', 'u'); case 130: TRANSLATE_AND_BREAK ('B', 'e'); case 144: TRANSLATE_AND_BREAK ('B', 'E'); case 131: TRANSLATE_AND_BREAK ('C', 'a'); case 136: TRANSLATE_AND_BREAK ('C', 'e'); case 140: TRANSLATE_AND_BREAK ('C', 'i'); case 147: TRANSLATE_AND_BREAK ('C', 'o'); case 150: TRANSLATE_AND_BREAK ('C', 'u'); case 137: TRANSLATE_AND_BREAK ('H', 'e'); case 139: TRANSLATE_AND_BREAK ('H', 'i'); case 129: TRANSLATE_AND_BREAK ('H', 'u'); case 135: TRANSLATE_AND_BREAK ('K', 'c'); case 128: TRANSLATE_AND_BREAK ('K', 'C'); case DOS_CR: input_char = recode_get_byte (subtask); if (input_char == DOS_LF) { recode_put_byte (ENDLINE, subtask); input_char = recode_get_byte (subtask); } else recode_put_byte (DOS_CR, subtask); break; case ENDLINE: case ESCAPE: RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); FALLTHROUGH; default: recode_put_byte (input_char, subtask); input_char = recode_get_byte (subtask); } } static bool transform_iconqnx_ibmpc (RECODE_SUBTASK subtask) { int input_char; /* current character */ input_char = recode_get_byte (subtask); while (true) switch (input_char) { case EOF: SUBTASK_RETURN (subtask); case ENDLINE: recode_put_byte (DOS_CR, subtask); recode_put_byte (DOS_LF, subtask); input_char = recode_get_byte (subtask); break; case DOS_CR: input_char = recode_get_byte (subtask); if (input_char == DOS_LF) RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); recode_put_byte (DOS_CR, subtask); break; case ESCAPE: input_char = recode_get_byte (subtask); switch (input_char) { case 'A': input_char = recode_get_byte (subtask); switch (input_char) { case 'a': input_char = 133; break; case 'e': input_char = 138; break; case 'u': input_char = 151; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); recode_put_byte (ESCAPE, subtask); recode_put_byte ('A', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; case 'B': input_char = recode_get_byte (subtask); switch (input_char) { case 'e': input_char = 130; break; case 'E': input_char = 144; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); recode_put_byte (ESCAPE, subtask); recode_put_byte ('B', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; case 'C': input_char = recode_get_byte (subtask); switch (input_char) { case 'a': input_char = 131; break; case 'e': input_char = 136; break; case 'i': input_char = 140; break; case 'o': input_char = 147; break; case 'u': input_char = 150; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); recode_put_byte (ESCAPE, subtask); recode_put_byte ('C', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; case 'H': input_char = recode_get_byte (subtask); switch (input_char) { case 'e': input_char = 137; break; case 'i': input_char = 139; break; case 'u': input_char = 129; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); recode_put_byte (ESCAPE, subtask); recode_put_byte ('H', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; case 'K': input_char = recode_get_byte (subtask); switch (input_char) { case 'c': input_char = 135; break; case 'C': input_char = 128; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); recode_put_byte (ESCAPE, subtask); recode_put_byte ('K', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); recode_put_byte (ESCAPE, subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } FALLTHROUGH; default: recode_put_byte (input_char, subtask); input_char = recode_get_byte (subtask); } } bool module_iconqnx (RECODE_OUTER outer) { return recode_declare_single (outer, "IBM-PC", "Icon-QNX", outer->quality_variable_to_variable, NULL, transform_ibmpc_iconqnx) && recode_declare_single (outer, "Icon-QNX", "IBM-PC", outer->quality_variable_to_variable, NULL, transform_iconqnx_ibmpc) && recode_declare_alias (outer, "QNX", "Icon-QNX"); } void delmodule_iconqnx (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/ucs.c0000644000175000017500000004752114375646606010310 /* Conversion of files between different charsets and surfaces. Copyright © 1996-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1996. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" /* Description of some UCS-2 combinings. */ #define DONE NOT_A_CHARACTER #define ELSE BYTE_ORDER_MARK_SWAPPED static const unsigned short combining_data [] = { /* Diacriticized letters. */ 0x00C0, 0x0041, 0x0300, DONE, 0x00C1, 0x0041, 0x0301, DONE, 0x00C2, 0x0041, 0x0302, DONE, 0x00C3, 0x0041, 0x0303, DONE, 0x00C4, 0x0041, 0x0308, DONE, 0x00C5, 0x0041, 0x030A, DONE, 0x00C7, 0x0043, 0x0327, DONE, 0x00C8, 0x0045, 0x0300, DONE, 0x00C9, 0x0045, 0x0301, DONE, 0x00CA, 0x0045, 0x0302, DONE, 0x00CB, 0x0045, 0x0308, DONE, 0x00CC, 0x0049, 0x0300, DONE, 0x00CD, 0x0049, 0x0301, DONE, 0x00CE, 0x0049, 0x0302, DONE, 0x00CF, 0x0049, 0x0308, DONE, 0x00D1, 0x004E, 0x0303, DONE, 0x00D2, 0x004F, 0x0300, DONE, 0x00D3, 0x004F, 0x0301, DONE, 0x00D4, 0x004F, 0x0302, DONE, 0x00D5, 0x004F, 0x0303, DONE, 0x00D6, 0x004F, 0x0308, DONE, 0x00D8, 0x004F, 0x0338, DONE, 0x00D9, 0x0055, 0x0300, DONE, 0x00DA, 0x0055, 0x0301, DONE, 0x00DB, 0x0055, 0x0302, DONE, 0x00DC, 0x0055, 0x0308, DONE, 0x00DD, 0x0059, 0x0301, DONE, 0x00E0, 0x0061, 0x0300, DONE, 0x00E1, 0x0061, 0x0301, DONE, 0x00E2, 0x0061, 0x0302, DONE, 0x00E3, 0x0061, 0x0303, DONE, 0x00E4, 0x0061, 0x0308, DONE, 0x00E5, 0x0061, 0x030A, DONE, 0x00E7, 0x0063, 0x0327, DONE, 0x00E8, 0x0065, 0x0300, DONE, 0x00E9, 0x0065, 0x0301, DONE, 0x00EA, 0x0065, 0x0302, DONE, 0x00EB, 0x0065, 0x0308, DONE, 0x00EC, 0x0069, 0x0300, DONE, 0x00ED, 0x0069, 0x0301, DONE, 0x00EE, 0x0069, 0x0302, DONE, 0x00EF, 0x0069, 0x0308, DONE, 0x00F1, 0x006E, 0x0303, DONE, 0x00F2, 0x006F, 0x0300, DONE, 0x00F3, 0x006F, 0x0301, DONE, 0x00F4, 0x006F, 0x0302, DONE, 0x00F5, 0x006F, 0x0303, DONE, 0x00F6, 0x006F, 0x0308, DONE, 0x00F8, 0x006F, 0x0338, DONE, 0x00F9, 0x0075, 0x0300, DONE, 0x00FA, 0x0075, 0x0301, DONE, 0x00FB, 0x0075, 0x0302, DONE, 0x00FC, 0x0075, 0x0308, DONE, 0x00FD, 0x0079, 0x0301, DONE, 0x00FF, 0x0079, 0x0308, DONE, 0x0100, 0x0041, 0x0304, DONE, 0x0101, 0x0061, 0x0304, DONE, 0x0102, 0x0041, 0x0306, DONE, 0x0103, 0x0061, 0x0306, DONE, 0x0104, 0x0041, 0x0328, DONE, 0x0105, 0x0061, 0x0328, DONE, 0x0106, 0x0043, 0x0301, DONE, 0x0107, 0x0063, 0x0301, DONE, 0x0108, 0x0043, 0x0302, DONE, 0x0109, 0x0063, 0x0302, DONE, 0x010A, 0x0043, 0x0307, DONE, 0x010B, 0x0063, 0x0307, DONE, 0x010C, 0x0043, 0x030C, DONE, 0x010D, 0x0063, 0x030C, DONE, 0x010E, 0x0044, 0x030C, DONE, 0x010F, 0x0064, 0x030C, DONE, 0x0110, 0x0044, 0x0335, DONE, 0x0111, 0x0064, 0x0335, DONE, 0x0112, 0x0045, 0x0304, DONE, 0x0113, 0x0065, 0x0304, DONE, 0x0114, 0x0045, 0x0306, DONE, 0x0115, 0x0065, 0x0306, DONE, 0x0116, 0x0045, 0x0307, DONE, 0x0117, 0x0065, 0x0307, DONE, 0x0118, 0x0045, 0x0328, DONE, 0x0119, 0x0065, 0x0328, DONE, 0x011A, 0x0045, 0x030C, DONE, 0x011B, 0x0065, 0x030C, DONE, 0x011C, 0x0047, 0x0302, DONE, 0x011D, 0x0067, 0x0302, DONE, 0x011E, 0x0047, 0x0306, DONE, 0x011F, 0x0067, 0x0306, DONE, 0x0120, 0x0047, 0x0307, DONE, 0x0121, 0x0067, 0x0307, DONE, 0x0122, 0x0047, 0x0327, DONE, 0x0123, 0x0067, 0x0327, DONE, 0x0124, 0x0048, 0x0302, DONE, 0x0125, 0x0068, 0x0302, DONE, 0x0126, 0x0048, 0x0335, DONE, 0x0127, 0x0068, 0x0335, DONE, 0x0128, 0x0049, 0x0303, DONE, 0x0129, 0x0069, 0x0303, DONE, 0x012A, 0x0049, 0x0304, DONE, 0x012B, 0x0069, 0x0304, DONE, 0x012C, 0x0049, 0x0306, DONE, 0x012D, 0x0069, 0x0306, DONE, 0x012E, 0x0049, 0x0328, DONE, 0x012F, 0x0069, 0x0328, DONE, 0x0130, 0x0049, 0x0307, DONE, 0x0134, 0x004A, 0x0302, DONE, 0x0135, 0x006A, 0x0302, DONE, 0x0136, 0x004B, 0x0327, DONE, 0x0137, 0x006B, 0x0327, DONE, 0x0139, 0x004C, 0x0301, DONE, 0x013A, 0x006C, 0x0301, DONE, 0x013B, 0x004C, 0x0327, DONE, 0x013C, 0x006C, 0x0327, DONE, 0x013D, 0x004C, 0x030C, DONE, 0x013E, 0x006C, 0x030C, DONE, 0x0141, 0x004C, 0x0337, DONE, 0x0142, 0x006C, 0x0337, DONE, 0x0143, 0x004E, 0x0301, DONE, 0x0144, 0x006E, 0x0301, DONE, 0x0145, 0x004E, 0x0327, DONE, 0x0146, 0x006E, 0x0327, DONE, 0x0147, 0x004E, 0x030C, DONE, 0x0148, 0x006E, 0x030C, DONE, 0x014C, 0x004F, 0x0304, DONE, 0x014D, 0x006F, 0x0304, DONE, 0x014E, 0x004F, 0x0306, DONE, 0x014F, 0x006F, 0x0306, DONE, 0x0150, 0x004F, 0x030B, DONE, 0x0151, 0x006F, 0x030B, DONE, 0x0154, 0x0052, 0x0301, DONE, 0x0155, 0x0072, 0x0301, DONE, 0x0156, 0x0052, 0x0327, DONE, 0x0157, 0x0072, 0x0327, DONE, 0x0158, 0x0052, 0x030C, DONE, 0x0159, 0x0072, 0x030C, DONE, 0x015A, 0x0053, 0x0301, DONE, 0x015B, 0x0073, 0x0301, DONE, 0x015C, 0x0053, 0x0302, DONE, 0x015D, 0x0073, 0x0302, DONE, 0x015E, 0x0053, 0x0327, DONE, 0x015F, 0x0073, 0x0327, DONE, 0x0160, 0x0053, 0x030C, DONE, 0x0161, 0x0073, 0x030C, DONE, 0x0162, 0x0054, 0x0327, DONE, 0x0163, 0x0074, 0x0327, DONE, 0x0164, 0x0054, 0x030C, DONE, 0x0165, 0x0074, 0x030C, DONE, 0x0166, 0x0054, 0x0335, DONE, 0x0167, 0x0074, 0x0335, DONE, 0x0168, 0x0055, 0x0303, DONE, 0x0169, 0x0075, 0x0303, DONE, 0x016A, 0x0055, 0x0304, DONE, 0x016B, 0x0075, 0x0304, DONE, 0x016C, 0x0055, 0x0306, DONE, 0x016D, 0x0075, 0x0306, DONE, 0x016E, 0x0055, 0x030A, DONE, 0x016F, 0x0075, 0x030A, DONE, 0x0170, 0x0055, 0x030B, DONE, 0x0171, 0x0075, 0x030B, DONE, 0x0172, 0x0055, 0x0328, DONE, 0x0173, 0x0075, 0x0328, DONE, 0x0174, 0x0057, 0x0302, DONE, 0x0175, 0x0077, 0x0302, DONE, 0x0176, 0x0059, 0x0302, DONE, 0x0177, 0x0079, 0x0302, DONE, 0x0178, 0x0059, 0x0308, DONE, 0x0179, 0x005A, 0x0301, DONE, 0x017A, 0x007A, 0x0301, DONE, 0x017B, 0x005A, 0x0307, DONE, 0x017C, 0x007A, 0x0307, DONE, 0x017D, 0x005A, 0x030C, DONE, 0x017E, 0x007A, 0x030C, DONE, 0x0180, 0x0062, 0x0335, DONE, 0x0197, 0x0049, 0x0335, DONE, 0x019A, 0x006C, 0x0335, DONE, 0x019B, 0x03BB, 0x0335, DONE, 0x019F, 0x004F, 0x0335, DONE, 0x01A0, 0x004F, 0x031B, DONE, 0x01A1, 0x006F, 0x031B, DONE, 0x01AB, 0x0074, 0x0321, DONE, 0x01AE, 0x0054, 0x0322, DONE, 0x01AF, 0x0055, 0x031B, DONE, 0x01B0, 0x0075, 0x031B, DONE, 0x01CD, 0x0041, 0x030C, DONE, 0x01CE, 0x0061, 0x030C, DONE, 0x01CF, 0x0049, 0x030C, DONE, 0x01D0, 0x0069, 0x030C, DONE, 0x01D1, 0x004F, 0x030C, DONE, 0x01D2, 0x006F, 0x030C, DONE, 0x01D3, 0x0055, 0x030C, DONE, 0x01D4, 0x0075, 0x030C, DONE, 0x01D5, 0x0055, 0x0308, 0x0304, ELSE, 0x00DC, 0x0304, DONE, 0x01D6, 0x0075, 0x0308, 0x0304, ELSE, 0x00FC, 0x0304, DONE, 0x01D7, 0x0055, 0x0308, 0x0301, ELSE, 0x00DC, 0x0301, DONE, 0x01D8, 0x0075, 0x0308, 0x0301, ELSE, 0x00FC, 0x0301, DONE, 0x01D9, 0x0055, 0x0308, 0x030C, ELSE, 0x00DC, 0x030C, DONE, 0x01DA, 0x0075, 0x0308, 0x030C, ELSE, 0x00FC, 0x030C, DONE, 0x01DB, 0x0055, 0x0308, 0x0300, ELSE, 0x00DC, 0x0300, DONE, 0x01DC, 0x0075, 0x0308, 0x0300, ELSE, 0x00FC, 0x0300, DONE, 0x01DE, 0x0041, 0x0308, 0x0304, ELSE, 0x00C4, 0x0304, DONE, 0x01DF, 0x0061, 0x0308, 0x0304, ELSE, 0x00E4, 0x0304, DONE, 0x01E0, 0x0041, 0x0307, 0x0304, DONE, 0x01E1, 0x0061, 0x0307, 0x0304, DONE, 0x01E2, 0x00C6, 0x0304, DONE, 0x01E3, 0x00E6, 0x0304, DONE, 0x01E4, 0x0047, 0x0335, DONE, 0x01E5, 0x0067, 0x0335, DONE, 0x01E6, 0x0047, 0x030C, DONE, 0x01E7, 0x0067, 0x030C, DONE, 0x01E8, 0x004B, 0x030C, DONE, 0x01E9, 0x006B, 0x030C, DONE, 0x01EA, 0x004F, 0x0328, DONE, 0x01EB, 0x006F, 0x0328, DONE, 0x01EC, 0x004F, 0x0328, 0x0304, ELSE, 0x01EA, 0x0304, DONE, 0x01ED, 0x006F, 0x0328, 0x0304, ELSE, 0x01EB, 0x0304, DONE, 0x01EE, 0x01B7, 0x030C, DONE, 0x01EF, 0x0292, 0x030C, DONE, 0x01F0, 0x006A, 0x030C, DONE, 0x0386, 0x0391, 0x0384, DONE, 0x0388, 0x0395, 0x0384, DONE, 0x0389, 0x0397, 0x0384, DONE, 0x038A, 0x0399, 0x0384, DONE, 0x038C, 0x039F, 0x0384, DONE, 0x038E, 0x03A5, 0x0384, DONE, 0x038F, 0x03A9, 0x0384, DONE, 0x0390, 0x03B9, 0x0385, DONE, 0x03AA, 0x0399, 0x0308, DONE, 0x03AB, 0x03A5, 0x0308, DONE, 0x03AC, 0x03B1, 0x0384, DONE, 0x03AD, 0x03B5, 0x0384, DONE, 0x03AE, 0x03B7, 0x0384, DONE, 0x03AF, 0x03B9, 0x0384, DONE, 0x03B0, 0x03C5, 0x0385, DONE, 0x03CA, 0x03B9, 0x0308, DONE, 0x03CB, 0x03C5, 0x0308, DONE, 0x03CC, 0x03BF, 0x0384, DONE, 0x03CD, 0x03C5, 0x0384, DONE, 0x03CE, 0x03C9, 0x0384, DONE, 0x03D3, 0x03D2, 0x0384, DONE, 0x03D4, 0x03D2, 0x0308, DONE, 0x0401, 0x0415, 0x0308, DONE, 0x0403, 0x0413, 0x0301, DONE, 0x0407, 0x0406, 0x0308, DONE, 0x040C, 0x041A, 0x0301, DONE, 0x040E, 0x0423, 0x0306, DONE, 0x0419, 0x0418, 0x0306, DONE, 0x0439, 0x0438, 0x0306, DONE, 0x0451, 0x0435, 0x0308, DONE, 0x0453, 0x0433, 0x0301, DONE, 0x0457, 0x0456, 0x0308, DONE, 0x045C, 0x043A, 0x0301, DONE, 0x045E, 0x0443, 0x0306, DONE, 0x0476, 0x0474, 0x030F, DONE, 0x0477, 0x0475, 0x030F, DONE, 0x0492, 0x0413, 0x0335, DONE, 0x0493, 0x0433, 0x0335, DONE, 0x0498, 0x0417, 0x0327, DONE, 0x0499, 0x0437, 0x0327, DONE, 0x04AA, 0x0421, 0x0327, DONE, 0x04AB, 0x0441, 0x0327, DONE, 0x04B0, 0x04AE, 0x0335, DONE, 0x04B1, 0x04AF, 0x0335, DONE, 0x04BE, 0x04BC, 0x0328, DONE, 0x04BF, 0x04BD, 0x0328, DONE, 0x04C1, 0x0416, 0x0306, DONE, 0x04C2, 0x0436, 0x0306, DONE, 0x04C5, 0x041A, 0x0328, DONE, 0x04C6, 0x043A, 0x0328, DONE, 0x04C9, 0x0425, 0x0328, DONE, 0x04CA, 0x0445, 0x0328, DONE, 0x0958, 0x0915, 0x093C, DONE, 0x0959, 0x0916, 0x093C, DONE, 0x095A, 0x0917, 0x093C, DONE, 0x095B, 0x091C, 0x093C, DONE, 0x095C, 0x0921, 0x093C, DONE, 0x095D, 0x0922, 0x093C, DONE, 0x095E, 0x092B, 0x093C, DONE, 0x095F, 0x092F, 0x093C, DONE, 0x09DC, 0x09A1, 0x09BC, DONE, 0x09DD, 0x09A2, 0x09BC, DONE, 0x09DF, 0x09AF, 0x09BC, DONE, 0x0A59, 0x0A16, 0x0A3C, DONE, 0x0A5A, 0x0A17, 0x0A3C, DONE, 0x0A5B, 0x0A1C, 0x0A3C, DONE, 0x0A5C, 0x0A21, 0x0A3C, DONE, 0x0A5E, 0x0A2B, 0x0A3C, DONE, 0x0B5C, 0x0B21, 0x0B3C, DONE, 0x0B5D, 0x0B22, 0x0B3C, DONE, 0x0B5F, 0x0B2F, 0x0B3C, DONE, 0x1014, 0x1004, 0x104C, DONE, 0x1015, 0x1005, 0x104C, DONE, 0x1016, 0x1006, 0x104C, DONE, /* Ligatures, digraphs. */ 0x00C6, 0x0041, 0x0045, DONE, 0x00E6, 0x0061, 0x0065, DONE, 0x0132, 0x0049, 0x004A, DONE, 0x0133, 0x0069, 0x006A, DONE, 0x013F, 0x004C, 0x00B7, DONE, 0x0140, 0x006C, 0x00B7, DONE, 0x0149, 0x0027, 0x006E, DONE, 0x0152, 0x004F, 0x0045, DONE, 0x0153, 0x006F, 0x0065, DONE, 0x01C4, 0x0044, 0x005A, 0x030C, ELSE, 0x0044, 0x017D, DONE, 0x01C5, 0x0044, 0x007A, 0x030C, ELSE, 0x0044, 0x017E, DONE, 0x01C6, 0x0064, 0x007A, 0x030C, ELSE, 0x0064, 0x017E, DONE, 0x01C7, 0x004C, 0x004A, DONE, 0x01C8, 0x004C, 0x006A, DONE, 0x01C9, 0x006C, 0x006A, DONE, 0x01CA, 0x004E, 0x004A, DONE, 0x01CB, 0x004E, 0x006A, DONE, 0x01CC, 0x006E, 0x006A, DONE, 0x02A3, 0x0064, 0x007A, DONE, 0x02A4, 0x0064, 0x0292, DONE, 0x02A5, 0x0064, 0x0291, DONE, 0x02A6, 0x0074, 0x0073, DONE, 0x02A7, 0x0074, 0x0283, DONE, 0x02A8, 0x0074, 0x0255, DONE, 0x0409, 0x041B, 0x042C, DONE, 0x040A, 0x041D, 0x042C, DONE, 0x0459, 0x043B, 0x044C, DONE, 0x045A, 0x043D, 0x044C, DONE, 0x0EDC, 0x0EAB, 0x0E99, DONE, 0x0EDD, 0x0EAB, 0x0EA1, DONE, 0x203C, 0x0021, 0x0021, DONE, 0x203D, 0x003F, 0x0021, DONE, DONE }; /* UCS-2 input and output. */ /*-------------------------------------------------------------------------. | Get one UCS-2 VALUE for TASK, maybe swapping pair of bytes as we go. | | Whenever a byte order mark is seen, either straight or swapped, always | | use it to decide whether itself and subsequent UCS-2 values should be | | swapped, or not. At the very beginning of the text stream, a byte order | | mark is merely swallowed and never returned. Everywhere else, it is | | transmitted as a zero-width non-breaking space. | `-------------------------------------------------------------------------*/ /* An UCS-2 file canonically has a byte order mark at its very beginning. So, concatenating many UCS-2 files might produce some spurious, but valid zero-width non-breaking spaces. Those are produced for each file, after the first, starting with a byte order mark, regardless of byte order. */ bool recode_get_ucs2 (unsigned *value, RECODE_SUBTASK subtask) { while (true) { int character1; int character2; unsigned chunk; character1 = recode_get_byte (subtask); if (character1 == EOF) return false; character2 = recode_get_byte (subtask); if (character2 == EOF) { recode_if_nogo (RECODE_INVALID_INPUT, subtask); return false; } switch (subtask->task->swap_input) { case RECODE_SWAP_UNDECIDED: chunk = ((BIT_MASK (8) & character1) << 8) | (BIT_MASK (8) & character2); switch (chunk) { case BYTE_ORDER_MARK: subtask->task->swap_input = RECODE_SWAP_NO; break; case BYTE_ORDER_MARK_SWAPPED: subtask->task->swap_input = RECODE_SWAP_YES; break; default: *value = chunk; subtask->task->swap_input = RECODE_SWAP_NO; if (subtask->task->byte_order_mark) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); return true; } break; case RECODE_SWAP_NO: chunk = ((BIT_MASK (8) & character1) << 8) | (BIT_MASK (8) & character2); switch (chunk) { case BYTE_ORDER_MARK: RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); break; case BYTE_ORDER_MARK_SWAPPED: subtask->task->swap_input = RECODE_SWAP_YES; RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); break; default: *value = chunk; return true; } break; case RECODE_SWAP_YES: chunk = ((BIT_MASK (8) & character2) << 8) | (BIT_MASK (8) & character1); switch (chunk) { case BYTE_ORDER_MARK: RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); break; case BYTE_ORDER_MARK_SWAPPED: subtask->task->swap_input = RECODE_SWAP_NO; RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); break; default: *value = chunk; return true; } break; default: break; } } } /*-------------------------------. | Put one UCS-2 VALUE for TASK. | `-------------------------------*/ bool recode_put_ucs2 (unsigned value, RECODE_SUBTASK subtask) { recode_put_byte (BIT_MASK (8) & value >> 8, subtask); recode_put_byte (BIT_MASK (8) & value, subtask); return true; } /* UCS-4 input and output. */ /*-------------------------------. | Get one UCS-4 VALUE for TASK. | `-------------------------------*/ bool recode_get_ucs4 (unsigned *value, RECODE_SUBTASK subtask) { int character; unsigned chunk; character = recode_get_byte (subtask); if (character == EOF) return false; chunk = (BIT_MASK (8) & character) << 24; character = recode_get_byte (subtask); if (character == EOF) { recode_if_nogo (RECODE_INVALID_INPUT, subtask); return false; } chunk |= (BIT_MASK (8) & character) << 16; character = recode_get_byte (subtask); if (character == EOF) { recode_if_nogo (RECODE_INVALID_INPUT, subtask); return false; } chunk |= (BIT_MASK (8) & character) << 8; character = recode_get_byte (subtask); if (character == EOF) { recode_if_nogo (RECODE_INVALID_INPUT, subtask); return false; } chunk |= BIT_MASK (8) & character; *value = chunk; return true; } /*-------------------------------. | Put one UCS-4 VALUE for TASK. | `-------------------------------*/ bool recode_put_ucs4 (unsigned value, RECODE_SUBTASK subtask) { recode_put_byte (BIT_MASK (8) & value >> 24, subtask); recode_put_byte (BIT_MASK (8) & value >> 16, subtask); recode_put_byte (BIT_MASK (8) & value >> 8, subtask); recode_put_byte (BIT_MASK (8) & value, subtask); return true; } /* Provided steps. */ /*-----------. | Combined. | `-----------*/ static bool init_combined_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { step->before->data_type = RECODE_EXPLODE_DATA; step->before->data = (void *) combining_data; return recode_init_explode (step, request, before_options, after_options); } static bool init_ucs2_combined (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { step->after->data_type = RECODE_EXPLODE_DATA; step->after->data = (void *) combining_data; return recode_init_combine (step, request, before_options, after_options); } /*-----------------------------. | Transform Latin-1 to UCS-4. | `-----------------------------*/ static bool transform_latin1_ucs4 (RECODE_SUBTASK subtask) { int character; while (character = recode_get_byte (subtask), character != EOF) recode_put_ucs4 (BIT_MASK (8) & character, subtask); SUBTASK_RETURN (subtask); } /*---------------------------. | Transform UCS-2 to UCS-4. | `---------------------------*/ static bool transform_ucs2_ucs4 (RECODE_SUBTASK subtask) { unsigned value; while (recode_get_ucs2 (&value, subtask)) recode_put_ucs4 (value, subtask); SUBTASK_RETURN (subtask); } /*-----------------------------------------------------------------. | Declare the basic UCS-2 and UCS-4 charsets and transformations. | `-----------------------------------------------------------------*/ bool module_ucs (RECODE_OUTER outer) { return recode_declare_single (outer, "combined-UCS-2", "ISO-10646-UCS-2", outer->quality_ucs2_to_variable, init_combined_ucs2, recode_explode_ucs2_ucs2) && recode_declare_single (outer, "ISO-10646-UCS-2", "combined-UCS-2", outer->quality_variable_to_ucs2, init_ucs2_combined, recode_combine_ucs2_ucs2) && recode_declare_single (outer, "latin1", "ISO-10646-UCS-4", outer->quality_byte_to_variable, NULL, transform_latin1_ucs4) && recode_declare_single (outer, "ISO-10646-UCS-2", "ISO-10646-UCS-4", outer->quality_variable_to_variable, NULL, transform_ucs2_ucs4) && recode_declare_alias (outer, "UCS", "ISO-10646-UCS-4") && recode_declare_alias (outer, "UCS-4", "ISO-10646-UCS-4") && recode_declare_alias (outer, "ISO_10646", "ISO-10646-UCS-4") && recode_declare_alias (outer, "10646", "ISO-10646-UCS-4") && recode_declare_alias (outer, "u4", "ISO-10646-UCS-4") && recode_declare_alias (outer, "UCS-2", "ISO-10646-UCS-2") && recode_declare_alias (outer, "UNICODE-1-1", "ISO-10646-UCS-2") /* RFC1641 */ && recode_declare_alias (outer, "BMP", "ISO-10646-UCS-2") && recode_declare_alias (outer, "u2", "ISO-10646-UCS-2") && recode_declare_alias (outer, "rune", "ISO-10646-UCS-2") && recode_declare_alias (outer, "co", "combined-UCS-2"); } void delmodule_ucs (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/ltexlat1.l0000644000175000017500000001456414374760602011256 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the Recode Library; see the file `COPYING.LIB'. If not, see . */ /* Step name: latex_latin1. */ Letter [a-zA-Z] Braces [ \t]*(\{\})? %% \\"#" { PUT_NON_DIACRITIC_BYTE ('#', subtask); } \\"$" { PUT_NON_DIACRITIC_BYTE ('$', subtask); } \\"%" { PUT_NON_DIACRITIC_BYTE ('%', subtask); } \\"&" { PUT_NON_DIACRITIC_BYTE ('&', subtask); } \\mbox"{$<$}" { PUT_NON_DIACRITIC_BYTE ('<', subtask); } \\mbox"{$>$}" { PUT_NON_DIACRITIC_BYTE ('>', subtask); } \\"_" { PUT_NON_DIACRITIC_BYTE ('_', subtask); } \\"{" { PUT_NON_DIACRITIC_BYTE ('{', subtask); } \\"}" { PUT_NON_DIACRITIC_BYTE ('}', subtask); } \\textasciicircum{Braces} { PUT_NON_DIACRITIC_BYTE ('^', subtask); } \\backslash{Braces} { PUT_NON_DIACRITIC_BYTE ('\\', subtask); } "~" { PUT_NON_DIACRITIC_BYTE (160, subtask); } "!`" { PUT_NON_DIACRITIC_BYTE (161, subtask); } \\pound{Braces} { PUT_NON_DIACRITIC_BYTE (163, subtask); } \\S{Braces} { PUT_NON_DIACRITIC_BYTE (167, subtask); } \\\" { PUT_NON_DIACRITIC_BYTE (168, subtask); } \\copyright{Braces} { PUT_NON_DIACRITIC_BYTE (169, subtask); } "``" { PUT_NON_DIACRITIC_BYTE (171, subtask); } \\neg{Braces} { PUT_NON_DIACRITIC_BYTE (172, subtask); } \\"-" { PUT_NON_DIACRITIC_BYTE (173, subtask); } \\mbox"{$^\\circ$}" { PUT_NON_DIACRITIC_BYTE (176, subtask); } \\mbox"{$\\pm$}" { PUT_NON_DIACRITIC_BYTE (177, subtask); } \\mbox"{$^2$}" { PUT_NON_DIACRITIC_BYTE (178, subtask); } \\mbox"{$^3$}" { PUT_NON_DIACRITIC_BYTE (179, subtask); } \\"'" { PUT_NON_DIACRITIC_BYTE (180, subtask); } \\mbox"{$\\mu$}" { PUT_NON_DIACRITIC_BYTE (181, subtask); } \\cdotp { PUT_NON_DIACRITIC_BYTE (183, subtask); } \\"," { PUT_NON_DIACRITIC_BYTE (184, subtask); } \\mbox"{$^1$}" { PUT_NON_DIACRITIC_BYTE (185, subtask); } "''" { PUT_NON_DIACRITIC_BYTE (187, subtask); } \\frac"1/4"{Braces} { PUT_NON_DIACRITIC_BYTE (188, subtask); } \\frac"1/2"{Braces} { PUT_NON_DIACRITIC_BYTE (189, subtask); } \\frac"3/4"{Braces} { PUT_NON_DIACRITIC_BYTE (190, subtask); } "?`" { PUT_NON_DIACRITIC_BYTE (191, subtask); } \\"`"A|\\"`{A}" { recode_put_byte (192, subtask); } \\"'"A|\\"'{A}" { recode_put_byte (193, subtask); } \\"^"A|\\"^{A}" { recode_put_byte (194, subtask); } \\"~"A|\\"~{A}" { recode_put_byte (195, subtask); } \\\"A|\\\""{A}" { recode_put_byte (196, subtask); } \\AA{Braces} { recode_put_byte (197, subtask); } \\AE{Braces} { recode_put_byte (198, subtask); } \\c[ \t]+C|\\c"{C}" { recode_put_byte (199, subtask); } \\"`"E|\\"`{E}" { recode_put_byte (200, subtask); } \\"'"E|\\"'{E}" { recode_put_byte (201, subtask); } \\"^"E|\\"^{E}" { recode_put_byte (202, subtask); } \\\"E|\\\""{E}" { recode_put_byte (203, subtask); } \\"`"I|\\"`{I}" { recode_put_byte (204, subtask); } \\"'"I|\\"'{I}" { recode_put_byte (205, subtask); } \\"^"I|\\"^{I}" { recode_put_byte (206, subtask); } \\\"I|\\\""{I}" { recode_put_byte (207, subtask); } \\"~"N|\\"~{N}" { recode_put_byte (209, subtask); } \\"`"O|\\"`{O}" { recode_put_byte (210, subtask); } \\"'"O|\\"'{O}" { recode_put_byte (211, subtask); } \\"^"O|\\"^{O}" { recode_put_byte (212, subtask); } \\"~"O|\\"~{O}" { recode_put_byte (213, subtask); } \\\"O|\\\""{O}" { recode_put_byte (214, subtask); } \\O{Braces} { recode_put_byte (216, subtask); } \\"`"U|\\"`{U}" { recode_put_byte (217, subtask); } \\"'"U|\\"'{U}" { recode_put_byte (218, subtask); } \\"^"U|\\"^{U}" { recode_put_byte (219, subtask); } \\\"U|\\\""{U}" { recode_put_byte (220, subtask); } \\"'"Y|\\"'{Y}" { recode_put_byte (221, subtask); } \\ss{Braces} { recode_put_byte (223, subtask); } \\"`"a|\\"`{a}" { recode_put_byte (224, subtask); } \\"'"a|\\"'{a}" { recode_put_byte (225, subtask); } \\"^"a|\\"^{a}" { recode_put_byte (226, subtask); } \\"~"a|\\"~{a}" { recode_put_byte (227, subtask); } \\\"a|\\\""{a}" { recode_put_byte (228, subtask); } \\aa{Braces} { recode_put_byte (229, subtask); } \\ae{Braces} { recode_put_byte (230, subtask); } \\c[ \t]+c|\\c"{c}" { recode_put_byte (231, subtask); } \\"`"e|\\"`{e}" { recode_put_byte (232, subtask); } \\"'"e|\\"'{e}" { recode_put_byte (233, subtask); } \\"^"e|\\"^{e}" { recode_put_byte (234, subtask); } \\\"e|\\\""{e}" { recode_put_byte (235, subtask); } \\"`"\\i{Braces}|\\"`{\\i}" { recode_put_byte (236, subtask); } \\"'"\\i{Braces}|\\"'{\\i}" { recode_put_byte (237, subtask); } \\"^"\\i{Braces}|\\"^{\\i}" { recode_put_byte (238, subtask); } \\\"\\i{Braces}|\\\""{\\i}" { recode_put_byte (239, subtask); } \\"~"n|\\"~{n}" { recode_put_byte (241, subtask); } \\"`"o|\\"`{o}" { recode_put_byte (242, subtask); } \\"'"o|\\"'{o}" { recode_put_byte (243, subtask); } \\"^"o|\\"^{o}" { recode_put_byte (244, subtask); } \\"~"o|\\"~{o}" { recode_put_byte (245, subtask); } \\\"o|\\\""{o}" { recode_put_byte (246, subtask); } \\o{Braces} { recode_put_byte (248, subtask); } \\"`"u|\\"`{u}" { recode_put_byte (249, subtask); } \\"'"u|\\"'{u}" { recode_put_byte (250, subtask); } \\"^"u|\\"^{u}" { recode_put_byte (251, subtask); } \\\"u|\\\""{u}" { recode_put_byte (252, subtask); } \\"'"y|\\"'{y}" { recode_put_byte (253, subtask); } \\\"y|\\\""{y}" { recode_put_byte (255, subtask); } \\[`'^"]\\i{Letter}*{Braces} { ECHO; } \\{Letter}+{Braces} { ECHO; } %% bool module_latex_latin1 (RECODE_OUTER outer) { return recode_declare_single (outer, "LaTeX", "Latin-1", outer->quality_variable_to_byte, NULL, transform_latex_latin1) && recode_declare_alias (outer, "TeX", "LaTeX") && recode_declare_alias (outer, "ltex", "LaTeX"); } void delmodule_latex_latin1 (RECODE_OUTER outer) { } recode-3.7.15/src/lat1txte.c0000644000175000017500000002011314374760602011240 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" static const char *const translation_table[128] = { NULL, /* 128 */ NULL, /* 129 */ NULL, /* 130 */ NULL, /* 131 */ NULL, /* 132 */ NULL, /* 133 */ NULL, /* 134 */ NULL, /* 135 */ NULL, /* 136 */ NULL, /* 137 */ NULL, /* 138 */ NULL, /* 139 */ NULL, /* 140 */ NULL, /* 141 */ NULL, /* 142 */ NULL, /* 143 */ NULL, /* 144 */ NULL, /* 145 */ NULL, /* 146 */ NULL, /* 147 */ NULL, /* 148 */ NULL, /* 149 */ NULL, /* 150 */ NULL, /* 151 */ NULL, /* 152 */ NULL, /* 153 */ NULL, /* 154 */ NULL, /* 155 */ NULL, /* 156 */ NULL, /* 157 */ NULL, /* 158 */ NULL, /* 159 */ " ", /* 160 no-break space */ NULL, /* 161 inverted exclamation mark */ NULL, /* 162 cent sign */ NULL, /* 163 pound sign */ NULL, /* 164 currency sign */ NULL, /* 165 yen sign */ NULL, /* 166 broken bar */ NULL, /* 167 paragraph sign, section sign */ NULL, /* 168 diaeresis */ NULL, /* 169 copyright sign */ NULL, /* 170 feminine ordinal indicator */ "``", /* 171 left angle quotation mark */ NULL, /* 172 not sign */ NULL, /* 173 soft hyphen */ NULL, /* 174 registered trade mark sign */ NULL, /* 175 macron */ NULL, /* 176 degree sign */ NULL, /* 177 plus-minus sign */ NULL, /* 178 superscript two */ NULL, /* 179 superscript three */ NULL, /* 180 acute accent */ NULL, /* 181 small greek mu, micro sign */ NULL, /* 182 pilcrow sign */ NULL, /* 183 middle dot */ NULL, /* 184 cedilla */ NULL, /* 185 superscript one */ NULL, /* 186 masculine ordinal indicator */ "''", /* 187 right angle quotation mark */ NULL, /* 188 vulgar fraction one quarter */ NULL, /* 189 vulgar fraction one half */ NULL, /* 190 vulgar fraction three quarters */ NULL, /* 191 inverted question mark */ "A`", /* 192 capital A with grave accent */ NULL, /* 193 capital A with acute accent */ "A^", /* 194 capital A with circumflex accent */ NULL, /* 195 capital A with tilde */ "A\"", /* 196 capital A diaeresis */ NULL, /* 197 capital A with ring above */ NULL, /* 198 capital diphthong A with E */ "C,", /* 199 capital C with cedilla */ "E`", /* 200 capital E with grave accent */ "E\'", /* 201 capital E with acute accent */ "E^", /* 202 capital E with circumflex accent */ "E\"", /* 203 capital E with diaeresis */ NULL, /* 204 capital I with grave accent */ NULL, /* 205 capital I with acute accent */ "I^", /* 206 capital I with circumflex accent */ "I\"", /* 207 capital I with diaeresis */ NULL, /* 208 capital icelandic ETH */ NULL, /* 209 capital N with tilde */ "O`", /* 210 capital O with grave accent */ NULL, /* 211 capital O with acute accent */ "O^", /* 212 capital O with circumflex accent */ NULL, /* 213 capital O with tilde */ "O\"", /* 214 capital O with diaeresis */ NULL, /* 215 multiplication sign */ NULL, /* 216 capital O with oblique stroke */ "U`", /* 217 capital U with grave accent */ NULL, /* 218 capital U with acute accent */ "U^", /* 219 capital U with circumflex accent */ "U\"", /* 220 capital U with diaeresis */ NULL, /* 221 capital Y with acute accent */ NULL, /* 222 capital icelandic THORN */ NULL, /* 223 small german sharp s */ "a`", /* 224 small a with grave accent */ NULL, /* 225 small a with acute accent */ "a^", /* 226 small a with circumflex accent */ NULL, /* 227 small a with tilde */ "a\"", /* 228 small a with diaeresis */ NULL, /* 229 small a with ring above */ NULL, /* 230 small diphthong a with e */ "c,", /* 231 small c with cedilla */ "e`", /* 232 small e with grave accent */ "e\'", /* 233 small e with acute accent */ "e^", /* 234 small e with circumflex accent */ "e\"", /* 235 small e with diaeresis */ NULL, /* 236 small i with grave accent */ NULL, /* 237 small i with acute accent */ "i^", /* 238 small i with circumflex accent */ "i\"", /* 239 small i with diaeresis */ NULL, /* 240 small icelandic eth */ NULL, /* 241 small n with tilde */ "o`", /* 242 small o with grave accent */ NULL, /* 243 small o with acute accent */ "o^", /* 244 small o with circumflex accent */ NULL, /* 245 small o with tilde */ "o\"", /* 246 small o with diaeresis */ NULL, /* 247 division sign */ NULL, /* 248 small o with oblique stroke */ "u`", /* 249 small u with grave accent */ NULL, /* 250 small u with acute accent */ "u^", /* 251 small u with circumflex accent */ "u\"", /* 252 small u with diaeresis */ NULL, /* 253 small y with acute accent */ NULL, /* 254 small icelandic thorn */ NULL, /* 255 small y with diaeresis */ }; static bool init_latin1_texte (RECODE_STEP step, const struct recode_request *request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; unsigned rewritten; /* number of rewritten translations */ const char **table; /* allocated structure, including pool */ char *pool; /* cursor in character pool */ unsigned counter; /* general purpose counter */ if (before_options || after_options) return false; /* The algorithm for proper processing of -c option depends on the fact that quotes to be changed in colons are exactly those, in strings from translation_table, which are in second position while the string is two characters in length. This is sufficient for now. */ rewritten = 0; if (request->diaeresis_char != '"') for (counter = 128; counter < 256; counter++) if (translation_table[counter - 128] && translation_table[counter - 128][1] == '"' && translation_table[counter - 128][2] == NUL) rewritten++; if (!ALLOC_SIZE (table, sizeof (char *) * 256 + 2 * 128 + 3 * rewritten, const char *)) return false; pool = (char *) (table + 256); for (counter = 0; counter < 128; counter++) { table[counter] = pool; *pool++ = counter; *pool++ = NUL; } for (; counter < 256; counter++) if (request->diaeresis_char != '"' && translation_table[counter - 128] && translation_table[counter - 128][1] == '"' && translation_table[counter - 128][2] == NUL) { table[counter] = pool; *pool++ = translation_table[counter - 128][0]; *pool++ = request->diaeresis_char; *pool++ = NUL; } else table[counter] = translation_table[counter - 128]; step->step_type = RECODE_BYTE_TO_STRING; step->step_table = table; step->step_table_term_routine = free; return true; } bool module_latin1_texte (RECODE_OUTER outer) { return recode_declare_single (outer, "Latin-1", "Texte", outer->quality_byte_to_variable, init_latin1_texte, recode_transform_byte_to_variable) && recode_declare_alias (outer, "txte", "Texte"); } void delmodule_latin1_texte (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/names.c0000644000175000017500000007362114374760602010611 /* Conversion of files between different charsets and surfaces. Copyright © 1993-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1993. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include #include "hash.h" /*-------------------------------------------------------------------------. | Return the corresponding UCS-2 value in a CHARSET for a given CODE, or a | | negative number if this symbol is not defined. | `-------------------------------------------------------------------------*/ _GL_ATTRIBUTE_PURE int recode_code_to_ucs2 (RECODE_CONST_SYMBOL charset, unsigned code) { /* FIXME: if no specific UCS-2 translation, assume an identity map. */ if (charset->data_type != RECODE_STRIP_DATA) return code; const struct strip_data *data = (const struct strip_data *) charset->data; const recode_ucs2 *pool = data->pool; unsigned offset = data->offset[code / STRIP_SIZE]; unsigned value = pool[offset + code % STRIP_SIZE]; return value == BIT_MASK (16) ? -1 : (int) value; } /*---------------------------------------------------------. | Return true if BEFORE to AFTER is currently restricted. | `---------------------------------------------------------*/ static _GL_ATTRIBUTE_PURE bool check_restricted (RECODE_CONST_OUTER outer, RECODE_CONST_SYMBOL before, RECODE_CONST_SYMBOL after) { struct recode_known_pair *pair; int left; int right; for (pair = outer->pair_restriction; pair < outer->pair_restriction + outer->pair_restrictions; pair++) { /* Reject the charset if the characters in the pair do not exist of if their respective definition do not match. */ left = recode_code_to_ucs2 (before, pair->left); if (left < 0) return true; right = recode_code_to_ucs2 (after, pair->right); if (right < 0) return true; if (left != right) return true; } /* No restriction found. */ return false; } /* Charset names. */ /*-------------------------------------. | Prepare aliases for initialisation. | `-------------------------------------*/ static size_t alias_hasher (const void *void_alias, size_t limit) { RECODE_CONST_ALIAS alias = (RECODE_CONST_ALIAS) void_alias; return hash_string (alias->name, limit); } static bool alias_comparator (const void *void_first, const void *void_second) { RECODE_CONST_ALIAS first = (RECODE_CONST_ALIAS) void_first; RECODE_CONST_ALIAS second = (RECODE_CONST_ALIAS) void_second; return strcmp (first->name, second->name) == 0; } static void alias_free (void *void_alias) { RECODE_ALIAS alias = (RECODE_ALIAS) void_alias; struct recode_surface_list *list, *next; for (list = alias->implied_surfaces; list; list = next) { next = list->next; free (list); } free (alias); } bool recode_prepare_for_aliases (RECODE_OUTER outer) { outer->symbol_list = NULL; outer->number_of_symbols = 0; outer->alias_table = hash_initialize (800, NULL, alias_hasher, alias_comparator, alias_free); if (!outer->alias_table) return false; return true; } /*---------------------------------------------------------------------------. | Return a newly allocated copy of symbol NAME, with upper case letters | | turned into lower case, and all non alphanumeric discarded, or NULL if any | | problem. | `---------------------------------------------------------------------------*/ static char * name_for_argmatch (RECODE_OUTER outer, const char *name) { char *result; char *out; const char *in; int character; if (!ALLOC (result, strlen (name) + 1, char)) return NULL; out = result; for (in = name; *in; in++) { character = *(const unsigned char *) in; if ((character >= 'a' && character <= 'z') || (character >= '0' && character <= '9')) *out++ = character; else if (character >= 'A' && character <= 'Z') *out++ = character - 'A' + 'a'; } *out = NUL; return result; } /*---------------------------------------------------------------------------. | Given an abbreviated NAME of a charset or surface, return its full name, | | properly capitalized and punctuated, or NULL if this cannot be done | | successfully. FIND_TYPE may restrict the interpretation. A NULL or empty | | string means the default charset, if this default charset is defined. | `---------------------------------------------------------------------------*/ static const char * disambiguate_name (RECODE_OUTER outer, const char *name, enum alias_find_type find_type) { char *hashname; int ordinal; const char *result; result = NULL; /* for lint */ /* Look for a match. */ if (!name || !*name) switch (find_type) { case ALIAS_FIND_AS_CHARSET: case ALIAS_FIND_AS_EITHER: name = getenv ("DEFAULT_CHARSET"); if (!name || !*name) name = locale_charset(); if (!name || !*name) return NULL; break; default: return NULL; } hashname = name_for_argmatch (outer, name); if (!hashname) return NULL; switch (find_type) { case SYMBOL_CREATE_CHARSET: case SYMBOL_CREATE_DATA_SURFACE: abort (); case ALIAS_FIND_AS_CHARSET: ordinal = argmatch (hashname, outer->argmatch_charset_array, NULL, 0); result = ordinal < 0 ? NULL : outer->realname_charset_array[ordinal]; break; case ALIAS_FIND_AS_SURFACE: ordinal = argmatch (hashname, outer->argmatch_surface_array, NULL, 0); result = ordinal < 0 ? NULL : outer->realname_surface_array[ordinal]; break; case ALIAS_FIND_AS_EITHER: ordinal = argmatch (hashname, outer->argmatch_charset_array, NULL, 0); if (ordinal >= 0) result = outer->realname_charset_array[ordinal]; else { ordinal = argmatch (hashname, outer->argmatch_surface_array, NULL, 0); result = ordinal < 0 ? NULL : outer->realname_surface_array[ordinal]; } break; default: break; } free (hashname); return result; } /*----------------------------------------------------------------------------. | Delete the given alias. | `----------------------------------------------------------------------------*/ void recode_delete_alias (RECODE_ALIAS alias) { free (alias->symbol); free (alias); } /*----------------------------------------------------------------------------. | Return the alias from its given NAME, possibly abbreviated. If FIND_TYPE | | is any of SYMBOL_CREATE_*, NAME is not abbreviated, create a new symbol if | | it does not exist, or return NULL if any problem happens at creation time. | | For other TYPE values, never create a new charset, merely return NULL if | | NAME cannot be correctly disambiguated. | `----------------------------------------------------------------------------*/ RECODE_ALIAS recode_find_alias (RECODE_OUTER outer, const char *name, enum alias_find_type find_type) { struct recode_alias lookup; RECODE_ALIAS alias; RECODE_SYMBOL symbol; enum recode_symbol_type type = RECODE_NO_SYMBOL_TYPE; switch (find_type) { case SYMBOL_CREATE_CHARSET: type = RECODE_CHARSET; break; case SYMBOL_CREATE_DATA_SURFACE: type = RECODE_DATA_SURFACE; break; default: /* Clean and disambiguate first as requested. */ name = disambiguate_name (outer, name, find_type); if (!name) return NULL; } /* Search the whole hash bucket and return any match. */ if (!name) return NULL; lookup.name = name; if (alias = (RECODE_ALIAS) hash_lookup ((const Hash_table *) outer->alias_table, &lookup), alias) return alias; /* If we reach this point, find_type is necessarily one of SYMBOL_CREATE_*. For any other value of find_type, the alias would have already been found and returned. So, here, a new symbol does have to be created. */ if (!ALLOC (symbol, 1, struct recode_symbol)) return NULL; symbol->ordinal = outer->number_of_symbols++; symbol->name = name; symbol->iconv_name = NULL; symbol->type = type; symbol->ignore = false; symbol->data_type = RECODE_NO_CHARSET_DATA; symbol->data = NULL; symbol->resurfacer = NULL; symbol->unsurfacer = NULL; if (!ALLOC (alias, 1, struct recode_alias)) { free (symbol); return NULL; } alias->name = name; alias->symbol = symbol; alias->implied_surfaces = NULL; if (!hash_insert ((Hash_table *) outer->alias_table, alias)) { recode_delete_alias (alias); return NULL; } symbol->next = outer->symbol_list; outer->symbol_list = symbol; return alias; } /*-----------------------------------------------------------------------. | Have NAME to be an alternate name for OLD_NAME. Create OLD_NAME if it | | does not exist already. | `-----------------------------------------------------------------------*/ RECODE_ALIAS recode_declare_alias (RECODE_OUTER outer, const char *name, const char *old_name) { struct recode_alias lookup; RECODE_ALIAS alias; RECODE_SYMBOL symbol; /* Find the symbol. */ if (alias = recode_find_alias (outer, old_name, SYMBOL_CREATE_CHARSET), !alias) return NULL; symbol = alias->symbol; lookup.name = name; if (alias = (RECODE_ALIAS) hash_lookup ((Hash_table *) outer->alias_table, &lookup), alias) { if (alias->symbol == symbol) return alias; recode_error (outer, _("Charset %s already exists and is not %s"), name, old_name); return NULL; } /* Make the alias. */ if (!ALLOC (alias, 1, struct recode_alias)) return NULL; alias->name = name; alias->symbol = symbol; alias->implied_surfaces = NULL; if (!hash_insert ((Hash_table *) outer->alias_table, alias)) { free (alias); return NULL; } return alias; } /*-------------------------------------------------------------------------. | To the end of implied surfaces for CHARSET_NAME, add the one represented | | by SURFACE_NAME. Both names are created as necessary. | `-------------------------------------------------------------------------*/ bool recode_declare_implied_surface (RECODE_OUTER outer, RECODE_ALIAS alias, RECODE_CONST_SYMBOL surface) { struct recode_surface_list *list; struct recode_surface_list *hook; if (!ALLOC (hook, 1, struct recode_surface_list)) return false; hook->surface = surface; hook->next = NULL; if (alias->implied_surfaces) { list = alias->implied_surfaces; while (list->next) list = list->next; list->next = hook; } else alias->implied_surfaces = hook; return true; } /*-------------------------------------------. | Construct the string arrays for argmatch. | `-------------------------------------------*/ struct make_argmatch_walk { RECODE_OUTER outer; unsigned charset_counter; /* number of acceptable charset names */ unsigned surface_counter; /* number of acceptable surface names */ }; static bool make_argmatch_walker_1 (void *void_alias, void *void_walk) { RECODE_ALIAS alias = (RECODE_ALIAS) void_alias; struct make_argmatch_walk *walk = (struct make_argmatch_walk *) void_walk; if (alias->symbol->type == RECODE_CHARSET) walk->charset_counter++; else walk->surface_counter++; return true; } static bool make_argmatch_walker_2 (void *void_alias, void *void_walk) { RECODE_ALIAS alias = (RECODE_ALIAS) void_alias; struct make_argmatch_walk *walk = (struct make_argmatch_walk *) void_walk; RECODE_OUTER outer = walk->outer; if (alias->symbol->type == RECODE_CHARSET) { char *string = name_for_argmatch (outer, alias->name); if (!string) abort (); outer->argmatch_charset_array[walk->charset_counter] = string; outer->realname_charset_array[walk->charset_counter] = alias->name; walk->charset_counter++; } else { char *string = name_for_argmatch (outer, alias->name); if (!string) abort (); outer->argmatch_surface_array[walk->surface_counter] = string; outer->realname_surface_array[walk->surface_counter] = alias->name; walk->surface_counter++; } return true; } bool recode_make_argmatch_arrays (RECODE_OUTER outer) { struct make_argmatch_walk walk; /* wanderer's data */ /* It may happen that new modules are added only once all initialisation completed. To handle that case, free previous arrays if any. */ if (outer->argmatch_charset_array) { const char **cursor; for (cursor = outer->argmatch_charset_array; *cursor; cursor++) free ((char *) *cursor); for (cursor = outer->argmatch_surface_array; *cursor; cursor++) free ((char *) *cursor); free (outer->argmatch_charset_array); } /* Count how many strings we need. */ walk.outer = outer; walk.charset_counter = 0; walk.surface_counter = 0; hash_do_for_each ((Hash_table *) outer->alias_table, make_argmatch_walker_1, &walk); /* Allocate the argmatch and realname arrays, each with a NULL sentinel. */ { const char **cursor; if (!ALLOC (cursor, 2*walk.charset_counter + 2*walk.surface_counter + 4, const char *)) return false; outer->argmatch_charset_array = cursor; cursor += walk.charset_counter; *cursor++ = NULL; outer->argmatch_surface_array = cursor; cursor += walk.surface_counter; *cursor++ = NULL; outer->realname_charset_array = (const char **) cursor; cursor += walk.charset_counter; *cursor++ = NULL; outer->realname_surface_array = (const char **) cursor; cursor += walk.surface_counter; *cursor = NULL; } /* Fill in the arrays. */ walk.charset_counter = 0; walk.surface_counter = 0; hash_do_for_each ((Hash_table *) outer->alias_table, make_argmatch_walker_2, &walk); return true; } /*-------------------------------------------------------------------------. | Order two strings lexicographically, ignoring case and comparing numeric | | values for run of decimal digits at first. | `-------------------------------------------------------------------------*/ static _GL_ATTRIBUTE_PURE int compare_strings (const char *stringA, const char *stringB) { int delayed = 0; while (*stringA && *stringB) if (*stringA >= '0' && *stringA <= '9') if (*stringB >= '0' && *stringB <= '9') { unsigned valueA = 0; unsigned valueB = 0; while (*stringA >= '0' && *stringA <= '9' && *stringB >= '0' && *stringB <= '9') { valueA = 10 * valueA + *stringA - '0'; valueB = 10 * valueB + *stringB - '0'; if (delayed == 0) delayed = *stringA - *stringB; stringA++; stringB++; } while (*stringA >= '0' && *stringA <= '9') { valueA = 10 * valueA + *stringA - '0'; if (delayed == 0) delayed = 1; stringA++; } while (*stringB >= '0' && *stringB <= '9') { valueB = 10 * valueB + *stringB - '0'; if (delayed == 0) delayed = -1; stringB++; } if (valueA - valueB != 0) return valueA - valueB; } else return -1; else if (*stringB >= '0' && *stringB <= '9') return 1; else { char charA = *stringA; char charB = *stringB; if (charA >= 'a' && charA <= 'z') charA += 'A' - 'a'; if (charB >= 'a' && charB <= 'z') charB += 'A' - 'a'; if (charA - charB != 0) return charA - charB; if (delayed == 0) delayed = *stringA - *stringB; stringA++; stringB++; } return *stringA ? 1 : *stringB ? -1 : delayed; } /*--------------------------------------------------------------------------. | Order two struct recode_alias, using the first key to group all surfaces | | together, the second key to group charsets or surfaces having the same | | unaliased name, the third key to list unaliases names first, and the last | | key to order aliased names. | `--------------------------------------------------------------------------*/ static int compare_struct_alias (const void *void_first, const void *void_second) { RECODE_CONST_ALIAS first = (RECODE_CONST_ALIAS) void_first; RECODE_CONST_ALIAS second = (RECODE_CONST_ALIAS) void_second; int value; if (first->symbol->type == RECODE_CHARSET && second->symbol->type != RECODE_CHARSET) return 1; if (first->symbol->type != RECODE_CHARSET && second->symbol->type == RECODE_CHARSET) return -1; if (value = compare_strings (first->symbol->name, second->symbol->name), value != 0) return value; if (first->name == first->symbol->name && second->name != second->symbol->name) return -1; if (second->name == second->symbol->name && first->name != first->symbol->name) return 1; return compare_strings (first->name, second->name); } /*-------------------------------------------------------------------------. | List all available symbols, obeying restrictions for an AFTER charset if | | any. | `-------------------------------------------------------------------------*/ struct list_symbols_walk { RECODE_ALIAS array; unsigned number; }; static bool list_symbols_walker_1 (void *void_alias, void *void_walk) { RECODE_ALIAS alias = (RECODE_ALIAS) void_alias; struct list_symbols_walk *walk = (struct list_symbols_walk *) void_walk; if (!alias->symbol->ignore) walk->number++; return true; } static bool list_symbols_walker_2 (void *void_alias, void *void_walk) { RECODE_ALIAS alias = (RECODE_ALIAS) void_alias; struct list_symbols_walk *walk = (struct list_symbols_walk *) void_walk; if (!alias->symbol->ignore) walk->array[walk->number++] = *alias; return true; } bool recode_list_all_symbols (RECODE_OUTER outer, RECODE_CONST_SYMBOL after) { struct list_symbols_walk walk; /* wanderer's data */ RECODE_ALIAS alias; /* cursor into sorted array */ bool list_flag; /* if the current alias should be listed */ /* Count how many symbols we have. */ walk.number = 0; hash_do_for_each ((Hash_table *) outer->alias_table, list_symbols_walker_1, &walk); /* Allocate a structure to hold them. */ if (!ALLOC (walk.array, walk.number, struct recode_alias)) return false; /* Copy all symbols in it. */ walk.number = 0; hash_do_for_each ((Hash_table *) outer->alias_table, list_symbols_walker_2, &walk); /* Sort it. */ qsort (walk.array, (size_t) walk.number, sizeof (struct recode_alias), compare_struct_alias); /* Print it, one line per symbol, giving the true symbol name first, followed by all its alias in lexicographic order. */ list_flag = false; for (alias = walk.array; alias < walk.array + walk.number; alias++) { /* Begin a new line with the true symbol name when it changes. */ if (alias == walk.array || alias->symbol->name != (alias - 1)->symbol->name) { if (list_flag && alias != walk.array) putchar ('\n'); list_flag = !after || !check_restricted (outer, alias->symbol, after); if (list_flag && alias->symbol->type != RECODE_CHARSET) putchar ('/'); } else if (list_flag) putchar (' '); /* Print a name and its usual surfaces. */ if (list_flag) { struct recode_surface_list *cursor; fputs (alias->name, stdout); for (cursor = alias->implied_surfaces; cursor; cursor = cursor->next) { putchar ('/'); fputs (cursor->surface->name, stdout); } } } if (list_flag) putchar ('\n'); /* Release the work array. */ free (walk.array); return true; } /* Charset contents. */ /*-----------------------------------------------------------------. | Decode a known PAIRS argument, given in STRING, constructing the | | pair_restriction array out of it. | `-----------------------------------------------------------------*/ bool recode_decode_known_pairs (RECODE_OUTER outer, const char *string) { const char *cursor; char *after; int left_value; int right_value; int *pointer; if (!ALLOC (outer->pair_restriction, 16, struct recode_known_pair)) return false; left_value = -1; right_value = -1; pointer = &left_value; cursor = string; while (*cursor) switch (*cursor) { default: return false; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': *pointer = strtoul (cursor, &after, 0); cursor = after; if (*pointer > 255) return false; break; case ':': cursor++; if (left_value < 0 || pointer != &left_value) return false; pointer = &right_value; break; case ',': cursor++; if (left_value < 0 || right_value < 0) return false; outer->pair_restriction[outer->pair_restrictions].left = (unsigned char) left_value; outer->pair_restriction[outer->pair_restrictions].right = (unsigned char) right_value; outer->pair_restrictions++; if (outer->pair_restrictions % 16 == 0) if (!REALLOC (outer->pair_restriction, outer->pair_restrictions + 16, struct recode_known_pair)) return false; left_value = -1; right_value = -1; pointer = &left_value; break; } if (left_value < 0 || right_value < 0) return false; outer->pair_restriction[outer->pair_restrictions].left = (unsigned char) left_value; outer->pair_restriction[outer->pair_restrictions].right = (unsigned char) right_value; outer->pair_restrictions++; return true; } /*-----------------------------------------------------------------. | Print a concise, tabular CHARSET description on standard output, | | presented according to LIST_FORMAT. | `-----------------------------------------------------------------*/ bool recode_list_concise_charset (RECODE_OUTER outer, RECODE_CONST_SYMBOL charset, const enum recode_list_format list_format) { unsigned half; /* half 0, half 1 of the table */ const char *format; /* format string */ const char *blanks; /* white space to replace format string */ unsigned counter; /* code counter */ unsigned counter2; /* code counter */ unsigned code; /* code value */ /* Ensure we have a strip table to play with. */ if (charset->data_type != RECODE_STRIP_DATA) { recode_error (outer, _("Cannot list `%s', no names available for this charset"), charset->name); return false; } printf ("%s\n", charset->name); /* Select format for numbers. */ switch (list_format) { default: return false; /* cannot happen */ case RECODE_NO_FORMAT: case RECODE_DECIMAL_FORMAT: format = "%3d"; blanks = " "; break; case RECODE_OCTAL_FORMAT: format = "%0.3o"; blanks = " "; break; case RECODE_HEXADECIMAL_FORMAT: format = "%0.2x"; blanks = " "; break; } /* Print both halves of the table. */ for (half = 0; half < 2; half++) { /* Skip printing this half if it is empty. */ for (code = 128 * half; code < 128 * (half + 1); code++) if (recode_code_to_ucs2 (charset, code) >= 0) break; if (code == 128 * (half + 1)) continue; /* Print this half. */ printf ("\n"); for (counter = 128 * half; counter < 128 * half + 16; counter++) for (counter2 = 0; counter2 < 128; counter2 += 16) { int ucs2; const char *mnemonic; if (counter2 > 0) printf (" "); code = counter + counter2; ucs2 = recode_code_to_ucs2 (charset, code); mnemonic = ucs2 >= 0 ? recode_ucs2_to_rfc1345 (ucs2) : NULL; /* FIXME: Trailing space elimination is not always effective. */ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wformat-nonliteral" if (ucs2 >= 0) printf (format, code); else if (mnemonic || counter2 != 112) fputs (blanks, stdout); #pragma GCC diagnostic pop if (mnemonic) printf (counter2 == 112 ? " %s\n" : " %-3s", mnemonic); else printf (counter2 == 112 ? "\n" : " "); } } return true; } /*------------------------------------------------------. | Print a full CHARSET description on standard output. | `------------------------------------------------------*/ static void list_full_charset_line (int code, recode_ucs2 ucs2, bool french) { const char *mnemonic = recode_ucs2_to_rfc1345 (ucs2); const char *charname; if (code >= 0) printf ("%3d %.3o %.2x", code, (unsigned)code, (unsigned)code); else fputs (" + + + ", stdout); printf (" %.4X", ucs2); if (mnemonic) printf (" %-3s", mnemonic); else fputs (" ", stdout); if (french) { charname = recode_ucs2_to_french_charname (ucs2); if (!charname) charname = recode_ucs2_to_charname (ucs2); } else { charname = recode_ucs2_to_charname (ucs2); if (!charname) charname = recode_ucs2_to_french_charname (ucs2); } if (charname) { fputs (" ", stdout); fputs (charname, stdout); } putchar ('\n'); } /*-----------------------------------------------. | Decide if we prefer French or English output. | `-----------------------------------------------*/ bool recode_should_prefer_french (void) { const char *string = setlocale(LC_MESSAGES, NULL); return string && string[0] == 'f' && string[1] == 'r'; } bool recode_list_full_charset (RECODE_OUTER outer, RECODE_CONST_SYMBOL charset) { bool french = recode_should_prefer_french(); /* See which data is available. */ switch (charset->data_type) { case RECODE_EXPLODE_DATA: { const unsigned short *data = (const unsigned short *) charset->data; unsigned code; /* code counter */ unsigned expected; /* expected value for code counter */ bool insert_white; /* insert a while line before printing */ /* Print the long table according to explode data. */ printf (_("Dec Oct Hex UCS2 Mne %s\n"), charset->name); insert_white = true; expected = 0; while (*data != DONE) { code = *data++; while (expected < code) { if (insert_white) { putchar ('\n'); insert_white = false; } list_full_charset_line (expected, expected, french); expected++; } if (*data == ELSE || *data == DONE) insert_white = true; else { if (insert_white) { putchar ('\n'); insert_white = false; } list_full_charset_line (code, *data++, french); while (*data != ELSE && *data != DONE) list_full_charset_line (-1, *data++, french); } while (*data != DONE) data++; expected = code + 1; data++; } } return true; case RECODE_STRIP_DATA: { unsigned code; /* code counter */ int ucs2; /* UCS-2 translation */ bool insert_white; /* insert a while line before printing */ /* Print the long table according to strip data. */ printf (_("Dec Oct Hex UCS2 Mne %s\n"), charset->name); insert_white = true; for (code = 0; code < 256; code++) if ((ucs2 = recode_code_to_ucs2 (charset, code)), ucs2 >= 0) { if (insert_white) { putchar ('\n'); insert_white = false; } list_full_charset_line (code, ucs2, french); } else insert_white = true; } return true; default: recode_error (outer, _("Sorry, no names available for `%s'"), charset->name); return false; } } /*----------------------------------------------------------------------------. | This is a diagnostic tool. Report all charsets which are a subset of | | another, or are identical. Return true only if there are no such subsets. | `----------------------------------------------------------------------------*/ bool recode_find_and_report_subsets (RECODE_OUTER outer) { bool success = true; RECODE_SYMBOL charset1; for (charset1 = outer->symbol_list; charset1; charset1 = charset1->next) { const struct strip_data *table1 = (const struct strip_data *) charset1->data; RECODE_SYMBOL charset2; if (charset1->ignore || charset1->data_type != RECODE_STRIP_DATA) continue; for (charset2 = outer->symbol_list; charset2; charset2 = charset2->next) { const struct strip_data *table2 = (const struct strip_data *) charset2->data; if (charset2->ignore || charset2->data_type != RECODE_STRIP_DATA || charset2 == charset1) continue; { bool subset = true; unsigned distance = 0; unsigned counter; unsigned slider; for (counter = 0; counter < 256/STRIP_SIZE; counter++) { const recode_ucs2 *pool1 = table1->pool; const recode_ucs2 *pool2 = table2->pool; const short offset1 = table1->offset[counter]; const short offset2 = table2->offset[counter]; if (pool1 != pool2 || offset1 != offset2) for (slider = 0; slider < STRIP_SIZE; slider++) { recode_ucs2 value1 = pool1[offset1 + slider]; recode_ucs2 value2 = pool2[offset2 + slider]; if (value1 != value2) { if (value1 == BIT_MASK (16)) distance++; else { subset = false; break; } } } if (!subset) break; } if (subset) { if (distance == 0) printf ("[ 0] %s == %s\n", charset1->name, charset2->name); else printf ("[%3u] %s < %s\n", distance, charset1->name, charset2->name); success = false; } } } } return success; } recode-3.7.15/src/bangbang.c0000644000175000017500000003035314374760602011240 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" static const char *const translation_table[256] = { "!!@", /* 0 */ "!!a", /* 1 */ "!!b", /* 2 */ "!!c", /* 3 */ "!!d", /* 4 */ "!!e", /* 5 */ "!!f", /* 6 */ "!!g", /* 7 */ "!!h", /* 8 */ "!!i", /* 9 */ "\n", /* 10, would have been "!!j" */ "!!k", /* 11 */ "!!l", /* 12 */ "!!m", /* 13 */ "!!n", /* 14 */ "!!o", /* 15 */ "!!p", /* 16 */ "!!q", /* 17 */ "!!r", /* 18 */ "!!s", /* 19 */ "!!t", /* 20 */ "!!u", /* 21 */ "!!v", /* 22 */ "!!w", /* 23 */ "!!x", /* 24 */ "!!y", /* 25 */ "!!z", /* 26 */ "!![", /* 27 */ "!!\\", /* 28 */ "!!]", /* 29 */ "!!^", /* 30 */ "!!_", /* 31 */ " ", /* 32 */ "!\"", /* 33 */ "\"", /* 34 */ "#", /* 35 */ "$", /* 36 */ "%", /* 37 */ "&", /* 38 */ "'", /* 39 */ "(", /* 40 */ ")", /* 41 */ "*", /* 42 */ "+", /* 43 */ ",", /* 44 */ "-", /* 45 */ ".", /* 46 */ "/", /* 47 */ "0", /* 48 */ "1", /* 49 */ "2", /* 50 */ "3", /* 51 */ "4", /* 52 */ "5", /* 53 */ "6", /* 54 */ "7", /* 55 */ "8", /* 56 */ "9", /* 57 */ ":", /* 58 */ ";", /* 59 */ "<", /* 60 */ "=", /* 61 */ ">", /* 62 */ "?", /* 63 */ "@", /* 64 */ "!a", /* 65 */ "!b", /* 66 */ "!c", /* 67 */ "!d", /* 68 */ "!e", /* 69 */ "!f", /* 70 */ "!g", /* 71 */ "!h", /* 72 */ "!i", /* 73 */ "!j", /* 74 */ "!k", /* 75 */ "!l", /* 76 */ "!m", /* 77 */ "!n", /* 78 */ "!o", /* 79 */ "!p", /* 80 */ "!q", /* 81 */ "!r", /* 82 */ "!s", /* 83 */ "!t", /* 84 */ "!u", /* 85 */ "!v", /* 86 */ "!w", /* 87 */ "!x", /* 88 */ "!y", /* 89 */ "!z", /* 90 */ "[", /* 91 */ "\\", /* 92 */ "]", /* 93 */ "^", /* 94 */ "_", /* 95 */ "!@", /* 96 */ "a", /* 97 */ "b", /* 98 */ "c", /* 99 */ "d", /* 100 */ "e", /* 101 */ "f", /* 102 */ "g", /* 103 */ "h", /* 104 */ "i", /* 105 */ "j", /* 106 */ "k", /* 107 */ "l", /* 108 */ "m", /* 109 */ "n", /* 110 */ "o", /* 111 */ "p", /* 112 */ "q", /* 113 */ "r", /* 114 */ "s", /* 115 */ "t", /* 116 */ "u", /* 117 */ "v", /* 118 */ "w", /* 119 */ "x", /* 120 */ "y", /* 121 */ "z", /* 122 */ "![", /* 123 */ "!\\", /* 124 */ "!]", /* 125 */ "!^", /* 126 */ "!_", /* 127 */ NULL, /* 128 */ NULL, /* 129 */ NULL, /* 130 */ NULL, /* 131 */ NULL, /* 132 */ NULL, /* 133 */ NULL, /* 134 */ NULL, /* 135 */ NULL, /* 136 */ NULL, /* 137 */ NULL, /* 138 */ NULL, /* 139 */ NULL, /* 140 */ NULL, /* 141 */ NULL, /* 142 */ NULL, /* 143 */ NULL, /* 144 */ NULL, /* 145 */ NULL, /* 146 */ NULL, /* 147 */ NULL, /* 148 */ NULL, /* 149 */ NULL, /* 150 */ NULL, /* 151 */ NULL, /* 152 */ NULL, /* 153 */ NULL, /* 154 */ NULL, /* 155 */ NULL, /* 156 */ NULL, /* 157 */ NULL, /* 158 */ NULL, /* 159 */ " ", /* 160 no-break space */ NULL, /* 161 inverted exclamation mark */ NULL, /* 162 cent sign */ NULL, /* 163 pound sign */ NULL, /* 164 currency sign */ NULL, /* 165 yen sign */ NULL, /* 166 broken bar */ NULL, /* 167 paragraph sign, section sign */ NULL, /* 168 diaeresis */ NULL, /* 169 copyright sign */ NULL, /* 170 feminine ordinal indicator */ "!>", /* 171 left angle quotation mark */ NULL, /* 172 not sign */ NULL, /* 173 soft hyphen */ NULL, /* 174 registered trade mark sign */ NULL, /* 175 macron */ NULL, /* 176 degree sign */ NULL, /* 177 plus-minus sign */ NULL, /* 178 superscript two */ NULL, /* 179 superscript three */ NULL, /* 180 acute accent */ NULL, /* 181 small greek mu, micro sign */ NULL, /* 182 pilcrow sign */ NULL, /* 183 middle dot */ NULL, /* 184 cedilla */ NULL, /* 185 superscript one */ NULL, /* 186 masculine ordinal indicator */ "!?", /* 187 right angle quotation mark */ NULL, /* 188 vulgar fraction one quarter */ NULL, /* 189 vulgar fraction one half */ NULL, /* 190 vulgar fraction three quarters */ NULL, /* 191 inverted question mark */ NULL, /* 192 capital A with grave accent */ NULL, /* 193 capital A with acute accent */ NULL, /* 194 capital A with circumflex accent */ NULL, /* 195 capital A with tilde */ NULL, /* 196 capital A diaeresis */ NULL, /* 197 capital A with ring above */ NULL, /* 198 capital diphthong A with E */ NULL, /* 199 capital C with cedilla */ NULL, /* 200 capital E with grave accent */ NULL, /* 201 capital E with acute accent */ NULL, /* 202 capital E with circumflex accent */ NULL, /* 203 capital E with diaeresis */ NULL, /* 204 capital I with grave accent */ NULL, /* 205 capital I with acute accent */ NULL, /* 206 capital I with circumflex accent */ NULL, /* 207 capital I with diaeresis */ NULL, /* 208 capital icelandic ETH */ NULL, /* 209 capital N with tilde */ NULL, /* 210 capital O with grave accent */ NULL, /* 211 capital O with acute accent */ NULL, /* 212 capital O with circumflex accent */ NULL, /* 213 capital O with tilde */ NULL, /* 214 capital O with diaeresis */ NULL, /* 215 multiplication sign */ NULL, /* 216 capital O with oblique stroke */ NULL, /* 217 capital U with grave accent */ NULL, /* 218 capital U with acute accent */ NULL, /* 219 capital U with circumflex accent */ NULL, /* 220 capital U with diaeresis */ NULL, /* 221 capital Y with acute accent */ NULL, /* 222 capital icelandic THORN */ NULL, /* 223 small german sharp s */ "!0", /* 224 small a with grave accent */ NULL, /* 225 small a with acute accent */ "!1", /* 226 small a with circumflex accent */ NULL, /* 227 small a with tilde */ NULL, /* 228 small a with diaeresis */ NULL, /* 229 small a with ring above */ "!;", /* 230 small diphthong a with e */ "!=", /* 231 small c with cedilla */ "!3", /* 232 small e with grave accent */ "!2", /* 233 small e with acute accent */ "!5", /* 234 small e with circumflex accent */ "!4", /* 235 small e with diaeresis */ NULL, /* 236 small i with grave accent */ NULL, /* 237 small i with acute accent */ "!7", /* 238 small i with circumflex accent */ "!6", /* 239 small i with diaeresis */ NULL, /* 240 small icelandic eth */ NULL, /* 241 small n with tilde */ NULL, /* 242 small o with grave accent */ NULL, /* 243 small o with acute accent */ "!8", /* 244 small o with circumflex accent */ NULL, /* 245 small o with tilde */ NULL, /* 246 small o with diaeresis */ "!<", /* 247 division sign (or French oe?) */ NULL, /* 248 small o with oblique stroke */ "!9", /* 249 small u with grave accent */ NULL, /* 250 small u with acute accent */ "!:", /* 251 small u with circumflex accent */ NULL, /* 252 small u with diaeresis */ NULL, /* 253 small y with acute accent */ NULL, /* 254 small icelandic thorn */ NULL, /* 255 small y with diaeresis */ }; static bool init_latin1_bangbang (RECODE_STEP step, RECODE_CONST_REQUEST request _GL_UNUSED, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; step->step_type = RECODE_BYTE_TO_STRING; /* The cast is a way to silently discard the const. */ step->step_table = (void *) translation_table; return true; } static bool transform_bangbang_latin1 (RECODE_SUBTASK subtask) { int input_char; /* current character */ while (input_char = recode_get_byte (subtask), input_char != EOF) { if (input_char >= 'A' && input_char <= 'Z') input_char += 'a' - 'A'; else if (input_char == '!') { input_char = recode_get_byte (subtask); if (input_char >= 'a' && input_char <= 'z') input_char += 'A' - 'a'; else if (input_char < 'A' || input_char > 'Z') switch (input_char) { case '"': input_char = '!'; break; case '0': input_char = 224; break; /* a` */ case '1': input_char = 226; break; /* a^ */ case '2': input_char = 233; break; /* e' */ case '3': input_char = 232; break; /* e` */ case '4': input_char = 235; break; /* e" */ case '5': input_char = 234; break; /* e^ */ case '6': input_char = 236; break; /* e" */ case '7': input_char = 238; break; /* i^ */ case '8': input_char = 244; break; /* o^ */ case '9': input_char = 249; break; /* u` */ case ':': input_char = 251; break; /* u^ */ case '=': input_char = 231; break; /* c, */ case '>': input_char = 171; break; /* `` */ case '?': input_char = 187; break; /* '' */ case ';': input_char = 230; break; /* ae */ case '<': input_char = 247; break; /* oe ??? */ case '@': input_char = '`'; break; case '[': input_char = '{'; break; case '\\': input_char = '|'; break; case ']': input_char = '}'; break; case '^': input_char = '~'; break; case '_': input_char = 127; break; /* del */ case '!': input_char = recode_get_byte (subtask); if (input_char == 'J' || input_char == 'j') RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); /* FIXME: What is canonical? Upper case or lower case? */ if (input_char >= 'A' && input_char <= 'Z') input_char += 1 - 'A'; else if (input_char >= 'a' && input_char <= 'z') input_char += 1 - 'a'; else switch (input_char) { case '@': input_char = 0; break; case '[': input_char = 27; break; case '\\': input_char = 28; break; case ']': input_char = 29; break; case '^': input_char = 30; break; case '_': input_char = 31; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); recode_put_byte ('!', subtask); recode_put_byte ('!', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); recode_put_byte ('!', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } } recode_put_byte (input_char, subtask); } SUBTASK_RETURN (subtask); } bool module_bangbang (RECODE_OUTER outer) { return recode_declare_single (outer, "Latin-1", "Bang-Bang", outer->quality_byte_to_variable, init_latin1_bangbang, recode_transform_byte_to_variable) && recode_declare_single (outer, "Bang-Bang", "Latin-1", outer->quality_variable_to_byte, NULL, transform_bangbang_latin1); } void delmodule_bangbang (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/strip-data.c0000644000175000017500000035013414765654536011567 /* DO NOT MODIFY THIS FILE! It was generated by `recode/tables.py'. */ /* Conversion of files between different charsets and surfaces. Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . Suite 330, Boston, MA 02111-1307, USA. */ #include "config.h" #include "common.h" #include "decsteps.h" /* ISO_646.basic ref ISO_646.basic:1983 */ static struct strip_data data_0 = { ucs2_data_pool, { 0, 0, 0, 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* INVARIANT iso-ir-170 */ static struct strip_data data_1 = { ucs2_data_pool, { 104, 112, 120, 128, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO_646.irv iso-ir-2 ISO_646.irv:1983 irv */ static struct strip_data data_2 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* BS_4730 iso-ir-4 ISO646-GB gb uk */ static struct strip_data data_3 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ANSI_X3.4-1968 iso-ir-6 ANSI_X3.4-1986 ISO_646.irv:1991 ASCII ISO646-US US-ASCII us IBM367 CP367 367 */ static struct strip_data data_4 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NATS-SEFI iso-ir-8-1 */ static struct strip_data data_5 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 208, 48, 56, 216, 224, 80, 88, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NATS-SEFI-ADD iso-ir-8-2 */ static struct strip_data data_6 = { ucs2_data_pool, { 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 248, 256, 264, 0, 272, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NATS-DANO iso-ir-9-1 */ static struct strip_data data_7 = { ucs2_data_pool, { 104, 112, 120, 128, 288, 16, 24, 32, 208, 48, 56, 296, 224, 80, 88, 304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NATS-DANO-ADD iso-ir-9-2 */ static struct strip_data data_8 = { ucs2_data_pool, { 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 248, 312, 264, 0, 272, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* SEN_850200_B iso-ir-10 FI ISO646-FI ISO646-SE se SS636127 */ static struct strip_data data_9 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 152, 48, 56, 328, 168, 80, 88, 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* SEN_850200_C iso-ir-11 ISO646-SE2 se2 */ static struct strip_data data_10 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 344, 48, 56, 352, 360, 80, 88, 368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6220-1969-jp JIS_C6220-1969 iso-ir-13 katakana x0201-7 */ static struct strip_data data_11 = { ucs2_data_pool, { 104, 112, 120, 128, 376, 384, 392, 400, 408, 416, 424, 432, 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6220-1969-ro iso-ir-14 jp ISO646-JP */ static struct strip_data data_12 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 448, 168, 80, 88, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* IT iso-ir-15 ISO646-IT */ static struct strip_data data_13 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 456, 48, 56, 464, 472, 80, 88, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* PT iso-ir-16 ISO646-PT */ static struct strip_data data_14 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 456, 48, 56, 488, 168, 80, 88, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ES iso-ir-17 ISO646-ES */ static struct strip_data data_15 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 456, 48, 56, 504, 168, 80, 88, 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* greek7-old iso-ir-18 */ static struct strip_data data_16 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 520, 528, 536, 544, 552, 560, 568, 576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* latin-greek iso-ir-19 */ static struct strip_data data_17 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 152, 48, 56, 160, 552, 560, 568, 584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* DIN_66003 iso-ir-21 de ISO646-DE */ static struct strip_data data_18 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 456, 48, 56, 592, 168, 80, 88, 600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NF_Z_62-010_(1973) iso-ir-25 ISO646-FR1 */ static struct strip_data data_19 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 608, 48, 56, 616, 168, 80, 88, 624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* Latin-greek-1 iso-ir-27 */ static struct strip_data data_20 = { ucs2_data_pool, { 104, 112, 120, 128, 632, 16, 24, 640, 648, 48, 56, 656, 168, 80, 88, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO_5427 iso-ir-37 */ static struct strip_data data_21 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 664, 672, 680, 688, 696, 704, 712, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* BS_viewdata iso-ir-47 */ static struct strip_data data_22 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 152, 48, 56, 728, 168, 80, 88, 736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* INIS iso-ir-49 */ static struct strip_data data_23 = { ucs2_data_pool, { 104, 112, 120, 128, 744, 16, 24, 752, 40, 48, 56, 760, 72, 80, 88, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* INIS-8 iso-ir-50 */ static struct strip_data data_24 = { ucs2_data_pool, { 104, 112, 120, 128, 776, 0, 0, 784, 0, 0, 0, 792, 800, 808, 816, 824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* INIS-cyrillic iso-ir-51 */ static struct strip_data data_25 = { ucs2_data_pool, { 104, 112, 120, 128, 776, 832, 840, 848, 664, 672, 680, 688, 696, 704, 712, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO_5427-ext iso-ir-54 ISO_5427:1981 */ static struct strip_data data_26 = { ucs2_data_pool, { 104, 112, 120, 128, 776, 0, 0, 0, 856, 864, 872, 880, 888, 896, 904, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO_5428 iso-ir-55 ISO_5428:1980 */ static struct strip_data data_27 = { ucs2_data_pool, { 104, 112, 120, 128, 912, 0, 920, 928, 936, 944, 952, 960, 968, 976, 984, 992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* GB_1988-80 iso-ir-57 cn ISO646-CN */ static struct strip_data data_28 = { ucs2_data_pool, { 104, 112, 120, 128, 1000, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NS_4551-1 iso-ir-60 ISO646-NO no */ static struct strip_data data_29 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 1008, 168, 80, 88, 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NS_4551-2 ISO646-NO2 iso-ir-61 no2 */ static struct strip_data data_30 = { ucs2_data_pool, { 104, 112, 120, 128, 1024, 16, 24, 32, 152, 48, 56, 1008, 168, 80, 88, 1032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NF_Z_62-010 iso-ir-69 ISO646-FR fr */ static struct strip_data data_31 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 608, 48, 56, 616, 1040, 80, 88, 624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* PT2 iso-ir-84 ISO646-PT2 */ static struct strip_data data_32 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 1048, 48, 56, 488, 168, 80, 88, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ES2 iso-ir-85 ISO646-ES2 */ static struct strip_data data_33 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 1064, 48, 56, 1072, 168, 80, 88, 1080, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* MSZ_7795.3 iso-ir-86 ISO646-HU hu */ static struct strip_data data_34 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 1088, 48, 56, 1096, 1104, 80, 88, 1112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* greek7 iso-ir-88 */ static struct strip_data data_35 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 1120, 1128, 1136, 1144, 1152, 1160, 1168, 1176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ASMO_449 ISO_9036 arabic7 iso-ir-89 */ static struct strip_data data_36 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 1184, 24, 1192, 1200, 1208, 1216, 1224, 1232, 1240, 1248, 1256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6229-1984-a iso-ir-91 jp-ocr-a */ static struct strip_data data_37 = { ucs2_data_pool, { 104, 112, 120, 128, 1264, 16, 24, 1272, 40, 48, 56, 1280, 0, 0, 0, 1288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6229-1984-b iso-ir-92 ISO646-JP-OCR-B jp-ocr-b */ static struct strip_data data_38 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 1296, 72, 80, 88, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6229-1984-b-add iso-ir-93 jp-ocr-b-add */ static struct strip_data data_39 = { ucs2_data_pool, { 104, 112, 120, 128, 1312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6229-1984-hand iso-ir-94 jp-ocr-hand */ static struct strip_data data_40 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 1296, 0, 0, 0, 1320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6229-1984-hand-add iso-ir-95 jp-ocr-hand-add */ static struct strip_data data_41 = { ucs2_data_pool, { 104, 112, 120, 128, 1328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6229-1984-kana iso-ir-96 */ static struct strip_data data_42 = { ucs2_data_pool, { 104, 112, 120, 128, 1336, 0, 392, 400, 408, 416, 424, 432, 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO_2033-1983 iso-ir-98 e13b */ static struct strip_data data_43 = { ucs2_data_pool, { 104, 112, 120, 128, 776, 0, 24, 1344, 0, 0, 0, 0, 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO-8859-1 iso-ir-100 ISO_8859-1:1987 ISO_8859-1 ISO8859-1 latin1 l1 IBM819 CP819 819 */ static struct strip_data data_44 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472 } }; /* ISO-8859-2 iso-ir-101 ISO_8859-2:1987 ISO_8859-2 ISO8859-2 latin2 l2 IBM912 CP912 912 */ static struct strip_data data_45 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1480, 1488, 1496, 1504, 1512, 1520, 1528, 1536, 1544, 1552, 1560, 1568 } }; /* T.61-7bit iso-ir-102 */ static struct strip_data data_46 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 152, 48, 56, 1576, 72, 80, 88, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO-8859-3 iso-ir-109 ISO_8859-3:1988 ISO_8859-3 ISO8859-3 latin3 l3 */ static struct strip_data data_47 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1584, 1592, 1600, 1608, 1616, 1424, 1624, 1632, 1640, 1456, 1648, 1656 } }; /* ISO-8859-4 iso-ir-110 ISO_8859-4:1988 ISO_8859-4 ISO8859-4 latin4 l4 */ static struct strip_data data_48 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1664, 1672, 1680, 1688, 1696, 1704, 1712, 1720, 1728, 1736, 1744, 1752 } }; /* ECMA-cyrillic iso-ir-111 ECMA-113:1986 ECMA-113 */ static struct strip_data data_49 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1760, 1768, 1776, 1784, 664, 672, 680, 688, 696, 704, 712, 1792 } }; /* CSA_Z243.4-1985-1 iso-ir-121 ISO646-CA csa7-1 ca */ static struct strip_data data_50 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 608, 48, 56, 1800, 1808, 80, 88, 1816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* CSA_Z243.4-1985-2 iso-ir-122 ISO646-CA2 csa7-2 */ static struct strip_data data_51 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 608, 48, 56, 1824, 1808, 80, 88, 1816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* CSA_Z243.4-1985-gr iso-ir-123 */ static struct strip_data data_52 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1832, 1840, 800, 1848, 1856, 1864, 1872, 1880, 1888, 1896, 1904, 1912 } }; /* ISO-8859-7 iso-ir-126 ISO_8859-7:1987 ISO_8859-7 ISO8859-7 ELOT_928 ECMA-118 greek greek8 */ static struct strip_data data_53 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1920, 1928, 1936, 1944, 1952, 1960, 1968, 1976, 1984, 1992, 2000, 2008 } }; /* ISO-8859-6 iso-ir-127 ISO_8859-6:1987 ISO_8859-6 ISO8859-6 ECMA-114 ASMO-708 arabic */ static struct strip_data data_54 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2016, 2024, 0, 2032, 2040, 1208, 1216, 2048, 1232, 1240, 1248, 0 } }; /* ISO-8859-8 iso-ir-138 ISO_8859-8:1988 ISO_8859-8 ISO8859-8 hebrew */ static struct strip_data data_55 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2056, 2064, 1400, 2072, 0, 0, 0, 2080, 2088, 2096, 2104, 2112 } }; /* CSN_369103 iso-ir-139 KOI-8_L2 koi8l2 */ static struct strip_data data_56 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2120, 1488, 1496, 1504, 1512, 1520, 1528, 1536, 1544, 1552, 1560, 1568 } }; /* JUS_I.B1.002 iso-ir-141 ISO646-YU js yu */ static struct strip_data data_57 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 2128, 48, 56, 2136, 2144, 80, 88, 2152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* IEC_P27-1 iso-ir-143 */ static struct strip_data data_58 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2160, 2168, 2176, 2184, 2192, 2200, 2208, 2216, 2224, 2232, 2240, 2248 } }; /* ISO-8859-5 iso-ir-144 ISO_8859-5:1988 ISO_8859-5 ISO8859-5 cyrillic */ static struct strip_data data_59 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2256, 2264, 2272, 2280, 2288, 2296, 2304, 2312, 2320, 2328, 2336, 2344 } }; /* JUS_I.B1.003-serb iso-ir-146 serbian */ static struct strip_data data_60 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 2352, 2360, 2368, 2376, 2384, 2392, 2400, 2408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JUS_I.B1.003-mac macedonian iso-ir-147 */ static struct strip_data data_61 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 2352, 2360, 2368, 2416, 2384, 2392, 2400, 2424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO-8859-9 iso-ir-148 ISO_8859-9:1989 ISO_8859-9 ISO8859-9 latin5 l5 */ static struct strip_data data_62 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 2432, 2440, 1448, 2448, 2456, 2464 } }; /* greek-ccitt iso-ir-150 */ static struct strip_data data_63 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 1120, 1960, 1968, 2472, 2480, 1992, 2000, 2488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NC_NC00-10 cuba NC_NC00-10:81 iso-ir-151 ISO646-CU */ static struct strip_data data_64 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 152, 48, 56, 2496, 168, 80, 88, 2504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO_6937-2-25 iso-ir-152 */ static struct strip_data data_65 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2512, 2520, 0, 2528, 0, 0, 2536, 2544, 2552, 2560, 2568, 2576 } }; /* GOST_19768-87 ST_SEV_358-88 iso-ir-153 */ static struct strip_data data_66 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2584, 2592, 2272, 2280, 2288, 2296, 2304, 2312, 2320, 2328, 2600, 0 } }; /* ISO_8859-supp iso-ir-154 latin1-2-5 */ static struct strip_data data_67 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2608, 2616, 2624, 2632, 2640, 2648, 2656, 2664, 2672, 2680, 2688, 2696 } }; /* ISO_10367-box iso-ir-155 */ static struct strip_data data_68 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 0, 0, 0, 0, 2704, 2712, 2720, 2728, 0, 0, 0, 0 } }; /* ISO-8859-10 iso-ir-157 ISO_8859-10:1993 ISO_8859-10 ISO8859-10 L6 latin6 */ static struct strip_data data_69 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2736, 2744, 2752, 2760, 1696, 2768, 2776, 2784, 1728, 2792, 2800, 2808 } }; /* ISO-8859-13 iso-ir-179a ISO_8859-13:1998 ISO_8859-13 ISO8859-13 latin7 iso-baltic l7 */ static struct strip_data data_70 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2816, 1392, 2824, 1408, 2832, 2840, 2848, 2856, 2864, 2872, 2880, 2888 } }; /* ISO-8859-14 iso-ir-199 ISO_8859-14:1998 ISO_8859-14 ISO8859-14 latin8 iso-celtic l8 */ static struct strip_data data_71 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2896, 2904, 2912, 2920, 1416, 1424, 2928, 2936, 1448, 1456, 2944, 2952 } }; /* ISO-8859-15 iso-ir-203 ISO_8859-15:1998 ISO_8859-15 ISO8859-15 latin9 l9 */ static struct strip_data data_72 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2960, 2968, 2976, 2984, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472 } }; /* sami latin-lap lap iso-ir-158 */ static struct strip_data data_73 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2992, 0, 3000, 0, 3008, 3016, 0, 0, 3024, 3032, 0, 0 } }; /* baltic iso-ir-179 */ static struct strip_data data_74 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 3040, 3048, 1400, 3056, 3064, 3072, 3080, 3088, 3096, 3104, 3112, 3120 } }; /* DS_2089 DS2089 ISO646-DK dk */ static struct strip_data data_75 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 1008, 168, 80, 88, 3128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_X0201 X0201 */ static struct strip_data data_76 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 448, 168, 80, 88, 176, 1352, 1360, 1368, 1376, 3136, 384, 392, 400, 408, 416, 424, 432, 0, 0, 0, 0 } }; /* KSC5636 ISO646-KR */ static struct strip_data data_77 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 3144, 168, 80, 88, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* DEC-MCS dec */ static struct strip_data data_78 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 3152, 3160, 3168, 3176, 1416, 1424, 3184, 3192, 1448, 1456, 3200, 3208 } }; /* hp-roman8 roman8 r8 */ static struct strip_data data_79 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 3216, 3224, 3232, 3240, 3248, 3256, 3264, 3272, 3280, 3288, 3296, 3304 } }; /* NeXTSTEP next */ static struct strip_data data_80 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 3312, 1424, 3320, 3328, 3336, 3344, 3352, 3360, 3368, 3376, 3384, 3392, 3400, 3408, 3416, 3424 } }; /* macintosh mac */ static struct strip_data data_81 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 3432, 3440, 3448, 3456, 3464, 3472, 3480, 3488, 3496, 3504, 3512, 3520, 3528, 3536, 3544, 3552 } }; /* mac-is */ static struct strip_data data_82 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 3432, 3440, 3448, 3456, 3464, 3472, 3480, 3488, 3496, 3560, 3568, 3576, 3528, 3536, 3544, 3552 } }; /* IBM037 CP037 037 ebcdic-cp-us ebcdic-cp-ca ebcdic-cp-wt ebcdic-cp-nl */ static struct strip_data data_83 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 3656, 3664, 3672, 3680, 3688, 3696, 3704, 3712, 3720, 3728, 3736, 3744, 3752, 3760, 3768, 3776, 3784, 3792, 3800, 3808, 3816, 24, 3824 } }; /* IBM038 EBCDIC-INT CP038 038 */ static struct strip_data data_84 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 3832, 3840, 3848, 3856, 3864, 0, 3872, 72, 3880, 3888, 3896, 3904, 3912, 0, 0, 3776, 3920, 3792, 3928, 3936, 3944, 24, 3952 } }; /* IBM256 EBCDIC-INT1 CP256 256 */ static struct strip_data data_85 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 3960, 3664, 3968, 3680, 3688, 3696, 3704, 3712, 3720, 3728, 3736, 3744, 3752, 3976, 3984, 3776, 3784, 3792, 3800, 3992, 3816, 24, 3824 } }; /* IBM273 CP273 273 */ static struct strip_data data_86 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4000, 4008, 3664, 4016, 4024, 4032, 3696, 4040, 3712, 3720, 3728, 3736, 4048, 3752, 4056, 4064, 4072, 4080, 4088, 4096, 4104, 4112, 24, 4120 } }; /* IBM274 EBCDIC-BE CP274 274 */ static struct strip_data data_87 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 3832, 3840, 3848, 3856, 4128, 0, 4136, 72, 3880, 3888, 3896, 4144, 3912, 0, 0, 4152, 3920, 4160, 3928, 4168, 3944, 24, 3952 } }; /* IBM275 EBCDIC-BR CP275 275 */ static struct strip_data data_88 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 4176, 3840, 4184, 3856, 4192, 0, 4200, 72, 3880, 3888, 3896, 3904, 3912, 0, 0, 4208, 3920, 4216, 3928, 3936, 3944, 24, 3952 } }; /* IBM277 EBCDIC-CP-DK EBCDIC-CP-NO */ static struct strip_data data_89 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4224, 4232, 3664, 4240, 4248, 4256, 4264, 4272, 4280, 3720, 3728, 4288, 4296, 3752, 4304, 4064, 4312, 3784, 4320, 4328, 3808, 3816, 24, 3824 } }; /* IBM278 CP278 278 ebcdic-cp-fi ebcdic-cp-se */ static struct strip_data data_90 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4336, 4344, 4352, 4240, 4360, 4032, 3696, 4368, 3712, 3720, 3728, 4376, 4296, 3752, 4384, 4064, 4072, 4080, 4320, 4328, 3808, 4392, 24, 3824 } }; /* IBM280 CP280 280 ebcdic-cp-it */ static struct strip_data data_91 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4400, 4408, 4416, 4424, 3680, 4432, 3696, 4440, 3712, 3720, 4448, 3736, 4456, 3752, 4464, 4064, 608, 4472, 4160, 4480, 4488, 3816, 24, 3824 } }; /* IBM281 EBCDIC-JP-E CP281 281 */ static struct strip_data data_92 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 4496, 3840, 4504, 3856, 3864, 0, 3872, 72, 3880, 3888, 3896, 4512, 3912, 0, 0, 3776, 3920, 3792, 3928, 4520, 3944, 24, 3952 } }; /* IBM284 CP284 284 ebcdic-cp-es */ static struct strip_data data_93 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 4528, 3664, 4536, 3680, 4544, 3696, 4552, 3712, 3720, 3728, 3736, 4560, 3752, 4304, 4568, 3776, 3784, 3792, 3800, 3808, 3816, 24, 3824 } }; /* IBM285 CP285 285 ebcdic-cp-gb */ static struct strip_data data_94 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 4576, 3664, 4584, 3680, 3688, 3696, 3704, 3712, 3720, 3728, 3736, 4592, 3752, 4600, 4608, 3776, 3784, 3792, 3800, 3808, 3816, 24, 3824 } }; /* IBM290 CP290 290 EBCDIC-JP-kana */ static struct strip_data data_95 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 376, 4616, 4624, 4632, 3856, 3864, 0, 3872, 4640, 4648, 4656, 4664, 4672, 4680, 0, 4688, 40, 3920, 4696, 3928, 4520, 3944, 24, 3952 } }; /* IBM297 CP297 297 ebcdic-cp-fr */ static struct strip_data data_96 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4704, 4408, 4712, 4720, 3680, 4728, 3696, 4736, 3712, 3720, 4448, 3736, 4744, 3752, 4752, 4760, 4152, 3784, 4160, 4768, 4488, 3816, 24, 3824 } }; /* IBM420 CP420 420 ebcdic-cp-ar1 */ static struct strip_data data_97 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4776, 4784, 4792, 4800, 4808, 4816, 4824, 4832, 4840, 4848, 4856, 4864, 4872, 4880, 4888, 4896, 4904, 4912, 4920, 4928, 4936, 4944, 24, 4952 } }; /* IBM423 CP423 423 ebcdic-cp-gr */ static struct strip_data data_98 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4960, 4968, 4976, 4984, 4992, 5000, 5008, 5016, 5024, 5032, 5040, 5048, 5056, 5064, 5072, 5080, 5088, 5096, 5104, 5112, 5120, 5128, 24, 5136 } }; /* IBM424 CP424 424 ebcdic-cp-he */ static struct strip_data data_99 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 5144, 5152, 5160, 5168, 5176, 5184, 5192, 5200, 72, 5208, 3728, 5216, 3744, 5224, 3760, 5232, 3776, 5240, 3792, 5248, 3808, 5256, 24, 5264 } }; /* IBM437 CP437 437 */ static struct strip_data data_100 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5272, 5280, 5288, 5296, 5304, 5312, 5320, 5328, 5336, 5344, 5352, 5360, 5368, 5376, 5384, 5392 } }; /* IBM500 CP500 500 500V1 ebcdic-cp-be ebcdic-cp-ch */ static struct strip_data data_101 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 3960, 3664, 3968, 3680, 3688, 3696, 3704, 3712, 3720, 3728, 3736, 3744, 3752, 4304, 5400, 3776, 3784, 3792, 3800, 3808, 3816, 24, 3824 } }; /* IBM850 CP850 850 */ static struct strip_data data_102 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5272, 5280, 5288, 5408, 5304, 5416, 5424, 5432, 5440, 5448, 5456, 5464, 5472, 5480, 5488, 5496 } }; /* IBM851 CP851 851 */ static struct strip_data data_103 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5504, 5512, 5520, 5528, 5536, 5544, 5552, 5560, 5568, 5576, 5584, 5592, 5600, 5608, 5616, 5624 } }; /* IBM852 CP852 852 pcl2 pclatin2 */ static struct strip_data data_104 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5632, 5640, 5648, 5656, 5664, 5672, 5680, 5688, 5696, 5448, 5704, 5712, 5720, 5728, 5736, 5744 } }; /* IBM855 CP855 855 */ static struct strip_data data_105 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5752, 5760, 5768, 5776, 5784, 5792, 5800, 5808, 5816, 5448, 5824, 5832, 5840, 5848, 5856, 5864 } }; /* IBM857 CP857 857 */ static struct strip_data data_106 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5272, 5872, 5288, 5880, 5888, 5416, 5424, 5432, 5440, 5448, 5896, 5464, 5904, 5912, 5920, 5928 } }; /* IBM860 CP860 860 */ static struct strip_data data_107 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5936, 5944, 5952, 5960, 5304, 5968, 5320, 5328, 5336, 5344, 5352, 5360, 5368, 5376, 5384, 5392 } }; /* IBM861 CP861 861 cp-is */ static struct strip_data data_108 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5272, 5976, 5984, 5992, 6000, 6008, 5320, 5328, 5336, 5344, 5352, 5360, 5368, 5376, 5384, 5392 } }; /* IBM862 CP862 862 */ static struct strip_data data_109 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 2088, 2096, 2104, 6016, 5304, 6008, 5320, 5328, 5336, 5344, 5352, 5360, 5368, 5376, 5384, 5392 } }; /* IBM863 CP863 863 */ static struct strip_data data_110 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 6024, 6032, 6040, 6048, 6056, 6064, 5320, 5328, 5336, 5344, 5352, 5360, 5368, 6072, 5384, 6080 } }; /* IBM864 CP864 864 */ static struct strip_data data_111 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 6088, 6096, 6104, 6112, 6120, 6128, 6136, 6144, 6152, 6160, 6168, 6176, 6184, 6192, 6200, 6208 } }; /* IBM865 CP865 865 */ static struct strip_data data_112 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5272, 5280, 5288, 6216, 5304, 5312, 5320, 5328, 5336, 5344, 5352, 5360, 5368, 6072, 5384, 6080 } }; /* IBM868 CP868 868 cp-ar */ static struct strip_data data_113 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 6136, 6224, 6232, 6240, 6248, 6256, 6264, 6272, 6280, 6288, 6296, 6304, 6312, 6320, 6328, 6336 } }; /* IBM869 CP869 869 cp-gr */ static struct strip_data data_114 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 6344, 6352, 6360, 6368, 5536, 5544, 6376, 6384, 5568, 5576, 5584, 5592, 5600, 5608, 6392, 5624 } }; /* IBM870 CP870 870 ebcdic-cp-roece ebcdic-cp-yu */ static struct strip_data data_115 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 6400, 6408, 6416, 6424, 6432, 6440, 6448, 6456, 6464, 6472, 3728, 6480, 6488, 6496, 6504, 6512, 3776, 6520, 3792, 6528, 3808, 6536, 24, 6544 } }; /* IBM871 CP871 871 ebcdic-cp-is */ static struct strip_data data_116 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 6552, 3664, 6560, 3680, 3688, 3696, 6568, 3712, 6576, 3728, 6584, 6592, 6600, 4304, 6608, 6616, 6624, 6632, 3800, 6640, 6648, 24, 3824 } }; /* IBM875 CP875 875 EBCDIC-Greek */ static struct strip_data data_117 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4960, 4968, 4976, 4984, 4992, 6656, 6664, 6672, 6680, 5032, 3728, 5048, 6688, 6696, 6704, 6712, 3776, 6720, 3792, 6728, 3936, 6736, 24, 6744 } }; /* IBM880 CP880 880 EBCDIC-Cyrillic */ static struct strip_data data_118 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 6752, 6760, 6768, 6776, 6784, 6792, 6800, 6808, 6816, 6824, 6832, 6840, 6848, 6856, 688, 696, 40, 6864, 4696, 6872, 6880, 6888, 24, 6896 } }; /* IBM891 CP891 891 */ static struct strip_data data_119 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* IBM903 CP903 903 */ static struct strip_data data_120 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* IBM904 CP904 904 */ static struct strip_data data_121 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 6904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6912 } }; /* IBM905 CP905 905 ebcdic-cp-tr */ static struct strip_data data_122 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 6920, 6928, 3664, 6936, 6944, 6952, 6960, 6968, 6464, 6976, 3728, 6984, 6592, 6992, 7000, 7008, 7016, 7024, 7032, 7040, 7048, 7056, 24, 7064 } }; /* IBM918 CP918 918 ebcdic-cp-ar2 */ static struct strip_data data_123 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 7072, 7080, 7088, 7096, 7104, 7112, 6136, 7120, 7128, 7136, 3888, 7144, 7152, 7160, 7168, 7176, 3776, 7184, 3792, 7192, 3936, 7200, 24, 7208 } }; /* IBM1004 CP1004 1004 os2latin1 */ static struct strip_data data_124 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7216, 7224, 7232, 7240, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472 } }; /* IBM1026 CP1026 1026 */ static struct strip_data data_125 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 6928, 3664, 6936, 3680, 6952, 3696, 6968, 3712, 7248, 3728, 7256, 6592, 7264, 4304, 7272, 7016, 6624, 7032, 7280, 7048, 7288, 24, 7064 } }; /* IBM1047 CP1047 1047 */ static struct strip_data data_126 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 3656, 3664, 7296, 3680, 3688, 3696, 3704, 3712, 3720, 3728, 3736, 3744, 7304, 7312, 7320, 3776, 3784, 3792, 3800, 3808, 3816, 24, 3824 } }; /* CP1250 ms-ee 1250 windows-1250 */ static struct strip_data data_127 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7328, 7336, 7232, 7344, 7352, 7360, 7368, 7376, 1512, 1520, 1528, 1536, 1544, 1552, 1560, 1568 } }; /* CP1251 ms-cyrl 1251 windows-1251 */ static struct strip_data data_128 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7384, 7392, 7400, 7408, 7416, 7424, 7432, 7440, 2272, 2280, 2288, 2296, 2304, 2312, 2320, 2328 } }; /* CP1252 ms-ansi 1252 windows-1252 */ static struct strip_data data_129 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7448, 7456, 7232, 7464, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472 } }; /* CP1253 ms-greek 1253 windows-1253 */ static struct strip_data data_130 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7448, 7472, 7232, 7480, 7488, 7496, 7504, 1944, 1952, 1960, 1968, 1976, 1984, 1992, 2000, 2008 } }; /* CP1254 ms-turk 1254 windows-1254 */ static struct strip_data data_131 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7448, 7224, 7232, 7240, 1384, 1392, 1400, 1408, 1416, 1424, 2432, 2440, 1448, 2448, 2456, 2464 } }; /* CP1255 ms-hebr 1255 windows-1255 */ static struct strip_data data_132 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7448, 7472, 7232, 7480, 2056, 2064, 1400, 2072, 0, 0, 0, 2080, 2088, 2096, 2104, 7512 } }; /* CP1256 ms-arab 1256 windows-1256 */ static struct strip_data data_133 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7520, 7528, 7536, 7544, 7552, 7560, 7568, 7576, 7584, 7592, 7600, 7608, 7616, 7624, 7632, 7640 } }; /* CP1257 WinBaltRim 1257 windows-1257 */ static struct strip_data data_134 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7328, 7472, 7232, 7480, 7648, 7656, 3168, 7664, 2832, 2840, 2848, 2856, 2864, 2872, 2880, 7672 } }; /* EBCDIC-AT-DE */ static struct strip_data data_135 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7680, 3840, 7688, 3856, 7696, 0, 7704, 72, 3880, 3888, 3896, 7712, 3912, 0, 0, 4072, 3920, 4088, 3928, 7720, 3944, 24, 3952 } }; /* EBCDIC-AT-DE-A */ static struct strip_data data_136 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7728, 3840, 7736, 3856, 7744, 0, 7752, 72, 3880, 3888, 3896, 7760, 3912, 0, 0, 40, 3920, 4696, 3928, 7768, 3944, 24, 3952 } }; /* EBCDIC-CA-FR */ static struct strip_data data_137 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 7776, 7784, 7792, 7800, 7808, 7816, 7824, 3872, 72, 3880, 3888, 3896, 4144, 3912, 0, 0, 4152, 7832, 4160, 7840, 7848, 7856, 24, 7864 } }; /* EBCDIC-DK-NO */ static struct strip_data data_138 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7872, 3840, 7880, 3856, 7888, 0, 7896, 72, 3880, 3888, 3896, 7904, 3912, 0, 0, 4312, 3920, 4320, 3928, 3936, 3944, 24, 3952 } }; /* EBCDIC-DK-NO-A */ static struct strip_data data_139 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7912, 3840, 7920, 3856, 3864, 0, 7928, 72, 3880, 3888, 3896, 7760, 3912, 0, 0, 40, 3920, 4696, 3928, 7768, 3944, 24, 3952 } }; /* EBCDIC-FI-SE */ static struct strip_data data_140 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7936, 3840, 7880, 3856, 7696, 0, 7944, 72, 3880, 3888, 3896, 7904, 3912, 0, 0, 4072, 3920, 4320, 3928, 7952, 3944, 24, 3952 } }; /* EBCDIC-FI-SE-A */ static struct strip_data data_141 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7728, 3840, 7920, 3856, 3864, 0, 7752, 72, 3880, 3888, 3896, 7760, 3912, 0, 0, 40, 3920, 4696, 3928, 7768, 3944, 24, 3952 } }; /* EBCDIC-FR */ static struct strip_data data_142 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7960, 3840, 7968, 3856, 4128, 0, 7976, 72, 3880, 3888, 3896, 4144, 3912, 0, 0, 4152, 3920, 4160, 3928, 4168, 3944, 24, 3952 } }; /* EBCDIC-IT */ static struct strip_data data_143 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7960, 3840, 7984, 3856, 7992, 0, 8000, 72, 3880, 3888, 3896, 8008, 3912, 0, 0, 608, 3920, 4160, 3928, 4168, 3944, 24, 3952 } }; /* EBCDIC-PT */ static struct strip_data data_144 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 3832, 3840, 3848, 3856, 8016, 0, 8024, 72, 3880, 3888, 3896, 8032, 3912, 0, 0, 8040, 3920, 5104, 3928, 8048, 3944, 24, 3952 } }; /* EBCDIC-ES */ static struct strip_data data_145 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 8056, 3840, 8064, 3856, 8072, 0, 8080, 72, 3880, 3888, 3896, 4144, 3912, 0, 0, 3776, 3920, 3792, 3928, 3936, 3944, 24, 3952 } }; /* EBCDIC-ES-A */ static struct strip_data data_146 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 8056, 3840, 8064, 3856, 3864, 0, 8088, 72, 3880, 3888, 3896, 7760, 3912, 0, 0, 40, 3920, 4696, 3928, 7768, 3944, 24, 3952 } }; /* EBCDIC-ES-S */ static struct strip_data data_147 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 8056, 3840, 8096, 3856, 8072, 0, 8080, 72, 3880, 3888, 3896, 4144, 3912, 0, 0, 3776, 3920, 3792, 3928, 3936, 3944, 24, 3952 } }; /* EBCDIC-UK */ static struct strip_data data_148 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 8104, 3840, 8112, 3856, 3864, 0, 3872, 72, 3880, 3888, 3896, 4512, 3912, 0, 0, 3776, 3920, 3792, 3928, 3936, 3944, 24, 3952 } }; /* EBCDIC-US */ static struct strip_data data_149 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 8056, 3840, 8096, 3856, 3864, 0, 3872, 72, 3880, 3888, 3896, 3904, 3912, 0, 0, 3776, 3920, 3792, 3928, 3936, 3944, 24, 3952 } }; /* EBCDIC-IS-FRISS friss */ static struct strip_data data_150 = { ucs2_data_pool, { 104, 112, 120, 128, 0, 0, 0, 0, 8120, 8128, 8136, 8144, 3856, 8152, 8160, 8168, 72, 8176, 3888, 3896, 8184, 8192, 0, 8200, 8208, 8216, 6632, 8224, 8232, 8240, 24, 8248 } }; /* KOI-7 */ static struct strip_data data_151 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 152, 48, 56, 160, 696, 704, 712, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* KOI-8 GOST_19768-74 */ static struct strip_data data_152 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 0, 0, 0, 0, 0, 0, 0, 0, 664, 672, 680, 688, 696, 704, 712, 8256 } }; /* KOI8-R */ static struct strip_data data_153 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 8264, 8272, 8280, 8288, 8296, 8304, 8312, 8320, 664, 672, 680, 688, 696, 704, 712, 1792 } }; /* KOI8-RU */ static struct strip_data data_154 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 8264, 8272, 8328, 8336, 8344, 8352, 8360, 8368, 664, 672, 680, 688, 696, 704, 712, 1792 } }; /* KOI8-U */ static struct strip_data data_155 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 8264, 8272, 8376, 8288, 8344, 8384, 8360, 8392, 664, 672, 680, 688, 696, 704, 0, 0 } }; /* CWI CWI-2 cp-hu */ static struct strip_data data_156 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5272, 8400, 8408, 8416, 8424, 5312, 5320, 5328, 5336, 5344, 5352, 5360, 8432, 6072, 5384, 6080 } }; /* macintosh_ce macce */ static struct strip_data data_157 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 8440, 8448, 8456, 8464, 8472, 8480, 8488, 8496, 8504, 8512, 8520, 8528, 8536, 8544, 8552, 8560 } }; _GL_ATTRIBUTE_CONST bool module_strips (_GL_UNUSED struct recode_outer *outer) { RECODE_ALIAS alias; if (!recode_declare_strip_data (outer, &data_0, "ISO_646.basic")) return false; if (!recode_declare_strip_data (outer, &data_1, "INVARIANT")) return false; if (!recode_declare_strip_data (outer, &data_2, "ISO_646.irv")) return false; if (!recode_declare_strip_data (outer, &data_3, "BS_4730")) return false; if (!recode_declare_strip_data (outer, &data_4, "ANSI_X3.4-1968")) return false; if (!recode_declare_strip_data (outer, &data_5, "NATS-SEFI")) return false; if (!recode_declare_strip_data (outer, &data_6, "NATS-SEFI-ADD")) return false; if (!recode_declare_strip_data (outer, &data_7, "NATS-DANO")) return false; if (!recode_declare_strip_data (outer, &data_8, "NATS-DANO-ADD")) return false; if (!recode_declare_strip_data (outer, &data_9, "SEN_850200_B")) return false; if (!recode_declare_strip_data (outer, &data_10, "SEN_850200_C")) return false; if (!recode_declare_strip_data (outer, &data_11, "JIS_C6220-1969-jp")) return false; if (!recode_declare_strip_data (outer, &data_12, "JIS_C6220-1969-ro")) return false; if (!recode_declare_strip_data (outer, &data_13, "IT")) return false; if (!recode_declare_strip_data (outer, &data_14, "PT")) return false; if (!recode_declare_strip_data (outer, &data_15, "ES")) return false; if (!recode_declare_strip_data (outer, &data_16, "greek7-old")) return false; if (!recode_declare_strip_data (outer, &data_17, "latin-greek")) return false; if (!recode_declare_strip_data (outer, &data_18, "DIN_66003")) return false; if (!recode_declare_strip_data (outer, &data_19, "NF_Z_62-010_(1973)")) return false; if (!recode_declare_strip_data (outer, &data_20, "Latin-greek-1")) return false; if (!recode_declare_strip_data (outer, &data_21, "ISO_5427")) return false; if (!recode_declare_strip_data (outer, &data_22, "BS_viewdata")) return false; if (!recode_declare_strip_data (outer, &data_23, "INIS")) return false; if (!recode_declare_strip_data (outer, &data_24, "INIS-8")) return false; if (!recode_declare_strip_data (outer, &data_25, "INIS-cyrillic")) return false; if (!recode_declare_strip_data (outer, &data_26, "ISO_5427-ext")) return false; if (!recode_declare_strip_data (outer, &data_27, "ISO_5428")) return false; if (!recode_declare_strip_data (outer, &data_28, "GB_1988-80")) return false; if (!recode_declare_strip_data (outer, &data_29, "NS_4551-1")) return false; if (!recode_declare_strip_data (outer, &data_30, "NS_4551-2")) return false; if (!recode_declare_strip_data (outer, &data_31, "NF_Z_62-010")) return false; if (!recode_declare_strip_data (outer, &data_32, "PT2")) return false; if (!recode_declare_strip_data (outer, &data_33, "ES2")) return false; if (!recode_declare_strip_data (outer, &data_34, "MSZ_7795.3")) return false; if (!recode_declare_strip_data (outer, &data_35, "greek7")) return false; if (!recode_declare_strip_data (outer, &data_36, "ASMO_449")) return false; if (!recode_declare_strip_data (outer, &data_37, "JIS_C6229-1984-a")) return false; if (!recode_declare_strip_data (outer, &data_38, "JIS_C6229-1984-b")) return false; if (!recode_declare_strip_data (outer, &data_39, "JIS_C6229-1984-b-add")) return false; if (!recode_declare_strip_data (outer, &data_40, "JIS_C6229-1984-hand")) return false; if (!recode_declare_strip_data (outer, &data_41, "JIS_C6229-1984-hand-add")) return false; if (!recode_declare_strip_data (outer, &data_42, "JIS_C6229-1984-kana")) return false; if (!recode_declare_strip_data (outer, &data_43, "ISO_2033-1983")) return false; if (!recode_declare_strip_data (outer, &data_44, "ISO-8859-1")) return false; if (!recode_declare_strip_data (outer, &data_45, "ISO-8859-2")) return false; if (!recode_declare_strip_data (outer, &data_46, "T.61-7bit")) return false; if (!recode_declare_strip_data (outer, &data_47, "ISO-8859-3")) return false; if (!recode_declare_strip_data (outer, &data_48, "ISO-8859-4")) return false; if (!recode_declare_strip_data (outer, &data_49, "ECMA-cyrillic")) return false; if (!recode_declare_strip_data (outer, &data_50, "CSA_Z243.4-1985-1")) return false; if (!recode_declare_strip_data (outer, &data_51, "CSA_Z243.4-1985-2")) return false; if (!recode_declare_strip_data (outer, &data_52, "CSA_Z243.4-1985-gr")) return false; if (!recode_declare_strip_data (outer, &data_53, "ISO-8859-7")) return false; if (!recode_declare_strip_data (outer, &data_54, "ISO-8859-6")) return false; if (!recode_declare_strip_data (outer, &data_55, "ISO-8859-8")) return false; if (!recode_declare_strip_data (outer, &data_56, "CSN_369103")) return false; if (!recode_declare_strip_data (outer, &data_57, "JUS_I.B1.002")) return false; if (!recode_declare_strip_data (outer, &data_58, "IEC_P27-1")) return false; if (!recode_declare_strip_data (outer, &data_59, "ISO-8859-5")) return false; if (!recode_declare_strip_data (outer, &data_60, "JUS_I.B1.003-serb")) return false; if (!recode_declare_strip_data (outer, &data_61, "JUS_I.B1.003-mac")) return false; if (!recode_declare_strip_data (outer, &data_62, "ISO-8859-9")) return false; if (!recode_declare_strip_data (outer, &data_63, "greek-ccitt")) return false; if (!recode_declare_strip_data (outer, &data_64, "NC_NC00-10")) return false; if (!recode_declare_strip_data (outer, &data_65, "ISO_6937-2-25")) return false; if (!recode_declare_strip_data (outer, &data_66, "GOST_19768-87")) return false; if (!recode_declare_strip_data (outer, &data_67, "ISO_8859-supp")) return false; if (!recode_declare_strip_data (outer, &data_68, "ISO_10367-box")) return false; if (!recode_declare_strip_data (outer, &data_69, "ISO-8859-10")) return false; if (!recode_declare_strip_data (outer, &data_70, "ISO-8859-13")) return false; if (!recode_declare_strip_data (outer, &data_71, "ISO-8859-14")) return false; if (!recode_declare_strip_data (outer, &data_72, "ISO-8859-15")) return false; if (!recode_declare_strip_data (outer, &data_73, "sami")) return false; if (!recode_declare_strip_data (outer, &data_74, "baltic")) return false; if (!recode_declare_strip_data (outer, &data_75, "DS_2089")) return false; if (!recode_declare_strip_data (outer, &data_76, "JIS_X0201")) return false; if (!recode_declare_strip_data (outer, &data_77, "KSC5636")) return false; if (!recode_declare_strip_data (outer, &data_78, "DEC-MCS")) return false; if (!recode_declare_strip_data (outer, &data_79, "hp-roman8")) return false; if (!recode_declare_strip_data (outer, &data_80, "NeXTSTEP")) return false; if (!recode_declare_strip_data (outer, &data_81, "macintosh")) return false; if (!recode_declare_strip_data (outer, &data_82, "mac-is")) return false; if (!recode_declare_strip_data (outer, &data_83, "IBM037")) return false; if (!recode_declare_strip_data (outer, &data_84, "IBM038")) return false; if (!recode_declare_strip_data (outer, &data_85, "IBM256")) return false; if (!recode_declare_strip_data (outer, &data_86, "IBM273")) return false; if (!recode_declare_strip_data (outer, &data_87, "IBM274")) return false; if (!recode_declare_strip_data (outer, &data_88, "IBM275")) return false; if (!recode_declare_strip_data (outer, &data_89, "IBM277")) return false; if (!recode_declare_strip_data (outer, &data_90, "IBM278")) return false; if (!recode_declare_strip_data (outer, &data_91, "IBM280")) return false; if (!recode_declare_strip_data (outer, &data_92, "IBM281")) return false; if (!recode_declare_strip_data (outer, &data_93, "IBM284")) return false; if (!recode_declare_strip_data (outer, &data_94, "IBM285")) return false; if (!recode_declare_strip_data (outer, &data_95, "IBM290")) return false; if (!recode_declare_strip_data (outer, &data_96, "IBM297")) return false; if (!recode_declare_strip_data (outer, &data_97, "IBM420")) return false; if (!recode_declare_strip_data (outer, &data_98, "IBM423")) return false; if (!recode_declare_strip_data (outer, &data_99, "IBM424")) return false; if (!recode_declare_strip_data (outer, &data_100, "IBM437")) return false; if (!recode_declare_strip_data (outer, &data_101, "IBM500")) return false; if (!recode_declare_strip_data (outer, &data_102, "IBM850")) return false; if (!recode_declare_strip_data (outer, &data_103, "IBM851")) return false; if (!recode_declare_strip_data (outer, &data_104, "IBM852")) return false; if (!recode_declare_strip_data (outer, &data_105, "IBM855")) return false; if (!recode_declare_strip_data (outer, &data_106, "IBM857")) return false; if (!recode_declare_strip_data (outer, &data_107, "IBM860")) return false; if (!recode_declare_strip_data (outer, &data_108, "IBM861")) return false; if (!recode_declare_strip_data (outer, &data_109, "IBM862")) return false; if (!recode_declare_strip_data (outer, &data_110, "IBM863")) return false; if (!recode_declare_strip_data (outer, &data_111, "IBM864")) return false; if (!recode_declare_strip_data (outer, &data_112, "IBM865")) return false; if (!recode_declare_strip_data (outer, &data_113, "IBM868")) return false; if (!recode_declare_strip_data (outer, &data_114, "IBM869")) return false; if (!recode_declare_strip_data (outer, &data_115, "IBM870")) return false; if (!recode_declare_strip_data (outer, &data_116, "IBM871")) return false; if (!recode_declare_strip_data (outer, &data_117, "IBM875")) return false; if (!recode_declare_strip_data (outer, &data_118, "IBM880")) return false; if (!recode_declare_strip_data (outer, &data_119, "IBM891")) return false; if (!recode_declare_strip_data (outer, &data_120, "IBM903")) return false; if (!recode_declare_strip_data (outer, &data_121, "IBM904")) return false; if (!recode_declare_strip_data (outer, &data_122, "IBM905")) return false; if (!recode_declare_strip_data (outer, &data_123, "IBM918")) return false; if (!recode_declare_strip_data (outer, &data_124, "IBM1004")) return false; if (!recode_declare_strip_data (outer, &data_125, "IBM1026")) return false; if (!recode_declare_strip_data (outer, &data_126, "IBM1047")) return false; if (!recode_declare_strip_data (outer, &data_127, "CP1250")) return false; if (!recode_declare_strip_data (outer, &data_128, "CP1251")) return false; if (!recode_declare_strip_data (outer, &data_129, "CP1252")) return false; if (!recode_declare_strip_data (outer, &data_130, "CP1253")) return false; if (!recode_declare_strip_data (outer, &data_131, "CP1254")) return false; if (!recode_declare_strip_data (outer, &data_132, "CP1255")) return false; if (!recode_declare_strip_data (outer, &data_133, "CP1256")) return false; if (!recode_declare_strip_data (outer, &data_134, "CP1257")) return false; if (!recode_declare_strip_data (outer, &data_135, "EBCDIC-AT-DE")) return false; if (!recode_declare_strip_data (outer, &data_136, "EBCDIC-AT-DE-A")) return false; if (!recode_declare_strip_data (outer, &data_137, "EBCDIC-CA-FR")) return false; if (!recode_declare_strip_data (outer, &data_138, "EBCDIC-DK-NO")) return false; if (!recode_declare_strip_data (outer, &data_139, "EBCDIC-DK-NO-A")) return false; if (!recode_declare_strip_data (outer, &data_140, "EBCDIC-FI-SE")) return false; if (!recode_declare_strip_data (outer, &data_141, "EBCDIC-FI-SE-A")) return false; if (!recode_declare_strip_data (outer, &data_142, "EBCDIC-FR")) return false; if (!recode_declare_strip_data (outer, &data_143, "EBCDIC-IT")) return false; if (!recode_declare_strip_data (outer, &data_144, "EBCDIC-PT")) return false; if (!recode_declare_strip_data (outer, &data_145, "EBCDIC-ES")) return false; if (!recode_declare_strip_data (outer, &data_146, "EBCDIC-ES-A")) return false; if (!recode_declare_strip_data (outer, &data_147, "EBCDIC-ES-S")) return false; if (!recode_declare_strip_data (outer, &data_148, "EBCDIC-UK")) return false; if (!recode_declare_strip_data (outer, &data_149, "EBCDIC-US")) return false; if (!recode_declare_strip_data (outer, &data_150, "EBCDIC-IS-FRISS")) return false; if (!recode_declare_strip_data (outer, &data_151, "KOI-7")) return false; if (!recode_declare_strip_data (outer, &data_152, "KOI-8")) return false; if (!recode_declare_strip_data (outer, &data_153, "KOI8-R")) return false; if (!recode_declare_strip_data (outer, &data_154, "KOI8-RU")) return false; if (!recode_declare_strip_data (outer, &data_155, "KOI8-U")) return false; if (!recode_declare_strip_data (outer, &data_156, "CWI")) return false; if (!recode_declare_strip_data (outer, &data_157, "macintosh_ce")) return false; if (!recode_declare_alias (outer, "ref", "ISO_646.basic")) return false; if (!recode_declare_alias (outer, "ISO_646.basic:1983", "ISO_646.basic")) return false; if (!recode_declare_alias (outer, "iso-ir-170", "INVARIANT")) return false; if (!recode_declare_alias (outer, "iso-ir-2", "ISO_646.irv")) return false; if (!recode_declare_alias (outer, "ISO_646.irv:1983", "ISO_646.irv")) return false; if (!recode_declare_alias (outer, "irv", "ISO_646.irv")) return false; if (!recode_declare_alias (outer, "iso-ir-4", "BS_4730")) return false; if (!recode_declare_alias (outer, "ISO646-GB", "BS_4730")) return false; if (!recode_declare_alias (outer, "gb", "BS_4730")) return false; if (!recode_declare_alias (outer, "uk", "BS_4730")) return false; if (!recode_declare_alias (outer, "iso-ir-6", "ANSI_X3.4-1968")) return false; if (!recode_declare_alias (outer, "ANSI_X3.4-1986", "ANSI_X3.4-1968")) return false; if (!recode_declare_alias (outer, "ISO_646.irv:1991", "ANSI_X3.4-1968")) return false; if (!recode_declare_alias (outer, "ASCII", "ANSI_X3.4-1968")) return false; if (!recode_declare_alias (outer, "ISO646-US", "ANSI_X3.4-1968")) return false; if (!recode_declare_alias (outer, "US-ASCII", "ANSI_X3.4-1968")) return false; if (!recode_declare_alias (outer, "us", "ANSI_X3.4-1968")) return false; if (alias = recode_declare_alias (outer, "IBM367", "ANSI_X3.4-1968"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP367", "ANSI_X3.4-1968"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "367", "ANSI_X3.4-1968"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "iso-ir-8-1", "NATS-SEFI")) return false; if (!recode_declare_alias (outer, "iso-ir-8-2", "NATS-SEFI-ADD")) return false; if (!recode_declare_alias (outer, "iso-ir-9-1", "NATS-DANO")) return false; if (!recode_declare_alias (outer, "iso-ir-9-2", "NATS-DANO-ADD")) return false; if (!recode_declare_alias (outer, "iso-ir-10", "SEN_850200_B")) return false; if (!recode_declare_alias (outer, "FI", "SEN_850200_B")) return false; if (!recode_declare_alias (outer, "ISO646-FI", "SEN_850200_B")) return false; if (!recode_declare_alias (outer, "ISO646-SE", "SEN_850200_B")) return false; if (!recode_declare_alias (outer, "se", "SEN_850200_B")) return false; if (!recode_declare_alias (outer, "SS636127", "SEN_850200_B")) return false; if (!recode_declare_alias (outer, "iso-ir-11", "SEN_850200_C")) return false; if (!recode_declare_alias (outer, "ISO646-SE2", "SEN_850200_C")) return false; if (!recode_declare_alias (outer, "se2", "SEN_850200_C")) return false; if (!recode_declare_alias (outer, "JIS_C6220-1969", "JIS_C6220-1969-jp")) return false; if (!recode_declare_alias (outer, "iso-ir-13", "JIS_C6220-1969-jp")) return false; if (!recode_declare_alias (outer, "katakana", "JIS_C6220-1969-jp")) return false; if (!recode_declare_alias (outer, "x0201-7", "JIS_C6220-1969-jp")) return false; if (!recode_declare_alias (outer, "iso-ir-14", "JIS_C6220-1969-ro")) return false; if (!recode_declare_alias (outer, "jp", "JIS_C6220-1969-ro")) return false; if (!recode_declare_alias (outer, "ISO646-JP", "JIS_C6220-1969-ro")) return false; if (!recode_declare_alias (outer, "iso-ir-15", "IT")) return false; if (!recode_declare_alias (outer, "ISO646-IT", "IT")) return false; if (!recode_declare_alias (outer, "iso-ir-16", "PT")) return false; if (!recode_declare_alias (outer, "ISO646-PT", "PT")) return false; if (!recode_declare_alias (outer, "iso-ir-17", "ES")) return false; if (!recode_declare_alias (outer, "ISO646-ES", "ES")) return false; if (!recode_declare_alias (outer, "iso-ir-18", "greek7-old")) return false; if (!recode_declare_alias (outer, "iso-ir-19", "latin-greek")) return false; if (!recode_declare_alias (outer, "iso-ir-21", "DIN_66003")) return false; if (!recode_declare_alias (outer, "de", "DIN_66003")) return false; if (!recode_declare_alias (outer, "ISO646-DE", "DIN_66003")) return false; if (!recode_declare_alias (outer, "iso-ir-25", "NF_Z_62-010_(1973)")) return false; if (!recode_declare_alias (outer, "ISO646-FR1", "NF_Z_62-010_(1973)")) return false; if (!recode_declare_alias (outer, "iso-ir-27", "Latin-greek-1")) return false; if (!recode_declare_alias (outer, "iso-ir-37", "ISO_5427")) return false; if (!recode_declare_alias (outer, "iso-ir-47", "BS_viewdata")) return false; if (!recode_declare_alias (outer, "iso-ir-49", "INIS")) return false; if (!recode_declare_alias (outer, "iso-ir-50", "INIS-8")) return false; if (!recode_declare_alias (outer, "iso-ir-51", "INIS-cyrillic")) return false; if (!recode_declare_alias (outer, "iso-ir-54", "ISO_5427-ext")) return false; if (!recode_declare_alias (outer, "ISO_5427:1981", "ISO_5427-ext")) return false; if (!recode_declare_alias (outer, "iso-ir-55", "ISO_5428")) return false; if (!recode_declare_alias (outer, "ISO_5428:1980", "ISO_5428")) return false; if (!recode_declare_alias (outer, "iso-ir-57", "GB_1988-80")) return false; if (!recode_declare_alias (outer, "cn", "GB_1988-80")) return false; if (!recode_declare_alias (outer, "ISO646-CN", "GB_1988-80")) return false; if (!recode_declare_alias (outer, "iso-ir-60", "NS_4551-1")) return false; if (!recode_declare_alias (outer, "ISO646-NO", "NS_4551-1")) return false; if (!recode_declare_alias (outer, "no", "NS_4551-1")) return false; if (!recode_declare_alias (outer, "ISO646-NO2", "NS_4551-2")) return false; if (!recode_declare_alias (outer, "iso-ir-61", "NS_4551-2")) return false; if (!recode_declare_alias (outer, "no2", "NS_4551-2")) return false; if (!recode_declare_alias (outer, "iso-ir-69", "NF_Z_62-010")) return false; if (!recode_declare_alias (outer, "ISO646-FR", "NF_Z_62-010")) return false; if (!recode_declare_alias (outer, "fr", "NF_Z_62-010")) return false; if (!recode_declare_alias (outer, "iso-ir-84", "PT2")) return false; if (!recode_declare_alias (outer, "ISO646-PT2", "PT2")) return false; if (!recode_declare_alias (outer, "iso-ir-85", "ES2")) return false; if (!recode_declare_alias (outer, "ISO646-ES2", "ES2")) return false; if (!recode_declare_alias (outer, "iso-ir-86", "MSZ_7795.3")) return false; if (!recode_declare_alias (outer, "ISO646-HU", "MSZ_7795.3")) return false; if (!recode_declare_alias (outer, "hu", "MSZ_7795.3")) return false; if (!recode_declare_alias (outer, "iso-ir-88", "greek7")) return false; if (!recode_declare_alias (outer, "ISO_9036", "ASMO_449")) return false; if (!recode_declare_alias (outer, "arabic7", "ASMO_449")) return false; if (!recode_declare_alias (outer, "iso-ir-89", "ASMO_449")) return false; if (!recode_declare_alias (outer, "jp-ocr-a", "JIS_C6229-1984-a")) return false; if (!recode_declare_alias (outer, "ISO646-JP-OCR-B", "JIS_C6229-1984-b")) return false; if (!recode_declare_alias (outer, "jp-ocr-b", "JIS_C6229-1984-b")) return false; if (!recode_declare_alias (outer, "iso-ir-93", "JIS_C6229-1984-b-add")) return false; if (!recode_declare_alias (outer, "jp-ocr-b-add", "JIS_C6229-1984-b-add")) return false; if (!recode_declare_alias (outer, "iso-ir-94", "JIS_C6229-1984-hand")) return false; if (!recode_declare_alias (outer, "jp-ocr-hand", "JIS_C6229-1984-hand")) return false; if (!recode_declare_alias (outer, "iso-ir-95", "JIS_C6229-1984-hand-add")) return false; if (!recode_declare_alias (outer, "jp-ocr-hand-add", "JIS_C6229-1984-hand-add")) return false; if (!recode_declare_alias (outer, "iso-ir-96", "JIS_C6229-1984-kana")) return false; if (!recode_declare_alias (outer, "iso-ir-98", "ISO_2033-1983")) return false; if (!recode_declare_alias (outer, "e13b", "ISO_2033-1983")) return false; if (!recode_declare_alias (outer, "iso-ir-100", "ISO-8859-1")) return false; if (!recode_declare_alias (outer, "ISO_8859-1:1987", "ISO-8859-1")) return false; if (!recode_declare_alias (outer, "ISO_8859-1", "ISO-8859-1")) return false; if (!recode_declare_alias (outer, "ISO8859-1", "ISO-8859-1")) return false; if (!recode_declare_alias (outer, "latin1", "ISO-8859-1")) return false; if (!recode_declare_alias (outer, "l1", "ISO-8859-1")) return false; if (alias = recode_declare_alias (outer, "IBM819", "ISO-8859-1"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP819", "ISO-8859-1"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "819", "ISO-8859-1"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "iso-ir-101", "ISO-8859-2")) return false; if (!recode_declare_alias (outer, "ISO_8859-2:1987", "ISO-8859-2")) return false; if (!recode_declare_alias (outer, "ISO_8859-2", "ISO-8859-2")) return false; if (!recode_declare_alias (outer, "ISO8859-2", "ISO-8859-2")) return false; if (!recode_declare_alias (outer, "latin2", "ISO-8859-2")) return false; if (!recode_declare_alias (outer, "l2", "ISO-8859-2")) return false; if (alias = recode_declare_alias (outer, "IBM912", "ISO-8859-2"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP912", "ISO-8859-2"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "912", "ISO-8859-2"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "iso-ir-102", "T.61-7bit")) return false; if (!recode_declare_alias (outer, "iso-ir-109", "ISO-8859-3")) return false; if (!recode_declare_alias (outer, "ISO_8859-3:1988", "ISO-8859-3")) return false; if (!recode_declare_alias (outer, "ISO_8859-3", "ISO-8859-3")) return false; if (!recode_declare_alias (outer, "ISO8859-3", "ISO-8859-3")) return false; if (!recode_declare_alias (outer, "latin3", "ISO-8859-3")) return false; if (!recode_declare_alias (outer, "l3", "ISO-8859-3")) return false; if (!recode_declare_alias (outer, "iso-ir-110", "ISO-8859-4")) return false; if (!recode_declare_alias (outer, "ISO_8859-4:1988", "ISO-8859-4")) return false; if (!recode_declare_alias (outer, "ISO_8859-4", "ISO-8859-4")) return false; if (!recode_declare_alias (outer, "ISO8859-4", "ISO-8859-4")) return false; if (!recode_declare_alias (outer, "latin4", "ISO-8859-4")) return false; if (!recode_declare_alias (outer, "l4", "ISO-8859-4")) return false; if (!recode_declare_alias (outer, "iso-ir-111", "ECMA-cyrillic")) return false; if (!recode_declare_alias (outer, "ECMA-113:1986", "ECMA-cyrillic")) return false; if (!recode_declare_alias (outer, "ECMA-113", "ECMA-cyrillic")) return false; if (!recode_declare_alias (outer, "iso-ir-121", "CSA_Z243.4-1985-1")) return false; if (!recode_declare_alias (outer, "ISO646-CA", "CSA_Z243.4-1985-1")) return false; if (!recode_declare_alias (outer, "csa7-1", "CSA_Z243.4-1985-1")) return false; if (!recode_declare_alias (outer, "ca", "CSA_Z243.4-1985-1")) return false; if (!recode_declare_alias (outer, "iso-ir-122", "CSA_Z243.4-1985-2")) return false; if (!recode_declare_alias (outer, "ISO646-CA2", "CSA_Z243.4-1985-2")) return false; if (!recode_declare_alias (outer, "csa7-2", "CSA_Z243.4-1985-2")) return false; if (!recode_declare_alias (outer, "iso-ir-123", "CSA_Z243.4-1985-gr")) return false; if (!recode_declare_alias (outer, "iso-ir-126", "ISO-8859-7")) return false; if (!recode_declare_alias (outer, "ISO_8859-7:1987", "ISO-8859-7")) return false; if (!recode_declare_alias (outer, "ISO_8859-7", "ISO-8859-7")) return false; if (!recode_declare_alias (outer, "ISO8859-7", "ISO-8859-7")) return false; if (!recode_declare_alias (outer, "ELOT_928", "ISO-8859-7")) return false; if (!recode_declare_alias (outer, "ECMA-118", "ISO-8859-7")) return false; if (!recode_declare_alias (outer, "greek", "ISO-8859-7")) return false; if (!recode_declare_alias (outer, "greek8", "ISO-8859-7")) return false; if (!recode_declare_alias (outer, "iso-ir-127", "ISO-8859-6")) return false; if (!recode_declare_alias (outer, "ISO_8859-6:1987", "ISO-8859-6")) return false; if (!recode_declare_alias (outer, "ISO_8859-6", "ISO-8859-6")) return false; if (!recode_declare_alias (outer, "ISO8859-6", "ISO-8859-6")) return false; if (!recode_declare_alias (outer, "ECMA-114", "ISO-8859-6")) return false; if (!recode_declare_alias (outer, "ASMO-708", "ISO-8859-6")) return false; if (!recode_declare_alias (outer, "arabic", "ISO-8859-6")) return false; if (!recode_declare_alias (outer, "iso-ir-138", "ISO-8859-8")) return false; if (!recode_declare_alias (outer, "ISO_8859-8:1988", "ISO-8859-8")) return false; if (!recode_declare_alias (outer, "ISO_8859-8", "ISO-8859-8")) return false; if (!recode_declare_alias (outer, "ISO8859-8", "ISO-8859-8")) return false; if (!recode_declare_alias (outer, "hebrew", "ISO-8859-8")) return false; if (!recode_declare_alias (outer, "iso-ir-139", "CSN_369103")) return false; if (!recode_declare_alias (outer, "KOI-8_L2", "CSN_369103")) return false; if (!recode_declare_alias (outer, "koi8l2", "CSN_369103")) return false; if (!recode_declare_alias (outer, "iso-ir-141", "JUS_I.B1.002")) return false; if (!recode_declare_alias (outer, "ISO646-YU", "JUS_I.B1.002")) return false; if (!recode_declare_alias (outer, "js", "JUS_I.B1.002")) return false; if (!recode_declare_alias (outer, "yu", "JUS_I.B1.002")) return false; if (!recode_declare_alias (outer, "iso-ir-143", "IEC_P27-1")) return false; if (!recode_declare_alias (outer, "iso-ir-144", "ISO-8859-5")) return false; if (!recode_declare_alias (outer, "ISO_8859-5:1988", "ISO-8859-5")) return false; if (!recode_declare_alias (outer, "ISO_8859-5", "ISO-8859-5")) return false; if (!recode_declare_alias (outer, "ISO8859-5", "ISO-8859-5")) return false; if (!recode_declare_alias (outer, "cyrillic", "ISO-8859-5")) return false; if (!recode_declare_alias (outer, "iso-ir-146", "JUS_I.B1.003-serb")) return false; if (!recode_declare_alias (outer, "serbian", "JUS_I.B1.003-serb")) return false; if (!recode_declare_alias (outer, "macedonian", "JUS_I.B1.003-mac")) return false; if (!recode_declare_alias (outer, "iso-ir-147", "JUS_I.B1.003-mac")) return false; if (!recode_declare_alias (outer, "iso-ir-148", "ISO-8859-9")) return false; if (!recode_declare_alias (outer, "ISO_8859-9:1989", "ISO-8859-9")) return false; if (!recode_declare_alias (outer, "ISO_8859-9", "ISO-8859-9")) return false; if (!recode_declare_alias (outer, "ISO8859-9", "ISO-8859-9")) return false; if (!recode_declare_alias (outer, "latin5", "ISO-8859-9")) return false; if (!recode_declare_alias (outer, "l5", "ISO-8859-9")) return false; if (!recode_declare_alias (outer, "iso-ir-150", "greek-ccitt")) return false; if (!recode_declare_alias (outer, "cuba", "NC_NC00-10")) return false; if (!recode_declare_alias (outer, "NC_NC00-10:81", "NC_NC00-10")) return false; if (!recode_declare_alias (outer, "iso-ir-151", "NC_NC00-10")) return false; if (!recode_declare_alias (outer, "ISO646-CU", "NC_NC00-10")) return false; if (!recode_declare_alias (outer, "iso-ir-152", "ISO_6937-2-25")) return false; if (!recode_declare_alias (outer, "ST_SEV_358-88", "GOST_19768-87")) return false; if (!recode_declare_alias (outer, "iso-ir-153", "GOST_19768-87")) return false; if (!recode_declare_alias (outer, "iso-ir-154", "ISO_8859-supp")) return false; if (!recode_declare_alias (outer, "latin1-2-5", "ISO_8859-supp")) return false; if (!recode_declare_alias (outer, "iso-ir-155", "ISO_10367-box")) return false; if (!recode_declare_alias (outer, "iso-ir-157", "ISO-8859-10")) return false; if (!recode_declare_alias (outer, "ISO_8859-10:1993", "ISO-8859-10")) return false; if (!recode_declare_alias (outer, "ISO_8859-10", "ISO-8859-10")) return false; if (!recode_declare_alias (outer, "ISO8859-10", "ISO-8859-10")) return false; if (!recode_declare_alias (outer, "L6", "ISO-8859-10")) return false; if (!recode_declare_alias (outer, "latin6", "ISO-8859-10")) return false; if (!recode_declare_alias (outer, "iso-ir-179a", "ISO-8859-13")) return false; if (!recode_declare_alias (outer, "ISO_8859-13:1998", "ISO-8859-13")) return false; if (!recode_declare_alias (outer, "ISO_8859-13", "ISO-8859-13")) return false; if (!recode_declare_alias (outer, "ISO8859-13", "ISO-8859-13")) return false; if (!recode_declare_alias (outer, "latin7", "ISO-8859-13")) return false; if (!recode_declare_alias (outer, "iso-baltic", "ISO-8859-13")) return false; if (!recode_declare_alias (outer, "l7", "ISO-8859-13")) return false; if (!recode_declare_alias (outer, "iso-ir-199", "ISO-8859-14")) return false; if (!recode_declare_alias (outer, "ISO_8859-14:1998", "ISO-8859-14")) return false; if (!recode_declare_alias (outer, "ISO_8859-14", "ISO-8859-14")) return false; if (!recode_declare_alias (outer, "ISO8859-14", "ISO-8859-14")) return false; if (!recode_declare_alias (outer, "latin8", "ISO-8859-14")) return false; if (!recode_declare_alias (outer, "iso-celtic", "ISO-8859-14")) return false; if (!recode_declare_alias (outer, "l8", "ISO-8859-14")) return false; if (!recode_declare_alias (outer, "iso-ir-203", "ISO-8859-15")) return false; if (!recode_declare_alias (outer, "ISO_8859-15:1998", "ISO-8859-15")) return false; if (!recode_declare_alias (outer, "ISO_8859-15", "ISO-8859-15")) return false; if (!recode_declare_alias (outer, "ISO8859-15", "ISO-8859-15")) return false; if (!recode_declare_alias (outer, "latin9", "ISO-8859-15")) return false; if (!recode_declare_alias (outer, "l9", "ISO-8859-15")) return false; if (!recode_declare_alias (outer, "latin-lap", "sami")) return false; if (!recode_declare_alias (outer, "lap", "sami")) return false; if (!recode_declare_alias (outer, "iso-ir-158", "sami")) return false; if (!recode_declare_alias (outer, "iso-ir-179", "baltic")) return false; if (!recode_declare_alias (outer, "DS2089", "DS_2089")) return false; if (!recode_declare_alias (outer, "ISO646-DK", "DS_2089")) return false; if (!recode_declare_alias (outer, "dk", "DS_2089")) return false; if (!recode_declare_alias (outer, "X0201", "JIS_X0201")) return false; if (!recode_declare_alias (outer, "ISO646-KR", "KSC5636")) return false; if (!recode_declare_alias (outer, "dec", "DEC-MCS")) return false; if (!recode_declare_alias (outer, "roman8", "hp-roman8")) return false; if (!recode_declare_alias (outer, "r8", "hp-roman8")) return false; if (!recode_declare_alias (outer, "next", "NeXTSTEP")) return false; if (alias = recode_declare_alias (outer, "macintosh", "macintosh"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->cr_surface)) return false; if (alias = recode_declare_alias (outer, "mac", "macintosh"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->cr_surface)) return false; if (alias = recode_declare_alias (outer, "IBM037", "IBM037"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP037", "IBM037"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "037", "IBM037"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ebcdic-cp-us", "IBM037")) return false; if (!recode_declare_alias (outer, "ebcdic-cp-ca", "IBM037")) return false; if (!recode_declare_alias (outer, "ebcdic-cp-wt", "IBM037")) return false; if (!recode_declare_alias (outer, "ebcdic-cp-nl", "IBM037")) return false; if (alias = recode_declare_alias (outer, "IBM038", "IBM038"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "EBCDIC-INT", "IBM038")) return false; if (alias = recode_declare_alias (outer, "CP038", "IBM038"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "038", "IBM038"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM256", "IBM256"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "EBCDIC-INT1", "IBM256")) return false; if (alias = recode_declare_alias (outer, "CP256", "IBM256"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "256", "IBM256"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM273", "IBM273"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP273", "IBM273"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "273", "IBM273"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM274", "IBM274"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "EBCDIC-BE", "IBM274")) return false; if (alias = recode_declare_alias (outer, "CP274", "IBM274"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "274", "IBM274"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM275", "IBM275"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "EBCDIC-BR", "IBM275")) return false; if (alias = recode_declare_alias (outer, "CP275", "IBM275"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "275", "IBM275"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM277", "IBM277"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "EBCDIC-CP-DK", "IBM277")) return false; if (!recode_declare_alias (outer, "EBCDIC-CP-NO", "IBM277")) return false; if (alias = recode_declare_alias (outer, "IBM278", "IBM278"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP278", "IBM278"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "278", "IBM278"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ebcdic-cp-fi", "IBM278")) return false; if (!recode_declare_alias (outer, "ebcdic-cp-se", "IBM278")) return false; if (alias = recode_declare_alias (outer, "IBM280", "IBM280"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP280", "IBM280"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "280", "IBM280"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ebcdic-cp-it", "IBM280")) return false; if (alias = recode_declare_alias (outer, "IBM281", "IBM281"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "EBCDIC-JP-E", "IBM281")) return false; if (alias = recode_declare_alias (outer, "CP281", "IBM281"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "281", "IBM281"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM284", "IBM284"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP284", "IBM284"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "284", "IBM284"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ebcdic-cp-es", "IBM284")) return false; if (alias = recode_declare_alias (outer, "IBM285", "IBM285"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP285", "IBM285"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "285", "IBM285"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ebcdic-cp-gb", "IBM285")) return false; if (alias = recode_declare_alias (outer, "IBM290", "IBM290"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP290", "IBM290"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "290", "IBM290"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "EBCDIC-JP-kana", "IBM290")) return false; if (alias = recode_declare_alias (outer, "IBM297", "IBM297"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP297", "IBM297"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "297", "IBM297"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ebcdic-cp-fr", "IBM297")) return false; if (alias = recode_declare_alias (outer, "IBM420", "IBM420"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP420", "IBM420"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "420", "IBM420"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ebcdic-cp-ar1", "IBM420")) return false; if (alias = recode_declare_alias (outer, "IBM423", "IBM423"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP423", "IBM423"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "423", "IBM423"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ebcdic-cp-gr", "IBM423")) return false; if (alias = recode_declare_alias (outer, "IBM424", "IBM424"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP424", "IBM424"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "424", "IBM424"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ebcdic-cp-he", "IBM424")) return false; if (alias = recode_declare_alias (outer, "IBM437", "IBM437"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP437", "IBM437"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "437", "IBM437"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM500", "IBM500"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP500", "IBM500"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "500", "IBM500"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "500V1", "IBM500")) return false; if (!recode_declare_alias (outer, "ebcdic-cp-be", "IBM500")) return false; if (!recode_declare_alias (outer, "ebcdic-cp-ch", "IBM500")) return false; if (alias = recode_declare_alias (outer, "IBM850", "IBM850"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP850", "IBM850"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "850", "IBM850"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM851", "IBM851"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP851", "IBM851"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "851", "IBM851"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM852", "IBM852"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP852", "IBM852"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "852", "IBM852"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "pcl2", "IBM852")) return false; if (!recode_declare_alias (outer, "pclatin2", "IBM852")) return false; if (alias = recode_declare_alias (outer, "IBM855", "IBM855"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP855", "IBM855"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "855", "IBM855"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM857", "IBM857"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP857", "IBM857"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "857", "IBM857"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM860", "IBM860"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP860", "IBM860"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "860", "IBM860"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM861", "IBM861"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP861", "IBM861"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "861", "IBM861"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "cp-is", "IBM861")) return false; if (alias = recode_declare_alias (outer, "IBM862", "IBM862"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP862", "IBM862"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "862", "IBM862"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM863", "IBM863"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP863", "IBM863"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "863", "IBM863"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM864", "IBM864"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP864", "IBM864"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "864", "IBM864"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM865", "IBM865"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP865", "IBM865"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "865", "IBM865"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM868", "IBM868"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP868", "IBM868"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "868", "IBM868"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "cp-ar", "IBM868")) return false; if (alias = recode_declare_alias (outer, "IBM869", "IBM869"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP869", "IBM869"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "869", "IBM869"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "cp-gr", "IBM869")) return false; if (alias = recode_declare_alias (outer, "IBM870", "IBM870"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP870", "IBM870"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "870", "IBM870"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ebcdic-cp-roece", "IBM870")) return false; if (!recode_declare_alias (outer, "ebcdic-cp-yu", "IBM870")) return false; if (alias = recode_declare_alias (outer, "IBM871", "IBM871"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP871", "IBM871"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "871", "IBM871"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ebcdic-cp-is", "IBM871")) return false; if (alias = recode_declare_alias (outer, "IBM875", "IBM875"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP875", "IBM875"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "875", "IBM875"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "EBCDIC-Greek", "IBM875")) return false; if (alias = recode_declare_alias (outer, "IBM880", "IBM880"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP880", "IBM880"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "880", "IBM880"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "EBCDIC-Cyrillic", "IBM880")) return false; if (alias = recode_declare_alias (outer, "IBM891", "IBM891"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP891", "IBM891"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "891", "IBM891"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM903", "IBM903"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP903", "IBM903"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "903", "IBM903"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM904", "IBM904"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP904", "IBM904"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "904", "IBM904"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM905", "IBM905"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP905", "IBM905"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "905", "IBM905"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ebcdic-cp-tr", "IBM905")) return false; if (alias = recode_declare_alias (outer, "IBM918", "IBM918"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP918", "IBM918"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "918", "IBM918"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ebcdic-cp-ar2", "IBM918")) return false; if (alias = recode_declare_alias (outer, "IBM1004", "IBM1004"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP1004", "IBM1004"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "1004", "IBM1004"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "os2latin1", "IBM1004")) return false; if (alias = recode_declare_alias (outer, "IBM1026", "IBM1026"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP1026", "IBM1026"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "1026", "IBM1026"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "IBM1047", "IBM1047"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP1047", "IBM1047"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "1047", "IBM1047"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = recode_declare_alias (outer, "CP1250", "CP1250"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ms-ee", "CP1250")) return false; if (alias = recode_declare_alias (outer, "1250", "CP1250"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "windows-1250", "CP1250")) return false; if (alias = recode_declare_alias (outer, "CP1251", "CP1251"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ms-cyrl", "CP1251")) return false; if (alias = recode_declare_alias (outer, "1251", "CP1251"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "windows-1251", "CP1251")) return false; if (alias = recode_declare_alias (outer, "CP1252", "CP1252"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ms-ansi", "CP1252")) return false; if (alias = recode_declare_alias (outer, "1252", "CP1252"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "windows-1252", "CP1252")) return false; if (alias = recode_declare_alias (outer, "CP1253", "CP1253"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ms-greek", "CP1253")) return false; if (alias = recode_declare_alias (outer, "1253", "CP1253"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "windows-1253", "CP1253")) return false; if (alias = recode_declare_alias (outer, "CP1254", "CP1254"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ms-turk", "CP1254")) return false; if (alias = recode_declare_alias (outer, "1254", "CP1254"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "windows-1254", "CP1254")) return false; if (alias = recode_declare_alias (outer, "CP1255", "CP1255"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ms-hebr", "CP1255")) return false; if (alias = recode_declare_alias (outer, "1255", "CP1255"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "windows-1255", "CP1255")) return false; if (alias = recode_declare_alias (outer, "CP1256", "CP1256"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "ms-arab", "CP1256")) return false; if (alias = recode_declare_alias (outer, "1256", "CP1256"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "windows-1256", "CP1256")) return false; if (alias = recode_declare_alias (outer, "CP1257", "CP1257"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "WinBaltRim", "CP1257")) return false; if (alias = recode_declare_alias (outer, "1257", "CP1257"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!recode_declare_alias (outer, "windows-1257", "CP1257")) return false; if (!recode_declare_alias (outer, "friss", "EBCDIC-IS-FRISS")) return false; if (!recode_declare_alias (outer, "GOST_19768-74", "KOI-8")) return false; if (!recode_declare_alias (outer, "CWI-2", "CWI")) return false; if (!recode_declare_alias (outer, "cp-hu", "CWI")) return false; if (alias = recode_declare_alias (outer, "macintosh_ce", "macintosh_ce"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->cr_surface)) return false; if (alias = recode_declare_alias (outer, "macce", "macintosh_ce"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->cr_surface)) return false; return true; } void delmodule_strips (_GL_UNUSED struct recode_outer *outer) { } recode-3.7.15/src/lat1iso5426.c0000644000175000017500000000516414374760602011400 /* Conversion of files between different charsets and usages. Copyright (C) 1990-2018 Free Software Foundation, Inc. Francois Pinard , 1988. 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 3, 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * Copyright (c) 1998, Wolfram Schneider * Konrad Zuse Zentrum für Informationstechnik Berlin. * All rights reserved. * * Read the file iso5426lat1.l for more information about iso5426. * */ #include "config.h" #include "common.h" #include "decsteps.h" struct translation { int code; /* code being translated */ const char *string; /* translation string */ }; static struct translation diacritic_translations [] = { #include "lat1iso5426.h" {0, NULL}, }; static bool init_latin1_iso5426 (RECODE_STEP step, const struct recode_request *request, RECODE_CONST_OPTION_LIST before_options _GL_UNUSED, RECODE_CONST_OPTION_LIST after_options _GL_UNUSED) { RECODE_OUTER outer = request->outer; char *pool; const char **table; unsigned counter; struct translation const *cursor; if (!ALLOC_SIZE (table, 256 * sizeof (char *) + 256, const char *)) return false; pool = (char *) (table + 256); for (counter = 0; counter < 128; counter++) { pool[2 * counter] = counter; pool[2 * counter + 1] = '\0'; table[counter] = pool + 2 * counter; } for (counter = 128; counter < 256; counter++) table[counter] = NULL; for (cursor = diacritic_translations; cursor->code; cursor++) table[cursor->code] = cursor->string; step->step_table = table; step->step_table_term_routine = free; return true; } bool module_latin1_iso5426 (RECODE_OUTER outer) { return recode_declare_single (outer, "Latin-1", "ISO_5426:1983-DB-MAB2", outer->quality_variable_to_byte, init_latin1_iso5426, recode_transform_byte_to_variable); } void delmodule_latin1_iso5426 (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/stamp-steps0000644000175000017500000000001214765654546011542 timestamp recode-3.7.15/src/endline.c0000644000175000017500000001020314374760602011107 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" #define CR 13 /* carriage return */ #define LF 10 /* line feed */ #define OLD_EOF 26 /* oldish end of file */ static bool transform_data_cr (RECODE_SUBTASK subtask) { bool strict = subtask->step->fallback_routine != recode_reversibility; int character; while (character = recode_get_byte (subtask), character != EOF) switch (character) { case '\n': recode_put_byte (CR, subtask); break; case CR: if (!strict) { recode_put_byte ('\n', subtask); break; } RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); FALLTHROUGH; default: recode_put_byte (character, subtask); } SUBTASK_RETURN (subtask); } static bool transform_cr_data (RECODE_SUBTASK subtask) { bool strict = subtask->step->fallback_routine != recode_reversibility; int character; while (character = recode_get_byte (subtask), character != EOF) switch (character) { case CR: recode_put_byte ('\n', subtask); break; case '\n': if (!strict) { recode_put_byte (CR, subtask); break; } RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); FALLTHROUGH; default: recode_put_byte (character, subtask); } SUBTASK_RETURN (subtask); } static bool transform_data_crlf (RECODE_SUBTASK subtask) { int character = recode_get_byte (subtask); while (character != EOF) switch (character) { case '\n': recode_put_byte (CR, subtask); recode_put_byte (LF, subtask); character = recode_get_byte (subtask); break; case CR: character = recode_get_byte (subtask); if (character == LF) RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); recode_put_byte (CR, subtask); break; case OLD_EOF: RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); FALLTHROUGH; default: recode_put_byte (character, subtask); character = recode_get_byte (subtask); } SUBTASK_RETURN (subtask); } static bool transform_crlf_data (RECODE_SUBTASK subtask) { int character = recode_get_byte (subtask); while (character != EOF) switch (character) { case OLD_EOF: RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); SUBTASK_RETURN (subtask); case CR: character = recode_get_byte (subtask); if (character == LF) { recode_put_byte ('\n', subtask); character = recode_get_byte (subtask); } else recode_put_byte (CR, subtask); break; case LF: RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); FALLTHROUGH; default: recode_put_byte (character, subtask); character = recode_get_byte (subtask); } SUBTASK_RETURN (subtask); } bool module_endline (RECODE_OUTER outer) { return recode_declare_single (outer, "data", "CR", outer->quality_byte_to_byte, NULL, transform_data_cr) && recode_declare_single (outer, "CR", "data", outer->quality_byte_to_byte, NULL, transform_cr_data) && recode_declare_single (outer, "data", "CR-LF", outer->quality_byte_to_variable, NULL, transform_data_crlf) && recode_declare_single (outer, "CR-LF", "data", outer->quality_variable_to_byte, NULL, transform_crlf_data) && recode_declare_alias (outer, "cl", "CR-LF"); } void delmodule_endline (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/lat1btex.c0000644000175000017500000001606414374760602011230 /* Conversion of files between different charsets and surfaces. Copyright © 2006-2018 Free Software Foundation, Inc. Contributed by Vincent Danjean , 2006. Modified from lat1ltex.c This library 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 3 of the License, or (at your option) any later version. This library 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 the `recode' Library; see the file `COPYING.LIB'. If not, see . Suite 330, Boston, MA 02111-1307, USA. */ #include "config.h" #include "common.h" #include "decsteps.h" struct translation { unsigned code; /* code being translated */ const char *string; /* translation string */ }; static struct translation const diacritic_translations [] = { {192, "{\\`A}"}, /* capital A with grave accent */ {193, "{\\'A}"}, /* capital A with acute accent */ {194, "{\\^A}"}, /* capital A with circumflex accent */ {195, "{\\~A}"}, /* capital A with tilde */ {196, "{\\\"A}"}, /* capital A diaeresis */ {197, "{\\AA{}}"}, /* capital A with ring above */ {198, "{\\AE{}}"}, /* capital diphthong A with E */ {199, "{\\c{C}}"}, /* capital C with cedilla */ {200, "{\\`E}"}, /* capital E with grave accent */ {201, "{\\'E}"}, /* capital E with acute accent */ {202, "{\\^E}"}, /* capital E with circumflex accent */ {203, "{\\\"E}"}, /* capital E with diaeresis */ {204, "{\\`I}"}, /* capital I with grave accent */ {205, "{\\'I}"}, /* capital I with acute accent */ {206, "{\\^I}"}, /* capital I with circumflex accent */ {207, "{\\\"I}"}, /* capital I with diaeresis */ {209, "{\\~N}"}, /* capital N with tilde */ {210, "{\\`O}"}, /* capital O with grave accent */ {211, "{\\'O}"}, /* capital O with acute accent */ {212, "{\\^O}"}, /* capital O with circumflex accent */ {213, "{\\~O}"}, /* capital O with tilde */ {214, "{\\\"O}"}, /* capital O with diaeresis */ {216, "{\\O{}}"}, /* capital O with oblique stroke */ {217, "{\\`U}"}, /* capital U with grave accent */ {218, "{\\'U}"}, /* capital U with acute accent */ {219, "{\\^U}"}, /* capital U with circumflex accent */ {220, "{\\\"U}"}, /* capital U with diaeresis */ {221, "{\\'Y}"}, /* capital Y with acute accent */ {223, "{\\ss{}}"}, /* small german sharp s */ {224, "{\\`a}"}, /* small a with grave accent */ {225, "{\\'a}"}, /* small a with acute accent */ {226, "{\\^a}"}, /* small a with circumflex accent */ {227, "{\\~a}"}, /* small a with tilde */ {228, "{\\\"a}"}, /* small a with diaeresis */ {229, "{\\aa{}}"}, /* small a with ring above */ {230, "{\\ae{}}"}, /* small diphthong a with e */ {231, "{\\c{c}}"}, /* small c with cedilla */ {232, "{\\`e}"}, /* small e with grave accent */ {233, "{\\'e}"}, /* small e with acute accent */ {234, "{\\^e}"}, /* small e with circumflex accent */ {235, "{\\\"e}"}, /* small e with diaeresis */ {236, "{\\`{\\i}}"}, /* small i with grave accent */ {237, "{\\'{\\i}}"}, /* small i with acute accent */ {238, "{\\^{\\i}}"}, /* small i with circumflex accent */ {239, "{\\\"{\\i}}"}, /* small i with diaeresis */ {241, "{\\~n}"}, /* small n with tilde */ {242, "{\\`o}"}, /* small o with grave accent */ {243, "{\\'o}"}, /* small o with acute accent */ {244, "{\\^o}"}, /* small o with circumflex accent */ {245, "{\\~o}"}, /* small o with tilde */ {246, "{\\\"o}"}, /* small o with diaeresis */ {248, "{\\o{}}"}, /* small o with oblique stroke */ {249, "{\\`u}"}, /* small u with grave accent */ {250, "{\\'u}"}, /* small u with acute accent */ {251, "{\\^u}"}, /* small u with circumflex accent */ {252, "{\\\"u}"}, /* small u with diaeresis */ {253, "{\\'y}"}, /* small y with acute accent */ {255, "{\\\"y}"}, /* small y with diaeresis */ {0, NULL} }; static struct translation const other_translations [] = { { 35, "\\#"}, { 36, "\\$"}, { 37, "\\%"}, { 38, "\\&"}, { 92, "\\backslash{}"}, { 95, "\\_"}, {123, "\\{"}, {125, "\\}"}, {160, "~"}, /* no-break space */ {161, "!`"}, /* inverted exclamation mark */ {163, "\\pound{}"}, /* pound sign */ {167, "\\S{}"}, /* paragraph sign, section sign */ {168, "\\\"{}"}, /* diaeresis */ {169, "\\copyright{}"}, /* copyright sign */ {171, "``"}, /* left angle quotation mark */ {172, "\\neg{}"}, /* not sign */ {173, "\\-"}, /* soft hyphen */ {176, "\\mbox{$^\\circ$}"}, /* degree sign */ {177, "\\mbox{$\\pm$}"}, /* plus-minus sign */ {178, "\\mbox{$^2$}"}, /* superscript two */ {179, "\\mbox{$^3$}"}, /* superscript three */ {180, "\\'{}"}, /* acute accent */ {181, "\\mbox{$\\mu$}"}, /* small greek mu, micro sign */ {183, "\\cdotp"}, /* middle dot */ {184, "\\,{}"}, /* cedilla */ {185, "\\mbox{$^1$}"}, /* superscript one */ {187, "''"}, /* right angle quotation mark */ {188, "\\frac1/4{}"}, /* vulgar fraction one quarter */ {189, "\\frac1/2{}"}, /* vulgar fraction one half */ {190, "\\frac3/4{}"}, /* vulgar fraction three quarters */ {191, "?`"}, /* inverted question mark */ {0, NULL} }; static bool init_latin1_bibtex (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; char *pool; const char **table; unsigned counter; struct translation const *cursor; if (before_options || after_options) return false; if (!ALLOC_SIZE (table, 256 * sizeof (char *) + 256, const char *)) return false; pool = (char *) (table + 256); for (counter = 0; counter < 128; counter++) { table[counter] = pool; *pool++ = counter; *pool++ = NUL; } for (counter = 128; counter < 256; counter++) table[counter] = NULL; for (cursor = diacritic_translations; cursor->code; cursor++) table[cursor->code] = cursor->string; if (!request->diacritics_only) for (cursor = other_translations; cursor->code; cursor++) table[cursor->code] = cursor->string; step->step_type = RECODE_BYTE_TO_STRING; step->step_table = table; step->step_table_term_routine = free; return true; } bool module_latin1_bibtex (RECODE_OUTER outer) { return recode_declare_single (outer, "Latin-1", "BibTeX", outer->quality_byte_to_variable, init_latin1_bibtex, recode_transform_byte_to_variable) && recode_declare_alias (outer, "bibtex", "BibTeX") && recode_declare_alias (outer, "btex", "BibTeX"); } void delmodule_latin1_bibtex (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/rfc1345.h0000644000175000017500000023335314765654542010613 /* DO NOT MODIFY THIS FILE! It was generated by `recode/tables.py'. */ /* Conversion of files between different charsets and surfaces. Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . Suite 330, Boston, MA 02111-1307, USA. */ #define TABLE_LENGTH 2021 #define MAX_MNEMONIC_LENGTH 3 struct entry { recode_ucs2 code; const char *rfc1345; }; static const struct entry table[TABLE_LENGTH] = { /* 0 */ {0x0000, "NU"}, /* 1 */ {0x0001, "SH"}, /* 2 */ {0x0002, "SX"}, /* 3 */ {0x0003, "EX"}, /* 4 */ {0x0004, "ET"}, /* 5 */ {0x0005, "EQ"}, /* 6 */ {0x0006, "AK"}, /* 7 */ {0x0007, "BL"}, /* 8 */ {0x0008, "BS"}, /* 9 */ {0x0009, "HT"}, /* 10 */ {0x000A, "LF"}, /* 11 */ {0x000B, "VT"}, /* 12 */ {0x000C, "FF"}, /* 13 */ {0x000D, "CR"}, /* 14 */ {0x000E, "SO"}, /* 15 */ {0x000F, "SI"}, /* 16 */ {0x0010, "DL"}, /* 17 */ {0x0011, "D1"}, /* 18 */ {0x0012, "D2"}, /* 19 */ {0x0013, "D3"}, /* 20 */ {0x0014, "D4"}, /* 21 */ {0x0015, "NK"}, /* 22 */ {0x0016, "SY"}, /* 23 */ {0x0017, "EB"}, /* 24 */ {0x0018, "CN"}, /* 25 */ {0x0019, "EM"}, /* 26 */ {0x001A, "SB"}, /* 27 */ {0x001B, "EC"}, /* 28 */ {0x001C, "FS"}, /* 29 */ {0x001D, "GS"}, /* 30 */ {0x001E, "RS"}, /* 31 */ {0x001F, "US"}, /* 32 */ {0x0020, "SP"}, /* 33 */ {0x0021, "!"}, /* 34 */ {0x0022, "\""}, /* 35 */ {0x0023, "Nb"}, /* 36 */ {0x0024, "DO"}, /* 37 */ {0x0025, "%"}, /* 38 */ {0x0026, "&"}, /* 39 */ {0x0027, "'"}, /* 40 */ {0x0028, "("}, /* 41 */ {0x0029, ")"}, /* 42 */ {0x002A, "*"}, /* 43 */ {0x002B, "+"}, /* 44 */ {0x002C, ","}, /* 45 */ {0x002D, "-"}, /* 46 */ {0x002E, "."}, /* 47 */ {0x002F, "/"}, /* 48 */ {0x0030, "0"}, /* 49 */ {0x0031, "1"}, /* 50 */ {0x0032, "2"}, /* 51 */ {0x0033, "3"}, /* 52 */ {0x0034, "4"}, /* 53 */ {0x0035, "5"}, /* 54 */ {0x0036, "6"}, /* 55 */ {0x0037, "7"}, /* 56 */ {0x0038, "8"}, /* 57 */ {0x0039, "9"}, /* 58 */ {0x003A, ":"}, /* 59 */ {0x003B, ";"}, /* 60 */ {0x003C, "<"}, /* 61 */ {0x003D, "="}, /* 62 */ {0x003E, ">"}, /* 63 */ {0x003F, "?"}, /* 64 */ {0x0040, "At"}, /* 65 */ {0x0041, "A"}, /* 66 */ {0x0042, "B"}, /* 67 */ {0x0043, "C"}, /* 68 */ {0x0044, "D"}, /* 69 */ {0x0045, "E"}, /* 70 */ {0x0046, "F"}, /* 71 */ {0x0047, "G"}, /* 72 */ {0x0048, "H"}, /* 73 */ {0x0049, "I"}, /* 74 */ {0x004A, "J"}, /* 75 */ {0x004B, "K"}, /* 76 */ {0x004C, "L"}, /* 77 */ {0x004D, "M"}, /* 78 */ {0x004E, "N"}, /* 79 */ {0x004F, "O"}, /* 80 */ {0x0050, "P"}, /* 81 */ {0x0051, "Q"}, /* 82 */ {0x0052, "R"}, /* 83 */ {0x0053, "S"}, /* 84 */ {0x0054, "T"}, /* 85 */ {0x0055, "U"}, /* 86 */ {0x0056, "V"}, /* 87 */ {0x0057, "W"}, /* 88 */ {0x0058, "X"}, /* 89 */ {0x0059, "Y"}, /* 90 */ {0x005A, "Z"}, /* 91 */ {0x005B, "<("}, /* 92 */ {0x005C, "//"}, /* 93 */ {0x005D, ")>"}, /* 94 */ {0x005E, "'>"}, /* 95 */ {0x005F, "_"}, /* 96 */ {0x0060, "'!"}, /* 97 */ {0x0061, "a"}, /* 98 */ {0x0062, "b"}, /* 99 */ {0x0063, "c"}, /* 100 */ {0x0064, "d"}, /* 101 */ {0x0065, "e"}, /* 102 */ {0x0066, "f"}, /* 103 */ {0x0067, "g"}, /* 104 */ {0x0068, "h"}, /* 105 */ {0x0069, "i"}, /* 106 */ {0x006A, "j"}, /* 107 */ {0x006B, "k"}, /* 108 */ {0x006C, "l"}, /* 109 */ {0x006D, "m"}, /* 110 */ {0x006E, "n"}, /* 111 */ {0x006F, "o"}, /* 112 */ {0x0070, "p"}, /* 113 */ {0x0071, "q"}, /* 114 */ {0x0072, "r"}, /* 115 */ {0x0073, "s"}, /* 116 */ {0x0074, "t"}, /* 117 */ {0x0075, "u"}, /* 118 */ {0x0076, "v"}, /* 119 */ {0x0077, "w"}, /* 120 */ {0x0078, "x"}, /* 121 */ {0x0079, "y"}, /* 122 */ {0x007A, "z"}, /* 123 */ {0x007B, "(!"}, /* 124 */ {0x007C, "!!"}, /* 125 */ {0x007D, "!)"}, /* 126 */ {0x007E, "'?"}, /* 127 */ {0x007F, "DT"}, /* 128 */ {0x0080, "PA"}, /* 129 */ {0x0081, "HO"}, /* 130 */ {0x0082, "BH"}, /* 131 */ {0x0083, "NH"}, /* 132 */ {0x0084, "IN"}, /* 133 */ {0x0085, "NL"}, /* 134 */ {0x0086, "SA"}, /* 135 */ {0x0087, "ES"}, /* 136 */ {0x0088, "HS"}, /* 137 */ {0x0089, "HJ"}, /* 138 */ {0x008A, "VS"}, /* 139 */ {0x008B, "PD"}, /* 140 */ {0x008C, "PU"}, /* 141 */ {0x008D, "RI"}, /* 142 */ {0x008E, "S2"}, /* 143 */ {0x008F, "S3"}, /* 144 */ {0x0090, "DC"}, /* 145 */ {0x0091, "P1"}, /* 146 */ {0x0092, "P2"}, /* 147 */ {0x0093, "TS"}, /* 148 */ {0x0094, "CC"}, /* 149 */ {0x0095, "MW"}, /* 150 */ {0x0096, "SG"}, /* 151 */ {0x0097, "EG"}, /* 152 */ {0x0098, "SS"}, /* 153 */ {0x0099, "GC"}, /* 154 */ {0x009A, "SC"}, /* 155 */ {0x009B, "CI"}, /* 156 */ {0x009C, "ST"}, /* 157 */ {0x009D, "OC"}, /* 158 */ {0x009E, "PM"}, /* 159 */ {0x009F, "AC"}, /* 160 */ {0x00A0, "NS"}, /* 161 */ {0x00A1, "!I"}, /* 162 */ {0x00A2, "Ct"}, /* 163 */ {0x00A3, "Pd"}, /* 164 */ {0x00A4, "Cu"}, /* 165 */ {0x00A5, "Ye"}, /* 166 */ {0x00A6, "BB"}, /* 167 */ {0x00A7, "SE"}, /* 168 */ {0x00A8, "':"}, /* 169 */ {0x00A9, "Co"}, /* 170 */ {0x00AA, "-a"}, /* 171 */ {0x00AB, "<<"}, /* 172 */ {0x00AC, "NO"}, /* 173 */ {0x00AD, "--"}, /* 174 */ {0x00AE, "Rg"}, /* 175 */ {0x00AF, "'m"}, /* 176 */ {0x00B0, "DG"}, /* 177 */ {0x00B1, "+-"}, /* 178 */ {0x00B2, "2S"}, /* 179 */ {0x00B3, "3S"}, /* 180 */ {0x00B4, "''"}, /* 181 */ {0x00B5, "My"}, /* 182 */ {0x00B6, "PI"}, /* 183 */ {0x00B7, ".M"}, /* 184 */ {0x00B8, "',"}, /* 185 */ {0x00B9, "1S"}, /* 186 */ {0x00BA, "-o"}, /* 187 */ {0x00BB, ">>"}, /* 188 */ {0x00BC, "14"}, /* 189 */ {0x00BD, "12"}, /* 190 */ {0x00BE, "34"}, /* 191 */ {0x00BF, "?I"}, /* 192 */ {0x00C0, "A!"}, /* 193 */ {0x00C1, "A'"}, /* 194 */ {0x00C2, "A>"}, /* 195 */ {0x00C3, "A?"}, /* 196 */ {0x00C4, "A:"}, /* 197 */ {0x00C5, "AA"}, /* 198 */ {0x00C6, "AE"}, /* 199 */ {0x00C7, "C,"}, /* 200 */ {0x00C8, "E!"}, /* 201 */ {0x00C9, "E'"}, /* 202 */ {0x00CA, "E>"}, /* 203 */ {0x00CB, "E:"}, /* 204 */ {0x00CC, "I!"}, /* 205 */ {0x00CD, "I'"}, /* 206 */ {0x00CE, "I>"}, /* 207 */ {0x00CF, "I:"}, /* 208 */ {0x00D0, "D-"}, /* 209 */ {0x00D1, "N?"}, /* 210 */ {0x00D2, "O!"}, /* 211 */ {0x00D3, "O'"}, /* 212 */ {0x00D4, "O>"}, /* 213 */ {0x00D5, "O?"}, /* 214 */ {0x00D6, "O:"}, /* 215 */ {0x00D7, "*X"}, /* 216 */ {0x00D8, "O/"}, /* 217 */ {0x00D9, "U!"}, /* 218 */ {0x00DA, "U'"}, /* 219 */ {0x00DB, "U>"}, /* 220 */ {0x00DC, "U:"}, /* 221 */ {0x00DD, "Y'"}, /* 222 */ {0x00DE, "TH"}, /* 223 */ {0x00DF, "ss"}, /* 224 */ {0x00E0, "a!"}, /* 225 */ {0x00E1, "a'"}, /* 226 */ {0x00E2, "a>"}, /* 227 */ {0x00E3, "a?"}, /* 228 */ {0x00E4, "a:"}, /* 229 */ {0x00E5, "aa"}, /* 230 */ {0x00E6, "ae"}, /* 231 */ {0x00E7, "c,"}, /* 232 */ {0x00E8, "e!"}, /* 233 */ {0x00E9, "e'"}, /* 234 */ {0x00EA, "e>"}, /* 235 */ {0x00EB, "e:"}, /* 236 */ {0x00EC, "i!"}, /* 237 */ {0x00ED, "i'"}, /* 238 */ {0x00EE, "i>"}, /* 239 */ {0x00EF, "i:"}, /* 240 */ {0x00F0, "d-"}, /* 241 */ {0x00F1, "n?"}, /* 242 */ {0x00F2, "o!"}, /* 243 */ {0x00F3, "o'"}, /* 244 */ {0x00F4, "o>"}, /* 245 */ {0x00F5, "o?"}, /* 246 */ {0x00F6, "o:"}, /* 247 */ {0x00F7, "-:"}, /* 248 */ {0x00F8, "o/"}, /* 249 */ {0x00F9, "u!"}, /* 250 */ {0x00FA, "u'"}, /* 251 */ {0x00FB, "u>"}, /* 252 */ {0x00FC, "u:"}, /* 253 */ {0x00FD, "y'"}, /* 254 */ {0x00FE, "th"}, /* 255 */ {0x00FF, "y:"}, /* 256 */ {0x0100, "A-"}, /* 257 */ {0x0101, "a-"}, /* 258 */ {0x0102, "A("}, /* 259 */ {0x0103, "a("}, /* 260 */ {0x0104, "A;"}, /* 261 */ {0x0105, "a;"}, /* 262 */ {0x0106, "C'"}, /* 263 */ {0x0107, "c'"}, /* 264 */ {0x0108, "C>"}, /* 265 */ {0x0109, "c>"}, /* 266 */ {0x010A, "C."}, /* 267 */ {0x010B, "c."}, /* 268 */ {0x010C, "C<"}, /* 269 */ {0x010D, "c<"}, /* 270 */ {0x010E, "D<"}, /* 271 */ {0x010F, "d<"}, /* 272 */ {0x0110, "D/"}, /* 273 */ {0x0111, "d/"}, /* 274 */ {0x0112, "E-"}, /* 275 */ {0x0113, "e-"}, /* 276 */ {0x0114, "E("}, /* 277 */ {0x0115, "e("}, /* 278 */ {0x0116, "E."}, /* 279 */ {0x0117, "e."}, /* 280 */ {0x0118, "E;"}, /* 281 */ {0x0119, "e;"}, /* 282 */ {0x011A, "E<"}, /* 283 */ {0x011B, "e<"}, /* 284 */ {0x011C, "G>"}, /* 285 */ {0x011D, "g>"}, /* 286 */ {0x011E, "G("}, /* 287 */ {0x011F, "g("}, /* 288 */ {0x0120, "G."}, /* 289 */ {0x0121, "g."}, /* 290 */ {0x0122, "G,"}, /* 291 */ {0x0123, "g,"}, /* 292 */ {0x0124, "H>"}, /* 293 */ {0x0125, "h>"}, /* 294 */ {0x0126, "H/"}, /* 295 */ {0x0127, "h/"}, /* 296 */ {0x0128, "I?"}, /* 297 */ {0x0129, "i?"}, /* 298 */ {0x012A, "I-"}, /* 299 */ {0x012B, "i-"}, /* 300 */ {0x012C, "I("}, /* 301 */ {0x012D, "i("}, /* 302 */ {0x012E, "I;"}, /* 303 */ {0x012F, "i;"}, /* 304 */ {0x0130, "I."}, /* 305 */ {0x0131, "i."}, /* 306 */ {0x0132, "IJ"}, /* 307 */ {0x0133, "ij"}, /* 308 */ {0x0134, "J>"}, /* 309 */ {0x0135, "j>"}, /* 310 */ {0x0136, "K,"}, /* 311 */ {0x0137, "k,"}, /* 312 */ {0x0138, "kk"}, /* 313 */ {0x0139, "L'"}, /* 314 */ {0x013A, "l'"}, /* 315 */ {0x013B, "L,"}, /* 316 */ {0x013C, "l,"}, /* 317 */ {0x013D, "L<"}, /* 318 */ {0x013E, "l<"}, /* 319 */ {0x013F, "L."}, /* 320 */ {0x0140, "l."}, /* 321 */ {0x0141, "L/"}, /* 322 */ {0x0142, "l/"}, /* 323 */ {0x0143, "N'"}, /* 324 */ {0x0144, "n'"}, /* 325 */ {0x0145, "N,"}, /* 326 */ {0x0146, "n,"}, /* 327 */ {0x0147, "N<"}, /* 328 */ {0x0148, "n<"}, /* 329 */ {0x0149, "'n"}, /* 330 */ {0x014A, "NG"}, /* 331 */ {0x014B, "ng"}, /* 332 */ {0x014C, "O-"}, /* 333 */ {0x014D, "o-"}, /* 334 */ {0x014E, "O("}, /* 335 */ {0x014F, "o("}, /* 336 */ {0x0150, "O\""}, /* 337 */ {0x0151, "o\""}, /* 338 */ {0x0152, "OE"}, /* 339 */ {0x0153, "oe"}, /* 340 */ {0x0154, "R'"}, /* 341 */ {0x0155, "r'"}, /* 342 */ {0x0156, "R,"}, /* 343 */ {0x0157, "r,"}, /* 344 */ {0x0158, "R<"}, /* 345 */ {0x0159, "r<"}, /* 346 */ {0x015A, "S'"}, /* 347 */ {0x015B, "s'"}, /* 348 */ {0x015C, "S>"}, /* 349 */ {0x015D, "s>"}, /* 350 */ {0x015E, "S,"}, /* 351 */ {0x015F, "s,"}, /* 352 */ {0x0160, "S<"}, /* 353 */ {0x0161, "s<"}, /* 354 */ {0x0162, "T,"}, /* 355 */ {0x0163, "t,"}, /* 356 */ {0x0164, "T<"}, /* 357 */ {0x0165, "t<"}, /* 358 */ {0x0166, "T/"}, /* 359 */ {0x0167, "t/"}, /* 360 */ {0x0168, "U?"}, /* 361 */ {0x0169, "u?"}, /* 362 */ {0x016A, "U-"}, /* 363 */ {0x016B, "u-"}, /* 364 */ {0x016C, "U("}, /* 365 */ {0x016D, "u("}, /* 366 */ {0x016E, "U0"}, /* 367 */ {0x016F, "u0"}, /* 368 */ {0x0170, "U\""}, /* 369 */ {0x0171, "u\""}, /* 370 */ {0x0172, "U;"}, /* 371 */ {0x0173, "u;"}, /* 372 */ {0x0174, "W>"}, /* 373 */ {0x0175, "w>"}, /* 374 */ {0x0176, "Y>"}, /* 375 */ {0x0177, "y>"}, /* 376 */ {0x0178, "Y:"}, /* 377 */ {0x0179, "Z'"}, /* 378 */ {0x017A, "z'"}, /* 379 */ {0x017B, "Z."}, /* 380 */ {0x017C, "z."}, /* 381 */ {0x017D, "Z<"}, /* 382 */ {0x017E, "z<"}, /* 383 */ {0x017F, "s1"}, /* 384 */ {0x0180, "b/"}, /* 385 */ {0x0181, "B2"}, /* 386 */ {0x0187, "C2"}, /* 387 */ {0x0188, "c2"}, /* 388 */ {0x0191, "F2"}, /* 389 */ {0x0192, "f2"}, /* 390 */ {0x0198, "K2"}, /* 391 */ {0x0199, "k2"}, /* 392 */ {0x01A0, "O9"}, /* 393 */ {0x01A1, "o9"}, /* 394 */ {0x01A2, "OI"}, /* 395 */ {0x01A3, "oi"}, /* 396 */ {0x01A6, "yr"}, /* 397 */ {0x01AF, "U9"}, /* 398 */ {0x01B0, "u9"}, /* 399 */ {0x01B5, "Z/"}, /* 400 */ {0x01B6, "z/"}, /* 401 */ {0x01B7, "ED"}, /* 402 */ {0x01C4, "DZ<"}, /* 403 */ {0x01C5, "Dz<"}, /* 404 */ {0x01C6, "dz<"}, /* 405 */ {0x01C7, "LJ3"}, /* 406 */ {0x01C8, "Lj3"}, /* 407 */ {0x01C9, "lj3"}, /* 408 */ {0x01CA, "NJ3"}, /* 409 */ {0x01CB, "Nj3"}, /* 410 */ {0x01CC, "nj3"}, /* 411 */ {0x01CD, "A<"}, /* 412 */ {0x01CE, "a<"}, /* 413 */ {0x01CF, "I<"}, /* 414 */ {0x01D0, "i<"}, /* 415 */ {0x01D1, "O<"}, /* 416 */ {0x01D2, "o<"}, /* 417 */ {0x01D3, "U<"}, /* 418 */ {0x01D4, "u<"}, /* 419 */ {0x01D5, "U:-"}, /* 420 */ {0x01D6, "u:-"}, /* 421 */ {0x01D7, "U:'"}, /* 422 */ {0x01D8, "u:'"}, /* 423 */ {0x01D9, "U:<"}, /* 424 */ {0x01DA, "u:<"}, /* 425 */ {0x01DB, "U:!"}, /* 426 */ {0x01DC, "u:!"}, /* 427 */ {0x01DD, "e1"}, /* 428 */ {0x01DE, "A1"}, /* 429 */ {0x01DF, "a1"}, /* 430 */ {0x01E0, "A7"}, /* 431 */ {0x01E1, "a7"}, /* 432 */ {0x01E2, "A3"}, /* 433 */ {0x01E3, "a3"}, /* 434 */ {0x01E4, "G/"}, /* 435 */ {0x01E5, "g/"}, /* 436 */ {0x01E6, "G<"}, /* 437 */ {0x01E7, "g<"}, /* 438 */ {0x01E8, "K<"}, /* 439 */ {0x01E9, "k<"}, /* 440 */ {0x01EA, "O;"}, /* 441 */ {0x01EB, "o;"}, /* 442 */ {0x01EC, "O1"}, /* 443 */ {0x01ED, "o1"}, /* 444 */ {0x01EE, "EZ"}, /* 445 */ {0x01EF, "ez"}, /* 446 */ {0x01F0, "j<"}, /* 447 */ {0x01F1, "DZ3"}, /* 448 */ {0x01F2, "Dz3"}, /* 449 */ {0x01F3, "dz3"}, /* 450 */ {0x01F4, "G'"}, /* 451 */ {0x01F5, "g'"}, /* 452 */ {0x01FA, "AA'"}, /* 453 */ {0x01FB, "aa'"}, /* 454 */ {0x01FC, "AE'"}, /* 455 */ {0x01FD, "ae'"}, /* 456 */ {0x01FE, "O/'"}, /* 457 */ {0x01FF, "o/'"}, /* 458 */ {0x0200, "A!!"}, /* 459 */ {0x0201, "a!!"}, /* 460 */ {0x0202, "A)"}, /* 461 */ {0x0203, "a)"}, /* 462 */ {0x0204, "E!!"}, /* 463 */ {0x0205, "e!!"}, /* 464 */ {0x0206, "E)"}, /* 465 */ {0x0207, "e)"}, /* 466 */ {0x0208, "I!!"}, /* 467 */ {0x0209, "i!!"}, /* 468 */ {0x020A, "I)"}, /* 469 */ {0x020B, "i)"}, /* 470 */ {0x020C, "O!!"}, /* 471 */ {0x020D, "o!!"}, /* 472 */ {0x020E, "O)"}, /* 473 */ {0x020F, "o)"}, /* 474 */ {0x0210, "R!!"}, /* 475 */ {0x0211, "r!!"}, /* 476 */ {0x0212, "R)"}, /* 477 */ {0x0213, "r)"}, /* 478 */ {0x0214, "U!!"}, /* 479 */ {0x0215, "u!!"}, /* 480 */ {0x0216, "U)"}, /* 481 */ {0x0217, "u)"}, /* 482 */ {0x027C, "r1"}, /* 483 */ {0x0292, "ed"}, /* 484 */ {0x02BB, ";S"}, /* 485 */ {0x02C6, "1>"}, /* 486 */ {0x02C7, "'<"}, /* 487 */ {0x02C9, "1-"}, /* 488 */ {0x02CB, "1!"}, /* 489 */ {0x02D8, "'("}, /* 490 */ {0x02D9, "'."}, /* 491 */ {0x02DA, "'0"}, /* 492 */ {0x02DB, "';"}, /* 493 */ {0x02DC, "1?"}, /* 494 */ {0x02DD, "'\""}, /* 495 */ {0x0374, "'G"}, /* 496 */ {0x0375, ",G"}, /* 497 */ {0x037A, "j3"}, /* 498 */ {0x037E, "?%"}, /* 499 */ {0x0384, "'*"}, /* 500 */ {0x0385, "'%"}, /* 501 */ {0x0386, "A%"}, /* 502 */ {0x0387, ".*"}, /* 503 */ {0x0388, "E%"}, /* 504 */ {0x0389, "Y%"}, /* 505 */ {0x038A, "I%"}, /* 506 */ {0x038C, "O%"}, /* 507 */ {0x038E, "U%"}, /* 508 */ {0x038F, "W%"}, /* 509 */ {0x0390, "i3"}, /* 510 */ {0x0391, "A*"}, /* 511 */ {0x0392, "B*"}, /* 512 */ {0x0393, "G*"}, /* 513 */ {0x0394, "D*"}, /* 514 */ {0x0395, "E*"}, /* 515 */ {0x0396, "Z*"}, /* 516 */ {0x0397, "Y*"}, /* 517 */ {0x0398, "H*"}, /* 518 */ {0x0399, "I*"}, /* 519 */ {0x039A, "K*"}, /* 520 */ {0x039B, "L*"}, /* 521 */ {0x039C, "M*"}, /* 522 */ {0x039D, "N*"}, /* 523 */ {0x039E, "C*"}, /* 524 */ {0x039F, "O*"}, /* 525 */ {0x03A0, "P*"}, /* 526 */ {0x03A1, "R*"}, /* 527 */ {0x03A3, "S*"}, /* 528 */ {0x03A4, "T*"}, /* 529 */ {0x03A5, "U*"}, /* 530 */ {0x03A6, "F*"}, /* 531 */ {0x03A7, "X*"}, /* 532 */ {0x03A8, "Q*"}, /* 533 */ {0x03A9, "W*"}, /* 534 */ {0x03AA, "J*"}, /* 535 */ {0x03AB, "V*"}, /* 536 */ {0x03AC, "a%"}, /* 537 */ {0x03AD, "e%"}, /* 538 */ {0x03AE, "y%"}, /* 539 */ {0x03AF, "i%"}, /* 540 */ {0x03B0, "u3"}, /* 541 */ {0x03B1, "a*"}, /* 542 */ {0x03B2, "b*"}, /* 543 */ {0x03B3, "g*"}, /* 544 */ {0x03B4, "d*"}, /* 545 */ {0x03B5, "e*"}, /* 546 */ {0x03B6, "z*"}, /* 547 */ {0x03B7, "y*"}, /* 548 */ {0x03B8, "h*"}, /* 549 */ {0x03B9, "i*"}, /* 550 */ {0x03BA, "k*"}, /* 551 */ {0x03BB, "l*"}, /* 552 */ {0x03BC, "m*"}, /* 553 */ {0x03BD, "n*"}, /* 554 */ {0x03BE, "c*"}, /* 555 */ {0x03BF, "o*"}, /* 556 */ {0x03C0, "p*"}, /* 557 */ {0x03C1, "r*"}, /* 558 */ {0x03C2, "*s"}, /* 559 */ {0x03C3, "s*"}, /* 560 */ {0x03C4, "t*"}, /* 561 */ {0x03C5, "u*"}, /* 562 */ {0x03C6, "f*"}, /* 563 */ {0x03C7, "x*"}, /* 564 */ {0x03C8, "q*"}, /* 565 */ {0x03C9, "w*"}, /* 566 */ {0x03CA, "j*"}, /* 567 */ {0x03CB, "v*"}, /* 568 */ {0x03CC, "o%"}, /* 569 */ {0x03CD, "u%"}, /* 570 */ {0x03CE, "w%"}, /* 571 */ {0x03D0, "b3"}, /* 572 */ {0x03DA, "T3"}, /* 573 */ {0x03DC, "M3"}, /* 574 */ {0x03DE, "K3"}, /* 575 */ {0x03E0, "P3"}, /* 576 */ {0x0401, "IO"}, /* 577 */ {0x0402, "D%"}, /* 578 */ {0x0403, "G%"}, /* 579 */ {0x0404, "IE"}, /* 580 */ {0x0405, "DS"}, /* 581 */ {0x0406, "II"}, /* 582 */ {0x0407, "YI"}, /* 583 */ {0x0408, "J%"}, /* 584 */ {0x0409, "LJ"}, /* 585 */ {0x040A, "NJ"}, /* 586 */ {0x040B, "Ts"}, /* 587 */ {0x040C, "KJ"}, /* 588 */ {0x040E, "V%"}, /* 589 */ {0x040F, "DZ"}, /* 590 */ {0x0410, "A="}, /* 591 */ {0x0411, "B="}, /* 592 */ {0x0412, "V="}, /* 593 */ {0x0413, "G="}, /* 594 */ {0x0414, "D="}, /* 595 */ {0x0415, "E="}, /* 596 */ {0x0416, "Z%"}, /* 597 */ {0x0417, "Z="}, /* 598 */ {0x0418, "I="}, /* 599 */ {0x0419, "J="}, /* 600 */ {0x041A, "K="}, /* 601 */ {0x041B, "L="}, /* 602 */ {0x041C, "M="}, /* 603 */ {0x041D, "N="}, /* 604 */ {0x041E, "O="}, /* 605 */ {0x041F, "P="}, /* 606 */ {0x0420, "R="}, /* 607 */ {0x0421, "S="}, /* 608 */ {0x0422, "T="}, /* 609 */ {0x0423, "U="}, /* 610 */ {0x0424, "F="}, /* 611 */ {0x0425, "H="}, /* 612 */ {0x0426, "C="}, /* 613 */ {0x0427, "C%"}, /* 614 */ {0x0428, "S%"}, /* 615 */ {0x0429, "Sc"}, /* 616 */ {0x042A, "=\""}, /* 617 */ {0x042B, "Y="}, /* 618 */ {0x042C, "%\""}, /* 619 */ {0x042D, "JE"}, /* 620 */ {0x042E, "JU"}, /* 621 */ {0x042F, "JA"}, /* 622 */ {0x0430, "a="}, /* 623 */ {0x0431, "b="}, /* 624 */ {0x0432, "v="}, /* 625 */ {0x0433, "g="}, /* 626 */ {0x0434, "d="}, /* 627 */ {0x0435, "e="}, /* 628 */ {0x0436, "z%"}, /* 629 */ {0x0437, "z="}, /* 630 */ {0x0438, "i="}, /* 631 */ {0x0439, "j="}, /* 632 */ {0x043A, "k="}, /* 633 */ {0x043B, "l="}, /* 634 */ {0x043C, "m="}, /* 635 */ {0x043D, "n="}, /* 636 */ {0x043E, "o="}, /* 637 */ {0x043F, "p="}, /* 638 */ {0x0440, "r="}, /* 639 */ {0x0441, "s="}, /* 640 */ {0x0442, "t="}, /* 641 */ {0x0443, "u="}, /* 642 */ {0x0444, "f="}, /* 643 */ {0x0445, "h="}, /* 644 */ {0x0446, "c="}, /* 645 */ {0x0447, "c%"}, /* 646 */ {0x0448, "s%"}, /* 647 */ {0x0449, "sc"}, /* 648 */ {0x044A, "='"}, /* 649 */ {0x044B, "y="}, /* 650 */ {0x044C, "%'"}, /* 651 */ {0x044D, "je"}, /* 652 */ {0x044E, "ju"}, /* 653 */ {0x044F, "ja"}, /* 654 */ {0x0451, "io"}, /* 655 */ {0x0452, "d%"}, /* 656 */ {0x0453, "g%"}, /* 657 */ {0x0454, "ie"}, /* 658 */ {0x0455, "ds"}, /* 659 */ {0x0456, "ii"}, /* 660 */ {0x0457, "yi"}, /* 661 */ {0x0458, "j%"}, /* 662 */ {0x0459, "lj"}, /* 663 */ {0x045A, "nj"}, /* 664 */ {0x045B, "ts"}, /* 665 */ {0x045C, "kj"}, /* 666 */ {0x045E, "v%"}, /* 667 */ {0x045F, "dz"}, /* 668 */ {0x0462, "Y3"}, /* 669 */ {0x0463, "y3"}, /* 670 */ {0x046A, "O3"}, /* 671 */ {0x046B, "o3"}, /* 672 */ {0x0472, "F3"}, /* 673 */ {0x0473, "f3"}, /* 674 */ {0x0474, "V3"}, /* 675 */ {0x0475, "v3"}, /* 676 */ {0x0480, "C3"}, /* 677 */ {0x0481, "c3"}, /* 678 */ {0x0490, "G3"}, /* 679 */ {0x0491, "g3"}, /* 680 */ {0x05D0, "A+"}, /* 681 */ {0x05D1, "B+"}, /* 682 */ {0x05D2, "G+"}, /* 683 */ {0x05D3, "D+"}, /* 684 */ {0x05D4, "H+"}, /* 685 */ {0x05D5, "W+"}, /* 686 */ {0x05D6, "Z+"}, /* 687 */ {0x05D7, "X+"}, /* 688 */ {0x05D8, "Tj"}, /* 689 */ {0x05D9, "J+"}, /* 690 */ {0x05DA, "K%"}, /* 691 */ {0x05DB, "K+"}, /* 692 */ {0x05DC, "L+"}, /* 693 */ {0x05DD, "M%"}, /* 694 */ {0x05DE, "M+"}, /* 695 */ {0x05DF, "N%"}, /* 696 */ {0x05E0, "N+"}, /* 697 */ {0x05E1, "S+"}, /* 698 */ {0x05E2, "E+"}, /* 699 */ {0x05E3, "P%"}, /* 700 */ {0x05E4, "P+"}, /* 701 */ {0x05E5, "Zj"}, /* 702 */ {0x05E6, "ZJ"}, /* 703 */ {0x05E7, "Q+"}, /* 704 */ {0x05E8, "R+"}, /* 705 */ {0x05E9, "Sh"}, /* 706 */ {0x05EA, "T+"}, /* 707 */ {0x060C, ",+"}, /* 708 */ {0x061B, ";+"}, /* 709 */ {0x061F, "?+"}, /* 710 */ {0x0621, "H'"}, /* 711 */ {0x0622, "aM"}, /* 712 */ {0x0623, "aH"}, /* 713 */ {0x0624, "wH"}, /* 714 */ {0x0625, "ah"}, /* 715 */ {0x0626, "yH"}, /* 716 */ {0x0627, "a+"}, /* 717 */ {0x0628, "b+"}, /* 718 */ {0x0629, "tm"}, /* 719 */ {0x062A, "t+"}, /* 720 */ {0x062B, "tk"}, /* 721 */ {0x062C, "g+"}, /* 722 */ {0x062D, "hk"}, /* 723 */ {0x062E, "x+"}, /* 724 */ {0x062F, "d+"}, /* 725 */ {0x0630, "dk"}, /* 726 */ {0x0631, "r+"}, /* 727 */ {0x0632, "z+"}, /* 728 */ {0x0633, "s+"}, /* 729 */ {0x0634, "sn"}, /* 730 */ {0x0635, "c+"}, /* 731 */ {0x0636, "dd"}, /* 732 */ {0x0637, "tj"}, /* 733 */ {0x0638, "zH"}, /* 734 */ {0x0639, "e+"}, /* 735 */ {0x063A, "i+"}, /* 736 */ {0x0640, "++"}, /* 737 */ {0x0641, "f+"}, /* 738 */ {0x0642, "q+"}, /* 739 */ {0x0643, "k+"}, /* 740 */ {0x0644, "l+"}, /* 741 */ {0x0645, "m+"}, /* 742 */ {0x0646, "n+"}, /* 743 */ {0x0647, "h+"}, /* 744 */ {0x0648, "w+"}, /* 745 */ {0x0649, "j+"}, /* 746 */ {0x064A, "y+"}, /* 747 */ {0x064B, ":+"}, /* 748 */ {0x064C, "\"+"}, /* 749 */ {0x064D, "=+"}, /* 750 */ {0x064E, "/+"}, /* 751 */ {0x064F, "'+"}, /* 752 */ {0x0650, "1+"}, /* 753 */ {0x0651, "3+"}, /* 754 */ {0x0652, "0+"}, /* 755 */ {0x0660, "0a"}, /* 756 */ {0x0661, "1a"}, /* 757 */ {0x0662, "2a"}, /* 758 */ {0x0663, "3a"}, /* 759 */ {0x0664, "4a"}, /* 760 */ {0x0665, "5a"}, /* 761 */ {0x0666, "6a"}, /* 762 */ {0x0667, "7a"}, /* 763 */ {0x0668, "8a"}, /* 764 */ {0x0669, "9a"}, /* 765 */ {0x0670, "aS"}, /* 766 */ {0x067E, "p+"}, /* 767 */ {0x0681, "hH"}, /* 768 */ {0x0686, "tc"}, /* 769 */ {0x0698, "zj"}, /* 770 */ {0x06A4, "v+"}, /* 771 */ {0x06AF, "gf"}, /* 772 */ {0x1E00, "A-0"}, /* 773 */ {0x1E01, "a-0"}, /* 774 */ {0x1E02, "B."}, /* 775 */ {0x1E03, "b."}, /* 776 */ {0x1E04, "B-."}, /* 777 */ {0x1E05, "b-."}, /* 778 */ {0x1E06, "B_"}, /* 779 */ {0x1E07, "b_"}, /* 780 */ {0x1E08, "C,'"}, /* 781 */ {0x1E09, "c,'"}, /* 782 */ {0x1E0A, "D."}, /* 783 */ {0x1E0B, "d."}, /* 784 */ {0x1E0C, "D-."}, /* 785 */ {0x1E0D, "d-."}, /* 786 */ {0x1E0E, "D_"}, /* 787 */ {0x1E0F, "d_"}, /* 788 */ {0x1E10, "D,"}, /* 789 */ {0x1E11, "d,"}, /* 790 */ {0x1E12, "D->"}, /* 791 */ {0x1E13, "d->"}, /* 792 */ {0x1E14, "E-!"}, /* 793 */ {0x1E15, "e-!"}, /* 794 */ {0x1E16, "E-'"}, /* 795 */ {0x1E17, "e-'"}, /* 796 */ {0x1E18, "E->"}, /* 797 */ {0x1E19, "e->"}, /* 798 */ {0x1E1A, "E-?"}, /* 799 */ {0x1E1B, "e-?"}, /* 800 */ {0x1E1C, "E,("}, /* 801 */ {0x1E1D, "e,("}, /* 802 */ {0x1E1E, "F."}, /* 803 */ {0x1E1F, "f."}, /* 804 */ {0x1E20, "G-"}, /* 805 */ {0x1E21, "g-"}, /* 806 */ {0x1E22, "H."}, /* 807 */ {0x1E23, "h."}, /* 808 */ {0x1E24, "H-."}, /* 809 */ {0x1E25, "h-."}, /* 810 */ {0x1E26, "H:"}, /* 811 */ {0x1E27, "h:"}, /* 812 */ {0x1E28, "H,"}, /* 813 */ {0x1E29, "h,"}, /* 814 */ {0x1E2A, "H-("}, /* 815 */ {0x1E2B, "h-("}, /* 816 */ {0x1E2C, "I-?"}, /* 817 */ {0x1E2D, "i-?"}, /* 818 */ {0x1E2E, "I:'"}, /* 819 */ {0x1E2F, "i:'"}, /* 820 */ {0x1E30, "K'"}, /* 821 */ {0x1E31, "k'"}, /* 822 */ {0x1E32, "K-."}, /* 823 */ {0x1E33, "k-."}, /* 824 */ {0x1E34, "K_"}, /* 825 */ {0x1E35, "k_"}, /* 826 */ {0x1E36, "L-."}, /* 827 */ {0x1E37, "l-."}, /* 828 */ {0x1E3A, "L_"}, /* 829 */ {0x1E3B, "l_"}, /* 830 */ {0x1E3C, "L->"}, /* 831 */ {0x1E3D, "l->"}, /* 832 */ {0x1E3E, "M'"}, /* 833 */ {0x1E3F, "m'"}, /* 834 */ {0x1E40, "M."}, /* 835 */ {0x1E41, "m."}, /* 836 */ {0x1E42, "M-."}, /* 837 */ {0x1E43, "m-."}, /* 838 */ {0x1E44, "N."}, /* 839 */ {0x1E45, "n."}, /* 840 */ {0x1E46, "N-."}, /* 841 */ {0x1E47, "n-."}, /* 842 */ {0x1E48, "N_"}, /* 843 */ {0x1E49, "n_"}, /* 844 */ {0x1E4A, "N->"}, /* 845 */ {0x1E4B, "n->"}, /* 846 */ {0x1E4C, "O?'"}, /* 847 */ {0x1E4D, "o?'"}, /* 848 */ {0x1E4E, "O?:"}, /* 849 */ {0x1E4F, "o?:"}, /* 850 */ {0x1E50, "O-!"}, /* 851 */ {0x1E51, "o-!"}, /* 852 */ {0x1E52, "O-'"}, /* 853 */ {0x1E53, "o-'"}, /* 854 */ {0x1E54, "P'"}, /* 855 */ {0x1E55, "p'"}, /* 856 */ {0x1E56, "P."}, /* 857 */ {0x1E57, "p."}, /* 858 */ {0x1E58, "R."}, /* 859 */ {0x1E59, "r."}, /* 860 */ {0x1E5A, "R-."}, /* 861 */ {0x1E5B, "r-."}, /* 862 */ {0x1E5E, "R_"}, /* 863 */ {0x1E5F, "r_"}, /* 864 */ {0x1E60, "S."}, /* 865 */ {0x1E61, "s."}, /* 866 */ {0x1E62, "S-."}, /* 867 */ {0x1E63, "s-."}, /* 868 */ {0x1E64, "S'."}, /* 869 */ {0x1E65, "s'."}, /* 870 */ {0x1E66, "S<."}, /* 871 */ {0x1E67, "s<."}, /* 872 */ {0x1E6A, "T."}, /* 873 */ {0x1E6B, "t."}, /* 874 */ {0x1E6C, "T-."}, /* 875 */ {0x1E6D, "t-."}, /* 876 */ {0x1E6E, "T_"}, /* 877 */ {0x1E6F, "t_"}, /* 878 */ {0x1E70, "T->"}, /* 879 */ {0x1E71, "t->"}, /* 880 */ {0x1E74, "U-?"}, /* 881 */ {0x1E75, "u-?"}, /* 882 */ {0x1E76, "U->"}, /* 883 */ {0x1E77, "u->"}, /* 884 */ {0x1E78, "U?'"}, /* 885 */ {0x1E79, "u?'"}, /* 886 */ {0x1E7A, "U-:"}, /* 887 */ {0x1E7B, "u-:"}, /* 888 */ {0x1E7C, "V?"}, /* 889 */ {0x1E7D, "v?"}, /* 890 */ {0x1E7E, "V-."}, /* 891 */ {0x1E7F, "v-."}, /* 892 */ {0x1E80, "W!"}, /* 893 */ {0x1E81, "w!"}, /* 894 */ {0x1E82, "W'"}, /* 895 */ {0x1E83, "w'"}, /* 896 */ {0x1E84, "W:"}, /* 897 */ {0x1E85, "w:"}, /* 898 */ {0x1E86, "W."}, /* 899 */ {0x1E87, "w."}, /* 900 */ {0x1E88, "W-."}, /* 901 */ {0x1E89, "w-."}, /* 902 */ {0x1E8A, "X."}, /* 903 */ {0x1E8B, "x."}, /* 904 */ {0x1E8C, "X:"}, /* 905 */ {0x1E8D, "x:"}, /* 906 */ {0x1E8E, "Y."}, /* 907 */ {0x1E8F, "y."}, /* 908 */ {0x1E90, "Z>"}, /* 909 */ {0x1E91, "z>"}, /* 910 */ {0x1E92, "Z-."}, /* 911 */ {0x1E93, "z-."}, /* 912 */ {0x1E94, "Z_"}, /* 913 */ {0x1E95, "z_"}, /* 914 */ {0x1EA0, "A-."}, /* 915 */ {0x1EA1, "a-."}, /* 916 */ {0x1EA2, "A2"}, /* 917 */ {0x1EA3, "a2"}, /* 918 */ {0x1EA4, "A>'"}, /* 919 */ {0x1EA5, "a>'"}, /* 920 */ {0x1EA6, "A>!"}, /* 921 */ {0x1EA7, "a>!"}, /* 922 */ {0x1EA8, "A>2"}, /* 923 */ {0x1EA9, "a>2"}, /* 924 */ {0x1EAA, "A>?"}, /* 925 */ {0x1EAB, "a>?"}, /* 926 */ {0x1EAE, "A('"}, /* 927 */ {0x1EAF, "a('"}, /* 928 */ {0x1EB0, "A(!"}, /* 929 */ {0x1EB1, "a(!"}, /* 930 */ {0x1EB2, "A(2"}, /* 931 */ {0x1EB3, "a(2"}, /* 932 */ {0x1EB4, "A(?"}, /* 933 */ {0x1EB5, "a(?"}, /* 934 */ {0x1EB8, "E-."}, /* 935 */ {0x1EB9, "e-."}, /* 936 */ {0x1EBA, "E2"}, /* 937 */ {0x1EBB, "e2"}, /* 938 */ {0x1EBC, "E?"}, /* 939 */ {0x1EBD, "e?"}, /* 940 */ {0x1EBE, "E>'"}, /* 941 */ {0x1EBF, "e>'"}, /* 942 */ {0x1EC0, "E>!"}, /* 943 */ {0x1EC1, "e>!"}, /* 944 */ {0x1EC2, "E>2"}, /* 945 */ {0x1EC3, "e>2"}, /* 946 */ {0x1EC4, "E>?"}, /* 947 */ {0x1EC5, "e>?"}, /* 948 */ {0x1EC8, "I2"}, /* 949 */ {0x1EC9, "i2"}, /* 950 */ {0x1ECA, "I-."}, /* 951 */ {0x1ECB, "i-."}, /* 952 */ {0x1ECC, "O-."}, /* 953 */ {0x1ECD, "o-."}, /* 954 */ {0x1ECE, "O2"}, /* 955 */ {0x1ECF, "o2"}, /* 956 */ {0x1ED0, "O>'"}, /* 957 */ {0x1ED1, "o>'"}, /* 958 */ {0x1ED2, "O>!"}, /* 959 */ {0x1ED3, "o>!"}, /* 960 */ {0x1ED4, "O>2"}, /* 961 */ {0x1ED5, "o>2"}, /* 962 */ {0x1ED6, "O>?"}, /* 963 */ {0x1ED7, "o>?"}, /* 964 */ {0x1EDA, "O9'"}, /* 965 */ {0x1EDB, "o9'"}, /* 966 */ {0x1EDC, "O9!"}, /* 967 */ {0x1EDD, "o9!"}, /* 968 */ {0x1EDE, "O92"}, /* 969 */ {0x1EDF, "o92"}, /* 970 */ {0x1EE0, "O9?"}, /* 971 */ {0x1EE1, "o9?"}, /* 972 */ {0x1EE4, "U-."}, /* 973 */ {0x1EE5, "u-."}, /* 974 */ {0x1EE6, "U2"}, /* 975 */ {0x1EE7, "u2"}, /* 976 */ {0x1EE8, "U9'"}, /* 977 */ {0x1EE9, "u9'"}, /* 978 */ {0x1EEA, "U9!"}, /* 979 */ {0x1EEB, "u9!"}, /* 980 */ {0x1EEC, "U92"}, /* 981 */ {0x1EED, "u92"}, /* 982 */ {0x1EEE, "U9?"}, /* 983 */ {0x1EEF, "u9?"}, /* 984 */ {0x1EF2, "Y!"}, /* 985 */ {0x1EF3, "y!"}, /* 986 */ {0x1EF4, "Y-."}, /* 987 */ {0x1EF5, "y-."}, /* 988 */ {0x1EF6, "Y2"}, /* 989 */ {0x1EF7, "y2"}, /* 990 */ {0x1EF8, "Y?"}, /* 991 */ {0x1EF9, "y?"}, /* 992 */ {0x1F00, "a*,"}, /* 993 */ {0x1F01, "a*;"}, /* 994 */ {0x1F08, "A*,"}, /* 995 */ {0x1F09, "A*;"}, /* 996 */ {0x1F10, "e*,"}, /* 997 */ {0x1F11, "e*;"}, /* 998 */ {0x1F18, "E*,"}, /* 999 */ {0x1F19, "E*;"}, /* 1000 */ {0x1F20, "y*,"}, /* 1001 */ {0x1F21, "y*;"}, /* 1002 */ {0x1F28, "Y*,"}, /* 1003 */ {0x1F29, "Y*;"}, /* 1004 */ {0x1F30, "i*,"}, /* 1005 */ {0x1F31, "i*;"}, /* 1006 */ {0x1F38, "I*,"}, /* 1007 */ {0x1F39, "I*;"}, /* 1008 */ {0x1F40, "o*,"}, /* 1009 */ {0x1F41, "o*;"}, /* 1010 */ {0x1F48, "O*,"}, /* 1011 */ {0x1F49, "O*;"}, /* 1012 */ {0x1F50, "u*,"}, /* 1013 */ {0x1F51, "u*;"}, /* 1014 */ {0x1F59, "U*;"}, /* 1015 */ {0x1F60, "w*,"}, /* 1016 */ {0x1F61, "w*;"}, /* 1017 */ {0x1F68, "W*,"}, /* 1018 */ {0x1F69, "W*;"}, /* 1019 */ {0x1F70, "a*!"}, /* 1020 */ {0x1F71, "a*'"}, /* 1021 */ {0x1F72, "e*!"}, /* 1022 */ {0x1F73, "e*'"}, /* 1023 */ {0x1F74, "y*!"}, /* 1024 */ {0x1F75, "y*'"}, /* 1025 */ {0x1F76, "i*!"}, /* 1026 */ {0x1F77, "i*'"}, /* 1027 */ {0x1F78, "o*!"}, /* 1028 */ {0x1F79, "o*'"}, /* 1029 */ {0x1F7A, "u*!"}, /* 1030 */ {0x1F7B, "u*'"}, /* 1031 */ {0x1F7C, "w*!"}, /* 1032 */ {0x1F7D, "w*'"}, /* 1033 */ {0x1FB0, "a*("}, /* 1034 */ {0x1FB1, "a*-"}, /* 1035 */ {0x1FB3, "a*j"}, /* 1036 */ {0x1FB6, "a*?"}, /* 1037 */ {0x1FB8, "A*("}, /* 1038 */ {0x1FB9, "A*-"}, /* 1039 */ {0x1FBA, "A*!"}, /* 1040 */ {0x1FBB, "A*'"}, /* 1041 */ {0x1FBC, "A*J"}, /* 1042 */ {0x1FBD, ")*"}, /* 1043 */ {0x1FBE, "J3"}, /* 1044 */ {0x1FBF, ",,"}, /* 1045 */ {0x1FC0, "?*"}, /* 1046 */ {0x1FC1, "?:"}, /* 1047 */ {0x1FC3, "y*j"}, /* 1048 */ {0x1FC6, "y*?"}, /* 1049 */ {0x1FC9, "E*'"}, /* 1050 */ {0x1FCA, "Y*!"}, /* 1051 */ {0x1FCB, "Y*'"}, /* 1052 */ {0x1FCC, "Y*J"}, /* 1053 */ {0x1FCD, ",!"}, /* 1054 */ {0x1FCE, ",'"}, /* 1055 */ {0x1FCF, "?,"}, /* 1056 */ {0x1FD0, "i*("}, /* 1057 */ {0x1FD1, "i*-"}, /* 1058 */ {0x1FD6, "i*?"}, /* 1059 */ {0x1FD8, "I*("}, /* 1060 */ {0x1FD9, "I*-"}, /* 1061 */ {0x1FDA, "I*!"}, /* 1062 */ {0x1FDB, "I*'"}, /* 1063 */ {0x1FDD, ";!"}, /* 1064 */ {0x1FDE, ";'"}, /* 1065 */ {0x1FDF, "?;"}, /* 1066 */ {0x1FE0, "u*("}, /* 1067 */ {0x1FE1, "u*-"}, /* 1068 */ {0x1FE4, "r*,"}, /* 1069 */ {0x1FE5, "r*;"}, /* 1070 */ {0x1FE6, "u*?"}, /* 1071 */ {0x1FE8, "U*("}, /* 1072 */ {0x1FE9, "U*-"}, /* 1073 */ {0x1FEA, "U*!"}, /* 1074 */ {0x1FEB, "U*'"}, /* 1075 */ {0x1FEC, "R*;"}, /* 1076 */ {0x1FED, "!:"}, /* 1077 */ {0x1FEE, ":'"}, /* 1078 */ {0x1FEF, "!*"}, /* 1079 */ {0x1FF3, "w*j"}, /* 1080 */ {0x1FF6, "w*?"}, /* 1081 */ {0x1FF8, "O*!"}, /* 1082 */ {0x1FF9, "O*'"}, /* 1083 */ {0x1FFA, "W*!"}, /* 1084 */ {0x1FFB, "W*'"}, /* 1085 */ {0x1FFC, "W*J"}, /* 1086 */ {0x1FFD, "/*"}, /* 1087 */ {0x1FFE, ";;"}, /* 1088 */ {0x2002, "1N"}, /* 1089 */ {0x2003, "1M"}, /* 1090 */ {0x2004, "3M"}, /* 1091 */ {0x2005, "4M"}, /* 1092 */ {0x2006, "6M"}, /* 1093 */ {0x2009, "1T"}, /* 1094 */ {0x200A, "1H"}, /* 1095 */ {0x200E, "LR"}, /* 1096 */ {0x200F, "RL"}, /* 1097 */ {0x2010, "-1"}, /* 1098 */ {0x2013, "-N"}, /* 1099 */ {0x2014, "-M"}, /* 1100 */ {0x2015, "-3"}, /* 1101 */ {0x2016, "!2"}, /* 1102 */ {0x2017, "=2"}, /* 1103 */ {0x2018, "'6"}, /* 1104 */ {0x2019, "'9"}, /* 1105 */ {0x201A, ".9"}, /* 1106 */ {0x201B, "9'"}, /* 1107 */ {0x201C, "\"6"}, /* 1108 */ {0x201D, "\"9"}, /* 1109 */ {0x201E, ":9"}, /* 1110 */ {0x201F, "9\""}, /* 1111 */ {0x2020, "/-"}, /* 1112 */ {0x2021, "/="}, /* 1113 */ {0x2022, "sb"}, /* 1114 */ {0x2023, "3b"}, /* 1115 */ {0x2025, ".."}, /* 1116 */ {0x2026, ".3"}, /* 1117 */ {0x2027, ".-"}, /* 1118 */ {0x2030, "%0"}, /* 1119 */ {0x2032, "1'"}, /* 1120 */ {0x2033, "2'"}, /* 1121 */ {0x2034, "3'"}, /* 1122 */ {0x2035, "1\""}, /* 1123 */ {0x2036, "2\""}, /* 1124 */ {0x2037, "3\""}, /* 1125 */ {0x2038, "Ca"}, /* 1126 */ {0x2039, "<1"}, /* 1127 */ {0x203A, ">1"}, /* 1128 */ {0x203B, ":X"}, /* 1129 */ {0x203C, "!*2"}, /* 1130 */ {0x203E, "'-"}, /* 1131 */ {0x2043, "-b"}, /* 1132 */ {0x2044, "/f"}, /* 1133 */ {0x2070, "0S"}, /* 1134 */ {0x2074, "4S"}, /* 1135 */ {0x2075, "5S"}, /* 1136 */ {0x2076, "6S"}, /* 1137 */ {0x2077, "7S"}, /* 1138 */ {0x2078, "8S"}, /* 1139 */ {0x2079, "9S"}, /* 1140 */ {0x207A, "+S"}, /* 1141 */ {0x207B, "-S"}, /* 1142 */ {0x207C, "=S"}, /* 1143 */ {0x207D, "(S"}, /* 1144 */ {0x207E, ")S"}, /* 1145 */ {0x207F, "nS"}, /* 1146 */ {0x2080, "0s"}, /* 1147 */ {0x2081, "1s"}, /* 1148 */ {0x2082, "2s"}, /* 1149 */ {0x2083, "3s"}, /* 1150 */ {0x2084, "4s"}, /* 1151 */ {0x2085, "5s"}, /* 1152 */ {0x2086, "6s"}, /* 1153 */ {0x2087, "7s"}, /* 1154 */ {0x2088, "8s"}, /* 1155 */ {0x2089, "9s"}, /* 1156 */ {0x208A, "+s"}, /* 1157 */ {0x208B, "-s"}, /* 1158 */ {0x208C, "=s"}, /* 1159 */ {0x208D, "(s"}, /* 1160 */ {0x208E, ")s"}, /* 1161 */ {0x20A3, "Ff"}, /* 1162 */ {0x20A4, "Li"}, /* 1163 */ {0x20A7, "Pt"}, /* 1164 */ {0x20A9, "W="}, /* 1165 */ {0x20AA, "NSh"}, /* 1166 */ {0x20AC, "Eu"}, /* 1167 */ {0x20D1, "\"7"}, /* 1168 */ {0x2103, "oC"}, /* 1169 */ {0x2105, "co"}, /* 1170 */ {0x2109, "oF"}, /* 1171 */ {0x2116, "N0"}, /* 1172 */ {0x2117, "PO"}, /* 1173 */ {0x211E, "Rx"}, /* 1174 */ {0x2120, "SM"}, /* 1175 */ {0x2122, "TM"}, /* 1176 */ {0x2126, "Om"}, /* 1177 */ {0x212B, "AO"}, /* 1178 */ {0x212E, "Est"}, /* 1179 */ {0x2153, "13"}, /* 1180 */ {0x2154, "23"}, /* 1181 */ {0x2155, "15"}, /* 1182 */ {0x2156, "25"}, /* 1183 */ {0x2157, "35"}, /* 1184 */ {0x2158, "45"}, /* 1185 */ {0x2159, "16"}, /* 1186 */ {0x215A, "56"}, /* 1187 */ {0x215B, "18"}, /* 1188 */ {0x215C, "38"}, /* 1189 */ {0x215D, "58"}, /* 1190 */ {0x215E, "78"}, /* 1191 */ {0x2160, "1R"}, /* 1192 */ {0x2161, "2R"}, /* 1193 */ {0x2162, "3R"}, /* 1194 */ {0x2163, "4R"}, /* 1195 */ {0x2164, "5R"}, /* 1196 */ {0x2165, "6R"}, /* 1197 */ {0x2166, "7R"}, /* 1198 */ {0x2167, "8R"}, /* 1199 */ {0x2168, "9R"}, /* 1200 */ {0x2169, "aR"}, /* 1201 */ {0x216A, "bR"}, /* 1202 */ {0x216B, "cR"}, /* 1203 */ {0x216C, "50R"}, /* 1204 */ {0x2170, "1r"}, /* 1205 */ {0x2171, "2r"}, /* 1206 */ {0x2172, "3r"}, /* 1207 */ {0x2173, "4r"}, /* 1208 */ {0x2174, "5r"}, /* 1209 */ {0x2175, "6r"}, /* 1210 */ {0x2176, "7r"}, /* 1211 */ {0x2177, "8r"}, /* 1212 */ {0x2178, "9r"}, /* 1213 */ {0x2179, "ar"}, /* 1214 */ {0x217A, "br"}, /* 1215 */ {0x217B, "cr"}, /* 1216 */ {0x217C, "50r"}, /* 1217 */ {0x2190, "<-"}, /* 1218 */ {0x2191, "-!"}, /* 1219 */ {0x2192, "->"}, /* 1220 */ {0x2193, "-v"}, /* 1221 */ {0x2194, "<>"}, /* 1222 */ {0x2195, "UD"}, /* 1223 */ {0x2196, ""}, /* 1225 */ {0x2198, "!!>"}, /* 1226 */ {0x2199, "V"}, /* 1229 */ {0x21D0, "<="}, /* 1230 */ {0x21D2, "=>"}, /* 1231 */ {0x21D4, "=="}, /* 1232 */ {0x2200, "FA"}, /* 1233 */ {0x2202, "dP"}, /* 1234 */ {0x2203, "TE"}, /* 1235 */ {0x2205, "/0"}, /* 1236 */ {0x2206, "DE"}, /* 1237 */ {0x2207, "NB"}, /* 1238 */ {0x2208, "(-"}, /* 1239 */ {0x220B, "-)"}, /* 1240 */ {0x220E, "FP"}, /* 1241 */ {0x220F, "*P"}, /* 1242 */ {0x2211, "+Z"}, /* 1243 */ {0x2212, "-2"}, /* 1244 */ {0x2213, "-+"}, /* 1245 */ {0x2214, ".+"}, /* 1246 */ {0x2217, "*-"}, /* 1247 */ {0x2218, "Ob"}, /* 1248 */ {0x2219, "Sb"}, /* 1249 */ {0x221A, "RT"}, /* 1250 */ {0x221D, "0("}, /* 1251 */ {0x221E, "00"}, /* 1252 */ {0x221F, "-L"}, /* 1253 */ {0x2220, "-V"}, /* 1254 */ {0x2225, "PP"}, /* 1255 */ {0x2227, "AN"}, /* 1256 */ {0x2228, "OR"}, /* 1257 */ {0x2229, "(U"}, /* 1258 */ {0x222A, ")U"}, /* 1259 */ {0x222B, "In"}, /* 1260 */ {0x222C, "DI"}, /* 1261 */ {0x222E, "Io"}, /* 1262 */ {0x2234, ".:"}, /* 1263 */ {0x2235, ":."}, /* 1264 */ {0x2236, ":R"}, /* 1265 */ {0x2237, "::"}, /* 1266 */ {0x223C, "?1"}, /* 1267 */ {0x223E, "CG"}, /* 1268 */ {0x2243, "?-"}, /* 1269 */ {0x2245, "?="}, /* 1270 */ {0x2248, "?2"}, /* 1271 */ {0x224C, "=?"}, /* 1272 */ {0x2253, "HI"}, /* 1273 */ {0x2260, "!="}, /* 1274 */ {0x2261, "=3"}, /* 1275 */ {0x2264, "=<"}, /* 1276 */ {0x2265, ">="}, /* 1277 */ {0x226A, "<*"}, /* 1278 */ {0x226B, "*>"}, /* 1279 */ {0x226E, "!<"}, /* 1280 */ {0x226F, "!>"}, /* 1281 */ {0x2282, "(C"}, /* 1282 */ {0x2283, ")C"}, /* 1283 */ {0x2286, "(_"}, /* 1284 */ {0x2287, ")_"}, /* 1285 */ {0x2299, "0."}, /* 1286 */ {0x229A, "02"}, /* 1287 */ {0x22A5, "-T"}, /* 1288 */ {0x22C5, ".P"}, /* 1289 */ {0x22EE, ":3"}, /* 1290 */ {0x2302, "Eh"}, /* 1291 */ {0x2308, "<7"}, /* 1292 */ {0x2309, ">7"}, /* 1293 */ {0x230A, "7<"}, /* 1294 */ {0x230B, "7>"}, /* 1295 */ {0x2310, "NI"}, /* 1296 */ {0x2312, "(A"}, /* 1297 */ {0x2315, "TR"}, /* 1298 */ {0x2318, "88"}, /* 1299 */ {0x2320, "Iu"}, /* 1300 */ {0x2321, "Il"}, /* 1301 */ {0x2329, ""}, /* 1303 */ {0x2423, "Vs"}, /* 1304 */ {0x2440, "1h"}, /* 1305 */ {0x2441, "3h"}, /* 1306 */ {0x2442, "2h"}, /* 1307 */ {0x2443, "4h"}, /* 1308 */ {0x2446, "1j"}, /* 1309 */ {0x2447, "2j"}, /* 1310 */ {0x2448, "3j"}, /* 1311 */ {0x2449, "4j"}, /* 1312 */ {0x2460, "1-o"}, /* 1313 */ {0x2461, "2-o"}, /* 1314 */ {0x2462, "3-o"}, /* 1315 */ {0x2463, "4-o"}, /* 1316 */ {0x2464, "5-o"}, /* 1317 */ {0x2465, "6-o"}, /* 1318 */ {0x2466, "7-o"}, /* 1319 */ {0x2467, "8-o"}, /* 1320 */ {0x2468, "9-o"}, /* 1321 */ {0x2474, "(1)"}, /* 1322 */ {0x2475, "(2)"}, /* 1323 */ {0x2476, "(3)"}, /* 1324 */ {0x2477, "(4)"}, /* 1325 */ {0x2478, "(5)"}, /* 1326 */ {0x2479, "(6)"}, /* 1327 */ {0x247A, "(7)"}, /* 1328 */ {0x247B, "(8)"}, /* 1329 */ {0x247C, "(9)"}, /* 1330 */ {0x2488, "1."}, /* 1331 */ {0x2489, "2."}, /* 1332 */ {0x248A, "3."}, /* 1333 */ {0x248B, "4."}, /* 1334 */ {0x248C, "5."}, /* 1335 */ {0x248D, "6."}, /* 1336 */ {0x248E, "7."}, /* 1337 */ {0x248F, "8."}, /* 1338 */ {0x2490, "9."}, /* 1339 */ {0x2491, "10."}, /* 1340 */ {0x2492, "11."}, /* 1341 */ {0x2493, "12."}, /* 1342 */ {0x2494, "13."}, /* 1343 */ {0x2495, "14."}, /* 1344 */ {0x2496, "15."}, /* 1345 */ {0x2497, "16."}, /* 1346 */ {0x2498, "17."}, /* 1347 */ {0x2499, "18."}, /* 1348 */ {0x249A, "19."}, /* 1349 */ {0x249B, "20."}, /* 1350 */ {0x249C, "(a)"}, /* 1351 */ {0x249D, "(b)"}, /* 1352 */ {0x249E, "(c)"}, /* 1353 */ {0x249F, "(d)"}, /* 1354 */ {0x24A0, "(e)"}, /* 1355 */ {0x24A1, "(f)"}, /* 1356 */ {0x24A2, "(g)"}, /* 1357 */ {0x24A3, "(h)"}, /* 1358 */ {0x24A4, "(i)"}, /* 1359 */ {0x24A5, "(j)"}, /* 1360 */ {0x24A6, "(k)"}, /* 1361 */ {0x24A7, "(l)"}, /* 1362 */ {0x24A8, "(m)"}, /* 1363 */ {0x24A9, "(n)"}, /* 1364 */ {0x24AA, "(o)"}, /* 1365 */ {0x24AB, "(p)"}, /* 1366 */ {0x24AC, "(q)"}, /* 1367 */ {0x24AD, "(r)"}, /* 1368 */ {0x24AE, "(s)"}, /* 1369 */ {0x24AF, "(t)"}, /* 1370 */ {0x24B0, "(u)"}, /* 1371 */ {0x24B1, "(v)"}, /* 1372 */ {0x24B2, "(w)"}, /* 1373 */ {0x24B3, "(x)"}, /* 1374 */ {0x24B4, "(y)"}, /* 1375 */ {0x24B5, "(z)"}, /* 1376 */ {0x24B6, "A-o"}, /* 1377 */ {0x24B7, "B-o"}, /* 1378 */ {0x24B8, "C-o"}, /* 1379 */ {0x24B9, "D-o"}, /* 1380 */ {0x24BA, "E-o"}, /* 1381 */ {0x24BB, "F-o"}, /* 1382 */ {0x24BC, "G-o"}, /* 1383 */ {0x24BD, "H-o"}, /* 1384 */ {0x24BE, "I-o"}, /* 1385 */ {0x24BF, "J-o"}, /* 1386 */ {0x24C0, "K-o"}, /* 1387 */ {0x24C1, "L-o"}, /* 1388 */ {0x24C2, "M-o"}, /* 1389 */ {0x24C3, "N-o"}, /* 1390 */ {0x24C4, "O-o"}, /* 1391 */ {0x24C5, "P-o"}, /* 1392 */ {0x24C6, "Q-o"}, /* 1393 */ {0x24C7, "R-o"}, /* 1394 */ {0x24C8, "S-o"}, /* 1395 */ {0x24C9, "T-o"}, /* 1396 */ {0x24CA, "U-o"}, /* 1397 */ {0x24CB, "V-o"}, /* 1398 */ {0x24CC, "W-o"}, /* 1399 */ {0x24CD, "X-o"}, /* 1400 */ {0x24CE, "Y-o"}, /* 1401 */ {0x24CF, "Z-o"}, /* 1402 */ {0x24D0, "a-o"}, /* 1403 */ {0x24D1, "b-o"}, /* 1404 */ {0x24D2, "c-o"}, /* 1405 */ {0x24D3, "d-o"}, /* 1406 */ {0x24D4, "e-o"}, /* 1407 */ {0x24D5, "f-o"}, /* 1408 */ {0x24D6, "g-o"}, /* 1409 */ {0x24D7, "h-o"}, /* 1410 */ {0x24D8, "i-o"}, /* 1411 */ {0x24D9, "j-o"}, /* 1412 */ {0x24DA, "k-o"}, /* 1413 */ {0x24DB, "l-o"}, /* 1414 */ {0x24DC, "m-o"}, /* 1415 */ {0x24DD, "n-o"}, /* 1416 */ {0x24DE, "o-o"}, /* 1417 */ {0x24DF, "p-o"}, /* 1418 */ {0x24E0, "q-o"}, /* 1419 */ {0x24E1, "r-o"}, /* 1420 */ {0x24E2, "s-o"}, /* 1421 */ {0x24E3, "t-o"}, /* 1422 */ {0x24E4, "u-o"}, /* 1423 */ {0x24E5, "v-o"}, /* 1424 */ {0x24E6, "w-o"}, /* 1425 */ {0x24E7, "x-o"}, /* 1426 */ {0x24E8, "y-o"}, /* 1427 */ {0x24E9, "z-o"}, /* 1428 */ {0x24EA, "0-o"}, /* 1429 */ {0x2500, "hh"}, /* 1430 */ {0x2501, "HH-"}, /* 1431 */ {0x2502, "vv"}, /* 1432 */ {0x2503, "VV-"}, /* 1433 */ {0x2504, "3-"}, /* 1434 */ {0x2505, "3_"}, /* 1435 */ {0x2506, "3!"}, /* 1436 */ {0x2507, "3/"}, /* 1437 */ {0x2508, "4-"}, /* 1438 */ {0x2509, "4_"}, /* 1439 */ {0x250A, "4!"}, /* 1440 */ {0x250B, "4/"}, /* 1441 */ {0x250C, "dr"}, /* 1442 */ {0x250D, "dR-"}, /* 1443 */ {0x250E, "Dr-"}, /* 1444 */ {0x250F, "DR-"}, /* 1445 */ {0x2510, "dl"}, /* 1446 */ {0x2511, "dL-"}, /* 1447 */ {0x2512, "Dl-"}, /* 1448 */ {0x2513, "LD-"}, /* 1449 */ {0x2514, "ur"}, /* 1450 */ {0x2515, "uR-"}, /* 1451 */ {0x2516, "Ur-"}, /* 1452 */ {0x2517, "UR-"}, /* 1453 */ {0x2518, "ul"}, /* 1454 */ {0x2519, "uL-"}, /* 1455 */ {0x251A, "Ul-"}, /* 1456 */ {0x251B, "UL-"}, /* 1457 */ {0x251C, "vr"}, /* 1458 */ {0x251D, "vR-"}, /* 1459 */ {0x251E, "Udr"}, /* 1460 */ {0x251F, "uDr"}, /* 1461 */ {0x2520, "Vr-"}, /* 1462 */ {0x2521, "UdR"}, /* 1463 */ {0x2522, "uDR"}, /* 1464 */ {0x2523, "VR-"}, /* 1465 */ {0x2524, "vl"}, /* 1466 */ {0x2525, "vL-"}, /* 1467 */ {0x2526, "Udl"}, /* 1468 */ {0x2527, "uDl"}, /* 1469 */ {0x2528, "Vl-"}, /* 1470 */ {0x2529, "UdL"}, /* 1471 */ {0x252A, "uDL"}, /* 1472 */ {0x252B, "VL-"}, /* 1473 */ {0x252C, "dh"}, /* 1474 */ {0x252D, "dLr"}, /* 1475 */ {0x252E, "dlR"}, /* 1476 */ {0x252F, "dH-"}, /* 1477 */ {0x2530, "Dh-"}, /* 1478 */ {0x2531, "DLr"}, /* 1479 */ {0x2532, "DlR"}, /* 1480 */ {0x2533, "DH-"}, /* 1481 */ {0x2534, "uh"}, /* 1482 */ {0x2535, "uLr"}, /* 1483 */ {0x2536, "ulR"}, /* 1484 */ {0x2537, "uH-"}, /* 1485 */ {0x2538, "Uh-"}, /* 1486 */ {0x2539, "ULr"}, /* 1487 */ {0x253A, "UlR"}, /* 1488 */ {0x253B, "UH-"}, /* 1489 */ {0x253C, "vh"}, /* 1490 */ {0x253D, "vLr"}, /* 1491 */ {0x253E, "vlR"}, /* 1492 */ {0x253F, "vH-"}, /* 1493 */ {0x2540, "Udh"}, /* 1494 */ {0x2541, "uDh"}, /* 1495 */ {0x2542, "Vh-"}, /* 1496 */ {0x2547, "UdH"}, /* 1497 */ {0x2548, "uDH"}, /* 1498 */ {0x2549, "VLr"}, /* 1499 */ {0x254A, "VlR"}, /* 1500 */ {0x254B, "VH-"}, /* 1501 */ {0x2550, "HH"}, /* 1502 */ {0x2551, "VV"}, /* 1503 */ {0x2552, "dR"}, /* 1504 */ {0x2553, "Dr"}, /* 1505 */ {0x2554, "DR"}, /* 1506 */ {0x2555, "dL"}, /* 1507 */ {0x2556, "Dl"}, /* 1508 */ {0x2557, "LD"}, /* 1509 */ {0x2558, "uR"}, /* 1510 */ {0x2559, "Ur"}, /* 1511 */ {0x255A, "UR"}, /* 1512 */ {0x255B, "uL"}, /* 1513 */ {0x255C, "Ul"}, /* 1514 */ {0x255D, "UL"}, /* 1515 */ {0x255E, "vR"}, /* 1516 */ {0x255F, "Vr"}, /* 1517 */ {0x2560, "VR"}, /* 1518 */ {0x2561, "vL"}, /* 1519 */ {0x2562, "Vl"}, /* 1520 */ {0x2563, "VL"}, /* 1521 */ {0x2564, "dH"}, /* 1522 */ {0x2565, "Dh"}, /* 1523 */ {0x2566, "DH"}, /* 1524 */ {0x2567, "uH"}, /* 1525 */ {0x2568, "Uh"}, /* 1526 */ {0x2569, "UH"}, /* 1527 */ {0x256A, "vH"}, /* 1528 */ {0x256B, "Vh"}, /* 1529 */ {0x256C, "VH"}, /* 1530 */ {0x2571, "FD"}, /* 1531 */ {0x2572, "BD"}, /* 1532 */ {0x2580, "TB"}, /* 1533 */ {0x2584, "LB"}, /* 1534 */ {0x2588, "FB"}, /* 1535 */ {0x258C, "lB"}, /* 1536 */ {0x2590, "RB"}, /* 1537 */ {0x2591, ".S"}, /* 1538 */ {0x2592, ":S"}, /* 1539 */ {0x2593, "?S"}, /* 1540 */ {0x25A0, "fS"}, /* 1541 */ {0x25A1, "OS"}, /* 1542 */ {0x25A2, "RO"}, /* 1543 */ {0x25A3, "Rr"}, /* 1544 */ {0x25A4, "RF"}, /* 1545 */ {0x25A5, "RY"}, /* 1546 */ {0x25A6, "RH"}, /* 1547 */ {0x25A7, "RZ"}, /* 1548 */ {0x25A8, "RK"}, /* 1549 */ {0x25A9, "RX"}, /* 1550 */ {0x25AA, "sB"}, /* 1551 */ {0x25AC, "SR"}, /* 1552 */ {0x25AD, "Or"}, /* 1553 */ {0x25B2, "UT"}, /* 1554 */ {0x25B3, "uT"}, /* 1555 */ {0x25B7, "Tr"}, /* 1556 */ {0x25BA, "PR"}, /* 1557 */ {0x25BC, "Dt"}, /* 1558 */ {0x25BD, "dT"}, /* 1559 */ {0x25C1, "Tl"}, /* 1560 */ {0x25C4, "PL"}, /* 1561 */ {0x25C6, "Db"}, /* 1562 */ {0x25C7, "Dw"}, /* 1563 */ {0x25CA, "LZ"}, /* 1564 */ {0x25CB, "0m"}, /* 1565 */ {0x25CE, "0o"}, /* 1566 */ {0x25CF, "0M"}, /* 1567 */ {0x25D0, "0L"}, /* 1568 */ {0x25D1, "0R"}, /* 1569 */ {0x25D8, "Sn"}, /* 1570 */ {0x25D9, "Ic"}, /* 1571 */ {0x25E2, "Fd"}, /* 1572 */ {0x25E3, "Bd"}, /* 1573 */ {0x25EF, "Ci"}, /* 1574 */ {0x2605, "*2"}, /* 1575 */ {0x2606, "*1"}, /* 1576 */ {0x260E, "TEL"}, /* 1577 */ {0x260F, "tel"}, /* 1578 */ {0x261C, "H"}, /* 1580 */ {0x263A, "0u"}, /* 1581 */ {0x263B, "0U"}, /* 1582 */ {0x263C, "SU"}, /* 1583 */ {0x2640, "Fm"}, /* 1584 */ {0x2642, "Ml"}, /* 1585 */ {0x2660, "cS"}, /* 1586 */ {0x2661, "cH"}, /* 1587 */ {0x2662, "cD"}, /* 1588 */ {0x2663, "cC"}, /* 1589 */ {0x2664, "cS-"}, /* 1590 */ {0x2665, "cH-"}, /* 1591 */ {0x2666, "cD-"}, /* 1592 */ {0x2667, "cC-"}, /* 1593 */ {0x2669, "Md"}, /* 1594 */ {0x266A, "M8"}, /* 1595 */ {0x266B, "M2"}, /* 1596 */ {0x266C, "M16"}, /* 1597 */ {0x266D, "Mb"}, /* 1598 */ {0x266E, "Mx"}, /* 1599 */ {0x266F, "MX"}, /* 1600 */ {0x2713, "OK"}, /* 1601 */ {0x2717, "XX"}, /* 1602 */ {0x2720, "-X"}, /* 1603 */ {0x3000, "IS"}, /* 1604 */ {0x3001, ",_"}, /* 1605 */ {0x3002, "._"}, /* 1606 */ {0x3003, "+\""}, /* 1607 */ {0x3004, "JIS"}, /* 1608 */ {0x3005, "*_"}, /* 1609 */ {0x3006, ";_"}, /* 1610 */ {0x3007, "0_"}, /* 1611 */ {0x300A, "<+"}, /* 1612 */ {0x300B, ">+"}, /* 1613 */ {0x300C, "<'"}, /* 1614 */ {0x300D, ">'"}, /* 1615 */ {0x300E, "<\""}, /* 1616 */ {0x300F, ">\""}, /* 1617 */ {0x3010, "(\""}, /* 1618 */ {0x3011, ")\""}, /* 1619 */ {0x3012, "=T"}, /* 1620 */ {0x3013, "=_"}, /* 1621 */ {0x3014, "('"}, /* 1622 */ {0x3015, ")'"}, /* 1623 */ {0x3016, "(I"}, /* 1624 */ {0x3017, ")I"}, /* 1625 */ {0x301C, "-?"}, /* 1626 */ {0x3041, "A5"}, /* 1627 */ {0x3042, "a5"}, /* 1628 */ {0x3043, "I5"}, /* 1629 */ {0x3044, "i5"}, /* 1630 */ {0x3045, "U5"}, /* 1631 */ {0x3046, "u5"}, /* 1632 */ {0x3047, "E5"}, /* 1633 */ {0x3048, "e5"}, /* 1634 */ {0x3049, "O5"}, /* 1635 */ {0x304A, "o5"}, /* 1636 */ {0x304B, "ka"}, /* 1637 */ {0x304C, "ga"}, /* 1638 */ {0x304D, "ki"}, /* 1639 */ {0x304E, "gi"}, /* 1640 */ {0x304F, "ku"}, /* 1641 */ {0x3050, "gu"}, /* 1642 */ {0x3051, "ke"}, /* 1643 */ {0x3052, "ge"}, /* 1644 */ {0x3053, "ko"}, /* 1645 */ {0x3054, "go"}, /* 1646 */ {0x3055, "sa"}, /* 1647 */ {0x3056, "za"}, /* 1648 */ {0x3057, "si"}, /* 1649 */ {0x3058, "zi"}, /* 1650 */ {0x3059, "su"}, /* 1651 */ {0x305A, "zu"}, /* 1652 */ {0x305B, "se"}, /* 1653 */ {0x305C, "ze"}, /* 1654 */ {0x305D, "so"}, /* 1655 */ {0x305E, "zo"}, /* 1656 */ {0x305F, "ta"}, /* 1657 */ {0x3060, "da"}, /* 1658 */ {0x3061, "ti"}, /* 1659 */ {0x3062, "di"}, /* 1660 */ {0x3063, "tU"}, /* 1661 */ {0x3064, "tu"}, /* 1662 */ {0x3065, "du"}, /* 1663 */ {0x3066, "te"}, /* 1664 */ {0x3067, "de"}, /* 1665 */ {0x3068, "to"}, /* 1666 */ {0x3069, "do"}, /* 1667 */ {0x306A, "na"}, /* 1668 */ {0x306B, "ni"}, /* 1669 */ {0x306C, "nu"}, /* 1670 */ {0x306D, "ne"}, /* 1671 */ {0x306E, "no"}, /* 1672 */ {0x306F, "ha"}, /* 1673 */ {0x3070, "ba"}, /* 1674 */ {0x3071, "pa"}, /* 1675 */ {0x3072, "hi"}, /* 1676 */ {0x3073, "bi"}, /* 1677 */ {0x3074, "pi"}, /* 1678 */ {0x3075, "hu"}, /* 1679 */ {0x3076, "bu"}, /* 1680 */ {0x3077, "pu"}, /* 1681 */ {0x3078, "he"}, /* 1682 */ {0x3079, "be"}, /* 1683 */ {0x307A, "pe"}, /* 1684 */ {0x307B, "ho"}, /* 1685 */ {0x307C, "bo"}, /* 1686 */ {0x307D, "po"}, /* 1687 */ {0x307E, "ma"}, /* 1688 */ {0x307F, "mi"}, /* 1689 */ {0x3080, "mu"}, /* 1690 */ {0x3081, "me"}, /* 1691 */ {0x3082, "mo"}, /* 1692 */ {0x3083, "yA"}, /* 1693 */ {0x3084, "ya"}, /* 1694 */ {0x3085, "yU"}, /* 1695 */ {0x3086, "yu"}, /* 1696 */ {0x3087, "yO"}, /* 1697 */ {0x3088, "yo"}, /* 1698 */ {0x3089, "ra"}, /* 1699 */ {0x308A, "ri"}, /* 1700 */ {0x308B, "ru"}, /* 1701 */ {0x308C, "re"}, /* 1702 */ {0x308D, "ro"}, /* 1703 */ {0x308E, "wA"}, /* 1704 */ {0x308F, "wa"}, /* 1705 */ {0x3090, "wi"}, /* 1706 */ {0x3091, "we"}, /* 1707 */ {0x3092, "wo"}, /* 1708 */ {0x3093, "n5"}, /* 1709 */ {0x3094, "vu"}, /* 1710 */ {0x309B, "\"5"}, /* 1711 */ {0x309C, "05"}, /* 1712 */ {0x309D, "*5"}, /* 1713 */ {0x309E, "+5"}, /* 1714 */ {0x30A1, "a6"}, /* 1715 */ {0x30A2, "A6"}, /* 1716 */ {0x30A3, "i6"}, /* 1717 */ {0x30A4, "I6"}, /* 1718 */ {0x30A5, "u6"}, /* 1719 */ {0x30A6, "U6"}, /* 1720 */ {0x30A7, "e6"}, /* 1721 */ {0x30A8, "E6"}, /* 1722 */ {0x30A9, "o6"}, /* 1723 */ {0x30AA, "O6"}, /* 1724 */ {0x30AB, "Ka"}, /* 1725 */ {0x30AC, "Ga"}, /* 1726 */ {0x30AD, "Ki"}, /* 1727 */ {0x30AE, "Gi"}, /* 1728 */ {0x30AF, "Ku"}, /* 1729 */ {0x30B0, "Gu"}, /* 1730 */ {0x30B1, "Ke"}, /* 1731 */ {0x30B2, "Ge"}, /* 1732 */ {0x30B3, "Ko"}, /* 1733 */ {0x30B4, "Go"}, /* 1734 */ {0x30B5, "Sa"}, /* 1735 */ {0x30B6, "Za"}, /* 1736 */ {0x30B7, "Si"}, /* 1737 */ {0x30B8, "Zi"}, /* 1738 */ {0x30B9, "Su"}, /* 1739 */ {0x30BA, "Zu"}, /* 1740 */ {0x30BB, "Se"}, /* 1741 */ {0x30BC, "Ze"}, /* 1742 */ {0x30BD, "So"}, /* 1743 */ {0x30BE, "Zo"}, /* 1744 */ {0x30BF, "Ta"}, /* 1745 */ {0x30C0, "Da"}, /* 1746 */ {0x30C1, "Ti"}, /* 1747 */ {0x30C2, "Di"}, /* 1748 */ {0x30C3, "TU"}, /* 1749 */ {0x30C4, "Tu"}, /* 1750 */ {0x30C5, "Du"}, /* 1751 */ {0x30C6, "Te"}, /* 1752 */ {0x30C7, "De"}, /* 1753 */ {0x30C8, "To"}, /* 1754 */ {0x30C9, "Do"}, /* 1755 */ {0x30CA, "Na"}, /* 1756 */ {0x30CB, "Ni"}, /* 1757 */ {0x30CC, "Nu"}, /* 1758 */ {0x30CD, "Ne"}, /* 1759 */ {0x30CE, "No"}, /* 1760 */ {0x30CF, "Ha"}, /* 1761 */ {0x30D0, "Ba"}, /* 1762 */ {0x30D1, "Pa"}, /* 1763 */ {0x30D2, "Hi"}, /* 1764 */ {0x30D3, "Bi"}, /* 1765 */ {0x30D4, "Pi"}, /* 1766 */ {0x30D5, "Hu"}, /* 1767 */ {0x30D6, "Bu"}, /* 1768 */ {0x30D7, "Pu"}, /* 1769 */ {0x30D8, "He"}, /* 1770 */ {0x30D9, "Be"}, /* 1771 */ {0x30DA, "Pe"}, /* 1772 */ {0x30DB, "Ho"}, /* 1773 */ {0x30DC, "Bo"}, /* 1774 */ {0x30DD, "Po"}, /* 1775 */ {0x30DE, "Ma"}, /* 1776 */ {0x30DF, "Mi"}, /* 1777 */ {0x30E0, "Mu"}, /* 1778 */ {0x30E1, "Me"}, /* 1779 */ {0x30E2, "Mo"}, /* 1780 */ {0x30E3, "YA"}, /* 1781 */ {0x30E4, "Ya"}, /* 1782 */ {0x30E5, "YU"}, /* 1783 */ {0x30E6, "Yu"}, /* 1784 */ {0x30E7, "YO"}, /* 1785 */ {0x30E8, "Yo"}, /* 1786 */ {0x30E9, "Ra"}, /* 1787 */ {0x30EA, "Ri"}, /* 1788 */ {0x30EB, "Ru"}, /* 1789 */ {0x30EC, "Re"}, /* 1790 */ {0x30ED, "Ro"}, /* 1791 */ {0x30EE, "WA"}, /* 1792 */ {0x30EF, "Wa"}, /* 1793 */ {0x30F0, "Wi"}, /* 1794 */ {0x30F1, "We"}, /* 1795 */ {0x30F2, "Wo"}, /* 1796 */ {0x30F3, "N6"}, /* 1797 */ {0x30F4, "Vu"}, /* 1798 */ {0x30F5, "KA"}, /* 1799 */ {0x30F6, "KE"}, /* 1800 */ {0x30F7, "Va"}, /* 1801 */ {0x30F8, "Vi"}, /* 1802 */ {0x30F9, "Ve"}, /* 1803 */ {0x30FA, "Vo"}, /* 1804 */ {0x30FB, ".6"}, /* 1805 */ {0x30FC, "-6"}, /* 1806 */ {0x30FD, "*6"}, /* 1807 */ {0x30FE, "+6"}, /* 1808 */ {0x3105, "b4"}, /* 1809 */ {0x3106, "p4"}, /* 1810 */ {0x3107, "m4"}, /* 1811 */ {0x3108, "f4"}, /* 1812 */ {0x3109, "d4"}, /* 1813 */ {0x310A, "t4"}, /* 1814 */ {0x310B, "n4"}, /* 1815 */ {0x310C, "l4"}, /* 1816 */ {0x310D, "g4"}, /* 1817 */ {0x310E, "k4"}, /* 1818 */ {0x310F, "h4"}, /* 1819 */ {0x3110, "j4"}, /* 1820 */ {0x3111, "q4"}, /* 1821 */ {0x3112, "x4"}, /* 1822 */ {0x3113, "zh"}, /* 1823 */ {0x3114, "ch"}, /* 1824 */ {0x3115, "sh"}, /* 1825 */ {0x3116, "r4"}, /* 1826 */ {0x3117, "z4"}, /* 1827 */ {0x3118, "c4"}, /* 1828 */ {0x3119, "s4"}, /* 1829 */ {0x311A, "a4"}, /* 1830 */ {0x311B, "o4"}, /* 1831 */ {0x311C, "e4"}, /* 1832 */ {0x311D, "eh4"}, /* 1833 */ {0x311E, "ai"}, /* 1834 */ {0x311F, "ei"}, /* 1835 */ {0x3120, "au"}, /* 1836 */ {0x3121, "ou"}, /* 1837 */ {0x3122, "an"}, /* 1838 */ {0x3123, "en"}, /* 1839 */ {0x3124, "aN"}, /* 1840 */ {0x3125, "eN"}, /* 1841 */ {0x3126, "er"}, /* 1842 */ {0x3127, "i4"}, /* 1843 */ {0x3128, "u4"}, /* 1844 */ {0x3129, "iu"}, /* 1845 */ {0x312A, "v4"}, /* 1846 */ {0x312B, "nG"}, /* 1847 */ {0x312C, "gn"}, /* 1848 */ {0x3220, "1c"}, /* 1849 */ {0x3221, "2c"}, /* 1850 */ {0x3222, "3c"}, /* 1851 */ {0x3223, "4c"}, /* 1852 */ {0x3224, "5c"}, /* 1853 */ {0x3225, "6c"}, /* 1854 */ {0x3226, "7c"}, /* 1855 */ {0x3227, "8c"}, /* 1856 */ {0x3228, "9c"}, /* 1857 */ {0x3229, "10c"}, /* 1858 */ {0x327F, "KSC"}, /* 1859 */ {0x33C2, "am"}, /* 1860 */ {0x33D8, "pm"}, /* 1861 */ {0xE000, "\"3"}, /* 1862 */ {0xE001, "\"1"}, /* 1863 */ {0xE002, "\"!"}, /* 1864 */ {0xE003, "\"'"}, /* 1865 */ {0xE004, "\">"}, /* 1866 */ {0xE005, "\"?"}, /* 1867 */ {0xE006, "\"-"}, /* 1868 */ {0xE007, "\"("}, /* 1869 */ {0xE008, "\"."}, /* 1870 */ {0xE009, "\":"}, /* 1871 */ {0xE00A, "\"0"}, /* 1872 */ {0xE00B, "\","}, /* 1873 */ {0xE00C, "\"_"}, /* 1874 */ {0xE00D, "\"\""}, /* 1875 */ {0xE00E, "\";"}, /* 1876 */ {0xE00F, "\"<"}, /* 1877 */ {0xE010, "\"="}, /* 1878 */ {0xE011, "\"/"}, /* 1879 */ {0xE012, "\"p"}, /* 1880 */ {0xE013, "\"d"}, /* 1881 */ {0xE014, "\"i"}, /* 1882 */ {0xE015, "+_"}, /* 1883 */ {0xE016, "a+:"}, /* 1884 */ {0xE017, "Tel"}, /* 1885 */ {0xE018, "UA"}, /* 1886 */ {0xE019, "UB"}, /* 1887 */ {0xE01A, "t3"}, /* 1888 */ {0xE01B, "m3"}, /* 1889 */ {0xE01C, "k3"}, /* 1890 */ {0xE01D, "p3"}, /* 1891 */ {0xE01E, "Mc"}, /* 1892 */ {0xE01F, "Fl"}, /* 1893 */ {0xE020, "Ss"}, /* 1894 */ {0xE021, "Ch"}, /* 1895 */ {0xE022, "CH"}, /* 1896 */ {0xE023, "__"}, /* 1897 */ {0xE024, "/c"}, /* 1898 */ {0xFB00, "ff"}, /* 1899 */ {0xFB01, "fi"}, /* 1900 */ {0xFB02, "fl"}, /* 1901 */ {0xFB03, "ffi"}, /* 1902 */ {0xFB04, "ffl"}, /* 1903 */ {0xFB05, "St"}, /* 1904 */ {0xFB06, "st"}, /* 1905 */ {0xFE7D, "3+;"}, /* 1906 */ {0xFE82, "aM."}, /* 1907 */ {0xFE84, "aH."}, /* 1908 */ {0xFE88, "ah."}, /* 1909 */ {0xFE8D, "a+-"}, /* 1910 */ {0xFE8E, "a+."}, /* 1911 */ {0xFE8F, "b+-"}, /* 1912 */ {0xFE90, "b+."}, /* 1913 */ {0xFE91, "b+,"}, /* 1914 */ {0xFE92, "b+;"}, /* 1915 */ {0xFE93, "tm-"}, /* 1916 */ {0xFE94, "tm."}, /* 1917 */ {0xFE95, "t+-"}, /* 1918 */ {0xFE96, "t+."}, /* 1919 */ {0xFE97, "t+,"}, /* 1920 */ {0xFE98, "t+;"}, /* 1921 */ {0xFE99, "tk-"}, /* 1922 */ {0xFE9A, "tk."}, /* 1923 */ {0xFE9B, "tk,"}, /* 1924 */ {0xFE9C, "tk;"}, /* 1925 */ {0xFE9D, "g+-"}, /* 1926 */ {0xFE9E, "g+."}, /* 1927 */ {0xFE9F, "g+,"}, /* 1928 */ {0xFEA0, "g+;"}, /* 1929 */ {0xFEA1, "hk-"}, /* 1930 */ {0xFEA2, "hk."}, /* 1931 */ {0xFEA3, "hk,"}, /* 1932 */ {0xFEA4, "hk;"}, /* 1933 */ {0xFEA5, "x+-"}, /* 1934 */ {0xFEA6, "x+."}, /* 1935 */ {0xFEA7, "x+,"}, /* 1936 */ {0xFEA8, "x+;"}, /* 1937 */ {0xFEA9, "d+-"}, /* 1938 */ {0xFEAA, "d+."}, /* 1939 */ {0xFEAB, "dk-"}, /* 1940 */ {0xFEAC, "dk."}, /* 1941 */ {0xFEAD, "r+-"}, /* 1942 */ {0xFEAE, "r+."}, /* 1943 */ {0xFEAF, "z+-"}, /* 1944 */ {0xFEB0, "z+."}, /* 1945 */ {0xFEB1, "s+-"}, /* 1946 */ {0xFEB2, "s+."}, /* 1947 */ {0xFEB3, "s+,"}, /* 1948 */ {0xFEB4, "s+;"}, /* 1949 */ {0xFEB5, "sn-"}, /* 1950 */ {0xFEB6, "sn."}, /* 1951 */ {0xFEB7, "sn,"}, /* 1952 */ {0xFEB8, "sn;"}, /* 1953 */ {0xFEB9, "c+-"}, /* 1954 */ {0xFEBA, "c+."}, /* 1955 */ {0xFEBB, "c+,"}, /* 1956 */ {0xFEBC, "c+;"}, /* 1957 */ {0xFEBD, "dd-"}, /* 1958 */ {0xFEBE, "dd."}, /* 1959 */ {0xFEBF, "dd,"}, /* 1960 */ {0xFEC0, "dd;"}, /* 1961 */ {0xFEC1, "tj-"}, /* 1962 */ {0xFEC2, "tj."}, /* 1963 */ {0xFEC3, "tj,"}, /* 1964 */ {0xFEC4, "tj;"}, /* 1965 */ {0xFEC5, "zH-"}, /* 1966 */ {0xFEC6, "zH."}, /* 1967 */ {0xFEC7, "zH,"}, /* 1968 */ {0xFEC8, "zH;"}, /* 1969 */ {0xFEC9, "e+-"}, /* 1970 */ {0xFECA, "e+."}, /* 1971 */ {0xFECB, "e+,"}, /* 1972 */ {0xFECC, "e+;"}, /* 1973 */ {0xFECD, "i+-"}, /* 1974 */ {0xFECE, "i+."}, /* 1975 */ {0xFECF, "i+,"}, /* 1976 */ {0xFED0, "i+;"}, /* 1977 */ {0xFED1, "f+-"}, /* 1978 */ {0xFED2, "f+."}, /* 1979 */ {0xFED3, "f+,"}, /* 1980 */ {0xFED4, "f+;"}, /* 1981 */ {0xFED5, "q+-"}, /* 1982 */ {0xFED6, "q+."}, /* 1983 */ {0xFED7, "q+,"}, /* 1984 */ {0xFED8, "q+;"}, /* 1985 */ {0xFED9, "k+-"}, /* 1986 */ {0xFEDA, "k+."}, /* 1987 */ {0xFEDB, "k+,"}, /* 1988 */ {0xFEDC, "k+;"}, /* 1989 */ {0xFEDD, "l+-"}, /* 1990 */ {0xFEDE, "l+."}, /* 1991 */ {0xFEDF, "l+,"}, /* 1992 */ {0xFEE0, "l+;"}, /* 1993 */ {0xFEE1, "m+-"}, /* 1994 */ {0xFEE2, "m+."}, /* 1995 */ {0xFEE3, "m+,"}, /* 1996 */ {0xFEE4, "m+;"}, /* 1997 */ {0xFEE5, "n+-"}, /* 1998 */ {0xFEE6, "n+."}, /* 1999 */ {0xFEE7, "n+,"}, /* 2000 */ {0xFEE8, "n+;"}, /* 2001 */ {0xFEE9, "h+-"}, /* 2002 */ {0xFEEA, "h+."}, /* 2003 */ {0xFEEB, "h+,"}, /* 2004 */ {0xFEEC, "h+;"}, /* 2005 */ {0xFEED, "w+-"}, /* 2006 */ {0xFEEE, "w+."}, /* 2007 */ {0xFEEF, "j+-"}, /* 2008 */ {0xFEF0, "j+."}, /* 2009 */ {0xFEF1, "y+-"}, /* 2010 */ {0xFEF2, "y+."}, /* 2011 */ {0xFEF3, "y+,"}, /* 2012 */ {0xFEF4, "y+;"}, /* 2013 */ {0xFEF5, "lM-"}, /* 2014 */ {0xFEF6, "lM."}, /* 2015 */ {0xFEF7, "lH-"}, /* 2016 */ {0xFEF8, "lH."}, /* 2017 */ {0xFEF9, "lh-"}, /* 2018 */ {0xFEFA, "lh."}, /* 2019 */ {0xFEFB, "la-"}, /* 2020 */ {0xFEFC, "la."}, }; static const unsigned short inverse[TABLE_LENGTH] = { /* 0 */ 33, 124, 1225, 125, 1078, 1129, 1101, 1076, 1279, 1273, /* 10 */ 1280, 161, 34, 1863, 1874, 1864, 1868, 748, 1872, 1867, /* 20 */ 1869, 1878, 1871, 1862, 1861, 1710, 1107, 1167, 1108, 1870, /* 30 */ 1875, 1876, 1877, 1865, 1866, 1873, 1880, 1881, 1879, 37, /* 40 */ 618, 650, 1118, 38, 39, 96, 494, 500, 180, 489, /* 50 */ 499, 751, 184, 1130, 490, 491, 1103, 1104, 168, 492, /* 60 */ 486, 94, 126, 495, 175, 329, 40, 123, 1617, 1621, /* 70 */ 1238, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, /* 80 */ 1296, 1281, 1623, 1143, 1257, 1283, 1350, 1351, 1352, 1353, /* 90 */ 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, /* 100 */ 1364, 1365, 1366, 1367, 1159, 1368, 1369, 1370, 1371, 1372, /* 110 */ 1373, 1374, 1375, 41, 1618, 1622, 1042, 93, 1282, 1624, /* 120 */ 1144, 1258, 1284, 1160, 42, 1246, 1575, 1574, 1712, 1806, /* 130 */ 1278, 1241, 215, 1608, 558, 43, 1606, 736, 177, 1713, /* 140 */ 1807, 1140, 1242, 1882, 1156, 44, 1053, 1054, 707, 1044, /* 150 */ 496, 1604, 45, 1218, 1239, 1244, 173, 1097, 1243, 1100, /* 160 */ 1805, 247, 1219, 1625, 1252, 1099, 1098, 1141, 1287, 1253, /* 170 */ 1602, 170, 1131, 186, 1157, 1220, 46, 502, 1245, 1117, /* 180 */ 1115, 1116, 1804, 1105, 1262, 183, 1288, 1537, 1605, 47, /* 190 */ 1086, 750, 1111, 92, 1224, 1235, 1112, 1302, 1897, 1132, /* 200 */ 48, 1250, 754, 1428, 1285, 1251, 1286, 1711, 1567, 1566, /* 210 */ 1568, 1133, 1581, 1610, 755, 1564, 1565, 1146, 1580, 49, /* 220 */ 488, 1122, 1119, 752, 487, 1312, 1330, 1339, 1857, 1340, /* 230 */ 189, 1341, 1179, 1342, 188, 1343, 1181, 1344, 1185, 1345, /* 240 */ 1346, 1187, 1347, 1348, 485, 493, 1094, 1089, 1088, 1191, /* 250 */ 185, 1093, 756, 1848, 1304, 1308, 1204, 1147, 50, 1123, /* 260 */ 1120, 1313, 1331, 1349, 1180, 1182, 1192, 178, 757, 1849, /* 270 */ 1306, 1309, 1205, 1148, 51, 1435, 1124, 1121, 753, 1905, /* 280 */ 1433, 1314, 1332, 1436, 190, 1183, 1188, 1090, 1193, 179, /* 290 */ 1434, 758, 1114, 1850, 1305, 1310, 1206, 1149, 52, 1439, /* 300 */ 1437, 1315, 1333, 1440, 1184, 1091, 1194, 1134, 1438, 759, /* 310 */ 1851, 1307, 1311, 1207, 1150, 53, 1316, 1334, 1203, 1216, /* 320 */ 1186, 1189, 1195, 1135, 760, 1852, 1208, 1151, 54, 1317, /* 330 */ 1335, 1092, 1196, 1136, 761, 1853, 1209, 1152, 55, 1318, /* 340 */ 1336, 1190, 1293, 1294, 1197, 1137, 762, 1854, 1210, 1153, /* 350 */ 56, 1319, 1337, 1298, 1198, 1138, 763, 1855, 1211, 1154, /* 360 */ 57, 1110, 1106, 1320, 1338, 1199, 1139, 764, 1856, 1212, /* 370 */ 1155, 58, 1077, 747, 1263, 1289, 1109, 1265, 1264, 1538, /* 380 */ 1128, 59, 1063, 1064, 708, 1087, 484, 1609, 60, 1223, /* 390 */ 1615, 1613, 91, 1277, 1611, 1217, 1301, 1226, 1126, 1291, /* 400 */ 171, 1229, 1221, 1578, 61, 616, 648, 749, 1102, 1274, /* 410 */ 1275, 1231, 1230, 1271, 1142, 1619, 1620, 1158, 62, 1616, /* 420 */ 1614, 1612, 1127, 1292, 1276, 187, 1579, 1228, 63, 498, /* 430 */ 1045, 709, 1055, 1268, 1266, 1270, 1046, 1065, 1269, 191, /* 440 */ 1539, 65, 192, 458, 501, 193, 258, 928, 926, 930, /* 450 */ 932, 460, 510, 1039, 1040, 1037, 994, 1038, 995, 1041, /* 460 */ 680, 256, 914, 772, 1376, 428, 916, 432, 1626, 1715, /* 470 */ 430, 196, 260, 411, 590, 194, 920, 918, 922, 924, /* 480 */ 195, 197, 452, 159, 198, 454, 6, 1255, 1177, 64, /* 490 */ 66, 511, 681, 776, 1377, 774, 385, 591, 166, 1531, /* 500 */ 130, 7, 8, 778, 1761, 1572, 1770, 1764, 1773, 1767, /* 510 */ 67, 613, 262, 523, 199, 780, 1378, 266, 386, 676, /* 520 */ 268, 612, 264, 148, 1267, 1895, 155, 24, 13, 1125, /* 530 */ 1894, 1573, 169, 162, 164, 68, 577, 513, 683, 788, /* 540 */ 208, 784, 790, 1379, 782, 272, 17, 18, 19, 20, /* 550 */ 270, 594, 144, 1236, 176, 1523, 1480, 1260, 16, 1478, /* 560 */ 36, 1505, 1444, 580, 127, 589, 447, 402, 786, 1745, /* 570 */ 1561, 1752, 1522, 1477, 1747, 1507, 1447, 1479, 1754, 1504, /* 580 */ 1443, 1557, 1750, 1562, 448, 403, 69, 200, 462, 503, /* 590 */ 201, 276, 464, 514, 1049, 998, 999, 698, 800, 274, /* 600 */ 792, 794, 934, 796, 798, 1380, 278, 936, 1632, 1721, /* 610 */ 203, 280, 282, 595, 202, 942, 940, 944, 946, 938, /* 620 */ 23, 27, 401, 151, 25, 5, 135, 4, 3, 444, /* 630 */ 1290, 1178, 1166, 70, 530, 1381, 802, 388, 672, 610, /* 640 */ 1232, 1534, 1530, 12, 1240, 28, 1571, 1161, 1892, 1583, /* 650 */ 71, 578, 450, 286, 512, 682, 290, 804, 1382, 288, /* 660 */ 434, 678, 436, 593, 284, 153, 29, 1725, 1731, 1727, /* 670 */ 1733, 1729, 72, 710, 517, 684, 812, 814, 808, 1383, /* 680 */ 806, 294, 810, 611, 292, 1501, 1430, 1272, 137, 129, /* 690 */ 136, 9, 1760, 1769, 1763, 1772, 1766, 73, 204, 466, /* 700 */ 505, 205, 300, 468, 518, 1061, 1062, 1059, 1006, 1060, /* 710 */ 1007, 298, 950, 816, 1384, 304, 948, 1628, 1717, 207, /* 720 */ 818, 302, 413, 598, 206, 296, 579, 581, 306, 132, /* 730 */ 576, 1603, 1570, 1300, 1259, 1261, 1299, 74, 583, 534, /* 740 */ 689, 1385, 1043, 599, 308, 621, 619, 1607, 620, 75, /* 750 */ 690, 820, 519, 691, 310, 822, 1386, 390, 574, 438, /* 760 */ 600, 1798, 1799, 587, 1858, 824, 1724, 1730, 1726, 1732, /* 770 */ 1728, 76, 313, 520, 692, 315, 826, 830, 1387, 319, /* 780 */ 321, 317, 601, 1533, 1508, 1448, 10, 584, 405, 1095, /* 790 */ 1563, 828, 1162, 406, 77, 693, 832, 521, 694, 836, /* 800 */ 1388, 834, 1596, 1595, 573, 1594, 602, 149, 1599, 1775, /* 810 */ 1597, 1891, 1593, 1778, 1776, 1584, 1779, 1777, 1598, 181, /* 820 */ 78, 695, 323, 522, 696, 325, 840, 844, 1389, 838, /* 830 */ 1171, 1796, 327, 603, 209, 1237, 330, 131, 1295, 585, /* 840 */ 408, 21, 133, 172, 160, 1165, 0, 842, 1755, 35, /* 850 */ 1758, 1756, 409, 1759, 1757, 79, 210, 470, 336, 506, /* 860 */ 211, 334, 472, 524, 1081, 1082, 1010, 1011, 332, 850, /* 870 */ 852, 952, 1390, 216, 456, 442, 954, 670, 1634, 1723, /* 880 */ 392, 966, 964, 968, 970, 214, 440, 415, 604, 212, /* 890 */ 958, 956, 960, 962, 213, 846, 848, 157, 338, 394, /* 900 */ 1600, 1256, 1541, 1247, 1176, 1552, 80, 699, 854, 525, /* 910 */ 700, 1391, 856, 145, 146, 575, 605, 128, 139, 182, /* 920 */ 1560, 158, 1172, 1254, 1556, 140, 1762, 163, 1771, 1765, /* 930 */ 1774, 1163, 1768, 81, 532, 703, 1392, 82, 474, 340, /* 940 */ 476, 526, 1075, 704, 342, 860, 1393, 858, 344, 606, /* 950 */ 1536, 1544, 1546, 141, 1548, 1096, 1542, 30, 1249, 1549, /* 960 */ 1545, 1547, 862, 1786, 1789, 174, 1787, 1790, 1543, 1788, /* 970 */ 1173, 83, 614, 346, 868, 527, 697, 350, 866, 1394, /* 980 */ 864, 142, 143, 352, 870, 607, 348, 134, 26, 154, /* 990 */ 167, 150, 1, 15, 1174, 14, 32, 1551, 152, 156, /* 1000 */ 1582, 2, 22, 1734, 1248, 615, 1740, 705, 1736, 1569, /* 1010 */ 1742, 1893, 1903, 1738, 84, 528, 706, 354, 874, 878, /* 1020 */ 1395, 872, 358, 572, 356, 608, 1532, 1234, 1576, 222, /* 1030 */ 1175, 1297, 147, 1748, 876, 1744, 1751, 1884, 1746, 688, /* 1040 */ 1559, 1753, 1555, 586, 1749, 85, 217, 478, 368, 507, /* 1050 */ 218, 364, 480, 529, 1073, 1074, 1071, 1072, 1014, 362, /* 1060 */ 972, 886, 882, 880, 1396, 366, 974, 1630, 1719, 397, /* 1070 */ 978, 976, 980, 982, 220, 425, 421, 419, 423, 370, /* 1080 */ 417, 609, 219, 360, 884, 1885, 1886, 1222, 1227, 1526, /* 1090 */ 1488, 1514, 1456, 1486, 1511, 1452, 31, 1553, 1496, 1470, /* 1100 */ 1462, 1493, 1467, 1459, 1525, 1485, 1513, 1455, 1487, 1510, /* 1110 */ 1451, 86, 588, 535, 890, 1397, 674, 592, 888, 1529, /* 1120 */ 1500, 1520, 1472, 1498, 1517, 1464, 138, 11, 1502, 1432, /* 1130 */ 1800, 1802, 1528, 1495, 1801, 1519, 1469, 1499, 1803, 1516, /* 1140 */ 1461, 1303, 1797, 87, 892, 508, 894, 533, 1083, 1084, /* 1150 */ 1017, 1018, 1085, 685, 900, 1398, 898, 896, 1164, 372, /* 1160 */ 1791, 1792, 1794, 1793, 1795, 88, 531, 687, 1399, 902, /* 1170 */ 904, 1601, 89, 984, 504, 221, 516, 1050, 1051, 1002, /* 1180 */ 1003, 1052, 986, 1400, 906, 988, 668, 376, 617, 374, /* 1190 */ 990, 1780, 582, 1784, 1782, 1781, 165, 1785, 1783, 90, /* 1200 */ 596, 377, 515, 686, 910, 1401, 379, 399, 381, 597, /* 1210 */ 908, 702, 912, 1735, 1741, 1737, 701, 1743, 1739, 95, /* 1220 */ 1896, 97, 224, 459, 536, 225, 259, 929, 927, 931, /* 1230 */ 933, 461, 541, 1019, 1020, 1033, 992, 1034, 993, 1036, /* 1240 */ 1035, 716, 1909, 1910, 1883, 257, 915, 773, 1402, 429, /* 1250 */ 917, 433, 1829, 1627, 1714, 431, 228, 261, 412, 622, /* 1260 */ 226, 921, 919, 923, 925, 227, 712, 1907, 711, 1906, /* 1270 */ 1839, 1200, 765, 229, 453, 230, 455, 714, 1908, 1833, /* 1280 */ 1859, 1837, 1213, 1835, 98, 542, 717, 1913, 1911, 1912, /* 1290 */ 1914, 777, 1403, 775, 384, 571, 1808, 623, 1201, 779, /* 1300 */ 1673, 1682, 1676, 1685, 1214, 1679, 99, 645, 263, 554, /* 1310 */ 730, 1955, 1953, 1954, 1956, 231, 781, 1404, 267, 387, /* 1320 */ 677, 1827, 269, 644, 265, 1588, 1592, 1587, 1591, 1586, /* 1330 */ 1590, 1202, 1585, 1589, 1823, 1169, 1215, 100, 655, 544, /* 1340 */ 724, 1937, 1938, 789, 240, 785, 791, 1405, 783, 273, /* 1350 */ 1812, 271, 626, 1521, 1476, 1506, 1446, 1474, 1233, 1503, /* 1360 */ 1442, 1558, 787, 1657, 731, 1959, 1957, 1958, 1960, 1664, /* 1370 */ 1473, 1659, 725, 1939, 1940, 1445, 1475, 1666, 1441, 658, /* 1380 */ 1662, 667, 449, 404, 101, 232, 463, 537, 233, 277, /* 1390 */ 465, 545, 1021, 1022, 996, 997, 734, 1971, 1969, 1970, /* 1400 */ 1972, 801, 275, 793, 795, 935, 797, 799, 1406, 279, /* 1410 */ 427, 937, 1831, 1633, 1720, 235, 281, 283, 627, 234, /* 1420 */ 943, 941, 945, 947, 939, 1840, 483, 1832, 1834, 1838, /* 1430 */ 1841, 445, 102, 562, 737, 1979, 1977, 1978, 1980, 1407, /* 1440 */ 803, 389, 673, 1811, 642, 1540, 1898, 1901, 1902, 1899, /* 1450 */ 1900, 103, 656, 451, 287, 543, 721, 1927, 1925, 1926, /* 1460 */ 1928, 291, 805, 1408, 289, 435, 679, 1816, 437, 625, /* 1470 */ 285, 1637, 1643, 771, 1639, 1847, 1645, 1641, 104, 548, /* 1480 */ 743, 2003, 2001, 2002, 2004, 813, 815, 809, 1409, 807, /* 1490 */ 295, 1818, 811, 643, 293, 767, 1672, 1681, 1429, 1675, /* 1500 */ 722, 1931, 1929, 1930, 1932, 1684, 1678, 105, 236, 467, /* 1510 */ 539, 237, 301, 469, 549, 1025, 1026, 1056, 1004, 1057, /* 1520 */ 1005, 1058, 735, 1975, 1973, 1974, 1976, 299, 951, 817, /* 1530 */ 1410, 305, 949, 509, 1842, 1629, 1716, 239, 819, 303, /* 1540 */ 414, 630, 238, 297, 657, 659, 307, 654, 1844, 106, /* 1550 */ 661, 566, 745, 2007, 2008, 1411, 497, 1819, 446, 631, /* 1560 */ 309, 653, 651, 652, 107, 821, 550, 739, 1987, 1985, /* 1570 */ 1986, 1988, 311, 823, 1412, 391, 1889, 1817, 439, 632, /* 1580 */ 825, 1636, 1642, 1638, 665, 312, 1644, 1640, 108, 314, /* 1590 */ 551, 740, 1991, 1989, 1990, 1992, 316, 827, 831, 1413, /* 1600 */ 320, 322, 1815, 318, 633, 1535, 2015, 2016, 2013, 2014, /* 1610 */ 829, 2019, 2020, 2017, 2018, 662, 407, 109, 833, 552, /* 1620 */ 741, 1995, 1993, 1994, 1996, 837, 1414, 835, 1888, 1810, /* 1630 */ 634, 1687, 1690, 1688, 1691, 1689, 110, 324, 553, 742, /* 1640 */ 1999, 1997, 1998, 2000, 326, 841, 845, 1415, 839, 1814, /* 1650 */ 1708, 328, 635, 241, 1846, 1145, 843, 1667, 1670, 331, /* 1660 */ 1668, 663, 410, 1671, 1669, 111, 242, 471, 337, 568, /* 1670 */ 243, 335, 473, 555, 1027, 1028, 1008, 1009, 333, 851, /* 1680 */ 853, 953, 1416, 248, 457, 443, 955, 671, 1830, 1635, /* 1690 */ 1722, 393, 967, 965, 969, 971, 246, 441, 416, 636, /* 1700 */ 244, 959, 957, 961, 963, 245, 847, 849, 1168, 1170, /* 1710 */ 339, 395, 1836, 112, 855, 556, 766, 1417, 857, 1890, /* 1720 */ 1809, 637, 1674, 1683, 1677, 1860, 1686, 1680, 113, 564, /* 1730 */ 738, 1983, 1981, 1982, 1984, 1418, 1820, 114, 475, 341, /* 1740 */ 477, 557, 1068, 1069, 726, 1941, 1942, 343, 861, 1419, /* 1750 */ 859, 482, 1825, 345, 638, 863, 1698, 1701, 1699, 1702, /* 1760 */ 1700, 115, 646, 347, 869, 559, 728, 1947, 1945, 1946, /* 1770 */ 1948, 351, 867, 1420, 865, 383, 1828, 353, 871, 639, /* 1780 */ 349, 1550, 1646, 1113, 647, 1652, 1824, 1648, 729, 1951, /* 1790 */ 1949, 1950, 1952, 1654, 223, 1904, 1650, 116, 560, 719, /* 1800 */ 1919, 1917, 1918, 1920, 355, 875, 879, 1421, 873, 359, /* 1810 */ 1887, 1813, 357, 640, 1660, 877, 1656, 768, 1663, 1577, /* 1820 */ 254, 1658, 732, 1963, 1961, 1962, 1964, 720, 1923, 1921, /* 1830 */ 1922, 1924, 718, 1915, 1916, 1665, 664, 1661, 117, 249, /* 1840 */ 479, 369, 569, 250, 365, 481, 561, 1029, 1030, 1066, /* 1850 */ 1012, 1067, 1013, 1070, 363, 973, 887, 883, 881, 1422, /* 1860 */ 367, 975, 540, 1843, 1631, 1718, 398, 979, 977, 981, /* 1870 */ 983, 252, 426, 422, 420, 424, 371, 418, 641, 251, /* 1880 */ 361, 885, 1497, 1471, 1463, 1494, 1468, 1460, 1524, 1484, /* 1890 */ 1512, 1454, 1482, 1509, 1450, 1554, 1481, 1453, 1483, 1449, /* 1900 */ 118, 666, 567, 770, 891, 1423, 675, 1845, 624, 889, /* 1910 */ 1527, 1492, 1518, 1466, 1490, 1515, 1458, 1489, 1465, 1491, /* 1920 */ 1457, 1709, 1431, 119, 893, 570, 895, 565, 1031, 1032, /* 1930 */ 1015, 1016, 1080, 1079, 744, 2005, 2006, 901, 1424, 899, /* 1940 */ 897, 373, 1703, 713, 1704, 1706, 1705, 1707, 120, 563, /* 1950 */ 723, 1935, 1933, 1934, 1936, 1425, 903, 1821, 905, 121, /* 1960 */ 985, 538, 253, 547, 1023, 1024, 1000, 1001, 1048, 1047, /* 1970 */ 746, 2011, 2009, 2010, 2012, 987, 1426, 907, 989, 669, /* 1980 */ 255, 649, 375, 991, 1692, 715, 1696, 1694, 1693, 660, /* 1990 */ 1697, 396, 1695, 122, 628, 378, 546, 727, 1943, 1944, /* 2000 */ 911, 1427, 380, 400, 1826, 382, 629, 909, 733, 1967, /* 2010 */ 1965, 1966, 1968, 913, 1647, 1653, 1822, 1649, 769, 1655, /* 2020 */ 1651 }; recode-3.7.15/src/varia.c0000644000175000017500000002504014374760602010600 /* Conversion of files between different charsets and surfaces. Copyright © 1999-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1993. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" /* This file contains various temporary tables. These would ideally all go away once Keld will be given references, solid enough, to really integrate these tables in RFC1345 (.bis, .ter :-). */ /* Czech tables. */ /* Lukas Petrlik , 1996-04-02, and Martin Mares , 1999-01-05, both sent Kamenicky and Cork tables. The Kamenicky table was made to conform to Wikipedia: https://en.wikipedia.org/wiki/Kamenick%C3%BD_encoding */ /* These tables use standard latin alphabet with Czech accented letters. They use a subset of ISO-8859-2, plus a few strange characters. */ /* KEYBCS2, Kamenicky. "Source: the Reality :-)", as says Lukas. According to Martin, several sources list CP859 as being equivalent to the Kamenicky Brothers code, but neither of them seems to be authoritative enough. */ static const unsigned short data_kamenicky[] = { 128, 0x010C, DONE, 129, 0x00FC, DONE, 130, 0x00E9, DONE, 131, 0x010F, DONE, 132, 0x00E4, DONE, 133, 0x010E, DONE, 134, 0x0164, DONE, 135, 0x010D, DONE, 136, 0x011B, DONE, 137, 0x011A, DONE, 138, 0x0139, DONE, 139, 0x00CD, DONE, 140, 0x013E, DONE, 141, 0x013A, DONE, 142, 0x00C4, DONE, 143, 0x00C1, DONE, 144, 0x00C9, DONE, 145, 0x017E, DONE, 146, 0x017D, DONE, 147, 0x00F4, DONE, 148, 0x00F6, DONE, 149, 0x00D3, DONE, 150, 0x016F, DONE, 151, 0x00DA, DONE, 152, 0x00FD, DONE, 153, 0x00D6, DONE, 154, 0x00DC, DONE, 155, 0x0160, DONE, 156, 0x013D, DONE, 157, 0x00DD, DONE, 158, 0x0158, DONE, 159, 0x0165, DONE, /* latin small letter t with caron */ 160, 0x00E1, DONE, 161, 0x00ED, DONE, 162, 0x00F3, DONE, 163, 0x00FA, DONE, 164, 0x0148, DONE, 165, 0x0147, DONE, 166, 0x016E, DONE, 167, 0x00D4, DONE, 168, 0x0161, DONE, 169, 0x0159, DONE, 170, 0x0155, DONE, 171, 0x0154, DONE, 172, 0x00BC, DONE, 173, 0x00A7, DONE, 174, 0x00AB, DONE, 175, 0x00BB, DONE, 176, 0x2591, DONE, 177, 0x2592, DONE, 178, 0x2593, DONE, 179, 0x2502, DONE, 180, 0x2524, DONE, 181, 0x2561, DONE, 182, 0x2562, DONE, 183, 0x2556, DONE, 184, 0x2555, DONE, 185, 0x2563, DONE, 186, 0x2551, DONE, 187, 0x2557, DONE, 188, 0x255D, DONE, 189, 0x255C, DONE, 190, 0x255B, DONE, 191, 0x2510, DONE, 192, 0x2514, DONE, 193, 0x2534, DONE, 194, 0x252C, DONE, 195, 0x251C, DONE, 196, 0x2500, DONE, 197, 0x253C, DONE, 198, 0x255E, DONE, 199, 0x255F, DONE, 200, 0x255A, DONE, 201, 0x2554, DONE, 202, 0x2569, DONE, 203, 0x2566, DONE, 204, 0x2560, DONE, 205, 0x2550, DONE, 206, 0x256C, DONE, 207, 0x2567, DONE, 208, 0x2568, DONE, 209, 0x2564, DONE, 210, 0x2565, DONE, 211, 0x2559, DONE, 212, 0x2558, DONE, 213, 0x2552, DONE, 214, 0x2553, DONE, 215, 0x256B, DONE, 216, 0x256A, DONE, 217, 0x2518, DONE, 218, 0x250C, DONE, 219, 0x2588, DONE, 220, 0x2584, DONE, 221, 0x258C, DONE, 222, 0x2590, DONE, 223, 0x2580, DONE, 224, 0x03B1, DONE, 225, 0x03B2, DONE, 226, 0x0393, DONE, 227, 0x03C0, DONE, 228, 0x03A3, DONE, 229, 0x03C3, DONE, 230, 0x03BC, DONE, 231, 0x03C4, DONE, 232, 0x03A6, DONE, 233, 0x0398, DONE, 234, 0x03A9, DONE, 235, 0x03B4, DONE, 236, 0x221E, DONE, 237, 0x03C6, DONE, /* greek small letter phi */ 238, 0x03B5, DONE, /* element of */ 239, 0x2229, DONE, /* intersection */ 240, 0x224D, DONE, /* equivalent to */ 241, 0x00B1, DONE, 242, 0x2265, DONE, 243, 0x2264, DONE, 244, 0x2320, DONE, 245, 0x2321, DONE, 246, 0x00F7, DONE, 247, 0x2248, DONE, 248, 0x00B0, DONE, /* degree sign */ 249, 0x2219, DONE, /* bullet operator */ 250, 0x00B7, DONE, /* middle dot */ 251, 0x221A, DONE, 252, 0x207F, DONE, 253, 0x00B2, DONE, 254, 0x25A0, DONE, 255, 0x00A0, DONE, DONE }; /* CORK, T1. */ static const unsigned short data_cork[] = { /* I suspect Lukas used this mapping to convey T1 and CORK in a single table, which may not be such a good thing. (He gave extra code, 0 to 31.) */ 0, 0x0060, DONE, 1, 0x00B4, DONE, 2, 0x005E, DONE, 3, 0x007E, DONE, 4, 0x00A8, DONE, 5, 0x02DD, DONE, 6, 0x02DA, DONE, 7, 0x02C7, DONE, 8, 0x02D8, DONE, 9, 0x00AF, DONE, 10, 0x02D9, DONE, 11, 0x00B8, DONE, 12, 0x02DB, DONE, 13, 0x201A, DONE, 14, 0x2039, DONE, 15, 0x203A, DONE, 16, 0x201C, DONE, 17, 0x201D, DONE, 18, 0x201E, DONE, 19, 0x00AB, DONE, 20, 0x00BB, DONE, 21, 0x2013, DONE, 22, 0x2014, DONE, 23, DONE, 24, 0x2080, DONE, 25, 0x0131, DONE, 26, 0x0237, DONE, 27, 0xFB00, DONE, 28, 0xFB01, DONE, 29, 0xFB02, DONE, 30, 0xFB03, DONE, 31, 0xFB04, DONE, 127, 0x2010, DONE, 128, 0x0102, DONE, 129, 0x0104, DONE, 130, 0x0106, DONE, 131, 0x010C, DONE, 132, 0x010E, DONE, 133, 0x011A, DONE, 134, 0x0118, DONE, 135, 0x011E, DONE, 136, 0x0139, DONE, 137, 0x013D, DONE, 138, 0x0141, DONE, 139, 0x0143, DONE, 140, 0x0147, DONE, 141, 0x014A, DONE, 142, 0x0150, DONE, 143, 0x0154, DONE, 144, 0x0158, DONE, 145, 0x015A, DONE, 146, 0x0160, DONE, 147, 0x015E, DONE, 148, 0x0164, DONE, 149, 0x0162, DONE, 150, 0x0170, DONE, 151, 0x016E, DONE, 152, 0x0178, DONE, 153, 0x0179, DONE, 154, 0x017D, DONE, 155, 0x017B, DONE, 156, 0x0132, DONE, 157, 0x0130, DONE, 158, 0x00F0, DONE, 159, 0x00A7, DONE, 160, 0x0103, DONE, 161, 0x0105, DONE, 162, 0x0107, DONE, 163, 0x010D, DONE, 164, 0x010F, DONE, 165, 0x011B, DONE, 166, 0x0119, DONE, 167, 0x011F, DONE, 168, 0x013A, DONE, 169, 0x013E, DONE, 170, 0x0142, DONE, 171, 0x0144, DONE, 172, 0x0148, DONE, 173, 0x014B, DONE, 174, 0x0151, DONE, 175, 0x0155, DONE, 176, 0x0159, DONE, 177, 0x015B, DONE, 178, 0x0161, DONE, 179, 0x015F, DONE, 180, 0x0165, DONE, 181, 0x0163, DONE, 182, 0x0171, DONE, 183, 0x016F, DONE, 184, 0x00FF, DONE, 185, 0x017A, DONE, 186, 0x017E, DONE, 187, 0x017C, DONE, 188, 0x0133, DONE, 189, 0x00A1, DONE, 190, 0x00BF, DONE, 191, 0x00A3, DONE, 215, 0x0152, DONE, 223, 0x1E9E, DONE, 247, 0x0153, DONE, 255, 0x00DF, DONE, DONE }; /* KOI-8_CS2. Source: CSN 36 9103. From Lukas Petrlik , 1996-04-02. &g1esc x2d49 &g2esc x2e49 &g3esc x2f49 */ static const unsigned short data_koi8cs2[] = { 36, 0x00A4, DONE, 161, DONE, 162, 0x00B4, DONE, 163, DONE, 164, 0x007E, DONE, 165, DONE, 166, 0x02D8, DONE, 167, 0x02D9, DONE, 169, DONE, 170, 0x02DA, DONE, 171, 0x00B8, DONE, 172, DONE, 173, 0x02DD, DONE, 174, 0x02DB, DONE, 175, 0x02C7, DONE, 176, 0x00A9, DONE, 177, 0x2122, DONE, 178, 0x250C, DONE, 179, 0x2510, DONE, 180, 0x2514, DONE, 181, 0x2518, DONE, 182, 0x2500, DONE, 183, 0x2193, DONE, 184, 0x03A9, DONE, 185, 0x00A7, DONE, 186, 0x03B1, DONE, 187, 0x03B3, DONE, 188, 0x03B5, DONE, 189, 0x03BC, DONE, 190, 0x03C0, DONE, 191, 0x03C9, DONE, 192, 0x00E0, DONE, 193, 0x00E1, DONE, 194, 0x01CE, DONE, 195, 0x010D, DONE, 196, 0x010F, DONE, 197, 0x011B, DONE, 198, 0x0155, DONE, 199, DONE, /* ch digraph as a single character, as used in the Czech alphabet, FIXME! */ 200, 0x00FC, DONE, 201, 0x00ED, DONE, 202, 0x016F, DONE, 203, 0x013A, DONE, 204, 0x013E, DONE, 205, 0x00F6, DONE, 206, 0x0148, DONE, 207, 0x00F3, DONE, 208, 0x00F4, DONE, 209, 0x00E4, DONE, 210, 0x0159, DONE, 211, 0x0161, DONE, 212, 0x0165, DONE, 213, 0x00FA, DONE, 214, 0x00EB, DONE, 215, 0x00E9, DONE, 216, 0x0171, DONE, 217, 0x00FD, DONE, 218, 0x017E, DONE, 219, DONE, 220, DONE, 221, 0x0151, DONE, 222, 0x0117, DONE, 224, 0x00C0, DONE, 225, 0x00C1, DONE, 226, 0x01CD, DONE, 227, 0x010C, DONE, 228, 0x010E, DONE, 229, 0x011A, DONE, 230, 0x0154, DONE, 231, DONE, /* CH digraph as a single character, as used in the Czech alphabet, FIXME! */ 232, 0x00DC, DONE, 233, 0x00CD, DONE, 234, 0x016E, DONE, 235, 0x0139, DONE, 236, 0x013D, DONE, 237, 0x00D6, DONE, 238, 0x0147, DONE, 239, 0x00D3, DONE, 240, 0x00D4, DONE, 241, 0x00C4, DONE, 242, 0x0158, DONE, 243, 0x0160, DONE, 244, 0x0164, DONE, 245, 0x00DA, DONE, 246, 0x00CB, DONE, 247, 0x00C9, DONE, 248, 0x0170, DONE, 249, 0x00DD, DONE, 250, 0x017D, DONE, 251, DONE, 252, DONE, 253, 0x0150, DONE, 254, 0x0116, DONE, 255, DONE, DONE }; bool module_varia (RECODE_OUTER outer) { return /* Czech tables. */ recode_declare_explode_data (outer, data_kamenicky, "KEYBCS2", NULL) && recode_declare_explode_data (outer, data_cork, "CORK", NULL) && recode_declare_explode_data (outer, data_koi8cs2, "KOI-8_CS2", NULL) && recode_declare_alias (outer, "Kamenicky", "KEYBCS2") && recode_declare_alias (outer, "T1", "CORK") /* Russian aliases. */ && recode_declare_alias (outer, "1489", "KOI8-R") && recode_declare_alias (outer, "RFC1489", "KOI8-R") && recode_declare_alias (outer, "878", "KOI8-R") && recode_declare_alias (outer, "CP878", "KOI8-R") && recode_declare_alias (outer, "IBM878", "KOI8-R") ; } void delmodule_varia (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/txtelat1.l0000644000175000017500000001362614374760602011264 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2000 Free Software Foundation, Inc. Contributed by François Pinard , 1989. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the Recode Library; see the file `COPYING.LIB'. If not, see . */ /* Step name: texte_latin1. */ %{ void texte_latin1_diaeresis (void); %} s (^|[^a-zA-Z]) d [:"] l [a-zA-Z] %% `` { recode_put_byte (171, subtask); } '' { recode_put_byte (187, subtask); } A` { recode_put_byte (192, subtask); } A^ { recode_put_byte (194, subtask); } A{d}/{l} { if (yytext[1] == request->diaeresis_char) recode_put_byte (196, subtask); else ECHO; } a` { recode_put_byte (224, subtask); } a^ { recode_put_byte (226, subtask); } a{d}/{l} { if (yytext[1] == request->diaeresis_char) recode_put_byte (228, subtask); else ECHO; } C\,/[aAoOuU] { recode_put_byte (199, subtask); } c\,/[aAoOuU] { recode_put_byte (231, subtask); } E` { recode_put_byte (200, subtask); } E''' { recode_put_byte (201, subtask); recode_put_byte (187, subtask); } E'' { recode_put_byte ('E', subtask); recode_put_byte (187, subtask); } E' { recode_put_byte (201, subtask); } E^ { recode_put_byte (202, subtask); } E{d}/{l} { if (yytext[1] == request->diaeresis_char) recode_put_byte (203, subtask); else ECHO; } e` { recode_put_byte (232, subtask); } e''' { recode_put_byte (233, subtask); recode_put_byte (187, subtask); } e'' { recode_put_byte ('e', subtask); recode_put_byte (187, subtask); } e' { recode_put_byte (233, subtask); } e^ { recode_put_byte (234, subtask); } e{d}/{l} { if (yytext[1] == request->diaeresis_char) recode_put_byte (235, subtask); else ECHO; } I` { recode_put_byte (204, subtask); } I^ { recode_put_byte (206, subtask); } I{d}/{l} { if (yytext[1] == request->diaeresis_char) recode_put_byte (207, subtask); else ECHO; } i` { recode_put_byte (236, subtask); } i^ { recode_put_byte (238, subtask); } i{d}/{l} { if (yytext[1] == request->diaeresis_char) recode_put_byte (239, subtask); else ECHO; } O` { recode_put_byte (210, subtask); } O^ { recode_put_byte (212, subtask); } O{d}/{l} { if (yytext[1] == request->diaeresis_char) recode_put_byte (214, subtask); else ECHO; } o` { recode_put_byte (242, subtask); } o^ { recode_put_byte (244, subtask); } o{d}/{l} { if (yytext[1] == request->diaeresis_char) recode_put_byte (246, subtask); else ECHO; } U` { recode_put_byte (217, subtask); } U^ { recode_put_byte (219, subtask); } U{d}/{l} { if (yytext[1] == request->diaeresis_char) recode_put_byte (220, subtask); else ECHO; } u` { recode_put_byte (249, subtask); } u^ { recode_put_byte (251, subtask); } u{d}/{l} { if (yytext[1] == request->diaeresis_char) recode_put_byte (252, subtask); else ECHO; } {s}[Bb]esaigue{d} { texte_latin1_diaeresis (); } {s}[Cc]igue{d} { texte_latin1_diaeresis (); } {s}[Aa]igue{d} { texte_latin1_diaeresis (); } {s}[Aa]mbigue{d} { texte_latin1_diaeresis (); } {s}[Cc]ontigue{d} { texte_latin1_diaeresis (); } {s}[Ee]xigue{d} { texte_latin1_diaeresis (); } {s}[Ss]ubaigue{d} { texte_latin1_diaeresis (); } {s}[Ss]uraigue{d} { texte_latin1_diaeresis (); } {s}[Aa]i{d} { texte_latin1_diaeresis (); } {s}[Cc]ongai{d} { texte_latin1_diaeresis (); } {s}[Gg]oi{d} { texte_latin1_diaeresis (); } {s}[Hh]ai{d}kai{d} { if (yytext[4] == request->diaeresis_char) texte_latin1_diaeresis (); else ECHO; } {s}[Ii]noui{d} { texte_latin1_diaeresis (); } [JjTtLl]'[Aa][Ii]{d} { ECHO; } {s}[Ss]ai{d} { texte_latin1_diaeresis (); } {s}[Ss]amurai{d} { texte_latin1_diaeresis (); } {s}[Tt]hai{d} { texte_latin1_diaeresis (); } {s}[Tt]okai{d} { texte_latin1_diaeresis (); } {s}[Cc]anoe{d} { texte_latin1_diaeresis (); } {s}Esau{d} { texte_latin1_diaeresis (); } %% void texte_latin1_diaeresis (void) { unsigned counter; for (counter = 0; counter < yyleng; counter++) if (yytext[counter+1] == request->diaeresis_char) { switch (yytext[counter]) { /* The next "case 'A'" line once triggered a `NULL in input' diagnostic in flex. This astonishing bug has been hard to isolate, so I'll leave this comment around for a while. */ case 'A': recode_put_byte (196, subtask); break; case 'E': recode_put_byte (203, subtask); break; case 'I': recode_put_byte (207, subtask); break; case 'O': recode_put_byte (214, subtask); break; case 'U': recode_put_byte (220, subtask); break; case 'a': recode_put_byte (228, subtask); break; case 'e': recode_put_byte (235, subtask); break; case 'i': recode_put_byte (239, subtask); break; case 'o': recode_put_byte (246, subtask); break; case 'u': recode_put_byte (252, subtask); break; case 'y': recode_put_byte (255, subtask); break; default: recode_put_byte (yytext[counter], subtask); } counter++; } else recode_put_byte (yytext[counter], subtask); } bool module_texte_latin1 (RECODE_OUTER outer) { return recode_declare_single (outer, "Texte", "Latin-1", outer->quality_variable_to_byte, NULL, transform_texte_latin1) && recode_declare_alias (outer, "txte", "Texte"); } void delmodule_texte_latin1 (RECODE_OUTER outer) { } recode-3.7.15/src/charname.c0000644000175000017500000000460114374760602011254 /* Conversion of files between different charsets and surfaces. Copyright © 1993-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1993. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "charname.h" /*--------------------------------------------------------------------. | Return a statically allocated full charname associated with a given | | SYMBOL, or NULL if not found. | `--------------------------------------------------------------------*/ const char * recode_ucs2_to_charname (int ucs2) { static char result[MAX_CHARNAME_LENGTH + 1]; int first; int last; int middle; int value; const char *in; char *out; const char *cursor; /* Find the symbol by binary searching the charname table. */ first = 0; last = NUMBER_OF_CHARNAMES; while (first < last) { middle = (first + last) / 2; if (charname[middle].code < ucs2) first = middle + 1; else if (charname[middle].code > ucs2) last = middle; else break; } /* If the UCS value has not been found, return the NULL string. */ if (first >= last) return NULL; /* Else, construct the resulting charname. */ out = NULL; for (in = charname[middle].crypted; *in; in++) { /* Decrypt the next word. */ value = *(const unsigned char *) in - 1; if (value >= NUMBER_OF_SINGLES) value = (NUMBER_OF_SINGLES + 255 * (value - NUMBER_OF_SINGLES) + *(const unsigned char *) ++in - 1); /* Copy it. */ if (out) *out++ = ' '; else out = result; for (cursor = word[value]; *cursor; cursor++) *out++ = *cursor; } /* Return the result. */ if (out) *out = NUL; return result; } recode-3.7.15/src/rfc1345.c0000644000175000017500000001737514374760602010601 /* Conversion of files between different charsets and surfaces. Copyright © 1993-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1993. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" #include "rfc1345.h" /* This module takes care only of short RFC 1345 forms. Module charname.c takes care of the full descriptive name for characters. */ /*----------------------------------------------------------------------. | Return an RFC 1345 short form in a CHARSET for a given UCS2 value, or | | NULL if this value has no such known short form. | `----------------------------------------------------------------------*/ _GL_ATTRIBUTE_CONST const char * recode_ucs2_to_rfc1345 (recode_ucs2 code) { int first = 0; int last = TABLE_LENGTH; while (first < last) { int middle = (first + last) / 2; const struct entry *entry = &table[middle]; if (entry->code < code) first = middle + 1; else if (entry->code > code) last = middle; else return entry->rfc1345; } return NULL; } /*---------------------------------------------------------------------. | Return an UCS-2 value, given an RFC 1345 short form in a CHARSET, or | | BIT_MASK (16) if the short form is unknown. | `---------------------------------------------------------------------*/ static _GL_ATTRIBUTE_PURE recode_ucs2 rfc1345_to_ucs2 (const char *string) { int first = 0; int last = TABLE_LENGTH; while (first < last) { int middle = (first + last) / 2; const struct entry *entry = &table[inverse[middle]]; int value = strcmp (entry->rfc1345, string); if (value < 0) first = middle + 1; else if (value > 0) last = middle; else return entry->code; } return NOT_A_CHARACTER; } /* Steps. */ struct local { char intro; /* RFC 1345 intro character */ }; /*-----------------------------------------------. | Transform a whole file from UCS-2 to RFC1345. | `-----------------------------------------------*/ static bool transform_ucs2_rfc1345 (RECODE_SUBTASK subtask) { struct local *local = (struct local *) subtask->step->local; const char intro = local->intro; unsigned value; while (recode_get_ucs2 (&value, subtask)) if (IS_ASCII (value)) if (value == (unsigned)intro) { recode_put_byte (intro, subtask); recode_put_byte (intro, subtask); } else recode_put_byte (value, subtask); else { const char *string = recode_ucs2_to_rfc1345 (value); if (!string || !string[0]) RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); else if (!string[1]) recode_put_byte (string[0], subtask); else if (!string[2]) { recode_put_byte (intro, subtask); recode_put_byte (string[0], subtask); recode_put_byte (string[1], subtask); } else { const char *cursor = string; recode_put_byte (intro, subtask); recode_put_byte ('_', subtask); while (*cursor) { recode_put_byte (*cursor, subtask); cursor++; } recode_put_byte ('_', subtask); } } SUBTASK_RETURN (subtask); } /*-----------------------------------------------. | Transform a whole file from RFC1345 to UCS-2. | `-----------------------------------------------*/ static bool transform_rfc1345_ucs2 (RECODE_SUBTASK subtask) { struct local *local = (struct local *) subtask->step->local; const char intro = local->intro; int character; while (character = recode_get_byte (subtask), character != EOF) if (character == intro) { character = recode_get_byte (subtask); if (character == EOF) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); if (character == intro) recode_put_ucs2 (intro, subtask); else if (character == '_') { char buffer[MAX_MNEMONIC_LENGTH + 1]; char *cursor = buffer; character = recode_get_byte (subtask); while (true) if (character == EOF) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } else if (character == '_') { recode_ucs2 value; *cursor = NUL; value = rfc1345_to_ucs2 (buffer); if (value == NOT_A_CHARACTER) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); else recode_put_ucs2 (value, subtask); break; } else if (cursor == buffer + MAX_MNEMONIC_LENGTH) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } else { *cursor++ = character; character = recode_get_byte (subtask); } } else { char buffer[3]; recode_ucs2 value; buffer[0] = character; character = recode_get_byte (subtask); if (character == EOF) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); buffer[1] = character; buffer[2] = NUL; value = rfc1345_to_ucs2 (buffer); if (value == NOT_A_CHARACTER) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); else { if (IS_ASCII (value)) RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); recode_put_ucs2 (value, subtask); } } } else recode_put_ucs2 (character, subtask); SUBTASK_RETURN (subtask); } /*-----------------------. | Initialise the steps. | `-----------------------*/ static bool term_rfc1345 (RECODE_STEP step) { free (step->local); return true; } static bool init_rfc1345 (RECODE_CONST_REQUEST request, RECODE_STEP step, RECODE_CONST_OPTION_LIST options _GL_UNUSED) { RECODE_OUTER outer = request->outer; struct local *local; if (!ALLOC (local, 1, struct local)) return false; local->intro = '&'; step->local = local; step->term_routine = term_rfc1345; return true; } static bool init_ucs2_rfc1345 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options) return false; return init_rfc1345 (request, step, after_options); } static bool init_rfc1345_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (after_options) return false; return init_rfc1345 (request, step, before_options); } /*---------------------. | Declare the module. | `---------------------*/ bool module_rfc1345 (RECODE_OUTER outer) { RECODE_ALIAS alias; if (!recode_declare_single (outer, "ISO-10646-UCS-2", "RFC1345", outer->quality_variable_to_variable, init_ucs2_rfc1345, transform_ucs2_rfc1345) || !recode_declare_single (outer, "RFC1345", "ISO-10646-UCS-2", outer->quality_variable_to_variable, init_rfc1345_ucs2, transform_rfc1345_ucs2) || !recode_declare_alias (outer, "1345", "RFC1345") || !recode_declare_alias (outer, "mnemonic", "RFC1345")) return false; /* Aliases for obsolete built-in encodings */ if (alias = recode_declare_alias (outer, "Apple-Mac", "macintosh"), !alias) return false; if (!recode_declare_implied_surface (outer, alias, outer->cr_surface)) return false; return true; } void delmodule_rfc1345 (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/base64.h0000644000175000017500000000231114355772013010561 /* Conversion of files between different charsets and surfaces. Copyright © 1996-2000 Free Software Foundation, Inc. Contributed by François Pinard , 1996. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ /* Maximum number of characters per MIME line. */ #define MIME_LINE_LENGTH 76 /* Tables declared in base64.c and also used in utf7.c. */ extern char base64_value_to_char[64]; extern short base64_char_to_value[128]; /* Macros. */ #define IS_BASE64(Character) \ (IS_ASCII (Character) && base64_char_to_value[Character] >= 0) recode-3.7.15/src/utf7.c0000644000175000017500000002227314374760602010370 /* Conversion of files between different charsets and surfaces. Copyright © 1996-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1996. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" #include "base64.h" /* Classification of first 128 UCS-2 characters. */ #define D 1 /* set D -- direct character */ #define O 2 /* set O -- optional direct character */ #define W 4 /* direct white space */ #define z 0 static char classification[128] = { z, z, z, z, z, z, z, z, z, W, W, z, z, W, z, z, z, z, z, z, /* 0- 19 */ z, z, z, z, z, z, z, z, z, z, z, z, W, O, O, O, O, O, O, D, /* 20- 39 */ D, D, O, z, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, O, /* 40- 59 */ O, O, O, D, O, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, /* 60- 79 */ D, D, D, D, D, D, D, D, D, D, D, O, z, O, O, O, O, D, D, D, /* 80- 99 */ D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, /* 100-119 */ D, D, D, O, O, O, z, z /* 120-127 */ }; #undef z /* Should the character be directly represented in message bodies? Here, & (D | O | W) is implied, since these are the only flags. */ #define IS_BODY_DIRECT(Character) \ (IS_ASCII (Character) && classification[Character]) /* Transformation routines. */ /* The following diagram shows the logical steps by which three UCS-2 characters get transformed into eight Base64 characters. It helps understanding shifts and masks in the transformation functions. .--------+--------. .--------+--------. .--------+--------. |aaaaaabb|bbbbcccc| |ccdddddd|eeeeeeff| |ffffgggg|gghhhhhh| `--------+--------' `--------+--------' `--------+--------' 6 2 4 4 2 6 6 2 4 4 2 6 .--------+--------+--------+--------+--------+--------+--------+--------. |00aaaaaa|00bbbbbb|00cccccc|00dddddd|00eeeeee|00ffffff|00gggggg|00hhhhhh| `--------+--------+--------+--------+--------+--------+--------+--------' .--------+--------+--------+--------+--------+--------+--------+--------. |AAAAAAAA|BBBBBBBB|CCCCCCCC|DDDDDDDD|EEEEEEEE|FFFFFFFF|GGGGGGGG|HHHHHHHH| `--------+--------+--------+--------+--------+--------+--------+--------' The UCS-2 characters are divided into 6 bit chunks, which are then encoded into Base64 characters. */ static bool transform_utf16_utf7 (RECODE_SUBTASK subtask) { unsigned value; if (!recode_get_ucs2 (&value, subtask)) SUBTASK_RETURN (subtask); while (true) if (IS_BODY_DIRECT (value)) { /* Copy one direct character. */ recode_put_byte (value, subtask); if (!recode_get_ucs2 (&value, subtask)) SUBTASK_RETURN (subtask); } else { /* Copy a string of non-direct characters. */ recode_put_byte ('+', subtask); while (!IS_BODY_DIRECT (value)) { unsigned split; /* Process first UCS-2 value of a triplet. */ recode_put_byte (base64_value_to_char[BIT_MASK (6) & value >> 10], subtask); recode_put_byte (base64_value_to_char[BIT_MASK (6) & value >> 4], subtask); split = (value & BIT_MASK (4)) << 2; if (!recode_get_ucs2 (&value, subtask)) { recode_put_byte (base64_value_to_char[split], subtask); SUBTASK_RETURN (subtask); } /* Process second UCS-2 value of a triplet. */ if (IS_BODY_DIRECT (value)) { recode_put_byte (base64_value_to_char[split], subtask); break; } recode_put_byte (base64_value_to_char[split | (BIT_MASK (2) & value >> 14)], subtask); recode_put_byte (base64_value_to_char[BIT_MASK (6) & value >> 8], subtask); recode_put_byte (base64_value_to_char[BIT_MASK (6) & value >> 2], subtask); split = (value & BIT_MASK (2)) << 4; if (!recode_get_ucs2 (&value, subtask)) { recode_put_byte (base64_value_to_char[split], subtask); SUBTASK_RETURN (subtask); } /* Process third UCS-2 value of a triplet. */ if (IS_BODY_DIRECT (value)) { recode_put_byte (base64_value_to_char[split], subtask); break; } recode_put_byte (base64_value_to_char[split | (BIT_MASK (4) & value >> 12)], subtask); recode_put_byte (base64_value_to_char[BIT_MASK (6) & value >> 6], subtask); recode_put_byte (base64_value_to_char[BIT_MASK (6) & value], subtask); if (!recode_get_ucs2 (&value, subtask)) SUBTASK_RETURN (subtask); } if (IS_BASE64 (value)) recode_put_byte ('-', subtask); } SUBTASK_RETURN (subtask); } static bool transform_utf7_utf16 (RECODE_SUBTASK subtask) { int character; unsigned value; unsigned split; character = recode_get_byte (subtask); if (character != EOF && subtask->task->byte_order_mark) recode_put_ucs2 (BYTE_ORDER_MARK, subtask); while (character != EOF) if (character == '+') { character = recode_get_byte (subtask); while (IS_BASE64 (character)) { /* Process first byte of first quadruplet. */ value = base64_char_to_value[character] << 10; character = recode_get_byte (subtask); /* Process second byte of first quadruplet. */ if (!IS_BASE64 (character)) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } value |= base64_char_to_value[character] << 4; character = recode_get_byte (subtask); /* Process third byte of first quadruplet. */ if (!IS_BASE64 (character)) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } split = base64_char_to_value[character]; value |= split >> 2; if (IS_BODY_DIRECT (value)) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); recode_put_ucs2 (value, subtask); character = recode_get_byte (subtask); /* Process fourth byte of first quadruplet. */ if (!IS_BASE64 (character)) { if (BIT_MASK (2) & split) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } value = ((BIT_MASK (2) & split) << 14 | base64_char_to_value[character] << 8); character = recode_get_byte (subtask); /* Process first byte of second quadruplet. */ if (!IS_BASE64 (character)) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } value |= base64_char_to_value[character] << 2; character = recode_get_byte (subtask); /* Process second byte of second quadruplet. */ if (!IS_BASE64 (character)) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } split = base64_char_to_value[character]; value |= split >> 4; if (IS_BODY_DIRECT (value)) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); recode_put_ucs2 (value, subtask); character = recode_get_byte (subtask); /* Process third byte of second quadruplet. */ if (!IS_BASE64 (character)) { if (BIT_MASK (4) & split) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } value = ((BIT_MASK (4) & split) << 12 | base64_char_to_value[character] << 6); character = recode_get_byte (subtask); /* Process fourth byte of second quadruplet. */ if (!IS_BASE64 (character)) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } value |= base64_char_to_value[character]; if (IS_BODY_DIRECT (value)) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); recode_put_ucs2 (value, subtask); character = recode_get_byte (subtask); } if (character == '-') { character = recode_get_byte (subtask); if (!IS_BASE64 (character)) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); } } else { if (!IS_BODY_DIRECT (character)) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); recode_put_byte (NUL, subtask); recode_put_byte (character, subtask); character = recode_get_byte (subtask); } SUBTASK_RETURN (subtask); } bool module_utf7 (RECODE_OUTER outer) { return recode_declare_single (outer, "UTF-16", "UNICODE-1-1-UTF-7", /* RFC1642 */ outer->quality_variable_to_variable, NULL, transform_utf16_utf7) && recode_declare_single (outer, "UNICODE-1-1-UTF-7", "UTF-16", outer->quality_variable_to_variable, NULL, transform_utf7_utf16) && recode_declare_alias (outer, "UTF-7", "UNICODE-1-1-UTF-7") && recode_declare_alias (outer, "TF-7", "UNICODE-1-1-UTF-7") && recode_declare_alias (outer, "u7", "UNICODE-1-1-UTF-7") /* Simple UCS-2 does not have to go through UTF-16. */ && recode_declare_single (outer, "ISO-10646-UCS-2", "UNICODE-1-1-UTF-7", outer->quality_variable_to_variable, NULL, transform_utf16_utf7); } void delmodule_utf7 (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/dump.c0000644000175000017500000003117414374760602010450 /* Conversion of files between different charsets and surfaces. Copyright © 1997-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1997. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" /* Constants for the possible bases. If these are reordered, so should be the initialisers for the three tables which follow. */ enum base { OCTAL, DECIMAL, HEXADECIMAL }; /* Printing format to use, depending on both the base and the actual number of bytes. The zero byte case is unused. */ static const char *format_table[3][5] = {{ NULL, "0%03o", "0%06o", "0%08o", "0%011o" }, { NULL, "%3u", "%5u", "%8u", "%10u" }, { NULL, "0x%02X", "0x%04X", "0x%06X", "0x%08X" }}; /* Number of active digits to expect, depending on both the base and the actual number of bytes. The zero byte case is unused. The values do not include the `0' octal prefix nor the `0x' for hexadecimal. */ static unsigned width_table[3][5] = {{ 0, 3, 6, 8, 11 }, { 0, 3, 5, 8, 10 }, { 0, 2, 4, 6, 8 }}; /* Number of printed values per output line, depending on both the base and the actual number of bytes. The zero byte case is unused. The three byte case is also unused, even if the table offers a value for it. */ static unsigned per_line_table[3][5] = {{ 0, 12, 8, 6, 4 }, { 0, 15, 10, 7, 5 }, { 0, 12, 8, 7, 6 }}; static bool dump (RECODE_SUBTASK subtask, enum base base, unsigned size) { unsigned per_line = per_line_table[base][size]; unsigned column = 0; int character = recode_get_byte (subtask); while (character != EOF) { unsigned value = BIT_MASK (8) & character; unsigned byte_count; char buffer[14]; const char *cursor; for (byte_count = 1; byte_count < size; byte_count++) { character = recode_get_byte (subtask); if (character == EOF) break; value = (value << 8) | (BIT_MASK (8) & character); } /* Write delimiters. */ if (column == per_line) { recode_put_byte (',', subtask); recode_put_byte ('\n', subtask); column = 1; } else if (column == 0) column = 1; else { recode_put_byte (',', subtask); recode_put_byte (' ', subtask); column++; } /* Write formatted value. */ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wformat-nonliteral" sprintf (buffer, format_table[base][byte_count], value); #pragma GCC diagnostic pop for (cursor = buffer; *cursor; cursor++) recode_put_byte (*cursor, subtask); /* Prepare for next iteration. */ if (character != EOF) character = recode_get_byte (subtask); } recode_put_byte ('\n', subtask); SUBTASK_RETURN (subtask); } static bool undump (RECODE_SUBTASK subtask, enum base expected_base, unsigned expected_size) { unsigned per_line = per_line_table[expected_base][expected_size]; unsigned column = 0; int character = recode_get_byte (subtask); bool last_is_short = false; bool comma_on_last = character != EOF; while (character != EOF) { unsigned width = 0; unsigned value = 0; enum base base; unsigned size; /* Skip whitespace. But count it, in case of a decimal number. */ while (character == ' ' || character == '\t' || character =='\n') { if (character == ' ') width++; else RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); character = recode_get_byte (subtask); } if (character == EOF) { if (width != 0) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); break; } /* Decide the base for the incoming character, possibly abort the recoding if not the proper base. */ if (character == '0') { character = recode_get_byte (subtask); if (character == 'x') { if (width != 0) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); width = 0; base = HEXADECIMAL; character = recode_get_byte (subtask); } else if (character >= '0' && character <= '9') { /* If followed by 8 or 9, declare it octal nevertheless. It is the proper thing to do, a reject might occur below. */ if (width != 0) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); width = 0; base = OCTAL; } else { /* Otherwise, this is a simple, mere, happy decimal zero. */ width++; base = DECIMAL; } } else if (character >= '1' && character <= '9') base = DECIMAL; else { /* This might be some other line of a C header. Merely skip the line. FIXME: This should probably skip multi-line comments or string constants, so to not get fooled by them. */ RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); while (character != '\n' && character != EOF) character = recode_get_byte (subtask); if (character == '\n') character = recode_get_byte (subtask); continue; } if (base != expected_base) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); /* Decode one value. */ switch (base) { case OCTAL: while (character >= '0' && character <= '7') { value = (value << 3) | (character - '0'); width++; character = recode_get_byte (subtask); } break; case DECIMAL: while (character >= '0' && character <= '9') { value = value * 10 + character - '0'; width++; character = recode_get_byte (subtask); } break; case HEXADECIMAL: while (true) if (character >= '0' && character <= '9') { value = (value << 4) | (character - '0'); width++; character = recode_get_byte (subtask); } else if (character >= 'A' && character <= 'F') { value = (value << 4) | (character - 'A' + 10); width++; character = recode_get_byte (subtask); } else if (character >= 'a' && character <= 'f') { value = (value << 4) | (character - 'a' + 10); width++; character = recode_get_byte (subtask); } else break; break; default: break; } if (width == 0 || width > width_table[base][expected_size]) { /* If the observed width is greater than expected, the input is invalid, even if the value is in range. */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); } else { if (last_is_short) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); if (!comma_on_last) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); /* Decide how many bytes to produce. */ last_is_short = width < width_table[base][expected_size]; if (last_is_short) { /* If the observed width is smaller than expected, accept the value as representing less than the expected number of bytes. However, the width has to match very exactly. */ for (size = 1; size < 4; size++) if (width_table[base][size] == width) break; if (size == 4) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); continue; } } else size = expected_size; /* Produce the output bytes. */ for (unsigned shift = size; shift != 0; shift--) recode_put_byte (BIT_MASK (8) & value >> ((shift * 8) - 8), subtask); } /* Skip separators. */ comma_on_last = character == ','; if (!comma_on_last) { if (character == '\n') character = recode_get_byte (subtask); else RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); } else { character = recode_get_byte (subtask); if (character == ' ') { column++; character = recode_get_byte (subtask); } else if (character == '\n') { if (column + 1!= per_line) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); column = 0; character = recode_get_byte (subtask); } } } if (comma_on_last) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); SUBTASK_RETURN (subtask); } #define TRANSFORM(Name, Service, Base, Size) \ static bool \ Name (RECODE_SUBTASK subtask) \ { \ return Service (subtask, Base, Size); \ } TRANSFORM (data_oct1, dump, OCTAL, 1) TRANSFORM (data_dec1, dump, DECIMAL, 1) TRANSFORM (data_hex1, dump, HEXADECIMAL, 1) TRANSFORM (data_oct2, dump, OCTAL, 2) TRANSFORM (data_dec2, dump, DECIMAL, 2) TRANSFORM (data_hex2, dump, HEXADECIMAL, 2) TRANSFORM (data_oct4, dump, OCTAL, 4) TRANSFORM (data_dec4, dump, DECIMAL, 4) TRANSFORM (data_hex4, dump, HEXADECIMAL, 4) TRANSFORM (oct1_data, undump, OCTAL, 1) TRANSFORM (dec1_data, undump, DECIMAL, 1) TRANSFORM (hex1_data, undump, HEXADECIMAL, 1) TRANSFORM (oct2_data, undump, OCTAL, 2) TRANSFORM (dec2_data, undump, DECIMAL, 2) TRANSFORM (hex2_data, undump, HEXADECIMAL, 2) TRANSFORM (oct4_data, undump, OCTAL, 4) TRANSFORM (dec4_data, undump, DECIMAL, 4) TRANSFORM (hex4_data, undump, HEXADECIMAL, 4) bool module_dump (RECODE_OUTER outer) { return /* Single bytes. */ recode_declare_single (outer, "data", "Octal-1", outer->quality_variable_to_variable, NULL, data_oct1) && recode_declare_single (outer, "data", "Decimal-1", outer->quality_variable_to_variable, NULL, data_dec1) && recode_declare_single (outer, "data", "Hexadecimal-1", outer->quality_variable_to_variable, NULL, data_hex1) && recode_declare_single (outer, "Octal-1", "data", outer->quality_variable_to_variable, NULL, oct1_data) && recode_declare_single (outer, "Decimal-1", "data", outer->quality_variable_to_variable, NULL, dec1_data) && recode_declare_single (outer, "Hexadecimal-1", "data", outer->quality_variable_to_variable, NULL, hex1_data) && recode_declare_alias (outer, "o1", "Octal-1") && recode_declare_alias (outer, "d1", "Decimal-1") && recode_declare_alias (outer, "x1", "Hexadecimal-1") && recode_declare_alias (outer, "o", "Octal-1") && recode_declare_alias (outer, "d", "Decimal-1") && recode_declare_alias (outer, "x", "Hexadecimal-1") /* Double bytes. */ && recode_declare_single (outer, "data", "Octal-2", outer->quality_variable_to_variable, NULL, data_oct2) && recode_declare_single (outer, "data", "Decimal-2", outer->quality_variable_to_variable, NULL, data_dec2) && recode_declare_single (outer, "data", "Hexadecimal-2", outer->quality_variable_to_variable, NULL, data_hex2) && recode_declare_single (outer, "Octal-2", "data", outer->quality_variable_to_variable, NULL, oct2_data) && recode_declare_single (outer, "Decimal-2", "data", outer->quality_variable_to_variable, NULL, dec2_data) && recode_declare_single (outer, "Hexadecimal-2", "data", outer->quality_variable_to_variable, NULL, hex2_data) && recode_declare_alias (outer, "o2", "Octal-2") && recode_declare_alias (outer, "d2", "Decimal-2") && recode_declare_alias (outer, "x2", "Hexadecimal-2") /* Quadruple bytes. */ && recode_declare_single (outer, "data", "Octal-4", outer->quality_variable_to_variable, NULL, data_oct4) && recode_declare_single (outer, "data", "Decimal-4", outer->quality_variable_to_variable, NULL, data_dec4) && recode_declare_single (outer, "data", "Hexadecimal-4", outer->quality_variable_to_variable, NULL, data_hex4) && recode_declare_single (outer, "Octal-4", "data", outer->quality_variable_to_variable, NULL, oct4_data) && recode_declare_single (outer, "Decimal-4", "data", outer->quality_variable_to_variable, NULL, dec4_data) && recode_declare_single (outer, "Hexadecimal-4", "data", outer->quality_variable_to_variable, NULL, hex4_data) && recode_declare_alias (outer, "o4", "Octal-4") && recode_declare_alias (outer, "d4", "Decimal-4") && recode_declare_alias (outer, "x4", "Hexadecimal-4") ; } void delmodule_dump (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/outer.c0000644000175000017500000004046414374760602010643 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2022 Free Software Foundation, Inc. Contributed by François Pinard , 1990. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "hash.h" /*-----------------------------------------------------------------------. | This dummy fallback routine is used to flag the intent of a reversible | | coding as a fallback, which is the traditional Recode behaviour. | `-----------------------------------------------------------------------*/ _GL_ATTRIBUTE_CONST bool recode_reversibility (_GL_UNUSED RECODE_SUBTASK subtask, _GL_UNUSED unsigned code) { return false; } /*-------------------------------------------------------------------------. | Allocate and initialize a new single step, save for the before and after | | charsets and quality. | `-------------------------------------------------------------------------*/ static RECODE_SINGLE new_single_step (RECODE_OUTER outer) { RECODE_SINGLE single; if (!ALLOC (single, 1, struct recode_single)) return NULL; single->next = outer->single_list; outer->single_list = single; outer->number_of_singles++; single->initial_step_table = NULL; single->init_routine = NULL; single->transform_routine = NULL; single->fallback_routine = recode_reversibility; return single; } /*-------------------------------------------------------------------------. | Create and initialize a new single step for recoding between BEFORE_NAME | | and AFTER_NAME. Give it a recoding QUALITY, also saving an INIT_ROUTINE | | and a TRANSFORM_ROUTINE functions. | `-------------------------------------------------------------------------*/ RECODE_SINGLE recode_declare_single (RECODE_OUTER outer, const char *before_name, const char *after_name, struct recode_quality quality, Recode_init init_routine, Recode_transform transform_routine) { RECODE_SINGLE single = new_single_step (outer); RECODE_ALIAS before = NULL, after = NULL; if (!single) return NULL; if (strcmp (before_name, "data") == 0) { single->before = outer->data_symbol; after = recode_find_alias (outer, after_name, SYMBOL_CREATE_DATA_SURFACE); single->after = after->symbol; } else if (strcmp(after_name, "data") == 0) { before = recode_find_alias (outer, before_name, SYMBOL_CREATE_DATA_SURFACE); single->before = before->symbol; single->after = outer->data_symbol; } else { before = recode_find_alias (outer, before_name, SYMBOL_CREATE_CHARSET); single->before = before->symbol; after = recode_find_alias (outer, after_name, SYMBOL_CREATE_CHARSET); single->after = after->symbol; } if (!single->before || !single->after) { if (before) recode_delete_alias (before); if (after) recode_delete_alias (after); outer->single_list = single->next; free (single); return NULL; } single->quality = quality; single->init_routine = init_routine; single->transform_routine = transform_routine; if (single->before == outer->data_symbol) { if (single->after->resurfacer) recode_error (outer, _("Resurfacer set more than once for `%s'"), after_name); single->after->resurfacer = single; } else if (single->after == outer->data_symbol) { if (single->before->unsurfacer) recode_error (outer, _("Unsurfacer set more than once for `%s'"), before_name); single->before->unsurfacer = single; } return single; } /*---------------------------------------------------------------. | Declare a charset available through `iconv', given the NAME of | | this charset (which might already exist as an alias), and the | | ICONV_NAME to use when calling `iconv'. Make two single steps | | in and out of it. | `---------------------------------------------------------------*/ static bool internal_iconv (RECODE_SUBTASK subtask) { recode_if_nogo (RECODE_USER_ERROR, subtask); SUBTASK_RETURN (subtask); } bool recode_declare_iconv (RECODE_OUTER outer, const char *name, const char *iconv_name) { RECODE_ALIAS alias; RECODE_SINGLE single; if (alias = recode_find_alias (outer, name, ALIAS_FIND_AS_EITHER), !alias) if (alias = recode_find_alias (outer, name, SYMBOL_CREATE_CHARSET), !alias) return false; assert(alias->symbol->type == RECODE_CHARSET); if (!alias->symbol->iconv_name) alias->symbol->iconv_name = iconv_name; if (single = new_single_step (outer), !single) return false; single->before = alias->symbol; single->after = outer->iconv_pivot; single->quality = outer->quality_variable_to_variable; single->init_routine = NULL; single->transform_routine = internal_iconv; if (single = new_single_step (outer), !single) return false; single->before = outer->iconv_pivot; single->after = alias->symbol; single->quality = outer->quality_variable_to_variable; single->init_routine = NULL; single->transform_routine = internal_iconv; return true; } /*--------------------------------------------------------------------------. | Associate an explode format DATA structure with charset NAME_COMBINED, an | | 8-bit charset. A NULL value for NAME_EXPLODED implies UCS-2. Otherwise, | | NAME_EXPLODED should be the name of a 8-bit based charset. | `--------------------------------------------------------------------------*/ bool recode_declare_explode_data (RECODE_OUTER outer, const unsigned short *data, const char *name_combined, const char *name_exploded) { RECODE_ALIAS alias; RECODE_SYMBOL charset_combined; RECODE_SYMBOL charset_exploded; RECODE_SINGLE single; if (alias = recode_find_alias (outer, name_combined, SYMBOL_CREATE_CHARSET), !alias) return false; charset_combined = alias->symbol; assert(charset_combined->type == RECODE_CHARSET); if (name_exploded) { if (alias = recode_find_alias (outer, name_exploded, SYMBOL_CREATE_CHARSET), !alias) return false; charset_exploded = alias->symbol; assert(charset_exploded->type == RECODE_CHARSET); } else { charset_combined->data_type = RECODE_EXPLODE_DATA; charset_combined->data = (void *) data; charset_exploded = outer->ucs2_charset; } single = new_single_step (outer); if (!single) return false; single->before = charset_combined; single->after = charset_exploded; single->quality = outer->quality_byte_to_variable; single->initial_step_table = (void *) data; single->init_routine = recode_init_explode; single->transform_routine = name_exploded ? recode_explode_byte_byte : recode_explode_byte_ucs2; single = new_single_step (outer); if (!single) return false; single->before = charset_exploded; single->after = charset_combined; single->quality = outer->quality_variable_to_byte; single->initial_step_table = (void *) data; single->init_routine = recode_init_combine; single->transform_routine = name_exploded ? recode_combine_byte_byte : recode_combine_ucs2_byte; return true; } /*-------------------------------------------------------------------. | Associate an UCS-2 strip format DATA structure with charset NAME. | `-------------------------------------------------------------------*/ bool recode_declare_strip_data (RECODE_OUTER outer, struct strip_data *data, const char *name) { RECODE_ALIAS alias; RECODE_SYMBOL charset; RECODE_SINGLE single; if (alias = recode_find_alias (outer, name, SYMBOL_CREATE_CHARSET), !alias) return false; charset = alias->symbol; assert(charset->type == RECODE_CHARSET); charset->data_type = RECODE_STRIP_DATA; charset->data = data; single = new_single_step (outer); if (!single) return false; single->before = charset; single->after = outer->ucs2_charset; single->quality = outer->quality_byte_to_ucs2; single->transform_routine = recode_transform_byte_to_ucs2; single = new_single_step (outer); if (!single) return false; single->before = outer->ucs2_charset; single->after = charset; single->quality = outer->quality_ucs2_to_byte; single->init_routine = recode_init_ucs2_to_byte; single->transform_routine = recode_transform_ucs2_to_byte; return true; } /*---------------------------------------------------------------. | For a given SINGLE step, roughly establish a conversion cost. | `---------------------------------------------------------------*/ static void estimate_single_cost (_GL_UNUSED RECODE_OUTER outer, RECODE_SINGLE single) { int cost; /* Ensure a small average cost for each single step, yet much trying to avoid single steps prone to loosing information. */ cost = single->quality.reversible ? 10 : 200; /* Use a few heuristics based on the byte size of both charsets. */ switch (single->quality.in_size) { case RECODE_1: /* The fastest is to get one character per read byte. */ cost += 15; break; case RECODE_2: /* Reading two requires a routine call and swapping considerations. */ cost += 25; break; case RECODE_4: /* Reading four is more work than reading two. */ cost += 30; break; case RECODE_N: /* Analysing varysizes is surely much harder than producing them. */ cost += 60; default: break; } switch (single->quality.out_size) { case RECODE_1: /* Information might be more often lost when not going through UCS. */ cost += 20; break; case RECODE_2: /* This is our best bet while writing. */ cost += 10; break; case RECODE_4: /* Writing four is more work than writing two. */ cost += 15; break; case RECODE_N: /* Writing varysizes requires loops and such. */ cost += 35; break; default: break; } /* Consider speed for fine tuning the cost. */ if (single->quality.slower) cost += 3; else if (single->quality.faster) cost -= 2; /* Write the price on the ticket. */ single->conversion_cost = cost; return; } /*----------------------------------------. | Initialize all collected single steps. | `----------------------------------------*/ #include "decsteps.h" bool module_iconv (struct recode_outer *); void delmodule_iconv (struct recode_outer *); static bool register_all_modules (RECODE_OUTER outer) { RECODE_ALIAS alias; RECODE_SINGLE single; unsigned counter; unsigned char *table; if (!ALLOC (table, 256, unsigned char)) return false; for (counter = 0; counter < 256; counter++) table[counter] = counter; outer->one_to_same = table; recode_prepare_for_aliases (outer); outer->single_list = NULL; outer->number_of_singles = 0; if (alias = recode_find_alias (outer, "data", SYMBOL_CREATE_CHARSET), !alias) return false; outer->data_symbol = alias->symbol; if (alias = recode_find_alias (outer, "ISO-10646-UCS-2", SYMBOL_CREATE_CHARSET), !alias) return false; assert(alias->symbol->type == RECODE_CHARSET); outer->ucs2_charset = alias->symbol; if (alias = recode_find_alias (outer, ":iconv:", SYMBOL_CREATE_CHARSET), !alias) return false; assert(alias->symbol->type == RECODE_CHARSET); outer->iconv_pivot = alias->symbol; if (!recode_declare_alias (outer, ":", ":iconv:")) return false; /* Needed for compatibility with Recode 3.6. */ if (!recode_declare_alias (outer, ":libiconv:", ":iconv:")) return false; if (alias = recode_find_alias (outer, "CR-LF", SYMBOL_CREATE_CHARSET), !alias) return false; alias->symbol->type = RECODE_DATA_SURFACE; outer->crlf_surface = alias->symbol; if (alias = recode_find_alias (outer, "CR", SYMBOL_CREATE_CHARSET), !alias) return false; alias->symbol->type = RECODE_DATA_SURFACE; outer->cr_surface = alias->symbol; if (!recode_declare_alias (outer, "ASCII", "ANSI_X3.4-1968")) return false; if (!recode_declare_alias (outer, "BS", "ASCII-BS")) return false; if (!recode_declare_alias (outer, "Latin-1", "ISO-8859-1")) return false; #include "inisteps.h" /* Force this one last: it does not segregate between charsets and aliases, confusing some other initialisations that would come after it. */ if (!recode_make_argmatch_arrays (outer)) return false; if (outer->use_iconv) if (!module_iconv (outer)) return false; for (single = outer->single_list; single; single = single->next) estimate_single_cost (outer, single); return true; } static void unregister_all_modules (RECODE_OUTER outer) { #include "tersteps.h" if (outer->use_iconv) delmodule_iconv(outer); } /* Library interface. */ /* See the recode manual for a more detailed description of the library interface. */ /*-------------------------. | GLOBAL level functions. | `-------------------------*/ RECODE_OUTER recode_new_outer (unsigned flags) { RECODE_OUTER outer = (RECODE_OUTER) calloc (1, sizeof (struct recode_outer)); if (!outer) { recode_error (NULL, _("Virtual memory exhausted")); if (flags & RECODE_AUTO_ABORT_FLAG) exit (1); return NULL; } outer->auto_abort = (flags & RECODE_AUTO_ABORT_FLAG) != 0; outer->use_iconv = (flags & RECODE_NO_ICONV_FLAG) == 0; outer->strict_mapping = (flags & RECODE_STRICT_MAPPING_FLAG) != 0; outer->force = (flags & RECODE_FORCE_FLAG) != 0; if (!register_all_modules (outer) || !recode_make_argmatch_arrays (outer)) { recode_delete_outer (outer); return NULL; } outer->quality_byte_reversible.in_size = RECODE_1; outer->quality_byte_reversible.out_size = RECODE_1; outer->quality_byte_reversible.reversible = true; outer->quality_byte_reversible.faster = true; outer->quality_byte_to_byte.in_size = RECODE_1; outer->quality_byte_to_byte.out_size = RECODE_1; outer->quality_byte_to_byte.faster = true; outer->quality_byte_to_ucs2.in_size = RECODE_1; outer->quality_byte_to_ucs2.out_size = RECODE_2; outer->quality_byte_to_variable.in_size = RECODE_1; outer->quality_byte_to_variable.out_size = RECODE_N; outer->quality_ucs2_to_byte.in_size = RECODE_2; outer->quality_ucs2_to_byte.out_size = RECODE_1; outer->quality_ucs2_to_variable.in_size = RECODE_2; outer->quality_ucs2_to_variable.out_size = RECODE_N; outer->quality_variable_to_byte.in_size = RECODE_N; outer->quality_variable_to_byte.out_size = RECODE_1; outer->quality_variable_to_byte.slower = true; outer->quality_variable_to_ucs2.in_size = RECODE_N; outer->quality_variable_to_ucs2.out_size = RECODE_2; outer->quality_variable_to_ucs2.slower = true; outer->quality_variable_to_variable.in_size = RECODE_N; outer->quality_variable_to_variable.out_size = RECODE_N; outer->quality_variable_to_variable.slower = true; return outer; } bool recode_delete_outer (RECODE_OUTER outer) { unregister_all_modules (outer); while (outer->number_of_symbols > 0) { RECODE_SYMBOL symbol = outer->symbol_list; outer->symbol_list = symbol->next; outer->number_of_symbols--; free (symbol); } while (outer->number_of_singles > 0) { RECODE_SINGLE single = outer->single_list; outer->single_list = single->next; outer->number_of_singles--; free (single); } free (outer->pair_restriction); if (outer->alias_table) hash_free ((Hash_table *) outer->alias_table); if (outer->argmatch_charset_array) { const char **cursor; for (cursor = outer->argmatch_charset_array; *cursor; cursor++) free ((char *) *cursor); for (cursor = outer->argmatch_surface_array; *cursor; cursor++) free ((char *) *cursor); free (outer->argmatch_charset_array); } free ((void *) outer->one_to_same); free (outer); return true; } recode-3.7.15/src/texinfo.c0000644000175000017500000000554114374760602011156 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" static const unsigned short texinfo_data[] = { 160, '@', ' ', DONE, 161, '@', 'e', 'x', 'c', 'l', 'a', 'm', 'd', 'o', 'w', 'n', '{', '}', DONE, 171, '`', '`', DONE, 187, '\'', '\'', DONE, 191, '@', 'q', 'u', 'e', 's', 't', 'i', 'o', 'n', 'd', 'o', 'w', 'n', '{', '}', DONE, 192, '@', '`', 'A', DONE, 194, '@', '^', 'A', DONE, 196, '@', '"', 'A', DONE, 197, '@', 'A', 'A', '{', '}', DONE, 199, '@', ',', '{', 'C', '}', DONE, 200, '@', '`', 'E', DONE, 201, '@', '\'', 'E', DONE, 202, '@', '^', 'E', DONE, 203, '@', '"', 'E', DONE, 206, '@', '^', 'I', DONE, 207, '@', '"', 'I', DONE, 210, '@', '`', 'O', DONE, 212, '@', '^', 'O', DONE, 214, '@', '"', 'O', DONE, 216, '@', 'O', '{', '}', DONE, 217, '@', '`', 'U', DONE, 219, '@', '^', 'U', DONE, 220, '@', '"', 'U', DONE, 223, '@', 's', 's', '{', '}', DONE, 224, '@', '`', 'a', DONE, 226, '@', '^', 'a', DONE, 228, '@', '"', 'a', DONE, 229, '@', 'a', 'a', '{', '}', DONE, 231, '@', ',', '{', 'c', '}', DONE, 232, '@', '`', 'e', DONE, 233, '@', '\'', 'e', DONE, 234, '@', '^', 'e', DONE, 235, '@', '"', 'e', DONE, 236, '@', '`', 'i', DONE, 237, '@', '\'', 'i', DONE, 238, '@', '^', '{', '@', 'd', 'o', 't', 'l', 'e', 's', 's', '{', 'i', '}', '}', DONE, 239, '@', '"', '{', '@', 'd', 'o', 't', 'l', 'e', 's', 's', '{', 'i', '}', '}', DONE, 242, '@', '`', 'o', DONE, 244, '@', '^', 'o', DONE, 246, '@', '"', 'o', DONE, 249, '@', '`', 'u', DONE, 251, '@', '^', 'u', DONE, 252, '@', '"', 'u', DONE, DONE }; bool module_texinfo (RECODE_OUTER outer) { return recode_declare_explode_data (outer, texinfo_data, "Latin-1", "Texinfo") && recode_declare_alias (outer, "texi", "Texinfo") && recode_declare_alias (outer, "ti", "Texinfo"); } void delmodule_texinfo (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/lat1ltex.c0000644000175000017500000001567414374760602011250 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" struct translation { unsigned code; /* code being translated */ const char *string; /* translation string */ }; static struct translation const diacritic_translations [] = { {192, "\\`A"}, /* capital A with grave accent */ {193, "\\'A"}, /* capital A with acute accent */ {194, "\\^A"}, /* capital A with circumflex accent */ {195, "\\~A"}, /* capital A with tilde */ {196, "\\\"A"}, /* capital A diaeresis */ {197, "\\AA{}"}, /* capital A with ring above */ {198, "\\AE{}"}, /* capital diphthong A with E */ {199, "\\c{C}"}, /* capital C with cedilla */ {200, "\\`E"}, /* capital E with grave accent */ {201, "\\'E"}, /* capital E with acute accent */ {202, "\\^E"}, /* capital E with circumflex accent */ {203, "\\\"E"}, /* capital E with diaeresis */ {204, "\\`I"}, /* capital I with grave accent */ {205, "\\'I"}, /* capital I with acute accent */ {206, "\\^I"}, /* capital I with circumflex accent */ {207, "\\\"I"}, /* capital I with diaeresis */ {209, "\\~N"}, /* capital N with tilde */ {210, "\\`O"}, /* capital O with grave accent */ {211, "\\'O"}, /* capital O with acute accent */ {212, "\\^O"}, /* capital O with circumflex accent */ {213, "\\~O"}, /* capital O with tilde */ {214, "\\\"O"}, /* capital O with diaeresis */ {216, "\\O{}"}, /* capital O with oblique stroke */ {217, "\\`U"}, /* capital U with grave accent */ {218, "\\'U"}, /* capital U with acute accent */ {219, "\\^U"}, /* capital U with circumflex accent */ {220, "\\\"U"}, /* capital U with diaeresis */ {221, "\\'Y"}, /* capital Y with acute accent */ {223, "\\ss{}"}, /* small german sharp s */ {224, "\\`a"}, /* small a with grave accent */ {225, "\\'a"}, /* small a with acute accent */ {226, "\\^a"}, /* small a with circumflex accent */ {227, "\\~a"}, /* small a with tilde */ {228, "\\\"a"}, /* small a with diaeresis */ {229, "\\aa{}"}, /* small a with ring above */ {230, "\\ae{}"}, /* small diphthong a with e */ {231, "\\c{c}"}, /* small c with cedilla */ {232, "\\`e"}, /* small e with grave accent */ {233, "\\'e"}, /* small e with acute accent */ {234, "\\^e"}, /* small e with circumflex accent */ {235, "\\\"e"}, /* small e with diaeresis */ {236, "\\`{\\i}"}, /* small i with grave accent */ {237, "\\'{\\i}"}, /* small i with acute accent */ {238, "\\^{\\i}"}, /* small i with circumflex accent */ {239, "\\\"{\\i}"}, /* small i with diaeresis */ {241, "\\~n"}, /* small n with tilde */ {242, "\\`o"}, /* small o with grave accent */ {243, "\\'o"}, /* small o with acute accent */ {244, "\\^o"}, /* small o with circumflex accent */ {245, "\\~o"}, /* small o with tilde */ {246, "\\\"o"}, /* small o with diaeresis */ {248, "\\o{}"}, /* small o with oblique stroke */ {249, "\\`u"}, /* small u with grave accent */ {250, "\\'u"}, /* small u with acute accent */ {251, "\\^u"}, /* small u with circumflex accent */ {252, "\\\"u"}, /* small u with diaeresis */ {253, "\\'y"}, /* small y with acute accent */ {255, "\\\"y"}, /* small y with diaeresis */ {0, NULL} }; static struct translation const other_translations [] = { { 35, "\\#"}, { 36, "\\$"}, { 37, "\\%"}, { 38, "\\&"}, { 60, "$<$"}, { 62, "$>$"}, { 92, "\\backslash{}"}, { 94, "\\textasciicircum{}"}, { 95, "\\_"}, {123, "\\{"}, {125, "\\}"}, {160, "~"}, /* no-break space */ {161, "!`"}, /* inverted exclamation mark */ {163, "\\pound{}"}, /* pound sign */ {167, "\\S{}"}, /* paragraph sign, section sign */ {168, "\\\"{}"}, /* diaeresis */ {169, "\\copyright{}"}, /* copyright sign */ {171, "``"}, /* left angle quotation mark */ {172, "\\neg{}"}, /* not sign */ {173, "\\-"}, /* soft hyphen */ {176, "\\mbox{$^\\circ$}"}, /* degree sign */ {177, "\\mbox{$\\pm$}"}, /* plus-minus sign */ {178, "\\mbox{$^2$}"}, /* superscript two */ {179, "\\mbox{$^3$}"}, /* superscript three */ {180, "\\'{}"}, /* acute accent */ {181, "\\mbox{$\\mu$}"}, /* small greek mu, micro sign */ {183, "\\cdotp"}, /* middle dot */ {184, "\\,{}"}, /* cedilla */ {185, "\\mbox{$^1$}"}, /* superscript one */ {187, "''"}, /* right angle quotation mark */ {188, "\\frac1/4{}"}, /* vulgar fraction one quarter */ {189, "\\frac1/2{}"}, /* vulgar fraction one half */ {190, "\\frac3/4{}"}, /* vulgar fraction three quarters */ {191, "?`"}, /* inverted question mark */ {0, NULL} }; static bool init_latin1_latex (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; char *pool; const char **table; unsigned counter; struct translation const *cursor; if (before_options || after_options) return false; if (!ALLOC_SIZE (table, 256 * sizeof (char *) + 256, const char *)) return false; pool = (char *) (table + 256); for (counter = 0; counter < 128; counter++) { table[counter] = pool; *pool++ = counter; *pool++ = NUL; } for (counter = 128; counter < 256; counter++) table[counter] = NULL; for (cursor = diacritic_translations; cursor->code; cursor++) table[cursor->code] = cursor->string; if (!request->diacritics_only) for (cursor = other_translations; cursor->code; cursor++) table[cursor->code] = cursor->string; step->step_type = RECODE_BYTE_TO_STRING; step->step_table = table; step->step_table_term_routine = free; return true; } bool module_latin1_latex (RECODE_OUTER outer) { return recode_declare_single (outer, "Latin-1", "LaTeX", outer->quality_byte_to_variable, init_latin1_latex, recode_transform_byte_to_variable) && recode_declare_alias (outer, "TeX", "LaTeX") && recode_declare_alias (outer, "ltex", "LaTeX"); } void delmodule_latin1_latex (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/recode.c0000644000175000017500000004412014374760602010737 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2022 Free Software Foundation, Inc. Contributed by François Pinard , 1990. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" /* Global declarations and definitions. */ #include #include #include #include "hash.h" extern const char *program_name; /* Error handling. */ #include _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3) void recode_error (_GL_UNUSED RECODE_OUTER outer, const char *format, ...) { va_list args; va_start (args, format); vfprintf (stderr, format, args); va_end (args); putc ('\n', stderr); fflush (stderr); } _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3) void recode_perror (_GL_UNUSED RECODE_OUTER outer, const char *format, ...) { int saved_errno = errno; va_list args; va_start (args, format); vfprintf (stderr, format, args); va_end (args); fprintf (stderr, ": %s\n", strerror (saved_errno)); fflush (stderr); } _GL_ATTRIBUTE_MALLOC void * recode_malloc (RECODE_OUTER outer, size_t size) { void *result; result = calloc (1, size); if (!result) recode_error (outer, _("Virtual memory exhausted")); return result; } void * recode_realloc (RECODE_OUTER outer, void *pointer, size_t size) { void *result; result = realloc (pointer, size); if (!result) recode_error (outer, _("Virtual memory exhausted")); return result; } /* Single step handling. */ /*------------------------------------------------------------------. | Create a one to one table which is the inverse of the given one. | `------------------------------------------------------------------*/ unsigned char * recode_invert_table (RECODE_OUTER outer, const unsigned char *table) { unsigned char flag[256]; unsigned char *result; bool table_error; unsigned counter; if (!ALLOC (result, 256, unsigned char)) return NULL; memset (flag, 0, 256); table_error = false; for (counter = 0; counter < 256; counter++) { if (flag[table[counter]]) { recode_error (outer, _("Codes %3d and %3u both recode to %3d"), result[table[counter]], counter, table[counter]); table_error = true; } else { result[table[counter]] = counter; flag[table[counter]] = 1; } } if (table_error) { for (counter = 0; counter < 256; counter++) if (!flag[counter]) recode_error (outer, _("No character recodes to %3u"), counter); recode_error (outer, _("Cannot invert given one-to-one table")); } return result; } /*---------------------------------------------------------------------------. | Complete a STEP descriptor by a constructed recoding array for 256 chars | | and the adequate recoding routine. Use a KNOWN_PAIRS array of | | NUMBER_OF_PAIRS constraints. If FIRST_HALF_IMPLIED is not zero, default | | the unconstrained characters of the first 128 to the identity mapping. If | | REVERSE is not zero, use right_table instead of left_table to complete the | | table, yet new pairs are created only when fallback is recode_reversibility. | `---------------------------------------------------------------------------*/ bool recode_complete_pairs (RECODE_OUTER outer, RECODE_STEP step, const struct recode_known_pair *known_pairs, unsigned number_of_pairs, bool first_half_implied, bool reverse) { unsigned char left_flag[256]; unsigned char right_flag[256]; unsigned char left_table[256]; unsigned char right_table[256]; bool table_error; unsigned char *flag; unsigned char *table; const char **table2; char *cursor; unsigned char left; unsigned char right; unsigned char search; unsigned counter; unsigned used; /* Init tables with zeroes. */ memset (left_flag, 0, 256); memset (right_flag, 0, 256); memset (left_table, 0, 256); memset (right_table, 0, 256); table_error = false; /* Establish known data. */ for (counter = 0; counter < number_of_pairs; counter++) { left = known_pairs[counter].left; right = known_pairs[counter].right; /* Set one known correspondence. */ if (left_flag[left]) { if (!table_error) { recode_error (outer, _("Following diagnostics for `%s' to `%s'"), step->before->name, step->after->name); table_error = true; } recode_error (outer, _("Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>"), counter, left, right, left, left_table[left]); } else if (right_flag[right]) { if (!table_error) { recode_error (outer, _("Following diagnostics for `%s' to `%s'"), step->before->name, step->after->name); table_error = true; } recode_error (outer, _("Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>"), counter, left, right, right_table[right], right); } else { left_flag[left] = 1; left_table[left] = right; right_flag[right] = 1; right_table[right] = left; } } /* Set all the implied correspondances. */ if (first_half_implied) for (counter = 0; counter < 128; counter++) if (!left_flag[counter] && !right_flag[counter]) { left_flag[counter] = 1; left_table[counter] = counter; right_flag[counter] = 1; right_table[counter] = counter; } if (step->fallback_routine == recode_reversibility) { /* If the recoding is not strict, compute a reversible one to one table. */ if (table_error) recode_error (outer, _("Cannot complete table from set of known pairs")); /* Close the table with small permutation cycles. */ for (counter = 0; counter < 256; counter++) if (!right_flag[counter]) { search = counter; while (left_flag[search]) search = left_table[search]; left_flag[search] = 1; left_table[search] = counter; right_flag[counter] = 1; right_table[counter] = search; } /* Save a copy of the proper table. */ step->transform_routine = recode_transform_byte_to_byte; if (!ALLOC (table, 256, unsigned char)) return false; memcpy (table, reverse ? right_table : left_table, 256); step->step_type = RECODE_BYTE_TO_BYTE; step->step_table = table; step->step_table_term_routine = free; /* Upgrade step quality to reversible. */ step->quality = outer->quality_byte_reversible; } else { /* If the recoding is strict, prepare a one to many table, each entry being NULL or a string of a single character. */ /* Select the proper table. */ if (reverse) { flag = right_flag; table = right_table; } else { flag = left_flag; table = left_table; } /* Allocate everything in one blow, so it will be freed likewise. */ used = 0; for (counter = 0; counter < 256; counter++) if (flag[counter]) used++; if (!ALLOC_SIZE (table2, 256 * sizeof (char *) + 2 * used, const char *)) return false; cursor = (char *) (table2 + 256); /* Construct the table and the strings in parallel. */ for (counter = 0; counter < 256; counter++) if (flag[counter]) { table2[counter] = cursor; *cursor++ = table[counter]; *cursor++ = NUL; } else table2[counter] = NULL; /* Save a one to many recoding table. */ step->transform_routine = recode_transform_byte_to_variable; step->step_type = RECODE_BYTE_TO_STRING; step->step_table = table2; step->step_table_term_routine = free; } return true; } /* Special handling for UCS-2 tables. */ /*-------------------------------------------------------------------------. | Recode a file from one byte characters to double byte UCS-2 characters. | `-------------------------------------------------------------------------*/ bool recode_transform_byte_to_ucs2 (RECODE_SUBTASK subtask) { int input_char; /* current character */ int output_value; /* value being output */ if (input_char = recode_get_byte (subtask), input_char != EOF) { if (subtask->task->byte_order_mark) recode_put_ucs2 (BYTE_ORDER_MARK, subtask); while (input_char != EOF) { output_value = recode_code_to_ucs2 (subtask->step->before, input_char); if (output_value < 0) { RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); recode_put_ucs2 (REPLACEMENT_CHARACTER, subtask); } else recode_put_ucs2 (output_value, subtask); input_char = recode_get_byte (subtask); } } SUBTASK_RETURN (subtask); } /*-------------------------------------------------------------------------. | Recode a file from double byte UCS-2 characters to one byte characters. | `-------------------------------------------------------------------------*/ struct ucs2_to_byte { recode_ucs2 code; /* UCS-2 value */ unsigned char byte; /* corresponding byte */ }; struct ucs2_to_byte_local { Hash_table *table; struct ucs2_to_byte *data; }; static size_t ucs2_to_byte_hash (const void *void_data, size_t table_size) { const struct ucs2_to_byte *data = (const struct ucs2_to_byte *) void_data; return data->code % table_size; } static bool ucs2_to_byte_compare (const void *void_first, const void *void_second) { const struct ucs2_to_byte *first = (const struct ucs2_to_byte *) void_first; const struct ucs2_to_byte *second = (const struct ucs2_to_byte *) void_second; return first->code == second->code; } static bool term_ucs2_to_byte (RECODE_STEP step) { hash_free (((struct ucs2_to_byte_local *) step->local)->table); free (((struct ucs2_to_byte_local *) step->local)->data); free (step->local); return true; } bool recode_init_ucs2_to_byte (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; Hash_table *table; struct ucs2_to_byte *data; unsigned counter; if (before_options || after_options) return false; table = hash_initialize (0, NULL, ucs2_to_byte_hash, ucs2_to_byte_compare, NULL); if (!table) return false; if (!ALLOC (data, 256, struct ucs2_to_byte)) { hash_free (table); return false; } for (counter = 0; counter < 256; counter++) { data[counter].code = recode_code_to_ucs2 (step->after, counter); data[counter].byte = counter; if (!hash_insert (table, data + counter)) { hash_free (table); free (data); return false; } } if (!ALLOC (step->local, 1, struct ucs2_to_byte_local)) { hash_free (table); free (data); return false; } ((struct ucs2_to_byte_local *) step->local)->table = table; ((struct ucs2_to_byte_local *) step->local)->data = data; step->term_routine = term_ucs2_to_byte; return true; } bool recode_transform_ucs2_to_byte (RECODE_SUBTASK subtask) { Hash_table *table = ((struct ucs2_to_byte_local *) subtask->step->local)->table; struct ucs2_to_byte lookup; struct ucs2_to_byte *entry; unsigned input_value; /* current UCS-2 character */ while (recode_get_ucs2 (&input_value, subtask)) { lookup.code = input_value; entry = (struct ucs2_to_byte *) hash_lookup (table, &lookup); if (entry) recode_put_byte (entry->byte, subtask); else RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); } SUBTASK_RETURN (subtask); } /* Table editing on stdout. */ /*------------------------------------------------------------------------. | Produce an include file representing the recoding, on standard output. | `------------------------------------------------------------------------*/ bool recode_format_table (RECODE_REQUEST request, enum recode_programming_language header_language, const char *header_name) { RECODE_OUTER outer = request->outer; RECODE_CONST_STEP step; /* step being analysed */ unsigned column; /* column counter */ char *name; /* constructed name */ char *cursor; /* cursor in constructed name */ const char *cursor2; /* cursor to study strings */ unsigned counter; /* general purpose counter */ bool underline; /* previous character was underline */ const char *start_comment; /* string starting a comment block */ const char *wrap_comment; /* string separating two comment lines */ const char *end_comment; /* string ending a comment block */ if (request->sequence_length == 0) { recode_error (outer, _("Identity recoding, not worth a table")); return false; } if (request->sequence_length > 1 || request->sequence_array[0].step_type == RECODE_NO_STEP_TABLE) { recode_error (outer, _("Recoding is too complex for a mere table")); return false; } switch (header_language) { case RECODE_LANGUAGE_C: start_comment = "/* "; wrap_comment = "\n "; end_comment = " */\n"; break; case RECODE_LANGUAGE_PERL: start_comment = "# "; wrap_comment = "\n# "; end_comment = "\n"; break; default: /* So lint is happy! */ start_comment = NULL; wrap_comment = NULL; end_comment = NULL; } /* This function is called only when the recoding sequence contains a single step, so it is safe to use request->sequence_array[0] for the step. */ step = request->sequence_array; /* Print the header of the header file. */ printf (_("%sConversion table generated mechanically by %s %s"), start_comment, PACKAGE, VERSION); printf (_("%sfor sequence %s.%s"), wrap_comment, recode_edit_sequence (request, 1), end_comment); printf ("\n"); /* Construct the name of the resulting table. */ if (header_name) { if (!ALLOC (name, strlen (header_name) + 1, char)) return false; strcpy (name, header_name); } else name = recode_edit_sequence (request, 0); /* Ensure the table name contains only valid characters for a C identifier. */ underline = false; cursor = name; for (cursor2 = name; *cursor2; cursor2++) if ((*cursor2 >= 'a' && *cursor2 <= 'z') || (*cursor2 >= 'A' && *cursor2 <= 'Z') || (*cursor2 >= '0' && *cursor2 <= '9')) { if (underline) { *cursor++ = '_'; underline = false; } *cursor++ = *cursor2; } else if (cursor != name) underline = true; *cursor = NUL; /* Produce the recoding table in the correct format. */ if (step->step_type == RECODE_BYTE_TO_BYTE) { const unsigned char *table = (const unsigned char *) step->step_table; /* Produce a one to one recoding table. */ switch (header_language) { case RECODE_NO_LANGUAGE: assert (0); case RECODE_LANGUAGE_C: printf ("unsigned char const %s[256] =\n", name); printf (" {\n"); break; case RECODE_LANGUAGE_PERL: printf ("@%s =\n", name); printf (" (\n"); break; default: break; } for (counter = 0; counter < 256; counter++) { printf ("%s%3d,", counter % 8 == 0 ? " " : " ", table[counter]); if (counter % 8 == 7) printf ("\t%s%3u - %3u%s", start_comment, counter - 7, counter, end_comment); } switch (header_language) { case RECODE_NO_LANGUAGE: assert (0); case RECODE_LANGUAGE_C: printf (" };\n"); break; case RECODE_LANGUAGE_PERL: printf (" );\n"); break; default: break; } } else if (step->step_type == RECODE_BYTE_TO_STRING) { const char *const *table = (const char *const *) step->step_table; /* Produce a one to many recoding table. */ switch (header_language) { case RECODE_NO_LANGUAGE: assert (0); case RECODE_LANGUAGE_C: printf ("const char *%s[256] =\n", name); printf (" {\n"); break; case RECODE_LANGUAGE_PERL: printf ("@%s =\n", name); printf (" (\n"); break; default: break; } for (counter = 0; counter < 256; counter++) { printf (" "); column = 4; if (table[counter]) { printf ("\""); column++; for (cursor2 = table[counter]; *cursor2; cursor2++) switch (*cursor2) { case ' ': printf (" "); column++; break; case '\b': printf ("\\b"); column += 2; break; case '\t': printf ("\\t"); column += 2; break; case '\n': printf ("\\n"); column += 2; break; case '"': printf ("\\\""); column += 2; break; case '\\': printf ("\\\\"); column += 2; break; case '$': if (header_language == RECODE_LANGUAGE_PERL) { printf ("\\$"); column += 2; break; } FALLTHROUGH; default: if (isprint (*cursor2)) { printf ("%c", *cursor2); column++; } else { printf ("\\%.3o", *(const unsigned char *) cursor2); column += 4; } } printf ("\""); column++; } else switch (header_language) { case RECODE_NO_LANGUAGE: assert (0); case RECODE_LANGUAGE_C: printf ("0"); column++; break; case RECODE_LANGUAGE_PERL: printf ("''"); column += 2; break; default: break; } printf (","); column++; while (column < 32) { printf ("\t"); column += 8 - column % 8; } printf ("%s%3u%s", start_comment, counter, end_comment); } switch (header_language) { case RECODE_NO_LANGUAGE: assert (0); case RECODE_LANGUAGE_C: printf (" };\n"); break; case RECODE_LANGUAGE_PERL: printf (" );\n"); break; default: break; } } else { recode_error (outer, _("No table to print")); free (name); return false; } free (name); return true; } recode-3.7.15/src/fr-charname.c0000644000175000017500000000461314374760602011664 /* Conversion of files between different charsets and surfaces. Copyright © 1993-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1993. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "fr-charname.h" /*--------------------------------------------------------------------. | Return a statically allocated full charname associated with a given | | SYMBOL, or NULL if not found. | `--------------------------------------------------------------------*/ const char * recode_ucs2_to_french_charname (int ucs2) { static char result[MAX_CHARNAME_LENGTH + 1]; int first; int last; int middle; int value; const char *in; char *out; const char *cursor; /* Find the symbol by binary searching the charname table. */ first = 0; last = NUMBER_OF_CHARNAMES; while (first < last) { middle = (first + last) / 2; if (charname[middle].code < ucs2) first = middle + 1; else if (charname[middle].code > ucs2) last = middle; else break; } /* If the UCS value has not been found, return the NULL string. */ if (first >= last) return NULL; /* Else, construct the resulting charname. */ out = NULL; for (in = charname[middle].crypted; *in; in++) { /* Decrypt the next word. */ value = *(const unsigned char *) in - 1; if (value >= NUMBER_OF_SINGLES) value = (NUMBER_OF_SINGLES + 255 * (value - NUMBER_OF_SINGLES) + *(const unsigned char *) ++in - 1); /* Copy it. */ if (out) *out++ = ' '; else out = result; for (cursor = word[value]; *cursor; cursor++) *out++ = *cursor; } /* Return the result. */ if (out) *out = NUL; return result; } recode-3.7.15/src/html.c0000644000175000017500000010416514671604065010450 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" #include "hash.h" /* FIXME: An @code{HTML} text which has spurious semi-colons to end entities (in strict mode) or does not always have them (in non-strict mode) is not canonical. */ /* Tables. */ /* The following entities, said to be from Emacs-w3, are ignored for the time being, as recode is not too fond of graphical approximations:   \   \ \ – - — -- ‘ ` ’ ' “ `` ” '' ⅛ 1/8 ⅜ 3/8 ⅝ 5/8 ⅞ 7/8 … . . . ← <-- → --> ™ (TM) */ /* XML with stand-alone=yes */ #define V00 (1 << 0) /* Old Emacs-W3, HTML 1.1 ? */ #define V11 (1 << 1) /* RFC1866, HTML 2.0 */ #define V20 (1 << 2) /* RFC2070, HTML-i18n */ #define V27 (1 << 3) /* HTML 3.2 */ #define V32 (1 << 4) /* HTML 4.0 */ #define V40 (1 << 5) #define ENTRY(Code, String, Flags) \ { Code, Flags, String } static struct ucs2_to_string translations [] = { ENTRY (33, "excl", 0 ), ENTRY (34, "quot", 0 | V00 | V20 | V27 | V32 | V40), ENTRY (35, "num", 0 ), ENTRY (36, "dollar", 0 ), ENTRY (37, "percnt", 0 ), ENTRY (38, "amp", 0 | V00 | V11 | V20 | V27 | V32 | V40), ENTRY (39, "apos", 0 | V00 ), ENTRY (40, "lpar", 0 ), ENTRY (41, "rpar", 0 ), ENTRY (42, "ast", 0 ), ENTRY (43, "plus", 0 ), ENTRY (44, "comma", 0 ), ENTRY (45, "horbar", 0 ), ENTRY (46, "period", 0 ), ENTRY (58, "colon", 0 ), ENTRY (59, "semi", 0 ), ENTRY (60, "lt", 0 | V00 | V11 | V20 | V27 | V32 | V40), ENTRY (61, "equals", 0 ), ENTRY (62, "gt", 0 | V00 | V11 | V20 | V27 | V32 | V40), ENTRY (63, "quest", 0 ), ENTRY (64, "commat", 0 ), ENTRY (91, "lsqb", 0 ), ENTRY (93, "rsqb", 0 ), ENTRY (94, "uarr", 0 ), ENTRY (95, "lowbar", 0 ), ENTRY (96, "grave", 0 ), ENTRY (123, "lcub", 0 ), ENTRY (124, "verbar", 0 ), ENTRY (125, "rcub", 0 ), ENTRY (126, "tilde", 0 ), ENTRY (160, "nbsp", 0 | V27 | V32 | V40), ENTRY (161, "iexcl", 0 | V27 | V32 | V40), ENTRY (162, "cent", 0 | V27 | V32 | V40), ENTRY (163, "pound", 0 | V27 | V32 | V40), ENTRY (164, "curren", 0 | V27 | V32 | V40), ENTRY (165, "yen", 0 | V27 | V32 | V40), ENTRY (166, "brkbar", 0 | V11 ), ENTRY (166, "brvbar", 0 | V27 | V32 | V40), ENTRY (167, "sect", 0 | V27 | V32 | V40), ENTRY (168, "die", 0 | V11 ), ENTRY (168, "uml", 0 | V27 | V32 | V40), ENTRY (169, "copy", 0 | V27 | V32 | V40), ENTRY (170, "ordf", 0 | V27 | V32 | V40), ENTRY (171, "laquo", 0 | V27 | V32 | V40), ENTRY (172, "not", 0 | V27 | V32 | V40), ENTRY (173, "hyphen", 0 | V11 ), ENTRY (173, "shy", 0 | V27 | V32 | V40), ENTRY (174, "reg", 0 | V27 | V32 | V40), ENTRY (175, "hibar", 0 | V11 ), ENTRY (175, "macr", 0 | V27 | V32 | V40), ENTRY (176, "deg", 0 | V27 | V32 | V40), ENTRY (177, "plusmn", 0 | V27 | V32 | V40), ENTRY (178, "sup2", 0 | V27 | V32 | V40), ENTRY (179, "sup3", 0 | V27 | V32 | V40), ENTRY (180, "acute", 0 | V27 | V32 | V40), ENTRY (181, "micro", 0 | V27 | V32 | V40), ENTRY (182, "para", 0 | V27 | V32 | V40), ENTRY (183, "middot", 0 | V27 | V32 | V40), ENTRY (184, "cedil", 0 | V27 | V32 | V40), ENTRY (185, "sup1", 0 | V27 | V32 | V40), ENTRY (186, "ordm", 0 | V27 | V32 | V40), ENTRY (187, "raquo", 0 | V27 | V32 | V40), ENTRY (188, "frac14", 0 | V27 | V32 | V40), ENTRY (189, "half", 0 | V11 ), ENTRY (189, "frac12", 0 | V27 | V32 | V40), ENTRY (190, "frac34", 0 | V27 | V32 | V40), ENTRY (191, "iquest", 0 | V27 | V32 | V40), ENTRY (192, "Agrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (193, "Aacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (194, "Acircu", 0 | V11 ), ENTRY (194, "Acirc", 0 | V20 | V27 | V32 | V40), ENTRY (195, "Atilde", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (196, "Adiaer", 0 | V11 ), ENTRY (196, "Auml", 0 | V20 | V27 | V32 | V40), ENTRY (197, "Aring", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (198, "AE", 0 | V11 ), ENTRY (198, "AElig", 0 | V20 | V27 | V32 | V40), ENTRY (199, "Ccedil", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (200, "Egrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (201, "Eacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (202, "Ecircu", 0 | V11 ), ENTRY (202, "Ecirc", 0 | V20 | V27 | V32 | V40), ENTRY (203, "Ediaer", 0 | V11 ), ENTRY (203, "Euml", 0 | V20 | V27 | V32 | V40), ENTRY (204, "Igrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (205, "Iacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (206, "Icircu", 0 | V11 ), ENTRY (206, "Icirc", 0 | V20 | V27 | V32 | V40), ENTRY (207, "Idiaer", 0 | V11 ), ENTRY (207, "Iuml", 0 | V20 | V27 | V32 | V40), ENTRY (208, "ETH", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (209, "Ntilde", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (210, "Ograve", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (211, "Oacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (212, "Ocircu", 0 | V11 ), ENTRY (212, "Ocirc", 0 | V20 | V27 | V32 | V40), ENTRY (213, "Otilde", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (214, "Odiaer", 0 | V11 ), ENTRY (214, "Ouml", 0 | V20 | V27 | V32 | V40), ENTRY (215, "MULT", 0 | V11 ), ENTRY (215, "times", 0 | V27 | V32 | V40), ENTRY (216, "Ostroke", 0 | V11 ), ENTRY (216, "Oslash", 0 | V20 | V27 | V32 | V40), ENTRY (217, "Ugrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (218, "Uacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (219, "Ucircu", 0 | V11 ), ENTRY (219, "Ucirc", 0 | V20 | V27 | V32 | V40), ENTRY (220, "Udiaer", 0 | V11 ), ENTRY (220, "Uuml", 0 | V20 | V27 | V32 | V40), ENTRY (221, "Yacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (222, "THORN", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (223, "ssharp", 0 | V11 ), ENTRY (223, "szlig", 0 | V20 | V27 | V32 | V40), ENTRY (224, "agrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (225, "aacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (226, "acircu", 0 | V11 ), ENTRY (226, "acirc", 0 | V20 | V27 | V32 | V40), ENTRY (227, "atilde", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (228, "adiaer", 0 | V11 ), ENTRY (228, "auml", 0 | V20 | V27 | V32 | V40), ENTRY (229, "aring", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (230, "ae", 0 | V11 ), ENTRY (230, "aelig", 0 | V20 | V27 | V32 | V40), ENTRY (231, "ccedil", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (232, "egrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (233, "eacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (234, "ecircu", 0 | V11 ), ENTRY (234, "ecirc", 0 | V20 | V27 | V32 | V40), ENTRY (235, "ediaer", 0 | V11 ), ENTRY (235, "euml", 0 | V20 | V27 | V32 | V40), ENTRY (236, "igrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (237, "iacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (238, "icircu", 0 | V11 ), ENTRY (238, "icirc", 0 | V20 | V27 | V32 | V40), ENTRY (239, "idiaer", 0 | V11 ), ENTRY (239, "iuml", 0 | V20 | V27 | V32 | V40), ENTRY (240, "eth", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (241, "ntilde", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (242, "ograve", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (243, "oacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (244, "ocircu", 0 | V11 ), ENTRY (244, "ocirc", 0 | V20 | V27 | V32 | V40), ENTRY (245, "otilde", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (246, "odiaer", 0 | V11 ), ENTRY (246, "ouml", 0 | V20 | V27 | V32 | V40), ENTRY (247, "DIVIS", 0 | V11 ), ENTRY (247, "divide", 0 | V27 | V32 | V40), ENTRY (248, "ostroke", 0 | V11 ), ENTRY (248, "oslash", 0 | V20 | V27 | V32 | V40), ENTRY (249, "ugrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (250, "uacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (251, "ucircu", 0 | V11 ), ENTRY (251, "ucirc", 0 | V20 | V27 | V32 | V40), ENTRY (252, "udiaer", 0 | V11 ), ENTRY (252, "uuml", 0 | V20 | V27 | V32 | V40), ENTRY (253, "yacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (254, "thorn", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (255, "ydiaer", 0 | V11 ), ENTRY (255, "yuml", 0 | V20 | V27 | V32 | V40), ENTRY (338, "OElig", 0 | V40), ENTRY (339, "oelig", 0 | V40), ENTRY (352, "Scaron", 0 | V40), ENTRY (353, "scaron", 0 | V40), ENTRY (376, "Yuml", 0 | V40), ENTRY (402, "fnof", 0 | V40), ENTRY (710, "circ", 0 | V40), ENTRY (732, "tilde", 0 | V40), ENTRY (913, "Alpha", 0 | V40), ENTRY (914, "Beta", 0 | V40), ENTRY (915, "Gamma", 0 | V40), ENTRY (916, "Delta", 0 | V40), ENTRY (917, "Epsilon", 0 | V40), ENTRY (918, "Zeta", 0 | V40), ENTRY (919, "Eta", 0 | V40), ENTRY (920, "Theta", 0 | V40), ENTRY (921, "Iota", 0 | V40), ENTRY (922, "Kappa", 0 | V40), ENTRY (923, "Lambda", 0 | V40), ENTRY (924, "Mu", 0 | V40), ENTRY (925, "Nu", 0 | V40), ENTRY (926, "Xi", 0 | V40), ENTRY (927, "Omicron", 0 | V40), ENTRY (928, "Pi", 0 | V40), ENTRY (929, "Rho", 0 | V40), ENTRY (931, "Sigma", 0 | V40), ENTRY (932, "Tau", 0 | V40), ENTRY (933, "Upsilon", 0 | V40), ENTRY (934, "Phi", 0 | V40), ENTRY (935, "Chi", 0 | V40), ENTRY (936, "Psi", 0 | V40), ENTRY (937, "Omega", 0 | V40), ENTRY (945, "alpha", 0 | V40), ENTRY (946, "beta", 0 | V40), ENTRY (947, "gamma", 0 | V40), ENTRY (948, "delta", 0 | V40), ENTRY (949, "epsilon", 0 | V40), ENTRY (950, "zeta", 0 | V40), ENTRY (951, "eta", 0 | V40), ENTRY (952, "theta", 0 | V40), ENTRY (953, "iota", 0 | V40), ENTRY (954, "kappa", 0 | V40), ENTRY (955, "lambda", 0 | V40), ENTRY (956, "mu", 0 | V40), ENTRY (957, "nu", 0 | V40), ENTRY (958, "xi", 0 | V40), ENTRY (959, "omicron", 0 | V40), ENTRY (960, "pi", 0 | V40), ENTRY (961, "rho", 0 | V40), ENTRY (962, "sigmaf", 0 | V40), ENTRY (963, "sigma", 0 | V40), ENTRY (964, "tau", 0 | V40), ENTRY (965, "upsilon", 0 | V40), ENTRY (966, "phi", 0 | V40), ENTRY (967, "chi", 0 | V40), ENTRY (968, "psi", 0 | V40), ENTRY (969, "omega", 0 | V40), ENTRY (977, "thetasym", 0 | V40), ENTRY (978, "upsih", 0 | V40), ENTRY (982, "piv", 0 | V40), ENTRY (8194, "ensp", 0 | V40), ENTRY (8195, "emsp", 0 | V40), ENTRY (8201, "thinsp", 0 | V40), ENTRY (8204, "zwnj", 0 | V27 | V40), ENTRY (8205, "zwj", 0 | V27 | V40), ENTRY (8206, "lrm", 0 | V27 | V40), ENTRY (8207, "rlm", 0 | V27 | V40), ENTRY (8211, "ndash", 0 | V40), ENTRY (8212, "mdash", 0 | V40), ENTRY (8216, "lsquo", 0 | V40), ENTRY (8217, "rsquo", 0 | V40), ENTRY (8218, "sbquo", 0 | V40), ENTRY (8220, "ldquo", 0 | V40), ENTRY (8221, "rdquo", 0 | V40), ENTRY (8222, "bdquo", 0 | V40), ENTRY (8224, "dagger", 0 | V40), ENTRY (8225, "Dagger", 0 | V40), ENTRY (8226, "bull", 0 | V40), ENTRY (8230, "hellip", 0 | V40), ENTRY (8240, "permil", 0 | V40), ENTRY (8242, "prime", 0 | V40), ENTRY (8243, "Prime", 0 | V40), ENTRY (8249, "lsaquo", 0 | V40), ENTRY (8250, "rsaquo", 0 | V40), ENTRY (8254, "oline", 0 | V40), ENTRY (8260, "frasl", 0 | V40), ENTRY (8364, "euro", 0 | V40), ENTRY (8465, "image", 0 | V40), ENTRY (8472, "weierp", 0 | V40), ENTRY (8476, "real", 0 | V40), ENTRY (8482, "trade", 0 | V40), ENTRY (8501, "alefsym", 0 | V40), ENTRY (8592, "larr", 0 | V40), ENTRY (8593, "uarr", 0 | V40), ENTRY (8594, "rarr", 0 | V40), ENTRY (8595, "darr", 0 | V40), ENTRY (8596, "harr", 0 | V40), ENTRY (8629, "crarr", 0 | V40), ENTRY (8656, "lArr", 0 | V40), ENTRY (8657, "uArr", 0 | V40), ENTRY (8658, "rArr", 0 | V40), ENTRY (8659, "dArr", 0 | V40), ENTRY (8660, "hArr", 0 | V40), ENTRY (8704, "forall", 0 | V40), ENTRY (8706, "part", 0 | V40), ENTRY (8707, "exist", 0 | V40), ENTRY (8709, "empty", 0 | V40), ENTRY (8711, "nabla", 0 | V40), ENTRY (8712, "isin", 0 | V40), ENTRY (8713, "notin", 0 | V40), ENTRY (8715, "ni", 0 | V40), ENTRY (8719, "prod", 0 | V40), ENTRY (8721, "sum", 0 | V40), ENTRY (8722, "minus", 0 | V40), ENTRY (8727, "lowast", 0 | V40), ENTRY (8730, "radic", 0 | V40), ENTRY (8733, "prop", 0 | V40), ENTRY (8734, "infin", 0 | V40), ENTRY (8736, "ang", 0 | V40), ENTRY (8743, "and", 0 | V40), ENTRY (8744, "or", 0 | V40), ENTRY (8745, "cap", 0 | V40), ENTRY (8746, "cup", 0 | V40), ENTRY (8747, "int", 0 | V40), ENTRY (8756, "there4", 0 | V40), ENTRY (8764, "sim", 0 | V40), ENTRY (8773, "cong", 0 | V40), ENTRY (8776, "asymp", 0 | V40), ENTRY (8800, "ne", 0 | V40), ENTRY (8801, "equiv", 0 | V40), ENTRY (8804, "le", 0 | V40), ENTRY (8805, "ge", 0 | V40), ENTRY (8834, "sub", 0 | V40), ENTRY (8835, "sup", 0 | V40), ENTRY (8836, "nsub", 0 | V40), ENTRY (8838, "sube", 0 | V40), ENTRY (8839, "supe", 0 | V40), ENTRY (8853, "oplus", 0 | V40), ENTRY (8855, "otimes", 0 | V40), ENTRY (8869, "perp", 0 | V40), ENTRY (8901, "sdot", 0 | V40), ENTRY (8968, "lceil", 0 | V40), ENTRY (8969, "rceil", 0 | V40), ENTRY (8970, "lfloor", 0 | V40), ENTRY (8971, "rfloor", 0 | V40), ENTRY (9001, "lang", 0 | V40), ENTRY (9002, "rang", 0 | V40), ENTRY (9674, "loz", 0 | V40), ENTRY (9824, "spades", 0 | V40), ENTRY (9827, "clubs", 0 | V40), ENTRY (9829, "hearts", 0 | V40), ENTRY (9830, "diams", 0 | V40), ENTRY (0, NULL, 0 ) }; #undef ENTRY /* UCS-2 to HTML. */ /*-------------------------------------. | Return hash value given TABLE_SIZE. | `-------------------------------------*/ static size_t code_hash (const void *void_data, size_t table_size) { struct ucs2_to_string const *data = (struct ucs2_to_string const *) void_data; return data->code % table_size; } /*----------------------------------------. | Say if two translations are identical. | `----------------------------------------*/ static bool code_compare (const void *void_first, const void *void_second) { struct ucs2_to_string const *first = (struct ucs2_to_string const *) void_first; struct ucs2_to_string const *second = (struct ucs2_to_string const *) void_second; return first->code == second->code; } /*-----------------. | Initialisation. | `-----------------*/ static bool init_ucs2_html (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options, unsigned mask) { Hash_table *table; struct ucs2_to_string const *cursor; if (before_options || after_options) return false; table = hash_initialize (0, NULL, code_hash, code_compare, NULL); if (!table) return false; for (cursor = translations; cursor->code; cursor++) if (cursor->flags & mask && (!request->diacritics_only || cursor->code > 128)) if (!hash_insert (table, cursor)) { hash_free (table); return false; } step->step_type = RECODE_UCS2_TO_STRING; step->step_table = table; step->step_table_term_routine = (void (*) (void *)) hash_free; return true; } static bool init_ucs2_html_v00 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_ucs2_html (step, request, before_options, after_options, V00); } static bool init_ucs2_html_v11 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_ucs2_html (step, request, before_options, after_options, V11); } static bool init_ucs2_html_v20 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_ucs2_html (step, request, before_options, after_options, V20); } static bool init_ucs2_html_v27 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_ucs2_html (step, request, before_options, after_options, V27); } static bool init_ucs2_html_v32 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_ucs2_html (step, request, before_options, after_options, V32); } static bool init_ucs2_html_v40 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_ucs2_html (step, request, before_options, after_options, V40); } /*-----------------. | Transformation. | `-----------------*/ static bool transform_ucs2_html (RECODE_SUBTASK subtask) { Hash_table *table = (Hash_table *) subtask->step->step_table; unsigned value; while (recode_get_ucs2 (&value, subtask)) { struct ucs2_to_string lookup; struct ucs2_to_string *entry; lookup.code = value; entry = (struct ucs2_to_string *) hash_lookup (table, &lookup); if (entry) { const char *cursor = entry->string; recode_put_byte ('&', subtask); while (*cursor) { recode_put_byte (*cursor, subtask); cursor++; } recode_put_byte (';', subtask); } else if ((value < 32 && value != '\n' && value != '\t') || value >= 127) { unsigned divider = 10000; recode_put_byte ('&', subtask); recode_put_byte ('#', subtask); while (divider > value) divider /= 10; while (divider > 1) { recode_put_byte ('0' + value / divider, subtask); value %= divider; divider /= 10; } recode_put_byte ('0' + value, subtask); recode_put_byte (';', subtask); } else recode_put_byte(value, subtask); } SUBTASK_RETURN (subtask); } /* HTML to UCS-2. */ #define ENTITY_BUFFER_LENGTH 20 /* " { if (request->diacritics_only) ECHO; else recode_put_ucs2 (34, subtask); } & { if (request->diacritics_only) ECHO; else recode_put_ucs2 (38, subtask); } < { if (request->diacritics_only) ECHO; else recode_put_ucs2 (60, subtask); } > { if (request->diacritics_only) ECHO; else recode_put_ucs2 (62, subtask); } */ /*-------------------------------------. | Return hash value given TABLE_SIZE. | `-------------------------------------*/ static size_t string_hash (const void *void_data, size_t table_size) { struct ucs2_to_string const *data = (struct ucs2_to_string const *) void_data; return hash_string (data->string, table_size); } /*----------------------------------------. | Say if two translations are identical. | `----------------------------------------*/ static bool string_compare (const void *void_first, const void *void_second) { struct ucs2_to_string const *first = (struct ucs2_to_string const *) void_first; struct ucs2_to_string const *second = (struct ucs2_to_string const *) void_second; return strcmp (first->string, second->string) == 0; } /*-----------------. | Initialisation. | `-----------------*/ static bool init_html_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options, unsigned mask) { Hash_table *table; struct ucs2_to_string const *cursor; if (before_options || after_options) return false; table = hash_initialize (0, NULL, string_hash, string_compare, NULL); if (!table) return false; for (cursor = translations; cursor->code; cursor++) if (cursor->flags & mask && (!request->diacritics_only || cursor->code > 128)) if (!hash_insert (table, cursor)) { hash_free (table); return false; } step->step_type = RECODE_STRING_TO_UCS2; step->step_table = table; step->step_table_term_routine = (void (*) (void *)) hash_free; return true; } static bool init_html_v00_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_html_ucs2 (step, request, before_options, after_options, V00); } static bool init_html_v11_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_html_ucs2 (step, request, before_options, after_options, V11); } static bool init_html_v20_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_html_ucs2 (step, request, before_options, after_options, V20); } static bool init_html_v27_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_html_ucs2 (step, request, before_options, after_options, V27); } static bool init_html_v32_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_html_ucs2 (step, request, before_options, after_options, V32); } static bool init_html_v40_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_html_ucs2 (step, request, before_options, after_options, V40); } /*-----------------. | Transformation. | `-----------------*/ static bool transform_html_ucs2 (RECODE_SUBTASK subtask) { RECODE_CONST_REQUEST request = subtask->task->request; int input_char; input_char = recode_get_byte (subtask); if (input_char != EOF) recode_put_ucs2 (BYTE_ORDER_MARK, subtask); /* FIXME: experimental */ /* According to RFC 2718 and the Unicode Standard, if you declare the character encoding of your page using HTTP as either "UTF-16LE" or "UTF-16BE" then you should not use a byte-order mark at the beginning of the page. Only if the page is labelled in HTTP using IANA charset name "UTF-16" is a byte-order mark appropriate. */ while (input_char != EOF) if (input_char == '&') { char buffer[ENTITY_BUFFER_LENGTH]; char *cursor = buffer; bool valid = true; bool echo = false; input_char = recode_get_byte (subtask); if (input_char == '#') { input_char = recode_get_byte (subtask); if (input_char == 'x' || input_char == 'X') { unsigned value = 0; /* Scan &#[xX][0-9a-fA-F]+; notation. */ *cursor++ = '#'; *cursor++ = input_char; input_char = recode_get_byte (subtask); while (valid) { if (input_char >= '0' && input_char <= '9') value = 16 * value + input_char - '0'; else if (input_char >= 'A' && input_char <= 'F') value = 16 * value + input_char - 'A' + 10; else if (input_char >= 'a' && input_char <= 'f') value = 16 * value + input_char - 'a' + 10; else break; if (value >= 65535) valid = false; else if (cursor == buffer + ENTITY_BUFFER_LENGTH - 2) valid = false; else { *cursor++ = input_char; input_char = recode_get_byte (subtask); } } /* No digit found at all? */ if ((cursor - buffer) == 2) valid = false; if (valid) if (request->diacritics_only) { echo = true; *cursor = '\0'; } else { recode_put_ucs2 (value, subtask); if (input_char == ';') input_char = recode_get_byte (subtask); } else *cursor = '\0'; } else { unsigned value = 0; /* Scan &#[0-9]+; notation. */ *cursor++ = '#'; while (valid) { if (input_char >= '0' && input_char <= '9') value = 10 * value + input_char - '0'; else break; if (value >= 65535) valid = false; else if (cursor == buffer + ENTITY_BUFFER_LENGTH - 2) valid = false; else { *cursor++ = input_char; input_char = recode_get_byte (subtask); } } /* No digit found at all? */ if ((cursor - buffer) == 1) valid = false; if (valid) if (request->diacritics_only) { echo = true; *cursor = '\0'; } else { recode_put_ucs2 (value, subtask); if (input_char == ';') input_char = recode_get_byte (subtask); } else *cursor = '\0'; } } else if ((input_char >= 'A' && input_char <= 'Z') || (input_char >= 'a' && input_char <= 'z')) { /* Scan &[A-Za-z][A-Za-z0-9]*; notation. */ *cursor++ = input_char; input_char = recode_get_byte (subtask); while (valid && input_char != EOF && ((input_char >= 'A' && input_char <= 'Z') || (input_char >= 'a' && input_char <= 'z') || (input_char >= '0' && input_char <= '9'))) if (cursor == buffer + ENTITY_BUFFER_LENGTH - 2) valid = false; else { *cursor++ = input_char; input_char = recode_get_byte (subtask); } *cursor = '\0'; if (valid) { struct ucs2_to_string lookup; struct ucs2_to_string *entry; lookup.string = buffer; entry = (struct ucs2_to_string *) hash_lookup ((const Hash_table *) subtask->step->step_table, &lookup); if (entry) { recode_put_ucs2 (entry->code, subtask); if (input_char == ';') input_char = recode_get_byte (subtask); } else valid = false; } } else /* Not '#' or A-z, so not a valid entity. */ { valid = false; /* Push back '&', but do not output current input_char yet. */ *cursor = '\0'; } if (echo || !valid) { recode_put_ucs2 ('&', subtask); for (cursor = buffer; *cursor; cursor++) recode_put_ucs2 (*cursor, subtask); /* input_char is processed again in the next iteration. */ } } else { recode_put_ucs2 (input_char, subtask); input_char = recode_get_byte (subtask); } SUBTASK_RETURN (subtask); } /* Module declaration. */ bool module_html (RECODE_OUTER outer) { return recode_declare_single (outer, "ISO-10646-UCS-2", "XML-standalone", outer->quality_byte_to_variable, init_ucs2_html_v00, transform_ucs2_html) && recode_declare_single (outer, "XML-standalone", "ISO-10646-UCS-2", outer->quality_variable_to_byte, init_html_v00_ucs2, transform_html_ucs2) && recode_declare_single (outer, "ISO-10646-UCS-2", "HTML_1.1", outer->quality_byte_to_variable, init_ucs2_html_v11, transform_ucs2_html) && recode_declare_single (outer, "HTML_1.1", "ISO-10646-UCS-2", outer->quality_variable_to_byte, init_html_v11_ucs2, transform_html_ucs2) && recode_declare_single (outer, "ISO-10646-UCS-2", "HTML_2.0", outer->quality_byte_to_variable, init_ucs2_html_v20, transform_ucs2_html) && recode_declare_single (outer, "HTML_2.0", "ISO-10646-UCS-2", outer->quality_variable_to_byte, init_html_v20_ucs2, transform_html_ucs2) && recode_declare_single (outer, "ISO-10646-UCS-2", "HTML-i18n", outer->quality_byte_to_variable, init_ucs2_html_v27, transform_ucs2_html) && recode_declare_single (outer, "HTML-i18n", "ISO-10646-UCS-2", outer->quality_variable_to_byte, init_html_v27_ucs2, transform_html_ucs2) && recode_declare_single (outer, "ISO-10646-UCS-2", "HTML_3.2", outer->quality_byte_to_variable, init_ucs2_html_v32, transform_ucs2_html) && recode_declare_single (outer, "HTML_3.2", "ISO-10646-UCS-2", outer->quality_variable_to_byte, init_html_v32_ucs2, transform_html_ucs2) && recode_declare_single (outer, "ISO-10646-UCS-2", "HTML_4.0", outer->quality_byte_to_variable, init_ucs2_html_v40, transform_ucs2_html) && recode_declare_single (outer, "HTML_4.0", "ISO-10646-UCS-2", outer->quality_variable_to_byte, init_html_v40_ucs2, transform_html_ucs2) && recode_declare_alias (outer, "h0", "XML-standalone") && recode_declare_alias (outer, "h1", "HTML_1.1") && recode_declare_alias (outer, "RFC1866", "HTML_2.0") && recode_declare_alias (outer, "1866", "HTML_2.0") && recode_declare_alias (outer, "h2", "HTML_2.0") && recode_declare_alias (outer, "RFC2070", "HTML-i18n") && recode_declare_alias (outer, "2070", "HTML-i18n") && recode_declare_alias (outer, "h3", "HTML_3.2") && recode_declare_alias (outer, "h4", "HTML_4.0") /* HTML defaults to the highest level available. */ && recode_declare_alias (outer, "HTML", "HTML_4.0") && recode_declare_alias (outer, "h", "HTML_4.0"); } void delmodule_html (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/vn.c0000644000175000017500000004152714374760602010131 /* Vietnamese charset processing. Copyright © 1999-2018 Progiciels Bourbeau-Pinard, Inc. Contributed by François Pinard , 1999. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" static const recode_ucs2 tcvn_pool[256] = { /* 0 */ 0x0000, 0x00DA, 0x1EE4, 0x0003, 0x1EEA, 0x1EEC, 0x1EEE, 0x0007, /* 8 */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 16 */ 0x0010, 0x1EE8, 0x1EF0, 0x1EF2, 0x1EF6, 0x1EF8, 0x00DD, 0x1EF4, /* 24 */ 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, /* 32 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 40 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 48 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 56 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 64 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 72 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 80 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 88 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 96 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 104 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 112 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 120 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, /* 128 */ 0x00C0, 0x1EA2, 0x00C3, 0x00C1, 0x1EA0, 0x1EB6, 0x1EAC, 0x00C8, /* 136 */ 0x1EBA, 0x1EBC, 0x00C9, 0x1EB8, 0x1EC6, 0x00CC, 0x1EC8, 0x0128, /* 144 */ 0x00CD, 0x1ECA, 0x00D2, 0x1ECE, 0x00D5, 0x00D3, 0x1ECC, 0x1ED8, /* 152 */ 0x1EDC, 0x1EDE, 0x1EE0, 0x1EDA, 0x1EE2, 0x00D9, 0x1EE6, 0x0168, /* 160 */ 0xFFFF, 0x0102, 0x00C2, 0x00CA, 0x00D4, 0x01A0, 0x01AF, 0x0110, /* 168 */ 0x0103, 0x00E2, 0x00EA, 0x00F4, 0x01A1, 0x01B0, 0x0111, 0x1EB0, /* 176 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00E0, 0x1EA3, 0x00E3, /* 184 */ 0x00E1, 0x1EA1, 0x1EB2, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EAF, 0x1EB4, /* 192 */ 0x1EAE, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EA4, 0x1EC0, 0x1EB7, 0x1EA7, /* 200 */ 0x1EA9, 0x1EAB, 0x1EA5, 0x1EAD, 0x00E8, 0x1EC2, 0x1EBB, 0x1EBD, /* 208 */ 0x00E9, 0x1EB9, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EBF, 0x1EC7, 0x00EC, /* 216 */ 0x1EC9, 0x1EC4, 0x1EBE, 0x1ED2, 0x0129, 0x00ED, 0x1ECB, 0x00F2, /* 224 */ 0x1ED4, 0x1ECF, 0x00F5, 0x00F3, 0x1ECD, 0x1ED3, 0x1ED5, 0x1ED7, /* 232 */ 0x1ED1, 0x1ED9, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EDB, 0x1EE3, 0x00F9, /* 240 */ 0x1ED6, 0x1EE7, 0x0169, 0x00FA, 0x1EE5, 0x1EEB, 0x1EED, 0x1EEF, /* 248 */ 0x1EE9, 0x1EF1, 0x1EF3, 0x1EF7, 0x1EF9, 0x00FD, 0x1EF5, 0x1ED0, }; static struct strip_data tcvn_strip_data = { tcvn_pool, { 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248 } }; static const recode_ucs2 viscii_pool[256] = { /* 0 */ 0x0000, 0x0001, 0x1EB2, 0x0003, 0x0004, 0x1EB4, 0x1EAA, 0x0007, /* 8 */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 16 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x1EF6, 0x0015, 0x0016, 0x0017, /* 24 */ 0x0018, 0x1EF8, 0x001A, 0x001B, 0x001C, 0x001D, 0x1EF4, 0x001F, /* 32 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 40 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 48 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 56 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 64 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 72 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 80 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 88 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 96 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 104 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 112 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 120 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, /* 128 */ 0x1EA0, 0x1EAE, 0x1EB0, 0x1EB6, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAC, /* 136 */ 0x1EBC, 0x1EB8, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1ED0, /* 144 */ 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EE2, 0x1EDA, 0x1EDC, 0x1EDE, /* 152 */ 0x1ECA, 0x1ECE, 0x1ECC, 0x1EC8, 0x1EE6, 0x0168, 0x1EE4, 0x1EF2, /* 160 */ 0x00D5, 0x1EAF, 0x1EB1, 0x1EB7, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAD, /* 168 */ 0x1EBD, 0x1EB9, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1ED1, /* 176 */ 0x1ED3, 0x1ED5, 0x1ED7, 0x1EE0, 0x01A0, 0x1ED9, 0x1EDD, 0x1EDF, /* 184 */ 0x1ECB, 0x1EF0, 0x1EE8, 0x1EEA, 0x1EEC, 0x01A1, 0x1EDB, 0x01AF, /* 192 */ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x1EA2, 0x0102, 0x1EB3, 0x1EB5, /* 200 */ 0x00C8, 0x00C9, 0x00CA, 0x1EBA, 0x00CC, 0x00CD, 0x0128, 0x1EF3, /* 208 */ 0x0110, 0x1EE9, 0x00D2, 0x00D3, 0x00D4, 0x1EA1, 0x1EF7, 0x1EEB, /* 216 */ 0x1EED, 0x00D9, 0x00DA, 0x1EF9, 0x1EF5, 0x00DD, 0x1EE1, 0x01B0, /* 224 */ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x1EA3, 0x0103, 0x1EEF, 0x1EAB, /* 232 */ 0x00E8, 0x00E9, 0x00EA, 0x1EBB, 0x00EC, 0x00ED, 0x0129, 0x1EC9, /* 240 */ 0x0111, 0x1EF1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x1ECF, 0x1ECD, /* 248 */ 0x1EE5, 0x00F9, 0x00FA, 0x0169, 0x1EE7, 0x00FD, 0x1EE3, 0x1EEE, }; static struct strip_data viscii_strip_data = { viscii_pool, { 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248 } }; static const recode_ucs2 vps_pool[256] = { /* 0 */ 0x0000, 0x0001, 0x1EA0, 0x1EAC, 0x1EB6, 0x1EB8, 0x1EC6, 0x0007, /* 8 */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 16 */ 0x1ECA, 0x1ECC, 0x1ED8, 0x1EE2, 0x1EE4, 0x1EF0, 0x0016, 0x0017, /* 24 */ 0x0018, 0x1EF4, 0x001A, 0x001B, 0x1EAA, 0x1EEE, 0x001E, 0x001F, /* 32 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 40 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 48 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 56 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 64 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 72 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 80 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 88 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 96 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 104 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 112 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 120 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, /* 128 */ 0x00C0, 0x1EA2, 0x00C3, 0x1EA4, 0x1EA6, 0x1EA8, 0x1ECD, 0x1ED7, /* 136 */ 0x0102, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC7, 0x1EAE, 0x1EB0, 0x1EB2, /* 144 */ 0x1EBE, 0xFFFF, 0xFFFF, 0x1EC0, 0x1EC2, 0x1EC4, 0x1ED0, 0x1ED2, /* 152 */ 0x1ED4, 0xFFFF, 0x00FD, 0x1EF7, 0x1EF5, 0x1EDA, 0x1EDC, 0x1EDE, /* 160 */ 0xFFFF, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EE0, 0x1EDB, /* 168 */ 0x00D9, 0x1EDD, 0x1EDF, 0x1EE1, 0x0168, 0x1EE8, 0x1EE3, 0x1EEA, /* 176 */ 0x1ED5, 0x1EEC, 0x1EF2, 0x1EF8, 0x00CD, 0x00CC, 0x1ED9, 0x1EC8, /* 184 */ 0x0128, 0x00D3, 0x1EED, 0x1EEF, 0x00D2, 0x1ECE, 0x00D5, 0x1EF1, /* 192 */ 0x1EA7, 0x00C1, 0x00C2, 0x1EA5, 0x1EA9, 0x1EAB, 0x1EAD, 0x0111, /* 200 */ 0x1EBB, 0x00C9, 0x00CA, 0x1EB9, 0x1EC9, 0x1EC5, 0x1ECB, 0x1EF9, /* 208 */ 0x01AF, 0x1EE6, 0x1ED3, 0x1ED1, 0x00D4, 0x1ECF, 0x01A1, 0x00C8, /* 216 */ 0x1EEB, 0x1EE9, 0x00DA, 0x0169, 0x01B0, 0x00DD, 0x1EBA, 0xFFFF, /* 224 */ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x1EA3, 0x1EA1, 0x0103, 0xFFFF, /* 232 */ 0x00E8, 0x00E9, 0x00EA, 0x1EBD, 0x00EC, 0x00ED, 0xFFFF, 0x0129, /* 240 */ 0x1EB4, 0x0110, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0xFFFF, 0x01A0, /* 248 */ 0x1EE5, 0x00F9, 0x00FA, 0x1EE7, 0xFFFF, 0x1EF6, 0x1EBC, 0x1EF3, }; static struct strip_data vps_strip_data = { vps_pool, { 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248 } }; static const unsigned short viscii_viqr_data[] = { 2, 'A', '(', '?', DONE, 5, 'A', '(', '~', DONE, 6, 'A', '^', '~', DONE, 20, 'Y', '?', DONE, 25, 'Y', '~', DONE, 30, 'Y', '.', DONE, 128, 'A', '.', DONE, 129, 'A', '(', '\'', DONE, 130, 'A', '(', '`', DONE, 131, 'A', '(', '.', DONE, 132, 'A', '^', '\'', DONE, 133, 'A', '^', '`', DONE, 134, 'A', '^', '?', DONE, 135, 'A', '^', '.', DONE, 136, 'E', '~', DONE, 137, 'E', '.', DONE, 138, 'E', '^', '\'', DONE, 139, 'E', '^', '`', DONE, 140, 'E', '^', '?', DONE, 141, 'E', '^', '~', DONE, 142, 'E', '^', '.', DONE, 143, 'O', '^', '\'', DONE, 144, 'O', '^', '`', DONE, 145, 'O', '^', '?', DONE, 146, 'O', '^', '~', DONE, 147, 'O', '^', '.', DONE, 148, 'O', '+', '.', DONE, 149, 'O', '+', '\'', DONE, 150, 'O', '+', '`', DONE, 151, 'O', '+', '?', DONE, 152, 'I', '.', DONE, 153, 'O', '?', DONE, 154, 'O', '.', DONE, 155, 'I', '?', DONE, 156, 'U', '?', DONE, 157, 'U', '~', DONE, 158, 'U', '.', DONE, 159, 'Y', '`', DONE, 160, 'O', '~', DONE, 161, 'a', '(', '\'', DONE, 162, 'a', '(', '`', DONE, 163, 'a', '(', '.', DONE, 164, 'a', '^', '\'', DONE, 165, 'a', '^', '`', DONE, 166, 'a', '^', '?', DONE, 167, 'a', '^', '.', DONE, 168, 'e', '~', DONE, 169, 'e', '.', DONE, 170, 'e', '^', '\'', DONE, 171, 'e', '^', '`', DONE, 172, 'e', '^', '?', DONE, 173, 'e', '^', '~', DONE, 174, 'e', '^', '.', DONE, 175, 'o', '^', '\'', DONE, 176, 'o', '^', '`', DONE, 177, 'o', '^', '?', DONE, 178, 'o', '^', '~', DONE, 179, 'O', '+', '~', DONE, 180, 'O', '+', DONE, 181, 'o', '^', '.', DONE, 182, 'o', '+', '`', DONE, 183, 'o', '+', '?', DONE, 184, 'i', '.', DONE, 185, 'U', '+', '.', DONE, 186, 'U', '+', '\'', DONE, 187, 'U', '+', '`', DONE, 188, 'U', '+', '?', DONE, 189, 'o', '+', DONE, 190, 'o', '+', '\'', DONE, 191, 'U', '+', DONE, 192, 'A', '`', DONE, 193, 'A', '\'', DONE, 194, 'A', '^', DONE, 195, 'A', '~', DONE, 196, 'A', '?', DONE, 197, 'A', '(', DONE, 198, 'a', '(', '?', DONE, 199, 'a', '(', '~', DONE, 200, 'E', '`', DONE, 201, 'E', '\'', DONE, 202, 'E', '^', DONE, 203, 'E', '?', DONE, 204, 'I', '`', DONE, 205, 'I', '\'', DONE, 206, 'I', '~', DONE, 207, 'y', '`', DONE, 208, 'D', 'D', ELSE, 'D', 'd', ELSE, 'd', 'D', DONE, 209, 'u', '+', '\'', DONE, 210, 'O', '`', DONE, 211, 'O', '\'', DONE, 212, 'O', '^', DONE, 213, 'a', '.', DONE, 214, 'y', '?', DONE, 215, 'u', '+', '`', DONE, 216, 'u', '+', '?', DONE, 217, 'U', '`', DONE, 218, 'U', '\'', DONE, 219, 'y', '~', DONE, 220, 'y', '.', DONE, 221, 'Y', '\'', DONE, 222, 'o', '+', '~', DONE, 223, 'u', '+', DONE, 224, 'a', '`', DONE, 225, 'a', '\'', DONE, 226, 'a', '^', DONE, 227, 'a', '~', DONE, 228, 'a', '?', DONE, 229, 'a', '(', DONE, 230, 'u', '+', '~', DONE, 231, 'a', '^', '~', DONE, 232, 'e', '`', DONE, 233, 'e', '\'', DONE, 234, 'e', '^', DONE, 235, 'e', '?', DONE, 236, 'i', '`', DONE, 237, 'i', '\'', DONE, 238, 'i', '~', DONE, 239, 'i', '?', DONE, 240, 'd', 'd', DONE, 241, 'u', '+', '.', DONE, 242, 'o', '`', DONE, 243, 'o', '\'', DONE, 244, 'o', '^', DONE, 245, 'o', '~', DONE, 246, 'o', '?', DONE, 247, 'o', '.', DONE, 248, 'u', '.', DONE, 249, 'u', '`', DONE, 250, 'u', '\'', DONE, 251, 'u', '~', DONE, 252, 'u', '?', DONE, 253, 'y', '\'', DONE, 254, 'o', '+', '.', DONE, 255, 'U', '+', '~', DONE, DONE }; static const unsigned short viscii_vni_data[] = { 2, 'A', 0xDA, DONE, 5, 'A', 0xDC, DONE, 6, 'A', 0xC3, DONE, 20, 'Y', 0xDB, DONE, 25, 'Y', 0xD5, DONE, 30, 0xCE, DONE, 128, 'A', 0xCF, DONE, 129, 'A', 0xC8, DONE, 130, 'A', 0xC9, DONE, 131, 'A', 0xCB, DONE, 132, 'A', 0xC1, DONE, 133, 'A', 0xC0, DONE, 134, 'A', 0xC5, DONE, 135, 'A', 0xC4, DONE, 136, 'E', 0xD5, DONE, 137, 'E', 0xCF, DONE, 138, 'E', 0xC1, DONE, 139, 'E', 0xC0, DONE, 140, 'E', 0xC5, DONE, 141, 'E', 0xC3, DONE, 142, 'E', 0xC4, DONE, 143, 'O', 0xC1, DONE, 144, 'O', 0xC0, DONE, 145, 'O', 0xC5, DONE, 146, 'O', 0xC3, DONE, 147, 'O', 0xC4, DONE, 148, 0xD4, 0xCF, DONE, 149, 0xD4, 0xD9, DONE, 150, 0xD4, 0xD8, DONE, 151, 0xD4, 0xDB, DONE, 152, 0xD2, DONE, 153, 'O', 0xDB, DONE, 154, 'O', 0xCF, DONE, 155, 0xC6, DONE, 156, 'U', 0xDB, DONE, 157, 'U', 0xD5, DONE, 158, 'U', 0xCF, DONE, 159, 'Y', 0xD8, DONE, 160, 'O', 0xD5, DONE, 161, 'a', 0xE9, DONE, 162, 'a', 0xE8, DONE, 163, 'a', 0xEB, DONE, 164, 'a', 0xE1, DONE, 165, 'a', 0xE0, DONE, 166, 'a', 0xE5, DONE, 167, 'a', 0xE4, DONE, 168, 'e', 0xF5, DONE, 169, 'e', 0xEF, DONE, 170, 'e', 0xE1, DONE, 171, 'e', 0xE0, DONE, 172, 'e', 0xE5, DONE, 173, 'e', 0xE3, DONE, 174, 'e', 0xE4, DONE, 175, 'o', 0xE1, DONE, 176, 'o', 0xE0, DONE, 177, 'o', 0xE5, DONE, 178, 'o', 0xE3, DONE, 179, 0xD4, 0xD5, DONE, 180, 0xD4, DONE, 181, 'o', 0xE4, DONE, 182, 0xF4, 0xF8, DONE, 183, 0xF4, 0xFB, DONE, 184, 0xF2, DONE, 185, 0xD6, 0xCF, DONE, 186, 0xD6, 0xD9, DONE, 187, 0xD6, 0xD8, DONE, 188, 0xD6, 0xDB, DONE, 189, 0xF4, DONE, 190, 0xF4, 0xF9, DONE, 191, 0xD6, DONE, 192, 'A', 0xD8, DONE, 193, 'A', 0xD9, DONE, 194, 'A', 0xC2, DONE, 195, 'A', 0xD5, DONE, 196, 'A', 0xDB, DONE, 197, 'A', 0xCA, DONE, 198, 'a', 0xFA, DONE, 199, 'a', 0xFC, DONE, 200, 'E', 0xD8, DONE, 201, 'E', 0xD9, DONE, 202, 'E', 0xC2, DONE, 203, 'E', 0xDB, DONE, 204, 0xCC, DONE, 205, 0xCD, DONE, 206, 0xD3, DONE, 207, 'y', 0xF8, DONE, 208, 0xD1, DONE, 209, 0xF6, 0xF9, DONE, 210, 'O', 0xD8, DONE, 211, 'O', 0xD9, DONE, 212, 'O', 0xC2, DONE, 213, 'a', 0xEF, DONE, 214, 'y', 0xFB, DONE, 215, 0xF6, 0xF8, DONE, 216, 0xF6, 0xFB, DONE, 217, 'U', 0xD8, DONE, 218, 'U', 0xD9, DONE, 219, 'y', 0xF5, DONE, 220, 0xEE, DONE, 221, 'Y', 0xD9, DONE, 222, 0xF4, 0xF5, DONE, 223, 0xF6, DONE, 224, 'a', 0xF8, DONE, 225, 'a', 0xF9, DONE, 226, 'a', 0xE2, DONE, 227, 'a', 0xF5, DONE, 228, 'a', 0xFB, DONE, 229, 'a', 0xEA, DONE, 230, 0xF6, 0xF5, DONE, 231, 'a', 0xE3, DONE, 232, 'e', 0xF8, DONE, 233, 'e', 0xF9, DONE, 234, 'e', 0xE2, DONE, 235, 'e', 0xFB, DONE, 236, 0xEC, DONE, 237, 0xED, DONE, 238, 0xF3, DONE, 239, 0xE6, DONE, 240, 0xF1, DONE, 241, 0xF6, 0xEF, DONE, 242, 'o', 0xF8, DONE, 243, 'o', 0xF9, DONE, 244, 'o', 0xE2, DONE, 245, 'o', 0xF5, DONE, 246, 'o', 0xFB, DONE, 247, 'o', 0xEF, DONE, 248, 'u', 0xEF, DONE, 249, 'u', 0xF8, DONE, 250, 'u', 0xF9, DONE, 251, 'u', 0xF5, DONE, 252, 'u', 0xFB, DONE, 253, 'y', 0xF9, DONE, 254, 0xF4, 0xEF, DONE, 255, 0xD6, 0xD5, DONE, DONE }; bool module_vietnamese (RECODE_OUTER outer) { if (!recode_declare_strip_data (outer, &tcvn_strip_data, "TCVN")) return false; if (!recode_declare_strip_data (outer, &viscii_strip_data, "VISCII")) return false; if (!recode_declare_strip_data (outer, &vps_strip_data, "VPS")) return false; if (!recode_declare_explode_data (outer, viscii_viqr_data, "VISCII", "VIQR")) return false; if (!recode_declare_explode_data (outer, viscii_vni_data, "VISCII", "VNI")) return false; return true; } void delmodule_vietnamese (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/lat1ansel.c0000644000175000017500000000506314374760602011365 /* Conversion of files between different charsets and usages. Copyright (C) 1990-2018 Free Software Foundation, Inc. Francois Pinard , 1988. 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 3, 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * Copyright (c) 1998, Wolfram Schneider * Konrad Zuse Zentrum für Informationstechnik Berlin. * All rights reserved. * * Read the file ansellat1.l for more information about Z39.47-1993. * */ #include "config.h" #include "common.h" #include "decsteps.h" struct translation { int code; /* code being translated */ const char *string; /* translation string */ }; static struct translation diacritic_translations [] = { #include "lat1ansel.h" {0, NULL}, }; static bool init_latin1_ansel (RECODE_STEP step, const struct recode_request *request, RECODE_CONST_OPTION_LIST before_options _GL_UNUSED, RECODE_CONST_OPTION_LIST after_options _GL_UNUSED) { RECODE_OUTER outer = request->outer; char *pool; const char **table; unsigned counter; struct translation const *cursor; if (!ALLOC_SIZE (table, 256 * sizeof (char *) + 256, const char *)) return false; pool = (char *) (table + 256); for (counter = 0; counter < 128; counter++) { pool[2 * counter] = counter; pool[2 * counter + 1] = '\0'; table[counter] = pool + 2 * counter; } for (counter = 128; counter < 256; counter++) table[counter] = NULL; for (cursor = diacritic_translations; cursor->code; cursor++) table[cursor->code] = cursor->string; step->step_table = table; step->step_table_term_routine = free; return true; } bool module_latin1_ansel (RECODE_OUTER outer) { return recode_declare_single (outer, "Latin-1", "Z39.47:1993", outer->quality_variable_to_byte, init_latin1_ansel, recode_transform_byte_to_variable); } void delmodule_latin1_ansel (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/recode.x.in0000644000175000017500000000016414371655161011371 [NAME] @PACKAGE@ \- converts files between character sets [MAINTAINER] Maintained by Reuben Thomas . recode-3.7.15/src/utf8.c0000644000175000017500000002111514374760602010363 /* Conversion of files between different charsets and surfaces. Copyright © 1996-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1996. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" /* Read next data byte and check its value, discard an illegal sequence. This macro is meant to be used only within the `while' loop in `transform_utf8_ucs[24]'. */ #define GET_DATA_BYTE \ character = recode_get_byte (subtask); \ if (character == EOF) \ { \ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); \ break; \ } \ else if ((BIT_MASK (2) << 6 & character) != 1 << 7) \ { \ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); \ continue; \ } \ else /* Read next data byte and check its value, discard an illegal sequence. Merge it into `value' at POSITION. This macro is meant to be used only within the `while' loop in `transform_utf8_ucs[24]'. */ #define GET_DATA_BYTE_AT(Position) \ GET_DATA_BYTE /* ... else */ value |= (BIT_MASK (6) & character) << Position static bool transform_ucs2_utf8 (RECODE_SUBTASK subtask) { unsigned value; while (recode_get_ucs2 (&value, subtask)) { if (value & ~BIT_MASK (7)) if (value & ~BIT_MASK (11)) { /* 3 bytes - more than 11 bits, but not more than 16. */ recode_put_byte ((BIT_MASK (3) << 5) | (BIT_MASK (6) & value >> 12), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value >> 6), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value), subtask); } else { /* 2 bytes - more than 7 bits, but not more than 11. */ recode_put_byte ((BIT_MASK (2) << 6) | (BIT_MASK (6) & value >> 6), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value), subtask); } else /* 1 byte - not more than 7 bits (that is, ASCII). */ recode_put_byte (value, subtask); } SUBTASK_RETURN (subtask); } static bool transform_ucs4_utf8 (RECODE_SUBTASK subtask) { unsigned value; while (recode_get_ucs4 (&value, subtask)) if (value & ~BIT_MASK (16)) if (value & ~BIT_MASK (26)) if (value & ~BIT_MASK (31)) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); } else { /* 6 bytes - more than 26 bits, but not more than 31. */ recode_put_byte ((BIT_MASK (6) << 2) | (BIT_MASK (6) & value >> 30), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value >> 24), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value >> 18), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value >> 12), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value >> 6), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value), subtask); } else if (value & ~BIT_MASK (21)) { /* 5 bytes - more than 21 bits, but not more than 26. */ recode_put_byte ((BIT_MASK (5) << 3) | (BIT_MASK (6) & value >> 24), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value >> 18), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value >> 12), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value >> 6), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value), subtask); } else { /* 4 bytes - more than 16 bits, but not more than 21. */ recode_put_byte ((BIT_MASK (4) << 4) | (BIT_MASK (6) & value >> 18), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value >> 12), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value >> 6), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value), subtask); } else if (value & ~BIT_MASK (7)) if (value & ~BIT_MASK (11)) { /* 3 bytes - more than 11 bits, but not more than 16. */ recode_put_byte ((BIT_MASK (3) << 5) | (BIT_MASK (6) & value >> 12), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value >> 6), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value), subtask); } else { /* 2 bytes - more than 7 bits, but not more than 11. */ recode_put_byte ((BIT_MASK (2) << 6) | (BIT_MASK (6) & value >> 6), subtask); recode_put_byte ((1 << 7) | (BIT_MASK (6) & value), subtask); } else /* 1 byte - not more than 7 bits (that is, ASCII). */ recode_put_byte (value, subtask); SUBTASK_RETURN (subtask); } /* FIXME: The UTF-8 decoding algorithms do not validate that the minimum length surface was indeed used. This would be necessary for ensuring that the recoding is exactly reversible. In fact, this minimum length surface is also a requirement of UTF-8 specification. */ static bool transform_utf8_ucs4 (RECODE_SUBTASK subtask) { int character = recode_get_byte (subtask); unsigned value; while (character != EOF) /* Process one UTF-8 value. EOF is acceptable on first byte only. */ if ((character & BIT_MASK (4) << 4) == BIT_MASK (4) << 4) if ((character & BIT_MASK (6) << 2) == BIT_MASK (6) << 2) if ((character & BIT_MASK (7) << 1) == BIT_MASK (7) << 1) { /* 7 bytes - more than 31 bits (that is, exactly 32 :-). */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); character = recode_get_byte (subtask); } else { /* 6 bytes - more than 26 bits, but not more than 31. */ value = (BIT_MASK (1) & character) << 30; GET_DATA_BYTE_AT (24); GET_DATA_BYTE_AT (18); GET_DATA_BYTE_AT (12); GET_DATA_BYTE_AT (6); GET_DATA_BYTE_AT (0); recode_put_ucs4 (value, subtask); character = recode_get_byte (subtask); } else if ((character & BIT_MASK (5) << 3) == BIT_MASK (5) << 3) { /* 5 bytes - more than 21 bits, but not more than 26. */ value = (BIT_MASK (2) & character) << 24; GET_DATA_BYTE_AT (18); GET_DATA_BYTE_AT (12); GET_DATA_BYTE_AT (6); GET_DATA_BYTE_AT (0); recode_put_ucs4 (value, subtask); character = recode_get_byte (subtask); } else { /* 4 bytes - more than 16 bits, but not more than 21. */ value = (BIT_MASK (3) & character) << 18; GET_DATA_BYTE_AT (12); GET_DATA_BYTE_AT (6); GET_DATA_BYTE_AT (0); recode_put_ucs4 (value, subtask); character = recode_get_byte (subtask); } else if ((character & BIT_MASK (2) << 6) == BIT_MASK (2) << 6) if ((character & BIT_MASK (3) << 5) == BIT_MASK (3) << 5) { /* 3 bytes - more than 11 bits, but not more than 16. */ value = (BIT_MASK (4) & character) << 12; GET_DATA_BYTE_AT (6); GET_DATA_BYTE_AT (0); recode_put_ucs4 (value, subtask); character = recode_get_byte (subtask); } else { /* 2 bytes - more than 7 bits, but not more than 11. */ value = (BIT_MASK (5) & character) << 6; GET_DATA_BYTE_AT (0); recode_put_ucs4 (value, subtask); character = recode_get_byte (subtask); } else if ((character & 1 << 7) == 1 << 7) { /* Valid only as a continuation byte. */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); character = recode_get_byte (subtask); } else { /* 1 byte - not more than 7 bits (that is, ASCII). */ recode_put_ucs4 (BIT_MASK (8) & character, subtask); character = recode_get_byte (subtask); } SUBTASK_RETURN (subtask); } bool module_utf8 (RECODE_OUTER outer) { return recode_declare_single (outer, "ISO-10646-UCS-4", "UTF-8", outer->quality_variable_to_variable, NULL, transform_ucs4_utf8) && recode_declare_single (outer, "UTF-8", "ISO-10646-UCS-4", outer->quality_variable_to_variable, NULL, transform_utf8_ucs4) && recode_declare_alias (outer, "UTF-2", "UTF-8") && recode_declare_alias (outer, "UTF-FSS", "UTF-8") && recode_declare_alias (outer, "FSS_UTF", "UTF-8") && recode_declare_alias (outer, "TF-8", "UTF-8") && recode_declare_alias (outer, "u8", "UTF-8") /* Simple UCS-2 does not have to go through UTF-16. */ && recode_declare_single (outer, "ISO-10646-UCS-2", "UTF-8", outer->quality_variable_to_variable, NULL, transform_ucs2_utf8); } void delmodule_utf8 (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/cdcnos.c0000644000175000017500000002257314374760602010757 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" static const char *const translation_table[128] = { "^5", /* 0 */ "^6", /* 1 */ "^7", /* 2 */ "^8", /* 3 */ "^9", /* 4 */ "^+", /* 5 */ "^-", /* 6 */ "^*", /* 7 */ "^/", /* 8 */ "^(", /* 9 */ "\n", /* 10, would have been "^)" */ "^$", /* 11 */ "^=", /* 12 */ "^ ", /* 13 */ "^,", /* 14 */ "^.", /* 15 */ "^#", /* 16 */ "^[", /* 17 */ "^]", /* 18 */ "^%", /* 19 */ "^\"", /* 20 */ "^_", /* 21 */ "^!", /* 22 */ "^&", /* 23 */ "^'", /* 24 */ "^?", /* 25 */ "^<", /* 26 */ "^>", /* 27 */ "^@", /* 28 */ "^\\", /* 29 */ "^^", /* 30 */ "^;", /* 31 */ " ", /* 32 */ "!", /* 33 */ "\"", /* 34 */ "#", /* 35 */ "$", /* 36 */ "%", /* 37 */ "&", /* 38 */ "'", /* 39 */ "(", /* 40 */ ")", /* 41 */ "*", /* 42 */ "+", /* 43 */ ",", /* 44 */ "-", /* 45 */ ".", /* 46 */ "/", /* 47 */ "0", /* 48 */ "1", /* 49 */ "2", /* 50 */ "3", /* 51 */ "4", /* 52 */ "5", /* 53 */ "6", /* 54 */ "7", /* 55 */ "8", /* 56 */ "9", /* 57 */ "@D", /* 58 */ ";", /* 59 */ "<", /* 60 */ "=", /* 61 */ ">", /* 62 */ "?", /* 63 */ "@A", /* 64 */ "A", /* 65 */ "B", /* 66 */ "C", /* 67 */ "D", /* 68 */ "E", /* 69 */ "F", /* 70 */ "G", /* 71 */ "H", /* 72 */ "I", /* 73 */ "J", /* 74 */ "K", /* 75 */ "L", /* 76 */ "M", /* 77 */ "N", /* 78 */ "O", /* 79 */ "P", /* 80 */ "Q", /* 81 */ "R", /* 82 */ "S", /* 83 */ "T", /* 84 */ "U", /* 85 */ "V", /* 86 */ "W", /* 87 */ "X", /* 88 */ "Y", /* 89 */ "Z", /* 90 */ "[", /* 91 */ "\\", /* 92 */ "]", /* 93 */ "@B", /* 94 */ "_", /* 95 */ "@G", /* 96 */ "^A", /* 97 */ "^B", /* 98 */ "^C", /* 99 */ "^D", /* 100 */ "^E", /* 101 */ "^F", /* 102 */ "^G", /* 103 */ "^H", /* 104 */ "^I", /* 105 */ "^J", /* 106 */ "^K", /* 107 */ "^L", /* 108 */ "^M", /* 109 */ "^N", /* 110 */ "^O", /* 111 */ "^P", /* 112 */ "^Q", /* 113 */ "^R", /* 114 */ "^S", /* 115 */ "^T", /* 116 */ "^U", /* 117 */ "^V", /* 118 */ "^W", /* 119 */ "^X", /* 120 */ "^Y", /* 121 */ "^Z", /* 122 */ "^0", /* 123 */ "^1", /* 124 */ "^2", /* 125 */ "^3", /* 126 */ "^4", /* 127 */ }; static bool init_ascii_cdcnos (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; const char **table; int counter; if (before_options || after_options) return false; if (!ALLOC (table, 256, const char *)) return false; for (counter = 0; counter < 128; counter++) table[counter] = translation_table[counter]; for (; counter < 256; counter++) table[counter] = NULL; step->step_type = RECODE_BYTE_TO_STRING; step->step_table = table; step->step_table_term_routine = free; return true; } /* Previous obsolete lex code: @A { recode_put_byte ('@', subtask); } @B { recode_put_byte ('^', subtask); } @D { recode_put_byte (':', subtask); } @G { recode_put_byte ('`', subtask); } \^" " { recode_put_byte ( 13, subtask); } \^! { recode_put_byte ( 22, subtask); } \^\" { recode_put_byte ( 20, subtask); } \^# { recode_put_byte ( 16, subtask); } \^$ { recode_put_byte ( 11, subtask); } \^\% { recode_put_byte ( 19, subtask); } \^& { recode_put_byte ( 23, subtask); } \^' { recode_put_byte ( 24, subtask); } \^\( { recode_put_byte ( 9, subtask); } \^\) { recode_put_byte ( 10, subtask); } \^\* { recode_put_byte ( 7, subtask); } \^\+ { recode_put_byte ( 5, subtask); } \^\, { recode_put_byte ( 14, subtask); } \^- { recode_put_byte ( 6, subtask); } \^\. { recode_put_byte ( 15, subtask); } \^\/ { recode_put_byte ( 8, subtask); } \^0 { recode_put_byte ('{', subtask); } \^1 { recode_put_byte ('|', subtask); } \^2 { recode_put_byte ('}', subtask); } \^3 { recode_put_byte ('~', subtask); } \^4 { recode_put_byte (127, subtask); } \^5 { recode_put_byte ( 0, subtask); } \^6 { recode_put_byte ( 1, subtask); } \^7 { recode_put_byte ( 2, subtask); } \^8 { recode_put_byte ( 3, subtask); } \^9 { recode_put_byte ( 4, subtask); } \^; { recode_put_byte ( 31, subtask); } \^< { recode_put_byte ( 26, subtask); } \^= { recode_put_byte ( 12, subtask); } \^> { recode_put_byte ( 27, subtask); } \^? { recode_put_byte ( 25, subtask); } \^@ { recode_put_byte ( 28, subtask); } \^[A-Z] { recode_put_byte (yytext[1]-'A'+'a', subtask); } \^\[ { recode_put_byte ( 17, subtask); } \^\\ { recode_put_byte ( 29, subtask); } \^] { recode_put_byte ( 18, subtask); } \^\^ { recode_put_byte ( 30, subtask); } \^_ { recode_put_byte ( 21, subtask); } \^[a-z] { recode_put_byte (yytext[1], subtask); } */ static bool transform_cdcnos_ascii (RECODE_SUBTASK subtask) { int input_char; /* current character */ while (input_char = recode_get_byte (subtask), input_char != EOF) { switch (input_char) { case '@': switch (input_char = recode_get_byte (subtask), input_char) { case 'A': case 'a': input_char = '@'; break; case 'B': case 'b': input_char = '^'; break; case 'D': case 'd': input_char = ':'; break; case 'G': case 'g': input_char = '`'; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); recode_put_byte ('@', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; case '^': input_char = recode_get_byte (subtask); if (input_char >= 'A' && input_char <= 'Z') input_char += 'a' - 'A'; else if (input_char < 'a' || input_char > 'z') switch (input_char) { case ' ': input_char = 13; break; case '!': input_char = 22; break; case '"': input_char = 20; break; case '#': input_char = 16; break; case '$': input_char = 11; break; case '%': input_char = 19; break; case '&': input_char = 23; break; case '\'': input_char = 24; break; case '(': input_char = 9; break; case ')': RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); input_char = '\n'; /* 10 */ break; case '*': input_char = 7; break; case '+': input_char = 5; break; case ',': input_char = 14; break; case '-': input_char = 6; break; case '.': input_char = 15; break; case '/': input_char = 8; break; case '0': input_char = '{'; break; case '1': input_char = '|'; break; case '2': input_char = '}'; break; case '3': input_char = '~'; break; case '4': input_char = 127; break; case '5': input_char = 0; break; case '6': input_char = 1; break; case '7': input_char = 2; break; case '8': input_char = 3; break; case '9': input_char = 4; break; case ';': input_char = 31; break; case '<': input_char = 26; break; case '=': input_char = 12; break; case '>': input_char = 27; break; case '?': input_char = 25; break; case '@': input_char = 28; break; case '[': input_char = 17; break; case '\\': input_char = 29; break; case ']': input_char = 18; break; case '^': input_char = 30; break; case '_': input_char = 21; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); recode_put_byte ('^', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; default: break; } recode_put_byte (input_char, subtask); } SUBTASK_RETURN (subtask); } bool module_cdcnos (RECODE_OUTER outer) { return recode_declare_single (outer, "ASCII-BS", "CDC-NOS", outer->quality_byte_to_variable, init_ascii_cdcnos, recode_transform_byte_to_variable) && recode_declare_single (outer, "CDC-NOS", "ASCII-BS", outer->quality_variable_to_byte, NULL, transform_cdcnos_ascii) && recode_declare_alias (outer, "NOS", "CDC-NOS"); } void delmodule_cdcnos (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/main.c0000644000175000017500000006276414374760602010440 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2023 Free Software Foundation, Inc. François Pinard , 1990. 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 3, 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 along with this program; if not, see . */ #include "config.h" #include "common.h" #include #include #include #include #include #include #include #include #include "getopt.h" #include "xbinary-io.h" /* Variables. */ /* The name this program was run with. */ const char *program_name; /* If nonzero, display usage information and exit. */ static int show_help = 0; /* If nonzero, print the version on standard output and exit. */ static int show_version = 0; /* If true, show a list of one or all known charsets, then exit. */ static bool show_symbols = false; /* If true, check all charsets for subsets, then exit. */ static bool find_subsets = false; /* User provided list of charset restrictions (option -k). */ static const char *charset_restrictions = NULL; /* Indicates the format for showing only one charset. */ enum recode_list_format list_format = RECODE_NO_FORMAT; /* Table name in generated language code. */ static const char *header_name; /* Language to use for generated code. */ static enum recode_programming_language header_language; /* This option asks recode to report the progress while recoding many files in a single call. */ static bool verbose_flag = false; /* This option merely inhibits messages about non-reversible recodings, but it does not prevent recodings to be aborted or exit status to be set. */ static bool quiet_flag = false; /* If the recoding yields some problems in recode_reversibility in some file, this file replacement is denied and it is left unrecoded or, if recode is used as a mere filter, the recoding is aborted. The following flag forces the recoding to run to completion and the replacement to be done even if the recoding is not reversible. */ static bool force_flag = false; /* When a file is recoded over itself, precautions are taken to move the timestamps of the original file into the recoded file, so to make the recoding the most transparent possible to make, and other tools. However, selecting the following option inhibit the timestamps handling, thus effectively `touching' the file. */ static bool touch_option = false; /* With strict mapping, all recode_reversibility fallbacks get defeated. */ static bool strict_mapping = false; /* Use iconv if possible. */ static bool prefer_iconv = false; /* The following charset name will be ignored, if given. */ static const char *ignored_name = NULL; /* Ordinals of list, BEFORE and AFTER charset. */ static RECODE_SYMBOL list_charset; /* Flag telling usage that we are decoding charsets. */ bool decoding_charset_flag = false; /* Error handling. */ /*-------------------------------------------------. | Produce a message explaining the error in TASK. | `-------------------------------------------------*/ static const char * task_perror (RECODE_CONST_TASK task) { switch (task->error_so_far) { case RECODE_NO_ERROR: return _("No error"); case RECODE_NOT_CANONICAL: return _("Non canonical input"); case RECODE_AMBIGUOUS_OUTPUT: return _("Ambiguous output"); case RECODE_UNTRANSLATABLE: return _("Untranslatable input"); case RECODE_INVALID_INPUT: return _("Invalid input"); case RECODE_SYSTEM_ERROR: return _("System detected problem"); case RECODE_USER_ERROR: return _("Misuse of recoding library"); default: return _("Internal recoding bug"); } } /*-----------------. | Signal handler. | `-----------------*/ #ifdef HAVE_PIPE static void sig_catch(int sig, void (*handler) (int)) { struct sigaction sa; sa.sa_handler = handler; sa.sa_flags = 0; sigemptyset (&sa.sa_mask); sigaction (sig, &sa, NULL); /* ignore error: none possible */ } static void signal_handler (int number) { recode_interrupted = 1; sig_catch (number, signal_handler); } static void setup_signals (void) { sig_catch (SIGPIPE, signal_handler); } #endif /* Main control. */ /*-----------------------------------. | Prints a more detailed Copyright. | `-----------------------------------*/ static void print_copyright (void) { fputs (_("\ This program is free software; you can redistribute it and/or modify\n\ it under the terms of the GNU General Public License as published by\n\ the Free Software Foundation; either version 3, or (at your option)\n\ any later version.\n\ \n\ This program is distributed in the hope that it will be useful,\n\ but WITHOUT ANY WARRANTY; without even the implied warranty of\n\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\ GNU General Public License for more details.\n\ \n\ You should have received a copy of the GNU General Public License\n\ along with this program; if not, see .\n"), stdout); } /*-----------------------------------------------. | Explain how to use the program, then get out. | `-----------------------------------------------*/ static void usage (int status, bool list) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s %s' for more information.\n"), program_name, list ? "--list" : "--help"); else { fputs (_("\ Recode converts files between various character sets and surfaces.\n\ "), stdout); printf (_("\ \n\ Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n"), program_name); fputs (_("\ \n\ If a long option shows an argument as mandatory, then it is mandatory\n\ for the equivalent short option also. Similarly for optional arguments.\n\ "), stdout); fputs (_("\ \n\ Listings:\n\ -l, --list[=FORMAT] list one or all known charsets and aliases\n\ -k, --known=PAIRS restrict charsets according to known PAIRS list\n\ -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n\ -T, --find-subsets report all charsets being subset of others\n\ -C, --copyright display copyright and copying conditions\n\ --help display this help and exit\n\ --version output version information and exit\n\ "), stdout); fputs (_("\ \n\ Operation modes:\n\ -v, --verbose explain sequence of steps and report progress\n\ -q, --quiet, --silent inhibit messages about irreversible recodings\n\ -f, --force force recodings even when not reversible\n\ -t, --touch touch the recoded files after replacement\n\ -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n\ "), stdout); fputs (_("\ \n\ Fine tuning:\n\ -s, --strict use strict mappings; discard untranslatable characters\n\ -d, --diacritics convert only diacritics and special characters for\n\ HTML/LaTeX/BibTeX\n\ -S, --source[=LN] limit recoding to strings and comments as for LN\n\ -c, --colons use colons instead of double quotes for diaeresis\n\ -g, --graphics approximate IBMPC rulers by ASCII graphics\n\ -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n\ -I, --prefer-iconv use iconv if possible\n\ "), stdout); fputs (_("\ \n\ Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n\ FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n\ "), stdout); fputs (_("\ Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale\n\ dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n\ "), stdout); fputs (_("\ With -k, possible before charsets are listed for the given after CHARSET,\n\ both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...'\n\ and BEFs and AFTs being codes are given as decimal numbers.\n"), stdout); fputs (_("\ LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n"), stdout); fputs (_("\ \n\ REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]...\n\ ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER,\n\ with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n\ charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a /\n\ with an empty surface name means no surfaces at all. See the manual.\n"), stdout); fputs (_("\ \n\ Each FILE is recoded over itself, destroying the original. If no\n\ FILE is specified, then act as a filter and recode stdin to stdout.\n"), stdout); fputs (_("\ \n\ Report bugs at https://github.com/rrthomas/recode\n"), stdout); } exit (status); } /*----------------------------------------------------------------------. | Main program. Decode ARGC arguments passed through the ARGV array of | | strings, then launch execution. | `----------------------------------------------------------------------*/ /* Long options equivalences. */ static const struct option long_options[] = { {"colons", no_argument, NULL, 'c'}, {"copyright", no_argument, NULL, 'C'}, {"diacritics", no_argument, NULL, 'd'}, {"find-subsets", no_argument, NULL, 'T'}, {"force", no_argument, NULL, 'f'}, {"header", optional_argument, NULL, 'h'}, {"help", no_argument, &show_help, 1}, {"ignore", required_argument, NULL, 'x'}, {"known", required_argument, NULL, 'k'}, {"list", optional_argument, NULL, 'l'}, {"prefer-iconv", no_argument, NULL, 'I'}, {"quiet", no_argument, NULL, 'q'}, {"sequence", required_argument, NULL, '\n'}, {"source", optional_argument, NULL, 'S'}, {"silent", no_argument, NULL, 'q'}, {"strict", no_argument, NULL, 's'}, {"touch", no_argument, NULL, 't'}, {"verbose", no_argument, NULL, 'v'}, {"version", no_argument, &show_version, 1}, {0, 0, 0, 0}, }; static const char *const format_strings[] = { "decimal", "octal", "hexadecimal", "full", NULL }; static const char *const language_strings[] = { "c", "perl", "po", NULL }; static const char *const sequence_strings[] = { "memory", "files", "pipe", NULL }; static RECODE_OUTER new_outer(unsigned flags) { /* Register all modules and build internal tables. */ RECODE_OUTER outer = recode_new_outer (flags | RECODE_AUTO_ABORT_FLAG); if (!outer) abort (); /* If using strict mapping, remove fallbacks. */ if (outer->strict_mapping) for (RECODE_SINGLE single = outer->single_list; single; single = single->next) single->fallback_routine = NULL; /* Set the ignored charset. */ if (ignored_name) { RECODE_ALIAS alias = recode_find_alias (outer, ignored_name, ALIAS_FIND_AS_CHARSET); if (!alias) { error (0, 0, _("Symbol `%s' is unknown"), ignored_name); usage (EXIT_FAILURE, 1); } alias->symbol->ignore = true; } return outer; } static RECODE_REQUEST new_request(RECODE_OUTER outer, struct recode_request *request_option) { RECODE_REQUEST request = recode_new_request (outer); request->ascii_graphics = request_option->ascii_graphics; request->diacritics_only = request_option->diacritics_only; request->diaeresis_char = request_option->diaeresis_char; request->make_header_flag = request_option->make_header_flag; return request; } int main (int argc, char *const *argv) { int option_char; /* option character */ bool success = true; /* recode_reversibility of all recodings */ static bool (*processor) (RECODE_TASK); struct recode_outer outer_option; struct recode_request request_option; struct recode_task task_option; program_name = argv[0]; /* libtool creates a temporary executable whose names is prefixed with "lt-". Remove this prefix here. */ if (strncmp (program_name, "lt-", 3) == 0) program_name += 3; setlocale (LC_ALL, ""); textdomain (PACKAGE); /* Decode command options. */ if (argc == 1) usage (EXIT_SUCCESS, 0); processor = recode_perform_task; memset (&outer_option, 0, sizeof (struct recode_outer)); memset (&request_option, 0, sizeof (struct recode_request)); memset (&task_option, 0, sizeof (struct recode_task)); request_option.diaeresis_char = '"'; task_option.fail_level = RECODE_AMBIGUOUS_OUTPUT; task_option.abort_level = RECODE_AMBIGUOUS_OUTPUT; while (option_char = getopt_long (argc, argv, "CIFS::Tcdfgh::ik:l::pqstvx:", long_options, NULL), option_char != -1) switch (option_char) { default: usage (EXIT_FAILURE, 0); case NUL: break; case '\n': switch (argmatch (optarg, sequence_strings, NULL, 0)) { case -2: error (0, 0, _("Sequence `%s' is ambiguous"), optarg); usage (EXIT_FAILURE, 0); break; case -1: error (0, 0, _("Sequence `%s' is unknown"), optarg); usage (EXIT_FAILURE, 0); break; /* Ignore for backwards compatibility with version 3.6. */ case 0: case 1: case 2: break; default: break; } break; case 'C': print_copyright (); exit (EXIT_SUCCESS); case 'I': prefer_iconv = true; break; case 'S': if (optarg) switch (argmatch (optarg, language_strings, NULL, 0)) { case -2: error (0, 0, _("Language `%s' is ambiguous"), optarg); usage (EXIT_FAILURE, 0); break; default: /* -1 */ error (0, 0, _("Language `%s' is unknown"), optarg); usage (EXIT_FAILURE, 0); break; case 0: processor = recode_transform_c_source; break; case 2: processor = recode_transform_po_source; break; } else processor = recode_transform_c_source; break; case 'T': find_subsets = true; break; case 'c': request_option.diaeresis_char = ':'; break; case 'd': request_option.diacritics_only = true; break; case 'f': task_option.fail_level = RECODE_SYSTEM_ERROR; task_option.abort_level = RECODE_USER_ERROR; force_flag = true; break; case 'g': request_option.ascii_graphics = true; break; case 'h': request_option.make_header_flag = true; header_name = optarg ? strrchr (optarg, '/') : NULL; if (header_name) { char *buffer; unsigned counter; header_name++; buffer = (char *) xmalloc ((size_t) (header_name - optarg)); if (*header_name == NUL) header_name = NULL; for (counter = 0; optarg[counter] != '/'; counter++) buffer[counter] = tolower (optarg[counter]); buffer[counter] = NUL; switch (argmatch (buffer, language_strings, NULL, 0)) { case -2: error (0, 0, _("Language `%s' is ambiguous"), buffer); usage (EXIT_FAILURE, 0); break; default: /* -1 */ error (0, 0, _("Language `%s' is unknown"), buffer); usage (EXIT_FAILURE, 0); break; case 0: header_language = RECODE_LANGUAGE_C; break; case 1: header_language = RECODE_LANGUAGE_PERL; break; } free (buffer); } else { header_name = optarg; header_language = RECODE_LANGUAGE_C; } break; case 'i': /* Ignore for backwards compatibility with version 3.6. */ break; case 'k': charset_restrictions = optarg; break; case 'l': show_symbols = true; if (optarg) switch (argmatch (optarg, format_strings, NULL, 0)) { case -2: error (0, 0, _("Format `%s' is ambiguous"), optarg); usage (EXIT_FAILURE, 0); break; case -1: error (0, 0, _("Format `%s' is unknown"), optarg); usage (EXIT_FAILURE, 0); break; case 0: list_format = RECODE_DECIMAL_FORMAT; break; case 1: list_format = RECODE_OCTAL_FORMAT; break; case 2: list_format = RECODE_HEXADECIMAL_FORMAT; break; case 3: list_format = RECODE_FULL_FORMAT; break; default: break; } break; case 'p': /* Ignore for backwards compatibility with version 3.6. */ break; case 'q': quiet_flag = true; break; case 's': strict_mapping = true; task_option.fail_level = RECODE_NOT_CANONICAL; task_option.abort_level = RECODE_NOT_CANONICAL; break; case 't': touch_option = true; break; case 'v': verbose_flag = true; break; case 'x': ignored_name = optarg; break; } if (request_option.ascii_graphics) force_flag = true; /* Process trivial options. */ if (show_version) { printf ("%s %s\n", PACKAGE, VERSION); fputs (_("\ Written by François Pinard .\n"), stdout); fputs (_("\ \n\ Copyright (C) 1990-2023 Free Software Foundation, Inc.\n"), stdout); fputs (_("\ This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), stdout); exit (EXIT_SUCCESS); } if (show_help) usage (EXIT_SUCCESS, 0); /* Set up the outer level. */ unsigned flags = 0; if ((ignored_name && *ignored_name == ':') || request_option.make_header_flag) flags |= RECODE_NO_ICONV_FLAG; if (strict_mapping) flags |= RECODE_STRICT_MAPPING_FLAG; if (force_flag) flags |= RECODE_FORCE_FLAG; RECODE_OUTER outer = new_outer (flags); /* Process charset listing options. */ if (find_subsets) { recode_find_and_report_subsets (outer); exit (EXIT_SUCCESS); } if (show_symbols || charset_restrictions) { if (charset_restrictions) if (!recode_decode_known_pairs (outer, charset_restrictions)) { error (0, 0, "Could not understand `%s'", charset_restrictions); usage (EXIT_FAILURE, 0); } if (optind + 1 < argc) { error (0, 0, "Argument `%s' is extraneous", argv[optind]); usage (EXIT_FAILURE, 0); } /* Select a possible charset and a default format. */ if (optind < argc) { RECODE_ALIAS alias = recode_find_alias (outer, argv[optind], ALIAS_FIND_AS_CHARSET); if (!alias) { error (0, 0, _("Charset `%s' is unknown or ambiguous"), argv[optind]); usage (EXIT_FAILURE, 1); } list_charset = alias->symbol; } else if (list_format != RECODE_NO_FORMAT || charset_restrictions) { RECODE_ALIAS alias = recode_find_alias (outer, NULL, ALIAS_FIND_AS_CHARSET); if (!alias) { error (0, 0, _("Charset `%s' is unknown or ambiguous"), argv[optind]); usage (EXIT_FAILURE, 1); } list_charset = alias->symbol; } else list_charset = NULL; /* List the charset(s) appropriately. */ if (charset_restrictions) recode_list_all_symbols (outer, list_charset); else if (list_charset) if (list_format == RECODE_FULL_FORMAT) recode_list_full_charset (outer, list_charset); else recode_list_concise_charset (outer, list_charset, list_format); else recode_list_all_symbols (outer, NULL); /* Then get out. */ exit (EXIT_SUCCESS); } /* Decode the REQUEST argument. */ if (optind + 1 > argc) { error (0, 0, _("Required argument is missing")); usage (EXIT_FAILURE, 0); } RECODE_REQUEST request = new_request (outer, &request_option); const char *user_request = argv[optind]; if (!recode_scan_request (request, user_request)) error (EXIT_FAILURE, 0, _("Request `%s' is erroneous"), user_request); /* If we merely want source code, do it and get out. */ if (request_option.make_header_flag) { recode_format_table (request, header_language, header_name); exit (EXIT_SUCCESS); } /* If we are recoding, and we are allowed to use iconv, and --prefer-iconv was not used, see if we can do it without iconv. */ if ((flags & RECODE_NO_ICONV_FLAG) == 0 && !prefer_iconv) { RECODE_OUTER no_iconv_outer = new_outer (RECODE_NO_ICONV_FLAG); RECODE_REQUEST no_iconv_request = new_request (no_iconv_outer, &request_option); if (recode_scan_request (no_iconv_request, user_request)) { recode_delete_request (request); recode_delete_outer (outer); outer = no_iconv_outer; request = no_iconv_request; } } /* Scan the request once more to get output if in verbose mode. */ if (verbose_flag) { request->verbose_flag = true; recode_scan_request (request, user_request); } /* Discard the request argument. */ optind++; #if HAVE_PIPE setup_signals (); #endif { RECODE_TASK task; task = recode_new_task (request); task->fail_level = task_option.fail_level; task->abort_level = task_option.fail_level; /* If there is no input file, act as a filter. Else, recode all files over themselves. */ if (optind < argc) { /* In case files are recoded over themselves and there is no recoding step at all, do not even try to touch the files. */ if (request->sequence_length > 0) /* Process files, one at a time. */ for (; optind < argc; optind++) { const char *input_name; FILE *file; struct stat file_stat; struct utimbuf file_utime; input_name = realpath (argv[optind], NULL); if (input_name == NULL) error (EXIT_FAILURE, errno, "realpath (%s)", argv[optind]); /* Check if the file can be read and rewritten. */ if (file = fopen (input_name, "r+"), file == NULL) error (EXIT_FAILURE, errno, "fopen (%s)", input_name); /* Save the input file attributes. */ fstat (fileno (file), &file_stat); fclose (file); /* Choose an output file in the same directory. */ char *input_name_copy = xstrdup (input_name); char *output_dir = dirname (input_name_copy); char *output_name; if (asprintf (&output_name, "%s/recode-XXXXXX.tmp", output_dir) == -1) error (EXIT_FAILURE, errno, "asprintf"); int fd = mkstemps (output_name, 4); if (fd == -1) error (EXIT_FAILURE, errno, "mkstemps (%s)", output_name); xset_binary_mode (fd, O_BINARY); /* Recode the file. */ task->input.name = input_name; task->output.name = NULL; task->output.file = fdopen (fd, "w+"); if (task->output.file == NULL) error (EXIT_FAILURE, errno, "fdopen ()"); if (verbose_flag) { fprintf (stderr, _("Recoding %s..."), task->input.name); fflush (stderr); } if ((*processor) (task)) { /* Recoding was successful. */ if (verbose_flag) { fprintf (stderr, _(" done\n")); fflush (stderr); } /* Close the file. */ if (fclose (task->output.file) == EOF) error (EXIT_FAILURE, errno, "close ()"); /* Move the new file over the original. */ if (unlink (input_name) < 0) error (EXIT_FAILURE, errno, "unlink (%s)", input_name); /* Preserve the file permissions if possible. */ chmod (output_name, file_stat.st_mode & 07777); if (rename (output_name, input_name) < 0) error (EXIT_FAILURE, errno, "rename (%s, %s)", output_name, input_name); /* Adjust the time stamp for the new file. */ if (!touch_option) { file_utime.actime = file_stat.st_atime; file_utime.modtime = file_stat.st_mtime; utime (input_name, &file_utime); } } else { /* Recoding failed, discard output. */ success = false; if (verbose_flag) { fprintf (stderr, _(" failed: %s%s%s%s%s%s\n"), task_perror (task), task->error_at_step ? _(" in step `") : "", task->error_at_step ? task->error_at_step->before->name : "", task->error_at_step ? _("..") : "", task->error_at_step ? task->error_at_step->after->name : "", task->error_at_step ? _("'") : ""); fflush (stderr); } else if (!quiet_flag) error (0, 0, _("%s failed: %s%s%s%s%s%s"), input_name, task_perror (task), task->error_at_step ? _(" in step `") : "", task->error_at_step ? task->error_at_step->before->name : "", task->error_at_step ? _("..") : "", task->error_at_step ? task->error_at_step->after->name : "", task->error_at_step ? _("'") : ""); unlink (output_name); } free (output_name); free (input_name_copy); } } else { task->input.name = ""; task->output.name = ""; if (!(*processor) (task)) { success = false; if (!quiet_flag) error (0, 0, _("%s%s%s%s%s%s"), task_perror (task), task->error_at_step ? _(" in step `") : "", task->error_at_step ? task->error_at_step->before->name : "", task->error_at_step ? _("..") : "", task->error_at_step ? task->error_at_step->after->name : "", task->error_at_step ? _("'") : ""); } } } /* Exit with an appropriate status. */ exit (success ? EXIT_SUCCESS : EXIT_FAILURE); } recode-3.7.15/src/quoted.c0000644000175000017500000002355214374760602011005 /* Conversion of files between different charsets and surfaces. Copyright © 1996-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1996. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" static const bool bitnet_flag = false; /* Maximum number of characters per MIME line. */ #define MIME_LINE_LENGTH 76 /* Characters from 33 to 60 inclusive and from 62 to 126 inclusive do not need be quoted. */ static const char safe_char_usual[1 << 7] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0- 15 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 16- 31 */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32- 47 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, /* 48- 63 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 64- 79 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 80- 95 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 96-111 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 /* 112-127 */ }; /* In a Bitnet environment, also quote: ! " # $ @ [ \ ] ^ ` { | } ~ */ static const char safe_char_bitnet[1 << 7] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0- 15 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 16- 31 */ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32- 47 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, /* 48- 63 */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 64- 79 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, /* 80- 95 */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 96-111 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 /* 112-127 */ }; #define PUT_QUOTED(Character) \ do { \ unsigned nibble; \ \ recode_put_byte ('=', subtask); \ nibble = BIT_MASK (4) & (Character) >> 4; \ recode_put_byte ((nibble < 10 ? '0' : 'A' - 10) + nibble, subtask); \ nibble = BIT_MASK (4) & (Character); \ recode_put_byte ((nibble < 10 ? '0' : 'A' - 10) + nibble, subtask); \ } while (false) static bool transform_data_quoted_printable (RECODE_SUBTASK subtask) { const char *safe_char = bitnet_flag ? safe_char_bitnet : safe_char_usual; unsigned available = MIME_LINE_LENGTH; int character = recode_get_byte (subtask); int next_character; /* Proper maximum filling of quoted-printable lines, avoiding a line buffer nor much look-ahead, is a bit trickier than I initially expected. */ while (character != EOF) if (!(character & (1 << 7)) && safe_char[character]) /* Case of a safe character. */ if (available > 1) { recode_put_byte (character, subtask); available--; character = recode_get_byte (subtask); } else { next_character = recode_get_byte (subtask); if (next_character == '\n') { recode_put_byte (character, subtask); recode_put_byte ('\n', subtask); available = MIME_LINE_LENGTH; character = recode_get_byte (subtask); } else if (next_character == EOF) { recode_put_byte (character, subtask); available--; character = EOF; } else { recode_put_byte ('=', subtask); recode_put_byte ('\n', subtask); recode_put_byte (character, subtask); available = MIME_LINE_LENGTH - 1; character = next_character; } } else switch (character) { case '\n': /* Case of a newline. */ recode_put_byte ('\n', subtask); available = MIME_LINE_LENGTH; character = recode_get_byte (subtask); break; case '\t': case ' ': /* Case of a space character. */ next_character = recode_get_byte (subtask); if (next_character == '\n') { if (available < 3) { recode_put_byte ('=', subtask); recode_put_byte ('\n', subtask); } PUT_QUOTED (character); recode_put_byte ('\n', subtask); available = MIME_LINE_LENGTH; character = recode_get_byte (subtask); } else if (next_character == EOF) { if (available < 3) { recode_put_byte ('=', subtask); recode_put_byte ('\n', subtask); available = MIME_LINE_LENGTH; } PUT_QUOTED (character); available--; character = EOF; } else { if (available == 1) { recode_put_byte ('=', subtask); recode_put_byte ('\n', subtask); available = MIME_LINE_LENGTH; } recode_put_byte (character, subtask); available--; character = next_character; } break; default: /* Case of an inconditional quotable character. */ if (available > 3) { PUT_QUOTED (character); available -= 3; character = recode_get_byte (subtask); } else { next_character = recode_get_byte (subtask); if (available == 3 && next_character == '\n') { PUT_QUOTED (character); recode_put_byte ('\n', subtask); available = MIME_LINE_LENGTH; character = recode_get_byte (subtask); } else if (next_character == EOF) { PUT_QUOTED (character); available--; character = EOF; } else { recode_put_byte ('=', subtask); recode_put_byte ('\n', subtask); PUT_QUOTED (character); available = MIME_LINE_LENGTH - 3; character = next_character; } } } if (available != MIME_LINE_LENGTH) { /* The last line was incomplete. */ recode_put_byte ('=', subtask); recode_put_byte ('\n', subtask); } SUBTASK_RETURN (subtask); } static bool transform_quoted_printable_data (RECODE_SUBTASK subtask) { const char *safe_char = bitnet_flag ? safe_char_bitnet : safe_char_usual; unsigned counter = 0; int character = recode_get_byte (subtask); char buffer[MIME_LINE_LENGTH + 1]; char *cursor; unsigned value; while (character != EOF) switch (character) { case '\n': /* Process hard line break. */ if (counter > MIME_LINE_LENGTH) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); counter = 0; recode_put_byte ('\n', subtask); character = recode_get_byte (subtask); break; case ' ': case '\t': /* Process white space. */ cursor = buffer; while (character == ' ' || character == '\t') { if (cursor == buffer + MIME_LINE_LENGTH) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); for (cursor = buffer; cursor < buffer + MIME_LINE_LENGTH; cursor++) recode_put_byte (*cursor, subtask); } counter++; *cursor++ = character; character = recode_get_byte (subtask); } if (character == '\n' || character == EOF) { RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); counter = 0; break; } *cursor = '\0'; for (cursor = buffer; *cursor; cursor++) recode_put_byte (*cursor, subtask); break; case '=': counter++; character = recode_get_byte (subtask); if (character == ' ' || character == '\t' || character == '\n') { /* Process soft line break. */ if (character == ' ' || character == '\t') { RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); while (character == ' ' || character == '\t') { counter++; character = recode_get_byte (subtask); } } if (character != '\n') { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } if (counter > MIME_LINE_LENGTH) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); counter = 0; character = recode_get_byte (subtask); break; } /* Process quoted value. */ counter++; if (character >= '0' && character <= '9') value = (character - '0') << 4; else if (character >= 'a' && character <= 'f') value = (character - 'a' + 10) << 4; else if (character >= 'A' && character <= 'F') value = (character - 'A' + 10) << 4; else { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } character = recode_get_byte (subtask); counter++; if (character >= '0' && character <= '9') value |= character - '0'; else if (character >= 'a' && character <= 'f') value |= character - 'a' + 10; else if (character >= 'A' && character <= 'F') value |= character - 'A' + 10; else { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } if (!(value & (1 << 7)) && safe_char[value]) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); recode_put_byte (value, subtask); character = recode_get_byte (subtask); break; default: /* Process safe character. */ counter++; if (character & (1 << 7) || !safe_char[character]) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); recode_put_byte (character, subtask); character = recode_get_byte (subtask); } if (counter != 0) /* Last line is not terminated. */ RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); SUBTASK_RETURN (subtask); } bool module_quoted_printable (RECODE_OUTER outer) { return recode_declare_single (outer, "data", "Quoted-Printable", outer->quality_variable_to_variable, NULL, transform_data_quoted_printable) && recode_declare_single (outer, "Quoted-Printable", "data", outer->quality_variable_to_variable, NULL, transform_quoted_printable_data) && recode_declare_alias (outer, "quote-printable", "Quoted-Printable") && recode_declare_alias (outer, "QP", "Quoted-Printable"); } void delmodule_quoted_printable (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/recode.10000644000175000017500000000753014766021054010655 .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. .TH RECODE "1" "March 2025" "recode 3.7.15" "User Commands" .SH NAME recode \- converts files between character sets .SH SYNOPSIS .B recode [\fI\,OPTION\/\fR]... [ [\fI\,CHARSET\/\fR] \fI\,| REQUEST \/\fR[\fI\,FILE\/\fR]... ] .SH DESCRIPTION Recode converts files between various character sets and surfaces. .PP If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. .SS "Listings:" .TP \fB\-l\fR, \fB\-\-list\fR[=\fI\,FORMAT\/\fR] list one or all known charsets and aliases .TP \fB\-k\fR, \fB\-\-known\fR=\fI\,PAIRS\/\fR restrict charsets according to known PAIRS list .TP \fB\-h\fR, \fB\-\-header[\fR=\fI\,[LN\/\fR/]NAME] write table NAME on stdout using LN, then exit .TP \fB\-T\fR, \fB\-\-find\-subsets\fR report all charsets being subset of others .TP \fB\-C\fR, \fB\-\-copyright\fR display copyright and copying conditions .TP \fB\-\-help\fR display this help and exit .TP \fB\-\-version\fR output version information and exit .SS "Operation modes:" .TP \fB\-v\fR, \fB\-\-verbose\fR explain sequence of steps and report progress .TP \fB\-q\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR inhibit messages about irreversible recodings .TP \fB\-f\fR, \fB\-\-force\fR force recodings even when not reversible .TP \fB\-t\fR, \fB\-\-touch\fR touch the recoded files after replacement .TP \fB\-i\fR, \fB\-p\fR, \fB\-\-sequence\fR=\fI\,STRATEGY\/\fR ignored for backwards compatibility .SS "Fine tuning:" .TP \fB\-s\fR, \fB\-\-strict\fR use strict mappings; discard untranslatable characters .TP \fB\-d\fR, \fB\-\-diacritics\fR convert only diacritics and special characters for HTML/LaTeX/BibTeX .TP \fB\-S\fR, \fB\-\-source\fR[=\fI\,LN\/\fR] limit recoding to strings and comments as for LN .TP \fB\-c\fR, \fB\-\-colons\fR use colons instead of double quotes for diaeresis .TP \fB\-g\fR, \fB\-\-graphics\fR approximate IBMPC rulers by ASCII graphics .TP \fB\-x\fR, \fB\-\-ignore\fR=\fI\,CHARSET\/\fR ignore CHARSET while choosing a recoding path .TP \fB\-I\fR, \fB\-\-prefer\-iconv\fR use iconv if possible .PP Option \fB\-l\fR with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. With \fB\-k\fR, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. LN is some language, it may be `c', `perl' or `po'; `c' is the default. .PP REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. .PP Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. .SH MAINTAINER Maintained by Reuben Thomas . .SH AUTHOR Written by François Pinard . .SH "REPORTING BUGS" Report bugs at https://github.com/rrthomas/recode .SH COPYRIGHT Copyright \(co 1990\-2023 Free Software Foundation, Inc. .br This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. .SH "SEE ALSO" The full documentation for .B recode is maintained as a Texinfo manual. If the .B info and .B recode programs are properly installed at your site, the command .IP .B info recode .PP should give you access to the complete manual. recode-3.7.15/src/iconvdecl.h0000644000175000017500000017611114765654536011473 /* DO NOT MODIFY THIS FILE! It was generated by `recode/tables.py'. */ /* Conversion of files between different charsets and surfaces. Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . Suite 330, Boston, MA 02111-1307, USA. */ /* This is derived from Bruno Haible's `libiconv' package. */ static const char *iconv_name_list[4701] = { "437", NULL, "437-translit", NULL, "500", NULL, "500-translit", NULL, "500V1", NULL, "500V1-translit", NULL, "850", NULL, "850-translit", NULL, "851", NULL, "851-translit", NULL, "852", NULL, "852-translit", NULL, "855", NULL, "855-translit", NULL, "856", NULL, "856-translit", NULL, "857", NULL, "857-translit", NULL, "858", NULL, "858-translit", NULL, "860", NULL, "860-translit", NULL, "861", NULL, "861-translit", NULL, "862", NULL, "862-translit", NULL, "863", NULL, "863-translit", NULL, "864", NULL, "864-translit", NULL, "865", NULL, "865-translit", NULL, "866", NULL, "866-translit", NULL, "866NAV", NULL, "866NAV-translit", NULL, "869", NULL, "869-translit", NULL, "874", NULL, "874-translit", NULL, "904", NULL, "904-translit", NULL, "1026", NULL, "1026-translit", NULL, "1046", NULL, "1046-translit", NULL, "1047", NULL, "1047-translit", NULL, "8859_1", NULL, "8859_1-translit", NULL, "8859_2", NULL, "8859_2-translit", NULL, "8859_3", NULL, "8859_3-translit", NULL, "8859_4", NULL, "8859_4-translit", NULL, "8859_5", NULL, "8859_5-translit", NULL, "8859_6", NULL, "8859_6-translit", NULL, "8859_7", NULL, "8859_7-translit", NULL, "8859_8", NULL, "8859_8-translit", NULL, "8859_9", NULL, "8859_9-translit", NULL, "10646-1:1993", NULL, "10646-1:1993-translit", NULL, "UCS4", NULL, "UCS4-translit", NULL, "ANSI_X3.4-1968", NULL, "ANSI_X3.4-1968-translit", NULL, "ANSI_X3.4-1986", NULL, "ANSI_X3.4-1986-translit", NULL, "ANSI_X3.4", NULL, "ANSI_X3.4-translit", NULL, "ANSI_X3.110-1983", NULL, "ANSI_X3.110-1983-translit", NULL, "ANSI_X3.110", NULL, "ANSI_X3.110-translit", NULL, "ARABIC", NULL, "ARABIC-translit", NULL, "ARABIC7", NULL, "ARABIC7-translit", NULL, "ARMSCII-8", NULL, "ARMSCII-8-translit", NULL, "ARMSCII8", NULL, "ARMSCII8-translit", NULL, "ASCII", NULL, "ASCII-translit", NULL, "ASMO-708", NULL, "ASMO-708-translit", NULL, "ASMO_449", NULL, "ASMO_449-translit", NULL, "BALTIC", NULL, "BALTIC-translit", NULL, "BIG-5", NULL, "BIG-5-translit", NULL, "BIG-FIVE", NULL, "BIG-FIVE-translit", NULL, "BIG5-HKSCS", NULL, "BIG5-HKSCS-translit", NULL, "BIG5", NULL, "BIG5-translit", NULL, "BIG5HKSCS", NULL, "BIG5HKSCS-translit", NULL, "BIGFIVE", NULL, "BIGFIVE-translit", NULL, "BRF", NULL, "BRF-translit", NULL, "BS_4730", NULL, "BS_4730-translit", NULL, "CA", NULL, "CA-translit", NULL, "CN-BIG5", NULL, "CN-BIG5-translit", NULL, "CN-GB", NULL, "CN-GB-translit", NULL, "CN", NULL, "CN-translit", NULL, "CP-AR", NULL, "CP-AR-translit", NULL, "CP-GR", NULL, "CP-GR-translit", NULL, "CP-HU", NULL, "CP-HU-translit", NULL, "CP037", NULL, "CP037-translit", NULL, "CP038", NULL, "CP038-translit", NULL, "CP273", NULL, "CP273-translit", NULL, "CP274", NULL, "CP274-translit", NULL, "CP275", NULL, "CP275-translit", NULL, "CP278", NULL, "CP278-translit", NULL, "CP280", NULL, "CP280-translit", NULL, "CP281", NULL, "CP281-translit", NULL, "CP282", NULL, "CP282-translit", NULL, "CP284", NULL, "CP284-translit", NULL, "CP285", NULL, "CP285-translit", NULL, "CP290", NULL, "CP290-translit", NULL, "CP297", NULL, "CP297-translit", NULL, "CP367", NULL, "CP367-translit", NULL, "CP420", NULL, "CP420-translit", NULL, "CP423", NULL, "CP423-translit", NULL, "CP424", NULL, "CP424-translit", NULL, "CP437", NULL, "CP437-translit", NULL, "CP500", NULL, "CP500-translit", NULL, "CP737", NULL, "CP737-translit", NULL, "CP770", NULL, "CP770-translit", NULL, "CP771", NULL, "CP771-translit", NULL, "CP772", NULL, "CP772-translit", NULL, "CP773", NULL, "CP773-translit", NULL, "CP774", NULL, "CP774-translit", NULL, "CP775", NULL, "CP775-translit", NULL, "CP803", NULL, "CP803-translit", NULL, "CP813", NULL, "CP813-translit", NULL, "CP819", NULL, "CP819-translit", NULL, "CP850", NULL, "CP850-translit", NULL, "CP851", NULL, "CP851-translit", NULL, "CP852", NULL, "CP852-translit", NULL, "CP855", NULL, "CP855-translit", NULL, "CP856", NULL, "CP856-translit", NULL, "CP857", NULL, "CP857-translit", NULL, "CP858", NULL, "CP858-translit", NULL, "CP860", NULL, "CP860-translit", NULL, "CP861", NULL, "CP861-translit", NULL, "CP862", NULL, "CP862-translit", NULL, "CP863", NULL, "CP863-translit", NULL, "CP864", NULL, "CP864-translit", NULL, "CP865", NULL, "CP865-translit", NULL, "CP866", NULL, "CP866-translit", NULL, "CP866NAV", NULL, "CP866NAV-translit", NULL, "CP868", NULL, "CP868-translit", NULL, "CP869", NULL, "CP869-translit", NULL, "CP870", NULL, "CP870-translit", NULL, "CP871", NULL, "CP871-translit", NULL, "CP874", NULL, "CP874-translit", NULL, "CP875", NULL, "CP875-translit", NULL, "CP880", NULL, "CP880-translit", NULL, "CP891", NULL, "CP891-translit", NULL, "CP901", NULL, "CP901-translit", NULL, "CP902", NULL, "CP902-translit", NULL, "CP903", NULL, "CP903-translit", NULL, "CP904", NULL, "CP904-translit", NULL, "CP905", NULL, "CP905-translit", NULL, "CP912", NULL, "CP912-translit", NULL, "CP915", NULL, "CP915-translit", NULL, "CP916", NULL, "CP916-translit", NULL, "CP918", NULL, "CP918-translit", NULL, "CP920", NULL, "CP920-translit", NULL, "CP921", NULL, "CP921-translit", NULL, "CP922", NULL, "CP922-translit", NULL, "CP930", NULL, "CP930-translit", NULL, "CP932", NULL, "CP932-translit", NULL, "CP933", NULL, "CP933-translit", NULL, "CP935", NULL, "CP935-translit", NULL, "CP936", NULL, "CP936-translit", NULL, "CP937", NULL, "CP937-translit", NULL, "CP939", NULL, "CP939-translit", NULL, "CP949", NULL, "CP949-translit", NULL, "CP950", NULL, "CP950-translit", NULL, "CP1004", NULL, "CP1004-translit", NULL, "CP1008", NULL, "CP1008-translit", NULL, "CP1025", NULL, "CP1025-translit", NULL, "CP1026", NULL, "CP1026-translit", NULL, "CP1046", NULL, "CP1046-translit", NULL, "CP1047", NULL, "CP1047-translit", NULL, "CP1070", NULL, "CP1070-translit", NULL, "CP1079", NULL, "CP1079-translit", NULL, "CP1081", NULL, "CP1081-translit", NULL, "CP1084", NULL, "CP1084-translit", NULL, "CP1089", NULL, "CP1089-translit", NULL, "CP1097", NULL, "CP1097-translit", NULL, "CP1112", NULL, "CP1112-translit", NULL, "CP1122", NULL, "CP1122-translit", NULL, "CP1123", NULL, "CP1123-translit", NULL, "CP1124", NULL, "CP1124-translit", NULL, "CP1125", NULL, "CP1125-translit", NULL, "CP1129", NULL, "CP1129-translit", NULL, "CP1130", NULL, "CP1130-translit", NULL, "CP1132", NULL, "CP1132-translit", NULL, "CP1133", NULL, "CP1133-translit", NULL, "CP1137", NULL, "CP1137-translit", NULL, "CP1140", NULL, "CP1140-translit", NULL, "CP1141", NULL, "CP1141-translit", NULL, "CP1142", NULL, "CP1142-translit", NULL, "CP1143", NULL, "CP1143-translit", NULL, "CP1144", NULL, "CP1144-translit", NULL, "CP1145", NULL, "CP1145-translit", NULL, "CP1146", NULL, "CP1146-translit", NULL, "CP1147", NULL, "CP1147-translit", NULL, "CP1148", NULL, "CP1148-translit", NULL, "CP1149", NULL, "CP1149-translit", NULL, "CP1153", NULL, "CP1153-translit", NULL, "CP1154", NULL, "CP1154-translit", NULL, "CP1155", NULL, "CP1155-translit", NULL, "CP1156", NULL, "CP1156-translit", NULL, "CP1157", NULL, "CP1157-translit", NULL, "CP1158", NULL, "CP1158-translit", NULL, "CP1160", NULL, "CP1160-translit", NULL, "CP1161", NULL, "CP1161-translit", NULL, "CP1162", NULL, "CP1162-translit", NULL, "CP1163", NULL, "CP1163-translit", NULL, "CP1164", NULL, "CP1164-translit", NULL, "CP1166", NULL, "CP1166-translit", NULL, "CP1167", NULL, "CP1167-translit", NULL, "CP1250", NULL, "CP1250-translit", NULL, "CP1251", NULL, "CP1251-translit", NULL, "CP1252", NULL, "CP1252-translit", NULL, "CP1253", NULL, "CP1253-translit", NULL, "CP1254", NULL, "CP1254-translit", NULL, "CP1255", NULL, "CP1255-translit", NULL, "CP1256", NULL, "CP1256-translit", NULL, "CP1257", NULL, "CP1257-translit", NULL, "CP1258", NULL, "CP1258-translit", NULL, "CP1282", NULL, "CP1282-translit", NULL, "CP1361", NULL, "CP1361-translit", NULL, "CP1364", NULL, "CP1364-translit", NULL, "CP1371", NULL, "CP1371-translit", NULL, "CP1388", NULL, "CP1388-translit", NULL, "CP1390", NULL, "CP1390-translit", NULL, "CP1399", NULL, "CP1399-translit", NULL, "CP4517", NULL, "CP4517-translit", NULL, "CP4899", NULL, "CP4899-translit", NULL, "CP4909", NULL, "CP4909-translit", NULL, "CP4971", NULL, "CP4971-translit", NULL, "CP5347", NULL, "CP5347-translit", NULL, "CP9030", NULL, "CP9030-translit", NULL, "CP9066", NULL, "CP9066-translit", NULL, "CP9448", NULL, "CP9448-translit", NULL, "CP10007", NULL, "CP10007-translit", NULL, "CP12712", NULL, "CP12712-translit", NULL, "CP16804", NULL, "CP16804-translit", NULL, "CPIBM861", NULL, "CPIBM861-translit", NULL, "CSA7-1", NULL, "CSA7-1-translit", NULL, "CSA7-2", NULL, "CSA7-2-translit", NULL, "CSASCII", NULL, "CSASCII-translit", NULL, "CSA_T500-1983", NULL, "CSA_T500-1983-translit", NULL, "CSA_T500", NULL, "CSA_T500-translit", NULL, "CSA_Z243.4-1985-1", NULL, "CSA_Z243.4-1985-1-translit", NULL, "CSA_Z243.4-1985-2", NULL, "CSA_Z243.4-1985-2-translit", NULL, "CSA_Z243.419851", NULL, "CSA_Z243.419851-translit", NULL, "CSA_Z243.419852", NULL, "CSA_Z243.419852-translit", NULL, "CSDECMCS", NULL, "CSDECMCS-translit", NULL, "CSEBCDICATDE", NULL, "CSEBCDICATDE-translit", NULL, "CSEBCDICATDEA", NULL, "CSEBCDICATDEA-translit", NULL, "CSEBCDICCAFR", NULL, "CSEBCDICCAFR-translit", NULL, "CSEBCDICDKNO", NULL, "CSEBCDICDKNO-translit", NULL, "CSEBCDICDKNOA", NULL, "CSEBCDICDKNOA-translit", NULL, "CSEBCDICES", NULL, "CSEBCDICES-translit", NULL, "CSEBCDICESA", NULL, "CSEBCDICESA-translit", NULL, "CSEBCDICESS", NULL, "CSEBCDICESS-translit", NULL, "CSEBCDICFISE", NULL, "CSEBCDICFISE-translit", NULL, "CSEBCDICFISEA", NULL, "CSEBCDICFISEA-translit", NULL, "CSEBCDICFR", NULL, "CSEBCDICFR-translit", NULL, "CSEBCDICIT", NULL, "CSEBCDICIT-translit", NULL, "CSEBCDICPT", NULL, "CSEBCDICPT-translit", NULL, "CSEBCDICUK", NULL, "CSEBCDICUK-translit", NULL, "CSEBCDICUS", NULL, "CSEBCDICUS-translit", NULL, "CSEUCKR", NULL, "CSEUCKR-translit", NULL, "CSEUCPKDFMTJAPANESE", NULL, "CSEUCPKDFMTJAPANESE-translit", NULL, "CSGB2312", NULL, "CSGB2312-translit", NULL, "CSHPROMAN8", NULL, "CSHPROMAN8-translit", NULL, "CSIBM037", NULL, "CSIBM037-translit", NULL, "CSIBM038", NULL, "CSIBM038-translit", NULL, "CSIBM273", NULL, "CSIBM273-translit", NULL, "CSIBM274", NULL, "CSIBM274-translit", NULL, "CSIBM275", NULL, "CSIBM275-translit", NULL, "CSIBM277", NULL, "CSIBM277-translit", NULL, "CSIBM278", NULL, "CSIBM278-translit", NULL, "CSIBM280", NULL, "CSIBM280-translit", NULL, "CSIBM281", NULL, "CSIBM281-translit", NULL, "CSIBM284", NULL, "CSIBM284-translit", NULL, "CSIBM285", NULL, "CSIBM285-translit", NULL, "CSIBM290", NULL, "CSIBM290-translit", NULL, "CSIBM297", NULL, "CSIBM297-translit", NULL, "CSIBM420", NULL, "CSIBM420-translit", NULL, "CSIBM423", NULL, "CSIBM423-translit", NULL, "CSIBM424", NULL, "CSIBM424-translit", NULL, "CSIBM500", NULL, "CSIBM500-translit", NULL, "CSIBM803", NULL, "CSIBM803-translit", NULL, "CSIBM851", NULL, "CSIBM851-translit", NULL, "CSIBM855", NULL, "CSIBM855-translit", NULL, "CSIBM856", NULL, "CSIBM856-translit", NULL, "CSIBM857", NULL, "CSIBM857-translit", NULL, "CSIBM860", NULL, "CSIBM860-translit", NULL, "CSIBM863", NULL, "CSIBM863-translit", NULL, "CSIBM864", NULL, "CSIBM864-translit", NULL, "CSIBM865", NULL, "CSIBM865-translit", NULL, "CSIBM866", NULL, "CSIBM866-translit", NULL, "CSIBM868", NULL, "CSIBM868-translit", NULL, "CSIBM869", NULL, "CSIBM869-translit", NULL, "CSIBM870", NULL, "CSIBM870-translit", NULL, "CSIBM871", NULL, "CSIBM871-translit", NULL, "CSIBM880", NULL, "CSIBM880-translit", NULL, "CSIBM891", NULL, "CSIBM891-translit", NULL, "CSIBM901", NULL, "CSIBM901-translit", NULL, "CSIBM902", NULL, "CSIBM902-translit", NULL, "CSIBM903", NULL, "CSIBM903-translit", NULL, "CSIBM904", NULL, "CSIBM904-translit", NULL, "CSIBM905", NULL, "CSIBM905-translit", NULL, "CSIBM918", NULL, "CSIBM918-translit", NULL, "CSIBM921", NULL, "CSIBM921-translit", NULL, "CSIBM922", NULL, "CSIBM922-translit", NULL, "CSIBM930", NULL, "CSIBM930-translit", NULL, "CSIBM932", NULL, "CSIBM932-translit", NULL, "CSIBM933", NULL, "CSIBM933-translit", NULL, "CSIBM935", NULL, "CSIBM935-translit", NULL, "CSIBM937", NULL, "CSIBM937-translit", NULL, "CSIBM939", NULL, "CSIBM939-translit", NULL, "CSIBM943", NULL, "CSIBM943-translit", NULL, "CSIBM1008", NULL, "CSIBM1008-translit", NULL, "CSIBM1025", NULL, "CSIBM1025-translit", NULL, "CSIBM1026", NULL, "CSIBM1026-translit", NULL, "CSIBM1097", NULL, "CSIBM1097-translit", NULL, "CSIBM1112", NULL, "CSIBM1112-translit", NULL, "CSIBM1122", NULL, "CSIBM1122-translit", NULL, "CSIBM1123", NULL, "CSIBM1123-translit", NULL, "CSIBM1124", NULL, "CSIBM1124-translit", NULL, "CSIBM1129", NULL, "CSIBM1129-translit", NULL, "CSIBM1130", NULL, "CSIBM1130-translit", NULL, "CSIBM1132", NULL, "CSIBM1132-translit", NULL, "CSIBM1133", NULL, "CSIBM1133-translit", NULL, "CSIBM1137", NULL, "CSIBM1137-translit", NULL, "CSIBM1140", NULL, "CSIBM1140-translit", NULL, "CSIBM1141", NULL, "CSIBM1141-translit", NULL, "CSIBM1142", NULL, "CSIBM1142-translit", NULL, "CSIBM1143", NULL, "CSIBM1143-translit", NULL, "CSIBM1144", NULL, "CSIBM1144-translit", NULL, "CSIBM1145", NULL, "CSIBM1145-translit", NULL, "CSIBM1146", NULL, "CSIBM1146-translit", NULL, "CSIBM1147", NULL, "CSIBM1147-translit", NULL, "CSIBM1148", NULL, "CSIBM1148-translit", NULL, "CSIBM1149", NULL, "CSIBM1149-translit", NULL, "CSIBM1153", NULL, "CSIBM1153-translit", NULL, "CSIBM1154", NULL, "CSIBM1154-translit", NULL, "CSIBM1155", NULL, "CSIBM1155-translit", NULL, "CSIBM1156", NULL, "CSIBM1156-translit", NULL, "CSIBM1157", NULL, "CSIBM1157-translit", NULL, "CSIBM1158", NULL, "CSIBM1158-translit", NULL, "CSIBM1160", NULL, "CSIBM1160-translit", NULL, "CSIBM1161", NULL, "CSIBM1161-translit", NULL, "CSIBM1163", NULL, "CSIBM1163-translit", NULL, "CSIBM1164", NULL, "CSIBM1164-translit", NULL, "CSIBM1166", NULL, "CSIBM1166-translit", NULL, "CSIBM1167", NULL, "CSIBM1167-translit", NULL, "CSIBM1364", NULL, "CSIBM1364-translit", NULL, "CSIBM1371", NULL, "CSIBM1371-translit", NULL, "CSIBM1388", NULL, "CSIBM1388-translit", NULL, "CSIBM1390", NULL, "CSIBM1390-translit", NULL, "CSIBM1399", NULL, "CSIBM1399-translit", NULL, "CSIBM4517", NULL, "CSIBM4517-translit", NULL, "CSIBM4899", NULL, "CSIBM4899-translit", NULL, "CSIBM4909", NULL, "CSIBM4909-translit", NULL, "CSIBM4971", NULL, "CSIBM4971-translit", NULL, "CSIBM5347", NULL, "CSIBM5347-translit", NULL, "CSIBM9030", NULL, "CSIBM9030-translit", NULL, "CSIBM9066", NULL, "CSIBM9066-translit", NULL, "CSIBM9448", NULL, "CSIBM9448-translit", NULL, "CSIBM12712", NULL, "CSIBM12712-translit", NULL, "CSIBM16804", NULL, "CSIBM16804-translit", NULL, "CSIBM11621162", NULL, "CSIBM11621162-translit", NULL, "CSISO4UNITEDKINGDOM", NULL, "CSISO4UNITEDKINGDOM-translit", NULL, "CSISO10SWEDISH", NULL, "CSISO10SWEDISH-translit", NULL, "CSISO11SWEDISHFORNAMES", NULL, "CSISO11SWEDISHFORNAMES-translit", NULL, "CSISO14JISC6220RO", NULL, "CSISO14JISC6220RO-translit", NULL, "CSISO15ITALIAN", NULL, "CSISO15ITALIAN-translit", NULL, "CSISO16PORTUGESE", NULL, "CSISO16PORTUGESE-translit", NULL, "CSISO17SPANISH", NULL, "CSISO17SPANISH-translit", NULL, "CSISO18GREEK7OLD", NULL, "CSISO18GREEK7OLD-translit", NULL, "CSISO19LATINGREEK", NULL, "CSISO19LATINGREEK-translit", NULL, "CSISO21GERMAN", NULL, "CSISO21GERMAN-translit", NULL, "CSISO25FRENCH", NULL, "CSISO25FRENCH-translit", NULL, "CSISO27LATINGREEK1", NULL, "CSISO27LATINGREEK1-translit", NULL, "CSISO49INIS", NULL, "CSISO49INIS-translit", NULL, "CSISO50INIS8", NULL, "CSISO50INIS8-translit", NULL, "CSISO51INISCYRILLIC", NULL, "CSISO51INISCYRILLIC-translit", NULL, "CSISO58GB1988", NULL, "CSISO58GB1988-translit", NULL, "CSISO60DANISHNORWEGIAN", NULL, "CSISO60DANISHNORWEGIAN-translit", NULL, "CSISO60NORWEGIAN1", NULL, "CSISO60NORWEGIAN1-translit", NULL, "CSISO61NORWEGIAN2", NULL, "CSISO61NORWEGIAN2-translit", NULL, "CSISO69FRENCH", NULL, "CSISO69FRENCH-translit", NULL, "CSISO84PORTUGUESE2", NULL, "CSISO84PORTUGUESE2-translit", NULL, "CSISO85SPANISH2", NULL, "CSISO85SPANISH2-translit", NULL, "CSISO86HUNGARIAN", NULL, "CSISO86HUNGARIAN-translit", NULL, "CSISO88GREEK7", NULL, "CSISO88GREEK7-translit", NULL, "CSISO89ASMO449", NULL, "CSISO89ASMO449-translit", NULL, "CSISO90", NULL, "CSISO90-translit", NULL, "CSISO92JISC62991984B", NULL, "CSISO92JISC62991984B-translit", NULL, "CSISO99NAPLPS", NULL, "CSISO99NAPLPS-translit", NULL, "CSISO103T618BIT", NULL, "CSISO103T618BIT-translit", NULL, "CSISO111ECMACYRILLIC", NULL, "CSISO111ECMACYRILLIC-translit", NULL, "CSISO121CANADIAN1", NULL, "CSISO121CANADIAN1-translit", NULL, "CSISO122CANADIAN2", NULL, "CSISO122CANADIAN2-translit", NULL, "CSISO139CSN369103", NULL, "CSISO139CSN369103-translit", NULL, "CSISO141JUSIB1002", NULL, "CSISO141JUSIB1002-translit", NULL, "CSISO143IECP271", NULL, "CSISO143IECP271-translit", NULL, "CSISO150", NULL, "CSISO150-translit", NULL, "CSISO150GREEKCCITT", NULL, "CSISO150GREEKCCITT-translit", NULL, "CSISO151CUBA", NULL, "CSISO151CUBA-translit", NULL, "CSISO153GOST1976874", NULL, "CSISO153GOST1976874-translit", NULL, "CSISO646DANISH", NULL, "CSISO646DANISH-translit", NULL, "CSISO2022CN", NULL, "CSISO2022CN-translit", NULL, "CSISO2022JP", NULL, "CSISO2022JP-translit", NULL, "CSISO2022JP2", NULL, "CSISO2022JP2-translit", NULL, "CSISO2022KR", NULL, "CSISO2022KR-translit", NULL, "CSISO2033", NULL, "CSISO2033-translit", NULL, "CSISO5427CYRILLIC", NULL, "CSISO5427CYRILLIC-translit", NULL, "CSISO5427CYRILLIC1981", NULL, "CSISO5427CYRILLIC1981-translit", NULL, "CSISO5428GREEK", NULL, "CSISO5428GREEK-translit", NULL, "CSISO10367BOX", NULL, "CSISO10367BOX-translit", NULL, "CSISOLATIN1", NULL, "CSISOLATIN1-translit", NULL, "CSISOLATIN2", NULL, "CSISOLATIN2-translit", NULL, "CSISOLATIN3", NULL, "CSISOLATIN3-translit", NULL, "CSISOLATIN4", NULL, "CSISOLATIN4-translit", NULL, "CSISOLATIN5", NULL, "CSISOLATIN5-translit", NULL, "CSISOLATIN6", NULL, "CSISOLATIN6-translit", NULL, "CSISOLATINARABIC", NULL, "CSISOLATINARABIC-translit", NULL, "CSISOLATINCYRILLIC", NULL, "CSISOLATINCYRILLIC-translit", NULL, "CSISOLATINGREEK", NULL, "CSISOLATINGREEK-translit", NULL, "CSISOLATINHEBREW", NULL, "CSISOLATINHEBREW-translit", NULL, "CSKOI8R", NULL, "CSKOI8R-translit", NULL, "CSKSC5636", NULL, "CSKSC5636-translit", NULL, "CSMACINTOSH", NULL, "CSMACINTOSH-translit", NULL, "CSNATSDANO", NULL, "CSNATSDANO-translit", NULL, "CSNATSSEFI", NULL, "CSNATSSEFI-translit", NULL, "CSN_369103", NULL, "CSN_369103-translit", NULL, "CSPC8CODEPAGE437", NULL, "CSPC8CODEPAGE437-translit", NULL, "CSPC775BALTIC", NULL, "CSPC775BALTIC-translit", NULL, "CSPC850MULTILINGUAL", NULL, "CSPC850MULTILINGUAL-translit", NULL, "CSPC858MULTILINGUAL", NULL, "CSPC858MULTILINGUAL-translit", NULL, "CSPC862LATINHEBREW", NULL, "CSPC862LATINHEBREW-translit", NULL, "CSPCP852", NULL, "CSPCP852-translit", NULL, "CSSHIFTJIS", NULL, "CSSHIFTJIS-translit", NULL, "CSUCS4", NULL, "CSUCS4-translit", NULL, "CSUNICODE", NULL, "CSUNICODE-translit", NULL, "CSWINDOWS31J", NULL, "CSWINDOWS31J-translit", NULL, "CUBA", NULL, "CUBA-translit", NULL, "CWI-2", NULL, "CWI-2-translit", NULL, "CWI", NULL, "CWI-translit", NULL, "CYRILLIC", NULL, "CYRILLIC-translit", NULL, "DE", NULL, "DE-translit", NULL, "DEC-MCS", NULL, "DEC-MCS-translit", NULL, "DEC", NULL, "DEC-translit", NULL, "DECMCS", NULL, "DECMCS-translit", NULL, "DIN_66003", NULL, "DIN_66003-translit", NULL, "DK", NULL, "DK-translit", NULL, "DS2089", NULL, "DS2089-translit", NULL, "DS_2089", NULL, "DS_2089-translit", NULL, "E13B", NULL, "E13B-translit", NULL, "EBCDIC-AT-DE-A", NULL, "EBCDIC-AT-DE-A-translit", NULL, "EBCDIC-AT-DE", NULL, "EBCDIC-AT-DE-translit", NULL, "EBCDIC-BE", NULL, "EBCDIC-BE-translit", NULL, "EBCDIC-BR", NULL, "EBCDIC-BR-translit", NULL, "EBCDIC-CA-FR", NULL, "EBCDIC-CA-FR-translit", NULL, "EBCDIC-CP-AR1", NULL, "EBCDIC-CP-AR1-translit", NULL, "EBCDIC-CP-AR2", NULL, "EBCDIC-CP-AR2-translit", NULL, "EBCDIC-CP-BE", NULL, "EBCDIC-CP-BE-translit", NULL, "EBCDIC-CP-CA", NULL, "EBCDIC-CP-CA-translit", NULL, "EBCDIC-CP-CH", NULL, "EBCDIC-CP-CH-translit", NULL, "EBCDIC-CP-DK", NULL, "EBCDIC-CP-DK-translit", NULL, "EBCDIC-CP-ES", NULL, "EBCDIC-CP-ES-translit", NULL, "EBCDIC-CP-FI", NULL, "EBCDIC-CP-FI-translit", NULL, "EBCDIC-CP-FR", NULL, "EBCDIC-CP-FR-translit", NULL, "EBCDIC-CP-GB", NULL, "EBCDIC-CP-GB-translit", NULL, "EBCDIC-CP-GR", NULL, "EBCDIC-CP-GR-translit", NULL, "EBCDIC-CP-HE", NULL, "EBCDIC-CP-HE-translit", NULL, "EBCDIC-CP-IS", NULL, "EBCDIC-CP-IS-translit", NULL, "EBCDIC-CP-IT", NULL, "EBCDIC-CP-IT-translit", NULL, "EBCDIC-CP-NL", NULL, "EBCDIC-CP-NL-translit", NULL, "EBCDIC-CP-NO", NULL, "EBCDIC-CP-NO-translit", NULL, "EBCDIC-CP-ROECE", NULL, "EBCDIC-CP-ROECE-translit", NULL, "EBCDIC-CP-SE", NULL, "EBCDIC-CP-SE-translit", NULL, "EBCDIC-CP-TR", NULL, "EBCDIC-CP-TR-translit", NULL, "EBCDIC-CP-US", NULL, "EBCDIC-CP-US-translit", NULL, "EBCDIC-CP-WT", NULL, "EBCDIC-CP-WT-translit", NULL, "EBCDIC-CP-YU", NULL, "EBCDIC-CP-YU-translit", NULL, "EBCDIC-CYRILLIC", NULL, "EBCDIC-CYRILLIC-translit", NULL, "EBCDIC-DK-NO-A", NULL, "EBCDIC-DK-NO-A-translit", NULL, "EBCDIC-DK-NO", NULL, "EBCDIC-DK-NO-translit", NULL, "EBCDIC-ES-A", NULL, "EBCDIC-ES-A-translit", NULL, "EBCDIC-ES-S", NULL, "EBCDIC-ES-S-translit", NULL, "EBCDIC-ES", NULL, "EBCDIC-ES-translit", NULL, "EBCDIC-FI-SE-A", NULL, "EBCDIC-FI-SE-A-translit", NULL, "EBCDIC-FI-SE", NULL, "EBCDIC-FI-SE-translit", NULL, "EBCDIC-FR", NULL, "EBCDIC-FR-translit", NULL, "EBCDIC-GREEK", NULL, "EBCDIC-GREEK-translit", NULL, "EBCDIC-INT", NULL, "EBCDIC-INT-translit", NULL, "EBCDIC-INT1", NULL, "EBCDIC-INT1-translit", NULL, "EBCDIC-IS-FRISS", NULL, "EBCDIC-IS-FRISS-translit", NULL, "EBCDIC-IT", NULL, "EBCDIC-IT-translit", NULL, "EBCDIC-JP-E", NULL, "EBCDIC-JP-E-translit", NULL, "EBCDIC-JP-KANA", NULL, "EBCDIC-JP-KANA-translit", NULL, "EBCDIC-PT", NULL, "EBCDIC-PT-translit", NULL, "EBCDIC-UK", NULL, "EBCDIC-UK-translit", NULL, "EBCDIC-US", NULL, "EBCDIC-US-translit", NULL, "EBCDICATDE", NULL, "EBCDICATDE-translit", NULL, "EBCDICATDEA", NULL, "EBCDICATDEA-translit", NULL, "EBCDICCAFR", NULL, "EBCDICCAFR-translit", NULL, "EBCDICDKNO", NULL, "EBCDICDKNO-translit", NULL, "EBCDICDKNOA", NULL, "EBCDICDKNOA-translit", NULL, "EBCDICES", NULL, "EBCDICES-translit", NULL, "EBCDICESA", NULL, "EBCDICESA-translit", NULL, "EBCDICESS", NULL, "EBCDICESS-translit", NULL, "EBCDICFISE", NULL, "EBCDICFISE-translit", NULL, "EBCDICFISEA", NULL, "EBCDICFISEA-translit", NULL, "EBCDICFR", NULL, "EBCDICFR-translit", NULL, "EBCDICISFRISS", NULL, "EBCDICISFRISS-translit", NULL, "EBCDICIT", NULL, "EBCDICIT-translit", NULL, "EBCDICPT", NULL, "EBCDICPT-translit", NULL, "EBCDICUK", NULL, "EBCDICUK-translit", NULL, "EBCDICUS", NULL, "EBCDICUS-translit", NULL, "ECMA-114", NULL, "ECMA-114-translit", NULL, "ECMA-118", NULL, "ECMA-118-translit", NULL, "ECMA-128", NULL, "ECMA-128-translit", NULL, "ECMA-CYRILLIC", NULL, "ECMA-CYRILLIC-translit", NULL, "ECMACYRILLIC", NULL, "ECMACYRILLIC-translit", NULL, "ELOT_928", NULL, "ELOT_928-translit", NULL, "ES", NULL, "ES-translit", NULL, "ES2", NULL, "ES2-translit", NULL, "EUC-CN", NULL, "EUC-CN-translit", NULL, "EUC-JISX0213", NULL, "EUC-JISX0213-translit", NULL, "EUC-JP-MS", NULL, "EUC-JP-MS-translit", NULL, "EUC-JP", NULL, "EUC-JP-translit", NULL, "EUC-KR", NULL, "EUC-KR-translit", NULL, "EUC-TW", NULL, "EUC-TW-translit", NULL, "EUCCN", NULL, "EUCCN-translit", NULL, "EUCJP-MS", NULL, "EUCJP-MS-translit", NULL, "EUCJP-OPEN", NULL, "EUCJP-OPEN-translit", NULL, "EUCJP-WIN", NULL, "EUCJP-WIN-translit", NULL, "EUCJP", NULL, "EUCJP-translit", NULL, "EUCKR", NULL, "EUCKR-translit", NULL, "EUCTW", NULL, "EUCTW-translit", NULL, "FI", NULL, "FI-translit", NULL, "FR", NULL, "FR-translit", NULL, "GB", NULL, "GB-translit", NULL, "GB2312", NULL, "GB2312-translit", NULL, "GB13000", NULL, "GB13000-translit", NULL, "GB18030", NULL, "GB18030-translit", NULL, "GBK", NULL, "GBK-translit", NULL, "GB_1988-80", NULL, "GB_1988-80-translit", NULL, "GB_198880", NULL, "GB_198880-translit", NULL, "GEORGIAN-ACADEMY", NULL, "GEORGIAN-ACADEMY-translit", NULL, "GEORGIAN-PS", NULL, "GEORGIAN-PS-translit", NULL, "GOST_19768-74", NULL, "GOST_19768-74-translit", NULL, "GOST_19768", NULL, "GOST_19768-translit", NULL, "GOST_1976874", NULL, "GOST_1976874-translit", NULL, "GREEK-CCITT", NULL, "GREEK-CCITT-translit", NULL, "GREEK", NULL, "GREEK-translit", NULL, "GREEK7-OLD", NULL, "GREEK7-OLD-translit", NULL, "GREEK7", NULL, "GREEK7-translit", NULL, "GREEK7OLD", NULL, "GREEK7OLD-translit", NULL, "GREEK8", NULL, "GREEK8-translit", NULL, "GREEKCCITT", NULL, "GREEKCCITT-translit", NULL, "HEBREW", NULL, "HEBREW-translit", NULL, "HP-GREEK8", NULL, "HP-GREEK8-translit", NULL, "HP-ROMAN8", NULL, "HP-ROMAN8-translit", NULL, "HP-ROMAN9", NULL, "HP-ROMAN9-translit", NULL, "HP-THAI8", NULL, "HP-THAI8-translit", NULL, "HP-TURKISH8", NULL, "HP-TURKISH8-translit", NULL, "HPGREEK8", NULL, "HPGREEK8-translit", NULL, "HPROMAN8", NULL, "HPROMAN8-translit", NULL, "HPROMAN9", NULL, "HPROMAN9-translit", NULL, "HPTHAI8", NULL, "HPTHAI8-translit", NULL, "HPTURKISH8", NULL, "HPTURKISH8-translit", NULL, "HU", NULL, "HU-translit", NULL, "IBM-803", NULL, "IBM-803-translit", NULL, "IBM-856", NULL, "IBM-856-translit", NULL, "IBM-901", NULL, "IBM-901-translit", NULL, "IBM-902", NULL, "IBM-902-translit", NULL, "IBM-921", NULL, "IBM-921-translit", NULL, "IBM-922", NULL, "IBM-922-translit", NULL, "IBM-930", NULL, "IBM-930-translit", NULL, "IBM-932", NULL, "IBM-932-translit", NULL, "IBM-933", NULL, "IBM-933-translit", NULL, "IBM-935", NULL, "IBM-935-translit", NULL, "IBM-937", NULL, "IBM-937-translit", NULL, "IBM-939", NULL, "IBM-939-translit", NULL, "IBM-943", NULL, "IBM-943-translit", NULL, "IBM-1008", NULL, "IBM-1008-translit", NULL, "IBM-1025", NULL, "IBM-1025-translit", NULL, "IBM-1046", NULL, "IBM-1046-translit", NULL, "IBM-1047", NULL, "IBM-1047-translit", NULL, "IBM-1097", NULL, "IBM-1097-translit", NULL, "IBM-1112", NULL, "IBM-1112-translit", NULL, "IBM-1122", NULL, "IBM-1122-translit", NULL, "IBM-1123", NULL, "IBM-1123-translit", NULL, "IBM-1124", NULL, "IBM-1124-translit", NULL, "IBM-1129", NULL, "IBM-1129-translit", NULL, "IBM-1130", NULL, "IBM-1130-translit", NULL, "IBM-1132", NULL, "IBM-1132-translit", NULL, "IBM-1133", NULL, "IBM-1133-translit", NULL, "IBM-1137", NULL, "IBM-1137-translit", NULL, "IBM-1140", NULL, "IBM-1140-translit", NULL, "IBM-1141", NULL, "IBM-1141-translit", NULL, "IBM-1142", NULL, "IBM-1142-translit", NULL, "IBM-1143", NULL, "IBM-1143-translit", NULL, "IBM-1144", NULL, "IBM-1144-translit", NULL, "IBM-1145", NULL, "IBM-1145-translit", NULL, "IBM-1146", NULL, "IBM-1146-translit", NULL, "IBM-1147", NULL, "IBM-1147-translit", NULL, "IBM-1148", NULL, "IBM-1148-translit", NULL, "IBM-1149", NULL, "IBM-1149-translit", NULL, "IBM-1153", NULL, "IBM-1153-translit", NULL, "IBM-1154", NULL, "IBM-1154-translit", NULL, "IBM-1155", NULL, "IBM-1155-translit", NULL, "IBM-1156", NULL, "IBM-1156-translit", NULL, "IBM-1157", NULL, "IBM-1157-translit", NULL, "IBM-1158", NULL, "IBM-1158-translit", NULL, "IBM-1160", NULL, "IBM-1160-translit", NULL, "IBM-1161", NULL, "IBM-1161-translit", NULL, "IBM-1162", NULL, "IBM-1162-translit", NULL, "IBM-1163", NULL, "IBM-1163-translit", NULL, "IBM-1164", NULL, "IBM-1164-translit", NULL, "IBM-1166", NULL, "IBM-1166-translit", NULL, "IBM-1167", NULL, "IBM-1167-translit", NULL, "IBM-1364", NULL, "IBM-1364-translit", NULL, "IBM-1371", NULL, "IBM-1371-translit", NULL, "IBM-1388", NULL, "IBM-1388-translit", NULL, "IBM-1390", NULL, "IBM-1390-translit", NULL, "IBM-1399", NULL, "IBM-1399-translit", NULL, "IBM-4517", NULL, "IBM-4517-translit", NULL, "IBM-4899", NULL, "IBM-4899-translit", NULL, "IBM-4909", NULL, "IBM-4909-translit", NULL, "IBM-4971", NULL, "IBM-4971-translit", NULL, "IBM-5347", NULL, "IBM-5347-translit", NULL, "IBM-9030", NULL, "IBM-9030-translit", NULL, "IBM-9066", NULL, "IBM-9066-translit", NULL, "IBM-9448", NULL, "IBM-9448-translit", NULL, "IBM-12712", NULL, "IBM-12712-translit", NULL, "IBM-16804", NULL, "IBM-16804-translit", NULL, "IBM037", NULL, "IBM037-translit", NULL, "IBM038", NULL, "IBM038-translit", NULL, "IBM256", NULL, "IBM256-translit", NULL, "IBM273", NULL, "IBM273-translit", NULL, "IBM274", NULL, "IBM274-translit", NULL, "IBM275", NULL, "IBM275-translit", NULL, "IBM277", NULL, "IBM277-translit", NULL, "IBM278", NULL, "IBM278-translit", NULL, "IBM280", NULL, "IBM280-translit", NULL, "IBM281", NULL, "IBM281-translit", NULL, "IBM284", NULL, "IBM284-translit", NULL, "IBM285", NULL, "IBM285-translit", NULL, "IBM290", NULL, "IBM290-translit", NULL, "IBM297", NULL, "IBM297-translit", NULL, "IBM367", NULL, "IBM367-translit", NULL, "IBM420", NULL, "IBM420-translit", NULL, "IBM423", NULL, "IBM423-translit", NULL, "IBM424", NULL, "IBM424-translit", NULL, "IBM437", NULL, "IBM437-translit", NULL, "IBM500", NULL, "IBM500-translit", NULL, "IBM775", NULL, "IBM775-translit", NULL, "IBM803", NULL, "IBM803-translit", NULL, "IBM813", NULL, "IBM813-translit", NULL, "IBM819", NULL, "IBM819-translit", NULL, "IBM848", NULL, "IBM848-translit", NULL, "IBM850", NULL, "IBM850-translit", NULL, "IBM851", NULL, "IBM851-translit", NULL, "IBM852", NULL, "IBM852-translit", NULL, "IBM855", NULL, "IBM855-translit", NULL, "IBM856", NULL, "IBM856-translit", NULL, "IBM857", NULL, "IBM857-translit", NULL, "IBM858", NULL, "IBM858-translit", NULL, "IBM860", NULL, "IBM860-translit", NULL, "IBM861", NULL, "IBM861-translit", NULL, "IBM862", NULL, "IBM862-translit", NULL, "IBM863", NULL, "IBM863-translit", NULL, "IBM864", NULL, "IBM864-translit", NULL, "IBM865", NULL, "IBM865-translit", NULL, "IBM866", NULL, "IBM866-translit", NULL, "IBM866NAV", NULL, "IBM866NAV-translit", NULL, "IBM868", NULL, "IBM868-translit", NULL, "IBM869", NULL, "IBM869-translit", NULL, "IBM870", NULL, "IBM870-translit", NULL, "IBM871", NULL, "IBM871-translit", NULL, "IBM874", NULL, "IBM874-translit", NULL, "IBM875", NULL, "IBM875-translit", NULL, "IBM880", NULL, "IBM880-translit", NULL, "IBM891", NULL, "IBM891-translit", NULL, "IBM901", NULL, "IBM901-translit", NULL, "IBM902", NULL, "IBM902-translit", NULL, "IBM903", NULL, "IBM903-translit", NULL, "IBM904", NULL, "IBM904-translit", NULL, "IBM905", NULL, "IBM905-translit", NULL, "IBM912", NULL, "IBM912-translit", NULL, "IBM915", NULL, "IBM915-translit", NULL, "IBM916", NULL, "IBM916-translit", NULL, "IBM918", NULL, "IBM918-translit", NULL, "IBM920", NULL, "IBM920-translit", NULL, "IBM921", NULL, "IBM921-translit", NULL, "IBM922", NULL, "IBM922-translit", NULL, "IBM930", NULL, "IBM930-translit", NULL, "IBM932", NULL, "IBM932-translit", NULL, "IBM933", NULL, "IBM933-translit", NULL, "IBM935", NULL, "IBM935-translit", NULL, "IBM937", NULL, "IBM937-translit", NULL, "IBM939", NULL, "IBM939-translit", NULL, "IBM943", NULL, "IBM943-translit", NULL, "IBM1004", NULL, "IBM1004-translit", NULL, "IBM1008", NULL, "IBM1008-translit", NULL, "IBM1025", NULL, "IBM1025-translit", NULL, "IBM1026", NULL, "IBM1026-translit", NULL, "IBM1046", NULL, "IBM1046-translit", NULL, "IBM1047", NULL, "IBM1047-translit", NULL, "IBM1089", NULL, "IBM1089-translit", NULL, "IBM1097", NULL, "IBM1097-translit", NULL, "IBM1112", NULL, "IBM1112-translit", NULL, "IBM1122", NULL, "IBM1122-translit", NULL, "IBM1123", NULL, "IBM1123-translit", NULL, "IBM1124", NULL, "IBM1124-translit", NULL, "IBM1129", NULL, "IBM1129-translit", NULL, "IBM1130", NULL, "IBM1130-translit", NULL, "IBM1132", NULL, "IBM1132-translit", NULL, "IBM1133", NULL, "IBM1133-translit", NULL, "IBM1137", NULL, "IBM1137-translit", NULL, "IBM1140", NULL, "IBM1140-translit", NULL, "IBM1141", NULL, "IBM1141-translit", NULL, "IBM1142", NULL, "IBM1142-translit", NULL, "IBM1143", NULL, "IBM1143-translit", NULL, "IBM1144", NULL, "IBM1144-translit", NULL, "IBM1145", NULL, "IBM1145-translit", NULL, "IBM1146", NULL, "IBM1146-translit", NULL, "IBM1147", NULL, "IBM1147-translit", NULL, "IBM1148", NULL, "IBM1148-translit", NULL, "IBM1149", NULL, "IBM1149-translit", NULL, "IBM1153", NULL, "IBM1153-translit", NULL, "IBM1154", NULL, "IBM1154-translit", NULL, "IBM1155", NULL, "IBM1155-translit", NULL, "IBM1156", NULL, "IBM1156-translit", NULL, "IBM1157", NULL, "IBM1157-translit", NULL, "IBM1158", NULL, "IBM1158-translit", NULL, "IBM1160", NULL, "IBM1160-translit", NULL, "IBM1161", NULL, "IBM1161-translit", NULL, "IBM1162", NULL, "IBM1162-translit", NULL, "IBM1163", NULL, "IBM1163-translit", NULL, "IBM1164", NULL, "IBM1164-translit", NULL, "IBM1166", NULL, "IBM1166-translit", NULL, "IBM1167", NULL, "IBM1167-translit", NULL, "IBM1364", NULL, "IBM1364-translit", NULL, "IBM1371", NULL, "IBM1371-translit", NULL, "IBM1388", NULL, "IBM1388-translit", NULL, "IBM1390", NULL, "IBM1390-translit", NULL, "IBM1399", NULL, "IBM1399-translit", NULL, "IBM4517", NULL, "IBM4517-translit", NULL, "IBM4899", NULL, "IBM4899-translit", NULL, "IBM4909", NULL, "IBM4909-translit", NULL, "IBM4971", NULL, "IBM4971-translit", NULL, "IBM5347", NULL, "IBM5347-translit", NULL, "IBM9030", NULL, "IBM9030-translit", NULL, "IBM9066", NULL, "IBM9066-translit", NULL, "IBM9448", NULL, "IBM9448-translit", NULL, "IBM12712", NULL, "IBM12712-translit", NULL, "IBM16804", NULL, "IBM16804-translit", NULL, "IEC_P27-1", NULL, "IEC_P27-1-translit", NULL, "IEC_P271", NULL, "IEC_P271-translit", NULL, "INIS-8", NULL, "INIS-8-translit", NULL, "INIS-CYRILLIC", NULL, "INIS-CYRILLIC-translit", NULL, "INIS", NULL, "INIS-translit", NULL, "INIS8", NULL, "INIS8-translit", NULL, "INISCYRILLIC", NULL, "INISCYRILLIC-translit", NULL, "ISIRI-3342", NULL, "ISIRI-3342-translit", NULL, "ISIRI3342", NULL, "ISIRI3342-translit", NULL, "ISO-2022-CN-EXT", NULL, "ISO-2022-CN-EXT-translit", NULL, "ISO-2022-CN", NULL, "ISO-2022-CN-translit", NULL, "ISO-2022-JP-2", NULL, "ISO-2022-JP-2-translit", NULL, "ISO-2022-JP-3", NULL, "ISO-2022-JP-3-translit", NULL, "ISO-2022-JP", NULL, "ISO-2022-JP-translit", NULL, "ISO-2022-KR", NULL, "ISO-2022-KR-translit", NULL, "ISO-8859-1", NULL, "ISO-8859-1-translit", NULL, "ISO-8859-2", NULL, "ISO-8859-2-translit", NULL, "ISO-8859-3", NULL, "ISO-8859-3-translit", NULL, "ISO-8859-4", NULL, "ISO-8859-4-translit", NULL, "ISO-8859-5", NULL, "ISO-8859-5-translit", NULL, "ISO-8859-6", NULL, "ISO-8859-6-translit", NULL, "ISO-8859-7", NULL, "ISO-8859-7-translit", NULL, "ISO-8859-8", NULL, "ISO-8859-8-translit", NULL, "ISO-8859-9", NULL, "ISO-8859-9-translit", NULL, "ISO-8859-9E", NULL, "ISO-8859-9E-translit", NULL, "ISO-8859-10", NULL, "ISO-8859-10-translit", NULL, "ISO-8859-11", NULL, "ISO-8859-11-translit", NULL, "ISO-8859-13", NULL, "ISO-8859-13-translit", NULL, "ISO-8859-14", NULL, "ISO-8859-14-translit", NULL, "ISO-8859-15", NULL, "ISO-8859-15-translit", NULL, "ISO-8859-16", NULL, "ISO-8859-16-translit", NULL, "ISO-10646", NULL, "ISO-10646-translit", NULL, "UCS2", NULL, "UCS2-translit", NULL, "UTF-8", NULL, "UTF-8-translit", NULL, "UTF8", NULL, "UTF8-translit", NULL, "ISO-CELTIC", NULL, "ISO-CELTIC-translit", NULL, "ISO-IR-4", NULL, "ISO-IR-4-translit", NULL, "ISO-IR-6", NULL, "ISO-IR-6-translit", NULL, "ISO-IR-8-1", NULL, "ISO-IR-8-1-translit", NULL, "ISO-IR-9-1", NULL, "ISO-IR-9-1-translit", NULL, "ISO-IR-10", NULL, "ISO-IR-10-translit", NULL, "ISO-IR-11", NULL, "ISO-IR-11-translit", NULL, "ISO-IR-14", NULL, "ISO-IR-14-translit", NULL, "ISO-IR-15", NULL, "ISO-IR-15-translit", NULL, "ISO-IR-16", NULL, "ISO-IR-16-translit", NULL, "ISO-IR-17", NULL, "ISO-IR-17-translit", NULL, "ISO-IR-18", NULL, "ISO-IR-18-translit", NULL, "ISO-IR-19", NULL, "ISO-IR-19-translit", NULL, "ISO-IR-21", NULL, "ISO-IR-21-translit", NULL, "ISO-IR-25", NULL, "ISO-IR-25-translit", NULL, "ISO-IR-27", NULL, "ISO-IR-27-translit", NULL, "ISO-IR-37", NULL, "ISO-IR-37-translit", NULL, "ISO-IR-49", NULL, "ISO-IR-49-translit", NULL, "ISO-IR-50", NULL, "ISO-IR-50-translit", NULL, "ISO-IR-51", NULL, "ISO-IR-51-translit", NULL, "ISO-IR-54", NULL, "ISO-IR-54-translit", NULL, "ISO-IR-55", NULL, "ISO-IR-55-translit", NULL, "ISO-IR-57", NULL, "ISO-IR-57-translit", NULL, "ISO-IR-60", NULL, "ISO-IR-60-translit", NULL, "ISO-IR-61", NULL, "ISO-IR-61-translit", NULL, "ISO-IR-69", NULL, "ISO-IR-69-translit", NULL, "ISO-IR-84", NULL, "ISO-IR-84-translit", NULL, "ISO-IR-85", NULL, "ISO-IR-85-translit", NULL, "ISO-IR-86", NULL, "ISO-IR-86-translit", NULL, "ISO-IR-88", NULL, "ISO-IR-88-translit", NULL, "ISO-IR-89", NULL, "ISO-IR-89-translit", NULL, "ISO-IR-90", NULL, "ISO-IR-90-translit", NULL, "ISO-IR-92", NULL, "ISO-IR-92-translit", NULL, "ISO-IR-98", NULL, "ISO-IR-98-translit", NULL, "ISO-IR-99", NULL, "ISO-IR-99-translit", NULL, "ISO-IR-100", NULL, "ISO-IR-100-translit", NULL, "ISO-IR-101", NULL, "ISO-IR-101-translit", NULL, "ISO-IR-103", NULL, "ISO-IR-103-translit", NULL, "ISO-IR-109", NULL, "ISO-IR-109-translit", NULL, "ISO-IR-110", NULL, "ISO-IR-110-translit", NULL, "ISO-IR-111", NULL, "ISO-IR-111-translit", NULL, "ISO-IR-121", NULL, "ISO-IR-121-translit", NULL, "ISO-IR-122", NULL, "ISO-IR-122-translit", NULL, "ISO-IR-126", NULL, "ISO-IR-126-translit", NULL, "ISO-IR-127", NULL, "ISO-IR-127-translit", NULL, "ISO-IR-138", NULL, "ISO-IR-138-translit", NULL, "ISO-IR-139", NULL, "ISO-IR-139-translit", NULL, "ISO-IR-141", NULL, "ISO-IR-141-translit", NULL, "ISO-IR-143", NULL, "ISO-IR-143-translit", NULL, "ISO-IR-144", NULL, "ISO-IR-144-translit", NULL, "ISO-IR-148", NULL, "ISO-IR-148-translit", NULL, "ISO-IR-150", NULL, "ISO-IR-150-translit", NULL, "ISO-IR-151", NULL, "ISO-IR-151-translit", NULL, "ISO-IR-153", NULL, "ISO-IR-153-translit", NULL, "ISO-IR-155", NULL, "ISO-IR-155-translit", NULL, "ISO-IR-156", NULL, "ISO-IR-156-translit", NULL, "ISO-IR-157", NULL, "ISO-IR-157-translit", NULL, "ISO-IR-166", NULL, "ISO-IR-166-translit", NULL, "ISO-IR-179", NULL, "ISO-IR-179-translit", NULL, "ISO-IR-193", NULL, "ISO-IR-193-translit", NULL, "ISO-IR-197", NULL, "ISO-IR-197-translit", NULL, "ISO-IR-199", NULL, "ISO-IR-199-translit", NULL, "ISO-IR-203", NULL, "ISO-IR-203-translit", NULL, "ISO-IR-209", NULL, "ISO-IR-209-translit", NULL, "ISO-IR-226", NULL, "ISO-IR-226-translit", NULL, "TR_11548-1", NULL, "TR_11548-1-translit", NULL, "ISO646-CA", NULL, "ISO646-CA-translit", NULL, "ISO646-CA2", NULL, "ISO646-CA2-translit", NULL, "ISO646-CN", NULL, "ISO646-CN-translit", NULL, "ISO646-CU", NULL, "ISO646-CU-translit", NULL, "ISO646-DE", NULL, "ISO646-DE-translit", NULL, "ISO646-DK", NULL, "ISO646-DK-translit", NULL, "ISO646-ES", NULL, "ISO646-ES-translit", NULL, "ISO646-ES2", NULL, "ISO646-ES2-translit", NULL, "ISO646-FI", NULL, "ISO646-FI-translit", NULL, "ISO646-FR", NULL, "ISO646-FR-translit", NULL, "ISO646-FR1", NULL, "ISO646-FR1-translit", NULL, "ISO646-GB", NULL, "ISO646-GB-translit", NULL, "ISO646-HU", NULL, "ISO646-HU-translit", NULL, "ISO646-IT", NULL, "ISO646-IT-translit", NULL, "ISO646-JP-OCR-B", NULL, "ISO646-JP-OCR-B-translit", NULL, "ISO646-JP", NULL, "ISO646-JP-translit", NULL, "ISO646-KR", NULL, "ISO646-KR-translit", NULL, "ISO646-NO", NULL, "ISO646-NO-translit", NULL, "ISO646-NO2", NULL, "ISO646-NO2-translit", NULL, "ISO646-PT", NULL, "ISO646-PT-translit", NULL, "ISO646-PT2", NULL, "ISO646-PT2-translit", NULL, "ISO646-SE", NULL, "ISO646-SE-translit", NULL, "ISO646-SE2", NULL, "ISO646-SE2-translit", NULL, "ISO646-US", NULL, "ISO646-US-translit", NULL, "ISO646-YU", NULL, "ISO646-YU-translit", NULL, "ISO2022CN", NULL, "ISO2022CN-translit", NULL, "ISO2022CNEXT", NULL, "ISO2022CNEXT-translit", NULL, "ISO2022JP", NULL, "ISO2022JP-translit", NULL, "ISO2022JP2", NULL, "ISO2022JP2-translit", NULL, "ISO2022KR", NULL, "ISO2022KR-translit", NULL, "ISO6937", NULL, "ISO6937-translit", NULL, "ISO8859-1", NULL, "ISO8859-1-translit", NULL, "ISO8859-2", NULL, "ISO8859-2-translit", NULL, "ISO8859-3", NULL, "ISO8859-3-translit", NULL, "ISO8859-4", NULL, "ISO8859-4-translit", NULL, "ISO8859-5", NULL, "ISO8859-5-translit", NULL, "ISO8859-6", NULL, "ISO8859-6-translit", NULL, "ISO8859-7", NULL, "ISO8859-7-translit", NULL, "ISO8859-8", NULL, "ISO8859-8-translit", NULL, "ISO8859-9", NULL, "ISO8859-9-translit", NULL, "ISO8859-9E", NULL, "ISO8859-9E-translit", NULL, "ISO8859-10", NULL, "ISO8859-10-translit", NULL, "ISO8859-11", NULL, "ISO8859-11-translit", NULL, "ISO8859-13", NULL, "ISO8859-13-translit", NULL, "ISO8859-14", NULL, "ISO8859-14-translit", NULL, "ISO8859-15", NULL, "ISO8859-15-translit", NULL, "ISO8859-16", NULL, "ISO8859-16-translit", NULL, "ISO11548-1", NULL, "ISO11548-1-translit", NULL, "ISO88591", NULL, "ISO88591-translit", NULL, "ISO88592", NULL, "ISO88592-translit", NULL, "ISO88593", NULL, "ISO88593-translit", NULL, "ISO88594", NULL, "ISO88594-translit", NULL, "ISO88595", NULL, "ISO88595-translit", NULL, "ISO88596", NULL, "ISO88596-translit", NULL, "ISO88597", NULL, "ISO88597-translit", NULL, "ISO88598", NULL, "ISO88598-translit", NULL, "ISO88599", NULL, "ISO88599-translit", NULL, "ISO88599E", NULL, "ISO88599E-translit", NULL, "ISO885910", NULL, "ISO885910-translit", NULL, "ISO885911", NULL, "ISO885911-translit", NULL, "ISO885913", NULL, "ISO885913-translit", NULL, "ISO885914", NULL, "ISO885914-translit", NULL, "ISO885915", NULL, "ISO885915-translit", NULL, "ISO885916", NULL, "ISO885916-translit", NULL, "ISO_646.IRV:1991", NULL, "ISO_646.IRV:1991-translit", NULL, "ISO_2033-1983", NULL, "ISO_2033-1983-translit", NULL, "ISO_2033", NULL, "ISO_2033-translit", NULL, "ISO_5427-EXT", NULL, "ISO_5427-EXT-translit", NULL, "ISO_5427", NULL, "ISO_5427-translit", NULL, "ISO_5427:1981", NULL, "ISO_5427:1981-translit", NULL, "ISO_5427EXT", NULL, "ISO_5427EXT-translit", NULL, "ISO_5428", NULL, "ISO_5428-translit", NULL, "ISO_5428:1980", NULL, "ISO_5428:1980-translit", NULL, "ISO_6937-2", NULL, "ISO_6937-2-translit", NULL, "ISO_6937-2:1983", NULL, "ISO_6937-2:1983-translit", NULL, "ISO_6937", NULL, "ISO_6937-translit", NULL, "ISO_6937:1992", NULL, "ISO_6937:1992-translit", NULL, "ISO_8859-1", NULL, "ISO_8859-1-translit", NULL, "ISO_8859-1:1987", NULL, "ISO_8859-1:1987-translit", NULL, "ISO_8859-2", NULL, "ISO_8859-2-translit", NULL, "ISO_8859-2:1987", NULL, "ISO_8859-2:1987-translit", NULL, "ISO_8859-3", NULL, "ISO_8859-3-translit", NULL, "ISO_8859-3:1988", NULL, "ISO_8859-3:1988-translit", NULL, "ISO_8859-4", NULL, "ISO_8859-4-translit", NULL, "ISO_8859-4:1988", NULL, "ISO_8859-4:1988-translit", NULL, "ISO_8859-5", NULL, "ISO_8859-5-translit", NULL, "ISO_8859-5:1988", NULL, "ISO_8859-5:1988-translit", NULL, "ISO_8859-6", NULL, "ISO_8859-6-translit", NULL, "ISO_8859-6:1987", NULL, "ISO_8859-6:1987-translit", NULL, "ISO_8859-7", NULL, "ISO_8859-7-translit", NULL, "ISO_8859-7:1987", NULL, "ISO_8859-7:1987-translit", NULL, "ISO_8859-7:2003", NULL, "ISO_8859-7:2003-translit", NULL, "ISO_8859-8", NULL, "ISO_8859-8-translit", NULL, "ISO_8859-8:1988", NULL, "ISO_8859-8:1988-translit", NULL, "ISO_8859-9", NULL, "ISO_8859-9-translit", NULL, "ISO_8859-9:1989", NULL, "ISO_8859-9:1989-translit", NULL, "ISO_8859-9E", NULL, "ISO_8859-9E-translit", NULL, "ISO_8859-10", NULL, "ISO_8859-10-translit", NULL, "ISO_8859-10:1992", NULL, "ISO_8859-10:1992-translit", NULL, "ISO_8859-14", NULL, "ISO_8859-14-translit", NULL, "ISO_8859-14:1998", NULL, "ISO_8859-14:1998-translit", NULL, "ISO_8859-15", NULL, "ISO_8859-15-translit", NULL, "ISO_8859-15:1998", NULL, "ISO_8859-15:1998-translit", NULL, "ISO_8859-16", NULL, "ISO_8859-16-translit", NULL, "ISO_8859-16:2001", NULL, "ISO_8859-16:2001-translit", NULL, "ISO_9036", NULL, "ISO_9036-translit", NULL, "ISO_10367-BOX", NULL, "ISO_10367-BOX-translit", NULL, "ISO_10367BOX", NULL, "ISO_10367BOX-translit", NULL, "ISO_11548-1", NULL, "ISO_11548-1-translit", NULL, "ISO_69372", NULL, "ISO_69372-translit", NULL, "IT", NULL, "IT-translit", NULL, "JIS_C6220-1969-RO", NULL, "JIS_C6220-1969-RO-translit", NULL, "JIS_C6229-1984-B", NULL, "JIS_C6229-1984-B-translit", NULL, "JIS_C62201969RO", NULL, "JIS_C62201969RO-translit", NULL, "JIS_C62291984B", NULL, "JIS_C62291984B-translit", NULL, "JOHAB", NULL, "JOHAB-translit", NULL, "JP-OCR-B", NULL, "JP-OCR-B-translit", NULL, "JP", NULL, "JP-translit", NULL, "JS", NULL, "JS-translit", NULL, "JUS_I.B1.002", NULL, "JUS_I.B1.002-translit", NULL, "KOI-7", NULL, "KOI-7-translit", NULL, "KOI-8", NULL, "KOI-8-translit", NULL, "KOI8-R", NULL, "KOI8-R-translit", NULL, "KOI8-RU", NULL, "KOI8-RU-translit", NULL, "KOI8-T", NULL, "KOI8-T-translit", NULL, "KOI8-U", NULL, "KOI8-U-translit", NULL, "KOI8", NULL, "KOI8-translit", NULL, "KOI8R", NULL, "KOI8R-translit", NULL, "KOI8U", NULL, "KOI8U-translit", NULL, "KSC5636", NULL, "KSC5636-translit", NULL, "L1", NULL, "L1-translit", NULL, "L2", NULL, "L2-translit", NULL, "L3", NULL, "L3-translit", NULL, "L4", NULL, "L4-translit", NULL, "L5", NULL, "L5-translit", NULL, "L6", NULL, "L6-translit", NULL, "L7", NULL, "L7-translit", NULL, "L8", NULL, "L8-translit", NULL, "L10", NULL, "L10-translit", NULL, "LATIN-9", NULL, "LATIN-9-translit", NULL, "LATIN-GREEK-1", NULL, "LATIN-GREEK-1-translit", NULL, "LATIN-GREEK", NULL, "LATIN-GREEK-translit", NULL, "LATIN1", NULL, "LATIN1-translit", NULL, "LATIN2", NULL, "LATIN2-translit", NULL, "LATIN3", NULL, "LATIN3-translit", NULL, "LATIN4", NULL, "LATIN4-translit", NULL, "LATIN5", NULL, "LATIN5-translit", NULL, "LATIN6", NULL, "LATIN6-translit", NULL, "LATIN7", NULL, "LATIN7-translit", NULL, "LATIN8", NULL, "LATIN8-translit", NULL, "LATIN9", NULL, "LATIN9-translit", NULL, "LATIN10", NULL, "LATIN10-translit", NULL, "LATINGREEK", NULL, "LATINGREEK-translit", NULL, "LATINGREEK1", NULL, "LATINGREEK1-translit", NULL, "MAC-CENTRALEUROPE", NULL, "MAC-CENTRALEUROPE-translit", NULL, "MAC-CYRILLIC", NULL, "MAC-CYRILLIC-translit", NULL, "MAC-IS", NULL, "MAC-IS-translit", NULL, "MAC-SAMI", NULL, "MAC-SAMI-translit", NULL, "MAC-UK", NULL, "MAC-UK-translit", NULL, "MAC", NULL, "MAC-translit", NULL, "MACCYRILLIC", NULL, "MACCYRILLIC-translit", NULL, "MACINTOSH", NULL, "MACINTOSH-translit", NULL, "MACIS", NULL, "MACIS-translit", NULL, "MACUK", NULL, "MACUK-translit", NULL, "MACUKRAINIAN", NULL, "MACUKRAINIAN-translit", NULL, "MIK", NULL, "MIK-translit", NULL, "MS-ANSI", NULL, "MS-ANSI-translit", NULL, "MS-ARAB", NULL, "MS-ARAB-translit", NULL, "MS-CYRL", NULL, "MS-CYRL-translit", NULL, "MS-EE", NULL, "MS-EE-translit", NULL, "MS-GREEK", NULL, "MS-GREEK-translit", NULL, "MS-HEBR", NULL, "MS-HEBR-translit", NULL, "MS-MAC-CYRILLIC", NULL, "MS-MAC-CYRILLIC-translit", NULL, "MS-TURK", NULL, "MS-TURK-translit", NULL, "MS932", NULL, "MS932-translit", NULL, "MS936", NULL, "MS936-translit", NULL, "MSCP949", NULL, "MSCP949-translit", NULL, "MSCP1361", NULL, "MSCP1361-translit", NULL, "MSMACCYRILLIC", NULL, "MSMACCYRILLIC-translit", NULL, "MSZ_7795.3", NULL, "MSZ_7795.3-translit", NULL, "MS_KANJI", NULL, "MS_KANJI-translit", NULL, "NAPLPS", NULL, "NAPLPS-translit", NULL, "NATS-DANO", NULL, "NATS-DANO-translit", NULL, "NATS-SEFI", NULL, "NATS-SEFI-translit", NULL, "NATSDANO", NULL, "NATSDANO-translit", NULL, "NATSSEFI", NULL, "NATSSEFI-translit", NULL, "NC_NC0010", NULL, "NC_NC0010-translit", NULL, "NC_NC00-10", NULL, "NC_NC00-10-translit", NULL, "NC_NC00-10:81", NULL, "NC_NC00-10:81-translit", NULL, "NF_Z_62-010", NULL, "NF_Z_62-010-translit", NULL, "NF_Z_62-010_(1973)", NULL, "NF_Z_62-010_(1973)-translit", NULL, "NF_Z_62-010_1973", NULL, "NF_Z_62-010_1973-translit", NULL, "NF_Z_62010", NULL, "NF_Z_62010-translit", NULL, "NF_Z_62010_1973", NULL, "NF_Z_62010_1973-translit", NULL, "NO", NULL, "NO-translit", NULL, "NO2", NULL, "NO2-translit", NULL, "NS_4551-1", NULL, "NS_4551-1-translit", NULL, "NS_4551-2", NULL, "NS_4551-2-translit", NULL, "NS_45511", NULL, "NS_45511-translit", NULL, "NS_45512", NULL, "NS_45512-translit", NULL, "OS2LATIN1", NULL, "OS2LATIN1-translit", NULL, "OSF00010001", NULL, "OSF00010001-translit", NULL, "OSF00010002", NULL, "OSF00010002-translit", NULL, "OSF00010003", NULL, "OSF00010003-translit", NULL, "OSF00010004", NULL, "OSF00010004-translit", NULL, "OSF00010005", NULL, "OSF00010005-translit", NULL, "OSF00010006", NULL, "OSF00010006-translit", NULL, "OSF00010007", NULL, "OSF00010007-translit", NULL, "OSF00010008", NULL, "OSF00010008-translit", NULL, "OSF00010009", NULL, "OSF00010009-translit", NULL, "OSF0001000A", NULL, "OSF0001000A-translit", NULL, "OSF00010020", NULL, "OSF00010020-translit", NULL, "OSF00010100", NULL, "OSF00010100-translit", NULL, "OSF00010101", NULL, "OSF00010101-translit", NULL, "OSF00010102", NULL, "OSF00010102-translit", NULL, "OSF00010104", NULL, "OSF00010104-translit", NULL, "OSF00010105", NULL, "OSF00010105-translit", NULL, "OSF00010106", NULL, "OSF00010106-translit", NULL, "OSF00030010", NULL, "OSF00030010-translit", NULL, "OSF0004000A", NULL, "OSF0004000A-translit", NULL, "OSF0005000A", NULL, "OSF0005000A-translit", NULL, "OSF05010001", NULL, "OSF05010001-translit", NULL, "OSF100201A4", NULL, "OSF100201A4-translit", NULL, "OSF100201A8", NULL, "OSF100201A8-translit", NULL, "OSF100201B5", NULL, "OSF100201B5-translit", NULL, "OSF100201F4", NULL, "OSF100201F4-translit", NULL, "OSF100203B5", NULL, "OSF100203B5-translit", NULL, "OSF1002011C", NULL, "OSF1002011C-translit", NULL, "OSF1002011D", NULL, "OSF1002011D-translit", NULL, "OSF1002035D", NULL, "OSF1002035D-translit", NULL, "OSF1002035E", NULL, "OSF1002035E-translit", NULL, "OSF1002035F", NULL, "OSF1002035F-translit", NULL, "OSF1002036B", NULL, "OSF1002036B-translit", NULL, "OSF1002037B", NULL, "OSF1002037B-translit", NULL, "OSF10010001", NULL, "OSF10010001-translit", NULL, "OSF10010004", NULL, "OSF10010004-translit", NULL, "OSF10010006", NULL, "OSF10010006-translit", NULL, "OSF10020025", NULL, "OSF10020025-translit", NULL, "OSF10020111", NULL, "OSF10020111-translit", NULL, "OSF10020115", NULL, "OSF10020115-translit", NULL, "OSF10020116", NULL, "OSF10020116-translit", NULL, "OSF10020118", NULL, "OSF10020118-translit", NULL, "OSF10020122", NULL, "OSF10020122-translit", NULL, "OSF10020129", NULL, "OSF10020129-translit", NULL, "OSF10020352", NULL, "OSF10020352-translit", NULL, "OSF10020354", NULL, "OSF10020354-translit", NULL, "OSF10020357", NULL, "OSF10020357-translit", NULL, "OSF10020359", NULL, "OSF10020359-translit", NULL, "OSF10020360", NULL, "OSF10020360-translit", NULL, "OSF10020364", NULL, "OSF10020364-translit", NULL, "OSF10020365", NULL, "OSF10020365-translit", NULL, "OSF10020366", NULL, "OSF10020366-translit", NULL, "OSF10020367", NULL, "OSF10020367-translit", NULL, "OSF10020370", NULL, "OSF10020370-translit", NULL, "OSF10020387", NULL, "OSF10020387-translit", NULL, "OSF10020388", NULL, "OSF10020388-translit", NULL, "OSF10020396", NULL, "OSF10020396-translit", NULL, "OSF10020402", NULL, "OSF10020402-translit", NULL, "OSF10020417", NULL, "OSF10020417-translit", NULL, "PT", NULL, "PT-translit", NULL, "PT2", NULL, "PT2-translit", NULL, "PT154", NULL, "PT154-translit", NULL, "R8", NULL, "R8-translit", NULL, "R9", NULL, "R9-translit", NULL, "RK1048", NULL, "RK1048-translit", NULL, "ROMAN8", NULL, "ROMAN8-translit", NULL, "ROMAN9", NULL, "ROMAN9-translit", NULL, "RUSCII", NULL, "RUSCII-translit", NULL, "SE", NULL, "SE-translit", NULL, "SE2", NULL, "SE2-translit", NULL, "SEN_850200_B", NULL, "SEN_850200_B-translit", NULL, "SEN_850200_C", NULL, "SEN_850200_C-translit", NULL, "SHIFT-JIS", NULL, "SHIFT-JIS-translit", NULL, "SHIFTJISX0213", NULL, "SHIFTJISX0213-translit", NULL, "SHIFT_JIS", NULL, "SHIFT_JIS-translit", NULL, "SHIFT_JISX0213", NULL, "SHIFT_JISX0213-translit", NULL, "SJIS-OPEN", NULL, "SJIS-OPEN-translit", NULL, "SJIS-WIN", NULL, "SJIS-WIN-translit", NULL, "SJIS", NULL, "SJIS-translit", NULL, "SS636127", NULL, "SS636127-translit", NULL, "STRK1048-2002", NULL, "STRK1048-2002-translit", NULL, "ST_SEV_358-88", NULL, "ST_SEV_358-88-translit", NULL, "T.61-8BIT", NULL, "T.61-8BIT-translit", NULL, "T.61", NULL, "T.61-translit", NULL, "T.618BIT", NULL, "T.618BIT-translit", NULL, "TCVN-5712", NULL, "TCVN-5712-translit", NULL, "TCVN", NULL, "TCVN-translit", NULL, "TCVN5712-1", NULL, "TCVN5712-1-translit", NULL, "TCVN5712-1:1993", NULL, "TCVN5712-1:1993-translit", NULL, "THAI8", NULL, "THAI8-translit", NULL, "TIS-620", NULL, "TIS-620-translit", NULL, "TIS620-0", NULL, "TIS620-0-translit", NULL, "TIS620.2529-1", NULL, "TIS620.2529-1-translit", NULL, "TIS620.2533-0", NULL, "TIS620.2533-0-translit", NULL, "TIS620", NULL, "TIS620-translit", NULL, "TS-5881", NULL, "TS-5881-translit", NULL, "TSCII", NULL, "TSCII-translit", NULL, "TURKISH8", NULL, "TURKISH8-translit", NULL, "UCS-2", NULL, "UCS-2-translit", NULL, "UCS-2BE", NULL, "UCS-2BE-translit", NULL, "UCS-2LE", NULL, "UCS-2LE-translit", NULL, "UCS-4", NULL, "UCS-4-translit", NULL, "UCS-4BE", NULL, "UCS-4BE-translit", NULL, "UCS-4LE", NULL, "UCS-4LE-translit", NULL, "UHC", NULL, "UHC-translit", NULL, "UJIS", NULL, "UJIS-translit", NULL, "UK", NULL, "UK-translit", NULL, "UNICODE", NULL, "UNICODE-translit", NULL, "UNICODEBIG", NULL, "UNICODEBIG-translit", NULL, "UNICODELITTLE", NULL, "UNICODELITTLE-translit", NULL, "US-ASCII", NULL, "US-ASCII-translit", NULL, "US", NULL, "US-translit", NULL, "UTF-7-IMAP", NULL, "UTF-7-IMAP-translit", NULL, "UTF-7", NULL, "UTF-7-translit", NULL, "UTF-16", NULL, "UTF-16-translit", NULL, "UTF-16BE", NULL, "UTF-16BE-translit", NULL, "UTF-16LE", NULL, "UTF-16LE-translit", NULL, "UTF-32", NULL, "UTF-32-translit", NULL, "UTF-32BE", NULL, "UTF-32BE-translit", NULL, "UTF-32LE", NULL, "UTF-32LE-translit", NULL, "UTF7", NULL, "UTF7-translit", NULL, "UTF16", NULL, "UTF16-translit", NULL, "UTF16BE", NULL, "UTF16BE-translit", NULL, "UTF16LE", NULL, "UTF16LE-translit", NULL, "UTF32", NULL, "UTF32-translit", NULL, "UTF32BE", NULL, "UTF32BE-translit", NULL, "UTF32LE", NULL, "UTF32LE-translit", NULL, "VISCII", NULL, "VISCII-translit", NULL, "WCHAR_T", NULL, "WCHAR_T-translit", NULL, "WIN-SAMI-2", NULL, "WIN-SAMI-2-translit", NULL, "WINBALTRIM", NULL, "WINBALTRIM-translit", NULL, "WINDOWS-31J", NULL, "WINDOWS-31J-translit", NULL, "WINDOWS-874", NULL, "WINDOWS-874-translit", NULL, "WINDOWS-936", NULL, "WINDOWS-936-translit", NULL, "WINDOWS-1250", NULL, "WINDOWS-1250-translit", NULL, "WINDOWS-1251", NULL, "WINDOWS-1251-translit", NULL, "WINDOWS-1252", NULL, "WINDOWS-1252-translit", NULL, "WINDOWS-1253", NULL, "WINDOWS-1253-translit", NULL, "WINDOWS-1254", NULL, "WINDOWS-1254-translit", NULL, "WINDOWS-1255", NULL, "WINDOWS-1255-translit", NULL, "WINDOWS-1256", NULL, "WINDOWS-1256-translit", NULL, "WINDOWS-1257", NULL, "WINDOWS-1257-translit", NULL, "WINDOWS-1258", NULL, "WINDOWS-1258-translit", NULL, "WINSAMI2", NULL, "WINSAMI2-translit", NULL, "WS2", NULL, "WS2-translit", NULL, "YU", NULL, "YU-translit", NULL, NULL }; recode-3.7.15/src/decsteps.h0000644000175000017500000000721713330773300011311 bool module_african (struct recode_outer *); bool module_afrtran (struct recode_outer *); bool module_atarist (struct recode_outer *); bool module_bangbang (struct recode_outer *); bool module_cdcnos (struct recode_outer *); bool module_ebcdic (struct recode_outer *); bool module_ibmpc (struct recode_outer *); bool module_iconqnx (struct recode_outer *); bool module_latin1_ascii (struct recode_outer *); bool module_latin1_iso5426 (struct recode_outer *); bool module_latin1_ansel (struct recode_outer *); bool module_java (struct recode_outer *); bool module_mule (struct recode_outer *); bool module_strips (struct recode_outer *); bool module_testdump (struct recode_outer *); bool module_ucs (struct recode_outer *); bool module_utf16 (struct recode_outer *); bool module_utf7 (struct recode_outer *); bool module_utf8 (struct recode_outer *); bool module_varia (struct recode_outer *); bool module_vietnamese (struct recode_outer *); bool module_flat (struct recode_outer *); bool module_html (struct recode_outer *); bool module_latin1_latex (struct recode_outer *); bool module_latin1_bibtex (struct recode_outer *); bool module_latin1_texte (struct recode_outer *); bool module_rfc1345 (struct recode_outer *); bool module_texinfo (struct recode_outer *); bool module_base64 (struct recode_outer *); bool module_dump (struct recode_outer *); bool module_endline (struct recode_outer *); bool module_permutations (struct recode_outer *); bool module_quoted_printable (struct recode_outer *); bool module_ascii_latin1 (struct recode_outer *); bool module_iso5426_latin1 (struct recode_outer *); bool module_ansel_latin1 (struct recode_outer *); bool module_latex_latin1 (struct recode_outer *); bool module_bibtex_latin1 (struct recode_outer *); bool module_texte_latin1 (struct recode_outer *); void delmodule_african (struct recode_outer *); void delmodule_afrtran (struct recode_outer *); void delmodule_atarist (struct recode_outer *); void delmodule_bangbang (struct recode_outer *); void delmodule_cdcnos (struct recode_outer *); void delmodule_ebcdic (struct recode_outer *); void delmodule_ibmpc (struct recode_outer *); void delmodule_iconqnx (struct recode_outer *); void delmodule_latin1_ascii (struct recode_outer *); void delmodule_latin1_iso5426 (struct recode_outer *); void delmodule_latin1_ansel (struct recode_outer *); void delmodule_java (struct recode_outer *); void delmodule_mule (struct recode_outer *); void delmodule_strips (struct recode_outer *); void delmodule_testdump (struct recode_outer *); void delmodule_ucs (struct recode_outer *); void delmodule_utf16 (struct recode_outer *); void delmodule_utf7 (struct recode_outer *); void delmodule_utf8 (struct recode_outer *); void delmodule_varia (struct recode_outer *); void delmodule_vietnamese (struct recode_outer *); void delmodule_flat (struct recode_outer *); void delmodule_html (struct recode_outer *); void delmodule_latin1_latex (struct recode_outer *); void delmodule_latin1_bibtex (struct recode_outer *); void delmodule_latin1_texte (struct recode_outer *); void delmodule_rfc1345 (struct recode_outer *); void delmodule_texinfo (struct recode_outer *); void delmodule_base64 (struct recode_outer *); void delmodule_dump (struct recode_outer *); void delmodule_endline (struct recode_outer *); void delmodule_permutations (struct recode_outer *); void delmodule_quoted_printable (struct recode_outer *); void delmodule_ascii_latin1 (struct recode_outer *); void delmodule_iso5426_latin1 (struct recode_outer *); void delmodule_ansel_latin1 (struct recode_outer *); void delmodule_latex_latin1 (struct recode_outer *); void delmodule_bibtex_latin1 (struct recode_outer *); void delmodule_texte_latin1 (struct recode_outer *); recode-3.7.15/src/iconv.c0000644000175000017500000002157414765654444010636 /* Conversion of files between different charsets and surfaces. Copyright © 1999-2022 Free Software Foundation, Inc. Contributed by François Pinard , 1999, and Bruno Haible , 2000. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" #include #include "iconvdecl.h" /*--------------------------------------. | Use `iconv' to handle a double step. | `--------------------------------------*/ static void do_iconv (RECODE_OUTER outer, iconv_t conversion, char **input, size_t *input_left, char **output, size_t *output_left, int *saved_errno) { size_t converted = iconv (conversion, input, input_left, output, output_left); if (converted == (size_t) -1 && !(errno == EILSEQ && outer->force)) *saved_errno = errno; } #define BUFFER_SIZE 2048 static bool wrapped_transform (iconv_t conversion, RECODE_SUBTASK subtask) { char output_buffer[BUFFER_SIZE]; char input_buffer[BUFFER_SIZE]; int input_char = recode_get_byte (subtask); char *cursor = input_buffer; bool drain_first = false; while (true) { /* The output buffer is fully available at this point. */ char *input = input_buffer; char *output = output_buffer; size_t input_left = 0; size_t output_left = BUFFER_SIZE; int saved_errno = 0; if (drain_first) { /* Drain all accumulated partial state and emit output to return to the initial shift state. */ do_iconv (subtask->task->request->outer, conversion, NULL, NULL, &output, &output_left, &saved_errno); } if (saved_errno == 0) { /* Continue filling the input buffer. */ while (input_char != EOF && cursor < input_buffer + BUFFER_SIZE) { *cursor++ = input_char; input_char = recode_get_byte (subtask); } if (cursor == input_buffer) { if (output == output_buffer) { /* All work has been done, just make sure we drained. */ if (drain_first) break; drain_first = true; continue; } } else { /* Convert accumulated input and add it to the output buffer. */ input = input_buffer; input_left = cursor - input_buffer; do_iconv (subtask->task->request->outer, conversion, &input, &input_left, &output, &output_left, &saved_errno); } } /* Send the converted result, so freeing the output buffer. */ for (cursor = output_buffer; cursor < output; cursor++) recode_put_byte (*cursor, subtask); /* Act according to the outcome of the iconv call. */ drain_first = false; if (saved_errno != 0 && saved_errno != E2BIG) { if (saved_errno == EILSEQ) { /* Check whether the input was really just untranslatable. */ enum recode_error recode_error = RECODE_INVALID_INPUT; RECODE_CONST_STEP step = subtask->step; iconv_t check_conversion = iconv_open (step->before->iconv_name, step->before->iconv_name); /* On error, give up and assume input is invalid. */ if (input_left > 0 && check_conversion != (iconv_t) -1) { /* Assume iconv does not modify its input. */ char *check_input = input; size_t check_input_left = input_left; size_t check_output_left = input_left; char *check_output_buffer, *check_output; RECODE_OUTER outer = subtask->task->request->outer; if ((check_output = ALLOC (check_output_buffer, input_left, char)) != NULL) { size_t check_converted = iconv (check_conversion, &check_input, &check_input_left, &check_output, &check_output_left); if (check_converted != (size_t) -1) recode_error = RECODE_UNTRANSLATABLE; free (check_output_buffer); } iconv_close (check_conversion); } /* Invalid or untranslatable input. */ RETURN_IF_NOGO (recode_error, subtask); /* Ensure we skip at least one byte. FIXME: We cannot tell how many bytes to skip for untranslatable input. The likely result is that we'll get an "invalid input" error on the next step. */ assert (input_left > 0); input++; input_left--; } else if (saved_errno == EINVAL) { if (input + input_left < input_buffer + BUFFER_SIZE && input_char == EOF) /* Incomplete multibyte sequence at end of input. */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); } else { recode_perror (subtask->task->request->outer, "iconv ()"); RETURN_IF_NOGO (RECODE_SYSTEM_ERROR, subtask); } } /* Move back any unprocessed part of the input buffer. */ for (cursor = input_buffer; input_left != 0; input_left--) *cursor++ = *input++; } SUBTASK_RETURN (subtask); } static bool ends_with (const char *s, size_t s_len, const char *suff, size_t suff_len) { return suff_len <= s_len && !memcmp (s + s_len - suff_len, suff, suff_len); } static char * iconv_fix_options (RECODE_OUTER outer, const char *charset) { size_t charset_len = strlen (charset); bool translit = false; if (ends_with (charset, charset_len, "-translit", strlen ("-translit"))) { translit = true; charset_len -= strlen ("-translit"); } char *result; if (asprintf (&result, "%.*s%s%s", (int) charset_len, charset, translit ? "//TRANSLIT" : "", outer->strict_mapping ? "//IGNORE": "") == -1) return NULL; return result; } bool recode_transform_with_iconv (RECODE_SUBTASK subtask) { RECODE_OUTER outer = subtask->task->request->outer; RECODE_CONST_STEP step = subtask->step; char *tocode = iconv_fix_options (outer, step->after->iconv_name); const char *fromcode = step->before->iconv_name; iconv_t conversion = (iconv_t) -1; if (tocode) conversion = iconv_open (tocode, fromcode); if (conversion == (iconv_t) -1) { recode_if_nogo (RECODE_SYSTEM_ERROR, subtask); free (tocode); SUBTASK_RETURN (subtask); } bool status = wrapped_transform (conversion, subtask); iconv_close (conversion); free (tocode); return status; } /*------------------------------------------------------. | Declare all character sets which `iconv' may handle. | `------------------------------------------------------*/ bool module_iconv (RECODE_OUTER outer) { const char **cursor; for (cursor = iconv_name_list; *cursor; cursor++) { const char **aliases = cursor; const char *charset_name = *cursor; /* Scan aliases for some charset which would already be known. If any, use its official name as a charset. Else, use the first alias. */ while (*cursor) { RECODE_ALIAS alias = recode_find_alias (outer, *cursor, ALIAS_FIND_AS_CHARSET); if (alias) { charset_name = alias->symbol->name; break; } cursor++; } if (!recode_declare_iconv (outer, charset_name, *aliases)) return false; /* Declare all aliases, given they bring something we do not already know. Even then, we still declare too many useless aliases, as the disambiguating tables are not recomputed as we go. FIXME! */ for (cursor = aliases; *cursor; cursor++) { RECODE_ALIAS alias = recode_find_alias (outer, *cursor, ALIAS_FIND_AS_CHARSET); /* If there is a charset contradiction, call recode_declare_alias nevertheless, as the error processing will occur there. */ if (!alias || alias->symbol->name != charset_name) if (!recode_declare_alias (outer, *cursor, charset_name)) return false; } } return true; } void delmodule_iconv (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/permut.c0000644000175000017500000000606114374760602011014 /* Conversion of files between different charsets and surfaces. Copyright © 1997-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1997. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" static bool permute_21 (RECODE_SUBTASK subtask) { int character1; int character2; while (true) { character1 = recode_get_byte (subtask); if (character1 == EOF) break; character2 = recode_get_byte (subtask); if (character2 == EOF) { recode_put_byte (character1, subtask); break; } recode_put_byte (character2, subtask); recode_put_byte (character1, subtask); } SUBTASK_RETURN (subtask); } static bool permute_4321 (RECODE_SUBTASK subtask) { int character1; int character2; int character3; int character4; while (true) { character1 = recode_get_byte (subtask); if (character1 == EOF) break; character2 = recode_get_byte (subtask); if (character2 == EOF) { recode_put_byte (character1, subtask); break; } character3 = recode_get_byte (subtask); if (character3 == EOF) { recode_put_byte (character2, subtask); recode_put_byte (character1, subtask); break; } character4 = recode_get_byte (subtask); if (character4 == EOF) { recode_put_byte (character3, subtask); recode_put_byte (character2, subtask); recode_put_byte (character1, subtask); break; } recode_put_byte (character4, subtask); recode_put_byte (character3, subtask); recode_put_byte (character2, subtask); recode_put_byte (character1, subtask); } SUBTASK_RETURN (subtask); } bool module_permutations (RECODE_OUTER outer) { return recode_declare_single (outer, "data", "21-Permutation", outer->quality_variable_to_variable, NULL, permute_21) && recode_declare_single (outer, "21-Permutation", "data", outer->quality_variable_to_variable, NULL, permute_21) && recode_declare_single (outer, "data", "4321-Permutation", outer->quality_variable_to_variable, NULL, permute_4321) && recode_declare_single (outer, "4321-Permutation", "data", outer->quality_variable_to_variable, NULL, permute_4321) && recode_declare_alias (outer, "swabytes", "21-Permutation"); } void delmodule_permutations (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/lat1iso5426.h0000644000175000017500000000303514374764133011403 {158, "¶"}, /* ž */ {161, "¡"}, /* ¡ */ {163, "£"}, /* £ */ {167, "§"}, /* § */ {172, "ˆ"}, /* ¬ */ {172, "‰"}, /* ¬ */ {171, "«"}, /* « */ {187, "»"}, /* » */ {191, "¿"}, /* ¿ */ {198, "á"}, /* Æ */ {208, "â"}, /* Ð */ {216, "é"}, /* Ø */ {254, "ì"}, /* þ */ {230, "ñ"}, /* æ */ {240, "ó"}, /* ð */ {134, "õ"}, /* † */ {248, "ù"}, /* ø */ {223, "û"}, /* ß */ {222, "ü"}, /* Þ */ {224, "Áa"}, /* à */ {232, "Áe"}, /* è */ {236, "Ái"}, /* ì */ {242, "Áo"}, /* ò */ {249, "Áu"}, /* ù */ {192, "ÁA"}, /* À */ {200, "ÁE"}, /* È */ {204, "ÁI"}, /* Ì */ {210, "ÁO"}, /* Ò */ {217, "ÁU"}, /* Ù */ {225, "Âa"}, /* á */ {233, "Âe"}, /* é */ {237, "Âi"}, /* í */ {243, "Âo"}, /* ó */ {250, "Âu"}, /* ú */ {253, "Ây"}, /* ý */ {193, "ÂA"}, /* Á */ {201, "ÂE"}, /* É */ {205, "ÂI"}, /* Í */ {211, "ÂO"}, /* Ó */ {218, "ÂU"}, /* Ú */ {221, "ÂY"}, /* Ý */ {226, "Ãa"}, /* â */ {234, "Ãe"}, /* ê */ {238, "Ãi"}, /* î */ {244, "Ão"}, /* ô */ {251, "Ãu"}, /* û */ {194, "ÃA"}, /*  */ {202, "ÃE"}, /* Ê */ {206, "ÃI"}, /* Î */ {212, "ÃO"}, /* Ô */ {219, "ÃU"}, /* Û */ {227, "Äa"}, /* ã */ {245, "Äo"}, /* õ */ {241, "Än"}, /* ñ */ {195, "ÄA"}, /* à */ {213, "ÄO"}, /* Õ */ {209, "ÄN"}, /* Ñ */ {235, "Èe"}, /* ë */ {239, "Èi"}, /* ï */ {255, "Èy"}, /* ÿ */ {203, "ÈE"}, /* Ë */ {207, "ÈI"}, /* Ï */ {229, "Êa"}, /* å */ {197, "ÊA"}, /* Å */ {231, "Ðc"}, /* ç */ {199, "ÐC"}, /* Ç */ {228, "Éa"}, /* ä */ {246, "Éo"}, /* ö */ {252, "Éu"}, /* ü */ {196, "ÉA"}, /* Ä */ {214, "ÉO"}, /* Ö */ {220, "ÉU"}, /* Ü */ recode-3.7.15/src/stamp-strip0000644000175000017500000000001214765654536011544 timestamp recode-3.7.15/src/afrtran.c0000644000175000017500000002254514374760602011142 /* Traitement de certaines tables africaines. Copyright © 1999-2018 Progiciels Bourbeau-Pinard inc. François Pinard , 1997. */ #include "config.h" #include "common.h" #include "decsteps.h" static const unsigned short ful_data[] = { 160, '/', '_', DONE, 161, 'B', '[', DONE, 162, 'D', '[', DONE, 163, 'G', ']', DONE, 164, 'K', '[', DONE, 165, 'P', '[', DONE, 166, 'T', '[', DONE, 167, 'S', ']', DONE, 168, 'N', ']', DONE, 169, 'N', '[', DONE, 170, 'D', ']', DONE, 171, '<', '<', DONE, 172, 'F', ']', DONE, 173, '\\', '-', DONE, 174, 'Y', '[', DONE, 175, 'G', '[', DONE, 176, '_', 'D', 'G', DONE, 177, 'b', '[', DONE, 178, 'd', '[', DONE, 179, 'g', ']', DONE, 180, 'k', '[', DONE, 181, 'p', '[', DONE, 182, 't', '[', DONE, 183, 's', ']', DONE, 184, 'n', ']', DONE, 185, 'n', '[', DONE, 186, 'd', ']', DONE, 187, '>', '>', DONE, 188, 'f', ']', DONE, 189, '?', '^', DONE, 190, 'y', '[', DONE, 191, 'g', '[', DONE, 192, 'A', '`', DONE, 193, 'A', '\\', '\'', DONE, 194, 'A', '^', DONE, 195, 'A', '~', DONE, 196, 'A', '"', DONE, 197, 'E', '<', DONE, 198, 'A', 'E', '+', DONE, 199, 'C', '\\', ',', DONE, 200, 'E', '`', DONE, 201, 'E', '\\', '\'', DONE, 202, 'E', '^', DONE, 203, 'E', '"', DONE, 204, 'I', '`', DONE, 205, 'I', '\\', '\'', DONE, 206, 'I', '^', DONE, 207, 'I', '"', DONE, 208, 'E', '[', DONE, 209, 'N', '~', DONE, 210, 'O', '`', DONE, 211, 'O', '\\', '\'', DONE, 212, 'O', '^', DONE, 213, 'O', '~', DONE, 214, 'O', '"', DONE, 215, 'O', 'E', '+', DONE, 216, 'O', '[', DONE, 217, 'U', '`', DONE, 218, 'U', '\\', '\'', DONE, 219, 'U', '^', DONE, 220, 'U', '"', DONE, 221, 'E', '<', '\'', DONE, 222, 'O', '[', '\'', DONE, 223, 'V', '[', DONE, 224, 'a', '`', DONE, 225, 'a', '\\', '\'', DONE, 226, 'a', '^', DONE, 227, 'a', '~', DONE, 228, 'a', '"', DONE, 229, 'e', '<', DONE, 230, 'a', 'e', '+', DONE, 231, 'c', '\\', ',', DONE, 232, 'e', '`', DONE, 233, 'e', '\\', '\'', DONE, 234, 'e', '^', DONE, 235, 'e', '"', DONE, 236, 'i', '`', DONE, 237, 'i', '\\', '\'', DONE, 238, 'i', '^', DONE, 239, 'i', '"', DONE, 240, 'e', '[', DONE, 241, 'n', '~', DONE, 242, 'o', '`', DONE, 243, 'o', '\\', '\'', DONE, 244, 'o', '^', DONE, 245, 'o', '~', DONE, 246, 'o', '"', DONE, 247, 'o', 'e', '+', DONE, 248, 'o', '[', DONE, 249, 'u', '`', DONE, 250, 'u', '\\', '\'', DONE, 251, 'u', '^', DONE, 252, 'u', '"', DONE, 253, 'e', '<', '\'', DONE, 254, 'o', '[', '\'', DONE, 255, 'v', '[', DONE, DONE }; /* -- */ static const unsigned short l1_data[] = { 160, '/', '_', DONE, 161, '!', '<', DONE, 162, '_', 'C', 't', DONE, 163, '_', 'P', 'd', DONE, 164, '_', 'C', 'u', DONE, 165, '_', 'Y', 'e', DONE, 166, '_', 'B', 'B', DONE, 167, '_', 'S', 'E', DONE, 168, '/', '\\', '"', DONE, 169, '_', 'C', 'o', DONE, 170, '_', 'F', 'o', DONE, 171, '<', '<', DONE, 172, '_', 'N', 'O', DONE, 173, '\\', '-', DONE, 174, '_', 'R', 'g', DONE, 175, '/', '\\', '=', DONE, 176, '_', 'D', 'G', DONE, 177, '_', '+', '-', DONE, 178, '2', '^', DONE, 179, '3', '^', DONE, 180, '/', '\\', '\'', DONE, 181, '_', 'M', 'y', DONE, 182, '_', 'P', 'I', DONE, 183, '_', 'M', 'D', DONE, 184, '/', '\\', ',', DONE, 185, '1', '^', DONE, 186, '_', 'M', 'o', DONE, 187, '>', '>', DONE, 188, '_', '1', '4', DONE, 189, '_', '1', '2', DONE, 190, '_', '3', '4', DONE, 191, '?', '<', DONE, 192, 'A', '`', DONE, 193, 'A', '\\', '\'', DONE, 194, 'A', '^', DONE, 195, 'A', '~', DONE, 196, 'A', '"', DONE, 197, 'A', '\\', 'R', DONE, 198, 'A', 'E', '+', DONE, 199, 'C', '\\', ',', DONE, 200, 'E', '`', DONE, 201, 'E', '\\', '\'', DONE, 202, 'E', '^', DONE, 203, 'E', '"', DONE, 204, 'I', '`', DONE, 205, 'I', '\\', '\'', DONE, 206, 'I', '^', DONE, 207, 'I', '"', DONE, 208, 'D', '\\', 'x', DONE, 209, 'N', '~', DONE, 210, 'O', '`', DONE, 211, 'O', '\\', '\'', DONE, 212, 'O', '^', DONE, 213, 'O', '~', DONE, 214, 'O', '"', DONE, 215, '_', 'X', 's', DONE, 216, 'O', '\\', 'X', DONE, 217, 'U', '`', DONE, 218, 'U', '\\', '\'', DONE, 219, 'U', '^', DONE, 220, 'U', '"', DONE, 221, 'Y', '\\', '\'', DONE, 222, '_', 'T', 'H', DONE, 223, 's', 's', '+', DONE, 224, 'a', '`', DONE, 225, 'a', '\\', '\'', DONE, 226, 'a', '^', DONE, 227, 'a', '~', DONE, 228, 'a', '"', DONE, 229, 'a', '\\', 'R', DONE, 230, 'a', 'e', '+', DONE, 231, 'c', '\\', ',', DONE, 232, 'e', '`', DONE, 233, 'e', '\\', '\'', DONE, 234, 'e', '^', DONE, 235, 'e', '"', DONE, 236, 'i', '`', DONE, 237, 'i', '\\', '\'', DONE, 238, 'i', '^', DONE, 239, 'i', '"', DONE, 240, 'd', '\\', 'x', DONE, 241, 'n', '~', DONE, 242, 'o', '`', DONE, 243, 'o', '\\', '\'', DONE, 244, 'o', '^', DONE, 245, 'o', '~', DONE, 246, 'o', '"', DONE, 247, '_', 'D', 's', DONE, 248, 'o', '\\', 'X', DONE, 249, 'u', '`', DONE, 250, 'u', '\\', '\'', DONE, 251, 'u', '^', DONE, 252, 'u', '"', DONE, 253, 'y', '\\', '\'', DONE, 254, '_', 't', 'h', DONE, 255, 'y', '"', DONE, DONE }; /* -- */ static const unsigned short lin_data[] = { 160, '/', '_', DONE, 161, 'E', '[', '`', DONE, 162, 'E', '[', '\'', DONE, 163, 'E', '[', '^', DONE, 164, 'E', '[', '\\', 'v', DONE, 165, 'O', '[', '`', DONE, 166, 'O', '[', '\'', DONE, 167, 'O', '[', '^', DONE, 168, 'N', ']', DONE, 169, 'N', '[', DONE, 170, 'N', '^', DONE, 171, '<', '<', DONE, 172, 'N', '"', DONE, 173, '\\', '-', DONE, 174, 'Y', '[', DONE, 175, 'O', '[', '\\', 'v', DONE, 176, '_', 'D', 'G', DONE, 177, 'e', '[', '`', DONE, 178, 'e', '[', '\'', DONE, 179, 'e', '[', '^', DONE, 180, 'e', '[', '\\', 'v', DONE, 181, 'o', '[', '`', DONE, 182, 'o', '[', '\'', DONE, 183, 'o', '[', '^', DONE, 184, 'n', ']', DONE, 185, 'n', '[', DONE, 186, 'n', '^', DONE, 187, '>', '>', DONE, 188, 'n', '"', DONE, 189, '?', '^', DONE, 190, 'y', '[', DONE, 191, 'o', '[', '\\', 'v', DONE, 192, 'A', '`', DONE, 193, 'A', '\\', '\'', DONE, 194, 'A', '^', DONE, 195, 'A', '\\', 'v', DONE, 196, 'A', '"', DONE, 197, 'E', '<', DONE, 198, 'A', 'E', '+', DONE, 199, 'C', '\\', ',', DONE, 200, 'E', '`', DONE, 201, 'E', '\\', '\'', DONE, 202, 'E', '^', DONE, 203, 'E', '"', DONE, 204, 'I', '`', DONE, 205, 'I', '\\', '\'', DONE, 206, 'I', '^', DONE, 207, 'I', '"', DONE, 208, 'E', '[', DONE, 209, 'N', '~', DONE, 210, 'O', '`', DONE, 211, 'O', '\\', '\'', DONE, 212, 'O', '^', DONE, 213, 'O', '\\', 'v', DONE, 214, 'O', '"', DONE, 215, 'O', 'E', '+', DONE, 216, 'O', '[', DONE, 217, 'U', '`', DONE, 218, 'U', '\\', '\'', DONE, 219, 'U', '^', DONE, 220, 'U', '"', DONE, 221, 'E', '\\', 'v', DONE, 222, 'I', '\\', 'v', DONE, 223, 'U', '\\', 'v', DONE, 224, 'a', '`', DONE, 225, 'a', '\\', '\'', DONE, 226, 'a', '^', DONE, 227, 'a', '\\', 'v', DONE, 228, 'a', '"', DONE, 229, 'e', '<', DONE, 230, 'a', 'e', '+', DONE, 231, 'c', '\\', ',', DONE, 232, 'e', '`', DONE, 233, 'e', '\\', '\'', DONE, 234, 'e', '^', DONE, 235, 'e', '"', DONE, 236, 'i', '`', DONE, 237, 'i', '\\', '\'', DONE, 238, 'i', '^', DONE, 239, 'i', '"', DONE, 240, 'e', '[', DONE, 241, 'n', '~', DONE, 242, 'o', '`', DONE, 243, 'o', '\\', '\'', DONE, 244, 'o', '^', DONE, 245, 'o', '\\', 'v', DONE, 246, 'o', '"', DONE, 247, 'o', 'e', '+', DONE, 248, 'o', '[', DONE, 249, 'u', '`', DONE, 250, 'u', '\\', '\'', DONE, 251, 'u', '^', DONE, 252, 'u', '"', DONE, 253, 'e', '\\', 'v', DONE, 254, 'i', '\\', 'v', DONE, 255, 'u', '\\', 'v', DONE, DONE }; /* -- */ bool module_afrtran (RECODE_OUTER outer) { return recode_declare_explode_data (outer, ful_data, "AFRFUL-102-BPI_OCIL", "AFRFUL-103-BPI_OCIL") && recode_declare_alias (outer, "t-bambara", "AFRFUL-103-BPI_OCIL") && recode_declare_alias (outer, "t-bra", "AFRFUL-103-BPI_OCIL") && recode_declare_alias (outer, "t-ewondo", "AFRFUL-103-BPI_OCIL") && recode_declare_alias (outer, "t-fulfulde", "AFRFUL-103-BPI_OCIL") && recode_declare_explode_data (outer, l1_data, "ISO-8859-1", "AFRL1-101-BPI_OCIL") && recode_declare_alias (outer, "t-francais", "AFRL1-101-BPI_OCIL") && recode_declare_alias (outer, "t-fra", "AFRL1-101-BPI_OCIL") && recode_declare_explode_data (outer, lin_data, "AFRLIN-104-BPI_OCIL", "AFRLIN-105-BPI_OCIL") && recode_declare_alias (outer, "t-lingala", "AFRLIN-105-BPI_OCIL") && recode_declare_alias (outer, "t-lin", "AFRLIN-105-BPI_OCIL") && recode_declare_alias (outer, "t-sango", "AFRLIN-105-BPI_OCIL") && recode_declare_alias (outer, "t-wolof", "AFRLIN-105-BPI_OCIL"); } void delmodule_afrtran (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/merged.c0000644000175000017500000045552014374764130010753 #include "config.h" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define yy_create_buffer librecode_yy_create_buffer #define yy_delete_buffer librecode_yy_delete_buffer #define yy_scan_buffer librecode_yy_scan_buffer #define yy_scan_string librecode_yy_scan_string #define yy_scan_bytes librecode_yy_scan_bytes #define yy_init_buffer librecode_yy_init_buffer #define yy_flush_buffer librecode_yy_flush_buffer #define yy_load_buffer_state librecode_yy_load_buffer_state #define yy_switch_to_buffer librecode_yy_switch_to_buffer #define yypush_buffer_state librecode_yypush_buffer_state #define yypop_buffer_state librecode_yypop_buffer_state #define yyensure_buffer_stack librecode_yyensure_buffer_stack #define yy_flex_debug librecode_yy_flex_debug #define yyin librecode_yyin #define yyleng librecode_yyleng #define yylex librecode_yylex #define yylineno librecode_yylineno #define yyout librecode_yyout #define yyrestart librecode_yyrestart #define yytext librecode_yytext #define yywrap librecode_yywrap #define yyalloc librecode_yyalloc #define yyrealloc librecode_yyrealloc #define yyfree librecode_yyfree #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif #ifdef yy_create_buffer #define librecode_yy_create_buffer_ALREADY_DEFINED #else #define yy_create_buffer librecode_yy_create_buffer #endif #ifdef yy_delete_buffer #define librecode_yy_delete_buffer_ALREADY_DEFINED #else #define yy_delete_buffer librecode_yy_delete_buffer #endif #ifdef yy_scan_buffer #define librecode_yy_scan_buffer_ALREADY_DEFINED #else #define yy_scan_buffer librecode_yy_scan_buffer #endif #ifdef yy_scan_string #define librecode_yy_scan_string_ALREADY_DEFINED #else #define yy_scan_string librecode_yy_scan_string #endif #ifdef yy_scan_bytes #define librecode_yy_scan_bytes_ALREADY_DEFINED #else #define yy_scan_bytes librecode_yy_scan_bytes #endif #ifdef yy_init_buffer #define librecode_yy_init_buffer_ALREADY_DEFINED #else #define yy_init_buffer librecode_yy_init_buffer #endif #ifdef yy_flush_buffer #define librecode_yy_flush_buffer_ALREADY_DEFINED #else #define yy_flush_buffer librecode_yy_flush_buffer #endif #ifdef yy_load_buffer_state #define librecode_yy_load_buffer_state_ALREADY_DEFINED #else #define yy_load_buffer_state librecode_yy_load_buffer_state #endif #ifdef yy_switch_to_buffer #define librecode_yy_switch_to_buffer_ALREADY_DEFINED #else #define yy_switch_to_buffer librecode_yy_switch_to_buffer #endif #ifdef yypush_buffer_state #define librecode_yypush_buffer_state_ALREADY_DEFINED #else #define yypush_buffer_state librecode_yypush_buffer_state #endif #ifdef yypop_buffer_state #define librecode_yypop_buffer_state_ALREADY_DEFINED #else #define yypop_buffer_state librecode_yypop_buffer_state #endif #ifdef yyensure_buffer_stack #define librecode_yyensure_buffer_stack_ALREADY_DEFINED #else #define yyensure_buffer_stack librecode_yyensure_buffer_stack #endif #ifdef yylex #define librecode_yylex_ALREADY_DEFINED #else #define yylex librecode_yylex #endif #ifdef yyrestart #define librecode_yyrestart_ALREADY_DEFINED #else #define yyrestart librecode_yyrestart #endif #ifdef yylex_init #define librecode_yylex_init_ALREADY_DEFINED #else #define yylex_init librecode_yylex_init #endif #ifdef yylex_init_extra #define librecode_yylex_init_extra_ALREADY_DEFINED #else #define yylex_init_extra librecode_yylex_init_extra #endif #ifdef yylex_destroy #define librecode_yylex_destroy_ALREADY_DEFINED #else #define yylex_destroy librecode_yylex_destroy #endif #ifdef yyget_debug #define librecode_yyget_debug_ALREADY_DEFINED #else #define yyget_debug librecode_yyget_debug #endif #ifdef yyset_debug #define librecode_yyset_debug_ALREADY_DEFINED #else #define yyset_debug librecode_yyset_debug #endif #ifdef yyget_extra #define librecode_yyget_extra_ALREADY_DEFINED #else #define yyget_extra librecode_yyget_extra #endif #ifdef yyset_extra #define librecode_yyset_extra_ALREADY_DEFINED #else #define yyset_extra librecode_yyset_extra #endif #ifdef yyget_in #define librecode_yyget_in_ALREADY_DEFINED #else #define yyget_in librecode_yyget_in #endif #ifdef yyset_in #define librecode_yyset_in_ALREADY_DEFINED #else #define yyset_in librecode_yyset_in #endif #ifdef yyget_out #define librecode_yyget_out_ALREADY_DEFINED #else #define yyget_out librecode_yyget_out #endif #ifdef yyset_out #define librecode_yyset_out_ALREADY_DEFINED #else #define yyset_out librecode_yyset_out #endif #ifdef yyget_leng #define librecode_yyget_leng_ALREADY_DEFINED #else #define yyget_leng librecode_yyget_leng #endif #ifdef yyget_text #define librecode_yyget_text_ALREADY_DEFINED #else #define yyget_text librecode_yyget_text #endif #ifdef yyget_lineno #define librecode_yyget_lineno_ALREADY_DEFINED #else #define yyget_lineno librecode_yyget_lineno #endif #ifdef yyset_lineno #define librecode_yyset_lineno_ALREADY_DEFINED #else #define yyset_lineno librecode_yyset_lineno #endif #ifdef yywrap #define librecode_yywrap_ALREADY_DEFINED #else #define yywrap librecode_yywrap #endif #ifdef yyalloc #define librecode_yyalloc_ALREADY_DEFINED #else #define yyalloc librecode_yyalloc #endif #ifdef yyrealloc #define librecode_yyrealloc_ALREADY_DEFINED #else #define yyrealloc librecode_yyrealloc #endif #ifdef yyfree #define librecode_yyfree_ALREADY_DEFINED #else #define yyfree librecode_yyfree #endif #ifdef yytext #define librecode_yytext_ALREADY_DEFINED #else #define yytext librecode_yytext #endif #ifdef yyleng #define librecode_yyleng_ALREADY_DEFINED #else #define yyleng librecode_yyleng #endif #ifdef yyin #define librecode_yyin_ALREADY_DEFINED #else #define yyin librecode_yyin #endif #ifdef yyout #define librecode_yyout_ALREADY_DEFINED #else #define yyout librecode_yyout #endif #ifdef yy_flex_debug #define librecode_yy_flex_debug_ALREADY_DEFINED #else #define yy_flex_debug librecode_yy_flex_debug #endif #ifdef yylineno #define librecode_yylineno_ALREADY_DEFINED #else #define yylineno librecode_yylineno #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* begin standard C++ headers. */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ #define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart( yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define YY_BUF_SIZE 32768 #else #define YY_BUF_SIZE 16384 #endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif extern int yyleng; extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ int yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = NULL; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow yywrap()'s to do buffer switches * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void yyrestart ( FILE *input_file ); void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); void yy_delete_buffer ( YY_BUFFER_STATE b ); void yy_flush_buffer ( YY_BUFFER_STATE b ); void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); void yypop_buffer_state ( void ); static void yyensure_buffer_stack ( void ); static void yy_load_buffer_state ( void ); static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); void *yyalloc ( yy_size_t ); void *yyrealloc ( void *, yy_size_t ); void yyfree ( void * ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define librecode_yywrap() (/*CONSTCOND*/1) #define YY_SKIP_YYWRAP typedef flex_uint8_t YY_CHAR; FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; extern int yylineno; int yylineno = 1; extern char *yytext; #ifdef yytext_ptr #undef yytext_ptr #endif #define yytext_ptr yytext static yy_state_type yy_get_previous_state ( void ); static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); static int yy_get_next_buffer ( void ); static void yynoreturn yy_fatal_error ( const char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; #define YY_NUM_RULES 451 #define YY_END_OF_BUFFER 452 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static const flex_int16_t yy_accept[1261] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 452, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 60, 57, 58, 59, 66, 67, 62, 63, 64, 65, 68, 61, 69, 70, 451, 451, 451, 451, 451, 451, 451, 451, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 451, 451, 451, 451, 190, 451, 451, 451, 451, 451, 451, 451, 451, 217, 451, 451, 451, 451, 451, 451, 308, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, 84, 85, 86, 87, 88, 100, 101, 102, 103, 104, 105, 94, 95, 96, 97, 98, 99, 111, 112, 113, 114, 115, 106, 107, 108, 109, 110, 119, 121, 120, 116, 118, 117, 125, 126, 122, 123, 124, 134, 135, 136, 131, 132, 133, 128, 127, 130, 129, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 185, 187, 189, 188, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 218, 235, 239, 221, 206, 207, 208, 209, 230, 233, 225, 299, 299, 262, 220, 0, 212, 0, 299, 299, 299, 299, 299, 299, 291, 299, 299, 299, 213, 214, 0, 223, 309, 326, 330, 312, 300, 301, 302, 303, 321, 324, 316, 390, 390, 353, 311, 0, 304, 0, 390, 390, 390, 390, 390, 390, 382, 390, 390, 305, 306, 0, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 392, 0, 394, 393, 0, 0, 404, 405, 401, 0, 414, 413, 0, 0, 420, 419, 0, 426, 425, 391, 0, 397, 396, 0, 0, 410, 411, 407, 0, 417, 416, 0, 423, 422, 0, 429, 428, 1, 2, 7, 12, 16, 22, 27, 34, 39, 43, 49, 29, 54, 56, 4, 10, 14, 19, 25, 28, 31, 37, 41, 46, 52, 55, 8, 35, 23, 50, 5, 3, 6, 11, 9, 15, 13, 17, 20, 18, 21, 26, 24, 32, 38, 42, 47, 53, 30, 36, 40, 45, 51, 33, 44, 48, 244, 251, 255, 261, 266, 0, 273, 280, 290, 295, 297, 0, 241, 249, 253, 258, 264, 267, 0, 270, 278, 287, 293, 296, 0, 299, 245, 246, 0, 262, 0, 220, 0, 242, 250, 254, 259, 265, 0, 271, 279, 288, 294, 0, 240, 248, 252, 257, 263, 0, 269, 277, 286, 292, 0, 274, 275, 299, 299, 299, 299, 0, 299, 299, 299, 291, 0, 299, 268, 299, 243, 256, 260, 272, 285, 289, 0, 335, 342, 346, 352, 357, 0, 364, 371, 381, 386, 388, 0, 332, 340, 344, 349, 355, 358, 0, 361, 369, 378, 384, 387, 0, 390, 336, 337, 0, 353, 0, 311, 0, 333, 341, 345, 350, 356, 0, 362, 370, 379, 385, 0, 331, 339, 343, 348, 354, 0, 360, 368, 377, 383, 0, 365, 366, 390, 390, 390, 390, 0, 390, 390, 390, 382, 0, 390, 359, 334, 347, 351, 363, 376, 380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 395, 399, 406, 403, 415, 0, 421, 427, 398, 400, 412, 409, 418, 424, 430, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 0, 246, 0, 299, 262, 220, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 274, 0, 275, 0, 299, 247, 276, 299, 299, 0, 0, 299, 299, 224, 291, 299, 268, 0, 299, 0, 0, 0, 0, 0, 0, 375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 337, 0, 390, 353, 311, 374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 365, 0, 366, 0, 390, 338, 367, 390, 390, 0, 0, 390, 390, 315, 382, 390, 359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, 0, 0, 0, 439, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 402, 0, 408, 284, 298, 0, 0, 282, 0, 0, 245, 246, 283, 0, 0, 281, 0, 0, 274, 275, 299, 299, 299, 299, 299, 224, 0, 299, 268, 299, 375, 389, 0, 0, 373, 0, 0, 336, 337, 374, 0, 0, 372, 0, 0, 365, 366, 390, 390, 390, 390, 390, 315, 0, 390, 359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 365, 0, 0, 366, 0, 0, 0, 0, 0, 0, 0, 359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 441, 0, 0, 445, 0, 0, 0, 0, 0, 444, 298, 0, 284, 284, 282, 282, 283, 283, 281, 281, 299, 232, 299, 0, 0, 0, 224, 219, 299, 389, 0, 375, 375, 373, 373, 374, 374, 372, 372, 390, 323, 390, 0, 0, 0, 315, 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 450, 0, 0, 0, 0, 0, 0, 447, 0, 298, 299, 299, 0, 0, 0, 219, 0, 299, 389, 390, 390, 0, 0, 0, 310, 0, 0, 0, 0, 0, 433, 0, 0, 449, 432, 0, 0, 0, 0, 443, 0, 0, 0, 448, 299, 299, 237, 236, 238, 0, 0, 0, 0, 219, 299, 390, 390, 328, 327, 329, 0, 0, 310, 0, 0, 440, 0, 436, 0, 0, 0, 0, 299, 299, 237, 0, 236, 0, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 390, 390, 328, 0, 327, 0, 329, 0, 0, 0, 0, 0, 0, 0, 434, 0, 0, 442, 446, 0, 0, 216, 222, 237, 236, 238, 210, 211, 0, 0, 0, 0, 0, 0, 299, 307, 313, 328, 327, 329, 0, 0, 0, 0, 0, 0, 431, 435, 437, 438, 216, 0, 222, 0, 0, 0, 234, 228, 229, 0, 299, 307, 0, 313, 0, 0, 0, 325, 319, 320, 0, 216, 222, 231, 227, 0, 299, 307, 313, 322, 318, 0, 0, 299, 0, 0, 299, 0, 226, 299, 317, 215, 215, 0, 215, 0 } ; static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, 5, 6, 7, 8, 9, 10, 11, 1, 1, 1, 1, 12, 13, 1, 14, 1, 15, 16, 17, 18, 1, 1, 1, 1, 1, 19, 1, 20, 1, 21, 22, 1, 23, 24, 25, 26, 27, 26, 28, 29, 30, 31, 26, 31, 26, 32, 33, 26, 26, 26, 34, 35, 36, 26, 26, 26, 37, 26, 1, 38, 1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 31, 51, 52, 53, 54, 55, 56, 26, 57, 58, 59, 60, 26, 26, 61, 62, 26, 63, 64, 65, 66, 1, 1, 1, 1, 1, 1, 1, 1, 1, 67, 68, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 69, 70, 71, 72, 73, 1, 74, 1, 1, 1, 75, 1, 1, 1, 1, 1, 76, 77, 78, 79, 80, 81, 1, 1, 82, 1, 83, 1, 1, 1, 84, 1, 85, 86, 87, 88, 1, 1, 1, 89, 90, 91, 1, 1, 1, 1, 1, 92, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 93, 94, 95, 96, 97, 98, 1, 1, 99, 100, 101, 1, 102, 1, 1, 1, 103, 104, 105, 106, 1, 107, 1, 1, 108, 109, 1, 110, 111, 1, 1, 1 } ; static const YY_CHAR yy_meta[112] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const flex_int16_t yy_base[1277] = { 0, 0, 0, 0, 0, 63, 0, 106, 0, 2, 23, 52, 54, 199, 251, 1990, 1991, 1987, 1986, 1985, 1984, 1983, 1982, 1981, 1980, 1979, 1978, 1977, 1976, 1975, 1974, 1973, 1972, 1971, 1970, 1969, 1968, 1967, 1966, 1965, 1964, 1963, 1962, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 52, 291, 302, 54, 51, 303, 6, 26, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 337, 338, 372, 349, 1991, 383, 29, 28, 1922, 1951, 1920, 440, 1919, 1991, 1918, 1947, 1916, 501, 1915, 1917, 1991, 545, 1943, 100, 1941, 401, 104, 1941, 337, 415, 0, 1910, 418, 1938, 571, 559, 577, 578, 600, 601, 55, 14, 1943, 1942, 150, 1935, 153, 570, 1880, 634, 633, 1934, 653, 655, 653, 1932, 673, 687, 1877, 710, 1936, 696, 4, 699, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 700, 1991, 1991, 1991, 1991, 741, 1991, 1991, 327, 28, 53, 70, 772, 1991, 792, 706, 352, 314, 133, 97, 363, 203, 208, 209, 398, 1991, 1991, 758, 1991, 1991, 1991, 1991, 818, 1991, 1991, 1991, 1991, 849, 1991, 1991, 602, 205, 210, 286, 880, 1991, 900, 794, 654, 684, 459, 589, 603, 452, 703, 687, 1991, 1991, 835, 1991, 926, 61, 1895, 292, 63, 1885, 1897, 1884, 62, 165, 1876, 1991, 0, 1991, 1991, 784, 0, 1925, 1991, 1991, 0, 1991, 1991, 61, 0, 1991, 1991, 0, 1991, 1991, 1991, 0, 1991, 1991, 860, 0, 1924, 1991, 1991, 0, 1991, 1991, 0, 1991, 1991, 0, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1884, 1991, 1991, 1991, 1991, 1991, 949, 1991, 1991, 1991, 1991, 1991, 1991, 1883, 1991, 1991, 1991, 1991, 1991, 970, 455, 457, 536, 1867, 604, 1866, 605, 1865, 1991, 1991, 1991, 1991, 1991, 1879, 1991, 1991, 1991, 1991, 991, 1991, 1991, 1991, 1991, 1991, 1878, 1991, 1991, 1991, 1991, 1011, 717, 722, 731, 806, 808, 786, 840, 858, 889, 871, 753, 1862, 783, 770, 903, 1991, 1991, 1991, 1991, 1991, 1991, 1022, 1991, 1991, 1991, 1991, 1991, 1876, 1991, 1991, 1991, 1991, 1991, 1042, 1991, 1991, 1991, 1991, 1991, 1991, 1875, 1991, 1991, 1991, 1991, 1991, 1063, 790, 803, 834, 1859, 885, 1858, 891, 1857, 1991, 1991, 1991, 1991, 1991, 1871, 1991, 1991, 1991, 1991, 1084, 1991, 1991, 1991, 1991, 1991, 1870, 1991, 1991, 1991, 1991, 1104, 898, 911, 914, 925, 950, 938, 931, 936, 968, 954, 926, 1854, 959, 977, 1991, 1991, 1991, 1991, 1991, 1991, 1115, 1135, 1166, 102, 987, 1197, 1217, 173, 980, 995, 1860, 1152, 967, 1874, 1858, 1861, 1866, 1859, 1870, 1861, 1860, 1859, 1853, 145, 123, 1865, 1855, 1991, 1991, 1991, 1894, 1991, 167, 1991, 1991, 1991, 1991, 1991, 1893, 1991, 1991, 1991, 1007, 1838, 1837, 1836, 1835, 1834, 1848, 1832, 1831, 1830, 1829, 1828, 1032, 1827, 1826, 1825, 1824, 1823, 1822, 1836, 1820, 1819, 1818, 1817, 1816, 1045, 1815, 1053, 1814, 1991, 1991, 1991, 1056, 1813, 1812, 1811, 1810, 1809, 1823, 1807, 1806, 1805, 1804, 1058, 1803, 1802, 1801, 1800, 1799, 1813, 1797, 1796, 1795, 1794, 1065, 1793, 1070, 1792, 1078, 1991, 1991, 1086, 1089, 1791, 1790, 1080, 1100, 1091, 1991, 1129, 1103, 1789, 1150, 1788, 1787, 1786, 1785, 1784, 1783, 1109, 1782, 1781, 1780, 1779, 1778, 1792, 1776, 1775, 1774, 1773, 1772, 1153, 1771, 1770, 1769, 1768, 1767, 1766, 1780, 1764, 1763, 1762, 1761, 1760, 1171, 1759, 1173, 1758, 1991, 1991, 1991, 1175, 1757, 1756, 1755, 1754, 1753, 1767, 1751, 1750, 1749, 1748, 1179, 1747, 1746, 1745, 1744, 1743, 1757, 1741, 1740, 1739, 1738, 1183, 1737, 1185, 1736, 1198, 1991, 1991, 1207, 1202, 1735, 1734, 1188, 1208, 1211, 1991, 1219, 1215, 1733, 1732, 1731, 1730, 1729, 1728, 1727, 1726, 1725, 1724, 1723, 1722, 1736, 1720, 1719, 1718, 1717, 1716, 1256, 1715, 1714, 1713, 1712, 1711, 1710, 1724, 1708, 1707, 1706, 1705, 1704, 1277, 1222, 1228, 1234, 1703, 1991, 1702, 1701, 1700, 1699, 1698, 1712, 1696, 1695, 1694, 1693, 1298, 1692, 1691, 1690, 1689, 1688, 1702, 1686, 1685, 1684, 1683, 1318, 1238, 1259, 386, 193, 1264, 1682, 1991, 1287, 1681, 1680, 1679, 1678, 1677, 1676, 1334, 1991, 1680, 1689, 1696, 1682, 1676, 272, 1675, 1686, 3, 417, 1673, 422, 1672, 1689, 1688, 1679, 1686, 1991, 498, 1991, 1242, 1272, 1662, 1661, 1292, 1660, 1659, 1991, 1991, 1305, 1658, 1657, 1306, 1656, 1655, 1991, 1991, 1314, 1323, 1317, 1344, 1327, 1330, 1654, 1339, 1991, 1340, 1335, 1343, 1653, 1652, 1346, 1651, 1650, 1991, 1991, 1359, 1649, 1648, 1360, 1647, 1646, 1991, 1991, 1362, 1368, 1372, 1380, 1367, 1378, 1645, 1382, 1991, 1384, 1644, 1643, 1642, 1641, 1640, 1654, 1638, 1637, 1636, 1635, 1634, 1388, 1633, 1632, 1631, 1630, 1629, 1628, 1642, 1626, 1625, 1624, 1623, 1622, 1389, 1621, 1991, 1393, 1620, 1991, 1619, 1396, 1618, 1617, 1616, 1615, 1614, 1628, 1612, 1611, 1610, 1609, 1397, 1608, 1607, 1606, 1605, 1604, 1618, 1602, 1601, 1600, 1599, 1401, 1598, 1991, 1402, 1597, 1991, 1596, 1595, 1594, 1593, 1592, 1405, 1591, 1991, 1590, 1589, 1588, 1587, 1586, 1585, 1603, 1584, 1579, 1580, 1578, 1580, 1563, 595, 1552, 1991, 1556, 1556, 1991, 1548, 1553, 1550, 596, 1544, 1991, 1408, 1528, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1411, 1409, 1423, 1575, 1571, 18, 1991, 1412, 1418, 1414, 1516, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1430, 1415, 1429, 1563, 1561, 257, 1991, 1425, 1431, 1383, 1379, 1434, 1375, 1374, 1371, 1354, 1435, 1351, 1348, 1439, 1345, 1336, 1329, 1247, 1241, 607, 1236, 1240, 616, 635, 1234, 1228, 1991, 1212, 1214, 738, 1212, 1175, 1171, 1991, 753, 1991, 1443, 1447, 0, 1199, 1469, 1452, 1114, 1477, 1991, 1480, 1466, 1, 1142, 231, 1454, 1090, 1071, 1070, 1050, 1048, 1991, 1064, 1031, 1991, 1991, 856, 1022, 1020, 1029, 1991, 1017, 1003, 1002, 1991, 1481, 1484, 1488, 1498, 1500, 1034, 1028, 263, 1496, 1991, 1502, 1506, 1513, 1515, 1516, 1517, 687, 1508, 1991, 1068, 982, 1991, 974, 1991, 1079, 1161, 905, 901, 1523, 1524, 1525, 880, 1527, 866, 1528, 860, 859, 843, 839, 817, 851, 821, 816, 779, 1532, 1535, 1533, 1534, 733, 1538, 727, 1539, 723, 724, 729, 762, 759, 757, 717, 1991, 1181, 1262, 1991, 1991, 1526, 1547, 1545, 1546, 1991, 1991, 1991, 1991, 1991, 710, 703, 639, 616, 612, 621, 1555, 1547, 1551, 1991, 1991, 1991, 662, 661, 588, 521, 520, 521, 1991, 1991, 1991, 1991, 1552, 458, 1553, 456, 454, 413, 1991, 1991, 1991, 382, 1554, 1556, 370, 1557, 366, 352, 331, 1991, 1991, 1991, 329, 1991, 1991, 1991, 1991, 341, 1564, 1991, 1991, 1991, 1991, 296, 315, 1567, 307, 226, 1565, 199, 1991, 1570, 1991, 1568, 1571, 174, 1991, 1991, 1634, 1637, 1639, 1641, 218, 139, 102, 46, 35, 32, 5, 2, 1, 0, 1643, 1645 } ; static const flex_int16_t yy_def[1277] = { 0, 1261, 1261, 1261, 3, 1261, 5, 1261, 7, 1261, 1261, 1261, 1261, 1262, 1262, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 114, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 114, 114, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1263, 1263, 1263, 1260, 1260, 1260, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1264, 1264, 1264, 1264, 1260, 1260, 1260, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1265, 1260, 1260, 1260, 1266, 1260, 1260, 1260, 1267, 1260, 1260, 1260, 1268, 1260, 1260, 1269, 1260, 1260, 1260, 1270, 1260, 1260, 1260, 1271, 1260, 1260, 1260, 1272, 1260, 1260, 1273, 1260, 1260, 1274, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1263, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1263, 1263, 1260, 1263, 1263, 1260, 1263, 1263, 1263, 1260, 1260, 1263, 1263, 1263, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1264, 1264, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1264, 1264, 1264, 1260, 1264, 1264, 1260, 1264, 1264, 1264, 1260, 1260, 1264, 1264, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1275, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1275, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1275, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1275, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1260, 1260, 1263, 1263, 1260, 1260, 1263, 1263, 1263, 1260, 1263, 1260, 1260, 1263, 1260, 1260, 1260, 1260, 1260, 1260, 1276, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1276, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1276, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1276, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1264, 1260, 1260, 1264, 1264, 1260, 1260, 1264, 1264, 1264, 1260, 1264, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1275, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1263, 1263, 1263, 1263, 1260, 1260, 1263, 1260, 1263, 1260, 1276, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1264, 1264, 1264, 1264, 1264, 1260, 1260, 1264, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1263, 1263, 1260, 1260, 1260, 1260, 1263, 1263, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1264, 1264, 1264, 1260, 1260, 1260, 1260, 1264, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1263, 1260, 1260, 1260, 1260, 1260, 1263, 1260, 1264, 1264, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1263, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1264, 1264, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1263, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1264, 1264, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1263, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1264, 1264, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1260, 1260, 1260, 1260, 1260, 1260, 1263, 1260, 1260, 1263, 1260, 1260, 1263, 1260, 1263, 1260, 1260, 1260, 0, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260 } ; static const flex_int16_t yy_nxt[2103] = { 0, 1260, 1260, 623, 622, 621, 17, 101, 619, 1005, 387, 18, 19, 102, 20, 399, 1122, 1133, 1123, 1134, 21, 22, 1005, 23, 103, 24, 1090, 25, 101, 206, 26, 455, 27, 28, 102, 617, 29, 30, 616, 31, 104, 32, 33, 105, 34, 103, 35, 402, 207, 615, 36, 208, 259, 261, 37, 38, 459, 107, 39, 107, 40, 104, 41, 108, 105, 108, 42, 43, 106, 403, 209, 260, 262, 461, 109, 157, 109, 189, 195, 158, 400, 196, 159, 653, 614, 160, 190, 191, 161, 106, 110, 458, 110, 111, 162, 111, 192, 197, 163, 401, 455, 198, 164, 614, 605, 613, 338, 165, 193, 194, 346, 594, 166, 199, 595, 112, 460, 112, 113, 338, 113, 600, 606, 346, 601, 806, 44, 45, 46, 807, 47, 48, 49, 462, 50, 51, 455, 52, 53, 339, 493, 340, 611, 347, 54, 348, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 376, 65, 66, 377, 458, 388, 67, 68, 389, 69, 862, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 863, 83, 84, 85, 86, 87, 88, 89, 90, 404, 492, 405, 407, 91, 408, 860, 458, 867, 861, 92, 93, 94, 95, 96, 97, 98, 495, 99, 532, 100, 115, 455, 455, 536, 607, 833, 406, 867, 984, 834, 608, 609, 116, 16, 117, 16, 118, 16, 16, 119, 120, 16, 121, 16, 120, 122, 16, 985, 123, 1259, 124, 125, 16, 126, 16, 127, 16, 16, 16, 128, 16, 120, 16, 16, 129, 16, 16, 16, 120, 130, 16, 16, 115, 497, 1255, 1099, 496, 498, 535, 1136, 1137, 458, 458, 537, 116, 16, 117, 16, 118, 16, 16, 119, 120, 16, 121, 16, 120, 122, 16, 538, 123, 1253, 124, 125, 16, 126, 16, 127, 16, 16, 16, 128, 16, 120, 16, 16, 129, 16, 16, 16, 120, 130, 16, 16, 167, 1252, 1158, 488, 168, 1159, 1001, 169, 732, 1250, 170, 179, 200, 171, 172, 180, 455, 1002, 181, 173, 597, 182, 201, 174, 183, 202, 1249, 175, 598, 350, 184, 203, 176, 599, 185, 539, 456, 177, 186, 178, 457, 455, 350, 187, 204, 489, 210, 220, 188, 205, 211, 221, 455, 212, 222, 490, 213, 223, 242, 214, 224, 225, 351, 491, 352, 215, 226, 243, 244, 216, 227, 1247, 1246, 217, 228, 835, 458, 245, 218, 229, 487, 232, 1245, 219, 230, 233, 231, 455, 234, 246, 247, 235, 248, 342, 236, 494, 249, 982, 343, 250, 237, 458, 251, 1244, 238, 252, 342, 353, 239, 1006, 357, 253, 458, 240, 1008, 254, 983, 1243, 241, 255, 353, 1242, 1006, 357, 256, 1240, 344, 1008, 345, 257, 499, 258, 266, 267, 268, 269, 270, 271, 272, 273, 354, 572, 355, 358, 455, 359, 649, 458, 532, 274, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 277, 275, 275, 275, 1239, 278, 279, 280, 281, 282, 283, 275, 275, 284, 275, 275, 275, 275, 275, 285, 286, 287, 288, 275, 289, 290, 275, 275, 275, 291, 1014, 292, 293, 298, 299, 300, 301, 302, 303, 304, 305, 573, 569, 1014, 458, 1238, 650, 1237, 535, 1236, 306, 307, 307, 307, 307, 307, 307, 307, 307, 307, 308, 309, 307, 307, 307, 651, 310, 311, 312, 313, 314, 315, 307, 307, 316, 307, 307, 307, 307, 307, 317, 318, 319, 320, 307, 321, 307, 307, 307, 307, 322, 365, 323, 324, 327, 328, 329, 1235, 330, 331, 332, 333, 378, 361, 365, 334, 335, 390, 362, 368, 371, 1234, 1233, 327, 328, 329, 361, 336, 532, 331, 332, 333, 368, 371, 366, 652, 367, 1076, 1083, 334, 335, 532, 532, 459, 461, 409, 363, 410, 364, 1106, 1076, 1083, 369, 372, 370, 373, 374, 375, 1109, 376, 388, 533, 1106, 377, 389, 534, 378, 390, 570, 379, 391, 1109, 380, 392, 393, 380, 379, 1110, 381, 394, 392, 391, 382, 395, 402, 571, 383, 396, 535, 1232, 1110, 384, 397, 532, 385, 381, 386, 398, 387, 399, 394, 535, 535, 460, 462, 1231, 1230, 1224, 415, 412, 416, 413, 404, 1223, 405, 382, 407, 1222, 408, 409, 395, 410, 412, 565, 413, 415, 532, 416, 417, 383, 422, 417, 564, 422, 396, 418, 414, 423, 386, 419, 1221, 424, 532, 398, 420, 455, 425, 1220, 418, 421, 423, 426, 384, 535, 1219, 427, 678, 397, 406, 430, 403, 680, 419, 431, 424, 566, 432, 411, 414, 433, 455, 421, 434, 426, 435, 567, 1173, 427, 436, 1174, 1115, 575, 437, 568, 485, 420, 535, 425, 486, 428, 429, 438, 495, 1115, 574, 1119, 439, 1210, 440, 441, 442, 1209, 535, 1208, 443, 458, 1207, 444, 1119, 694, 445, 682, 429, 446, 447, 448, 679, 500, 1206, 449, 1205, 681, 455, 450, 1204, 455, 501, 502, 1203, 532, 458, 463, 451, 532, 1202, 464, 503, 452, 465, 453, 454, 466, 728, 610, 467, 488, 468, 455, 504, 505, 469, 474, 496, 610, 470, 475, 610, 506, 476, 1198, 1197, 477, 610, 471, 478, 1196, 479, 683, 472, 695, 480, 473, 562, 730, 481, 610, 563, 507, 686, 693, 610, 508, 458, 482, 509, 458, 684, 510, 483, 535, 511, 484, 512, 535, 576, 1195, 513, 455, 1141, 685, 514, 687, 729, 577, 578, 458, 1194, 458, 519, 515, 455, 1141, 520, 579, 516, 521, 517, 518, 522, 618, 688, 523, 524, 525, 536, 580, 581, 526, 455, 618, 538, 527, 618, 731, 582, 1193, 689, 757, 618, 540, 528, 653, 455, 541, 1192, 529, 542, 530, 531, 543, 759, 618, 544, 532, 545, 691, 618, 458, 546, 551, 1191, 1190, 547, 552, 565, 572, 553, 1189, 583, 554, 458, 548, 555, 584, 556, 532, 549, 532, 557, 550, 690, 1188, 558, 1185, 537, 585, 762, 1184, 458, 532, 539, 559, 766, 532, 761, 586, 560, 758, 532, 561, 696, 587, 458, 588, 589, 763, 590, 532, 625, 848, 760, 767, 626, 535, 768, 627, 773, 591, 628, 835, 592, 629, 848, 630, 535, 573, 808, 631, 593, 637, 765, 632, 732, 638, 837, 535, 639, 535, 770, 640, 633, 764, 641, 642, 643, 634, 869, 635, 644, 535, 657, 849, 645, 535, 658, 772, 1181, 659, 535, 769, 660, 646, 1143, 661, 1180, 662, 647, 535, 648, 663, 668, 873, 1157, 664, 669, 1143, 774, 670, 1156, 836, 671, 697, 665, 672, 649, 673, 809, 666, 810, 674, 698, 699, 651, 675, 838, 878, 839, 881, 1147, 1146, 700, 704, 676, 1145, 678, 705, 871, 677, 706, 680, 1179, 707, 701, 702, 708, 1144, 709, 455, 1142, 455, 710, 1182, 716, 1179, 711, 455, 717, 1140, 455, 718, 891, 874, 719, 712, 1182, 720, 721, 722, 713, 455, 714, 723, 694, 736, 650, 724, 1139, 737, 896, 1043, 738, 1041, 652, 739, 725, 879, 740, 882, 741, 726, 889, 727, 742, 747, 679, 886, 743, 748, 455, 681, 749, 1039, 1037, 750, 775, 744, 751, 458, 752, 458, 745, 887, 753, 776, 777, 458, 754, 888, 458, 455, 892, 1138, 900, 778, 781, 755, 1135, 890, 782, 458, 756, 783, 695, 1183, 784, 779, 780, 785, 898, 786, 728, 841, 730, 787, 905, 1129, 1183, 788, 908, 893, 842, 843, 757, 1211, 759, 793, 789, 532, 458, 794, 844, 790, 795, 791, 792, 796, 1211, 532, 797, 798, 799, 532, 845, 846, 800, 895, 532, 532, 801, 458, 918, 847, 901, 1124, 773, 1118, 811, 802, 532, 1117, 812, 947, 803, 813, 804, 805, 814, 950, 916, 815, 729, 816, 731, 808, 906, 817, 822, 976, 909, 818, 823, 869, 758, 824, 760, 913, 825, 535, 819, 826, 1116, 827, 1114, 820, 1113, 828, 821, 535, 979, 829, 915, 535, 914, 837, 1212, 917, 535, 535, 830, 920, 919, 1015, 1112, 831, 774, 923, 832, 1212, 535, 924, 1111, 948, 925, 949, 1108, 926, 987, 951, 927, 952, 928, 873, 1107, 809, 929, 810, 935, 977, 930, 978, 936, 871, 989, 937, 878, 881, 938, 931, 981, 939, 940, 941, 932, 455, 933, 942, 455, 955, 980, 943, 981, 956, 455, 838, 957, 839, 455, 958, 944, 891, 959, 1016, 960, 945, 896, 946, 961, 966, 455, 455, 962, 967, 1034, 455, 968, 900, 988, 969, 989, 963, 970, 874, 971, 990, 964, 1028, 972, 1029, 905, 908, 973, 532, 991, 992, 879, 882, 532, 532, 1025, 974, 1027, 532, 993, 458, 975, 1026, 458, 918, 1033, 532, 1032, 532, 458, 1052, 994, 995, 1030, 1055, 947, 892, 978, 1047, 950, 1048, 898, 1060, 1063, 1105, 458, 458, 976, 979, 1035, 458, 987, 901, 1105, 1015, 455, 1104, 455, 1091, 1104, 1034, 532, 952, 1044, 455, 906, 909, 1045, 535, 455, 1051, 1100, 1046, 1049, 535, 532, 532, 1052, 535, 949, 1055, 1060, 1103, 1103, 919, 1063, 535, 1102, 535, 455, 1053, 1102, 1037, 455, 1056, 948, 1039, 949, 1091, 951, 1100, 952, 1061, 1064, 1041, 1043, 1086, 977, 980, 978, 981, 988, 532, 989, 1016, 458, 1087, 458, 1092, 1093, 1035, 535, 1096, 455, 458, 1095, 532, 455, 1120, 458, 455, 1101, 1125, 1126, 1150, 535, 535, 1053, 1121, 1037, 1056, 1061, 1039, 1041, 1152, 1064, 1154, 1043, 455, 458, 1127, 1128, 532, 458, 1160, 1161, 1162, 1132, 1092, 532, 1101, 1167, 1169, 1171, 1130, 1131, 1175, 1176, 1177, 455, 455, 1150, 535, 1152, 1154, 1213, 1149, 1163, 455, 532, 1167, 532, 1148, 458, 1169, 1171, 535, 458, 1213, 1178, 458, 1215, 1217, 1226, 1151, 1164, 1214, 1228, 1215, 1217, 455, 455, 1226, 1228, 1153, 1166, 1155, 1165, 458, 1214, 455, 455, 535, 455, 1257, 1186, 455, 1257, 1098, 535, 1097, 1168, 1170, 1172, 1094, 1199, 1187, 1200, 1089, 458, 458, 1151, 1088, 1153, 1155, 1201, 1085, 1084, 458, 535, 1168, 535, 1225, 1082, 1170, 1172, 1081, 1241, 1080, 1079, 1078, 1216, 1218, 1227, 1251, 1077, 1075, 1229, 1216, 1218, 458, 458, 1227, 1229, 1248, 1074, 1256, 1073, 1254, 1072, 458, 458, 1071, 458, 1258, 1070, 458, 1258, 16, 16, 16, 114, 114, 114, 275, 275, 307, 307, 870, 870, 897, 897, 1069, 846, 845, 844, 843, 842, 841, 1068, 839, 983, 982, 763, 762, 1067, 1066, 831, 830, 829, 828, 1065, 826, 825, 824, 823, 822, 820, 819, 818, 817, 1062, 815, 814, 813, 812, 811, 810, 1059, 1058, 804, 803, 802, 801, 800, 1057, 798, 797, 796, 795, 794, 793, 791, 790, 789, 788, 787, 1054, 785, 784, 783, 782, 781, 1050, 1043, 1042, 1041, 1040, 1039, 1038, 1037, 1036, 1031, 1024, 1023, 1022, 1021, 1020, 1019, 1018, 1017, 1013, 1012, 1011, 1010, 1009, 1007, 1004, 1003, 1000, 999, 998, 997, 996, 581, 580, 579, 578, 577, 576, 986, 560, 559, 558, 557, 965, 555, 554, 553, 552, 551, 549, 548, 547, 546, 954, 544, 543, 542, 541, 540, 953, 530, 529, 528, 527, 526, 934, 524, 523, 522, 521, 520, 519, 517, 516, 515, 514, 513, 922, 511, 510, 509, 508, 507, 581, 580, 579, 578, 577, 576, 921, 763, 762, 912, 911, 560, 559, 558, 557, 910, 555, 554, 553, 552, 551, 549, 548, 547, 546, 907, 544, 543, 542, 541, 540, 904, 903, 530, 529, 528, 527, 526, 902, 524, 523, 522, 521, 520, 519, 517, 516, 515, 514, 513, 899, 511, 510, 509, 508, 507, 505, 504, 503, 502, 501, 500, 894, 684, 683, 885, 884, 483, 482, 481, 480, 883, 478, 477, 476, 475, 474, 472, 471, 470, 469, 880, 467, 466, 465, 464, 463, 877, 876, 453, 452, 451, 450, 449, 875, 447, 446, 445, 444, 443, 442, 440, 439, 438, 437, 436, 872, 434, 433, 432, 431, 430, 868, 866, 865, 864, 859, 858, 857, 856, 855, 854, 853, 852, 851, 850, 840, 771, 746, 735, 734, 733, 732, 715, 703, 692, 667, 656, 655, 654, 653, 636, 624, 620, 612, 601, 604, 603, 602, 596, 385, 428, 401, 393, 411, 400, 375, 374, 360, 356, 349, 341, 337, 326, 325, 297, 296, 295, 294, 265, 264, 263, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 1260, 15, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260 } ; static const flex_int16_t yy_chk[2103] = { 0, 0, 0, 1274, 1273, 1272, 3, 9, 1271, 857, 155, 3, 3, 9, 3, 155, 1088, 1097, 1088, 1097, 3, 3, 857, 3, 9, 3, 1030, 3, 10, 63, 3, 275, 3, 3, 10, 1270, 3, 3, 1269, 3, 9, 3, 3, 9, 3, 10, 3, 134, 63, 1268, 3, 64, 99, 100, 3, 3, 276, 11, 3, 12, 3, 10, 3, 11, 10, 12, 3, 5, 9, 134, 64, 99, 100, 277, 11, 57, 12, 60, 61, 57, 133, 61, 57, 1030, 349, 57, 60, 60, 57, 10, 11, 275, 12, 11, 57, 12, 60, 61, 57, 133, 285, 61, 57, 349, 334, 1267, 116, 57, 60, 60, 119, 327, 57, 61, 327, 11, 276, 12, 11, 116, 12, 330, 334, 119, 330, 585, 5, 5, 5, 585, 5, 5, 5, 277, 5, 5, 284, 5, 5, 116, 285, 116, 1266, 119, 5, 119, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 137, 5, 5, 139, 285, 137, 5, 5, 139, 5, 606, 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 606, 7, 7, 7, 7, 7, 7, 7, 7, 137, 284, 137, 139, 7, 139, 605, 284, 614, 605, 7, 7, 7, 7, 7, 7, 7, 287, 7, 307, 7, 13, 288, 289, 308, 335, 589, 137, 614, 836, 589, 335, 1265, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 836, 13, 1258, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 288, 1252, 1049, 287, 289, 307, 1099, 1099, 288, 289, 308, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 309, 14, 1250, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 58, 1249, 1127, 283, 58, 1127, 854, 58, 1049, 1247, 58, 59, 62, 58, 58, 59, 274, 854, 59, 58, 329, 59, 62, 58, 59, 62, 1246, 58, 329, 121, 59, 62, 58, 329, 59, 309, 274, 58, 59, 58, 274, 282, 121, 59, 62, 283, 93, 94, 59, 62, 93, 94, 286, 93, 94, 283, 93, 94, 96, 93, 94, 94, 121, 283, 121, 93, 94, 96, 96, 93, 94, 1240, 1235, 93, 94, 835, 274, 96, 93, 94, 282, 95, 1231, 93, 94, 95, 94, 290, 95, 96, 96, 95, 98, 118, 95, 286, 98, 835, 118, 98, 95, 282, 98, 1230, 95, 98, 118, 122, 95, 858, 125, 98, 286, 95, 860, 98, 835, 1229, 95, 98, 122, 1227, 858, 125, 98, 1224, 118, 860, 118, 98, 290, 98, 104, 104, 104, 104, 104, 104, 104, 104, 122, 319, 122, 125, 455, 125, 456, 290, 316, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 1220, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 867, 104, 104, 110, 110, 110, 110, 110, 110, 110, 110, 319, 316, 867, 455, 1219, 456, 1218, 316, 1216, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 457, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 128, 110, 110, 114, 114, 114, 1210, 114, 114, 114, 114, 140, 127, 128, 114, 114, 140, 127, 129, 130, 1209, 1208, 114, 114, 114, 127, 114, 317, 114, 114, 114, 129, 130, 128, 457, 128, 1003, 1012, 114, 114, 306, 318, 459, 461, 140, 127, 140, 127, 1069, 1003, 1012, 129, 130, 129, 130, 131, 131, 1072, 131, 132, 306, 1069, 131, 132, 306, 131, 132, 317, 131, 132, 1072, 131, 132, 132, 143, 142, 1073, 131, 132, 143, 142, 131, 132, 142, 318, 131, 132, 317, 1207, 1073, 131, 132, 314, 131, 147, 131, 132, 131, 132, 147, 306, 318, 459, 461, 1206, 1205, 1198, 143, 142, 143, 142, 145, 1197, 146, 149, 145, 1196, 146, 145, 149, 146, 145, 315, 146, 145, 321, 146, 147, 150, 147, 145, 314, 146, 150, 145, 142, 146, 154, 145, 1195, 146, 320, 154, 145, 281, 146, 1194, 149, 145, 149, 146, 152, 314, 1193, 147, 485, 152, 156, 266, 152, 486, 150, 266, 150, 315, 266, 156, 156, 266, 487, 154, 266, 154, 266, 315, 1136, 156, 266, 1136, 1079, 321, 266, 315, 281, 152, 321, 152, 281, 156, 156, 266, 495, 1079, 320, 1084, 266, 1178, 266, 266, 271, 1177, 320, 1176, 271, 281, 1175, 271, 1084, 498, 271, 487, 152, 271, 271, 271, 485, 293, 1174, 271, 1173, 486, 497, 271, 1172, 490, 293, 293, 1170, 532, 487, 278, 271, 313, 1168, 278, 293, 271, 278, 271, 271, 278, 533, 341, 278, 488, 278, 489, 293, 293, 278, 280, 495, 341, 278, 280, 341, 293, 280, 1163, 1162, 280, 341, 278, 280, 1161, 280, 488, 278, 498, 280, 278, 313, 534, 280, 341, 313, 298, 490, 497, 341, 298, 497, 280, 298, 490, 488, 298, 280, 532, 298, 280, 298, 313, 324, 1160, 298, 492, 1111, 489, 298, 491, 533, 324, 324, 488, 1159, 489, 303, 298, 494, 1111, 303, 324, 298, 303, 298, 298, 303, 360, 491, 303, 303, 303, 536, 324, 324, 303, 493, 360, 538, 303, 360, 534, 324, 1158, 492, 562, 360, 310, 303, 491, 499, 310, 1157, 303, 310, 303, 303, 310, 563, 360, 310, 564, 310, 494, 360, 492, 310, 312, 1156, 1155, 310, 312, 565, 572, 312, 1153, 326, 312, 494, 310, 312, 326, 312, 569, 310, 567, 312, 310, 493, 1151, 312, 1147, 536, 326, 565, 1146, 493, 566, 538, 312, 568, 571, 564, 326, 312, 562, 574, 312, 499, 326, 499, 326, 326, 565, 326, 570, 441, 594, 563, 568, 441, 564, 569, 441, 575, 326, 441, 590, 326, 441, 594, 441, 565, 572, 586, 441, 326, 454, 567, 441, 568, 454, 591, 569, 454, 567, 571, 454, 441, 566, 454, 454, 454, 441, 624, 441, 454, 566, 473, 594, 454, 571, 473, 574, 1142, 473, 574, 570, 473, 454, 1113, 473, 1140, 473, 454, 570, 454, 473, 484, 636, 1126, 473, 484, 1113, 575, 484, 1125, 590, 484, 506, 473, 484, 649, 484, 586, 473, 586, 484, 506, 506, 651, 484, 591, 656, 591, 667, 1118, 1117, 506, 518, 484, 1116, 678, 518, 624, 484, 518, 680, 1139, 518, 506, 506, 518, 1114, 518, 682, 1112, 689, 518, 1144, 531, 1139, 518, 685, 531, 1108, 686, 531, 691, 636, 531, 518, 1144, 531, 531, 531, 518, 690, 518, 531, 694, 550, 649, 531, 1107, 550, 703, 1105, 550, 1104, 651, 550, 531, 656, 550, 667, 550, 531, 689, 531, 550, 561, 678, 682, 550, 561, 693, 680, 561, 1103, 1102, 561, 582, 550, 561, 682, 561, 689, 550, 685, 561, 582, 582, 685, 561, 686, 686, 696, 691, 1101, 715, 582, 583, 561, 1098, 690, 583, 690, 561, 583, 694, 1145, 583, 582, 582, 583, 703, 583, 728, 593, 730, 583, 735, 1092, 1145, 583, 746, 693, 593, 593, 757, 1180, 759, 584, 583, 768, 693, 584, 593, 583, 584, 583, 583, 584, 1180, 761, 584, 584, 584, 765, 593, 593, 584, 696, 764, 769, 584, 696, 770, 593, 715, 1089, 773, 1082, 587, 584, 772, 1081, 587, 806, 584, 587, 584, 584, 587, 807, 768, 587, 728, 587, 730, 808, 735, 587, 588, 833, 746, 587, 588, 869, 757, 588, 759, 761, 588, 768, 587, 588, 1080, 588, 1078, 587, 1077, 588, 587, 761, 834, 588, 765, 765, 764, 837, 1181, 769, 764, 769, 588, 772, 770, 870, 1075, 588, 773, 792, 588, 1181, 772, 792, 1074, 806, 792, 806, 1071, 792, 840, 807, 792, 807, 792, 873, 1070, 808, 792, 808, 805, 833, 792, 833, 805, 869, 1068, 805, 878, 881, 805, 792, 1067, 805, 805, 805, 792, 886, 792, 805, 888, 821, 834, 805, 834, 821, 887, 837, 821, 837, 890, 821, 805, 891, 821, 870, 821, 805, 896, 805, 821, 832, 893, 895, 821, 832, 897, 889, 832, 900, 840, 832, 840, 821, 832, 873, 832, 847, 821, 889, 832, 889, 905, 908, 832, 913, 847, 847, 878, 881, 917, 914, 886, 832, 888, 915, 847, 886, 832, 887, 888, 918, 895, 916, 893, 920, 887, 922, 847, 847, 890, 934, 947, 891, 1066, 916, 950, 916, 896, 954, 965, 1065, 893, 895, 976, 979, 897, 889, 987, 900, 1064, 1015, 1026, 1062, 1025, 1032, 1061, 1034, 1045, 1059, 913, 1033, 905, 908, 914, 913, 1027, 920, 1051, 915, 917, 914, 1046, 1044, 1052, 915, 1058, 1055, 1060, 1057, 1056, 918, 1063, 916, 1054, 920, 1086, 922, 1053, 922, 1087, 934, 947, 934, 947, 1091, 950, 1100, 950, 954, 965, 954, 965, 1025, 976, 979, 976, 979, 987, 1096, 987, 1015, 1026, 1027, 1025, 1032, 1033, 1034, 1045, 1046, 1093, 1033, 1044, 1095, 1120, 1086, 1027, 1121, 1051, 1090, 1090, 1122, 1046, 1044, 1052, 1087, 1052, 1055, 1060, 1055, 1060, 1123, 1063, 1124, 1063, 1130, 1086, 1090, 1090, 1131, 1087, 1128, 1128, 1128, 1096, 1091, 1132, 1100, 1133, 1134, 1135, 1093, 1095, 1137, 1137, 1137, 1148, 1149, 1150, 1096, 1152, 1154, 1184, 1121, 1128, 1164, 1166, 1167, 1165, 1120, 1093, 1169, 1171, 1095, 1120, 1184, 1137, 1121, 1186, 1187, 1200, 1122, 1130, 1185, 1201, 1215, 1217, 1225, 1199, 1226, 1228, 1123, 1132, 1124, 1131, 1130, 1185, 1241, 1251, 1131, 1248, 1256, 1148, 1254, 1257, 1048, 1132, 1047, 1133, 1134, 1135, 1035, 1164, 1149, 1165, 1029, 1148, 1149, 1150, 1028, 1152, 1154, 1166, 1016, 1013, 1164, 1166, 1167, 1165, 1199, 1011, 1169, 1171, 1010, 1225, 1009, 1007, 1006, 1186, 1187, 1200, 1248, 1004, 1002, 1201, 1215, 1217, 1225, 1199, 1226, 1228, 1241, 1001, 1254, 1000, 1251, 999, 1241, 1251, 998, 1248, 1256, 997, 1254, 1257, 1261, 1261, 1261, 1262, 1262, 1262, 1263, 1263, 1264, 1264, 1275, 1275, 1276, 1276, 996, 995, 994, 993, 992, 991, 990, 988, 986, 985, 984, 983, 982, 980, 977, 975, 974, 973, 972, 971, 970, 969, 968, 967, 966, 964, 963, 962, 961, 960, 959, 958, 957, 956, 955, 953, 951, 948, 946, 945, 944, 943, 942, 941, 940, 939, 938, 937, 936, 935, 933, 932, 931, 930, 929, 928, 927, 926, 925, 924, 923, 919, 910, 909, 907, 906, 902, 901, 899, 898, 892, 883, 882, 880, 879, 875, 874, 872, 871, 865, 864, 863, 862, 861, 859, 856, 855, 853, 852, 851, 850, 849, 846, 845, 844, 843, 842, 841, 838, 831, 830, 829, 828, 827, 826, 825, 824, 823, 822, 820, 819, 818, 817, 816, 815, 814, 813, 812, 811, 809, 804, 803, 802, 801, 800, 799, 798, 797, 796, 795, 794, 793, 791, 790, 789, 788, 787, 786, 785, 784, 783, 782, 781, 780, 779, 778, 777, 776, 775, 774, 767, 766, 760, 758, 756, 755, 754, 753, 752, 751, 750, 749, 748, 747, 745, 744, 743, 742, 741, 740, 739, 738, 737, 736, 731, 729, 727, 726, 725, 724, 723, 722, 721, 720, 719, 718, 717, 716, 714, 713, 712, 711, 710, 709, 708, 707, 706, 705, 704, 702, 701, 700, 699, 698, 697, 695, 688, 687, 681, 679, 677, 676, 675, 674, 673, 672, 671, 670, 669, 668, 666, 665, 664, 663, 662, 661, 660, 659, 658, 657, 652, 650, 648, 647, 646, 645, 644, 643, 642, 641, 640, 639, 638, 637, 635, 634, 633, 632, 631, 630, 629, 628, 627, 626, 625, 620, 612, 608, 607, 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, 592, 573, 556, 545, 539, 537, 535, 525, 512, 496, 479, 468, 462, 460, 458, 448, 435, 362, 343, 336, 333, 332, 331, 328, 153, 151, 148, 144, 141, 138, 136, 135, 126, 124, 120, 117, 115, 112, 111, 109, 108, 107, 105, 103, 102, 101, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 15, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 0; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; /* This file is generated automatically by `mergelex.py'. */ #include "common.h" static RECODE_CONST_REQUEST request; static RECODE_SUBTASK subtask; #define YY_INPUT(buf, result, max_size) { int c = recode_get_byte (subtask); result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); } void texte_latin1_diaeresis (void); #define INITIAL 0 #define ascii_latin1 1 #define iso5426_latin1 2 #define ansel_latin1 3 #define latex_latin1 4 #define bibtex_latin1 5 #define texte_latin1 6 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif static int yy_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy ( void ); int yyget_debug ( void ); void yyset_debug ( int debug_flag ); YY_EXTRA_TYPE yyget_extra ( void ); void yyset_extra ( YY_EXTRA_TYPE user_defined ); FILE *yyget_in ( void ); void yyset_in ( FILE * _in_str ); FILE *yyget_out ( void ); void yyset_out ( FILE * _out_str ); int yyget_leng ( void ); char *yyget_text ( void ); int yyget_lineno ( void ); void yyset_lineno ( int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap ( void ); #else extern int yywrap ( void ); #endif #endif #ifndef YY_NO_UNPUT #endif #ifndef yytext_ptr static void yy_flex_strncpy ( char *, const char *, int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen ( const char * ); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput ( void ); #else static int input ( void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define YY_READ_BUF_SIZE 16384 #else #define YY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ int n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (void); #define YY_DECL int yylex (void) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK /*LINTED*/break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { yy_state_type yy_current_state; char *yy_cp, *yy_bp; int yy_act; if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE ); } yy_load_buffer_state( ); } { while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); /* Support of yytext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = (yy_start); yy_match: do { YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 1261 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 1991 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = (yy_hold_char); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(ascii_latin1): case YY_STATE_EOF(iso5426_latin1): case YY_STATE_EOF(ansel_latin1): case YY_STATE_EOF(latex_latin1): case YY_STATE_EOF(bibtex_latin1): case YY_STATE_EOF(texte_latin1): { return 1; } YY_BREAK case 1: YY_RULE_SETUP { recode_put_byte (171, subtask); } YY_BREAK case 2: YY_RULE_SETUP { recode_put_byte (187, subtask); } YY_BREAK case 3: YY_RULE_SETUP { recode_put_byte (192, subtask); } YY_BREAK case 4: YY_RULE_SETUP { recode_put_byte (193, subtask); } YY_BREAK case 5: YY_RULE_SETUP { recode_put_byte (194, subtask); } YY_BREAK case 6: YY_RULE_SETUP { recode_put_byte (195, subtask); } YY_BREAK case 7: YY_RULE_SETUP { recode_put_byte (196, subtask); } YY_BREAK case 8: YY_RULE_SETUP { recode_put_byte (199, subtask); } YY_BREAK case 9: YY_RULE_SETUP { recode_put_byte (200, subtask); } YY_BREAK case 10: YY_RULE_SETUP { recode_put_byte (201, subtask); } YY_BREAK case 11: YY_RULE_SETUP { recode_put_byte (202, subtask); } YY_BREAK case 12: YY_RULE_SETUP { recode_put_byte (203, subtask); } YY_BREAK case 13: YY_RULE_SETUP { recode_put_byte (204, subtask); } YY_BREAK case 14: YY_RULE_SETUP { recode_put_byte (205, subtask); } YY_BREAK case 15: YY_RULE_SETUP { recode_put_byte (206, subtask); } YY_BREAK case 16: YY_RULE_SETUP { recode_put_byte (207, subtask); } YY_BREAK case 17: YY_RULE_SETUP { recode_put_byte (209, subtask); } YY_BREAK case 18: YY_RULE_SETUP { recode_put_byte (210, subtask); } YY_BREAK case 19: YY_RULE_SETUP { recode_put_byte (211, subtask); } YY_BREAK case 20: YY_RULE_SETUP { recode_put_byte (212, subtask); } YY_BREAK case 21: YY_RULE_SETUP { recode_put_byte (213, subtask); } YY_BREAK case 22: YY_RULE_SETUP { recode_put_byte (214, subtask); } YY_BREAK case 23: YY_RULE_SETUP { recode_put_byte (216, subtask); } YY_BREAK case 24: YY_RULE_SETUP { recode_put_byte (217, subtask); } YY_BREAK case 25: YY_RULE_SETUP { recode_put_byte (218, subtask); } YY_BREAK case 26: YY_RULE_SETUP { recode_put_byte (219, subtask); } YY_BREAK case 27: YY_RULE_SETUP { recode_put_byte (220, subtask); } YY_BREAK case 28: YY_RULE_SETUP { recode_put_byte (221, subtask); } YY_BREAK case 29: YY_RULE_SETUP { recode_put_byte (223, subtask); } YY_BREAK case 30: YY_RULE_SETUP { recode_put_byte (224, subtask); } YY_BREAK case 31: YY_RULE_SETUP { recode_put_byte (225, subtask); } YY_BREAK case 32: YY_RULE_SETUP { recode_put_byte (226, subtask); } YY_BREAK case 33: YY_RULE_SETUP { recode_put_byte (227, subtask); } YY_BREAK case 34: YY_RULE_SETUP { recode_put_byte (228, subtask); } YY_BREAK case 35: YY_RULE_SETUP { recode_put_byte (231, subtask); } YY_BREAK case 36: YY_RULE_SETUP { recode_put_byte (232, subtask); } YY_BREAK case 37: YY_RULE_SETUP { recode_put_byte (233, subtask); } YY_BREAK case 38: YY_RULE_SETUP { recode_put_byte (234, subtask); } YY_BREAK case 39: YY_RULE_SETUP { recode_put_byte (235, subtask); } YY_BREAK case 40: YY_RULE_SETUP { recode_put_byte (236, subtask); } YY_BREAK case 41: YY_RULE_SETUP { recode_put_byte (237, subtask); } YY_BREAK case 42: YY_RULE_SETUP { recode_put_byte (238, subtask); } YY_BREAK case 43: YY_RULE_SETUP { recode_put_byte (239, subtask); } YY_BREAK case 44: YY_RULE_SETUP { recode_put_byte (241, subtask); } YY_BREAK case 45: YY_RULE_SETUP { recode_put_byte (242, subtask); } YY_BREAK case 46: YY_RULE_SETUP { recode_put_byte (243, subtask); } YY_BREAK case 47: YY_RULE_SETUP { recode_put_byte (244, subtask); } YY_BREAK case 48: YY_RULE_SETUP { recode_put_byte (245, subtask); } YY_BREAK case 49: YY_RULE_SETUP { recode_put_byte (246, subtask); } YY_BREAK case 50: YY_RULE_SETUP { recode_put_byte (248, subtask); } YY_BREAK case 51: YY_RULE_SETUP { recode_put_byte (249, subtask); } YY_BREAK case 52: YY_RULE_SETUP { recode_put_byte (250, subtask); } YY_BREAK case 53: YY_RULE_SETUP { recode_put_byte (251, subtask); } YY_BREAK case 54: YY_RULE_SETUP { recode_put_byte (252, subtask); } YY_BREAK case 55: YY_RULE_SETUP { recode_put_byte (253, subtask); } YY_BREAK case 56: YY_RULE_SETUP { recode_put_byte (255, subtask); } YY_BREAK case 57: YY_RULE_SETUP { recode_put_byte (123, subtask); } YY_BREAK case 58: YY_RULE_SETUP { recode_put_byte (124, subtask); } YY_BREAK case 59: YY_RULE_SETUP { recode_put_byte (125, subtask); } YY_BREAK case 60: YY_RULE_SETUP { recode_put_byte (36, subtask); } YY_BREAK case 61: YY_RULE_SETUP { recode_put_byte (158, subtask); } YY_BREAK case 62: YY_RULE_SETUP { recode_put_byte (161, subtask); } YY_BREAK case 63: YY_RULE_SETUP { recode_put_byte (163, subtask); } YY_BREAK case 64: YY_RULE_SETUP { recode_put_byte (36, subtask); } YY_BREAK case 65: YY_RULE_SETUP { recode_put_byte (167, subtask); } YY_BREAK case 66: YY_RULE_SETUP { recode_put_byte (172, subtask); } YY_BREAK case 67: YY_RULE_SETUP { recode_put_byte (172, subtask); } YY_BREAK case 68: YY_RULE_SETUP { recode_put_byte (171, subtask); } YY_BREAK case 69: YY_RULE_SETUP { recode_put_byte (187, subtask); } YY_BREAK case 70: YY_RULE_SETUP { recode_put_byte (191, subtask); } YY_BREAK case 71: YY_RULE_SETUP { recode_put_byte (198, subtask); } YY_BREAK case 72: YY_RULE_SETUP { recode_put_byte (208, subtask); } YY_BREAK case 73: YY_RULE_SETUP { recode_put_byte (76, subtask); } YY_BREAK case 74: YY_RULE_SETUP { recode_put_byte (216, subtask); } YY_BREAK case 75: YY_RULE_SETUP { recode_put_byte (254, subtask); } YY_BREAK case 76: YY_RULE_SETUP { recode_put_byte (230, subtask); } YY_BREAK case 77: YY_RULE_SETUP { recode_put_byte (100, subtask); } YY_BREAK case 78: YY_RULE_SETUP { recode_put_byte (240, subtask); } YY_BREAK case 79: YY_RULE_SETUP { recode_put_byte (134, subtask); } YY_BREAK case 80: YY_RULE_SETUP { recode_put_byte (108, subtask); } YY_BREAK case 81: YY_RULE_SETUP { recode_put_byte (248, subtask); } YY_BREAK case 82: YY_RULE_SETUP { recode_put_byte (223, subtask); } YY_BREAK case 83: YY_RULE_SETUP { recode_put_byte (222, subtask); } YY_BREAK case 84: YY_RULE_SETUP { recode_put_byte (224, subtask); } YY_BREAK case 85: YY_RULE_SETUP { recode_put_byte (232, subtask); } YY_BREAK case 86: YY_RULE_SETUP { recode_put_byte (236, subtask); } YY_BREAK case 87: YY_RULE_SETUP { recode_put_byte (242, subtask); } YY_BREAK case 88: YY_RULE_SETUP { recode_put_byte (249, subtask); } YY_BREAK case 89: YY_RULE_SETUP { recode_put_byte (192, subtask); } YY_BREAK case 90: YY_RULE_SETUP { recode_put_byte (200, subtask); } YY_BREAK case 91: YY_RULE_SETUP { recode_put_byte (204, subtask); } YY_BREAK case 92: YY_RULE_SETUP { recode_put_byte (210, subtask); } YY_BREAK case 93: YY_RULE_SETUP { recode_put_byte (217, subtask); } YY_BREAK case 94: YY_RULE_SETUP { recode_put_byte (225, subtask); } YY_BREAK case 95: YY_RULE_SETUP { recode_put_byte (233, subtask); } YY_BREAK case 96: YY_RULE_SETUP { recode_put_byte (237, subtask); } YY_BREAK case 97: YY_RULE_SETUP { recode_put_byte (243, subtask); } YY_BREAK case 98: YY_RULE_SETUP { recode_put_byte (250, subtask); } YY_BREAK case 99: YY_RULE_SETUP { recode_put_byte (253, subtask); } YY_BREAK case 100: YY_RULE_SETUP { recode_put_byte (193, subtask); } YY_BREAK case 101: YY_RULE_SETUP { recode_put_byte (201, subtask); } YY_BREAK case 102: YY_RULE_SETUP { recode_put_byte (205, subtask); } YY_BREAK case 103: YY_RULE_SETUP { recode_put_byte (211, subtask); } YY_BREAK case 104: YY_RULE_SETUP { recode_put_byte (218, subtask); } YY_BREAK case 105: YY_RULE_SETUP { recode_put_byte (221, subtask); } YY_BREAK case 106: YY_RULE_SETUP { recode_put_byte (226, subtask); } YY_BREAK case 107: YY_RULE_SETUP { recode_put_byte (234, subtask); } YY_BREAK case 108: YY_RULE_SETUP { recode_put_byte (238, subtask); } YY_BREAK case 109: YY_RULE_SETUP { recode_put_byte (244, subtask); } YY_BREAK case 110: YY_RULE_SETUP { recode_put_byte (251, subtask); } YY_BREAK case 111: YY_RULE_SETUP { recode_put_byte (194, subtask); } YY_BREAK case 112: YY_RULE_SETUP { recode_put_byte (202, subtask); } YY_BREAK case 113: YY_RULE_SETUP { recode_put_byte (206, subtask); } YY_BREAK case 114: YY_RULE_SETUP { recode_put_byte (212, subtask); } YY_BREAK case 115: YY_RULE_SETUP { recode_put_byte (219, subtask); } YY_BREAK case 116: YY_RULE_SETUP { recode_put_byte (227, subtask); } YY_BREAK case 117: YY_RULE_SETUP { recode_put_byte (245, subtask); } YY_BREAK case 118: YY_RULE_SETUP { recode_put_byte (241, subtask); } YY_BREAK case 119: YY_RULE_SETUP { recode_put_byte (195, subtask); } YY_BREAK case 120: YY_RULE_SETUP { recode_put_byte (213, subtask); } YY_BREAK case 121: YY_RULE_SETUP { recode_put_byte (209, subtask); } YY_BREAK case 122: YY_RULE_SETUP { recode_put_byte (235, subtask); } YY_BREAK case 123: YY_RULE_SETUP { recode_put_byte (239, subtask); } YY_BREAK case 124: YY_RULE_SETUP { recode_put_byte (255, subtask); } YY_BREAK case 125: YY_RULE_SETUP { recode_put_byte (203, subtask); } YY_BREAK case 126: YY_RULE_SETUP { recode_put_byte (207, subtask); } YY_BREAK case 127: YY_RULE_SETUP { recode_put_byte (229, subtask); } YY_BREAK case 128: YY_RULE_SETUP { recode_put_byte (197, subtask); } YY_BREAK case 129: YY_RULE_SETUP { recode_put_byte (231, subtask); } YY_BREAK case 130: YY_RULE_SETUP { recode_put_byte (199, subtask); } YY_BREAK case 131: YY_RULE_SETUP { recode_put_byte (228, subtask); } YY_BREAK case 132: YY_RULE_SETUP { recode_put_byte (246, subtask); } YY_BREAK case 133: YY_RULE_SETUP { recode_put_byte (252, subtask); } YY_BREAK case 134: YY_RULE_SETUP { recode_put_byte (196, subtask); } YY_BREAK case 135: YY_RULE_SETUP { recode_put_byte (214, subtask); } YY_BREAK case 136: YY_RULE_SETUP { recode_put_byte (220, subtask); } YY_BREAK case 137: YY_RULE_SETUP { recode_put_byte (76, subtask); } YY_BREAK case 138: YY_RULE_SETUP { recode_put_byte (216, subtask); } YY_BREAK case 139: YY_RULE_SETUP { recode_put_byte (208, subtask); } YY_BREAK case 140: YY_RULE_SETUP { recode_put_byte (222, subtask); } YY_BREAK case 141: YY_RULE_SETUP { recode_put_byte (198, subtask); } YY_BREAK case 142: YY_RULE_SETUP { recode_put_byte (177, subtask); } YY_BREAK case 143: YY_RULE_SETUP { recode_put_byte (108, subtask); } YY_BREAK case 144: YY_RULE_SETUP { recode_put_byte (248, subtask); } YY_BREAK case 145: YY_RULE_SETUP { recode_put_byte (240, subtask); } YY_BREAK case 146: YY_RULE_SETUP { recode_put_byte (254, subtask); } YY_BREAK case 147: YY_RULE_SETUP { recode_put_byte (230, subtask); } YY_BREAK case 148: YY_RULE_SETUP { recode_put_byte (111, subtask); } YY_BREAK case 149: YY_RULE_SETUP { recode_put_byte (163, subtask); } YY_BREAK case 150: YY_RULE_SETUP { recode_put_byte (169, subtask); } YY_BREAK case 151: YY_RULE_SETUP { recode_put_byte (191, subtask); } YY_BREAK case 152: YY_RULE_SETUP { recode_put_byte (192, subtask); } YY_BREAK case 153: YY_RULE_SETUP { recode_put_byte (200, subtask); } YY_BREAK case 154: YY_RULE_SETUP { recode_put_byte (204, subtask); } YY_BREAK case 155: YY_RULE_SETUP { recode_put_byte (210, subtask); } YY_BREAK case 156: YY_RULE_SETUP { recode_put_byte (217, subtask); } YY_BREAK case 157: YY_RULE_SETUP { recode_put_byte (224, subtask); } YY_BREAK case 158: YY_RULE_SETUP { recode_put_byte (232, subtask); } YY_BREAK case 159: YY_RULE_SETUP { recode_put_byte (236, subtask); } YY_BREAK case 160: YY_RULE_SETUP { recode_put_byte (242, subtask); } YY_BREAK case 161: YY_RULE_SETUP { recode_put_byte (249, subtask); } YY_BREAK case 162: YY_RULE_SETUP { recode_put_byte (193, subtask); } YY_BREAK case 163: YY_RULE_SETUP { recode_put_byte (201, subtask); } YY_BREAK case 164: YY_RULE_SETUP { recode_put_byte (205, subtask); } YY_BREAK case 165: YY_RULE_SETUP { recode_put_byte (211, subtask); } YY_BREAK case 166: YY_RULE_SETUP { recode_put_byte (218, subtask); } YY_BREAK case 167: YY_RULE_SETUP { recode_put_byte (221, subtask); } YY_BREAK case 168: YY_RULE_SETUP { recode_put_byte (225, subtask); } YY_BREAK case 169: YY_RULE_SETUP { recode_put_byte (233, subtask); } YY_BREAK case 170: YY_RULE_SETUP { recode_put_byte (237, subtask); } YY_BREAK case 171: YY_RULE_SETUP { recode_put_byte (243, subtask); } YY_BREAK case 172: YY_RULE_SETUP { recode_put_byte (250, subtask); } YY_BREAK case 173: YY_RULE_SETUP { recode_put_byte (253, subtask); } YY_BREAK case 174: YY_RULE_SETUP { recode_put_byte (194, subtask); } YY_BREAK case 175: YY_RULE_SETUP { recode_put_byte (202, subtask); } YY_BREAK case 176: YY_RULE_SETUP { recode_put_byte (206, subtask); } YY_BREAK case 177: YY_RULE_SETUP { recode_put_byte (212, subtask); } YY_BREAK case 178: YY_RULE_SETUP { recode_put_byte (219, subtask); } YY_BREAK case 179: YY_RULE_SETUP { recode_put_byte (226, subtask); } YY_BREAK case 180: YY_RULE_SETUP { recode_put_byte (234, subtask); } YY_BREAK case 181: YY_RULE_SETUP { recode_put_byte (238, subtask); } YY_BREAK case 182: YY_RULE_SETUP { recode_put_byte (244, subtask); } YY_BREAK case 183: YY_RULE_SETUP { recode_put_byte (251, subtask); } YY_BREAK case 184: YY_RULE_SETUP { recode_put_byte (195, subtask); } YY_BREAK case 185: YY_RULE_SETUP { recode_put_byte (213, subtask); } YY_BREAK case 186: YY_RULE_SETUP { recode_put_byte (209, subtask); } YY_BREAK case 187: YY_RULE_SETUP { recode_put_byte (227, subtask); } YY_BREAK case 188: YY_RULE_SETUP { recode_put_byte (245, subtask); } YY_BREAK case 189: YY_RULE_SETUP { recode_put_byte (241, subtask); } YY_BREAK case 190: YY_RULE_SETUP { recode_put_byte (175, subtask); } YY_BREAK case 191: YY_RULE_SETUP { recode_put_byte (196, subtask); } YY_BREAK case 192: YY_RULE_SETUP { recode_put_byte (203, subtask); } YY_BREAK case 193: YY_RULE_SETUP { recode_put_byte (207, subtask); } YY_BREAK case 194: YY_RULE_SETUP { recode_put_byte (214, subtask); } YY_BREAK case 195: YY_RULE_SETUP { recode_put_byte (220, subtask); } YY_BREAK case 196: YY_RULE_SETUP { recode_put_byte (228, subtask); } YY_BREAK case 197: YY_RULE_SETUP { recode_put_byte (235, subtask); } YY_BREAK case 198: YY_RULE_SETUP { recode_put_byte (239, subtask); } YY_BREAK case 199: YY_RULE_SETUP { recode_put_byte (246, subtask); } YY_BREAK case 200: YY_RULE_SETUP { recode_put_byte (252, subtask); } YY_BREAK case 201: YY_RULE_SETUP { recode_put_byte (255, subtask); } YY_BREAK case 202: YY_RULE_SETUP { recode_put_byte (197, subtask); } YY_BREAK case 203: YY_RULE_SETUP { recode_put_byte (229, subtask); } YY_BREAK case 204: YY_RULE_SETUP { recode_put_byte (199, subtask); } YY_BREAK case 205: YY_RULE_SETUP { recode_put_byte (231, subtask); } YY_BREAK case 206: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('#', subtask); } YY_BREAK case 207: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('$', subtask); } YY_BREAK case 208: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('%', subtask); } YY_BREAK case 209: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('&', subtask); } YY_BREAK case 210: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('<', subtask); } YY_BREAK case 211: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('>', subtask); } YY_BREAK case 212: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('_', subtask); } YY_BREAK case 213: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('{', subtask); } YY_BREAK case 214: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('}', subtask); } YY_BREAK case 215: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('^', subtask); } YY_BREAK case 216: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('\\', subtask); } YY_BREAK case 217: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (160, subtask); } YY_BREAK case 218: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (161, subtask); } YY_BREAK case 219: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (163, subtask); } YY_BREAK case 220: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (167, subtask); } YY_BREAK case 221: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (168, subtask); } YY_BREAK case 222: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (169, subtask); } YY_BREAK case 223: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (171, subtask); } YY_BREAK case 224: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (172, subtask); } YY_BREAK case 225: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (173, subtask); } YY_BREAK case 226: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (176, subtask); } YY_BREAK case 227: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (177, subtask); } YY_BREAK case 228: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (178, subtask); } YY_BREAK case 229: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (179, subtask); } YY_BREAK case 230: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (180, subtask); } YY_BREAK case 231: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (181, subtask); } YY_BREAK case 232: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (183, subtask); } YY_BREAK case 233: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (184, subtask); } YY_BREAK case 234: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (185, subtask); } YY_BREAK case 235: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (187, subtask); } YY_BREAK case 236: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (188, subtask); } YY_BREAK case 237: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (189, subtask); } YY_BREAK case 238: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (190, subtask); } YY_BREAK case 239: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (191, subtask); } YY_BREAK case 240: YY_RULE_SETUP { recode_put_byte (192, subtask); } YY_BREAK case 241: YY_RULE_SETUP { recode_put_byte (193, subtask); } YY_BREAK case 242: YY_RULE_SETUP { recode_put_byte (194, subtask); } YY_BREAK case 243: YY_RULE_SETUP { recode_put_byte (195, subtask); } YY_BREAK case 244: YY_RULE_SETUP { recode_put_byte (196, subtask); } YY_BREAK case 245: YY_RULE_SETUP { recode_put_byte (197, subtask); } YY_BREAK case 246: YY_RULE_SETUP { recode_put_byte (198, subtask); } YY_BREAK case 247: YY_RULE_SETUP { recode_put_byte (199, subtask); } YY_BREAK case 248: YY_RULE_SETUP { recode_put_byte (200, subtask); } YY_BREAK case 249: YY_RULE_SETUP { recode_put_byte (201, subtask); } YY_BREAK case 250: YY_RULE_SETUP { recode_put_byte (202, subtask); } YY_BREAK case 251: YY_RULE_SETUP { recode_put_byte (203, subtask); } YY_BREAK case 252: YY_RULE_SETUP { recode_put_byte (204, subtask); } YY_BREAK case 253: YY_RULE_SETUP { recode_put_byte (205, subtask); } YY_BREAK case 254: YY_RULE_SETUP { recode_put_byte (206, subtask); } YY_BREAK case 255: YY_RULE_SETUP { recode_put_byte (207, subtask); } YY_BREAK case 256: YY_RULE_SETUP { recode_put_byte (209, subtask); } YY_BREAK case 257: YY_RULE_SETUP { recode_put_byte (210, subtask); } YY_BREAK case 258: YY_RULE_SETUP { recode_put_byte (211, subtask); } YY_BREAK case 259: YY_RULE_SETUP { recode_put_byte (212, subtask); } YY_BREAK case 260: YY_RULE_SETUP { recode_put_byte (213, subtask); } YY_BREAK case 261: YY_RULE_SETUP { recode_put_byte (214, subtask); } YY_BREAK case 262: YY_RULE_SETUP { recode_put_byte (216, subtask); } YY_BREAK case 263: YY_RULE_SETUP { recode_put_byte (217, subtask); } YY_BREAK case 264: YY_RULE_SETUP { recode_put_byte (218, subtask); } YY_BREAK case 265: YY_RULE_SETUP { recode_put_byte (219, subtask); } YY_BREAK case 266: YY_RULE_SETUP { recode_put_byte (220, subtask); } YY_BREAK case 267: YY_RULE_SETUP { recode_put_byte (221, subtask); } YY_BREAK case 268: YY_RULE_SETUP { recode_put_byte (223, subtask); } YY_BREAK case 269: YY_RULE_SETUP { recode_put_byte (224, subtask); } YY_BREAK case 270: YY_RULE_SETUP { recode_put_byte (225, subtask); } YY_BREAK case 271: YY_RULE_SETUP { recode_put_byte (226, subtask); } YY_BREAK case 272: YY_RULE_SETUP { recode_put_byte (227, subtask); } YY_BREAK case 273: YY_RULE_SETUP { recode_put_byte (228, subtask); } YY_BREAK case 274: YY_RULE_SETUP { recode_put_byte (229, subtask); } YY_BREAK case 275: YY_RULE_SETUP { recode_put_byte (230, subtask); } YY_BREAK case 276: YY_RULE_SETUP { recode_put_byte (231, subtask); } YY_BREAK case 277: YY_RULE_SETUP { recode_put_byte (232, subtask); } YY_BREAK case 278: YY_RULE_SETUP { recode_put_byte (233, subtask); } YY_BREAK case 279: YY_RULE_SETUP { recode_put_byte (234, subtask); } YY_BREAK case 280: YY_RULE_SETUP { recode_put_byte (235, subtask); } YY_BREAK case 281: YY_RULE_SETUP { recode_put_byte (236, subtask); } YY_BREAK case 282: YY_RULE_SETUP { recode_put_byte (237, subtask); } YY_BREAK case 283: YY_RULE_SETUP { recode_put_byte (238, subtask); } YY_BREAK case 284: YY_RULE_SETUP { recode_put_byte (239, subtask); } YY_BREAK case 285: YY_RULE_SETUP { recode_put_byte (241, subtask); } YY_BREAK case 286: YY_RULE_SETUP { recode_put_byte (242, subtask); } YY_BREAK case 287: YY_RULE_SETUP { recode_put_byte (243, subtask); } YY_BREAK case 288: YY_RULE_SETUP { recode_put_byte (244, subtask); } YY_BREAK case 289: YY_RULE_SETUP { recode_put_byte (245, subtask); } YY_BREAK case 290: YY_RULE_SETUP { recode_put_byte (246, subtask); } YY_BREAK case 291: YY_RULE_SETUP { recode_put_byte (248, subtask); } YY_BREAK case 292: YY_RULE_SETUP { recode_put_byte (249, subtask); } YY_BREAK case 293: YY_RULE_SETUP { recode_put_byte (250, subtask); } YY_BREAK case 294: YY_RULE_SETUP { recode_put_byte (251, subtask); } YY_BREAK case 295: YY_RULE_SETUP { recode_put_byte (252, subtask); } YY_BREAK case 296: YY_RULE_SETUP { recode_put_byte (253, subtask); } YY_BREAK case 297: YY_RULE_SETUP { recode_put_byte (255, subtask); } YY_BREAK case 298: YY_RULE_SETUP { ECHO; } YY_BREAK case 299: YY_RULE_SETUP { ECHO; } YY_BREAK case 300: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('#', subtask); } YY_BREAK case 301: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('$', subtask); } YY_BREAK case 302: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('%', subtask); } YY_BREAK case 303: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('&', subtask); } YY_BREAK case 304: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('_', subtask); } YY_BREAK case 305: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('{', subtask); } YY_BREAK case 306: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('}', subtask); } YY_BREAK case 307: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('\\', subtask); } YY_BREAK case 308: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (160, subtask); } YY_BREAK case 309: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (161, subtask); } YY_BREAK case 310: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (163, subtask); } YY_BREAK case 311: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (167, subtask); } YY_BREAK case 312: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (168, subtask); } YY_BREAK case 313: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (169, subtask); } YY_BREAK case 314: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (171, subtask); } YY_BREAK case 315: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (172, subtask); } YY_BREAK case 316: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (173, subtask); } YY_BREAK case 317: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (176, subtask); } YY_BREAK case 318: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (177, subtask); } YY_BREAK case 319: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (178, subtask); } YY_BREAK case 320: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (179, subtask); } YY_BREAK case 321: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (180, subtask); } YY_BREAK case 322: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (181, subtask); } YY_BREAK case 323: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (183, subtask); } YY_BREAK case 324: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (184, subtask); } YY_BREAK case 325: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (185, subtask); } YY_BREAK case 326: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (187, subtask); } YY_BREAK case 327: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (188, subtask); } YY_BREAK case 328: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (189, subtask); } YY_BREAK case 329: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (190, subtask); } YY_BREAK case 330: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (191, subtask); } YY_BREAK case 331: YY_RULE_SETUP { recode_put_byte (192, subtask); } YY_BREAK case 332: YY_RULE_SETUP { recode_put_byte (193, subtask); } YY_BREAK case 333: YY_RULE_SETUP { recode_put_byte (194, subtask); } YY_BREAK case 334: YY_RULE_SETUP { recode_put_byte (195, subtask); } YY_BREAK case 335: YY_RULE_SETUP { recode_put_byte (196, subtask); } YY_BREAK case 336: YY_RULE_SETUP { recode_put_byte (197, subtask); } YY_BREAK case 337: YY_RULE_SETUP { recode_put_byte (198, subtask); } YY_BREAK case 338: YY_RULE_SETUP { recode_put_byte (199, subtask); } YY_BREAK case 339: YY_RULE_SETUP { recode_put_byte (200, subtask); } YY_BREAK case 340: YY_RULE_SETUP { recode_put_byte (201, subtask); } YY_BREAK case 341: YY_RULE_SETUP { recode_put_byte (202, subtask); } YY_BREAK case 342: YY_RULE_SETUP { recode_put_byte (203, subtask); } YY_BREAK case 343: YY_RULE_SETUP { recode_put_byte (204, subtask); } YY_BREAK case 344: YY_RULE_SETUP { recode_put_byte (205, subtask); } YY_BREAK case 345: YY_RULE_SETUP { recode_put_byte (206, subtask); } YY_BREAK case 346: YY_RULE_SETUP { recode_put_byte (207, subtask); } YY_BREAK case 347: YY_RULE_SETUP { recode_put_byte (209, subtask); } YY_BREAK case 348: YY_RULE_SETUP { recode_put_byte (210, subtask); } YY_BREAK case 349: YY_RULE_SETUP { recode_put_byte (211, subtask); } YY_BREAK case 350: YY_RULE_SETUP { recode_put_byte (212, subtask); } YY_BREAK case 351: YY_RULE_SETUP { recode_put_byte (213, subtask); } YY_BREAK case 352: YY_RULE_SETUP { recode_put_byte (214, subtask); } YY_BREAK case 353: YY_RULE_SETUP { recode_put_byte (216, subtask); } YY_BREAK case 354: YY_RULE_SETUP { recode_put_byte (217, subtask); } YY_BREAK case 355: YY_RULE_SETUP { recode_put_byte (218, subtask); } YY_BREAK case 356: YY_RULE_SETUP { recode_put_byte (219, subtask); } YY_BREAK case 357: YY_RULE_SETUP { recode_put_byte (220, subtask); } YY_BREAK case 358: YY_RULE_SETUP { recode_put_byte (221, subtask); } YY_BREAK case 359: YY_RULE_SETUP { recode_put_byte (223, subtask); } YY_BREAK case 360: YY_RULE_SETUP { recode_put_byte (224, subtask); } YY_BREAK case 361: YY_RULE_SETUP { recode_put_byte (225, subtask); } YY_BREAK case 362: YY_RULE_SETUP { recode_put_byte (226, subtask); } YY_BREAK case 363: YY_RULE_SETUP { recode_put_byte (227, subtask); } YY_BREAK case 364: YY_RULE_SETUP { recode_put_byte (228, subtask); } YY_BREAK case 365: YY_RULE_SETUP { recode_put_byte (229, subtask); } YY_BREAK case 366: YY_RULE_SETUP { recode_put_byte (230, subtask); } YY_BREAK case 367: YY_RULE_SETUP { recode_put_byte (231, subtask); } YY_BREAK case 368: YY_RULE_SETUP { recode_put_byte (232, subtask); } YY_BREAK case 369: YY_RULE_SETUP { recode_put_byte (233, subtask); } YY_BREAK case 370: YY_RULE_SETUP { recode_put_byte (234, subtask); } YY_BREAK case 371: YY_RULE_SETUP { recode_put_byte (235, subtask); } YY_BREAK case 372: YY_RULE_SETUP { recode_put_byte (236, subtask); } YY_BREAK case 373: YY_RULE_SETUP { recode_put_byte (237, subtask); } YY_BREAK case 374: YY_RULE_SETUP { recode_put_byte (238, subtask); } YY_BREAK case 375: YY_RULE_SETUP { recode_put_byte (239, subtask); } YY_BREAK case 376: YY_RULE_SETUP { recode_put_byte (241, subtask); } YY_BREAK case 377: YY_RULE_SETUP { recode_put_byte (242, subtask); } YY_BREAK case 378: YY_RULE_SETUP { recode_put_byte (243, subtask); } YY_BREAK case 379: YY_RULE_SETUP { recode_put_byte (244, subtask); } YY_BREAK case 380: YY_RULE_SETUP { recode_put_byte (245, subtask); } YY_BREAK case 381: YY_RULE_SETUP { recode_put_byte (246, subtask); } YY_BREAK case 382: YY_RULE_SETUP { recode_put_byte (248, subtask); } YY_BREAK case 383: YY_RULE_SETUP { recode_put_byte (249, subtask); } YY_BREAK case 384: YY_RULE_SETUP { recode_put_byte (250, subtask); } YY_BREAK case 385: YY_RULE_SETUP { recode_put_byte (251, subtask); } YY_BREAK case 386: YY_RULE_SETUP { recode_put_byte (252, subtask); } YY_BREAK case 387: YY_RULE_SETUP { recode_put_byte (253, subtask); } YY_BREAK case 388: YY_RULE_SETUP { recode_put_byte (255, subtask); } YY_BREAK case 389: YY_RULE_SETUP { ECHO; } YY_BREAK case 390: YY_RULE_SETUP { ECHO; } YY_BREAK case 391: YY_RULE_SETUP { recode_put_byte (171, subtask); } YY_BREAK case 392: YY_RULE_SETUP { recode_put_byte (187, subtask); } YY_BREAK case 393: YY_RULE_SETUP { recode_put_byte (192, subtask); } YY_BREAK case 394: YY_RULE_SETUP { recode_put_byte (194, subtask); } YY_BREAK case 395: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) recode_put_byte (196, subtask); else ECHO; } YY_BREAK case 396: YY_RULE_SETUP { recode_put_byte (224, subtask); } YY_BREAK case 397: YY_RULE_SETUP { recode_put_byte (226, subtask); } YY_BREAK case 398: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) recode_put_byte (228, subtask); else ECHO; } YY_BREAK case 399: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { recode_put_byte (199, subtask); } YY_BREAK case 400: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { recode_put_byte (231, subtask); } YY_BREAK case 401: YY_RULE_SETUP { recode_put_byte (200, subtask); } YY_BREAK case 402: YY_RULE_SETUP { recode_put_byte (201, subtask); recode_put_byte (187, subtask); } YY_BREAK case 403: YY_RULE_SETUP { recode_put_byte ('E', subtask); recode_put_byte (187, subtask); } YY_BREAK case 404: YY_RULE_SETUP { recode_put_byte (201, subtask); } YY_BREAK case 405: YY_RULE_SETUP { recode_put_byte (202, subtask); } YY_BREAK case 406: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) recode_put_byte (203, subtask); else ECHO; } YY_BREAK case 407: YY_RULE_SETUP { recode_put_byte (232, subtask); } YY_BREAK case 408: YY_RULE_SETUP { recode_put_byte (233, subtask); recode_put_byte (187, subtask); } YY_BREAK case 409: YY_RULE_SETUP { recode_put_byte ('e', subtask); recode_put_byte (187, subtask); } YY_BREAK case 410: YY_RULE_SETUP { recode_put_byte (233, subtask); } YY_BREAK case 411: YY_RULE_SETUP { recode_put_byte (234, subtask); } YY_BREAK case 412: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) recode_put_byte (235, subtask); else ECHO; } YY_BREAK case 413: YY_RULE_SETUP { recode_put_byte (204, subtask); } YY_BREAK case 414: YY_RULE_SETUP { recode_put_byte (206, subtask); } YY_BREAK case 415: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) recode_put_byte (207, subtask); else ECHO; } YY_BREAK case 416: YY_RULE_SETUP { recode_put_byte (236, subtask); } YY_BREAK case 417: YY_RULE_SETUP { recode_put_byte (238, subtask); } YY_BREAK case 418: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) recode_put_byte (239, subtask); else ECHO; } YY_BREAK case 419: YY_RULE_SETUP { recode_put_byte (210, subtask); } YY_BREAK case 420: YY_RULE_SETUP { recode_put_byte (212, subtask); } YY_BREAK case 421: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) recode_put_byte (214, subtask); else ECHO; } YY_BREAK case 422: YY_RULE_SETUP { recode_put_byte (242, subtask); } YY_BREAK case 423: YY_RULE_SETUP { recode_put_byte (244, subtask); } YY_BREAK case 424: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) recode_put_byte (246, subtask); else ECHO; } YY_BREAK case 425: YY_RULE_SETUP { recode_put_byte (217, subtask); } YY_BREAK case 426: YY_RULE_SETUP { recode_put_byte (219, subtask); } YY_BREAK case 427: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) recode_put_byte (220, subtask); else ECHO; } YY_BREAK case 428: YY_RULE_SETUP { recode_put_byte (249, subtask); } YY_BREAK case 429: YY_RULE_SETUP { recode_put_byte (251, subtask); } YY_BREAK case 430: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) recode_put_byte (252, subtask); else ECHO; } YY_BREAK case 431: /* rule 431 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 432: /* rule 432 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 433: /* rule 433 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 434: /* rule 434 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 435: /* rule 435 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 436: /* rule 436 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 437: /* rule 437 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 438: /* rule 438 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 439: /* rule 439 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 440: /* rule 440 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 441: /* rule 441 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 442: /* rule 442 can match eol */ YY_RULE_SETUP { if (yytext[4] == request->diaeresis_char) texte_latin1_diaeresis (); else ECHO; } YY_BREAK case 443: /* rule 443 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 444: YY_RULE_SETUP { ECHO; } YY_BREAK case 445: /* rule 445 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 446: /* rule 446 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 447: /* rule 447 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 448: /* rule 448 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 449: /* rule 449 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 450: /* rule 450 can match eol */ YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 451: YY_RULE_SETUP ECHO; YY_BREAK case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = (yy_hold_char); YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = (yy_c_buf_p); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (void) { char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = (yytext_ptr); int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc( (void *) b->yy_ch_buf, (yy_size_t) (b->yy_buf_size + 2) ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart( yyin ); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); /* "- 2" to take care of EOB's */ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (void) { yy_state_type yy_current_state; char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 1261 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { int yy_is_jam; char *yy_cp = (yy_c_buf_p); YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 1261 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; yy_is_jam = (yy_current_state == 1260); return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart( yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) return 0; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve yytext */ (yy_hold_char) = *++(yy_c_buf_p); return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file ) { if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE ); } yy_init_buffer( YY_CURRENT_BUFFER, input_file ); yy_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } static void yy_load_buffer_state (void) { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer( b, file ); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * */ void yy_delete_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree( (void *) b->yy_ch_buf ); yyfree( (void *) b ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; yy_flush_buffer( b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * */ void yy_flush_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; yyensure_buffer_stack(); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void yypop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (void) { yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer( b ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (const char * yystr ) { return yy_scan_bytes( yystr, (int) strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc( n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer( buf, n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (const char* msg ) { fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int yyget_lineno (void) { return yylineno; } /** Get the input stream. * */ FILE *yyget_in (void) { return yyin; } /** Get the output stream. * */ FILE *yyget_out (void) { return yyout; } /** Get the length of the current token. * */ int yyget_leng (void) { return yyleng; } /** Get the current token. * */ char *yyget_text (void) { return yytext; } /** Set the current line number. * @param _line_number line number * */ void yyset_lineno (int _line_number ) { yylineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * * @see yy_switch_to_buffer */ void yyset_in (FILE * _in_str ) { yyin = _in_str ; } void yyset_out (FILE * _out_str ) { yyout = _out_str ; } int yyget_debug (void) { return yy_flex_debug; } void yyset_debug (int _bdebug ) { yy_flex_debug = _bdebug ; } static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ (yy_buffer_stack) = NULL; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = NULL; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer( YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } /* Destroy the stack itself. */ yyfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, const char * s2, int n ) { int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (const char * s ) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size ) { return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void yyfree (void * ptr ) { free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" /* Conversion of files between different charsets and surfaces. Copyright © 1990-2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the Recode Library; see the file `COPYING.LIB'. If not, see . */ static bool transform_ascii_latin1 (RECODE_SUBTASK subtask_argument) { subtask = subtask_argument; request = subtask->task->request; yy_init = 0; yyin = subtask->input.file; yyout = subtask->output.file; BEGIN ascii_latin1; return yylex (); } bool module_ascii_latin1 (RECODE_OUTER outer) { if (!recode_declare_single (outer, "ASCII-BS", "Latin-1", outer->quality_variable_to_byte, NULL, transform_ascii_latin1)) return false; return true; } void delmodule_ascii_latin1 (RECODE_OUTER outer) { } /* * Copyright (c) 1998, Wolfram Schneider * Konrad Zuse Zentrum für Informationstechnik Berlin. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * * iso5426 to iso8859-1 conversion. This file support only a subset * of ISO 5426:1983. It is incomplete due the lack of free * available documentation ;-( * * The character conversion based on the german MAB2 (Maschinelles * Austauschformat für Bibliotheken) documentation, October 1996, * die Deutsche Bibliothek, Frankfurt am Main. * URL: http://www.ddb.de, ftp://ftp.ddb.de/pub/mab/ * * * http://lcweb.loc.gov/loc/standards/isotc46/sc4standards.html * Character sets: * ISO 5426:1983 - Extension of the Latin alphabet coded character * set for bibliographic information interchange * ISO 5426-2:1996 - Extension of the Latin alphabet coded character set * for bibliographic information interchange * Part 2: Latin characters used in minor European * languages and obsolete typography * * * ISO 5426:1983 * * Extension of the Latin alphabet coded character set for bibliographic * information interchange * * Contains a set of 76 graphic characters with their coded * representations. It includes a code table and a legend showing each * graphic, its name and use, and explanatory notes. Primarily intended * for information interchange among data processing systems and within * message transmission systems, this character set is designed to handle * information in 39 specified languages, as well as transliterated or * romanized forms of an additional 32 languages. These characters, * together with the characters in the international reference version of * ISO 646 (ISO escape sequence ESC 2/8 4/0), constitute a character set * for the international interchange of bibliographic citations, * including their annotations, in the Latin alphabet. * * ISO 5426-2:1996 * * Extension of the Latin alphabet coded character set for bibliographic * information interchange Part 2: Latin characters used in minor * European languages and obsolete typography * * Contains a set of 70 graphic characters, and their coded * representations. These characters form a supplement to those provided * in ISO 5426 by addressing less common and obsolete languages which use * the Latin script and obsolete printing conventions. Included is a code * table and a legend showing each graphic, its name and use, and * explanatory notes. This character set is primarily intended for * information interchange among data processing systems and within * message transmission systems. These characters, together with the * characters from ISO 646/IEC and ISO 5426, is intended to handle * information in the following languages: Anglo-Saxon, Greenlandic, * Lappish, Latin, Latvian (older forms), and Maltese. It is also * intended to cover printing conventions associated with older books, in * particular marks associated with binding signatures. * */ static bool transform_iso5426_latin1 (RECODE_SUBTASK subtask_argument) { subtask = subtask_argument; request = subtask->task->request; yy_init = 0; yyin = subtask->input.file; yyout = subtask->output.file; BEGIN iso5426_latin1; return yylex (); } bool module_iso5426_latin1 (RECODE_OUTER outer) { return recode_declare_single (outer, "ISO_5426:1983-DB-MAB2", "Latin-1", outer->quality_variable_to_byte, NULL, transform_iso5426_latin1) && recode_declare_alias (outer, "ISO_5426", "ISO_5426:1983-DB-MAB2") && recode_declare_alias (outer, "DB-MAB2", "ISO_5426:1983-DB-MAB2") && recode_declare_alias (outer, "MAB2", "ISO_5426:1983-DB-MAB2") && recode_declare_alias (outer, "MAB", "ISO_5426:1983-DB-MAB2") && recode_declare_alias (outer, "DDB", "ISO_5426:1983-DB-MAB2"); /* Die Deutsche Bibliothek */ } void delmodule_iso5426_latin1 (RECODE_OUTER outer) { } /* * Copyright (c) 1998, Wolfram Schneider * Konrad Zuse Zentrum für Informationstechnik Berlin. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * * 8-Bit ANSEL to ISO8859-1 conversion. This file support only a subset * of Z39.47-1993 (ANSEL). It is incomplete due the lack of free * available documentation ;-( * * http://www.niso.org/pccodes.htm * Z39.47-1993 Extended Latin Alphabet Coded Character Set for * Bibliographic Use (ANSEL) * * Character sets are a basic building block of automated information * systems. Z39.47 provides a table of coded values for the * representation of characters of the extended Latin alphabet in * machine-readable form for thirty-five languages written in the Latin * alphabet and for fifty-one romanized languages. * * 27 pp. ISBN: 1-880124-02-5 Price: $40.00 * * * http://wwnet.com/~krugman1/gentext/gedstand.txt * 8-Bit ANSEL * * The 8-Bit ANSEL (American National Standard for Extended Latin * Alphabet Coded Character Set for Bibliographic Use, Z39.47, 1985 * copyright) is the default character set for GEDCOM. [...] * The ANSEL standard * specifies an extended 8-bit configuration (above 128) to represent the * spacing and non-spacing graphic characters that make up most of the * Latin based languages. ANSEL is a super-set of ASCII. The standard * ASCII characters including the control characters are preserved. * * ANSEL is known by two other names: (1) ANSI Z39.47-1985) and (2) the * American Library Association character set, used in library systems * worldwide, including the MARC (MAchine- Readable Catalog) format. * * A description of the codes for the ANSEL character set has been * reproduced with permission and is included with the printed version of * The GEDCOM Standard. The description of ANSEL codes is not included in * the electronic version. This description may be purchased from the * American National Standards Institute at 1430 Broadway, New York, * N.Y. 10018. The description of the ANSEL character set standard * includes the following: * * * An 8-Bit Code Table showing the ASCII and extended ANSEL codes * * An explanation or legend of these codes * * A chart that identifies the ANSEL Non-spacing Graphic Characters * * A chart that identifies the ASCII Control Characters * * A chart that identifies the ASCII Graphic Characters * * Character-set codes 0 through 127 are the same for 8-Bit ANSEL and * 8-Bit ASCII (USA version-- ANSI 8-Bit). Character-set codes 128 * through 255 are unique to the ANSEL character set. * * Changes * ======== * Fix ansel characters * * Capital C with cedilla * Lower case C with cedilla * Capital ETH * Lower case eth * Capital O with slash * Capital Y with acute accent * Lower case Icelandic thorn * capital OE ligature * * Thanks to Larry E. Dixson * */ static bool transform_ansel_latin1 (RECODE_SUBTASK subtask_argument) { subtask = subtask_argument; request = subtask->task->request; yy_init = 0; yyin = subtask->input.file; yyout = subtask->output.file; BEGIN ansel_latin1; return yylex (); } bool module_ansel_latin1 (RECODE_OUTER outer) { return recode_declare_single (outer, "Z39.47:1993", "Latin-1", outer->quality_variable_to_byte, NULL, transform_ansel_latin1) && recode_declare_alias (outer, "8bitANSEL", "Z39.47:1993") && recode_declare_alias (outer, "Z39.47", "Z39.47:1993") && recode_declare_alias (outer, "ANSEL", "Z39.47:1993") && recode_declare_alias (outer, "USMARC", "Z39.47:1993") && recode_declare_alias (outer, "MARC", "Z39.47:1993") && recode_declare_alias (outer, "LOC", "Z39.47:1993"); /* Library of Congress */ } void delmodule_ansel_latin1 (RECODE_OUTER outer) { } /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the Recode Library; see the file `COPYING.LIB'. If not, see . */ static bool transform_latex_latin1 (RECODE_SUBTASK subtask_argument) { subtask = subtask_argument; request = subtask->task->request; yy_init = 0; yyin = subtask->input.file; yyout = subtask->output.file; BEGIN latex_latin1; return yylex (); } bool module_latex_latin1 (RECODE_OUTER outer) { return recode_declare_single (outer, "LaTeX", "Latin-1", outer->quality_variable_to_byte, NULL, transform_latex_latin1) && recode_declare_alias (outer, "TeX", "LaTeX") && recode_declare_alias (outer, "ltex", "LaTeX"); } void delmodule_latex_latin1 (RECODE_OUTER outer) { } /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, see . */ static bool transform_bibtex_latin1 (RECODE_SUBTASK subtask_argument) { subtask = subtask_argument; request = subtask->task->request; yy_init = 0; yyin = subtask->input.file; yyout = subtask->output.file; BEGIN bibtex_latin1; return yylex (); } bool module_bibtex_latin1 (RECODE_OUTER outer) { return recode_declare_single (outer, "BibTeX", "Latin-1", outer->quality_variable_to_byte, NULL, transform_bibtex_latin1) && recode_declare_alias (outer, "btex", "BibTeX"); } void delmodule_bibtex_latin1 (RECODE_OUTER outer) { } /* Conversion of files between different charsets and surfaces. Copyright © 1990-2000 Free Software Foundation, Inc. Contributed by François Pinard , 1989. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the Recode Library; see the file `COPYING.LIB'. If not, see . */ static bool transform_texte_latin1 (RECODE_SUBTASK subtask_argument) { subtask = subtask_argument; request = subtask->task->request; yy_init = 0; yyin = subtask->input.file; yyout = subtask->output.file; BEGIN texte_latin1; return yylex (); } void texte_latin1_diaeresis (void) { unsigned counter; for (counter = 0; counter < yyleng; counter++) if (yytext[counter+1] == request->diaeresis_char) { switch (yytext[counter]) { /* The next "case 'A'" line once triggered a `NULL in input' diagnostic in flex. This astonishing bug has been hard to isolate, so I'll leave this comment around for a while. */ case 'A': recode_put_byte (196, subtask); break; case 'E': recode_put_byte (203, subtask); break; case 'I': recode_put_byte (207, subtask); break; case 'O': recode_put_byte (214, subtask); break; case 'U': recode_put_byte (220, subtask); break; case 'a': recode_put_byte (228, subtask); break; case 'e': recode_put_byte (235, subtask); break; case 'i': recode_put_byte (239, subtask); break; case 'o': recode_put_byte (246, subtask); break; case 'u': recode_put_byte (252, subtask); break; case 'y': recode_put_byte (255, subtask); break; default: recode_put_byte (yytext[counter], subtask); } counter++; } else recode_put_byte (yytext[counter], subtask); } bool module_texte_latin1 (RECODE_OUTER outer) { return recode_declare_single (outer, "Texte", "Latin-1", outer->quality_variable_to_byte, NULL, transform_texte_latin1) && recode_declare_alias (outer, "txte", "Texte"); } void delmodule_texte_latin1 (RECODE_OUTER outer) { } recode-3.7.15/src/ascilat1.l0000644000175000017500000000762214374760602011216 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the Recode Library; see the file `COPYING.LIB'. If not, see . */ /* Step name: ascii_latin1. */ %% \<\b\"|\"\b\< { recode_put_byte (171, subtask); } \>\b\"|\"\b\> { recode_put_byte (187, subtask); } A\b`|`\bA { recode_put_byte (192, subtask); } A\b'|'\bA { recode_put_byte (193, subtask); } A\b^|^\bA { recode_put_byte (194, subtask); } A\b~|~\bA { recode_put_byte (195, subtask); } A\b\"|\"\bA { recode_put_byte (196, subtask); } C\b,|,\bC { recode_put_byte (199, subtask); } E\b`|`\bE { recode_put_byte (200, subtask); } E\b'|'\bE { recode_put_byte (201, subtask); } E\b^|^\bE { recode_put_byte (202, subtask); } E\b\"|\"\bE { recode_put_byte (203, subtask); } I\b`|`\bI { recode_put_byte (204, subtask); } I\b'|'\bI { recode_put_byte (205, subtask); } I\b^|^\bI { recode_put_byte (206, subtask); } I\b\"|\"\bI { recode_put_byte (207, subtask); } N\b~|~\bN { recode_put_byte (209, subtask); } O\b`|`\bO { recode_put_byte (210, subtask); } O\b'|'\bO { recode_put_byte (211, subtask); } O\b^|^\bO { recode_put_byte (212, subtask); } O\b~|~\bO { recode_put_byte (213, subtask); } O\b\"|\"\bO { recode_put_byte (214, subtask); } O\b\/|\/\bO { recode_put_byte (216, subtask); } U\b`|`\bU { recode_put_byte (217, subtask); } U\b'|'\bU { recode_put_byte (218, subtask); } U\b^|^\bU { recode_put_byte (219, subtask); } U\b\"|\"\bU { recode_put_byte (220, subtask); } Y\b'|'\bY { recode_put_byte (221, subtask); } s\b\"|\"\bs { recode_put_byte (223, subtask); } a\b`|`\ba { recode_put_byte (224, subtask); } a\b'|'\ba { recode_put_byte (225, subtask); } a\b^|^\ba { recode_put_byte (226, subtask); } a\b~|~\ba { recode_put_byte (227, subtask); } a\b\"|\"\ba { recode_put_byte (228, subtask); } c\b,|,\bc { recode_put_byte (231, subtask); } e\b`|`\be { recode_put_byte (232, subtask); } e\b'|'\be { recode_put_byte (233, subtask); } e\b^|^\be { recode_put_byte (234, subtask); } e\b\"|\"\be { recode_put_byte (235, subtask); } i\b`|`\bi { recode_put_byte (236, subtask); } i\b'|'\bi { recode_put_byte (237, subtask); } i\b^|^\bi { recode_put_byte (238, subtask); } i\b\"|\"\bi { recode_put_byte (239, subtask); } n\b~|~\bn { recode_put_byte (241, subtask); } o\b`|`\bo { recode_put_byte (242, subtask); } o\b'|'\bo { recode_put_byte (243, subtask); } o\b^|^\bo { recode_put_byte (244, subtask); } o\b~|~\bo { recode_put_byte (245, subtask); } o\b\"|\"\bo { recode_put_byte (246, subtask); } o\b\/|\/\bo { recode_put_byte (248, subtask); } u\b`|`\bu { recode_put_byte (249, subtask); } u\b'|'\bu { recode_put_byte (250, subtask); } u\b^|^\bu { recode_put_byte (251, subtask); } u\b\"|\"\bu { recode_put_byte (252, subtask); } y\b'|'\by { recode_put_byte (253, subtask); } y\b\"|\"\by { recode_put_byte (255, subtask); } %% bool module_ascii_latin1 (RECODE_OUTER outer) { if (!recode_declare_single (outer, "ASCII-BS", "Latin-1", outer->quality_variable_to_byte, NULL, transform_ascii_latin1)) return false; return true; } void delmodule_ascii_latin1 (RECODE_OUTER outer) { } recode-3.7.15/src/strip-pool.c0000644000175000017500000024731714765654536011637 /* DO NOT MODIFY THIS FILE! It was generated by `recode/tables.py'. */ /* Conversion of files between different charsets and surfaces. Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . Suite 330, Boston, MA 02111-1307, USA. */ #include "config.h" #include "common.h" const recode_ucs2 ucs2_data_pool[8568] = { /* 0 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 8 */ 0x0020, 0x0021, 0x0022, 0xFFFF, 0xFFFF, 0x0025, 0x0026, 0x0027, /* 16 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 24 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 32 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 40 */ 0xFFFF, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 48 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 56 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 64 */ 0x0058, 0x0059, 0x005A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x005F, /* 72 */ 0xFFFF, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 80 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 88 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 96 */ 0x0078, 0x0079, 0x007A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 104 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, /* 112 */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 120 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, /* 128 */ 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, /* 136 */ 0x0078, 0x0079, 0x007A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x007F, /* 144 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x00A4, 0x0025, 0x0026, 0x0027, /* 152 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 160 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 168 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 176 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x203E, 0x007F, /* 184 */ 0x0020, 0x0021, 0x0022, 0x00A3, 0x0024, 0x0025, 0x0026, 0x0027, /* 192 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 200 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, /* 208 */ 0xE018, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 216 */ 0x0058, 0x0059, 0x005A, 0x00C4, 0x00D6, 0x00C5, 0x25A0, 0x005F, /* 224 */ 0xE019, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 232 */ 0x0078, 0x0079, 0x007A, 0x00E4, 0x00F6, 0x00E5, 0x2013, 0x007F, /* 240 */ 0xFFFF, 0x00C0, 0xFFFF, 0xFFFF, 0x0110, 0x00C9, 0xFFFF, 0xFFFF, /* 248 */ 0x00DE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DC, 0xFFFF, 0xFFFF, /* 256 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x00C6, 0x00D8, 0xFFFF, 0xFFFF, 0xFFFF, /* 264 */ 0xFFFF, 0x00E0, 0xFFFF, 0xFFFF, 0x0111, 0x00E9, 0xFFFF, 0xFFFF, /* 272 */ 0x00FE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00FC, 0xFFFF, 0xFFFF, /* 280 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x00E6, 0x00F8, 0xFFFF, 0xFFFF, 0xFFFF, /* 288 */ 0x0020, 0x0021, 0x00AB, 0x00BB, 0x0024, 0x0025, 0x0026, 0x0027, /* 296 */ 0x0058, 0x0059, 0x005A, 0x00C6, 0x00D8, 0x00C5, 0x25A0, 0x005F, /* 304 */ 0x0078, 0x0079, 0x007A, 0x00E6, 0x00F8, 0x00E5, 0x2013, 0x007F, /* 312 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x00C4, 0x00D6, 0xFFFF, 0xFFFF, 0xFFFF, /* 320 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x00E4, 0x00F6, 0xFFFF, 0xFFFF, 0xFFFF, /* 328 */ 0x0058, 0x0059, 0x005A, 0x00C4, 0x00D6, 0x00C5, 0x005E, 0x005F, /* 336 */ 0x0078, 0x0079, 0x007A, 0x00E4, 0x00F6, 0x00E5, 0x203E, 0x007F, /* 344 */ 0x00C9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 352 */ 0x0058, 0x0059, 0x005A, 0x00C4, 0x00D6, 0x00C5, 0x00DC, 0x005F, /* 360 */ 0x00E9, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 368 */ 0x0078, 0x0079, 0x007A, 0x00E4, 0x00F6, 0x00E5, 0x00FC, 0x007F, /* 376 */ 0x0020, 0x3002, 0x300C, 0x300D, 0x3001, 0x30FB, 0x30F2, 0x30A1, /* 384 */ 0x30A3, 0x30A5, 0x30A7, 0x30A9, 0x30E3, 0x30E5, 0x30E7, 0x30C3, /* 392 */ 0x30FC, 0x30A2, 0x30A4, 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, /* 400 */ 0x30AF, 0x30B1, 0x30B3, 0x30B5, 0x30B7, 0x30B9, 0x30BB, 0x30BD, /* 408 */ 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, 0x30CB, 0x30CC, /* 416 */ 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, 0x30DB, 0x30DE, /* 424 */ 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, 0x30E9, /* 432 */ 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F3, 0x309B, 0x309C, /* 440 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x007F, /* 448 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x00A5, 0x005D, 0x005E, 0x005F, /* 456 */ 0x00A7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 464 */ 0x0058, 0x0059, 0x005A, 0x00B0, 0x00E7, 0x00E9, 0x005E, 0x005F, /* 472 */ 0x00F9, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 480 */ 0x0078, 0x0079, 0x007A, 0x00E0, 0x00F2, 0x00E8, 0x00EC, 0x007F, /* 488 */ 0x0058, 0x0059, 0x005A, 0x00C3, 0x00C7, 0x00D5, 0x005E, 0x005F, /* 496 */ 0x0078, 0x0079, 0x007A, 0x00E3, 0x00E7, 0x00F5, 0x00B0, 0x007F, /* 504 */ 0x0058, 0x0059, 0x005A, 0x00A1, 0x00D1, 0x00BF, 0x005E, 0x005F, /* 512 */ 0x0078, 0x0079, 0x007A, 0x00B0, 0x00F1, 0x00E7, 0x007E, 0x007F, /* 520 */ 0x00B4, 0x03B1, 0x03B2, 0x03C8, 0x03B4, 0x03B5, 0x03C6, 0x03B3, /* 528 */ 0x03B7, 0x03B9, 0x03BE, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BF, /* 536 */ 0x03C0, 0x037A, 0x03C1, 0x03C3, 0x03C4, 0x03B8, 0x03C9, 0x03C2, /* 544 */ 0x03C7, 0x03C5, 0x03B6, 0x1FCF, 0x1FBF, 0x1FCE, 0x007E, 0x005F, /* 552 */ 0x0060, 0x0391, 0x0392, 0x03A8, 0x0394, 0x0395, 0x03A6, 0x0393, /* 560 */ 0x0397, 0x0399, 0x039E, 0x039A, 0x039B, 0x039C, 0x039D, 0x039F, /* 568 */ 0x03A0, 0xFFFF, 0x03A1, 0x03A3, 0x03A4, 0x0398, 0x03A9, 0x00B7, /* 576 */ 0x03A7, 0x03A5, 0x0396, 0x1FDF, 0x1FFE, 0x1FDE, 0x00A8, 0x007F, /* 584 */ 0x03A7, 0x03A5, 0x0396, 0x007B, 0x007C, 0x007D, 0x00A8, 0x007F, /* 592 */ 0x0058, 0x0059, 0x005A, 0x00C4, 0x00D6, 0x00DC, 0x005E, 0x005F, /* 600 */ 0x0078, 0x0079, 0x007A, 0x00E4, 0x00F6, 0x00FC, 0x00DF, 0x007F, /* 608 */ 0x00E0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 616 */ 0x0058, 0x0059, 0x005A, 0x00B0, 0x00E7, 0x00A7, 0x005E, 0x005F, /* 624 */ 0x0078, 0x0079, 0x007A, 0x00E9, 0x00F9, 0x00E8, 0x00A8, 0x007F, /* 632 */ 0x0020, 0x039E, 0x0022, 0x0393, 0x00A4, 0x0025, 0x0026, 0x0027, /* 640 */ 0x0038, 0x0039, 0x03A8, 0x003B, 0x003C, 0x003D, 0x003E, 0x03A0, /* 648 */ 0x0394, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 656 */ 0x0058, 0x0059, 0x005A, 0x03A9, 0x0398, 0x03A6, 0x039B, 0x03A3, /* 664 */ 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, /* 672 */ 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, /* 680 */ 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, /* 688 */ 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, /* 696 */ 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, /* 704 */ 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, /* 712 */ 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, /* 720 */ 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x007F, /* 728 */ 0x0058, 0x0059, 0x005A, 0x2190, 0x00BD, 0x2192, 0x2191, 0x25A1, /* 736 */ 0x0078, 0x0079, 0x007A, 0x00BC, 0x2225, 0x00BE, 0x00F7, 0x007F, /* 744 */ 0x0020, 0xFFFF, 0xFFFF, 0xFFFF, 0x0024, 0x0025, 0xFFFF, 0x0027, /* 752 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0xFFFF, /* 760 */ 0x0058, 0x0059, 0x005A, 0x005B, 0xFFFF, 0x005D, 0xFFFF, 0xFFFF, /* 768 */ 0x0078, 0x0079, 0x007A, 0xFFFF, 0x007C, 0xFFFF, 0xFFFF, 0x007F, /* 776 */ 0x0020, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 784 */ 0xFFFF, 0xFFFF, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x039E, 0xFFFF, /* 792 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2192, 0x222B, /* 800 */ 0x2070, 0x00B9, 0x00B2, 0x00B3, 0x2074, 0x2075, 0x2076, 0x2077, /* 808 */ 0x2078, 0x2079, 0x207A, 0x207B, 0x30EB, 0x0394, 0x039B, 0x03A9, /* 816 */ 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, 0x2087, /* 824 */ 0x2088, 0x2089, 0x03A3, 0x03BC, 0x03BD, 0x03C9, 0x03C0, 0x007F, /* 832 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x221A, 0xFFFF, 0x2192, 0x222B, /* 840 */ 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03A3, 0x03BC, 0x03BD, 0x03C9, /* 848 */ 0x03C0, 0x039E, 0x0394, 0x039B, 0x03A9, 0x042A, 0x207B, 0x207A, /* 856 */ 0x0491, 0x0452, 0x0453, 0x0454, 0x0451, 0x0455, 0x0456, 0x0457, /* 864 */ 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x045E, 0x045F, 0xFFFF, /* 872 */ 0x0463, 0x0473, 0x0475, 0x046B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 880 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x005B, 0xFFFF, 0x005D, 0xFFFF, 0x005F, /* 888 */ 0x0490, 0x0402, 0x0403, 0x0404, 0x0401, 0x0405, 0x0406, 0x0407, /* 896 */ 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x040E, 0x040F, 0x042A, /* 904 */ 0x0462, 0x0472, 0x0474, 0x046A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 912 */ 0x0020, 0xE002, 0xE003, 0xE009, 0xE005, 0xE012, 0xE013, 0xE014, /* 920 */ 0x00AB, 0x00BB, 0x201D, 0x201C, 0x0374, 0x0375, 0xFFFF, 0xFFFF, /* 928 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x00B7, 0xFFFF, 0xFFFF, 0xFFFF, 0x003B, /* 936 */ 0xFFFF, 0x0391, 0x0392, 0xFFFF, 0x0393, 0x0394, 0x0395, 0x03DA, /* 944 */ 0x03DC, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, /* 952 */ 0x039D, 0x039E, 0x039F, 0x03A0, 0x03DE, 0x03A1, 0x03A3, 0xFFFF, /* 960 */ 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03E0, 0xFFFF, /* 968 */ 0xFFFF, 0x03B1, 0x03B2, 0x03D0, 0x03B3, 0x03B4, 0x03B5, 0xE01A, /* 976 */ 0xE01B, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, /* 984 */ 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0xE01C, 0x03C1, 0x03C3, 0x03C2, /* 992 */ 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0xE01D, 0x007F, /* 1000 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x00A5, 0x0025, 0x0026, 0x0027, /* 1008 */ 0x0058, 0x0059, 0x005A, 0x00C6, 0x00D8, 0x00C5, 0x005E, 0x005F, /* 1016 */ 0x0078, 0x0079, 0x007A, 0x00E6, 0x00F8, 0x00E5, 0x203E, 0x007F, /* 1024 */ 0x0020, 0x0021, 0x0022, 0x00A7, 0x0024, 0x0025, 0x0026, 0x0027, /* 1032 */ 0x0078, 0x0079, 0x007A, 0x00E6, 0x00F8, 0x00E5, 0x007C, 0x007F, /* 1040 */ 0x00B5, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 1048 */ 0x00B4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 1056 */ 0x0078, 0x0079, 0x007A, 0x00E3, 0x00E7, 0x00F5, 0x007E, 0x007F, /* 1064 */ 0x2022, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 1072 */ 0x0058, 0x0059, 0x005A, 0x00A1, 0x00D1, 0x00C7, 0x00BF, 0x005F, /* 1080 */ 0x0078, 0x0079, 0x007A, 0x00B4, 0x00F1, 0x00E7, 0x00A8, 0x007F, /* 1088 */ 0x00C1, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 1096 */ 0x0058, 0x0059, 0x005A, 0x00C9, 0x00D6, 0x00DC, 0x005E, 0x005F, /* 1104 */ 0x00E1, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 1112 */ 0x0078, 0x0079, 0x007A, 0x00E9, 0x00F6, 0x00FC, 0x02DD, 0x007F, /* 1120 */ 0x0040, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 1128 */ 0x0398, 0x0399, 0xFFFF, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, /* 1136 */ 0x039F, 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0xFFFF, /* 1144 */ 0x03A7, 0x03A8, 0x03A9, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 1152 */ 0x0060, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, /* 1160 */ 0x03B8, 0x03B9, 0xFFFF, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, /* 1168 */ 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C2, /* 1176 */ 0x03C7, 0x03C8, 0x03C9, 0x007B, 0x007C, 0x007D, 0x203E, 0x007F, /* 1184 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x060C, 0x002D, 0x002E, 0x002F, /* 1192 */ 0x0038, 0x0039, 0x003A, 0x061B, 0x003C, 0x003D, 0x003E, 0x061F, /* 1200 */ 0x0040, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, /* 1208 */ 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, /* 1216 */ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, /* 1224 */ 0x0638, 0x0639, 0x063A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 1232 */ 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, /* 1240 */ 0x0648, 0x0649, 0x064A, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F, /* 1248 */ 0x0650, 0x0651, 0x0652, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 1256 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x007B, 0x007C, 0x007D, 0x203E, 0x007F, /* 1264 */ 0x0020, 0xFFFF, 0x0022, 0x00A3, 0x0024, 0x0025, 0x0026, 0x0027, /* 1272 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x2440, 0x003D, 0x2441, 0x003F, /* 1280 */ 0x0058, 0x0059, 0x005A, 0xFFFF, 0x00A5, 0x2442, 0x005E, 0x005F, /* 1288 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2443, 0xFFFF, 0xFFFF, 0x007F, /* 1296 */ 0x0058, 0x0059, 0x005A, 0x2329, 0x00A5, 0x232A, 0x005E, 0x005F, /* 1304 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0xFFFF, 0x007F, /* 1312 */ 0x0020, 0xFFFF, 0xFFFF, 0x00A3, 0x00A4, 0x005C, 0xFFFF, 0x00A7, /* 1320 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x007C, 0xFFFF, 0xFFFF, 0x007F, /* 1328 */ 0x0020, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x005C, 0xFFFF, 0xFFFF, /* 1336 */ 0x0020, 0xFFFF, 0x300C, 0x300D, 0xFFFF, 0xFFFF, 0x30F2, 0xFFFF, /* 1344 */ 0x0038, 0x0039, 0x2446, 0x2447, 0x2448, 0x2449, 0xFFFF, 0xFFFF, /* 1352 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, /* 1360 */ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, /* 1368 */ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, /* 1376 */ 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, /* 1384 */ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 1392 */ 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 1400 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 1408 */ 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* 1416 */ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 1424 */ 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 1432 */ 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 1440 */ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, /* 1448 */ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 1456 */ 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 1464 */ 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 1472 */ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, /* 1480 */ 0x00A0, 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7, /* 1488 */ 0x00A8, 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B, /* 1496 */ 0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7, /* 1504 */ 0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C, /* 1512 */ 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, /* 1520 */ 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, /* 1528 */ 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, /* 1536 */ 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, /* 1544 */ 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, /* 1552 */ 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, /* 1560 */ 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, /* 1568 */ 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9, /* 1576 */ 0x0058, 0x0059, 0x005A, 0x005B, 0xFFFF, 0x005D, 0xFFFF, 0x005F, /* 1584 */ 0x00A0, 0x0126, 0x02D8, 0x00A3, 0x00A4, 0xFFFF, 0x0124, 0x00A7, /* 1592 */ 0x00A8, 0x0130, 0x015E, 0x011E, 0x0134, 0x00AD, 0xFFFF, 0x017B, /* 1600 */ 0x00B0, 0x0127, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x0125, 0x00B7, /* 1608 */ 0x00B8, 0x0131, 0x015F, 0x011F, 0x0135, 0x00BD, 0xFFFF, 0x017C, /* 1616 */ 0x00C0, 0x00C1, 0x00C2, 0xFFFF, 0x00C4, 0x010A, 0x0108, 0x00C7, /* 1624 */ 0xFFFF, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x0120, 0x00D6, 0x00D7, /* 1632 */ 0x011C, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x016C, 0x015C, 0x00DF, /* 1640 */ 0x00E0, 0x00E1, 0x00E2, 0xFFFF, 0x00E4, 0x010B, 0x0109, 0x00E7, /* 1648 */ 0xFFFF, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x0121, 0x00F6, 0x00F7, /* 1656 */ 0x011D, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x016D, 0x015D, 0x02D9, /* 1664 */ 0x00A0, 0x0104, 0x0138, 0x0156, 0x00A4, 0x0128, 0x013B, 0x00A7, /* 1672 */ 0x00A8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00AD, 0x017D, 0x00AF, /* 1680 */ 0x00B0, 0x0105, 0x02DB, 0x0157, 0x00B4, 0x0129, 0x013C, 0x02C7, /* 1688 */ 0x00B8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014A, 0x017E, 0x014B, /* 1696 */ 0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, /* 1704 */ 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x012A, /* 1712 */ 0x0110, 0x0145, 0x014C, 0x0136, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 1720 */ 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x0168, 0x016A, 0x00DF, /* 1728 */ 0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, /* 1736 */ 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B, /* 1744 */ 0x0111, 0x0146, 0x014D, 0x0137, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 1752 */ 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x0169, 0x016B, 0x02D9, /* 1760 */ 0x00A0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457, /* 1768 */ 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00AD, 0x045E, 0x045F, /* 1776 */ 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407, /* 1784 */ 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00A4, 0x040E, 0x040F, /* 1792 */ 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A, /* 1800 */ 0x0058, 0x0059, 0x005A, 0x00E2, 0x00E7, 0x00EA, 0x00EE, 0x005F, /* 1808 */ 0x00F4, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 1816 */ 0x0078, 0x0079, 0x007A, 0x00E9, 0x00F9, 0x00E8, 0x00FB, 0x007F, /* 1824 */ 0x0058, 0x0059, 0x005A, 0x00E2, 0x00E7, 0x00EA, 0x00C9, 0x005F, /* 1832 */ 0x00A0, 0x00A1, 0x00A8, 0x00A3, 0x00A2, 0x00A5, 0x00B1, 0x00B4, /* 1840 */ 0x207D, 0x207E, 0x00BD, 0x207A, 0x00B8, 0x00AD, 0x00B7, 0x207B, /* 1848 */ 0x2078, 0x2079, 0x00BC, 0x00BE, 0x21D0, 0x2260, 0x2265, 0x00BF, /* 1856 */ 0x00C0, 0x00C1, 0x00C2, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, /* 1864 */ 0x00CD, 0x00CE, 0x00CF, 0x00D1, 0x00D3, 0x00D4, 0x00D9, 0x00DA, /* 1872 */ 0x00DB, 0x00DC, 0x00AE, 0x00A7, 0x00B6, 0x00B5, 0x00AA, 0x00BA, /* 1880 */ 0x2018, 0x2019, 0x201C, 0x201D, 0x00AB, 0x00BB, 0x00B0, 0x00A6, /* 1888 */ 0x00E0, 0x00E1, 0x00E2, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, /* 1896 */ 0x00ED, 0x00EE, 0x00EF, 0x00F1, 0x00F3, 0x00F4, 0x00F9, 0x00FA, /* 1904 */ 0x00FB, 0x00FC, 0x00A9, 0x2500, 0x2502, 0x2514, 0x2518, 0x2510, /* 1912 */ 0x250C, 0x251C, 0x2534, 0x2524, 0x252C, 0x253C, 0x00AC, 0x2588, /* 1920 */ 0x00A0, 0x201B, 0x2019, 0x00A3, 0xFFFF, 0xFFFF, 0x00A6, 0x00A7, /* 1928 */ 0x00A8, 0x00A9, 0xFFFF, 0x00AB, 0x00AC, 0x00AD, 0xFFFF, 0x2014, /* 1936 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x0385, 0x0386, 0x00B7, /* 1944 */ 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, /* 1952 */ 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 1960 */ 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, /* 1968 */ 0x03A0, 0x03A1, 0xFFFF, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, /* 1976 */ 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, /* 1984 */ 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, /* 1992 */ 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, /* 2000 */ 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, /* 2008 */ 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0xFFFF, /* 2016 */ 0x00A0, 0xFFFF, 0xFFFF, 0xFFFF, 0x00A4, 0xFFFF, 0xFFFF, 0xFFFF, /* 2024 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x060C, 0x00AD, 0xFFFF, 0xFFFF, /* 2032 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x061B, 0xFFFF, 0xFFFF, 0xFFFF, 0x061F, /* 2040 */ 0xFFFF, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, /* 2048 */ 0x0638, 0x0639, 0x063A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 2056 */ 0x00A0, 0xFFFF, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 2064 */ 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x203E, /* 2072 */ 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0xFFFF, /* 2080 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2017, /* 2088 */ 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, /* 2096 */ 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, /* 2104 */ 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, /* 2112 */ 0x05E8, 0x05E9, 0x05EA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 2120 */ 0x00A0, 0x0104, 0x02D8, 0x0141, 0x0024, 0x013D, 0x015A, 0x00A7, /* 2128 */ 0x017D, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 2136 */ 0x0058, 0x0059, 0x005A, 0x0160, 0x0110, 0x0106, 0x010C, 0x005F, /* 2144 */ 0x017E, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 2152 */ 0x0078, 0x0079, 0x007A, 0x0161, 0x0111, 0x0107, 0x010D, 0x007F, /* 2160 */ 0x02C7, 0x2261, 0x2227, 0x2228, 0x2229, 0x222A, 0x2282, 0x2283, /* 2168 */ 0x21D0, 0x21D2, 0x2234, 0x2235, 0x2208, 0x220B, 0x2286, 0x2287, /* 2176 */ 0x222B, 0x222E, 0x221E, 0x2207, 0x2202, 0x223C, 0x2248, 0x2243, /* 2184 */ 0x2245, 0x2264, 0x2260, 0x2265, 0x2194, 0x00AC, 0x2200, 0x2203, /* 2192 */ 0x05D0, 0x25A1, 0x2225, 0x0393, 0x0394, 0x22A5, 0x2220, 0x221F, /* 2200 */ 0x0398, 0x2329, 0x232A, 0x039B, 0x2032, 0x2033, 0x039E, 0x2213, /* 2208 */ 0x03A0, 0x00B2, 0x03A3, 0x00D7, 0x00B3, 0x03A5, 0x03A6, 0x00B7, /* 2216 */ 0x03A8, 0x03A9, 0x2205, 0x21C0, 0x221A, 0x0192, 0x221D, 0x00B1, /* 2224 */ 0x00B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, /* 2232 */ 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x2030, /* 2240 */ 0x03C0, 0x03C1, 0x03C3, 0x00F7, 0x03C4, 0x03C5, 0x03C6, 0x03C7, /* 2248 */ 0x03C8, 0x03C9, 0x2020, 0x2190, 0x2191, 0x2192, 0x2193, 0x203E, /* 2256 */ 0x00A0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, /* 2264 */ 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00AD, 0x040E, 0x040F, /* 2272 */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 2280 */ 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 2288 */ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 2296 */ 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 2304 */ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 2312 */ 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 2320 */ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 2328 */ 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, /* 2336 */ 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, /* 2344 */ 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00A7, 0x045E, 0x045F, /* 2352 */ 0x0416, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, /* 2360 */ 0x0425, 0x0418, 0x0408, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, /* 2368 */ 0x041F, 0x0409, 0x0420, 0x0421, 0x0422, 0x0423, 0x0412, 0x040A, /* 2376 */ 0x040F, 0x0405, 0x0417, 0x0428, 0x0402, 0x040B, 0x0427, 0x005F, /* 2384 */ 0x0436, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, /* 2392 */ 0x0445, 0x0438, 0x0458, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, /* 2400 */ 0x043F, 0x0459, 0x0440, 0x0441, 0x0442, 0x0443, 0x0432, 0x045A, /* 2408 */ 0x045F, 0x0455, 0x0437, 0x0448, 0x0452, 0x045B, 0x0447, 0x007F, /* 2416 */ 0x040F, 0x0405, 0x0417, 0x0428, 0x0403, 0x040C, 0x0427, 0x005F, /* 2424 */ 0x045F, 0x0455, 0x0437, 0x0448, 0x0453, 0x045C, 0x0447, 0x007F, /* 2432 */ 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 2440 */ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, /* 2448 */ 0x00E8, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B, /* 2456 */ 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 2464 */ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF, /* 2472 */ 0x03A8, 0x03A9, 0xFFFF, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 2480 */ 0xFFFF, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, /* 2488 */ 0x03C8, 0x03C9, 0xFFFF, 0x007B, 0x007C, 0x007D, 0x00AF, 0x007F, /* 2496 */ 0x0058, 0x0059, 0x005A, 0x00A1, 0x00D1, 0x005D, 0x00BF, 0x005F, /* 2504 */ 0x0078, 0x0079, 0x007A, 0x00B4, 0x00F1, 0x005B, 0x00A8, 0x007F, /* 2512 */ 0x00A0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 2520 */ 0xFFFF, 0xFFFF, 0x201C, 0xFFFF, 0x2190, 0x2191, 0x2192, 0x2193, /* 2528 */ 0xFFFF, 0xFFFF, 0x201D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 2536 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2122, 0x266A, 0xFFFF, 0xFFFF, /* 2544 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x215B, 0x215C, 0x215D, 0x215E, /* 2552 */ 0x2126, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0132, 0x013F, /* 2560 */ 0xFFFF, 0xFFFF, 0x0152, 0xFFFF, 0x0174, 0x0176, 0x0178, 0x0149, /* 2568 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0133, 0x0140, /* 2576 */ 0xFFFF, 0xFFFF, 0x0153, 0xFFFF, 0x0175, 0x0177, 0xFFFF, 0xFFFF, /* 2584 */ 0x00A0, 0x0401, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 2592 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00AD, 0xFFFF, 0xFFFF, /* 2600 */ 0xFFFF, 0x0451, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 2608 */ 0xFFFF, 0xFFFF, 0x0100, 0x0108, 0x010A, 0xFFFF, 0x0116, 0x0112, /* 2616 */ 0x011C, 0x2018, 0x201C, 0x2122, 0x2190, 0x2191, 0x2192, 0x2193, /* 2624 */ 0xFFFF, 0xFFFF, 0x0101, 0x0109, 0x010B, 0x00F0, 0x0117, 0x0113, /* 2632 */ 0x011D, 0x2019, 0x201D, 0x266A, 0x215B, 0x215C, 0x215D, 0x215E, /* 2640 */ 0xFFFF, 0x011E, 0x0120, 0x0122, 0x0124, 0x0126, 0x0128, 0x0130, /* 2648 */ 0x012A, 0x012E, 0x0132, 0x0134, 0x0136, 0x013B, 0x013F, 0x0145, /* 2656 */ 0x2014, 0x014A, 0x014C, 0x0152, 0x0156, 0x015C, 0x0166, 0x00DE, /* 2664 */ 0x0168, 0x016C, 0x016A, 0x0172, 0x0174, 0x00DD, 0x0176, 0x0178, /* 2672 */ 0x2126, 0x011F, 0x0121, 0x0123, 0x0125, 0x0127, 0x0129, 0x0131, /* 2680 */ 0x012B, 0x012F, 0x0133, 0x0135, 0x0137, 0x013C, 0x0140, 0x0146, /* 2688 */ 0x0138, 0x014B, 0x014D, 0x0153, 0x0157, 0x015D, 0x0167, 0x00FE, /* 2696 */ 0x0169, 0x016D, 0x016B, 0x0173, 0x0175, 0x00FD, 0x0177, 0x0149, /* 2704 */ 0x2551, 0x2550, 0x2554, 0x2557, 0x255A, 0x255D, 0x2560, 0x2563, /* 2712 */ 0x2566, 0x2569, 0x256C, 0xE019, 0x2584, 0x2588, 0x25AA, 0xFFFF, /* 2720 */ 0x2502, 0x2500, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, /* 2728 */ 0x252C, 0x2534, 0x253C, 0x2591, 0x2592, 0x2593, 0xFFFF, 0xFFFF, /* 2736 */ 0x00A0, 0x0104, 0x0112, 0x0122, 0x012A, 0x0128, 0x0136, 0x00A7, /* 2744 */ 0x013B, 0x0110, 0x0160, 0x0166, 0x017D, 0x00AD, 0x016A, 0x014A, /* 2752 */ 0x00B0, 0x0105, 0x0113, 0x0123, 0x012B, 0x0129, 0x0137, 0x00B7, /* 2760 */ 0x013C, 0x0111, 0x0161, 0x0167, 0x017E, 0x2014, 0x016B, 0x014B, /* 2768 */ 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x00CF, /* 2776 */ 0x00D0, 0x0145, 0x014C, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0168, /* 2784 */ 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, /* 2792 */ 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x00EF, /* 2800 */ 0x00F0, 0x0146, 0x014D, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0169, /* 2808 */ 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0138, /* 2816 */ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x201E, 0x00A6, 0x00A7, /* 2824 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x201C, 0x00B5, 0x00B6, 0x00B7, /* 2832 */ 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, /* 2840 */ 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, /* 2848 */ 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, /* 2856 */ 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, /* 2864 */ 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, /* 2872 */ 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, /* 2880 */ 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, /* 2888 */ 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x2019, /* 2896 */ 0x00A0, 0x1E02, 0x1E03, 0x00A3, 0x010A, 0x010B, 0x1E0A, 0x00A7, /* 2904 */ 0x1E80, 0x00A9, 0x1E82, 0x1E0B, 0x1EF2, 0x00AD, 0x00AE, 0x1E61, /* 2912 */ 0x1E1E, 0x1E1F, 0x0120, 0x0121, 0x1E40, 0x1E41, 0x00B6, 0x1E56, /* 2920 */ 0x1E81, 0x1E57, 0x1E83, 0x1E60, 0x1EF3, 0x1E84, 0x1E85, 0x0178, /* 2928 */ 0x0174, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x1E6A, /* 2936 */ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x0176, 0x00DF, /* 2944 */ 0x0175, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x1E6B, /* 2952 */ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x0177, 0x00FF, /* 2960 */ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AC, 0x00A5, 0x0160, 0x00A7, /* 2968 */ 0x0161, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 2976 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x017D, 0x00B5, 0x00B6, 0x00B7, /* 2984 */ 0x017E, 0x00B9, 0x00BA, 0x00BB, 0x0152, 0x0153, 0x0178, 0x00BF, /* 2992 */ 0x00B4, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3000 */ 0x02BB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3008 */ 0x0102, 0x00C0, 0x01DE, 0x01E0, 0x01E2, 0x0114, 0x00C8, 0x01E4, /* 3016 */ 0x01E6, 0x01E8, 0x014E, 0x00D2, 0x01EA, 0x01EC, 0x01B7, 0x01EE, /* 3024 */ 0x0103, 0x00E0, 0x01DF, 0x01E1, 0x01E3, 0x0115, 0x00E8, 0x01E5, /* 3032 */ 0x01E7, 0x01E9, 0x014F, 0x00F2, 0x01EB, 0x01ED, 0x0292, 0x01EF, /* 3040 */ 0x00A0, 0x201D, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 3048 */ 0x00D8, 0x00A9, 0x201E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, /* 3056 */ 0x00F8, 0x00B9, 0x201C, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, /* 3064 */ 0x012E, 0x0116, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0104, 0x010C, /* 3072 */ 0x0122, 0x00C9, 0x017D, 0x0118, 0x0112, 0x0136, 0x012A, 0x013B, /* 3080 */ 0x0141, 0x0145, 0x0143, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, /* 3088 */ 0x0172, 0x0160, 0x015A, 0x016A, 0x00DC, 0x017B, 0x0179, 0x00DF, /* 3096 */ 0x012F, 0x0117, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0105, 0x010D, /* 3104 */ 0x0123, 0x00E9, 0x017E, 0x0119, 0x0113, 0x0137, 0x012B, 0x013C, /* 3112 */ 0x0142, 0x0146, 0x0144, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, /* 3120 */ 0x0173, 0x0161, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017A, 0x0138, /* 3128 */ 0x0078, 0x0079, 0x007A, 0x00E6, 0x00F8, 0x00E5, 0x007E, 0x007F, /* 3136 */ 0xFFFF, 0x3002, 0x300C, 0x300D, 0x3001, 0x30FB, 0x30F2, 0x30A1, /* 3144 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x20A9, 0x005D, 0x005E, 0x005F, /* 3152 */ 0xFFFF, 0x00A1, 0x00A2, 0x00A3, 0xFFFF, 0x00A5, 0xFFFF, 0x00A7, /* 3160 */ 0x00A4, 0x00A9, 0x00AA, 0x00AB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3168 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0xFFFF, 0x00B5, 0x00B6, 0x00B7, /* 3176 */ 0xFFFF, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0xFFFF, 0x00BF, /* 3184 */ 0xFFFF, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0152, /* 3192 */ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0178, 0xFFFF, 0x00DF, /* 3200 */ 0xFFFF, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0153, /* 3208 */ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FF, 0xFFFF, 0xFFFF, /* 3216 */ 0x00A0, 0x00C0, 0x00C2, 0x00C8, 0x00CA, 0x00CB, 0x00CE, 0x00CF, /* 3224 */ 0x00B4, 0x02CB, 0x02C6, 0x00A8, 0x02DC, 0x00D9, 0x00DB, 0x20A4, /* 3232 */ 0x00AF, 0x00DD, 0x00FD, 0x00B0, 0x00C7, 0x00E7, 0x00D1, 0x00F1, /* 3240 */ 0x00A1, 0x00BF, 0x00A4, 0x00A3, 0x00A5, 0x00A7, 0x0192, 0x00A2, /* 3248 */ 0x00E2, 0x00EA, 0x00F4, 0x00FB, 0x00E1, 0x00E9, 0x00F3, 0x00FA, /* 3256 */ 0x00E0, 0x00E8, 0x00F2, 0x00F9, 0x00E4, 0x00EB, 0x00F6, 0x00FC, /* 3264 */ 0x00C5, 0x00EE, 0x00D8, 0x00C6, 0x00E5, 0x00ED, 0x00F8, 0x00E6, /* 3272 */ 0x00C4, 0x00EC, 0x00D6, 0x00DC, 0x00C9, 0x00EF, 0x00DF, 0x00D4, /* 3280 */ 0x00C1, 0x00C3, 0x00E3, 0x00D0, 0x00F0, 0x00CD, 0x00CC, 0x00D3, /* 3288 */ 0x00D2, 0x00D5, 0x00F5, 0x0160, 0x0161, 0x00DA, 0x0178, 0x00FF, /* 3296 */ 0x00DE, 0x00FE, 0x00B7, 0x00B5, 0x00B6, 0x00BE, 0x2014, 0x00BC, /* 3304 */ 0x00BD, 0x00AA, 0x00BA, 0x00AB, 0x25A0, 0x00BB, 0x00B1, 0xFFFF, /* 3312 */ 0x00A0, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C7, /* 3320 */ 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D9, /* 3328 */ 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00B5, 0x00D7, 0x00F7, /* 3336 */ 0x00A9, 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x00A5, 0x0192, 0x00A7, /* 3344 */ 0x00A4, 0xFFFF, 0x201C, 0x00AB, 0xFFFF, 0xFFFF, 0xFB01, 0xFB02, /* 3352 */ 0x00AE, 0x2013, 0x2020, 0x2021, 0x00B7, 0x00A6, 0x00B6, 0x2022, /* 3360 */ 0xFFFF, 0xFFFF, 0x201D, 0x00BB, 0x2026, 0x2030, 0x00AC, 0x00BF, /* 3368 */ 0x00B9, 0x02CB, 0x00B4, 0x02C6, 0x02DC, 0x00AF, 0x02D8, 0x02D9, /* 3376 */ 0x00A8, 0x00B2, 0x02DA, 0x00B8, 0x00B3, 0x02DD, 0x02DB, 0x02C7, /* 3384 */ 0x2014, 0x00B1, 0x00BC, 0x00BD, 0x00BE, 0x00E0, 0x00E1, 0x00E2, /* 3392 */ 0x00E3, 0x00E4, 0x00E5, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, /* 3400 */ 0x00EC, 0x00C6, 0x00ED, 0x00AA, 0x00EE, 0x00EF, 0x00F0, 0x00F1, /* 3408 */ 0x0141, 0x00D8, 0x0152, 0x00BA, 0x00F2, 0x00F3, 0x00F4, 0x00F5, /* 3416 */ 0x00F6, 0x00E6, 0x00F9, 0x00FA, 0x00FB, 0x0131, 0x00FC, 0x00FD, /* 3424 */ 0x0142, 0x00F8, 0x0153, 0x00DF, 0x00FE, 0x00FF, 0xFFFF, 0xFFFF, /* 3432 */ 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 3440 */ 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 3448 */ 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 3456 */ 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 3464 */ 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 3472 */ 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, /* 3480 */ 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 3488 */ 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, /* 3496 */ 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x0394, 0x00AB, /* 3504 */ 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x2126, 0x0152, 0x0153, /* 3512 */ 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 3520 */ 0x00FF, 0x0178, 0x2044, 0x00A4, 0x2039, 0x203A, 0xFB01, 0xFB02, /* 3528 */ 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 3536 */ 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 3544 */ 0xE01E, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0xFFFF, 0xFFFF, /* 3552 */ 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7, /* 3560 */ 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 3568 */ 0x2014, 0x2013, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25C6, /* 3576 */ 0x00FF, 0x0178, 0x2044, 0x00A4, 0x0110, 0x0111, 0x00DE, 0x00FE, /* 3584 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F, /* 3592 */ 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 3600 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087, /* 3608 */ 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F, /* 3616 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B, /* 3624 */ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007, /* 3632 */ 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, /* 3640 */ 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A, /* 3648 */ 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x00E5, /* 3656 */ 0x00E7, 0x00F1, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 3664 */ 0x0026, 0x00E9, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF, /* 3672 */ 0x00EC, 0x00DF, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, /* 3680 */ 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x00C5, /* 3688 */ 0x00C7, 0x00D1, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 3696 */ 0x00F8, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, /* 3704 */ 0x00CC, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 3712 */ 0x00D8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 3720 */ 0x0068, 0x0069, 0x00AB, 0x00BB, 0x00F0, 0x00FD, 0x00FE, 0x00B1, /* 3728 */ 0x00B0, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, /* 3736 */ 0x0071, 0x0072, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x00A4, /* 3744 */ 0x00B5, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 3752 */ 0x0079, 0x007A, 0x00A1, 0x00BF, 0x00D0, 0x00DD, 0x00DE, 0x00AE, /* 3760 */ 0x005E, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, /* 3768 */ 0x00BD, 0x00BE, 0x005B, 0x005D, 0x00AF, 0x00A8, 0x00B4, 0x00D7, /* 3776 */ 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 3784 */ 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00F6, 0x00F2, 0x00F3, 0x00F5, /* 3792 */ 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 3800 */ 0x0051, 0x0052, 0x00B9, 0x00FB, 0x00FC, 0x00F9, 0x00FA, 0x00FF, /* 3808 */ 0x005C, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 3816 */ 0x0059, 0x005A, 0x00B2, 0x00D4, 0x00D6, 0x00D2, 0x00D3, 0x00D5, /* 3824 */ 0x0038, 0x0039, 0x00B3, 0x00DB, 0x00DC, 0x00D9, 0x00DA, 0x009F, /* 3832 */ 0xFFFF, 0xFFFF, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 3840 */ 0x0026, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3848 */ 0xFFFF, 0xFFFF, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 3856 */ 0x002D, 0x002F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3864 */ 0xFFFF, 0xFFFF, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 3872 */ 0xFFFF, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 3880 */ 0x0068, 0x0069, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3888 */ 0xFFFF, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, /* 3896 */ 0x0071, 0x0072, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3904 */ 0xFFFF, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 3912 */ 0x0079, 0x007A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3920 */ 0x0048, 0x0049, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3928 */ 0x0051, 0x0052, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3936 */ 0x005C, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 3944 */ 0x0059, 0x005A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3952 */ 0x0038, 0x0039, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x009F, /* 3960 */ 0x00E7, 0x00F1, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 3968 */ 0x00EC, 0x00DF, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 3976 */ 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, 0x00A7, 0x00B6, 0x00BC, /* 3984 */ 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x203E, 0x00A8, 0x00B4, 0x2017, /* 3992 */ 0x005C, 0x2003, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 4000 */ 0x0020, 0x00A0, 0x00E2, 0x007B, 0x00E0, 0x00E1, 0x00E3, 0x00E5, /* 4008 */ 0x00E7, 0x00F1, 0x00C4, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 4016 */ 0x00EC, 0x007E, 0x00DC, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 4024 */ 0x002D, 0x002F, 0x00C2, 0x005B, 0x00C0, 0x00C1, 0x00C3, 0x00C5, /* 4032 */ 0x00C7, 0x00D1, 0x00F6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4040 */ 0x00CC, 0x0060, 0x003A, 0x0023, 0x00A7, 0x0027, 0x003D, 0x0022, /* 4048 */ 0x00B5, 0x00DF, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4056 */ 0x00A2, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x0040, 0x00B6, 0x00BC, /* 4064 */ 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x203E, 0x00A8, 0x00B4, 0x00D7, /* 4072 */ 0x00E4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 4080 */ 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00A6, 0x00F2, 0x00F3, 0x00F5, /* 4088 */ 0x00FC, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 4096 */ 0x0051, 0x0052, 0x00B9, 0x00FB, 0x007D, 0x00F9, 0x00FA, 0x00FF, /* 4104 */ 0x00D6, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 4112 */ 0x0059, 0x005A, 0x00B2, 0x00D4, 0x005C, 0x00D2, 0x00D3, 0x00D5, /* 4120 */ 0x0038, 0x0039, 0x00B3, 0x00DB, 0x005D, 0x00D9, 0x00DA, 0x009F, /* 4128 */ 0xFFFF, 0xFFFF, 0x00F9, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4136 */ 0xFFFF, 0x0060, 0x003A, 0x0023, 0x00E0, 0x0027, 0x003D, 0x0022, /* 4144 */ 0xFFFF, 0x00A8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4152 */ 0x00E9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 4160 */ 0x00E8, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 4168 */ 0x00E7, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 4176 */ 0xFFFF, 0xFFFF, 0x00C9, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 4184 */ 0xFFFF, 0xFFFF, 0x0024, 0x00C7, 0x002A, 0x0029, 0x003B, 0x005E, /* 4192 */ 0xFFFF, 0xFFFF, 0x00E7, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4200 */ 0xFFFF, 0x00E3, 0x003A, 0x00D5, 0x00C3, 0x0027, 0x003D, 0x0022, /* 4208 */ 0x00F5, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 4216 */ 0x00E9, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 4224 */ 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x007D, /* 4232 */ 0x00E7, 0x00F1, 0x0023, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 4240 */ 0x00EC, 0x00DF, 0x00A4, 0x00C5, 0x002A, 0x0029, 0x003B, 0x005E, /* 4248 */ 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x0024, /* 4256 */ 0x00C7, 0x00D1, 0x00F8, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4264 */ 0x00A6, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, /* 4272 */ 0x00CC, 0x0060, 0x003A, 0x00C6, 0x00D8, 0x0027, 0x003D, 0x0022, /* 4280 */ 0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 4288 */ 0x0071, 0x0072, 0x00AA, 0x00BA, 0x007B, 0x00B8, 0x005B, 0x005D, /* 4296 */ 0x00B5, 0x00FC, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4304 */ 0x00A2, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, /* 4312 */ 0x00E6, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 4320 */ 0x00E5, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 4328 */ 0x0051, 0x0052, 0x00B9, 0x00FB, 0x007E, 0x00F9, 0x00FA, 0x00FF, /* 4336 */ 0x0020, 0x00A0, 0x00E2, 0x007B, 0x00E0, 0x00E1, 0x00E3, 0x007D, /* 4344 */ 0x00E7, 0x00F1, 0x00A7, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 4352 */ 0x0026, 0x0060, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF, /* 4360 */ 0x002D, 0x002F, 0x00C2, 0x0023, 0x00C0, 0x00C1, 0x00C3, 0x0024, /* 4368 */ 0x00CC, 0x00E9, 0x003A, 0x00C4, 0x00D6, 0x0027, 0x003D, 0x0022, /* 4376 */ 0x0071, 0x0072, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x005D, /* 4384 */ 0x00A2, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x005B, 0x00B6, 0x00BC, /* 4392 */ 0x0059, 0x005A, 0x00B2, 0x00D4, 0x0040, 0x00D2, 0x00D3, 0x00D5, /* 4400 */ 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x007B, 0x00E1, 0x00E3, 0x00E5, /* 4408 */ 0x005C, 0x00F1, 0x00B0, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 4416 */ 0x0026, 0x005D, 0x00EA, 0x00EB, 0x007D, 0x00ED, 0x00EE, 0x00EF, /* 4424 */ 0x007E, 0x00DF, 0x00E9, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 4432 */ 0x00C7, 0x00D1, 0x00F2, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4440 */ 0x00CC, 0x00F9, 0x003A, 0x00A3, 0x00A7, 0x0027, 0x003D, 0x0022, /* 4448 */ 0x005B, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, /* 4456 */ 0x00B5, 0x00EC, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4464 */ 0x00A2, 0x0023, 0x00A5, 0x00B7, 0x00A9, 0x0040, 0x00B6, 0x00BC, /* 4472 */ 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00F6, 0x00A6, 0x00F3, 0x00F5, /* 4480 */ 0x0051, 0x0052, 0x00B9, 0x00FB, 0x00FC, 0x0060, 0x00FA, 0x00FF, /* 4488 */ 0x00E7, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 4496 */ 0xFFFF, 0xFFFF, 0x00A3, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 4504 */ 0xFFFF, 0xFFFF, 0x0021, 0x00A5, 0x002A, 0x0029, 0x003B, 0x00AC, /* 4512 */ 0xFFFF, 0x203E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4520 */ 0x0024, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 4528 */ 0x00E7, 0x00A6, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 4536 */ 0x00EC, 0x00DF, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, /* 4544 */ 0x00C7, 0x0023, 0x00F1, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4552 */ 0x00CC, 0x0060, 0x003A, 0x00D1, 0x0040, 0x0027, 0x003D, 0x0022, /* 4560 */ 0x00B5, 0x00A8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4568 */ 0x00BD, 0x00BE, 0x005E, 0x0021, 0x203E, 0x007E, 0x00B4, 0x00D7, /* 4576 */ 0x00E7, 0x00F1, 0x0024, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 4584 */ 0x00EC, 0x00DF, 0x0021, 0x00A3, 0x002A, 0x0029, 0x003B, 0x00AC, /* 4592 */ 0x00B5, 0x203E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4600 */ 0x00A2, 0x005B, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, /* 4608 */ 0x00BD, 0x00BE, 0x005E, 0x005D, 0x007E, 0x00A8, 0x00B4, 0x00D7, /* 4616 */ 0x30A3, 0x30A5, 0x00A3, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 4624 */ 0x0026, 0x30A7, 0x30A9, 0x30E3, 0x30E5, 0x30E7, 0x30C3, 0xFFFF, /* 4632 */ 0x30FC, 0xFFFF, 0x0021, 0x00A5, 0x002A, 0x0029, 0x003B, 0x00AC, /* 4640 */ 0xFFFF, 0x30A2, 0x30A4, 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, /* 4648 */ 0x30AF, 0x30B1, 0x30B3, 0xFFFF, 0x30B5, 0x30B7, 0x30B9, 0x30BB, /* 4656 */ 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, 0x30CB, /* 4664 */ 0x30CC, 0x30CD, 0x30CE, 0xFFFF, 0xFFFF, 0x30CF, 0x30D2, 0x30D5, /* 4672 */ 0xFFFF, 0x203E, 0x30D8, 0x30DB, 0x30DE, 0x30DF, 0x30E0, 0x30E1, /* 4680 */ 0x30E2, 0x30E4, 0x30E6, 0xFFFF, 0x30E8, 0x30E9, 0x30EA, 0x30EB, /* 4688 */ 0xFFFF, 0xFFFF, 0x30EC, 0x30ED, 0x30EF, 0x30F3, 0x309B, 0x309C, /* 4696 */ 0xFFFF, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 4704 */ 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x0040, 0x00E1, 0x00E3, 0x00E5, /* 4712 */ 0x0026, 0x007B, 0x00EA, 0x00EB, 0x007D, 0x00ED, 0x00EE, 0x00EF, /* 4720 */ 0x00EC, 0x00DF, 0x00A7, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 4728 */ 0x00C7, 0x00D1, 0x00F9, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4736 */ 0x00CC, 0x00B5, 0x003A, 0x00A3, 0x00E0, 0x0027, 0x003D, 0x0022, /* 4744 */ 0x0060, 0x00A8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4752 */ 0x00A2, 0x0023, 0x00A5, 0x00B7, 0x00A9, 0x005D, 0x00B6, 0x00BC, /* 4760 */ 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x203E, 0x007E, 0x00B4, 0x00D7, /* 4768 */ 0x0051, 0x0052, 0x00B9, 0x00FB, 0x00FC, 0x00A6, 0x00FA, 0x00FF, /* 4776 */ 0x0020, 0x00A0, 0x0651, 0xFE7D, 0x0640, 0xFFFF, 0x0621, 0x0622, /* 4784 */ 0xFE82, 0x0623, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 4792 */ 0x0026, 0xFE84, 0x0624, 0xFFFF, 0xFFFF, 0x0626, 0x0627, 0xFE8E, /* 4800 */ 0x0628, 0xFE91, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, /* 4808 */ 0x002D, 0x002F, 0x0629, 0x062A, 0xFE97, 0x062B, 0xFE9B, 0x062C, /* 4816 */ 0xFE9F, 0x062D, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4824 */ 0xFEA3, 0x062E, 0xFEA7, 0x062F, 0x0630, 0x0631, 0x0632, 0x0633, /* 4832 */ 0xFEB3, 0x060C, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 4840 */ 0x0634, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 4848 */ 0x0068, 0x0069, 0xFEB7, 0x0635, 0xFEBB, 0x0636, 0xFEBF, 0x0637, /* 4856 */ 0x0638, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, /* 4864 */ 0x0071, 0x0072, 0x0639, 0xFECA, 0xFECB, 0xFECC, 0x063A, 0xFECE, /* 4872 */ 0xFECF, 0x00F7, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4880 */ 0x0079, 0x007A, 0xFED0, 0x0641, 0xFED3, 0x0642, 0xFED7, 0x0643, /* 4888 */ 0xFEDB, 0x0644, 0xFEF5, 0xFEF6, 0xFEF7, 0xFEF8, 0xFFFF, 0xFFFF, /* 4896 */ 0xFEFB, 0xFEFC, 0xFEDF, 0x0645, 0xFEE3, 0x0646, 0xFEE7, 0x0647, /* 4904 */ 0x061B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 4912 */ 0x0048, 0x0049, 0x00AD, 0xFEEB, 0xFFFF, 0xFEEC, 0xFFFF, 0x0648, /* 4920 */ 0x061F, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 4928 */ 0x0051, 0x0052, 0x0649, 0xFEF0, 0x064A, 0xFEF2, 0xFEF3, 0x0660, /* 4936 */ 0x00D7, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 4944 */ 0x0059, 0x005A, 0x0661, 0x0662, 0xFFFF, 0x0663, 0x0664, 0x0665, /* 4952 */ 0x0038, 0x0039, 0xFFFF, 0x0666, 0x0667, 0x0668, 0x0669, 0x009F, /* 4960 */ 0x0020, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 4968 */ 0x0398, 0x0399, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 4976 */ 0x0026, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, /* 4984 */ 0x03A1, 0x03A3, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 4992 */ 0x002D, 0x002F, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, /* 5000 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 5008 */ 0xFFFF, 0x0386, 0x0388, 0x0389, 0xFFFF, 0x038A, 0x038C, 0x038E, /* 5016 */ 0x038F, 0x0060, 0x003A, 0x00A3, 0x00A7, 0x0027, 0x003D, 0x0022, /* 5024 */ 0x00C4, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 5032 */ 0x0068, 0x0069, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, /* 5040 */ 0x00D6, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, /* 5048 */ 0x0071, 0x0072, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, /* 5056 */ 0x00DC, 0x00A8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 5064 */ 0x0079, 0x007A, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C2, /* 5072 */ 0xFFFF, 0x03AC, 0x03AD, 0x03AE, 0x03CA, 0x03AF, 0x03CC, 0x03CD, /* 5080 */ 0x03CB, 0x03CE, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, /* 5088 */ 0x00B8, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 5096 */ 0x0048, 0x0049, 0xFFFF, 0x03C9, 0x00C2, 0x00E0, 0x00E4, 0x00EA, /* 5104 */ 0x00B4, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 5112 */ 0x0051, 0x0052, 0x00B1, 0x00E9, 0x00E8, 0x00EB, 0x00EE, 0x00EF, /* 5120 */ 0x00B0, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 5128 */ 0x0059, 0x005A, 0x00BD, 0x00F6, 0x00F4, 0x00FB, 0x00F9, 0x00FC, /* 5136 */ 0x0038, 0x0039, 0x00FF, 0x00E7, 0x00C7, 0xFFFF, 0xFFFF, 0x009F, /* 5144 */ 0x0020, 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, /* 5152 */ 0x05D7, 0x05D8, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 5160 */ 0x0026, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, /* 5168 */ 0x05E0, 0x05E1, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, /* 5176 */ 0x002D, 0x002F, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, /* 5184 */ 0x05E8, 0x05E9, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 5192 */ 0xFFFF, 0x05EA, 0xFFFF, 0xFFFF, 0x00A0, 0xFFFF, 0xFFFF, 0xFFFF, /* 5200 */ 0x21D4, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 5208 */ 0x0068, 0x0069, 0x00AB, 0x00BB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 5216 */ 0x0071, 0x0072, 0xFFFF, 0xFFFF, 0xFFFF, 0x00B8, 0xFFFF, 0x00A4, /* 5224 */ 0x0079, 0x007A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00AE, /* 5232 */ 0x00BD, 0x00BE, 0x005B, 0x005D, 0x203E, 0x00A8, 0x00B4, 0x00D7, /* 5240 */ 0x0048, 0x0049, 0x00AD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 5248 */ 0x0051, 0x0052, 0x00B9, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 5256 */ 0x0059, 0x005A, 0x00B2, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 5264 */ 0x0038, 0x0039, 0x00B3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x009F, /* 5272 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 5280 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 5288 */ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 5296 */ 0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, /* 5304 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 5312 */ 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 5320 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 5328 */ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 5336 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 5344 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 5352 */ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 5360 */ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 5368 */ 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 5376 */ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 5384 */ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 5392 */ 0x00B0, 0x00B7, 0x2022, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, /* 5400 */ 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x00AF, 0x00A8, 0x00B4, 0x00D7, /* 5408 */ 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192, /* 5416 */ 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 5424 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, /* 5432 */ 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, /* 5440 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, /* 5448 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 5456 */ 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE, /* 5464 */ 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, /* 5472 */ 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE, /* 5480 */ 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, /* 5488 */ 0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, /* 5496 */ 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0, /* 5504 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x0386, 0x00E7, /* 5512 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0388, 0x00C4, 0x0389, /* 5520 */ 0x038A, 0xFFFF, 0x038C, 0x00F4, 0x00F6, 0x038E, 0x00FB, 0x00F9, /* 5528 */ 0x038F, 0x00D6, 0x00DC, 0x03AC, 0x00A3, 0x03AD, 0x03AE, 0x03AF, /* 5536 */ 0x03CA, 0x0390, 0x03CC, 0x03CD, 0x0391, 0x0392, 0x0393, 0x0394, /* 5544 */ 0x0395, 0x0396, 0x0397, 0x00BD, 0x0398, 0x0399, 0x00AB, 0x00BB, /* 5552 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039A, 0x039B, 0x039D, /* 5560 */ 0x039C, 0x2563, 0x2551, 0x2557, 0x255D, 0x039E, 0x039F, 0x2510, /* 5568 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x03A0, 0x03A1, /* 5576 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x03A3, /* 5584 */ 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03B1, 0x03B2, /* 5592 */ 0x03B3, 0x2518, 0x250C, 0x2588, 0x2584, 0x03B4, 0x03B5, 0x2580, /* 5600 */ 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, /* 5608 */ 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C2, 0x03C4, 0x00B4, /* 5616 */ 0x00AD, 0x00B1, 0x03C5, 0x03C6, 0x03C7, 0x00A7, 0x03C8, 0x02DB, /* 5624 */ 0x00B0, 0x00A8, 0x03C9, 0x03CB, 0x03B0, 0x03CE, 0x25A0, 0x00A0, /* 5632 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x016F, 0x0107, 0x00E7, /* 5640 */ 0x0142, 0x00EB, 0x0150, 0x0151, 0x00EE, 0x0179, 0x00C4, 0x0106, /* 5648 */ 0x00C9, 0x0139, 0x013A, 0x00F4, 0x00F6, 0x013D, 0x013E, 0x015A, /* 5656 */ 0x015B, 0x00D6, 0x00DC, 0x0164, 0x0165, 0x0141, 0x00D7, 0x010D, /* 5664 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x0104, 0x0105, 0x017D, 0x017E, /* 5672 */ 0x0118, 0x0119, 0x00AC, 0x017A, 0x010C, 0x015F, 0x00AB, 0x00BB, /* 5680 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x011A, /* 5688 */ 0x015E, 0x2563, 0x2551, 0x2557, 0x255D, 0x017B, 0x017C, 0x2510, /* 5696 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0102, 0x0103, /* 5704 */ 0x0111, 0x0110, 0x010E, 0x00CB, 0x010F, 0x0147, 0x00CD, 0x00CE, /* 5712 */ 0x011B, 0x2518, 0x250C, 0x2588, 0x2584, 0x0162, 0x016E, 0x2580, /* 5720 */ 0x00D3, 0x00DF, 0x00D4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161, /* 5728 */ 0x0154, 0x00DA, 0x0155, 0x0170, 0x00FD, 0x00DD, 0x0163, 0x00B4, /* 5736 */ 0x00AD, 0x02DD, 0x02DB, 0x02C7, 0x02D8, 0x00A7, 0x00F7, 0x00B8, /* 5744 */ 0x00B0, 0x00A8, 0x02D9, 0x0171, 0x0158, 0x0159, 0x25A0, 0x00A0, /* 5752 */ 0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404, /* 5760 */ 0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408, /* 5768 */ 0x0459, 0x0409, 0x045A, 0x040A, 0x045B, 0x0093, 0x045C, 0x040C, /* 5776 */ 0x045E, 0x040E, 0x045F, 0x040F, 0x044E, 0x042E, 0x044A, 0x042A, /* 5784 */ 0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414, /* 5792 */ 0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00AB, 0x00BB, /* 5800 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438, /* 5808 */ 0x0418, 0x2563, 0x2551, 0x2557, 0x255D, 0x0439, 0x0419, 0x2510, /* 5816 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x043A, 0x041A, /* 5824 */ 0x043B, 0x041B, 0x043C, 0x041C, 0x043D, 0x041D, 0x043E, 0x041E, /* 5832 */ 0x043F, 0x2518, 0x250C, 0x2588, 0x2584, 0x041F, 0x044F, 0x2580, /* 5840 */ 0x042F, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443, /* 5848 */ 0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044C, 0x042C, 0x00B4, /* 5856 */ 0x00AD, 0x044B, 0x042B, 0x0437, 0x0417, 0x0448, 0x0428, 0x044D, /* 5864 */ 0x042D, 0x0449, 0x0429, 0x0447, 0x0427, 0xFFFF, 0x25A0, 0x00A0, /* 5872 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0131, 0x00C4, 0x00C5, /* 5880 */ 0x0130, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x015E, 0x015F, /* 5888 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x011E, 0x011F, /* 5896 */ 0x00BA, 0x00AA, 0x00CA, 0x00CB, 0x00C8, 0xFFFF, 0x00CD, 0x00CE, /* 5904 */ 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0xFFFF, /* 5912 */ 0x00D7, 0x00DA, 0x00DB, 0x00D9, 0x00EC, 0x00FF, 0x2014, 0x00B4, /* 5920 */ 0x00AD, 0x00B1, 0xFFFF, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x02DB, /* 5928 */ 0x00B0, 0x00A8, 0x02D9, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0, /* 5936 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E3, 0x00E0, 0x00C1, 0x00E7, /* 5944 */ 0x00EA, 0x00CA, 0x00E8, 0x00CE, 0x00D4, 0x00EC, 0x00C3, 0x00C2, /* 5952 */ 0x00C9, 0x00C0, 0x00C8, 0x00F4, 0x00F5, 0x00F2, 0x00DA, 0x00F9, /* 5960 */ 0x00CC, 0x00D5, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x20A7, 0x00D2, /* 5968 */ 0x00BF, 0x00D3, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 5976 */ 0x00EA, 0x00EB, 0x00E8, 0x00D0, 0x00F0, 0x00DE, 0x00C4, 0x00C5, /* 5984 */ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00FE, 0x00FB, 0x00DD, /* 5992 */ 0x00FD, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x00D2, /* 6000 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00C1, 0x00CD, 0x00D3, 0x00DA, /* 6008 */ 0x00BF, 0xFFFF, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 6016 */ 0x05E8, 0x05E9, 0x05EA, 0x00A2, 0x00A3, 0x00D9, 0x20A7, 0x00D2, /* 6024 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00C2, 0x00E0, 0x00B6, 0x00E7, /* 6032 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C0, 0x00A7, /* 6040 */ 0x00C9, 0x00C8, 0x00CA, 0x00F4, 0x00CB, 0x00CF, 0x00FB, 0x00F9, /* 6048 */ 0x00A4, 0x00D4, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x00DB, 0x0192, /* 6056 */ 0x00A6, 0x00B4, 0x00F3, 0x00FA, 0x00A8, 0x00B8, 0x00B3, 0x00AF, /* 6064 */ 0x00CE, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00BE, 0x00AB, 0x00BB, /* 6072 */ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x2205, 0x03B5, 0x2229, /* 6080 */ 0x2218, 0x00B7, 0x2022, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, /* 6088 */ 0x00B0, 0x00B7, 0x2218, 0x221A, 0x2592, 0x2500, 0x2502, 0x253C, /* 6096 */ 0x2524, 0x252C, 0x251C, 0x2534, 0x2510, 0x250C, 0x2514, 0x2518, /* 6104 */ 0x00DF, 0x221E, 0x00F8, 0x00B1, 0x00BD, 0x00BC, 0x2248, 0x00AB, /* 6112 */ 0x00BB, 0xFEF7, 0xFEF8, 0xFFFF, 0xFFFF, 0xFEFB, 0xFEFC, 0xE016, /* 6120 */ 0xFFFF, 0x00AD, 0xFE82, 0x00A3, 0x00A4, 0xFE84, 0xFFFF, 0xFFFF, /* 6128 */ 0xFE8E, 0x0628, 0x062A, 0x062B, 0x060C, 0x062C, 0x062D, 0x062E, /* 6136 */ 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, /* 6144 */ 0x0668, 0x0669, 0x06A4, 0x061B, 0x0633, 0x0634, 0x0635, 0x061F, /* 6152 */ 0x00A2, 0x0621, 0x0622, 0x0623, 0x0624, 0xFECA, 0x0626, 0x0627, /* 6160 */ 0xFE91, 0x0629, 0xFE97, 0xFE9B, 0xFE9F, 0xFEA3, 0xFEA7, 0x062F, /* 6168 */ 0x0630, 0x0631, 0x0632, 0xFEB3, 0xFEB7, 0xFEBB, 0xFEBF, 0x0637, /* 6176 */ 0x0638, 0xFECB, 0xFECF, 0x00A6, 0x00AC, 0x00F7, 0x00D7, 0x0639, /* 6184 */ 0x0640, 0xFED2, 0xFED6, 0xFEDB, 0xFEDE, 0xFEE3, 0xFEE6, 0xFEEB, /* 6192 */ 0x0648, 0x0649, 0xFEF3, 0x0636, 0xFEE2, 0xFECE, 0x063A, 0x0645, /* 6200 */ 0xFE7D, 0x0651, 0x0646, 0x0647, 0xFEEC, 0xFEF0, 0xFEF2, 0x0641, /* 6208 */ 0x0642, 0xFEF5, 0xFEF6, 0x0644, 0x0643, 0x064A, 0x25A0, 0x00A0, /* 6216 */ 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, /* 6224 */ 0x0668, 0x0669, 0x060C, 0x061B, 0x061F, 0x0622, 0x0627, 0xFE8E, /* 6232 */ 0xE016, 0x0628, 0xFE91, 0x067E, 0xFFFF, 0x0629, 0x062A, 0xFE97, /* 6240 */ 0xFFFF, 0xFFFF, 0x062B, 0xFE9B, 0x062C, 0xFE9F, 0xFFFF, 0xFFFF, /* 6248 */ 0x062D, 0xFEA3, 0x062E, 0xFEA7, 0x062F, 0xFFFF, 0x0630, 0x0631, /* 6256 */ 0xFFFF, 0x0632, 0xFFFF, 0x0633, 0xFEB3, 0x0634, 0x00AB, 0x00BB, /* 6264 */ 0xFEB7, 0x0635, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0xFEBB, /* 6272 */ 0x0636, 0xFEBF, 0x0637, 0x2563, 0x2551, 0x2557, 0x255D, 0x0638, /* 6280 */ 0x0639, 0x2510, 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, /* 6288 */ 0xFECA, 0xFECB, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, /* 6296 */ 0x256C, 0xFECC, 0x063A, 0xFECE, 0xFECF, 0xFED0, 0x0641, 0xFED3, /* 6304 */ 0x0642, 0xFED7, 0xFEDA, 0x2518, 0x250C, 0x2588, 0x2580, 0xFEDB, /* 6312 */ 0xFFFF, 0x2584, 0xFFFF, 0x0644, 0xFEDE, 0xFEE0, 0x0645, 0xFEE3, /* 6320 */ 0xFFFF, 0x0646, 0xFEE7, 0xFFFF, 0x0648, 0xFFFF, 0xFFFF, 0xFFFF, /* 6328 */ 0xFFFF, 0x0621, 0x00AD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 6336 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x0651, 0xFE7D, 0xFFFF, 0x25A0, 0x00A0, /* 6344 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0386, 0xFFFF, /* 6352 */ 0x00B7, 0x00AC, 0x00A6, 0x201B, 0x2019, 0x0388, 0x2014, 0x0389, /* 6360 */ 0x038A, 0x03AA, 0x038C, 0xFFFF, 0xFFFF, 0x038E, 0x03AB, 0x00A9, /* 6368 */ 0x038F, 0x00B2, 0x00B3, 0x03AC, 0x00A3, 0x03AD, 0x03AE, 0x03AF, /* 6376 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039A, 0x039B, 0x039C, /* 6384 */ 0x039D, 0x2563, 0x2551, 0x2557, 0x255D, 0x039E, 0x039F, 0x2510, /* 6392 */ 0x00AD, 0x00B1, 0x03C5, 0x03C6, 0x03C7, 0x00A7, 0x03C8, 0x0385, /* 6400 */ 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x0163, 0x00E1, 0x0103, 0x010D, /* 6408 */ 0x00E7, 0x0107, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 6416 */ 0x0026, 0x00E9, 0x0119, 0x00EB, 0x016F, 0x00ED, 0x00EE, 0x013E, /* 6424 */ 0x013A, 0x00DF, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 6432 */ 0x002D, 0x002F, 0x00C2, 0x00C4, 0x02DD, 0x00C1, 0x01CD, 0x010C, /* 6440 */ 0x00C7, 0x0106, 0x007C, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 6448 */ 0x02C7, 0x00C9, 0x0118, 0x00CB, 0x016E, 0x00CD, 0x00CE, 0x013D, /* 6456 */ 0x0139, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 6464 */ 0x02D8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 6472 */ 0x0068, 0x0069, 0x015B, 0x0148, 0x0111, 0x00FD, 0x0159, 0x015F, /* 6480 */ 0x0071, 0x0072, 0x0142, 0x0144, 0x0161, 0x00B8, 0x02DB, 0x00A4, /* 6488 */ 0x0105, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 6496 */ 0x0079, 0x007A, 0x015A, 0x0147, 0x0110, 0x00DD, 0x0158, 0x015E, /* 6504 */ 0x00B7, 0x0104, 0x017C, 0x0162, 0x017B, 0x00A7, 0x017E, 0x017A, /* 6512 */ 0x017D, 0x0179, 0x0141, 0x0143, 0x0160, 0x00A8, 0x00B4, 0x00D7, /* 6520 */ 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00F6, 0x0155, 0x00F3, 0x0151, /* 6528 */ 0x0051, 0x0052, 0x011A, 0x0171, 0x00FC, 0x0165, 0x00FA, 0x011B, /* 6536 */ 0x0059, 0x005A, 0x010F, 0x00D4, 0x00D6, 0x0154, 0x00D3, 0x0150, /* 6544 */ 0x0038, 0x0039, 0x010E, 0x0170, 0x00DC, 0x0164, 0x00DA, 0x009F, /* 6552 */ 0x00E7, 0x00F1, 0x00FE, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 6560 */ 0x00EC, 0x00DF, 0x00C6, 0x0024, 0x002A, 0x0029, 0x003B, 0x00D6, /* 6568 */ 0x00CC, 0x00F0, 0x003A, 0x0023, 0x00D0, 0x0027, 0x003D, 0x0022, /* 6576 */ 0x0068, 0x0069, 0x00AB, 0x00BB, 0x0060, 0x00FD, 0x007B, 0x00B1, /* 6584 */ 0x0071, 0x0072, 0x00AA, 0x00BA, 0x007D, 0x00B8, 0x005D, 0x00A4, /* 6592 */ 0x00B5, 0x00F6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 6600 */ 0x0079, 0x007A, 0x00A1, 0x00BF, 0x0040, 0x00DD, 0x005B, 0x00AE, /* 6608 */ 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x00AF, 0x00A8, 0x005C, 0x00D7, /* 6616 */ 0x00DE, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 6624 */ 0x0048, 0x0049, 0x00AD, 0x00F4, 0x007E, 0x00F2, 0x00F3, 0x00F5, /* 6632 */ 0x00E6, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 6640 */ 0x00B4, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 6648 */ 0x0059, 0x005A, 0x00B2, 0x00D4, 0x005E, 0x00D2, 0x00D3, 0x00D5, /* 6656 */ 0x03AA, 0x03AB, 0xFFFF, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 6664 */ 0x00A8, 0x0386, 0x0388, 0x0389, 0x2207, 0x038A, 0x038C, 0x038E, /* 6672 */ 0x038F, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 6680 */ 0x0385, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 6688 */ 0x00B4, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 6696 */ 0x0079, 0x007A, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, /* 6704 */ 0x00A3, 0x03AC, 0x03AD, 0x03AE, 0x0390, 0x03AF, 0x03CC, 0x03CD, /* 6712 */ 0x03B0, 0x03CE, 0x03C2, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, /* 6720 */ 0x0048, 0x0049, 0x00AD, 0x03C9, 0x03CA, 0x03CB, 0x2018, 0x2015, /* 6728 */ 0x0051, 0x0052, 0x00B1, 0x00BD, 0xFFFF, 0x00B7, 0x2019, 0x00A6, /* 6736 */ 0x0059, 0x005A, 0x00B2, 0x00A7, 0xFFFF, 0xFFFF, 0x00AB, 0x00AC, /* 6744 */ 0x0038, 0x0039, 0x00B3, 0x00A9, 0xFFFF, 0xFFFF, 0x00BB, 0x009F, /* 6752 */ 0x0020, 0xFFFF, 0x0452, 0x0453, 0x0451, 0xFFFF, 0x0455, 0x0456, /* 6760 */ 0x0457, 0x0458, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 6768 */ 0x0026, 0x0459, 0x045A, 0x045B, 0x045C, 0xFFFF, 0x045F, 0x042A, /* 6776 */ 0x2116, 0x0402, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 6784 */ 0x002D, 0x002F, 0x0403, 0x0401, 0xFFFF, 0x0405, 0x0406, 0x0407, /* 6792 */ 0x0408, 0x0409, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 6800 */ 0x040A, 0x040B, 0x040C, 0xFFFF, 0xFFFF, 0x040F, 0x044E, 0x0430, /* 6808 */ 0x0431, 0xFFFF, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 6816 */ 0x0446, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 6824 */ 0x0068, 0x0069, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, /* 6832 */ 0x0439, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, /* 6840 */ 0x0071, 0x0072, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 6848 */ 0x044F, 0xFFFF, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 6856 */ 0x0079, 0x007A, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, /* 6864 */ 0x0048, 0x0049, 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, /* 6872 */ 0x0051, 0x0052, 0x041D, 0x041E, 0x041F, 0x042F, 0x0420, 0x0421, /* 6880 */ 0x005C, 0x00A4, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 6888 */ 0x0059, 0x005A, 0x0422, 0x0423, 0x0416, 0x0412, 0x042C, 0x042B, /* 6896 */ 0x0038, 0x0039, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x009F, /* 6904 */ 0x00A2, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 6912 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00AC, 0x00A6, 0xFFFF, /* 6920 */ 0x0020, 0xFFFF, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0xFFFF, 0x010B, /* 6928 */ 0x007B, 0x00F1, 0x00C7, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 6936 */ 0x00EC, 0x00DF, 0x011E, 0x0130, 0x002A, 0x0029, 0x003B, 0x005E, /* 6944 */ 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0xFFFF, 0x010A, /* 6952 */ 0x005B, 0x00D1, 0x015F, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 6960 */ 0xFFFF, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, /* 6968 */ 0x00CC, 0x0131, 0x003A, 0x00D6, 0x015E, 0x0027, 0x003D, 0x00DC, /* 6976 */ 0x0068, 0x0069, 0x0127, 0x0109, 0x015D, 0x016D, 0xFFFF, 0x007C, /* 6984 */ 0x0071, 0x0072, 0x0125, 0x011D, 0x0135, 0x02DB, 0xFFFF, 0x00A4, /* 6992 */ 0x0079, 0x007A, 0x0126, 0x0108, 0x015C, 0x016C, 0xFFFF, 0x0040, /* 7000 */ 0x00B7, 0x00A3, 0x017C, 0x007D, 0x017B, 0x00A7, 0x005D, 0xFFFF, /* 7008 */ 0x00BD, 0x0024, 0x0124, 0x011C, 0x0134, 0x00A8, 0x00B4, 0x00D7, /* 7016 */ 0x00E7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 7024 */ 0x0048, 0x0049, 0x00AD, 0x00F4, 0x007E, 0x00F2, 0x00F3, 0x0121, /* 7032 */ 0x011F, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 7040 */ 0x0051, 0x0052, 0x0060, 0x00FB, 0x005C, 0x00F9, 0x00FA, 0xFFFF, /* 7048 */ 0x00FC, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 7056 */ 0x0059, 0x005A, 0x00B2, 0x00D4, 0x0023, 0x00D2, 0x00D3, 0x0120, /* 7064 */ 0x0038, 0x0039, 0x00B3, 0x00DB, 0x0022, 0x00D9, 0x00DA, 0x009F, /* 7072 */ 0x0020, 0x00A0, 0x060C, 0x061B, 0x061F, 0x0623, 0x0627, 0xFE8E, /* 7080 */ 0xFFFF, 0x0628, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 7088 */ 0x0026, 0xFE91, 0x067E, 0xFFFF, 0x0629, 0x062A, 0xFE97, 0xFFFF, /* 7096 */ 0xFFFF, 0x062B, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 7104 */ 0x002D, 0x002F, 0xFE9B, 0x062C, 0xFE9F, 0xFFFF, 0xFFFF, 0x062D, /* 7112 */ 0xFEA3, 0x062E, 0x0060, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 7120 */ 0x0668, 0x0669, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 7128 */ 0xFEA7, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 7136 */ 0x0068, 0x0069, 0x062F, 0xFFFF, 0x0630, 0x0631, 0xFFFF, 0x0632, /* 7144 */ 0x0071, 0x0072, 0x0633, 0xFEB3, 0x0634, 0xFEB7, 0x0635, 0xFEBB, /* 7152 */ 0x0636, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 7160 */ 0x0079, 0x007A, 0xFEBF, 0x0637, 0x0638, 0x0639, 0xFECA, 0xFECB, /* 7168 */ 0xFECC, 0x063A, 0xFECE, 0xFECF, 0xFED0, 0x0641, 0xFED3, 0x0642, /* 7176 */ 0xFED7, 0x0643, 0xFEDB, 0x007C, 0xFFFF, 0xFFFF, 0x0644, 0xFEDE, /* 7184 */ 0x0048, 0x0049, 0x00AD, 0xFFFF, 0x0645, 0xFEE3, 0xFFFF, 0x0646, /* 7192 */ 0x0051, 0x0052, 0xFEE7, 0xFFFF, 0x0648, 0xFFFF, 0xFFFF, 0xFFFF, /* 7200 */ 0x0059, 0x005A, 0x0621, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 7208 */ 0x0038, 0x0039, 0xFFFF, 0xFFFF, 0xFFFF, 0x0651, 0xFE7D, 0x009F, /* 7216 */ 0xFFFF, 0xFFFF, 0x201A, 0xFFFF, 0x201E, 0x2026, 0x2020, 0x2021, /* 7224 */ 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFF, 0xFFFF, 0xFFFF, /* 7232 */ 0xFFFF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 7240 */ 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0xFFFF, 0xFFFF, 0x0178, /* 7248 */ 0x0068, 0x0069, 0x00AB, 0x00BB, 0x007D, 0x0060, 0x00A6, 0x00B1, /* 7256 */ 0x0071, 0x0072, 0x00AA, 0x00BA, 0x00E6, 0x02DB, 0x00C6, 0x00A4, /* 7264 */ 0x0079, 0x007A, 0x00A1, 0x00BF, 0x005D, 0x0024, 0x0040, 0x00AE, /* 7272 */ 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x2014, 0x00A8, 0x00B4, 0x00D7, /* 7280 */ 0x0051, 0x0052, 0x00B9, 0x00FB, 0x005C, 0x00F9, 0x00FA, 0x00FF, /* 7288 */ 0x0059, 0x005A, 0x00B2, 0x00D4, 0x0023, 0x00D2, 0x00D3, 0x00D5, /* 7296 */ 0x00EC, 0x00DF, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 7304 */ 0x0079, 0x007A, 0x00A1, 0x00BF, 0x00D0, 0x005B, 0x00DE, 0x00AE, /* 7312 */ 0x00AC, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, /* 7320 */ 0x00BD, 0x00BE, 0x00DD, 0x00A8, 0x00AF, 0x005D, 0x00B4, 0x00D7, /* 7328 */ 0x20AC, 0xFFFF, 0x201A, 0xFFFF, 0x201E, 0x2026, 0x2020, 0x2021, /* 7336 */ 0xFFFF, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, /* 7344 */ 0xFFFF, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, /* 7352 */ 0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7, /* 7360 */ 0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B, /* 7368 */ 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 7376 */ 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C, /* 7384 */ 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, /* 7392 */ 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, /* 7400 */ 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 7408 */ 0xFFFF, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, /* 7416 */ 0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, /* 7424 */ 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407, /* 7432 */ 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7, /* 7440 */ 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457, /* 7448 */ 0x20AC, 0xFFFF, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 7456 */ 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFF, 0x017D, 0xFFFF, /* 7464 */ 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0xFFFF, 0x017E, 0x0178, /* 7472 */ 0xFFFF, 0x2030, 0xFFFF, 0x2039, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 7480 */ 0xFFFF, 0x2122, 0xFFFF, 0x203A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 7488 */ 0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 7496 */ 0x00A8, 0x00A9, 0xFFFF, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015, /* 7504 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7, /* 7512 */ 0x05E8, 0x05E9, 0x05EA, 0xFFFF, 0xFFFF, 0x200E, 0x200F, 0xFFFF, /* 7520 */ 0x20AC, 0x0660, 0x201A, 0x0661, 0x201E, 0x2026, 0x2020, 0x2021, /* 7528 */ 0x0662, 0x0663, 0x0664, 0x2039, 0x0665, 0x0666, 0x0667, 0x0668, /* 7536 */ 0x0669, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 7544 */ 0x061B, 0x2122, 0x061F, 0x203A, 0x0621, 0x0622, 0x0623, 0x0178, /* 7552 */ 0x00A0, 0x0624, 0x0625, 0x00A3, 0x00A4, 0x0626, 0x00A6, 0x00A7, /* 7560 */ 0x0627, 0x00A9, 0x0628, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x067E, /* 7568 */ 0x00B0, 0x00B1, 0x0629, 0x062A, 0x062B, 0x00B5, 0x00B6, 0x00B7, /* 7576 */ 0x062C, 0x0686, 0x062D, 0x00BB, 0x062E, 0x062F, 0x0630, 0x0631, /* 7584 */ 0x00C0, 0x0632, 0x00C2, 0x0698, 0x0633, 0x0634, 0x0635, 0x00C7, /* 7592 */ 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x0636, 0x0637, 0x00CE, 0x00CF, /* 7600 */ 0x3113, 0x0639, 0x063A, 0x0640, 0x00D4, 0x0641, 0x0642, 0x00D7, /* 7608 */ 0x0643, 0x00D9, 0x06AF, 0x00DB, 0x00DC, 0x0644, 0x0645, 0x0646, /* 7616 */ 0x00E0, 0x0647, 0x00E2, 0x0681, 0x0648, 0x0649, 0x064A, 0x00E7, /* 7624 */ 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x064B, 0x064C, 0x00EE, 0x00EF, /* 7632 */ 0x064D, 0x064E, 0x064F, 0x0650, 0x00F4, 0x0651, 0x0652, 0x00F7, /* 7640 */ 0xFFFF, 0x00F9, 0xFFFF, 0x00FB, 0x00FC, 0x200E, 0x200F, 0x00FF, /* 7648 */ 0x00A0, 0xFFFF, 0x00A2, 0x00A3, 0x00A4, 0xFFFF, 0x00A6, 0x00A7, /* 7656 */ 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, /* 7664 */ 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, /* 7672 */ 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0xFFFF, /* 7680 */ 0xFFFF, 0xFFFF, 0x00C4, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 7688 */ 0xFFFF, 0xFFFF, 0x00DC, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 7696 */ 0xFFFF, 0xFFFF, 0x00F6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 7704 */ 0xFFFF, 0x0060, 0x003A, 0x0023, 0x00A7, 0x0027, 0x003D, 0x0022, /* 7712 */ 0xFFFF, 0x00DF, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 7720 */ 0x00D6, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 7728 */ 0xFFFF, 0xFFFF, 0x00F6, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 7736 */ 0xFFFF, 0xFFFF, 0x00FC, 0x00DC, 0x002A, 0x0029, 0x003B, 0x00AC, /* 7744 */ 0xFFFF, 0xFFFF, 0x00DF, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 7752 */ 0xFFFF, 0xFFFF, 0x003A, 0x00C4, 0x00D6, 0x0027, 0x003D, 0x00E4, /* 7760 */ 0xFFFF, 0xFFFF, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 7768 */ 0xFFFF, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 7776 */ 0x0020, 0xFFFF, 0x00E2, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 7784 */ 0x00E7, 0xFFFF, 0x00E0, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 7792 */ 0x0026, 0xFFFF, 0x00EA, 0x00EB, 0xFFFF, 0xFFFF, 0x00EE, 0x00EF, /* 7800 */ 0xFFFF, 0xFFFF, 0x00B4, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 7808 */ 0x002D, 0x002F, 0x00C2, 0xFFFF, 0x00C0, 0xFFFF, 0xFFFF, 0xFFFF, /* 7816 */ 0x00C7, 0xFFFF, 0x00F9, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 7824 */ 0xFFFF, 0x00C9, 0x00CA, 0x00CB, 0xFFFF, 0x00CE, 0x00CF, 0xFFFF, /* 7832 */ 0x0048, 0x0049, 0xFFFF, 0x00F4, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 7840 */ 0x0051, 0x0052, 0xFFFF, 0x00FB, 0x00FC, 0xFFFF, 0xFFFF, 0xFFFF, /* 7848 */ 0x00B8, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 7856 */ 0x0059, 0x005A, 0xFFFF, 0x00D4, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 7864 */ 0x0038, 0x0039, 0xFFFF, 0x00DB, 0x00DC, 0x00D9, 0xFFFF, 0x009F, /* 7872 */ 0xFFFF, 0xFFFF, 0x0023, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 7880 */ 0xFFFF, 0xFFFF, 0x00A4, 0x00C5, 0x002A, 0x0029, 0x003B, 0x005E, /* 7888 */ 0xFFFF, 0xFFFF, 0x00F8, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 7896 */ 0xFFFF, 0x0060, 0x003A, 0x00C6, 0x00D8, 0x0027, 0x003D, 0x0022, /* 7904 */ 0xFFFF, 0x00FC, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 7912 */ 0xFFFF, 0xFFFF, 0x00F8, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 7920 */ 0xFFFF, 0xFFFF, 0x00E5, 0x00C5, 0x002A, 0x0029, 0x003B, 0x00AC, /* 7928 */ 0xFFFF, 0xFFFF, 0x003A, 0x00C6, 0x00D8, 0x0027, 0x003D, 0x00E6, /* 7936 */ 0xFFFF, 0xFFFF, 0x00A7, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 7944 */ 0xFFFF, 0x00E9, 0x003A, 0x00C4, 0x00D6, 0x0027, 0x003D, 0x0022, /* 7952 */ 0x00C9, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 7960 */ 0xFFFF, 0xFFFF, 0x00B0, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 7968 */ 0xFFFF, 0xFFFF, 0x00A7, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 7976 */ 0xFFFF, 0x0060, 0x003A, 0x00A3, 0x00E0, 0x0027, 0x003D, 0x0022, /* 7984 */ 0xFFFF, 0xFFFF, 0x00E9, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 7992 */ 0xFFFF, 0xFFFF, 0x00F2, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 8000 */ 0xFFFF, 0x00F9, 0x003A, 0x00A3, 0x00A7, 0x0027, 0x003D, 0x0022, /* 8008 */ 0xFFFF, 0x00EC, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 8016 */ 0xFFFF, 0xFFFF, 0x00F5, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 8024 */ 0xFFFF, 0x0060, 0x003A, 0x00C3, 0x00D5, 0x0027, 0x003D, 0x0022, /* 8032 */ 0xFFFF, 0x00E7, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 8040 */ 0x00E3, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 8048 */ 0x00C7, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 8056 */ 0xFFFF, 0xFFFF, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 8064 */ 0xFFFF, 0xFFFF, 0x0021, 0x20A7, 0x002A, 0x0029, 0x003B, 0x00AC, /* 8072 */ 0xFFFF, 0xFFFF, 0x00F1, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 8080 */ 0xFFFF, 0x0060, 0x003A, 0x00D1, 0x0040, 0x0027, 0x003D, 0x0022, /* 8088 */ 0xFFFF, 0xFFFF, 0x003A, 0x00D1, 0x0040, 0x0027, 0x003D, 0x00F1, /* 8096 */ 0xFFFF, 0xFFFF, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, /* 8104 */ 0xFFFF, 0xFFFF, 0x0024, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 8112 */ 0xFFFF, 0xFFFF, 0x0021, 0x00A3, 0x002A, 0x0029, 0x003B, 0x00AC, /* 8120 */ 0x0020, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00E1, 0xFFFF, 0xFFFF, /* 8128 */ 0xFFFF, 0xFFFF, 0x003C, 0x002E, 0x00C1, 0x0028, 0x002B, 0x0021, /* 8136 */ 0x00D0, 0x00E9, 0xFFFF, 0xFFFF, 0xFFFF, 0x00ED, 0xFFFF, 0xFFFF, /* 8144 */ 0xFFFF, 0x0024, 0x0025, 0x00C9, 0x002A, 0x0029, 0x003B, 0x0026, /* 8152 */ 0xFFFF, 0x0023, 0x2018, 0x002C, 0x00DE, 0x005F, 0x003E, 0x003F, /* 8160 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00CD, 0xFFFF, 0xFFFF, /* 8168 */ 0x007C, 0x00F0, 0x003A, 0x00C6, 0x00D6, 0x0027, 0x003D, 0x0022, /* 8176 */ 0x0068, 0x0069, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DD, 0xFFFF, 0xFFFF, /* 8184 */ 0x00B0, 0x00F6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 8192 */ 0x0079, 0x007A, 0xFFFF, 0xFFFF, 0x005B, 0x00FD, 0xFFFF, 0xFFFF, /* 8200 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x005D, 0x00A8, 0xFFFF, 0xFFFF, /* 8208 */ 0x00FE, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 8216 */ 0x0048, 0x0049, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00F3, 0xFFFF, /* 8224 */ 0x0051, 0x0052, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00FA, 0xFFFF, /* 8232 */ 0x00B4, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 8240 */ 0x0059, 0x005A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00D3, 0xFFFF, /* 8248 */ 0x0038, 0x0039, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DA, 0x007F, /* 8256 */ 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0xFFFF, /* 8264 */ 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, /* 8272 */ 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, /* 8280 */ 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2022, 0x221A, 0x2248, /* 8288 */ 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, /* 8296 */ 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, /* 8304 */ 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, /* 8312 */ 0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, /* 8320 */ 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9, /* 8328 */ 0x2591, 0x2592, 0x2593, 0x201C, 0x25A0, 0x2022, 0x201D, 0x2014, /* 8336 */ 0x2116, 0x2122, 0x00A0, 0x00BB, 0x00AE, 0x00AB, 0x00B7, 0x00A4, /* 8344 */ 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, /* 8352 */ 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x0491, 0x045E, 0x255E, /* 8360 */ 0x255F, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, /* 8368 */ 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x0490, 0x040E, 0x00A9, /* 8376 */ 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248, /* 8384 */ 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x0491, 0x255D, 0x255E, /* 8392 */ 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x0490, 0x256C, 0x00A9, /* 8400 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00CD, 0x00C4, 0x00C1, /* 8408 */ 0x00C9, 0x00E6, 0x00C6, 0x0151, 0x00F6, 0x00D3, 0x0171, 0x00DA, /* 8416 */ 0x0170, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0xE01F, /* 8424 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x0150, /* 8432 */ 0x03B1, 0x03B2, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x03BC, 0x03C4, /* 8440 */ 0x00C4, 0x0100, 0x0101, 0x00C9, 0x0104, 0x00D6, 0x00DC, 0x00E1, /* 8448 */ 0x0105, 0x010C, 0x00E4, 0x010D, 0x0106, 0x0107, 0x00E9, 0x0179, /* 8456 */ 0x017A, 0x010E, 0x00ED, 0x010F, 0x0112, 0x0113, 0x0116, 0x00F3, /* 8464 */ 0x0117, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x011A, 0x011B, 0x00FC, /* 8472 */ 0x2020, 0x00B0, 0x0118, 0x00A3, 0x00A7, 0x2219, 0x00B6, 0x00DF, /* 8480 */ 0x00AE, 0x00A9, 0x2122, 0x0119, 0x00A8, 0x2260, 0x01F5, 0x012E, /* 8488 */ 0x012F, 0x012A, 0x2264, 0x2265, 0x012B, 0x0136, 0x2202, 0x2211, /* 8496 */ 0x0142, 0x013B, 0x013C, 0x013D, 0x013E, 0x0139, 0x013A, 0x0145, /* 8504 */ 0x0146, 0x0143, 0x00AC, 0x221A, 0x0144, 0x0147, 0x0394, 0x00AB, /* 8512 */ 0x00BB, 0x2026, 0x00A0, 0x0148, 0x0150, 0x00D5, 0x0151, 0x014C, /* 8520 */ 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25C6, /* 8528 */ 0x014D, 0x0154, 0x0155, 0x0158, 0x2039, 0x203A, 0x0159, 0x0156, /* 8536 */ 0x0157, 0x0160, 0x201A, 0x201E, 0x0161, 0x015A, 0x015B, 0x00C1, /* 8544 */ 0x0164, 0x0165, 0x00CD, 0x017D, 0x017E, 0x016A, 0x00D3, 0x00D4, /* 8552 */ 0x016B, 0x016E, 0x00DA, 0x016F, 0x0170, 0x0171, 0x0172, 0x0173, /* 8560 */ 0x00DD, 0x00FD, 0x0137, 0x017B, 0x0141, 0x017C, 0x0122, 0x02C7 }; recode-3.7.15/src/flat.c0000644000175000017500000000546714374760602010437 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" static bool transform_ascii_flat (RECODE_SUBTASK subtask) { int input_char; /* current character */ int temp_char; /* look ahead character */ input_char = recode_get_byte (subtask); while (true) switch (input_char) { case EOF: SUBTASK_RETURN (subtask); case '\n': case '\t': recode_put_byte (input_char, subtask); input_char = recode_get_byte (subtask); break; case '\b': input_char = recode_get_byte (subtask); switch (input_char) { case '\'': case '`': case '^': case '"': case '~': case ',': case '_': RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); input_char = recode_get_byte (subtask); break; default: recode_put_byte ('\b', subtask); } break; case '\'': case '`': case '^': case '"': case '~': case ',': case '_': temp_char = recode_get_byte (subtask); if (temp_char == '\b') { RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); input_char = recode_get_byte (subtask); } else { recode_put_byte (input_char, subtask); input_char = temp_char; } break; default: if (!IS_ASCII (input_char)) { RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); recode_put_byte ('M', subtask); recode_put_byte ('-', subtask); input_char &= BIT_MASK (7); } if (input_char < ' ' || input_char == BIT_MASK (7)) { RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); recode_put_byte ('^', subtask); input_char ^= (1 << 6); } recode_put_byte (input_char, subtask); input_char = recode_get_byte (subtask); } } bool module_flat (RECODE_OUTER outer) { if (!recode_declare_single (outer, "ASCII-BS", "flat", outer->quality_variable_to_variable, NULL, transform_ascii_flat)) return false; return true; } void delmodule_flat (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/utf16.c0000644000175000017500000001257714374760602010456 /* Conversion of files between different charsets and surfaces. Copyright © 1996-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1996. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" static bool transform_ucs4_utf16 (RECODE_SUBTASK subtask) { unsigned value; if (recode_get_ucs4 (&value, subtask)) { if (subtask->task->byte_order_mark) recode_put_ucs2 (BYTE_ORDER_MARK, subtask); while (true) { if (value & ~BIT_MASK (16)) if (value < (1 << 16 | 1 << 20)) { /* Double UCS-2 character. */ value -= 1 << 16; recode_put_ucs2 (0xD800 | (BIT_MASK (10) & value >> 10), subtask); recode_put_ucs2 (0xDC00 | (BIT_MASK (10) & value), subtask); } else { RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); recode_put_ucs2 (REPLACEMENT_CHARACTER, subtask); } else { /* Single UCS-2 character. */ if (value >= 0xD800 && value < 0xE000) RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); recode_put_ucs2 (value, subtask); } if (!recode_get_ucs4 (&value, subtask)) break; } } SUBTASK_RETURN (subtask); } static bool transform_utf16_ucs4 (RECODE_SUBTASK subtask) { unsigned value; if (recode_get_ucs2 (&value, subtask)) { while (true) if (value >= 0xD800 && value < 0xE000) if (value < 0xDC00) { unsigned chunk; if (!recode_get_ucs2 (&chunk, subtask)) break; if (chunk >= 0xDC00 && chunk < 0xE000) { recode_put_ucs4 ((((1 << 16) + ((value - 0xD800) << 10)) | (chunk - 0xDC00)), subtask); if (!recode_get_ucs2 (&value, subtask)) break; } else { /* Discard the first chunk if the pair is invalid. */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); value = chunk; } } else { /* Discard a second chunk when presented first. */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); if (!recode_get_ucs2 (&value, subtask)) break; } else { recode_put_ucs4 (value, subtask); if (!recode_get_ucs2 (&value, subtask)) break; } } SUBTASK_RETURN (subtask); } static bool transform_ucs2_utf16 (RECODE_SUBTASK subtask) { unsigned value; /* This function does nothing, besides checking that the number of input bytes is even, and that special UTF-16 values do not appear. */ while (recode_get_ucs2 (&value, subtask)) { if (value >= 0xD800 && value < 0xE000) RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); recode_put_ucs2 (value, subtask); } SUBTASK_RETURN (subtask); } static bool transform_utf16_ucs2 (RECODE_SUBTASK subtask) { unsigned value; /* This function does almost nothing, besides checking that the input is valid UTF-16, and replacing UTF-16 extended values with the replacement character. */ if (recode_get_ucs2 (&value, subtask)) { if (subtask->task->byte_order_mark) recode_put_ucs2 (BYTE_ORDER_MARK, subtask); while (true) if (value >= 0xD800 && value < 0xE000) if (value < 0xDC00) { unsigned chunk; if (!recode_get_ucs2 (&chunk, subtask)) break; if (chunk >= 0xDC00 && chunk < 0xE000) { RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); recode_put_ucs2 (REPLACEMENT_CHARACTER, subtask); if (!recode_get_ucs2 (&value, subtask)) break; } else { /* Discard the first chunk if the pair is invalid. */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); value = chunk; } } else { /* Discard a second chunk when presented first. */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); if (!recode_get_ucs2 (&value, subtask)) break; } else { recode_put_ucs2 (value, subtask); if (!recode_get_ucs2 (&value, subtask)) break; } } SUBTASK_RETURN (subtask); } bool module_utf16 (RECODE_OUTER outer) { return recode_declare_single (outer, "ISO-10646-UCS-4", "UTF-16", outer->quality_variable_to_variable, NULL, transform_ucs4_utf16) && recode_declare_single (outer, "UTF-16", "ISO-10646-UCS-4", outer->quality_variable_to_variable, NULL, transform_utf16_ucs4) && recode_declare_single (outer, "ISO-10646-UCS-2", "UTF-16", outer->quality_variable_to_variable, NULL, transform_ucs2_utf16) && recode_declare_single (outer, "UTF-16", "ISO-10646-UCS-2", outer->quality_variable_to_variable, NULL, transform_utf16_ucs2) && recode_declare_alias (outer, "Unicode", "UTF-16") && recode_declare_alias (outer, "TF-16", "UTF-16") && recode_declare_alias (outer, "u6", "UTF-16"); } void delmodule_utf16 (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/african.c0000644000175000017500000000622714374760602011107 /* Traitement de certaines tables africaines. Copyright © 1999-2018 Progiciels Bourbeau-Pinard inc. François Pinard , 1997. */ #include "config.h" #include "common.h" #include "decsteps.h" /* Bambara, Ewondo and Fulfude. */ static const unsigned short ful_data[] = { 161, 0x0181, DONE, 162, 0x018A, DONE, 163, 0x0194, DONE, 164, 0x0198, DONE, 165, 0x01A4, DONE, 166, 0x01AC, DONE, 167, 0x01A9, DONE, 168, 0x019D, DONE, 169, 0x014A, DONE, 170, 0x0189, DONE, 172, 0x0191, DONE, 174, 0x01B3, DONE, 175, 0x0193, DONE, 177, 0x0253, DONE, 178, 0x0257, DONE, 179, 0x0263, DONE, 180, 0x0199, DONE, 181, 0x01A5, DONE, 182, 0x01AD, DONE, 183, 0x0283, DONE, 184, 0x0272, DONE, 185, 0x014B, DONE, 186, 0x0256, DONE, 188, 0x0192, DONE, 189, 0x0294, DONE, 190, 0x01B4, DONE, 191, 0x0260, DONE, 197, 0x018E, DONE, 208, 0x0190, DONE, 215, 0x0152, DONE, 216, 0x0186, DONE, 221, 0x018E, 0x0301, DONE, 222, 0x0186, 0x0301, DONE, 223, 0x01B2, DONE, 229, 0x0259, DONE, 240, 0x025B, DONE, 247, 0x0153, DONE, 248, 0x0254, DONE, 253, 0x0259, 0x0301, DONE, 254, 0x0254, 0x0301, DONE, 255, 0x028B, DONE, DONE }; /* Linguala, Sango and Wolof. */ static const unsigned short lin_data[] = { 161, 0x0190, 0x0300, DONE, 162, 0x0190, 0x0301, DONE, 163, 0x0190, 0x0302, DONE, 164, 0x0190, 0x030C, DONE, 165, 0x0186, 0x0300, DONE, 166, 0x0186, 0x0301, DONE, 167, 0x0186, 0x0302, DONE, 168, 0x019D, DONE, 169, 0x014A, DONE, 170, 0x004E, 0x0302, DONE, 172, 0x004E, 0x0308, DONE, 174, 0x01B3, DONE, 175, 0x0186, 0x030C, DONE, 177, 0x025B, 0x0300, DONE, 178, 0x025B, 0x0301, DONE, 179, 0x025B, 0x0302, DONE, 180, 0x025B, 0x030C, DONE, 181, 0x0254, 0x0300, DONE, 182, 0x0254, 0x0301, DONE, 183, 0x0254, 0x0302, DONE, 184, 0x0272, DONE, 185, 0x014B, DONE, 186, 0x006E, 0x0302, DONE, 188, 0x006E, 0x0308, DONE, 189, 0x0294, DONE, 190, 0x01B4, DONE, 191, 0x0254, 0x030C, DONE, 195, 0x01CD, DONE, 197, 0x018E, DONE, 208, 0x0190, DONE, 213, 0x01D1, DONE, 215, 0x0152, DONE, 216, 0x0186, DONE, 221, 0x011A, DONE, 222, 0x01CF, DONE, 223, 0x01D3, DONE, 227, 0x01CE, DONE, 229, 0x0259, DONE, 240, 0x025B, DONE, 245, 0x01D2, DONE, 247, 0x0153, DONE, 248, 0x0254, DONE, 253, 0x011B, DONE, 254, 0x01D0, DONE, 255, 0x01D4, DONE, DONE }; bool module_african (RECODE_OUTER outer) { return recode_declare_explode_data (outer, ful_data, "AFRFUL-102-BPI_OCIL", NULL) && recode_declare_alias (outer, "bambara", "AFRFUL-102-BPI_OCIL") && recode_declare_alias (outer, "bra", "AFRFUL-102-BPI_OCIL") && recode_declare_alias (outer, "ewondo", "AFRFUL-102-BPI_OCIL") && recode_declare_alias (outer, "fulfulde", "AFRFUL-102-BPI_OCIL") && recode_declare_explode_data (outer, lin_data, "AFRLIN-104-BPI_OCIL", NULL) && recode_declare_alias (outer, "lingala", "AFRLIN-104-BPI_OCIL") && recode_declare_alias (outer, "lin", "AFRLIN-104-BPI_OCIL") && recode_declare_alias (outer, "sango", "AFRLIN-104-BPI_OCIL") && recode_declare_alias (outer, "wolof", "AFRLIN-104-BPI_OCIL"); } void delmodule_african (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/base64.c0000644000175000017500000001661614374760602010573 /* Conversion of files between different charsets and surfaces. Copyright © 1996-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1996. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" #include "base64.h" /* Table of characters coding the 64 values. */ char base64_value_to_char[64] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', /* 0- 9 */ 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', /* 10-19 */ 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', /* 20-29 */ 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', /* 30-39 */ 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', /* 40-49 */ 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', /* 50-59 */ '8', '9', '+', '/' /* 60-63 */ }; /* Table of base64 values for first 128 characters. */ #define z -1 short base64_char_to_value[128] = { z, z, z, z, z, z, z, z, z, z, /* 0- 9 */ z, z, z, z, z, z, z, z, z, z, /* 10- 19 */ z, z, z, z, z, z, z, z, z, z, /* 20- 29 */ z, z, z, z, z, z, z, z, z, z, /* 30- 39 */ z, z, z, 62, z, z, z, 63, 52, 53, /* 40- 49 */ 54, 55, 56, 57, 58, 59, 60, 61, z, z, /* 50- 59 */ z, z, z, z, z, 0, 1, 2, 3, 4, /* 60- 69 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, /* 70- 79 */ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, /* 80- 89 */ 25, z, z, z, z, z, z, 26, 27, 28, /* 90- 99 */ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, /* 100-109 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, /* 110-119 */ 49, 50, 51, z, z, z, z, z /* 120-127 */ }; #undef z /* The following diagram shows the logical steps by which three octets get transformed into eight Base64 characters. It helps understanding shifts and masks in the transformation functions. .--------. .--------. .--------. |aaaaaabb| |bbbbcccc| |ccdddddd| `--------' `--------' `--------' 6 2 4 4 2 6 .--------+--------+--------+--------. |00aaaaaa|00bbbbbb|00cccccc|00dddddd| `--------+--------+--------+--------' .--------+--------+--------+--------. |AAAAAAAA|BBBBBBBB|CCCCCCCC|DDDDDDDD| `--------+--------+--------+--------' The octets are divided into 6 bit chunks, which are then encoded into Base64 characters. */ static bool transform_data_base64 (RECODE_SUBTASK subtask) { int counter; int character; unsigned value; counter = 0; while (true) { character = recode_get_byte (subtask); if (character == EOF) break; /* Wrap line every 76 characters. */ if (counter < MIME_LINE_LENGTH / 4) counter++; else { recode_put_byte ('\n', subtask); counter = 1; } /* Process first byte of a triplet. */ recode_put_byte (base64_value_to_char[BIT_MASK (6) & character >> 2], subtask); value = (BIT_MASK (2) & character) << 4; /* Process second byte of a triplet. */ character = recode_get_byte (subtask); if (character == EOF) { recode_put_byte (base64_value_to_char[value], subtask); recode_put_byte ('=', subtask); recode_put_byte ('=', subtask); break; } recode_put_byte (base64_value_to_char[value | (BIT_MASK (4) & character >> 4)], subtask); value = (BIT_MASK (4) & character) << 2; /* Process third byte of a triplet. */ character = recode_get_byte (subtask); if (character == EOF) { recode_put_byte (base64_value_to_char[value], subtask); recode_put_byte ('=', subtask); break; } recode_put_byte (base64_value_to_char[value | (BIT_MASK (2) & character >> 6)], subtask); recode_put_byte (base64_value_to_char[BIT_MASK (6) & character], subtask); } /* Complete last partial line. */ if (counter > 0) recode_put_byte ('\n', subtask); SUBTASK_RETURN (subtask); } static bool transform_base64_data (RECODE_SUBTASK subtask) { int counter = 0; int character; unsigned value; while (true) { /* Accept wrapping lines, reversibly if at each 76 characters. */ character = recode_get_byte (subtask); top: if (character == EOF) SUBTASK_RETURN (subtask); if (character == '\n') { character = recode_get_byte (subtask); if (character == EOF) SUBTASK_RETURN (subtask); if (counter != MIME_LINE_LENGTH / 4) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); counter = 0; goto top; } if (character == '\r') { RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); counter = 0; continue; } /* Process first byte of a quadruplet. */ counter++; if (IS_BASE64 (character)) value = base64_char_to_value[character] << 18; else { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); value = 0; } /* Process second byte of a quadruplet. */ character = recode_get_byte (subtask); if (character == EOF) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); SUBTASK_RETURN (subtask); } if (IS_BASE64 (character)) value |= base64_char_to_value[character] << 12; else RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); recode_put_byte (value >> 16, subtask); /* Process third byte of a quadruplet. */ character = recode_get_byte (subtask); if (character == EOF) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); SUBTASK_RETURN (subtask); } if (character == '=') { character = recode_get_byte (subtask); if (character != '=') RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); continue; } if (IS_BASE64 (character)) value |= base64_char_to_value[character] << 6; else RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); recode_put_byte (BIT_MASK (8) & value >> 8, subtask); /* Process fourth byte of a quadruplet. */ character = recode_get_byte (subtask); if (character == EOF) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); SUBTASK_RETURN (subtask); } if (character == '=') continue; if (IS_BASE64 (character)) value |= base64_char_to_value[character]; else RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); recode_put_byte (BIT_MASK (8) & value, subtask); } } bool module_base64 (RECODE_OUTER outer) { return recode_declare_single (outer, "data", "Base64", outer->quality_variable_to_variable, NULL, transform_data_base64) && recode_declare_single (outer, "Base64", "data", outer->quality_variable_to_variable, NULL, transform_base64_data) && recode_declare_alias (outer, "b64", "Base64") && recode_declare_alias (outer, "64", "Base64"); } void delmodule_base64 (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/recodext.h0000644000175000017500000006062114374760602011324 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2023 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the Recode Library; see the file `COPYING.LIB'. If not, see . */ /* Extended definitions, for externally written steps. */ #include "recode.h" /* Internal typedefs, to supplement those in "recode.h". */ typedef struct recode_symbol * RECODE_SYMBOL; typedef struct recode_option_list * RECODE_OPTION_LIST; typedef struct recode_single * RECODE_SINGLE; typedef struct recode_step * RECODE_STEP; typedef struct recode_alias * RECODE_ALIAS; typedef struct recode_subtask * RECODE_SUBTASK; typedef const struct recode_option_list * RECODE_CONST_OPTION_LIST; typedef const struct recode_outer * RECODE_CONST_OUTER; typedef const struct recode_step * RECODE_CONST_STEP; typedef const struct recode_alias * RECODE_CONST_ALIAS; typedef const struct recode_task * RECODE_CONST_TASK; /*--------------------------------------------------------------------------. | Return from SUBTASK, with `false' if the failure level has been reached. | `--------------------------------------------------------------------------*/ #define SUBTASK_RETURN(Subtask) \ return (Subtask)->task->error_so_far < (Subtask)->task->fail_level /*-------------------------------------------------------------------------. | Maintain maximum of ERROR and current error in SUBTASK. If the abort | | level has been reached, then return immediately as with SUBTASK_RETURN. | `-------------------------------------------------------------------------*/ #define RETURN_IF_NOGO(Error, Subtask) \ do { \ if (recode_if_nogo (Error, Subtask)) \ SUBTASK_RETURN (Subtask); \ } while (false) /* Various structure declarations. */ /*-----------------------------------------. | Outer variables for the recode library. | `-----------------------------------------*/ /* Error codes, in increasing severity. */ enum recode_error { RECODE_NO_ERROR, /* no error so far */ RECODE_NOT_CANONICAL, /* input is not exact, but equivalent */ RECODE_AMBIGUOUS_OUTPUT, /* output will be misleading */ RECODE_UNTRANSLATABLE, /* input is getting lost, while valid */ RECODE_INVALID_INPUT, /* input is getting lost, but was invalid */ RECODE_SYSTEM_ERROR, /* system returned input/output failure */ RECODE_USER_ERROR, /* library is being misused */ RECODE_INTERNAL_ERROR, /* programming botch in the library */ RECODE_MAXIMUM_ERROR /* impossible value (should be kept last) */ }; /* Structure for relating alias names to charsets and surfaces. */ struct recode_alias { const char *name; /* charset, surface or alias name */ RECODE_SYMBOL symbol; /* associated symbol */ /* If a charset, list of surfaces usually applied by default. */ struct recode_surface_list *implied_surfaces; }; /* The sole purpose of qualities is for later attributing step costs. */ enum recode_size { RECODE_1, /* roughly one byte per character */ RECODE_2, /* roughly two bytes per character */ RECODE_4, /* roughly four bytes per character */ RECODE_N /* variable number of bytes per character */ }; struct recode_quality { enum recode_size in_size : 3; /* rough byte size of input characters */ enum recode_size out_size : 3; /* rough byte size of output characters */ bool reversible : 1; /* transformation is known to be reversible */ bool slower : 1; /* transformation is slower than average */ bool faster : 1; /* transformation is faster than average */ }; /* Main variables of the initialised library. */ struct recode_outer { /* This flag asks the library to diagnose and abort itself if errors. */ bool auto_abort; /* If the external `iconv' library should be initialized and used. */ bool use_iconv; /* If we should discard untranslatable input and return an error, unless 'force' is set (see below). */ bool strict_mapping; /* If we should ignore untranslatable input altogether. */ bool force; /* charset.c */ /* --------- */ /* Known pairs (for restricting listing). */ struct recode_known_pair *pair_restriction; unsigned pair_restrictions; /* Opaque Hash_table pointer giving access to the single table holding all names and aliases for charsets, surfaces and fallback methods. */ void *alias_table; /* Unique symbols are linked into a list and counted. */ RECODE_SYMBOL symbol_list; unsigned number_of_symbols; /* Arrays of strings ready for argmatch. */ char const **argmatch_charset_array; char const **argmatch_surface_array; const char **realname_charset_array; const char **realname_surface_array; /* recode.c */ /* -------- */ /* Known single steps. */ struct recode_single *single_list; unsigned number_of_singles; /* Identity recoding table. */ const unsigned char *one_to_same; /* Preset charsets and surfaces. */ RECODE_SYMBOL data_symbol;/* special charset defining surfaces */ RECODE_SYMBOL ucs2_charset; /* UCS-2 */ RECODE_SYMBOL iconv_pivot; /* `iconv' internal UCS */ RECODE_SYMBOL crlf_surface; /* for IBM PC machines */ RECODE_SYMBOL cr_surface; /* for Macintosh machines */ /* Preset qualities, to make step initialisation simpler. */ struct recode_quality quality_byte_reversible; struct recode_quality quality_byte_to_byte; struct recode_quality quality_byte_to_ucs2; struct recode_quality quality_byte_to_variable; struct recode_quality quality_ucs2_to_byte; struct recode_quality quality_ucs2_to_variable; struct recode_quality quality_variable_to_byte; struct recode_quality quality_variable_to_ucs2; struct recode_quality quality_variable_to_variable; }; /*--------------------------. | Description of a symbol. | `--------------------------*/ enum recode_symbol_type { RECODE_NO_SYMBOL_TYPE, /* missing value */ RECODE_CHARSET, /* visible in the space of charsets */ RECODE_DATA_SURFACE /* this is a mere data surface */ }; enum recode_data_type { RECODE_NO_CHARSET_DATA, /* the charset_table field is unused */ RECODE_STRIP_DATA, /* pool pointer and array of strips */ RECODE_EXPLODE_DATA /* explode variable length data */ }; struct recode_symbol { /* Chaining of all known symbols (charsets and surfaces). */ RECODE_SYMBOL next; /* Unique ordinal for this symbol, counted from zero. */ unsigned ordinal; /* Main name. */ const char *name; /* Name to use for the iconv library, or NULL. */ const char *iconv_name; /* Type of table. */ enum recode_data_type data_type; /* Recoding table. */ void *data; /* Step for data..CHARSET transformation, if any, or NULL. */ struct recode_single *resurfacer; /* Step for CHARSET..data transformation, if any, or NULL. */ struct recode_single *unsurfacer; /* Non zero if this is an acceptable charset (not only a surface). */ enum recode_symbol_type type : 3; /* Non zero if this one should be ignored. */ bool ignore : 1; }; struct recode_surface_list { RECODE_CONST_SYMBOL surface; struct recode_surface_list *next; }; /*-------------------------------------------. | Description of a single step of recoding. | `-------------------------------------------*/ extern bool recode_interrupted; typedef bool (*Recode_init) (RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST); typedef bool (*Recode_term) (RECODE_STEP); typedef bool (*Recode_transform) (RECODE_SUBTASK); typedef bool (*Recode_fallback) (RECODE_SUBTASK, unsigned); /* The `single' structure holds data needed to decide of sequences, and is invariant over actual requests. The `step' structure holds data needed for task execution, it may take care of fallback and option variance. */ struct recode_single { /* Chaining of all known single steps. */ struct recode_single *next; /* Charset before conversion. */ RECODE_SYMBOL before; /* Charset after conversion. */ RECODE_SYMBOL after; /* Cost for this single step only. */ short conversion_cost; /* Initial value for step_table. */ void *initial_step_table; /* Recoding quality. */ struct recode_quality quality; /* Initialisation handler, to be called before step optimisation. */ Recode_init init_routine; /* Transformation handler, for doing the actual recoding work. */ Recode_transform transform_routine; /* Default fallback for the step. Merely to implement `-s' option. */ Recode_fallback fallback_routine; }; enum recode_step_type { RECODE_NO_STEP_TABLE, /* the step_table field is unused */ RECODE_BYTE_TO_BYTE, /* array of 256 bytes */ RECODE_BYTE_TO_STRING, /* array of 256 strings */ RECODE_UCS2_TO_BYTE, /* hash from ucs2 to byte */ RECODE_UCS2_TO_STRING, /* hash from ucs2 to string */ RECODE_STRING_TO_UCS2, /* hash from ucs2 to string, reversed */ RECODE_COMBINE_EXPLODE, /* raw data for combining or exploding */ RECODE_COMBINE_STEP, /* special hash for combining */ RECODE_EXPLODE_STEP /* special hash for exploding */ }; struct recode_step { /* Charset before conversion. */ RECODE_SYMBOL before; /* Charset after conversion. */ RECODE_SYMBOL after; /* Recoding quality. */ struct recode_quality quality; /* Type of table. */ enum recode_step_type step_type; /* Recoding table. */ void *step_table; void (*step_table_term_routine)(void *); /* Step specific variables. */ void *local; /* Transformation handler, for doing the actual recoding work. */ Recode_transform transform_routine; /* Fallback for the step. */ Recode_fallback fallback_routine; /* Cleanup handler, to be called after the recoding is done. */ Recode_term term_routine; }; struct recode_option_list { const char *option; RECODE_OPTION_LIST next; }; /*------------------------------------------------------------------------. | A recoding request holds, among other things, a selected path among the | | available recoding steps, it so represents a kind of recoding plan. | `------------------------------------------------------------------------*/ struct recode_request { /* A request is always associated with a recoding system. */ RECODE_OUTER outer; /* By setting the following flag, the program will echo to stderr the sequence of elementary recoding steps needed to achieve the requested recoding. */ bool verbose_flag : 1; /* In `texte' charset, some countries use double quotes to mark diaeresis, while some other prefer colons. This field contains the diaeresis character for `texte' charset. Nominally set to a double quote, it can be forced to a colon. Those are the only two acceptable values. */ char diaeresis_char; /* If producing a recoding table in source form, there will be no actual recoding done, and consequently, the optimisation of step sequence can be attempted more aggressively. If the step sequence cannot be reduced to a single step, table production will fail. */ bool make_header_flag : 1; /* For `latex/bibtex' charsets, it is often convenient to recode the diacritics only, while letting other LaTeX code using backslashes unrecoded. In the other charset, one can edit text as well as LaTeX directives. */ bool diacritics_only : 1; /* For `ibmpc' charset, characters 176 to 223 are use to draw boxes. If this field is set, while getting out of `ibmpc', ASCII characters are selected so to approximate these boxes. */ bool ascii_graphics : 1; /* Array stating the sequence of conversions. */ RECODE_STEP sequence_array; size_t sequence_allocated; short sequence_length; /* Internal variables used while scanning request text. */ char *work_string; /* buffer space for generated work strings */ size_t work_string_length; /* length of work_string */ size_t work_string_allocated; /* allocated length of work_string */ const char *scan_cursor; /* next character to be seen */ char *scanned_string; /* buffer space to scan strings */ }; /*--------------------------------------------------------------------. | A recoding text is either an external file or an in memory buffer. | `--------------------------------------------------------------------*/ /* While the recoding is going on, FILE being non-NULL has precedence over BUFFER. Moreover, if NAME is not NULL at start of recoding, this is interpreted as a request for the library to open the named file, either in read or write mode, and also to close it afterwards. Standard input or output is denoted by NAME being an empty string. If FILE is NULL in input mode, the in-memory read-only text extends from BUFFER to LIMIT. There is no clue about if the buffer has been allocated bigger. When CURSOR reaches LIMIT, there is no more data to get. If FILE is NULL in output mode, the in-memory text extends from BUFFER to CURSOR, but the buffer has been allocated until LIMIT. When CURSOR reaches LIMIT, the buffer should be reallocated bigger, as needed. */ struct recode_read_only_text { const char *name; FILE *file; const char *buffer; const char *cursor; const char *limit; }; struct recode_read_write_text { const char *name; FILE *file; char *buffer; char *cursor; char *limit; }; /* Tells how to swap the incoming pair of bytes, while reading UCS-2. */ enum recode_swap_input { RECODE_SWAP_UNDECIDED, /* the text has not been read yet */ RECODE_SWAP_NO, /* no need to swap pair of bytes */ RECODE_SWAP_YES /* should swap incoming pair of bytes */ }; /*--------------------------------------------------------------------------. | A recoding subtask associates a particular recoding step to a given input | | text, for producing a corresponding output text. It also holds error | | related statistics for the execution of that step. | `--------------------------------------------------------------------------*/ struct recode_subtask { /* Task for which this subtask is an element. */ RECODE_TASK task; /* Step being executed by this subtask. */ RECODE_CONST_STEP step; /* Current input and output. */ struct recode_read_only_text input; struct recode_read_write_text output; /* Line count and character count in last line, both zero-based. */ unsigned newline_count; unsigned character_count; }; #define GOT_CHARACTER(Subtask) \ ((Subtask)->character_count++) #define GOT_NEWLINE(Subtask) \ ((Subtask)->newline_count++, (Subtask)->character_count = 0) /*--------------------------------------------------------------------------. | A recoding task associates a sequence of steps to a given input text, for | | producing a corresponding output text. It holds an array of subtasks. | `--------------------------------------------------------------------------*/ struct recode_task { /* Associated request. */ RECODE_CONST_REQUEST request; /* Initial input and final output. */ struct recode_read_only_text input; struct recode_read_write_text output; /* Produce a byte order mark on UCS-2 output, insist for it on input. */ bool byte_order_mark : 1; /* The input UCS-2 stream might have bytes swapped (status variable). */ enum recode_swap_input swap_input : 3; /* Error processing. */ /* ----------------- */ /* At this level, there will be failure. */ enum recode_error fail_level : 5; /* At this level, task should be interrupted. */ enum recode_error abort_level : 5; /* Maximum error level met so far (status variable). */ enum recode_error error_so_far : 5; /* Step being executed when error_so_far was last set. */ RECODE_CONST_STEP error_at_step; }; /* Specialities for some function arguments. */ /* For restricting charset lists. */ struct recode_known_pair { unsigned char left; /* first character in pair */ unsigned char right; /* second character in pair */ }; /*----------------------. | Various definitions. | `----------------------*/ typedef unsigned short recode_ucs2; /* Double tables are generated as arrays of indices into a pool of strips, each strip holds STRIP_SIZE UCS-2 characters. Some memory is saved by not allowing duplicate strips in the pool. A smaller strip size yields more duplicates and so, a smaller pool, but then, tables get longer because more strip indices are needed for each table. It is difficult to predict the optimal strip size. Tests made on 1997-09-22 showed that a strip size of 4 needs 27808 bytes total, 8 needs 22656, 16 needs 23584 and 32 needs 25568, so we decided to stick to a strip size of 8. Change $STRIP_SIZE in `doc/tables.pl' if you change the value here. */ /* "Are we speaking slips, strips or bars?" (of gold-pressed latinum :-) */ #define STRIP_SIZE 8 /* An struct strip_data is a pointer to a pool of strips, and an array of 256/STRIP_SIZE offsets for the start of strips into the pool, each strip describes STRIP_SIZE UCS-2 characters. A missing character in a strip is indicated by all 16 bits set. */ struct strip_data { const recode_ucs2 *pool; const short offset[256 / STRIP_SIZE]; }; struct ucs2_to_string { recode_ucs2 code; /* UCS-2 value */ unsigned short flags; /* various flags */ const char *string; /* corresponding string */ }; /* Per module declarations. */ #ifdef __cplusplus extern "C" { #endif /* recode.c. */ #define ALLOC_SIZE(Variable, Size, Type) \ (Variable = (Type *) recode_malloc (outer, (Size))) #define ALLOC(Variable, Count, Type) \ ALLOC_SIZE (Variable, (Count) * sizeof (Type), Type) #define REALLOC(Variable, Count, Type) \ (Variable = (Type *) recode_realloc (outer, Variable, \ (Count) * sizeof(Type)), \ Variable) void recode_error (RECODE_OUTER, const char *, ...); void recode_perror (RECODE_OUTER, const char *, ...); void *recode_malloc (RECODE_OUTER, size_t); void *recode_realloc (RECODE_OUTER, void *, size_t); unsigned char *recode_invert_table (RECODE_OUTER, const unsigned char *); bool recode_complete_pairs (RECODE_OUTER, RECODE_STEP, const struct recode_known_pair *, unsigned, bool, bool); bool recode_transform_byte_to_ucs2 (RECODE_SUBTASK); bool recode_init_ucs2_to_byte (RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST); bool recode_transform_ucs2_to_byte (RECODE_SUBTASK); /* charname.c and fr-charname.c. */ const char *recode_ucs2_to_charname (int); const char *recode_ucs2_to_french_charname (int); /* charset.c. */ enum alias_find_type { SYMBOL_CREATE_CHARSET, /* charset as given, create as needed */ SYMBOL_CREATE_DATA_SURFACE, /* data surface as given, create as needed */ ALIAS_FIND_AS_CHARSET, /* disambiguate only as a charset */ ALIAS_FIND_AS_SURFACE, /* disambiguate only as a surface */ ALIAS_FIND_AS_EITHER /* disambiguate as a charset or a surface */ }; int recode_code_to_ucs2 (RECODE_CONST_SYMBOL, unsigned); bool recode_prepare_for_aliases (RECODE_OUTER); RECODE_ALIAS recode_declare_alias (RECODE_OUTER, const char *, const char *); bool recode_declare_implied_surface (RECODE_OUTER, RECODE_ALIAS, RECODE_CONST_SYMBOL); bool recode_make_argmatch_arrays (RECODE_OUTER); void recode_delete_alias (RECODE_ALIAS alias); RECODE_ALIAS recode_find_alias (RECODE_OUTER, const char *, enum alias_find_type); bool recode_find_and_report_subsets (RECODE_OUTER); bool recode_decode_known_pairs (RECODE_OUTER, const char *); /* combine.c. */ #define DONE NOT_A_CHARACTER #define ELSE BYTE_ORDER_MARK_SWAPPED bool recode_init_explode (RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST); bool recode_explode_byte_byte (RECODE_SUBTASK); bool recode_explode_ucs2_byte (RECODE_SUBTASK); bool recode_explode_byte_ucs2 (RECODE_SUBTASK); bool recode_explode_ucs2_ucs2 (RECODE_SUBTASK); bool recode_init_combine (RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST); bool recode_combine_byte_byte (RECODE_SUBTASK); bool recode_combine_ucs2_byte (RECODE_SUBTASK); bool recode_combine_byte_ucs2 (RECODE_SUBTASK); bool recode_combine_ucs2_ucs2 (RECODE_SUBTASK); /* freeze.c. */ void recode_freeze_tables (RECODE_OUTER); /* iconv.c. */ bool module_iconv (struct recode_outer *); void delmodule_iconv (struct recode_outer *); bool recode_transform_with_iconv (RECODE_SUBTASK); /* names.c. */ bool recode_should_prefer_french (void); /* mixed.c. */ bool recode_transform_c_source (RECODE_TASK); bool recode_transform_po_source (RECODE_TASK); /* outer.c. */ bool recode_reversibility (RECODE_SUBTASK, unsigned); RECODE_SINGLE recode_declare_single (RECODE_OUTER, const char *, const char *, struct recode_quality, bool (*) (RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST), bool (*) (RECODE_SUBTASK)); bool recode_declare_iconv (RECODE_OUTER, const char *, const char *); bool recode_declare_explode_data (RECODE_OUTER, const unsigned short *, const char *, const char *); bool recode_declare_strip_data (RECODE_OUTER, struct strip_data *, const char *); /* pool.c. */ extern const recode_ucs2 ucs2_data_pool[]; /* request.c. */ char *recode_edit_sequence (RECODE_REQUEST, bool); /* rfc1345.c. */ const char *recode_ucs2_to_rfc1345 (recode_ucs2); /* task.c. */ int recode_get_byte (RECODE_SUBTASK); size_t recode_get_bytes (RECODE_SUBTASK, char *, size_t); void recode_put_byte (char, RECODE_SUBTASK); void recode_put_bytes (const char *, size_t, RECODE_SUBTASK); bool recode_if_nogo (enum recode_error, RECODE_SUBTASK); bool recode_transform_byte_to_byte (RECODE_SUBTASK); bool recode_transform_byte_to_variable (RECODE_SUBTASK); /* ucs.c. */ /* Replacement character for when correctly formed character has no equivalent. It is not used for ill-formed characters, however. */ #define REPLACEMENT_CHARACTER 0xFFFD /* Device for detecting if bytes are swapped. This value should appear first in UCS-2 files. */ #define BYTE_ORDER_MARK 0xFEFF #define BYTE_ORDER_MARK_SWAPPED 0xFFFE /* Never an UCS-2 character. */ #define NOT_A_CHARACTER 0xFFFF bool recode_get_ucs2 (unsigned *, RECODE_SUBTASK); bool recode_get_ucs4 (unsigned *, RECODE_SUBTASK); bool recode_put_ucs2 (unsigned, RECODE_SUBTASK); bool recode_put_ucs4 (unsigned, RECODE_SUBTASK); #ifdef __cplusplus } #endif /* Global macros specifically for Recode. */ /* Giving a name to the ASCII character assigned to position 0. */ #define NUL '\0' #ifdef FLEX_SCANNER # define PUT_NON_DIACRITIC_BYTE(Byte, Subtask) \ if (request->diacritics_only) \ ECHO; \ else \ recode_put_byte ((Byte), (Subtask)) /* ECHO may not have a (Subtask) argument, because some ECHO without argument is generated by Flex -- yet Vern tells me it won't happen if I inhibit the rule about default copying. Happily enough, within Flex, Subtask is `subtask' quite systematically, so it may be used as a constant, here. */ # define ECHO \ do { \ const char *cursor = librecode_yytext; \ int counter = librecode_yyleng; \ for (; counter > 0; cursor++, counter--) \ recode_put_byte (*cursor, subtask); \ } while (false) #endif /* FLEX_SCANNER */ recode-3.7.15/src/ebcdic.c0000644000175000017500000002631614374760602010716 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #define ASCII "ASCII" /* Previously: #define ASCII "ASCII-BS" */ #include "config.h" #include "common.h" #include "decsteps.h" static unsigned char const ascii_to_ebcdic[256] = { 0, 1, 2, 3, 55, 45, 46, 47, /* 0 - 7 */ 22, 5, 37, 11, 12, 13, 14, 15, /* 8 - 15 */ 16, 17, 18, 19, 60, 61, 50, 38, /* 16 - 23 */ 24, 25, 63, 39, 28, 29, 30, 31, /* 24 - 31 */ 64, 79, 127, 123, 91, 108, 80, 125, /* 32 - 39 */ 77, 93, 92, 78, 107, 96, 75, 97, /* 40 - 47 */ 240, 241, 242, 243, 244, 245, 246, 247, /* 48 - 55 */ 248, 249, 122, 94, 76, 126, 110, 111, /* 56 - 63 */ 124, 193, 194, 195, 196, 197, 198, 199, /* 64 - 71 */ 200, 201, 209, 210, 211, 212, 213, 214, /* 72 - 79 */ 215, 216, 217, 226, 227, 228, 229, 230, /* 80 - 87 */ 231, 232, 233, 74, 224, 90, 95, 109, /* 88 - 95 */ 121, 129, 130, 131, 132, 133, 134, 135, /* 96 - 103 */ 136, 137, 145, 146, 147, 148, 149, 150, /* 104 - 111 */ 151, 152, 153, 162, 163, 164, 165, 166, /* 112 - 119 */ 167, 168, 169, 192, 106, 208, 161, 7, /* 120 - 127 */ 32, 33, 34, 35, 36, 21, 6, 23, /* 128 - 135 */ 40, 41, 42, 43, 44, 9, 10, 27, /* 136 - 143 */ 48, 49, 26, 51, 52, 53, 54, 8, /* 144 - 151 */ 56, 57, 58, 59, 4, 20, 62, 225, /* 152 - 159 */ 65, 66, 67, 68, 69, 70, 71, 72, /* 160 - 167 */ 73, 81, 82, 83, 84, 85, 86, 87, /* 168 - 175 */ 88, 89, 98, 99, 100, 101, 102, 103, /* 176 - 183 */ 104, 105, 112, 113, 114, 115, 116, 117, /* 184 - 191 */ 118, 119, 120, 128, 138, 139, 140, 141, /* 192 - 199 */ 142, 143, 144, 154, 155, 156, 157, 158, /* 200 - 207 */ 159, 160, 170, 171, 172, 173, 174, 175, /* 208 - 215 */ 176, 177, 178, 179, 180, 181, 182, 183, /* 216 - 223 */ 184, 185, 186, 187, 188, 189, 190, 191, /* 224 - 231 */ 202, 203, 204, 205, 206, 207, 218, 219, /* 232 - 239 */ 220, 221, 222, 223, 234, 235, 236, 237, /* 240 - 247 */ 238, 239, 250, 251, 252, 253, 254, 255, /* 248 - 255 */ }; static unsigned char const ascii_to_ebcdic_ccc[256] = { 0, 1, 2, 3, 55, 45, 46, 47, /* 0 - 7 */ 22, 5, 37, 11, 12, 13, 14, 15, /* 8 - 15 */ 16, 17, 18, 19, 60, 61, 50, 38, /* 16 - 23 */ 24, 25, 63, 39, 28, 29, 30, 31, /* 24 - 31 */ 64, 90, 127, 123, 91, 108, 80, 125, /* 32 - 39 */ 77, 93, 92, 78, 107, 96, 75, 97, /* 40 - 47 */ 240, 241, 242, 243, 244, 245, 246, 247, /* 48 - 55 */ 248, 249, 122, 94, 76, 126, 110, 111, /* 56 - 63 */ 124, 193, 194, 195, 196, 197, 198, 199, /* 64 - 71 */ 200, 201, 209, 210, 211, 212, 213, 214, /* 72 - 79 */ 215, 216, 217, 226, 227, 228, 229, 230, /* 80 - 87 */ 231, 232, 233, 74, 224, 79, 95, 109, /* 88 - 95 */ 121, 129, 130, 131, 132, 133, 134, 135, /* 96 - 103 */ 136, 137, 145, 146, 147, 148, 149, 150, /* 104 - 111 */ 151, 152, 153, 162, 163, 164, 165, 166, /* 112 - 119 */ 167, 168, 169, 192, 106, 208, 161, 7, /* 120 - 127 */ 4, 6, 8, 9, 10, 20, 21, 23, /* 128 - 135 */ 26, 27, 138, 139, 140, 141, 142, 143, /* 136 - 143 */ 32, 33, 34, 35, 36, 40, 41, 42, /* 144 - 151 */ 43, 44, 154, 155, 156, 157, 158, 159, /* 152 - 159 */ 48, 49, 51, 52, 53, 54, 56, 57, /* 160 - 167 */ 58, 59, 170, 171, 172, 173, 174, 175, /* 168 - 175 */ 176, 177, 178, 179, 180, 181, 182, 183, /* 176 - 183 */ 184, 185, 186, 187, 188, 189, 190, 191, /* 184 - 191 */ 128, 65, 66, 67, 68, 69, 70, 71, /* 192 - 199 */ 72, 73, 202, 203, 204, 205, 206, 207, /* 200 - 207 */ 144, 81, 82, 83, 84, 85, 86, 87, /* 208 - 215 */ 88, 89, 218, 219, 220, 221, 222, 223, /* 216 - 223 */ 160, 225, 98, 99, 100, 101, 102, 103, /* 224 - 231 */ 104, 105, 234, 235, 236, 237, 238, 239, /* 232 - 239 */ 112, 113, 114, 115, 116, 117, 118, 119, /* 240 - 247 */ 120, 62, 250, 251, 252, 253, 254, 255, /* 248 - 255 */ }; /* This is almost identical to GNU dd's "ibm" table. In dd's "ibm" table, both 91 and 213 recode to 173, both 93 and 229 recode to 189, and no character recodes to 74 or 106. I suspect two errors in there. So, I arbitrarily choose to recode 213 by 74 and 229 by 106. */ static unsigned char const ascii_to_ebcdic_ibm[256] = { 0, 1, 2, 3, 55, 45, 46, 47, /* 0 - 7 */ 22, 5, 37, 11, 12, 13, 14, 15, /* 8 - 15 */ 16, 17, 18, 19, 60, 61, 50, 38, /* 16 - 23 */ 24, 25, 63, 39, 28, 29, 30, 31, /* 24 - 31 */ 64, 90, 127, 123, 91, 108, 80, 125, /* 32 - 39 */ 77, 93, 92, 78, 107, 96, 75, 97, /* 40 - 47 */ 240, 241, 242, 243, 244, 245, 246, 247, /* 48 - 55 */ 248, 249, 122, 94, 76, 126, 110, 111, /* 56 - 63 */ 124, 193, 194, 195, 196, 197, 198, 199, /* 64 - 71 */ 200, 201, 209, 210, 211, 212, 213, 214, /* 72 - 79 */ 215, 216, 217, 226, 227, 228, 229, 230, /* 80 - 87 */ 231, 232, 233, 173, 224, 189, 95, 109, /* 88 - 95 */ 121, 129, 130, 131, 132, 133, 134, 135, /* 96 - 103 */ 136, 137, 145, 146, 147, 148, 149, 150, /* 104 - 111 */ 151, 152, 153, 162, 163, 164, 165, 166, /* 112 - 119 */ 167, 168, 169, 192, 79, 208, 161, 7, /* 120 - 127 */ 32, 33, 34, 35, 36, 21, 6, 23, /* 128 - 135 */ 40, 41, 42, 43, 44, 9, 10, 27, /* 136 - 143 */ 48, 49, 26, 51, 52, 53, 54, 8, /* 144 - 151 */ 56, 57, 58, 59, 4, 20, 62, 225, /* 152 - 159 */ 65, 66, 67, 68, 69, 70, 71, 72, /* 160 - 167 */ 73, 81, 82, 83, 84, 85, 86, 87, /* 168 - 175 */ 88, 89, 98, 99, 100, 101, 102, 103, /* 176 - 183 */ 104, 105, 112, 113, 114, 115, 116, 117, /* 184 - 191 */ 118, 119, 120, 128, 138, 139, 140, 141, /* 192 - 199 */ 142, 143, 144, 154, 155, 156, 157, 158, /* 200 - 207 */ 159, 160, 170, 171, 172, 74, 174, 175, /* 208 - 215 */ 176, 177, 178, 179, 180, 181, 182, 183, /* 216 - 223 */ 184, 185, 186, 187, 188, 106, 190, 191, /* 224 - 231 */ 202, 203, 204, 205, 206, 207, 218, 219, /* 232 - 239 */ 220, 221, 222, 223, 234, 235, 236, 237, /* 240 - 247 */ 238, 239, 250, 251, 252, 253, 254, 255, /* 248 - 255 */ }; static bool init_ascii_ebcdic (RECODE_STEP step, RECODE_CONST_REQUEST request _GL_UNUSED, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; step->step_type = RECODE_BYTE_TO_BYTE; /* The cast is a way to silently discard the const. */ step->step_table = (void *) ascii_to_ebcdic; return true; } static bool init_ebcdic_ascii (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; if (step->step_table = recode_invert_table (request->outer, ascii_to_ebcdic), step->step_table) { step->step_type = RECODE_BYTE_TO_BYTE; step->step_table_term_routine = free; return true; } else return false; } static bool init_ascii_ebcdic_ccc (RECODE_STEP step, RECODE_CONST_REQUEST request _GL_UNUSED, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; step->step_type = RECODE_BYTE_TO_BYTE; /* The cast is a way to silently discard the const. */ step->step_table = (void *) ascii_to_ebcdic_ccc; return true; } static bool init_ebcdic_ccc_ascii (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; if (step->step_table = recode_invert_table (request->outer, ascii_to_ebcdic_ccc), step->step_table) { step->step_type = RECODE_BYTE_TO_BYTE; step->step_table_term_routine = free; return true; } else return false; } static bool init_ascii_ebcdic_ibm (RECODE_STEP step, RECODE_CONST_REQUEST request _GL_UNUSED, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; step->step_type = RECODE_BYTE_TO_BYTE; /* The cast is a way to silently discard the const. */ step->step_table = (void *) ascii_to_ebcdic_ibm; return true; } static bool init_ebcdic_ibm_ascii (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; if (step->step_table = recode_invert_table (request->outer, ascii_to_ebcdic_ibm), step->step_table) { step->step_type = RECODE_BYTE_TO_BYTE; step->step_table_term_routine = free; return true; } else return false; } bool module_ebcdic (RECODE_OUTER outer) { return recode_declare_single (outer, ASCII, "EBCDIC", outer->quality_byte_reversible, init_ascii_ebcdic, recode_transform_byte_to_byte) && recode_declare_single (outer, "EBCDIC", ASCII, outer->quality_byte_reversible, init_ebcdic_ascii, recode_transform_byte_to_byte) && recode_declare_single (outer, ASCII, "EBCDIC-CCC", outer->quality_byte_reversible, init_ascii_ebcdic_ccc, recode_transform_byte_to_byte) && recode_declare_single (outer, "EBCDIC-CCC", ASCII, outer->quality_byte_reversible, init_ebcdic_ccc_ascii, recode_transform_byte_to_byte) && recode_declare_single (outer, ASCII, "EBCDIC-IBM", outer->quality_byte_reversible, init_ascii_ebcdic_ibm, recode_transform_byte_to_byte) && recode_declare_single (outer, "EBCDIC-IBM", ASCII, outer->quality_byte_reversible, init_ebcdic_ibm_ascii, recode_transform_byte_to_byte); } void delmodule_ebcdic (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/charname.h0000644000175000017500000032021114765654535011272 /* DO NOT MODIFY THIS FILE! It was generated by `recode/tables.py'. */ /* Conversion of files between different charsets and surfaces. Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . Suite 330, Boston, MA 02111-1307, USA. */ #define NUMBER_OF_SINGLES 252 #define MAX_CHARNAME_LENGTH 56 #define NUMBER_OF_CHARNAMES 1827 static const char *const word[794] = { "letter", /* \001 */ "latin", /* \002 */ "with", /* \003 */ "small", /* \004 */ "capital", /* \005 */ "arabic", /* \006 */ "and", /* \007 */ "form", /* \010 */ "cyrillic", /* \011 */ "greek", /* \012 */ "acute", /* \013 */ "katakana", /* \014 */ "dot", /* \015 */ "above", /* \016 */ "hiragana", /* \017 */ "below", /* \020 */ "box", /* \021 */ "drawings", /* \022 */ "o", /* \023 */ "u", /* \024 */ "digit", /* \025 */ "circled", /* \026 */ "circumflex", /* \027 */ "a", /* \030 */ "light", /* \031 */ "heavy", /* \032 */ "e", /* \033 */ "left", /* \034 */ "right", /* \035 */ "sign", /* \036 */ "diaeresis", /* \037 */ "parenthesized", /* \040 */ "i", /* \041 */ "tilde", /* \042 */ "bopomofo", /* \043 */ "final", /* \044 */ "caron", /* \045 */ "mark", /* \046 */ "grave", /* \047 */ "macron", /* \050 */ "isolated", /* \051 */ "line", /* \052 */ "up", /* \053 */ "down", /* \054 */ "numeral", /* \055 */ "hebrew", /* \056 */ "breve", /* \057 */ "cedilla", /* \060 */ "n", /* \061 */ "roman", /* \062 */ "vertical", /* \063 */ "double", /* \064 */ "hook", /* \065 */ "horizontal", /* \066 */ "white", /* \067 */ "s", /* \070 */ "black", /* \071 */ "medial", /* \072 */ "alef", /* \073 */ "full", /* \074 */ "g", /* \075 */ "initial", /* \076 */ "l", /* \077 */ "non-spacing", /* \100 */ "stop", /* \101 */ "y", /* \102 */ "d", /* \103 */ "h", /* \104 */ "horn", /* \105 */ "t", /* \106 */ "z", /* \107 */ "of", /* \110 */ "to", /* \111 */ "bracket", /* \112 */ "c", /* \113 */ "ligature", /* \114 */ "one", /* \115 */ "r", /* \116 */ "(character", /* \117 */ "superscript", /* \120 */ "w", /* \121 */ "fraction", /* \122 */ "k", /* \123 */ "stroke", /* \124 */ "two", /* \125 */ "square", /* \126 */ "subscript", /* \127 */ "three", /* \130 */ "vulgar", /* \131 */ "(iso-ir-103", /* \132 */ "number", /* \133 */ "ogonek", /* \134 */ "arrow", /* \135 */ "b", /* \136 */ "lam", /* \137 */ "quotation", /* \140 */ "ring", /* \141 */ "dash", /* \142 */ "five", /* \143 */ "four", /* \144 */ "m", /* \145 */ "space", /* \146 */ "accent", /* \147 */ "seven", /* \150 */ "x", /* \151 */ "angle", /* \152 */ "arabic-indic", /* \153 */ "eastern", /* \154 */ "eight", /* \155 */ "equal", /* \156 */ "half", /* \157 */ "hamza", /* \160 */ "ideograph", /* \161 */ "nine", /* \162 */ "p", /* \163 */ "part)", /* \164 */ "six", /* \165 */ "triangle", /* \166 */ "v", /* \167 */ "iota", /* \170 */ "j", /* \171 */ "f", /* \172 */ "lower", /* \173 */ "ocr", /* \174 */ "single", /* \175 */ "suit", /* \176 */ "teh", /* \177 */ "character", /* \200 */ "ideographic", /* \201 */ "kaf", /* \202 */ "operator", /* \203 */ "upsilon", /* \204 */ "(macedonian)", /* \205 */ "ae", /* \206 */ "block", /* \207 */ "circle", /* \210 */ "control", /* \211 */ "end", /* \212 */ "fill", /* \213 */ "or", /* \214 */ "parenthesis", /* \215 */ "pe", /* \216 */ "prime", /* \217 */ "q", /* \220 */ "triple", /* \221 */ "ya", /* \222 */ "yeh", /* \223 */ "yu", /* \224 */ "zero", /* \225 */ "ain", /* \226 */ "beh", /* \227 */ "dad", /* \230 */ "dasia", /* \231 */ "device", /* \232 */ "en", /* \233 */ "feh", /* \234 */ "ghain", /* \235 */ "hah", /* \236 */ "heh", /* \237 */ "integral", /* \240 */ "iteration", /* \241 */ "jeem", /* \242 */ "ka", /* \243 */ "khah", /* \244 */ "left-pointing", /* \245 */ "meem", /* \246 */ "middle", /* \247 */ "noon", /* \250 */ "not", /* \251 */ "psili", /* \252 */ "qaf", /* \253 */ "right-pointing", /* \254 */ "sad", /* \255 */ "seen", /* \256 */ "sheen", /* \257 */ "start", /* \260 */ "tabulation", /* \261 */ "tah", /* \262 */ "theh", /* \263 */ "upper", /* \264 */ "zah", /* \265 */ "(icelandic)", /* \266 */ "(serbocroatian)", /* \267 */ "alpha", /* \270 */ "area", /* \271 */ "be", /* \272 */ "corner", /* \273 */ "de", /* \274 */ "diamond", /* \275 */ "em", /* \276 */ "epsilon", /* \277 */ "eta", /* \300 */ "ezh", /* \301 */ "ghe", /* \302 */ "greater-than", /* \303 */ "ha", /* \304 */ "ie", /* \305 */ "inverted", /* \306 */ "koppa", /* \307 */ "lenticular", /* \310 */ "less-than", /* \311 */ "low", /* \312 */ "madda", /* \313 */ "mu", /* \314 */ "nu", /* \315 */ "omega", /* \316 */ "omicron", /* \317 */ "perispomeni", /* \320 */ "pi", /* \321 */ "pneumata", /* \322 */ "quadruple", /* \323 */ "reversed", /* \324 */ "separator", /* \325 */ "set", /* \326 */ "short", /* \327 */ "sound", /* \330 */ "te", /* \331 */ "ten", /* \332 */ "tu", /* \333 */ "varia", /* \334 */ "wa", /* \335 */ "waw", /* \336 */ "yo", /* \337 */ "ze", /* \340 */ "(iso-10646-1dis", /* \341 */ "(iso-ir-149", /* \342 */ "(iso-ir-18", /* \343 */ "(iso-ir-55", /* \344 */ "beta", /* \345 */ "comma", /* \346 */ "dal", /* \347 */ "degree", /* \350 */ "diagonal", /* \351 */ "eighth", /* \352 */ "eighths", /* \353 */ "eleven", /* \354 */ "eng", /* \355 */ "equals", /* \356 */ "er", /* \357 */ "exclamation", /* \360 */ "feed", /* \361 */ "fifths", /* \362 */ "he", /* \363 */ "index", /* \364 */ "introducer", /* \365 */ "katakana-hiragana", /* \366 */ "ke", /* \367 */ "maksura", /* \370 */ "marbuta", /* \371 */ "minus", /* \372 */ "music", /* \373 */ "no", /* \374 */ "partial", /* \375\001 */ "plus", /* \375\002 */ "question", /* \375\003 */ "reh", /* \375\004 */ "rightwards", /* \375\005 */ "shade", /* \375\006 */ "sigma", /* \375\007 */ "soft", /* \375\010 */ "solidus", /* \375\011 */ "string", /* \375\012 */ "telephone", /* \375\013 */ "thal", /* \375\014 */ "twelve", /* \375\015 */ "unit", /* \375\016 */ "ve", /* \375\017 */ "voiced", /* \375\020 */ "zain", /* \375\021 */ "(byelorussian)", /* \375\022 */ "(iso-ir-38", /* \375\023 */ "(iso-ir-8-1", /* \375\024 */ "(lappish)", /* \375\025 */ "(ukrainian)", /* \375\026 */ "201)", /* \375\027 */ "204)", /* \375\030 */ "206)", /* \375\031 */ "acknowledge", /* \375\032 */ "all", /* \375\033 */ "apostrophe", /* \375\034 */ "approximately", /* \375\035 */ "asterisk", /* \375\036 */ "ba", /* \375\037 */ "bar", /* \375\040 */ "barred", /* \375\041 */ "bi", /* \375\042 */ "big", /* \375\043 */ "bo", /* \375\044 */ "break", /* \375\045 */ "bu", /* \375\046 */ "bullet", /* \375\047 */ "byelorussian-ukrainian", /* \375\050 */ "cancel", /* \375\051 */ "ceiling", /* \375\052 */ "che", /* \375\053 */ "check", /* \375\054 */ "chi", /* \375\055 */ "club", /* \375\056 */ "command", /* \375\057 */ "compatibility", /* \375\060 */ "copyright", /* \375\061 */ "crosshatch", /* \375\062 */ "curly", /* \375\063 */ "da", /* \375\064 */ "dagger", /* \375\065 */ "delta", /* \375\066 */ "di", /* \375\067 */ "digamma", /* \375\070 */ "ditto", /* \375\071 */ "dje", /* \375\072 */ "do", /* \375\073 */ "down-pointing", /* \375\074 */ "du", /* \375\075 */ "dze", /* \375\076 */ "dzhe", /* \375\077 */ "east", /* \375\100 */ "ef", /* \375\101 */ "el", /* \375\102 */ "ellipsis", /* \375\103 */ "es", /* \375\104 */ "escape", /* \375\105 */ "eth", /* \375\106 */ "face", /* \375\107 */ "fifty", /* \375\110 */ "fita", /* \375\111 */ "floor", /* \375\112 */ "fork", /* \375\113 */ "ga", /* \375\114 */ "gamma", /* \375\115 */ "ge", /* \375\116 */ "gi", /* \375\117 */ "gje", /* \375\120 */ "go", /* \375\121 */ "gu", /* \375\122 */ "guarded", /* \375\123 */ "hard", /* \375\124 */ "heart", /* \375\125 */ "here", /* \375\126 */ "hi", /* \375\127 */ "high-reversed-9", /* \375\130 */ "ho", /* \375\131 */ "hu", /* \375\132 */ "hyphen", /* \375\133 */ "ij", /* \375\134 */ "indicator", /* \375\135 */ "inverse", /* \375\136 */ "io", /* \375\137 */ "izhitsa", /* \375\140 */ "je", /* \375\141 */ "kappa", /* \375\142 */ "ki", /* \375\143 */ "kje", /* \375\144 */ "ko", /* \375\145 */ "ku", /* \375\146 */ "lamda", /* \375\147 */ "leftwards", /* \375\150 */ "lje", /* \375\151 */ "logical", /* \375\152 */ "low-9", /* \375\153 */ "ma", /* \375\154 */ "me", /* \375\155 */ "medium", /* \375\156 */ "mem", /* \375\157 */ "meridiam", /* \375\160 */ "message", /* \375\161 */ "mi", /* \375\162 */ "mo", /* \375\163 */ "much", /* \375\164 */ "n-ary", /* \375\165 */ "na", /* \375\166 */ "ne", /* \375\167 */ "next", /* \375\170 */ "ni", /* \375\171 */ "nje", /* \375\172 */ "north", /* \375\173 */ "note", /* \375\174 */ "notes", /* \375\175 */ "nun", /* \375\176 */ "oe", /* \375\177 */ "oi", /* \375\200 */ "ordinal", /* \375\201 */ "pa", /* \375\202 */ "phi", /* \375\203 */ "po", /* \375\204 */ "pointing", /* \375\205 */ "private", /* \375\206 */ "psi", /* \375\207 */ "pu", /* \375\210 */ "quarter", /* \375\211 */ "ra", /* \375\212 */ "re", /* \375\213 */ "rectangle", /* \375\214 */ "reverse", /* \375\215 */ "rho", /* \375\216 */ "ri", /* \375\217 */ "ro", /* \375\220 */ "ru", /* \375\221 */ "sa", /* \375\222 */ "sampi", /* \375\223 */ "se", /* \375\224 */ "selected", /* \375\225 */ "semicolon", /* \375\226 */ "sha", /* \375\227 */ "shadda", /* \375\230 */ "sharp", /* \375\231 */ "shcha", /* \375\232 */ "shell", /* \375\233 */ "shift", /* \375\234 */ "si", /* \375\235 */ "single-shift", /* \375\236 */ "smiling", /* \375\237 */ "so", /* \375\240 */ "south", /* \375\241 */ "spade", /* \375\242 */ "star", /* \375\243 */ "stigma", /* \375\244 */ "su", /* \375\245 */ "subset", /* \375\246 */ "superset", /* \375\247 */ "ta", /* \375\250 */ "tau", /* \375\251 */ "text", /* \375\252 */ "theta", /* \375\253 */ "thorn", /* \375\254 */ "ti", /* \375\255 */ "tortoise", /* \375\256 */ "transmission", /* \375\257 */ "tsadi", /* \375\260 */ "tse", /* \375\261 */ "tshe", /* \375\262 */ "ukrainian", /* \375\263 */ "up-pointing", /* \375\264 */ "upturn", /* \375\265 */ "use", /* \375\266 */ "vu", /* \375\267 */ "we", /* \375\270 */ "west", /* \375\271 */ "wi", /* \375\272 */ "wo", /* \375\273 */ "xi", /* \375\274 */ "yat", /* \375\275 */ "yeru", /* \375\276 */ "yi", /* \375\277 */ "yus", /* \375\300 */ "za", /* \375\301 */ "zeta", /* \375\302 */ "zhe", /* \375\303 */ "zi", /* \375\304 */ "zo", /* \375\305 */ "zu", /* \375\306 */ "(ack)", /* \375\307 */ "(apc)", /* \375\310 */ "(bel)", /* \375\311 */ "(bph)", /* \375\312 */ "(bs)", /* \375\313 */ "(can)", /* \375\314 */ "(cch)", /* \375\315 */ "(cr)", /* \375\316 */ "(csi)", /* \375\317 */ "(dc1)", /* \375\320 */ "(dc2)", /* \375\321 */ "(dc3)", /* \375\322 */ "(dc4)", /* \375\323 */ "(dcs)", /* \375\324 */ "(del)", /* \375\325 */ "(dle)", /* \375\326 */ "(em)", /* \375\327 */ "(enq)", /* \375\330 */ "(eot)", /* \375\331 */ "(epa)", /* \375\332 */ "(esa)", /* \375\333 */ "(esc)", /* \375\334 */ "(etb)", /* \375\335 */ "(etx)", /* \375\336 */ "(ff)", /* \375\337 */ "(german)", /* \375\340 */ "(greenlandic)", /* \375\341 */ "(hop)", /* \375\342 */ "(ht)", /* \375\343 */ "(htj)", /* \375\344 */ "(hts)", /* \375\345 */ "(ibm437", /* \375\346 */ "(ibm868", /* \375\347 */ "(ind)", /* \375\350 */ "(is1)", /* \375\351 */ "(is2)", /* \375\352 */ "(is3)", /* \375\353 */ "(is4)", /* \375\354 */ "(iso-ir-128", /* \375\355 */ "(iso-ir-158", /* \375\356 */ "(iso-ir-70", /* \375\357 */ "(iso-ir-83", /* \375\360 */ "(lf)", /* \375\361 */ "(mnemonic)", /* \375\362 */ "(mw)", /* \375\363 */ "(nak)", /* \375\364 */ "(nbh)", /* \375\365 */ "(nel)", /* \375\366 */ "(nul)", /* \375\367 */ "(osc)", /* \375\370 */ "(pad)", /* \375\371 */ "(pld)", /* \375\372 */ "(plu)", /* \375\373 */ "(pm)", /* \375\374 */ "(pu1)", /* \375\375 */ "(pu2)", /* \375\376 */ "(ri)", /* \375\377 */ "(sci)", /* \376\001 */ "(sgci)", /* \376\002 */ "(si)", /* \376\003 */ "(so)", /* \376\004 */ "(soh)", /* \376\005 */ "(sos)", /* \376\006 */ "(spa)", /* \376\007 */ "(ss2)", /* \376\010 */ "(ss3)", /* \376\011 */ "(ssa)", /* \376\012 */ "(st)", /* \376\013 */ "(sts)", /* \376\014 */ "(stx)", /* \376\015 */ "(sub)", /* \376\016 */ "(syn)", /* \376\017 */ "(tonos", /* \376\020 */ "(vt)", /* \376\021 */ "(vts)", /* \376\022 */ "0267)", /* \376\023 */ "0268)", /* \376\024 */ "0269)", /* \376\025 */ "0294)", /* \376\026 */ "032/032/038/046)", /* \376\027 */ "032/032/042/164)", /* \376\030 */ "032/032/042/165)", /* \376\031 */ "064)", /* \376\032 */ "096)", /* \376\033 */ "124)", /* \376\034 */ "142)", /* \376\035 */ "144)", /* \376\036 */ "159)", /* \376\037 */ "192)", /* \376\040 */ "193)", /* \376\041 */ "194)", /* \376\042 */ "195)", /* \376\043 */ "196)", /* \376\044 */ "197)", /* \376\045 */ "198)", /* \376\046 */ "199)", /* \376\047 */ "200)", /* \376\050 */ "202)", /* \376\051 */ "203)", /* \376\052 */ "217)", /* \376\053 */ "37)", /* \376\054 */ "38)", /* \376\055 */ "39)", /* \376\056 */ "92)", /* \376\057 */ "99)", /* \376\060 */ "account", /* \376\061 */ "accute", /* \376\062 */ "ai", /* \376\063 */ "almost", /* \376\064 */ "amount", /* \376\065 */ "ampersand", /* \376\066 */ "an", /* \376\067 */ "ang", /* \376\070 */ "angstroem", /* \376\071 */ "ante", /* \376\072 */ "application", /* \376\073 */ "arc", /* \376\074 */ "as", /* \376\075 */ "asymptotically", /* \376\076 */ "at", /* \376\077 */ "au", /* \376\100 */ "ayin", /* \376\101 */ "backspace", /* \376\102 */ "backward", /* \376\103 */ "ballot", /* \376\104 */ "bank", /* \376\105 */ "because", /* \376\106 */ "bell", /* \376\107 */ "bet", /* \376\110 */ "bottom", /* \376\111 */ "branch", /* \376\112 */ "broken", /* \376\113 */ "bullseye", /* \376\114 */ "by", /* \376\115 */ "care", /* \376\116 */ "caret", /* \376\117 */ "carriage", /* \376\120 */ "cent", /* \376\121 */ "centigrade", /* \376\122 */ "ch", /* \376\123 */ "chair", /* \376\124 */ "closing", /* \376\125 */ "colon", /* \376\126 */ "commercial", /* \376\127 */ "containing", /* \376\130 */ "contains", /* \376\131 */ "contour", /* \376\132 */ "corners", /* \376\133 */ "cross", /* \376\134 */ "currency", /* \376\135 */ "customer", /* \376\136 */ "dalet", /* \376\137 */ "damma", /* \376\140 */ "dammatan", /* \376\141 */ "dark", /* \376\142 */ "datalink", /* \376\143 */ "delete", /* \376\144 */ "dialytika)", /* \376\145 */ "differential", /* \376\146 */ "division", /* \376\147 */ "dollar", /* \376\150 */ "dotless", /* \376\151 */ "downwards", /* \376\152 */ "dutch", /* \376\153 */ "eh", /* \376\154 */ "ei", /* \376\155 */ "eighteen", /* \376\156 */ "element", /* \376\157 */ "empty", /* \376\160 */ "enquiry", /* \376\161 */ "exists", /* \376\162 */ "fahrenheit", /* \376\163 */ "fatha", /* \376\164 */ "fathatan", /* \376\165 */ "female", /* \376\166 */ "feminine", /* \376\167 */ "ff", /* \376\170 */ "ffi", /* \376\171 */ "ffl", /* \376\172 */ "fi", /* \376\173 */ "fifteen", /* \376\174 */ "fifth", /* \376\175 */ "file", /* \376\176 */ "fl", /* \376\177 */ "flat", /* \376\200 */ "for", /* \376\201 */ "forward", /* \376\202 */ "four-per-em", /* \376\203 */ "fourteen", /* \376\204 */ "gaf", /* \376\205 */ "geta", /* \376\206 */ "gimel", /* \376\207 */ "gn", /* \376\210 */ "graphic", /* \376\211 */ "group", /* \376\212 */ "guilder", /* \376\213 */ "hair", /* \376\214 */ "heading", /* \376\215 */ "het", /* \376\216 */ "high", /* \376\217 */ "house", /* \376\220 */ "hyphen-minus", /* \376\221 */ "identical", /* \376\222 */ "identification", /* \376\223 */ "idle", /* \376\224 */ "image", /* \376\225 */ "in", /* \376\226 */ "increment", /* \376\227 */ "infinity", /* \376\230 */ "intersection", /* \376\231 */ "iu", /* \376\232 */ "join", /* \376\233 */ "justification", /* \376\234 */ "kasra", /* \376\235 */ "kasratan", /* \376\236 */ "korean", /* \376\237 */ "kra", /* \376\240 */ "lamed", /* \376\241 */ "lazy", /* \376\242 */ "leader", /* \376\243 */ "lira", /* \376\244 */ "long", /* \376\245 */ "lozenge", /* \376\246 */ "male", /* \376\247 */ "maltese", /* \376\250 */ "masculine", /* \376\251 */ "member", /* \376\252 */ "micro", /* \376\253 */ "midline", /* \376\254 */ "mille", /* \376\255 */ "minus-or-plus", /* \376\256 */ "modifier", /* \376\257 */ "multiplication", /* \376\260 */ "nabla", /* \376\261 */ "natural", /* \376\262 */ "negative", /* \376\263 */ "ng", /* \376\264 */ "nineteen", /* \376\265 */ "no-break", /* \376\266 */ "null", /* \376\267 */ "numero", /* \376\270 */ "octet", /* \376\271 */ "ohm", /* \376\272 */ "open", /* \376\273 */ "operating", /* \376\274 */ "orthogonal", /* \376\275 */ "ou", /* \376\276 */ "out", /* \376\277 */ "overline", /* \376\300 */ "padding", /* \376\301 */ "parallel", /* \376\302 */ "peh", /* \376\303 */ "per", /* \376\304 */ "percent", /* \376\305 */ "period", /* \376\306 */ "permitted", /* \376\307 */ "peseta", /* \376\310 */ "pilcrow", /* \376\311 */ "plus-minus", /* \376\312 */ "post", /* \376\313 */ "postal", /* \376\314 */ "pound", /* \376\315 */ "preceded", /* \376\316 */ "prescription", /* \376\317 */ "preset", /* \376\320 */ "privacy", /* \376\321 */ "product", /* \376\322 */ "program", /* \376\323 */ "prolonged", /* \376\324 */ "proportion", /* \376\325 */ "proportional", /* \376\326 */ "qof", /* \376\327 */ "quarters", /* \376\330 */ "ratio", /* \376\331 */ "rays", /* \376\332 */ "record", /* \376\333 */ "recorder", /* \376\334 */ "recording", /* \376\335 */ "reference", /* \376\336 */ "registered", /* \376\337 */ "resh", /* \376\340 */ "return", /* \376\341 */ "root", /* \376\342 */ "rounded", /* \376\343 */ "samekh", /* \376\344 */ "section", /* \376\345 */ "semi-voiced", /* \376\346 */ "sequence", /* \376\347 */ "service", /* \376\350 */ "seventeen", /* \376\351 */ "sh", /* \376\352 */ "shin", /* \376\353 */ "six-per-em", /* \376\354 */ "sixteen", /* \376\355 */ "sixteenth", /* \376\356 */ "sixth", /* \376\357 */ "sixths", /* \376\360 */ "slash", /* \376\361 */ "st", /* \376\362 */ "standard", /* \376\363 */ "state", /* \376\364 */ "substitute", /* \376\365 */ "sukun", /* \376\366 */ "summation", /* \376\367 */ "sun", /* \376\370 */ "symbol", /* \376\371 */ "syncronous", /* \376\372 */ "system", /* \376\373 */ "tack", /* \376\374 */ "take", /* \376\375 */ "tatweel", /* \376\376 */ "tav", /* \376\377 */ "tel", /* \377\001 */ "terminator", /* \377\002 */ "tet", /* \377\003 */ "there", /* \377\004 */ "therefore", /* \377\005 */ "thin", /* \377\006 */ "third", /* \377\007 */ "thirds", /* \377\010 */ "thirteen", /* \377\011 */ "this", /* \377\012 */ "three-per-em", /* \377\013 */ "top", /* \377\014 */ "trade", /* \377\015 */ "transmit", /* \377\016 */ "twenty", /* \377\017 */ "umlaut", /* \377\020 */ "union", /* \377\021 */ "upwards", /* \377\022 */ "va", /* \377\023 */ "vav", /* \377\024 */ "vector", /* \377\025 */ "veh", /* \377\026 */ "vi", /* \377\027 */ "vo", /* \377\030 */ "waiting", /* \377\031 */ "wave", /* \377\032 */ "won", /* \377\033 */ "yen", /* \377\034 */ "yod", /* \377\035 */ "yr", /* \377\036 */ "zayin", /* \377\037 */ "zh", /* \377\040 */ }; struct charname { recode_ucs2 code; const char *crypted; }; static const struct charname charname[NUMBER_OF_CHARNAMES] = { {0x0000, "\376\267\375\367"}, {0x0001, "\260\110\376\215\376\005"}, {0x0002, "\260\110\375\252\376\015"}, {0x0003, "\212\110\375\252\375\336"}, {0x0004, "\212\110\375\257\375\331"}, {0x0005, "\376\161\375\330"}, {0x0006, "\375\032\375\307"}, {0x0007, "\376\107\375\311"}, {0x0008, "\376\102\375\313"}, {0x0009, "\200\261\375\343"}, {0x000A, "\052\361\375\361"}, {0x000B, "\052\261\376\021"}, {0x000C, "\010\361\375\337"}, {0x000D, "\376\120\376\341\375\316"}, {0x000E, "\375\234\376\277\376\004"}, {0x000F, "\375\234\376\226\376\003"}, {0x0010, "\376\143\375\105\375\326"}, {0x0011, "\232\211\115\375\320"}, {0x0012, "\232\211\125\375\321"}, {0x0013, "\232\211\130\375\322"}, {0x0014, "\232\211\144\375\323"}, {0x0015, "\376\263\375\032\375\364"}, {0x0016, "\376\372\376\224\376\017"}, {0x0017, "\212\110\375\257\207\375\335"}, {0x0018, "\375\051\375\314"}, {0x0019, "\212\110\375\156\375\327"}, {0x001A, "\376\365\376\016"}, {0x001B, "\375\105\375\334"}, {0x001C, "\376\176\325\375\354"}, {0x001D, "\376\212\325\375\353"}, {0x001E, "\376\333\325\375\352"}, {0x001F, "\375\016\325\375\351"}, {0x0020, "\146"}, {0x0021, "\360\046"}, {0x0022, "\140\046"}, {0x0023, "\133\036"}, {0x0024, "\376\150\036"}, {0x0025, "\376\305\036"}, {0x0026, "\376\066"}, {0x0027, "\375\034"}, {0x0028, "\034\215"}, {0x0029, "\035\215"}, {0x002A, "\375\036"}, {0x002B, "\375\002\036"}, {0x002C, "\346"}, {0x002D, "\376\221"}, {0x002E, "\074\101"}, {0x002F, "\375\011"}, {0x0030, "\025\225"}, {0x0031, "\025\115"}, {0x0032, "\025\125"}, {0x0033, "\025\130"}, {0x0034, "\025\144"}, {0x0035, "\025\143"}, {0x0036, "\025\165"}, {0x0037, "\025\150"}, {0x0038, "\025\155"}, {0x0039, "\025\162"}, {0x003A, "\376\126"}, {0x003B, "\375\226"}, {0x003C, "\311\036"}, {0x003D, "\356\036"}, {0x003E, "\303\036"}, {0x003F, "\375\003\046"}, {0x0040, "\376\127\376\077"}, {0x0041, "\002\005\001\030"}, {0x0042, "\002\005\001\136"}, {0x0043, "\002\005\001\113"}, {0x0044, "\002\005\001\103"}, {0x0045, "\002\005\001\033"}, {0x0046, "\002\005\001\172"}, {0x0047, "\002\005\001\075"}, {0x0048, "\002\005\001\104"}, {0x0049, "\002\005\001\041"}, {0x004A, "\002\005\001\171"}, {0x004B, "\002\005\001\123"}, {0x004C, "\002\005\001\077"}, {0x004D, "\002\005\001\145"}, {0x004E, "\002\005\001\061"}, {0x004F, "\002\005\001\023"}, {0x0050, "\002\005\001\163"}, {0x0051, "\002\005\001\220"}, {0x0052, "\002\005\001\116"}, {0x0053, "\002\005\001\070"}, {0x0054, "\002\005\001\106"}, {0x0055, "\002\005\001\024"}, {0x0056, "\002\005\001\167"}, {0x0057, "\002\005\001\121"}, {0x0058, "\002\005\001\151"}, {0x0059, "\002\005\001\102"}, {0x005A, "\002\005\001\107"}, {0x005B, "\034\126\112"}, {0x005C, "\375\215\375\011"}, {0x005D, "\035\126\112"}, {0x005E, "\027\147"}, {0x005F, "\312\052"}, {0x0060, "\047\147"}, {0x0061, "\002\004\001\030"}, {0x0062, "\002\004\001\136"}, {0x0063, "\002\004\001\113"}, {0x0064, "\002\004\001\103"}, {0x0065, "\002\004\001\033"}, {0x0066, "\002\004\001\172"}, {0x0067, "\002\004\001\075"}, {0x0068, "\002\004\001\104"}, {0x0069, "\002\004\001\041"}, {0x006A, "\002\004\001\171"}, {0x006B, "\002\004\001\123"}, {0x006C, "\002\004\001\077"}, {0x006D, "\002\004\001\145"}, {0x006E, "\002\004\001\061"}, {0x006F, "\002\004\001\023"}, {0x0070, "\002\004\001\163"}, {0x0071, "\002\004\001\220"}, {0x0072, "\002\004\001\116"}, {0x0073, "\002\004\001\070"}, {0x0074, "\002\004\001\106"}, {0x0075, "\002\004\001\024"}, {0x0076, "\002\004\001\167"}, {0x0077, "\002\004\001\121"}, {0x0078, "\002\004\001\151"}, {0x0079, "\002\004\001\102"}, {0x007A, "\002\004\001\107"}, {0x007B, "\034\375\063\112"}, {0x007C, "\063\052"}, {0x007D, "\035\375\063\112"}, {0x007E, "\042"}, {0x007F, "\376\144\375\325"}, {0x0080, "\376\301\200\375\371"}, {0x0081, "\376\217\376\271\376\320\375\342"}, {0x0082, "\375\045\376\307\375\126\375\312"}, {0x0083, "\374\375\045\375\126\375\365"}, {0x0084, "\364\375\350"}, {0x0085, "\375\170\052\375\366"}, {0x0086, "\260\110\375\225\271\376\012"}, {0x0087, "\212\110\375\225\271\375\333"}, {0x0088, "\200\261\326\375\345"}, {0x0089, "\200\261\003\376\234\375\344"}, {0x008A, "\052\261\326\376\022"}, {0x008B, "\375\001\052\376\202\375\372"}, {0x008C, "\375\001\052\376\103\375\373"}, {0x008D, "\375\215\052\361\375\377"}, {0x008E, "\375\236\125\376\010"}, {0x008F, "\375\236\130\376\011"}, {0x0090, "\232\211\375\012\375\324"}, {0x0091, "\375\206\375\266\115\375\375"}, {0x0092, "\375\206\375\266\125\375\376"}, {0x0093, "\326\377\016\376\364\376\014"}, {0x0094, "\375\051\200\375\315"}, {0x0095, "\375\161\377\031\375\363"}, {0x0096, "\260\110\375\123\271\376\007"}, {0x0097, "\212\110\375\123\271\375\332"}, {0x0098, "\260\110\375\012\376\006"}, {0x0099, "\175\376\211\200\365\376\002"}, {0x009A, "\175\200\365\376\001"}, {0x009B, "\211\376\347\365\375\317"}, {0x009C, "\375\012\377\002\376\013"}, {0x009D, "\376\274\376\373\375\057\375\370"}, {0x009E, "\376\321\375\161\375\374"}, {0x009F, "\376\073\376\323\375\057\375\310"}, {0x00A0, "\376\266\146"}, {0x00A1, "\306\360\046"}, {0x00A2, "\376\121\036"}, {0x00A3, "\376\315\036"}, {0x00A4, "\376\135\036"}, {0x00A5, "\377\034\036"}, {0x00A6, "\376\113\375\040"}, {0x00A7, "\376\345\036"}, {0x00A8, "\037"}, {0x00A9, "\375\061\036"}, {0x00AA, "\376\167\375\201\375\135"}, {0x00AB, "\245\064\152\140\046"}, {0x00AC, "\251\036"}, {0x00AD, "\375\010\375\133"}, {0x00AE, "\376\337\036"}, {0x00AF, "\050"}, {0x00B0, "\350\036"}, {0x00B1, "\376\312\036"}, {0x00B2, "\120\125"}, {0x00B3, "\120\130"}, {0x00B4, "\013\147"}, {0x00B5, "\376\253\036"}, {0x00B6, "\376\311\036"}, {0x00B7, "\247\015"}, {0x00B8, "\060"}, {0x00B9, "\120\115"}, {0x00BA, "\376\251\375\201\375\135"}, {0x00BB, "\254\064\152\140\046"}, {0x00BC, "\131\122\115\375\211"}, {0x00BD, "\131\122\115\157"}, {0x00BE, "\131\122\130\376\330"}, {0x00BF, "\306\375\003\046"}, {0x00C0, "\002\005\001\030\003\047"}, {0x00C1, "\002\005\001\030\003\013"}, {0x00C2, "\002\005\001\030\003\027"}, {0x00C3, "\002\005\001\030\003\042"}, {0x00C4, "\002\005\001\030\003\037"}, {0x00C5, "\002\005\001\030\003\141\016"}, {0x00C6, "\002\005\001\206"}, {0x00C7, "\002\005\001\113\003\060"}, {0x00C8, "\002\005\001\033\003\047"}, {0x00C9, "\002\005\001\033\003\013"}, {0x00CA, "\002\005\001\033\003\027"}, {0x00CB, "\002\005\001\033\003\037"}, {0x00CC, "\002\005\001\041\003\047"}, {0x00CD, "\002\005\001\041\003\013"}, {0x00CE, "\002\005\001\041\003\027"}, {0x00CF, "\002\005\001\041\003\037"}, {0x00D0, "\002\005\001\375\106\266"}, {0x00D1, "\002\005\001\061\003\042"}, {0x00D2, "\002\005\001\023\003\047"}, {0x00D3, "\002\005\001\023\003\013"}, {0x00D4, "\002\005\001\023\003\027"}, {0x00D5, "\002\005\001\023\003\042"}, {0x00D6, "\002\005\001\023\003\037"}, {0x00D7, "\376\260\036"}, {0x00D8, "\002\005\001\023\003\124"}, {0x00D9, "\002\005\001\024\003\047"}, {0x00DA, "\002\005\001\024\003\013"}, {0x00DB, "\002\005\001\024\003\027"}, {0x00DC, "\002\005\001\024\003\037"}, {0x00DD, "\002\005\001\102\003\013"}, {0x00DE, "\002\005\001\375\254\266"}, {0x00DF, "\002\004\001\375\231\070\375\340"}, {0x00E0, "\002\004\001\030\003\047"}, {0x00E1, "\002\004\001\030\003\013"}, {0x00E2, "\002\004\001\030\003\027"}, {0x00E3, "\002\004\001\030\003\042"}, {0x00E4, "\002\004\001\030\003\037"}, {0x00E5, "\002\004\001\030\003\141\016"}, {0x00E6, "\002\004\001\206"}, {0x00E7, "\002\004\001\113\003\060"}, {0x00E8, "\002\004\001\033\003\047"}, {0x00E9, "\002\004\001\033\003\013"}, {0x00EA, "\002\004\001\033\003\027"}, {0x00EB, "\002\004\001\033\003\037"}, {0x00EC, "\002\004\001\041\003\047"}, {0x00ED, "\002\004\001\041\003\013"}, {0x00EE, "\002\004\001\041\003\027"}, {0x00EF, "\002\004\001\041\003\037"}, {0x00F0, "\002\004\001\375\106\266"}, {0x00F1, "\002\004\001\061\003\042"}, {0x00F2, "\002\004\001\023\003\047"}, {0x00F3, "\002\004\001\023\003\013"}, {0x00F4, "\002\004\001\023\003\027"}, {0x00F5, "\002\004\001\023\003\042"}, {0x00F6, "\002\004\001\023\003\037"}, {0x00F7, "\376\147\036"}, {0x00F8, "\002\004\001\023\003\124"}, {0x00F9, "\002\004\001\024\003\047"}, {0x00FA, "\002\004\001\024\003\013"}, {0x00FB, "\002\004\001\024\003\027"}, {0x00FC, "\002\004\001\024\003\037"}, {0x00FD, "\002\004\001\102\003\013"}, {0x00FE, "\002\004\001\375\254\266"}, {0x00FF, "\002\004\001\102\003\037"}, {0x0100, "\002\005\001\030\003\050"}, {0x0101, "\002\004\001\030\003\050"}, {0x0102, "\002\005\001\030\003\057"}, {0x0103, "\002\004\001\030\003\057"}, {0x0104, "\002\005\001\030\003\134"}, {0x0105, "\002\004\001\030\003\134"}, {0x0106, "\002\005\001\113\003\013"}, {0x0107, "\002\004\001\113\003\013"}, {0x0108, "\002\005\001\113\003\027"}, {0x0109, "\002\004\001\113\003\027"}, {0x010A, "\002\005\001\113\003\015\016"}, {0x010B, "\002\004\001\113\003\015\016"}, {0x010C, "\002\005\001\113\003\045"}, {0x010D, "\002\004\001\113\003\045"}, {0x010E, "\002\005\001\103\003\045"}, {0x010F, "\002\004\001\103\003\045"}, {0x0110, "\002\005\001\103\003\124"}, {0x0111, "\002\004\001\103\003\124"}, {0x0112, "\002\005\001\033\003\050"}, {0x0113, "\002\004\001\033\003\050"}, {0x0114, "\002\005\001\033\003\057"}, {0x0115, "\002\004\001\033\003\057"}, {0x0116, "\002\005\001\033\003\015\016"}, {0x0117, "\002\004\001\033\003\015\016"}, {0x0118, "\002\005\001\033\003\134"}, {0x0119, "\002\004\001\033\003\134"}, {0x011A, "\002\005\001\033\003\045"}, {0x011B, "\002\004\001\033\003\045"}, {0x011C, "\002\005\001\075\003\027"}, {0x011D, "\002\004\001\075\003\027"}, {0x011E, "\002\005\001\075\003\057"}, {0x011F, "\002\004\001\075\003\057"}, {0x0120, "\002\005\001\075\003\015\016"}, {0x0121, "\002\004\001\075\003\015\016"}, {0x0122, "\002\005\001\075\003\060"}, {0x0123, "\002\004\001\075\003\060"}, {0x0124, "\002\005\001\104\003\027"}, {0x0125, "\002\004\001\104\003\027"}, {0x0126, "\002\005\001\104\003\124"}, {0x0127, "\002\004\001\104\003\124"}, {0x0128, "\002\005\001\041\003\042"}, {0x0129, "\002\004\001\041\003\042"}, {0x012A, "\002\005\001\041\003\050"}, {0x012B, "\002\004\001\041\003\050"}, {0x012C, "\002\005\001\041\003\057"}, {0x012D, "\002\004\001\041\003\057"}, {0x012E, "\002\005\001\041\003\134"}, {0x012F, "\002\004\001\041\003\134"}, {0x0130, "\002\005\001\041\003\015\016"}, {0x0131, "\002\004\001\041\376\151"}, {0x0132, "\002\005\114\375\134"}, {0x0133, "\002\004\114\375\134"}, {0x0134, "\002\005\001\171\003\027"}, {0x0135, "\002\004\001\171\003\027"}, {0x0136, "\002\005\001\123\003\060"}, {0x0137, "\002\004\001\123\003\060"}, {0x0138, "\002\004\001\376\240\375\341"}, {0x0139, "\002\005\001\077\003\013"}, {0x013A, "\002\004\001\077\003\013"}, {0x013B, "\002\005\001\077\003\060"}, {0x013C, "\002\004\001\077\003\060"}, {0x013D, "\002\005\001\077\003\045"}, {0x013E, "\002\004\001\077\003\045"}, {0x013F, "\002\005\001\077\003\247\015"}, {0x0140, "\002\004\001\077\003\247\015"}, {0x0141, "\002\005\001\077\003\124"}, {0x0142, "\002\004\001\077\003\124"}, {0x0143, "\002\005\001\061\003\013"}, {0x0144, "\002\004\001\061\003\013"}, {0x0145, "\002\005\001\061\003\060"}, {0x0146, "\002\004\001\061\003\060"}, {0x0147, "\002\005\001\061\003\045"}, {0x0148, "\002\004\001\061\003\045"}, {0x0149, "\002\004\001\061\376\316\376\115\375\034"}, {0x014A, "\002\005\001\355\375\025"}, {0x014B, "\002\004\001\355\375\025"}, {0x014C, "\002\005\001\023\003\050"}, {0x014D, "\002\004\001\023\003\050"}, {0x014E, "\002\005\001\023\003\057"}, {0x014F, "\002\004\001\023\003\057"}, {0x0150, "\002\005\001\023\003\064\013"}, {0x0151, "\002\004\001\023\003\064\013"}, {0x0152, "\002\005\114\375\177"}, {0x0153, "\002\004\114\375\177"}, {0x0154, "\002\005\001\116\003\013"}, {0x0155, "\002\004\001\116\003\013"}, {0x0156, "\002\005\001\116\003\060"}, {0x0157, "\002\004\001\116\003\060"}, {0x0158, "\002\005\001\116\003\045"}, {0x0159, "\002\004\001\116\003\045"}, {0x015A, "\002\005\001\070\003\013"}, {0x015B, "\002\004\001\070\003\013"}, {0x015C, "\002\005\001\070\003\027"}, {0x015D, "\002\004\001\070\003\027"}, {0x015E, "\002\005\001\070\003\060"}, {0x015F, "\002\004\001\070\003\060"}, {0x0160, "\002\005\001\070\003\045"}, {0x0161, "\002\004\001\070\003\045"}, {0x0162, "\002\005\001\106\003\060"}, {0x0163, "\002\004\001\106\003\060"}, {0x0164, "\002\005\001\106\003\045"}, {0x0165, "\002\004\001\106\003\045"}, {0x0166, "\002\005\001\106\003\124"}, {0x0167, "\002\004\001\106\003\124"}, {0x0168, "\002\005\001\024\003\042"}, {0x0169, "\002\004\001\024\003\042"}, {0x016A, "\002\005\001\024\003\050"}, {0x016B, "\002\004\001\024\003\050"}, {0x016C, "\002\005\001\024\003\057"}, {0x016D, "\002\004\001\024\003\057"}, {0x016E, "\002\005\001\024\003\141\016"}, {0x016F, "\002\004\001\024\003\141\016"}, {0x0170, "\002\005\001\024\003\064\013"}, {0x0171, "\002\004\001\024\003\064\013"}, {0x0172, "\002\005\001\024\003\134"}, {0x0173, "\002\004\001\024\003\134"}, {0x0174, "\002\005\001\121\003\027"}, {0x0175, "\002\004\001\121\003\027"}, {0x0176, "\002\005\001\102\003\027"}, {0x0177, "\002\004\001\102\003\027"}, {0x0178, "\002\005\001\102\003\037"}, {0x0179, "\002\005\001\107\003\013"}, {0x017A, "\002\004\001\107\003\013"}, {0x017B, "\002\005\001\107\003\015\016"}, {0x017C, "\002\004\001\107\003\015\016"}, {0x017D, "\002\005\001\107\003\045"}, {0x017E, "\002\004\001\107\003\045"}, {0x01A0, "\002\005\001\023\003\105"}, {0x01A1, "\002\004\001\023\003\105"}, {0x01A2, "\002\005\001\375\200"}, {0x01A3, "\002\004\001\375\200"}, {0x01A6, "\002\001\377\036"}, {0x01AF, "\002\005\001\024\003\105"}, {0x01B0, "\002\004\001\024\003\105"}, {0x01B5, "\002\005\001\107\003\124"}, {0x01B6, "\002\004\001\107\003\124"}, {0x01B7, "\002\005\001\301"}, {0x01CD, "\002\005\001\030\003\045"}, {0x01CE, "\002\004\001\030\003\045"}, {0x01CF, "\002\005\001\041\003\045"}, {0x01D0, "\002\004\001\041\003\045"}, {0x01D1, "\002\005\001\023\003\045"}, {0x01D2, "\002\004\001\023\003\045"}, {0x01D3, "\002\005\001\024\003\045"}, {0x01D4, "\002\004\001\024\003\045"}, {0x01D5, "\002\005\001\024\003\037\007\050"}, {0x01D6, "\002\004\001\024\003\037\007\050"}, {0x01D7, "\002\005\001\024\003\037\007\013"}, {0x01D8, "\002\004\001\024\003\037\007\013"}, {0x01D9, "\002\005\001\024\003\037\007\045"}, {0x01DA, "\002\004\001\024\003\037\007\045"}, {0x01DB, "\002\005\001\024\003\037\007\047"}, {0x01DC, "\002\004\001\024\003\037\007\047"}, {0x01DE, "\002\005\001\030\003\037\007\050"}, {0x01DF, "\002\004\001\030\003\037\007\050"}, {0x01E0, "\002\005\001\030\003\015\016\007\050"}, {0x01E1, "\002\004\001\030\003\015\016\007\050"}, {0x01E2, "\002\005\001\206\003\050"}, {0x01E3, "\002\004\001\206\003\050"}, {0x01E4, "\002\005\001\075\003\124"}, {0x01E5, "\002\004\001\075\003\124"}, {0x01E6, "\002\005\001\075\003\045"}, {0x01E7, "\002\004\001\075\003\045"}, {0x01E8, "\002\005\001\123\003\045"}, {0x01E9, "\002\004\001\123\003\045"}, {0x01EA, "\002\005\001\023\003\134"}, {0x01EB, "\002\004\001\023\003\134"}, {0x01EC, "\002\005\001\023\003\134\007\050"}, {0x01ED, "\002\004\001\023\003\134\007\050"}, {0x01EE, "\002\005\001\301\003\045"}, {0x01EF, "\002\004\001\301\003\045"}, {0x01F0, "\002\004\001\171\003\045"}, {0x01F4, "\002\005\001\075\003\013"}, {0x01F5, "\002\004\001\075\003\013"}, {0x01FA, "\002\005\001\030\003\141\016\007\013"}, {0x01FB, "\002\004\001\030\003\141\016\007\013"}, {0x01FC, "\002\005\001\206\003\013"}, {0x01FD, "\002\004\001\206\003\013"}, {0x01FE, "\002\005\001\023\003\124\007\013"}, {0x01FF, "\002\004\001\023\003\124\007\013"}, {0x0292, "\002\004\001\301\375\356\376\035"}, {0x02BB, "\376\257\001\034\157\141"}, {0x02C7, "\045"}, {0x02D8, "\057"}, {0x02D9, "\015\016"}, {0x02DA, "\141\016"}, {0x02DB, "\134"}, {0x02DD, "\064\013\147"}, {0x0374, "\012\055\036"}, {0x0375, "\012\173\055\036"}, {0x037A, "\012\170\020"}, {0x0385, "\013\147\007\037\376\020\007\376\145"}, {0x0386, "\012\005\001\270\003\013"}, {0x0388, "\012\005\001\277\003\013"}, {0x0389, "\012\005\001\300\003\013"}, {0x038A, "\012\005\001\170\003\013"}, {0x038C, "\012\005\001\317\003\013"}, {0x038E, "\012\005\001\204\003\013"}, {0x038F, "\012\005\001\316\003\013"}, {0x0390, "\012\004\001\170\003\013\007\037"}, {0x0391, "\012\005\001\270"}, {0x0392, "\012\005\001\345"}, {0x0393, "\012\005\001\375\115"}, {0x0394, "\012\005\001\375\066"}, {0x0395, "\012\005\001\277"}, {0x0396, "\012\005\001\375\302"}, {0x0397, "\012\005\001\300"}, {0x0398, "\012\005\001\375\253"}, {0x0399, "\012\005\001\170"}, {0x039A, "\012\005\001\375\142"}, {0x039B, "\012\005\001\375\147"}, {0x039C, "\012\005\001\314"}, {0x039D, "\012\005\001\315"}, {0x039E, "\012\005\001\375\274"}, {0x039F, "\012\005\001\317"}, {0x03A0, "\012\005\001\321"}, {0x03A1, "\012\005\001\375\216"}, {0x03A3, "\012\005\001\375\007"}, {0x03A4, "\012\005\001\375\251"}, {0x03A5, "\012\005\001\204"}, {0x03A6, "\012\005\001\375\203"}, {0x03A7, "\012\005\001\375\055"}, {0x03A8, "\012\005\001\375\207"}, {0x03A9, "\012\005\001\316"}, {0x03AA, "\012\005\001\170\003\037"}, {0x03AB, "\012\005\001\204\003\037"}, {0x03AC, "\012\004\001\270\003\013"}, {0x03AD, "\012\004\001\277\003\013"}, {0x03AE, "\012\004\001\300\003\013"}, {0x03AF, "\012\004\001\170\003\013"}, {0x03B0, "\012\004\001\204\003\013\007\037"}, {0x03B1, "\012\004\001\270"}, {0x03B2, "\012\004\001\345"}, {0x03B3, "\012\004\001\375\115"}, {0x03B4, "\012\004\001\375\066"}, {0x03B5, "\012\004\001\277"}, {0x03B6, "\012\004\001\375\302"}, {0x03B7, "\012\004\001\300"}, {0x03B8, "\012\004\001\375\253"}, {0x03B9, "\012\004\001\170"}, {0x03BA, "\012\004\001\375\142"}, {0x03BB, "\012\004\001\375\147"}, {0x03BC, "\012\004\001\314"}, {0x03BD, "\012\004\001\315"}, {0x03BE, "\012\004\001\375\274"}, {0x03BF, "\012\004\001\317"}, {0x03C0, "\012\004\001\321"}, {0x03C1, "\012\004\001\375\216"}, {0x03C2, "\012\004\001\044\375\007"}, {0x03C3, "\012\004\001\375\007"}, {0x03C4, "\012\004\001\375\251"}, {0x03C5, "\012\004\001\204"}, {0x03C6, "\012\004\001\375\203"}, {0x03C7, "\012\004\001\375\055"}, {0x03C8, "\012\004\001\375\207"}, {0x03C9, "\012\004\001\316"}, {0x03CA, "\012\004\001\170\003\037"}, {0x03CB, "\012\004\001\204\003\037"}, {0x03CC, "\012\004\001\317\003\013"}, {0x03CD, "\012\004\001\204\003\013"}, {0x03CE, "\012\004\001\316\003\013"}, {0x03D0, "\012\004\001\247\345\343\376\060"}, {0x03DA, "\012\005\001\375\244"}, {0x03DC, "\012\005\001\375\070"}, {0x03DE, "\012\005\001\307"}, {0x03E0, "\012\005\001\375\223"}, {0x0401, "\011\005\001\375\137"}, {0x0402, "\011\005\001\375\072\267"}, {0x0403, "\011\005\001\375\120\205"}, {0x0404, "\011\005\001\375\263\305"}, {0x0405, "\011\005\001\375\076\205"}, {0x0406, "\011\005\001\375\050\041"}, {0x0407, "\011\005\001\375\277\375\026"}, {0x0408, "\011\005\001\375\141"}, {0x0409, "\011\005\001\375\151"}, {0x040A, "\011\005\001\375\172"}, {0x040B, "\011\005\001\375\262\267"}, {0x040C, "\011\005\001\375\144\205"}, {0x040E, "\011\005\001\327\024\375\022"}, {0x040F, "\011\005\001\375\077"}, {0x0410, "\011\005\001\030"}, {0x0411, "\011\005\001\272"}, {0x0412, "\011\005\001\375\017"}, {0x0413, "\011\005\001\302"}, {0x0414, "\011\005\001\274"}, {0x0415, "\011\005\001\305"}, {0x0416, "\011\005\001\375\303"}, {0x0417, "\011\005\001\340"}, {0x0418, "\011\005\001\041"}, {0x0419, "\011\005\001\327\041"}, {0x041A, "\011\005\001\243"}, {0x041B, "\011\005\001\375\102"}, {0x041C, "\011\005\001\276"}, {0x041D, "\011\005\001\233"}, {0x041E, "\011\005\001\023"}, {0x041F, "\011\005\001\216"}, {0x0420, "\011\005\001\357"}, {0x0421, "\011\005\001\375\104"}, {0x0422, "\011\005\001\331"}, {0x0423, "\011\005\001\024"}, {0x0424, "\011\005\001\375\101"}, {0x0425, "\011\005\001\304"}, {0x0426, "\011\005\001\375\261"}, {0x0427, "\011\005\001\375\053"}, {0x0428, "\011\005\001\375\227"}, {0x0429, "\011\005\001\375\232"}, {0x042A, "\011\005\001\375\124\036"}, {0x042B, "\011\005\001\375\276"}, {0x042C, "\011\005\001\375\010\036"}, {0x042D, "\011\005\001\033"}, {0x042E, "\011\005\001\224"}, {0x042F, "\011\005\001\222"}, {0x0430, "\011\004\001\030"}, {0x0431, "\011\004\001\272"}, {0x0432, "\011\004\001\375\017"}, {0x0433, "\011\004\001\302"}, {0x0434, "\011\004\001\274"}, {0x0435, "\011\004\001\305"}, {0x0436, "\011\004\001\375\303"}, {0x0437, "\011\004\001\340"}, {0x0438, "\011\004\001\041"}, {0x0439, "\011\004\001\327\041"}, {0x043A, "\011\004\001\243"}, {0x043B, "\011\004\001\375\102"}, {0x043C, "\011\004\001\276"}, {0x043D, "\011\004\001\233"}, {0x043E, "\011\004\001\023"}, {0x043F, "\011\004\001\216"}, {0x0440, "\011\004\001\357"}, {0x0441, "\011\004\001\375\104"}, {0x0442, "\011\004\001\331"}, {0x0443, "\011\004\001\024"}, {0x0444, "\011\004\001\375\101"}, {0x0445, "\011\004\001\304"}, {0x0446, "\011\004\001\375\261"}, {0x0447, "\011\004\001\375\053"}, {0x0448, "\011\004\001\375\227"}, {0x0449, "\011\004\001\375\232"}, {0x044A, "\011\004\001\375\124\036"}, {0x044B, "\011\004\001\375\276"}, {0x044C, "\011\004\001\375\010\036"}, {0x044D, "\011\004\001\033"}, {0x044E, "\011\004\001\224"}, {0x044F, "\011\004\001\222"}, {0x0451, "\011\004\001\375\137"}, {0x0452, "\011\004\001\375\072\267"}, {0x0453, "\011\004\001\375\120\205"}, {0x0454, "\011\004\001\375\263\305"}, {0x0455, "\011\004\001\375\076\205"}, {0x0456, "\011\004\001\375\050\041"}, {0x0457, "\011\004\001\375\277\375\026"}, {0x0458, "\011\004\001\375\141"}, {0x0459, "\011\004\001\375\151"}, {0x045A, "\011\004\001\375\172"}, {0x045B, "\011\004\001\375\262\267"}, {0x045C, "\011\004\001\375\144\205"}, {0x045E, "\011\004\001\327\024\375\022"}, {0x045F, "\011\004\001\375\077"}, {0x0462, "\011\005\001\375\275"}, {0x0463, "\011\004\001\375\275"}, {0x046A, "\011\005\001\375\043\375\300"}, {0x046B, "\011\004\001\375\043\375\300"}, {0x0472, "\011\005\001\375\111"}, {0x0473, "\011\004\001\375\111"}, {0x0474, "\011\005\001\375\140"}, {0x0475, "\011\004\001\375\140"}, {0x0480, "\011\005\001\307"}, {0x0481, "\011\004\001\307"}, {0x0490, "\011\005\001\302\003\375\265"}, {0x0491, "\011\004\001\302\003\375\265"}, {0x05D0, "\056\001\073"}, {0x05D1, "\056\001\376\110"}, {0x05D2, "\056\001\376\207"}, {0x05D3, "\056\001\376\137"}, {0x05D4, "\056\001\363"}, {0x05D5, "\056\001\377\024"}, {0x05D6, "\056\001\377\037"}, {0x05D7, "\056\001\376\216"}, {0x05D8, "\056\001\377\003"}, {0x05D9, "\056\001\377\035"}, {0x05DA, "\056\001\044\202"}, {0x05DB, "\056\001\202"}, {0x05DC, "\056\001\376\241"}, {0x05DD, "\056\001\044\375\157"}, {0x05DE, "\056\001\375\157"}, {0x05DF, "\056\001\044\375\176"}, {0x05E0, "\056\001\375\176"}, {0x05E1, "\056\001\376\344"}, {0x05E2, "\056\001\376\101"}, {0x05E3, "\056\001\044\216"}, {0x05E4, "\056\001\216"}, {0x05E5, "\056\001\044\375\260"}, {0x05E6, "\056\001\375\260"}, {0x05E7, "\056\001\376\327"}, {0x05E8, "\056\001\376\340"}, {0x05E9, "\056\001\376\353"}, {0x05EA, "\056\001\376\377"}, {0x060C, "\006\346"}, {0x061B, "\006\375\226"}, {0x061F, "\006\375\003\046"}, {0x0621, "\006\001\160"}, {0x0622, "\006\001\073\003\313\016"}, {0x0623, "\006\001\073\003\160\016"}, {0x0624, "\006\001\336\003\160\016"}, {0x0625, "\006\001\073\003\160\020"}, {0x0626, "\006\001\223\003\160\016"}, {0x0627, "\006\001\073"}, {0x0628, "\006\001\227"}, {0x0629, "\006\001\177\371"}, {0x062A, "\006\001\177"}, {0x062B, "\006\001\263"}, {0x062C, "\006\001\242"}, {0x062D, "\006\001\236"}, {0x062E, "\006\001\244"}, {0x062F, "\006\001\347"}, {0x0630, "\006\001\375\014"}, {0x0631, "\006\001\375\004"}, {0x0632, "\006\001\375\021"}, {0x0633, "\006\001\256"}, {0x0634, "\006\001\257"}, {0x0635, "\006\001\255"}, {0x0636, "\006\001\230"}, {0x0637, "\006\001\262"}, {0x0638, "\006\001\265"}, {0x0639, "\006\001\226"}, {0x063A, "\006\001\235"}, {0x0640, "\006\376\376"}, {0x0641, "\006\001\234"}, {0x0642, "\006\001\253"}, {0x0643, "\006\001\202"}, {0x0644, "\006\001\137"}, {0x0645, "\006\001\246"}, {0x0646, "\006\001\250"}, {0x0647, "\006\001\237"}, {0x0648, "\006\001\336"}, {0x0649, "\006\001\073\370"}, {0x064A, "\006\001\223"}, {0x064B, "\006\376\165"}, {0x064C, "\006\376\141"}, {0x064D, "\006\376\236"}, {0x064E, "\006\376\164"}, {0x064F, "\006\376\140"}, {0x0650, "\006\376\235"}, {0x0651, "\006\375\230"}, {0x0652, "\006\376\366"}, {0x0660, "\154\153\025\225"}, {0x0661, "\154\153\025\115"}, {0x0662, "\154\153\025\125"}, {0x0663, "\154\153\025\130"}, {0x0664, "\154\153\025\144"}, {0x0665, "\154\153\025\143"}, {0x0666, "\154\153\025\165"}, {0x0667, "\154\153\025\150"}, {0x0668, "\154\153\025\155"}, {0x0669, "\154\153\025\162"}, {0x0670, "\120\006\001\073"}, {0x067E, "\006\001\376\303"}, {0x06A4, "\006\001\377\026"}, {0x06AF, "\006\001\376\205"}, {0x1E00, "\002\005\001\030\003\141\020"}, {0x1E01, "\002\004\001\030\003\141\020"}, {0x1E02, "\002\005\001\136\003\015\016"}, {0x1E03, "\002\004\001\136\003\015\016"}, {0x1E04, "\002\005\001\136\003\015\020"}, {0x1E05, "\002\004\001\136\003\015\020"}, {0x1E06, "\002\005\001\136\003\052\020"}, {0x1E07, "\002\004\001\136\003\052\020"}, {0x1E08, "\002\005\001\113\003\060\007\013"}, {0x1E09, "\002\004\001\113\003\060\007\013"}, {0x1E0A, "\002\005\001\103\003\015\016"}, {0x1E0B, "\002\004\001\103\003\015\016"}, {0x1E0C, "\002\005\001\103\003\015\020"}, {0x1E0D, "\002\004\001\103\003\015\020"}, {0x1E0E, "\002\005\001\103\003\052\020"}, {0x1E0F, "\002\004\001\103\003\052\020"}, {0x1E10, "\002\005\001\103\003\060"}, {0x1E11, "\002\004\001\103\003\060"}, {0x1E12, "\002\005\001\103\003\027\020"}, {0x1E13, "\002\004\001\103\003\027\020"}, {0x1E14, "\002\005\001\033\003\050\007\047"}, {0x1E15, "\002\004\001\033\003\050\007\047"}, {0x1E16, "\002\005\001\033\003\050\007\013"}, {0x1E17, "\002\004\001\033\003\050\007\013"}, {0x1E18, "\002\005\001\033\003\027\020"}, {0x1E19, "\002\004\001\033\003\027\020"}, {0x1E1A, "\002\005\001\033\003\042\020"}, {0x1E1B, "\002\004\001\033\003\042\020"}, {0x1E1C, "\002\005\001\033\003\060\007\057"}, {0x1E1D, "\002\004\001\033\003\060\007\057"}, {0x1E1E, "\002\005\001\172\003\015\016"}, {0x1E1F, "\002\004\001\172\003\015\016"}, {0x1E20, "\002\005\001\075\003\050"}, {0x1E21, "\002\004\001\075\003\050"}, {0x1E22, "\002\005\001\104\003\015\016"}, {0x1E23, "\002\004\001\104\003\015\016"}, {0x1E24, "\002\005\001\104\003\015\020"}, {0x1E25, "\002\004\001\104\003\015\020"}, {0x1E26, "\002\005\001\104\003\037"}, {0x1E27, "\002\004\001\104\003\037"}, {0x1E28, "\002\005\001\104\003\060"}, {0x1E29, "\002\004\001\104\003\060"}, {0x1E2A, "\002\005\001\104\003\057\020"}, {0x1E2B, "\002\004\001\104\003\057\020"}, {0x1E2C, "\002\005\001\041\003\042\020"}, {0x1E2D, "\002\004\001\041\003\042\020"}, {0x1E2E, "\002\005\001\041\003\037\007\013"}, {0x1E2F, "\002\004\001\041\003\037\007\013"}, {0x1E30, "\002\005\001\123\003\013"}, {0x1E31, "\002\004\001\123\003\013"}, {0x1E32, "\002\005\001\123\003\015\020"}, {0x1E33, "\002\004\001\123\003\015\020"}, {0x1E34, "\002\005\001\123\003\052\020"}, {0x1E35, "\002\004\001\123\003\052\020"}, {0x1E36, "\002\005\001\077\003\015\020"}, {0x1E37, "\002\004\001\077\003\015\020"}, {0x1E3A, "\002\005\001\077\003\052\020"}, {0x1E3B, "\002\004\001\077\003\052\020"}, {0x1E3C, "\002\005\001\077\003\027\020"}, {0x1E3D, "\002\004\001\077\003\027\020"}, {0x1E3E, "\002\005\001\145\003\013"}, {0x1E3F, "\002\004\001\145\003\013"}, {0x1E40, "\002\005\001\145\003\015\016"}, {0x1E41, "\002\004\001\145\003\015\016"}, {0x1E42, "\002\005\001\145\003\015\020"}, {0x1E43, "\002\004\001\145\003\015\020"}, {0x1E44, "\002\005\001\061\003\015\016"}, {0x1E45, "\002\004\001\061\003\015\016"}, {0x1E46, "\002\005\001\061\003\015\020"}, {0x1E47, "\002\004\001\061\003\015\020"}, {0x1E48, "\002\005\001\061\003\052\020"}, {0x1E49, "\002\004\001\061\003\052\020"}, {0x1E4A, "\002\004\001\061\003\027\020"}, {0x1E4C, "\002\005\001\023\003\042\007\013"}, {0x1E4D, "\002\004\001\023\003\042\007\013"}, {0x1E4E, "\002\005\001\023\003\042\007\037"}, {0x1E4F, "\002\004\001\023\003\042\007\037"}, {0x1E50, "\002\005\001\023\003\050\007\047"}, {0x1E51, "\002\004\001\023\003\050\007\047"}, {0x1E52, "\002\005\001\023\003\050\007\013"}, {0x1E53, "\002\004\001\023\003\050\007\013"}, {0x1E54, "\002\005\001\163\003\013"}, {0x1E55, "\002\004\001\163\003\013"}, {0x1E56, "\002\005\001\163\003\015\016"}, {0x1E57, "\002\004\001\163\003\015\016"}, {0x1E58, "\002\005\001\116\003\015\016"}, {0x1E59, "\002\004\001\116\003\015\016"}, {0x1E5A, "\002\005\001\116\003\015\020"}, {0x1E5B, "\002\004\001\116\003\015\020"}, {0x1E5E, "\002\005\001\116\003\052\020"}, {0x1E5F, "\002\004\001\116\003\052\020"}, {0x1E60, "\002\005\001\070\003\015\016"}, {0x1E61, "\002\004\001\070\003\015\016"}, {0x1E62, "\002\005\001\070\003\015\020"}, {0x1E63, "\002\004\001\070\003\015\020"}, {0x1E64, "\002\005\001\070\003\013\007\015\016"}, {0x1E65, "\002\004\001\070\003\013\007\015\016"}, {0x1E66, "\002\005\001\070\003\045\007\015\016"}, {0x1E67, "\002\004\001\070\003\045\007\015\016"}, {0x1E6A, "\002\005\001\106\003\015\016"}, {0x1E6B, "\002\004\001\106\003\015\016"}, {0x1E6C, "\002\005\001\106\003\015\020"}, {0x1E6D, "\002\004\001\106\003\015\020"}, {0x1E6E, "\002\005\001\106\003\052\020"}, {0x1E6F, "\002\004\001\106\003\052\020"}, {0x1E70, "\002\005\001\106\003\027\020"}, {0x1E71, "\002\004\001\106\003\027\020"}, {0x1E74, "\002\005\001\024\003\042\020"}, {0x1E75, "\002\004\001\024\003\042\020"}, {0x1E76, "\002\005\001\024\003\027\020"}, {0x1E77, "\002\004\001\024\003\027\020"}, {0x1E78, "\002\005\001\024\003\042\007\013"}, {0x1E79, "\002\004\001\024\003\042\007\013"}, {0x1E7A, "\002\005\001\024\003\050\007\037"}, {0x1E7B, "\002\004\001\024\003\050\007\037"}, {0x1E7C, "\002\005\001\167\003\042"}, {0x1E7D, "\002\004\001\167\003\042"}, {0x1E7E, "\002\005\001\167\003\015\020"}, {0x1E7F, "\002\004\001\167\003\015\020"}, {0x1E80, "\002\005\001\121\003\047"}, {0x1E81, "\002\004\001\121\003\047"}, {0x1E82, "\002\005\001\121\003\013"}, {0x1E83, "\002\004\001\121\003\013"}, {0x1E84, "\002\005\001\121\003\037"}, {0x1E85, "\002\004\001\121\003\037"}, {0x1E86, "\002\005\001\121\003\015\016"}, {0x1E87, "\002\004\001\121\003\015\016"}, {0x1E88, "\002\005\001\121\003\015\020"}, {0x1E89, "\002\004\001\121\003\015\020"}, {0x1E8A, "\002\005\001\151\003\015\016"}, {0x1E8B, "\002\004\001\151\003\015\016"}, {0x1E8C, "\002\005\001\151\003\037"}, {0x1E8D, "\002\004\001\151\003\037"}, {0x1E8E, "\002\005\001\102\003\015\016"}, {0x1E8F, "\002\004\001\102\003\015\016"}, {0x1E90, "\002\005\001\107\003\027"}, {0x1E91, "\002\004\001\107\003\027"}, {0x1E92, "\002\005\001\107\003\015\020"}, {0x1E93, "\002\004\001\107\003\015\020"}, {0x1E94, "\002\005\001\107\003\052\020"}, {0x1E95, "\002\004\001\107\003\052\020"}, {0x1EA0, "\002\005\001\030\003\015\020"}, {0x1EA1, "\002\004\001\030\003\015\020"}, {0x1EA2, "\002\005\001\030\003\065\016"}, {0x1EA3, "\002\004\001\030\003\065\016"}, {0x1EA4, "\002\005\001\030\003\027\007\013"}, {0x1EA5, "\002\004\001\030\003\027\007\013"}, {0x1EA6, "\002\005\001\030\003\027\007\047"}, {0x1EA7, "\002\004\001\030\003\027\007\047"}, {0x1EA8, "\002\005\001\030\003\027\007\065\016"}, {0x1EA9, "\002\004\001\030\003\027\007\065\016"}, {0x1EAA, "\002\005\001\030\003\027\007\042"}, {0x1EAB, "\002\004\001\030\003\027\007\042"}, {0x1EAE, "\002\005\001\030\003\057\007\013"}, {0x1EAF, "\002\004\001\030\003\057\007\013"}, {0x1EB0, "\002\005\001\030\003\057\007\047"}, {0x1EB1, "\002\004\001\030\003\057\007\047"}, {0x1EB2, "\002\005\001\030\003\057\007\065\016"}, {0x1EB3, "\002\004\001\030\003\057\007\065\016"}, {0x1EB4, "\002\005\001\030\003\057\007\042"}, {0x1EB5, "\002\004\001\030\003\057\007\042"}, {0x1EB8, "\002\005\001\033\003\015\020"}, {0x1EB9, "\002\004\001\033\003\015\020"}, {0x1EBA, "\002\005\001\033\003\065\016"}, {0x1EBB, "\002\004\001\033\003\065\016"}, {0x1EBC, "\002\005\001\033\003\042"}, {0x1EBD, "\002\004\001\033\003\042"}, {0x1EBE, "\002\005\001\033\003\027\007\013"}, {0x1EBF, "\002\004\001\033\003\027\007\013"}, {0x1EC0, "\002\005\001\033\003\027\007\047"}, {0x1EC1, "\002\004\001\033\003\027\007\047"}, {0x1EC2, "\002\005\001\033\003\027\007\065\016"}, {0x1EC3, "\002\004\001\033\003\027\007\065\016"}, {0x1EC4, "\002\005\001\033\003\027\007\042"}, {0x1EC5, "\002\004\001\033\003\027\007\042"}, {0x1EC8, "\002\005\001\041\003\065\016"}, {0x1EC9, "\002\004\001\041\003\065\016"}, {0x1ECA, "\002\005\001\041\003\015\020"}, {0x1ECB, "\002\004\001\041\003\015\020"}, {0x1ECC, "\002\005\001\023\003\015\020"}, {0x1ECD, "\002\004\001\023\003\015\020"}, {0x1ECE, "\002\005\001\023\003\065\016"}, {0x1ECF, "\002\004\001\023\003\065\016"}, {0x1ED0, "\002\005\001\023\003\027\007\013"}, {0x1ED1, "\002\004\001\023\003\027\007\013"}, {0x1ED2, "\002\005\001\023\003\027\007\047"}, {0x1ED3, "\002\004\001\023\003\027\007\047"}, {0x1ED4, "\002\005\001\023\003\027\007\065\016"}, {0x1ED5, "\002\004\001\023\003\027\007\065\016"}, {0x1ED6, "\002\005\001\023\003\027\007\042"}, {0x1ED7, "\002\004\001\023\003\027\007\042"}, {0x1EDA, "\002\005\001\023\003\105\007\013"}, {0x1EDB, "\002\004\001\023\003\105\007\013"}, {0x1EDC, "\002\005\001\023\003\105\007\047"}, {0x1EDD, "\002\004\001\023\003\105\007\047"}, {0x1EDE, "\002\005\001\023\003\105\007\065\016"}, {0x1EDF, "\002\004\001\023\003\105\007\065\016"}, {0x1EE0, "\002\005\001\023\003\105\007\042"}, {0x1EE1, "\002\004\001\023\003\105\007\042"}, {0x1EE4, "\002\005\001\024\003\015\020"}, {0x1EE5, "\002\004\001\024\003\015\020"}, {0x1EE6, "\002\005\001\024\003\065\016"}, {0x1EE7, "\002\004\001\024\003\065\016"}, {0x1EE8, "\002\005\001\024\003\105\007\013"}, {0x1EE9, "\002\004\001\024\003\105\007\013"}, {0x1EEA, "\002\005\001\024\003\105\007\047"}, {0x1EEB, "\002\004\001\024\003\105\007\047"}, {0x1EEC, "\002\005\001\024\003\105\007\065\016"}, {0x1EED, "\002\004\001\024\003\105\007\065\016"}, {0x1EEE, "\002\005\001\024\003\105\007\042"}, {0x1EEF, "\002\004\001\024\003\105\007\042"}, {0x1EF2, "\002\005\001\102\003\047"}, {0x1EF3, "\002\004\001\102\003\047"}, {0x1EF4, "\002\005\001\102\003\015\020"}, {0x1EF5, "\002\004\001\102\003\015\020"}, {0x1EF6, "\002\005\001\102\003\065\016"}, {0x1EF7, "\002\004\001\102\003\065\016"}, {0x1EF8, "\002\005\001\102\003\042"}, {0x1EF9, "\002\004\001\102\003\042"}, {0x1FBF, "\012\252\322\343\376\034"}, {0x1FC0, "\012\320\341\376\031"}, {0x1FC1, "\012\037\007\320"}, {0x1FCD, "\012\252\007\334"}, {0x1FCE, "\012\252\007\013\147"}, {0x1FCF, "\012\252\007\320"}, {0x1FDD, "\012\231\007\334"}, {0x1FDE, "\012\231\007\013\147"}, {0x1FDF, "\012\231\007\320"}, {0x1FED, "\012\037\007\334"}, {0x1FEF, "\012\334\341\376\030"}, {0x1FFE, "\012\231\322\343\376\057"}, {0x2002, "\233\146"}, {0x2003, "\276\146"}, {0x2004, "\377\013\146"}, {0x2005, "\376\203\146"}, {0x2006, "\376\354\146"}, {0x2009, "\377\006\146"}, {0x200A, "\376\214\146"}, {0x2010, "\375\133"}, {0x2013, "\233\142"}, {0x2014, "\276\142"}, {0x2015, "\066\375\040"}, {0x2016, "\064\063\052"}, {0x2017, "\064\312\052"}, {0x2018, "\034\175\140\046"}, {0x2019, "\035\175\140\046"}, {0x201A, "\175\375\153\140\046"}, {0x201B, "\175\375\130\140\046"}, {0x201C, "\034\064\140\046"}, {0x201D, "\035\064\140\046"}, {0x201E, "\064\375\153\140\046"}, {0x201F, "\064\375\130\140\046"}, {0x2020, "\375\065"}, {0x2021, "\064\375\065"}, {0x2025, "\125\015\376\243"}, {0x2026, "\376\254\066\375\103"}, {0x2030, "\376\304\376\255\036"}, {0x2032, "\217"}, {0x2033, "\064\217"}, {0x2034, "\221\217"}, {0x2035, "\324\217"}, {0x2036, "\324\064\217"}, {0x2037, "\324\221\217"}, {0x2038, "\376\117"}, {0x2039, "\175\245\152\140\046"}, {0x203A, "\175\254\152\140\046"}, {0x203B, "\376\336\046"}, {0x203C, "\064\360\046"}, {0x203E, "\376\300"}, {0x2044, "\122\376\361"}, {0x2070, "\120\025\225"}, {0x2074, "\120\025\144"}, {0x2075, "\120\025\143"}, {0x2076, "\120\025\165"}, {0x2077, "\120\025\150"}, {0x2078, "\120\025\155"}, {0x2079, "\120\025\162"}, {0x207A, "\120\375\002\036"}, {0x207B, "\120\372"}, {0x207C, "\120\356\036"}, {0x207D, "\120\034\215"}, {0x207E, "\120\035\215"}, {0x207F, "\120\002\004\001\061"}, {0x2080, "\127\025\225"}, {0x2081, "\127\025\115"}, {0x2082, "\127\025\125"}, {0x2083, "\127\025\130"}, {0x2084, "\127\025\144"}, {0x2085, "\127\025\143"}, {0x2086, "\127\025\165"}, {0x2087, "\127\025\150"}, {0x2088, "\127\025\155"}, {0x2089, "\127\025\162"}, {0x208A, "\127\375\002\036"}, {0x208B, "\127\372"}, {0x208C, "\127\356\036"}, {0x208D, "\127\034\215"}, {0x208E, "\127\035\215"}, {0x20A4, "\376\244\036"}, {0x20A7, "\376\310\036"}, {0x20A9, "\377\033\036"}, {0x2103, "\350\376\122"}, {0x2105, "\376\116\110"}, {0x2109, "\350\376\163"}, {0x2116, "\376\270\036"}, {0x2117, "\330\376\335\375\061"}, {0x211E, "\376\317\376\375"}, {0x2120, "\376\350\046"}, {0x2122, "\377\015\046\036"}, {0x2126, "\376\272\036"}, {0x212B, "\376\071\036"}, {0x2153, "\131\122\115\377\007"}, {0x2154, "\131\122\125\377\010"}, {0x2155, "\131\122\115\376\175"}, {0x2156, "\131\122\125\362"}, {0x2157, "\131\122\130\362"}, {0x2158, "\131\122\144\362"}, {0x2159, "\131\122\115\376\357"}, {0x215A, "\131\122\143\376\360"}, {0x215B, "\131\122\115\352"}, {0x215C, "\131\122\130\353"}, {0x215D, "\131\122\143\353"}, {0x215E, "\131\122\150\353"}, {0x2160, "\062\055\115"}, {0x2161, "\062\055\125"}, {0x2162, "\062\055\130"}, {0x2163, "\062\055\144"}, {0x2164, "\062\055\143"}, {0x2165, "\062\055\165"}, {0x2166, "\062\055\150"}, {0x2167, "\062\055\155"}, {0x2168, "\062\055\162"}, {0x2169, "\062\055\332"}, {0x216A, "\062\055\354"}, {0x216B, "\062\055\375\015"}, {0x216C, "\062\055\375\110"}, {0x2170, "\004\062\055\115"}, {0x2171, "\004\062\055\125"}, {0x2172, "\004\062\055\130"}, {0x2173, "\004\062\055\144"}, {0x2174, "\004\062\055\143"}, {0x2175, "\004\062\055\165"}, {0x2176, "\004\062\055\150"}, {0x2177, "\004\062\055\155"}, {0x2178, "\004\062\055\162"}, {0x2179, "\004\062\055\332"}, {0x217A, "\004\062\055\354"}, {0x217B, "\004\062\055\375\015"}, {0x217C, "\004\062\055\375\110"}, {0x2190, "\375\150\135"}, {0x2191, "\377\022\135"}, {0x2192, "\375\005\135"}, {0x2193, "\376\152\135"}, {0x2194, "\034\035\135"}, {0x2195, "\053\054\135"}, {0x2196, "\375\173\375\271\135"}, {0x2197, "\375\173\375\100\135"}, {0x2198, "\375\241\375\100\135"}, {0x2199, "\375\241\375\271\135"}, {0x21C0, "\375\005\377\025\016\341\376\027"}, {0x21D0, "\375\150\064\135"}, {0x21D2, "\375\005\064\135"}, {0x21D4, "\034\035\064\135"}, {0x2200, "\376\201\375\033"}, {0x2202, "\375\001\376\146"}, {0x2203, "\377\004\376\162"}, {0x2205, "\376\160\326"}, {0x2206, "\376\227"}, {0x2207, "\376\261"}, {0x2208, "\376\157\110"}, {0x220B, "\376\131\376\075\376\252"}, {0x220F, "\375\165\376\322"}, {0x2211, "\375\165\376\367"}, {0x2212, "\372\036"}, {0x2213, "\376\256\036"}, {0x2217, "\375\036\203"}, {0x2218, "\141\203"}, {0x2219, "\375\047\203"}, {0x221A, "\126\376\342"}, {0x221D, "\376\326\111"}, {0x221E, "\376\230"}, {0x221F, "\035\152"}, {0x2220, "\152"}, {0x2225, "\376\302\111"}, {0x2227, "\375\152\007"}, {0x2228, "\375\152\214"}, {0x2229, "\376\231"}, {0x222A, "\377\021"}, {0x222B, "\240"}, {0x222C, "\064\240"}, {0x222E, "\376\132\240"}, {0x2234, "\377\005"}, {0x2235, "\376\106"}, {0x2236, "\376\331"}, {0x2237, "\376\325"}, {0x223C, "\042\203"}, {0x223E, "\306\376\242\070"}, {0x2243, "\376\076\156\111"}, {0x2245, "\375\035\156\111"}, {0x2248, "\376\064\156\111"}, {0x224C, "\375\033\156\111"}, {0x2253, "\376\225\110\214\375\035\156\111"}, {0x2260, "\251\156\111"}, {0x2261, "\376\222\111"}, {0x2264, "\311\214\156\111"}, {0x2265, "\303\214\156\111"}, {0x226A, "\375\164\311"}, {0x226B, "\375\164\303"}, {0x226E, "\251\311"}, {0x226F, "\251\303"}, {0x2282, "\375\246\110"}, {0x2283, "\375\247\110"}, {0x2286, "\375\246\110\214\156\111"}, {0x2287, "\375\247\110\214\156\111"}, {0x2299, "\026\015\203"}, {0x229A, "\026\141\203"}, {0x22A5, "\053\376\374"}, {0x22C5, "\015\203"}, {0x22EE, "\063\375\103"}, {0x2302, "\376\220"}, {0x2308, "\034\375\052"}, {0x2309, "\035\375\052"}, {0x230A, "\034\375\112"}, {0x230B, "\035\375\112"}, {0x2310, "\324\251\036"}, {0x2312, "\376\074"}, {0x2315, "\375\013\376\334"}, {0x2320, "\377\014\157\240"}, {0x2321, "\376\111\157\240"}, {0x2329, "\245\152\112"}, {0x232A, "\254\152\112"}, {0x2423, "\376\273\021"}, {0x2440, "\174\065"}, {0x2441, "\174\376\124"}, {0x2442, "\174\375\113"}, {0x2443, "\174\306\375\113"}, {0x2446, "\174\376\112\376\105\376\223"}, {0x2447, "\174\376\065\110\375\054"}, {0x2448, "\174\142"}, {0x2449, "\174\376\136\376\061\133"}, {0x2460, "\026\025\115"}, {0x2461, "\026\025\125"}, {0x2462, "\026\025\130"}, {0x2463, "\026\025\144"}, {0x2464, "\026\025\143"}, {0x2465, "\026\025\165"}, {0x2466, "\026\025\150"}, {0x2467, "\026\025\155"}, {0x2468, "\026\025\162"}, {0x2474, "\040\025\115"}, {0x2475, "\040\025\125"}, {0x2476, "\040\025\130"}, {0x2477, "\040\025\144"}, {0x2478, "\040\025\143"}, {0x2479, "\040\025\165"}, {0x247A, "\040\025\150"}, {0x247B, "\040\025\155"}, {0x247C, "\040\025\162"}, {0x2488, "\025\115\074\101"}, {0x2489, "\025\125\074\101"}, {0x248A, "\025\130\074\101"}, {0x248B, "\025\144\074\101"}, {0x248C, "\025\143\074\101"}, {0x248D, "\025\165\074\101"}, {0x248E, "\025\150\074\101"}, {0x248F, "\025\155\074\101"}, {0x2490, "\025\162\074\101"}, {0x2491, "\133\332\074\101"}, {0x2492, "\133\354\074\101"}, {0x2493, "\133\375\015\074\101"}, {0x2494, "\133\377\011\074\101"}, {0x2495, "\133\376\204\074\101"}, {0x2496, "\133\376\174\074\101"}, {0x2497, "\133\376\355\074\101"}, {0x2498, "\133\376\351\074\101"}, {0x2499, "\133\376\156\074\101"}, {0x249A, "\133\376\265\074\101"}, {0x249B, "\133\377\017\074\101"}, {0x249C, "\040\002\004\001\030"}, {0x249D, "\040\002\004\001\136"}, {0x249E, "\040\002\004\001\113"}, {0x249F, "\040\002\004\001\103"}, {0x24A0, "\040\002\004\001\033"}, {0x24A1, "\040\002\004\001\172"}, {0x24A2, "\040\002\004\001\075"}, {0x24A3, "\040\002\004\001\104"}, {0x24A4, "\040\002\004\001\041"}, {0x24A5, "\040\002\004\001\171"}, {0x24A6, "\040\002\004\001\123"}, {0x24A7, "\040\002\004\001\077"}, {0x24A8, "\040\002\004\001\145"}, {0x24A9, "\040\002\004\001\061"}, {0x24AA, "\040\002\004\001\023"}, {0x24AB, "\040\002\004\001\163"}, {0x24AC, "\040\002\004\001\220"}, {0x24AD, "\040\002\004\001\116"}, {0x24AE, "\040\002\004\001\070"}, {0x24AF, "\040\002\004\001\106"}, {0x24B0, "\040\002\004\001\024"}, {0x24B1, "\040\002\004\001\167"}, {0x24B2, "\040\002\004\001\121"}, {0x24B3, "\040\002\004\001\151"}, {0x24B4, "\040\002\004\001\102"}, {0x24B5, "\040\002\004\001\107"}, {0x24B6, "\026\002\005\001\030"}, {0x24B7, "\026\002\005\001\136"}, {0x24B8, "\026\002\005\001\113"}, {0x24B9, "\026\002\005\001\103"}, {0x24BA, "\026\002\005\001\033"}, {0x24BB, "\026\002\005\001\172"}, {0x24BC, "\026\002\005\001\075"}, {0x24BD, "\026\002\005\001\104"}, {0x24BE, "\026\002\005\001\041"}, {0x24BF, "\026\002\005\001\171"}, {0x24C0, "\026\002\005\001\123"}, {0x24C1, "\026\002\005\001\077"}, {0x24C2, "\026\002\005\001\145"}, {0x24C3, "\026\002\005\001\061"}, {0x24C4, "\026\002\005\001\023"}, {0x24C5, "\026\002\005\001\163"}, {0x24C6, "\026\002\005\001\220"}, {0x24C7, "\026\002\005\001\116"}, {0x24C8, "\026\002\005\001\070"}, {0x24C9, "\026\002\005\001\106"}, {0x24CA, "\026\002\005\001\024"}, {0x24CB, "\026\002\005\001\167"}, {0x24CC, "\026\002\005\001\121"}, {0x24CD, "\026\002\005\001\151"}, {0x24CE, "\026\002\005\001\102"}, {0x24CF, "\026\002\005\001\107"}, {0x24D0, "\026\002\004\001\030"}, {0x24D1, "\026\002\004\001\136"}, {0x24D2, "\026\002\004\001\113"}, {0x24D3, "\026\002\004\001\103"}, {0x24D4, "\026\002\004\001\033"}, {0x24D5, "\026\002\004\001\172"}, {0x24D6, "\026\002\004\001\075"}, {0x24D7, "\026\002\004\001\104"}, {0x24D8, "\026\002\004\001\041"}, {0x24D9, "\026\002\004\001\171"}, {0x24DA, "\026\002\004\001\123"}, {0x24DB, "\026\002\004\001\077"}, {0x24DC, "\026\002\004\001\145"}, {0x24DD, "\026\002\004\001\061"}, {0x24DE, "\026\002\004\001\023"}, {0x24DF, "\026\002\004\001\163"}, {0x24E0, "\026\002\004\001\220"}, {0x24E1, "\026\002\004\001\116"}, {0x24E2, "\026\002\004\001\070"}, {0x24E3, "\026\002\004\001\106"}, {0x24E4, "\026\002\004\001\024"}, {0x24E5, "\026\002\004\001\167"}, {0x24E6, "\026\002\004\001\121"}, {0x24E7, "\026\002\004\001\151"}, {0x24E8, "\026\002\004\001\102"}, {0x24E9, "\026\002\004\001\107"}, {0x24EA, "\026\025\225"}, {0x2500, "\021\022\031\066"}, {0x2502, "\021\022\031\063"}, {0x2504, "\021\022\031\221\142\066"}, {0x2505, "\021\022\032\221\142\066"}, {0x2506, "\021\022\031\221\142\063"}, {0x2507, "\021\022\032\221\142\063"}, {0x2508, "\021\022\031\323\142\066"}, {0x2509, "\021\022\032\323\142\066"}, {0x250A, "\021\022\031\323\142\063"}, {0x250B, "\021\022\032\323\142\063"}, {0x250C, "\021\022\031\054\007\035"}, {0x2510, "\021\022\031\054\007\034"}, {0x2514, "\021\022\031\053\007\035"}, {0x2518, "\021\022\031\053\007\034"}, {0x251C, "\021\022\031\063\007\035"}, {0x251E, "\021\022\053\032\007\035\054\031"}, {0x251F, "\021\022\054\032\007\035\053\031"}, {0x2521, "\021\022\054\031\007\035\053\032"}, {0x2522, "\021\022\053\031\007\035\054\032"}, {0x2524, "\021\022\031\063\007\034"}, {0x2526, "\021\022\053\032\007\034\054\031"}, {0x2527, "\021\022\054\032\007\034\053\031"}, {0x2529, "\021\022\054\031\007\034\053\032"}, {0x252A, "\021\022\053\031\007\034\054\032"}, {0x252C, "\021\022\031\054\007\066"}, {0x252D, "\021\022\034\032\007\035\054\031"}, {0x252E, "\021\022\035\032\007\034\054\031"}, {0x2531, "\021\022\035\031\007\034\054\032"}, {0x2532, "\021\022\034\031\007\035\054\032"}, {0x2534, "\021\022\031\053\007\066"}, {0x2535, "\021\022\034\032\007\035\053\031"}, {0x2536, "\021\022\035\032\007\034\053\031"}, {0x2539, "\021\022\035\031\007\034\053\032"}, {0x253A, "\021\022\034\031\007\035\053\032"}, {0x253C, "\021\022\031\063\007\066"}, {0x253D, "\021\022\034\032\007\035\063\031"}, {0x253E, "\021\022\035\032\007\034\063\031"}, {0x2540, "\021\022\053\032\007\054\066\031"}, {0x2541, "\021\022\054\032\007\053\066\031"}, {0x2547, "\021\022\054\031\007\053\066\032"}, {0x2548, "\021\022\053\031\007\054\066\032"}, {0x2549, "\021\022\035\031\007\034\063\032"}, {0x254A, "\021\022\034\031\007\035\063\032"}, {0x2550, "\021\022\032\066"}, {0x2551, "\021\022\032\063"}, {0x2552, "\021\022\054\031\007\035\032"}, {0x2553, "\021\022\054\032\007\035\031"}, {0x2554, "\021\022\032\054\007\035"}, {0x2555, "\021\022\054\031\007\034\032"}, {0x2556, "\021\022\054\032\007\034\031"}, {0x2557, "\021\022\032\054\007\034"}, {0x2558, "\021\022\053\031\007\035\032"}, {0x2559, "\021\022\053\032\007\035\031"}, {0x255A, "\021\022\032\053\007\035"}, {0x255B, "\021\022\053\031\007\034\032"}, {0x255C, "\021\022\053\032\007\034\031"}, {0x255D, "\021\022\032\053\007\034"}, {0x255E, "\021\022\063\031\007\035\032"}, {0x255F, "\021\022\063\032\007\035\031"}, {0x2560, "\021\022\032\063\007\035"}, {0x2561, "\021\022\063\031\007\034\032"}, {0x2562, "\021\022\063\032\007\034\031"}, {0x2563, "\021\022\032\063\007\034"}, {0x2564, "\021\022\054\031\007\066\032"}, {0x2565, "\021\022\054\032\007\066\031"}, {0x2566, "\021\022\032\054\007\066"}, {0x2567, "\021\022\053\031\007\066\032"}, {0x2568, "\021\022\053\032\007\066\031"}, {0x2569, "\021\022\032\053\007\066"}, {0x256A, "\021\022\063\031\007\066\032"}, {0x256B, "\021\022\063\032\007\066\031"}, {0x256C, "\021\022\032\063\007\066"}, {0x2571, "\021\022\031\351\264\035\111\173\034"}, {0x2572, "\021\022\031\351\264\034\111\173\035"}, {0x2580, "\264\157\207"}, {0x2584, "\173\157\207"}, {0x2588, "\074\207"}, {0x258C, "\034\157\207"}, {0x2590, "\035\157\207"}, {0x2591, "\031\375\006"}, {0x2592, "\375\156\375\006"}, {0x2593, "\376\142\375\006"}, {0x25A0, "\071\126"}, {0x25A1, "\067\126"}, {0x25A2, "\067\126\003\376\343\376\133"}, {0x25A3, "\067\126\376\130\071\004\126"}, {0x25A4, "\126\003\066\213"}, {0x25A5, "\126\003\063\213"}, {0x25A6, "\126\003\376\275\375\062\213"}, {0x25A7, "\126\003\264\034\111\173\035\213"}, {0x25A8, "\126\003\264\035\111\173\034\213"}, {0x25A9, "\126\003\351\375\062\213"}, {0x25AA, "\071\004\126"}, {0x25AC, "\071\375\214"}, {0x25AD, "\067\375\214"}, {0x25B2, "\071\375\264\166"}, {0x25B3, "\067\375\264\166"}, {0x25B7, "\067\254\166"}, {0x25BA, "\071\254\166"}, {0x25BC, "\071\375\074\166"}, {0x25BD, "\067\375\074\166"}, {0x25C1, "\067\245\166"}, {0x25C4, "\071\245\166"}, {0x25C6, "\071\275"}, {0x25C7, "\067\275"}, {0x25CA, "\376\246"}, {0x25CB, "\067\210"}, {0x25CE, "\376\114"}, {0x25CF, "\071\210"}, {0x25D0, "\210\003\034\157\071"}, {0x25D1, "\210\003\035\157\071"}, {0x25D8, "\375\136\375\047"}, {0x25D9, "\375\136\067\210"}, {0x25E2, "\071\173\035\166"}, {0x25E3, "\071\173\034\166"}, {0x25EF, "\210\375\360\376\026"}, {0x2605, "\071\375\243"}, {0x2606, "\067\375\243"}, {0x260E, "\071\375\013"}, {0x260F, "\067\375\013"}, {0x261C, "\067\034\375\205\364"}, {0x261E, "\067\035\375\205\364"}, {0x263A, "\067\375\237\375\107"}, {0x263B, "\071\375\237\375\107"}, {0x263C, "\067\376\370\003\376\332"}, {0x2640, "\376\166\036"}, {0x2642, "\376\247\036"}, {0x2660, "\071\375\242\176"}, {0x2661, "\067\375\125\176"}, {0x2662, "\067\275\176"}, {0x2663, "\071\375\056\176"}, {0x2664, "\067\375\242\176"}, {0x2665, "\071\375\125\176"}, {0x2666, "\071\275\176"}, {0x2667, "\067\375\056\176"}, {0x2669, "\375\211\375\174"}, {0x266A, "\352\375\174"}, {0x266B, "\375\041\352\375\175"}, {0x266C, "\375\041\376\356\375\175"}, {0x266D, "\373\376\200\036"}, {0x266E, "\373\376\262\036"}, {0x266F, "\373\375\231\036"}, {0x2713, "\375\054\046"}, {0x2717, "\376\104\151"}, {0x2720, "\376\250\376\134"}, {0x3000, "\201\146"}, {0x3001, "\201\346"}, {0x3002, "\201\376\306"}, {0x3003, "\375\071\046"}, {0x3005, "\201\241\046"}, {0x3006, "\201\376\125\046"}, {0x3007, "\201\133\225"}, {0x300A, "\034\064\152\112"}, {0x300B, "\035\064\152\112"}, {0x300C, "\034\273\112"}, {0x300D, "\035\273\112"}, {0x300E, "\034\067\273\112"}, {0x300F, "\035\067\273\112"}, {0x3010, "\034\071\310\112"}, {0x3011, "\035\071\310\112"}, {0x3012, "\376\314\046"}, {0x3013, "\376\206\046"}, {0x3014, "\034\375\256\375\233\112"}, {0x3015, "\035\375\256\375\233\112"}, {0x3016, "\034\067\310\112"}, {0x3017, "\035\067\310\112"}, {0x301C, "\377\032\142"}, {0x3041, "\017\001\004\030"}, {0x3042, "\017\001\030"}, {0x3043, "\017\001\004\041"}, {0x3044, "\017\001\041"}, {0x3045, "\017\001\004\024"}, {0x3046, "\017\001\024"}, {0x3047, "\017\001\004\033"}, {0x3048, "\017\001\033"}, {0x3049, "\017\001\004\023"}, {0x304A, "\017\001\023"}, {0x304B, "\017\001\243"}, {0x304C, "\017\001\375\114"}, {0x304D, "\017\001\375\143"}, {0x304E, "\017\001\375\117"}, {0x304F, "\017\001\375\146"}, {0x3050, "\017\001\375\122"}, {0x3051, "\017\001\367"}, {0x3052, "\017\001\375\116"}, {0x3053, "\017\001\375\145"}, {0x3054, "\017\001\375\121"}, {0x3055, "\017\001\375\222"}, {0x3056, "\017\001\375\301"}, {0x3057, "\017\001\375\235"}, {0x3058, "\017\001\375\304"}, {0x3059, "\017\001\375\245"}, {0x305A, "\017\001\375\306"}, {0x305B, "\017\001\375\224"}, {0x305C, "\017\001\340"}, {0x305D, "\017\001\375\240"}, {0x305E, "\017\001\375\305"}, {0x305F, "\017\001\375\250"}, {0x3060, "\017\001\375\064"}, {0x3061, "\017\001\375\255"}, {0x3062, "\017\001\375\067"}, {0x3063, "\017\001\004\333"}, {0x3064, "\017\001\333"}, {0x3065, "\017\001\375\075"}, {0x3066, "\017\001\331"}, {0x3067, "\017\001\274"}, {0x3068, "\017\001\111"}, {0x3069, "\017\001\375\073"}, {0x306A, "\017\001\375\166"}, {0x306B, "\017\001\375\171"}, {0x306C, "\017\001\315"}, {0x306D, "\017\001\375\167"}, {0x306E, "\017\001\374"}, {0x306F, "\017\001\304"}, {0x3070, "\017\001\375\037"}, {0x3071, "\017\001\375\202"}, {0x3072, "\017\001\375\127"}, {0x3073, "\017\001\375\042"}, {0x3074, "\017\001\321"}, {0x3075, "\017\001\375\132"}, {0x3076, "\017\001\375\046"}, {0x3077, "\017\001\375\210"}, {0x3078, "\017\001\363"}, {0x3079, "\017\001\272"}, {0x307A, "\017\001\216"}, {0x307B, "\017\001\375\131"}, {0x307C, "\017\001\375\044"}, {0x307D, "\017\001\375\204"}, {0x307E, "\017\001\375\154"}, {0x307F, "\017\001\375\162"}, {0x3080, "\017\001\314"}, {0x3081, "\017\001\375\155"}, {0x3082, "\017\001\375\163"}, {0x3083, "\017\001\004\222"}, {0x3084, "\017\001\222"}, {0x3085, "\017\001\004\224"}, {0x3086, "\017\001\224"}, {0x3087, "\017\001\004\337"}, {0x3088, "\017\001\337"}, {0x3089, "\017\001\375\212"}, {0x308A, "\017\001\375\217"}, {0x308B, "\017\001\375\221"}, {0x308C, "\017\001\375\213"}, {0x308D, "\017\001\375\220"}, {0x308E, "\017\001\004\335"}, {0x308F, "\017\001\335"}, {0x3090, "\017\001\375\272"}, {0x3091, "\017\001\375\270"}, {0x3092, "\017\001\375\273"}, {0x3093, "\017\001\061"}, {0x3094, "\017\001\375\267"}, {0x309B, "\366\375\020\330\046"}, {0x309C, "\366\376\346\330\046"}, {0x309D, "\017\241\046"}, {0x309E, "\017\375\020\241\046"}, {0x30A1, "\014\001\004\030"}, {0x30A2, "\014\001\030"}, {0x30A3, "\014\001\004\041"}, {0x30A4, "\014\001\041"}, {0x30A5, "\014\001\004\024"}, {0x30A6, "\014\001\024"}, {0x30A7, "\014\001\004\033"}, {0x30A8, "\014\001\033"}, {0x30A9, "\014\001\004\023"}, {0x30AA, "\014\001\023"}, {0x30AB, "\014\001\243"}, {0x30AC, "\014\001\375\114"}, {0x30AD, "\014\001\375\143"}, {0x30AE, "\014\001\375\117"}, {0x30AF, "\014\001\375\146"}, {0x30B0, "\014\001\375\122"}, {0x30B1, "\014\001\367"}, {0x30B2, "\014\001\375\116"}, {0x30B3, "\014\001\375\145"}, {0x30B4, "\014\001\375\121"}, {0x30B5, "\014\001\375\222"}, {0x30B6, "\014\001\375\301"}, {0x30B7, "\014\001\375\235"}, {0x30B8, "\014\001\375\304"}, {0x30B9, "\014\001\375\245"}, {0x30BA, "\014\001\375\306"}, {0x30BB, "\014\001\375\224"}, {0x30BC, "\014\001\340"}, {0x30BD, "\014\001\375\240"}, {0x30BE, "\014\001\375\305"}, {0x30BF, "\014\001\375\250"}, {0x30C0, "\014\001\375\064"}, {0x30C1, "\014\001\375\255"}, {0x30C2, "\014\001\375\067"}, {0x30C3, "\014\001\004\333"}, {0x30C4, "\014\001\333"}, {0x30C5, "\014\001\375\075"}, {0x30C6, "\014\001\331"}, {0x30C7, "\014\001\274"}, {0x30C8, "\014\001\111"}, {0x30C9, "\014\001\375\073"}, {0x30CA, "\014\001\375\166"}, {0x30CB, "\014\001\375\171"}, {0x30CC, "\014\001\315"}, {0x30CD, "\014\001\375\167"}, {0x30CE, "\014\001\374"}, {0x30CF, "\014\001\304"}, {0x30D0, "\014\001\375\037"}, {0x30D1, "\014\001\375\202"}, {0x30D2, "\014\001\375\127"}, {0x30D3, "\014\001\375\042"}, {0x30D4, "\014\001\321"}, {0x30D5, "\014\001\375\132"}, {0x30D6, "\014\001\375\046"}, {0x30D7, "\014\001\375\210"}, {0x30D8, "\014\001\363"}, {0x30D9, "\014\001\272"}, {0x30DA, "\014\001\216"}, {0x30DB, "\014\001\375\131"}, {0x30DC, "\014\001\375\044"}, {0x30DD, "\014\001\375\204"}, {0x30DE, "\014\001\375\154"}, {0x30DF, "\014\001\375\162"}, {0x30E0, "\014\001\314"}, {0x30E1, "\014\001\375\155"}, {0x30E2, "\014\001\375\163"}, {0x30E3, "\014\001\004\222"}, {0x30E4, "\014\001\222"}, {0x30E5, "\014\001\004\224"}, {0x30E6, "\014\001\224"}, {0x30E7, "\014\001\004\337"}, {0x30E8, "\014\001\337"}, {0x30E9, "\014\001\375\212"}, {0x30EA, "\014\001\375\217"}, {0x30EB, "\014\001\375\221"}, {0x30EC, "\014\001\375\213"}, {0x30ED, "\014\001\375\220"}, {0x30EE, "\014\001\004\335"}, {0x30EF, "\014\001\335"}, {0x30F0, "\014\001\375\272"}, {0x30F1, "\014\001\375\270"}, {0x30F2, "\014\001\375\273"}, {0x30F3, "\014\001\061"}, {0x30F4, "\014\001\375\267"}, {0x30F5, "\014\001\004\243"}, {0x30F6, "\014\001\004\367"}, {0x30F7, "\014\001\377\023"}, {0x30F8, "\014\001\377\027"}, {0x30F9, "\014\001\375\017"}, {0x30FA, "\014\001\377\030"}, {0x30FB, "\014\247\015"}, {0x30FC, "\366\376\324\330\046"}, {0x30FD, "\014\241\046"}, {0x30FE, "\014\375\020\241\046"}, {0x3105, "\043\001\136"}, {0x3106, "\043\001\163"}, {0x3107, "\043\001\145"}, {0x3108, "\043\001\172"}, {0x3109, "\043\001\103"}, {0x310A, "\043\001\106"}, {0x310B, "\043\001\061"}, {0x310C, "\043\001\077"}, {0x310D, "\043\001\075"}, {0x310E, "\043\001\123"}, {0x310F, "\043\001\104"}, {0x3110, "\043\001\171"}, {0x3111, "\043\001\220"}, {0x3112, "\043\001\151"}, {0x3113, "\043\001\377\040"}, {0x3114, "\043\001\376\123"}, {0x3115, "\043\001\376\352"}, {0x3116, "\043\001\116"}, {0x3117, "\043\001\107"}, {0x3118, "\043\001\113"}, {0x3119, "\043\001\070"}, {0x311A, "\043\001\030"}, {0x311B, "\043\001\023"}, {0x311C, "\043\001\033"}, {0x311D, "\043\001\376\154"}, {0x311E, "\043\001\376\063"}, {0x311F, "\043\001\376\155"}, {0x3120, "\043\001\376\100"}, {0x3121, "\043\001\376\276"}, {0x3122, "\043\001\376\067"}, {0x3123, "\043\001\233"}, {0x3124, "\043\001\376\070"}, {0x3125, "\043\001\355"}, {0x3126, "\043\001\357"}, {0x3127, "\043\001\041"}, {0x3128, "\043\001\024"}, {0x3129, "\043\001\376\232"}, {0x312A, "\043\001\167"}, {0x312B, "\043\001\376\264"}, {0x312C, "\043\001\376\210"}, {0x3220, "\040\161\115"}, {0x3221, "\040\161\125"}, {0x3222, "\040\161\130"}, {0x3223, "\040\161\144"}, {0x3224, "\040\161\143"}, {0x3225, "\040\161\165"}, {0x3226, "\040\161\150"}, {0x3227, "\040\161\155"}, {0x3228, "\040\161\162"}, {0x3229, "\040\161\332"}, {0x327F, "\376\237\376\363\376\371"}, {0x33C2, "\376\072\375\160\036\342\376\023"}, {0x33D8, "\376\313\375\160\036\342\376\024"}, {0xE000, "\100\377\020\375\023\375\027\117\164"}, {0xE001, "\100\037\003\147\375\357\376\040"}, {0xE002, "\100\047\147\132\376\041\117"}, {0xE003, "\100\013\147\132\376\042\117"}, {0xE004, "\100\027\147\132\376\043"}, {0xE005, "\100\042\132\376\044\117\164"}, {0xE006, "\100\050\132\376\045\117\164"}, {0xE007, "\100\057\132\376\046\117\164"}, {0xE008, "\100\015\016\132\376\047\117\164"}, {0xE009, "\100\037\132\376\050\117\164"}, {0xE00A, "\100\141\016\132\376\051\117\164"}, {0xE00B, "\100\060\132\376\052\117\164"}, {0xE00C, "\100\312\052\132\375\030\117"}, {0xE00D, "\100\064\376\062\132\375\030\117"}, {0xE00E, "\100\134\132\375\031\117\164"}, {0xE00F, "\100\045\132\375\031\117\164"}, {0xE010, "\100\064\312\052\375\023\376\053\117"}, {0xE011, "\100\376\245\375\011\375\355\375\027\117"}, {0xE012, "\012\100\252\322\344\376\054"}, {0xE013, "\012\100\231\322\344\376\055"}, {0xE014, "\012\100\170\020\344\376\056\117"}, {0xE015, "\201\375\071\046"}, {0xE016, "\006\001\073\044\010\375\060\375\347\376\036"}, {0xE017, "\377\001\375\060\036\342\376\025"}, {0xE018, "\375\016\146\030\375\024\376\032"}, {0xE019, "\375\016\146\136\375\024\376\033"}, {0xE01A, "\012\004\001\375\244"}, {0xE01B, "\012\004\001\375\070"}, {0xE01C, "\012\004\001\307"}, {0xE01D, "\012\004\001\375\223"}, {0xE01F, "\376\153\376\213\036\375\346\376\037"}, {0xE024, "\376\233\377\012\052\003\375\170\052\375\362"}, {0xFB00, "\002\004\114\376\170"}, {0xFB01, "\002\004\114\376\173"}, {0xFB02, "\002\004\114\376\177"}, {0xFB03, "\002\004\114\376\171"}, {0xFB04, "\002\004\114\376\172"}, {0xFB06, "\002\004\114\376\362"}, {0xFE7D, "\006\375\230\072\010"}, {0xFE82, "\006\001\073\003\313\016\044\010"}, {0xFE84, "\006\001\073\003\160\016\044\010"}, {0xFE8D, "\006\001\073\051\010"}, {0xFE8E, "\006\001\073\044\010"}, {0xFE8F, "\006\001\227\051\010"}, {0xFE90, "\006\001\227\044\010"}, {0xFE91, "\006\001\227\076\010"}, {0xFE92, "\006\001\227\072\010"}, {0xFE93, "\006\001\177\371\051\010"}, {0xFE94, "\006\001\177\371\044\010"}, {0xFE95, "\006\001\177\051\010"}, {0xFE96, "\006\001\177\044\010"}, {0xFE97, "\006\001\177\076\010"}, {0xFE98, "\006\001\177\072\010"}, {0xFE99, "\006\001\263\051\010"}, {0xFE9A, "\006\001\263\044\010"}, {0xFE9B, "\006\001\263\076\010"}, {0xFE9C, "\006\001\263\072\010"}, {0xFE9D, "\006\001\242\051\010"}, {0xFE9E, "\006\001\242\044\010"}, {0xFE9F, "\006\001\242\076\010"}, {0xFEA0, "\006\001\242\072\010"}, {0xFEA1, "\006\001\236\051\010"}, {0xFEA2, "\006\001\236\044\010"}, {0xFEA3, "\006\001\236\076\010"}, {0xFEA4, "\006\001\236\072\010"}, {0xFEA5, "\006\001\244\051\010"}, {0xFEA6, "\006\001\244\044\010"}, {0xFEA7, "\006\001\244\076\010"}, {0xFEA8, "\006\001\244\072\010"}, {0xFEA9, "\006\001\347\051\010"}, {0xFEAA, "\006\001\347\044\010"}, {0xFEAB, "\006\001\375\014\051\010"}, {0xFEAC, "\006\001\375\014\044\010"}, {0xFEAD, "\006\001\375\004\051\010"}, {0xFEAE, "\006\001\375\004\044\010"}, {0xFEAF, "\006\001\375\021\051\010"}, {0xFEB0, "\006\001\375\021\044\010"}, {0xFEB1, "\006\001\256\051\010"}, {0xFEB2, "\006\001\256\044\010"}, {0xFEB3, "\006\001\256\076\010"}, {0xFEB4, "\006\001\256\072\010"}, {0xFEB5, "\006\001\257\051\010"}, {0xFEB6, "\006\001\257\044\010"}, {0xFEB7, "\006\001\257\076\010"}, {0xFEB8, "\006\001\257\072\010"}, {0xFEB9, "\006\001\255\051\010"}, {0xFEBA, "\006\001\255\044\010"}, {0xFEBB, "\006\001\255\076\010"}, {0xFEBC, "\006\001\255\072\010"}, {0xFEBD, "\006\001\230\051\010"}, {0xFEBE, "\006\001\230\044\010"}, {0xFEBF, "\006\001\230\076\010"}, {0xFEC0, "\006\001\230\072\010"}, {0xFEC1, "\006\001\262\051\010"}, {0xFEC2, "\006\001\262\044\010"}, {0xFEC3, "\006\001\262\076\010"}, {0xFEC4, "\006\001\262\072\010"}, {0xFEC5, "\006\001\265\051\010"}, {0xFEC6, "\006\001\265\044\010"}, {0xFEC7, "\006\001\265\076\010"}, {0xFEC8, "\006\001\265\072\010"}, {0xFEC9, "\006\001\226\051\010"}, {0xFECA, "\006\001\226\044\010"}, {0xFECB, "\006\001\226\076\010"}, {0xFECC, "\006\001\226\072\010"}, {0xFECD, "\006\001\235\051\010"}, {0xFECE, "\006\001\235\044\010"}, {0xFECF, "\006\001\235\076\010"}, {0xFED0, "\006\001\235\072\010"}, {0xFED1, "\006\001\234\051\010"}, {0xFED2, "\006\001\234\044\010"}, {0xFED3, "\006\001\234\076\010"}, {0xFED4, "\006\001\234\072\010"}, {0xFED5, "\006\001\253\051\010"}, {0xFED6, "\006\001\253\044\010"}, {0xFED7, "\006\001\253\076\010"}, {0xFED8, "\006\001\253\072\010"}, {0xFED9, "\006\001\202\051\010"}, {0xFEDA, "\006\001\202\044\010"}, {0xFEDB, "\006\001\202\076\010"}, {0xFEDC, "\006\001\202\072\010"}, {0xFEDD, "\006\001\137\051\010"}, {0xFEDE, "\006\001\137\044\010"}, {0xFEDF, "\006\001\137\076\010"}, {0xFEE0, "\006\001\137\072\010"}, {0xFEE1, "\006\001\246\051\010"}, {0xFEE2, "\006\001\246\044\010"}, {0xFEE3, "\006\001\246\076\010"}, {0xFEE4, "\006\001\246\072\010"}, {0xFEE5, "\006\001\250\051\010"}, {0xFEE6, "\006\001\250\044\010"}, {0xFEE7, "\006\001\250\076\010"}, {0xFEE8, "\006\001\250\072\010"}, {0xFEE9, "\006\001\237\051\010"}, {0xFEEA, "\006\001\237\044\010"}, {0xFEEB, "\006\001\237\076\010"}, {0xFEEC, "\006\001\237\072\010"}, {0xFEED, "\006\001\336\051\010"}, {0xFEEE, "\006\001\336\044\010"}, {0xFEEF, "\006\001\073\370\051\010"}, {0xFEF0, "\006\001\073\370\044\010"}, {0xFEF1, "\006\001\223\051\010"}, {0xFEF2, "\006\001\223\044\010"}, {0xFEF3, "\006\001\223\076\010"}, {0xFEF4, "\006\001\223\072\010"}, {0xFEF5, "\006\114\137\003\073\003\313\016"}, {0xFEF6, "\006\114\137\003\073\003\313\016"}, {0xFEF7, "\006\114\137\003\073\003\160\016"}, {0xFEF8, "\006\114\137\003\073\003\160\016"}, {0xFEF9, "\006\114\137\003\073\003\160\020"}, {0xFEFA, "\006\114\137\003\073\003\160\020"}, {0xFEFB, "\006\114\137\003\073\051\010"}, {0xFEFC, "\006\114\137\003\073\044\010"}, }; recode-3.7.15/src/lat1asci.c0000644000175000017500000001617214374760602011205 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" static const char *const translation_table[128] = { NULL, /* 128 */ NULL, /* 129 */ NULL, /* 130 */ NULL, /* 131 */ NULL, /* 132 */ NULL, /* 133 */ NULL, /* 134 */ NULL, /* 135 */ NULL, /* 136 */ NULL, /* 137 */ NULL, /* 138 */ NULL, /* 139 */ NULL, /* 140 */ NULL, /* 141 */ NULL, /* 142 */ NULL, /* 143 */ NULL, /* 144 */ NULL, /* 145 */ NULL, /* 146 */ NULL, /* 147 */ NULL, /* 148 */ NULL, /* 149 */ NULL, /* 150 */ NULL, /* 151 */ NULL, /* 152 */ NULL, /* 153 */ NULL, /* 154 */ NULL, /* 155 */ NULL, /* 156 */ NULL, /* 157 */ NULL, /* 158 */ NULL, /* 159 */ " ", /* 160 no-break space */ NULL, /* 161 inverted exclamation mark */ NULL, /* 162 cent sign */ NULL, /* 163 pound sign */ NULL, /* 164 currency sign */ NULL, /* 165 yen sign */ NULL, /* 166 broken bar */ NULL, /* 167 paragraph sign, section sign */ NULL, /* 168 diaeresis */ NULL, /* 169 copyright sign */ NULL, /* 170 feminine ordinal indicator */ "<\b\"", /* 171 left angle quotation mark */ NULL, /* 172 not sign */ NULL, /* 173 soft hyphen */ NULL, /* 174 registered trade mark sign */ NULL, /* 175 macron */ NULL, /* 176 degree sign */ NULL, /* 177 plus-minus sign */ NULL, /* 178 superscript two */ NULL, /* 179 superscript three */ NULL, /* 180 acute accent */ NULL, /* 181 small greek mu, micro sign */ NULL, /* 182 pilcrow sign */ NULL, /* 183 middle dot */ NULL, /* 184 cedilla */ NULL, /* 185 superscript one */ NULL, /* 186 masculine ordinal indicator */ ">\b\"", /* 187 right angle quotation mark */ NULL, /* 188 vulgar fraction one quarter */ NULL, /* 189 vulgar fraction one half */ NULL, /* 190 vulgar fraction three quarters */ NULL, /* 191 inverted question mark */ "`\bA", /* 192 capital A with grave accent */ "'\bA", /* 193 capital A with acute accent */ "^\bA", /* 194 capital A with circumflex accent */ "~\bA", /* 195 capital A with tilde */ "\"\bA", /* 196 capital A diaeresis */ NULL, /* 197 capital A with ring above */ NULL, /* 198 capital diphthong A with E */ ",\bC", /* 199 capital C with cedilla */ "`\bE", /* 200 capital E with grave accent */ "'\bE", /* 201 capital E with acute accent */ "^\bE", /* 202 capital E with circumflex accent */ "\"\bE", /* 203 capital E with diaeresis */ "`\bI", /* 204 capital I with grave accent */ "'\bI", /* 205 capital I with acute accent */ "^\bI", /* 206 capital I with circumflex accent */ "\"\bI", /* 207 capital I with diaeresis */ NULL, /* 208 capital icelandic ETH */ "~\bN", /* 209 capital N with tilde */ "`\bO", /* 210 capital O with grave accent */ "'\bO", /* 211 capital O with acute accent */ "^\bO", /* 212 capital O with circumflex accent */ "~\bO", /* 213 capital O with tilde */ "\"\bO", /* 214 capital O with diaeresis */ NULL, /* 215 multiplication sign */ "/\bO", /* 216 capital O with oblique stroke */ "`\bU", /* 217 capital U with grave accent */ "'\bU", /* 218 capital U with acute accent */ "^\bU", /* 219 capital U with circumflex accent */ "\"\bU", /* 220 capital U with diaeresis */ "'\bY", /* 221 capital Y with acute accent */ NULL, /* 222 capital icelandic THORN */ "\"\bs", /* 223 small german sharp s */ "`\ba", /* 224 small a with grave accent */ "'\ba", /* 225 small a with acute accent */ "^\ba", /* 226 small a with circumflex accent */ "~\ba", /* 227 small a with tilde */ "\"\ba", /* 228 small a with diaeresis */ NULL, /* 229 small a with ring above */ NULL, /* 230 small diphthong a with e */ ",\bc", /* 231 small c with cedilla */ "`\be", /* 232 small e with grave accent */ "'\be", /* 233 small e with acute accent */ "^\be", /* 234 small e with circumflex accent */ "\"\be", /* 235 small e with diaeresis */ "`\bi", /* 236 small i with grave accent */ "'\bi", /* 237 small i with acute accent */ "^\bi", /* 238 small i with circumflex accent */ "\"\bi", /* 239 small i with diaeresis */ NULL, /* 240 small icelandic eth */ "~\bn", /* 241 small n with tilde */ "`\bo", /* 242 small o with grave accent */ "'\bo", /* 243 small o with acute accent */ "^\bo", /* 244 small o with circumflex accent */ "~\bo", /* 245 small o with tilde */ "\"\bo", /* 246 small o with diaeresis */ NULL, /* 247 division sign */ "/\bo", /* 248 small o with oblique stroke */ "`\bu", /* 249 small u with grave accent */ "'\bu", /* 250 small u with acute accent */ "^\bu", /* 251 small u with circumflex accent */ "\"\bu", /* 252 small u with diaeresis */ "'\by", /* 253 small y with acute accent */ NULL, /* 254 small icelandic thorn */ "\"\by", /* 255 small y with diaeresis */ }; static bool init_latin1_ascii (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; const char **table; char *pool; unsigned counter; if (before_options || after_options) return false; if (!ALLOC_SIZE (table, 256 * sizeof (char *) + 256, const char *)) return false; pool = (char *) (table + 256); for (counter = 0; counter < 128; counter++) { table[counter] = pool; *pool++ = counter; *pool++ = NUL; } for (; counter < 256; counter++) table[counter] = translation_table[counter - 128]; step->step_type = RECODE_BYTE_TO_STRING; step->step_table = table; step->step_table_term_routine = free; return true; } bool module_latin1_ascii (RECODE_OUTER outer) { if (!recode_declare_single (outer, "Latin-1", "ASCII-BS", outer->quality_byte_to_variable, init_latin1_ascii, recode_transform_byte_to_variable)) return false; return true; } void delmodule_latin1_ascii (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/src/btexlat1.l0000644000175000017500000001712614374760602011241 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2018 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, see . */ /* Step name: bibtex_latin1. */ Letter [a-zA-Z] Braces [ \t]*(\{\})? %% \\"#" { PUT_NON_DIACRITIC_BYTE ('#', subtask); } \\"$" { PUT_NON_DIACRITIC_BYTE ('$', subtask); } \\"%" { PUT_NON_DIACRITIC_BYTE ('%', subtask); } \\"&" { PUT_NON_DIACRITIC_BYTE ('&', subtask); } \\"_" { PUT_NON_DIACRITIC_BYTE ('_', subtask); } \\"{" { PUT_NON_DIACRITIC_BYTE ('{', subtask); } \\"}" { PUT_NON_DIACRITIC_BYTE ('}', subtask); } \\backslash{Braces} { PUT_NON_DIACRITIC_BYTE ('\\', subtask); } "~" { PUT_NON_DIACRITIC_BYTE (160, subtask); } "!`" { PUT_NON_DIACRITIC_BYTE (161, subtask); } \\pound{Braces} { PUT_NON_DIACRITIC_BYTE (163, subtask); } \\S{Braces} { PUT_NON_DIACRITIC_BYTE (167, subtask); } \\\" { PUT_NON_DIACRITIC_BYTE (168, subtask); } \\copyright{Braces} { PUT_NON_DIACRITIC_BYTE (169, subtask); } "``" { PUT_NON_DIACRITIC_BYTE (171, subtask); } \\neg{Braces} { PUT_NON_DIACRITIC_BYTE (172, subtask); } \\"-" { PUT_NON_DIACRITIC_BYTE (173, subtask); } \\mbox"{$^\\circ$}" { PUT_NON_DIACRITIC_BYTE (176, subtask); } \\mbox"{$\\pm$}" { PUT_NON_DIACRITIC_BYTE (177, subtask); } \\mbox"{$^2$}" { PUT_NON_DIACRITIC_BYTE (178, subtask); } \\mbox"{$^3$}" { PUT_NON_DIACRITIC_BYTE (179, subtask); } \\"'" { PUT_NON_DIACRITIC_BYTE (180, subtask); } \\mbox"{$\\mu$}" { PUT_NON_DIACRITIC_BYTE (181, subtask); } \\cdotp { PUT_NON_DIACRITIC_BYTE (183, subtask); } \\"," { PUT_NON_DIACRITIC_BYTE (184, subtask); } \\mbox"{$^1$}" { PUT_NON_DIACRITIC_BYTE (185, subtask); } "''" { PUT_NON_DIACRITIC_BYTE (187, subtask); } \\frac"1/4"{Braces} { PUT_NON_DIACRITIC_BYTE (188, subtask); } \\frac"1/2"{Braces} { PUT_NON_DIACRITIC_BYTE (189, subtask); } \\frac"3/4"{Braces} { PUT_NON_DIACRITIC_BYTE (190, subtask); } "?`" { PUT_NON_DIACRITIC_BYTE (191, subtask); } "{"(\\"`"A|\\"`{A}")"}"|\\"`"A|\\"`{A}" { recode_put_byte (192, subtask); } "{"(\\"'"A|\\"'{A}")"}"|\\"'"A|\\"'{A}" { recode_put_byte (193, subtask); } "{"(\\"^"A|\\"^{A}")"}"|\\"^"A|\\"^{A}" { recode_put_byte (194, subtask); } "{"(\\"~"A|\\"~{A}")"}"|\\"~"A|\\"~{A}" { recode_put_byte (195, subtask); } "{"(\\\"A|\\\""{A}")"}"|\\\"A|\\\""{A}" { recode_put_byte (196, subtask); } "{"(\\AA{Braces})"}"|\\AA{Braces} { recode_put_byte (197, subtask); } "{"(\\AE{Braces})"}"|\\AE{Braces} { recode_put_byte (198, subtask); } "{"(\\c[ \t]+C|\\c"{C}")"}"|\\c[ \t]+C|\\c"{C}" { recode_put_byte (199, subtask); } "{"(\\"`"E|\\"`{E}")"}"|\\"`"E|\\"`{E}" { recode_put_byte (200, subtask); } "{"(\\"'"E|\\"'{E}")"}"|\\"'"E|\\"'{E}" { recode_put_byte (201, subtask); } "{"(\\"^"E|\\"^{E}")"}"|\\"^"E|\\"^{E}" { recode_put_byte (202, subtask); } "{"(\\\"E|\\\""{E}")"}"|\\\"E|\\\""{E}" { recode_put_byte (203, subtask); } "{"(\\"`"I|\\"`{I}")"}"|\\"`"I|\\"`{I}" { recode_put_byte (204, subtask); } "{"(\\"'"I|\\"'{I}")"}"|\\"'"I|\\"'{I}" { recode_put_byte (205, subtask); } "{"(\\"^"I|\\"^{I}")"}"|\\"^"I|\\"^{I}" { recode_put_byte (206, subtask); } "{"(\\\"I|\\\""{I}")"}"|\\\"I|\\\""{I}" { recode_put_byte (207, subtask); } "{"(\\"~"N|\\"~{N}")"}"|\\"~"N|\\"~{N}" { recode_put_byte (209, subtask); } "{"(\\"`"O|\\"`{O}")"}"|\\"`"O|\\"`{O}" { recode_put_byte (210, subtask); } "{"(\\"'"O|\\"'{O}")"}"|\\"'"O|\\"'{O}" { recode_put_byte (211, subtask); } "{"(\\"^"O|\\"^{O}")"}"|\\"^"O|\\"^{O}" { recode_put_byte (212, subtask); } "{"(\\"~"O|\\"~{O}")"}"|\\"~"O|\\"~{O}" { recode_put_byte (213, subtask); } "{"(\\\"O|\\\""{O}")"}"|\\\"O|\\\""{O}" { recode_put_byte (214, subtask); } "{"(\\O{Braces})"}"|\\O{Braces} { recode_put_byte (216, subtask); } "{"(\\"`"U|\\"`{U}")"}"|\\"`"U|\\"`{U}" { recode_put_byte (217, subtask); } "{"(\\"'"U|\\"'{U}")"}"|\\"'"U|\\"'{U}" { recode_put_byte (218, subtask); } "{"(\\"^"U|\\"^{U}")"}"|\\"^"U|\\"^{U}" { recode_put_byte (219, subtask); } "{"(\\\"U|\\\""{U}")"}"|\\\"U|\\\""{U}" { recode_put_byte (220, subtask); } "{"(\\"'"Y|\\"'{Y}")"}"|\\"'"Y|\\"'{Y}" { recode_put_byte (221, subtask); } "{"(\\ss{Braces})"}"|\\ss{Braces} { recode_put_byte (223, subtask); } "{"(\\"`"a|\\"`{a}")"}"|\\"`"a|\\"`{a}" { recode_put_byte (224, subtask); } "{"(\\"'"a|\\"'{a}")"}"|\\"'"a|\\"'{a}" { recode_put_byte (225, subtask); } "{"(\\"^"a|\\"^{a}")"}"|\\"^"a|\\"^{a}" { recode_put_byte (226, subtask); } "{"(\\"~"a|\\"~{a}")"}"|\\"~"a|\\"~{a}" { recode_put_byte (227, subtask); } "{"(\\\"a|\\\""{a}")"}"|\\\"a|\\\""{a}" { recode_put_byte (228, subtask); } "{"(\\aa{Braces})"}"|\\aa{Braces} { recode_put_byte (229, subtask); } "{"(\\ae{Braces})"}"|\\ae{Braces} { recode_put_byte (230, subtask); } "{"(\\c[ \t]+c|\\c"{c}")"}"|\\c[ \t]+c|\\c"{c}" { recode_put_byte (231, subtask); } "{"(\\"`"e|\\"`{e}")"}"|\\"`"e|\\"`{e}" { recode_put_byte (232, subtask); } "{"(\\"'"e|\\"'{e}")"}"|\\"'"e|\\"'{e}" { recode_put_byte (233, subtask); } "{"(\\"^"e|\\"^{e}")"}"|\\"^"e|\\"^{e}" { recode_put_byte (234, subtask); } "{"(\\\"e|\\\""{e}")"}"|\\\"e|\\\""{e}" { recode_put_byte (235, subtask); } "{"(\\"`"\\i{Braces}|\\"`{\\i}")"}"|\\"`"\\i{Braces}|\\"`{\\i}" { recode_put_byte (236, subtask); } "{"(\\"'"\\i{Braces}|\\"'{\\i}")"}"|\\"'"\\i{Braces}|\\"'{\\i}" { recode_put_byte (237, subtask); } "{"(\\"^"\\i{Braces}|\\"^{\\i}")"}"|\\"^"\\i{Braces}|\\"^{\\i}" { recode_put_byte (238, subtask); } "{"(\\\"\\i{Braces}|\\\""{\\i}")"}"|\\\"\\i{Braces}|\\\""{\\i}" { recode_put_byte (239, subtask); } "{"(\\"~"n|\\"~{n}")"}"|\\"~"n|\\"~{n}" { recode_put_byte (241, subtask); } "{"(\\"`"o|\\"`{o}")"}"|\\"`"o|\\"`{o}" { recode_put_byte (242, subtask); } "{"(\\"'"o|\\"'{o}")"}"|\\"'"o|\\"'{o}" { recode_put_byte (243, subtask); } "{"(\\"^"o|\\"^{o}")"}"|\\"^"o|\\"^{o}" { recode_put_byte (244, subtask); } "{"(\\"~"o|\\"~{o}")"}"|\\"~"o|\\"~{o}" { recode_put_byte (245, subtask); } "{"(\\\"o|\\\""{o}")"}"|\\\"o|\\\""{o}" { recode_put_byte (246, subtask); } "{"(\\o{Braces})"}"|\\o{Braces} { recode_put_byte (248, subtask); } "{"(\\"`"u|\\"`{u}")"}"|\\"`"u|\\"`{u}" { recode_put_byte (249, subtask); } "{"(\\"'"u|\\"'{u}")"}"|\\"'"u|\\"'{u}" { recode_put_byte (250, subtask); } "{"(\\"^"u|\\"^{u}")"}"|\\"^"u|\\"^{u}" { recode_put_byte (251, subtask); } "{"(\\\"u|\\\""{u}")"}"|\\\"u|\\\""{u}" { recode_put_byte (252, subtask); } "{"(\\"'"y|\\"'{y}")"}"|\\"'"y|\\"'{y}" { recode_put_byte (253, subtask); } "{"(\\\"y|\\\""{y}")"}"|\\\"y|\\\""{y}" { recode_put_byte (255, subtask); } \\[`'^"]\\i{Letter}*{Braces} { ECHO; } \\{Letter}+{Braces} { ECHO; } %% bool module_bibtex_latin1 (RECODE_OUTER outer) { return recode_declare_single (outer, "BibTeX", "Latin-1", outer->quality_variable_to_byte, NULL, transform_bibtex_latin1) && recode_declare_alias (outer, "btex", "BibTeX"); } void delmodule_bibtex_latin1 (RECODE_OUTER outer) { } recode-3.7.15/src/recode.h0000644000175000017500000001004614374760602010744 /* Conversion of files between different charsets and surfaces. Copyright © 1990-2022 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ /* Published (opaque) typedefs. */ typedef struct recode_outer * RECODE_OUTER; typedef struct recode_request * RECODE_REQUEST; typedef struct recode_task * RECODE_TASK; typedef const struct recode_request * RECODE_CONST_REQUEST; typedef const struct recode_symbol * RECODE_CONST_SYMBOL; /* Description of list formats. */ enum recode_list_format { RECODE_NO_FORMAT, /* format not decided yet */ RECODE_DECIMAL_FORMAT, /* concise tabular list using decimal */ RECODE_OCTAL_FORMAT, /* concise tabular list using octal */ RECODE_HEXADECIMAL_FORMAT, /* concise tabular list using hexadecimal */ RECODE_FULL_FORMAT /* full list, one character per line */ }; /* Description of programming languages. */ enum recode_programming_language { RECODE_NO_LANGUAGE, /* language not decided yet */ RECODE_LANGUAGE_C, /* C (or C++) */ RECODE_LANGUAGE_PERL /* Perl */ }; /* Function prototypes. */ #ifdef __cplusplus extern "C" { #endif /*--------------------------------. | Recode library at OUTER level. | `--------------------------------*/ #define RECODE_AUTO_ABORT_FLAG 1 #define RECODE_NO_ICONV_FLAG 2 #define RECODE_STRICT_MAPPING_FLAG 4 #define RECODE_FORCE_FLAG 8 RECODE_OUTER recode_new_outer (unsigned); bool recode_delete_outer (RECODE_OUTER); bool recode_list_all_symbols (RECODE_OUTER, RECODE_CONST_SYMBOL); bool recode_list_concise_charset (RECODE_OUTER, RECODE_CONST_SYMBOL, const enum recode_list_format); bool recode_list_full_charset (RECODE_OUTER, RECODE_CONST_SYMBOL); /*----------------------------------. | Recode library at REQUEST level. | `----------------------------------*/ RECODE_REQUEST recode_new_request (RECODE_OUTER); bool recode_delete_request (RECODE_REQUEST); bool recode_scan_request (RECODE_REQUEST, const char *); bool recode_format_table (RECODE_REQUEST, enum recode_programming_language, const char *); char *recode_string (RECODE_CONST_REQUEST, const char *); bool recode_string_to_buffer (RECODE_CONST_REQUEST, const char *, char **, size_t *, size_t *); bool recode_string_to_file (RECODE_CONST_REQUEST, const char *, FILE *); bool recode_buffer_to_buffer (RECODE_CONST_REQUEST, const char *, size_t, char **, size_t *, size_t *); bool recode_buffer_to_file (RECODE_CONST_REQUEST, const char *, size_t, FILE *); bool recode_file_to_buffer (RECODE_CONST_REQUEST, FILE *, char **, size_t *, size_t *); bool recode_file_to_file (RECODE_CONST_REQUEST, FILE *, FILE *); /*-------------------------------. | Recode library at TASK level. | `-------------------------------*/ RECODE_TASK recode_new_task (RECODE_CONST_REQUEST); bool recode_delete_task (RECODE_TASK); bool recode_perform_task (RECODE_TASK); /* FILE *recode_filter_open (RECODE_TASK, FILE *); */ /* bool recode_filter_close (RECODE_TASK); */ #ifdef __cplusplus } #endif recode-3.7.15/src/java.c0000644000175000017500000000671714374760602010431 /* Conversion of files between different charsets and surfaces. Copyright © 2008-2019 Free Software Foundation, Inc. Contributed by François Pinard , 2008. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . */ #include "config.h" #include "common.h" #include "decsteps.h" static bool transform_java_utf16 (RECODE_SUBTASK subtask) { int character = recode_get_byte (subtask); while (character != EOF) if (character == '\\') { char buffer[6]; char *cursor = buffer; unsigned value = 0; bool canonical = true; *cursor++ = character; character = recode_get_byte (subtask); if (character == 'u' || character == 'U') { if (character == 'U') canonical = false; *cursor++ = character; character = recode_get_byte (subtask); while (cursor < buffer + 6) { if (character >= '0' && character <= '9') value = (value << 4) | (character - '0'); else if (character >= 'A' && character <= 'F') { value = (value << 4) | (character - 'A' + 10); canonical = false; } else if (character >= 'a' && character <= 'f') value = (value << 4) | (character - 'a' + 10); else break; *cursor++ = character; character = recode_get_byte (subtask); } if (cursor == buffer + 6) { if (!canonical) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); recode_put_ucs2 (value, subtask); continue; } } *cursor = '\0'; for (cursor = buffer; *cursor; cursor++) recode_put_ucs2 (*cursor, subtask); } else { recode_put_ucs2 (character, subtask); character = recode_get_byte (subtask); } SUBTASK_RETURN (subtask); } static bool transform_utf16_java (RECODE_SUBTASK subtask) { unsigned value; while (recode_get_ucs2 (&value, subtask)) if (value < 128) recode_put_byte (value, subtask); else { char buffer[11]; char *cursor; sprintf (buffer, "\\u%04x", value); for (cursor = buffer; *cursor; cursor++) recode_put_byte (*cursor, subtask); } SUBTASK_RETURN (subtask); } bool module_java (RECODE_OUTER outer) { return recode_declare_single (outer, "UTF-16", "Java", outer->quality_ucs2_to_variable, NULL, transform_utf16_java) && recode_declare_single (outer, "Java", "UTF-16", outer->quality_variable_to_ucs2, NULL, transform_java_utf16); } void delmodule_java (_GL_UNUSED RECODE_OUTER outer) { } recode-3.7.15/COPYING-LIB0000644000175000017500000001674313531311202010172 GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. recode-3.7.15/aclocal.m40000644000175000017500000026364114766020635010416 # generated automatically by aclocal 1.16.5 -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, [m4_warning([this file was generated for autoconf 2.71. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*- # # Copyright (C) 1999-2008, 2011-2019, 2021-2022 Free Software # Foundation, Inc. # Written by Thomas Tanner, 1999 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 21 LTDL_INIT # LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE]) # ------------------------------------------ # DIRECTORY contains the libltdl sources. It is okay to call this # function multiple times, as long as the same DIRECTORY is always given. AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT]) _$0($*) ])# LT_CONFIG_LTDL_DIR # We break this out into a separate macro, so that we can call it safely # internally without being caught accidentally by the sed scan in libtoolize. m4_defun([_LT_CONFIG_LTDL_DIR], [dnl remove trailing slashes m4_pushdef([_ARG_DIR], m4_bpatsubst([$1], [/*$])) m4_case(_LTDL_DIR, [], [dnl only set lt_ltdl_dir if _ARG_DIR is not simply '.' m4_if(_ARG_DIR, [.], [], [m4_define([_LTDL_DIR], _ARG_DIR) _LT_SHELL_INIT([lt_ltdl_dir=']_ARG_DIR['])])], [m4_if(_ARG_DIR, _LTDL_DIR, [], [m4_fatal([multiple libltdl directories: ']_LTDL_DIR[', ']_ARG_DIR['])])]) m4_popdef([_ARG_DIR]) ])# _LT_CONFIG_LTDL_DIR # Initialise: m4_define([_LTDL_DIR], []) # _LT_BUILD_PREFIX # ---------------- # If Autoconf is new enough, expand to '$(top_build_prefix)', otherwise # to '$(top_builddir)/'. m4_define([_LT_BUILD_PREFIX], [m4_ifdef([AC_AUTOCONF_VERSION], [m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.62]), [-1], [m4_ifdef([_AC_HAVE_TOP_BUILD_PREFIX], [$(top_build_prefix)], [$(top_builddir)/])], [$(top_build_prefix)])], [$(top_builddir)/])[]dnl ]) # LTDL_CONVENIENCE # ---------------- # sets LIBLTDL to the link flags for the libltdl convenience library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-convenience to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called here. LIBLTDL will be prefixed with # '$(top_build_prefix)' if available, otherwise with '$(top_builddir)/', # and LTDLINCL will be prefixed with '$(top_srcdir)/' (note the single # quotes!). If your package is not flat and you're not using automake, # define top_build_prefix, top_builddir, and top_srcdir appropriately # in your Makefiles. AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl dnl Although the argument is deprecated and no longer documented, dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one dnl here make sure it is the same as any other declaration of libltdl's dnl location! This also ensures lt_ltdl_dir is set when configure.ac is dnl not yet using an explicit LT_CONFIG_LTDL_DIR. m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl _$0() ])# LTDL_CONVENIENCE # AC_LIBLTDL_CONVENIENCE accepted a directory argument in older libtools, # now we have LT_CONFIG_LTDL_DIR: AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) _LTDL_CONVENIENCE]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBLTDL_CONVENIENCE], []) # _LTDL_CONVENIENCE # ----------------- # Code shared by LTDL_CONVENIENCE and LTDL_INIT([convenience]). m4_defun([_LTDL_CONVENIENCE], [case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdlc.la" LTDLDEPS=$LIBLTDL LTDLINCL='-I$(top_srcdir)'"${lt_ltdl_dir+/$lt_ltdl_dir}" AC_SUBST([LIBLTDL]) AC_SUBST([LTDLDEPS]) AC_SUBST([LTDLINCL]) # For backwards non-gettext consistent compatibility... INCLTDL=$LTDLINCL AC_SUBST([INCLTDL]) ])# _LTDL_CONVENIENCE # LTDL_INSTALLABLE # ---------------- # sets LIBLTDL to the link flags for the libltdl installable library # and LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-install to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called from here. If an installed libltdl # is not found, LIBLTDL will be prefixed with '$(top_build_prefix)' if # available, otherwise with '$(top_builddir)/', and LTDLINCL will be # prefixed with '$(top_srcdir)/' (note the single quotes!). If your # package is not flat and you're not using automake, define top_build_prefix, # top_builddir, and top_srcdir appropriately in your Makefiles. # In the future, this macro may have to be called after LT_INIT. AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl dnl Although the argument is deprecated and no longer documented, dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one dnl here make sure it is the same as any other declaration of libltdl's dnl location! This also ensures lt_ltdl_dir is set when configure.ac is dnl not yet using an explicit LT_CONFIG_LTDL_DIR. m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl _$0() ])# LTDL_INSTALLABLE # AC_LIBLTDL_INSTALLABLE accepted a directory argument in older libtools, # now we have LT_CONFIG_LTDL_DIR: AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) _LTDL_INSTALLABLE]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBLTDL_INSTALLABLE], []) # _LTDL_INSTALLABLE # ----------------- # Code shared by LTDL_INSTALLABLE and LTDL_INIT([installable]). m4_defun([_LTDL_INSTALLABLE], [if test -f "$prefix/lib/libltdl.la"; then lt_save_LDFLAGS=$LDFLAGS LDFLAGS="-L$prefix/lib $LDFLAGS" AC_CHECK_LIB([ltdl], [lt_dlinit], [lt_lib_ltdl=yes]) LDFLAGS=$lt_save_LDFLAGS if test yes = "${lt_lib_ltdl-no}"; then if test yes != "$enable_ltdl_install"; then # Don't overwrite $prefix/lib/libltdl.la without --enable-ltdl-install AC_MSG_WARN([not overwriting libltdl at $prefix, force with '--enable-ltdl-install']) enable_ltdl_install=no fi elif test no = "$enable_ltdl_install"; then AC_MSG_WARN([libltdl not installed, but installation disabled]) fi fi # If configure.ac declared an installable ltdl, and the user didn't override # with --disable-ltdl-install, we will install the shipped libltdl. case $enable_ltdl_install in no) ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL=-lltdl LTDLDEPS= LTDLINCL= ;; *) enable_ltdl_install=yes ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdl.la" LTDLDEPS=$LIBLTDL LTDLINCL='-I$(top_srcdir)'"${lt_ltdl_dir+/$lt_ltdl_dir}" ;; esac AC_SUBST([LIBLTDL]) AC_SUBST([LTDLDEPS]) AC_SUBST([LTDLINCL]) # For backwards non-gettext consistent compatibility... INCLTDL=$LTDLINCL AC_SUBST([INCLTDL]) ])# LTDL_INSTALLABLE # _LTDL_MODE_DISPATCH # ------------------- m4_define([_LTDL_MODE_DISPATCH], [dnl If _LTDL_DIR is '.', then we are configuring libltdl itself: m4_if(_LTDL_DIR, [], [], dnl if _LTDL_MODE was not set already, the default value is 'subproject': [m4_case(m4_default(_LTDL_MODE, [subproject]), [subproject], [AC_CONFIG_SUBDIRS(_LTDL_DIR) _LT_SHELL_INIT([lt_dlopen_dir=$lt_ltdl_dir])], [nonrecursive], [_LT_SHELL_INIT([lt_dlopen_dir=$lt_ltdl_dir; lt_libobj_prefix=$lt_ltdl_dir/])], [recursive], [], [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])dnl dnl Be careful not to expand twice: m4_define([$0], []) ])# _LTDL_MODE_DISPATCH # _LT_LIBOBJ(MODULE_NAME) # ----------------------- # Like AC_LIBOBJ, except that MODULE_NAME goes into _LT_LIBOBJS instead # of into LIBOBJS. AC_DEFUN([_LT_LIBOBJ], [ m4_pattern_allow([^_LT_LIBOBJS$]) _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext" ])# _LT_LIBOBJS # LTDL_INIT([OPTIONS]) # -------------------- # Clients of libltdl can use this macro to allow the installer to # choose between a shipped copy of the ltdl sources or a preinstalled # version of the library. If the shipped ltdl sources are not in a # subdirectory named libltdl, the directory name must be given by # LT_CONFIG_LTDL_DIR. AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) dnl We need to keep our own list of libobjs separate from our parent project, dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while dnl we look for our own LIBOBJs. m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ])) m4_pushdef([AC_LIBSOURCES]) dnl If not otherwise defined, default to the 1.5.x compatible subproject mode: m4_if(_LTDL_MODE, [], [m4_define([_LTDL_MODE], m4_default([$2], [subproject])) m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])], [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])]) AC_ARG_WITH([included_ltdl], [AS_HELP_STRING([--with-included-ltdl], [use the GNU ltdl sources included here])]) if test yes != "$with_included_ltdl"; then # We are not being forced to use the included libltdl sources, so # decide whether there is a useful installed version we can use. AC_CHECK_HEADER([ltdl.h], [AC_CHECK_DECL([lt_dlinterface_register], [AC_CHECK_LIB([ltdl], [lt_dladvise_preload], [with_included_ltdl=no], [with_included_ltdl=yes])], [with_included_ltdl=yes], [AC_INCLUDES_DEFAULT #include ])], [with_included_ltdl=yes], [AC_INCLUDES_DEFAULT] ) fi dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE dnl was called yet, then for old times' sake, we assume libltdl is in an dnl eponymous directory: AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])]) AC_ARG_WITH([ltdl_include], [AS_HELP_STRING([--with-ltdl-include=DIR], [use the ltdl headers installed in DIR])]) if test -n "$with_ltdl_include"; then if test -f "$with_ltdl_include/ltdl.h"; then : else AC_MSG_ERROR([invalid ltdl include directory: '$with_ltdl_include']) fi else with_ltdl_include=no fi AC_ARG_WITH([ltdl_lib], [AS_HELP_STRING([--with-ltdl-lib=DIR], [use the libltdl.la installed in DIR])]) if test -n "$with_ltdl_lib"; then if test -f "$with_ltdl_lib/libltdl.la"; then : else AC_MSG_ERROR([invalid ltdl library directory: '$with_ltdl_lib']) fi else with_ltdl_lib=no fi case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in ,yes,no,no,) m4_case(m4_default(_LTDL_TYPE, [convenience]), [convenience], [_LTDL_CONVENIENCE], [installable], [_LTDL_INSTALLABLE], [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)]) ;; ,no,no,no,) # If the included ltdl is not to be used, then use the # preinstalled libltdl we found. AC_DEFINE([HAVE_LTDL], [1], [Define this if a modern libltdl is already installed]) LIBLTDL=-lltdl LTDLDEPS= LTDLINCL= ;; ,no*,no,*) AC_MSG_ERROR(['--with-ltdl-include' and '--with-ltdl-lib' options must be used together]) ;; *) with_included_ltdl=no LIBLTDL="-L$with_ltdl_lib -lltdl" LTDLDEPS= LTDLINCL=-I$with_ltdl_include ;; esac INCLTDL=$LTDLINCL # Report our decision... AC_MSG_CHECKING([where to find libltdl headers]) AC_MSG_RESULT([$LTDLINCL]) AC_MSG_CHECKING([where to find libltdl library]) AC_MSG_RESULT([$LIBLTDL]) _LTDL_SETUP dnl restore autoconf definition. m4_popdef([AC_LIBOBJ]) m4_popdef([AC_LIBSOURCES]) AC_CONFIG_COMMANDS_PRE([ _ltdl_libobjs= _ltdl_ltlibobjs= if test -n "$_LT_LIBOBJS"; then # Remove the extension. _lt_sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | $SED "$_lt_sed_drop_objext" | sort -u`; do _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" done fi AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs]) AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs]) ]) # Only expand once: m4_define([LTDL_INIT]) ])# LTDL_INIT # Old names: AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)]) AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)]) AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIB_LTDL], []) dnl AC_DEFUN([AC_WITH_LTDL], []) dnl AC_DEFUN([LT_WITH_LTDL], []) # _LTDL_SETUP # ----------- # Perform all the checks necessary for compilation of the ltdl objects # -- including compiler checks and header checks. This is a public # interface mainly for the benefit of libltdl's own configure.ac, most # other users should call LTDL_INIT instead. AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_SYS_MODULE_EXT])dnl AC_REQUIRE([LT_SYS_MODULE_PATH])dnl AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl AC_REQUIRE([LT_LIB_DLLOAD])dnl AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl AC_REQUIRE([LT_FUNC_ARGZ])dnl m4_require([_LT_CHECK_OBJDIR])dnl m4_require([_LT_HEADER_DLFCN])dnl m4_require([_LT_CHECK_DLPREOPEN])dnl m4_require([_LT_DECL_SED])dnl dnl Don't require this, or it will be expanded earlier than the code dnl that sets the variables it relies on: _LT_ENABLE_INSTALL dnl _LTDL_MODE specific code must be called at least once: _LTDL_MODE_DISPATCH # In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS # the user used. This is so that ltdl.h can pick up the parent projects # config.h file, The first file in AC_CONFIG_HEADERS must contain the # definitions required by ltdl.c. # FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility). AC_CONFIG_COMMANDS_PRE([dnl m4_pattern_allow([^LT_CONFIG_H$])dnl m4_ifset([AH_HEADER], [LT_CONFIG_H=AH_HEADER], [m4_ifset([AC_LIST_HEADERS], [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's|^[[ ]]*||;s|[[ :]].*$||'`], [])])]) AC_SUBST([LT_CONFIG_H]) AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h], [], [], [AC_INCLUDES_DEFAULT]) AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])]) AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])]) m4_pattern_allow([LT_LIBEXT])dnl AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension]) name= eval "lt_libprefix=\"$libname_spec\"" m4_pattern_allow([LT_LIBPREFIX])dnl AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix]) name=ltdl eval "LTDLOPEN=\"$libname_spec\"" AC_SUBST([LTDLOPEN]) ])# _LTDL_SETUP # _LT_ENABLE_INSTALL # ------------------ m4_define([_LT_ENABLE_INSTALL], [AC_ARG_ENABLE([ltdl-install], [AS_HELP_STRING([--enable-ltdl-install], [install libltdl])]) case ,$enable_ltdl_install,$enable_ltdl_convenience in *yes*) ;; *) enable_ltdl_convenience=yes ;; esac m4_ifdef([AM_CONDITIONAL], [AM_CONDITIONAL(INSTALL_LTDL, test no != "${enable_ltdl_install-no}") AM_CONDITIONAL(CONVENIENCE_LTDL, test no != "${enable_ltdl_convenience-no}")]) ])# _LT_ENABLE_INSTALL # LT_SYS_DLOPEN_DEPLIBS # --------------------- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_CACHE_CHECK([whether deplibs are loaded by dlopen], [lt_cv_sys_dlopen_deplibs], [# PORTME does your system automatically load deplibs for dlopen? # or its logical equivalent (e.g. shl_load for HP-UX < 11) # For now, we just catch OSes we know something about -- in the # future, we'll try test this programmatically. lt_cv_sys_dlopen_deplibs=unknown case $host_os in aix3*|aix4.1.*|aix4.2.*) # Unknown whether this is true for these versions of AIX, but # we want this 'case' here to explicitly catch those versions. lt_cv_sys_dlopen_deplibs=unknown ;; aix[[4-9]]*) lt_cv_sys_dlopen_deplibs=yes ;; amigaos*) case $host_cpu in powerpc) lt_cv_sys_dlopen_deplibs=no ;; esac ;; bitrig*) lt_cv_sys_dlopen_deplibs=yes ;; darwin*) # Assuming the user has installed a libdl from somewhere, this is true # If you are looking for one http://www.opendarwin.org/projects/dlcompat lt_cv_sys_dlopen_deplibs=yes ;; freebsd* | dragonfly* | midnightbsd*) lt_cv_sys_dlopen_deplibs=yes ;; gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu) # GNU and its variants, using gnu ld.so (Glibc) lt_cv_sys_dlopen_deplibs=yes ;; hpux10*|hpux11*) lt_cv_sys_dlopen_deplibs=yes ;; interix*) lt_cv_sys_dlopen_deplibs=yes ;; irix[[12345]]*|irix6.[[01]]*) # Catch all versions of IRIX before 6.2, and indicate that we don't # know how it worked for any of those versions. lt_cv_sys_dlopen_deplibs=unknown ;; irix*) # The case above catches anything before 6.2, and it's known that # at 6.2 and later dlopen does load deplibs. lt_cv_sys_dlopen_deplibs=yes ;; netbsd* | netbsdelf*-gnu) lt_cv_sys_dlopen_deplibs=yes ;; openbsd*) lt_cv_sys_dlopen_deplibs=yes ;; osf[[1234]]*) # dlopen did load deplibs (at least at 4.x), but until the 5.x series, # it did *not* use an RPATH in a shared library to find objects the # library depends on, so we explicitly say 'no'. lt_cv_sys_dlopen_deplibs=no ;; osf5.0|osf5.0a|osf5.1) # dlopen *does* load deplibs and with the right loader patch applied # it even uses RPATH in a shared library to search for shared objects # that the library depends on, but there's no easy way to know if that # patch is installed. Since this is the case, all we can really # say is unknown -- it depends on the patch being installed. If # it is, this changes to 'yes'. Without it, it would be 'no'. lt_cv_sys_dlopen_deplibs=unknown ;; osf*) # the two cases above should catch all versions of osf <= 5.1. Read # the comments above for what we know about them. # At > 5.1, deplibs are loaded *and* any RPATH in a shared library # is used to find them so we can finally say 'yes'. lt_cv_sys_dlopen_deplibs=yes ;; qnx*) lt_cv_sys_dlopen_deplibs=yes ;; solaris*) lt_cv_sys_dlopen_deplibs=yes ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) libltdl_cv_sys_dlopen_deplibs=yes ;; esac ]) if test yes != "$lt_cv_sys_dlopen_deplibs"; then AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1], [Define if the OS needs help to load dependent libraries for dlopen().]) fi ])# LT_SYS_DLOPEN_DEPLIBS # Old name: AU_ALIAS([AC_LTDL_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], []) # LT_SYS_MODULE_EXT # ----------------- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl AC_CACHE_CHECK([what extension is used for runtime loadable modules], [libltdl_cv_shlibext], [ module=yes eval libltdl_cv_shlibext=$shrext_cmds module=no eval libltdl_cv_shrext=$shrext_cmds ]) if test -n "$libltdl_cv_shlibext"; then m4_pattern_allow([LT_MODULE_EXT])dnl AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"], [Define to the extension used for runtime loadable modules, say, ".so".]) fi if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then m4_pattern_allow([LT_SHARED_EXT])dnl AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"], [Define to the shared library suffix, say, ".dylib".]) fi if test -n "$shared_archive_member_spec"; then m4_pattern_allow([LT_SHARED_LIB_MEMBER])dnl AC_DEFINE_UNQUOTED([LT_SHARED_LIB_MEMBER], ["($shared_archive_member_spec.o)"], [Define to the shared archive member specification, say "(shr.o)".]) fi ])# LT_SYS_MODULE_EXT # Old name: AU_ALIAS([AC_LTDL_SHLIBEXT], [LT_SYS_MODULE_EXT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SHLIBEXT], []) # LT_SYS_MODULE_PATH # ------------------ AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl AC_CACHE_CHECK([what variable specifies run-time module search path], [lt_cv_module_path_var], [lt_cv_module_path_var=$shlibpath_var]) if test -n "$lt_cv_module_path_var"; then m4_pattern_allow([LT_MODULE_PATH_VAR])dnl AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"], [Define to the name of the environment variable that determines the run-time module search path.]) fi ])# LT_SYS_MODULE_PATH # Old name: AU_ALIAS([AC_LTDL_SHLIBPATH], [LT_SYS_MODULE_PATH]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SHLIBPATH], []) # LT_SYS_DLSEARCH_PATH # -------------------- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl AC_CACHE_CHECK([for the default library search path], [lt_cv_sys_dlsearch_path], [lt_cv_sys_dlsearch_path=$sys_lib_dlsearch_path_spec]) if test -n "$lt_cv_sys_dlsearch_path"; then sys_dlsearch_path= for dir in $lt_cv_sys_dlsearch_path; do if test -z "$sys_dlsearch_path"; then sys_dlsearch_path=$dir else sys_dlsearch_path=$sys_dlsearch_path$PATH_SEPARATOR$dir fi done m4_pattern_allow([LT_DLSEARCH_PATH])dnl AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"], [Define to the system default library search path.]) fi ])# LT_SYS_DLSEARCH_PATH # Old name: AU_ALIAS([AC_LTDL_SYSSEARCHPATH], [LT_SYS_DLSEARCH_PATH]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SYSSEARCHPATH], []) # _LT_CHECK_DLPREOPEN # ------------------- m4_defun([_LT_CHECK_DLPREOPEN], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen], [libltdl_cv_preloaded_symbols], [if test -n "$lt_cv_sys_global_symbol_pipe"; then libltdl_cv_preloaded_symbols=yes else libltdl_cv_preloaded_symbols=no fi ]) if test yes = "$libltdl_cv_preloaded_symbols"; then AC_DEFINE([HAVE_PRELOADED_SYMBOLS], [1], [Define if libtool can extract symbol lists from object files.]) fi ])# _LT_CHECK_DLPREOPEN # LT_LIB_DLLOAD # ------------- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$]) LT_DLLOADERS= AC_SUBST([LT_DLLOADERS]) AC_LANG_PUSH([C]) lt_dlload_save_LIBS=$LIBS LIBADD_DLOPEN= AC_SEARCH_LIBS([dlopen], [dl], [AC_DEFINE([HAVE_LIBDL], [1], [Define if you have the libdl library or equivalent.]) if test "$ac_cv_search_dlopen" != "none required"; then LIBADD_DLOPEN=-ldl fi libltdl_cv_lib_dl_dlopen=yes LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H # include #endif ]], [[dlopen(0, 0);]])], [AC_DEFINE([HAVE_LIBDL], [1], [Define if you have the libdl library or equivalent.]) libltdl_cv_func_dlopen=yes LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], [AC_CHECK_LIB([svld], [dlopen], [AC_DEFINE([HAVE_LIBDL], [1], [Define if you have the libdl library or equivalent.]) LIBADD_DLOPEN=-lsvld libltdl_cv_func_dlopen=yes LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])]) if test yes = "$libltdl_cv_func_dlopen" || test yes = "$libltdl_cv_lib_dl_dlopen" then lt_save_LIBS=$LIBS LIBS="$LIBS $LIBADD_DLOPEN" AC_CHECK_FUNCS([dlerror]) LIBS=$lt_save_LIBS fi AC_SUBST([LIBADD_DLOPEN]) LIBADD_SHL_LOAD= AC_CHECK_FUNC([shl_load], [AC_DEFINE([HAVE_SHL_LOAD], [1], [Define if you have the shl_load function.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"], [AC_CHECK_LIB([dld], [shl_load], [AC_DEFINE([HAVE_SHL_LOAD], [1], [Define if you have the shl_load function.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" LIBADD_SHL_LOAD=-ldld])]) AC_SUBST([LIBADD_SHL_LOAD]) case $host_os in darwin[[1567]].*) # We only want this for pre-Mac OS X 10.4. AC_CHECK_FUNC([_dyld_func_lookup], [AC_DEFINE([HAVE_DYLD], [1], [Define if you have the _dyld_func_lookup function.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"]) ;; beos*) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la" ;; cygwin* | mingw* | pw32*) AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include ]]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la" ;; esac AC_CHECK_LIB([dld], [dld_link], [AC_DEFINE([HAVE_DLD], [1], [Define if you have the GNU dld library.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"]) AC_SUBST([LIBADD_DLD_LINK]) m4_pattern_allow([^LT_DLPREOPEN$]) LT_DLPREOPEN= if test -n "$LT_DLLOADERS" then for lt_loader in $LT_DLLOADERS; do LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader " done AC_DEFINE([HAVE_LIBDLLOADER], [1], [Define if libdlloader will be built on this platform]) fi AC_SUBST([LT_DLPREOPEN]) dnl This isn't used anymore, but set it for backwards compatibility LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD" AC_SUBST([LIBADD_DL]) LIBS=$lt_dlload_save_LIBS AC_LANG_POP ])# LT_LIB_DLLOAD # Old name: AU_ALIAS([AC_LTDL_DLLIB], [LT_LIB_DLLOAD]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_DLLIB], []) # LT_SYS_SYMBOL_USCORE # -------------------- # does the compiler prefix global symbols with an underscore? AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl AC_CACHE_CHECK([for _ prefix in compiled symbols], [lt_cv_sys_symbol_underscore], [lt_cv_sys_symbol_underscore=no cat > conftest.$ac_ext <<_LT_EOF void nm_test_func(){} int main(){nm_test_func;return 0;} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. ac_nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then # See whether the symbols have a leading underscore. if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then lt_cv_sys_symbol_underscore=yes else if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then : else echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD fi fi else echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.c >&AS_MESSAGE_LOG_FD fi rm -rf conftest* ]) sys_symbol_underscore=$lt_cv_sys_symbol_underscore AC_SUBST([sys_symbol_underscore]) ])# LT_SYS_SYMBOL_USCORE # Old name: AU_ALIAS([AC_LTDL_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_SYMBOL_USCORE], []) # LT_FUNC_DLSYM_USCORE # -------------------- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([_LT_COMPILER_PIC])dnl for lt_prog_compiler_wl AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl for lt_cv_sys_symbol_underscore AC_REQUIRE([LT_SYS_MODULE_EXT])dnl for libltdl_cv_shlibext if test yes = "$lt_cv_sys_symbol_underscore"; then if test yes = "$libltdl_cv_func_dlopen" || test yes = "$libltdl_cv_lib_dl_dlopen"; then AC_CACHE_CHECK([whether we have to add an underscore for dlsym], [libltdl_cv_need_uscore], [libltdl_cv_need_uscore=unknown dlsym_uscore_save_LIBS=$LIBS LIBS="$LIBS $LIBADD_DLOPEN" libname=conftmod # stay within 8.3 filename limits! cat >$libname.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; }] _LT_EOF # ltfn_module_cmds module_cmds # Execute tilde-delimited MODULE_CMDS with environment primed for # $module_cmds or $archive_cmds type content. ltfn_module_cmds () {( # subshell avoids polluting parent global environment module_cmds_save_ifs=$IFS; IFS='~' for cmd in @S|@1; do IFS=$module_cmds_save_ifs libobjs=$libname.$ac_objext; lib=$libname$libltdl_cv_shlibext rpath=/not-exists; soname=$libname$libltdl_cv_shlibext; output_objdir=. major=; versuffix=; verstring=; deplibs= ECHO=echo; wl=$lt_prog_compiler_wl; allow_undefined_flag= eval $cmd done IFS=$module_cmds_save_ifs )} # Compile a loadable module using libtool macro expansion results. $CC $pic_flag -c $libname.$ac_ext ltfn_module_cmds "${module_cmds:-$archive_cmds}" # Try to fetch fnord with dlsym(). libltdl_dlunknown=0; libltdl_dlnouscore=1; libltdl_dluscore=2 cat >conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifndef RTLD_GLOBAL # ifdef DL_GLOBAL # define RTLD_GLOBAL DL_GLOBAL # else # define RTLD_GLOBAL 0 # endif #endif #ifndef RTLD_NOW # ifdef DL_NOW # define RTLD_NOW DL_NOW # else # define RTLD_NOW 0 # endif #endif int main () { void *handle = dlopen ("`pwd`/$libname$libltdl_cv_shlibext", RTLD_GLOBAL|RTLD_NOW); int status = $libltdl_dlunknown; if (handle) { if (dlsym (handle, "fnord")) status = $libltdl_dlnouscore; else { if (dlsym (handle, "_fnord")) status = $libltdl_dluscore; else puts (dlerror ()); } dlclose (handle); } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null libltdl_status=$? case x$libltdl_status in x$libltdl_dlnouscore) libltdl_cv_need_uscore=no ;; x$libltdl_dluscore) libltdl_cv_need_uscore=yes ;; x*) libltdl_cv_need_uscore=unknown ;; esac fi rm -rf conftest* $libname* LIBS=$dlsym_uscore_save_LIBS ]) fi fi if test yes = "$libltdl_cv_need_uscore"; then AC_DEFINE([NEED_USCORE], [1], [Define if dlsym() requires a leading underscore in symbol names.]) fi ])# LT_FUNC_DLSYM_USCORE # Old name: AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], []) # Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.16.5], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.16.5])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_COND_IF -*- Autoconf -*- # Copyright (C) 2008-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_COND_IF # _AM_COND_ELSE # _AM_COND_ENDIF # -------------- # These macros are only used for tracing. m4_define([_AM_COND_IF]) m4_define([_AM_COND_ELSE]) m4_define([_AM_COND_ENDIF]) # AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) # --------------------------------------- # If the shell condition COND is true, execute IF-TRUE, otherwise execute # IF-FALSE. Allow automake to learn about conditional instantiating macros # (the AC_CONFIG_FOOS). AC_DEFUN([AM_COND_IF], [m4_ifndef([_AM_COND_VALUE_$1], [m4_fatal([$0: no such condition "$1"])])dnl _AM_COND_IF([$1])dnl if test -z "$$1_TRUE"; then : m4_n([$2])[]dnl m4_ifval([$3], [_AM_COND_ELSE([$1])dnl else $3 ])dnl _AM_COND_ENDIF([$1])dnl fi[]dnl ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. AS_CASE([$CONFIG_FILES], [*\'*], [eval set x "$CONFIG_FILES"], [*], [set x $CONFIG_FILES]) shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`AS_DIRNAME(["$am_mf"])` am_filepart=`AS_BASENAME(["$am_mf"])` AM_RUN_LOG([cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles]) || am_rc=$? done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE="gmake" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi AS_UNSET([am_dirpart]) AS_UNSET([am_filepart]) AS_UNSET([am_mf]) AS_UNSET([am_rc]) rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking is enabled. # This creates each '.Po' and '.Plo' makefile fragment that we'll need in # order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl m4_ifdef([_$0_ALREADY_INIT], [m4_fatal([$0 expanded multiple times ]m4_defn([_$0_ALREADY_INIT]))], [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi AC_SUBST([CTAGS]) if test -z "$ETAGS"; then ETAGS=etags fi AC_SUBST([ETAGS]) if test -z "$CSCOPE"; then CSCOPE=cscope fi AC_SUBST([CSCOPE]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check whether make has an 'include' directive that can support all # the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) AS_CASE([$?:`cat confinc.out 2>/dev/null`], ['0:this is the am__doit target'], [AS_CASE([$s], [BSD], [am__include='.include' am__quote='"'], [am__include='include' am__quote=''])]) if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* AC_MSG_RESULT([${_am_result}]) AC_SUBST([am__include])]) AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # --------------------------------------------------------------------------- # Adds support for distributing Python modules and packages. To # install modules, copy them to $(pythondir), using the python_PYTHON # automake variable. To install a package with the same name as the # automake package, install to $(pkgpythondir), or use the # pkgpython_PYTHON automake variable. # # The variables $(pyexecdir) and $(pkgpyexecdir) are provided as # locations to install python extension modules (shared libraries). # Another macro is required to find the appropriate flags to compile # extension modules. # # If your package is configured with a different prefix to python, # users will have to add the install directory to the PYTHONPATH # environment variable, or create a .pth file (see the python # documentation for details). # # If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will # cause an error if the version of python installed on the system # doesn't meet the requirement. MINIMUM-VERSION should consist of # numbers and dots only. AC_DEFUN([AM_PATH_PYTHON], [ dnl Find a Python interpreter. Python versions prior to 2.0 are not dnl supported. (2.0 was released on October 16, 2000). m4_define_default([_AM_PYTHON_INTERPRETER_LIST], [python python2 python3 dnl python3.11 python3.10 dnl python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 dnl python3.2 python3.1 python3.0 dnl python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 dnl python2.0]) AC_ARG_VAR([PYTHON], [the Python interpreter]) m4_if([$1],[],[ dnl No version check is needed. # Find any Python interpreter. if test -z "$PYTHON"; then AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) fi am_display_PYTHON=python ], [ dnl A version check is needed. if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. AC_MSG_CHECKING([whether $PYTHON version is >= $1]) AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) AC_MSG_ERROR([Python interpreter is too old])]) am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. AC_CACHE_CHECK([for a Python interpreter with version >= $1], [am_cv_pathless_PYTHON],[ for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do test "$am_cv_pathless_PYTHON" = none && break AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) done]) # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) fi am_display_PYTHON=$am_cv_pathless_PYTHON fi ]) if test "$PYTHON" = :; then dnl Run any user-specified action, or abort. m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) else dnl Query Python for its version number. Although site.py simply uses dnl sys.version[:3], printing that failed with Python 3.10, since the dnl trailing zero was eliminated. So now we output just the major dnl and minor version numbers, as numbers. Apparently the tertiary dnl version is not of interest. dnl AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], [am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[[:2]])"`]) AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) dnl At times, e.g., when building shared libraries, you may want dnl to know which OS platform Python thinks this is. dnl AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) dnl emacs-page dnl If --with-python-sys-prefix is given, use the values of sys.prefix dnl and sys.exec_prefix for the corresponding values of PYTHON_PREFIX dnl and PYTHON_EXEC_PREFIX. Otherwise, use the GNU ${prefix} and dnl ${exec_prefix} variables. dnl dnl The two are made distinct variables so they can be overridden if dnl need be, although general consensus is that you shouldn't need dnl this separation. dnl dnl Also allow directly setting the prefixes via configure options, dnl overriding any default. dnl if test "x$prefix" = xNONE; then am__usable_prefix=$ac_default_prefix else am__usable_prefix=$prefix fi # Allow user to request using sys.* values from Python, # instead of the GNU $prefix values. AC_ARG_WITH([python-sys-prefix], [AS_HELP_STRING([--with-python-sys-prefix], [use Python's sys.prefix and sys.exec_prefix values])], [am_use_python_sys=:], [am_use_python_sys=false]) # Allow user to override whatever the default Python prefix is. AC_ARG_WITH([python_prefix], [AS_HELP_STRING([--with-python_prefix], [override the default PYTHON_PREFIX])], [am_python_prefix_subst=$withval am_cv_python_prefix=$withval AC_MSG_CHECKING([for explicit $am_display_PYTHON prefix]) AC_MSG_RESULT([$am_cv_python_prefix])], [ if $am_use_python_sys; then # using python sys.prefix value, not GNU AC_CACHE_CHECK([for python default $am_display_PYTHON prefix], [am_cv_python_prefix], [am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`]) dnl If sys.prefix is a subdir of $prefix, replace the literal value of dnl $prefix with a variable reference so it can be overridden. case $am_cv_python_prefix in $am__usable_prefix*) am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'` am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"` ;; *) am_python_prefix_subst=$am_cv_python_prefix ;; esac else # using GNU prefix value, not python sys.prefix am_python_prefix_subst='${prefix}' am_python_prefix=$am_python_prefix_subst AC_MSG_CHECKING([for GNU default $am_display_PYTHON prefix]) AC_MSG_RESULT([$am_python_prefix]) fi]) # Substituting python_prefix_subst value. AC_SUBST([PYTHON_PREFIX], [$am_python_prefix_subst]) # emacs-page Now do it all over again for Python exec_prefix, but with yet # another conditional: fall back to regular prefix if that was specified. AC_ARG_WITH([python_exec_prefix], [AS_HELP_STRING([--with-python_exec_prefix], [override the default PYTHON_EXEC_PREFIX])], [am_python_exec_prefix_subst=$withval am_cv_python_exec_prefix=$withval AC_MSG_CHECKING([for explicit $am_display_PYTHON exec_prefix]) AC_MSG_RESULT([$am_cv_python_exec_prefix])], [ # no explicit --with-python_exec_prefix, but if # --with-python_prefix was given, use its value for python_exec_prefix too. AS_IF([test -n "$with_python_prefix"], [am_python_exec_prefix_subst=$with_python_prefix am_cv_python_exec_prefix=$with_python_prefix AC_MSG_CHECKING([for python_prefix-given $am_display_PYTHON exec_prefix]) AC_MSG_RESULT([$am_cv_python_exec_prefix])], [ # Set am__usable_exec_prefix whether using GNU or Python values, # since we use that variable for pyexecdir. if test "x$exec_prefix" = xNONE; then am__usable_exec_prefix=$am__usable_prefix else am__usable_exec_prefix=$exec_prefix fi # if $am_use_python_sys; then # using python sys.exec_prefix, not GNU AC_CACHE_CHECK([for python default $am_display_PYTHON exec_prefix], [am_cv_python_exec_prefix], [am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`]) dnl If sys.exec_prefix is a subdir of $exec_prefix, replace the dnl literal value of $exec_prefix with a variable reference so it can dnl be overridden. case $am_cv_python_exec_prefix in $am__usable_exec_prefix*) am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'` am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"` ;; *) am_python_exec_prefix_subst=$am_cv_python_exec_prefix ;; esac else # using GNU $exec_prefix, not python sys.exec_prefix am_python_exec_prefix_subst='${exec_prefix}' am_python_exec_prefix=$am_python_exec_prefix_subst AC_MSG_CHECKING([for GNU default $am_display_PYTHON exec_prefix]) AC_MSG_RESULT([$am_python_exec_prefix]) fi])]) # Substituting python_exec_prefix_subst. AC_SUBST([PYTHON_EXEC_PREFIX], [$am_python_exec_prefix_subst]) # Factor out some code duplication into this shell variable. am_python_setup_sysconfig="\ import sys # Prefer sysconfig over distutils.sysconfig, for better compatibility # with python 3.x. See automake bug#10227. try: import sysconfig except ImportError: can_use_sysconfig = 0 else: can_use_sysconfig = 1 # Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: # try: from platform import python_implementation if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7': can_use_sysconfig = 0 except ImportError: pass" dnl emacs-page Set up 4 directories: dnl 1. pythondir: where to install python scripts. This is the dnl site-packages directory, not the python standard library dnl directory like in previous automake betas. This behavior dnl is more consistent with lispdir.m4 for example. dnl Query distutils for this directory. dnl AC_CACHE_CHECK([for $am_display_PYTHON script directory (pythondir)], [am_cv_python_pythondir], [if test "x$am_cv_python_prefix" = x; then am_py_prefix=$am__usable_prefix else am_py_prefix=$am_cv_python_prefix fi am_cv_python_pythondir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: if hasattr(sysconfig, 'get_default_scheme'): scheme = sysconfig.get_default_scheme() else: scheme = sysconfig._get_default_scheme() if scheme == 'posix_local': # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/ scheme = 'posix_prefix' sitedir = sysconfig.get_path('purelib', scheme, vars={'base':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` # case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages" ;; esac ;; esac ]) AC_SUBST([pythondir], [$am_cv_python_pythondir]) dnl 2. pkgpythondir: $PACKAGE directory under pythondir. Was dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is dnl more consistent with the rest of automake. dnl AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) dnl 3. pyexecdir: directory for installing python extension modules dnl (shared libraries). dnl Query distutils for this directory. dnl AC_CACHE_CHECK([for $am_display_PYTHON extension module directory (pyexecdir)], [am_cv_python_pyexecdir], [if test "x$am_cv_python_exec_prefix" = x; then am_py_exec_prefix=$am__usable_exec_prefix else am_py_exec_prefix=$am_cv_python_exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: if hasattr(sysconfig, 'get_default_scheme'): scheme = sysconfig.get_default_scheme() else: scheme = sysconfig._get_default_scheme() if scheme == 'posix_local': # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/ scheme = 'posix_prefix' sitedir = sysconfig.get_path('platlib', scheme, vars={'platbase':'$am_py_exec_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix') sys.stdout.write(sitedir)"` # case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages" ;; esac ;; esac ]) AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) dnl 4. pkgpyexecdir: $(pyexecdir)/$(PACKAGE) dnl AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) dnl Run any user-specified action. $2 fi ]) # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) # --------------------------------------------------------------------------- # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. # Run ACTION-IF-FALSE otherwise. # This test uses sys.hexversion instead of the string equivalent (first # word of sys.version), in order to cope with versions such as 2.2c1. # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). AC_DEFUN([AM_PYTHON_CHECK_VERSION], [prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] sys.exit(sys.hexversion < minverhex)" AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/00gnulib.m4]) m4_include([m4/__inline.m4]) m4_include([m4/absolute-header.m4]) m4_include([m4/alloca.m4]) m4_include([m4/assert_h.m4]) m4_include([m4/builtin-expect.m4]) m4_include([m4/c-bool.m4]) m4_include([m4/calloc.m4]) m4_include([m4/canonicalize.m4]) m4_include([m4/clock_time.m4]) m4_include([m4/close.m4]) m4_include([m4/codeset.m4]) m4_include([m4/double-slash-root.m4]) m4_include([m4/dup2.m4]) m4_include([m4/eealloc.m4]) m4_include([m4/errno_h.m4]) m4_include([m4/error.m4]) m4_include([m4/error_h.m4]) m4_include([m4/exponentd.m4]) m4_include([m4/exponentf.m4]) m4_include([m4/exponentl.m4]) m4_include([m4/extensions.m4]) m4_include([m4/extern-inline.m4]) m4_include([m4/fcntl-o.m4]) m4_include([m4/fcntl.m4]) m4_include([m4/fcntl_h.m4]) m4_include([m4/float_h.m4]) m4_include([m4/fpieee.m4]) m4_include([m4/free.m4]) m4_include([m4/frexp.m4]) m4_include([m4/frexpl.m4]) m4_include([m4/fseterr.m4]) m4_include([m4/fstat.m4]) m4_include([m4/getdtablesize.m4]) m4_include([m4/getopt.m4]) m4_include([m4/getprogname.m4]) m4_include([m4/getrandom.m4]) m4_include([m4/gettext.m4]) m4_include([m4/gnulib-common.m4]) m4_include([m4/gnulib-comp.m4]) m4_include([m4/host-cpu-c-abi.m4]) m4_include([m4/iconv.m4]) m4_include([m4/include_next.m4]) m4_include([m4/intlmacosx.m4]) m4_include([m4/intmax_t.m4]) m4_include([m4/inttypes.m4]) m4_include([m4/inttypes_h.m4]) m4_include([m4/isatty.m4]) m4_include([m4/isnand.m4]) m4_include([m4/isnanf.m4]) m4_include([m4/isnanl.m4]) m4_include([m4/largefile.m4]) m4_include([m4/ldexpl.m4]) m4_include([m4/lib-ld.m4]) m4_include([m4/lib-link.m4]) m4_include([m4/lib-prefix.m4]) m4_include([m4/libtool.m4]) m4_include([m4/limits-h.m4]) m4_include([m4/localcharset.m4]) m4_include([m4/locale-fr.m4]) m4_include([m4/locale-ja.m4]) m4_include([m4/locale-zh.m4]) m4_include([m4/locale_h.m4]) m4_include([m4/lstat.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) m4_include([m4/malloc.m4]) m4_include([m4/malloca.m4]) m4_include([m4/manywarnings.m4]) m4_include([m4/math_h.m4]) m4_include([m4/mbrtowc.m4]) m4_include([m4/mbsinit.m4]) m4_include([m4/mbstate_t.m4]) m4_include([m4/memchr.m4]) m4_include([m4/mempcpy.m4]) m4_include([m4/minmax.m4]) m4_include([m4/mkdir.m4]) m4_include([m4/mkstemps.m4]) m4_include([m4/mmap-anon.m4]) m4_include([m4/mode_t.m4]) m4_include([m4/msvc-inval.m4]) m4_include([m4/msvc-nothrow.m4]) m4_include([m4/multiarch.m4]) m4_include([m4/nls.m4]) m4_include([m4/nocrash.m4]) m4_include([m4/off_t.m4]) m4_include([m4/open-cloexec.m4]) m4_include([m4/open-slash.m4]) m4_include([m4/open.m4]) m4_include([m4/pathmax.m4]) m4_include([m4/pipe.m4]) m4_include([m4/po.m4]) m4_include([m4/printf-frexp.m4]) m4_include([m4/printf-frexpl.m4]) m4_include([m4/printf.m4]) m4_include([m4/progtest.m4]) m4_include([m4/quote.m4]) m4_include([m4/quotearg.m4]) m4_include([m4/raise.m4]) m4_include([m4/rawmemchr.m4]) m4_include([m4/readlink.m4]) m4_include([m4/realloc.m4]) m4_include([m4/reallocarray.m4]) m4_include([m4/setlocale_null.m4]) m4_include([m4/sigaction.m4]) m4_include([m4/signal_h.m4]) m4_include([m4/signalblocking.m4]) m4_include([m4/signbit.m4]) m4_include([m4/size_max.m4]) m4_include([m4/ssize_t.m4]) m4_include([m4/stat-time.m4]) m4_include([m4/stat.m4]) m4_include([m4/stdalign.m4]) m4_include([m4/stddef_h.m4]) m4_include([m4/stdint.m4]) m4_include([m4/stdint_h.m4]) m4_include([m4/stdio_h.m4]) m4_include([m4/stdlib_h.m4]) m4_include([m4/strerror.m4]) m4_include([m4/string_h.m4]) m4_include([m4/strndup.m4]) m4_include([m4/strnlen.m4]) m4_include([m4/sys_random_h.m4]) m4_include([m4/sys_socket_h.m4]) m4_include([m4/sys_stat_h.m4]) m4_include([m4/sys_types_h.m4]) m4_include([m4/sys_wait_h.m4]) m4_include([m4/tempname.m4]) m4_include([m4/threadlib.m4]) m4_include([m4/time_h.m4]) m4_include([m4/unistd_h.m4]) m4_include([m4/utime.m4]) m4_include([m4/utime_h.m4]) m4_include([m4/vasnprintf.m4]) m4_include([m4/vasprintf.m4]) m4_include([m4/vfprintf-posix.m4]) m4_include([m4/visibility.m4]) m4_include([m4/vprintf-posix.m4]) m4_include([m4/warn-on-use.m4]) m4_include([m4/warnings.m4]) m4_include([m4/wchar_h.m4]) m4_include([m4/wchar_t.m4]) m4_include([m4/wctype_h.m4]) m4_include([m4/wint_t.m4]) m4_include([m4/xalloc.m4]) m4_include([m4/xsize.m4]) m4_include([m4/zzgnulib.m4]) recode-3.7.15/keld/0000755000175000017500000000000014766021044007534 5recode-3.7.15/keld/NomsSeulsfinal.lst0000644000175000017500000126466413226751246013171 @@ 0000 Commandes C0 et latin de base (Latin de base) 007F 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 001A 001B 001C 001D 001E 001F 0020 ESPACE 0021 POINT D'EXCLAMATION 0022 GUILLEMET ANGLAIS 0023 CROISILLON 0024 SYMBOLE DOLLAR 0025 SYMBOLE POUR CENT 0026 PERLUÈTE (esperluète, esperluette) 0027 APOSTROPHE 0028 PARENTHÈSE GAUCHE 0029 PARENTHÈSE DROITE 002A ASTÉRISQUE 002B SIGNE PLUS 002C VIRGULE 002D TIRET (trait d'union, signe moins) 002E POINT 002F BARRE OBLIQUE (cotice) 0030 CHIFFRE ZÉRO 0031 CHIFFRE UN 0032 CHIFFRE DEUX 0033 CHIFFRE TROIS 0034 CHIFFRE QUATRE 0035 CHIFFRE CINQ 0036 CHIFFRE SIX 0037 CHIFFRE SEPT 0038 CHIFFRE HUIT 0039 CHIFFRE NEUF 003A DEUX-POINTS 003B POINT-VIRGULE 003C SIGNE INFÉRIEUR À 003D SIGNE ÉGAL À 003E SIGNE SUPÉRIEUR À 003F POINT D'INTERROGATION 0040 ARROBE (à commercial, arobas, arobase, arrobas) 0041 LETTRE MAJUSCULE LATINE A 0042 LETTRE MAJUSCULE LATINE B 0043 LETTRE MAJUSCULE LATINE C 0044 LETTRE MAJUSCULE LATINE D 0045 LETTRE MAJUSCULE LATINE E 0046 LETTRE MAJUSCULE LATINE F 0047 LETTRE MAJUSCULE LATINE G 0048 LETTRE MAJUSCULE LATINE H 0049 LETTRE MAJUSCULE LATINE I 004A LETTRE MAJUSCULE LATINE J 004B LETTRE MAJUSCULE LATINE K 004C LETTRE MAJUSCULE LATINE L 004D LETTRE MAJUSCULE LATINE M 004E LETTRE MAJUSCULE LATINE N 004F LETTRE MAJUSCULE LATINE O 0050 LETTRE MAJUSCULE LATINE P 0051 LETTRE MAJUSCULE LATINE Q 0052 LETTRE MAJUSCULE LATINE R 0053 LETTRE MAJUSCULE LATINE S 0054 LETTRE MAJUSCULE LATINE T 0055 LETTRE MAJUSCULE LATINE U 0056 LETTRE MAJUSCULE LATINE V 0057 LETTRE MAJUSCULE LATINE W 0058 LETTRE MAJUSCULE LATINE X 0059 LETTRE MAJUSCULE LATINE Y 005A LETTRE MAJUSCULE LATINE Z 005B CROCHET GAUCHE 005C BARRE OBLIQUE INVERSÉE (contre-cotice) 005D CROCHET DROIT 005E ACCENT CIRCONFLEXE (avec chasse) 005F TIRET BAS (tiret de soulignement) 0060 ACCENT GRAVE (avec chasse) 0061 LETTRE MINUSCULE LATINE A 0062 LETTRE MINUSCULE LATINE B 0063 LETTRE MINUSCULE LATINE C 0064 LETTRE MINUSCULE LATINE D 0065 LETTRE MINUSCULE LATINE E 0066 LETTRE MINUSCULE LATINE F 0067 LETTRE MINUSCULE LATINE G 0068 LETTRE MINUSCULE LATINE H 0069 LETTRE MINUSCULE LATINE I 006A LETTRE MINUSCULE LATINE J 006B LETTRE MINUSCULE LATINE K 006C LETTRE MINUSCULE LATINE L 006D LETTRE MINUSCULE LATINE M 006E LETTRE MINUSCULE LATINE N 006F LETTRE MINUSCULE LATINE O 0070 LETTRE MINUSCULE LATINE P 0071 LETTRE MINUSCULE LATINE Q 0072 LETTRE MINUSCULE LATINE R 0073 LETTRE MINUSCULE LATINE S 0074 LETTRE MINUSCULE LATINE T 0075 LETTRE MINUSCULE LATINE U 0076 LETTRE MINUSCULE LATINE V 0077 LETTRE MINUSCULE LATINE W 0078 LETTRE MINUSCULE LATINE X 0079 LETTRE MINUSCULE LATINE Y 007A LETTRE MINUSCULE LATINE Z 007B ACCOLADE GAUCHE 007C BARRE VERTICALE 007D ACCOLADE DROITE 007E TILDE (avec chasse) 007F @@ 0080 Commandes C1 et supplément Latin-1 (Supplément Latin-1) 00FF 0080 0081 0082 0083 0084 0085 0086 0087 0088 0089 008A 008B 008C 008D 008E 008F 0090 0091 0092 0093 0094 0095 0096 0097 0098 0099 009A 009B 009C 009D 009E 009F 00A0 ESPACE INSÉCABLE (espace imposée, espace sans coupure, espace liante) 00A1 POINT D'EXCLAMATION RENVERSÉ (point d'exclamation inversé) 00A2 SYMBOLE CENTIME 00A3 SYMBOLE LIVRE 00A4 SYMBOLE MONÉTAIRE 00A5 SYMBOLE YEN 00A6 BARRE VERTICALE BRISÉE (barre déjointe) 00A7 PARAGRAPHE (alinéa) 00A8 TRÉMA (avec chasse) 00A9 SYMBOLE COPYRIGHT 00AA INDICATEUR ORDINAL FÉMININ 00AB GUILLEMET GAUCHE * 00AC SIGNE NÉGATION (symbole non) 00AD TRAIT D'UNION VIRTUEL (tiret conditionnel) 00AE SYMBOLE MARQUE DÉPOSÉE 00AF MACRON (avec chasse) 00B0 SYMBOLE DEGRÉ 00B1 SIGNE PLUS-OU-MOINS 00B2 EXPOSANT DEUX 00B3 EXPOSANT TROIS 00B4 ACCENT AIGU (avec chasse) 00B5 SYMBOLE MICRO 00B6 PIED DE MOUCHE (fin de paragraphe) 00B7 POINT MÉDIAN (point central, point au milieu) 00B8 CÉDILLE (avec chasse) 00B9 EXPOSANT UN 00BA INDICATEUR ORDINAL MASCULIN 00BB GUILLEMET DROIT * 00BC FRACTION UN QUART 00BD FRACTION UN DEMI 00BE FRACTION TROIS QUARTS 00BF POINT D'INTERROGATION RENVERSÉ (point d'interrogation inversé) 00C0 LETTRE MAJUSCULE LATINE A ACCENT GRAVE 00C1 LETTRE MAJUSCULE LATINE A ACCENT AIGU 00C2 LETTRE MAJUSCULE LATINE A ACCENT CIRCONFLEXE 00C3 LETTRE MAJUSCULE LATINE A TILDE 00C4 LETTRE MAJUSCULE LATINE A TRÉMA 00C5 LETTRE MAJUSCULE LATINE A ROND EN CHEF 00C6 LETTRE MAJUSCULE LATINE AE (digramme soudé ae, ash) * 00C7 LETTRE MAJUSCULE LATINE C CÉDILLE 00C8 LETTRE MAJUSCULE LATINE E ACCENT GRAVE 00C9 LETTRE MAJUSCULE LATINE E ACCENT AIGU 00CA LETTRE MAJUSCULE LATINE E ACCENT CIRCONFLEXE 00CB LETTRE MAJUSCULE LATINE E TRÉMA 00CC LETTRE MAJUSCULE LATINE I ACCENT GRAVE 00CD LETTRE MAJUSCULE LATINE I ACCENT AIGU 00CE LETTRE MAJUSCULE LATINE I ACCENT CIRCONFLEXE 00CF LETTRE MAJUSCULE LATINE I TRÉMA 00D0 LETTRE MAJUSCULE LATINE ED (eth) 00D1 LETTRE MAJUSCULE LATINE N TILDE 00D2 LETTRE MAJUSCULE LATINE O ACCENT GRAVE 00D3 LETTRE MAJUSCULE LATINE O ACCENT AIGU 00D4 LETTRE MAJUSCULE LATINE O ACCENT CIRCONFLEXE 00D5 LETTRE MAJUSCULE LATINE O TILDE 00D6 LETTRE MAJUSCULE LATINE O TRÉMA 00D7 SIGNE MULTIPLICATION 00D8 LETTRE MAJUSCULE LATINE O BARRÉ OBLIQUEMENT 00D9 LETTRE MAJUSCULE LATINE U ACCENT GRAVE 00DA LETTRE MAJUSCULE LATINE U ACCENT AIGU 00DB LETTRE MAJUSCULE LATINE U ACCENT CIRCONFLEXE 00DC LETTRE MAJUSCULE LATINE U TRÉMA 00DD LETTRE MAJUSCULE LATINE Y ACCENT AIGU 00DE LETTRE MAJUSCULE LATINE THORN 00DF LETTRE MINUSCULE LATINE S DUR (s dur allemand, ess-zet) 00E0 LETTRE MINUSCULE LATINE A ACCENT GRAVE 00E1 LETTRE MINUSCULE LATINE A ACCENT AIGU 00E2 LETTRE MINUSCULE LATINE A ACCENT CIRCONFLEXE 00E3 LETTRE MINUSCULE LATINE A TILDE 00E4 LETTRE MINUSCULE LATINE A TRÉMA 00E5 LETTRE MINUSCULE LATINE A ROND EN CHEF 00E6 LETTRE MINUSCULE LATINE AE (digramme soudé ae, ash) * 00E7 LETTRE MINUSCULE LATINE C CÉDILLE 00E8 LETTRE MINUSCULE LATINE E ACCENT GRAVE 00E9 LETTRE MINUSCULE LATINE E ACCENT AIGU 00EA LETTRE MINUSCULE LATINE E ACCENT CIRCONFLEXE 00EB LETTRE MINUSCULE LATINE E TRÉMA 00EC LETTRE MINUSCULE LATINE I ACCENT GRAVE 00ED LETTRE MINUSCULE LATINE I ACCENT AIGU 00EE LETTRE MINUSCULE LATINE I ACCENT CIRCONFLEXE 00EF LETTRE MINUSCULE LATINE I TRÉMA 00F0 LETTRE MINUSCULE LATINE ED (eth) 00F1 LETTRE MINUSCULE LATINE N TILDE 00F2 LETTRE MINUSCULE LATINE O ACCENT GRAVE 00F3 LETTRE MINUSCULE LATINE O ACCENT AIGU 00F4 LETTRE MINUSCULE LATINE O ACCENT CIRCONFLEXE 00F5 LETTRE MINUSCULE LATINE O TILDE 00F6 LETTRE MINUSCULE LATINE O TRÉMA 00F7 SIGNE DIVISION 00F8 LETTRE MINUSCULE LATINE O BARRÉ OBLIQUEMENT 00F9 LETTRE MINUSCULE LATINE U ACCENT GRAVE 00FA LETTRE MINUSCULE LATINE U ACCENT AIGU 00FB LETTRE MINUSCULE LATINE U ACCENT CIRCONFLEXE 00FC LETTRE MINUSCULE LATINE U TRÉMA 00FD LETTRE MINUSCULE LATINE Y ACCENT AIGU 00FE LETTRE MINUSCULE LATINE THORN 00FF LETTRE MINUSCULE LATINE Y TRÉMA @@ 0100 Latin étendu A 017F 0100 LETTRE MAJUSCULE LATINE A MACRON 0101 LETTRE MINUSCULE LATINE A MACRON 0102 LETTRE MAJUSCULE LATINE A BRÈVE 0103 LETTRE MINUSCULE LATINE A BRÈVE 0104 LETTRE MAJUSCULE LATINE A OGONEK 0105 LETTRE MINUSCULE LATINE A OGONEK 0106 LETTRE MAJUSCULE LATINE C ACCENT AIGU 0107 LETTRE MINUSCULE LATINE C ACCENT AIGU 0108 LETTRE MAJUSCULE LATINE C ACCENT CIRCONFLEXE 0109 LETTRE MINUSCULE LATINE C ACCENT CIRCONFLEXE 010A LETTRE MAJUSCULE LATINE C POINT EN CHEF 010B LETTRE MINUSCULE LATINE C POINT EN CHEF 010C LETTRE MAJUSCULE LATINE C CARON 010D LETTRE MINUSCULE LATINE C CARON 010E LETTRE MAJUSCULE LATINE D CARON 010F LETTRE MINUSCULE LATINE D CARON 0110 LETTRE MAJUSCULE LATINE D BARRÉ 0111 LETTRE MINUSCULE LATINE D BARRÉ 0112 LETTRE MAJUSCULE LATINE E MACRON 0113 LETTRE MINUSCULE LATINE E MACRON 0114 LETTRE MAJUSCULE LATINE E BRÈVE 0115 LETTRE MINUSCULE LATINE E BRÈVE 0116 LETTRE MAJUSCULE LATINE E POINT EN CHEF 0117 LETTRE MINUSCULE LATINE E POINT EN CHEF 0118 LETTRE MAJUSCULE LATINE E OGONEK 0119 LETTRE MINUSCULE LATINE E OGONEK 011A LETTRE MAJUSCULE LATINE E CARON 011B LETTRE MINUSCULE LATINE E CARON 011C LETTRE MAJUSCULE LATINE G ACCENT CIRCONFLEXE 011D LETTRE MINUSCULE LATINE G ACCENT CIRCONFLEXE 011E LETTRE MAJUSCULE LATINE G BRÈVE 011F LETTRE MINUSCULE LATINE G BRÈVE 0120 LETTRE MAJUSCULE LATINE G POINT EN CHEF 0121 LETTRE MINUSCULE LATINE G POINT EN CHEF 0122 LETTRE MAJUSCULE LATINE G CÉDILLE 0123 LETTRE MINUSCULE LATINE G CÉDILLE 0124 LETTRE MAJUSCULE LATINE H ACCENT CIRCONFLEXE 0125 LETTRE MINUSCULE LATINE H ACCENT CIRCONFLEXE 0126 LETTRE MAJUSCULE LATINE H BARRÉ 0127 LETTRE MINUSCULE LATINE H BARRÉ 0128 LETTRE MAJUSCULE LATINE I TILDE 0129 LETTRE MINUSCULE LATINE I TILDE 012A LETTRE MAJUSCULE LATINE I MACRON 012B LETTRE MINUSCULE LATINE I MACRON 012C LETTRE MAJUSCULE LATINE I BRÈVE 012D LETTRE MINUSCULE LATINE I BRÈVE 012E LETTRE MAJUSCULE LATINE I OGONEK 012F LETTRE MINUSCULE LATINE I OGONEK 0130 LETTRE MAJUSCULE LATINE I POINT EN CHEF 0131 LETTRE MINUSCULE LATINE I SANS POINT 0132 DIGRAMME SOUDÉ MAJUSCULE LATIN IJ (ligature IJ) 0133 DIGRAMME SOUDÉ MINUSCULE LATIN IJ (ligature ij) 0134 LETTRE MAJUSCULE LATINE J ACCENT CIRCONFLEXE 0135 LETTRE MINUSCULE LATINE J ACCENT CIRCONFLEXE 0136 LETTRE MAJUSCULE LATINE K CÉDILLE 0137 LETTRE MINUSCULE LATINE K CÉDILLE 0138 LETTRE MINUSCULE LATINE KRA 0139 LETTRE MAJUSCULE LATINE L ACCENT AIGU 013A LETTRE MINUSCULE LATINE L ACCENT AIGU 013B LETTRE MAJUSCULE LATINE L CÉDILLE 013C LETTRE MINUSCULE LATINE L CÉDILLE 013D LETTRE MAJUSCULE LATINE L CARON 013E LETTRE MINUSCULE LATINE L CARON 013F LETTRE MAJUSCULE LATINE L POINT MÉDIAN 0140 LETTRE MINUSCULE LATINE L POINT MÉDIAN 0141 LETTRE MAJUSCULE LATINE L BARRÉ 0142 LETTRE MINUSCULE LATINE L BARRÉ 0143 LETTRE MAJUSCULE LATINE N ACCENT AIGU 0144 LETTRE MINUSCULE LATINE N ACCENT AIGU 0145 LETTRE MAJUSCULE LATINE N CÉDILLE 0146 LETTRE MINUSCULE LATINE N CÉDILLE 0147 LETTRE MAJUSCULE LATINE N CARON 0148 LETTRE MINUSCULE LATINE N CARON 0149 LETTRE MINUSCULE LATINE N PRÉCÉDÉE D'UNE APOSTROPHE 014A LETTRE MAJUSCULE LATINE ENG (Sami) 014B LETTRE MINUSCULE LATINE ENG (Sami) 014C LETTRE MAJUSCULE LATINE O MACRON 014D LETTRE MINUSCULE LATINE O MACRON 014E LETTRE MAJUSCULE LATINE O BRÈVE 014F LETTRE MINUSCULE LATINE O BRÈVE 0150 LETTRE MAJUSCULE LATINE O DOUBLE ACCENT AIGU 0151 LETTRE MINUSCULE LATINE O DOUBLE ACCENT AIGU 0152 DIGRAMME SOUDÉ MAJUSCULE LATIN OE (ligature OE) 0153 DIGRAMME SOUDÉ MINUSCULE LATIN OE (ligature oe) 0154 LETTRE MAJUSCULE LATINE R ACCENT AIGU 0155 LETTRE MINUSCULE LATINE R ACCENT AIGU 0156 LETTRE MAJUSCULE LATINE R CÉDILLE 0157 LETTRE MINUSCULE LATINE R CÉDILLE 0158 LETTRE MAJUSCULE LATINE R CARON 0159 LETTRE MINUSCULE LATINE R CARON 015A LETTRE MAJUSCULE LATINE S ACCENT AIGU 015B LETTRE MINUSCULE LATINE S ACCENT AIGU 015C LETTRE MAJUSCULE LATINE S ACCENT CIRCONFLEXE 015D LETTRE MINUSCULE LATINE S ACCENT CIRCONFLEXE 015E LETTRE MAJUSCULE LATINE S CÉDILLE 015F LETTRE MINUSCULE LATINE S CÉDILLE 0160 LETTRE MAJUSCULE LATINE S CARON 0161 LETTRE MINUSCULE LATINE S CARON 0162 LETTRE MAJUSCULE LATINE T CÉDILLE 0163 LETTRE MINUSCULE LATINE T CÉDILLE 0164 LETTRE MAJUSCULE LATINE T CARON 0165 LETTRE MINUSCULE LATINE T CARON 0166 LETTRE MAJUSCULE LATINE T BARRÉ 0167 LETTRE MINUSCULE LATINE T BARRÉ 0168 LETTRE MAJUSCULE LATINE U TILDE 0169 LETTRE MINUSCULE LATINE U TILDE 016A LETTRE MAJUSCULE LATINE U MACRON 016B LETTRE MINUSCULE LATINE U MACRON 016C LETTRE MAJUSCULE LATINE U BRÈVE 016D LETTRE MINUSCULE LATINE U BRÈVE 016E LETTRE MAJUSCULE LATINE U ROND EN CHEF 016F LETTRE MINUSCULE LATINE U ROND EN CHEF 0170 LETTRE MAJUSCULE LATINE U DOUBLE ACCENT AIGU 0171 LETTRE MINUSCULE LATINE U DOUBLE ACCENT AIGU 0172 LETTRE MAJUSCULE LATINE U OGONEK 0173 LETTRE MINUSCULE LATINE U OGONEK 0174 LETTRE MAJUSCULE LATINE W ACCENT CIRCONFLEXE 0175 LETTRE MINUSCULE LATINE W ACCENT CIRCONFLEXE 0176 LETTRE MAJUSCULE LATINE Y ACCENT CIRCONFLEXE 0177 LETTRE MINUSCULE LATINE Y ACCENT CIRCONFLEXE 0178 LETTRE MAJUSCULE LATINE Y TRÉMA 0179 LETTRE MAJUSCULE LATINE Z ACCENT AIGU 017A LETTRE MINUSCULE LATINE Z ACCENT AIGU 017B LETTRE MAJUSCULE LATINE Z POINT EN CHEF 017C LETTRE MINUSCULE LATINE Z POINT EN CHEF 017D LETTRE MAJUSCULE LATINE Z CARON 017E LETTRE MINUSCULE LATINE Z CARON 017F LETTRE MINUSCULE LATINE S LONG @@ 0180 Latin étendu B 024F 0180 LETTRE MINUSCULE LATINE B BARRÉ 0181 LETTRE MAJUSCULE LATINE B CROSSE 0182 LETTRE MAJUSCULE LATINE B POTENCE 0183 LETTRE MINUSCULE LATINE B POTENCE 0184 LETTRE MAJUSCULE LATINE SIXIÈME TON 0185 LETTRE MINUSCULE LATINE SIXIÈME TON 0186 LETTRE MAJUSCULE LATINE O OUVERT 0187 LETTRE MAJUSCULE LATINE C CROSSE 0188 LETTRE MINUSCULE LATINE C CROSSE 0189 LETTRE MAJUSCULE LATINE D AFRICAIN * 018A LETTRE MAJUSCULE LATINE D CROSSE 018B LETTRE MAJUSCULE LATINE D POTENCE 018C LETTRE MINUSCULE LATINE D POTENCE 018D LETTRE MINUSCULE LATINE DELTA CULBUTÉE 018E LETTRE MAJUSCULE LATINE E RÉFLÉCHI 018F LETTRE MAJUSCULE LATINE SCHWA 0190 LETTRE MAJUSCULE LATINE E OUVERT 0191 LETTRE MAJUSCULE LATINE F HAMEÇON 0192 LETTRE MINUSCULE LATINE F HAMEÇON 0193 LETTRE MAJUSCULE LATINE G CROSSE 0194 LETTRE MAJUSCULE LATINE GAMMA 0195 LETTRE MINUSCULE LATINE HV (hwair) 0196 LETTRE MAJUSCULE LATINE IOTA 0197 LETTRE MAJUSCULE LATINE I BARRÉ 0198 LETTRE MAJUSCULE LATINE K CROSSE 0199 LETTRE MINUSCULE LATINE K CROSSE 019A LETTRE MINUSCULE LATINE L RAYÉ 019B LETTRE MINUSCULE LATINE LAMBDA BARRÉ 019C LETTRE MAJUSCULE LATINE M CULBUTÉ 019D LETTRE MAJUSCULE LATINE N HAMEÇON 019E LETTRE MINUSCULE LATINE N À LONG JAMBAGE DROIT 019F LETTRE MAJUSCULE LATINE O TILDE MÉDIAN * 01A0 LETTRE MAJUSCULE LATINE O CORNU 01A1 LETTRE MINUSCULE LATINE O CORNU 01A2 LETTRE MAJUSCULE LATINE GHA 01A3 LETTRE MINUSCULE LATINE GHA 01A4 LETTRE MAJUSCULE LATINE P CROSSE 01A5 LETTRE MINUSCULE LATINE P CROSSE 01A6 LETTRE LATINE YR * 01A7 LETTRE MAJUSCULE LATINE DEUXIÈME TON 01A8 LETTRE MINUSCULE LATINE DEUXIÈME TON 01A9 LETTRE MAJUSCULE LATINE ECH 01AA LETTRE LATINE ECH RÉFLÉCHI BOUCLÉ 01AB LETTRE MINUSCULE LATINE T HAMEÇON PALATAL 01AC LETTRE MAJUSCULE LATINE T CROSSE 01AD LETTRE MINUSCULE LATINE T CROSSE 01AE LETTRE MAJUSCULE LATINE T HAMEÇON RÉTROFLEXE 01AF LETTRE MAJUSCULE LATINE U CORNU 01B0 LETTRE MINUSCULE LATINE U CORNU 01B1 LETTRE MAJUSCULE LATINE UPSILON 01B2 LETTRE MAJUSCULE LATINE V CROSSE 01B3 LETTRE MAJUSCULE LATINE Y CROSSE 01B4 LETTRE MINUSCULE LATINE Y CROSSE 01B5 LETTRE MAJUSCULE LATINE Z BARRÉ 01B6 LETTRE MINUSCULE LATINE Z BARRÉ 01B7 LETTRE MAJUSCULE LATINE EJ 01B8 LETTRE MAJUSCULE LATINE EJ RÉFLÉCHI 01B9 LETTRE MINUSCULE LATINE EJ RÉFLÉCHI 01BA LETTRE MINUSCULE LATINE EJ HAMEÇON 01BB LETTRE LATINE DEUX BARRÉ 01BC LETTRE MAJUSCULE LATINE CINQUIÈME TON 01BD LETTRE MINUSCULE LATINE CINQUIÈME TON 01BE LETTRE LATINE COUP DE GLOTTE BARRÉ RENVERSÉ 01BF LETTRE LATINE WYNN 01C0 LETTRE LATINE CLIC DENTAL 01C1 LETTRE LATINE CLIC LATÉRAL 01C2 LETTRE LATINE CLIC ALVÉOLAIRE 01C3 LETTRE LATINE CLIC RÉTROFLEXE 01C4 LETTRE MAJUSCULE LATINE DZ CARON 01C5 LETTRE MAJUSCULE LATINE D AVEC LETTRE MINUSCULE Z CARON 01C6 LETTRE MINUSCULE LATINE DZ CARON 01C7 LETTRE MAJUSCULE LATINE LJ (digramme soudé LJ) 01C8 LETTRE MAJUSCULE LATINE L AVEC LETTRE MINUSCULE J 01C9 LETTRE MINUSCULE LATINE LJ (digramme soudé lj) 01CA LETTRE MAJUSCULE LATINE NJ (digramme soudé NJ) 01CB LETTRE MAJUSCULE LATINE N AVEC LETTRE MINUSCULE J 01CC LETTRE MINUSCULE LATINE NJ (digramme soudé nj) 01CD LETTRE MAJUSCULE LATINE A CARON 01CE LETTRE MINUSCULE LATINE A CARON 01CF LETTRE MAJUSCULE LATINE I CARON 01D0 LETTRE MINUSCULE LATINE I CARON 01D1 LETTRE MAJUSCULE LATINE O CARON 01D2 LETTRE MINUSCULE LATINE O CARON 01D3 LETTRE MAJUSCULE LATINE U CARON 01D4 LETTRE MINUSCULE LATINE U CARON 01D5 LETTRE MAJUSCULE LATINE U TRÉMA ET MACRON 01D6 LETTRE MINUSCULE LATINE U TRÉMA ET MACRON 01D7 LETTRE MAJUSCULE LATINE U TRÉMA ET ACCENT AIGU 01D8 LETTRE MINUSCULE LATINE U TRÉMA ET ACCENT AIGU 01D9 LETTRE MAJUSCULE LATINE U TRÉMA ET CARON 01DA LETTRE MINUSCULE LATINE U TRÉMA ET CARON 01DB LETTRE MAJUSCULE LATINE U TRÉMA ET ACCENT GRAVE 01DC LETTRE MINUSCULE LATINE U TRÉMA ET ACCENT GRAVE 01DD LETTRE MINUSCULE LATINE E CULBUTÉ 01DE LETTRE MAJUSCULE LATINE A TRÉMA ET MACRON 01DF LETTRE MINUSCULE LATINE A TRÉMA ET MACRON 01E0 LETTRE MAJUSCULE LATINE A POINT EN CHEF ET MACRON 01E1 LETTRE MINUSCULE LATINE A POINT EN CHEF ET MACRON 01E2 LETTRE MAJUSCULE LATINE AE MACRON (digramme soudé ae, ash) * 01E3 LETTRE MINUSCULE LATINE AE MACRON (digramme soudé ae, ash) * 01E4 LETTRE MAJUSCULE LATINE G BARRÉ 01E5 LETTRE MINUSCULE LATINE G BARRÉ 01E6 LETTRE MAJUSCULE LATINE G CARON 01E7 LETTRE MINUSCULE LATINE G CARON 01E8 LETTRE MAJUSCULE LATINE K CARON 01E9 LETTRE MINUSCULE LATINE K CARON 01EA LETTRE MAJUSCULE LATINE O OGONEK 01EB LETTRE MINUSCULE LATINE O OGONEK 01EC LETTRE MAJUSCULE LATINE O OGONEK ET MACRON 01ED LETTRE MINUSCULE LATINE O OGONEK ET MACRON 01EE LETTRE MAJUSCULE LATINE EJ CARON 01EF LETTRE MINUSCULE LATINE EJ CARON 01F0 LETTRE MINUSCULE LATINE J CARON 01F1 LETTRE MAJUSCULE LATINE DZ 01F2 LETTRE MAJUSCULE LATINE D AVEC LETTRE MINUSCULE Z 01F3 LETTRE MINUSCULE LATINE DZ 01F4 LETTRE MAJUSCULE LATINE G ACCENT AIGU 01F5 LETTRE MINUSCULE LATINE G ACCENT AIGU 01F6 LETTRE MAJUSCULE LATINE HWAIR 01F7 LETTRE MAJUSCULE LATINE WYNN 01F8 LETTRE MAJUSCULE LATINE N GRAVE 01F9 LETTRE MINUSCULE LATINE N GRAVE 01FA LETTRE MAJUSCULE LATINE A ROND EN CHEF ET ACCENT AIGU 01FB LETTRE MINUSCULE LATINE A ROND EN CHEF ET ACCENT AIGU 01FC LETTRE MAJUSCULE LATINE AE ACCENT AIGU (digramme soudé ae, ash) * 01FD LETTRE MINUSCULE LATINE AE ACCENT AIGU (digramme soudé ae, ash) * 01FE LETTRE MAJUSCULE LATINE O BARRÉ ACCENT AIGU 01FF LETTRE MINUSCULE LATINE O BARRÉ ACCENT AIGU 0200 LETTRE MAJUSCULE LATINE A DOUBLE ACCENT GRAVE 0201 LETTRE MINUSCULE LATINE A DOUBLE ACCENT GRAVE 0202 LETTRE MAJUSCULE LATINE A BRÈVE RENVERSÉE 0203 LETTRE MINUSCULE LATINE A BRÈVE RENVERSÉE 0204 LETTRE MAJUSCULE LATINE E DOUBLE ACCENT GRAVE 0205 LETTRE MINUSCULE LATINE E DOUBLE ACCENT GRAVE 0206 LETTRE MAJUSCULE LATINE E BRÈVE RENVERSÉE 0207 LETTRE MINUSCULE LATINE E BRÈVE RENVERSÉE 0208 LETTRE MAJUSCULE LATINE I DOUBLE ACCENT GRAVE 0209 LETTRE MINUSCULE LATINE I DOUBLE ACCENT GRAVE 020A LETTRE MAJUSCULE LATINE I BRÈVE RENVERSÉE 020B LETTRE MINUSCULE LATINE I BRÈVE RENVERSÉE 020C LETTRE MAJUSCULE LATINE O DOUBLE ACCENT GRAVE 020D LETTRE MINUSCULE LATINE O DOUBLE ACCENT GRAVE 020E LETTRE MAJUSCULE LATINE O BRÈVE RENVERSÉE 020F LETTRE MINUSCULE LATINE O BRÈVE RENVERSÉE 0210 LETTRE MAJUSCULE LATINE R DOUBLE ACCENT GRAVE 0211 LETTRE MINUSCULE LATINE R DOUBLE ACCENT GRAVE 0212 LETTRE MAJUSCULE LATINE R BRÈVE RENVERSÉE 0213 LETTRE MINUSCULE LATINE R BRÈVE RENVERSÉE 0214 LETTRE MAJUSCULE LATINE U DOUBLE ACCENT GRAVE 0215 LETTRE MINUSCULE LATINE U DOUBLE ACCENT GRAVE 0216 LETTRE MAJUSCULE LATINE U BRÈVE RENVERSÉE 0217 LETTRE MINUSCULE LATINE U BRÈVE RENVERSÉE 0218 LETTRE MAJUSCULE LATINE S VIRGULE SOUSCRITE * 0219 LETTRE MINUSCULE LATINE S VIRGULE SOUSCRITE * 021A LETTRE MAJUSCULE LATINE T VIRGULE SOUSCRITE * 021B LETTRE MINUSCULE LATINE T VIRGULE SOUSCRITE * 021C LETTRE MAJUSCULE LATINE YOGH 021D LETTRE MINUSCULE LATINE YOGH 021E LETTRE MAJUSCULE LATINE H CARON 021F LETTRE MINUSCULE LATINE H CARON 0222 LETTRE MAJUSCULE LATINE OU 0223 LETTRE MINUSCULE LATINE OU 0224 LETTRE MAJUSCULE LATINE Z CROCHET 0225 LETTRE MINUSCULE LATINE Z CROCHET 0226 LETTRE MAJUSCULE LATINE A POINT EN CHEF 0227 LETTRE MINUSCULE LATINE A POINT EN CHEF 0228 LETTRE MAJUSCULE LATINE E CÉDILLE 0229 LETTRE MINUSCULE LATINE E CÉDILLE 022A LETTRE MAJUSCULE LATINE O TRÉMA ET MACRON 022B LETTRE MINUSCULE LATINE O TRÉMA ET MACRON 022C LETTRE MAJUSCULE LATINE O TILDE ET MACRON 022D LETTRE MINUSCULE LATINE O TILDE ET MACRON 022E LETTRE MAJUSCULE LATINE O POINT EN CHEF 022F LETTRE MINUSCULE LATINE O POINT EN CHEF 0230 LETTRE MAJUSCULE LATINE O POINT EN CHEF ET MACRON 0231 LETTRE MINUSCULE LATINE O POINT EN CHEF ET MACRON 0232 LETTRE MAJUSCULE LATINE Y MACRON 0233 LETTRE MINUSCULE LATINE Y MACRON @@ 0250 Alphabet phonétique 02AF 0250 LETTRE MINUSCULE LATINE A CULBUTÉ 0251 LETTRE MINUSCULE LATINE ALPHA 0252 LETTRE MINUSCULE LATINE ALPHA CULBUTÉ 0253 LETTRE MINUSCULE LATINE B CROSSE 0254 LETTRE MINUSCULE LATINE O OUVERT 0255 LETTRE MINUSCULE LATINE C BOUCLÉ 0256 LETTRE MINUSCULE LATINE D HAMEÇON RÉTROFLEXE 0257 LETTRE MINUSCULE LATINE D CROSSE 0258 LETTRE MINUSCULE LATINE E RÉFLÉCHI 0259 LETTRE MINUSCULE LATINE SCHWA 025A LETTRE MINUSCULE LATINE SCHWA CROCHET 025B LETTRE MINUSCULE LATINE EPSILON 025C LETTRE MINUSCULE LATINE EPSILON RÉFLÉCHI 025D LETTRE MINUSCULE LATINE EPSILON RÉFLÉCHI CROCHET 025E LETTRE MINUSCULE LATINE EPSILON RÉFLÉCHI FERMÉ 025F LETTRE MINUSCULE LATINE J SANS POINT BARRÉ 0260 LETTRE MINUSCULE LATINE G CROSSE 0261 LETTRE MINUSCULE LATINE G CURSIF 0262 LETTRE LATINE PETITE MAJUSCULE G 0263 LETTRE MINUSCULE LATINE GAMMA 0264 LETTRE MINUSCULE LATINE PETIT GAMMA 0265 LETTRE MINUSCULE LATINE H CULBUTÉ 0266 LETTRE MINUSCULE LATINE H CROSSE 0267 LETTRE MINUSCULE LATINE ENG CROSSE 0268 LETTRE MINUSCULE LATINE I BARRÉ 0269 LETTRE MINUSCULE LATINE IOTA 026A LETTRE LATINE PETITE MAJUSCULE I 026B LETTRE MINUSCULE LATINE L TILDE MÉDIAN 026C LETTRE MINUSCULE LATINE L SANGLÉ 026D LETTRE MINUSCULE LATINE L HAMEÇON RÉTROFLEXE 026E LETTRE MINUSCULE LATINE LEJ 026F LETTRE MINUSCULE LATINE M CULBUTÉ 0270 LETTRE MINUSCULE LATINE M HAMPÉ CULBUTÉ 0271 LETTRE MINUSCULE LATINE M HAMEÇON PALATAL 0272 LETTRE MINUSCULE LATINE N HAMEÇON À GAUCHE 0273 LETTRE MINUSCULE LATINE N HAMEÇON RÉTROFLEXE 0274 LETTRE LATINE PETITE MAJUSCULE N 0275 LETTRE MINUSCULE LATINE O BARRÉ 0276 LETTRE LATINE PETITE MAJUSCULE OE 0277 LETTRE MINUSCULE LATINE OMÉGA FERMÉ 0278 LETTRE MINUSCULE LATINE PHI 0279 LETTRE MINUSCULE LATINE R CULBUTÉ 027A LETTRE MINUSCULE LATINE R PROLONGÉ CULBUTÉ 027B LETTRE MINUSCULE LATINE R CROSSE CULBUTÉ 027C LETTRE MINUSCULE LATINE R PROLONGÉ 027D LETTRE MINUSCULE LATINE R HAMEÇON RÉTROFLEXE 027E LETTRE MINUSCULE LATINE R SANS HAMPE 027F LETTRE MINUSCULE LATINE R SANS HAMPE RÉFLÉCHI 0280 LETTRE LATINE PETITE MAJUSCULE R * 0281 LETTRE LATINE PETITE MAJUSCULE R RENVERSÉ 0282 LETTRE MINUSCULE LATINE S HAMEÇON RÉTROFLEXE 0283 LETTRE MINUSCULE LATINE ECH 0284 LETTRE MINUSCULE LATINE J SANS POINT BARRÉ CROSSE 0285 LETTRE MINUSCULE LATINE ECH TRAPPU RENVERSÉ 0286 LETTRE MINUSCULE LATINE ECH BOUCLÉ 0287 LETTRE MINUSCULE LATINE T CULBUTÉ 0288 LETTRE MINUSCULE LATINE T HAMEÇON RÉTROFLEXE 0289 LETTRE MINUSCULE LATINE U BARRÉ 028A LETTRE MINUSCULE LATINE UPSILON 028B LETTRE MINUSCULE LATINE V DE RONDE 028C LETTRE MINUSCULE LATINE V CULBUTÉ 028D LETTRE MINUSCULE LATINE W CULBUTÉ 028E LETTRE MINUSCULE LATINE Y CULBUTÉ 028F LETTRE LATINE PETITE MAJUSCULE Y 0290 LETTRE MINUSCULE LATINE Z HAMEÇON RÉTROFLEXE 0291 LETTRE MINUSCULE LATINE Z BOUCLÉ 0292 LETTRE MINUSCULE LATINE EJ 0293 LETTRE MINUSCULE LATINE EJ BOUCLÉ 0294 LETTRE LATINE COUP DE GLOTTE 0295 LETTRE LATINE COUP DE GLOTTE RÉFLÉCHI 0296 LETTRE LATINE COUP DE GLOTTE RENVERSÉ 0297 LETTRE LATINE C ÉTIRÉ 0298 LETTRE LATINE CLIC BILABIAL 0299 LETTRE LATINE PETITE MAJUSCULE B 029A LETTRE MINUSCULE LATINE EPSILON FERMÉ 029B LETTRE LATINE PETITE MAJUSCULE G CROSSE 029C LETTRE LATINE PETITE MAJUSCULE H 029D LETTRE MINUSCULE LATINE J QUEUE CROISÉE 029E LETTRE MINUSCULE LATINE K CULBUTÉ 029F LETTRE LATINE PETITE MAJUSCULE L 02A0 LETTRE MINUSCULE LATINE Q CROSSE 02A1 LETTRE LATINE COUP DE GLOTTE BARRÉ 02A2 LETTRE LATINE COUP DE GLOTTE BARRÉ RÉFLÉCHI 02A3 LETTRE MINUSCULE LATINE DIGRAMME DZ 02A4 LETTRE MINUSCULE LATINE DIGRAMME DEJ 02A5 LETTRE MINUSCULE LATINE DIGRAMME DZ BOUCLÉ 02A6 LETTRE MINUSCULE LATINE DIGRAMME TS 02A7 LETTRE MINUSCULE LATINE DIGRAMME TECH 02A8 LETTRE MINUSCULE LATINE DIGRAMME TC BOUCLÉ 02A9 LETTRE MINUSCULE LATINE DIGRAMME FENG 02AA LETTRE MINUSCULE LATINE DIGRAMME LS 02AB LETTRE MINUSCULE LATINE DIGRAMME LZ 02AC LETTRE LATINE PERCUSSION BILALIALE 02AD LETTRE LATINE PERCUSSION BIDENTALE @@ 02B0 Modificateurs de lettres 02FF 02B0 LETTRE MODIFICATIVE MINUSCULE H 02B1 LETTRE MODIFICATIVE MINUSCULE H CROSSE 02B2 LETTRE MODIFICATIVE MINUSCULE J 02B3 LETTRE MODIFICATIVE MINUSCULE R 02B4 LETTRE MODIFICATIVE MINUSCULE R CULBUTÉ 02B5 LETTRE MODIFICATIVE MINUSCULE R CROSSE CULBUTÉ 02B6 LETTRE MODIFICATIVE PETITE MAJUSCULE R RENVERSÉ 02B7 LETTRE MODIFICATIVE MINUSCULE W 02B8 LETTRE MODIFICATIVE MINUSCULE Y 02B9 LETTRE MODIFICATIVE PRIME 02BA LETTRE MODIFICATIVE SECONDE 02BB LETTRE MODIFICATIVE VIRGULE CULBUTÉE 02BC LETTRE MODIFICATIVE APOSTROPHE 02BD LETTRE MODIFICATIVE VIRGULE RÉFLÉCHIE 02BE LETTRE MODIFICATIVE DEMI-ANNEAU À DROITE 02BF LETTRE MODIFICATIVE DEMI-ANNEAU À GAUCHE 02C0 LETTRE MODIFICATIVE COUP DE GLOTTE 02C1 LETTRE MODIFICATIVE COUP DE GLOTTE RÉFLÉCHI 02C2 LETTRE MODIFICATIVE POINTE DE FLÈCHE VERS LA GAUCHE 02C3 LETTRE MODIFICATIVE POINTE DE FLÈCHE VERS LA DROITE 02C4 LETTRE MODIFICATIVE POINTE DE FLÈCHE VERS LE HAUT 02C5 LETTRE MODIFICATIVE POINTE DE FLÈCHE VERS LE BAS 02C6 LETTRE MODIFICATIVE ACCENT CIRCONFLEXE 02C7 CARON (avec chasse) 02C8 LETTRE MODIFICATIVE LIGNE VERTICALE 02C9 LETTRE MODIFICATIVE MACRON 02CA LETTRE MODIFICATIVE ACCENT AIGU 02CB LETTRE MODIFICATIVE ACCENT GRAVE 02CC LETTRE MODIFICATIVE LIGNE VERTICALE BAS 02CD LETTRE MODIFICATIVE MACRON BAS 02CE LETTRE MODIFICATIVE ACCENT GRAVE BAS 02CF LETTRE MODIFICATIVE ACCENT AIGU BAS 02D0 LETTRE MODIFICATIVE DEUX POINTS TRIANGULAIRES 02D1 LETTRE MODIFICATIVE POINT TRIANGULAIRE 02D2 LETTRE MODIFICATIVE DEMI-ROND À DROITE CENTRÉ 02D3 LETTRE MODIFICATIVE DEMI-ROND À GAUCHE CENTRÉ 02D4 LETTRE MODIFICATIVE TAQUET HAUT 02D5 LETTRE MODIFICATIVE TAQUET BAS 02D6 LETTRE MODIFICATIVE SIGNE PLUS 02D7 LETTRE MODIFICATIVE SIGNE MOINS 02D8 BRÈVE (avec chasse) 02D9 POINT EN CHEF (avec chasse) 02DA ROND EN CHEF (avec chasse) 02DB OGONEK (avec chasse) 02DC PETIT TILDE (avec chasse) 02DD DOUBLE ACCENT AIGU (avec chasse) 02DE LETTRE MODIFICATIVE CROCHET DE RHOTACISME 02DF LETTRE MODIFICATIVE ACCENT EN CROIX (accent cruciforme) 02E0 LETTRE MODIFICATIVE GAMMA MINUSCULE 02E1 LETTRE MODIFICATIVE L MINUSCULE 02E2 LETTRE MODIFICATIVE S MINUSCULE 02E3 LETTRE MODIFICATIVE X MINUSCULE 02E4 LETTRE MODIFICATIVE COUP DE GLOTTE RÉFLÉCHI MINUSCULE 02E5 LETTRE MODIFICATIVE BARRE DE TON TRÈS HAUT 02E6 LETTRE MODIFICATIVE BARRE DE TON HAUT 02E7 LETTRE MODIFICATIVE BARRE DE TON MOYEN 02E8 LETTRE MODIFICATIVE BARRE DE TON BAS 02E9 LETTRE MODIFICATIVE BARRE DE TON TRÈS BAS 02EA LETTRE MODIFICATIVE SIGNE DE TON DE DÉPART YIN 02EB LETTRE MODIFICATIVE SIGNE DE TON DE DÉPART YANG 02EC LETTRE MODIFICATIVE VOISÉE 02ED LETTRE MODIFICATIVE NON ASPIRÉE 02EE LETTRE MODIFICATIVE DOUBLE APOSTROPHE @@ 0300 Signes combinatoires 036F 0300 DIACRITIQUE ACCENT GRAVE 0301 DIACRITIQUE ACCENT AIGU 0302 DIACRITIQUE ACCENT CIRCONFLEXE 0303 DIACRITIQUE TILDE 0304 DIACRITIQUE MACRON 0305 DIACRITIQUE TIRET HAUT 0306 DIACRITIQUE BRÈVE 0307 DIACRITIQUE POINT EN CHEF 0308 DIACRITIQUE TRÉMA 0309 DIACRITIQUE CROCHET EN CHEF 030A DIACRITIQUE ROND EN CHEF 030B DIACRITIQUE DOUBLE ACCENT AIGU 030C DIACRITIQUE CARON 030D DIACRITIQUE LIGNE VERTICALE EN CHEF 030E DIACRITIQUE DOUBLE LIGNE VERTICALE EN CHEF 030F DIACRITIQUE DOUBLE ACCENT GRAVE 0310 DIACRITIQUE TCHANDRABINDOU 0311 DIACRITIQUE BRÈVE RENVERSÉE 0312 DIACRITIQUE VIRGULE CULBUTÉE EN CHEF 0313 DIACRITIQUE VIRGULE EN CHEF (esprit doux) 0314 DIACRITIQUE VIRGULE RÉFLÉCHIE EN CHEF (esprit rude) 0315 DIACRITIQUE VIRGULE EN CHEF À DROITE 0316 DIACRITIQUE ACCENT GRAVE SOUSCRIT 0317 DIACRITIQUE ACCENT AIGU SOUSCRIT 0318 DIACRITIQUE TAQUET GAUCHE SOUSCRIT 0319 DIACRITIQUE TAQUET DROIT SOUSCRIT 031A DIACRITIQUE ANGLE GAUCHE EN CHEF 031B DIACRITIQUE CORNU 031C DIACRITIQUE DEMI-ROND GAUCHE SOUSCRIT 031D DIACRITIQUE TAQUET HAUT SOUSCRIT 031E DIACRITIQUE TAQUET BAS SOUSCRIT 031F DIACRITIQUE SIGNE PLUS SOUSCRIT 0320 DIACRITIQUE SIGNE MOINS SOUSCRIT 0321 DIACRITIQUE HAMEÇON PALATAL SOUSCRIT 0322 DIACRITIQUE HAMEÇON RÉTROFLEXE SOUSCRIT 0323 DIACRITIQUE POINT SOUSCRIT 0324 DIACRITIQUE TRÉMA SOUSCRIT 0325 DIACRITIQUE ROND SOUSCRIT 0326 DIACRITIQUE VIRGULE SOUSCRITE 0327 DIACRITIQUE CÉDILLE 0328 DIACRITIQUE OGONEK 0329 DIACRITIQUE LIGNE VERTICALE SOUSCRITE 032A DIACRITIQUE PONTET SOUSCRIT 032B DIACRITIQUE OMÉGA SOUSCRIT 032C DIACRITIQUE CARON SOUSCRIT 032D DIACRITIQUE ACCENT CIRCONFLEXE SOUSCRIT 032E DIACRITIQUE BRÈVE SOUSCRITE 032F DIACRITIQUE BRÈVE RENVERSÉE SOUSCRITE 0330 DIACRITIQUE TILDE SOUSCRIT 0331 DIACRITIQUE MACRON SOUSCRIT 0332 DIACRITIQUE TRAIT SOUSCRIT 0333 DIACRITIQUE DOUBLE TRAIT SOUSCRIT 0334 DIACRITIQUE TILDE COUVRANT 0335 DIACRITIQUE BARRE COURTE COUVRANTE 0336 DIACRITIQUE BARRE LONGUE COUVRANTE 0337 DIACRITIQUE BARRE OBLIQUE COURTE COUVRANTE (cotice diminuée couvrante) 0338 DIACRITIQUE BARRE OBLIQUE LONGUE COUVRANTE (cotice couvrante) 0339 DIACRITIQUE DEMI-ROND À DROITE SOUSCRIT 033A DIACRITIQUE PONTET RENVERSÉ SOUSCRIT 033B DIACRITIQUE CARRÉ SOUSCRIT 033C DIACRITIQUE MOUETTE SOUSCRITE 033D DIACRITIQUE X EN CHEF 033E DIACRITIQUE TILDE VERTICAL 033F DIACRITIQUE DOUBLE TRAIT EN CHEF 0340 DIACRITIQUE MARQUE DE TON GRAVE 0341 DIACRITIQUE MARQUE DE TON AIGU 0342 DIACRITIQUE GREC ACCENT CIRCONFLEXE 0343 DIACRITIQUE GREC CORONIS (crase) 0344 DIACRITIQUE GREC DIALYTIKA TONOS 0345 DIACRITIQUE GREC IOTA SOUSCRIT 0346 DIACRITIQUE PONTET EN CHEF 0347 DIACRITIQUE SIGNE ÉGAL SOUSCRIT 0348 DIACRITIQUE DOUBLE LIGNE VERTICALE SOUSCRITE 0349 DIACRITIQUE ANGLE GAUCHE SOUSCRIT 034A DIACRITIQUE TILDE BARRÉ EN CHEF 034B DIACRITIQUE HOMOTHÉTIQUE EN CHEF 034C DIACRITIQUE PRESQUE ÉGAL À EN CHEF 034D DIACRITIQUE FLÉCHE GAUCHE ET DROITE SOUSCRITE 034E DIACRITIQUE FLÈCHE VERS LE HAUT SOUSCRITE 0360 DIACRITIQUE DOUBLE TILDE 0361 DIACRITIQUE DOUBLE BRÈVE RENVERSÉE 0362 DIACRITIQUE DOUBLE FLÈCHE VERS LA DROITE SOUSCRITE @@ 0370 Grec et copte 03FF 0374 SIGNE NUMÉRAL GREC 0375 SIGNE NUMÉRAL SOUSCRIT GREC 037A CARACTÈRE GREC IOTA SOUSCRIT 037E POINT D'INTERROGATION GREC 0384 CARACTÈRE GREC TONOS 0385 CARACTÈRE GREC DIALYTIKA TONOS 0386 LETTRE MAJUSCULE GRECQUE ALPHA TONOS 0387 CARACTÈRE GREC ANO TELEIA 0388 LETTRE MAJUSCULE GRECQUE EPSILON TONOS 0389 LETTRE MAJUSCULE GRECQUE ÊTA TONOS 038A LETTRE MAJUSCULE GRECQUE IOTA TONOS 038C LETTRE MAJUSCULE GRECQUE OMICRON TONOS 038E LETTRE MAJUSCULE GRECQUE UPSILON TONOS 038F LETTRE MAJUSCULE GRECQUE OMÉGA TONOS 0390 LETTRE MINUSCULE GRECQUE IOTA DIALYTIKA ET TONOS 0391 LETTRE MAJUSCULE GRECQUE ALPHA 0392 LETTRE MAJUSCULE GRECQUE BÊTA 0393 LETTRE MAJUSCULE GRECQUE GAMMA 0394 LETTRE MAJUSCULE GRECQUE DELTA 0395 LETTRE MAJUSCULE GRECQUE EPSILON 0396 LETTRE MAJUSCULE GRECQUE DZÊTA 0397 LETTRE MAJUSCULE GRECQUE ÊTA 0398 LETTRE MAJUSCULE GRECQUE THÊTA 0399 LETTRE MAJUSCULE GRECQUE IOTA 039A LETTRE MAJUSCULE GRECQUE KAPPA 039B LETTRE MAJUSCULE GRECQUE LAMBDA 039C LETTRE MAJUSCULE GRECQUE MU 039D LETTRE MAJUSCULE GRECQUE NU 039E LETTRE MAJUSCULE GRECQUE XI 039F LETTRE MAJUSCULE GRECQUE OMICRON 03A0 LETTRE MAJUSCULE GRECQUE PI 03A1 LETTRE MAJUSCULE GRECQUE RHÔ 03A3 LETTRE MAJUSCULE GRECQUE SIGMA 03A4 LETTRE MAJUSCULE GRECQUE TAU 03A5 LETTRE MAJUSCULE GRECQUE UPSILON 03A6 LETTRE MAJUSCULE GRECQUE PHI 03A7 LETTRE MAJUSCULE GRECQUE KHI 03A8 LETTRE MAJUSCULE GRECQUE PSI 03A9 LETTRE MAJUSCULE GRECQUE OMÉGA 03AA LETTRE MAJUSCULE GRECQUE IOTA DIALYTIKA 03AB LETTRE MAJUSCULE GRECQUE UPSILON DIALYTIKA 03AC LETTRE MINUSCULE GRECQUE ALPHA TONOS 03AD LETTRE MINUSCULE GRECQUE EPSILON TONOS 03AE LETTRE MINUSCULE GRECQUE ÊTA TONOS 03AF LETTRE MINUSCULE GRECQUE IOTA TONOS 03B0 LETTRE MINUSCULE GRECQUE UPSILON DIALYTIKA ET TONOS 03B1 LETTRE MINUSCULE GRECQUE ALPHA 03B2 LETTRE MINUSCULE GRECQUE BÊTA 03B3 LETTRE MINUSCULE GRECQUE GAMMA 03B4 LETTRE MINUSCULE GRECQUE DELTA 03B5 LETTRE MINUSCULE GRECQUE EPSILON 03B6 LETTRE MINUSCULE GRECQUE DZÊTA 03B7 LETTRE MINUSCULE GRECQUE ÊTA 03B8 LETTRE MINUSCULE GRECQUE THÊTA 03B9 LETTRE MINUSCULE GRECQUE IOTA 03BA LETTRE MINUSCULE GRECQUE KAPPA 03BB LETTRE MINUSCULE GRECQUE LAMBDA 03BC LETTRE MINUSCULE GRECQUE MU 03BD LETTRE MINUSCULE GRECQUE NU 03BE LETTRE MINUSCULE GRECQUE XI 03BF LETTRE MINUSCULE GRECQUE OMICRON 03C0 LETTRE MINUSCULE GRECQUE PI 03C1 LETTRE MINUSCULE GRECQUE RHÔ 03C2 LETTRE MINUSCULE GRECQUE SIGMA FINAL 03C3 LETTRE MINUSCULE GRECQUE SIGMA 03C4 LETTRE MINUSCULE GRECQUE TAU 03C5 LETTRE MINUSCULE GRECQUE UPSILON 03C6 LETTRE MINUSCULE GRECQUE PHI 03C7 LETTRE MINUSCULE GRECQUE KHI 03C8 LETTRE MINUSCULE GRECQUE PSI 03C9 LETTRE MINUSCULE GRECQUE OMÉGA 03CA LETTRE MINUSCULE GRECQUE IOTA DIALYTIKA 03CB LETTRE MINUSCULE GRECQUE UPSILON DIALYTIKA 03CC LETTRE MINUSCULE GRECQUE OMICRON TONOS 03CD LETTRE MINUSCULE GRECQUE UPSILON TONOS 03CE LETTRE MINUSCULE GRECQUE OMÉGA TONOS 03D0 SYMBOLE GREC BÊTA 03D1 SYMBOLE GREC THÊTA 03D2 SYMBOLE GREC UPSILON CROCHET 03D3 SYMBOLE GREC UPSILON ACCENT AIGU ET CROCHET 03D4 SYMBOLE GREC UPSILON TRÉMA ET CROCHET 03D5 SYMBOLE GREC PHI 03D6 SYMBOLE GREC PI 03D7 SYMBOLE GREC KAI 03DA LETTRE GRECQUE STIGMA 03DB LETTRE MINUSCULE GRECQUE STIGMA 03DC LETTRE GRECQUE DIGAMMA (waw) 03DD LETTRE MINUSCULE GRECQUE DIGAMMA ( waw minuscule) 03DE LETTRE GRECQUE KOPPA 03DF LETTRE MINUSCULE GRECQUE KOPPA 03E0 LETTRE GRECQUE SAMPI (san) 03E1 LETTRE MINUSCULE GRECQUE SAMPI (san) 03E2 LETTRE MAJUSCULE COPTE CHEI 03E3 LETTRE MINUSCULE COPTE CHAÏ 03E4 LETTRE MAJUSCULE COPTE FAÏ 03E5 LETTRE MINUSCULE COPTE FAÏ 03E6 LETTRE MAJUSCULE COPTE KHAÏ 03E7 LETTRE MINUSCULE COPTE KHAÏ 03E8 LETTRE MAJUSCULE COPTE HORI 03E9 LETTRE MINUSCULE COPTE HORI 03EA LETTRE MAJUSCULE COPTE DJANDA 03EB LETTRE MINUSCULE COPTE DJANDA 03EC LETTRE MAJUSCULE COPTE TCHIMA 03ED LETTRE MINUSCULE COPTE TCHIMA 03EE LETTRE MAJUSCULE COPTE TI 03EF LETTRE MINUSCULE COPTE TI 03F0 SYMBOLE GREC KAPPA 03F1 SYMBOLE GREC RHÔ 03F2 SYMBOLE GREC LUNAIRE SIGMA 03F3 LETTRE GRECQUE YOT @@ 0400 Cyrillique 04FF 0400 LETTRE MAJUSCULE CYRILLIQUE IÉ GRAVE 0401 LETTRE MAJUSCULE CYRILLIQUE IO 0402 LETTRE MAJUSCULE CYRILLIQUE DJÉ (serbe) 0403 LETTRE MAJUSCULE CYRILLIQUE GUIÉ 0404 LETTRE MAJUSCULE CYRILLIQUE IÉ UKRAINIEN 0405 LETTRE MAJUSCULE CYRILLIQUE DZÉ 0406 LETTRE MAJUSCULE CYRILLIQUE I BIÉLORUSSE-UKRAINIEN 0407 LETTRE MAJUSCULE CYRILLIQUE YI (ukrainien) 0408 LETTRE MAJUSCULE CYRILLIQUE YÉ 0409 LETTRE MAJUSCULE CYRILLIQUE LIÉ 040A LETTRE MAJUSCULE CYRILLIQUE ÑÉ 040B LETTRE MAJUSCULE CYRILLIQUE TIÉ (serbe) 040C LETTRE MAJUSCULE CYRILLIQUE KIÉ 040D LETTRE MAJUSCULE CYRILLIQUE I GRAVE 040E LETTRE MAJUSCULE CYRILLIQUE OU BREF (biélorusse) 040F LETTRE MAJUSCULE CYRILLIQUE DCHÉ 0410 LETTRE MAJUSCULE CYRILLIQUE A 0411 LETTRE MAJUSCULE CYRILLIQUE BÉ 0412 LETTRE MAJUSCULE CYRILLIQUE VÉ 0413 LETTRE MAJUSCULE CYRILLIQUE GUÉ 0414 LETTRE MAJUSCULE CYRILLIQUE DÉ 0415 LETTRE MAJUSCULE CYRILLIQUE IÉ 0416 LETTRE MAJUSCULE CYRILLIQUE JÉ 0417 LETTRE MAJUSCULE CYRILLIQUE ZÉ 0418 LETTRE MAJUSCULE CYRILLIQUE I 0419 LETTRE MAJUSCULE CYRILLIQUE I BREF 041A LETTRE MAJUSCULE CYRILLIQUE KA 041B LETTRE MAJUSCULE CYRILLIQUE ELLE 041C LETTRE MAJUSCULE CYRILLIQUE EMME 041D LETTRE MAJUSCULE CYRILLIQUE ENNE 041E LETTRE MAJUSCULE CYRILLIQUE O 041F LETTRE MAJUSCULE CYRILLIQUE PÉ 0420 LETTRE MAJUSCULE CYRILLIQUE ERRE 0421 LETTRE MAJUSCULE CYRILLIQUE ESSE 0422 LETTRE MAJUSCULE CYRILLIQUE TÉ 0423 LETTRE MAJUSCULE CYRILLIQUE OU 0424 LETTRE MAJUSCULE CYRILLIQUE EFFE 0425 LETTRE MAJUSCULE CYRILLIQUE KHA 0426 LETTRE MAJUSCULE CYRILLIQUE TSÉ 0427 LETTRE MAJUSCULE CYRILLIQUE TCHÉ 0428 LETTRE MAJUSCULE CYRILLIQUE CHA 0429 LETTRE MAJUSCULE CYRILLIQUE CHTCHA 042A LETTRE MAJUSCULE CYRILLIQUE SIGNE DUR 042B LETTRE MAJUSCULE CYRILLIQUE YÉROU (i dur) 042C LETTRE MAJUSCULE CYRILLIQUE SIGNE MOU 042D LETTRE MAJUSCULE CYRILLIQUE É 042E LETTRE MAJUSCULE CYRILLIQUE IOU 042F LETTRE MAJUSCULE CYRILLIQUE IA 0430 LETTRE MINUSCULE CYRILLIQUE A 0431 LETTRE MINUSCULE CYRILLIQUE BÉ 0432 LETTRE MINUSCULE CYRILLIQUE VÉ 0433 LETTRE MINUSCULE CYRILLIQUE GUÉ 0434 LETTRE MINUSCULE CYRILLIQUE DÉ 0435 LETTRE MINUSCULE CYRILLIQUE IÉ 0436 LETTRE MINUSCULE CYRILLIQUE JÉ 0437 LETTRE MINUSCULE CYRILLIQUE ZÉ 0438 LETTRE MINUSCULE CYRILLIQUE I 0439 LETTRE MINUSCULE CYRILLIQUE I BREF 043A LETTRE MINUSCULE CYRILLIQUE KA 043B LETTRE MINUSCULE CYRILLIQUE ELLE 043C LETTRE MINUSCULE CYRILLIQUE EMME 043D LETTRE MINUSCULE CYRILLIQUE ENNE 043E LETTRE MINUSCULE CYRILLIQUE O 043F LETTRE MINUSCULE CYRILLIQUE PÉ 0440 LETTRE MINUSCULE CYRILLIQUE ERRE 0441 LETTRE MINUSCULE CYRILLIQUE ESSE 0442 LETTRE MINUSCULE CYRILLIQUE TÉ 0443 LETTRE MINUSCULE CYRILLIQUE OU 0444 LETTRE MINUSCULE CYRILLIQUE EFFE 0445 LETTRE MINUSCULE CYRILLIQUE KHA 0446 LETTRE MINUSCULE CYRILLIQUE TSÉ 0447 LETTRE MINUSCULE CYRILLIQUE TCHÉ 0448 LETTRE MINUSCULE CYRILLIQUE CHA 0449 LETTRE MINUSCULE CYRILLIQUE CHTCHA 044A LETTRE MINUSCULE CYRILLIQUE SIGNE DUR 044B LETTRE MINUSCULE CYRILLIQUE YÉROU (i dur) 044C LETTRE MINUSCULE CYRILLIQUE SIGNE MOU 044D LETTRE MINUSCULE CYRILLIQUE É 044E LETTRE MINUSCULE CYRILLIQUE IOU 044F LETTRE MINUSCULE CYRILLIQUE IA 0450 LETTRE MINUSCULE CYRILLIQUE IÉ GRAVE 0451 LETTRE MINUSCULE CYRILLIQUE IO 0452 LETTRE MINUSCULE CYRILLIQUE DJÉ (serbe) 0453 LETTRE MINUSCULE CYRILLIQUE GUIÉ 0454 LETTRE MINUSCULE CYRILLIQUE UKRAINIENNE IÉ 0455 LETTRE MINUSCULE CYRILLIQUE DZÉ 0456 LETTRE MINUSCULE CYRILLIQUE I BIÉLORUSSE-UKRAINIEN 0457 LETTRE MINUSCULE CYRILLIQUE YI (ukrainien) 0458 LETTRE MINUSCULE CYRILLIQUE YÉ 0459 LETTRE MINUSCULE CYRILLIQUE LIÉ 045A LETTRE MINUSCULE CYRILLIQUE ÑÉ 045B LETTRE MINUSCULE CYRILLIQUE TIÉ (serbe) 045C LETTRE MINUSCULE CYRILLIQUE KIÉ 045D LETTRE MINUSCULE CYRILLIQUE I GRAVE 045E LETTRE MINUSCULE CYRILLIQUE OU BREF (biélorusse) 045F LETTRE MINUSCULE CYRILLIQUE DCHÉ 0460 LETTRE MAJUSCULE CYRILLIQUE OMÉGA 0461 LETTRE MINUSCULE CYRILLIQUE OMÉGA 0462 LETTRE MAJUSCULE CYRILLIQUE YATE 0463 LETTRE MINUSCULE CYRILLIQUE YATE 0464 LETTRE MAJUSCULE CYRILLIQUE É IOTACISME 0465 LETTRE MINUSCULE CYRILLIQUE É IOTACISME 0466 LETTRE MAJUSCULE CYRILLIQUE PETIT YOUSSE 0467 LETTRE MINUSCULE CYRILLIQUE PETIT YOUSSE 0468 LETTRE MAJUSCULE CYRILLIQUE PETIT YOUSSE IOTACISME 0469 LETTRE MINUSCULE CYRILLIQUE PETIT YOUSSE IOTACISME 046A LETTRE MAJUSCULE CYRILLIQUE GRAND YOUSSE 046B LETTRE MINUSCULE CYRILLIQUE GRAND YOUSSE 046C LETTRE MAJUSCULE CYRILLIQUE GRAND YOUSSE IOTACISME 046D LETTRE MINUSCULE CYRILLIQUE GRAND YOUSSE IOTACISME 046E LETTRE MAJUSCULE CYRILLIQUE KSI 046F LETTRE MINUSCULE CYRILLIQUE KSI 0470 LETTRE MAJUSCULE CYRILLIQUE PSI 0471 LETTRE MINUSCULE CYRILLIQUE PSI 0472 LETTRE MAJUSCULE CYRILLIQUE FITA 0473 LETTRE MINUSCULE CYRILLIQUE FITA 0474 LETTRE MAJUSCULE CYRILLIQUE IJITSA 0475 LETTRE MINUSCULE CYRILLIQUE IJITSA 0476 LETTRE MAJUSCULE CYRILLIQUE IJITSA DOUBLE ACCENT GRAVE 0477 LETTRE MINUSCULE CYRILLIQUE IJITSA DOUBLE ACCENT GRAVE 0478 LETTRE MAJUSCULE CYRILLIQUE OUK 0479 LETTRE MINUSCULE CYRILLIQUE OUK 047A LETTRE MAJUSCULE CYRILLIQUE OMÉGA ROND 047B LETTRE MINUSCULE CYRILLIQUE OMÉGA ROND 047C LETTRE MAJUSCULE CYRILLIQUE OMÉGA TITLO 047D LETTRE MINUSCULE CYRILLIQUE OMÉGA TITLO 047E LETTRE MAJUSCULE CYRILLIQUE OTTE 047F LETTRE MINUSCULE CYRILLIQUE OTTE 0480 LETTRE MAJUSCULE CYRILLIQUE KOPPA 0481 LETTRE MINUSCULE CYRILLIQUE KOPPA 0482 SIGNE CYRILLIQUE MILLIERS 0483 DIACRITIQUE CYRILLIQUE TITLO 0484 DIACRITIQUE CYRILLIQUE DE PALATALISATION 0485 DIACRITIQUE CYRILLIQUE DASIA PNEUMATA 0486 DIACRITIQUE CYRILLIQUE PSILI PNEUMATA 0488 SIGNE CYRILLIQUE CENTAINE DE MILLIERS 0489 SIGNE CYRILLIQUE MILLIONS 048C LETTRE MAJUSCULE CYRILLIQUE SIGNE SEMI-MOU 048D LETTRE MINUSCULE CYRILLIQUE SIGNE SEMI-MOU 048E LETTRE MAJUSCULE CYRILLIQUE ERRE AGRAFÉ 048F LETTRE MINUSCULE CYRILLIQUE ERRE AGRAFÉ 0490 LETTRE MAJUSCULE CYRILLIQUE GUÉ HAMPÉ 0491 LETTRE MINUSCULE CYRILLIQUE GUÉ HAMPÉ 0492 LETTRE MAJUSCULE CYRILLIQUE GUÉ BARRÉ 0493 LETTRE MINUSCULE CYRILLIQUE GUÉ BARRÉ 0494 LETTRE MAJUSCULE CYRILLIQUE GUÉ CROCHET MÉDIAN 0495 LETTRE MINUSCULE CYRILLIQUE GUÉ CROCHET MÉDIAN 0496 LETTRE MAJUSCULE CYRILLIQUE JÉ CRAMPONNÉ 0497 LETTRE MINUSCULE CYRILLIQUE JÉ CRAMPONNÉ 0498 LETTRE MAJUSCULE CYRILLIQUE ZÉ CÉDILLE 0499 LETTRE MINUSCULE CYRILLIQUE ZÉ CÉDILLE 049A LETTRE MAJUSCULE CYRILLIQUE KA JAMBAGE 049B LETTRE MINUSCULE CYRILLIQUE KA CRAMPONNÉ 049C LETTRE MAJUSCULE CYRILLIQUE KA BARRE VERTICALE 049D LETTRE MINUSCULE CYRILLIQUE KA BARRE VERTICALE 049E LETTRE MAJUSCULE CYRILLIQUE KA BARRÉ 049F LETTRE MINUSCULE CYRILLIQUE KA BARRÉ 04A0 LETTRE MAJUSCULE CYRILLIQUE KA BACHKIR 04A1 LETTRE MINUSCULE CYRILLIQUE KA BACHKIR 04A2 LETTRE MAJUSCULE CYRILLIQUE ENNE CRAMPONNÉ 04A3 LETTRE MINUSCULE CYRILLIQUE ENNE CRAMPONNÉ 04A4 LIGATURE CYRILLIQUE MAJUSCULE ENG 04A5 LIGATURE CYRILLIQUE MINUSCULE ENG 04A6 LETTRE MAJUSCULE CYRILLIQUE PÉ CROCHET MÉDIAN (abkhaze) 04A7 LETTRE MINUSCULE CYRILLIQUE PÉ CROCHET MÉDIAN (abkhaze) 04A8 LETTRE MAJUSCULE CYRILLIQUE HA ABKHAZE 04A9 LETTRE MINUSCULE CYRILLIQUE HA ABKHAZE 04AA LETTRE MAJUSCULE CYRILLIQUE ESSE CÉDILLE 04AB LETTRE MINUSCULE CYRILLIQUE ESSE CÉDILLE 04AC LETTRE MAJUSCULE CYRILLIQUE TÉ CRAMPONNÉ 04AD LETTRE MINUSCULE CYRILLIQUE TÉ CRAMPONNÉ 04AE LETTRE MAJUSCULE CYRILLIQUE OU DROIT 04AF LETTRE MINUSCULE CYRILLIQUE OU DROIT 04B0 LETTRE MAJUSCULE CYRILLIQUE OU DROIT BARRÉ 04B1 LETTRE MINUSCULE CYRILLIQUE OU DROIT BARRÉ 04B2 LETTRE MAJUSCULE CYRILLIQUE HA OGONEK 04B3 LETTRE MINUSCULE CYRILLIQUE HA OGONEK 04B4 LIGATURE MAJUSCULE CYRILLIQUE TÉ TSÉ (abkhaze) 04B5 LIGATURE MINUSCULE CYRILLIQUE TÉ TSÉ (abkhaze) 04B6 LETTRE MAJUSCULE CYRILLIQUE TCHÉ CRAMPONNÉ 04B7 LETTRE MINUSCULE CYRILLIQUE TCHÉ CRAMPONNÉ 04B8 LETTRE MAJUSCULE CYRILLIQUE TCHÉ BARRE VERTICALE 04B9 LETTRE MINUSCULE CYRILLIQUE TCHÉ BARRE VERTICALE 04BA LETTRE MAJUSCULE CYRILLIQUE HÉ 04BB LETTRE MINUSCULE CYRILLIQUE HÉ 04BC LETTRE MAJUSCULE CYRILLIQUE TCHÉ ABKHAZE 04BD LETTRE MINUSCULE CYRILLIQUE TCHÉ ABKHAZE 04BE LETTRE MAJUSCULE CYRILLIQUE TCHÉ ABKHAZE OGONEK 04BF LETTRE MINUSCULE CYRILLIQUE TCHÉ ABKHAZE OGONEK 04C0 LETTRE CYRILLIQUE PALOTCHKA 04C1 LETTRE MAJUSCULE CYRILLIQUE JÉ BRÈVE 04C2 LETTRE MINUSCULE CYRILLIQUE JÉ BRÈVE 04C3 LETTRE MAJUSCULE CYRILLIQUE KA CROCHET 04C4 LETTRE MINUSCULE CYRILLIQUE KA CROCHET 04C5 LETTRE MAJUSCULE CYRILLIQUE ELLE CRAMPONNÉ 04C6 LETTRE MINUSCULE CYRILLIQUE ELLE CRAMPONNÉ 04C7 LETTRE MAJUSCULE CYRILLIQUE ENNE CROCHET 04C8 LETTRE MINUSCULE CYRILLIQUE ENNE CROCHET 04C9 LETTRE MAJUSCULE CYRILLIQUE I BREF CRAMPONNÉ 04CA LETTRE MINUSCULE CYRILLIQUE I BREF CRAMPONNÉ 04CB LETTRE MAJUSCULE CYRILLIQUE TCHÉ KHAKASSE 04CC LETTRE MINUSCULE CYRILLIQUE TCHÉ KHAKASSE 04CD LETTRE MAJUSCULE CYRILLIQUE EMME CRAMPONNÉ 04CE LETTRE MINUSCULE CYRILLIQUE EMME CRAMPONNÉ 04D0 LETTRE MAJUSCULE CYRILLIQUE A BRÈVE 04D1 LETTRE MINUSCULE CYRILLIQUE A BRÈVE 04D2 LETTRE MAJUSCULE CYRILLIQUE A TRÉMA 04D3 LETTRE MINUSCULE CYRILLIQUE A TRÉMA 04D4 LETTRE MAJUSCULE CYRILLIQUE Æ (ae) 04D5 LETTRE MINUSCULE CYRILLIQUE Æ (ae) 04D6 LETTRE MAJUSCULE CYRILLIQUE IÉ BRÈVE 04D7 LETTRE MINUSCULE CYRILLIQUE IÉ BRÈVE 04D8 LETTRE MAJUSCULE CYRILLIQUE SCHWA 04D9 LETTRE MINUSCULE CYRILLIQUE SCHWA 04DA LETTRE MAJUSCULE CYRILLIQUE SCHWA TRÉMA 04DB LETTRE MINUSCULE CYRILLIQUE SCHWA TRÉMA 04DC LETTRE MAJUSCULE CYRILLIQUE JÉ TRÉMA 04DD LETTRE MINUSCULE CYRILLIQUE JÉ TRÉMA 04DE LETTRE MAJUSCULE CYRILLIQUE ZÉ TRÉMA 04DF LETTRE MINUSCULE CYRILLIQUE ZÉ TRÉMA 04E0 LETTRE MAJUSCULE CYRILLIQUE DZÉ ABKHAZE 04E1 LETTRE MINUSCULE CYRILLIQUE DZÉ ABKHAZE 04E2 LETTRE MAJUSCULE CYRILLIQUE I MACRON 04E3 LETTRE MINUSCULE CYRILLIQUE I MACRON 04E4 LETTRE MAJUSCULE CYRILLIQUE I TRÉMA 04E5 LETTRE MINUSCULE CYRILLIQUE I TRÉMA 04E6 LETTRE MAJUSCULE CYRILLIQUE O TRÉMA 04E7 LETTRE MINUSCULE CYRILLIQUE O TRÉMA 04E8 LETTRE MAJUSCULE CYRILLIQUE O BARRÉ 04E9 LETTRE MINUSCULE CYRILLIQUE O BARRÉ 04EA LETTRE MAJUSCULE CYRILLIQUE O BARRÉ TRÉMA 04EB LETTRE MINUSCULE CYRILLIQUE O BARRÉ TRÉMA 04EC LETTRE MAJUSCULE CYRILLIQUE É TRÉMA 04ED LETTRE MINUSCULE CYRILLIQUE É TRÉMA 04EE LETTRE MAJUSCULE CYRILLIQUE OU MACRON 04EF LETTRE MINUSCULE CYRILLIQUE OU MACRON 04F0 LETTRE MAJUSCULE CYRILLIQUE OU TRÉMA 04F1 LETTRE MINUSCULE CYRILLIQUE OU TRÉMA 04F2 LETTRE MAJUSCULE CYRILLIQUE OU DOUBLE ACCENT AIGU 04F3 LETTRE MINUSCULE CYRILLIQUE OU DOUBLE ACCENT AIGU 04F4 LETTRE MAJUSCULE CYRILLIQUE TCHÉ TRÉMA 04F5 LETTRE MINUSCULE CYRILLIQUE TCHÉ TRÉMA 04F8 LETTRE MAJUSCULE CYRILLIQUE YÉROU TRÉMA 04F9 LETTRE MINUSCULE CYRILLIQUE YÉROU TRÉMA @@ 0530 Arménien 058F 0531 LETTRE MAJUSCULE ARMÉNIENNE AÏP 0532 LETTRE MAJUSCULE ARMÉNIENNE PÈN 0533 LETTRE MAJUSCULE ARMÉNIENNE KIM 0534 LETTRE MAJUSCULE ARMÉNIENNE TA 0535 LETTRE MAJUSCULE ARMÉNIENNE YÈTCH 0536 LETTRE MAJUSCULE ARMÉNIENNE ZA 0537 LETTRE MAJUSCULE ARMÉNIENNE É 0538 LETTRE MAJUSCULE ARMÉNIENNE ETT 0539 LETTRE MAJUSCULE ARMÉNIENNE TÔ 053A LETTRE MAJUSCULE ARMÉNIENNE JÉ 053B LETTRE MAJUSCULE ARMÉNIENNE INI 053C LETTRE MAJUSCULE ARMÉNIENNE LIOUN 053D LETTRE MAJUSCULE ARMÉNIENNE KHÉ 053E LETTRE MAJUSCULE ARMÉNIENNE DZA 053F LETTRE MAJUSCULE ARMÉNIENNE GUÉN 0540 LETTRE MAJUSCULE ARMÉNIENNE HÔ 0541 LETTRE MAJUSCULE ARMÉNIENNE TSA 0542 LETTRE MAJUSCULE ARMÉNIENNE GHAD 0543 LETTRE MAJUSCULE ARMÉNIENNE DJÉ 0544 LETTRE MAJUSCULE ARMÉNIENNE MÈN 0545 LETTRE MAJUSCULE ARMÉNIENNE HÎ 0546 LETTRE MAJUSCULE ARMÉNIENNE NOU 0547 LETTRE MAJUSCULE ARMÉNIENNE CHA 0548 LETTRE MAJUSCULE ARMÉNIENNE VO 0549 LETTRE MAJUSCULE ARMÉNIENNE TCHA 054A LETTRE MAJUSCULE ARMÉNIENNE BÉ 054B LETTRE MAJUSCULE ARMÉNIENNE DCHÉ 054C LETTRE MAJUSCULE ARMÉNIENNE RRA 054D LETTRE MAJUSCULE ARMÉNIENNE SÉ 054E LETTRE MAJUSCULE ARMÉNIENNE VÈV 054F LETTRE MAJUSCULE ARMÉNIENNE DIOUN 0550 LETTRE MAJUSCULE ARMÉNIENNE RÉ 0551 LETTRE MAJUSCULE ARMÉNIENNE TSÔ 0552 LETTRE MAJUSCULE ARMÉNIENNE HIOUN 0553 LETTRE MAJUSCULE ARMÉNIENNE PIOUR 0554 LETTRE MAJUSCULE ARMÉNIENNE KÉ 0555 LETTRE MAJUSCULE ARMÉNIENNE Ô 0556 LETTRE MAJUSCULE ARMÉNIENNE FÉ 0559 LETTRE MODIFICATIVE ARMÉNIENNE DEMI-ROND GAUCHE 055A APOSTROPHE ARMÉNIENNE 055B SIGNE D'ACCENTUATION ARMÉNIEN 055C POINT D'EXCLAMATION ARMÉNIEN 055D VIRGULE ARMÉNIENNE 055E POINT D'INTERROGATION ARMÉNIEN 055F SYMBOLE D'ABRÉVIATION ARMÉNIEN 0561 LETTRE MINUSCULE ARMÉNIENNE AÏP 0562 LETTRE MINUSCULE ARMÉNIENNE PÈN 0563 LETTRE MINUSCULE ARMÉNIENNE KIM 0564 LETTRE MINUSCULE ARMÉNIENNE TA 0565 LETTRE MINUSCULE ARMÉNIENNE YÈTCH 0566 LETTRE MINUSCULE ARMÉNIENNE ZA 0567 LETTRE MINUSCULE ARMÉNIENNE É 0568 LETTRE MINUSCULE ARMÉNIENNE ETT 0569 LETTRE MINUSCULE ARMÉNIENNE TÔ 056A LETTRE MINUSCULE ARMÉNIENNE JÉ 056B LETTRE MINUSCULE ARMÉNIENNE INI 056C LETTRE MINUSCULE ARMÉNIENNE LIOUN 056D LETTRE MINUSCULE ARMÉNIENNE KHÉ 056E LETTRE MINUSCULE ARMÉNIENNE DZA 056F LETTRE MINUSCULE ARMÉNIENNE GUÉN 0570 LETTRE MINUSCULE ARMÉNIENNE HÔ 0571 LETTRE MINUSCULE ARMÉNIENNE TSA 0572 LETTRE MINUSCULE ARMÉNIENNE GHAD 0573 LETTRE MINUSCULE ARMÉNIENNE DJÉ 0574 LETTRE MINUSCULE ARMÉNIENNE MÈN 0575 LETTRE MINUSCULE ARMÉNIENNE HÎ 0576 LETTRE MINUSCULE ARMÉNIENNE NOU 0577 LETTRE MINUSCULE ARMÉNIENNE CHA 0578 LETTRE MINUSCULE ARMÉNIENNE VO 0579 LETTRE MINUSCULE ARMÉNIENNE TCHA 057A LETTRE MINUSCULE ARMÉNIENNE BÉ 057B LETTRE MINUSCULE ARMÉNIENNE DCHÉ 057C LETTRE MINUSCULE ARMÉNIENNE RRA 057D LETTRE MINUSCULE ARMÉNIENNE SÉ 057E LETTRE MINUSCULE ARMÉNIENNE VÈV 057F LETTRE MINUSCULE ARMÉNIENNE DIOUN 0580 LETTRE MINUSCULE ARMÉNIENNE RÉ 0581 LETTRE MINUSCULE ARMÉNIENNE TSÔ 0582 LETTRE MINUSCULE ARMÉNIENNE HIOUN 0583 LETTRE MINUSCULE ARMÉNIENNE PIOUR 0584 LETTRE MINUSCULE ARMÉNIENNE KÉ 0585 LETTRE MINUSCULE ARMÉNIENNE Ô 0586 LETTRE MINUSCULE ARMÉNIENNE FÉ 0587 LIGATURE MINUSCULE ARMÉNIENNE YÈTCH HIOUN 0589 POINT ARMÉNIEN 058A TRAIT-D'UNION ARMÉNIEN @@ 0590 Hébreu 05FF 0591 ACCENT HÉBREU ATNAH (etnahta) 0592 ACCENT HÉBREU SEGOLTA (segol) 0593 ACCENT HÉBREU CHALCHELET 0594 ACCENT HÉBREU ZAQEF QATON 0595 ACCENT HÉBREU ZAQEF GADOL 0596 ACCENT HÉBREU TARHA (tipha) * 0597 ACCENT HÉBREU RAVIA (revii) 0598 ACCENT HÉBREU ZARQA * 0599 ACCENT HÉBREU QADMA (azla) 059A ACCENT HÉBREU YETIV 059B ACCENT HÉBREU TEVIR 059C ACCENT HÉBREU GERICH (gerech) 059D ACCENT HÉBREU GERICH MOUQDAM (gerech mouqdam) 059E ACCENT HÉBREU CHENÉ GRICHINE (gerchâïm) 059F ACCENT HÉBREU KARNÉ FARAH 05A0 ACCENT HÉBREU TALCHAH (telicha-gedolah) 05A1 ACCENT HÉBREU PAZER GADOL (pazer) 05A3 ACCENT HÉBREU CHOFAR HOLEKH (mounah) 05A4 ACCENT HÉBREU CHOFAR MEHOUPPAKH (mahpakh) 05A5 ACCENT HÉBREU MÂRIKH (merkha) * 05A6 ACCENT HÉBREU TERÉ TÂMÉ (merkha khefoulah) 05A7 ACCENT HÉBREU DARGA 05A8 ACCENT HÉBREU QADMA * 05A9 ACCENT HÉBREU TARSA (telicha qetannah) 05AA ACCENT HÉBREU YARÉAH BEN YOMO * 05AB ACCENT HÉBREU OLEH 05AC ACCENT HÉBREU ILOUZ 05AD ACCENT HÉBREU DEHI 05AE ACCENT HÉBREU TSINOR 05AF CERCLE MASSORÉTIQUE 05B0 POINT HÉBREU CHEVA 05B1 POINT HÉBREU HATAF SEGOL 05B2 POINT HÉBREU HATAF PATAH 05B3 POINT HÉBREU HATAF QAMATS 05B4 POINT HÉBREU HIRIK 05B5 POINT HÉBREU TSÉRÈ 05B6 POINT HÉBREU SÈGOL 05B7 POINT HÉBREU PATAH 05B8 POINT HÉBREU QAMATS 05B9 POINT HÉBREU HOLAM 05BB POINT HÉBREU KOUBOUTS 05BC POINT HÉBREU DAGUÈCH OU MAPIQ (ou chourouk) 05BD POINT HÉBREU METEG * 05BE PONCTUATION HÉBRAÏQUE MAQAF 05BF POINT HÉBREU RAFE 05C0 PONCTUATION HÉBRAÏQUE PASEQ (pési) * 05C1 POINT HÉBREU CHIN 05C2 POINT HÉBREU SIN 05C3 PONCTUATION HÉBRAÏQUE SOF PASOUQ * 05C4 SIGNE HÉBREU POINT SUPÉRIEUR 05D0 LETTRE HÉBRAÏQUE ALEF 05D1 LETTRE HÉBRAÏQUE BÈT 05D2 LETTRE HÉBRAÏQUE GUIMEL 05D3 LETTRE HÉBRAÏQUE DALÈT 05D4 LETTRE HÉBRAÏQUE HÈ 05D5 LETTRE HÉBRAÏQUE WAW 05D6 LETTRE HÉBRAÏQUE ZAÏN 05D7 LETTRE HÉBRAÏQUE HÈT 05D8 LETTRE HÉBRAÏQUE TÈT 05D9 LETTRE HÉBRAÏQUE YOUD 05DA LETTRE HÉBRAÏQUE KAF FINAL 05DB LETTRE HÉBRAÏQUE KAF 05DC LETTRE HÉBRAÏQUE LAMÈD 05DD LETTRE HÉBRAÏQUE MÉM FINAL 05DE LETTRE HÉBRAÏQUE MÉM 05DF LETTRE HÉBRAÏQUE NOUN FINAL 05E0 LETTRE HÉBRAÏQUE NOUN 05E1 LETTRE HÉBRAÏQUE SAMÈKH 05E2 LETTRE HÉBRAÏQUE AÏN 05E3 LETTRE HÉBRAÏQUE PÉ FINAL 05E4 LETTRE HÉBRAÏQUE PÉ 05E5 LETTRE HÉBRAÏQUE TSADÉ FINAL 05E6 LETTRE HÉBRAÏQUE TSADÉ 05E7 LETTRE HÉBRAÏQUE QOUF 05E8 LETTRE HÉBRAÏQUE RÈCH 05E9 LETTRE HÉBRAÏQUE CHINE 05EA LETTRE HÉBRAÏQUE TAV 05F0 LIGATURE HÉBRAÏQUE YIDICH DOUBLE WAW 05F1 LIGATURE HÉBRAÏQUE YIDICH WAW YOD 05F2 LIGATURE HÉBRAÏQUE YIDICH DOUBLE YOUD 05F3 PONCTUATION HÉBRAÏQUE GERECH 05F4 PONCTUATION HÉBRAÏQUE GERCHÂÏM @@ 0600 Arabe 06FF 060C VIRGULE ARABE 061B POINT-VIRGULE ARABE 061F POINT D'INTERROGATION ARABE 0621 LETTRE ARABE HAMZA 0622 LETTRE ARABE ALIF MADDA EN CHEF 0623 LETTRE ARABE ALIF HAMZA EN CHEF 0624 LETTRE ARABE WAW HAMZA EN CHEF 0625 LETTRE ARABE ALIF HAMZA SOUSCRIT 0626 LETTRE ARABE YA' HAMZA EN CHEF 0627 LETTRE ARABE ALIF 0628 LETTRE ARABE BA' 0629 LETTRE ARABE TÉ' MARBOUTA 062A LETTRE ARABE TÉ' 062B LETTRE ARABE THÉ' 062C LETTRE ARABE DJÎM 062D LETTRE ARABE HA' 062E LETTRE ARABE KHA' 062F LETTRE ARABE DAL 0630 LETTRE ARABE DHAL 0631 LETTRE ARABE RA' 0632 LETTRE ARABE ZAÏ 0633 LETTRE ARABE SÎN 0634 LETTRE ARABE CHÎN 0635 LETTRE ARABE ÇAD (sad) 0636 LETTRE ARABE DAD 0637 LETTRE ARABE TA' 0638 LETTRE ARABE ZZA' 0639 LETTRE ARABE 'AÏN 063A LETTRE ARABE GHAÏN 0640 TATOUÏL ARABE 0641 LETTRE ARABE FA' 0642 LETTRE ARABE QAF 0643 LETTRE ARABE KAF 0644 LETTRE ARABE LAM 0645 LETTRE ARABE MÎM 0646 LETTRE ARABE NOÛN 0647 LETTRE ARABE HÉ' 0648 LETTRE ARABE WAW 0649 LETTRE ARABE ALIF MAKSOURA 064A LETTRE ARABE YA' 064B FATHATAN ARABE 064C DAMMATAN ARABE 064D KASRATAN ARABE 064E FATHA ARABE 064F DAMMA ARABE 0650 KASRA ARABE 0651 CHADDA ARABE 0652 SOUKOUN ARABE 0653 MADDA ARABE EN CHEF 0654 HAMZA ARABE EN CHEF 0655 HAMZA ARABE SOUSCRIT 0660 CHIFFRE ARABE-HINDI ZÉRO 0661 CHIFFRE ARABE-HINDI UN 0662 CHIFFRE ARABE-HINDI DEUX 0663 CHIFFRE ARABE-HINDI TROIS 0664 CHIFFRE ARABE-HINDI QUATRE 0665 CHIFFRE ARABE-HINDI CINQ 0666 CHIFFRE ARABE-HINDI SIX 0667 CHIFFRE ARABE-HINDI SEPT 0668 CHIFFRE ARABE-HINDI HUIT 0669 CHIFFRE ARABE-HINDI NEUF 066A SYMBOLE POUR CENT ARABE 066B SÉPARATEUR DÉCIMAL ARABE 066C SÉPARATEUR MILLIERS ARABE 066D ÉTOILE À CINQ BRANCHES ARABE 0670 LETTRE ARABE ALIF EN CHEF 0671 LETTRE ARABE ALIF WASLA 0672 LETTRE ARABE ALIF HAMZA ONDÉ EN CHEF 0673 LETTRE ARABE ALIF HAMZA ONDÉ SOUSCRIT 0674 LETTRE ARABE HAMZA ÉLEVÉ 0675 LETTRE ARABE ALIF HAMZA ÉLEVÉ 0676 LETTRE ARABE WAW HAMZA ÉLEVÉ 0677 LETTRE ARABE OU HAMZA ÉLEVÉ 0678 LETTRE ARABE YA' HAMZA ÉLEVÉ 0679 LETTRE ARABE TTA' 067A LETTRE ARABE TTEHA' 067B LETTRE ARABE BEA' 067C LETTRE ARABE TÉ' ROND 067D LETTRE ARABE TÉ' TROIS POINTS EN CHEF POINTANT VERS LE BAS 067E LETTRE ARABE PA' 067F LETTRE ARABE TEHA' 0680 LETTRE ARABE BEHA' 0681 LETTRE ARABE HA' HAMZA EN CHEF 0682 LETTRE ARABE HA' DEUX POINTS ALIGNÉS VERTICALEMENT AU DESSUS 0683 LETTRE ARABE NYA' 0684 LETTRE ARABE DYA' 0685 LETTRE ARABE HA' TROIS POINTS EN CHEF 0686 LETTRE ARABE TCHIM' 0687 LETTRE ARABE TCHEHA' 0688 LETTRE ARABE DDAL 0689 LETTRE ARABE DAL ROND 068A LETTRE ARABE DAL POINT SOUSCRIT 068B LETTRE ARABE DAL POINT SOUSCRIT ET PETIT TAH 068C LETTRE ARABE DAHAL 068D LETTRE ARABE DDAHAL 068E LETTRE ARABE DUL 068F LETTRE ARABE DAL TROIS POINTS EN CHEF POINTANT VERS LE BAS 0690 LETTRE ARABE DAL QUATRE POINTS EN CHEF 0691 LETTRE ARABE RRA' 0692 LETTRE ARABE RA' PETIT V 0693 LETTRE ARABE RA' ROND 0694 LETTRE ARABE RA' POINT SOUSCRIT 0695 LETTRE ARABE RA' PETIT V SOUSCRIT 0696 LETTRE ARABE RA' POINT SOUSCRIT ET POINT EN CHEF 0697 LETTRE ARABE RA' DEUX POINTS EN CHEF 0698 LETTRE ARABE JA' 0699 LETTRE ARABE RA' QUATRE POINTS EN CHEF 069A LETTRE ARABE SÎN POINT SOUSCRIT ET POINT EN CHEF 069B LETTRE ARABE SÎN TROIS POINTS SOUSCRITS 069C LETTRE ARABE SÎN TROIS POINTS SOUSCRITS ET TROIS POINTS EN CHEF 069D LETTRE ARABE SAD DEUX POINTS SOUSCRITS 069E LETTRE ARABE SAD TROIS POINTS EN CHEF 069F LETTRE ARABE TA' TROIS POINTS EN CHEF 06A0 LETTRE ARABE 'AÏN TROIS POINTS EN CHEF 06A1 LETTRE ARABE FA' SANS POINT 06A2 LETTRE ARABE FA' POINT DESCENDU 06A3 LETTRE ARABE FA' POINT SOUSCRIT 06A4 LETTRE ARABE VA' 06A5 LETTRE ARABE FA' TROIS POINTS SOUSCRITS 06A6 LETTRE ARABE PEHA' 06A7 LETTRE ARABE QAF POINT EN CHEF 06A8 LETTRE ARABE QAF TROIS POINTS EN CHEF 06A9 LETTRE ARABE KEHA' 06AA LETTRE ARABE KAF ÉCRASÉ 06AB LETTRE ARABE KAF ROND 06AC LETTRE ARABE KAF POINT EN CHEF 06AD LETTRE ARABE NG 06AE LETTRE ARABE KAF TROIS POINTS SOUSCRITS 06AF LETTRE ARABE GAF * 06B0 LETTRE ARABE GAF ROND 06B1 LETTRE ARABE NGOA' 06B2 LETTRE ARABE GAF DEUX POINTS SOUSCRITS 06B3 LETTRE ARABE GOUA' 06B4 LETTRE ARABE GAF TROIS POINTS EN CHEF 06B5 LETTRE ARABE LAM PETIT V 06B6 LETTRE ARABE LAM POINT EN CHEF 06B7 LETTRE ARABE LAM TROIS POINTS EN CHEF 06B8 LETTRE ARABE LAM TROIS POINTS SOUSCRITS 06B9 LETTRE ARABE NOÛN POINT SOUSCRIT 06BA LETTRE ARABE NOÛN SANS POINT 06BB LETTRE ARABE NNOÛN RÉTROFLEXE 06BC LETTRE ARABE NOÛN ROND 06BD LETTRE ARABE NOÛN TROIS POINTS EN CHEF 06BE LETTRE ARABE HÉ' DOATCHACHMI 06BF LETTRE ARABE TCHIM' POINT EN CHEF 06C0 LETTRE ARABE HÉ' YA' EN CHEF 06C1 LETTRE ARABE HÉ' GÔL 06C2 LETTRE ARABE HÉ' GÔL HAMZA EN CHEF 06C3 MARBOUTA GÔL 06C4 LETTRE ARABE WAW ROND 06C5 LETTRE ARABE KIRGHIZE EU 06C6 LETTRE ARABE EU 06C7 LETTRE ARABE OU 06C8 LETTRE ARABE U 06C9 LETTRE ARABE KIRGHIZE YOU 06CA LETTRE ARABE WAW DEUX POINTS EN CHEF 06CB LETTRE ARABE VÉ 06CC LETTRE ARABE FARSI YA' 06CD LETTRE ARABE YA' QUEUE 06CE LETTRE ARABE YA' PETIT V 06CF LETTRE ARABE WAW POINT EN CHEF 06D0 LETTRE ARABE É * 06D1 LETTRE ARABE YA' TROIS POINTS SOUSCRITS 06D2 LETTRE ARABE YA' BARRÉ 06D3 LETTRE ARABE YA' BARRÉ HAMZA EN CHEF 06D4 POINT ARABE 06D5 LETTRE ARABE E 06D6 LIGATURE ARABE MINUSCULE SAD EN CHEF LAM ALIF MAKSOURA 06D7 LIGATURE ARABE MINUSCULE QAF EN CHEF LAM ALIF MAKSOURA 06D8 LETTRE ARABE MINUSCULE MÎM EN CHEF INITIAL 06D9 LETTRE ARABE MINUSCULE ALIF LAM EN CHEF 06DA LETTRE ARABE MINUSCULE DJÎM EN CHEF 06DB TROIS POINTS EN CHEF ARABE 06DC LETTRE ARABE MINUSCULE SÎN EN CHEF 06DD FIN DE AYAH ARABE 06DE DÉBUT DE ROUB EL HIZB ARABE 06DF ZÉRO ARRONDI EN CHEF ARABE 06E0 ZÉRO RECTANGULAIRE EN CHEF ARABE 06E1 PARTIE HAUTE DE KHA' SANS POINT EN CHEF ARABE 06E2 LETTRE ARABE MINUSCULE MÎM EN CHEF ISOLÉ 06E3 LETTRE ARABE MINUSCULE SÎN SOUSCRIT 06E4 LETTRE ARABE MINUSCULE MADDA EN CHEF 06E5 LETTRE ARABE MINUSCULE WAW 06E6 LETTRE ARABE MINUSCULE YA' 06E7 LETTRE ARABE MINUSCULE YA' EN CHEF 06E8 LETTRE ARABE MINUSCULE NOÛN EN CHEF 06E9 SIGNE DE PROSTERNATION ARABE (sajdah) 06EA POINT CONTOUR SOUSCRIT ARABE 06EB POINT CONTOUR EN CHEF ARABE 06EC POINT PLEIN SOUSCRIT ARABE 06ED LETTRE ARABE MINUSCULE MÎM SOUSCRIT 06F0 CHIFFRE ARABE-HINDI ÉTENDU ZÉRO 06F1 CHIFFRE ARABE-HINDI ÉTENDU UN 06F2 CHIFFRE ARABE-HINDI ÉTENDU DEUX 06F3 CHIFFRE ARABE-HINDI ÉTENDU TROIS 06F4 CHIFFRE ARABE-HINDI ÉTENDU QUATRE 06F5 CHIFFRE ARABE-HINDI ÉTENDU CINQ 06F6 CHIFFRE ARABE-HINDI ÉTENDU SIX 06F7 CHIFFRE ARABE-HINDI ÉTENDU SEPT 06F8 CHIFFRE ARABE-HINDI ÉTENDU HUIT 06F9 CHIFFRE ARABE-HINDI ÉTENDU NEUF 06FA LETTRE ARABE CHÎN POINT SOUSCRIT 06FB LETTRE ARABE DAD POINT SOUSCRIT 06FC LETTRE ARABE GHAÏN POINT SOUSCRIT 06FD SIGNE ARABE SINDHI PERLUÈTE 06FE SIGNE ARABE SINDHI POSTPOSITION MEN @@ 0700 Syriaque 074F 0700 FIN DE PARAGRAPHE SYRIAQUE 0701 POINT SYRIAQUE SUPRALINÉAIRE 0702 POINT SYRIAQUE SUBLINÉAIRE 0703 DEUX-POINTS SYRIAQUE SUPRALINÉAIRE 0704 DEUX-POINTS SYRIAQUE SUBLINÉAIRE 0705 DEUX-POINTS SYRIAQUE HORIZONTAL 0706 DEUX-POINTS SYRIAQUE PENCHÉ À GAUCHE 0707 DEUX-POINTS SYRIAQUE PENCHÉ À DROITE 0708 DEUX-POINTS SYRIAQUE SUPRALINÉAIRE PENCHÉ À GAUCHE 0709 DEUX-POINTS SYRIAQUE SUBLINÉAIRE PENCHÉ À DROITE 070A CONTRACTION SYRIAQUE 070B OBÈLE SYRIAQUE HÉRACLÉEN (d'Harqel) 070C MÉTOBÈLE SYRIAQUE HÉRACLÉEN (d'Harqel) 070D ASTÉRISQUE SYRIAQUE HÉRACLÉEN (d'Harqel) 070F SYMBOLE D'ABRÉVIATION SYRIAQUE 0710 LETTRE SYRIAQUE ÂLAPH 0711 LETTRE SYRIAQUE ÂLAPH EN CHEF 0712 LETTRE SYRIAQUE BÊTH 0713 LETTRE SYRIAQUE GÂMAL 0714 LETTRE SYRIAQUE GÂMAL GARCHOUNI 0715 LETTRE SYRIAQUE DÂLATH 0716 LETTRE SYRIAQUE DÂLATH RÎCH SANS POINT 0717 LETTRE SYRIAQUE HÊ 0718 LETTRE SYRIAQUE WAW 0719 LETTRE SYRIAQUE ZAÏN 071A LETTRE SYRIAQUE HHÊTH 071B LETTRE SYRIAQUE TTÊTH 071C LETTRE SYRIAQUE TTÊTH GARCHOUNI 071D LETTRE SYRIAQUE YOÛDH 071E LETTRE SYRIAQUE YOÛDH HÊ 071F LETTRE SYRIAQUE KÂPH 0720 LETTRE SYRIAQUE LÂMADH 0721 LETTRE SYRIAQUE MÎM 0722 LETTRE SYRIAQUE NOÛN 0723 LETTRE SYRIAQUE SEMKATH 0724 LETTRE SYRIAQUE SEMKATH FINAL 0725 LETTRE SYRIAQUE 'Ê 0726 LETTRE SYRIAQUE PÊ 0727 LETTRE SYRIAQUE PÊ RÉFLÉCHI 0728 LETTRE SYRIAQUE SSÂDHÊ (çâdhê) 0729 LETTRE SYRIAQUE QOÛPH 072A LETTRE SYRIAQUE RÎCH 072B LETTRE SYRIAQUE CHÎN 072C LETTRE SYRIAQUE TAW 0730 PETHÂHH SYRIAQUE EN CHEF 0731 PETHÂHH SYRIAQUE SOUSCRIT 0732 PETHÂHH SYRIAQUE POINTÉ 0733 ZEQÂPH SYRIAQUE EN CHEF 0734 ZEQÂPH SYRIAQUE SOUSCRIT 0735 ZEQÂPH SYRIAQUE POINTILLÉ 0736 REVÂSS SYRIAQUE EN CHEF 0737 REVÂSS SYRIAQUE SOUSCRIT 0738 ZELÂM SYRIAQUE POINTILLÉ HORIZONTAL 0739 ZELÂM SYRIAQUE POINTILLÉ OBLIQUE 073A HHEVÂSS SYRIAQUE EN CHEF 073B HHEVÂSS SYRIAQUE SOUSCRIT 073C HHEVÂSSÂ/'ESSÂS SYRIAQUE POINTÉ 073D 'ESSÂS SYRIAQUE EN CHEF 073E 'ESSÂS SYRIAQUE SOUSCRIT 073F REWÂHH SYRIAQUE 0740 POINT FÉMININ SYRIAQUE 0741 QOUCHCHÂI SYRIAQUE 0742 ROUKKÂKH SYRIAQUE 0743 DEUX POINTS VERTICAUX SYRIAQUES EN CHEF 0744 DEUX POINTS VERTICAUX SYRIAQUES SOUSCRITS 0745 TROIS POINTS SYRIAQUES EN CHEF 0746 TROIS POINTS SYRIAQUES SOUSCRITS 0747 LIGNE OBLIQUE SYRIAQUE EN CHEF 0748 LIGNE OBLIQUE SYRIAQUE SOUSCRITE 0749 MUSIQUE SYRIAQUE 074A BARREKH SYRIAQUE @@ 0780 Thâna 07BF 0780 LETTRE THÂNA H 0781 LETTRE THÂNA CHAVIYANI 0782 LETTRE THÂNA NOÛNOU 0783 LETTRE THÂNA R 0784 LETTRE THÂNA B 0785 LETTRE THÂNA LHAVIYANI 0786 LETTRE THÂNA KÂFOU 0787 LETTRE THÂNA ALIFOU 0788 LETTRE THÂNA VÂVOU 0789 LETTRE THÂNA MÎMOU 078A LETTRE THÂNA FÂFOU 078B LETTRE THÂNA DHÂLOU 078C LETTRE THÂNA TH 078D LETTRE THÂNA LÂMOU 078E LETTRE THÂNA GÂFOU 078F LETTRE THÂNA GNAVIYANI 0790 LETTRE THÂNA SÎNOU 0791 LETTRE THÂNA DAVIYANI 0792 LETTRE THÂNA ZAVIYANI 0793 LETTRE THÂNA TAVIYANI 0794 LETTRE THÂNA Y 0795 LETTRE THÂNA PAVIYANI 0796 LETTRE THÂNA DJAVIYANI 0797 LETTRE THÂNA TCHAVIYANI 0798 LETTRE THÂNA TT 0799 LETTRE THÂNA HH 079A LETTRE THÂNA KH 079B LETTRE THÂNA THÂLU 079C LETTRE THÂNA Z 079D LETTRE THÂNA CHÎNOU 079E LETTRE THÂNA SÂDHOU 079F LETTRE THÂNA DÂDHOU 07A0 LETTRE THÂNA TO 07A1 LETTRE THÂNA ZO 07A2 LETTRE THÂNA AÏNOU 07A3 LETTRE THÂNA GHAÏNOU 07A4 LETTRE THÂNA QÂFOU 07A5 LETTRE THÂNA WÂVOU 07A6 THÂNA ABAFILI 07A7 THÂNA ÂBÂFILI 07A8 THÂNA IBIFILI 07A9 THÂNA ÎBÎFILI 07AA THÂNA OUBOUFILI 07AB THÂNA OÛBOÛFILI 07AC THÂNA ÉBÉFILI 07AD THÂNA ÊBÊFILI 07AE THÂNA OBOFILI 07AF THÂNA ÔBÔFILI 07B0 THÂNA SOUKOUN @@ 0900 Dévanâgarî 097F 0901 SYMBOLE DÉVANÂGARÎ TCHANDRABINDOU 0902 SYMBOLE DÉVANÂGARÎ ANOUSVÂRA 0903 SYMBOLE DÉVANÂGARÎ VISARGA 0905 LETTRE DÉVANÂGARÎ A 0906 LETTRE DÉVANÂGARÎ Â 0907 LETTRE DÉVANÂGARÎ I 0908 LETTRE DÉVANÂGARÎ Î 0909 LETTRE DÉVANÂGARÎ OU 090A LETTRE DÉVANÂGARÎ OÛ 090B LETTRE DÉVANÂGARÎ R VOCALIQUE 090C LETTRE DÉVANÂGARÎ L VOCALIQUE 090D LETTRE DÉVANÂGARÎ É TCHANDRA 090E LETTRE DÉVANÂGARÎ É BREF 090F LETTRE DÉVANÂGARÎ É 0910 LETTRE DÉVANÂGARÎ AÏ 0911 LETTRE DÉVANÂGARÎ O TCHANDRA 0912 LETTRE DÉVANÂGARÎ O BREF 0913 LETTRE DÉVANÂGARÎ Ô 0914 LETTRE DÉVANÂGARÎ AOU 0915 LETTRE DÉVANÂGARÎ KA 0916 LETTRE DÉVANÂGARÎ KHA 0917 LETTRE DÉVANÂGARÎ GA 0918 LETTRE DÉVANÂGARÎ GHA 0919 LETTRE DÉVANÂGARÎ NGA 091A LETTRE DÉVANÂGARÎ TCHA 091B LETTRE DÉVANÂGARÎ TCHHA 091C LETTRE DÉVANÂGARÎ DJA 091D LETTRE DÉVANÂGARÎ DJHA 091E LETTRE DÉVANÂGARÎ ÑA 091F LETTRE DÉVANÂGARÎ TTA 0920 LETTRE DÉVANÂGARÎ TTHA 0921 LETTRE DÉVANÂGARÎ DDA 0922 LETTRE DÉVANÂGARÎ DDHA 0923 LETTRE DÉVANÂGARÎ NNA 0924 LETTRE DÉVANÂGARÎ TA 0925 LETTRE DÉVANÂGARÎ THA 0926 LETTRE DÉVANÂGARÎ DA 0927 LETTRE DÉVANÂGARÎ DHA 0928 LETTRE DÉVANÂGARÎ NA 0929 LETTRE DÉVANÂGARÎ NNNA 092A LETTRE DÉVANÂGARÎ PA 092B LETTRE DÉVANÂGARÎ PHA 092C LETTRE DÉVANÂGARÎ BA 092D LETTRE DÉVANÂGARÎ BHA 092E LETTRE DÉVANÂGARÎ MA 092F LETTRE DÉVANÂGARÎ YA 0930 LETTRE DÉVANÂGARÎ RA 0931 LETTRE DÉVANÂGARÎ RRA 0932 LETTRE DÉVANÂGARÎ LA 0933 LETTRE DÉVANÂGARÎ LLA 0934 LETTRE DÉVANÂGARÎ LLLA 0935 LETTRE DÉVANÂGARÎ VA 0936 LETTRE DÉVANÂGARÎ ÇA 0937 LETTRE DÉVANÂGARÎ CHA 0938 LETTRE DÉVANÂGARÎ SA 0939 LETTRE DÉVANÂGARÎ HA 093C SYMBOLE DÉVANÂGARÎ NOUKTA 093D SYMBOLE DÉVANÂGARÎ AVAGRAHA 093E VOYELLE DIACRITIQUE DÉVANÂGARÎ Â 093F VOYELLE DIACRITIQUE DÉVANÂGARÎ I 0940 VOYELLE DIACRITIQUE DÉVANÂGARÎ Î 0941 VOYELLE DIACRITIQUE DÉVANÂGARÎ OU 0942 VOYELLE DIACRITIQUE DÉVANÂGARÎ OÛ 0943 VOYELLE DIACRITIQUE DÉVANÂGARÎ R VOCALIQUE 0944 VOYELLE DIACRITIQUE DÉVANÂGARÎ RR VOCALIQUE 0945 VOYELLE DIACRITIQUE DÉVANÂGARÎ É TCHANDRA 0946 VOYELLE DIACRITIQUE DÉVANÂGARÎ É BREF 0947 VOYELLE DIACRITIQUE DÉVANÂGARÎ É 0948 VOYELLE DIACRITIQUE DÉVANÂGARÎ AÏ 0949 VOYELLE DIACRITIQUE DÉVANÂGARÎ O TCHANDRA 094A VOYELLE DIACRITIQUE DÉVANÂGARÎ O BREF 094B VOYELLE DIACRITIQUE DÉVANÂGARÎ Ô 094C VOYELLE DIACRITIQUE DÉVANÂGARÎ AOU 094D SYMBOLE DÉVANÂGARÎ VIRÂMA 0950 OM DÉVANÂGARÎ 0951 SIGNE D'ACCENTUATION DÉVANÂGARÎ OUDATTA 0952 SIGNE D'ACCENTUATION DÉVANÂGARÎ ANOUDATTA 0953 ACCENT GRAVE DÉVANÂGARÎ 0954 ACCENT AIGU DÉVANÂGARÎ 0958 LETTRE DÉVANÂGARÎ QA 0959 LETTRE DÉVANÂGARÎ KHHA 095A LETTRE DÉVANÂGARÎ GHHA 095B LETTRE DÉVANÂGARÎ ZA 095C LETTRE DÉVANÂGARÎ DDDHA 095D LETTRE DÉVANÂGARÎ RHA 095E LETTRE DÉVANÂGARÎ FA 095F LETTRE DÉVANÂGARÎ YYA 0960 LETTRE DÉVANÂGARÎ RR VOCALIQUE 0961 LETTRE DÉVANÂGARÎ LL VOCALIQUE 0962 VOYELLE DIACRITIQUE DÉVANÂGARÎ L VOCALIQUE 0963 VOYELLE DIACRITIQUE DÉVANÂGARÎ LL VOCALIQUE 0964 DANNDDA DÉVANÂGARÎ 0965 DOUBLE DANNDDA DÉVANÂGARÎ 0966 CHIFFRE DÉVANÂGARÎ ZÉRO 0967 CHIFFRE DÉVANÂGARÎ UN 0968 CHIFFRE DÉVANÂGARÎ DEUX 0969 CHIFFRE DÉVANÂGARÎ TROIS 096A CHIFFRE DÉVANÂGARÎ QUATRE 096B CHIFFRE DÉVANÂGARÎ CINQ 096C CHIFFRE DÉVANÂGARÎ SIX 096D CHIFFRE DÉVANÂGARÎ SEPT 096E CHIFFRE DÉVANÂGARÎ HUIT 096F CHIFFRE DÉVANÂGARÎ NEUF 0970 SYMBOLE DÉVANÂGARÎ D'ABRÉVIATION @@ 0980 Bengali 09FF 0981 SYMBOLE BENGALI TCHANDRABINDOU 0982 SYMBOLE BENGALI ANOUSVÂRA 0983 SYMBOLE BENGALI VISARGA 0985 LETTRE BENGALI A 0986 LETTRE BENGALI  0987 LETTRE BENGALI I 0988 LETTRE BENGALI Î 0989 LETTRE BENGALI OU 098A LETTRE BENGALI OÛ 098B LETTRE BENGALI R VOCALIQUE 098C LETTRE BENGALI L VOCALIQUE 098F LETTRE BENGALI É 0990 LETTRE BENGALI AÏ 0993 LETTRE BENGALI Ô 0994 LETTRE BENGALI AOU 0995 LETTRE BENGALI KA 0996 LETTRE BENGALI KHA 0997 LETTRE BENGALI GA 0998 LETTRE BENGALI GHA 0999 LETTRE BENGALI NGA 099A LETTRE BENGALI TCHA 099B LETTRE BENGALI TCHHA 099C LETTRE BENGALI DJA 099D LETTRE BENGALI DJHA 099E LETTRE BENGALI ÑA 099F LETTRE BENGALI TTA 09A0 LETTRE BENGALI TTHA 09A1 LETTRE BENGALI DDA 09A2 LETTRE BENGALI DDHA 09A3 LETTRE BENGALI NNA 09A4 LETTRE BENGALI TA 09A5 LETTRE BENGALI THA 09A6 LETTRE BENGALI DA 09A7 LETTRE BENGALI DHA 09A8 LETTRE BENGALI NA 09AA LETTRE BENGALI PA 09AB LETTRE BENGALI PHA 09AC LETTRE BENGALI BA 09AD LETTRE BENGALI BHA 09AE LETTRE BENGALI MA 09AF LETTRE BENGALI YA 09B0 LETTRE BENGALI RA 09B2 LETTRE BENGALI LA 09B6 LETTRE BENGALI ÇA 09B7 LETTRE BENGALI CHA 09B8 LETTRE BENGALI SA 09B9 LETTRE BENGALI HA 09BC SYMBOLE BENGALI NOUKTA 09BE VOYELLE DIACRITIQUE BENGALI  09BF VOYELLE DIACRITIQUE BENGALI I 09C0 VOYELLE DIACRITIQUE BENGALI Î 09C1 VOYELLE DIACRITIQUE BENGALI OU 09C2 VOYELLE DIACRITIQUE BENGALI OÛ 09C3 VOYELLE DIACRITIQUE BENGALI R VOCALIQUE 09C4 VOYELLE DIACRITIQUE BENGALI RR VOCALIQUE 09C7 VOYELLE DIACRITIQUE BENGALI É 09C8 VOYELLE DIACRITIQUE BENGALI AÏ 09CB VOYELLE DIACRITIQUE BENGALI Ô 09CC VOYELLE DIACRITIQUE BENGALI AOU 09CD SYMBOLE BENGALI VIRÂMA 09D7 SIGNE DE LONGUEUR BENGALI AOU 09DC LETTRE BENGALI RRA 09DD LETTRE BENGALI RHA 09DF LETTRE BENGALI YYA 09E0 LETTRE BENGALI RR VOCALIQUE 09E1 LETTRE BENGALI LL VOCALIQUE 09E2 VOYELLE DIACRITIQUE BENGALI L VOCALIQUE 09E3 VOYELLE DIACRITIQUE BENGALI LL VOCALIQUE 09E6 CHIFFRE BENGALI ZÉRO 09E7 CHIFFRE BENGALI UN 09E8 CHIFFRE BENGALI DEUX 09E9 CHIFFRE BENGALI TROIS 09EA CHIFFRE BENGALI QUATRE 09EB CHIFFRE BENGALI CINQ 09EC CHIFFRE BENGALI SIX 09ED CHIFFRE BENGALI SEPT 09EE CHIFFRE BENGALI HUIT 09EF CHIFFRE BENGALI NEUF 09F0 LETTRE BENGALI RA AVEC BARRE OBLIQUE MÉDIANE 09F1 LETTRE BENGALI RA AVEC BARRE OBLIQUE SOUSCRITE 09F2 SIGNE BENGALI ROUPIE 09F3 SYMBOLE BENGALI ROUPIE 09F4 NUMÉRATEUR MONÉTAIRE BENGALI UN 09F5 NUMÉRATEUR MONÉTAIRE BENGALI DEUX 09F6 NUMÉRATEUR MONÉTAIRE BENGALI TROIS 09F7 NUMÉRATEUR MONÉTAIRE BENGALI QUATRE 09F8 NUMÉRATEUR MONÉTAIRE BENGALI DÉNOMINATEUR MOINS UN 09F9 DÉNOMINATEUR MONÉTAIRE BENGALI SEIZE 09FA ÎSCHAR BENGALI (îçvara bengali) @@ 0A00 Gourmoukhî 0A7F 0A02 SYMBOLE GOURMOUKHÎ BINDI 0A05 LETTRE GOURMOUKHÎ A 0A06 LETTRE GOURMOUKHÎ Â 0A07 LETTRE GOURMOUKHÎ I 0A08 LETTRE GOURMOUKHÎ Î 0A09 LETTRE GOURMOUKHÎ OU 0A0A LETTRE GOURMOUKHÎ OÛ 0A0F LETTRE GOURMOUKHÎ Ê 0A10 LETTRE GOURMOUKHÎ AÏ 0A13 LETTRE GOURMOUKHÎ Ô 0A14 LETTRE GOURMOUKHÎ AOU 0A15 LETTRE GOURMOUKHÎ KA 0A16 LETTRE GOURMOUKHÎ KHA 0A17 LETTRE GOURMOUKHÎ GA 0A18 LETTRE GOURMOUKHÎ GHA 0A19 LETTRE GOURMOUKHÎ NGA 0A1A LETTRE GOURMOUKHÎ TCHA 0A1B LETTRE GOURMOUKHÎ TCHHA 0A1C LETTRE GOURMOUKHÎ DJA 0A1D LETTRE GOURMOUKHÎ TJA 0A1E LETTRE GOURMOUKHÎ ÑA 0A1F LETTRE GOURMOUKHÎ TTA 0A20 LETTRE GOURMOUKHÎ TTHA 0A21 LETTRE GOURMOUKHÎ DDA 0A22 LETTRE GOURMOUKHÎ DDHA 0A23 LETTRE GOURMOUKHÎ NNA 0A24 LETTRE GOURMOUKHÎ TA 0A25 LETTRE GOURMOUKHÎ THA 0A26 LETTRE GOURMOUKHÎ DA 0A27 LETTRE GOURMOUKHÎ DHA 0A28 LETTRE GOURMOUKHÎ NA 0A2A LETTRE GOURMOUKHÎ PA 0A2B LETTRE GOURMOUKHÎ PHA 0A2C LETTRE GOURMOUKHÎ BA 0A2D LETTRE GOURMOUKHÎ BHA 0A2E LETTRE GOURMOUKHÎ MA 0A2F LETTRE GOURMOUKHÎ YA 0A30 LETTRE GOURMOUKHÎ RA 0A32 LETTRE GOURMOUKHÎ LA 0A33 LETTRE GOURMOUKHÎ LLA 0A35 LETTRE GOURMOUKHÎ VA 0A36 LETTRE GOURMOUKHÎ ÇA 0A38 LETTRE GOURMOUKHÎ SA 0A39 LETTRE GOURMOUKHÎ HA 0A3C SYMBOLE GOURMOUKHÎ NOUKTA 0A3E VOYELLE DIACRITIQUE GOURMOUKHÎ Â 0A3F VOYELLE DIACRITIQUE GOURMOUKHÎ I 0A40 VOYELLE DIACRITIQUE GOURMOUKHÎ Î 0A41 VOYELLE DIACRITIQUE GOURMOUKHÎ OU 0A42 VOYELLE DIACRITIQUE GOURMOUKHÎ OÛ 0A47 VOYELLE DIACRITIQUE GOURMOUKHÎ Ê 0A48 VOYELLE DIACRITIQUE GOURMOUKHÎ AÏ 0A4B VOYELLE DIACRITIQUE GOURMOUKHÎ Ô 0A4C VOYELLE DIACRITIQUE GOURMOUKHÎ AOU 0A4D SYMBOLE GOURMOUKHÎ VIRÂMA 0A59 LETTRE GOURMOUKHÎ KHHA 0A5A LETTRE GOURMOUKHÎ GHHA 0A5B LETTRE GOURMOUKHÎ ZA 0A5C LETTRE GOURMOUKHÎ RRA 0A5E LETTRE GOURMOUKHÎ FA 0A66 CHIFFRE GOURMOUKHÎ ZÉRO 0A67 CHIFFRE GOURMOUKHÎ UN 0A68 CHIFFRE GOURMOUKHÎ DEUX 0A69 CHIFFRE GOURMOUKHÎ TROIS 0A6A CHIFFRE GOURMOUKHÎ QUATRE 0A6B CHIFFRE GOURMOUKHÎ CINQ 0A6C CHIFFRE GOURMOUKHÎ SIX 0A6D CHIFFRE GOURMOUKHÎ SEPT 0A6E CHIFFRE GOURMOUKHÎ HUIT 0A6F CHIFFRE GOURMOUKHÎ NEUF 0A70 TIPPI GOURMOUKHÎ 0A71 ADDAK GOURMOUKHÎ 0A72 IRI GOURMOUKHÎ 0A73 OURA GOURMOUKHÎ 0A74 EK ONKAR GOURMOUKHÎ @@ 0A80 Goudjarati 0AFF 0A81 SYMBOLE GOUDJARATI TCHANDRABINDOU 0A82 SYMBOLE GOUDJARATI ANOUSVÂRA 0A83 SYMBOLE GOUDJARATI VISARGA 0A85 LETTRE GOUDJARATI A 0A86 LETTRE GOUDJARATI  0A87 LETTRE GOUDJARATI I 0A88 LETTRE GOUDJARATI Î 0A89 LETTRE GOUDJARATI OU 0A8A LETTRE GOUDJARATI OÛ 0A8B LETTRE GOUDJARATI R VOCALIQUE 0A8D VOYELLE GOUDJARATI É TCHANDRA 0A8F LETTRE GOUDJARATI É 0A90 LETTRE GOUDJARATI AÏ 0A91 VOYELLE GOUDJARATI O TCHANDRA 0A93 LETTRE GOUDJARATI Ô 0A94 LETTRE GOUDJARATI AOU 0A95 LETTRE GOUDJARATI KA 0A96 LETTRE GOUDJARATI KHA 0A97 LETTRE GOUDJARATI GA 0A98 LETTRE GOUDJARATI GHA 0A99 LETTRE GOUDJARATI NGA 0A9A LETTRE GOUDJARATI TCHA 0A9B LETTRE GOUDJARATI TCHHA 0A9C LETTRE GOUDJARATI DJA 0A9D LETTRE GOUDJARATI DJHA 0A9E LETTRE GOUDJARATI ÑA 0A9F LETTRE GOUDJARATI TTA 0AA0 LETTRE GOUDJARATI TTHA 0AA1 LETTRE GOUDJARATI DDA 0AA2 LETTRE GOUDJARATI DDHA 0AA3 LETTRE GOUDJARATI NNA 0AA4 LETTRE GOUDJARATI TA 0AA5 LETTRE GOUDJARATI THA 0AA6 LETTRE GOUDJARATI DA 0AA7 LETTRE GOUDJARATI DHA 0AA8 LETTRE GOUDJARATI NA 0AAA LETTRE GOUDJARATI PA 0AAB LETTRE GOUDJARATI PHA 0AAC LETTRE GOUDJARATI BA 0AAD LETTRE GOUDJARATI BHA 0AAE LETTRE GOUDJARATI MA 0AAF LETTRE GOUDJARATI YA 0AB0 LETTRE GOUDJARATI RA 0AB2 LETTRE GOUDJARATI LA 0AB3 LETTRE GOUDJARATI LLA 0AB5 LETTRE GOUDJARATI VA 0AB6 LETTRE GOUDJARATI ÇA 0AB7 LETTRE GOUDJARATI CHA 0AB8 LETTRE GOUDJARATI SA 0AB9 LETTRE GOUDJARATI HA 0ABC SYMBOLE GOUDJARATI NOUKTA 0ABD SYMBOLE GOUDJARATI AVAGRAHA 0ABE VOYELLE DIACRITIQUE GOUDJARATI  0ABF VOYELLE DIACRITIQUE GOUDJARATI I 0AC0 VOYELLE DIACRITIQUE GOUDJARATI Î 0AC1 VOYELLE DIACRITIQUE GOUDJARATI OU 0AC2 VOYELLE DIACRITIQUE GOUDJARATI OÛ 0AC3 VOYELLE DIACRITIQUE GOUDJARATI R VOCALIQUE 0AC4 VOYELLE DIACRITIQUE GOUDJARATI RR VOCALIQUE 0AC5 VOYELLE DIACRITIQUE GOUDJARATI É TCHANDRA 0AC7 VOYELLE DIACRITIQUE GOUDJARATI É 0AC8 VOYELLE DIACRITIQUE GOUDJARATI AÏ 0AC9 VOYELLE DIACRITIQUE GOUDJARATI O TCHANDRA 0ACB VOYELLE DIACRITIQUE GOUDJARATI Ô 0ACC VOYELLE DIACRITIQUE GOUDJARATI AOU 0ACD SYMBOLE GOUDJARATI VIRÂMA 0AD0 OM GOUDJARATI 0AE0 LETTRE GOUDJARATI RR VOCALIQUE 0AE6 CHIFRE GOUDJARATI ZÉRO 0AE7 CHIFFRE GOUDJARATI UN 0AE8 CHIFFRE GOUDJARATI DEUX 0AE9 CHIFFRE GOUDJARATI TROIS 0AEA CHIFFRE GOUDJARATI QUATRE 0AEB CHIFFRE GOUDJARATI CINQ 0AEC CHIFFRE GOUDJARATI SIX 0AED CHIFFRE GOUDJARATI SEPT 0AEE CHIFFRE GOUDJARATI HUIT 0AEF CHIFFRE GOUDJARATI NEUF @@ 0B00 Oriya 0B7F 0B01 SYMBOLE ORIYA TCHANDRABINDOU 0B02 SYMBOLE ORIYA ANOUSVÂRA 0B03 SYMBOLE ORIYA VISARGA 0B05 LETTRE ORIYA A 0B06 LETTRE ORIYA  0B07 LETTRE ORIYA I 0B08 LETTRE ORIYA Î 0B09 LETTRE ORIYA OU 0B0A LETTRE ORIYA OÛ 0B0B LETTRE ORIYA R VOCALIQUE 0B0C LETTRE ORIYA L VOCALIQUE 0B0F LETTRE ORIYA É 0B10 LETTRE ORIYA AÏ 0B13 LETTRE ORIYA Ô 0B14 LETTRE ORIYA AOU 0B15 LETTRE ORIYA KA 0B16 LETTRE ORIYA KHA 0B17 LETTRE ORIYA GA 0B18 LETTRE ORIYA GHA 0B19 LETTRE ORIYA NGA 0B1A LETTRE ORIYA TCHA 0B1B LETTRE ORIYA TCHHA 0B1C LETTRE ORIYA DJA 0B1D LETTRE ORIYA DJHA 0B1E LETTRE ORIYA ÑA 0B1F LETTRE ORIYA TTA 0B20 LETTRE ORIYA TTHA 0B21 LETTRE ORIYA DDA 0B22 LETTRE ORIYA DDHA 0B23 LETTRE ORIYA NNA 0B24 LETTRE ORIYA TA 0B25 LETTRE ORIYA THA 0B26 LETTRE ORIYA DA 0B27 LETTRE ORIYA DHA 0B28 LETTRE ORIYA NA 0B2A LETTRE ORIYA PA 0B2B LETTRE ORIYA PHA 0B2C LETTRE ORIYA BA 0B2D LETTRE ORIYA BHA 0B2E LETTRE ORIYA MA 0B2F LETTRE ORIYA YA 0B30 LETTRE ORIYA RA 0B32 LETTRE ORIYA LA 0B33 LETTRE ORIYA LLA 0B35 0B36 LETTRE ORIYA ÇA 0B37 LETTRE ORIYA SSA 0B38 LETTRE ORIYA SA 0B39 LETTRE ORIYA HA 0B3C SYMBOLE ORIYA NOUKTA 0B3D SYMBOLE ORIYA AVAGRAHA 0B3E VOYELLE DIACRITIQUE ORIYA  0B3F VOYELLE DIACRITIQUE ORIYA I 0B40 VOYELLE DIACRITIQUE ORIYA Î 0B41 VOYELLE DIACRITIQUE ORIYA OU 0B42 VOYELLE DIACRITIQUE ORIYA OÛ 0B43 VOYELLE DIACRITIQUE ORIYA R VOCALIQUE 0B47 VOYELLE DIACRITIQUE ORIYA É 0B48 VOYELLE DIACRITIQUE ORIYA AÏ 0B4B VOYELLE DIACRITIQUE ORIYA Ô 0B4C VOYELLE DIACRITIQUE ORIYA AOU 0B4D SYMBOLE ORIYA VIRÂMA (halanta) 0B56 SIGNE DE LONGUEUR ORIYA AÏ 0B57 SIGNE DE LONGUEUR ORIYA AOU 0B5C LETTRE ORIYA RRA 0B5D LETTRE ORIYA RHA 0B5F LETTRE ORIYA YYA 0B60 LETTRE ORIYA RR VOCALIQUE 0B61 LETTRE ORIYA LL VOCALIQUE 0B66 CHIFFRE ORIYA ZÉRO 0B67 CHIFFRE ORIYA UN 0B68 CHIFFRE ORIYA DEUX 0B69 CHIFFRE ORIYA TROIS 0B6A CHIFFRE ORIYA QUATRE 0B6B CHIFFRE ORIYA CINQ 0B6C CHIFFRE ORIYA SIX 0B6D CHIFFRE ORIYA SEPT 0B6E CHIFFRE ORIYA HUIT 0B6F CHIFFRE ORIYA NEUF 0B70 ÎSCHAR ORIYA (îçvara oriya) @@ 0B80 Tamoul 0BFF 0B82 SYMBOLE TAMOUL ANOUSVÂRA 0B83 SYMBOLE TAMOUL VISARGA 0B85 LETTRE TAMOUL A 0B86 LETTRE TAMOUL  0B87 LETTRE TAMOUL I 0B88 LETTRE TAMOUL Î 0B89 LETTRE TAMOUL OU 0B8A LETTRE TAMOUL OÛ 0B8E LETTRE TAMOUL É 0B8F LETTRE TAMOUL Ê 0B90 LETTRE TAMOUL AÏ 0B92 LETTRE TAMOUL O 0B93 LETTRE TAMOUL Ô 0B94 LETTRE TAMOUL AOU 0B95 LETTRE TAMOUL KA 0B99 LETTRE TAMOUL NGA 0B9A LETTRE TAMOUL TCHA 0B9C LETTRE TAMOUL DJA 0B9E LETTRE TAMOUL ÑA 0B9F LETTRE TAMOUL TTA 0BA3 LETTRE TAMOUL NNA 0BA4 LETTRE TAMOUL TA 0BA8 LETTRE TAMOUL NA 0BA9 LETTRE TAMOUL NNNA 0BAA LETTRE TAMOUL PA 0BAE LETTRE TAMOUL MA 0BAF LETTRE TAMOUL YA 0BB0 LETTRE TAMOUL RA 0BB1 LETTRE TAMOUL RRA 0BB2 LETTRE TAMOUL LA 0BB3 LETTRE TAMOUL LLA 0BB4 LETTRE TAMOUL LLLA 0BB5 LETTRE TAMOUL VA 0BB7 LETTRE TAMOUL SSA 0BB8 LETTRE TAMOUL SA 0BB9 LETTRE TAMOUL HA 0BBE VOYELLE DIACRITIQUE TAMOUL  0BBF VOYELLE DIACRITIQUE TAMOUL I 0BC0 VOYELLE DIACRITIQUE TAMOUL Î 0BC1 VOYELLE DIACRITIQUE TAMOUL OU 0BC2 VOYELLE DIACRITIQUE TAMOUL OÛ 0BC6 VOYELLE DIACRITIQUE TAMOUL É 0BC7 VOYELLE DIACRITIQUE TAMOUL Ê 0BC8 VOYELLE DIACRITIQUE TAMOUL AÏ 0BCA VOYELLE DIACRITIQUE TAMOUL O 0BCB VOYELLE DIACRITIQUE TAMOUL Ô 0BCC VOYELLE DIACRITIQUE TAMOUL AOU 0BCD SYMBOLE TAMOUL VIRÂMA 0BD7 SIGNE DE LONGUEUR TAMOUL AOU 0BE6 0BE7 CHIFFRE TAMOUL UN 0BE8 CHIFFRE TAMOUL DEUX 0BE9 CHIFFRE TAMOUL TROIS 0BEA CHIFFRE TAMOUL QUATRE 0BEB CHIFFRE TAMOUL CINQ 0BEC CHIFFRE TAMOUL SIX 0BED CHIFFRE TAMOUL SEPT 0BEE CHIFFRE TAMOUL HUIT 0BEF CHIFFRE TAMOUL NEUF 0BF0 NOMBRE TAMOUL DIX 0BF1 NOMBRE TAMOUL CENT 0BF2 NOMBRE TAMOUL MILLE @@ 0C00 Télougou 0C7F 0C01 SYMBOLE TÉLOUGOU TCHANDRABINDOU 0C02 SYMBOLE TÉLOUGOU ANOUSVÂRA 0C03 SYMBOLE TÉLOUGOU VISARGA 0C05 LETTRE TÉLOUGOU A 0C06 LETTRE TÉLOUGOU  0C07 LETTRE TÉLOUGOU I 0C08 LETTRE TÉLOUGOU Î 0C09 LETTRE TÉLOUGOU OU 0C0A LETTRE TÉLOUGOU OÛ 0C0B LETTRE TÉLOUGOU R VOCALIQUE 0C0C LETTRE TÉLOUGOU L VOCALIQUE 0C0E LETTRE TÉLOUGOU É 0C0F LETTRE TÉLOUGOU Ê 0C10 LETTRE TÉLOUGOU AÏ 0C12 LETTRE TÉLOUGOU O 0C13 LETTRE TÉLOUGOU Ô 0C14 LETTRE TÉLOUGOU AOU 0C15 LETTRE TÉLOUGOU KA 0C16 LETTRE TÉLOUGOU KHA 0C17 LETTRE TÉLOUGOU GA 0C18 LETTRE TÉLOUGOU GHA 0C19 LETTRE TÉLOUGOU NGA 0C1A LETTRE TÉLOUGOU TCHA 0C1B LETTRE TÉLOUGOU TCHHA 0C1C LETTRE TÉLOUGOU DJA 0C1D LETTRE TÉLOUGOU DJHA 0C1E LETTRE TÉLOUGOU ÑA 0C1F LETTRE TÉLOUGOU TTA 0C20 LETTRE TÉLOUGOU TTHA 0C21 LETTRE TÉLOUGOU DDA 0C22 LETTRE TÉLOUGOU DDHA 0C23 LETTRE TÉLOUGOU NNA 0C24 LETTRE TÉLOUGOU TA 0C25 LETTRE TÉLOUGOU THA 0C26 LETTRE TÉLOUGOU DA 0C27 LETTRE TÉLOUGOU DHA 0C28 LETTRE TÉLOUGOU NA 0C2A LETTRE TÉLOUGOU PA 0C2B LETTRE TÉLOUGOU PHA 0C2C LETTRE TÉLOUGOU BA 0C2D LETTRE TÉLOUGOU BHA 0C2E LETTRE TÉLOUGOU MA 0C2F LETTRE TÉLOUGOU YA 0C30 LETTRE TÉLOUGOU RA 0C31 LETTRE TÉLOUGOU RRA 0C32 LETTRE TÉLOUGOU LA 0C33 LETTRE TÉLOUGOU LLA 0C35 LETTRE TÉLOUGOU VA 0C36 LETTRE TÉLOUGOU ÇA 0C37 LETTRE TÉLOUGOU CHA 0C38 LETTRE TÉLOUGOU SA 0C39 LETTRE TÉLOUGOU HA 0C3E VOYELLE DIACRITIQUE TÉLOUGOU  0C3F VOYELLE DIACRITIQUE TÉLOUGOU I 0C40 VOYELLE DIACRITIQUE TÉLOUGOU Î 0C41 VOYELLE DIACRITIQUE TÉLOUGOU OU 0C42 VOYELLE DIACRITIQUE TÉLOUGOU OÛ 0C43 VOYELLE DIACRITIQUE TÉLOUGOU R VOCALIQUE 0C44 VOYELLE DIACRITIQUE TÉLOUGOU RR VOCALIQUE 0C46 VOYELLE DIACRITIQUE TÉLOUGOU E 0C47 VOYELLE DIACRITIQUE TÉLOUGOU Ê 0C48 VOYELLE DIACRITIQUE TÉLOUGOU AÏ 0C4A VOYELLE DIACRITIQUE TÉLOUGOU O 0C4B VOYELLE DIACRITIQUE TÉLOUGOU Ô 0C4C VOYELLE DIACRITIQUE TÉLOUGOU AOU 0C4D SYMBOLE TÉLOUGOU VIRÂMA 0C55 SIGNE DE LONGUEUR TÉLOUGOU 0C56 SIGNE DE LONGUEUR TÉLOUGOU AÏ 0C60 LETTRE TÉLOUGOU RR VOCALIQUE 0C61 LETTRE TÉLOUGOU LL VOCALIQUE 0C66 CHIFFRE TÉLOUGOU ZÉRO 0C67 CHIFFRE TÉLOUGOU UN 0C68 CHIFFRE TÉLOUGOU DEUX 0C69 CHIFFRE TÉLOUGOU TROIS 0C6A CHIFFRE TÉLOUGOU QUATRE 0C6B CHIFFRE TÉLOUGOU CINQ 0C6C CHIFFRE TÉLOUGOU SIX 0C6D CHIFFRE TÉLOUGOU SEPT 0C6E CHIFFRE TÉLOUGOU HUIT 0C6F CHIFFRE TÉLOUGOU NEUF @@ 0C80 Kannara 0CFF 0C82 SYMBOLE KANNARA ANOUSVÂRA 0C83 SYMBOLE KANNARA VISARGA 0C85 LETTRE KANNARA A 0C86 LETTRE KANNARA  0C87 LETTRE KANNARA I 0C88 LETTRE KANNARA Î 0C89 LETTRE KANNARA OU 0C8A LETTRE KANNARA OÛ 0C8B LETTRE KANNARA R VOCALIQUE 0C8C LETTRE KANNARA L VOCALIQUE 0C8E LETTRE KANNARA É 0C8F LETTRE KANNARA Ê 0C90 LETTRE KANNARA AÏ 0C92 LETTRE KANNARA O 0C93 LETTRE KANNARA Ô 0C94 LETTRE KANNARA AOU 0C95 LETTRE KANNARA KA 0C96 LETTRE KANNARA KHA 0C97 LETTRE KANNARA GA 0C98 LETTRE KANNARA GHA 0C99 LETTRE KANNARA NGA 0C9A LETTRE KANNARA TCHA 0C9B LETTRE KANNARA TCHHA 0C9C LETTRE KANNARA DJA 0C9D LETTRE KANNARA DJHA 0C9E LETTRE KANNARA ÑA 0C9F LETTRE KANNARA TTA 0CA0 LETTRE KANNARA TTHA 0CA1 LETTRE KANNARA DDA 0CA2 LETTRE KANNARA DDHA 0CA3 LETTRE KANNARA NNA 0CA4 LETTRE KANNARA TA 0CA5 LETTRE KANNARA THA 0CA6 LETTRE KANNARA DA 0CA7 LETTRE KANNARA DHA 0CA8 LETTRE KANNARA NA 0CAA LETTRE KANNARA PA 0CAB LETTRE KANNARA PHA 0CAC LETTRE KANNARA BA 0CAD LETTRE KANNARA BHA 0CAE LETTRE KANNARA MA 0CAF LETTRE KANNARA YA 0CB0 LETTRE KANNARA RA 0CB1 LETTRE KANNARA RRA 0CB2 LETTRE KANNARA LA 0CB3 LETTRE KANNARA LLA 0CB5 LETTRE KANNARA VA 0CB6 LETTRE KANNARA ÇA 0CB7 LETTRE KANNARA CHA 0CB8 LETTRE KANNARA SA 0CB9 LETTRE KANNARA HA 0CBE VOYELLE DIACRITIQUE KANNARA  0CBF VOYELLE DIACRITIQUE KANNARA I 0CC0 VOYELLE DIACRITIQUE KANNARA Î 0CC1 VOYELLE DIACRITIQUE KANNARA OU 0CC2 VOYELLE DIACRITIQUE KANNARA OÛ 0CC3 VOYELLE DIACRITIQUE KANNARA R VOCALIQUE 0CC4 VOYELLE DIACRITIQUE KANNARA RR VOCALIQUE 0CC6 VOYELLE DIACRITIQUE KANNARA É 0CC7 VOYELLE DIACRITIQUE KANNARA Ê 0CC8 VOYELLE DIACRITIQUE KANNARA AÏ 0CCA VOYELLE DIACRITIQUE KANNARA O 0CCB VOYELLE DIACRITIQUE KANNARA Ô 0CCC VOYELLE DIACRITIQUE KANNARA AOU 0CCD SYMBOLE KANNARA VIRÂMA 0CD5 SIGNE DE LONGUEUR KANNARA 0CD6 SIGNE DE LONGUEUR KANNARA AÏ 0CDE LETTRE KANNARA FA 0CE0 LETTRE KANNARA RR VOCALIQUE 0CE1 LETTRE KANNARA LL VOCALIQUE 0CE6 CHIFFRE KANNARA ZÉRO 0CE7 CHIFFRE KANNARA UN 0CE8 CHIFFRE KANNARA DEUX 0CE9 CHIFFRE KANNARA TROIS 0CEA CHIFFRE KANNARA QUATRE 0CEB CHIFFRE KANNARA CINQ 0CEC CHIFFRE KANNARA SIX 0CED CHIFFRE KANNARA SEPT 0CEE CHIFFRE KANNARA HUIT 0CEF CHIFFRE KANNARA NEUF @@ 0D00 Malayalam 0D7F 0D02 SYMBOLE MALAYALAM ANOUSVÂRA 0D03 SYMBOLE MALAYALAM VISARGA 0D05 LETTRE MALAYALAM A 0D06 LETTRE MALAYALAM  0D07 LETTRE MALAYALAM I 0D08 LETTRE MALAYALAM Î 0D09 LETTRE MALAYALAM OU 0D0A LETTRE MALAYALAM OÛ 0D0B LETTRE MALAYALAM R VOCALIQUE 0D0C LETTRE MALAYALAM L VOCALIQUE 0D0E LETTRE MALAYALAM É 0D0F LETTRE MALAYALAM Ê 0D10 LETTRE MALAYALAM AÏ 0D12 LETTRE MALAYALAM O 0D13 LETTRE MALAYALAM Ô 0D14 LETTRE MALAYALAM AOU 0D15 LETTRE MALAYALAM KA 0D16 LETTRE MALAYALAM KHA 0D17 LETTRE MALAYALAM GA 0D18 LETTRE MALAYALAM GHA 0D19 LETTRE MALAYALAM NGA 0D1A LETTRE MALAYALAM TCHA 0D1B LETTRE MALAYALAM TCHHA 0D1C LETTRE MALAYALAM DJA 0D1D LETTRE MALAYALAM DJHA 0D1E LETTRE MALAYALAM ÑA 0D1F LETTRE MALAYALAM TTA 0D20 LETTRE MALAYALAM TTHA 0D21 LETTRE MALAYALAM DDA 0D22 LETTRE MALAYALAM DDHA 0D23 LETTRE MALAYALAM NNA 0D24 LETTRE MALAYALAM TA 0D25 LETTRE MALAYALAM THA 0D26 LETTRE MALAYALAM DA 0D27 LETTRE MALAYALAM DHA 0D28 LETTRE MALAYALAM NA 0D2A LETTRE MALAYALAM PA 0D2B LETTRE MALAYALAM PHA 0D2C LETTRE MALAYALAM BA 0D2D LETTRE MALAYALAM BHA 0D2E LETTRE MALAYALAM MA 0D2F LETTRE MALAYALAM YA 0D30 LETTRE MALAYALAM RA 0D31 LETTRE MALAYALAM RRA 0D32 LETTRE MALAYALAM LA 0D33 LETTRE MALAYALAM LLA 0D34 LETTRE MALAYALAM LLLA 0D35 LETTRE MALAYALAM VA 0D36 LETTRE MALAYALAM ÇA 0D37 LETTRE MALAYALAM CHA 0D38 LETTRE MALAYALAM SA 0D39 LETTRE MALAYALAM HA 0D3E VOYELLE DIACRITIQUE MALAYALAM  0D3F VOYELLE DIACRITIQUE MALAYALAM I 0D40 VOYELLE DIACRITIQUE MALAYALAM Î 0D41 VOYELLE DIACRITIQUE MALAYALAM OU 0D42 VOYELLE DIACRITIQUE MALAYALAM OÛ 0D43 VOYELLE DIACRITIQUE MALAYALAM R VOCALIQUE 0D46 VOYELLE DIACRITIQUE MALAYALAM É 0D47 VOYELLE DIACRITIQUE MALAYALAM Ê 0D48 VOYELLE DIACRITIQUE MALAYALAM AÏ 0D49 0D4A VOYELLE DIACRITIQUE MALAYALAM O 0D4B VOYELLE DIACRITIQUE MALAYALAM Ô 0D4C VOYELLE DIACRITIQUE MALAYALAM AOU 0D4D SYMBOLE MALAYALAM VIRÂMA 0D57 SIGNE DE LONGUEUR MALAYALAM AOU 0D60 LETTRE MALAYALAM RR VOCALIQUE 0D61 LETTRE MALAYALAM LL VOCALIQUE 0D66 CHIFFRE MALAYALAM ZÉRO 0D67 CHIFFRE MALAYALAM UN 0D68 CHIFFRE MALAYALAM DEUX 0D69 CHIFFRE MALAYALAM TROIS 0D6A CHIFFRE MALAYALAM QUATRE 0D6B CHIFFRE MALAYALAM CINQ 0D6C CHIFFRE MALAYALAM SIX 0D6D CHIFFRE MALAYALAM SEPT 0D6E CHIFFRE MALAYALAM HUIT 0D6F CHIFFRE MALAYALAM NEUF @@ 0D80 Singhalais 0DFF 0D82 SYMBOLE SINGHALAIS ANOUSVÂRAYA 0D83 SYMBOLE SINGHALAIS VISARGAYA 0D85 LETTRE SINGHALAISE AYANNA 0D86 LETTRE SINGHALAISE ÂYANNA 0D87 LETTRE SINGHALAISE ÆYANNA 0D88 LETTRE SINGHALAISE ÆÆYANNA 0D89 LETTRE SINGHALAISE IYANNA 0D8A LETTRE SINGHALAISE ÎYANNA 0D8B LETTRE SINGHALAISE OUYANNA 0D8C LETTRE SINGHALAISE OÛYANNA 0D8D LETTRE SINGHALAISE IROUYANNA 0D8E LETTRE SINGHALAISE IROÛYANNA 0D8F LETTRE SINGHALAISE ILOUYANNA 0D90 LETTRE SINGHALAISE ILOÛYANNA 0D91 LETTRE SINGHALAISE ÉYANNA 0D92 LETTRE SINGHALAISE ÊYANNA 0D93 LETTRE SINGHALAISE AÏYANNA 0D94 LETTRE SINGHALAISE OYANNA 0D95 LETTRE SINGHALAISE ÔYANNA 0D96 LETTRE SINGHALAISE AOUYANNA 0D9A LETTRE SINGHALAISE ALPAPRÂNA KAYANNA 0D9B LETTRE SINGHALAISE MAHÂPRÂNA KAYANNA 0D9C LETTRE SINGHALAISE ALPAPRÂNA GAYANNA 0D9D LETTRE SINGHALAISE MAHÂPRÂNA GAYANNA 0D9E LETTRE SINGHALAISE KANTADJA NÂSIKYAYA 0D9F LETTRE SINGHALAISE SAÑAKA GAYANNA 0DA0 LETTRE SINGHALAISE ALPAPRÂNA TCHAYANNA 0DA1 LETTRE SINGHALAISE MAHÂPRÂNA TCHAYANNA 0DA2 LETTRE SINGHALAISE ALPAPRÂNA DJAYANNA 0DA3 LETTRE SINGHALAISE MAHÂPRÂNA DJAYANNA 0DA4 LETTRE SINGHALAISE TÂLOUDJA NÂSIKYAYA 0DA5 LETTRE SINGHALAISE TÂLOUDJA SANYÔGA NÂKSIKYAYA 0DA6 LETTRE SINGHALAISE SAÑAKA DJAYANNA 0DA7 LETTRE SINGHALAISE ALPAPRÂNA TTAYANNA 0DA8 LETTRE SINGHALAISE MAHÂPRÂNA TTAYANNA 0DA9 LETTRE SINGHALAISE ALPAPRÂNA DDAYANNA 0DAA LETTRE SINGHALAISE MAHÂPRÂNA DDAYANNA 0DAB LETTRE SINGHALAISE MOÛRDHADJA NAYANNA 0DAC LETTRE SINGHALAISE SAÑAKA DDAYANNA 0DAD LETTRE SINGHALAISE ALPAPRÂNA TAYANNA 0DAE LETTRE SINGHALAISE MAHÂPRÂNA TAYANNA 0DAF LETTRE SINGHALAISE ALPAPRÂNA DAYANNA 0DB0 LETTRE SINGHALAISE MAHÂPRÂNA DAYANNA 0DB1 LETTRE SINGHALAISE DANTADJA NAYANNA 0DB3 LETTRE SINGHALAISE SAÑAKA DAYANNA 0DB4 LETTRE SINGHALAISE ALPAPRÂNA PAYANNA 0DB5 LETTRE SINGHALAISE MAHÂPRÂNA PAYANNA 0DB6 LETTRE SINGHALAISE ALPAPRÂNA BAYANNA 0DB7 LETTRE SINGHALAISE MAHÂPRÂNA BAYANNA 0DB8 LETTRE SINGHALAISE MAYANNA 0DB9 LETTRE SINGHALAISE AMBA BAYANNA 0DBA LETTRE SINGHALAISE YAYANNA 0DBB LETTRE SINGHALAISE RAYANNA 0DBD LETTRE SINGHALAISE DANTADJA LAYANNA 0DC0 LETTRE SINGHALAISE VAYANNA 0DC1 LETTRE SINGHALAISE TÂLOUDJA ÇAYANNA 0DC2 LETTRE SINGHALAISE MOÛRDHADJA CHAYANNA 0DC3 LETTRE SINGHALAISE DANTADJA SAYANNA 0DC4 LETTRE SINGHALAISE HAYANNA 0DC5 LETTRE SINGHALAISE MOÛRDHADJA LAYANNA 0DC6 LETTRE SINGHALAISE FAYANNA 0DCA SYMBOLE SINGHALAIS AL-LAKOUNA 0DCF VOYELLE DIACRITIQUE SINGHALAISE ÆLA-PILLA 0DD0 VOYELLE DIACRITIQUE SINGHALAISE KÉTTI ÆDA-PILLA 0DD1 VOYELLE DIACRITIQUE SINGHALAISE DIGA ÆDA-PILLA 0DD2 VOYELLE DIACRITIQUE SINGHALAISE KÉTTI IS-PILLA 0DD3 VOYELLE DIACRITIQUE SINGHALAISE DIGA IS-PILLA 0DD4 VOYELLE DIACRITIQUE SINGHALAISE KÉTTI PÂ-PILLA 0DD6 VOYELLE DIACRITIQUE SINGHALAISE DIGA PÂ-PILLA 0DD8 VOYELLE DIACRITIQUE SINGHALAISE GÆTTA-PILLA 0DD9 VOYELLE DIACRITIQUE SINGHALAISE KOMBOUVA 0DDA VOYELLE DIACRITIQUE SINGHALAIS DIGA KOMBOUVA 0DDB VOYELLE DIACRITIQUE SINGHALAISE KOMBOU DEKA 0DDC VOYELLE DIACRITIQUE SINGHALAIS KOMBOUVA HAA ÆLA-PILLA 0DDD VOYELLE DIACRITIQUE SINGHALAISE KOMBOUVA HAA DIGA ÆLA-PILLA 0DDE VOYELLE DIACRITIQUE SINGHALAISE KOMBOUVA HAA GAYANOUKITTA 0DDF VOYELLE DIACRITIQUE SINGHALAIS GAYANOUKITTA 0DF2 VOYELLE DIACRITIQUE SINGHALAISE DIGA GÆTTA-PILLA 0DF3 VOYELLE DIACRITIQUE SINGHALAISE DIGA GAYANOUKITTA 0DF4 PONCTUATION SINGHALAISE KOUNDDALIYA @@ 0E00 Thaï 0E7F 0E01 LETTRE THAÏE KO KAÏ 0E02 LETTRE THAÏE KHO KHAÏ 0E03 LETTRE THAÏE KHO KHOUAT 0E04 LETTRE THAÏE KHO KHWAÏ 0E05 LETTRE THAÏE KHO KHON 0E06 LETTRE THAÏE KHO RAKHANG 0E07 LETTRE THAÏE NGO NGOU 0E08 LETTRE THAÏE TCHO TCHAN 0E09 LETTRE THAÏE TCHO TCHING 0E0A LETTRE THAÏE TCHO TCHANG 0E0B LETTRE THAÏE SO SO 0E0C LETTRE THAÏE TCHO TCHOÉ 0E0D LETTRE THAÏE YO YING 0E0E LETTRE THAÏE DO TCHADA 0E0F LETTRE THAÏE TO PATAK 0E10 LETTRE THAÏE THO THAN 0E11 LETTRE THAÏE THO NANGMONTHO 0E12 LETTRE THAÏE THO PHOUTHAO 0E13 LETTRE THAÏE NO NEN 0E14 LETTRE THAÏE DO DEK 0E15 LETTRE THAÏE TO TAO 0E16 LETTRE THAÏE THO THOUNG 0E17 LETTRE THAÏE THO THAHAN 0E18 LETTRE THAÏE THO THONG 0E19 LETTRE THAÏE NO NOU 0E1A LETTRE THAÏE BO BAÏMAÏ 0E1B LETTRE THAÏE PO PLA 0E1C LETTRE THAÏE PHO PHOUNG 0E1D LETTRE THAÏE FO FA 0E1E LETTRE THAÏE PHO PHAN 0E1F LETTRE THAÏE FO FAN 0E20 LETTRE THAÏE PHO SAMPHAO 0E21 LETTRE THAÏE MO MA 0E22 LETTRE THAÏE YO YAK 0E23 LETTRE THAÏE RO ROUA 0E24 LETTRE THAÏE ROU 0E25 LETTRE THAÏE LO LING 0E26 LETTRE THAÏE LOU 0E27 LETTRE THAÏE WO WËN 0E28 LETTRE THAÏE SO SALA 0E29 LETTRE THAÏE SO ROUSI 0E2A LETTRE THAÏE SO SOUA 0E2B LETTRE THAÏE HO HIP 0E2C LETTRE THAÏE LO TCHOULA 0E2D LETTRE THAÏE O ANG 0E2E LETTRE THAÏE HO NOKHOUK 0E2F LETTRE THAÏE PAÏYANNOÏ 0E30 LETTRE THAÏE SARA A 0E31 LETTRE THAÏE MAI HAN AKAT 0E32 LETTRE THAÏE SARA  0E33 LETTRE THAÏE SARA AM 0E34 LETTRE THAÏE SARA I 0E35 LETTRE THAÏE SARA Î 0E36 LETTRE THAÏE SARA OUÉ 0E37 LETTRE THAÏE SARA OUÊ 0E38 LETTRE THAÏE SARA OU 0E39 LETTRE THAÏE SARA OÛ 0E3A LETTRE THAÏE PHINTHOU 0E3F SYMBOLE MONÉTAIRE THAÏ BAHT 0E40 LETTRE THAÏE SARA É 0E41 LETTRE THAÏE SARA Ë 0E42 LETTRE THAÏE SARA O 0E43 LETTRE THAÏE SARA AÏ MAÏMOUAN 0E44 LETTRE THAÏE SARA AÏ MAÏMALAÏ 0E45 LETTRE THAÏE LAKKHANGYAO 0E46 LETTRE THAÏE MAÏYAMOK 0E47 LETTRE THAÏE MAÏTAÏKHOU 0E48 LETTRE THAÏE MAÏ EK 0E49 LETTRE THAÏE MAÏ THO 0E4A LETTRE THAÏE MAÏ TRI 0E4B LETTRE THAÏE MAÏ TCHATTAWA 0E4C LETTRE THAÏE THANTHAKHAT 0E4D LETTRE THAÏE NIKHAHIT 0E4E LETTRE THAÏE YAMAKKAN 0E4F LETTRE THAÏE FONGMAN 0E50 CHIFFRE THAÏ ZÉRO 0E51 CHIFFRE THAÏ UN 0E52 CHIFFRE THAÏ DEUX 0E53 CHIFFRE THAÏ TROIS 0E54 CHIFFRE THAÏ QUATRE 0E55 CHIFFRE THAÏ CINQ 0E56 CHIFFRE THAÏ SIX 0E57 CHIFFRE THAÏ SEPT 0E58 CHIFFRE THAÏ HUIT 0E59 CHIFFRE THAÏ NEUF 0E5A CARACTÈRE THAÏ ANGKHANKHOU 0E5B CARACTÈRE THAÏ KHOMOUT @@ 0E80 Lao 0EFF 0E81 LETTRE LAOTIENNE KO 0E82 LETTRE LAOTIENNE KHO SOUNG 0E84 LETTRE LAOTIENNE KHO TAM 0E87 LETTRE LAOTIENNE NGO 0E88 LETTRE LAOTIENNE TCHO 0E8A LETTRE LAOTIENNE SO TAM 0E8D LETTRE LAOTIENNE ÑO 0E94 LETTRE LAOTIENNE DO 0E95 LETTRE LAOTIENNE TO 0E96 LETTRE LAOTIENNE THO SOUNG 0E97 LETTRE LAOTIENNE THO TAM 0E99 LETTRE LAOTIENNE NO 0E9A LETTRE LAOTIENNE BO 0E9B LETTRE LAOTIENNE PO 0E9C LETTRE LAOTIENNE PHO SOUNG 0E9D LETTRE LAOTIENNE FO TAM 0E9E LETTRE LAOTIENNE PHO TAM 0E9F LETTRE LAOTIENNE FO SOUNG 0EA1 LETTRE LAOTIENNE MO 0EA2 LETTRE LAOTIENNE YO 0EA3 LETTRE LAOTIENNE LO LING 0EA5 LETTRE LAOTIENNE LO LOUT 0EA7 LETTRE LAOTIENNE WO 0EAA LETTRE LAOTIENNE SO SOUNG 0EAB LETTRE LAOTIENNE HO SOUNG 0EAD LETTRE LAOTIENNE O 0EAE LETTRE LAOTIENNE HO TAM 0EAF POINTS DE SUSPENSION LAOTIENS 0EB0 VOYELLE DIACRITIQUE LAOTIENNE A 0EB1 VOYELLE DIACRITIQUE LAOTIENNE MAÏ KAN 0EB2 VOYELLE DIACRITIQUE LAOTIENNE  0EB3 VOYELLE DIACRITIQUE LAOTIENNE AM 0EB4 VOYELLE DIACRITIQUE LAOTIENNE I 0EB5 VOYELLE DIACRITIQUE LAOTIENNE Î 0EB6 VOYELLE DIACRITIQUE LAOTIENNE U 0EB7 VOYELLE DIACRITIQUE LAOTIENNE UU 0EB8 VOYELLE DIACRITIQUE LAOTIENNE OU 0EB9 VOYELLE DIACRITIQUE LAOTIENNE OÛ 0EBB VOYELLE DIACRITIQUE LAOTIENNE MAÏ KON 0EBC DEMI-VOYELLE DIACRITIQUE LAOTIENNE LO 0EBD DEMI-VOYELLE DIACRITIQUE LAOTIENNE ÑO 0EC0 VOYELLE DIACRITIQUE LAOTIENNE É 0EC1 VOYELLE DIACRITIQUE LAOTIENNE Ê 0EC2 VOYELLE DIACRITIQUE LAOTIENNE O 0EC3 VOYELLE DIACRITIQUE LAOTIENNE AY 0EC4 VOYELLE DIACRITIQUE LAOTIENNE AÏ 0EC6 SYMBOLE LAOTIEN KO LA 0EC8 MARQUE DE TON LAOTIEN MAÏ ÉK 0EC9 MARQUE DE TON LAOTIEN MAÏ THO 0ECA MARQUE DE TON LAOTIEN MAÏ TI 0ECB MARQUE DE TON LAOTIEN MA TCHATAWA 0ECC SIGNE D'ANNULATION LAOTIEN 0ECD SYMBOLE LAOTIEN NIGGAHITA 0ED0 CHIFFRE LAOTIEN ZÉRO 0ED1 CHIFFRE LAOTIEN UN 0ED2 CHIFFRE LAOTIEN DEUX 0ED3 CHIFFRE LAOTIEN TROIS 0ED4 CHIFFRE LAOTIEN QUATRE 0ED5 CHIFFRE LAOTIEN CINQ 0ED6 CHIFFRE LAOTIEN SIX 0ED7 CHIFFRE LAOTIEN SEPT 0ED8 CHIFFRE LAOTIEN HUIT 0ED9 CHIFFRE LAOTIEN NEUF 0EDC SYMBOLE LAOTIEN HO NO 0EDD SYMBOLE LAOTIEN HO MO @@ 0F00 Tibétain 0FFF 0F00 SYLLABE TIBÉTAINE OM 0F01 SIGNE TIBÉTAIN GTER YIG MGO A TRONQUÉ (ter yik go a t'oung) 0F02 SIGNE TIBÉTAIN GTER YIG MGO 'UM RNAM BCAD MA (ter yik go woum nam tché ma) 0F03 SIGNE TIBÉTAIN GTER YIG MGO 'UM GTER TSHEG MA (ter yik go woum ter ts'ek ma) 0F04 SIGNE TIBÉTAIN YIG MGO MDUN MA OUVRANT (yik go dun ma) 0F05 SIGNE TIBÉTAIN YIG MGO SGAB MA FERMANT (yik go kab ma) 0F06 SIGNE TIBÉTAIN D'INSERTION YIG MGO PHUR SHAD MA (yik go p'our ché ma) 0F07 SIGNE TIBÉTAIN YIG MGO TSHEG SHAD MA (yik go ts'ek chè ma) 0F08 SIGNE TIBÉTAIN SBROUL SHAD (trul chè) 0F09 SIGNE TIBÉTAIN BSKUR YIG MGO (kour yik go) 0F0A SIGNE TIBÉTAIN BKA' SHOG YIG MGO (ka cho yik go) 0F0B SIGNE TIBÉTAIN INTERSYLLABIQUE TSHEG (ts'ek) 0F0C SIGNE DÉLIMITEUR TIBÉTAIN TSHEG BSTAR (ts'ek tar) 0F0D SIGNE TIBÉTAIN SHAD (ché) 0F0E SIGNE TIBÉTAIN ÑIS SHAD (ñi ché) 0F0F SIGNE TIBÉTAIN TSHEG SHAD (ts'ek ché) 0F10 SIGNE TIBÉTAIN ÑIS TSHEG SHAD (ñi ts'ek ché) 0F11 SIGNE TIBÉTAIN RIN CHEN SPUNGS SHAD (rine tch'ène poung ché) 0F12 SIGNE TIBÉTAIN RGYA GRAM SHAD (gya tram ché) 0F13 SIGNE TIBÉTAIN D'INSERTION DZUD RTAGS ME LONG TCHAN (dzu ta mé long tchène) 0F14 SIGNE TIBÉTAIN GTER TSHEG (ter ts'ek) 0F15 LOGOTYPE TIBETAIN CHAD RTAGS (tch'é ta) 0F16 LOGOTYPE TIBÉTAIN LHAG RTAGS (hlak ta) 0F17 SIGNE TIBÉTAIN ASTROLOGIQUE SGRA GCAN 'CHAR RTAGS (tra tchène tch'ar ta) 0F18 SIGNE TIBÉTAIN ASTROLOGIQUE 'KHYUD PA (kyu pa) 0F19 SIGNE TIBÉTAIN ASTROLOGIQUE SDONG TSHUGS (dong tsou) 0F1A SIGNE TIBÉTAIN RDEL DKAR GCIG (dé ka tchig) 0F1B SIGNE TIBÉTAIN RDEL DKAR GÑIS (dé ka ñi) 0F1C SIGNE TIBÉTAIN RDEL DKAR GSUM (dé ka soum) 0F1D SIGNE TIBÉTAIN RDEL NAG GCIG (dé na tchig) 0F1E SIGNE TIBÉTAIN RDEL NAG GÑIS (dé na ñi) 0F1F SIGNE TIBÉTAIN RDEL DKAR RDEL NAG (dé ka dé na) 0F20 CHIFFRE TIBÉTAIN ZÉRO 0F21 CHIFFRE TIBÉTAIN UN 0F22 CHIFFRE TIBÉTAIN DEUX 0F23 CHIFFRE TIBÉTAIN TROIS 0F24 CHIFFRE TIBÉTAIN QUATRE 0F25 CHIFFRE TIBÉTAIN CINQ 0F26 CHIFFRE TIBÉTAIN SIX 0F27 CHIFFRE TIBÉTAIN SEPT 0F28 CHIFFRE TIBÉTAIN HUIT 0F29 CHIFFRE TIBÉTAIN NEUF 0F2A CHIFFRE TIBÉTAIN UN MOINS UN DEMI 0F2B CHIFFRE TIBÉTAIN DEUX MOINS UN DEMI 0F2C CHIFFRE TIBÉTAIN TROIS MOINS UN DEMI 0F2D CHIFFRE TIBÉTAIN QUATRE MOINS UN DEMI 0F2E CHIFFRE TIBÉTAIN CINQ MOINS UN DEMI 0F2F CHIFFRE TIBÉTAIN SIX MOINS UN DEMI 0F30 CHIFFRE TIBÉTAIN SEPT MOINS UN DEMI 0F31 CHIFFRE TIBÉTAIN HUIT MOINS UN DEMI 0F32 CHIFFRE TIBÉTAIN NEUF MOINS UN DEMI 0F33 CHIFFRE TIBÉTAIN ZÉRO MOINS UN DEMI 0F34 SIGNE TIBÉTAIN BSDUS RTAGS (du ta) 0F35 SIGNE TIBÉTAIN NGAS BZUNG ÑI ZLA (ngé zoung ñi da) 0F36 SIGNE TIBÉTAIN D'INSERTION DZUD RTAGS BZHI MIG CAN (dzu ta chi mig tchène) 0F37 SIGNE TIBÉTAIN NGAS BZUNG SGOR RTAGS (ngé zoung gor ta) 0F38 SIGNE TIBÉTAIN CHE MGO (tch'é go) 0F39 SIGNE TIBÉTAIN TSA 'PHRU (tsa trou) 0F3A SIGNE TIBÉTAIN GUG RTAGS GYON (goug ta yeun) 0F3B SIGNE TIBÉTAIN GUG RTAGS GYAS (goug ta yé) 0F3C SIGNE TIBÉTAIN ANG KHANG GYON (ang kang yeun) 0F3D SIGNE TIBÉTAIN ANG KHANG GYAS (ang kang yé) 0F3E SIGNE TIBÉTAIN YAR TSHES (yar ts'e) 0F3F SIGNE TIBÉTAIN MAR TSHES (mar ts'e) 0F40 LETTRE TIBÉTAINE KA 0F41 LETTRE TIBÉTAINE KHA (k'a) 0F42 LETTRE TIBÉTAINE GA 0F43 LETTRE TIBÉTAINE GHA (g'a) 0F44 LETTRE TIBÉTAINE NGA 0F45 LETTRE TIBÉTAINE CA (tcha) 0F46 LETTRE TIBÉTAINE CHA (tch'a) 0F47 LETTRE TIBÉTAINE JA (dja) 0F49 LETTRE TIBÉTAINE ÑA 0F4A LETTRE TIBÉTAINE TTA 0F4B LETTRE TIBÉTAINE TTHA (tt'a) 0F4C LETTRE TIBÉTAINE DDA 0F4D LETTRE TIBÉTAINE DDHA (ddha) 0F4E LETTRE TIBÉTAINE NNA 0F4F LETTRE TIBÉTAINE TA 0F50 LETTRE TIBÉTAINE THA (t'a) 0F51 LETTRE TIBÉTAINE DA (ta) 0F52 LETTRE TIBÉTAINE DHA (d'a) 0F53 LETTRE TIBÉTAINE NA 0F54 LETTRE TIBÉTAINE PA 0F55 LETTRE TIBÉTAINE PHA (p'a) 0F56 LETTRE TIBÉTAINE BA 0F57 LETTRE TIBÉTAINE BHA (b'a) 0F58 LETTRE TIBÉTAINE MA 0F59 LETTRE TIBÉTAINE TSA 0F5A LETTRE TIBÉTAINE TSHA (ts'a) 0F5B LETTRE TIBÉTAINE DZA 0F5C LETTRE TIBÉTAINE DZHA (dz'a) 0F5D LETTRE TIBÉTAINE WA (oua) 0F5E LETTRE TIBÉTAINE ZHA (z'a) 0F5F LETTRE TIBÉTAINE ZA (sa) 0F60 LETTRE TIBÉTAINE 'A 0F61 LETTRE TIBÉTAINE YA 0F62 LETTRE TIBÉTAINE RA 0F63 LETTRE TIBÉTAINE LA 0F64 LETTRE TIBÉTAINE SHA (ça) 0F65 LETTRE TIBÉTAINE SSA (cha) 0F66 LETTRE TIBÉTAINE SA 0F67 LETTRE TIBÉTAINE HA 0F68 LETTRE TIBÉTAINE A 0F69 LETTRE TIBÉTAINE KSSA 0F6A LETTRE TIBÉTAINE RA À FORME FIXE * 0F71 VOYELLE DIACRITIQUE TIBÉTAINE  0F72 VOYELLE DIACRITIQUE TIBÉTAINE I 0F73 VOYELLE DIACRITIQUE TIBÉTAINE Î 0F74 VOYELLE DIACRITIQUE TIBÉTAINE OU 0F75 VOYELLE DIACRITIQUE TIBÉTAINE OÛ 0F76 VOYELLE DIACRITIQUE TIBÉTAINE R VOCALIQUE 0F77 VOYELLE DIACRITIQUE TIBÉTAINE RR VOCALIQUE 0F78 VOYELLE DIACRITIQUE TIBÉTAINE L VOCALIQUE 0F79 VOYELLE DIACRITIQUE TIBÉTAINE LL VOCALIQUE 0F7A VOYELLE DIACRITIQUE TIBÉTAINE É 0F7B VOYELLE DIACRITIQUE TIBÉTAINE Ê 0F7C VOYELLE DIACRITIQUE TIBÉTAINE O 0F7D VOYELLE DIACRITIQUE TIBÉTAINE Ô 0F7E SIGNE TIBÉTAIN RJES SO NGA RO (djé sou nga ro) 0F7F SIGNE TIBÉTAIN RNAM BCAD (nam tché) 0F80 VOYELLE DIACRITIQUE I RÉFLÉCHI 0F81 VOYELLE DIACRITIQUE Î RÉFLÉCHI 0F82 SIGNE TIBÉTAIN ÑI ZLA N DA (ñi da na da) 0F83 SIGNE TIBÉTAIN SNA LDAN (nan dé) 0F84 SIGNE TIBÉTAIN HALANTA 0F85 SIGNE TIBÉTAIN PALUTA (palouta) 0F86 SIGNE TIBÉTAIN LCI RTAGS (dji ta) 0F87 SIGNE TIBÉTAIN YANG RTAGS (yang ta) 0F88 SIGNE TIBÉTAIN LCE TSA CAN (tché tsa tchène) 0F89 SIGNE TIBÉTAIN MCHU CAN (tch'ou tchène) 0F8A SIGNE TIBÉTAIN GRU CAN RGYINGS (trou tchène guing) 0F8B SIGNE TIBÉTAIN GRU MED RGYINGS (trou mé guing) 0F90 LETTRE TIBÉTAINE KA SUBJOINTE 0F91 LETTRE TIBÉTAINE KHA SUBJOINTE (k'a subjointe) 0F92 LETTRE TIBÉTAINE GA SUBJOINTE 0F93 LETTRE TIBÉTAINE GHA SUBJOINTE (g'a subjointe) 0F94 LETTRE TIBÉTAINE NGA SUBJOINTE 0F95 LETTRE TIBÉTAINE CA SUBJOINTE (tcha subjointe) 0F96 LETTRE TIBÉTAINE CHA SUBJOINTE (tch'a subjointe) 0F97 LETTRE TIBÉTAINE JA SUBJOINTE (dja subjointe) 0F99 LETTRE TIBÉTAINE ÑASUBJOINTE 0F9A LETTRE TIBÉTAINE TTA SUBJOINTE 0F9B LETTRE TIBÉTAINE TTHA SUBJOINTE (ttha subjointe) 0F9C LETTRE TIBÉTAINE DDA SUBJOINTE 0F9D LETTRE TIBÉTAINE DDHA SUBJOINTE (dd'a subjointe) 0F9E LETTRE TIBÉTAINE NNA SUBJOINTE 0F9F LETTRE TIBÉTAINE TA SUBJOINTE 0FA0 LETTRE TIBÉTAINE THA SUBJOINTE (t'a subjointe) 0FA1 LETTRE TIBÉTAINE DA SUBJOINTE 0FA2 LETTRE TIBÉTAINE DHA SUBJOINTE (d'a subjointe) 0FA3 LETTRE TIBÉTAINE NA SUBJOINTE 0FA4 LETTRE TIBÉTAINE PA SUBJOINTE 0FA5 LETTRE TIBÉTAINE PHA SUBJOINTE (p'a subjointe) 0FA6 LETTRE TIBÉTAINE BA SUBJOINTE 0FA7 LETTRE TIBÉTAINE BHA SUBJOINTE (b'a subjointe) 0FA8 LETTRE TIBÉTAINE MA SUBJOINTE 0FA9 LETTRE TIBÉTAINE TSA SUBJOINTE 0FAA LETTRE TIBÉTAINE TSHA SUBJOINTE (ts'a subjointe) 0FAB LETTRE TIBÉTAINE DZA SUBJOINTE 0FAC LETTRE TIBÉTAINE DZHA SUBJOINTE (dz'a subjointe) 0FAD LETTRE TIBÉTAINE WA SUBJOINTE (oua subjointe) * 0FAE LETTRE TIBÉTAINE ZHA SUBJOINTE (z'a subjointe) 0FAF LETTRE TIBÉTAINE ZA SUBJOINTE (za subjointe) 0FB0 LETTRE TIBÉTAINE 'A SUBJOINTE 0FB1 LETTRE TIBÉTAINE YA SUBJOINTE * 0FB2 LETTRE TIBÉTAINE RA SUBJOINTE * 0FB3 LETTRE TIBÉTAINE LA SUBJOINTE 0FB4 LETTRE TIBÉTAINE SHA UBJOINTE (ça subjointe) 0FB5 LETTRE TIBÉTAINE SSA SUBJOINTE (cha subjointe) 0FB6 LETTRE TIBÉTAINE SA SUBJOINTE 0FB7 LETTRE TIBÉTAINE HA SUBJOINTE 0FB8 LETTRE TIBÉTAINE A SUBJOINTE 0FB9 LETTRE TIBÉTAINE KSSA SUBJOINTE KSSA 0FBA LETTRE TIBÉTAINE WA SUBJOINTE À FORME FIXE (oua subjointe à forme fixe) 0FBB LETTRE TIBÉTAINE SUBJOINTE YA À FORME FIXE 0FBC LETTRE TIBÉTAINE SUBJOINTE RA À FORME FIXE 0FBE SIGNE TIBÉTAIN KU RU KHA (kourouk'a) 0FBF SIGNE TIBÉTAIN KU RU KHA BZHI MIG CAN (kourouk'a chi mik tchène) 0FC0 SIGNE TIBÉTAIN DE CANTILATION TEMPS FORT 0FC1 SIGNE TIBÉTAIN DE CANTILATION TEMPS FAIBLE 0FC2 SIGNE TIBÉTAIN DE CANTILATION CANG TE'U (tchang tyou) 0FC3 SIGN TIBÉTAIN DE CANTILATION SBUB C'HAL (boub tché) 0FC4 SYMBOLE TIBÉTAIN DRIL BU (drilbou) 0FC5 SYMBOLE TIBÉTAIN RDO RJE (dordjé) 0FC6 SYMBOLE TIBÉTAIN PADMA GDAN (pé ma dène) 0FC7 SYMBOLE TIBÉTAIN RDO RJE RGYA GRAM (dordjé gya dram) 0FC8 SYMBOLE TIBÉTAIN PHUR PA (p'ourba) 0FC9 SYMBOLE TIBÉTAIN NOR BU (norbou) 0FCA SYMBOLE TIBÉTAIN NOR BU ÑIS 'KHYIL (norbou ñi khyi) 0FCB SYMBOLE TIBÉTAIN NOR BU GSUM 'KHYÌL (norbou soum khyi) 0FCC SYMBOLE TIBÉTAIN NOR BO BCHI 'KHYÌL (norbou chi khyi) 0FCF SIGNE TIBÉTAIN RDEL NAG GSUM (dé na soum) @@ 1000 Birman 109F 1000 LETTRE BIRMANE KA 1001 LETTRE BIRMANE KHA 1002 LETTRE BIRMANE GA 1003 LETTRE BIRMANE GHA 1004 LETTRE BIRMANE NGA 1005 LETTRE BIRMANE TCHA 1006 LETTRE BIRMANE TCHHA 1007 LETTRE BIRMANE DJA 1008 LETTRE BIRMANE DJHA 1009 LETTRE BIRMANE ÑA 100A LETTRE BIRMANE ÑÑA 100B LETTRE BIRMANE TTA 100C LETTRE BIRMANE TTHA 100D LETTRE BIRMANE DDA 100E LETTRE BIRMANE DDHA 100F LETTRE BIRMANE NNA 1010 LETTRE BIRMANE TA 1011 LETTRE BIRMANE THA 1012 LETTRE BIRMANE DA 1013 LETTRE BIRMANE DHA 1014 LETTRE BIRMANE NA 1015 LETTRE BIRMANE PA 1016 LETTRE BIRMANE PHA 1017 LETTRE BIRMANE BA 1018 LETTRE BIRMANE BHA 1019 LETTRE BIRMANE MA 101A LETTRE BIRMANE YA 101B LETTRE BIRMANE RA 101C LETTRE BIRMANE LA 101D LETTRE BIRMANE WA 101E LETTRE BIRMANE SA 101F LETTRE BIRMANE HA 1020 LETTRE BIRMANE LLA 1021 LETTRE BIRMANE  1023 LETTRE BIRMANE I 1024 LETTRE BIRMANE Î 1025 LETTRE BIRMANE OU 1026 LETTRE BIRMANE OÛ 1027 LETTRE BIRMANE É 1029 LETTRE BIRMANE O 102A LETTRE BIRMANE AOU 102C VOYELLE DIACRITIQUE BIRMANE  102D VOYELLE DIACRITIQUE BIRMANE I 102E VOYELLE DIACRITIQUE BIRMANE Î 102F VOYELLE DIACRITIQUE BIRMANE OU 1030 VOYELLE DIACRITIQUE BIRMANE OÛ 1031 VOYELLE DIACRITIQUE BIRMANE É 1032 VOYELLE DIACRITIQUE BIRMANE AÏ 1036 SYMBOLE BIRMAN ANOUSVÂRA 1037 POINT SOUSCRIT BIRMAN 1038 VISARGA BIRMAN 1039 SYMBOLE BIRMAN VIRÂMA 1040 CHIFFRE BIRMAN ZÉRO 1041 CHIFFRE BIRMAN UN 1042 CHIFFRE BIRMAN DEUX 1043 CHIFFRE BIRMAN TROIS 1044 CHIFFRE BIRMAN QUATRE 1045 CHIFFRE BIRMAN CINQ 1046 CHIFFRE BIRMAN SIX 1047 CHIFFRE BIRMAN SEPT 1048 CHIFFRE BIRMAN HUIT 1049 CHIFFRE BIRMAN NEUF 104A SIGNE BIRMAN PETITE SECTION (temps d'arrêt) 104B SIGNE BIRMAN SECTION (point) 104C SYMBOLE BIRMAN LOCATIF 104D SYMBOLE BIRMAN ACCOMPLI 104E SYMBOLE BIRMAN LEDIT 104F SYMBOLE BIRMAN GÉNITIF 1050 LETTRE BIRMANE ÇA 1051 LETTRE BIRMANE CHA 1052 LETTRE BIRMANE R VOCALIQUE 1053 LETTRE BIRMANE RR VOCALIQUE 1054 LETTRE BIRMANE L VOCALIQUE 1055 LETTRE BIRMANE LL VOCALIQUE 1056 VOYELLE DIACRITIQUE BIRMANE R VOCALIQUE 1057 VOYELLE DIACRITIQUE BIRMANE RR VOCALIQUE 1058 VOYELLE DIACRITIQUE BIRMANE L VOCALIQUE 1059 VOYELLE DIACRITIQUE BIRMANE LL VOCALIQUE @@ 10A0 Géorgien 10FF 10A0 LETTRE GÉORGIENNE ASSOMTAVROULI AN 10A1 LETTRE GÉORGIENNE ASSOMTAVROULI BAN 10A2 LETTRE GÉORGIENNE ASSOMTAVROULI GAN 10A3 LETTRE GÉORGIENNE ASSOMTAVROULI DON 10A4 LETTRE GÉORGIENNE ASSOMTAVROULI ÈN 10A5 LETTRE GÉORGIENNE ASSOMTAVROULI VIN 10A6 LETTRE GÉORGIENNE ASSOMTAVROULI ZÉN 10A7 LETTRE GÉORGIENNE ASSOMTAVROULI THAN 10A8 LETTRE GÉORGIENNE ASSOMTAVROULI IN 10A9 LETTRE GÉORGIENNE ASSOMTAVROULI K'AN 10AA LETTRE GÉORGIENNE ASSOMTAVROULI LASS 10AB LETTRE GÉORGIENNE ASSOMTAVROULI MAN 10AC LETTRE GÉORGIENNE ASSOMTAVROULI NAR 10AD LETTRE GÉORGIENNE ASSOMTAVROULI ON 10AE LETTRE GÉORGIENNE ASSOMTAVROULI P'AR 10AF LETTRE GÉORGIENNE ASSOMTAVROULI JAN 10B0 LETTRE GÉORGIENNE ASSOMTAVROULI RAÉ 10B1 LETTRE GÉORGIENNE ASSOMTAVROULI SAN 10B2 LETTRE GÉORGIENNE ASSOMTAVROULI T'AR 10B3 LETTRE GÉORGIENNE ASSOMTAVROULI OUN 10B4 LETTRE GÉORGIENNE ASSOMTAVROULI PHAR 10B5 LETTRE GÉORGIENNE ASSOMTAVROULI KHAR 10B6 LETTRE GÉORGIENNE ASSOMTAVROULI GHAN 10B7 LETTRE GÉORGIENNE ASSOMTAVROULI Q'AR 10B8 LETTRE GÉORGIENNE ASSOMTAVROULI CHIN 10B9 LETTRE GÉORGIENNE ASSOMTAVROULI TCHIN 10BA LETTRE GÉORGIENNE ASSOMTAVROULI TSIN 10BB LETTRE GÉORGIENNE ASSOMTAVROULI DZIL 10BC LETTRE GÉORGIENNE ASSOMTAVROULI TS'IL 10BD LETTRE GÉORGIENNE ASSOMTAVROULI TCH'AR 10BE LETTRE GÉORGIENNE ASSOMTAVROULI KHAN 10BF LETTRE GÉORGIENNE ASSOMTAVROULI DJAN 10C0 LETTRE GÉORGIENNE ASSOMTAVROULI HAË 10C1 LETTRE GÉORGIENNE ASSOMTAVROULI ËE 10C2 LETTRE GÉORGIENNE ASSOMTAVROULI IËN 10C3 LETTRE GÉORGIENNE ASSOMTAVROULI VIË 10C4 LETTRE GÉORGIENNE ASSOMTAVROULI H'AR 10C5 LETTRE GÉORGIENNE ASSOMTAVROULI HOË 10D0 LETTRE GÉORGIENNE MKHEDROULI AN 10D1 LETTRE GÉORGIENNE MKHEDROULI BAN 10D2 LETTRE GÉORGIENNE MKHEDROULI GAN 10D3 LETTRE GÉORGIENNE MKHEDROULI DON 10D4 LETTRE GÉORGIENNE MKHEDROULI ÈNI 10D5 LETTRE GÉORGIENNE MKHEDROULI VIN 10D6 LETTRE GÉORGIENNE MKHEDROULI ZÉN 10D7 LETTRE GÉORGIENNE MKHEDROULI THAN 10D8 LETTRE GÉORGIENNE MKHEDROULI IN 10D9 LETTRE GÉORGIENNE MKHEDROULI K'AN 10DA LETTRE GÉORGIENNE MKHEDROULI LASS 10DB LETTRE GÉORGIENNE MKHEDROULI MAN 10DC LETTRE GÉORGIENNE MKHEDROULI NAR 10DD LETTRE GÉORGIENNE MKHEDROULI ON 10DE LETTRE GÉORGIENNE MKHEDROULI PAR 10DF LETTRE GÉORGIENNE MKHEDROULI JAN 10E0 LETTRE GÉORGIENNE MKHEDROULI RAE 10E1 LETTRE GÉORGIENNE MKHEDROULI SAN 10E2 LETTRE GÉORGIENNE MKHEDROULI T'AR 10E3 LETTRE GÉORGIENNE MKHEDROULI OUN 10E4 LETTRE GÉORGIENNE MKHEDROULI PHAR 10E5 LETTRE GÉORGIENNE MKHEDROULI KHAR 10E6 LETTRE GÉORGIENNE MKHEDROULI GHAN 10E7 LETTRE GÉORGIENNE MKHEDROULI Q'AR 10E8 LETTRE GÉORGIENNE MKHEDROULI CHIN 10E9 LETTRE GÉORGIENNE MKHEDROULI TCHIN 10EA LETTRE GÉORGIENNE MKHEDROULI TSIN 10EB LETTRE GÉORGIENNE MKHEDROULI DZIL 10EC LETTRE GÉORGIENNE MKHEDROULI TS'IL 10ED LETTRE GÉORGIENNE MKHEDROULI TCH'AR 10EE LETTRE GÉORGIENNE MKHEDROULI KHAN 10EF LETTRE GÉORGIENNE MKHEDROULI DJAN 10F0 LETTRE GÉORGIENNE MKHEDROULI HAË 10F1 LETTRE GÉORGIENNE MKHEDROULI ËE 10F2 LETTRE GÉORGIENNE MKHEDROULI IËN 10F3 LETTRE GÉORGIENNE MKHEDROULI VIË 10F4 LETTRE GÉORGIENNE MKHEDROULI H'AR 10F5 LETTRE GÉORGIENNE MKHEDROULI HOË 10F6 LETTRE GÉORGIENNE MKHEDROULI FI 10FB SÉPARATEUR DE PARAGRAPHES GÉORGIEN @@ 1100 Jamos hangûl 11FF 1100 HANGÛL TCH'ÔSONG KIYOK (k) * 1101 HANGÛL TCH'ÔSONG SSANGKIYOK (kk) * 1102 HANGÛL TCH'ÔSONG NIÛN (n) * 1103 HANGÛL TCH'ÔSONG TIKÛT (t) * 1104 HANGÛL TCH'ÔSONG SSANGTIKÛT (tt) * 1105 HANGÛL TCH'ÔSONG RIÛL (l) * 1106 HANGÛL TCH'ÔSONG MIÛM (m) * 1107 HANGÛL TCH'ÔSONG PIÛP (p) * 1108 HANGÛL TCH'ÔSONG SSANGPIÛP (pp) * 1109 HANGÛL TCH'ÔSONG SIÔS (s) * 110A HANGÛL TCH'ÔSONG SSANGSIÔS (ss) * 110B HANGÛL TCH'ÔSONG IÛNG 110C HANGÛL TCH'ÔSONG TCHIÛTCH (tch) * 110D HANGÛL TCH'ÔSONG SSANGTCHIÛTCH (tchtch) * 110E HANGÛL TCH'ÔSONG TCH'IÛTCH' (tch') * 110F HANGÛL TCH'ÔSONG K'IÛK' (k') * 1110 HANGÛL TCH'ÔSONG T'IÛT' (t') * 1111 HANGÛL TCH'ÔSONG P'IÛP' (p') * 1112 HANGÛL TCH'ÔSONG HIÛH (h) * 1113 HANGÛL TCH'ÔSONG NIÛN-KIYOK 1114 HANGÛL TCH'ÔSONG SSANGNIÛN 1115 HANGÛL TCH'ÔSONG NIÛN-TIKÛT 1116 HANGÛL TCH'ÔSONG NIÛN-PIÛP 1117 HANGÛL TCH'ÔSONG TIKÛT-KIYOK 1118 HANGÛL TCH'ÔSONG RIÛL-NIÛN 1119 HANGÛL TCH'ÔSONG SSANGRIÛL 111A HANGÛL TCH'ÔSONG RIÛL-HIÛH 111B HANGÛL TCH'ÔSONG KAPYO-OUNRIÛL 111C HANGÛL TCH'ÔSONG MIÛM-PIÛP 111D HANGÛL TCH'ÔSONG KAPYO-OUNMIÛM 111E HANGÛL TCH'ÔSONG PIÛP-KIYOK 111F HANGÛL TCH'ÔSONG PIÛP-NIÛN 1120 HANGÛL TCH'ÔSONG PIÛP-TIKÛT 1121 HANGÛL TCH'ÔSONG PIÛP-SIÔS 1122 HANGÛL TCH'ÔSONG PIÛP-SIÔS-KIYOK 1123 HANGÛL TCH'ÔSONG PIÛP-SIÔS-TIKÛT 1124 HANGÛL TCH'ÔSONG PIÛP-SIÔS-PIÛP 1125 HANGÛL TCH'ÔSONG PIÛP-SSANGSIÔS 1126 HANGÛL TCH'ÔSONG PIÛP-SIÔS-TCHIÛTCH 1127 HANGÛL TCH'ÔSONG PIÛP-TCHIÛTCH 1128 HANGÛL TCH'ÔSONG PIÛP-TCH'IÛTCH' 1129 HANGÛL TCH'ÔSONG PIÛP-T'IÛT' 112A HANGÛL TCH'ÔSONG PIÛP-P'IÛP' 112B HANGÛL TCH'ÔSONG KAPYO-OUNPIÛP 112C HANGÛL TCH'ÔSONG KAPYO-OUNSSANGPIÛP 112D HANGÛL TCH'ÔSONG SIÔS-KIYOK 112E HANGÛL TCH'ÔSONG SIÔS-NIÛN 112F HANGÛL TCH'ÔSONG SIÔS-TIKÛT 1130 HANGÛL TCH'ÔSONG SIÔS-RIÛL 1131 HANGÛL TCH'ÔSONG SIÔS-MIÛM 1132 HANGÛL TCH'ÔSONG SIÔS-PIÛP 1133 HANGÛL TCH'ÔSONG SIÔS-PIÛP-KIYOK 1134 HANGÛL TCH'ÔSONG SIÔS-SSANGSIÔS 1135 HANGÛL TCH'ÔSONG SIÔS-IÛNG 1136 HANGÛL TCH'ÔSONG SIÔS-TCHIÛTCH 1137 HANGÛL TCH'ÔSONG SIÔS-TCH'IÛTCH' 1138 HANGÛL TCH'ÔSONG SIÔS-K'IÛK' 1139 HANGÛL TCH'ÔSONG SIÔS-T'IÛT' 113A HANGÛL TCH'ÔSONG SIÔS-P'IÛP' 113B HANGÛL TCH'ÔSONG SIÔS-HIÛH 113C HANGÛL TCH'ÔSONG TCH'ITOUÛMSIÔS 113D HANGÛL TCH'ÔSONG TCH'ITOUÛMSSANGSIÔS 113E HANGÛL TCH'ÔSONG TCHONGTCH'IÛMSIÔS 113F HANGÛL TCH'ÔSONG TCHONGTCH'IÛMSSANGSIÔS 1140 HANGÛL TCH'ÔSONG PANSIÔS 1141 HANGÛL TCH'ÔSONG IÛNG-KIYOK 1142 HANGÛL TCH'ÔSONG IÛNG-TIKÛT 1143 HANGÛL TCH'ÔSONG IÛNG-MIÛM 1144 HANGÛL TCH'ÔSONG IÛNG-PIÛP 1145 HANGÛL TCH'ÔSONG IÛNG-SIÔS 1146 HANGÛL TCH'ÔSONG IÛNG-PANSIÔS 1147 HANGÛL TCH'ÔSONG SSANGIÛNG 1148 HANGÛL TCH'ÔSONG IÛNG-TCHIÛTCH 1149 HANGÛL TCH'ÔSONG IÛNG-TCH'IÛTCH' 114A HANGÛL TCH'ÔSONG IÛNG-T'IÛT' 114B HANGÛL TCH'ÔSONG IÛNG-P'IÛP' 114C HANGÛL TCH'ÔSONG YESIÛNG 114D HANGÛL TCH'ÔSONG TCHIÛTCH-IÛNG 114E HANGÛL TCH'ÔSONG TCH'ITOUÛMTCHIÛTCH 114F HANGÛL TCH'ÔSONG TCH'ITOUÛMSSANGTCHIÛTCH 1150 HANGÛL TCH'ÔSONG TCHONGTCH'IÛMTCHIÛTCH 1151 HANGÛL TCH'ÔSONG TCHONGTCH'IÛMSSANGTCHIÛTCH 1152 HANGÛL TCH'ÔSONG TCH'IÛTCH'-K'IÛK' 1153 HANGÛL TCH'ÔSONG TCH'IÛTCH'-HIÛH 1154 HANGÛL TCH'ÔSONG TCH'ITOUÛMTCH'IÛTCH' 1155 HANGÛL TCH'ÔSONG TCHONGTCH'IÛMTCH'IÛTCH' 1156 HANGÛL TCH'ÔSONG P'IÛP'-PIÛP 1157 HANGÛL TCH'ÔSONG KAPYO-OUNP'IÛP' 1158 HANGÛL TCH'ÔSONG SSANGHIÛH 1159 HANGÛL TCH'ÔSONG YORINHIÛH 115F BOURRE HANGÛL TCH'ÔSONG 1160 BOURRE HANGÛL DJOUNGSONG 1161 HANGÛL DJOUNGSONG A 1162 HANGÛL DJOUNGSONG È 1163 HANGÛL DJOUNGSONG YA 1164 HANGÛL DJOUNGSONG YÈ 1165 HANGÛL DJOUNGSONG O 1166 HANGÛL DJOUNGSONG É 1167 HANGÛL DJOUNGSONG YO 1168 HANGÛL DJOUNGSONG YÉ 1169 HANGÛL DJOUNGSONG Ô 116A HANGÛL DJOUNGSONG WA 116B HANGÛL DJOUNGSONG WÈ 116C HANGÛL DJOUNGSONG EU 116D HANGÛL DJOUNGSONG YÔ 116E HANGÛL DJOUNGSONG OU 116F HANGÛL DJOUNGSONG WO 1170 HANGÛL DJOUNGSONG WÉ 1171 HANGÛL DJOUNGSONG WI 1172 HANGÛL DJOUNGSONG YOU 1173 HANGÛL DJOUNGSONG Û 1174 HANGÛL DJOUNGSONG ÛI 1175 HANGÛL DJOUNGSONG I 1176 HANGÛL DJOUNGSONG A-Ô 1177 HANGÛL DJOUNGSONG A-OU 1178 HANGÛL DJOUNGSONG YA-Ô 1179 HANGÛL DJOUNGSONG YA-YÔ 117A HANGÛL DJOUNGSONG O-Ô 117B HANGÛL DJOUNGSONG O-OU 117C HANGÛL DJOUNGSONG O-Û 117D HANGÛL DJOUNGSONG YO-Ô 117E HANGÛL DJOUNGSONG YO-OU 117F HANGÛL DJOUNGSONG Ô-O 1180 HANGÛL DJOUNGSONG Ô-É 1181 HANGÛL DJOUNGSONG Ô-YÉ 1182 HANGÛL DJOUNGSONG Ô-Ô 1183 HANGÛL DJOUNGSONG Ô-OU 1184 HANGÛL DJOUNGSONG YÔ-YA 1185 HANGÛL DJOUNGSONG YÔ-YÈ 1186 HANGÛL DJOUNGSONG YÔ-YO 1187 HANGÛL DJOUNGSONG YÔ-Ô 1188 HANGÛL DJOUNGSONG YÔ-I 1189 HANGÛL DJOUNGSONG OU-A 118A HANGÛL DJOUNGSONG OU-È 118B HANGÛL DJOUNGSONG OU-O-Û 118C HANGÛL DJOUNGSONG OU-YÉ 118D HANGÛL DJOUNGSONG OU-OU 118E HANGÛL DJOUNGSONG YOU-A 118F HANGÛL DJOUNGSONG YOU-O 1190 HANGÛL DJOUNGSONG YOU-É 1191 HANGÛL DJOUNGSONG YOU-YO 1192 HANGÛL DJOUNGSONG YOU-YÉ 1193 HANGÛL DJOUNGSONG YOU-OU 1194 HANGÛL DJOUNGSONG YOU-I 1195 HANGÛL DJOUNGSONG Û-OU 1196 HANGÛL DJOUNGSONG Û-Û 1197 HANGÛL DJOUNGSONG ÛI-OU 1198 HANGÛL DJOUNGSONG I-A 1199 HANGÛL DJOUNGSONG I-YA 119A HANGÛL DJOUNGSONG I-Ô 119B HANGÛL DJOUNGSONG I-OU 119C HANGÛL DJOUNGSONG I-Û 119D HANGÛL DJOUNGSONG I-ARÈA 119E HANGÛL DJOUNGSONG ARÈA 119F HANGÛL DJOUNGSONG ARÈA-O 11A0 HANGÛL DJOUNGSONG ARÈA-OU 11A1 HANGÛL DJOUNGSONG ARÈA-I 11A2 HANGÛL DJOUNGSONG SSANGARÈA 11A8 HANGÛL DJÔNGSONG KIYOK (k) * 11A9 HANGÛL DJÔNGSONG SSANGKIYOK (kk) * 11AA HANGÛL DJÔNGSONG KIYOK-SIÔS (ks) * 11AB HANGÛL DJÔNGSONG NIÛN (n) * 11AC HANGÛL DJÔNGSONG NIÛN-TCHIÛTCH (ntch) * 11AD HANGÛL DJÔNGSONG NIÛN-HIÛH (nh) * 11AE HANGÛL DJÔNGSONG TIKÛT (t) * 11AF HANGÛL DJÔNGSONG RIÛL (l) * 11B0 HANGÛL DJÔNGSONG RIÛL-KIYOK (lk) * 11B1 HANGÛL DJÔNGSONG RIÛL-MIÛM (lm) * 11B2 HANGÛL DJÔNGSONG RIÛL-PIÛP (lp) * 11B3 HANGÛL DJÔNGSONG RIÛL-SIÔS (ls) * 11B4 HANGÛL DJÔNGSONG RIÛL-T'IÛT' (lt') * 11B5 HANGÛL DJÔNGSONG RIÛL-P'IÛP' (lp') * 11B6 HANGÛL DJÔNGSONG RIÛL-HIÛH (lh) * 11B7 HANGÛL DJÔNGSONG MIÛM (m) * 11B8 HANGÛL DJÔNGSONG PIÛP (p) * 11B9 HANGÛL DJÔNGSONG PIÛP-SIÔS (ps) * 11BA HANGÛL DJÔNGSONG SIÔS (s) * 11BB HANGÛL DJÔNGSONG SSANGSIÔS (ss) * 11BC HANGÛL DJÔNGSONG IÛNG (ng) * 11BD HANGÛL DJÔNGSONG TCHIÛTCH (tch) * 11BE HANGÛL DJÔNGSONG TCH'IÛTCH' (tch') * 11BF HANGÛL DJÔNGSONG K'IÛK' (k') * 11C0 HANGÛL DJÔNGSONG T'IÛT' (t') * 11C1 HANGÛL DJÔNGSONG P'IÛP' (p') * 11C2 HANGÛL DJÔNGSONG HIÛH (h) * 11C3 HANGÛL DJÔNGSONG KIYOK-RIÛL 11C4 HANGÛL DJÔNGSONG KIYOK-SIÔS-KIYOK 11C5 HANGÛL DJÔNGSONG NIÛN-KIYOK 11C6 HANGÛL DJÔNGSONG NIÛN-TIKÛT 11C7 HANGÛL DJÔNGSONG NIÛN-SIÔS 11C8 HANGÛL DJÔNGSONG NIÛN-PANSIÔS 11C9 HANGÛL DJÔNGSONG NIÛN-T'IÛT' 11CA HANGÛL DJÔNGSONG TIKÛT-KIYOK 11CB HANGÛL DJÔNGSONG TIKÛT-RIÛL 11CC HANGÛL DJÔNGSONG RIÛL-KIYOK-SIÔS 11CD HANGÛL DJÔNGSONG RIÛL-NIÛN 11CE HANGÛL DJÔNGSONG RIÛL-TIKÛT 11CF HANGÛL DJÔNGSONG RIÛL-TIKÛT-HIÛH 11D0 HANGÛL DJÔNGSONG SSANGRIÛL 11D1 HANGÛL DJÔNGSONG RIÛL-MIÛM-KIYOK 11D2 HANGÛL DJÔNGSONG RIÛL-MIÛM-SIÔS 11D3 HANGÛL DJÔNGSONG RIÛL-PIÛP-SIÔS 11D4 HANGÛL DJÔNGSONG RIÛL-PIÛP-HIÛH 11D5 HANGÛL DJÔNGSONG RIÛL-KAPYO-OUNPIÛP 11D6 HANGÛL DJÔNGSONG RIÛL-SSANGSIÔS 11D7 HANGÛL DJÔNGSONG RIÛL-PANSIÔS 11D8 HANGÛL DJÔNGSONG RIÛL-K'IÛK' 11D9 HANGÛL DJÔNGSONG RIÛL-YORINHIÛH 11DA HANGÛL DJÔNGSONG MIÛM-KIYOK 11DB HANGÛL DJÔNGSONG MIÛM-RIÛL 11DC HANGÛL DJÔNGSONG MIÛM-PIÛP 11DD HANGÛL DJÔNGSONG MIÛM-SIÔS 11DE HANGÛL DJÔNGSONG MIÛM-SSANGSIÔS 11DF HANGÛL DJÔNGSONG MIÛM-PANSIÔS 11E0 HANGÛL DJÔNGSONG MIÛM-TCH'IÛTCH' 11E1 HANGÛL DJÔNGSONG MIÛM-HIÛH 11E2 HANGÛL DJÔNGSONG KAPYO-OUNMIÛM 11E3 HANGÛL DJÔNGSONG PIÛP-RIÛL 11E4 HANGÛL DJÔNGSONG PIÛP-P'IÛP' 11E5 HANGÛL DJÔNGSONG PIÛP-HIÛH 11E6 HANGÛL DJÔNGSONG KAPYO-OUNPIÛP 11E7 HANGÛL DJÔNGSONG SIÔS-KIYOK 11E8 HANGÛL DJÔNGSONG SIÔS-TIKÛT 11E9 HANGÛL DJÔNGSONG SIÔS-RIÛL 11EA HANGÛL DJÔNGSONG SIÔS-PIÛP 11EB HANGÛL DJÔNGSONG PANSIÔS 11EC HANGÛL DJÔNGSONG IÛNG-KIYOK 11ED HANGÛL DJÔNGSONG IÛNG-SSANGKIYOK 11EE HANGÛL DJÔNGSONG SSANGIÛNG 11EF HANGÛL DJÔNGSONG IÛNG-K'IÛK' 11F0 HANGÛL DJÔNGSONG YESIÛNG 11F1 HANGÛL DJÔNGSONG YESIÛNG-SIÔS 11F2 HANGÛL DJÔNGSONG YESIÛNG-PANSIÔS 11F3 HANGÛL DJÔNGSONG P'IÛP'-PIÛP 11F4 HANGÛL DJÔNGSONG KAPYO-OUNP'IÛP' 11F5 HANGÛL DJÔNGSONG HIÛH-NIÛN 11F6 HANGÛL DJÔNGSONG HIÛH-RIÛL 11F7 HANGÛL DJÔNGSONG HIÛH-MIÛM 11F8 HANGÛL DJÔNGSONG HIÛH-PIÛP 11F9 HANGÛL DJÔNGSONG YORINHIÛH @@ 1200 Éthiopien 137F 1200 SYLLABE ÉTHIOPIENNE HÄ 1201 SYLLABE ÉTHIOPIENNE HOU 1202 SYLLABE ÉTHIOPIENNE HI 1203 SYLLABE ÉTHIOPIENNE HA 1204 SYLLABE ÉTHIOPIENNE HÉ 1205 SYLLABE ÉTHIOPIENNE HE 1206 SYLLABE ÉTHIOPIENNE HO 1208 SYLLABE ÉTHIOPIENNE LÄ 1209 SYLLABE ÉTHIOPIENNE LOU 120A SYLLABE ÉTHIOPIENNE LI 120B SYLLABE ÉTHIOPIENNE LA 120C SYLLABE ÉTHIOPIENNE LÉ 120D SYLLABE ÉTHIOPIENNE LE 120E SYLLABE ÉTHIOPIENNE LO 120F SYLLABE ÉTHIOPIENNE LWA 1210 SYLLABE ÉTHIOPIENNE HHÄ 1211 SYLLABE ÉTHIOPIENNE HHOU 1212 SYLLABE ÉTHIOPIENNE HHI 1213 SYLLABE ÉTHIOPIENNE HHA 1214 SYLLABE ÉTHIOPIENNE HHÉ 1215 SYLLABE ÉTHIOPIENNE HHE 1216 SYLLABE ÉTHIOPIENNE HHO 1217 SYLLABE ÉTHIOPIENNE HHWA 1218 SYLLABE ÉTHIOPIENNE MÄ 1219 SYLLABE ÉTHIOPIENNE MOU 121A SYLLABE ÉTHIOPIENNE MI 121B SYLLABE ÉTHIOPIENNE MA 121C SYLLABE ÉTHIOPIENNE MÉ 121D SYLLABE ÉTHIOPIENNE ME 121E SYLLABE ÉTHIOPIENNE MO 121F SYLLABE ÉTHIOPIENNE MWA 1220 SYLLABE ÉTHIOPIENNE ÇÄ 1221 SYLLABE ÉTHIOPIENNE ÇOU 1222 SYLLABE ÉTHIOPIENNE ÇI 1223 SYLLABE ÉTHIOPIENNE ÇA 1224 SYLLABE ÉTHIOPIENNE ÇÉ 1225 SYLLABE ÉTHIOPIENNE ÇE 1226 SYLLABE ÉTHIOPIENNE ÇO 1227 SYLLABE ÉTHIOPIENNE ÇWA 1228 SYLLABE ÉTHIOPIENNE RÄ 1229 SYLLABE ÉTHIOPIENNE ROU 122A SYLLABE ÉTHIOPIENNE RI 122B SYLLABE ÉTHIOPIENNE RA 122C SYLLABE ÉTHIOPIENNE RÉ 122D SYLLABE ÉTHIOPIENNE RE 122E SYLLABE ÉTHIOPIENNE RO 122F SYLLABE ÉTHIOPIENNE RWA 1230 SYLLABE ÉTHIOPIENNE SÄ 1231 SYLLABE ÉTHIOPIENNE SOU 1232 SYLLABE ÉTHIOPIENNE SI 1233 SYLLABE ÉTHIOPIENNE SA 1234 SYLLABE ÉTHIOPIENNE SÉ 1235 SYLLABE ÉTHIOPIENNE SE 1236 SYLLABE ÉTHIOPIENNE SO 1237 SYLLABE ÉTHIOPIENNE SWA 1238 SYLLABE ÉTHIOPIENNE CHÄ 1239 SYLLABE ÉTHIOPIENNE CHOU 123A SYLLABE ÉTHIOPIENNE CHI 123B SYLLABE ÉTHIOPIENNE CHA 123C SYLLABE ÉTHIOPIENNE CHÉ 123D SYLLABE ÉTHIOPIENNE CHE 123E SYLLABE ÉTHIOPIENNE CHO 123F SYLLABE ÉTHIOPIENNE CHWA 1240 SYLLABE ÉTHIOPIENNE QÄ 1241 SYLLABE ÉTHIOPIENNE QOU 1242 SYLLABE ÉTHIOPIENNE QI 1243 SYLLABE ÉTHIOPIENNE QA 1244 SYLLABE ÉTHIOPIENNE QÉ 1245 SYLLABE ÉTHIOPIENNE QE 1246 SYLLABE ÉTHIOPIENNE QO 1248 SYLLABE ÉTHIOPIENNE QWÄ 124A SYLLABE ÉTHIOPIENNE QWI 124B SYLLABE ÉTHIOPIENNE QWA 124C SYLLABE ÉTHIOPIENNE QWÉ 124D SYLLABE ÉTHIOPIENNE QWE 1250 SYLLABE ÉTHIOPIENNE QHÄ 1251 SYLLABE ÉTHIOPIENNE QHOU 1252 SYLLABE ÉTHIOPIENNE QHI 1253 SYLLABE ÉTHIOPIENNE QHA 1254 SYLLABE ÉTHIOPIENNE QHÉ 1255 SYLLABE ÉTHIOPIENNE QHE 1256 SYLLABE ÉTHIOPIENNE QHO 1258 SYLLABE ÉTHIOPIENNE QHWÄ 125A SYLLABE ÉTHIOPIENNE QHWI 125B SYLLABE ÉTHIOPIENNE QHWA 125C SYLLABE ÉTHIOPIENNE QHWÉ 125D SYLLABE ÉTHIOPIENNE QHWE 1260 SYLLABE ÉTHIOPIENNE BÄ 1261 SYLLABE ÉTHIOPIENNE BOU 1262 SYLLABE ÉTHIOPIENNE BI 1263 SYLLABE ÉTHIOPIENNE BA 1264 SYLLABE ÉTHIOPIENNE BÉ 1265 SYLLABE ÉTHIOPIENNE BE 1266 SYLLABE ÉTHIOPIENNE BO 1267 SYLLABE ÉTHIOPIENNE BWA 1268 SYLLABE ÉTHIOPIENNE VÄ 1269 SYLLABE ÉTHIOPIENNE VOU 126A SYLLABE ÉTHIOPIENNE VI 126B SYLLABE ÉTHIOPIENNE VA 126C SYLLABE ÉTHIOPIENNE VÉ 126D SYLLABE ÉTHIOPIENNE VE 126E SYLLABE ÉTHIOPIENNE VO 126F SYLLABE ÉTHIOPIENNE VWA 1270 SYLLABE ÉTHIOPIENNE TÄ 1271 SYLLABE ÉTHIOPIENNE TOU 1272 SYLLABE ÉTHIOPIENNE TI 1273 SYLLABE ÉTHIOPIENNE TA 1274 SYLLABE ÉTHIOPIENNE TÉ 1275 SYLLABE ÉTHIOPIENNE TE 1276 SYLLABE ÉTHIOPIENNE TO 1277 SYLLABE ÉTHIOPIENNE TWA 1278 SYLLABE ÉTHIOPIENNE TCHÄ 1279 SYLLABE ÉTHIOPIENNE TCHOU 127A SYLLABE ÉTHIOPIENNE TCHI 127B SYLLABE ÉTHIOPIENNE TCHA 127C SYLLABE ÉTHIOPIENNE TCHÉ 127D SYLLABE ÉTHIOPIENNE TCHE 127E SYLLABE ÉTHIOPIENNE TCHO 127F SYLLABE ÉTHIOPIENNE TCHWA 1280 SYLLABE ÉTHIOPIENNE XÄ 1281 SYLLABE ÉTHIOPIENNE XOU 1282 SYLLABE ÉTHIOPIENNE XI 1283 SYLLABE ÉTHIOPIENNE XA 1284 SYLLABE ÉTHIOPIENNE XÉ 1285 SYLLABE ÉTHIOPIENNE XE 1286 SYLLABE ÉTHIOPIENNE XO 1288 SYLLABE ÉTHIOPIENNE XWÄ 128A SYLLABE ÉTHIOPIENNE XWI 128B SYLLABE ÉTHIOPIENNE XWA 128C SYLLABE ÉTHIOPIENNE XWÉ 128D SYLLABE ÉTHIOPIENNE XWE 1290 SYLLABE ÉTHIOPIENNE NÄ 1291 SYLLABE ÉTHIOPIENNE NOU 1292 SYLLABE ÉTHIOPIENNE NI 1293 SYLLABE ÉTHIOPIENNE NA 1294 SYLLABE ÉTHIOPIENNE NÉ 1295 SYLLABE ÉTHIOPIENNE NE 1296 SYLLABE ÉTHIOPIENNE NO 1297 SYLLABE ÉTHIOPIENNE NWA 1298 SYLLABE ÉTHIOPIENNE ÑÄ 1299 SYLLABE ÉTHIOPIENNE ÑOU 129A SYLLABE ÉTHIOPIENNE ÑI 129B SYLLABE ÉTHIOPIENNE ÑA 129C SYLLABE ÉTHIOPIENNE ÑÉ 129D SYLLABE ÉTHIOPIENNE ÑE 129E SYLLABE ÉTHIOPIENNE ÑO 129F SYLLABE ÉTHIOPIENNE ÑWA 12A0 SYLLABE ÉTHIOPIENNE Ä GLOTTAL 12A1 SYLLABE ÉTHIOPIENNE OU GLOTTAL 12A2 SYLLABE ÉTHIOPIENNE I GLOTTAL 12A3 SYLLABE ÉTHIOPIENNE A GLOTTAL 12A4 SYLLABE ÉTHIOPIENNE É GLOTTAL 12A5 SYLLABE ÉTHIOPIENNE E GLOTTAL 12A6 SYLLABE ÉTHIOPIENNE O GLOTTAL 12A7 SYLLABE ÉTHIOPIENNE WA GLOTTAL 12A8 SYLLABE ÉTHIOPIENNE KÄ 12A9 SYLLABE ÉTHIOPIENNE KOU 12AA SYLLABE ÉTHIOPIENNE KI 12AB SYLLABE ÉTHIOPIENNE KA 12AC SYLLABE ÉTHIOPIENNE KÉ 12AD SYLLABE ÉTHIOPIENNE KE 12AE SYLLABE ÉTHIOPIENNE KO 12B0 SYLLABE ÉTHIOPIENNE KWÄ 12B2 SYLLABE ÉTHIOPIENNE KWI 12B3 SYLLABE ÉTHIOPIENNE KWA 12B4 SYLLABE ÉTHIOPIENNE KWÉ 12B5 SYLLABE ÉTHIOPIENNE KWE 12B8 SYLLABE ÉTHIOPIENNE KXÄ 12B9 SYLLABE ÉTHIOPIENNE KXOU 12BA SYLLABE ÉTHIOPIENNE KXI 12BB SYLLABE ÉTHIOPIENNE KXA 12BC SYLLABE ÉTHIOPIENNE KXÉ 12BD SYLLABE ÉTHIOPIENNE KXE 12BE SYLLABE ÉTHIOPIENNE KXO 12C0 SYLLABE ÉTHIOPIENNE KXWÄ 12C2 SYLLABE ÉTHIOPIENNE KXWI 12C3 SYLLABE ÉTHIOPIENNE KXWA 12C4 SYLLABE ÉTHIOPIENNE KXWÉ 12C5 SYLLABE ÉTHIOPIENNE KXWE 12C8 SYLLABE ÉTHIOPIENNE WÄ 12C9 SYLLABE ÉTHIOPIENNE WOU 12CA SYLLABE ÉTHIOPIENNE WI 12CB SYLLABE ÉTHIOPIENNE WA 12CC SYLLABE ÉTHIOPIENNE WÉ 12CD SYLLABE ÉTHIOPIENNE WE 12CE SYLLABE ÉTHIOPIENNE WO 12D0 SYLLABE ÉTHIOPIENNE Ä PHARYNGAL 12D1 SYLLABE ÉTHIOPIENNE OU PHARYNGAL 12D2 SYLLABE ÉTHIOPIENNE I PHARYNGAL 12D3 SYLLABE ÉTHIOPIENNE A PHARYNGAL 12D4 SYLLABE ÉTHIOPIENNE É PHARYNGAL 12D5 SYLLABE ÉTHIOPIENNE E PHARYNGAL 12D6 SYLLABE ÉTHIOPIENNE O PHARYNGAL 12D8 SYLLABE ÉTHIOPIENNE ZÄ 12D9 SYLLABE ÉTHIOPIENNE ZOU 12DA SYLLABE ÉTHIOPIENNE ZI 12DB SYLLABE ÉTHIOPIENNE ZA 12DC SYLLABE ÉTHIOPIENNE ZÉ 12DD SYLLABE ÉTHIOPIENNE ZE 12DE SYLLABE ÉTHIOPIENNE ZO 12DF SYLLABE ÉTHIOPIENNE ZWA 12E0 SYLLABE ÉTHIOPIENNE JÄ 12E1 SYLLABE ÉTHIOPIENNE JOU 12E2 SYLLABE ÉTHIOPIENNE JI 12E3 SYLLABE ÉTHIOPIENNE JA 12E4 SYLLABE ÉTHIOPIENNE JÉ 12E5 SYLLABE ÉTHIOPIENNE JE 12E6 SYLLABE ÉTHIOPIENNE JO 12E7 SYLLABE ÉTHIOPIENNE JWA 12E8 SYLLABE ÉTHIOPIENNE YÄ 12E9 SYLLABE ÉTHIOPIENNE YOU 12EA SYLLABE ÉTHIOPIENNE YI 12EB SYLLABE ÉTHIOPIENNE YA 12EC SYLLABE ÉTHIOPIENNE YÉ 12ED SYLLABE ÉTHIOPIENNE YE 12EE SYLLABE ÉTHIOPIENNE YO 12F0 SYLLABE ÉTHIOPIENNE DÄ 12F1 SYLLABE ÉTHIOPIENNE DOU 12F2 SYLLABE ÉTHIOPIENNE DI 12F3 SYLLABE ÉTHIOPIENNE DA 12F4 SYLLABE ÉTHIOPIENNE DÉ 12F5 SYLLABE ÉTHIOPIENNE DE 12F6 SYLLABE ÉTHIOPIENNE DO 12F7 SYLLABE ÉTHIOPIENNE DWA 12F8 SYLLABE ÉTHIOPIENNE DDÄ 12F9 SYLLABE ÉTHIOPIENNE DDOU 12FA SYLLABE ÉTHIOPIENNE DDI 12FB SYLLABE ÉTHIOPIENNE DDA 12FC SYLLABE ÉTHIOPIENNE DDÉ 12FD SYLLABE ÉTHIOPIENNE DDE 12FE SYLLABE ÉTHIOPIENNE DDO 12FF SYLLABE ÉTHIOPIENNE DDWA 1300 SYLLABE ÉTHIOPIENNE DJÄ 1301 SYLLABE ÉTHIOPIENNE DJOU 1302 SYLLABE ÉTHIOPIENNE DJI 1303 SYLLABE ÉTHIOPIENNE DJA 1304 SYLLABE ÉTHIOPIENNE DJÉ 1305 SYLLABE ÉTHIOPIENNE DJE 1306 SYLLABE ÉTHIOPIENNE DJO 1307 SYLLABE ÉTHIOPIENNE DJWA 1308 SYLLABE ÉTHIOPIENNE GÄ 1309 SYLLABE ÉTHIOPIENNE GOU 130A SYLLABE ÉTHIOPIENNE GI 130B SYLLABE ÉTHIOPIENNE GA 130C SYLLABE ÉTHIOPIENNE GÉ 130D SYLLABE ÉTHIOPIENNE GE 130E SYLLABE ÉTHIOPIENNE GO 1310 SYLLABE ÉTHIOPIENNE GWÄ 1312 SYLLABE ÉTHIOPIENNE GWI 1313 SYLLABE ÉTHIOPIENNE GWA 1314 SYLLABE ÉTHIOPIENNE GWÉ 1315 SYLLABE ÉTHIOPIENNE GWE 1318 SYLLABE ÉTHIOPIENNE GGÄ 1319 SYLLABE ÉTHIOPIENNE GGOU 131A SYLLABE ÉTHIOPIENNE GGI 131B SYLLABE ÉTHIOPIENNE GGA 131C SYLLABE ÉTHIOPIENNE GGÉ 131D SYLLABE ÉTHIOPIENNE GGE 131E SYLLABE ÉTHIOPIENNE GGO 1320 SYLLABE ÉTHIOPIENNE THÄ 1321 SYLLABE ÉTHIOPIENNE THOU 1322 SYLLABE ÉTHIOPIENNE THI 1323 SYLLABE ÉTHIOPIENNE THA 1324 SYLLABE ÉTHIOPIENNE THÉ 1325 SYLLABE ÉTHIOPIENNE THE 1326 SYLLABE ÉTHIOPIENNE THO 1327 SYLLABE ÉTHIOPIENNE THWA 1328 SYLLABE ÉTHIOPIENNE TTCHÄ 1329 SYLLABE ÉTHIOPIENNE TTCHOU 132A SYLLABE ÉTHIOPIENNE TTCHI 132B SYLLABE ÉTHIOPIENNE TTCHA 132C SYLLABE ÉTHIOPIENNE TTCHÉ 132D SYLLABE ÉTHIOPIENNE TTCHE 132E SYLLABE ÉTHIOPIENNE TTCHO 132F SYLLABE ÉTHIOPIENNE TTCHWA 1330 SYLLABE ÉTHIOPIENNE PHÄ 1331 SYLLABE ÉTHIOPIENNE PHOU 1332 SYLLABE ÉTHIOPIENNE PHI 1333 SYLLABE ÉTHIOPIENNE PHA 1334 SYLLABE ÉTHIOPIENNE PHÉ 1335 SYLLABE ÉTHIOPIENNE PHE 1336 SYLLABE ÉTHIOPIENNE PHO 1337 SYLLABE ÉTHIOPIENNE PHWA 1338 SYLLABE ÉTHIOPIENNE TSÄ 1339 SYLLABE ÉTHIOPIENNE TSOU 133A SYLLABE ÉTHIOPIENNE TSI 133B SYLLABE ÉTHIOPIENNE TSA 133C SYLLABE ÉTHIOPIENNE TSÉ 133D SYLLABE ÉTHIOPIENNE TSE 133E SYLLABE ÉTHIOPIENNE TSO 133F SYLLABE ÉTHIOPIENNE TSWA 1340 SYLLABE ÉTHIOPIENNE TZÄ 1341 SYLLABE ÉTHIOPIENNE TZOU 1342 SYLLABE ÉTHIOPIENNE TZI 1343 SYLLABE ÉTHIOPIENNE TZA 1344 SYLLABE ÉTHIOPIENNE TZÉ 1345 SYLLABE ÉTHIOPIENNE TZE 1346 SYLLABE ÉTHIOPIENNE TZO 1348 SYLLABE ÉTHIOPIENNE FÄ 1349 SYLLABE ÉTHIOPIENNE FOU 134A SYLLABE ÉTHIOPIENNE FI 134B SYLLABE ÉTHIOPIENNE FA 134C SYLLABE ÉTHIOPIENNE FÉ 134D SYLLABE ÉTHIOPIENNE FE 134E SYLLABE ÉTHIOPIENNE FO 134F SYLLABE ÉTHIOPIENNE FWA 1350 SYLLABE ÉTHIOPIENNE PÄ 1351 SYLLABE ÉTHIOPIENNE POU 1352 SYLLABE ÉTHIOPIENNE PI 1353 SYLLABE ÉTHIOPIENNE PA 1354 SYLLABE ÉTHIOPIENNE PÉ 1355 SYLLABE ÉTHIOPIENNE PE 1356 SYLLABE ÉTHIOPIENNE PO 1357 SYLLABE ÉTHIOPIENNE PWA 1358 SYLLABE ÉTHIOPIENNE RYÄ 1359 SYLLABE ÉTHIOPIENNE MYÄ 135A SYLLABE ÉTHIOPIENNE FYÄ 1361 ESPACE ÉTHIOPIENNE 1362 POINT ÉTHIOPIEN 1363 VIRGULE ÉTHIOPIENNE 1364 POINT-VIRGULE ÉTHIOPIEN 1365 DEUX-POINTS ÉTHIOPIEN 1366 DEUX-POINTS DE PRÉFACE ÉTHIOPIEN 1367 POINT D'INTERROGATION ÉTHIOPIEN 1368 SÉPARATEUR DE PARAGRAPHES ÉTHIOPIEN 1369 CHIFFRE ÉTHIOPIEN UN 136A CHIFFRE ÉTHIOPIEN DEUX 136B CHIFFRE ÉTHIOPIEN TROIS 136C CHIFFRE ÉTHIOPIEN QUATRE 136D CHIFFRE ÉTHIOPIEN CINQ 136E CHIFFRE ÉTHIOPIEN SIX 136F CHIFFRE ÉTHIOPIEN SEPT 1370 CHIFFRE ÉTHIOPIEN HUIT 1371 CHIFFRE ÉTHIOPIEN NEUF 1372 NOMBRE ÉTHIOPIEN DIX 1373 NOMBRE ÉTHIOPIEN VINGT 1374 NOMBRE ÉTHIOPIEN TRENTE 1375 NOMBRE ÉTHIOPIEN QUARANTE 1376 NOMBRE ÉTHIOPIEN CINQUANTE 1377 NOMBRE ÉTHIOPIEN SOIXANTE 1378 NOMBRE ÉTHIOPIEN SOIXANTE-DIX (septante) 1379 NOMBRE ÉTHIOPIEN QUATRE-VINGTS (octante, huitante) 137A NOMBRE ÉTHIOPIEN QUATRE-VINGT-DIX (nonante) 137B NOMBRE ÉTHIOPIEN CENT 137C NOMBRE ÉTHIOPIEN DIX MILLE @@ 13A0 Chérokî 13FF 13A0 SYLLABE CHÉROKIE A 13A1 SYLLABE CHÉROKIE É 13A2 SYLLABE CHÉROKIE I 13A3 SYLLABE CHÉROKIE O 13A4 SYLLABE CHÉROKIE OU 13A5 SYLLABE CHÉROKIE ËN (schwa nasal) 13A6 SYLLABE CHÉROKIE GA 13A7 SYLLABE CHÉROKIE KA 13A8 SYLLABE CHÉROKIE GUÉ 13A9 SYLLABE CHÉROKIE GUI 13AA SYLLABE CHÉROKIE GO 13AB SYLLABE CHÉROKIE GOU 13AC SYLLABE CHÉROKIE GUËN 13AD SYLLABE CHÉROKIE HA 13AE SYLLABE CHÉROKIE HÉ 13AF SYLLABE CHÉROKIE HI 13B0 SYLLABE CHÉROKIE HO 13B1 SYLLABE CHÉROKIE HOU 13B2 SYLLABE CHÉROKIE HËN 13B3 SYLLABE CHÉROKIE LA 13B4 SYLLABE CHÉROKIE LÉ 13B5 SYLLABE CHÉROKIE LI 13B6 SYLLABE CHÉROKIE LO 13B7 SYLLABE CHÉROKIE LOU 13B8 SYLLABE CHÉROKIE LËN 13B9 SYLLABE CHÉROKIE MA 13BA SYLLABE CHÉROKIE MÉ 13BB SYLLABE CHÉROKIE MI 13BC SYLLABE CHÉROKIE MO 13BD SYLLABE CHÉROKIE MOU 13BE SYLLABE CHÉROKIE NA 13BF SYLLABE CHÉROKIE HNA 13C0 SYLLABE CHÉROKIE NAH 13C1 SYLLABE CHÉROKIE NÉ 13C2 SYLLABE CHÉROKIE NI 13C3 SYLLABE CHÉROKIE NO 13C4 SYLLABE CHÉROKIE NOU 13C5 SYLLABE CHÉROKIE NËN 13C6 SYLLABE CHÉROKIE KWA 13C7 SYLLABE CHÉROKIE KWÉ 13C8 SYLLABE CHÉROKIE KWI 13C9 SYLLABE CHÉROKIE KWO 13CA SYLLABE CHÉROKIE KWOU 13CB SYLLABE CHÉROKIE KWËN 13CC SYLLABE CHÉROKIE SA 13CD SYLLABE CHÉROKIE S 13CE SYLLABE CHÉROKIE SÉ 13CF SYLLABE CHÉROKIE SI 13D0 SYLLABE CHÉROKIE SO 13D1 SYLLABE CHÉROKIE SOU 13D2 SYLLABE CHÉROKIE SËN 13D3 SYLLABE CHÉROKIE DA 13D4 SYLLABE CHÉROKIE TA 13D5 SYLLABE CHÉROKIE DÉ 13D6 SYLLABE CHÉROKIE TÉ 13D7 SYLLABE CHÉROKIE DI 13D8 SYLLABE CHÉROKIE TI 13D9 SYLLABE CHÉROKIE DO 13DA SYLLABE CHÉROKIE DOU 13DB SYLLABE CHÉROKIE DËN 13DC SYLLABE CHÉROKIE DLA 13DD SYLLABE CHÉROKIE TLA 13DE SYLLABE CHÉROKIE TLÉ 13DF SYLLABE CHÉROKIE TLI 13E0 SYLLABE CHÉROKIE TLO 13E1 SYLLABE CHÉROKIE TLOU 13E2 SYLLABE CHÉROKIE TLËN 13E3 SYLLABE CHÉROKIE TSA 13E4 SYLLABE CHÉROKIE TSÉ 13E5 SYLLABE CHÉROKIE TSI 13E6 SYLLABE CHÉROKIE TSO 13E7 SYLLABE CHÉROKIE TSOU 13E8 SYLLABE CHÉROKIE TSËN 13E9 SYLLABE CHÉROKIE WA 13EA SYLLABE CHÉROKIE WÉ 13EB SYLLABE CHÉROKIE WI 13EC SYLLABE CHÉROKIE WO 13ED SYLLABE CHÉROKIE WOU 13EE SYLLABE CHÉROKIE WËN 13EF SYLLABE CHÉROKIE YA 13F0 SYLLABE CHÉROKIE YÉ 13F1 SYLLABE CHÉROKIE YI 13F2 SYLLABE CHÉROKIE YO 13F3 SYLLABE CHÉROKIE YOU 13F4 SYLLABE CHÉROKIE YËN @@ 1400 Syllabaires autochtones canadiens 167F 1401 SYLLABE CANADIENNE É 1402 SYLLABE CANADIENNE ÂÏ 1403 SYLLABE CANADIENNE I 1404 SYLLABE CANADIENNE Î 1405 SYLLABE CANADIENNE O 1406 SYLLABE CANADIENNE Ô 1407 SYLLABE CANADIENNE Ô CRI-Y 1408 SYLLABE CANADIENNE É PORTEUR 1409 SYLLABE CANADIENNE I PORTEUR 140A SYLLABE CANADIENNE A 140B SYLLABE CANADIENNE  140C SYLLABE CANADIENNE OUÉ 140D SYLLABE CANADIENNE OUÉ CRI DES PLAINES 140E SYLLABE CANADIENNE OUI 140F SYLLABE CANADIENNE OUI CRI DES PLAINES 1410 SYLLABE CANADIENNE OUÎ 1411 SYLLABE CANADIENNE OUÎ CRI DES PLAINES 1412 SYLLABE CANADIENNE OUO 1413 SYLLABE CANADIENNE OUO CRI DES PLAINES 1414 SYLLABE CANADIENNE OUÔ 1415 SYLLABE CANADIENNE OUÔ CRI DES PLAINES 1416 SYLLABE CANADIENNE OUÔ NASKAPI 1417 SYLLABE CANADIENNE OUA 1418 SYLLABE CANADIENNE OUA CRI DES PLAINES 1419 SYLLABE CANADIENNE OU 141A SYLLABE CANADIENNE OU CRI DES PLAINES 141B SYLLABE CANADIENNE OU NASKAPI 141C SYLLABE CANADIENNE AÏ 141D SYLLABE CANADIENNE OU CRI-Y 141E SYLLABE CANADIENNE COUP DE GLOTTE 141F SYLLABE CANADIENNE FINALE ACCENT AIGU 1420 SYLLABE CANADIENNE FINALE ACCENT GRAVE 1421 SYLLABE CANADIENNE FINALE DEMI-CERCLE INFÉRIEUR 1422 SYLLABE CANADIENNE FINALE DEMI-CERCLE SUPÉRIEUR 1423 SYLLABE CANADIENNE FINALE DEMI-CERCLE À DROITE 1424 SYLLABE CANADIENNE FINALE CERCLE 1425 SYLLABE CANADIENNE FINALE DOUBLE ACCENT AIGU 1426 SYLLABE CANADIENNE FINALE DOUBLES TRAITS VERTICAUX COURTS 1427 SYLLABE CANADIENNE FINALE POINT MÉDIAN 1428 SYLLABE CANADIENNE FINALE TRAIT HORIZONTAL COURT 1429 SYLLABE CANADIENNE FINALE SIGNE PLUS 142A SYLLABE CANADIENNE FINALE TAQUET VERS LE BAS 142B SYLLABE CANADIENNE ENNE 142C SYLLABE CANADIENNE INNE 142D SYLLABE CANADIENNE ONNE 142E SYLLABE CANADIENNE ANNE 142F SYLLABE CANADIENNE PÉ 1430 SYLLABE CANADIENNE PÂÏ 1431 SYLLABE CANADIENNE PI 1432 SYLLABE CANADIENNE PÎ 1433 SYLLABE CANADIENNE PO 1434 SYLLABE CANADIENNE PÔ 1435 SYLLABE CANADIENNE PÔ CRI-Y 1436 SYLLABE CANADIENNE HÉ PORTEUR 1437 SYLLABE CANADIENNE HI PORTEUR 1438 SYLLABE CANADIENNE PA 1439 SYLLABE CANADIENNE P 143A SYLLABE CANADIENNE POUÉ 143B SYLLABE CANADIENNE POUÉ CRI DES PLAINES 143C SYLLABE CANADIENNE POUI 143D SYLLABE CANADIENNE POUI CRI DES PLAINES 143E SYLLABE CANADIENNE POUÎ 143F SYLLABE CANADIENNE POUÎ CRI DES PLAINES 1440 SYLLABE CANADIENNE POUO 1441 SYLLABE CANADIENNE POUO CRI DES PLAINES 1442 SYLLABE CANADIENNE POUÔ 1443 SYLLABE CANADIENNE POUÔ CRI DES PLAINES 1444 SYLLABE CANADIENNE POUA 1445 SYLLABE CANADIENNE POUA CRI DES PLAINES 1446 SYLLABE CANADIENNE POU 1447 SYLLABE CANADIENNE POU CRI DES PLAINES 1448 SYLLABE CANADIENNE POU CRI-Y 1449 SYLLABE CANADIENNE P 144A SYLLABE CANADIENNE P CRI DES PLAINES 144B SYLLABE CANADIENNE H PORTEUR 144C SYLLABE CANADIENNE TÉ 144D SYLLABE CANADIENNE TÂÏ 144E SYLLABE CANADIENNE TI 144F SYLLABE CANADIENNE TÎ 1450 SYLLABE CANADIENNE TO 1451 SYLLABE CANADIENNE TÔ 1452 SYLLABE CANADIENNE TÔ CRI-Y 1453 SYLLABE CANADIENNE DÉ PORTEUR 1454 SYLLABE CANADIENNE DI PORTEUR 1455 SYLLABE CANADIENNE TA 1456 SYLLABE CANADIENNE T 1457 SYLLABE CANADIENNE TOUÉ 1458 SYLLABE CANADIENNE TOUÉ CRI DES PLAINES 1459 SYLLABE CANADIENNE TOUI 145A SYLLABE CANADIENNE TOUI CRI DES PLAINES 145B SYLLABE CANADIENNE TOUÎ 145C SYLLABE CANADIENNE TOUÎ CRI DES PLAINES 145D SYLLABE CANADIENNE TOUO 145E SYLLABE CANADIENNE TOUO CRI DES PLAINES 145F SYLLABE CANADIENNE TOUÔ 1460 SYLLABE CANADIENNE TOUÔ CRI DES PLAINES 1461 SYLLABE CANADIENNE TOUA 1462 SYLLABE CANADIENNE TOUA CRI DES PLAINES 1463 SYLLABE CANADIENNE TOU 1464 SYLLABE CANADIENNE TOU CRI DES PLAINES 1465 SYLLABE CANADIENNE TOU NASKAPI 1466 SYLLABE CANADIENNE T 1467 SYLLABE CANADIENNE TTÉ 1468 SYLLABE CANADIENNE TTI 1469 SYLLABE CANADIENNE TTO 146A SYLLABE CANADIENNE TTA 146B SYLLABE CANADIENNE KÉ 146C SYLLABE CANADIENNE KÂÏ 146D SYLLABE CANADIENNE KI 146E SYLLABE CANADIENNE KÎ 146F SYLLABE CANADIENNE KO 1470 SYLLABE CANADIENNE KÔ 1471 SYLLABE CANADIENNE KÔ CRI-Y 1472 SYLLABE CANADIENNE KA 1473 SYLLABE CANADIENNE K 1474 SYLLABE CANADIENNE KOUÉ 1475 SYLLABE CANADIENNE KOUÉ CRI DES PLAINES 1476 SYLLABE CANADIENNE KOUI 1477 SYLLABE CANADIENNE KOUI CRI DES PLAINES 1478 SYLLABE CANADIENNE KOUÎ 1479 SYLLABE CANADIENNE KOUÎ CRI DES PLAINES 147A SYLLABE CANADIENNE KOUO 147B SYLLABE CANADIENNE KOUO CRI DES PLAINES 147C SYLLABE CANADIENNE KOUÔ 147D SYLLABE CANADIENNE KOUÔ CRI DES PLAINES 147E SYLLABE CANADIENNE KOUA 147F SYLLABE CANADIENNE KOUA CRI DES PLAINES 1480 SYLLABE CANADIENNE KOU 1481 SYLLABE CANADIENNE KOU CRI DES PLAINES 1482 SYLLABE CANADIENNE KOU NASKAPI 1483 SYLLABE CANADIENNE K 1484 SYLLABE CANADIENNE KOU 1485 SYLLABE CANADIENNE KÉH ESCLAVE DU SUD 1486 SYLLABE CANADIENNE KIH ESCLAVE DU SUD 1487 SYLLABE CANADIENNE KOH ESCLAVE DU SUD 1488 SYLLABE CANADIENNE KAH ESCLAVE DU SUD 1489 SYLLABE CANADIENNE TCHÉ 148A SYLLABE CANADIENNE TCHÂÏ 148B SYLLABE CANADIENNE TCHI 148C SYLLABE CANADIENNE TCHÎ 148D SYLLABE CANADIENNE TCHO 148E SYLLABE CANADIENNE TCHÔ 148F SYLLABE CANADIENNE TCHÔ CRI-Y 1490 SYLLABE CANADIENNE TCHA 1491 SYLLABE CANADIENNE TCH 1492 SYLLABE CANADIENNE TCHOUÉ 1493 SYLLABE CANADIENNE TCHOUÉ CRI DES PLAINES 1494 SYLLABE CANADIENNE TCHOUI 1495 SYLLABE CANADIENNE TCHOUI CRI DES PLAINES 1496 SYLLABE CANADIENNE TCHOUÎ 1497 SYLLABE CANADIENNE TCHOUÎ CRI DES PLAINES 1498 SYLLABE CANADIENNE TCHOUO 1499 SYLLABE CANADIENNE TCHOUO CRI DES PLAINES 149A SYLLABE CANADIENNE TCHOUÔ 149B SYLLABE CANADIENNE TCHOUÔ CRI DES PLAINES 149C SYLLABE CANADIENNE TCHOUA 149D SYLLABE CANADIENNE TCHOUA CRI DES PLAINES 149E SYLLABE CANADIENNE TCHOU 149F SYLLABE CANADIENNE TCHOU CRI DES PLAINES 14A0 SYLLABE CANADIENNE TCHOU NASKAPI 14A1 SYLLABE CANADIENNE TCH 14A2 SYLLABE CANADIENNE TH SAYISSI 14A3 SYLLABE CANADIENNE MÉ 14A4 SYLLABE CANADIENNE MÂÏ 14A5 SYLLABE CANADIENNE MI 14A6 SYLLABE CANADIENNE MÎ 14A7 SYLLABE CANADIENNE MO 14A8 SYLLABE CANADIENNE MÔ 14A9 SYLLABE CANADIENNE MÔ CRI-Y 14AA SYLLABE CANADIENNE MA 14AB SYLLABE CANADIENNE M 14AC SYLLABE CANADIENNE MOUÉ 14AD SYLLABE CANADIENNE MOUÉ CRI DES PLAINES 14AE SYLLABE CANADIENNE MOUI 14AF SYLLABE CANADIENNE MOUI CRI DES PLAINES 14B0 SYLLABE CANADIENNE MOUÎ 14B1 SYLLABE CANADIENNE MOUÎ CRI DES PLAINES 14B2 SYLLABE CANADIENNE MOUO 14B3 SYLLABE CANADIENNE MOUO CRI DES PLAINES 14B4 SYLLABE CANADIENNE MOUÔ 14B5 SYLLABE CANADIENNE MOUÔ CRI DES PLAINES 14B6 SYLLABE CANADIENNE MOUA 14B7 SYLLABE CANADIENNE MOUA CRI DES PLAINES 14B8 SYLLABE CANADIENNE MOU 14B9 SYLLABE CANADIENNE MOU CRI DES PLAINES 14BA SYLLABE CANADIENNE MOU NASKAPI 14BB SYLLABE CANADIENNE M 14BC SYLLABE CANADIENNE M CRI DES PLAINES 14BD SYLLABE CANADIENNE MH 14BE SYLLABE CANADIENNE M ATHABASCAN 14BF SYLLABE CANADIENNE M SAYISSI 14C0 SYLLABE CANADIENNE NÉ 14C1 SYLLABE CANADIENNE NÂÏ 14C2 SYLLABE CANADIENNE NI 14C3 SYLLABE CANADIENNE NÎ 14C4 SYLLABE CANADIENNE NO 14C5 SYLLABE CANADIENNE NÔ 14C6 SYLLABE CANADIENNE NÔ CRI-Y 14C7 SYLLABE CANADIENNE NA 14C8 SYLLABE CANADIENNE N 14C9 SYLLABE CANADIENNE NOUÉ 14CA SYLLABE CANADIENNE NOUÉ CRI DES PLAINES 14CB SYLLABE CANADIENNE NOUA 14CC SYLLABE CANADIENNE NOUA CRI DES PLAINES 14CD SYLLABE CANADIENNE NOU 14CE SYLLABE CANADIENNE NOU CRI DES PLAINES 14CF SYLLABE CANADIENNE NOU NASKAPI 14D0 SYLLABE CANADIENNE N 14D1 SYLLABE CANADIENNE NG PORTEUR 14D2 SYLLABE CANADIENNE NH 14D3 SYLLABE CANADIENNE LÉ 14D4 SYLLABE CANADIENNE LÂÏ 14D5 SYLLABE CANADIENNE LI 14D6 SYLLABE CANADIENNE LÎ 14D7 SYLLABE CANADIENNE LO 14D8 SYLLABE CANADIENNE LÔ 14D9 SYLLABE CANADIENNE LÔ CRI-Y 14DA SYLLABE CANADIENNE LA 14DB SYLLABE CANADIENNE L 14DC SYLLABE CANADIENNE LOUÉ 14DD SYLLABE CANADIENNE LOUÉ CRI DES PLAINES 14DE SYLLABE CANADIENNE LOUI 14DF SYLLABE CANADIENNE LOUI CRI DES PLAINES 14E0 SYLLABE CANADIENNE LOUÎ 14E1 SYLLABE CANADIENNE LOUÎ CRI DES PLAINES 14E2 SYLLABE CANADIENNE LOUO 14E3 SYLLABE CANADIENNE LOUO CRI DES PLAINES 14E4 SYLLABE CANADIENNE LOUÔ 14E5 SYLLABE CANADIENNE LOUÔ CRI DES PLAINES 14E6 SYLLABE CANADIENNE LOUA 14E7 SYLLABE CANADIENNE LOUA CRI DES PLAINES 14E8 SYLLABE CANADIENNE LOU 14E9 SYLLABE CANADIENNE LOU CRI DES PLAINES 14EA SYLLABE CANADIENNE L 14EB SYLLABE CANADIENNE L CRI DES PLAINES 14EC SYLLABE CANADIENNE L MÉDIAL 14ED SYLLABE CANADIENNE SÉ 14EE SYLLABE CANADIENNE SÂÏ 14EF SYLLABE CANADIENNE SI 14F0 SYLLABE CANADIENNE SÎ 14F1 SYLLABE CANADIENNE SO 14F2 SYLLABE CANADIENNE SÔ 14F3 SYLLABE CANADIENNE SÔ CRI-Y 14F4 SYLLABE CANADIENNE SA 14F5 SYLLABE CANADIENNE S 14F6 SYLLABE CANADIENNE SOUÉ 14F7 SYLLABE CANADIENNE SOUÉ CRI DES PLAINES 14F8 SYLLABE CANADIENNE SOUI 14F9 SYLLABE CANADIENNE SOUI CRI DES PLAINES 14FA SYLLABE CANADIENNE SOUÎ 14FB SYLLABE CANADIENNE SOUÎ CRI DES PLAINES 14FC SYLLABE CANADIENNE SOUO 14FD SYLLABE CANADIENNE SOUO CRI DES PLAINES 14FE SYLLABE CANADIENNE SOUÔ 14FF SYLLABE CANADIENNE SOUÔ CRI DES PLAINES 1500 SYLLABE CANADIENNE SOUA 1501 SYLLABE CANADIENNE SOUA CRI DES PLAINES 1502 SYLLABE CANADIENNE SOU 1503 SYLLABE CANADIENNE SOU CRI DES PLAINES 1504 SYLLABE CANADIENNE SOU NASKAPI 1505 SYLLABE CANADIENNE S 1506 SYLLABE CANADIENNE S ATHABASCAN 1507 SYLLABE CANADIENNE SOU 1508 SYLLABE CANADIENNE S PIED-NOIR 1509 SYLLABE CANADIENNE SK CRI DE MOOSE 150A SYLLABE CANADIENNE SKOU NASKAPI 150B SYLLABE CANADIENNE S-OU NASKAPI 150C SYLLABE CANADIENNE SPOUA NASKAPI 150D SYLLABE CANADIENNE STOUA NASKAPI 150E SYLLABE CANADIENNE SKOUA NASKAPI 150F SYLLABE CANADIENNE STCHOUA NASKAPI 1510 SYLLABE CANADIENNE CHÉ 1511 SYLLABE CANADIENNE CHI 1512 SYLLABE CANADIENNE CHÎ 1513 SYLLABE CANADIENNE CHO 1514 SYLLABE CANADIENNE CHÔ 1515 SYLLABE CANADIENNE CHA 1516 SYLLABE CANADIENNE CH 1517 SYLLABE CANADIENNE CHOUÉ 1518 SYLLABE CANADIENNE CHOUÉ CRI DES PLAINES 1519 SYLLABE CANADIENNE CHOUI 151A SYLLABE CANADIENNE CHOUI CRI DES PLAINES 151B SYLLABE CANADIENNE CHOUÎ 151C SYLLABE CANADIENNE CHOUÎ CRI DES PLAINES 151D SYLLABE CANADIENNE CHOUO 151E SYLLABE CANADIENNE CHOUO CRI DES PLAINES 151F SYLLABE CANADIENNE CHOUÔ 1520 SYLLABE CANADIENNE CHOUÔ CRI DES PLAINES 1521 SYLLABE CANADIENNE CHOUA 1522 SYLLABE CANADIENNE CHOUA CRI DES PLAINES 1523 SYLLABE CANADIENNE CHOU 1524 SYLLABE CANADIENNE CHOU CRI DES PLAINES 1525 SYLLABE CANADIENNE CH 1526 SYLLABE CANADIENNE YÉ 1527 SYLLABE CANADIENNE YÂÏ 1528 SYLLABE CANADIENNE YI 1529 SYLLABE CANADIENNE YÎ 152A SYLLABE CANADIENNE YO 152B SYLLABE CANADIENNE YÔ 152C SYLLABE CANADIENNE YÔ CRI-Y 152D SYLLABE CANADIENNE YA 152E SYLLABE CANADIENNE Y 152F SYLLABE CANADIENNE YOUÉ 1530 SYLLABE CANADIENNE YOUÉ CRI DES PLAINES 1531 SYLLABE CANADIENNE YOUI 1532 SYLLABE CANADIENNE YOUI CRI DES PLAINES 1533 SYLLABE CANADIENNE YOUÎ 1534 SYLLABE CANADIENNE YOUÎ CRI DES PLAINES 1535 SYLLABE CANADIENNE YOUO 1536 SYLLABE CANADIENNE YOUO CRI DES PLAINES 1537 SYLLABE CANADIENNE YOUÔ 1538 SYLLABE CANADIENNE YOUÔ CRI DES PLAINES 1539 SYLLABE CANADIENNE YOUA 153A SYLLABE CANADIENNE YOUA CRI DES PLAINES 153B SYLLABE CANADIENNE YOU 153C SYLLABE CANADIENNE YOU CRI DES PLAINES 153D SYLLABE CANADIENNE YOU NASKAPI 153E SYLLABE CANADIENNE Y 153F SYLLABE CANADIENNE Y CRI BIBLIQUE 1540 SYLLABE CANADIENNE Y CRI DES PLAINES 1541 SYLLABE CANADIENNE YI SAYISSI 1542 SYLLABE CANADIENNE RÉ 1543 SYLLABE CANADIENNE RÉ CRI-R 1544 SYLLABE CANADIENNE LÉ CRI DES PLAINES 1545 SYLLABE CANADIENNE RÂÏ 1546 SYLLABE CANADIENNE RI 1547 SYLLABE CANADIENNE RÎ 1548 SYLLABE CANADIENNE RO 1549 SYLLABE CANADIENNE RÔ 154A SYLLABE CANADIENNE LO CRI DES PLAINES 154B SYLLABE CANADIENNE RA 154C SYLLABE CANADIENNE R 154D SYLLABE CANADIENNE LA CRI DES PLAINES 154E SYLLABE CANADIENNE ROU 154F SYLLABE CANADIENNE ROU CRI DES PLAINES 1550 SYLLABE CANADIENNE R 1551 SYLLABE CANADIENNE R CRI DES PLAINES 1552 SYLLABE CANADIENNE R MÉDIAL 1553 SYLLABE CANADIENNE FÉ 1554 SYLLABE CANADIENNE FÂÏ 1555 SYLLABE CANADIENNE FI 1556 SYLLABE CANADIENNE FÎ 1557 SYLLABE CANADIENNE FO 1558 SYLLABE CANADIENNE FÔ 1559 SYLLABE CANADIENNE FA 155A SYLLABE CANADIENNE F 155B SYLLABE CANADIENNE FOU 155C SYLLABE CANADIENNE FOU CRI DES PLAINES 155D SYLLABE CANADIENNE F 155E SYLLABE CANADIENNE THÉ 155F SYLLABE CANADIENNE THÉ CRI-N 1560 SYLLABE CANADIENNE THI 1561 SYLLABE CANADIENNE THI CRI-N 1562 SYLLABE CANADIENNE THÎ 1563 SYLLABE CANADIENNE THÎ CRI-N 1564 SYLLABE CANADIENNE THO 1565 SYLLABE CANADIENNE THÔ 1566 SYLLABE CANADIENNE THA 1567 SYLLABE CANADIENNE TH 1568 SYLLABE CANADIENNE THOU 1569 SYLLABE CANADIENNE THOU CRI DES PLAINES 156A SYLLABE CANADIENNE TH 156B SYLLABE CANADIENNE TTHÉ 156C SYLLABE CANADIENNE TTHI 156D SYLLABE CANADIENNE TTHO 156E SYLLABE CANADIENNE TTHA 156F SYLLABE CANADIENNE TTH 1570 SYLLABE CANADIENNE TYÉ 1571 SYLLABE CANADIENNE TYI 1572 SYLLABE CANADIENNE TYO 1573 SYLLABE CANADIENNE TYA 1574 SYLLABE CANADIENNE HÉ DU NUNAVIK 1575 SYLLABE CANADIENNE HI DU NUNAVIK 1576 SYLLABE CANADIENNE HÎ DU NUNAVIK 1577 SYLLABE CANADIENNE HO DU NUNAVIK 1578 SYLLABE CANADIENNE HÔ DU NUNAVIK 1579 SYLLABE CANADIENNE HA DU NUNAVIK 157A SYLLABE CANADIENNE H DU NUNAVIK 157B SYLLABE CANADIENNE H DU NUNAVIK 157C SYLLABE CANADIENNE H DU NUNAVUT 157D SYLLABE CANADIENNE HK 157E SYLLABE CANADIENNE QÂÏ 157F SYLLABE CANADIENNE QI 1580 SYLLABE CANADIENNE QÎ 1581 SYLLABE CANADIENNE QO 1582 SYLLABE CANADIENNE QÔ 1583 SYLLABE CANADIENNE QA 1584 SYLLABE CANADIENNE Q 1585 SYLLABE CANADIENNE Q 1586 SYLLABE CANADIENNE TLHÉ 1587 SYLLABE CANADIENNE TLHI 1588 SYLLABE CANADIENNE TLHO 1589 SYLLABE CANADIENNE TLHA 158A SYLLABE CANADIENNE RÉ CRI DES PLAINES 158B SYLLABE CANADIENNE RI CRI DES PLAINES 158C SYLLABE CANADIENNE RO CRI DES PLAINES 158D SYLLABE CANADIENNE RA CRI DES PLAINES 158E SYLLABE CANADIENNE NGÂÏ 158F SYLLABE CANADIENNE NGI 1590 SYLLABE CANADIENNE NGÎ 1591 SYLLABE CANADIENNE NGO 1592 SYLLABE CANADIENNE NGÔ 1593 SYLLABE CANADIENNE NGA 1594 SYLLABE CANADIENNE NG 1595 SYLLABE CANADIENNE NG 1596 SYLLABE CANADIENNE NNG 1597 SYLLABE CANADIENNE CHÉ SAYISSI 1598 SYLLABE CANADIENNE CHI SAYISSI 1599 SYLLABE CANADIENNE CHO SAYISSI 159A SYLLABE CANADIENNE CHA SAYISSI 159B SYLLABE CANADIENNE THÉ CRI DES BOIS 159C SYLLABE CANADIENNE THI CRI DES BOIS 159D SYLLABE CANADIENNE THO CRI DES BOIS 159E SYLLABE CANADIENNE THA CRI DES BOIS 159F SYLLABE CANADIENNE TH CRI DES BOIS 15A0 SYLLABE CANADIENNE LHI 15A1 SYLLABE CANADIENNE LHÎ 15A2 SYLLABE CANADIENNE LHO 15A3 SYLLABE CANADIENNE LHÔ 15A4 SYLLABE CANADIENNE LHA 15A5 SYLLABE CANADIENNE LH 15A6 SYLLABE CANADIENNE LH 15A7 SYLLABE CANADIENNE THÉ CRI-TH 15A8 SYLLABE CANADIENNE THI CRI-TH 15A9 SYLLABE CANADIENNE THÎ CRI-TH 15AA SYLLABE CANADIENNE THO CRI-TH 15AB SYLLABE CANADIENNE THÔ CRI-TH 15AC SYLLABE CANADIENNE THA CRI-TH 15AD SYLLABE CANADIENNE TH CRI-TH 15AE SYLLABE CANADIENNE TH CRI-TH 15AF SYLLABE CANADIENNE B AÏVILIK 15B0 SYLLABE CANADIENNE É PIED-NOIR 15B1 SYLLABE CANADIENNE I PIED-NOIR 15B2 SYLLABE CANADIENNE O PIED-NOIR 15B3 SYLLABE CANADIENNE A PIED-NOIR 15B4 SYLLABE CANADIENNE OUÉ PIED-NOIR 15B5 SYLLABE CANADIENNE OUI PIED-NOIR 15B6 SYLLABE CANADIENNE OUO PIED-NOIR 15B7 SYLLABE CANADIENNE OUA PIED-NOIR 15B8 SYLLABE CANADIENNE NÉ PIED-NOIR 15B9 SYLLABE CANADIENNE NI PIED-NOIR 15BA SYLLABE CANADIENNE NO PIED-NOIR 15BB SYLLABE CANADIENNE NA PIED-NOIR 15BC SYLLABE CANADIENNE KÉ PIED-NOIR 15BD SYLLABE CANADIENNE KI PIED-NOIR 15BE SYLLABE CANADIENNE KO PIED-NOIR 15BF SYLLABE CANADIENNE KA PIED-NOIR 15C0 SYLLABE CANADIENNE HÉ SAYISSI 15C1 SYLLABE CANADIENNE HI SAYISSI 15C2 SYLLABE CANADIENNE HO SAYISSI 15C3 SYLLABE CANADIENNE HA SAYISSI 15C4 SYLLABE CANADIENNE GHOU PORTEUR 15C5 SYLLABE CANADIENNE GHO PORTEUR 15C6 SYLLABE CANADIENNE GHE PORTEUR 15C7 SYLLABE CANADIENNE GHÉ PORTEUR 15C8 SYLLABE CANADIENNE GHI PORTEUR 15C9 SYLLABE CANADIENNE GHA PORTEUR 15CA SYLLABE CANADIENNE ROU PORTEUR 15CB SYLLABE CANADIENNE RO PORTEUR 15CC SYLLABE CANADIENNE RE PORTEUR 15CD SYLLABE CANADIENNE RÉ PORTEUR 15CE SYLLABE CANADIENNE RI PORTEUR 15CF SYLLABE CANADIENNE RA PORTEUR 15D0 SYLLABE CANADIENNE OUOU PORTEUR 15D1 SYLLABE CANADIENNE OUO PORTEUR 15D2 SYLLABE CANADIENNE OUE PORTEUR 15D3 SYLLABE CANADIENNE OUÉ PORTEUR 15D4 SYLLABE CANADIENNE OUI PORTEUR 15D5 SYLLABE CANADIENNE OUA PORTEUR 15D6 SYLLABE CANADIENNE HOUOU PORTEUR 15D7 SYLLABE CANADIENNE HOUO PORTEUR 15D8 SYLLABE CANADIENNE HOUE PORTEUR 15D9 SYLLABE CANADIENNE HOUÉ PORTEUR 15DA SYLLABE CANADIENNE HOUI PORTEUR 15DB SYLLABE CANADIENNE HOUA PORTEUR 15DC SYLLABE CANADIENNE THOU PORTEUR 15DD SYLLABE CANADIENNE THO PORTEUR 15DE SYLLABE CANADIENNE THE PORTEUR 15DF SYLLABE CANADIENNE THÉ PORTEUR 15E0 SYLLABE CANADIENNE THI PORTEUR 15E1 SYLLABE CANADIENNE THA PORTEUR 15E2 SYLLABE CANADIENNE TTOU PORTEUR 15E3 SYLLABE CANADIENNE TTO PORTEUR 15E4 SYLLABE CANADIENNE TTE PORTEUR 15E5 SYLLABE CANADIENNE TTÉ PORTEUR 15E6 SYLLABE CANADIENNE TTI PORTEUR 15E7 SYLLABE CANADIENNE TTA PORTEUR 15E8 SYLLABE CANADIENNE POU PORTEUR 15E9 SYLLABE CANADIENNE PO PORTEUR 15EA SYLLABE CANADIENNE PE PORTEUR 15EB SYLLABE CANADIENNE PÉ PORTEUR 15EC SYLLABE CANADIENNE PI PORTEUR 15ED SYLLABE CANADIENNE PA PORTEUR 15EE SYLLABE CANADIENNE P PORTEUR 15EF SYLLABE CANADIENNE GOU PORTEUR 15F0 SYLLABE CANADIENNE GO PORTEUR 15F1 SYLLABE CANADIENNE GE PORTEUR 15F2 SYLLABE CANADIENNE GÉ PORTEUR 15F3 SYLLABE CANADIENNE GI PORTEUR 15F4 SYLLABE CANADIENNE GA PORTEUR 15F5 SYLLABE CANADIENNE KHOU PORTEUR 15F6 SYLLABE CANADIENNE KHO PORTEUR 15F7 SYLLABE CANADIENNE KHE PORTEUR 15F8 SYLLABE CANADIENNE KHÉ PORTEUR 15F9 SYLLABE CANADIENNE KHI PORTEUR 15FA SYLLABE CANADIENNE KHA PORTEUR 15FB SYLLABE CANADIENNE KKOU PORTEUR 15FC SYLLABE CANADIENNE KKO PORTEUR 15FD SYLLABE CANADIENNE KKE PORTEUR 15FE SYLLABE CANADIENNE KKÉ PORTEUR 15FF SYLLABE CANADIENNE KKI PORTEUR 1600 SYLLABE CANADIENNE KKA PORTEUR 1601 SYLLABE CANADIENNE KK PORTEUR 1602 SYLLABE CANADIENNE NOU PORTEUR 1603 SYLLABE CANADIENNE NO PORTEUR 1604 SYLLABE CANADIENNE NE PORTEUR 1605 SYLLABE CANADIENNE NÉ PORTEUR 1606 SYLLABE CANADIENNE NI PORTEUR 1607 SYLLABE CANADIENNE NA PORTEUR 1608 SYLLABE CANADIENNE MOU PORTEUR 1609 SYLLABE CANADIENNE MO PORTEUR 160A SYLLABE CANADIENNE ME PORTEUR 160B SYLLABE CANADIENNE MÉ PORTEUR 160C SYLLABE CANADIENNE MI PORTEUR 160D SYLLABE CANADIENNE MA PORTEUR 160E SYLLABE CANADIENNE YOU PORTEUR 160F SYLLABE CANADIENNE YO PORTEUR 1610 SYLLABE CANADIENNE YE PORTEUR 1611 SYLLABE CANADIENNE YÉ PORTEUR 1612 SYLLABE CANADIENNE YI PORTEUR 1613 SYLLABE CANADIENNE YA PORTEUR 1614 SYLLABE CANADIENNE DJOU PORTEUR 1615 SYLLABE CANADIENNE DJOU SAYISSI 1616 SYLLABE CANADIENNE DJO PORTEUR 1617 SYLLABE CANADIENNE DJE PORTEUR 1618 SYLLABE CANADIENNE DJÉ PORTEUR 1619 SYLLABE CANADIENNE DJI PORTEUR 161A SYLLABE CANADIENNE DJI SAYISSI 161B SYLLABE CANADIENNE DJA PORTEUR 161C SYLLABE CANADIENNE DJJOU PORTEUR 161D SYLLABE CANADIENNE DJJO PORTEUR 161E SYLLABE CANADIENNE DJJE PORTEUR 161F SYLLABE CANADIENNE DJJÉ PORTEUR 1620 SYLLABE CANADIENNE DJJI PORTEUR 1621 SYLLABE CANADIENNE DJJA PORTEUR 1622 SYLLABE CANADIENNE LOU PORTEUR 1623 SYLLABE CANADIENNE LO PORTEUR 1624 SYLLABE CANADIENNE LE PORTEUR 1625 SYLLABE CANADIENNE LÉ PORTEUR 1626 SYLLABE CANADIENNE LI PORTEUR 1627 SYLLABE CANADIENNE LA PORTEUR 1628 SYLLABE CANADIENNE DLOU PORTEUR 1629 SYLLABE CANADIENNE DLO PORTEUR 162A SYLLABE CANADIENNE DLE PORTEUR 162B SYLLABE CANADIENNE DLÉ PORTEUR 162C SYLLABE CANADIENNE DLI PORTEUR 162D SYLLABE CANADIENNE DLA PORTEUR 162E SYLLABE CANADIENNE LHOU PORTEUR 162F SYLLABE CANADIENNE LHO PORTEUR 1630 SYLLABE CANADIENNE LHE PORTEUR 1631 SYLLABE CANADIENNE LHÉ PORTEUR 1632 SYLLABE CANADIENNE LHI PORTEUR 1633 SYLLABE CANADIENNE LHA PORTEUR 1634 SYLLABE CANADIENNE TLHOU PORTEUR 1635 SYLLABE CANADIENNE TLHO PORTEUR 1636 SYLLABE CANADIENNE TLHE PORTEUR 1637 SYLLABE CANADIENNE TLHÉ PORTEUR 1638 SYLLABE CANADIENNE TLHI PORTEUR 1639 SYLLABE CANADIENNE TLHA PORTEUR 163A SYLLABE CANADIENNE TLOU PORTEUR 163B SYLLABE CANADIENNE TLO PORTEUR 163C SYLLABE CANADIENNE TLE PORTEUR 163D SYLLABE CANADIENNE TLÉ PORTEUR 163E SYLLABE CANADIENNE TLI PORTEUR 163F SYLLABE CANADIENNE TLA PORTEUR 1640 SYLLABE CANADIENNE ZOU PORTEUR 1641 SYLLABE CANADIENNE ZO PORTEUR 1642 SYLLABE CANADIENNE ZE PORTEUR 1643 SYLLABE CANADIENNE ZÉ PORTEUR 1644 SYLLABE CANADIENNE ZI PORTEUR 1645 SYLLABE CANADIENNE ZA PORTEUR 1646 SYLLABE CANADIENNE Z PORTEUR 1647 SYLLABE CANADIENNE Z PORTEUR INITIAL 1648 SYLLABE CANADIENNE DZOU PORTEUR 1649 SYLLABE CANADIENNE DZO PORTEUR 164A SYLLABE CANADIENNE DZE PORTEUR 164B SYLLABE CANADIENNE DZÉ PORTEUR 164C SYLLABE CANADIENNE DZI PORTEUR 164D SYLLABE CANADIENNE DZA PORTEUR 164E SYLLABE CANADIENNE SOU PORTEUR 164F SYLLABE CANADIENNE SO PORTEUR 1650 SYLLABE CANADIENNE SE PORTEUR 1651 SYLLABE CANADIENNE SÉ PORTEUR 1652 SYLLABE CANADIENNE SI PORTEUR 1653 SYLLABE CANADIENNE SA PORTEUR 1654 SYLLABE CANADIENNE CHOU PORTEUR 1655 SYLLABE CANADIENNE CHO PORTEUR 1656 SYLLABE CANADIENNE CHE PORTEUR 1657 SYLLABE CANADIENNE CHÉ PORTEUR 1658 SYLLABE CANADIENNE CHI PORTEUR 1659 SYLLABE CANADIENNE CHA PORTEUR 165A SYLLABE CANADIENNE CH PORTEUR 165B SYLLABE CANADIENNE TSOU PORTEUR 165C SYLLABE CANADIENNE TSO PORTEUR 165D SYLLABE CANADIENNE TSE PORTEUR 165E SYLLABE CANADIENNE TSÉ PORTEUR 165F SYLLABE CANADIENNE TSI PORTEUR 1660 SYLLABE CANADIENNE TSA PORTEUR 1661 SYLLABE CANADIENNE TCHOU PORTEUR 1662 SYLLABE CANADIENNE TCHO PORTEUR 1663 SYLLABE CANADIENNE TCHE PORTEUR 1664 SYLLABE CANADIENNE TCHÉ PORTEUR 1665 SYLLABE CANADIENNE TCHI PORTEUR 1666 SYLLABE CANADIENNE TCHA PORTEUR 1667 SYLLABE CANADIENNE TTSOU PORTEUR 1668 SYLLABE CANADIENNE TTSO PORTEUR 1669 SYLLABE CANADIENNE TTSE PORTEUR 166A SYLLABE CANADIENNE TTSÉ PORTEUR 166B SYLLABE CANADIENNE TTSI PORTEUR 166C SYLLABE CANADIENNE TTSA PORTEUR 166D SIGNE SYLLABE CANADIENNE KHI 166E POINT SYLLABE CANADIENNE 166F SYLLABE CANADIENNE QAÏ 1670 SYLLABE CANADIENNE NGAÏ 1671 SYLLABE CANADIENNE NNGI 1672 SYLLABE CANADIENNE NNGÎ 1673 SYLLABE CANADIENNE NNGO 1674 SYLLABE CANADIENNE NNGÔ 1675 SYLLABE CANADIENNE NNGA 1676 SYLLABE CANADIENNE NNG @@ 1680 Ogam 169F 1680 ESPACE D'OGAM 1681 LETTRE D'OGAM BEITH 1682 LETTRE D'OGAM LUIS 1683 LETTRE D'OGAM FEARN 1684 LETTRE D'OGAM SAIL 1685 LETTRE D'OGAM NION 1686 LETTRE D'OGAM UATH 1687 LETTRE D'OGAM DAIR 1688 LETTRE D'OGAM TINNE 1689 LETTRE D'OGAM COLL 168A LETTRE D'OGAM CEIRT 168B LETTRE D'OGAM MUIN 168C LETTRE D'OGAM GORT 168D LETTRE D'OGAM NGÉADAL 168E LETTRE D'OGAM STRAIF 168F LETTRE D'OGAM RUIS 1690 LETTRE D'OGAM AILM 1691 LETTRE D'OGAM ONN 1692 LETTRE D'OGAM ÚR 1693 LETTRE D'OGAM EADHADH 1694 LETTRE D'OGAM IODHADH 1695 LETTRE D'OGAM ÉABHADH 1696 LETTRE D'OGAM ÓR 1697 LETTRE D'OGAM UILLEANN 1698 LETTRE D'OGAM IFÍN 1699 LETTRE D'OGAM EAMHANCHOLL 169A LETTRE D'OGAM PEITH 169B PLUME D'OGAM 169C PLUME RÉFLÉCHIE D'OGAM @@ 16A0 Runes 16FF 16A0 LETTRE RUNIQUE FÉHU FÉOH FÉ F 16A1 LETTRE RUNIQUE V 16A2 LETTRE RUNIQUE URUZ UR OU 16A3 LETTRE RUNIQUE YR 16A4 LETTRE RUNIQUE Y 16A5 LETTRE RUNIQUE W 16A6 LETTRE RUNIQUE THURISAZ, THORN, THURS, TH 16A7 LETTRE RUNIQUE ETH 16A8 LETTRE RUNIQUE ANSUZ A 16A9 LETTRE RUNIQUE OS O 16AA LETTRE RUNIQUE AC A 16AB LETTRE RUNIQUE ÆSC 16AC LETTRE RUNIQUE OSS-À-BRANCHE-LONGUE O 16AD LETTRE RUNIQUE OSS-À-RAMILLE O 16AE LETTRE RUNIQUE O 16AF LETTRE RUNIQUE OE 16B0 LETTRE RUNIQUE ON 16B1 LETTRE RUNIQUE RAIDO RAD REID R 16B2 LETTRE RUNIQUE KAUNA 16B3 LETTRE RUNIQUE CEN 16B4 LETTRE RUNIQUE KAUN K 16B5 LETTRE RUNIQUE G 16B6 LETTRE RUNIQUE ENG 16B7 LETTRE RUNIQUE GEBO GEOFU G 16B8 LETTRE RUNIQUE GAR 16B9 LETTRE RUNIQUE WUNJO WYNN W 16BA LETTRE RUNIQUE HAGLAZ H 16BB LETTRE RUNIQUE HÆGL H 16BC LETTRE RUNIQUE HAGALL-À-LONGUE-BRANCHE H 16BD LETTRE RUNIQUE HAGALL-À-RAMILLE H 16BE LETTRE RUNIQUE NAUDIZ NYD NAUD N 16BF LETTRE RUNIQUE NAUD-À-RAMILLE N 16C0 LETTRE RUNIQUE N-POINTÉ 16C1 LETTRE RUNIQUE ISA IS ISS I 16C2 LETTRE RUNIQUE E 16C3 LETTRE RUNIQUE JERAN J 16C4 LETTRE RUNIQUE GER 16C5 LETTRE RUNIQUE AR-À-LONGUE-BRANCHE Æ 16C6 LETTRE RUNIQUE AR A 16C7 LETTRE RUNIQUE IWAZ EOH 16C8 LETTRE RUNIQUE PERTHRO PEORTH P 16C9 LETTRE RUNIQUE ALGIZ EOLHX 16CA LETTRE RUNIQUE SOWILO S 16CB LETTRE RUNIQUE SIGEL SOL-À-LONGUE-BRANCHE S 16CC LETTRE RUNIQUE SOL-À-RAMILLE S 16CD LETTRE RUNIQUE C 16CE LETTRE RUNIQUE Z 16CF LETTRE RUNIQUE TIWAZ TIR TYR T 16D0 LETTRE RUNIQUE TYR-À-RAMILLE T 16D1 LETTRE RUNIQUE D 16D2 LETTRE RUNIQUE BERKANAN BEORC BIARKAN B 16D3 LETTRE RUNIQUE BIARKAN-À-RAMILLE B 16D4 LETTRE RUNIQUE P-POINTÉ 16D5 LETTRE RUNIQUE P-OUVERT 16D6 LETTRE RUNIQUE EHWAZ EH E 16D7 LETTRE RUNIQUE MANNAZ MAN M 16D8 LETTRE RUNIQUE MADR-À-LONGUE-BRANCHE M 16D9 LETTRE RUNIQUE MADR-À-RAMILLE M 16DA LETTRE RUNIQUE LAUKAZ LAGU LOGR L 16DB LETTRE RUNIQUE L-POINTÉ 16DC LETTRE RUNIQUE INGWAZ 16DD LETTRE RUNIQUE ING 16DE LETTRE RUNIQUE DAGAZ DÆG D 16DF LETTRE RUNIQUE OTHALAN ETHEL O 16E0 LETTRE RUNIQUE EAR 16E1 LETTRE RUNIQUE IOR 16E2 LETTRE RUNIQUE CWEORTH 16E3 LETTRE RUNIQUE CALC 16E4 LETTRE RUNIQUE CEALC 16E5 LETTRE RUNIQUE STAN 16E6 LETTRE RUNIQUE YR-À-LONGUE-BRANCHE 16E7 LETTRE RUNIQUE YR-À-RAMILLE 16E8 LETTRE RUNIQUE YR-ISLANDAIS 16E9 LETTRE RUNIQUE Q 16EA LETTRE RUNIQUE X 16EB PONCTUATION RUNIQUE SIMPLE 16EC PONCTUATION RUNIQUE MULTIPLE 16ED PONCTUATION RUNIQUE EN CROIX 16EE SYMBOLE RUNIQUE ARLAUG (chiffre d'or 17) 16EF SYMBOLE RUNIQUE TVIMADUR (chiffre d'or 18) 16F0 SYMBOLE RUNIQUE BELGTHOR (chiffre d'or 19) @@ 1780 Khmer 17FF 1780 LETTRE KHMÈRE KA 1781 LETTRE KHMÈRE KHA 1782 LETTRE KHMÈRE KO 1783 LETTRE KHMÈRE KHO 1784 LETTRE KHMÈRE NGO 1785 LETTRE KHMÈRE TCHA 1786 LETTRE KHMÈRE TCHHA 1787 LETTRE KHMÈRE TCHO 1788 LETTRE KHMÈRE TCHHO 1789 LETTRE KHMÈRE ÑO 178A LETTRE KHMÈRE DA 178B LETTRE KHMÈRE TTHA 178C LETTRE KHMÈRE DO 178D LETTRE KHMÈRE TTHO 178E LETTRE KHMÈRE NNO 178F LETTRE KHMÈRE TA 1790 LETTRE KHMÈRE THA 1791 LETTRE KHMÈRE TO 1792 LETTRE KHMÈRE THO 1793 LETTRE KHMÈRE NO 1794 LETTRE KHMÈRE BA 1795 LETTRE KHMÈRE PHA 1796 LETTRE KHMÈRE PO 1797 LETTRE KHMÈRE PHO 1798 LETTRE KHMÈRE MO 1799 LETTRE KHMÈRE YO 179A LETTRE KHMÈRE RO 179B LETTRE KHMÈRE LO 179C LETTRE KHMÈRE VO 179D LETTRE KHMÈRE ÇA 179E LETTRE KHMÈRE CHO 179F LETTRE KHMÈRE SA 17A0 LETTRE KHMÈRE HA 17A1 LETTRE KHMÈRE LA 17A2 LETTRE KHMÈRE A 17A3 VOYELLE PLEINE KHMÈRE A 17A4 VOYELLE PLEINE KHMÈRE  17A5 VOYELLE PLEINE KHMÈRE I 17A6 VOYELLE PLEINE KHMÈRE Î 17A7 VOYELLE PLEINE KHMÈRE OU 17A8 VOYELLE PLEINE KHMÈRE OUK 17A9 VOYELLE PLEINE KHMÈRE OÛ 17AA VOYELLE PLEINE KHMÈRE AÛ 17AB VOYELLE PLEINE KHMÈRE RÜ 17AC VOYELLE PLEINE KHMÈRE RÜÜ 17AD VOYELLE PLEINE KHMÈRE LÜ 17AE VOYELLE PLEINE KHMÈRE LÜÜ 17AF VOYELLE PLEINE KHMÈRE É 17B0 VOYELLE PLEINE KHMÈRE AÏ 17B1 VOYELLE PLEINE KHMÈRE Ô TYPE UN 17B2 VOYELLE PLEINE KHMÈRE Ô TYPE DEUX 17B3 VOYELLE PLEINE KHMÈRE AOU 17B4 VOYELLE KHMÈRE INHÉRENTE A 17B5 VOYELLE KHMÈRE INHÉRENTE  17B6 VOYELLE DIACRITIQUE KHMÈRE  17B7 VOYELLE DIACRITIQUE KHMÈRE I 17B8 VOYELLE DIACRITIQUE KHMÈRE Î 17B9 VOYELLE DIACRITIQUE KHMÈRE Ü 17BA VOYELLE DIACRITIQUE KHMÈRE ÜÜ 17BB VOYELLE DIACRITIQUE KHMÈRE OU 17BC VOYELLE DIACRITIQUE KHMÈRE OÛ 17BD VOYELLE DIACRITIQUE KHMÈRE OUA 17BE VOYELLE DIACRITIQUE KHMÈRE OE 17BF VOYELLE DIACRITIQUE KHMÈRE ÜŒ (üeu) 17C0 VOYELLE DIACRITIQUE KHMÈRE IÉ (iœ) 17C1 VOYELLE DIACRITIQUE KHMÈRE É 17C2 VOYELLE DIACRITIQUE KHMÈRE È 17C3 VOYELLE DIACRITIQUE KHMÈRE AÏ 17C4 VOYELLE DIACRITIQUE KHMÈRE Ô 17C5 VOYELLE DIACRITIQUE KHMÈRE AOU 17C6 SIGNE KHMER NIKAHIT 17C7 SIGNE KHMER RÉAHMOUK 17C8 SIGNE KHMER YOÛKALÉAPINTOU 17C9 SIGNE KHMER MOÛSIKATOAN (dent de souris) 17CA SIGNE KHMER TRÎSAP 17CB SIGNE KHMER BANTOTCH 17CC SIGNE KHMER ROBAT 17CD SIGNE KHMER TOANDAKHIAT 17CE SIGNE KHMER KAKABAT (patte de corbeau) 17CF SIGNE KHMER AHSDA 17D0 SIGNE KHMER SAÑÑOK SAÑÑA 17D1 SIGNE KHMER VIRIAM 17D2 SIGNE KHMER TCHOENG 17D3 SIGNE KHMER BATHAMASAT 17D4 SIGNE KHMER KHAN 17D5 SIGNE KHMER BARIYÔSAN 17D6 SIGNE KHMER TCHAMNOTCH PÎ KOÛH 17D7 SIGNE KHMER LEK TÔ 17D8 SIGNE KHMER BEYYAL 17D9 SIGNE KHMER PHNÈK MOAN (œil de coq) 17DA SIGNE KHMER KÔMOÛT (urine de vache) 17DB SYMBOLE MONÉTAIRE KHMER RIEL 17DC SIGNE KHMER AVAKRAHASAÑÑA 17E0 CHIFFRE KHMER ZÉRO 17E1 CHIFFRE KHMER UN 17E2 CHIFFRE KHMER DEUX 17E3 CHIFFRE KHMER TROIS 17E4 CHIFFRE KHMER QUATRE 17E5 CHIFFRE KHMER CINQ 17E6 CHIFFRE KHMER SIX 17E7 CHIFFRE KHMER SEPT 17E8 CHIFFRE KHMER HUIT 17E9 CHIFFRE KHMER NEUF @@ 1800 Mongol 18AF 1800 BIRGA MONGOL 1801 POINTS DE SUSPENSION MONGOLS 1802 VIRGULE MONGOLE 1803 POINT MONGOL 1804 DEUX-POINTS MONGOL 1805 QUATRE-POINTS MONGOL 1806 TRAIT D'UNION VIRTUEL MONGOL TODO 1807 SÉPARATEUR DE SYLLABES MONGOL SÎBÉ 1808 VIRGULE MONGOLE MANDCHOUE 1809 POINT MONGOL MANDCHOU 180A NIROUGOU MONGOL 180B SÉLECTEUR DE VARIATION LIBRE MONGOL UN 180C SÉLECTEUR DE VARIATION LIBRE MONGOL DEUX 180D SÉLECTEUR DE VARIATION LIBRE MONGOL TROIS 180E SÉPARATEUR DE VOYELLES MONGOL 1810 CHIFFRE MONGOL ZÉRO 1811 CHIFFRE MONGOL UN 1812 CHIFFRE MONGOL DEUX 1813 CHIFFRE MONGOL TROIS 1814 CHIFFRE MONGOL QUATRE 1815 CHIFFRE MONGOL CINQ 1816 CHIFFRE MONGOL SIX 1817 CHIFFRE MONGOL SEPT 1818 CHIFFRE MONGOL HUIT 1819 CHIFFRE MONGOL NEUF 1820 LETTRE MONGOLE A 1821 LETTRE MONGOLE È (ä) 1822 LETTRE MONGOLE I 1823 LETTRE MONGOLE O 1824 LETTRE MONGOLE OU 1825 LETTRE MONGOLE EU (ö) 1826 LETTRE MONGOLE U (ü) 1827 LETTRE MONGOLE Î 1828 LETTRE MONGOLE NA 1829 LETTRE MONGOLE ANG 182A LETTRE MONGOLE BA 182B LETTRE MONGOLE PA 182C LETTRE MONGOLE QA (xa) 182D LETTRE MONGOLE GA 182E LETTRE MONGOLE MA 182F LETTRE MONGOLE LA 1830 LETTRE MONGOLE SA 1831 LETTRE MONGOLE CHA 1832 LETTRE MONGOLE TA 1833 LETTRE MONGOLE DA 1834 LETTRE MONGOLE TCHA 1835 LETTRE MONGOLE DJA 1836 LETTRE MONGOLE YA 1837 LETTRE MONGOLE RA 1838 LETTRE MONGOLE WA 1839 LETTRE MONGOLE FA 183A LETTRE MONGOLE KA 183B LETTRE MONGOLE KHA 183C LETTRE MONGOLE TSA 183D LETTRE MONGOLE ZA 183E LETTRE MONGOLE H 183F LETTRE MONGOLE ZRA 1840 LETTRE MONGOLE LHA 1841 LETTRE MONGOLE TCHE 1842 LETTRE MONGOLE TCH'E 1843 LETTRE MONGOLE DIACRITIQUE LONGUE VOYELLE TODO 1844 LETTRE MONGOLE É TODO 1845 LETTRE MONGOLE I TODO 1846 LETTRE MONGOLE O TODO 1847 LETTRE MONGOLE OU TODO 1848 LETTRE MONGOLE EU TODO (ö todo) 1849 LETTRE MONGOLE U TODO (ü todo) 184A LETTRE MONGOLE ANG TODO 184B LETTRE MONGOLE BA TODO 184C LETTRE MONGOLE PA TODO 184D LETTRE MONGOLE QA TODO (xa todo) 184E LETTRE MONGOLE GA TODO 184F LETTRE MONGOLE MA TODO 1850 LETTRE MONGOLE TA TODO 1851 LETTRE MONGOLE DA TODO 1852 LETTRE MONGOLE TCHA TODO 1853 LETTRE MONGOLE DJA TODO 1854 LETTRE MONGOLE TSA TODO 1855 LETTRE MONGOLE YA TODO 1856 LETTRE MONGOLE WA TODO 1857 LETTRE MONGOLE KA TODO 1858 LETTRE MONGOLE G TODO 1859 LETTRE MONGOLE H TODO 185A LETTRE MONGOLE DJIA TODO 185B LETTRE MONGOLE NIA TODO 185C LETTRE MONGOLE DZA TODO 185D LETTRE MONGOLE É SÎBÉ 185E LETTRE MONGOLE I SÎBÉ 185F LETTRE MONGOLE IY SÎBÉ 1860 LETTRE MONGOLE U SÎBÉ (ü sîbé) 1861 LETTRE MONGOLE OU SÎBÉ 1862 LETTRE MONGOLE ANG SÎBÉ 1863 LETTRE MONGOLE KA SÎBÉ 1864 LETTRE MONGOLE GA SÎBÉ 1865 LETTRE MONGOLE HA SÎBÉ 1866 LETTRE MONGOLE PA SÎBÉ 1867 LETTRE MONGOLE CHA SÎBÉ 1868 LETTRE MONGOLE TA SÎBÉ 1869 LETTRE MONGOLE DA SÎBÉ 186A LETTRE MONGOLE DJA SÎBÉ 186B LETTRE MONGOLE FA SÎBÉ 186C LETTRE MONGOLE G SÎBÉ 186D LETTRE MONGOLE H SÎBÉ 186E LETTRE MONGOLE TSA SÎBÉ 186F LETTRE MONGOLE ZA SÎBÉ 1870 LETTRE MONGOLE R SÎBÉ 1871 LETTRE MONGOLE TCHA SÎBÉ 1872 LETTRE MONGOLE ZHA SÎBÉ 1873 LETTRE MONGOLE I MANDCHOU 1874 LETTRE MONGOLE KA MANDCHOU 1875 LETTRE MONGOLE RA MANDCHOU 1876 LETTRE MONGOLE FA MANDCHOU 1877 LETTRE MONGOLE ZHA MANDCHOU 1880 LETTRE MONGOLE ANOUSVÂRA UN ALI GALI 1881 LETTRE MONGOLE VISARGA UN ALI GALI 1882 LETTRE MONGOLE DAMAROU ALI GALI 1883 LETTRE MONGOLE OUBADAMA ALI GALI 1884 LETTRE MONGOLE OUBADAMA ALI GALI CULBUTÉ 1885 LETTRE MONGOLE BALOUDA ALI GALI 1886 LETTRE MONGOLE TROIS BALOUDAS ALI GALI 1887 LETTRE MONGOLE A ALI GALI 1888 LETTRE MONGOLE I ALI GALI 1889 LETTRE MONGOLE KA ALI GALI 188A LETTRE MONGOLE NGA ALI GALI 188B LETTRE MONGOLE TCHA ALI GALI 188C LETTRE MONGOLE TTA ALI GALI 188D LETTRE MONGOLE TTHA ALI GALI 188E LETTRE MONGOLE DDA ALI GALI 188F LETTRE MONGOLE NNA ALI GALI 1890 LETTRE MONGOLE TA ALI GALI 1891 LETTRE MONGOLE DA ALI GALI 1892 LETTRE MONGOLE PA ALI GALI 1893 LETTRE MONGOLE PHA ALI GALI 1894 LETTRE MONGOLE ÇA ALI GALI 1895 LETTRE MONGOLE ZHA ALI GALI 1896 LETTRE MONGOLE ZA ALI GALI 1897 LETTRE MONGOLE AH ALI GALI 1898 LETTRE MONGOLE TA TODO ALI GALI 1899 LETTRE MONGOLE ZHA TODO ALI GALI 189A LETTRE MONGOLE GHA ALI GALI 189B LETTRE MONGOLE NGA MANDCHOU ALI GALI 189C LETTRE MONGOLE TCHA MANDCHOU ALI GALI 189D LETTRE MONGOLE DJHA MANDCHOU ALI GALI 189E LETTRE MONGOLE TTA MANDCHOU ALI GALI 189F LETTRE MONGOLE DDHA MANDCHOU ALI GALI 18A0 LETTRE MONGOLE TA MANDCHOU ALI GALI 18A1 LETTRE MONGOLE DHA MANDCHOU ALI GALI 18A2 LETTRE MONGOLE ÇA MANDCHOU ALI GALI 18A3 LETTRE MONGOLE TCHYA MANDCHOU ALI GALI 18A4 LETTRE MONGOLE ZHA MANDCHOU ALI GALI 18A5 LETTRE MONGOLE ZA MANDCHOU ALI GALI 18A6 LETTRE MONGOLE DEMI OU ALI GALI 18A7 LETTRE MONGOLE DEMI YA ALI GALI 18A8 LETTRE MONGOLE BHA ALI GALI 18A9 LETTRE MONGOLE DAGALGA ALI GALI @@ 1E00 Latin étendu additionnel 1EFF 1E00 LETTRE MAJUSCULE LATINE A ROND SOUSCRIT 1E01 LETTRE MINUSCULE LATINE A ROND SOUSCRIT 1E02 LETTRE MAJUSCULE LATINE B POINT EN CHEF 1E03 LETTRE MINUSCULE LATINE B POINT EN CHEF 1E04 LETTRE MAJUSCULE LATINE B POINT SOUSCRIT 1E05 LETTRE MINUSCULE LATINE B POINT SOUSCRIT 1E06 LETTRE MAJUSCULE LATINE B LIGNE SOUSCRITE 1E07 LETTRE MINUSCULE LATINE B LIGNE SOUSCRITE 1E08 LETTRE MAJUSCULE LATINE C CÉDILLE ET ACCENT AIGU 1E09 LETTRE MINUSCULE LATINE C CÉDILLE ET ACCENT AIGU 1E0A LETTRE MAJUSCULE LATINE D POINT EN CHEF 1E0B LETTRE MINUSCULE LATINE D POINT EN CHEF 1E0C LETTRE MAJUSCULE LATINE D POINT SOUSCRIT 1E0D LETTRE MINUSCULE LATINE D POINT SOUSCRIT 1E0E LETTRE MAJUSCULE LATINE D LIGNE SOUSCRITE 1E0F LETTRE MINUSCULE LATINE D LIGNE SOUSCRITE 1E10 LETTRE MAJUSCULE LATINE D CÉDILLE 1E11 LETTRE MINUSCULE LATINE D CÉDILLE 1E12 LETTRE MAJUSCULE LATINE D ACCENT CIRCONFLEXE SOUSCRIT 1E13 LETTRE MINUSCULE LATINE D ACCENT CIRCONFLEXE SOUSCRIT 1E14 LETTRE MAJUSCULE LATINE E MACRON ET ACCENT GRAVE 1E15 LETTRE MINUSCULE LATINE E MACRON ET ACCENT GRAVE 1E16 LETTRE MAJUSCULE LATINE E MACRON ET ACCENT AIGU 1E17 LETTRE MINUSCULE LATINE E MACRON ET ACCENT AIGU 1E18 LETTRE MAJUSCULE LATINE E ACCENT CIRCONFLEXE SOUSCRIT 1E19 LETTRE MINUSCULE LATINE E ACCENT CIRCONFLEXE SOUSCRIT 1E1A LETTRE MAJUSCULE LATINE E TILDE SOUSCRIT 1E1B LETTRE MINUSCULE LATINE E TILDE SOUSCRIT 1E1C LETTRE MAJUSCULE LATINE E CÉDILLE ET BRÈVE 1E1D LETTRE MINUSCULE LATINE E CÉDILLE ET BRÈVE 1E1E LETTRE MAJUSCULE LATINE F POINT EN CHEF 1E1F LETTRE MINUSCULE LATINE F POINT EN CHEF 1E20 LETTRE MAJUSCULE LATINE G MACRON 1E21 LETTRE MINUSCULE LATINE G MACRON 1E22 LETTRE MAJUSCULE LATINE H POINT EN CHEF 1E23 LETTRE MINUSCULE LATINE H POINT EN CHEF 1E24 LETTRE MAJUSCULE LATINE H POINT SOUSCRIT 1E25 LETTRE MINUSCULE LATINE H POINT SOUSCRIT 1E26 LETTRE MAJUSCULE LATINE H TRÉMA 1E27 LETTRE MINUSCULE LATINE H TRÉMA 1E28 LETTRE MAJUSCULE LATINE H CÉDILLE 1E29 LETTRE MINUSCULE LATINE H CÉDILLE 1E2A LETTRE MAJUSCULE LATINE H BRÈVE SOUSCRIT 1E2B LETTRE MINUSCULE LATINE H BRÈVE SOUSCRIT 1E2C LETTRE MAJUSCULE LATINE I TILDE SOUSCRIT 1E2D LETTRE MINUSCULE LATINE I TILDE SOUSCRIT 1E2E LETTRE MAJUSCULE LATINE I TRÉMA ET ACCENT AIGU 1E2F LETTRE MINUSCULE LATINE I TRÉMA ET ACCENT AIGU 1E30 LETTRE MAJUSCULE LATINE K ACCENT AIGU 1E31 LETTRE MINUSCULE LATINE K ACCENT AIGU 1E32 LETTRE MAJUSCULE LATINE K POINT SOUSCRIT 1E33 LETTRE MINUSCULE LATINE K POINT SOUSCRIT 1E34 LETTRE MAJUSCULE LATINE K LIGNE SOUSCRITE 1E35 LETTRE MINUSCULE LATINE K LIGNE SOUSCRITE 1E36 LETTRE MAJUSCULE LATINE L POINT SOUSCRIT 1E37 LETTRE MINUSCULE LATINE L POINT SOUSCRIT 1E38 LETTRE MAJUSCULE LATINE L POINT SOUSCRIT ET MACRON 1E39 LETTRE MINUSCULE LATINE L POINT SOUSCRIT ET MACRON 1E3A LETTRE MAJUSCULE LATINE L LIGNE SOUSCRITE 1E3B LETTRE MINUSCULE LATINE L LIGNE SOUSCRITE 1E3C LETTRE MAJUSCULE LATINE L ACCENT CIRCONFLEXE SOUSCRIT 1E3D LETTRE MINUSCULE LATINE L ACCENT CIRCONFLEXE SOUSCRIT 1E3E LETTRE MAJUSCULE LATINE M ACCENT AIGU 1E3F LETTRE MINUSCULE LATINE M ACCENT AIGU 1E40 LETTRE MAJUSCULE LATINE M POINT EN CHEF 1E41 LETTRE MINUSCULE LATINE M POINT EN CHEF 1E42 LETTRE MAJUSCULE LATINE M POINT SOUSCRIT 1E43 LETTRE MINUSCULE LATINE M POINT SOUSCRIT 1E44 LETTRE MAJUSCULE LATINE N POINT EN CHEF 1E45 LETTRE MINUSCULE LATINE N POINT EN CHEF 1E46 LETTRE MAJUSCULE LATINE N POINT SOUSCRIT 1E47 LETTRE MINUSCULE LATINE N POINT SOUSCRIT 1E48 LETTRE MAJUSCULE LATINE N LIGNE SOUSCRITE 1E49 LETTRE MINUSCULE LATINE N LIGNE SOUSCRITE 1E4A LETTRE MAJUSCULE LATINE N ACCENT CIRCONFLEXE SOUSCRIT 1E4B LETTRE MINUSCULE LATINE N ACCENT CIRCONFLEXE SOUSCRIT 1E4C LETTRE MAJUSCULE LATINE O TILDE ET ACCENT AIGU 1E4D LETTRE MINUSCULE LATINE O TILDE ET ACCENT AIGU 1E4E LETTRE MAJUSCULE LATINE O TILDE ET TRÉMA 1E4F LETTRE MINUSCULE LATINE O TILDE ET TRÉMA 1E50 LETTRE MAJUSCULE LATINE O MACRON ET ACCENT GRAVE 1E51 LETTRE MINUSCULE LATINE O MACRON ET ACCENT GRAVE 1E52 LETTRE MAJUSCULE LATINE O MACRON ET ACCENT AIGU 1E53 LETTRE MINUSCULE LATINE O MACRON ET ACCENT AIGU 1E54 LETTRE MAJUSCULE LATINE P ACCENT AIGU 1E55 LETTRE MINUSCULE LATINE P ACCENT AIGU 1E56 LETTRE MAJUSCULE LATINE P POINT EN CHEF 1E57 LETTRE MINUSCULE LATINE P POINT EN CHEF 1E58 LETTRE MAJUSCULE LATINE R POINT EN CHEF 1E59 LETTRE MINUSCULE LATINE R POINT EN CHEF 1E5A LETTRE MAJUSCULE LATINE R POINT SOUSCRIT 1E5B LETTRE MINUSCULE LATINE R POINT SOUSCRIT 1E5C LETTRE MAJUSCULE LATINE R POINT SOUSCRIT ET MACRON 1E5D LETTRE MINUSCULE LATINE R POINT SOUSCRIT ET MACRON 1E5E LETTRE MAJUSCULE LATINE R LIGNE SOUSCRITE 1E5F LETTRE MINUSCULE LATINE R LIGNE SOUSCRITE 1E60 LETTRE MAJUSCULE LATINE S POINT EN CHEF 1E61 LETTRE MINUSCULE LATINE S POINT EN CHEF 1E62 LETTRE MAJUSCULE LATINE S POINT SOUSCRIT 1E63 LETTRE MINUSCULE LATINE S POINT SOUSCRIT 1E64 LETTRE MAJUSCULE LATINE S ACCENT AIGU ET POINT EN CHEF 1E65 LETTRE MINUSCULE LATINE S ACCENT AIGU ET POINT EN CHEF 1E66 LETTRE MAJUSCULE LATINE S CARON ET POINT EN CHEF 1E67 LETTRE MINUSCULE LATINE S CARON ET POINT EN CHEF 1E68 LETTRE MAJUSCULE LATINE S POINT SOUSCRIT ET POINT EN CHEF 1E69 LETTRE MINUSCULE LATINE S POINT SOUSCRIT ET POINT EN CHEF 1E6A LETTRE MAJUSCULE LATINE T POINT EN CHEF 1E6B LETTRE MINUSCULE LATINE T POINT EN CHEF 1E6C LETTRE MAJUSCULE LATINE T POINT SOUSCRIT 1E6D LETTRE MINUSCULE LATINE T POINT SOUSCRIT 1E6E LETTRE MAJUSCULE LATINE T LIGNE SOUSCRITE 1E6F LETTRE MINUSCULE LATINE T LIGNE SOUSCRITE 1E70 LETTRE MAJUSCULE LATINE T ACCENT CIRCONFLEXE SOUSCRIT 1E71 LETTRE MINUSCULE LATINE T ACCENT CIRCONFLEXE SOUSCRIT 1E72 LETTRE MAJUSCULE LATINE U TRÉMA SOUSCRIT 1E73 LETTRE MINUSCULE LATINE U TRÉMA SOUSCRIT 1E74 LETTRE MAJUSCULE LATINE U TILDE SOUSCRIT 1E75 LETTRE MINUSCULE LATINE U TILDE SOUSCRIT 1E76 LETTRE MAJUSCULE LATINE U ACCENT CIRCONFLEXE SOUSCRIT 1E77 LETTRE MINUSCULE LATINE U ACCENT CIRCONFLEXE SOUSCRIT 1E78 LETTRE MAJUSCULE LATINE U TILDE ET ACCENT AIGU 1E79 LETTRE MINUSCULE LATINE U TILDE ET ACCENT AIGU 1E7A LETTRE MAJUSCULE LATINE U MACRON ET TRÉMA 1E7B LETTRE MINUSCULE LATINE U MACRON ET TRÉMA 1E7C LETTRE MAJUSCULE LATINE V TILDE 1E7D LETTRE MINUSCULE LATINE V TILDE 1E7E LETTRE MAJUSCULE LATINE V POINT SOUSCRIT 1E7F LETTRE MINUSCULE LATINE V POINT SOUSCRIT 1E80 LETTRE MAJUSCULE LATINE W ACCENT GRAVE 1E81 LETTRE MINUSCULE LATINE W ACCENT GRAVE 1E82 LETTRE MAJUSCULE LATINE W ACCENT AIGU 1E83 LETTRE MINUSCULE LATINE W ACCENT AIGU 1E84 LETTRE MAJUSCULE LATINE W TRÉMA 1E85 LETTRE MINUSCULE LATINE W TRÉMA 1E86 LETTRE MAJUSCULE LATINE W POINT EN CHEF 1E87 LETTRE MINUSCULE LATINE W POINT EN CHEF 1E88 LETTRE MAJUSCULE LATINE W POINT SOUSCRIT 1E89 LETTRE MINUSCULE LATINE W POINT SOUSCRIT 1E8A LETTRE MAJUSCULE LATINE X POINT EN CHEF 1E8B LETTRE MINUSCULE LATINE X POINT EN CHEF 1E8C LETTRE MAJUSCULE LATINE X TRÉMA 1E8D LETTRE MINUSCULE LATINE X TRÉMA 1E8E LETTRE MAJUSCULE LATINE Y POINT EN CHEF 1E8F LETTRE MINUSCULE LATINE Y POINT EN CHEF 1E90 LETTRE MAJUSCULE LATINE Z ACCENT CIRCONFLEXE 1E91 LETTRE MINUSCULE LATINE Z ACCENT CIRCONFLEXE 1E92 LETTRE MAJUSCULE LATINE Z POINT SOUSCRIT 1E93 LETTRE MINUSCULE LATINE Z POINT SOUSCRIT 1E94 LETTRE MAJUSCULE LATINE Z LIGNE SOUSCRITE 1E95 LETTRE MINUSCULE LATINE Z LIGNE SOUSCRITE 1E96 LETTRE MINUSCULE LATINE H LIGNE SOUSCRITE 1E97 LETTRE MINUSCULE LATINE T TRÉMA 1E98 LETTRE MINUSCULE LATINE W ROND EN CHEF 1E99 LETTRE MINUSCULE LATINE Y ROND EN CHEF 1E9A LETTRE MINUSCULE LATINE A DEMI-ROND À DROITE 1E9B LETTRE MINUSCULE LATINE LONG S POINT EN CHEF 1EA0 LETTRE MAJUSCULE LATINE A POINT SOUSCRIT 1EA1 LETTRE MINUSCULE LATINE A POINT SOUSCRIT 1EA2 LETTRE MAJUSCULE LATINE A CROCHET EN CHEF 1EA3 LETTRE MINUSCULE LATINE A CROCHET EN CHEF 1EA4 LETTRE MAJUSCULE LATINE A ACCENT CIRCONFLEXE ET ACCENT AIGU 1EA5 LETTRE MINUSCULE LATINE A ACCENT CIRCONFLEXE ET ACCENT AIGU 1EA6 LETTRE MAJUSCULE LATINE A ACCENT CIRCONFLEXE ET ACCENT GRAVE 1EA7 LETTRE MINUSCULE LATINE A ACCENT CIRCONFLEXE ET ACCENT GRAVE 1EA8 LETTRE MAJUSCULE LATINE A ACCENT CIRCONFLEXE ET CROCHET EN CHEF 1EA9 LETTRE MINUSCULE LATINE A ACCENT CIRCONFLEXE ET CROCHET EN CHEF 1EAA LETTRE MAJUSCULE LATINE A ACCENT CIRCONFLEXE ET TILDE 1EAB LETTRE MINUSCULE LATINE A ACCENT CIRCONFLEXE ET TILDE 1EAC LETTRE MAJUSCULE LATINE A ACCENT CIRCONFLEXE ET POINT SOUSCRIT 1EAD LETTRE MINUSCULE LATINE A ACCENT CIRCONFLEXE ET POINT SOUSCRIT 1EAE LETTRE MAJUSCULE LATINE A BRÈVE ET ACCENT AIGU 1EAF LETTRE MINUSCULE LATINE A BRÈVE ET ACCENT AIGU 1EB0 LETTRE MAJUSCULE LATINE A BRÈVE ET ACCENT GRAVE 1EB1 LETTRE MINUSCULE LATINE A BRÈVE ET ACCENT GRAVE 1EB2 LETTRE MAJUSCULE LATINE A BRÈVE ET CROCHET EN CHEF 1EB3 LETTRE MINUSCULE LATINE A BRÈVE ET CROCHET EN CHEF 1EB4 LETTRE MAJUSCULE LATINE A BRÈVE ET TILDE 1EB5 LETTRE MINUSCULE LATINE A BRÈVE ET TILDE 1EB6 LETTRE MAJUSCULE LATINE A BRÈVE ET POINT SOUSCRIT 1EB7 LETTRE MINUSCULE LATINE A BRÈVE ET POINT SOUSCRIT 1EB8 LETTRE MAJUSCULE LATINE E POINT SOUSCRIT 1EB9 LETTRE MINUSCULE LATINE E POINT SOUSCRIT 1EBA LETTRE MAJUSCULE LATINE E CROCHET EN CHEF 1EBB LETTRE MINUSCULE LATINE E CROCHET EN CHEF 1EBC LETTRE MAJUSCULE LATINE E TILDE 1EBD LETTRE MINUSCULE LATINE E TILDE 1EBE LETTRE MAJUSCULE LATINE E ACCENT CIRCONFLEXE ET ACCENT AIGU 1EBF LETTRE MINUSCULE LATINE E ACCENT CIRCONFLEXE ET ACCENT AIGU 1EC0 LETTRE MAJUSCULE LATINE E ACCENT CIRCONFLEXE ET ACCENT GRAVE 1EC1 LETTRE MINUSCULE LATINE E ACCENT CIRCONFLEXE ET ACCENT GRAVE 1EC2 LETTRE MAJUSCULE LATINE E ACCENT CIRCONFLEXE ET CROCHET EN CHEF 1EC3 LETTRE MINUSCULE LATINE E ACCENT CIRCONFLEXE ET CROCHET EN CHEF 1EC4 LETTRE MAJUSCULE LATINE E ACCENT CIRCONFLEXE ET TILDE 1EC5 LETTRE MINUSCULE LATINE E ACCENT CIRCONFLEXE ET TILDE 1EC6 LETTRE MAJUSCULE LATINE E ACCENT CIRCONFLEXE ET POINT SOUSCRIT 1EC7 LETTRE MINUSCULE LATINE E ACCENT CIRCONFLEXE ET POINT SOUSCRIT 1EC8 LETTRE MAJUSCULE LATINE I CROCHET EN CHEF 1EC9 LETTRE MINUSCULE LATINE I CROCHET EN CHEF 1ECA LETTRE MAJUSCULE LATINE I POINT SOUSCRIT 1ECB LETTRE MINUSCULE LATINE I POINT SOUSCRIT 1ECC LETTRE MAJUSCULE LATINE O POINT SOUSCRIT 1ECD LETTRE MINUSCULE LATINE O POINT SOUSCRIT 1ECE LETTRE MAJUSCULE LATINE O CROCHET EN CHEF 1ECF LETTRE MINUSCULE LATINE O CROCHET EN CHEF 1ED0 LETTRE MAJUSCULE LATINE O ACCENT CIRCONFLEXE ET ACCENT AIGU 1ED1 LETTRE MINUSCULE LATINE O ACCENT CIRCONFLEXE ET ACCENT AIGU 1ED2 LETTRE MAJUSCULE LATINE O ACCENT CIRCONFLEXE ET ACCENT GRAVE 1ED3 LETTRE MINUSCULE LATINE O ACCENT CIRCONFLEXE ET ACCENT GRAVE 1ED4 LETTRE MAJUSCULE LATINE O ACCENT CIRCONFLEXE ET CROCHET EN CHEF 1ED5 LETTRE MINUSCULE LATINE O ACCENT CIRCONFLEXE ET CROCHET EN CHEF 1ED6 LETTRE MAJUSCULE LATINE O ACCENT CIRCONFLEXE ET TILDE 1ED7 LETTRE MINUSCULE LATINE O ACCENT CIRCONFLEXE ET TILDE 1ED8 LETTRE MAJUSCULE LATINE O ACCENT CIRCONFLEXE ET POINT SOUSCRIT 1ED9 LETTRE MINUSCULE LATINE O ACCENT CIRCONFLEXE ET POINT SOUSCRIT 1EDA LETTRE MAJUSCULE LATINE O CORNU ACCENT AIGU 1EDB LETTRE MINUSCULE LATINE O CORNU ACCENT AIGU 1EDC LETTRE MAJUSCULE LATINE O CORNU ACCENT GRAVE 1EDD LETTRE MINUSCULE LATINE O CORNU ACCENT GRAVE 1EDE LETTRE MAJUSCULE LATINE O CORNU CROCHET EN CHEF 1EDF LETTRE MINUSCULE LATINE O CORNU CROCHET EN CHEF 1EE0 LETTRE MAJUSCULE LATINE O CORNU TILDE 1EE1 LETTRE MINUSCULE LATINE O CORNU TILDE 1EE2 LETTRE MAJUSCULE LATINE O CORNU POINT SOUSCRIT 1EE3 LETTRE MINUSCULE LATINE O CORNU POINT SOUSCRIT 1EE4 LETTRE MAJUSCULE LATINE U POINT SOUSCRIT 1EE5 LETTRE MINUSCULE LATINE U POINT SOUSCRIT 1EE6 LETTRE MAJUSCULE LATINE U CROCHET EN CHEF 1EE7 LETTRE MINUSCULE LATINE U CROCHET EN CHEF 1EE8 LETTRE MAJUSCULE LATINE U CORNU ACCENT AIGU 1EE9 LETTRE MINUSCULE LATINE U CORNU ACCENT AIGU 1EEA LETTRE MAJUSCULE LATINE U CORNU ACCENT GRAVE 1EEB LETTRE MINUSCULE LATINE U CORNU ACCENT GRAVE 1EEC LETTRE MAJUSCULE LATINE U CORNU CROCHET EN CHEF 1EED LETTRE MINUSCULE LATINE U CORNU CROCHET EN CHEF 1EEE LETTRE MAJUSCULE LATINE U CORNU TILDE 1EEF LETTRE MINUSCULE LATINE U CORNU TILDE 1EF0 LETTRE MAJUSCULE LATINE U CORNU POINT SOUSCRIT 1EF1 LETTRE MINUSCULE LATINE U CORNU POINT SOUSCRIT 1EF2 LETTRE MAJUSCULE LATINE Y ACCENT GRAVE 1EF3 LETTRE MINUSCULE LATINE Y ACCENT GRAVE 1EF4 LETTRE MAJUSCULE LATINE Y POINT SOUSCRIT 1EF5 LETTRE MINUSCULE LATINE Y POINT SOUSCRIT 1EF6 LETTRE MAJUSCULE LATINE Y CROCHET EN CHEF 1EF7 LETTRE MINUSCULE LATINE Y CROCHET EN CHEF 1EF8 LETTRE MAJUSCULE LATINE Y TILDE 1EF9 LETTRE MINUSCULE LATINE Y TILDE @@ 1F00 Grec étendu 1FFF 1F00 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT DOUX 1F01 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT RUDE 1F02 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT DOUX ET ACCENT GRAVE 1F03 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT RUDE ET ACCENT GRAVE 1F04 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT DOUX ET ACCENT AIGU 1F05 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT RUDE ET ACCENT AIGU 1F06 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT DOUX ET CIRCONFLEXE 1F07 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT RUDE ET CIRCONFLEXE 1F08 LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT DOUX 1F09 LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT RUDE 1F0A LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT DOUX ET ACCENT GRAVE 1F0B LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT RUDE ET ACCENT GRAVE 1F0C LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT DOUX ET ACCENT AIGU 1F0D LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT RUDE ET ACCENT AIGU 1F0E LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT DOUX ET CIRCONFLEXE 1F0F LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT RUDE ET CIRCONFLEXE 1F10 LETTRE MINUSCULE GRECQUE EPSILON ESPRIT DOUX 1F11 LETTRE MINUSCULE GRECQUE EPSILON ESPRIT RUDE 1F12 LETTRE MINUSCULE GRECQUE EPSILON ESPRIT DOUX ET ACCENT GRAVE 1F13 LETTRE MINUSCULE GRECQUE EPSILON ESPRIT RUDE ET ACCENT GRAVE 1F14 LETTRE MINUSCULE GRECQUE EPSILON ESPRIT DOUX ET ACCENT AIGU 1F15 LETTRE MINUSCULE GRECQUE EPSILON ESPRIT RUDE ET ACCENT AIGU 1F18 LETTRE MAJUSCULE GRECQUE EPSILON ESPRIT DOUX 1F19 LETTRE MAJUSCULE GRECQUE EPSILON ESPRIT RUDE 1F1A LETTRE MAJUSCULE GRECQUE EPSILON ESPRIT DOUX ET ACCENT GRAVE 1F1B LETTRE MAJUSCULE GRECQUE EPSILON ESPRIT RUDE ET ACCENT GRAVE 1F1C LETTRE MAJUSCULE GRECQUE EPSILON ESPRIT DOUX ET ACCENT AIGU 1F1D LETTRE MAJUSCULE GRECQUE EPSILON ESPRIT RUDE ET ACCENT AIGU 1F20 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT DOUX 1F21 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT RUDE 1F22 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT DOUX ET ACCENT GRAVE 1F23 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT RUDE ET ACCENT GRAVE 1F24 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT DOUX ET ACCENT AIGU 1F25 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT RUDE ET ACCENT AIGU 1F26 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT DOUX ET CIRCONFLEXE 1F27 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT RUDE ET CIRCONFLEXE 1F28 LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT DOUX 1F29 LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT RUDE 1F2A LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT DOUX ET ACCENT GRAVE 1F2B LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT RUDE ET ACCENT GRAVE 1F2C LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT DOUX ET ACCENT AIGU 1F2D LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT RUDE ET ACCENT AIGU 1F2E LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT DOUX ET CIRCONFLEXE 1F2F LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT RUDE ET CIRCONFLEXE 1F30 LETTRE MINUSCULE GRECQUE IOTA ESPRIT DOUX 1F31 LETTRE MINUSCULE GRECQUE IOTA ESPRIT RUDE 1F32 LETTRE MINUSCULE GRECQUE IOTA ESPRIT DOUX ET ACCENT GRAVE 1F33 LETTRE MINUSCULE GRECQUE IOTA ESPRIT RUDE ET ACCENT GRAVE 1F34 LETTRE MINUSCULE GRECQUE IOTA ESPRIT DOUX ET ACCENT AIGU 1F35 LETTRE MINUSCULE GRECQUE IOTA ESPRIT RUDE ET ACCENT AIGU 1F36 LETTRE MINUSCULE GRECQUE IOTA ESPRIT DOUX ET CIRCONFLEXE 1F37 LETTRE MINUSCULE GRECQUE IOTA ESPRIT RUDE ET CIRCONFLEXE 1F38 LETTRE MAJUSCULE GRECQUE IOTA ESPRIT DOUX 1F39 LETTRE MAJUSCULE GRECQUE IOTA ESPRIT RUDE 1F3A LETTRE MAJUSCULE GRECQUE IOTA ESPRIT DOUX ET ACCENT GRAVE 1F3B LETTRE MAJUSCULE GRECQUE IOTA ESPRIT RUDE ET ACCENT GRAVE 1F3C LETTRE MAJUSCULE GRECQUE IOTA ESPRIT DOUX ET ACCENT AIGU 1F3D LETTRE MAJUSCULE GRECQUE IOTA ESPRIT RUDE ET ACCENT AIGU 1F3E LETTRE MAJUSCULE GRECQUE IOTA ESPRIT DOUX ET CIRCONFLEXE 1F3F LETTRE MAJUSCULE GRECQUE IOTA ESPRIT RUDE ET CIRCONFLEXE 1F40 LETTRE MINUSCULE GRECQUE OMICRON ESPRIT DOUX 1F41 LETTRE MINUSCULE GRECQUE OMICRON ESPRIT RUDE 1F42 LETTRE MINUSCULE GRECQUE OMICRON ESPRIT DOUX ET ACCENT GRAVE 1F43 LETTRE MINUSCULE GRECQUE OMICRON ESPRIT RUDE ET ACCENT GRAVE 1F44 LETTRE MINUSCULE GRECQUE OMICRON ESPRIT DOUX ET ACCENT AIGU 1F45 LETTRE MINUSCULE GRECQUE OMICRON ESPRIT RUDE ET ACCENT AIGU 1F48 LETTRE MAJUSCULE GRECQUE OMICRON ESPRIT DOUX 1F49 LETTRE MAJUSCULE GRECQUE OMICRON ESPRIT RUDE 1F4A LETTRE MAJUSCULE GRECQUE OMICRON ESPRIT DOUX ET ACCENT GRAVE 1F4B LETTRE MAJUSCULE GRECQUE OMICRON ESPRIT RUDE ET ACCENT GRAVE 1F4C LETTRE MAJUSCULE GRECQUE OMICRON ESPRIT DOUX ET ACCENT AIGU 1F4D LETTRE MAJUSCULE GRECQUE OMICRON ESPRIT RUDE ET ACCENT AIGU 1F50 LETTRE MINUSCULE GRECQUE UPSILON ESPRIT DOUX 1F51 LETTRE MINUSCULE GRECQUE UPSILON ESPRIT RUDE 1F52 LETTRE MINUSCULE GRECQUE UPSILON ESPRIT DOUX ET ACCENT GRAVE 1F53 LETTRE MINUSCULE GRECQUE UPSILON ESPRIT RUDE ET ACCENT GRAVE 1F54 LETTRE MINUSCULE GRECQUE UPSILON ESPRIT DOUX ET ACCENT AIGU 1F55 LETTRE MINUSCULE GRECQUE UPSILON ESPRIT RUDE ET ACCENT AIGU 1F56 LETTRE MINUSCULE GRECQUE UPSILON ESPRIT DOUX ET CIRCONFLEXE 1F57 LETTRE MINUSCULE GRECQUE UPSILON ESPRIT RUDE ET CIRCONFLEXE 1F59 LETTRE MAJUSCULE GRECQUE UPSILON ESPRIT RUDE 1F5B LETTRE MAJUSCULE GRECQUE UPSILON ESPRIT RUDE ET ACCENT GRAVE 1F5D LETTRE MAJUSCULE GRECQUE UPSILON ESPRIT RUDE ET ACCENT AIGU 1F5F LETTRE MAJUSCULE GRECQUE UPSILON ESPRIT RUDE ET CIRCONFLEXE 1F60 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT DOUX 1F61 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT RUDE 1F62 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT DOUX ET ACCENT GRAVE 1F63 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT RUDE ET ACCENT GRAVE 1F64 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT DOUX ET ACCENT AIGU 1F65 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT RUDE ET ACCENT AIGU 1F66 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT DOUX ET CIRCONFLEXE 1F67 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT RUDE ET CIRCONFLEXE 1F68 LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT DOUX 1F69 LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT RUDE 1F6A LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT DOUX ET ACCENT GRAVE 1F6B LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT RUDE ET ACCENT GRAVE 1F6C LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT DOUX ET ACCENT AIGU 1F6D LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT RUDE ET ACCENT AIGU 1F6E LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT DOUX ET CIRCONFLEXE 1F6F LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT RUDE ET CIRCONFLEXE 1F70 LETTRE MINUSCULE GRECQUE ALPHA ACCENT GRAVE 1F71 LETTRE MINUSCULE GRECQUE ALPHA ACCENT AIGU 1F72 LETTRE MINUSCULE GRECQUE EPSILON ACCENT GRAVE 1F73 LETTRE MINUSCULE GRECQUE EPSILON ACCENT AIGU 1F74 LETTRE MINUSCULE GRECQUE ÊTA ACCENT GRAVE 1F75 LETTRE MINUSCULE GRECQUE ÊTA ACCENT AIGU 1F76 LETTRE MINUSCULE GRECQUE IOTA ACCENT GRAVE 1F77 LETTRE MINUSCULE GRECQUE IOTA ACCENT AIGU 1F78 LETTRE MINUSCULE GRECQUE OMICRON ACCENT GRAVE 1F79 LETTRE MINUSCULE GRECQUE OMICRON ACCENT AIGU 1F7A LETTRE MINUSCULE GRECQUE UPSILON ACCENT GRAVE 1F7B LETTRE MINUSCULE GRECQUE UPSILON ACCENT AIGU 1F7C LETTRE MINUSCULE GRECQUE OMÉGA ACCENT GRAVE 1F7D LETTRE MINUSCULE GRECQUE OMÉGA ACCENT AIGU 1F80 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT DOUX IOTA SOUSCRIT 1F81 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT RUDE IOTA SOUSCRIT 1F82 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT DOUX ACCENT GRAVE ET IOTA SOUSCRIT 1F83 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT RUDE ACCENT GRAVE ET IOTA SOUSCRIT 1F84 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT DOUX ACCENT AIGU ET IOTA SOUSCRIT 1F85 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT RUDE ACCENT AIGU ET IOTA SOUSCRIT 1F86 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT DOUX CIRCONFLEXE ET IOTA SOUSCRIT 1F87 LETTRE MINUSCULE GRECQUE ALPHA ESPRIT RUDE CIRCONFLEXE ET IOTA SOUSCRIT 1F88 LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT DOUX IOTA SOUSCRIT 1F89 LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT RUDE IOTA SOUSCRIT 1F8A LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT DOUX ACCENT GRAVE ET IOTA SOUSCRIT 1F8B LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT RUDE ACCENT GRAVE ET IOTA SOUSCRIT 1F8C LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT DOUX ACCENT AIGU ET IOTA SOUSCRIT 1F8D LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT RUDE ACCENT AIGU ET IOTA SOUSCRIT 1F8E LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT DOUX CIRCONFLEXE ET IOTA SOUSCRIT 1F8F LETTRE MAJUSCULE GRECQUE ALPHA ESPRIT RUDE CIRCONFLEXE ET IOTA SOUSCRIT 1F90 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT DOUX IOTA SOUSCRIT 1F91 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT RUDE IOTA SOUSCRIT 1F92 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT DOUX ACCENT GRAVE ET IOTA SOUSCRIT 1F93 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT RUDE ACCENT GRAVE ET IOTA SOUSCRIT 1F94 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT DOUX ACCENT AIGU ET IOTA SOUSCRIT 1F95 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT RUDE ACCENT AIGU ET IOTA SOUSCRIT 1F96 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT DOUX CIRCONFLEXE ET IOTA SOUSCRIT 1F97 LETTRE MINUSCULE GRECQUE ÊTA ESPRIT RUDE CIRCONFLEXE ET IOTA SOUSCRIT 1F98 LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT DOUX IOTA SOUSCRIT 1F99 LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT RUDE IOTA SOUSCRIT 1F9A LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT DOUX ACCENT GRAVE ET IOTA SOUSCRIT 1F9B LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT RUDE ACCENT GRAVE ET IOTA SOUSCRIT 1F9C LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT DOUX ACCENT AIGU ET IOTA SOUSCRIT 1F9D LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT RUDE ACCENT AIGU ET IOTA SOUSCRIT 1F9E LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT DOUX CIRCONFLEXE ET IOTA SOUSCRIT 1F9F LETTRE MAJUSCULE GRECQUE ÊTA ESPRIT RUDE CIRCONFLEXE ET IOTA SOUSCRIT 1FA0 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT DOUX IOTA SOUSCRIT 1FA1 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT RUDE IOTA SOUSCRIT 1FA2 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT DOUX ACCENT GRAVE ET IOTA SOUSCRIT 1FA3 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT RUDE ACCENT GRAVE ET IOTA SOUSCRIT 1FA4 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT DOUX ACCENT AIGU ET IOTA SOUSCRIT 1FA5 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT RUDE ACCENT AIGU ET IOTA SOUSCRIT 1FA6 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT DOUX CIRCONFLEXE ET IOTA SOUSCRIT 1FA7 LETTRE MINUSCULE GRECQUE OMÉGA ESPRIT RUDE CIRCONFLEXE ET IOTA SOUSCRIT 1FA8 LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT DOUX IOTA SOUSCRIT 1FA9 LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT RUDE IOTA SOUSCRIT 1FAA LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT DOUX ACCENT GRAVE ET IOTA SOUSCRIT 1FAB LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT RUDE ACCENT GRAVE ET IOTA SOUSCRIT 1FAC LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT DOUX ACCENT AIGU ET IOTA SOUSCRIT 1FAD LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT RUDE ACCENT AIGU ET IOTA SOUSCRIT 1FAE LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT DOUX CIRCONFLEXE ET IOTA SOUSCRIT 1FAF LETTRE MAJUSCULE GRECQUE OMÉGA ESPRIT RUDE CIRCONFLEXE ET IOTA SOUSCRIT 1FB0 LETTRE MINUSCULE GRECQUE ALPHA VRAKHY 1FB1 LETTRE MINUSCULE GRECQUE ALPHA MACRON 1FB2 LETTRE MINUSCULE GRECQUE ALPHA ACCENT GRAVE IOTA SOUSCRIT 1FB3 LETTRE MINUSCULE GRECQUE ALPHA IOTA SOUSCRIT 1FB4 LETTRE MINUSCULE GRECQUE ALPHA ACCENT AIGU IOTA SOUSCRIT 1FB6 LETTRE MINUSCULE GRECQUE ALPHA CIRCONFLEXE 1FB7 LETTRE MINUSCULE GRECQUE ALPHA CIRCONFLEXE IOTA SOUSCRIT 1FB8 LETTRE MAJUSCULE GRECQUE ALPHA VRAKHY 1FB9 LETTRE MAJUSCULE GRECQUE ALPHA MACRON 1FBA LETTRE MAJUSCULE GRECQUE ALPHA ACCENT GRAVE 1FBB LETTRE MAJUSCULE GRECQUE ALPHA ACCENT AIGU 1FBC LETTRE MAJUSCULE GRECQUE ALPHA IOTA SOUSCRIT 1FBD CORONIS (crase) 1FBE IOTA SOUSCRIT 1FBF ESPRIT DOUX 1FC0 CIRCONFLEXE GREC 1FC1 DIALYTIKA ET CIRCONFLEXE 1FC2 LETTRE MINUSCULE GRECQUE ÊTA ACCENT GRAVE IOTA SOUSCRIT 1FC3 LETTRE MINUSCULE GRECQUE ÊTA IOTA SOUSCRIT 1FC4 LETTRE MINUSCULE GRECQUE ÊTA ACCENT AIGU IOTA SOUSCRIT 1FC6 LETTRE MINUSCULE GRECQUE ÊTA CIRCONFLEXE 1FC7 LETTRE MINUSCULE GRECQUE ÊTA CIRCONFLEXE IOTA SOUSCRIT 1FC8 LETTRE MAJUSCULE GRECQUE EPSILON ACCENT GRAVE 1FC9 LETTRE MAJUSCULE GRECQUE EPSILON ACCENT AIGU 1FCA LETTRE MAJUSCULE GRECQUE ÊTA ACCENT GRAVE 1FCB LETTRE MAJUSCULE GRECQUE ÊTA ACCENT AIGU 1FCC LETTRE MAJUSCULE GRECQUE ÊTA IOTA SOUSCRIT 1FCD ESPRIT DOUX ET ACCENT GRAVE 1FCE ESPRIT DOUX ET ACCENT AIGU 1FCF ESPRIT DOUX ET CIRCONFLEXE GREC 1FD0 LETTRE MINUSCULE GRECQUE IOTA VRAKHY 1FD1 LETTRE MINUSCULE GRECQUE IOTA MACRON 1FD2 LETTRE MINUSCULE GRECQUE IOTA DIALYTIKA ET ACCENT GRAVE 1FD3 LETTRE MINUSCULE GRECQUE IOTA DIALYTIKA ET ACCENT AIGU 1FD6 LETTRE MINUSCULE GRECQUE IOTA CIRCONFLEXE 1FD7 LETTRE MINUSCULE GRECQUE IOTA DIALYTIKA ET CIRCONFLEXE 1FD8 LETTRE MAJUSCULE GRECQUE IOTA VRAKHY 1FD9 LETTRE MAJUSCULE GRECQUE IOTA MACRON 1FDA LETTRE MAJUSCULE GRECQUE IOTA ACCENT GRAVE 1FDB LETTRE MAJUSCULE GRECQUE IOTA ACCENT AIGU 1FDD ESPRIT RUDE ET ACCENT GRAVE 1FDE ESPRIT RUDE ET ACCENT AIGU 1FDF ESPRIT RUDE ET CIRCONFLEXE GREC 1FE0 LETTRE MINUSCULE GRECQUE UPSILON VRAKHY 1FE1 LETTRE MINUSCULE GRECQUE UPSILON MACRON 1FE2 LETTRE MINUSCULE GRECQUE UPSILON DIALYTIKA ET ACCENT GRAVE 1FE3 LETTRE MINUSCULE GRECQUE UPSILON DIALYTIKA ET ACCENT AIGU 1FE4 LETTRE MINUSCULE GRECQUE RHÔ ESPRIT DOUX 1FE5 LETTRE MINUSCULE GRECQUE RHÔ ESPRIT RUDE 1FE6 LETTRE MINUSCULE GRECQUE UPSILON CIRCONFLEXE 1FE7 LETTRE MINUSCULE GRECQUE UPSILON DIALYTIKA ET CIRCONFLEXE 1FE8 LETTRE MAJUSCULE GRECQUE UPSILON VRAKHY 1FE9 LETTRE MAJUSCULE GRECQUE UPSILON MACRON 1FEA LETTRE MAJUSCULE GRECQUE UPSILON ACCENT GRAVE 1FEB LETTRE MAJUSCULE GRECQUE UPSILON ACCENT AIGU 1FEC LETTRE MAJUSCULE GRECQUE RHÔ ESPRIT RUDE 1FED DIALYTIKA ET ACCENT GRAVE 1FEE DIALYTIKA ET ACCENT AIGU 1FEF ACCENT GRAVE GREC 1FF2 LETTRE MINUSCULE GRECQUE OMÉGA ACCENT GRAVE IOTA SOUSCRIT 1FF3 LETTRE MINUSCULE GRECQUE OMÉGA IOTA SOUSCRIT 1FF4 LETTRE MINUSCULE GRECQUE OMÉGA ACCENT AIGU IOTA SOUSCRIT 1FF6 LETTRE MINUSCULE GRECQUE OMÉGA CIRCONFLEXE 1FF7 LETTRE MINUSCULE GRECQUE OMÉGA CIRCONFLEXE IOTA SOUSCRIT 1FF8 LETTRE MAJUSCULE GRECQUE OMICRON ACCENT GRAVE 1FF9 LETTRE MAJUSCULE GRECQUE OMICRON ACCENT AIGU 1FFA LETTRE MAJUSCULE GRECQUE OMÉGA ACCENT GRAVE 1FFB LETTRE MAJUSCULE GRECQUE OMÉGA ACCENT AIGU 1FFC LETTRE MAJUSCULE GRECQUE OMÉGA IOTA SOUSCRIT 1FFD ACCENT AIGU GREC 1FFE ESPRIT RUDE @@ 2000 Ponctuation générale 206F 2000 DEMI-CADRATIN 2001 CADRATIN 2002 DEMI-CADRAT 2003 CADRAT 2004 TIERS DE CADRATIN 2005 QUART DE CADRATIN 2006 SIXIÈME DE CADRATIN 2007 ESPACE NUMÉRIQUE 2008 ESPACE PONCTUATION 2009 ESPACE FINE 200A ESPACE ULTRA-FINE 200B ESPACE SANS CHASSE 200C ANTI-LIANT SANS CHASSE 200D LIANT SANS CHASSE 200E MARQUE GAUCHE-À-DROITE 200F MARQUE DROITE-À-GAUCHE 2010 TRAIT D'UNION 2011 TRAIT D'UNION LIANT 2012 TIRET NUMÉRIQUE 2013 TIRET DEMI-CADRATIN 2014 TIRET CADRATIN 2015 BARRE HORIZONTALE 2016 DOUBLE LIGNE VERTICALE 2017 DOUBLE TRAIT SOUSCRIT 2018 GUILLEMET-APOSTROPHE CULBUTÉ 2019 GUILLEMET-APOSTROPHE 201A GUILLEMET-VIRGULE INFÉRIEUR 201B GUILLEMET-VIRGULE SUPÉRIEUR CULBUTÉ 201C GUILLEMET-APOSTROPHE DOUBLE CULBUTÉ 201D GUILLEMET-APOSTROPHE DOUBLE 201E GUILLEMET-VIRGULE DOUBLE INFÉRIEUR 201F GUILLEMET-VIRGULE DOUBLE SUPÉRIEUR CULBUTÉ 2020 OBÈLE 2021 DOUBLE OBÈLE 2022 PUCE 2023 PUCE TRIANGULAIRE 2024 POINT D'AMORCE SIMPLE 2025 POINT D'AMORCE DOUBLE 2026 POINTS DE SUSPENSION 2027 POINT DE COUPURE DE MOT 2028 SÉPARATEUR DE LIGNES 2029 SÉPARATEUR DE PARAGRAPHES 202A ENCHÂSSEMENT GAUCHE-À-DROITE 202B ENCHÂSSEMENT DROITE-À-GAUCHE 202C DÉPILEMENT DE FORMATAGE DIRECTIONNEL 202D FORÇAGE GAUCHE-À-DROITE 202E FORÇAGE DROITE-À-GAUCHE 202F ESPACE INSÉCABLE ÉTROITE 2030 SYMBOLE POUR MILLE 2031 SYMBOLE POUR DIX MILLE 2032 PRIME 2033 DOUBLE PRIME 2034 TRIPLE PRIME 2035 PRIME RÉFLÉCHI 2036 DOUBLE PRIME RÉFLÉCHI 2037 TRIPLE PRIME RÉFLÉCHI 2038 CHEVRON D'INSERTION 2039 GUILLEMET SIMPLE VERS LA GAUCHE 203A GUILLEMET SIMPLE VERS LA DROITE 203B MARQUE DE RÉFÉRENCE 203C DOUBLE POINT D'EXCLAMATION 203D POINT EXCLARROGATIF 203E TIRET EN CHEF 203F TIRANT SOUSCRIT 2040 TIRANT EN CHEF 2041 LAMBDA D'INSERTION 2042 ASTÉRISME 2043 PUCE TRAIT D'UNION 2044 BARRE FRACTIONNAIRE 2045 CROCHET GAUCHE AVEC PIQUE 2046 CROCHET DROIT AVEC PIQUE 2048 POINT D'INTERROGATION-EXCLAMATION 2049 POINT D'EXCLAMATION-INTERROGATION 204A NOTE TIRONNIENNE ET 204B PIED DE MOUCHE RÉFLÉCHI 204C PUCE NOIRE TRONQUÉE À DROITE 204D PUCE NOIRE TRONQUÉE À GAUCHE 204F ESPACE VIRTUELLE 206A INHIBITEUR D'ÉCHANGE SYMÉTRIQUE 206B ACTIVATEUR D'ÉCHANGE SYMÉTRIQUE 206C INHIBITEUR DE FORMAGE ARABE 206D ACTIVATEUR DE FORMAGE ARABE 206E SÉLECTEUR DE FORMES DE CHIFFRE NATIONALES 206F SÉLECTEUR DE FORMES DE CHIFFRE NOMINALES @@ 2070 Exposants et indices 209F 2070 EXPOSANT ZÉRO 2071 2072 2073 2074 EXPOSANT QUATRE 2075 EXPOSANT CINQ 2076 EXPOSANT SIX 2077 EXPOSANT SEPT 2078 EXPOSANT HUIT 2079 EXPOSANT NEUF 207A EXPOSANT SIGNE PLUS 207B EXPOSANT SIGNE MOINS 207C EXPOSANT SIGNE ÉGAL 207D EXPOSANT PARENTHÈSE GAUCHE 207E EXPOSANT PARENTHÈSE DROITE 207F EXPOSANT LETTRE MINUSCULE LATINE N 2080 INDICE ZÉRO 2081 INDICE UN 2082 INDICE DEUX 2083 INDICE TROIS 2084 INDICE QUATRE 2085 INDICE CINQ 2086 INDICE SIX 2087 INDICE SEPT 2088 INDICE HUIT 2089 INDICE NEUF 208A INDICE SIGNE PLUS 208B INDICE SIGNE MOINS 208C INDICE SIGNE ÉGAL 208D INDICE PARENTHÈSE GAUCHE 208E INDICE PARENTHÈSE DROITE @@ 20A0 Symboles monétaires 20CF 20A0 SYMBOLE ÉCU 20A1 SYMBOLE COLON 20A2 SYMBOLE CRUZEIRO 20A3 SYMBOLE FRANC FRANÇAIS 20A4 SYMBOLE LIRE 20A5 SYMBOLE MILLIÈME 20A6 SYMBOLE NAIRA 20A7 SYMBOLE PESETA 20A8 SYMBOLE ROUPIE 20A9 SYMBOLE WON 20AA SYMBOLE NOUVEAU CHÉKEL 20AB SYMBOLE DONG 20AC SYMBOLE EURO 20AD SYMBOLE KIP 20AE SYMBOLE TOUGRIK 20AF SYMBOLE DRACHME (drakhmê) @@ 20D0 Signes combinatoires pour symboles 20FF 20D0 DIACRITIQUE VECTEUR VERS LA GAUCHE EN CHEF 20D1 DIACRITIQUE VECTEUR VERS LA DROITE EN CHEF 20D2 DIACRITIQUE LIGNE VERTICALE LONGUE COUVRANTE 20D3 DIACRITIQUE LIGNE VERTICALE COURTE COUVRANTE 20D4 DIACRITIQUE FLÈCHE EN SENS POSITIF EN CHEF 20D5 DIACRITIQUE FLÈCHE EN SENS NÉGATIF EN CHEF 20D6 DIACRITIQUE FLÈCHE VERS LA GAUCHE EN CHEF 20D7 DIACRITIQUE FLÈCHE VERS LA DROITE EN CHEF 20D8 DIACRITIQUE ROND COUVRANT 20D9 DIACRITIQUE ROND EN SENS NÉGATIF COUVRANT 20DA DIACRITIQUE ROND EN SENS POSITIF COUVRANT 20DB DIACRITIQUE TROIS POINTS EN CHEF 20DC DIACRITIQUE QUATRE POINTS EN CHEF 20DD DIACRITIQUE CERCLE ENGLOBANT 20DE DIACRITIQUE CARRÉ ENGLOBANT 20DF DIACRITIQUE LOSANGE ENGLOBANT 20E0 DIACRITIQUE CERCLE ENGLOBANT ET BARRE OBLIQUE INVERSÉE (avec contre-cotice) 20E1 DIACRITIQUE FLÈCHE GAUCHE ET DROITE EN CHEF 20E2 DIACRITIQUE ÉCRAN ENGLOBANT 20E3 DIACRITIQUE TOUCHE ENGLOBANTE P @@ 2100 Symboles de type lettre 214F 2100 SYMBOLE AU COMPTE DE 2101 SYMBOLE AUX BONS SOINS DE 2102 C MAJUSCULE AJOURÉ 2103 DEGRÉ CELSIUS 2104 SYMBOLE LIGNE DE CENTRE 2105 SYMBOLE ANGLAIS CARE-OF 2106 SYMBOLE CADA UNA 2107 CONSTANTE D'EULER 2108 SCRUPULE 2109 DEGRÉ FAHRENHEIT 210A MINUSCULE G DE RONDE 210B MAJUSCULE H DE RONDE 210C MAJUSCULE H GOTHIQUE 210D H MAJUSCULE AJOURÉ 210E CONSTANTE DE PLANCK 210F CONSTANTE DE PLANCK SUR DEUX PI 2110 MAJUSCULE I DE RONDE 2111 MAJUSCULE I GOTHIQUE 2112 MAJUSCULE L DE RONDE 2113 MINUSCULE L DE RONDE 2114 SYMBOLE L B BARRÉ 2115 N MAJUSCULE AJOURÉ 2116 SYMBOLE NUMÉRO 2117 COPYRIGHT DE PHONOGRAMME 2118 FONCTION ELLIPTIQUE DE WEIERSTRASS 2119 P MAJUSCULE AJOURÉ 211A Q MAJUSCULE AJOURÉ 211B MAJUSCULE R DE RONDE 211C MAJUSCULE R GOTHIQUE 211D R MAJUSCULE AJOURÉ 211E ORDONNANCES (recipe) 211F RÉPONSE 2120 SYMBOLE ANGLAIS MARQUE DE SERVICE 2121 SYMBOLE TÉLÉPHONE 2122 SYMBOLE ANGLAIS MARQUE DE COMMERCE (voir aussi marque déposée) 2123 VERSICULE 2124 Z MAJUSCULE AJOURÉ 2125 SYMBOLE ONCE 2126 SYMBOLE OHM 2127 SYMBOLE OHM RENVERSÉ (symbole mho) 2128 MAJUSCULE Z GOTHIQUE 2129 MINUSCULE GRECQUE IOTA CULBUTÉ 212A SYMBOLE KELVIN 212B SYMBOLE ANGSTRÖM 212C MAJUSCULE B DE RONDE 212D MAJUSCULE C GOTHIQUE 212E SYMBOLE ESTIMÉ 212F MINUSCULE E DE RONDE 2130 MAJUSCULE E DE RONDE 2131 MAJUSCULE F DE RONDE 2132 MAJUSCULE F CULBUTÉ 2133 MAJUSCULE M DE RONDE 2134 MINUSCULE O DE RONDE 2135 SYMBOLE ALEF 2136 SYMBOLE BÈT 2137 SYMBOLE GIMEL 2138 SYMBOLE DALÈT 2139 I BUREAU D'INFORMATION 213A Q MAJUSCULE COUCHÉ @@ 2150 Formes numériques 218F 2153 FRACTION UN TIERS 2154 FRACTION DEUX TIERS 2155 FRACTION UN CINQUIÈME 2156 FRACTION DEUX CINQUIÈMES 2157 FRACTION TROIS CINQUIÈMES 2158 FRACTION QUATRE CINQUIÈMES 2159 FRACTION UN SIXIÈME 215A FRACTION CINQ SIXIÈMES 215B FRACTION UN HUITIÈME 215C FRACTION TROIS HUITIÈMES 215D FRACTION CINQ HUITIÈMES 215E FRACTION SEPT HUITIÈMES 215F NUMÉRATEUR FRACTIONNAIRE UN 2160 CHIFFRE ROMAIN UN 2161 CHIFFRE ROMAIN DEUX 2162 CHIFFRE ROMAIN TROIS 2163 CHIFFRE ROMAIN QUATRE 2164 CHIFFRE ROMAIN CINQ 2165 CHIFFRE ROMAIN SIX 2166 CHIFFRE ROMAIN SEPT 2167 CHIFFRE ROMAIN HUIT 2168 CHIFFRE ROMAIN NEUF 2169 CHIFFRE ROMAIN DIX 216A CHIFFRE ROMAIN ONZE 216B CHIFFRE ROMAIN DOUZE 216C CHIFFRE ROMAIN CINQUANTE 216D CHIFFRE ROMAIN CENT 216E CHIFFRE ROMAIN CINQ CENTS 216F CHIFFRE ROMAIN MILLE 2170 CHIFFRE ROMAIN MINUSCULE UN 2171 CHIFFRE ROMAIN MINUSCULE DEUX 2172 CHIFFRE ROMAIN MINUSCULE TROIS 2173 CHIFFRE ROMAIN MINUSCULE QUATRE 2174 CHIFFRE ROMAIN MINUSCULE CINQ 2175 CHIFFRE ROMAIN MINUSCULE SIX 2176 CHIFFRE ROMAIN MINUSCULE SEPT 2177 CHIFFRE ROMAIN MINUSCULE HUIT 2178 CHIFFRE ROMAIN MINUSCULE NEUF 2179 CHIFFRE ROMAIN MINUSCULE DIX 217A CHIFFRE ROMAIN MINUSCULE ONZE 217B CHIFFRE ROMAIN MINUSCULE DOUZE 217C CHIFFRE ROMAIN MINUSCULE CINQUANTE 217D CHIFFRE ROMAIN MINUSCULE CENT 217E CHIFFRE ROMAIN MINUSCULE CINQ CENTS 217F CHIFFRE ROMAIN MINUSCULE MILLE 2180 CHIFFRE ROMAIN MILLE C D 2181 CHIFFRE ROMAIN CINQ MILLE 2182 CHIFFRE ROMAIN DIX MILLE 2183 CHIFFRE ROMAIN CENT CULBUTÉ @@ 2190 Flèches 21FF 2190 FLÈCHE VERS LA GAUCHE 2191 FLÈCHE VERS LE HAUT 2192 FLÈCHE VERS LA DROITE 2193 FLÈCHE VERS LE BAS 2194 FLÈCHE GAUCHE ET DROITE 2195 FLÈCHE HAUT-BAS 2196 FLÈCHE NORD-OUEST 2197 FLÈCHE NORD-EST 2198 FLÈCHE SUD-EST 2199 FLÈCHE SUD-OUEST 219A FLÈCHE VERS LA GAUCHE BARRÉE 219B FLÈCHE VERS LA DROITE BARRÉE 219C FLÈCHE VERS LA GAUCHE ONDULÉE 219D FLÈCHE VERS LA DROITE ONDULÉE 219E FLÈCHE VERS LA GAUCHE À DEUX POINTES 219F FLÈCHE VERS LE HAUT À DEUX POINTES 21A0 FLÈCHE VERS LA DROITE À DEUX POINTES 21A1 FLÈCHE VERS LE BAS À DEUX POINTES 21A2 FLÈCHE VERS LA GAUCHE À EMPENNAGE 21A3 FLÈCHE VERS LA DROITE À EMPENNAGE 21A4 FLÈCHE D'UN TAQUET VERS LA GAUCHE 21A5 FLÈCHE D'UN TAQUET VERS LE HAUT 21A6 FLÈCHE D'UN TAQUET VERS LA DROITE 21A7 FLÈCHE D'UN TAQUET VERS LE BAS 21A8 FLÈCHE HAUT-BAS SUR BASE 21A9 FLÈCHE VERS LA GAUCHE AVEC CROCHET 21AA FLÈCHE VERS LA DROITE AVEC CROCHET 21AB FLÈCHE VERS LA GAUCHE AVEC BOUCLE 21AC FLÈCHE VERS LA DROITE AVEC BOUCLE 21AD FLÈCHE GAUCHE-DROITE ONDULÉE 21AE FLÈCHE GAUCHE-DROITE BARRÉE 21AF FLÈCHE VERS LE BAS EN ZIGZAG 21B0 FLÈCHE VERS LE HAUT AVEC POINTE VERS LA GAUCHE 21B1 FLÈCHE VERS LE HAUT AVEC POINTE VERS LA DROITE 21B2 FLÈCHE VERS LE BAS AVEC POINTE VERS LA GAUCHE 21B3 FLÈCHE VERS LE BAS AVEC POINTE VERS LA DROITE 21B4 FLÈCHE VERS LA DROITE AVEC COIN VERS LE BAS 21B5 FLÈCHE VERS LE BAS AVEC COIN VERS LA GAUCHE 21B6 FLÈCHE SEMI-CIRCULAIRE EN SENS POSITIF EN CHEF 21B7 FLÈCHE SEMI-CIRCULAIRE EN SENS NÉGATIF EN CHEF 21B8 FLÈCHE NORD-OUEST JUSQU'À UNE BARRE LONGUE 21B9 FLÈCHE VERS LA GAUCHE JUSQU'À UN TAQUET PAR-DESSUS FLÈCHE VERS LA DROITE JUSQU'À UN TAQUET 21BA FLÈCHE EN SENS POSITIF À CERCLE OUVERT 21BB FLÈCHE EN SENS NÉGATIF À CERCLE OUVERT 21BC HARPON VERS LA GAUCHE AVEC DENT VERS LE HAUT 21BD HARPON VERS LA GAUCHE AVEC DENT VERS LE BAS 21BE HARPON VERS LE HAUT AVEC DENT VERS LA DROITE 21BF HARPON VERS LE HAUT AVEC DENT VERS LA GAUCHE 21C0 HARPON VERS LA DROITE AVEC DENT VERS LE HAUT 21C1 HARPON VERS LA DROITE AVEC DENT VERS LE BAS 21C2 HARPON VERS LE BAS AVEC DENT VERS LA DROITE 21C3 HARPON VERS LE BAS AVEC DENT VERS LA GAUCHE 21C4 FLÈCHE VERS LA DROITE PAR-DESSUS FLÈCHE VERS LA GAUCHE 21C5 FLÈCHE VERS LE HAUT À GAUCHE D'UNE FLÈCHE VERS LE BAS 21C6 FLÈCHE VERS LA GAUCHE PAR-DESSUS FLÈCHE VERS LA DROITE 21C7 PAIRE DE FLÈCHES VERS LA GAUCHE 21C8 PAIRE DE FLÈCHES VERS LE HAUT 21C9 PAIRE DE FLÈCHES VERS LA DROITE 21CA PAIRE DE FLÈCHES VERS LE BAS 21CB HARPON VERS LA GAUCHE PAR-DESSUS HARPON VERS LA DROITE 21CC HARPON VERS LA DROITE PAR-DESSUS HARPON VERS LA GAUCHE 21CD DOUBLE FLÈCHE VERS LA GAUCHE BARRÉE 21CE DOUBLE FLÈCHE GAUCHE ET DROITE BARRÉE 21CF DOUBLE FLÈCHE VERS LA DROITE BARRÉE 21D0 DOUBLE FLÈCHE VERS LA GAUCHE 21D1 DOUBLE FLÈCHE VERS LE HAUT 21D2 DOUBLE FLÈCHE VERS LA DROITE 21D3 DOUBLE FLÈCHE VERS LE BAS 21D4 DOUBLE FLÈCHE GAUCHE ET DROITE 21D5 DOUBLE FLÈCHE HAUT-BAS 21D6 DOUBLE FLÈCHE NORD-OUEST 21D7 DOUBLE FLÈCHE NORD-EST 21D8 DOUBLE FLÈCHE SUD-EST 21D9 DOUBLE FLÈCHE SUD-OUEST 21DA TRIPLE FLÈCHE VERS LA GAUCHE 21DB TRIPLE FLÈCHE VERS LA DROITE 21DC FLÈCHE VERS LA GAUCHE EN TIRE-BOUCHON 21DD FLÈCHE VERS LA DROITE EN TIRE-BOUCHON 21DE FLÈCHE VERS LE HAUT AVEC DOUBLE BARRE 21DF FLÈCHE VERS LE BAS AVEC DOUBLE BARRE 21E0 FLÈCHE POINTILLÉE VERS LA GAUCHE 21E1 FLÈCHE POINTILLÉE VERS LE HAUT 21E2 FLÈCHE POINTILLÉE VERS LA DROITE 21E3 FLÈCHE POINTILLÉE VERS LE BAS 21E4 FLÈCHE VERS LA GAUCHE JUSQU'À UN TAQUET 21E5 FLÈCHE VERS LA DROITE JUSQU'À UN TAQUET 21E6 FLÈCHE AJOURÉE VERS LA GAUCHE 21E7 FLÈCHE AJOURÉE VERS LE HAUT 21E8 FLÈCHE AJOURÉE VERS LA DROITE 21E9 FLÈCHE AJOURÉE VERS LE BAS 21EA FLÈCHE AJOURÉE VERS LE HAUT À PARTIR D'UN TAQUET 21EB FLÈCHE BLANCHE VERS LE HAUT SUR SOCLE 21EC FLÈCHE BLANCHE VERS LE HAUT SUR SOCLE ET TRAIT HORIZONTAL 21ED FLÈCHE BLANCHE VERS LE HAUT SUR SOCLE ET BARRE VERTICALE 21EE DOUBLE FLÈCHE BLANCHE VERS LE HAUT 21EF DOUBLE FLÈCHE BLANCHE VERS LE HAUT SUR SOCLE 21F0 FLÈCHE BLANCHE VERS LA DROITE APPUYÉE SUR MUR 21F1 FLÈCHE NORD-OUEST EN ENCOIGNURE 21F2 FLÈCHE SUD-EST EN ENCOIGNURE 21F3 FLÈCHE BLANCHE VERS LE HAUT ET LE BAS @@ 2200 Opérateurs mathématiques 22FF 2200 POUR TOUS 2201 COMPLÉMENT 2202 DÉRIVÉE PARTIELLE 2203 IL EXISTE 2204 IL N'EXISTE PAS 2205 ENSEMBLE VIDE 2206 INCRÉMENT 2207 NABLA 2208 APPARTIENT À 2209 N'APPARTIENT PAS À 220A PETIT APPARTIENT À 220B CONTIENT COMME ÉLÉMENT 220C NE CONTIENT PAS COMME ÉLÉMENT 220D PETIT CONTIENT COMME ÉLÉMENT 220E CE QU'IL FALLAIT DÉMONTRER 220F PRODUIT DE LA FAMILLE 2210 COPRODUIT DE LA FAMILLE 2211 SOMMATION DE LA FAMILLE 2212 SIGNE MOINS 2213 SIGNE MOINS-OU-PLUS 2214 PLUS POINTÉ 2215 BARRE OBLIQUE DE DIVISION 2216 DIFFÉRENCE D'ENSEMBLE 2217 OPÉRATEUR ASTÉRISQUE 2218 OPÉRATEUR ROND 2219 OPÉRATEUR PUCE 221A RACINE CARRÉE 221B RACINE CUBIQUE 221C RACINE QUATRIÈME 221D PROPORTIONNEL À 221E INFINI 221F ANGLE DROIT 2220 ANGLE 2221 ANGLE MESURÉ 2222 ANGLE SPHÉRIQUE 2223 EST UN DIVISEUR DE 2224 N'EST PAS UN DIVISEUR DE 2225 PARALLÈLE À 2226 NON PARALLÈLE À 2227 ET LOGIQUE 2228 OU LOGIQUE 2229 INTERSECTION 222A UNION 222B INTÉGRALE 222C INTÉGRALE DOUBLE 222D INTÉGRALE TRIPLE 222E INTÉGRALE DE CONTOUR 222F INTÉGRALE DE SURFACE 2230 INTÉGRALE DE VOLUME 2231 INTÉGRALE EN SENS NÉGATIF 2232 INTÉGRALE DE CONTOUR EN SENS NÉGATIF 2233 INTÉGRALE DE CONTOUR EN SENS POSITIF 2234 PAR CONSÉQUENT 2235 PARCE QUE 2236 RAPPORT 2237 PROPORTION 2238 MOINS POINTÉ 2239 EXCÈS 223A PROPORTION GÉOMÉTRIQUE 223B HOMOTHÉTIQUE 223C OPÉRATEUR TILDE 223D OPÉRATEUR TILDE RENVERSÉ 223E S COUCHÉ RENVERSÉ 223F SINUSOÏDE 2240 PRODUIT COURONNE 2241 NON TILDE 2242 MOINS TILDE 2243 ASYMPTOTIQUEMENT ÉGAL À 2244 NON ASYMPTOTIQUEMENT ÉGAL À 2245 APPROXIMATIVEMENT ÉGAL À 2246 APPROXIMATIVEMENT MAIS NON STRICTEMENT ÉGAL À 2247 NI APPROXIMATIVEMENT NI STRICTEMENT ÉGAL À 2248 PRESQUE ÉGAL À 2249 NON PRESQUE ÉGAL À 224A PRESQUE ÉGAL OU ÉGAL À 224B TRIPLE TILDE 224C ENTIÈREMENT ÉGAL À 224D ÉQUIVALENT À 224E GÉOMÉTRIQUEMENT ÉQUIVALENT À 224F DIFFÉRENCE ENTRE 2250 TEND VERS LA LIMITE 2251 GÉOMÉTRIQUEMENT ÉGAL À 2252 APPROXIMATIVEMENT ÉGAL À OU IMAGE DE 2253 IMAGE DE OU APPROXIMATIVEMENT ÉGAL À 2254 DEUX-POINTS ÉGAL 2255 ÉGAL DEUX-POINTS 2256 ROND DANS ÉGAL 2257 ÉGAL AVEC ROND EN CHEF 2258 CORRESPOND À 2259 ESTIME 225A ÉQUIANGULAIRE À 225B ÉGAL AVEC ÉTOILE EN CHEF 225C ÉGAL DELTA 225D ÉGAL PAR DÉFINITION À 225E MESURÉ PAR 225F ÉGALITÉ EN DOUTE 2260 NON ÉGAL À 2261 IDENTIQUE À 2262 NON IDENTIQUE À 2263 STRICTEMENT ÉQUIVALENT À 2264 PLUS PETIT OU ÉGAL À 2265 PLUS GRAND OU ÉGAL À 2266 PLUS PETIT QUE PAR-DESSUS ÉGAL À 2267 PLUS GRAND QUE PAR-DESSUS ÉGAL À 2268 PLUS PETIT MAIS NON ÉGAL À 2269 PLUS GRAND MAIS NON ÉGAL À 226A BEAUCOUP PLUS PETIT QUE 226B BEAUCOUP PLUS GRAND QUE 226C ENTRE 226D NON ÉQUIVALENT À 226E PAS PLUS PETIT QUE 226F PAS PLUS GRAND QUE 2270 NI PLUS PETIT NI ÉGAL À 2271 NI PLUS GRAND NI ÉGAL À 2272 PLUS PETIT OU ÉQUIVALENT À 2273 PLUS GRAND OU ÉQUIVALENT À 2274 NI PLUS PETIT NI ÉQUIVALENT À 2275 NI PLUS GRAND NI ÉQUIVALENT À 2276 PLUS PETIT OU PLUS GRAND QUE 2277 PLUS GRAND OU PLUS PETIT QUE 2278 NI PLUS PETIT NI PLUS GRAND QUE 2279 NI PLUS GRAND NI PLUS PETIT QUE 227A PRÉCÈDE 227B SUIT 227C PRÉCÈDE OU EST ÉGAL À 227D SUIT OU EST ÉGAL À 227E PRÉCÈDE OU EST ÉQUIVALENT À 227F SUIT OU EST ÉQUIVALENT À 2280 NE PRÉCÈDE PAS 2281 NE SUIT PAS 2282 SOUS-ENSEMBLE DE 2283 SUR-ENSEMBLE DE 2284 PAS UN SOUS-ENSEMBLE DE 2285 PAS UN SUR-ENSEMBLE DE 2286 SOUS-ENSEMBLE OU ÉGAL À 2287 SUR-ENSEMBLE OU ÉGAL À 2288 NI UN SOUS-ENSEMBLE NI ÉGAL À 2289 NI UN SUR-ENSEMBLE NI ÉGAL À 228A SOUS-ENSEMBLE MAIS NON ÉGAL À 228B SUR-ENSEMBLE MAIS NON ÉGAL À 228C MULTIENSEMBLE 228D MULTIPLICATION DE MULTIENSEMBLE 228E UNION DE MULTIENSEMBLE 228F IMAGE CARRÉE DE 2290 ORIGINAL CARRÉ DE 2291 IMAGE CARRÉE OU ÉGAL À 2292 ORIGINAL CARRÉ OU ÉGAL À 2293 CHAPEAU CARRÉ 2294 COUPE CARRÉE 2295 PLUS CERCLÉ 2296 MOINS CERCLÉ 2297 MULTIPLIÉ PAR CERCLÉ 2298 BARRE OBLIQUE DE DIVISION CERCLÉE 2299 OPÉRATEUR POINT CERCLÉ 229A OPÉRATEUR ROND CERCLÉ 229B OPÉRATEUR ASTÉRISQUE CERCLÉ 229C ÉGAL CERCLÉ 229D TIRET CERCLÉ 229E PLUS ENCADRÉ 229F MOINS ENCADRÉ 22A0 MULTIPLIÉ PAR ENCADRÉ 22A1 OPÉRATEUR POINT ENCADRÉ 22A2 TAQUET DROIT 22A3 TAQUET GAUCHE 22A4 TAQUET VERS LE BAS 22A5 TAQUET VERS LE HAUT 22A6 ASSERTION 22A7 MODÉLISE 22A8 VRAI 22A9 OBLIGE 22AA BARRE VERTICALE TRIPLE AVEC TOURNIQUET À DROITE 22AB BARRE VERTICALE DOUBLE AVEC TOURNIQUET À DROITE DOUBLE 22AC NE PROUVE PAS 22AD PAS VRAI 22AE N'OBLIGE PAS 22AF NON-BARRE VERTICALE DOUBLE AVEC TOURNIQUET À DROITE DOUBLE 22B0 PRECÈDE SOUS RELATION 22B1 SUIT SOUS RELATION 22B2 SOUS-GROUPE NORMAL DE 22B3 CONTIENT COMME SOUS-GROUPE NORMAL 22B4 SOUS-GROUPE NORMAL OU ÉGAL À 22B5 CONTIENT COMME SOUS-GROUPE NORMAL OU ÉGAL À 22B6 ORIGINAL DE 22B7 IMAGE DE 22B8 MULTIJECTION 22B9 MATRICE HERMITIENNE CONJUGUÉE 22BA INTERCALE 22BB OU EXCLUSIF 22BC NON ET 22BD NON OU 22BE ANGLE DROIT AVEC ARC 22BF TRIANGLE RECTANGLE 22C0 ET LOGIQUE DE LA FAMILLE 22C1 OU LOGIQUE DE LA FAMILLE 22C2 INTERSECTION DE LA FAMILLE 22C3 RÉUNION DE LA FAMILLE 22C4 OPÉRATEUR LOSANGE 22C5 OPÉRATEUR POINT 22C6 OPÉRATEUR ÉTOILE 22C7 DIVISÉ MULTIPLIÉ 22C8 NOEUD PAPILLON 22C9 PRODUIT SEMI-DIRECT À GAUCHE DE FACTEUR NORMAL 22CA PRODUIT SEMI-DIRECT À DROITE DE FACTEUR NORMAL 22CB PRODUIT SEMI-DIRECT À GAUCHE 22CC PRODUIT SEMI-DIRECT À DROITE 22CD MOINS TILDE RENVERSÉ 22CE OU LOGIQUE RECOURBÉ 22CF ET LOGIQUE RECOURBÉ 22D0 SOUS-ENSEMBLE DOUBLE 22D1 SUR-ENSEMBLE DOUBLE 22D2 INTERSECTION DOUBLE 22D3 UNION DOUBLE 22D4 FOURCHE 22D5 ÉGAL ET PARALLÈLE À 22D6 PLUS PETIT QUE POINTÉ 22D7 PLUS GRAND QUE POINTÉ 22D8 CONSIDÉRALEMENT PLUS PETIT QUE 22D9 CONSIDÉRALEMENT PLUS GRAND QUE 22DA PLUS PETIT OU ÉGAL OU PLUS GRAND QUE 22DB PLUS GRAND OU ÉGAL OU PLUS PETIT QUE 22DC ÉGAL OU PLUS PETIT QUE 22DD ÉGAL OU PLUS GRAND QUE 22DE ÉGAL OU PRÉCÈDE 22DF EGAL OU SUIT 22E0 NI PRÉCÉDANT NI ÉGAL À 22E1 NI SUIVANT NI ÉGAL À 22E2 NI IMAGE CARRÉE NI ÉGAL À 22E3 NI ORIGINAL CARRÉ NI ÉGAL À 22E4 IMAGE CARRÉ OU DIFFÉRENT DE 22E5 ORIGINAL CARRÉ OU DIFFÉRENT DE 22E6 PLUS PETIT MAIS NON ÉQUIVALENT À 22E7 PLUS GRAND MAIS NON ÉQUIVALENT À 22E8 PRÉCÉDANT MAIS NON ÉQUIVALENT À 22E9 SUIVANT MAIS NON ÉQUIVALENT À 22EA PAS UN SOUS-GROUPE NORMAL DE 22EB NE CONTIENT PAS COMME SOUS-GROUPE NORMAL 22EC NI SOUS-GROUPE NORMAL NI ÉGAL À 22ED NI ÉGAL NI CONTENANT COMME SOUS-GROUPE NORMAL 22EE TROIS POINTS SUSPENDUS 22EF TROIS POINTS MÉDIANS 22F0 TROIS POINTS DIAGONAUX VERS LE COIN HAUT À DROITE 22F1 TROIS POINTS DIAGONAUX VERS LE COIN BAS À DROITE @@ 2300 Signes techniques divers 23FF 2300 SYMBOLE DIAMÈTRE 2301 FLÈCHE ÉLECTRIQUE 2302 MAISON 2303 POINTE DE FLÈCHE VERS LE HAUT 2304 POINTE DE FLÈCHE VERS LE BAS 2305 PROJECTIVE 2306 PERSPECTIVE 2307 LIGNE ONDULÉE 2308 PLAFOND À GAUCHE 2309 PLAFOND À DROITE 230A PLANCHER À GAUCHE 230B PLANCHER À DROITE 230C REPÈRE SUD-EST (hirondelle sud-est) 230D REPÈRE SUD-OUEST (hirondelle sud-ouest) 230E REPÈRE NORD-EST (hirondelle nord-est) 230F REPÈRE NORD-OUEST (hirondelle nord-ouest) 2310 SIGNE NÉGATION RÉFLÉCHI 2311 PASTILLE CARRÉE 2312 ARC 2313 SEGMENT 2314 SECTEUR 2315 ENREGISTREUR TÉLÉPHONIQUE 2316 REPÈRE DE CALAGE (croix de repérage) 2317 CARRÉ DE VISUALISATION 2318 SYMBOLE DE POINT D'INTÉRÊT 2319 SIGNE NÉGATION CULBUTÉ 231A MONTRE 231B SABLIER 231C COIN NORD-OUEST 231D COIN NORD-EST 231E COIN SUD-OUEST 231F COIN SUD-EST 2320 MOITIÉ SUPÉRIEURE D'INTÉGRALE 2321 MOITIÉ INFÉRIEURE D'INTÉGRALE 2322 MOUE 2323 SOURIRE 2324 POINTE DE FLÈCHE VERS LE HAUT ENTRE DEUX TRAITS HORIZONTAUX 2325 TOUCHE OPTION 2326 EFFACHEMENT À DROITE 2327 X DANS RECTANGLE 2328 CLAVIER 2329 CROCHET VERS LA GAUCHE 232A CROCHET VERS LA DROITE 232B EFFACEMENT À GAUCHE 232C ANNEAU DE BENZÈNE 232D CYLINDRICITÉ 232E PROFIL HORS-TOUT 232F SYMÉTRIE 2330 COURSE TOTALE 2331 ORIGINE DE MESURE 2332 RÉTRÉCISSEMENT CONIQUE 2333 PENTE 2334 ALÉSAGE 2335 FRAISAGE 2336 SYMBOLE DE FONCTION APL RAIL (poutre en i) 2337 SYMBOLE DE FONCTION APL QUADRAT MINCE 2338 SYMBOLE DE FONCTION APL ÉTAGÈRE (baril) 2339 SYMBOLE DE FONCTION APL DOMINO 233A SYMBOLE DE FONCTION APL RIDEAUX 233B SYMBOLE DE FONCTION APL AS 233C SYMBOLE DE FONCTION APL RHÉOSTAT 233D SYMBOLE DE FONCTION APL FUSEAU 233E SYMBOLE DE FONCTION APL BEIGNE 233F SYMBOLE DE FONCTION APL COTICE BARRÉ 2340 SYMBOLE DE FONCTION APL CONTRE-COTICE BARRÉE 2341 SYMBOLE DE FONCTION APL QUADRAT OBLIQUE 2342 SYMBOLE DE FONCTION APL QUADRAT OBLIQUE INVERSÉE 2343 SYMBOLE DE FONCTION APL QUADRAT PLUS PETIT QUE 2344 SYMBOLE DE FONCTION APL QUADRAT PLUS GRAND QUE 2345 SYMBOLE DE FONCTION APL BARBE VERS LA GAUCHE 2346 SYMBOLE DE FONCTION APL BARBE VERS LA DROITE 2347 SYMBOLE DE FONCTION APL QUADRAT LIBÉRAL 2348 SYMBOLE DE FONCTION APL QUADRAT CONSERVATEUR 2349 SYMBOLE DE FONCTION APL SATURNE 234A SYMBOLE DE FONCTION APL TAQUET VERS LE BAS SOULIGNÉ * 234B SYMBOLE DE FONCTION APL SAPIN (parapluie) 234C SYMBOLE DE FONCTION APL QUADRAT CIRCONFLEXE RENVERSÉ 234D SYMBOLE DE FONCTION APL QUADRAT DELTA 234E SYMBOLE DE FONCTION APL FORMATAGE 234F SYMBOLE DE FONCTION APL BARBE VERS LE HAUT 2350 SYMBOLE DE FONCTION APL QUADRAT CIEL 2351 SYMBOLE DE FONCTION APL TAQUET VERS LE HAUT * 2352 SYMBOLE DE FONCTION APL CAROTTE 2353 SYMBOLE DE FONCTION APL QUADRAT CIRCONFLEXE 2354 SYMBOLE DE FONCTION APL QUADRAT DEL 2355 SYMBOLE DE FONCTION APL EXÉCUTION 2356 SYMBOLE DE FONCTION APL BARBE VERS LE BAS 2357 SYMBOLE DE FONCTION APL QUADRAT ENFER 2358 SYMBOLE DE FONCTION APL APOSTROPHE SOULIGNÉ 2359 SYMBOLE DE FONCTION APL DELTA SOULIGNÉ 235A SYMBOLE DE FONCTION APL LOSANGE SOULIGNÉ 235B SYMBOLE DE FONCTION APL PETIT ROND SOULIGNÉ (pof) 235C SYMBOLE DE FONCTION APL ROND SOULIGNÉ 235D SYMBOLE DE FONCTION APL ABAT-JOUR (lampe Tiffany) 235E SYMBOLE DE FONCTION APL APOSTROPHE ENCADRÉ 235F SYMBOLE DE FONCTION APL CITRON 2360 SYMBOLE DE FONCTION APL BOUTON CARRÉ 2361 SYMBOLE DE FONCTION APL SÉRIEUX 2362 SYMBOLE DE FONCTION APL CORBEAU (cigogne) 2363 SYMBOLE DE FONCTION APL SÛR 2364 SYMBOLE DE FONCTION APL MINNIE 2365 SYMBOLE DE FONCTION APL DINGOT (Goofy) 2366 SYMBOLE DE FONCTION APL FOURCHE 2367 SYMBOLE DE FONCTION APL CENTIME (cent) 2368 SYMBOLE DE FONCTION APL MOUE 2369 SYMBOLE DE FONCTION APL MOINEAU 236A SYMBOLE DE FONCTION APL BARBICHE 236B SYMBOLE DE FONCTION APL VERROU 236C SYMBOLE DE FONCTION APL ZILDE 236D SYMBOLE DE FONCTION APL ALOHA 236E SYMBOLE DE FONCTION APL POINT-VIRGULE SOULIGNÉ 236F SYMBOLE DE FONCTION APL QUADRAT DIFFÉRENT DE 2370 SYMBOLE DE FONCTION APL QUADRAT INFO 2371 SYMBOLE DE FONCTION APL NON-ET 2372 SYMBOLE DE FONCTION APL NON-OU 2373 SYMBOLE DE FONCTION APL IOTA 2374 SYMBOLE DE FONCTION APL RHÔ 2375 SYMBOLE DE FONCTION APL OMÉGA 2376 SYMBOLE DE FONCTION APL ALPHA SOULIGNÉ 2377 SYMBOLE DE FONCTION APL EPSILON SOULIGNÉ 2378 SYMBOLE DE FONCTION APL IOTA SOULIGNÉ 2379 SYMBOLE DE FONCTION APL OMÉGA SOULIGNÉ 237A SYMBOLE DE FONCTION APL ALPHA 237B SIGNE DE NON-VÉRIFICATION 237D CAISSE OUVERTE À ÉPAULEMENT (symbole espace insécable) 237E SYMBOLE SONNETTE 237F LIGNE VERTICALE À POINT MÉDIAN 2380 SYMBOLE D'INSERTION 2381 SYMBOLE DE SOULIGNEMENT CONTINU 2382 SYMBOLE DE SOULIGNEMENT DISCONTINU 2383 SYMBOLE D'INSISTANCE 2384 SYMBOLE DE COMPOSITION 2385 CARRÉ BLANC TRAVERSÉ EN SON CENTRE D'UNE LIGNE VERTICALE 2386 SYMBOLE D'ENTRÉE 2387 SYMBOLE ALTERNATIVE (touche alt) 2388 SYMBOLE ROUE DE BATEAU (contrôle) 2389 BARRE HORIZONTALE ENCOCHÉE CERCLÉE (pause) 238A TRIANGLE POINTE VERS LE BAS CERCLÉ (arrêt) 238B CERCLE BRISÉ À FLÈCHE NORD-OUEST (échappement) 238C SYMBOLE DÉFAIRE 238D SYMBOLE MONOSTABLE 238E SYMBOLE HYSTÉRÉSIS 238F SYMBOLE SORTIE EN CIRCUIT OUVERT DE TYPE-H 2390 SYMBOLE SORTIE EN CIRCUIT OUVERT DE TYPE-L 2391 SYMBOLE SORTIE PASSIVE ABAISSEUSE 2392 SYMBOLE SORTIE PASSIVE ÉLEVEUSE 2393 SYMBOLE COURANT CONTINU FORME DEUX 2394 SYMBOLE FONCTION LOGICIELLE 2395 SYMBOLE DE FONCTION APL QUADRAT 2396 SYMBOLE DE CLÉ DE SÉPARATEUR DÉCIMAL 2397 PAGE PRÉCÉDENTE 2398 PAGE SUIVANTE 2399 SYMBOLE IMPRIMER ÉCRAN 239A SYMBOLE NETTOYER ÉCRAN @@ 2400 Pictogrammes de commande 243F 2400 SYMBOLE POUR NUL 2401 SYMBOLE DÉBUT D'EN-TÊTE 2402 SYMBOLE DÉBUT DE TEXTE 2403 SYMBOLE FIN DE TEXTE 2404 SYMBOLE FIN DE TRANSMISSION 2405 SYMBOLE DEMANDE 2406 SYMBOLE D'ACCUSÉ DE RÉCEPTION 2407 SYMBOLE DE SONNERIE 2408 SYMBOLE ESPACE ARRIÈRE 2409 SYMBOLE DE TABULATION HORIZONTALE 240A SYMBOLE DE CHANGEMENT DE LIGNE 240B SYMBOLE DE TABULATION VERTICALE 240C SYMBOLE DE SAUT DE PAGE 240D SYMBOLE DE RETOUR DE CHARIOT 240E SYMBOLE HORS CODE 240F SYMBOLE EN CODE 2410 SYMBOLE ÉCHAPPEMENT TRANSMISSION 2411 SYMBOLE DE COMMANDE DE DISPOSITIF UN 2412 SYMBOLE DE COMMANDE DE DISPOSITIF DEUX 2413 SYMBOLE DE COMMANDE DE DISPOSITIF TROIS 2414 SYMBOLE DE COMMANDE DE DISPOSITIF QUATRE 2415 SYMBOLE D'ACCUSÉ DE RÉCEPTION NÉGATIF 2416 SYMBOLE DE SYNCHRONISATION 2417 SYMBOLE DE FIN DE BLOC DE TRANSMISSION 2418 SYMBOLE D'ANNULATION 2419 SYMBOLE DE FIN DE SUPPORT 241A SYMBOLE DE SUBSTITUTION 241B SYMBOLE D'ÉCHAPPEMENT 241C SYMBOLE SÉPARATEUR DE FICHIERS 241D SYMBOLE SÉPARATEUR DE GROUPES 241E SYMBOLE SÉPARATEUR D'ENREGISTREMENTS 241F SYMBOLE SÉPARATEUR D'UNITÉS 2420 SYMBOLE POUR ESPACE 2421 SYMBOLE DE SUPPRESSION 2422 SYMBOLE VISUEL POUR L'ESPACE 2423 BOÎTE OUVERTE 2424 SYMBOLE DE NOUVELLE LIGNE 2425 SYMBOLE DE SUPRESSION FORME DEUX 2426 SYMBOLE DE SUBSTITUTION FORME DEUX @@ 2440 Reconnaissance optique de caractères 245F 2440 CROCHET ROC 2441 CHAISE ROC 2442 FOURCHETTE ROC 2443 FOURCHETTE RENVERSÉE ROC 2444 BOUCLE DE CEINTURE ROC 2445 NOEUD PAPILLON ROC 2446 IDENTIFICATION DE SUCCURSALE BANCAIRE ROC 2447 MONTANT DU CHÈQUE ROC 2448 TIRET ROC 2449 NUMÉRO DE COMPTE-CLIENT ROC 244A DOUBLE BARRE OBLIQUE INVERSÉE ROC (double contre-cotice ROC) @@ 2460 Alphanumériques cerclés 24FF 2460 CHIFFRE UN CERCLÉ 2461 CHIFFRE DEUX CERCLÉ 2462 CHIFFRE TROIS CERCLÉ 2463 CHIFFRE QUATRE CERCLÉ 2464 CHIFFRE CINQ CERCLÉ 2465 CHIFFRE SIX CERCLÉ 2466 CHIFFRE SEPT CERCLÉ 2467 CHIFFRE HUIT CERCLÉ 2468 CHIFFRE NEUF CERCLÉ 2469 NOMBRE DIX CERCLÉ 246A NOMBRE ONZE CERCLÉ 246B NOMBRE DOUZE CERCLÉ 246C NOMBRE TREIZE CERCLÉ 246D NOMBRE QUATORZE CERCLÉ 246E NOMBRE QUINZE CERCLÉ 246F NOMBRE SEIZE CERCLÉ 2470 NOMBRE DIX-SEPT CERCLÉ 2471 NOMBRE DIX-HUIT CERCLÉ 2472 NOMBRE DIX-NEUF CERCLÉ 2473 NOMBRE VINGT CERCLÉ 2474 CHIFFRE UN ENTRE PARENTHÈSES 2475 CHIFFRE DEUX ENTRE PARENTHÈSES 2476 CHIFFRE TROIS ENTRE PARENTHÈSES 2477 CHIFFRE QUATRE ENTRE PARENTHÈSES 2478 CHIFFRE CINQ ENTRE PARENTHÈSES 2479 CHIFFRE SIX ENTRE PARENTHÈSES 247A CHIFFRE SEPT ENTRE PARENTHÈSES 247B CHIFFRE HUIT ENTRE PARENTHÈSES 247C CHIFFRE NEUF ENTRE PARENTHÈSES 247D NOMBRE DIX ENTRE PARENTHÈSES 247E NOMBRE ONZE ENTRE PARENTHÈSES 247F NOMBRE DOUZE ENTRE PARENTHÈSES 2480 NOMBRE TREIZE ENTRE PARENTHÈSES 2481 NOMBRE QUATORZE ENTRE PARENTHÈSES 2482 NOMBRE QUINZE ENTRE PARENTHÈSES 2483 NOMBRE SEIZE ENTRE PARENTHÈSES 2484 NOMBRE DIX-SEPT ENTRE PARENTHÈSES 2485 NOMBRE DIX-HUIT ENTRE PARENTHÈSES 2486 NOMBRE DIX-NEUF ENTRE PARENTHÈSES 2487 NOMBRE VINGT ENTRE PARENTHÈSES 2488 CHIFFRE UN POINT 2489 CHIFFRE DEUX POINT 248A CHIFFRE TROIS POINT 248B CHIFFRE QUATRE POINT 248C CHIFFRE CINQ POINT 248D CHIFFRE SIX POINT 248E CHIFFRE SEPT POINT 248F CHIFFRE HUIT POINT 2490 CHIFFRE NEUF POINT 2491 NOMBRE DIX POINT 2492 NOMBRE ONZE POINT 2493 NOMBRE DOUZE POINT 2494 NOMBRE TREIZE POINT 2495 NOMBRE QUATORZE POINT 2496 NOMBRE QUINZE POINT 2497 NOMBRE SEIZE POINT 2498 NOMBRE DIX-SEPT POINT 2499 NOMBRE DIX-HUIT POINT 249A NOMBRE DIX-NEUF POINT 249B NOMBRE VINGT POINT 249C LETTRE MINUSCULE LATINE A ENTRE PARENTHÈSES 249D LETTRE MINUSCULE LATINE B ENTRE PARENTHÈSES 249E LETTRE MINUSCULE LATINE C ENTRE PARENTHÈSES 249F LETTRE MINUSCULE LATINE D ENTRE PARENTHÈSES 24A0 LETTRE MINUSCULE LATINE E ENTRE PARENTHÈSES 24A1 LETTRE MINUSCULE LATINE F ENTRE PARENTHÈSES 24A2 LETTRE MINUSCULE LATINE G ENTRE PARENTHÈSES 24A3 LETTRE MINUSCULE LATINE H ENTRE PARENTHÈSES 24A4 LETTRE MINUSCULE LATINE I ENTRE PARENTHÈSES 24A5 LETTRE MINUSCULE LATINE J ENTRE PARENTHÈSES 24A6 LETTRE MINUSCULE LATINE K ENTRE PARENTHÈSES 24A7 LETTRE MINUSCULE LATINE L ENTRE PARENTHÈSES 24A8 LETTRE MINUSCULE LATINE M ENTRE PARENTHÈSES 24A9 LETTRE MINUSCULE LATINE N ENTRE PARENTHÈSES 24AA LETTRE MINUSCULE LATINE O ENTRE PARENTHÈSES 24AB LETTRE MINUSCULE LATINE P ENTRE PARENTHÈSES 24AC LETTRE MINUSCULE LATINE Q ENTRE PARENTHÈSES 24AD LETTRE MINUSCULE LATINE R ENTRE PARENTHÈSES 24AE LETTRE MINUSCULE LATINE S ENTRE PARENTHÈSES 24AF LETTRE MINUSCULE LATINE T ENTRE PARENTHÈSES 24B0 LETTRE MINUSCULE LATINE U ENTRE PARENTHÈSES 24B1 LETTRE MINUSCULE LATINE V ENTRE PARENTHÈSES 24B2 LETTRE MINUSCULE LATINE W ENTRE PARENTHÈSES 24B3 LETTRE MINUSCULE LATINE X ENTRE PARENTHÈSES 24B4 LETTRE MINUSCULE LATINE Y ENTRE PARENTHÈSES 24B5 LETTRE MINUSCULE LATINE Z ENTRE PARENTHÈSES 24B6 LETTRE MAJUSCULE LATINE A CERCLÉE 24B7 LETTRE MAJUSCULE LATINE B CERCLÉE 24B8 LETTRE MAJUSCULE LATINE C CERCLÉE 24B9 LETTRE MAJUSCULE LATINE D CERCLÉE 24BA LETTRE MAJUSCULE LATINE E CERCLÉE 24BB LETTRE MAJUSCULE LATINE F CERCLÉE 24BC LETTRE MAJUSCULE LATINE G CERCLÉE 24BD LETTRE MAJUSCULE LATINE H CERCLÉE 24BE LETTRE MAJUSCULE LATINE I CERCLÉE 24BF LETTRE MAJUSCULE LATINE J CERCLÉE 24C0 LETTRE MAJUSCULE LATINE K CERCLÉE 24C1 LETTRE MAJUSCULE LATINE L CERCLÉE 24C2 LETTRE MAJUSCULE LATINE M CERCLÉE 24C3 LETTRE MAJUSCULE LATINE N CERCLÉE 24C4 LETTRE MAJUSCULE LATINE O CERCLÉE 24C5 LETTRE MAJUSCULE LATINE P CERCLÉE 24C6 LETTRE MAJUSCULE LATINE Q CERCLÉE 24C7 LETTRE MAJUSCULE LATINE R CERCLÉE 24C8 LETTRE MAJUSCULE LATINE S CERCLÉE 24C9 LETTRE MAJUSCULE LATINE T CERCLÉE 24CA LETTRE MAJUSCULE LATINE U CERCLÉE 24CB LETTRE MAJUSCULE LATINE V CERCLÉE 24CC LETTRE MAJUSCULE LATINE W CERCLÉE 24CD LETTRE MAJUSCULE LATINE X CERCLÉE 24CE LETTRE MAJUSCULE LATINE Y CERCLÉE 24CF LETTRE MAJUSCULE LATINE Z CERCLÉE 24D0 LETTRE MINUSCULE LATINE A CERCLÉE 24D1 LETTRE MINUSCULE LATINE B CERCLÉE 24D2 LETTRE MINUSCULE LATINE C CERCLÉE 24D3 LETTRE MINUSCULE LATINE D CERCLÉE 24D4 LETTRE MINUSCULE LATINE E CERCLÉE 24D5 LETTRE MINUSCULE LATINE F CERCLÉE 24D6 LETTRE MINUSCULE LATINE G CERCLÉE 24D7 LETTRE MINUSCULE LATINE H CERCLÉE 24D8 LETTRE MINUSCULE LATINE I CERCLÉE 24D9 LETTRE MINUSCULE LATINE J CERCLÉE 24DA LETTRE MINUSCULE LATINE K CERCLÉE 24DB LETTRE MINUSCULE LATINE L CERCLÉE 24DC LETTRE MINUSCULE LATINE M CERCLÉE 24DD LETTRE MINUSCULE LATINE N CERCLÉE 24DE LETTRE MINUSCULE LATINE O CERCLÉE 24DF LETTRE MINUSCULE LATINE P CERCLÉE 24E0 LETTRE MINUSCULE LATINE Q CERCLÉE 24E1 LETTRE MINUSCULE LATINE R CERCLÉE 24E2 LETTRE MINUSCULE LATINE S CERCLÉE 24E3 LETTRE MINUSCULE LATINE T CERCLÉE 24E4 LETTRE MINUSCULE LATINE U CERCLÉE 24E5 LETTRE MINUSCULE LATINE V CERCLÉE 24E6 LETTRE MINUSCULE LATINE W CERCLÉE 24E7 LETTRE MINUSCULE LATINE X CERCLÉE 24E8 LETTRE MINUSCULE LATINE Y CERCLÉE 24E9 LETTRE MINUSCULE LATINE Z CERCLÉE 24EA CHIFFRE ZÉRO CERCLÉ @@ 2500 Filets 257F 2500 FILET HORIZONTAL FIN 2501 FILET HORIZONTAL GRAS 2502 FILET VERTICAL FIN 2503 FILET VERTICAL GRAS 2504 FILET BRISÉ TRIPLE HORIZONTAL FIN 2505 FILET BRISÉ TRIPLE HORIZONTAL GRAS 2506 FILET BRISÉ TRIPLE VERTICAL FIN 2507 FILET BRISÉ TRIPLE VERTICAL GRAS 2508 FILET BRISÉ QUADRUPLE HORIZONTAL FIN 2509 FILET BRISÉ QUADRUPLE HORIZONTAL GRAS 250A FILET BRISÉ QUADRUPLE VERTICAL FIN 250B FILET BRISÉ QUADRUPLE VERTICAL GRAS 250C FILET FIN VERS LE BAS ET VERS LA DROITE 250D FILET FIN VERS LE BAS ET GRAS VERS LA DROITE 250E FILET GRAS VERS LE BAS ET FIN VERS LA DROITE 250F FILET GRAS VERS LE BAS ET VERS LA DROITE 2510 FILET FIN VERS LE BAS ET VERS LA GAUCHE 2511 FILET FIN VERS LE BAS ET GRAS VERS LA GAUCHE 2512 FILET GRAS VERS LE BAS ET FIN VERS LA GAUCHE 2513 FILET GRAS VERS LE BAS ET VERS LA GAUCHE 2514 FILET FIN VERS LE HAUT ET VERS LA DROITE 2515 FILET FIN VERS LE HAUT ET GRAS VERS LA DROITE 2516 FILET GRAS VERS LE HAUT ET FIN VERS LA DROITE 2517 FILET GRAS VERS LE HAUT ET VERS LA DROITE 2518 FILET FIN VERS LE HAUT ET VERS LA GAUCHE 2519 FILET FIN VERS LE HAUT ET GRAS VERS LA GAUCHE 251A FILET GRAS VERS LE HAUT ET FIN VERS LA GAUCHE 251B FILET GRAS VERS LE HAUT ET VERS LA GAUCHE 251C FILET FIN VERTICAL ET VERS LA DROITE 251D FILET FIN VERTICAL ET GRAS VERS LA DROITE 251E FILET GRAS VERS LE HAUT ET FIN VERS LA DROITE ET VERS LE BAS 251F FILET GRAS VERS LE BAS ET FIN VERS LA DROITE ET VERS LE HAUT 2520 FILET GRAS VERTICAL ET FIN VERS LA DROITE 2521 FILET FIN VERS LE BAS ET GRAS VERS LA DROITE ET VERS LE HAUT 2522 FILET FIN VERS LE HAUT ET GRAS VERS LA DROITE ET VERS LE BAS 2523 FILET GRAS VERTICAL ET VERS LA DROITE 2524 FILET FIN VERTICAL ET VERS LA GAUCHE 2525 FILET FIN VERTICAL ET GRAS VERS LA GAUCHE 2526 FILET GRAS VERS LE HAUT ET FIN VERS LA GAUCHE ET VERS LE BAS 2527 FILET GRAS VERS LE BAS ET FIN VERS LA GAUCHE ET VERS LE HAUT 2528 FILET GRAS VERTICAL ET FIN VERS LA GAUCHE 2529 FILET FIN VERS LE BAS ET GRAS VERS LA GAUCHE ET VERS LE HAUT 252A FILET FIN VERS LE HAUT ET GRAS VERS LA GAUCHE ET VERS LE BAS 252B FILET GRAS VERTICAL ET VERS LA GAUCHE 252C FILET FIN VERS LE BAS ET HORIZONTAL 252D FILET GRAS VERS LA GAUCHE ET FIN VERS LA DROITE ET VERS LE BAS 252E FILET GRAS VERS LA DROITE ET FIN VERS LA GAUCHE ET VERS LE BAS 252F FILET FIN VERS LE BAS ET GRAS HORIZONTAL 2530 FILET GRAS VERS LE BAS ET FIN HORIZONTAL 2531 FILET FIN VERS LA DROITE ET GRAS VERS LA GAUCHE ET VERS LE BAS 2532 FILET FIN VERS LA GAUCHE ET GRAS VERS LA DROITE ET VERS LE BAS 2533 FILET GRAS VERS LE BAS ET HORIZONTAL 2534 FILET FIN VERS LE HAUT ET HORIZONTAL 2535 FILET GRAS VERS LA GAUCHE ET FIN VERS LA DROITE ET VERS LE HAUT 2536 FILET GRAS VERS LA DROITE ET FIN VERS LA GAUCHE ET VERS LE HAUT 2537 FILET FIN VERS LE HAUT ET GRAS HORIZONTAL 2538 FILET GRAS VERS LE HAUT ET FIN HORIZONTAL 2539 FILET FIN VERS LA DROITE ET GRAS VERS LA GAUCHE ET VERS LE HAUT 253A FILET FIN VERS LA GAUCHE ET GRAS VERS LA DROITE ET VERS LE HAUT 253B FILET GRAS VERS LE HAUT ET HORIZONTAL 253C FILET FIN VERTICAL ET HORIZONTAL 253D FILET GRAS VERS LA GAUCHE ET FIN VERS LA DROITE ET VERTICAL 253E FILET GRAS VERS LA DROITE ET FIN VERS LA GAUCHE ET VERTICAL 253F FILET VERTICAL FIN ET HORIZONTAL GRAS 2540 FILET GRAS VERS LE HAUT ET FIN VERS LE BAS ET HORIZONTAL 2541 FILET GRAS VERS LE BAS ET FIN VERS LE HAUT ET HORIZONTAL 2542 FILET VERTICAL GRAS ET HORIZONTAL FIN 2543 FILET GRAS VERS LA GAUCHE ET VERS LE HAUT ET FIN VERS LA DROITE ET VERS LE BAS 2544 FILET GRAS VERS LA DROITE ET VERS LE HAUT ET FIN VERS LA GAUCHE ET VERS LE BAS 2545 FILET GRAS VERS LA GAUCHE ET VERS LE BAS ET FIN VERS LA DROITE ET VERS LE HAUT 2546 FILET GRAS VERS LA DROITE ET VERS LE BAS ET FIN VERS LA GAUCHE ET VERS LE HAUT 2547 FILET FIN VERS LE BAS ET GRAS VERS LE HAUT ET HORIZONTAL 2548 FILET FIN VERS LE HAUT ET GRAS VERS LE BAS ET HORIZONTAL 2549 FILET FIN VERS LA DROITE ET GRAS VERS LA GAUCHE ET VERTICAL 254A FILET FIN VERS LA GAUCHE ET GRAS VERS LA DROITE ET VERTICAL 254B FILET VERTICAL ET HORIZONTAL GRAS 254C FILET BRISÉ DOUBLE HORIZONTAL FIN 254D FILET BRISÉ DOUBLE HORIZONTAL GRAS 254E FILET BRISÉ DOUBLE VERTICAL FIN 254F FILET BRISÉ DOUBLE VERTICAL GRAS 2550 FILET DOUBLE HORIZONTAL 2551 FILET DOUBLE VERTICAL 2552 FILET SIMPLE LE BAS ET DOUBLE VERS LA DROITE 2553 FILET DOUBLE VERS LE BAS ET SIMPLE VERS LA DROITE 2554 FILET DOUBLE VERS LE BAS ET VERS LA DROITE 2555 FILET SIMPLE VERS LE BAS ET DOUBLE VERS LA GAUCHE 2556 FILET DOUBLE VERS LE BAS ET SIMPLE VERS LA GAUCHE 2557 FILET DOUBLE VERS LE BAS ET VERS LA GAUCHE 2558 FILET SIMPLE VERS LE HAUT ET DOUBLE VERS LA DROITE 2559 FILET DOUBLE VERS LE HAUT ET SIMPLE VERS LA DROITE 255A FILET DOUBLE VERS LE HAUT ET VERS LA DROITE 255B FILET SIMPLE VERS LE HAUT ET DOUBLE VERS LA GAUCHE 255C FILET DOUBLE VERS LE HAUT ET SIMPLE VERS LA GAUCHE 255D FILET DOUBLE VERS LE HAUT ET VERS LA GAUCHE 255E FILET VERTICAL SIMPLE ET DROIT DOUBLE 255F FILET VERTICAL DOUBLE ET DROIT SIMPLE 2560 FILET DOUBLE VERTICAL ET VERS LA DROITE 2561 FILET VERTICAL SIMPLE ET GAUCHE DOUBLE 2562 FILET VERTICAL DOUBLE ET GAUCHE SIMPLE 2563 FILET DOUBLE VERTICAL ET VERS LA GAUCHE 2564 FILET VERS LE BAS SIMPLE ET HORIZONTAL DOUBLE 2565 FILET VERS LE BAS DOUBLE ET HORIZONTAL SIMPLE 2566 FILET DOUBLE VERS LE BAS ET HORIZONTAL 2567 FILET VERS LE HAUT SIMPLE ET HORIZONTAL DOUBLE 2568 FILET VERS LE HAUT DOUBLE ET HORIZONTAL SIMPLE 2569 FILET DOUBLE VERS LE HAUT ET HORIZONTAL 256A FILET VERTICAL SIMPLE ET HORIZONTAL DOUBLE 256B FILET VERTICAL DOUBLE ET HORIZONTAL SIMPLE 256C FILET DOUBLE VERTICAL ET HORIZONTAL 256D FILET FIN ARC VERS LE BAS ET VERS LA DROITE 256E FILET FIN ARC VERS LE BAS ET VERS LA GAUCHE 256F FILET FIN ARC VERS LE HAUT ET VERS LA GAUCHE 2570 FILET FIN ARC VERS LE HAUT ET VERS LA DROITE 2571 FILET DIAGONAL FIN DU COIN SUPÉRIEUR DROIT AU COIN INFÉRIEUR GAUCHE 2572 FILET DIAGONAL FIN DU COIN SUPÉRIEUR GAUCHE VERS LE COIN INFÉRIEUR DROIT 2573 FILET DIAGONAL FIN EN CROIX 2574 FILET FIN VERS LA GAUCHE 2575 FILET FIN VERS LE HAUT 2576 FILET FIN VERS LA DROITE 2577 FILET FIN VERS LE BAS 2578 FILET GRAS VERS LA GAUCHE 2579 FILET GRAS VERS LE HAUT 257A FILET GRAS VERS LA DROITE 257B FILET GRAS VERS LE BAS 257C FILET FIN VERS LA GAUCHE ET GRAS VERS LA DROITE 257D FILET FIN VERS LE HAUT ET GRAS VERS LE BAS 257E FILET GRAS VERS LA GAUCHE ET FIN VERS LA DROITE 257F FILET GRAS VERS LE HAUT ET FIN VERS LE BAS @@ 2580 Pavés 259F 2580 BLOC MOITIÉ SUPÉRIEURE 2581 BLOC UN HUITIÈME INFÉRIEUR 2582 BLOC UN QUART INFÉRIEUR 2583 BLOC TROIS HUITIÈMES INFÉRIEUR 2584 BLOC MOITIÉ INFÉRIEURE 2585 BLOC CINQ HUITIÈMES INFÉRIEUR 2586 BLOC TROIS QUARTS INFÉRIEUR 2587 BLOC SEPT HUITIÈMES INFÉRIEUR 2588 BLOC PLEIN 2589 BLOC SEPT HUITIÈMES GAUCHE 258A BLOC TROIS QUARTS GAUCHE 258B BLOC CINQ HUITIÈMES GAUCHE 258C BLOC MOITIÉ GAUCHE 258D BLOC TROIS HUITIÈMES GAUCHE 258E BLOC UN QUART GAUCHE 258F BLOC UN HUITIÈME GAUCHE 2590 BLOC MOITIÉ DROITE 2591 OMBRE LÉGÈRE 2592 OMBRE MOYENNE 2593 OMBRE FONCÉE 2594 BLOC UN HUITIÈME SUPÉRIEUR 2595 BLOC UN HUITIÈME DROIT @@ 25A0 Formes géométriques 25FF 25A0 CARRÉ NOIR 25A1 CARRÉ BLANC 25A2 CARRÉ BLANC AVEC COINS ARRONDIS 25A3 PETIT CARRÉ NOIR INSCRIT DANS UN CARRÉ BLANC 25A4 CARRÉ HACHURÉ HORIZONTALEMENT 25A5 CARRÉ HACHURÉ VERTICALEMENT 25A6 CARRÉ QUADRILLÉ 25A7 CARRÉ HACHURÉ DU HAUT À GAUCHE VERS LE BAS À DROITE 25A8 CARRÉ HACHURÉ DU HAUT À DROITE VERS LE BAS À GAUCHE 25A9 CARRÉ QUADRILLÉ EN DIAGONALE 25AA PETIT CARRÉ NOIR 25AB PETIT CARRÉ BLANC 25AC RECTANGLE NOIR 25AD RECTANGLE BLANC 25AE RECTANGLE VERTICAL NOIR 25AF RECTANGLE VERTICAL BLANC 25B0 PARALLÉLOGRAMME NOIR 25B1 PARALLÉLOGRAMME BLANC 25B2 TRIANGLE NOIR POINTANT VERS LE HAUT 25B3 TRIANGLE BLANC POINTANT VERS LE HAUT 25B4 PETIT TRIANGLE NOIR POINTANT VERS LE HAUT 25B5 PETIT TRIANGLE BLANC POINTANT VERS LE HAUT 25B6 TRIANGLE NOIR POINTANT VERS LA DROITE 25B7 TRIANGLE BLANC POINTANT VERS LA DROITE 25B8 PETIT TRIANGLE NOIR POINTANT VERS LA DROITE 25B9 PETIT TRIANGLE BLANC POINTANT VERS LA DROITE 25BA POINTEUR NOIR VERS LA DROITE 25BB POINTEUR BLANC VERS LA DROITE 25BC TRIANGLE NOIR POINTANT VERS LE BAS 25BD TRIANGLE BLANC POINTANT VERS LE BAS 25BE PETIT TRIANGLE NOIR POINTANT VERS LE BAS 25BF PETIT TRIANGLE BLANC POINTANT VERS LE BAS 25C0 TRIANGLE NOIR POINTANT VERS LA GAUCHE 25C1 TRIANGLE BLANC POINTANT VERS LA GAUCHE 25C2 PETIT TRIANGLE NOIR POINTANT VERS LA GAUCHE 25C3 PETIT TRIANGLE BLANC POINTANT VERS LA GAUCHE 25C4 POINTEUR NOIR VERS LA GAUCHE 25C5 POINTEUR BLANC VERS LA GAUCHE 25C6 LOSANGE NOIR 25C7 LOSANGE BLANC 25C8 LOSANGE BLANC AVEC PETIT LOSANGE NOIR EN ABÎME 25C9 PETIT CERCLE NOIR INSCRIT DANS UN CERCLE BLANC 25CA LOSANGE 25CB CERCLE BLANC 25CC CERCLE EN POINTILLÉ 25CD CERCLE HACHURÉ VERTICALEMENT 25CE PETIT CERCLE BLANC INSCRIT DANS UN CERCLE BLANC 25CF DISQUE NOIR 25D0 CERCLE AVEC MOITIÉ GAUCHE NOIRE 25D1 CERCLE AVEC MOITIÉ DROITE NOIRE 25D2 CERCLE AVEC MOITIÉ INFÉRIEURE NOIRE 25D3 CERCLE AVEC MOITIÉ SUPÉRIEURE NOIRE 25D4 CERCLE AVEC QUADRANT SUPÉRIEUR DROIT NOIR 25D5 DISQUE AVEC QUADRANT SUPÉRIEUR GAUCHE BLANC 25D6 DEMI-DISQUE GAUCHE NOIR 25D7 DEMI-DISQUE DROITE NOIR 25D8 POINT EN NÉGATIF 25D9 CERCLE BLANC EN NÉGATIF 25DA DEMI-CERCLE SUPÉRIEUR BLANC EN NÉGATIF 25DB DEMI-CERCLE INFÉRIEUR BLANC EN NÉGATIF 25DC ARC DE CERCLE DANS LE QUADRANT SUPÉRIEUR GAUCHE 25DD ARC DE CERCLE DANS LE QUADRANT SUPÉRIEUR DROIT 25DE ARC DE CERCLE DANS LE QUADRANT INFÉRIEUR DROIT 25DF ARC DE CERCLE DANS LE QUADRANT INFÉRIEUR GAUCHE 25E0 DEMI-CERCLE SUPÉRIEUR 25E1 DEMI-CERCLE INFÉRIEUR 25E2 COIN TRIANGULAIRE NOIR INFÉRIEUR DROIT 25E3 COIN TRIANGULAIRE NOIR INFÉRIEUR GAUCHE 25E4 COIN TRIANGULAIRE NOIR SUPÉRIEUR GAUCHE 25E5 COIN TRIANGULAIRE NOIR SUPÉRIEUR DROIT 25E6 PETIT CERCLE BLANC 25E7 CARRÉ AVEC MOITIÉ GAUCHE NOIRE 25E8 CARRÉ AVEC MOITIÉ DROITE NOIRE 25E9 CARRÉ AVEC MOITIÉ SUPÉRIEURE GAUCHE NOIRE 25EA CARRÉ AVEC MOITIÉ INFÉRIEURE DROITE NOIRE 25EB CARRÉ BLANC AVEC LIGNE BISECTRICE VERTICALE 25EC TRIANGLE BLANC POINTANT VERS LE HAUT POINTÉ 25ED TRIANGLE POINTANT VERS LE HAUT AVEC MOITIÉ GAUCHE NOIRE 25EE TRIANGLE POINTANT VERS LE HAUT AVEC MOITIÉ DROITE NOIRE 25EF GRAND CERCLE 25F0 CARRÉ BLANC À QUARTIER SUPÉRIEUR GAUCHE 25F1 CARRÉ BLANC À QUARTIER INFÉRIEUR GAUCHE 25F2 CARRÉ BLANC À QUARTIER INFÉRIEUR DROIT 25F3 CARRÉ BLANC À QUARTIER SUPÉRIEUR DROIT 25F4 CERCLE BLANC À QUARTIER SUPÉRIEUR GAUCHE 25F5 CERCLE BLANC À QUARTIER INFÉRIEUR GAUCHE 25F6 CERCLE BLANC À QUARTIER INFÉRIEUR DROIT 25F7 CERCLE BLANC À QUARTIER SUPÉRIEUR DROIT @@ 2600 Symboles divers 26FF 2600 SOLEIL NOIR AVEC RAYONS 2601 NUAGE 2602 PARAPLUIE 2603 BONHOMME DE NEIGE 2604 COMÈTE 2605 ÉTOILE NOIRE 2606 ÉTOILE BLANCHE 2607 ÉCLAIR 2608 ORAGE 2609 SOLEIL 260A NOEUD ASCENDANT 260B NOEUD DESCENDANT 260C CONJONCTION 260D OPPOSITION 260E TÉLÉPHONE NOIR 260F TÉLÉPHONE BLANC 2610 BULLETIN DE VOTE 2611 BULLETIN DE VOTE COCHÉ 2612 BULLETIN DE VOTE AVEC X 2613 BARRICADE 2619 COEUR FLORAL COUCHÉ À DROITE 261A INDEX NOIR POINTANT VERS LA GAUCHE 261B INDEX NOIR POINTANT VERS LA DROITE 261C INDEX BLANC POINTANT VERS LA GAUCHE 261D INDEX BLANC POINTANT VERS LE HAUT 261E INDEX BLANC POINTANT VERS LA DROITE 261F INDEX BLANC POINTANT VERS LE BAS 2620 TÊTE DE MORT (symbole de danger, symbole pirate) 2621 VIRAGES 2622 SIGNE DE RADIOACTIVIVITÉ 2623 SIGNE DE DANGER BIOLOGIQUE 2624 CADUCÉE 2625 ANKH (croix égyptienne) 2626 CROIX ORTHODOXE 2627 CHRISME (khi rhô) 2628 CROIX DE LORRAINE 2629 CROIX DE JÉRUSALEM 262A ÉTOILE ET CROISSANT 262B SYMBOLE FARSI 262C ÂDI ÇAKTI 262D FAUCILLE ET MARTEAU 262E SYMBOLE DE PAIX 262F SYMBOLE DU YIN ET DU YANG 2630 TRIGRAMME POUR CIEL 2631 TRIGRAMME POUR LAC 2632 TRIGRAMME POUR FEU 2633 TRIGRAMME POUR TONNERRE 2634 TRIGRAMME POUR VENT 2635 TRIGRAMME POUR EAU 2636 TRIGRAMME POUR MONTAGNE 2637 TRIGRAMME POUR TERRE 2638 ROUE DE DHARMA 2639 VISAGE BLANC GRIMAÇANT 263A VISAGE BLANC SOURIANT 263B VISAGE NOIR SOURIANT 263C SOLEIL BLANC AVEC RAYONS 263D PREMIER QUARTIER DE LUNE 263E DERNIER QUARTIER DE LUNE 263F MERCURE 2640 SIGNE FEMELLE 2641 TERRE 2642 SIGNE MÂLE 2643 JUPITER 2644 SATURNE 2645 URANUS 2646 NEPTUNE 2647 PLUTON 2648 BÉLIER 2649 TAUREAU 264A GÉMEAUX 264B CANCER 264C LION 264D VIERGE 264E BALANCE 264F SCORPION 2650 SAGITTAIRE 2651 CAPRICORNE 2652 VERSEAU 2653 POISSONS 2654 ROI BLANC DU JEU D'ÉCHECS 2655 DAME BLANCHE DU JEU D'ÉCHECS 2656 TOUR BLANCHE DU JEU D'ÉCHECS 2657 FOU BLANC DU JEU D'ÉCHECS 2658 CAVALIER BLANC DU JEU D'ÉCHECS 2659 PION BLANC DU JEU D'ÉCHECS 265A ROI NOIR DU JEU D'ÉCHECS 265B DAME NOIRE DU JEU D'ÉCHECS 265C TOUR NOIRE DU JEU D'ÉCHECS 265D FOU NOIR DU JEU D'ÉCHECS 265E CAVALIER NOIR DU JEU D'ÉCHECS 265F PION NOIR DU JEU D'ÉCHECS 2660 PIQUE NOIR 2661 COEUR BLANC 2662 CARREAU BLANC 2663 TRÈFLE NOIR 2664 PIQUE BLANC 2665 COEUR NOIR 2666 CARREAU NOIR 2667 TRÈFLE BLANC 2668 SOURCES CHAUDES 2669 NOTE NOIRE 266A NOTE CROCHE 266B DEUX CROCHES RAMÉES 266C DEUX DOUBLES CROCHES RAMÉES 266D BÉMOL 266E BÉCARRE 266F DIÈSE 2670 CROIX SYRIAQUE OCCIDENTALE 2671 CROIX SYRIAQUE ORIENTALE @@ 2700 Casseau 27BF 2701 CISEAUX À LAME SUPÉRIEURE VISIBLE 2702 CISEAUX NOIRS 2703 CISEAUX À LAME INFÉRIEURE VISIBLE 2704 CISEAUX BLANCS 2705 2706 SYMBOLE D'EMPLACEMENT DU TÉLÉPHONE 2707 DÉROULEUR DE RUBAN 2708 AVION 2709 ENVELOPPE 270A 270B 270C MAIN DE LA VICTOIRE 270D MAIN EN TRAIN D'ÉCRIRE 270E CRAYON VERS LE BAS À DROITE 270F CRAYON 2710 CRAYON VERS LE HAUT À DROITE 2711 BEC DE PLUME BLANC 2712 BEC DE PLUME NOIR 2713 SIGNE DE VÉRIFICATION 2714 GROS SIGNE DE VÉRIFICATION 2715 X DE MULTIPLICATION 2716 GROS X DE MULTIPLICATION 2717 X DE BULLETIN DE VOTE 2718 GROS X DE BULLETIN DE VOTE 2719 CROIX GRECQUE AVEC CONTOUR 271A GROSSE CROIX GRECQUE 271B CROIX PERCÉE D'UN CARRÉ 271C GROSSE CROIX PERCÉE D'UN CARRÉ 271D CROIX LATINE 271E CROIX LATINE VIDÉE OMBRÉE 271F CROIX LATINE AVEC CONTOUR 2720 CROIX DE MALTE 2721 ÉTOILE DE DAVID 2722 CROIX LARMÉE 2723 CROIX POMMETÉE 2724 GROSSE CROIX POMMETÉE 2725 CROIX TRÉFLÉE 2726 ÉTOILE NOIRE À QUATRE BRANCHES 2727 ÉTOILE BLANCHE À QUATRE BRANCHES 2728 2729 ÉTOILE BLANCHE À CONTOUR ACCENTUÉ 272A ÉTOILE BLANCHE CERCLÉE 272B MOLETTE NOIRE 272C MOLETTE BLANCHE 272D ÉTOILE NOIRE AVEC CONTOUR 272E ÉTOILE NOIRE AVEC GROS CONTOUR 272F ÉTOILE RAYONNANTE 2730 ÉTOILE BLANCHE OMBRÉE 2731 GROS ASTÉRISQUE 2732 ASTÉRISQUE PERCÉ 2733 ASTÉRISQUE À HUIT BRANCHES 2734 ÉTOILE NOIRE À HUIT BRANCHES 2735 ÉTOILE RAYONNANTE À HUIT BRANCHES 2736 ÉTOILE NOIRE À SIX BRANCHES 2737 ÉTOILE RECTILIGNE À HUIT BRANCHES 2738 GROSSE ÉTOILE RECTILIGNE À HUIT BRANCHES 2739 ÉTOILE NOIRE À DOUZE BRANCHES 273A ASTÉRISQUE À SEIZE BRANCHES 273B ASTÉRISQUE LARMÉ 273C ASTÉRISQUE LARMÉ PERCÉ 273D GROS ASTÉRISQUE LARMÉ 273E SIXTEFEUILLE BLANCHE ET NOIRE 273F QUINTEFEUILLE NOIRE 2740 QUINTEFEUILLE BLANCHE 2741 DOUBLE QUARTEFEUILLE NOIRE AVEC CONTOUR 2742 ÉTOILE CERCLÉE PERCÉE À HUIT BRANCHES 2743 GROS ASTÉRIQUE RAYONNANT LARMÉ 2744 FLOCON DE NEIGE 2745 FLOCON DE NEIGE À TROIS FOLIOLES TRANSPERCÉS (flocon trifolié resserré) 2746 GROS FLOCON DE NEIGE À CHEVRONS 2747 ÉTINCELLEMENT 2748 GROS ÉTINCELLEMENT 2749 ASTÉRISQUE POMMETÉ 274A ASTÉRISQUE-HÉLICE À HUIT BRANCHES LARMÉES 274B GROS ASTÉRISQUE-HÉLICE À HUIT BRANCHES LARMÉES 274C 274D CERCLE BLANC OMBRÉ 274E 274F CARRÉ BLANC AVEC OMBRE PROJETÉE SOUS LE COIN INFÉRIEUR DROIT 2750 CARRÉ BLANC AVEC OMBRE PROJETÉE SOUS LE COIN SUPÉRIEUR DROIT 2751 CARRÉ BLANC OMBRÉ AU COIN INFÉRIEUR DROIT 2752 CARRÉ BLANC OMBRÉ AU COIN SUPÉRIEUR DROIT 2753 2754 2755 2756 LOSANGE NOIR MARQUÉ D'UN X BLANC 2757 2758 BARRE VERTICALE FINE 2759 BARRE VERTICALE MOYENNE 275A BARRE VERTICALE ÉPAISSE 275B GUILLEMET DE FANTAISIE EN FORME DE GROSSE VIRGULE SIMPLE CULBUTÉE 275C GUILLEMET DE FANTAISIE EN FORME DE GROSSE VIRGULE SIMPLE 275D GUILLEMET DE FANTAISIE EN FORME DE GROSSE VIRGULE DOUBLE CULBUTÉE 275E GUILLEMET DE FANTAISIE EN FORME DE GROSSE VIRGULE DOUBLE 2761 PIED DE MOUCHE DE FANTAISIE À JAMBAGE COURBÉ 2762 GROS POINT D'EXCLAMATION DE FANTAISIE 2763 GROS POINT D'EXCLAMATION DE FANTAISIE EN FORME DE COEUR 2764 GROS COEUR NOIR 2765 GROS COEUR NOIR COUCHÉ 2766 COEUR FLORAL 2767 COEUR FLORAL COUCHÉ 2768 2769 276A 276B 276C 276D 276E 276F 2770 2771 2772 2773 2774 2775 2776 VIGNETTE CHIFFRE UN NÉGATIF CERCLÉ 2777 VIGNETTE CHIFFRE DEUX NÉGATIF CERCLÉ 2778 VIGNETTE CHIFFRE TROIS NÉGATIF CERCLÉ 2779 VIGNETTE CHIFFRE QUATRE NÉGATIF CERCLÉ 277A VIGNETTE CHIFFRE CINQ NÉGATIF CERCLÉ 277B VIGNETTE CHIFFRE SIX NÉGATIF CERCLÉ 277C VIGNETTE CHIFFRE SEPT NÉGATIF CERCLÉ 277D VIGNETTE CHIFFRE HUIT NÉGATIF CERCLÉ 277E VIGNETTE CHIFFRE NEUF NÉGATIF CERCLÉ 277F VIGNETTE NOMBRE DIX NÉGATIF CERCLÉ 2780 VIGNETTE CHIFFRE UN SANS EMPATTEMENT CERCLÉ 2781 VIGNETTE CHIFFRE DEUX SANS EMPATTEMENT CERCLÉ 2782 VIGNETTE CHIFFRE TROIS SANS EMPATTEMENT CERCLÉ 2783 VIGNETTE CHIFFRE QUATRE SANS EMPATTEMENT CERCLÉ 2784 VIGNETTE CHIFFRE CINQ SANS EMPATTEMENT CERCLÉ 2785 VIGNETTE CHIFFRE SIX SANS EMPATTEMENT CERCLÉ 2786 VIGNETTE CHIFFRE SEPT SANS EMPATTEMENT CERCLÉ 2787 VIGNETTE CHIFFRE HUIT SANS EMPATTEMENT CERCLÉ 2788 VIGNETTE CHIFFRE NEUF SANS EMPATTEMENT CERCLÉ 2789 VIGNETTE NOMBRE DIX SANS EMPATTEMENT CERCLÉ 278A VIGNETTE CHIFFRE UN SANS EMPATTEMENT NÉGATIF CERCLÉ 278B VIGNETTE CHIFFRE DEUX SANS EMPATTEMENT NÉGATIF CERCLÉ 278C VIGNETTE CHIFFRE TROIS SANS EMPATTEMENT NÉGATIF CERCLÉ 278D VIGNETTE CHIFFRE QUATRE SANS EMPATTEMENT NÉGATIF CERCLÉ 278E VIGNETTE CHIFFRE CINQ SANS EMPATTEMENT NÉGATIF CERCLÉ 278F VIGNETTE CHIFFRE SIX SANS EMPATTEMENT NÉGATIF CERCLÉ 2790 VIGNETTE CHIFFRE SEPT SANS EMPATTEMENT NÉGATIF CERCLÉ 2791 VIGNETTE CHIFFRE HUIT SANS EMPATTEMENT NÉGATIF CERCLÉ 2792 VIGNETTE CHIFFRE NEUF SANS EMPATTEMENT NÉGATIF CERCLÉ 2793 VIGNETTE NOMBRE DIX SANS EMPATTEMENT NÉGATIF CERCLÉ 2794 FLÈCHE GRASSE VERS LA DROITE À POINTE LARGE 2795 2796 2797 2798 FLÈCHE GRASSE SUD-EST 2799 FLÈCHE GRASSE VERS LA DROITE GRASSE 279A FLÈCHE GRASSE NORD-EST 279B FLÈCHE DE TRAÇAGE VERS LA DROITE 279C FLÈCHE GRASSE À POINTE ARRONDIE VERS LA DROITE 279D FLÈCHE À POINTE EN TRIANGLE VERS LA DROITE 279E FLÈCHE GRASSE À POINTE EN TRIANGLE VERS LA DROITE 279F FLÈCHE AVEC POINTILLÉS À POINTE EN TRIANGLE VERS LA DROITE 27A0 FLÈCHE GRASSE AVEC POINTILLÉS À POINTE EN TRIANGLE VERS LA DROITE 27A1 FLÈCHE NOIRE VERS LA DROITE 27A2 POINTE DE FLÈCHE VERS LA DROITE EN TROMPE-L'OEIL ÉCLAIRÉE PAR LE HAUT 27A3 POINTE DE FLÈCHE VERS LA DROITE EN TROMPE-L'OEIL ÉCLAIRÉE PAR LE BAS 27A4 POINTE DE FLÈCHE NOIRE VERS LA DROITE 27A5 FLÈCHE NOIRE GRASSE COURBÉE VERS LE BAS ET VERS LA DROITE 27A6 FLÈCHE NOIRE COURBÉE VERS LE HAUT ET VERS LA DROITE 27A7 FLÈCHE NOIRE TRAPPUE VERS LA DROITE 27A8 FLÈCHE NOIRE GRASSE À POINTE CONCAVE VERS LA DROITE 27A9 FLÈCHE BLANCHE VERS LA DROITE OMBRÉE À L'AVANT 27AA FLÈCHE BLANCHE VERS LA DROITE OMBRÉE À L'ARRIÈRE 27AB FLÈCHE BLANCHE VERS LA DROITE PENCHÉE VERS L'ARRIÈRE ET OMBRÉE 27AC FLÈCHE BLANCHE VERS LA DROITE PENCHÉE VERS L'AVANT ET OMBRÉE 27AD FLÈCHE BLANCHE GRASSE VERS LA DROITE À OMBRE INFÉRIEURE DROITE 27AE FLÈCHE BLANCHE GRASSE VERS LA DROITE À OMBRE SUPÉRIEURE DROITE 27AF FLÈCHE ENCOCHÉE BLANCHE VERS LA DROITE OMBRÉE À L'AVANT ET PAR DESSOUS 27B1 FLÈCHE ENCOCHÉE BLANCHE VERS LA DROITE OMBRÉE À L'AVANT ET PAR DESSUS 27B2 FLÈCHE BLANCHE GRASSE VERS LA DROITE À CONTOUR CIRCULAIRE 27B3 FLÈCHE À EMPENNAGE BLANCHE VERS LA DROITE 27B4 FLÈCHE À EMPENNAGE NOIR SUD-EST 27B5 FLÈCHE À EMPENNAGE NOIR VERS LA DROITE 27B6 FLÈCHE À EMPENNAGE NOIR NORD-EST 27B7 FLÈCHE À EMPENNAGE GRAS NOIRE SUD-EST 27B8 FLÈCHE À EMPENNAGE GRAS NOIRE VERS LA DROITE 27B9 FLÈCHE À EMPENNAGE GRAS NOIRE NORD-EST 27BA FLÈCHE VERS LA DROITE À POINTE LARMÉE 27BB FLÈCHE VERS LA DROITE À HAMPE LARMÉE 27BC FLÈCHE VERS LA DROITE À QUEUE EN FORME DE COIN 27BD FLÈCHE GRASSE VERS LA DROITE À QUEUE EN FORME DE COIN 27BE FLÈCHE VERS LA DROITE À CONTOUR OUVERT @@ 2800 Combinaisons Braille 28FF 2800 COMBINAISON BRAILLE BLANC 2801 COMBINAISON BRAILLE POINTS-1 2802 COMBINAISON BRAILLE POINTS-2 2803 COMBINAISON BRAILLE POINTS-12 2804 COMBINAISON BRAILLE POINTS-3 2805 COMBINAISON BRAILLE POINTS-13 2806 COMBINAISON BRAILLE POINTS-23 2807 COMBINAISON BRAILLE POINTS-123 2808 COMBINAISON BRAILLE POINTS-4 2809 COMBINAISON BRAILLE POINTS-14 280A COMBINAISON BRAILLE POINTS-24 280B COMBINAISON BRAILLE POINTS-124 280C COMBINAISON BRAILLE POINTS-34 280D COMBINAISON BRAILLE POINTS-134 280E COMBINAISON BRAILLE POINTS-234 280F COMBINAISON BRAILLE POINTS-1234 2810 COMBINAISON BRAILLE POINTS-5 2811 COMBINAISON BRAILLE POINTS-15 2812 COMBINAISON BRAILLE POINTS-25 2813 COMBINAISON BRAILLE POINTS-125 2814 COMBINAISON BRAILLE POINTS-35 2815 COMBINAISON BRAILLE POINTS-135 2816 COMBINAISON BRAILLE POINTS-235 2817 COMBINAISON BRAILLE POINTS-1235 2818 COMBINAISON BRAILLE POINTS-45 2819 COMBINAISON BRAILLE POINTS-145 281A COMBINAISON BRAILLE POINTS-245 281B COMBINAISON BRAILLE POINTS-1245 281C COMBINAISON BRAILLE POINTS-345 281D COMBINAISON BRAILLE POINTS-1345 281E COMBINAISON BRAILLE POINTS-2345 281F COMBINAISON BRAILLE POINTS-12345 2820 COMBINAISON BRAILLE POINTS-6 2821 COMBINAISON BRAILLE POINTS-16 2822 COMBINAISON BRAILLE POINTS-26 2823 COMBINAISON BRAILLE POINTS-126 2824 COMBINAISON BRAILLE POINTS-36 2825 COMBINAISON BRAILLE POINTS-136 2826 COMBINAISON BRAILLE POINTS-236 2827 COMBINAISON BRAILLE POINTS-1236 2828 COMBINAISON BRAILLE POINTS-46 2829 COMBINAISON BRAILLE POINTS-146 282A COMBINAISON BRAILLE POINTS-246 282B COMBINAISON BRAILLE POINTS-1246 282C COMBINAISON BRAILLE POINTS-346 282D COMBINAISON BRAILLE POINTS-1346 282E COMBINAISON BRAILLE POINTS-2346 282F COMBINAISON BRAILLE POINTS-12346 2830 COMBINAISON BRAILLE POINTS-56 2831 COMBINAISON BRAILLE POINTS-156 2832 COMBINAISON BRAILLE POINTS-256 2833 COMBINAISON BRAILLE POINTS-1256 2834 COMBINAISON BRAILLE POINTS-356 2835 COMBINAISON BRAILLE POINTS-1356 2836 COMBINAISON BRAILLE POINTS-2356 2837 COMBINAISON BRAILLE POINTS-12356 2838 COMBINAISON BRAILLE POINTS-456 2839 COMBINAISON BRAILLE POINTS-1456 283A COMBINAISON BRAILLE POINTS-2456 283B COMBINAISON BRAILLE POINTS-12456 283C COMBINAISON BRAILLE POINTS-3456 283D COMBINAISON BRAILLE POINTS-13456 283E COMBINAISON BRAILLE POINTS-23456 283F COMBINAISON BRAILLE POINTS-123456 2840 COMBINAISON BRAILLE POINTS-7 2841 COMBINAISON BRAILLE POINTS-17 2842 COMBINAISON BRAILLE POINTS-27 2843 COMBINAISON BRAILLE POINTS-127 2844 COMBINAISON BRAILLE POINTS-37 2845 COMBINAISON BRAILLE POINTS-137 2846 COMBINAISON BRAILLE POINTS-237 2847 COMBINAISON BRAILLE POINTS-1237 2848 COMBINAISON BRAILLE POINTS-47 2849 COMBINAISON BRAILLE POINTS-147 284A COMBINAISON BRAILLE POINTS-247 284B COMBINAISON BRAILLE POINTS-1247 284C COMBINAISON BRAILLE POINTS-347 284D COMBINAISON BRAILLE POINTS-1347 284E COMBINAISON BRAILLE POINTS-2347 284F COMBINAISON BRAILLE POINTS-12347 2850 COMBINAISON BRAILLE POINTS-57 2851 COMBINAISON BRAILLE POINTS-157 2852 COMBINAISON BRAILLE POINTS-257 2853 COMBINAISON BRAILLE POINTS-1257 2854 COMBINAISON BRAILLE POINTS-357 2855 COMBINAISON BRAILLE POINTS-1357 2856 COMBINAISON BRAILLE POINTS-2357 2857 COMBINAISON BRAILLE POINTS-12357 2858 COMBINAISON BRAILLE POINTS-457 2859 COMBINAISON BRAILLE POINTS-1457 285A COMBINAISON BRAILLE POINTS-2457 285B COMBINAISON BRAILLE POINTS-12457 285C COMBINAISON BRAILLE POINTS-3457 285D COMBINAISON BRAILLE POINTS-13457 285E COMBINAISON BRAILLE POINTS-23457 285F COMBINAISON BRAILLE POINTS-123457 2860 COMBINAISON BRAILLE POINTS-67 2861 COMBINAISON BRAILLE POINTS-167 2862 COMBINAISON BRAILLE POINTS-267 2863 COMBINAISON BRAILLE POINTS-1267 2864 COMBINAISON BRAILLE POINTS-367 2865 COMBINAISON BRAILLE POINTS-1367 2866 COMBINAISON BRAILLE POINTS-2367 2867 COMBINAISON BRAILLE POINTS-12367 2868 COMBINAISON BRAILLE POINTS-467 2869 COMBINAISON BRAILLE POINTS-1467 286A COMBINAISON BRAILLE POINTS-2467 286B COMBINAISON BRAILLE POINTS-12467 286C COMBINAISON BRAILLE POINTS-3467 286D COMBINAISON BRAILLE POINTS-13467 286E COMBINAISON BRAILLE POINTS-23467 286F COMBINAISON BRAILLE POINTS-123467 2870 COMBINAISON BRAILLE POINTS-567 2871 COMBINAISON BRAILLE POINTS-1567 2872 COMBINAISON BRAILLE POINTS-2567 2873 COMBINAISON BRAILLE POINTS-12567 2874 COMBINAISON BRAILLE POINTS-3567 2875 COMBINAISON BRAILLE POINTS-13567 2876 COMBINAISON BRAILLE POINTS-23567 2877 COMBINAISON BRAILLE POINTS-123567 2878 COMBINAISON BRAILLE POINTS-4567 2879 COMBINAISON BRAILLE POINTS-14567 287A COMBINAISON BRAILLE POINTS-24567 287B COMBINAISON BRAILLE POINTS-124567 287C COMBINAISON BRAILLE POINTS-34567 287D COMBINAISON BRAILLE POINTS-134567 287E COMBINAISON BRAILLE POINTS-234567 287F COMBINAISON BRAILLE POINTS-1234567 2880 COMBINAISON BRAILLE POINTS-8 2881 COMBINAISON BRAILLE POINTS-18 2882 COMBINAISON BRAILLE POINTS-28 2883 COMBINAISON BRAILLE POINTS-128 2884 COMBINAISON BRAILLE POINTS-38 2885 COMBINAISON BRAILLE POINTS-138 2886 COMBINAISON BRAILLE POINTS-238 2887 COMBINAISON BRAILLE POINTS-1238 2888 COMBINAISON BRAILLE POINTS-48 2889 COMBINAISON BRAILLE POINTS-148 288A COMBINAISON BRAILLE POINTS-248 288B COMBINAISON BRAILLE POINTS-1248 288C COMBINAISON BRAILLE POINTS-348 288D COMBINAISON BRAILLE POINTS-1348 288E COMBINAISON BRAILLE POINTS-2348 288F COMBINAISON BRAILLE POINTS-12348 2890 COMBINAISON BRAILLE POINTS-58 2891 COMBINAISON BRAILLE POINTS-158 2892 COMBINAISON BRAILLE POINTS-258 2893 COMBINAISON BRAILLE POINTS-1258 2894 COMBINAISON BRAILLE POINTS-358 2895 COMBINAISON BRAILLE POINTS-1358 2896 COMBINAISON BRAILLE POINTS-2358 2897 COMBINAISON BRAILLE POINTS-12358 2898 COMBINAISON BRAILLE POINTS-458 2899 COMBINAISON BRAILLE POINTS-1458 289A COMBINAISON BRAILLE POINTS-2458 289B COMBINAISON BRAILLE POINTS-12458 289C COMBINAISON BRAILLE POINTS-3458 289D COMBINAISON BRAILLE POINTS-13458 289E COMBINAISON BRAILLE POINTS-23458 289F COMBINAISON BRAILLE POINTS-123458 28A0 COMBINAISON BRAILLE POINTS-68 28A1 COMBINAISON BRAILLE POINTS-168 28A2 COMBINAISON BRAILLE POINTS-268 28A3 COMBINAISON BRAILLE POINTS-1268 28A4 COMBINAISON BRAILLE POINTS-368 28A5 COMBINAISON BRAILLE POINTS-1368 28A6 COMBINAISON BRAILLE POINTS-2368 28A7 COMBINAISON BRAILLE POINTS-12368 28A8 COMBINAISON BRAILLE POINTS-468 28A9 COMBINAISON BRAILLE POINTS-1468 28AA COMBINAISON BRAILLE POINTS-2468 28AB COMBINAISON BRAILLE POINTS-12468 28AC COMBINAISON BRAILLE POINTS-3468 28AD COMBINAISON BRAILLE POINTS-13468 28AE COMBINAISON BRAILLE POINTS-23468 28AF COMBINAISON BRAILLE POINTS-123468 28B0 COMBINAISON BRAILLE POINTS-568 28B1 COMBINAISON BRAILLE POINTS-1568 28B2 COMBINAISON BRAILLE POINTS-2568 28B3 COMBINAISON BRAILLE POINTS-12568 28B4 COMBINAISON BRAILLE POINTS-3568 28B5 COMBINAISON BRAILLE POINTS-13568 28B6 COMBINAISON BRAILLE POINTS-23568 28B7 COMBINAISON BRAILLE POINTS-123568 28B8 COMBINAISON BRAILLE POINTS-4568 28B9 COMBINAISON BRAILLE POINTS-14568 28BA COMBINAISON BRAILLE POINTS-24568 28BB COMBINAISON BRAILLE POINTS-124568 28BC COMBINAISON BRAILLE POINTS-34568 28BD COMBINAISON BRAILLE POINTS-134568 28BE COMBINAISON BRAILLE POINTS-234568 28BF COMBINAISON BRAILLE POINTS-1234568 28C0 COMBINAISON BRAILLE POINTS-78 28C1 COMBINAISON BRAILLE POINTS-178 28C2 COMBINAISON BRAILLE POINTS-278 28C3 COMBINAISON BRAILLE POINTS-1278 28C4 COMBINAISON BRAILLE POINTS-378 28C5 COMBINAISON BRAILLE POINTS-1378 28C6 COMBINAISON BRAILLE POINTS-2378 28C7 COMBINAISON BRAILLE POINTS-12378 28C8 COMBINAISON BRAILLE POINTS-478 28C9 COMBINAISON BRAILLE POINTS-1478 28CA COMBINAISON BRAILLE POINTS-2478 28CB COMBINAISON BRAILLE POINTS-12478 28CC COMBINAISON BRAILLE POINTS-3478 28CD COMBINAISON BRAILLE POINTS-13478 28CE COMBINAISON BRAILLE POINTS-23478 28CF COMBINAISON BRAILLE POINTS-123478 28D0 COMBINAISON BRAILLE POINTS-578 28D1 COMBINAISON BRAILLE POINTS-1578 28D2 COMBINAISON BRAILLE POINTS-2578 28D3 COMBINAISON BRAILLE POINTS-12578 28D4 COMBINAISON BRAILLE POINTS-3578 28D5 COMBINAISON BRAILLE POINTS-13578 28D6 COMBINAISON BRAILLE POINTS-23578 28D7 COMBINAISON BRAILLE POINTS-123578 28D8 COMBINAISON BRAILLE POINTS-4578 28D9 COMBINAISON BRAILLE POINTS-14578 28DA COMBINAISON BRAILLE POINTS-24578 28DB COMBINAISON BRAILLE POINTS-124578 28DC COMBINAISON BRAILLE POINTS-34578 28DD COMBINAISON BRAILLE POINTS-134578 28DE COMBINAISON BRAILLE POINTS-234578 28DF COMBINAISON BRAILLE POINTS-1234578 28E0 COMBINAISON BRAILLE POINTS-678 28E1 COMBINAISON BRAILLE POINTS-1678 28E2 COMBINAISON BRAILLE POINTS-2678 28E3 COMBINAISON BRAILLE POINTS-12678 28E4 COMBINAISON BRAILLE POINTS-3678 28E5 COMBINAISON BRAILLE POINTS-13678 28E6 COMBINAISON BRAILLE POINTS-23678 28E7 COMBINAISON BRAILLE POINTS-123678 28E8 COMBINAISON BRAILLE POINTS-4678 28E9 COMBINAISON BRAILLE POINTS-14678 28EA COMBINAISON BRAILLE POINTS-24678 28EB COMBINAISON BRAILLE POINTS-124678 28EC COMBINAISON BRAILLE POINTS-34678 28ED COMBINAISON BRAILLE POINTS-134678 28EE COMBINAISON BRAILLE POINTS-234678 28EF COMBINAISON BRAILLE POINTS-1234678 28F0 COMBINAISON BRAILLE POINTS-5678 28F1 COMBINAISON BRAILLE POINTS-15678 28F2 COMBINAISON BRAILLE POINTS-25678 28F3 COMBINAISON BRAILLE POINTS-125678 28F4 COMBINAISON BRAILLE POINTS-35678 28F5 COMBINAISON BRAILLE POINTS-135678 28F6 COMBINAISON BRAILLE POINTS-235678 28F7 COMBINAISON BRAILLE POINTS-1235678 28F8 COMBINAISON BRAILLE POINTS-45678 28F9 COMBINAISON BRAILLE POINTS-145678 28FA COMBINAISON BRAILLE POINTS-245678 28FB COMBINAISON BRAILLE POINTS-1245678 28FC COMBINAISON BRAILLE POINTS-345678 28FD COMBINAISON BRAILLE POINTS-1345678 28FE COMBINAISON BRAILLE POINTS-2345678 28FF COMBINAISON BRAILLE POINTS-12345678 @@ 2E80 Formes supplémentaires des clés CJC 2EFF 2E80 CLÉ CJC BIS 2E81 CLÉ CJC FALAISE 2E82 CLÉ CJC DOUBLE CROCHET UN 2E83 CLÉ CJC SECOND DEUX 2E84 CLÉ CJC SECOND TROIS 2E85 CLÉ CJC HOMME 2E86 CLÉ CJC PLACE 2E87 CLÉ CJC TABOURET 2E88 CLÉ CJC COUTEAU UN 2E89 CLÉ CJC COUTEAU DEUX 2E8A CLÉ CJC DIVINATION 2E8B CLÉ CJC SCEAU 2E8C CLÉ CJC PETIT UN 2E8D CLÉ CJC PETIT DEUX 2E8E CLÉ CJC INFIRME ONE 2E8F CLÉ CJC INFIRME DEUX 2E90 CLÉ CJC INFIRME TROIS 2E91 CLÉ CJC INFIRME QUATRE 2E92 CLÉ CJC SIGNE DU SERPENT 2E93 CLÉ CJC FIL 2E94 CLÉ CJC GROIN UN 2E95 CLÉ CJC GROIN DEUX 2E96 CLÉ CJC COEUR UN 2E97 CLÉ CJC COEUR DEUX 2E98 CLÉ CJC MAIN 2E99 CLÉ CJC TAPER 2E9A CLÉ CJC SIMPLIFIÉ AUCUN 2E9B CLÉ CJC ÉTRANGLER 2E9C CLÉ CJC SOLEIL 2E9D CLÉ CJC LUNE 2E9E CLÉ CJC MAUVAIS 2E9F CLÉ CJC MÈRE 2EA0 CLÉ CJC CIVIL 2EA1 CLÉ CJC EAU UN 2EA2 CLÉ CJC EAU DEUX 2EA3 CLÉ CJC FEU 2EA4 CLÉ CJC PATTE UN 2EA5 CLÉ CJC PATTE DEUX 2EA6 CLÉ CJC DEMI-ARBRE SIMPLIFIÉ 2EA7 CLÉ CJC BOEUF 2EA8 CLÉ CJC CHIEN 2EA9 CLÉ CJC JADE 2EAA CLÉ CJC PIÈCE D'ÉTOFFE 2EAB CLÉ CJC OEIL 2EAC CLÉ CJC RITES UN 2EAD CLÉ CJC RITES DEUX 2EAE CLÉ CJC BAMBOU 2EAF CLÉ CJC SOIE 2EB0 CLÉ CJC C-SIMPLIFIÉ SOIE 2EB1 CLÉ CJC FILET UN 2EB2 CLÉ CJC FILET DEUX 2EB3 CLÉ CJC FILET TROIS 2EB4 CLÉ CJC FILET QUATRE 2EB5 CLÉ CJC MAILLE 2EB6 CLÉ CJC MOUTON 2EB7 CLÉ CJC BÉLIER 2EB8 CLÉ CJC BREBIS 2EB9 CLÉ CJC VIEUX 2EBA CLÉ CJC PINCEAU UN 2EBB CLÉ CJC PINCEAU DEUX 2EBC CLÉ CJC VIANDE 2EBD CLÉ CJC MORTIER 2EBE CLÉ CJC HERBE UN 2EBF CLÉ CJC HERBE DEUX 2EC0 CLÉ CJC HERBE TROIS 2EC1 CLÉ CJC TIGRE 2EC2 CLÉ CJC HABITS 2EC3 CLÉ CJC OUEST UN 2EC4 CLÉ CJC OUEST DEUX 2EC5 CLÉ CJC C-SIMPLIFIÉ VOIR 2EC6 CLÉ CJC SIMPLIFIÉ CORNE 2EC7 CLÉ CJC CORNE 2EC8 CLÉ CJC C-SIMPLIFIÉ PAROLE 2EC9 CLÉ CJC C-SIMPLIFIÉ COQUILLAGE 2ECA CLÉ CJC PIED 2ECB CLÉ CJC C-SIMPLIFIÉ VÉHICULE 2ECC CLÉ CJC SIMPLIFIÉ PROMENADE 2ECD CLÉ CJC PROMENADE UN 2ECE CLÉ CJC PROMENADE DEUX 2ECF CLÉ CJC VILLE 2ED0 CLÉ CJC C-SIMPLIFIÉ OR 2ED1 CLÉ CJC LONG UN 2ED2 CLÉ CJC LONG DEUX 2ED3 CLÉ CJC C-SIMPLIFIÉ LONG 2ED4 CLÉ CJC C-SIMPLIFIÉ PORTE 2ED5 CLÉ CJC TERTRE UN 2ED6 CLÉ CJC TERTRE DEUX 2ED7 CLÉ CJC PLUIE 2ED8 CLÉ CJC BLEU 2ED9 CLÉ CJC C-SIMPLIFIÉ CUIR TANNÉ 2EDA CLÉ CJC C-SIMPLIFIÉ FEUILLE 2EDB CLÉ CJC C-SIMPLIFIÉ VENT 2EDC CLÉ CJC C-SIMPLIFIÉ VOLTIGER 2EDD CLÉ CJC MANGER UN 2EDE CLÉ CJC MANGER DEUX 2EDF CLÉ CJC MANGER TROIS 2EE0 CLÉ CJC C-SIMPLIFIÉ MANGER 2EE1 CLÉ CJC TÊTE 2EE2 CLÉ CJC C-SIMPLIFIÉ CHEVAL 2EE3 CLÉ CJC OS 2EE4 CLÉ CJC DÉMON 2EE5 CLÉ CJC C-SIMPLIFIÉ POISSON 2EE6 CLÉ CJC C-SIMPLIFIÉ OISEAU 2EE7 CLÉ CJC C-SIMPLIFIÉ SEL 2EE8 CLÉ CJC SIMPLIFIÉ BLÉ 2EE9 CLÉ CJC SIMPLIFIÉ JAUNE 2EEA CLÉ CJC C-SIMPLIFIÉ TÊTARD 2EEB CLÉ CJC J-SIMPLIFIÉ HARMONIE 2EEC CLÉ CJC C-SIMPLIFIÉ HARMONIE 2EED CLÉ CJC J-SIMPLIFIÉ DENTS 2EEE CLÉ CJC C-SIMPLIFIÉ DENTS 2EEF CLÉ CJC J-SIMPLIFIÉ DRAGON 2EF0 CLÉ CJC C-SIMPLIFIÉ DRAGON 2EF1 CLÉ CJC TORTUE 2EF2 CLÉ CJC J-SIMPLIFIÉ TORTUE 2EF3 CLÉ CJC C-SIMPLIFIÉ TORTUE @@ 2F00 Clés chinoises (K'ang-hsi ou Kangxi) 2FDF 2F00 CLÉ CHINOISE UN 2F01 CLÉ CHINOISE BARRE 2F02 CLÉ CHINOISE POINT 2F03 CLÉ CHINOISE OBLIQUE À GAUCHE 2F04 CLÉ CHINOISE DOUBLE CROCHET 2F05 CLÉ CHINOISE CROCHET 2F06 CLÉ CHINOISE DEUX 2F07 CLÉ CHINOISE DESSUS 2F08 CLÉ CHINOISE HOMME 2F09 CLÉ CHINOISE JAMBES 2F0A CLÉ CHINOISE ENTRER 2F0B CLÉ CHINOISE HUIT 2F0C CLÉ CHINOISE PLACE 2F0D CLÉ CHINOISE COUVRIR 2F0E CLÉ CHINOISE GLACE 2F0F CLÉ CHINOISE TABOURET 2F10 CLÉ CHINOISE FOSSE 2F11 CLÉ CHINOISE COUTEAU 2F12 CLÉ CHINOISE FORCE 2F13 CLÉ CHINOISE ENVELOPPER 2F14 CLÉ CHINOISE CUILLÈRE 2F15 CLÉ CHINOISE COFFRE 2F16 CLÉ CHINOISE CACHETTE 2F17 CLÉ CHINOISE DIX 2F18 CLÉ CHINOISE DIVINATION 2F19 CLÉ CHINOISE SCEAU 2F1A CLÉ CHINOISE FALAISE 2F1B CLÉ CHINOISE PRIVÉ 2F1C CLÉ CHINOISE ENCORE 2F1D CLÉ CHINOISE BOUCHE 2F1E CLÉ CHINOISE ENCEINTE 2F1F CLÉ CHINOISE TERRE 2F20 CLÉ CHINOISE LETTRÉ 2F21 CLÉ CHINOISE ALLER 2F22 CLÉ CHINOISE CHEMINER 2F23 CLÉ CHINOISE SOIR 2F24 CLÉ CHINOISE GRAND 2F25 CLÉ CHINOISE FEMME 2F26 CLÉ CHINOISE ENFANT 2F27 CLÉ CHINOISE TOIT 2F28 CLÉ CHINOISE POUCE 2F29 CLÉ CHINOISE PETIT 2F2A CLÉ CHINOISE INFIRME 2F2B CLÉ CHINOISE CADAVRE 2F2C CLÉ CHINOISE BOURGEON 2F2D CLÉ CHINOISE MONTAGNE 2F2E CLÉ CHINOISE RIVIÈRE 2F2F CLÉ CHINOISE TRAVAIL 2F30 CLÉ CHINOISE SOI-MÊME 2F31 CLÉ CHINOISE SERVIETTE 2F32 CLÉ CHINOISE SEC 2F33 CLÉ CHINOISE MINCE (fin) 2F34 CLÉ CHINOISE APPENTIS 2F35 CLÉ CHINOISE EMJAMBÉE 2F36 CLÉ CHINOISE DEUX MAINS 2F37 CLÉ CHINOISE TIRER 2F38 CLÉ CHINOISE ARC 2F39 CLÉ CHINOISE GROIN 2F3A CLÉ CHINOISE POIL 2F3B CLÉ CHINOISE PAS 2F3C CLÉ CHINOISE COEUR 2F3D CLÉ CHINOISE HALLEBARDE 2F3E CLÉ CHINOISE BATTANT DE PORTE 2F3F CLÉ CHINOISE MAIN 2F40 CLÉ CHINOISE BRANCHE 2F41 CLÉ CHINOISE TAPER 2F42 CLÉ CHINOISE ÉCRITURE 2F43 CLÉ CHINOISE BOISSEAU 2F44 CLÉ CHINOISE HACHE 2F45 CLÉ CHINOISE CARRÉ 2F46 CLÉ CHINOISE NE PAS 2F47 CLÉ CHINOISE SOLEIL 2F48 CLÉ CHINOISE DIRE 2F49 CLÉ CHINOISE LUNE 2F4A CLÉ CHINOISE ARBRE 2F4B CLÉ CHINOISE MANQUE 2F4C CLÉ CHINOISE ARRÊT 2F4D CLÉ CHINOISE MORT 2F4E CLÉ CHINOISE ARME 2F4F CLÉ CHINOISE IL N'Y A PAS 2F50 CLÉ CHINOISE COMPARER 2F51 CLÉ CHINOISE TOUFFE DE POIL 2F52 CLÉ CHINOISE CLAN 2F53 CLÉ CHINOISE VAPEUR 2F54 CLÉ CHINOISE EAU 2F55 CLÉ CHINOISE FEU 2F56 CLÉ CHINOISE GRIFFE 2F57 CLÉ CHINOISE PÈRE 2F58 CLÉ CHINOISE ENTRELACÉ 2F59 CLÉ CHINOISE MOITIÉ GAUCHE DE BÛCHE 2F5A CLÉ CHINOISE TRANCHE 2F5B CLÉ CHINOISE CROC 2F5C CLÉ CHINOISE BOEUF 2F5D CLÉ CHINOISE CHIEN 2F5E CLÉ CHINOISE MYSTÉRIEUX 2F5F CLÉ CHINOISE JADE 2F60 CLÉ CHINOISE MELON 2F61 CLÉ CHINOISE TUILE 2F62 CLÉ CHINOISE DOUX 2F63 CLÉ CHINOISE NAÎTRE 2F64 CLÉ CHINOISE UTILISER 2F65 CLÉ CHINOISE CHAMP 2F66 CLÉ CHINOISE PIÈCE D'ÉTOFFE 2F67 CLÉ CHINOISE MALADIE 2F68 CLÉ CHINOISE MONTER 2F69 CLÉ CHINOISE BLANC 2F6A CLÉ CHINOISE PEAU 2F6B CLÉ CHINOISE VAISSELLE 2F6C CLÉ CHINOISE OEIL 2F6D CLÉ CHINOISE LANCE 2F6E CLÉ CHINOISE FLÈCHE 2F6F CLÉ CHINOISE PIERRE 2F70 CLÉ CHINOISE RITES 2F71 CLÉ CHINOISE TRACES 2F72 CLÉ CHINOISE CÉRÉALES 2F73 CLÉ CHINOISE CAVERNE 2F74 CLÉ CHINOISE DEBOUT 2F75 CLÉ CHINOISE BAMBOU 2F76 CLÉ CHINOISE RIZ 2F77 CLÉ CHINOISE SOIE 2F78 CLÉ CHINOISE POTERIE 2F79 CLÉ CHINOISE FILET 2F7A CLÉ CHINOISE MOUTON 2F7B CLÉ CHINOISE PLUME 2F7C CLÉ CHINOISE VIEUX 2F7D CLÉ CHINOISE ALORS 2F7E CLÉ CHINOISE CHARRUE 2F7F CLÉ CHINOISE OREILLE 2F80 CLÉ CHINOISE PINCEAU 2F81 CLÉ CHINOISE VIANDE 2F82 CLÉ CHINOISE MINISTRE 2F83 CLÉ CHINOISE PERSONNELLEMENT 2F84 CLÉ CHINOISE ARRIVER 2F85 CLÉ CHINOISE MORTIER 2F86 CLÉ CHINOISE LANGUE 2F87 CLÉ CHINOISE S'OPPOSER 2F88 CLÉ CHINOISE BATEAU 2F89 CLÉ CHINOISE RÉSISTER 2F8A CLÉ CHINOISE COULEUR 2F8B CLÉ CHINOISE HERBE 2F8C CLÉ CHINOISE TIGRE 2F8D CLÉ CHINOISE INSECTE 2F8E CLÉ CHINOISE SANG 2F8F CLÉ CHINOISE DÉFILER 2F90 CLÉ CHINOISE HABITS 2F91 CLÉ CHINOISE OUEST 2F92 CLÉ CHINOISE VOIR 2F93 CLÉ CHINOISE CORNE 2F94 CLÉ CHINOISE PAROLE 2F95 CLÉ CHINOISE VALLÉE 2F96 CLÉ CHINOISE HARICOT 2F97 CLÉ CHINOISE COCHON 2F98 CLÉ CHINOISE ANIMAL 2F99 CLÉ CHINOISE COQUILLAGE 2F9A CLÉ CHINOISE ROUGE 2F9B CLÉ CHINOISE COURIR 2F9C CLÉ CHINOISE PIED 2F9D CLÉ CHINOISE CORPS 2F9E CLÉ CHINOISE VÉHICULE 2F9F CLÉ CHINOISE ÂCRE 2FA0 CLÉ CHINOISE MATIN 2FA1 CLÉ CHINOISE PROMENADE 2FA2 CLÉ CHINOISE RÉGION 2FA3 CLÉ CHINOISE SIGNE DU COQ (amphore) 2FA4 CLÉ CHINOISE CUEILLIR 2FA5 CLÉ CHINOISE HAMEAU 2FA6 CLÉ CHINOISE OR 2FA7 CLÉ CHINOISE LONG 2FA8 CLÉ CHINOISE PORTE 2FA9 CLÉ CHINOISE TERTRE 2FAA CLÉ CHINOISE ESCLAVE 2FAB CLÉ CHINOISE OISEAU À QUEUE COURTE 2FAC CLÉ CHINOISE PLUIE 2FAD CLÉ CHINOISE BLEU 2FAE CLÉ CHINOISE TORT 2FAF CLÉ CHINOISE VISAGE 2FB0 CLÉ CHINOISE CUIR 2FB1 CLÉ CHINOISE CUIR TANNÉ 2FB2 CLÉ CHINOISE CIBOULETTE 2FB3 CLÉ CHINOISE SON 2FB4 CLÉ CHINOISE FEUILLE 2FB5 CLÉ CHINOISE VENT 2FB6 CLÉ CHINOISE VOLTIGER 2FB7 CLÉ CHINOISE MANGER 2FB8 CLÉ CHINOISE TÊTE 2FB9 CLÉ CHINOISE PARFUM 2FBA CLÉ CHINOISE CHEVAL 2FBB CLÉ CHINOISE OS 2FBC CLÉ CHINOISE HAUT 2FBD CLÉ CHINOISE CHEVELURE 2FBE CLÉ CHINOISE RIXE 2FBF CLÉ CHINOISE VIN SACRIFICIEL 2FC0 CLÉ CHINOISE CHAUDRON 2FC1 CLÉ CHINOISE DÉMON 2FC2 CLÉ CHINOISE POISSON 2FC3 CLÉ CHINOISE OISEAU 2FC4 CLÉ CHINOISE SEL 2FC5 CLÉ CHINOISE CERF 2FC6 CLÉ CHINOISE BLÉ 2FC7 CLÉ CHINOISE CHANVRE 2FC8 CLÉ CHINOISE JAUNE 2FC9 CLÉ CHINOISE MILLET 2FCA CLÉ CHINOISE NOIR 2FCB CLÉ CHINOISE BRODERIE 2FCC CLÉ CHINOISE GRENOUILLE 2FCD CLÉ CHINOISE TRIPODE 2FCE CLÉ CHINOISE TAMBOUR 2FCF CLÉ CHINOISE RAT 2FD0 CLÉ CHINOISE NEZ 2FD1 CLÉ CHINOISE HARMONIE 2FD2 CLÉ CHINOISE DENT 2FD3 CLÉ CHINOISE DRAGON 2FD4 CLÉ CHINOISE TORTUE 2FD5 CLÉ CHINOISE FLÛTE @@ 2FF0 Description idéographique 2FFF 2FF0 CARACTÈRE DE DESCRIPTION IDÉOGRAPHIQUE GAUCHE À DROITE 2FF1 CARACTÈRE DE DESCRIPTION IDÉOGRAPHIQUE DE HAUT EN BAS 2FF2 CARACTÈRE DE DESCRIPTION IDÉOGRAPHIQUE DE LA GAUCHE AU MILIEU PUIS À LA DROITE 2FF3 CARACTÈRE DE DESCRIPTION IDÉOGRAPHIQUE DU HAUT AU MILIEU PUIS EN BAS 2FF4 CARACTÈRE DE DESCRIPTION IDÉOGRAPHIQUE TOUT AUTOUR 2FF5 CARACTÈRE DE DESCRIPTION IDÉOGRAPHIQUE AUTOUR À PARTIR DU HAUT 2FF6 CARACTÈRE DE DESCRIPTION IDÉOGRAPHIQUE AUTOUR À PARTIR DU BAS 2FF7 CARACTÈRE DE DESCRIPTION IDÉOGRAPHIQUE AUTOUR À PARTIR DE LA GAUCHE 2FF8 CARACTÈRE DE DESCRIPTION IDÉOGRAPHIQUE AUTOUR À PARTIR D'EN HAUT À GAUCHE 2FF9 CARACTÈRE DE DESCRIPTION IDÉOGRAPHIQUE AUTOUR À PARTIR D'EN HAUT À DROITE 2FFA CARACTÈRE DE DESCRIPTION IDÉOGRAPHIQUE AUTOUR À PARTIR D'EN BAS À GAUCHE 2FFB CARACTÈRE DE DESCRIPTION IDÉOGRAPHIQUE CHEVAUCHEMENT @@ 3000 Symboles et ponctuation CJC 303F 3000 ESPACE IDÉOGRAPHIQUE 3001 VIRGULE IDÉOGRAPHIQUE 3002 POINT IDÉOGRAPHIQUE 3003 GUILLEMETS DE RÉPÉTITION 3004 SYMBOLE DE NORME INDUSTRIELLE JAPONAISE 3005 MARQUE IDÉOGRAPHIQUE D'ITÉRATION 3006 MARQUE IDÉOGRAPHIQUE DE FERMETURE 3007 ZÉRO IDÉOGRAPHIQUE 3008 CROCHET ANGULAIRE À GAUCHE 3009 CROCHET ANGULAIRE À DROITE 300A DOUBLE CROCHET ANGULAIRE À GAUCHE 300B DOUBLE CROCHET ANGULAIRE À DROITE 300C CROCHET COIN GAUCHE 300D CROCHET COIN DROIT 300E CROCHET BLANC COIN GAUCHE 300F CROCHET BLANC COIN DROIT 3010 CROCHET NOIR LENTICULAIRE GAUCHE 3011 CROCHET NOIR LENTICULAIRE DROIT 3012 MARQUE POSTALE 3013 SIGNE GÊTA 3014 CROCHET GAUCHE EN ÉCAILLE 3015 CROCHET DROIT EN ÉCAILLE 3016 CROCHET BLANC LENTICULAIRE GAUCHE 3017 CROCHET BLANC LENTICULAIRE DROIT 3018 CROCHET BLANC GAUCHE EN ÉCAILLE 3019 CROCHET BLANC DROIT EN ÉCAILLE 301A CROCHET BLANC GAUCHE 301B CROCHET BLANC DROIT 301C TRAIT D'UNION EN ESSE 301D GUILLEMET DOUBLE PRIME RÉFLÉCHI 301E GUILLEMET DOUBLE PRIME 301F GUILLEMET DOUBLE PRIME INFÉRIEUR 3020 VISAGE EN MARQUE POSTALE 3021 CHIFFRE UN HANGZHOU 3022 CHIFFRE DEUX HANGZHOU 3023 CHIFFRE TROIS HANGZHOU 3024 CHIFFRE QUATRE HANGZHOU 3025 CHIFFRE CINQ HANGZHOU 3026 CHIFFRE SIX HANGZHOU 3027 CHIFFRE SEPT HANGZHOU 3028 CHIFFRE HUIT HANGZHOU 3029 CHIFFRE NEUF HANGZHOU 302A MARQUE IDÉOGRAPHIQUE DE TON FIXE 302B MARQUE IDÉOGRAPHIQUE DE TON ASCENDANT 302C MARQUE IDÉOGRAPHIQUE DE TON SORTANT 302D MARQUE IDÉOGRAPHIQUE DE TON ENTRANT 302E MARQUE DE TON HANGÛL POINT 302F MARQUE DE TON HANGÛL DOUBLE POINT 3030 TRAIT D'UNION ONDULÉ 3031 MARQUE VERTICALE KANA DE RÉPÉTITION 3032 MARQUE VERTICALE KANA DE RÉPÉTITION AVEC SON VOISÉ 3033 MOITIÉ SUPÉRIEURE DE MARQUE VERTICALE KANA DE RÉPÉTITION 3034 MOITIÉ SUPÉRIEURE DE MARQUE VERTICALE KANA DE RÉPÉTITION AVEC SON VOISÉ 3035 MOITIÉ INFÉRIEURE DE MARQUE VERTICALE KANA DE RÉPÉTITION 3036 MARQUE POSTALE CERCLÉE 3037 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE SÉPARATEUR DE CHANGEMENT DE LIGNE 3038 NOMBRE DIX HANGZHOU 3039 NOMBRE VINGT HANGZHOU 303A NOMBRE TRENTE HANGZHOU 303E INDICATEUR DE VARIATION IDÉOGRAPHIQUE 303F DEMI-ESPACE IDÉOGRAPHIQUE @@ 3040 Hiragana 309F 3041 SYLLABE HIRAGANA A MINUSCULE 3042 SYLLABE HIRAGANA A 3043 SYLLABE HIRAGANA I MINUSCULE 3044 SYLLABE HIRAGANA I 3045 SYLLABE HIRAGANA U MINUSCULE 3046 SYLLABE HIRAGANA U 3047 SYLLABE HIRAGANA E MINUSCULE 3048 SYLLABE HIRAGANA E 3049 SYLLABE HIRAGANA O MINUSCULE 304A SYLLABE HIRAGANA O 304B SYLLABE HIRAGANA KA 304C SYLLABE HIRAGANA GA 304D SYLLABE HIRAGANA KI 304E SYLLABE HIRAGANA GI 304F SYLLABE HIRAGANA KU 3050 SYLLABE HIRAGANA GU 3051 SYLLABE HIRAGANA KE 3052 SYLLABE HIRAGANA GE 3053 SYLLABE HIRAGANA KO 3054 SYLLABE HIRAGANA GO 3055 SYLLABE HIRAGANA SA 3056 SYLLABE HIRAGANA ZA 3057 SYLLABE HIRAGANA SI 3058 SYLLABE HIRAGANA ZI 3059 SYLLABE HIRAGANA SU 305A SYLLABE HIRAGANA ZU 305B SYLLABE HIRAGANA SE 305C SYLLABE HIRAGANA ZE 305D SYLLABE HIRAGANA SO 305E SYLLABE HIRAGANA ZO 305F SYLLABE HIRAGANA TA 3060 SYLLABE HIRAGANA DA 3061 SYLLABE HIRAGANA TI 3062 SYLLABE HIRAGANA DI 3063 SYLLABE HIRAGANA TU MINUSCULE 3064 SYLLABE HIRAGANA TU 3065 SYLLABE HIRAGANA DU 3066 SYLLABE HIRAGANA TE 3067 SYLLABE HIRAGANA DE 3068 SYLLABE HIRAGANA TO 3069 SYLLABE HIRAGANA DO 306A SYLLABE HIRAGANA NA 306B SYLLABE HIRAGANA NI 306C SYLLABE HIRAGANA NU 306D SYLLABE HIRAGANA NE 306E SYLLABE HIRAGANA NO 306F SYLLABE HIRAGANA HA 3070 SYLLABE HIRAGANA BA 3071 SYLLABE HIRAGANA PA 3072 SYLLABE HIRAGANA HI 3073 SYLLABE HIRAGANA BI 3074 SYLLABE HIRAGANA PI 3075 SYLLABE HIRAGANA HU 3076 SYLLABE HIRAGANA BU 3077 SYLLABE HIRAGANA PU 3078 SYLLABE HIRAGANA HE 3079 SYLLABE HIRAGANA BE 307A SYLLABE HIRAGANA PE 307B SYLLABE HIRAGANA HO 307C SYLLABE HIRAGANA BO 307D SYLLABE HIRAGANA PO 307E SYLLABE HIRAGANA MA 307F SYLLABE HIRAGANA MI 3080 SYLLABE HIRAGANA MU 3081 SYLLABE HIRAGANA ME 3082 SYLLABE HIRAGANA MO 3083 SYLLABE HIRAGANA YA MINUSCULE 3084 SYLLABE HIRAGANA YA 3085 SYLLABE HIRAGANA YU MINUSCULE 3086 SYLLABE HIRAGANA YU 3087 SYLLABE HIRAGANA YO MINUSCULE 3088 SYLLABE HIRAGANA YO 3089 SYLLABE HIRAGANA RA 308A SYLLABE HIRAGANA RI 308B SYLLABE HIRAGANA RU 308C SYLLABE HIRAGANA RE 308D SYLLABE HIRAGANA RO 308E SYLLABE HIRAGANA WA MINUSCULE 308F SYLLABE HIRAGANA WA 3090 SYLLABE HIRAGANA WI 3091 SYLLABE HIRAGANA WE 3092 SYLLABE HIRAGANA WO 3093 SYLLABE HIRAGANA N 3094 SYLLABE HIRAGANA VU 3099 DIACRITIQUE KATAKANA-HIRAGANA SON VOISÉ 309A DIACRITIQUE KATAKANA-HIRAGANA SON SEMI-VOISÉ 309B MARQUE KATAKANA-HIRAGANA DE SON VOISÉ 309C MARQUE KATAKANA-HIRAGANA DE SON SEMI-VOISÉ 309D MARQUE D'ITÉRATION HIRAGANA 309E MARQUE D'ITÉRATION VOISÉE HIRAGANA @@ 30A0 Katakana 30FF 30A1 SYLLABE KATAKANA A MINUSCULE 30A2 SYLLABE KATAKANA A 30A3 SYLLABE KATAKANA I MINUSCULE 30A4 SYLLABE KATAKANA I 30A5 SYLLABE KATAKANA U MINUSCULE 30A6 SYLLABE KATAKANA U 30A7 SYLLABE KATAKANA E MINUSCULE 30A8 SYLLABE KATAKANA E 30A9 SYLLABE KATAKANA O MINUSCULE 30AA SYLLABE KATAKANA O 30AB SYLLABE KATAKANA KA 30AC SYLLABE KATAKANA GA 30AD SYLLABE KATAKANA KI 30AE SYLLABE KATAKANA GI 30AF SYLLABE KATAKANA KU 30B0 SYLLABE KATAKANA GU 30B1 SYLLABE KATAKANA KE 30B2 SYLLABE KATAKANA GE 30B3 SYLLABE KATAKANA KO 30B4 SYLLABE KATAKANA GO 30B5 SYLLABE KATAKANA SA 30B6 SYLLABE KATAKANA ZA 30B7 SYLLABE KATAKANA SI 30B8 SYLLABE KATAKANA ZI 30B9 SYLLABE KATAKANA SU 30BA SYLLABE KATAKANA ZU 30BB SYLLABE KATAKANA SE 30BC SYLLABE KATAKANA ZE 30BD SYLLABE KATAKANA SO 30BE SYLLABE KATAKANA ZO 30BF SYLLABE KATAKANA TA 30C0 SYLLABE KATAKANA DA 30C1 SYLLABE KATAKANA TI 30C2 SYLLABE KATAKANA DI 30C3 SYLLABE KATAKANA TU MINUSCULE 30C4 SYLLABE KATAKANA TU 30C5 SYLLABE KATAKANA DU 30C6 SYLLABE KATAKANA TE 30C7 SYLLABE KATAKANA DE 30C8 SYLLABE KATAKANA TO 30C9 SYLLABE KATAKANA DO 30CA SYLLABE KATAKANA NA 30CB SYLLABE KATAKANA NI 30CC SYLLABE KATAKANA NU 30CD SYLLABE KATAKANA NE 30CE SYLLABE KATAKANA NO 30CF SYLLABE KATAKANA HA 30D0 SYLLABE KATAKANA BA 30D1 SYLLABE KATAKANA PA 30D2 SYLLABE KATAKANA HI 30D3 SYLLABE KATAKANA BI 30D4 SYLLABE KATAKANA PI 30D5 SYLLABE KATAKANA HU 30D6 SYLLABE KATAKANA BU 30D7 SYLLABE KATAKANA PU 30D8 SYLLABE KATAKANA HE 30D9 SYLLABE KATAKANA BE 30DA SYLLABE KATAKANA PE 30DB SYLLABE KATAKANA HO 30DC SYLLABE KATAKANA BO 30DD SYLLABE KATAKANA PO 30DE SYLLABE KATAKANA MA 30DF SYLLABE KATAKANA MI 30E0 SYLLABE KATAKANA MU 30E1 SYLLABE KATAKANA ME 30E2 SYLLABE KATAKANA MO 30E3 SYLLABE KATAKANA YA MINUSCULE 30E4 SYLLABE KATAKANA YA 30E5 SYLLABE KATAKANA YU MINUSCULE 30E6 SYLLABE KATAKANA YU 30E7 SYLLABE KATAKANA YO MINUSCULE 30E8 SYLLABE KATAKANA YO 30E9 SYLLABE KATAKANA RA 30EA SYLLABE KATAKANA RI 30EB SYLLABE KATAKANA RU 30EC SYLLABE KATAKANA RE 30ED SYLLABE KATAKANA RO 30EE SYLLABE KATAKANA WA MINUSCULE 30EF SYLLABE KATAKANA WA 30F0 SYLLABE KATAKANA WI 30F1 SYLLABE KATAKANA WE 30F2 SYLLABE KATAKANA WO 30F3 SYLLABE KATAKANA N 30F4 SYLLABE KATAKANA VU 30F5 SYLLABE KATAKANA KA MINUSCULE 30F6 SYLLABE KATAKANA KE MINUSCULE 30F7 SYLLABE KATAKANA VA 30F8 SYLLABE KATAKANA VI 30F9 SYLLABE KATAKANA VE 30FA SYLLABE KATAKANA VO 30FB POINT MÉDIAN KATAKANA 30FC MARQUE KATAKANA-HIRAGANA DE SON PROLONGÉ 30FD MARQUE D'ITÉRATION KATAKANA 30FE MARQUE D'ITÉRATION VOISÉE KATAKANA @@ 3100 Bopomofo 312F 3105 LETTRE BOPOMOFO P 3106 LETTRE BOPOMOFO P' 3107 LETTRE BOPOMOFO M 3108 LETTRE BOPOMOFO F 3109 LETTRE BOPOMOFO T 310A LETTRE BOPOMOFO T' 310B LETTRE BOPOMOFO N 310C LETTRE BOPOMOFO L 310D LETTRE BOPOMOFO K 310E LETTRE BOPOMOFO K' 310F LETTRE BOPOMOFO H 3110 LETTRE BOPOMOFO TS 3111 LETTRE BOPOMOFO TS' 3112 LETTRE BOPOMOFO HS 3113 LETTRE BOPOMOFO TCH 3114 LETTRE BOPOMOFO TCH' 3115 LETTRE BOPOMOFO CH 3116 LETTRE BOPOMOFO J 3117 LETTRE BOPOMOFO TZ 3118 LETTRE BOPOMOFO TZ' 3119 LETTRE BOPOMOFO S 311A LETTRE BOPOMOFO A 311B LETTRE BOPOMOFO Ô 311C LETTRE BOPOMOFO E (ö) 311D LETTRE BOPOMOFO È 311E LETTRE BOPOMOFO AÏ 311F LETTRE BOPOMOFO EÏ 3120 LETTRE BOPOMOFO AO 3121 LETTRE BOPOMOFO EOU 3122 LETTRE BOPOMOFO AN 3123 LETTRE BOPOMOFO EN 3124 LETTRE BOPOMOFO ANG 3125 LETTRE BOPOMOFO ENG 3126 LETTRE BOPOMOFO EUL 3127 LETTRE BOPOMOFO I 3128 LETTRE BOPOMOFO OU 3129 LETTRE BOPOMOFO U 312A LETTRE BOPOMOFO V 312B LETTRE BOPOMOFO NG 312C LETTRE BOPOMOFO GN @@ 3130 Jamos de compatibilité hangûl 318F 3131 LETTRE HANGÛL KIYOK 3132 LETTRE HANGÛL SSANGKIYOK 3133 LETTRE HANGÛL KIYOK-SIÔS 3134 LETTRE HANGÛL NIÛN 3135 LETTRE HANGÛL NIÛN-TCHIÛTCH 3136 LETTRE HANGÛL NIÛN-HIÛH 3137 LETTRE HANGÛL TIKÛT 3138 LETTRE HANGÛL SSANGTIKÛT 3139 LETTRE HANGÛL RIÛL 313A LETTRE HANGÛL RIÛL-KIYOK 313B LETTRE HANGÛL RIÛL-MIÛM 313C LETTRE HANGÛL RIÛL-PIÛP 313D LETTRE HANGÛL RIÛL-SIÔS 313E LETTRE HANGÛL RIÛL-T'IÛT' 313F LETTRE HANGÛL RIÛL-P'IÛP' 3140 LETTRE HANGÛL RIÛL-HIÛH 3141 LETTRE HANGÛL MIÛM 3142 LETTRE HANGÛL PIÛP 3143 LETTRE HANGÛL SSANGPIÛP 3144 LETTRE HANGÛL PIÛP-SIÔS 3145 LETTRE HANGÛL SIÔS 3146 LETTRE HANGÛL SSANGSIÔS 3147 LETTRE HANGÛL IÛNG 3148 LETTRE HANGÛL TCHIÛTCH 3149 LETTRE HANGÛL SSANGTCHIÛTCH 314A LETTRE HANGÛL TCH'IÛTCH' 314B LETTRE HANGÛL K'IÛK' 314C LETTRE HANGÛL T'IÛT' 314D LETTRE HANGÛL P'IÛP' 314E LETTRE HANGÛL HIÛH 314F LETTRE HANGÛL A 3150 LETTRE HANGÛL È 3151 LETTRE HANGÛL YA 3152 LETTRE HANGÛL YÈ 3153 LETTRE HANGÛL O 3154 LETTRE HANGÛL É 3155 LETTRE HANGÛL YO 3156 LETTRE HANGÛL YÉ 3157 LETTRE HANGÛL Ô 3158 LETTRE HANGÛL WA 3159 LETTRE HANGÛL WÈ 315A LETTRE HANGÛL EU 315B LETTRE HANGÛL YÔ 315C LETTRE HANGÛL OU 315D LETTRE HANGÛL WO 315E LETTRE HANGÛL WÉ 315F LETTRE HANGÛL WI 3160 LETTRE HANGÛL YOU 3161 LETTRE HANGÛL Û 3162 LETTRE HANGÛL ÛI 3163 LETTRE HANGÛL I 3164 BOURRE HANGÛL 3165 LETTRE HANGÛL SSANGNIÛN 3166 LETTRE HANGÛL NIÛN-TIKÛT 3167 LETTRE HANGÛL NIÛN-SIÔS 3168 LETTRE HANGÛL NIÛN-PANSIÔS 3169 LETTRE HANGÛL RIÛL-KIYOK-SIÔS 316A LETTRE HANGÛL RIÛL-TIKÛT 316B LETTRE HANGÛL RIÛL-PIÛP-SIÔS 316C LETTRE HANGÛL RIÛL-PANSIÔS 316D LETTRE HANGÛL RIÛL-YORINHIÛH 316E LETTRE HANGÛL MIÛM-PIÛP 316F LETTRE HANGÛL MIÛM-SIÔS 3170 LETTRE HANGÛL MIÛM-PANSIÔS 3171 LETTRE HANGÛL KAPYO-OUNMIÛM 3172 LETTRE HANGÛL PIÛP-KIYOK 3173 LETTRE HANGÛL PIÛP-TIKÛT 3174 LETTRE HANGÛL PIÛP-SIÔS-KIYOK 3175 LETTRE HANGÛL PIÛP-SIÔS-TIKÛT 3176 LETTRE HANGÛL PIÛP-TCHIÛTCH 3177 LETTRE HANGÛL PIÛP-T'IÛT' 3178 LETTRE HANGÛL KAPYO-OUNPIÛP 3179 LETTRE HANGÛL KAPYO-OUNSSANGPIÛP 317A LETTRE HANGÛL SIÔS-KIYOK 317B LETTRE HANGÛL SIÔS-NIÛN 317C LETTRE HANGÛL SIÔS-TIKÛT 317D LETTRE HANGÛL SIÔS-PIÛP 317E LETTRE HANGÛL SIÔS-TCHIÛTCH 317F LETTRE HANGÛL PANSIÔS 3180 LETTRE HANGÛL SSANGIÛNG 3181 LETTRE HANGÛL YESIÛNG 3182 LETTRE HANGÛL YESIÛNG-SIÔS 3183 LETTRE HANGÛL YESIÛNG-PANSIÔS 3184 LETTRE HANGÛL KAPYO-OUNP'IÛP' 3185 LETTRE HANGÛL SSANGHIÛH 3186 LETTRE HANGÛL YORINHIÛH 3187 LETTRE HANGÛL YÔ-YA 3188 LETTRE HANGÛL YÔ-YÈ 3189 LETTRE HANGÛL YÔ-I 318A LETTRE HANGÛL YOU-YO 318B LETTRE HANGÛL YOU-YÉ 318C LETTRE HANGÛL YOU-I 318D LETTRE HANGÛL ARÈA 318E LETTRE HANGÛL ARÈÈ @@ 3190 Kanbun 319F 3190 MARQUE D'ANNOTATION IDÉOGRAPHIQUE DE LIAISON (kanbun tateten) 3191 MARQUE D'ANNOTATION IDÉOGRAPHIQUE D'INVERSION (kaeriten) 3192 MARQUE D'ANNOTATION IDÉOGRAPHIQUE UN (kaeriten) 3193 MARQUE D'ANNOTATION IDÉOGRAPHIQUE DEUX (kaeriten) 3194 MARQUE D'ANNOTATION IDÉOGRAPHIQUE TROIS (kaeriten) 3195 MARQUE D'ANNOTATION IDÉOGRAPHIQUE QUATRE (kaeriten) 3196 MARQUE D'ANNOTATION IDÉOGRAPHIQUE DU HAUT (kaeriten) 3197 MARQUE D'ANNOTATION IDÉOGRAPHIQUE DU CENTRE (kaeriten) 3198 MARQUE D'ANNOTATION IDÉOGRAPHIQUE DU BAS (kaeriten) 3199 MARQUE D'ANNOTATION IDÉOGRAPHIQUE DU PREMIER (kaeriten) 319A MARQUE D'ANNOTATION IDÉOGRAPHIQUE DU SECOND (kaeriten) 319B MARQUE D'ANNOTATION IDÉOGRAPHIQUE DU TROISIÈME (kaeriten) 319C MARQUE D'ANNOTATION IDÉOGRAPHIQUE DU QUATRIÈME (kaeriten) 319D MARQUE D'ANNOTATION IDÉOGRAPHIQUE DU CIEL (kaeriten) 319E MARQUE D'ANNOTATION IDÉOGRAPHIQUE DE LA TERRE (kaeriten) 319F MARQUE D'ANNOTATION IDÉOGRAPHIQUE DE L'HOMME (kaeriten) @@ 31A0 Bopomofo étendu 31BF 31A0 LETTRE BOPOMOFO B 31A1 LETTRE BOPOMOFO Z 31A2 LETTRE BOPOMOFO DJ 31A3 LETTRE BOPOMOFO G 31A4 LETTRE BOPOMOFO É 31A5 LETTRE BOPOMOFO ENN 31A6 LETTRE BOPOMOFO O 31A7 LETTRE BOPOMOFO ONN 31A8 LETTRE BOPOMOFO ÎL 31A9 LETTRE BOPOMOFO ANN 31AA LETTRE BOPOMOFO INN 31AB LETTRE BOPOMOFO OUNN 31AC LETTRE BOPOMOFO IM 31AD LETTRE BOPOMOFO NGG 31AE LETTRE BOPOMOFO AÏNN 31AF LETTRE BOPOMOFO AONN 31B0 LETTRE BOPOMOFO AM 31B1 LETTRE BOPOMOFO OM 31B2 LETTRE BOPOMOFO ONG 31B3 LETTRE BOPOMOFO INNN 31B4 LETTRE BOPOMOFO P FINAL 31B5 LETTRE BOPOMOFO T FINAL 31B6 LETTRE BOPOMOFO K' FINAL 31B7 LETTRE BOPOMOFO H FINAL @@ 3200 Lettres et mois CJC cerclés 32FF 3200 HANGÛL KIYOK ENTRE PARENTHÈSES 3201 HANGÛL NIÛN ENTRE PARENTHÈSES 3202 HANGÛL TIKÛT ENTRE PARENTHÈSES 3203 HANGÛL RIÛL ENTRE PARENTHÈSES 3204 HANGÛL MIÛM ENTRE PARENTHÈSES 3205 HANGÛL PIÛP ENTRE PARENTHÈSES 3206 HANGÛL SIÔS ENTRE PARENTHÈSES 3207 HANGÛL IÛNG ENTRE PARENTHÈSES 3208 HANGÛL TCHIÛTCH ENTRE PARENTHÈSES 3209 HANGÛL TCH'IÛTCH' ENTRE PARENTHÈSES 320A HANGÛL K'IÛK' ENTRE PARENTHÈSES 320B HANGÛL T'IÛT' ENTRE PARENTHÈSES 320C HANGÛL P'IÛP' ENTRE PARENTHÈSES 320D HANGÛL HIÛH ENTRE PARENTHÈSES 320E HANGÛL KIYOK A ENTRE PARENTHÈSES 320F HANGÛL NIÛN A ENTRE PARENTHÈSES 3210 HANGÛL TIKÛT A ENTRE PARENTHÈSES 3211 HANGÛL RIÛL A ENTRE PARENTHÈSES 3212 HANGÛL MIÛM A ENTRE PARENTHÈSES 3213 HANGÛL PIÛP A ENTRE PARENTHÈSES 3214 HANGÛL SIÔS A ENTRE PARENTHÈSES 3215 HANGÛL IÛNG A ENTRE PARENTHÈSES 3216 HANGÛL TCHIÛTCH A ENTRE PARENTHÈSES 3217 HANGÛL TCH'IÛTCH' A ENTRE PARENTHÈSES 3218 HANGÛL K'IÛK' A ENTRE PARENTHÈSES 3219 HANGÛL T'IÛT' A ENTRE PARENTHÈSES 321A HANGÛL P'IÛP' A ENTRE PARENTHÈSES 321B HANGÛL HIÛH A ENTRE PARENTHÈSES 321C HANGÛL TCHIÛTCH OU ENTRE PARENTHÈSES 3220 IDÉOGRAMME UN ENTRE PARENTHÈSES 3221 IDÉOGRAMME DEUX ENTRE PARENTHÈSES 3222 IDÉOGRAMME TROIS ENTRE PARENTHÈSES 3223 IDÉOGRAMME QUATRE ENTRE PARENTHÈSES 3224 IDÉOGRAMME CINQ ENTRE PARENTHÈSES 3225 IDÉOGRAMME SIX ENTRE PARENTHÈSES 3226 IDÉOGRAMME SEPT ENTRE PARENTHÈSES 3227 IDÉOGRAMME HUIT ENTRE PARENTHÈSES 3228 IDÉOGRAMME NEUF ENTRE PARENTHÈSES 3229 IDÉOGRAMME DIX ENTRE PARENTHÈSES 322A IDÉOGRAMME LUNE ENTRE PARENTHÈSES 322B IDÉOGRAMME FEU ENTRE PARENTHÈSES 322C IDÉOGRAMME EAU ENTRE PARENTHÈSES 322D IDÉOGRAMME BOIS ENTRE PARENTHÈSES 322E IDÉOGRAMME MÉTAL ENTRE PARENTHÈSES 322F IDÉOGRAMME TERRE ENTRE PARENTHÈSES 3230 IDÉOGRAMME SOLEIL ENTRE PARENTHÈSES 3231 IDÉOGRAMME MARCHANDISES ENTRE PARENTHÈSES 3232 IDÉOGRAMME AVOIR ENTRE PARENTHÈSES 3233 IDÉOGRAMME SOCIÉTÉ ENTRE PARENTHÈSES 3234 IDÉOGRAMME NOM ENTRE PARENTHÈSES 3235 IDÉOGRAMME SPÉCIAL ENTRE PARENTHÈSES 3236 IDÉOGRAMME FINANCIER ENTRE PARENTHÈSES 3237 IDÉOGRAMME FÉLICITATIONS ENTRE PARENTHÈSES 3238 IDÉOGRAMME TRAVAIL ENTRE PARENTHÈSES 3239 IDÉOGRAMME REPRÉSENTE ENTRE PARENTHÈSES 323A IDÉOGRAMME APPEL ENTRE PARENTHÈSES 323B IDÉOGRAMME ÉTUDE ENTRE PARENTHÈSES 323C IDÉOGRAMME SUPERVISE ENTRE PARENTHÈSES 323D IDÉOGRAMME ENTREPRISE ENTRE PARENTHÈSES 323E IDÉOGRAMME RESSOURCE ENTRE PARENTHÈSES 323F IDÉOGRAMME ALLIANCE ENTRE PARENTHÈSES 3240 IDÉOGRAMME FESTIVAL ENTRE PARENTHÈSES 3241 IDÉOGRAMME REPOS ENTRE PARENTHÈSES 3242 IDÉOGRAMME SOI ENTRE PARENTHÈSES 3243 IDÉOGRAMME ATTEINDRE ENTRE PARENTHÈSES 3260 HANGÛL CERCLÉ KIYOK 3261 HANGÛL CERCLÉ NIÛN 3262 HANGÛL CERCLÉ TIKÛT 3263 HANGÛL CERCLÉ RIÛL 3264 HANGÛL CERCLÉ MIÛM 3265 HANGÛL CERCLÉ PIÛP 3266 HANGÛL CERCLÉ SIÔS 3267 HANGÛL CERCLÉ IÛNG 3268 HANGÛL CERCLÉ TCHIÛTCH 3269 HANGÛL CERCLÉ TCH'IÛTCH' 326A HANGÛL CERCLÉ K'IÛK' 326B HANGÛL CERCLÉ T'IÛT' 326C HANGÛL CERCLÉ P'IÛP' 326D HANGÛL CERCLÉ HIÛH 326E HANGÛL CERCLÉ KIYOK A 326F HANGÛL CERCLÉ NIÛN A 3270 HANGÛL CERCLÉ TIKÛT A 3271 HANGÛL CERCLÉ RIÛL A 3272 HANGÛL CERCLÉ MIÛM A 3273 HANGÛL CERCLÉ PIÛP A 3274 HANGÛL CERCLÉ SIÔS A 3275 HANGÛL CERCLÉ IÛNG A 3276 HANGÛL CERCLÉ TCHIÛTCH A 3277 HANGÛL CERCLÉ TCH'IÛTCH' A 3278 HANGÛL CERCLÉ K'IÛK' A 3279 HANGÛL CERCLÉ T'IÛT' A 327A HANGÛL CERCLÉ P'IÛP' A 327B HANGÛL CERCLÉ HIÛH A 327F SYMBOLE DE NORME CORÉENNE 3280 IDÉOGRAMME UN CERCLÉ 3281 IDÉOGRAMME DEUX CERCLÉ 3282 IDÉOGRAMME TROIS CERCLÉ 3283 IDÉOGRAMME QUATRE CERCLÉ 3284 IDÉOGRAMME CINQ CERCLÉ 3285 IDÉOGRAMME SIX CERCLÉ 3286 IDÉOGRAMME SEPT CERCLÉ 3287 IDÉOGRAMME HUIT CERCLÉ 3288 IDÉOGRAMME NEUF CERCLÉ 3289 IDÉOGRAMME DIX CERCLÉ 328A IDÉOGRAMME LUNE CERCLÉ 328B IDÉOGRAMME FEU CERCLÉ 328C IDÉOGRAMME EAU CERCLÉ 328D IDÉOGRAMME BOIS CERCLÉ 328E IDÉOGRAMME MÉTAL CERCLÉ 328F IDÉOGRAMME TERRE CERCLÉ 3290 IDÉOGRAMME SOLEIL CERCLÉ 3291 IDÉOGRAMME MARCHANDISES CERCLÉ 3292 IDÉOGRAMME AVOIR CERCLÉ 3293 IDÉOGRAMME SOCIÉTÉ CERCLÉ 3294 IDÉOGRAMME NOM CERCLÉ 3295 IDÉOGRAMME SPÉCIAL CERCLÉ 3296 IDÉOGRAMME FINANCIER CERCLÉ 3297 IDÉOGRAMME FÉLICITATIONS CERCLÉ 3298 IDÉOGRAMME TRAVAIL CERCLÉ 3299 IDÉOGRAMME SECRET CERCLÉ 329A IDÉOGRAMME MÂLE CERCLÉ 329B IDÉOGRAMME FEMELLE CERCLÉ 329C IDÉOGRAMME ACCEPTABLE CERCLÉ 329D IDÉOGRAMME EXCELLENT CERCLÉ 329E IDÉOGRAMME IMPRIMER CERCLÉ 329F IDÉOGRAMME ATTENTION CERCLÉ 32A0 IDÉOGRAMME ARTICLE CERCLÉ 32A1 IDÉOGRAMME REPOS CERCLÉ 32A2 IDÉOGRAMME COPIE CERCLÉ 32A3 IDÉOGRAMME CORRECT CERCLÉ 32A4 IDÉOGRAMME HAUT CERCLÉ 32A5 IDÉOGRAMME CENTRE CERCLÉ 32A6 IDÉOGRAMME BAS CERCLÉ 32A7 IDÉOGRAMME GAUCHE CERCLÉ 32A8 IDÉOGRAMME DROIT CERCLÉ 32A9 IDÉOGRAMME MÉDECINE CERCLÉ 32AA IDÉOGRAMME RELIGION CERCLÉ 32AB IDÉOGRAMME ÉTUDE CERCLÉ 32AC IDÉOGRAMME SUPERVISER CERCLÉ 32AD IDÉOGRAMME ENTREPRISE CERCLÉ 32AE IDÉOGRAMME RESSOURCE CERCLÉ 32AF IDÉOGRAMME ALLIANCE CERCLÉ 32B0 IDÉOGRAMME NUIT CERCLÉ 32C0 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JANVIER 32C1 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE FÉVRIER 32C2 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE MARS 32C3 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE AVRIL 32C4 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE MAI 32C5 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JUIN 32C6 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JUILLET 32C7 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE AOÛT 32C8 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE SEPTEMBRE 32C9 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE OCTOBRE 32CA SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE NOVEMBRE 32CB SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE DÉCEMBRE 32D0 KATAKANA CERCLÉ A 32D1 KATAKANA CERCLÉ I 32D2 KATAKANA CERCLÉ U 32D3 KATAKANA CERCLÉ E 32D4 KATAKANA CERCLÉ O 32D5 KATAKANA CERCLÉ KA 32D6 KATAKANA CERCLÉ KI 32D7 KATAKANA CERCLÉ KU 32D8 KATAKANA CERCLÉ KE 32D9 KATAKANA CERCLÉ KO 32DA KATAKANA CERCLÉ SA 32DB KATAKANA CERCLÉ SI 32DC KATAKANA CERCLÉ SU 32DD KATAKANA CERCLÉ SE 32DE KATAKANA CERCLÉ SO 32DF KATAKANA CERCLÉ TA 32E0 KATAKANA CERCLÉ TI 32E1 KATAKANA CERCLÉ TU 32E2 KATAKANA CERCLÉ TE 32E3 KATAKANA CERCLÉ TO 32E4 KATAKANA CERCLÉ NA 32E5 KATAKANA CERCLÉ NI 32E6 KATAKANA CERCLÉ NU 32E7 KATAKANA CERCLÉ NE 32E8 KATAKANA CERCLÉ NO 32E9 KATAKANA CERCLÉ HA 32EA KATAKANA CERCLÉ HI 32EB KATAKANA CERCLÉ HU 32EC KATAKANA CERCLÉ HE 32ED KATAKANA CERCLÉ HO 32EE KATAKANA CERCLÉ MA 32EF KATAKANA CERCLÉ MI 32F0 KATAKANA CERCLÉ MU 32F1 KATAKANA CERCLÉ ME 32F2 KATAKANA CERCLÉ MO 32F3 KATAKANA CERCLÉ YA 32F4 KATAKANA CERCLÉ YU 32F5 KATAKANA CERCLÉ YO 32F6 KATAKANA CERCLÉ RA 32F7 KATAKANA CERCLÉ RI 32F8 KATAKANA CERCLÉ RU 32F9 KATAKANA CERCLÉ RE 32FA KATAKANA CERCLÉ RO 32FB KATAKANA CERCLÉ WA 32FC KATAKANA CERCLÉ WI 32FD KATAKANA CERCLÉ WE 32FE KATAKANA CERCLÉ WO @@ 3300 Compatibilité CJC 33FF 3300 APÂTO DISPOSÉ EN CARRÉ 3301 ARUHUA DISPOSÉ EN CARRÉ 3302 ANPEA DISPOSÉ EN CARRÉ 3303 ÂRU DISPOSÉ EN CARRÉ 3304 ININGU DISPOSÉ EN CARRÉ 3305 INTI DISPOSÉ EN CARRÉ 3306 UON DISPOSÉ EN CARRÉ 3307 ESUKÛDO DISPOSÉ EN CARRÉ 3308 ÊK DISPOSÉ EN CARRÉ 3309 ONSU DISPOSÉ EN CARRÉ 330A ÔMU DISPOSÉ EN CARRÉ 330B KAIRI DISPOSÉ EN CARRÉ 330C KARATTO DISPOSÉ EN CARRÉ 330D KARORÎ DISPOSÉ EN CARRÉ 330E GARON DISPOSÉ EN CARRÉ 330F GANMA DISPOSÉ EN CARRÉ 3310 GIGA DISPOSÉ EN CARRÉ 3311 GINÎ DISPOSÉ EN CARRÉ 3312 KYURÎ DISPOSÉ EN CARRÉ 3313 GIRUD DISPOSÉ EN CARRÉ 3314 KIRO DISPOSÉ EN CARRÉ 3315 KIROGURAMU DISPOSÉ EN CARRÉ 3316 KIROMÊTORU DISPOSÉ EN CARRÉ 3317 KIROWATTO DISPOSÉ EN CARRÉ 3318 GURAMU DISPOSÉ EN CARRÉ 3319 GURAMUTON DISPOSÉ EN CARRÉ 331A KURUZEIRO DISPOSÉ EN CARRÉ 331B KURÔNE DISPOSÉ EN CARRÉ 331C KÊSU DISPOSÉ EN CARRÉ 331D KORUNA DISPOSÉ EN CARRÉ 331E KÔPO DISPOSÉ EN CARRÉ 331F SAIKURU DISPOSÉ EN CARRÉ 3320 SANTÎMU DISPOSÉ EN CARRÉ 3321 SIRINGU DISPOSÉ EN CARRÉ 3322 SENTI DISPOSÉ EN CARRÉ 3323 SENTO DISPOSÉ EN CARRÉ 3324 DÂSU DISPOSÉ EN CARRÉ 3325 DESI DISPOSÉ EN CARRÉ 3326 DORU DISPOSÉ EN CARRÉ 3327 TONNE DISPOSÉ EN CARRÉ 3328 NANO DISPOSÉ EN CARRÉ 3329 NOTTO DISPOSÉ EN CARRÉ 332A HAITU DISPOSÉ EN CARRÉ 332B PÂSENTO DISPOSÉ EN CARRÉ 332C PÂTU DISPOSÉ EN CARRÉ 332D BÂRERU DISPOSÉ EN CARRÉ 332E PIASUTORU DISPOSÉ EN CARRÉ 332F PIKURU DISPOSÉ EN CARRÉ 3330 PIKO DISPOSÉ EN CARRÉ 3331 BIRU DISPOSÉ EN CARRÉ 3332 HUARADO DISPOSÉ EN CARRÉ 3333 HUÎTO DISPOSÉ EN CARRÉ 3334 BUSSYERU DISPOSÉ EN CARRÉ 3335 HURAN DISPOSÉ EN CARRÉ 3336 HEKUTÂRU DISPOSÉ EN CARRÉ 3337 PESO DISPOSÉ EN CARRÉ 3338 PENIHI DISPOSÉ EN CARRÉ 3339 HERUTU DISPOSÉ EN CARRÉ 333A PENSU DISPOSÉ EN CARRÉ 333B PÊZI DISPOSÉ EN CARRÉ 333C BÊTA DISPOSÉ EN CARRÉ 333D POINTO DISPOSÉ EN CARRÉ 333E BORUTO DISPOSÉ EN CARRÉ 333F HON DISPOSÉ EN CARRÉ 3340 PONDO DISPOSÉ EN CARRÉ 3341 HÔRU DISPOSÉ EN CARRÉ 3342 HÔN DISPOSÉ EN CARRÉ 3343 MAYAKURO DISPOSÉ EN CARRÉ 3344 MAYAKRU DISPOSÉ EN CARRÉ 3345 MAHHA DISPOSÉ EN CARRÉ 3346 MAKKU DISPOSÉ EN CARRÉ 3347 MANSYON DISPOSÉ EN CARRÉ 3348 MIKURON DISPOSÉ EN CARRÉ 3349 MIRI DISPOSÉ EN CARRÉ 334A MIRIBÂRU DISPOSÉ EN CARRÉ 334B MÉGA DISPOSÉ EN CARRÉ 334C MÉGATONNE DISPOSÉ EN CARRÉ 334D MÊTORU DISPOSÉ EN CARRÉ 334E YÂDO DISPOSÉ EN CARRÉ 334F YÂRU DISPOSÉ EN CARRÉ 3350 YUAN DISPOSÉ EN CARRÉ 3351 RITTORU DISPOSÉ EN CARRÉ 3352 RIRA DISPOSÉ EN CARRÉ 3353 RUPÎ DISPOSÉ EN CARRÉ 3354 RÛBURU DISPOSÉ EN CARRÉ 3355 REMU DISPOSÉ EN CARRÉ 3356 RENTOGEN DISPOSÉ EN CARRÉ 3357 WATTO DISPOSÉ EN CARRÉ 3358 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE ZÉRO 3359 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE UN 335A SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE DEUX 335B SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE TROIS 335C SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE QUATRE 335D SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE CINQ 335E SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE SIX 335F SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE SEPT 3360 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE HUIT 3361 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE NEUF 3362 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE DIX 3363 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE ONZE 3364 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE DOUZE 3365 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE TREIZE 3366 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE QUATORZE 3367 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE QUINZE 3368 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE SEIZE 3369 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE DIX-SEPT 336A SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE DIX-HUIT 336B SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE DIX-NEUF 336C SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE VINGT 336D SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE VINGT-ET-UN 336E SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE VINGT-DEUX 336F SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE VINGT-TROIS 3370 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE HEURE VINGT-QUATRE 3371 HPA DISPOSÉ EN CARRÉ 3372 DA DISPOSÉ EN CARRÉ 3373 AU DISPOSÉ EN CARRÉ 3374 BAR DISPOSÉ EN CARRÉ 3375 OV DISPOSÉ EN CARRÉ 3376 PC DISPOSÉ EN CARRÉ 337B ÈRE HEÏSEÏ DISPOSÉ EN CARRÉ 337C ÈRE CHÔWA DISPOSÉ EN CARRÉ 337D ÈRE TAÏCHÔ DISPOSÉ EN CARRÉ 337E ÈRE MEÏJI DISPOSÉ EN CARRÉ 337F SOCIÉTÉ DISPOSÉ EN CARRÉ 3380 PA AMPÈRES DISPOSÉ EN CARRÉ 3381 NA DISPOSÉ EN CARRÉ 3382 MU A DISPOSÉ EN CARRÉ 3383 MA DISPOSÉ EN CARRÉ 3384 KA DISPOSÉ EN CARRÉ 3385 KB DISPOSÉ EN CARRÉ 3386 MB DISPOSÉ EN CARRÉ 3387 GB DISPOSÉ EN CARRÉ 3388 CAL DISPOSÉ EN CARRÉ 3389 KCAL DISPOSÉ EN CARRÉ 338A PF DISPOSÉ EN CARRÉ 338B NF DISPOSÉ EN CARRÉ 338C MU F DISPOSÉ EN CARRÉ 338D MU G DISPOSÉ EN CARRÉ 338E MG DISPOSÉ EN CARRÉ 338F KG DISPOSÉ EN CARRÉ 3390 HZ DISPOSÉ EN CARRÉ 3391 KHZ DISPOSÉ EN CARRÉ 3392 MHZ DISPOSÉ EN CARRÉ 3393 GHZ DISPOSÉ EN CARRÉ 3394 THZ DISPOSÉ EN CARRÉ 3395 MU L DISPOSÉ EN CARRÉ 3396 ML DISPOSÉ EN CARRÉ 3397 DL DISPOSÉ EN CARRÉ 3398 KL DISPOSÉ EN CARRÉ 3399 FM DISPOSÉ EN CARRÉ 339A NM DISPOSÉ EN CARRÉ 339B MU M DISPOSÉ EN CARRÉ 339C MM DISPOSÉ EN CARRÉ 339D CM DISPOSÉ EN CARRÉ 339E KM DISPOSÉ EN CARRÉ 339F MM CARRÉ DISPOSÉ EN CARRÉ 33A0 CM CARRÉ DISPOSÉ EN CARRÉ 33A1 M CARRÉ DISPOSÉ EN CARRÉ 33A2 KM CARRÉ DISPOSÉ EN CARRÉ 33A3 MM CUBE DISPOSÉ EN CARRÉ 33A4 CM CUBE DISPOSÉ EN CARRÉ 33A5 M CUBE DISPOSÉ EN CARRÉ 33A6 KM CUBE DISPOSÉ EN CARRÉ 33A7 M SUR S DISPOSÉ EN CARRÉ 33A8 M SUR S CARRÉ DISPOSÉ EN CARRÉ 33A9 PA DISPOSÉ EN CARRÉ 33AA KPA DISPOSÉ EN CARRÉ 33AB MPA DISPOSÉ EN CARRÉ 33AC GPA DISPOSÉ EN CARRÉ 33AD RAD DISPOSÉ EN CARRÉ 33AE RAD SUR S DISPOSÉ EN CARRÉ 33AF RAD SUR S CARRÉ DISPOSÉ EN CARRÉ 33B0 PS DISPOSÉ EN CARRÉ 33B1 NS DISPOSÉ EN CARRÉ 33B2 MU S DISPOSÉ EN CARRÉ 33B3 MS DISPOSÉ EN CARRÉ 33B4 PV DISPOSÉ EN CARRÉ 33B5 NV DISPOSÉ EN CARRÉ 33B6 MU V DISPOSÉ EN CARRÉ 33B7 MV DISPOSÉ EN CARRÉ 33B8 KV DISPOSÉ EN CARRÉ 33B9 MV MÉGA DISPOSÉ EN CARRÉ 33BA PW DISPOSÉ EN CARRÉ 33BB NW DISPOSÉ EN CARRÉ 33BC MU W DISPOSÉ EN CARRÉ 33BD MW DISPOSÉ EN CARRÉ 33BE KW DISPOSÉ EN CARRÉ 33BF MW MÉGA DISPOSÉ EN CARRÉ 33C0 K OHM DISPOSÉ EN CARRÉ 33C1 M OHM DISPOSÉ EN CARRÉ 33C2 AM DISPOSÉ EN CARRÉ 33C3 BQ DISPOSÉ EN CARRÉ 33C4 CC DISPOSÉ EN CARRÉ 33C5 CD DISPOSÉ EN CARRÉ 33C6 C SUR KG DISPOSÉ EN CARRÉ 33C7 CO DISPOSÉ EN CARRÉ 33C8 DB DISPOSÉ EN CARRÉ 33C9 GY DISPOSÉ EN CARRÉ 33CA HA DISPOSÉ EN CARRÉ 33CB HP DISPOSÉ EN CARRÉ 33CC IN DISPOSÉ EN CARRÉ 33CD KK DISPOSÉ EN CARRÉ 33CE KM MAJUSCULE DISPOSÉ EN CARRÉ 33CF KT DISPOSÉ EN CARRÉ 33D0 LM DISPOSÉ EN CARRÉ 33D1 LN DISPOSÉ EN CARRÉ 33D2 LOG DISPOSÉ EN CARRÉ 33D3 LX DISPOSÉ EN CARRÉ 33D4 MB MINUSCULE DISPOSÉ EN CARRÉ 33D5 MIL DISPOSÉ EN CARRÉ 33D6 MOL DISPOSÉ EN CARRÉ 33D7 PH DISPOSÉ EN CARRÉ 33D8 PM DISPOSÉ EN CARRÉ 33D9 PPM DISPOSÉ EN CARRÉ 33DA PR DISPOSÉ EN CARRÉ 33DB SR DISPOSÉ EN CARRÉ 33DC SV DISPOSÉ EN CARRÉ 33DD WB DISPOSÉ EN CARRÉ 33E0 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR UN 33E1 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR DEUX 33E2 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR TROIS 33E3 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR QUATRE 33E4 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR CINQ 33E5 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR SIX 33E6 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR SEPT 33E7 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR HUIT 33E8 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR NEUF 33E9 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR DIX 33EA SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR ONZE 33EB SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR DOUZE 33EC SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE TREIZE 33ED SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR QUATORZE 33EE SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR QUINZE 33EF SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR SEIZE 33F0 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR DIX-SEPT 33F1 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR DIX-HUIT 33F2 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR DIX-NEUF 33F3 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR VINGT 33F4 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR VINGT-ET-UN 33F5 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR VINGT-DEUX 33F6 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR VINGT-TROIS 33F7 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR VINGT-QUATRE 33F8 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR VINGT-CINQ 33F9 SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR VINGT-SIX 33FA SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR VINGT-SEPT 33FB SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR VINGT-HUIT 33FC SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR VINGT-NEUF 33FD SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR TRENTE 33FE SYMBOLE TÉLÉGRAPHIQUE IDÉOGRAPHIQUE JOUR TRENTE-ET-UN @@ 3400 Extension A aux idéogrammes unifiés CJC 4DB5 @@ 4E00 Idéogrammes unifiés CJC 9FA5 @@ A000 Syllabaire yi des Monts frais A48F A000 SYLLABE YI IT A001 SYLLABE YI IX A002 SYLLABE YI I A003 SYLLABE YI IP A004 SYLLABE YI IET A005 SYLLABE YI IEX A006 SYLLABE YI IE A007 SYLLABE YI IEP A008 SYLLABE YI AT A009 SYLLABE YI AX A00A SYLLABE YI A A00B SYLLABE YI AP A00C SYLLABE YI UOX A00D SYLLABE YI UO A00E SYLLABE YI UOP A00F SYLLABE YI OT A010 SYLLABE YI OX A011 SYLLABE YI O A012 SYLLABE YI OP A013 SYLLABE YI EX A014 SYLLABE YI E A015 SYLLABE YI WU A016 SYLLABE YI BIT A017 SYLLABE YI BIX A018 SYLLABE YI BI A019 SYLLABE YI BIP A01A SYLLABE YI BIET A01B SYLLABE YI BIEX A01C SYLLABE YI BIE A01D SYLLABE YI BIEP A01E SYLLABE YI BAT A01F SYLLABE YI BAX A020 SYLLABE YI BA A021 SYLLABE YI BAP A022 SYLLABE YI BUOX A023 SYLLABE YI BUO A024 SYLLABE YI BUOP A025 SYLLABE YI BOT A026 SYLLABE YI BOX A027 SYLLABE YI BO A028 SYLLABE YI BOP A029 SYLLABE YI BEX A02A SYLLABE YI BE A02B SYLLABE YI BEP A02C SYLLABE YI BUT A02D SYLLABE YI BUX A02E SYLLABE YI BU A02F SYLLABE YI BUP A030 SYLLABE YI BURX A031 SYLLABE YI BUR A032 SYLLABE YI BYT A033 SYLLABE YI BYX A034 SYLLABE YI BY A035 SYLLABE YI BYP A036 SYLLABE YI BYRX A037 SYLLABE YI BYR A038 SYLLABE YI PIT A039 SYLLABE YI PIX A03A SYLLABE YI PI A03B SYLLABE YI PIP A03C SYLLABE YI PIEX A03D SYLLABE YI PIE A03E SYLLABE YI PIEP A03F SYLLABE YI PAT A040 SYLLABE YI PAX A041 SYLLABE YI PA A042 SYLLABE YI PAP A043 SYLLABE YI PUOX A044 SYLLABE YI PUO A045 SYLLABE YI PUOP A046 SYLLABE YI POT A047 SYLLABE YI POX A048 SYLLABE YI PO A049 SYLLABE YI POP A04A SYLLABE YI PUT A04B SYLLABE YI PUX A04C SYLLABE YI PU A04D SYLLABE YI PUP A04E SYLLABE YI PURX A04F SYLLABE YI PUR A050 SYLLABE YI PYT A051 SYLLABE YI PYX A052 SYLLABE YI PY A053 SYLLABE YI PYP A054 SYLLABE YI PYRX A055 SYLLABE YI PYR A056 SYLLABE YI BBIT A057 SYLLABE YI BBIX A058 SYLLABE YI BBI A059 SYLLABE YI BBIP A05A SYLLABE YI BBIET A05B SYLLABE YI BBIEX A05C SYLLABE YI BBIE A05D SYLLABE YI BBIEP A05E SYLLABE YI BBAT A05F SYLLABE YI BBAX A060 SYLLABE YI BBA A061 SYLLABE YI BBAP A062 SYLLABE YI BBUOX A063 SYLLABE YI BBUO A064 SYLLABE YI BBUOP A065 SYLLABE YI BBOT A066 SYLLABE YI BBOX A067 SYLLABE YI BBO A068 SYLLABE YI BBOP A069 SYLLABE YI BBEX A06A SYLLABE YI BBE A06B SYLLABE YI BBEP A06C SYLLABE YI BBUT A06D SYLLABE YI BBUX A06E SYLLABE YI BBU A06F SYLLABE YI BBUP A070 SYLLABE YI BBURX A071 SYLLABE YI BBUR A072 SYLLABE YI BBYT A073 SYLLABE YI BBYX A074 SYLLABE YI BBY A075 SYLLABE YI BBYP A076 SYLLABE YI NBIT A077 SYLLABE YI NBIX A078 SYLLABE YI NBI A079 SYLLABE YI NBIP A07A SYLLABE YI NBIEX A07B SYLLABE YI NBIE A07C SYLLABE YI NBIEP A07D SYLLABE YI NBAT A07E SYLLABE YI NBAX A07F SYLLABE YI NBA A080 SYLLABE YI NBAP A081 SYLLABE YI NBOT A082 SYLLABE YI NBOX A083 SYLLABE YI NBO A084 SYLLABE YI NBOP A085 SYLLABE YI NBUT A086 SYLLABE YI NBUX A087 SYLLABE YI NBU A088 SYLLABE YI NBUP A089 SYLLABE YI NBURX A08A SYLLABE YI NBUR A08B SYLLABE YI NBYT A08C SYLLABE YI NBYX A08D SYLLABE YI NBY A08E SYLLABE YI NBYP A08F SYLLABE YI NBYRX A090 SYLLABE YI NBYR A091 SYLLABE YI HMIT A092 SYLLABE YI HMIX A093 SYLLABE YI HMI A094 SYLLABE YI HMIP A095 SYLLABE YI HMIEX A096 SYLLABE YI HMIE A097 SYLLABE YI HMIEP A098 SYLLABE YI HMAT A099 SYLLABE YI HMAX A09A SYLLABE YI HMA A09B SYLLABE YI HMAP A09C SYLLABE YI HMUOX A09D SYLLABE YI HMUO A09E SYLLABE YI HMUOP A09F SYLLABE YI HMOT A0A0 SYLLABE YI HMOX A0A1 SYLLABE YI HMO A0A2 SYLLABE YI HMOP A0A3 SYLLABE YI HMUT A0A4 SYLLABE YI HMUX A0A5 SYLLABE YI HMU A0A6 SYLLABE YI HMUP A0A7 SYLLABE YI HMURX A0A8 SYLLABE YI HMUR A0A9 SYLLABE YI HMYX A0AA SYLLABE YI HMY A0AB SYLLABE YI HMYP A0AC SYLLABE YI HMYRX A0AD SYLLABE YI HMYR A0AE SYLLABE YI MIT A0AF SYLLABE YI MIX A0B0 SYLLABE YI MI A0B1 SYLLABE YI MIP A0B2 SYLLABE YI MIEX A0B3 SYLLABE YI MIE A0B4 SYLLABE YI MIEP A0B5 SYLLABE YI MAT A0B6 SYLLABE YI MAX A0B7 SYLLABE YI MA A0B8 SYLLABE YI MAP A0B9 SYLLABE YI MUOT A0BA SYLLABE YI MUOX A0BB SYLLABE YI MUO A0BC SYLLABE YI MUOP A0BD SYLLABE YI MOT A0BE SYLLABE YI MOX A0BF SYLLABE YI MO A0C0 SYLLABE YI MOP A0C1 SYLLABE YI MEX A0C2 SYLLABE YI ME A0C3 SYLLABE YI MUT A0C4 SYLLABE YI MUX A0C5 SYLLABE YI MU A0C6 SYLLABE YI MUP A0C7 SYLLABE YI MURX A0C8 SYLLABE YI MUR A0C9 SYLLABE YI MYT A0CA SYLLABE YI MYX A0CB SYLLABE YI MY A0CC SYLLABE YI MYP A0CD SYLLABE YI FIT A0CE SYLLABE YI FIX A0CF SYLLABE YI FI A0D0 SYLLABE YI FIP A0D1 SYLLABE YI FAT A0D2 SYLLABE YI FAX A0D3 SYLLABE YI FA A0D4 SYLLABE YI FAP A0D5 SYLLABE YI FOX A0D6 SYLLABE YI FO A0D7 SYLLABE YI FOP A0D8 SYLLABE YI FUT A0D9 SYLLABE YI FUX A0DA SYLLABE YI FU A0DB SYLLABE YI FUP A0DC SYLLABE YI FURX A0DD SYLLABE YI FUR A0DE SYLLABE YI FYT A0DF SYLLABE YI FYX A0E0 SYLLABE YI FY A0E1 SYLLABE YI FYP A0E2 SYLLABE YI VIT A0E3 SYLLABE YI VIX A0E4 SYLLABE YI VI A0E5 SYLLABE YI VIP A0E6 SYLLABE YI VIET A0E7 SYLLABE YI VIEX A0E8 SYLLABE YI VIE A0E9 SYLLABE YI VIEP A0EA SYLLABE YI VAT A0EB SYLLABE YI VAX A0EC SYLLABE YI VA A0ED SYLLABE YI VAP A0EE SYLLABE YI VOT A0EF SYLLABE YI VOX A0F0 SYLLABE YI VO A0F1 SYLLABE YI VOP A0F2 SYLLABE YI VEX A0F3 SYLLABE YI VEP A0F4 SYLLABE YI VUT A0F5 SYLLABE YI VUX A0F6 SYLLABE YI VU A0F7 SYLLABE YI VUP A0F8 SYLLABE YI VURX A0F9 SYLLABE YI VUR A0FA SYLLABE YI VYT A0FB SYLLABE YI VYX A0FC SYLLABE YI VY A0FD SYLLABE YI VYP A0FE SYLLABE YI VYRX A0FF SYLLABE YI VYR A100 SYLLABE YI DIT A101 SYLLABE YI DIX A102 SYLLABE YI DI A103 SYLLABE YI DIP A104 SYLLABE YI DIEX A105 SYLLABE YI DIE A106 SYLLABE YI DIEP A107 SYLLABE YI DAT A108 SYLLABE YI DAX A109 SYLLABE YI DA A10A SYLLABE YI DAP A10B SYLLABE YI DUOX A10C SYLLABE YI DUO A10D SYLLABE YI DOT A10E SYLLABE YI DOX A10F SYLLABE YI DO A110 SYLLABE YI DOP A111 SYLLABE YI DEX A112 SYLLABE YI DE A113 SYLLABE YI DEP A114 SYLLABE YI DUT A115 SYLLABE YI DUX A116 SYLLABE YI DU A117 SYLLABE YI DUP A118 SYLLABE YI DURX A119 SYLLABE YI DUR A11A SYLLABE YI TIT A11B SYLLABE YI TIX A11C SYLLABE YI TI A11D SYLLABE YI TIP A11E SYLLABE YI TIEX A11F SYLLABE YI TIE A120 SYLLABE YI TIEP A121 SYLLABE YI TAT A122 SYLLABE YI TAX A123 SYLLABE YI TA A124 SYLLABE YI TAP A125 SYLLABE YI TUOT A126 SYLLABE YI TUOX A127 SYLLABE YI TUO A128 SYLLABE YI TUOP A129 SYLLABE YI TOT A12A SYLLABE YI TOX A12B SYLLABE YI TO A12C SYLLABE YI TOP A12D SYLLABE YI TEX A12E SYLLABE YI TE A12F SYLLABE YI TEP A130 SYLLABE YI TUT A131 SYLLABE YI TUX A132 SYLLABE YI TU A133 SYLLABE YI TUP A134 SYLLABE YI TURX A135 SYLLABE YI TUR A136 SYLLABE YI DDIT A137 SYLLABE YI DDIX A138 SYLLABE YI DDI A139 SYLLABE YI DDIP A13A SYLLABE YI DDIEX A13B SYLLABE YI DDIE A13C SYLLABE YI DDIEP A13D SYLLABE YI DDAT A13E SYLLABE YI DDAX A13F SYLLABE YI DDA A140 SYLLABE YI DDAP A141 SYLLABE YI DDUOX A142 SYLLABE YI DDUO A143 SYLLABE YI DDUOP A144 SYLLABE YI DDOT A145 SYLLABE YI DDOX A146 SYLLABE YI DDO A147 SYLLABE YI DDOP A148 SYLLABE YI DDEX A149 SYLLABE YI DDE A14A SYLLABE YI DDEP A14B SYLLABE YI DDUT A14C SYLLABE YI DDUX A14D SYLLABE YI DDU A14E SYLLABE YI DDUP A14F SYLLABE YI DDURX A150 SYLLABE YI DDUR A151 SYLLABE YI NDIT A152 SYLLABE YI NDIX A153 SYLLABE YI NDI A154 SYLLABE YI NDIP A155 SYLLABE YI NDIEX A156 SYLLABE YI NDIE A157 SYLLABE YI NDAT A158 SYLLABE YI NDAX A159 SYLLABE YI NDA A15A SYLLABE YI NDAP A15B SYLLABE YI NDOT A15C SYLLABE YI NDOX A15D SYLLABE YI NDO A15E SYLLABE YI NDOP A15F SYLLABE YI NDEX A160 SYLLABE YI NDE A161 SYLLABE YI NDEP A162 SYLLABE YI NDUT A163 SYLLABE YI NDUX A164 SYLLABE YI NDU A165 SYLLABE YI NDUP A166 SYLLABE YI NDURX A167 SYLLABE YI NDUR A168 SYLLABE YI HNIT A169 SYLLABE YI HNIX A16A SYLLABE YI HNI A16B SYLLABE YI HNIP A16C SYLLABE YI HNIET A16D SYLLABE YI HNIEX A16E SYLLABE YI HNIE A16F SYLLABE YI HNIEP A170 SYLLABE YI HNAT A171 SYLLABE YI HNAX A172 SYLLABE YI HNA A173 SYLLABE YI HNAP A174 SYLLABE YI HNUOX A175 SYLLABE YI HNUO A176 SYLLABE YI HNOT A177 SYLLABE YI HNOX A178 SYLLABE YI HNOP A179 SYLLABE YI HNEX A17A SYLLABE YI HNE A17B SYLLABE YI HNEP A17C SYLLABE YI HNUT A17D SYLLABE YI NIT A17E SYLLABE YI NIX A17F SYLLABE YI NI A180 SYLLABE YI NIP A181 SYLLABE YI NIEX A182 SYLLABE YI NIE A183 SYLLABE YI NIEP A184 SYLLABE YI NAX A185 SYLLABE YI NA A186 SYLLABE YI NAP A187 SYLLABE YI NUOX A188 SYLLABE YI NUO A189 SYLLABE YI NUOP A18A SYLLABE YI NOT A18B SYLLABE YI NOX A18C SYLLABE YI NO A18D SYLLABE YI NOP A18E SYLLABE YI NEX A18F SYLLABE YI NE A190 SYLLABE YI NEP A191 SYLLABE YI NUT A192 SYLLABE YI NUX A193 SYLLABE YI NU A194 SYLLABE YI NUP A195 SYLLABE YI NURX A196 SYLLABE YI NUR A197 SYLLABE YI HLIT A198 SYLLABE YI HLIX A199 SYLLABE YI HLI A19A SYLLABE YI HLIP A19B SYLLABE YI HLIEX A19C SYLLABE YI HLIE A19D SYLLABE YI HLIEP A19E SYLLABE YI HLAT A19F SYLLABE YI HLAX A1A0 SYLLABE YI HLA A1A1 SYLLABE YI HLAP A1A2 SYLLABE YI HLUOX A1A3 SYLLABE YI HLUO A1A4 SYLLABE YI HLUOP A1A5 SYLLABE YI HLOX A1A6 SYLLABE YI HLO A1A7 SYLLABE YI HLOP A1A8 SYLLABE YI HLEX A1A9 SYLLABE YI HLE A1AA SYLLABE YI HLEP A1AB SYLLABE YI HLUT A1AC SYLLABE YI HLUX A1AD SYLLABE YI HLU A1AE SYLLABE YI HLUP A1AF SYLLABE YI HLURX A1B0 SYLLABE YI HLUR A1B1 SYLLABE YI HLYT A1B2 SYLLABE YI HLYX A1B3 SYLLABE YI HLY A1B4 SYLLABE YI HLYP A1B5 SYLLABE YI HLYRX A1B6 SYLLABE YI HLYR A1B7 SYLLABE YI LIT A1B8 SYLLABE YI LIX A1B9 SYLLABE YI LI A1BA SYLLABE YI LIP A1BB SYLLABE YI LIET A1BC SYLLABE YI LIEX A1BD SYLLABE YI LIE A1BE SYLLABE YI LIEP A1BF SYLLABE YI LAT A1C0 SYLLABE YI LAX A1C1 SYLLABE YI LA A1C2 SYLLABE YI LAP A1C3 SYLLABE YI LUOT A1C4 SYLLABE YI LUOX A1C5 SYLLABE YI LUO A1C6 SYLLABE YI LUOP A1C7 SYLLABE YI LOT A1C8 SYLLABE YI LOX A1C9 SYLLABE YI LO A1CA SYLLABE YI LOP A1CB SYLLABE YI LEX A1CC SYLLABE YI LE A1CD SYLLABE YI LEP A1CE SYLLABE YI LUT A1CF SYLLABE YI LUX A1D0 SYLLABE YI LU A1D1 SYLLABE YI LUP A1D2 SYLLABE YI LURX A1D3 SYLLABE YI LUR A1D4 SYLLABE YI LYT A1D5 SYLLABE YI LYX A1D6 SYLLABE YI LY A1D7 SYLLABE YI LYP A1D8 SYLLABE YI LYRX A1D9 SYLLABE YI LYR A1DA SYLLABE YI GIT A1DB SYLLABE YI GIX A1DC SYLLABE YI GI A1DD SYLLABE YI GIP A1DE SYLLABE YI GIET A1DF SYLLABE YI GIEX A1E0 SYLLABE YI GIE A1E1 SYLLABE YI GIEP A1E2 SYLLABE YI GAT A1E3 SYLLABE YI GAX A1E4 SYLLABE YI GA A1E5 SYLLABE YI GAP A1E6 SYLLABE YI GUOT A1E7 SYLLABE YI GUOX A1E8 SYLLABE YI GUO A1E9 SYLLABE YI GUOP A1EA SYLLABE YI GOT A1EB SYLLABE YI GOX A1EC SYLLABE YI GO A1ED SYLLABE YI GOP A1EE SYLLABE YI GET A1EF SYLLABE YI GEX A1F0 SYLLABE YI GE A1F1 SYLLABE YI GEP A1F2 SYLLABE YI GUT A1F3 SYLLABE YI GUX A1F4 SYLLABE YI GU A1F5 SYLLABE YI GUP A1F6 SYLLABE YI GURX A1F7 SYLLABE YI GUR A1F8 SYLLABE YI KIT A1F9 SYLLABE YI KIX A1FA SYLLABE YI KI A1FB SYLLABE YI KIP A1FC SYLLABE YI KIEX A1FD SYLLABE YI KIE A1FE SYLLABE YI KIEP A1FF SYLLABE YI KAT A200 SYLLABE YI KAX A201 SYLLABE YI KA A202 SYLLABE YI KAP A203 SYLLABE YI KUOX A204 SYLLABE YI KUO A205 SYLLABE YI KUOP A206 SYLLABE YI KOT A207 SYLLABE YI KOX A208 SYLLABE YI KO A209 SYLLABE YI KOP A20A SYLLABE YI KET A20B SYLLABE YI KEX A20C SYLLABE YI KE A20D SYLLABE YI KEP A20E SYLLABE YI KUT A20F SYLLABE YI KUX A210 SYLLABE YI KU A211 SYLLABE YI KUP A212 SYLLABE YI KURX A213 SYLLABE YI KUR A214 SYLLABE YI GGIT A215 SYLLABE YI GGIX A216 SYLLABE YI GGI A217 SYLLABE YI GGIEX A218 SYLLABE YI GGIE A219 SYLLABE YI GGIEP A21A SYLLABE YI GGAT A21B SYLLABE YI GGAX A21C SYLLABE YI GGA A21D SYLLABE YI GGAP A21E SYLLABE YI GGUOT A21F SYLLABE YI GGUOX A220 SYLLABE YI GGUO A221 SYLLABE YI GGUOP A222 SYLLABE YI GGOT A223 SYLLABE YI GGOX A224 SYLLABE YI GGO A225 SYLLABE YI GGOP A226 SYLLABE YI GGET A227 SYLLABE YI GGEX A228 SYLLABE YI GGE A229 SYLLABE YI GGEP A22A SYLLABE YI GGUT A22B SYLLABE YI GGUX A22C SYLLABE YI GGU A22D SYLLABE YI GGUP A22E SYLLABE YI GGURX A22F SYLLABE YI GGUR A230 SYLLABE YI MGIEX A231 SYLLABE YI MGIE A232 SYLLABE YI MGAT A233 SYLLABE YI MGAX A234 SYLLABE YI MGA A235 SYLLABE YI MGAP A236 SYLLABE YI MGUOX A237 SYLLABE YI MGUO A238 SYLLABE YI MGUOP A239 SYLLABE YI MGOT A23A SYLLABE YI MGOX A23B SYLLABE YI MGO A23C SYLLABE YI MGOP A23D SYLLABE YI MGEX A23E SYLLABE YI MGE A23F SYLLABE YI MGEP A240 SYLLABE YI MGUT A241 SYLLABE YI MGUX A242 SYLLABE YI MGU A243 SYLLABE YI MGUP A244 SYLLABE YI MGURX A245 SYLLABE YI MGUR A246 SYLLABE YI HXIT A247 SYLLABE YI HXIX A248 SYLLABE YI HXI A249 SYLLABE YI HXIP A24A SYLLABE YI HXIET A24B SYLLABE YI HXIEX A24C SYLLABE YI HXIE A24D SYLLABE YI HXIEP A24E SYLLABE YI HXAT A24F SYLLABE YI HXAX A250 SYLLABE YI HXA A251 SYLLABE YI HXAP A252 SYLLABE YI HXUOT A253 SYLLABE YI HXUOX A254 SYLLABE YI HXUO A255 SYLLABE YI HXUOP A256 SYLLABE YI HXOT A257 SYLLABE YI HXOX A258 SYLLABE YI HXO A259 SYLLABE YI HXOP A25A SYLLABE YI HXEX A25B SYLLABE YI HXE A25C SYLLABE YI HXEP A25D SYLLABE YI NGIEX A25E SYLLABE YI NGIE A25F SYLLABE YI NGIEP A260 SYLLABE YI NGAT A261 SYLLABE YI NGAX A262 SYLLABE YI NGA A263 SYLLABE YI NGAP A264 SYLLABE YI NGUOT A265 SYLLABE YI NGUOX A266 SYLLABE YI NGUO A267 SYLLABE YI NGOT A268 SYLLABE YI NGOX A269 SYLLABE YI NGO A26A SYLLABE YI NGOP A26B SYLLABE YI NGEX A26C SYLLABE YI NGE A26D SYLLABE YI NGEP A26E SYLLABE YI HIT A26F SYLLABE YI HIEX A270 SYLLABE YI HIE A271 SYLLABE YI HAT A272 SYLLABE YI HAX A273 SYLLABE YI HA A274 SYLLABE YI HAP A275 SYLLABE YI HUOT A276 SYLLABE YI HUOX A277 SYLLABE YI HUO A278 SYLLABE YI HUOP A279 SYLLABE YI HOT A27A SYLLABE YI HOX A27B SYLLABE YI HO A27C SYLLABE YI HOP A27D SYLLABE YI HEX A27E SYLLABE YI HE A27F SYLLABE YI HEP A280 SYLLABE YI WAT A281 SYLLABE YI WAX A282 SYLLABE YI WA A283 SYLLABE YI WAP A284 SYLLABE YI WUOX A285 SYLLABE YI WUO A286 SYLLABE YI WUOP A287 SYLLABE YI WOX A288 SYLLABE YI WO A289 SYLLABE YI WOP A28A SYLLABE YI WEX A28B SYLLABE YI WE A28C SYLLABE YI WEP A28D SYLLABE YI ZIT A28E SYLLABE YI ZIX A28F SYLLABE YI ZI A290 SYLLABE YI ZIP A291 SYLLABE YI ZIEX A292 SYLLABE YI ZIE A293 SYLLABE YI ZIEP A294 SYLLABE YI ZAT A295 SYLLABE YI ZAX A296 SYLLABE YI ZA A297 SYLLABE YI ZAP A298 SYLLABE YI ZUOX A299 SYLLABE YI ZUO A29A SYLLABE YI ZUOP A29B SYLLABE YI ZOT A29C SYLLABE YI ZOX A29D SYLLABE YI ZO A29E SYLLABE YI ZOP A29F SYLLABE YI ZEX A2A0 SYLLABE YI ZE A2A1 SYLLABE YI ZEP A2A2 SYLLABE YI ZUT A2A3 SYLLABE YI ZUX A2A4 SYLLABE YI ZU A2A5 SYLLABE YI ZUP A2A6 SYLLABE YI ZURX A2A7 SYLLABE YI ZUR A2A8 SYLLABE YI ZYT A2A9 SYLLABE YI ZYX A2AA SYLLABE YI ZY A2AB SYLLABE YI ZYP A2AC SYLLABE YI ZYRX A2AD SYLLABE YI ZYR A2AE SYLLABE YI CIT A2AF SYLLABE YI CIX A2B0 SYLLABE YI CI A2B1 SYLLABE YI CIP A2B2 SYLLABE YI CIET A2B3 SYLLABE YI CIEX A2B4 SYLLABE YI CIE A2B5 SYLLABE YI CIEP A2B6 SYLLABE YI CAT A2B7 SYLLABE YI CAX A2B8 SYLLABE YI CA A2B9 SYLLABE YI CAP A2BA SYLLABE YI CUOX A2BB SYLLABE YI CUO A2BC SYLLABE YI CUOP A2BD SYLLABE YI COT A2BE SYLLABE YI COX A2BF SYLLABE YI CO A2C0 SYLLABE YI COP A2C1 SYLLABE YI CEX A2C2 SYLLABE YI CE A2C3 SYLLABE YI CEP A2C4 SYLLABE YI CUT A2C5 SYLLABE YI CUX A2C6 SYLLABE YI CU A2C7 SYLLABE YI CUP A2C8 SYLLABE YI CURX A2C9 SYLLABE YI CUR A2CA SYLLABE YI CYT A2CB SYLLABE YI CYX A2CC SYLLABE YI CY A2CD SYLLABE YI CYP A2CE SYLLABE YI CYRX A2CF SYLLABE YI CYR A2D0 SYLLABE YI ZZIT A2D1 SYLLABE YI ZZIX A2D2 SYLLABE YI ZZI A2D3 SYLLABE YI ZZIP A2D4 SYLLABE YI ZZIET A2D5 SYLLABE YI ZZIEX A2D6 SYLLABE YI ZZIE A2D7 SYLLABE YI ZZIEP A2D8 SYLLABE YI ZZAT A2D9 SYLLABE YI ZZAX A2DA SYLLABE YI ZZA A2DB SYLLABE YI ZZAP A2DC SYLLABE YI ZZOX A2DD SYLLABE YI ZZO A2DE SYLLABE YI ZZOP A2DF SYLLABE YI ZZEX A2E0 SYLLABE YI ZZE A2E1 SYLLABE YI ZZEP A2E2 SYLLABE YI ZZUX A2E3 SYLLABE YI ZZU A2E4 SYLLABE YI ZZUP A2E5 SYLLABE YI ZZURX A2E6 SYLLABE YI ZZUR A2E7 SYLLABE YI ZZYT A2E8 SYLLABE YI ZZYX A2E9 SYLLABE YI ZZY A2EA SYLLABE YI ZZYP A2EB SYLLABE YI ZZYRX A2EC SYLLABE YI ZZYR A2ED SYLLABE YI NZIT A2EE SYLLABE YI NZIX A2EF SYLLABE YI NZI A2F0 SYLLABE YI NZIP A2F1 SYLLABE YI NZIEX A2F2 SYLLABE YI NZIE A2F3 SYLLABE YI NZIEP A2F4 SYLLABE YI NZAT A2F5 SYLLABE YI NZAX A2F6 SYLLABE YI NZA A2F7 SYLLABE YI NZAP A2F8 SYLLABE YI NZUOX A2F9 SYLLABE YI NZUO A2FA SYLLABE YI NZOX A2FB SYLLABE YI NZOP A2FC SYLLABE YI NZEX A2FD SYLLABE YI NZE A2FE SYLLABE YI NZUX A2FF SYLLABE YI NZU A300 SYLLABE YI NZUP A301 SYLLABE YI NZURX A302 SYLLABE YI NZUR A303 SYLLABE YI NZYT A304 SYLLABE YI NZYX A305 SYLLABE YI NZY A306 SYLLABE YI NZYP A307 SYLLABE YI NZYRX A308 SYLLABE YI NZYR A309 SYLLABE YI SIT A30A SYLLABE YI SIX A30B SYLLABE YI SI A30C SYLLABE YI SIP A30D SYLLABE YI SIEX A30E SYLLABE YI SIE A30F SYLLABE YI SIEP A310 SYLLABE YI SAT A311 SYLLABE YI SAX A312 SYLLABE YI SA A313 SYLLABE YI SAP A314 SYLLABE YI SUOX A315 SYLLABE YI SUO A316 SYLLABE YI SUOP A317 SYLLABE YI SOT A318 SYLLABE YI SOX A319 SYLLABE YI SO A31A SYLLABE YI SOP A31B SYLLABE YI SEX A31C SYLLABE YI SE A31D SYLLABE YI SEP A31E SYLLABE YI SUT A31F SYLLABE YI SUX A320 SYLLABE YI SU A321 SYLLABE YI SUP A322 SYLLABE YI SURX A323 SYLLABE YI SUR A324 SYLLABE YI SYT A325 SYLLABE YI SYX A326 SYLLABE YI SY A327 SYLLABE YI SYP A328 SYLLABE YI SYRX A329 SYLLABE YI SYR A32A SYLLABE YI SSIT A32B SYLLABE YI SSIX A32C SYLLABE YI SSI A32D SYLLABE YI SSIP A32E SYLLABE YI SSIEX A32F SYLLABE YI SSIE A330 SYLLABE YI SSIEP A331 SYLLABE YI SSAT A332 SYLLABE YI SSAX A333 SYLLABE YI SSA A334 SYLLABE YI SSAP A335 SYLLABE YI SSOT A336 SYLLABE YI SSOX A337 SYLLABE YI SSO A338 SYLLABE YI SSOP A339 SYLLABE YI SSEX A33A SYLLABE YI SSE A33B SYLLABE YI SSEP A33C SYLLABE YI SSUT A33D SYLLABE YI SSUX A33E SYLLABE YI SSU A33F SYLLABE YI SSUP A340 SYLLABE YI SSYT A341 SYLLABE YI SSYX A342 SYLLABE YI SSY A343 SYLLABE YI SSYP A344 SYLLABE YI SSYRX A345 SYLLABE YI SSYR A346 SYLLABE YI ZHAT A347 SYLLABE YI ZHAX A348 SYLLABE YI ZHA A349 SYLLABE YI ZHAP A34A SYLLABE YI ZHUOX A34B SYLLABE YI ZHUO A34C SYLLABE YI ZHUOP A34D SYLLABE YI ZHOT A34E SYLLABE YI ZHOX A34F SYLLABE YI ZHO A350 SYLLABE YI ZHOP A351 SYLLABE YI ZHET A352 SYLLABE YI ZHEX A353 SYLLABE YI ZHE A354 SYLLABE YI ZHEP A355 SYLLABE YI ZHUT A356 SYLLABE YI ZHUX A357 SYLLABE YI ZHU A358 SYLLABE YI ZHUP A359 SYLLABE YI ZHURX A35A SYLLABE YI ZHUR A35B SYLLABE YI ZHYT A35C SYLLABE YI ZHYX A35D SYLLABE YI ZHY A35E SYLLABE YI ZHYP A35F SYLLABE YI ZHYRX A360 SYLLABE YI ZHYR A361 SYLLABE YI CHAT A362 SYLLABE YI CHAX A363 SYLLABE YI CHA A364 SYLLABE YI CHAP A365 SYLLABE YI CHUOT A366 SYLLABE YI CHUOX A367 SYLLABE YI CHUO A368 SYLLABE YI CHUOP A369 SYLLABE YI CHOT A36A SYLLABE YI CHOX A36B SYLLABE YI CHO A36C SYLLABE YI CHOP A36D SYLLABE YI CHET A36E SYLLABE YI CHEX A36F SYLLABE YI CHE A370 SYLLABE YI CHEP A371 SYLLABE YI CHUX A372 SYLLABE YI CHU A373 SYLLABE YI CHUP A374 SYLLABE YI CHURX A375 SYLLABE YI CHUR A376 SYLLABE YI CHYT A377 SYLLABE YI CHYX A378 SYLLABE YI CHY A379 SYLLABE YI CHYP A37A SYLLABE YI CHYRX A37B SYLLABE YI CHYR A37C SYLLABE YI RRAX A37D SYLLABE YI RRA A37E SYLLABE YI RRUOX A37F SYLLABE YI RRUO A380 SYLLABE YI RROT A381 SYLLABE YI RROX A382 SYLLABE YI RRO A383 SYLLABE YI RROP A384 SYLLABE YI RRET A385 SYLLABE YI RREX A386 SYLLABE YI RRE A387 SYLLABE YI RREP A388 SYLLABE YI RRUT A389 SYLLABE YI RRUX A38A SYLLABE YI RRU A38B SYLLABE YI RRUP A38C SYLLABE YI RRURX A38D SYLLABE YI RRUR A38E SYLLABE YI RRYT A38F SYLLABE YI RRYX A390 SYLLABE YI RRY A391 SYLLABE YI RRYP A392 SYLLABE YI RRYRX A393 SYLLABE YI RRYR A394 SYLLABE YI NRAT A395 SYLLABE YI NRAX A396 SYLLABE YI NRA A397 SYLLABE YI NRAP A398 SYLLABE YI NROX A399 SYLLABE YI NRO A39A SYLLABE YI NROP A39B SYLLABE YI NRET A39C SYLLABE YI NREX A39D SYLLABE YI NRE A39E SYLLABE YI NREP A39F SYLLABE YI NRUT A3A0 SYLLABE YI NRUX A3A1 SYLLABE YI NRU A3A2 SYLLABE YI NRUP A3A3 SYLLABE YI NRURX A3A4 SYLLABE YI NRUR A3A5 SYLLABE YI NRYT A3A6 SYLLABE YI NRYX A3A7 SYLLABE YI NRY A3A8 SYLLABE YI NRYP A3A9 SYLLABE YI NRYRX A3AA SYLLABE YI NRYR A3AB SYLLABE YI SHAT A3AC SYLLABE YI SHAX A3AD SYLLABE YI SHA A3AE SYLLABE YI SHAP A3AF SYLLABE YI SHUOX A3B0 SYLLABE YI SHUO A3B1 SYLLABE YI SHUOP A3B2 SYLLABE YI SHOT A3B3 SYLLABE YI SHOX A3B4 SYLLABE YI SHO A3B5 SYLLABE YI SHOP A3B6 SYLLABE YI SHET A3B7 SYLLABE YI SHEX A3B8 SYLLABE YI SHE A3B9 SYLLABE YI SHEP A3BA SYLLABE YI SHUT A3BB SYLLABE YI SHUX A3BC SYLLABE YI SHU A3BD SYLLABE YI SHUP A3BE SYLLABE YI SHURX A3BF SYLLABE YI SHUR A3C0 SYLLABE YI SHYT A3C1 SYLLABE YI SHYX A3C2 SYLLABE YI SHY A3C3 SYLLABE YI SHYP A3C4 SYLLABE YI SHYRX A3C5 SYLLABE YI SHYR A3C6 SYLLABE YI RAT A3C7 SYLLABE YI RAX A3C8 SYLLABE YI RA A3C9 SYLLABE YI RAP A3CA SYLLABE YI RUOX A3CB SYLLABE YI RUO A3CC SYLLABE YI RUOP A3CD SYLLABE YI ROT A3CE SYLLABE YI ROX A3CF SYLLABE YI RO A3D0 SYLLABE YI ROP A3D1 SYLLABE YI REX A3D2 SYLLABE YI RE A3D3 SYLLABE YI REP A3D4 SYLLABE YI RUT A3D5 SYLLABE YI RUX A3D6 SYLLABE YI RU A3D7 SYLLABE YI RUP A3D8 SYLLABE YI RURX A3D9 SYLLABE YI RUR A3DA SYLLABE YI RYT A3DB SYLLABE YI RYX A3DC SYLLABE YI RY A3DD SYLLABE YI RYP A3DE SYLLABE YI RYRX A3DF SYLLABE YI RYR A3E0 SYLLABE YI JIT A3E1 SYLLABE YI JIX A3E2 SYLLABE YI JI A3E3 SYLLABE YI JIP A3E4 SYLLABE YI JIET A3E5 SYLLABE YI JIEX A3E6 SYLLABE YI JIE A3E7 SYLLABE YI JIEP A3E8 SYLLABE YI JUOT A3E9 SYLLABE YI JUOX A3EA SYLLABE YI JUO A3EB SYLLABE YI JUOP A3EC SYLLABE YI JOT A3ED SYLLABE YI JOX A3EE SYLLABE YI JO A3EF SYLLABE YI JOP A3F0 SYLLABE YI JUT A3F1 SYLLABE YI JUX A3F2 SYLLABE YI JU A3F3 SYLLABE YI JUP A3F4 SYLLABE YI JURX A3F5 SYLLABE YI JUR A3F6 SYLLABE YI JYT A3F7 SYLLABE YI JYX A3F8 SYLLABE YI JY A3F9 SYLLABE YI JYP A3FA SYLLABE YI JYRX A3FB SYLLABE YI JYR A3FC SYLLABE YI QIT A3FD SYLLABE YI QIX A3FE SYLLABE YI QI A3FF SYLLABE YI QIP A400 SYLLABE YI QIET A401 SYLLABE YI QIEX A402 SYLLABE YI QIE A403 SYLLABE YI QIEP A404 SYLLABE YI QUOT A405 SYLLABE YI QUOX A406 SYLLABE YI QUO A407 SYLLABE YI QUOP A408 SYLLABE YI QOT A409 SYLLABE YI QOX A40A SYLLABE YI QO A40B SYLLABE YI QOP A40C SYLLABE YI QUT A40D SYLLABE YI QUX A40E SYLLABE YI QU A40F SYLLABE YI QUP A410 SYLLABE YI QURX A411 SYLLABE YI QUR A412 SYLLABE YI QYT A413 SYLLABE YI QYX A414 SYLLABE YI QY A415 SYLLABE YI QYP A416 SYLLABE YI QYRX A417 SYLLABE YI QYR A418 SYLLABE YI JJIT A419 SYLLABE YI JJIX A41A SYLLABE YI JJI A41B SYLLABE YI JJIP A41C SYLLABE YI JJIET A41D SYLLABE YI JJIEX A41E SYLLABE YI JJIE A41F SYLLABE YI JJIEP A420 SYLLABE YI JJUOX A421 SYLLABE YI JJUO A422 SYLLABE YI JJUOP A423 SYLLABE YI JJOT A424 SYLLABE YI JJOX A425 SYLLABE YI JJO A426 SYLLABE YI JJOP A427 SYLLABE YI JJUT A428 SYLLABE YI JJUX A429 SYLLABE YI JJU A42A SYLLABE YI JJUP A42B SYLLABE YI JJURX A42C SYLLABE YI JJUR A42D SYLLABE YI JJYT A42E SYLLABE YI JJYX A42F SYLLABE YI JJY A430 SYLLABE YI JJYP A431 SYLLABE YI NJIT A432 SYLLABE YI NJIX A433 SYLLABE YI NJI A434 SYLLABE YI NJIP A435 SYLLABE YI NJIET A436 SYLLABE YI NJIEX A437 SYLLABE YI NJIE A438 SYLLABE YI NJIEP A439 SYLLABE YI NJUOX A43A SYLLABE YI NJUO A43B SYLLABE YI NJOT A43C SYLLABE YI NJOX A43D SYLLABE YI NJO A43E SYLLABE YI NJOP A43F SYLLABE YI NJUX A440 SYLLABE YI NJU A441 SYLLABE YI NJUP A442 SYLLABE YI NJURX A443 SYLLABE YI NJUR A444 SYLLABE YI NJYT A445 SYLLABE YI NJYX A446 SYLLABE YI NJY A447 SYLLABE YI NJYP A448 SYLLABE YI NJYRX A449 SYLLABE YI NJYR A44A SYLLABE YI NYIT A44B SYLLABE YI NYIX A44C SYLLABE YI NYI A44D SYLLABE YI NYIP A44E SYLLABE YI NYIET A44F SYLLABE YI NYIEX A450 SYLLABE YI NYIE A451 SYLLABE YI NYIEP A452 SYLLABE YI NYUOX A453 SYLLABE YI NYUO A454 SYLLABE YI NYUOP A455 SYLLABE YI NYOT A456 SYLLABE YI NYOX A457 SYLLABE YI NYO A458 SYLLABE YI NYOP A459 SYLLABE YI NYUT A45A SYLLABE YI NYUX A45B SYLLABE YI NYU A45C SYLLABE YI NYUP A45D SYLLABE YI XIT A45E SYLLABE YI XIX A45F SYLLABE YI XI A460 SYLLABE YI XIP A461 SYLLABE YI XIET A462 SYLLABE YI XIEX A463 SYLLABE YI XIE A464 SYLLABE YI XIEP A465 SYLLABE YI XUOX A466 SYLLABE YI XUO A467 SYLLABE YI XOT A468 SYLLABE YI XOX A469 SYLLABE YI XO A46A SYLLABE YI XOP A46B SYLLABE YI XYT A46C SYLLABE YI XYX A46D SYLLABE YI XY A46E SYLLABE YI XYP A46F SYLLABE YI XYRX A470 SYLLABE YI XYR A471 SYLLABE YI YIT A472 SYLLABE YI YIX A473 SYLLABE YI YI A474 SYLLABE YI YIP A475 SYLLABE YI YIET A476 SYLLABE YI YIEX A477 SYLLABE YI YIE A478 SYLLABE YI YIEP A479 SYLLABE YI YUOT A47A SYLLABE YI YUOX A47B SYLLABE YI YUO A47C SYLLABE YI YUOP A47D SYLLABE YI YOT A47E SYLLABE YI YOX A47F SYLLABE YI YO A480 SYLLABE YI YOP A481 SYLLABE YI YUT A482 SYLLABE YI YUX A483 SYLLABE YI YU A484 SYLLABE YI YUP A485 SYLLABE YI YURX A486 SYLLABE YI YUR A487 SYLLABE YI YYT A488 SYLLABE YI YYX A489 SYLLABE YI YY A48A SYLLABE YI YYP A48B SYLLABE YI YYRX A48C SYLLABE YI YYR @@ A490 Clés yi A4CF A490 CLÉ YI QOT A491 CLÉ YI LI A492 CLÉ YI KIT A493 CLÉ YI NYIP A494 CLÉ YI CYP A495 CLÉ YI SSI A496 CLÉ YI GGOP A497 CLÉ YI GEP A498 CLÉ YI MI A499 CLÉ YI HXIT A49A CLÉ YI LYR A49B CLÉ YI BBUT A49C CLÉ YI MOP A49D CLÉ YI YO A49E CLÉ YI PUT A49F CLÉ YI HXUO A4A0 CLÉ YI HXOT A4A1 CLÉ YI GA A4A2 CLÉ YI ZZIP A4A3 CLÉ YI CYT A4A4 CLÉ YI DDUR A4A5 CLÉ YI BUR A4A6 CLÉ YI GGUO A4A7 CLÉ YI NYOP A4A8 CLÉ YI TU A4A9 CLÉ YI OP A4AA CLÉ YI JJUT A4AB CLÉ YI ZOT A4AC CLÉ YI PYT A4AD CLÉ YI HMO A4AE CLÉ YI YIT A4AF CLÉ YI VUR A4B0 CLÉ YI SHY A4B1 CLÉ YI VEP A4B2 CLÉ YI ZA A4B3 CLÉ YI JO A4B4 CLÉ YI NZUR A4B5 CLÉ YI JJY A4B6 CLÉ YI GOT A4B7 CLÉ YI BE A4B8 CLÉ YI WO A4B9 CLÉ YI DU A4BA CLÉ YI SHUR A4BB CLÉ YI LIE A4BC CLÉ YI CY A4BD CLÉ YI CUOP A4BE CLÉ YI CIP A4BF CLÉ YI HXOP A4C0 CLÉ YI SHAT A4C1 CLÉ YI ZUR A4C2 CLÉ YI SHOP A4C3 CLÉ YI CHE A4C4 CLÉ YI ZZIET A4C5 CLÉ YI NBIE A4C6 CLÉ YI KE @@ AC00 Hangûl D7A3 @@ D800 Demi-zone haute DB7F @@ DB80 Partie à usage privé de la demi-zone haute DBFF @@ DC00 Demi-zone basse DFFF @@ E000 Zone à usage privé F8FF @@ F900 Idéogrammes de compatibilité CJC FAFF F900 IDÉOGRAMME DE COMPATIBILITÉ CJC-F900 F901 IDÉOGRAMME DE COMPATIBILITÉ CJC-F901 F902 IDÉOGRAMME DE COMPATIBILITÉ CJC-F902 F903 IDÉOGRAMME DE COMPATIBILITÉ CJC-F903 F904 IDÉOGRAMME DE COMPATIBILITÉ CJC-F904 F905 IDÉOGRAMME DE COMPATIBILITÉ CJC-F905 F906 IDÉOGRAMME DE COMPATIBILITÉ CJC-F906 F907 IDÉOGRAMME DE COMPATIBILITÉ CJC-F907 F908 IDÉOGRAMME DE COMPATIBILITÉ CJC-F908 F909 IDÉOGRAMME DE COMPATIBILITÉ CJC-F909 F90A IDÉOGRAMME DE COMPATIBILITÉ CJC-F90A F90B IDÉOGRAMME DE COMPATIBILITÉ CJC-F90B F90C IDÉOGRAMME DE COMPATIBILITÉ CJC-F90C F90D IDÉOGRAMME DE COMPATIBILITÉ CJC-F90D F90E IDÉOGRAMME DE COMPATIBILITÉ CJC-F90E F90F IDÉOGRAMME DE COMPATIBILITÉ CJC-F90F F910 IDÉOGRAMME DE COMPATIBILITÉ CJC-F910 F911 IDÉOGRAMME DE COMPATIBILITÉ CJC-F911 F912 IDÉOGRAMME DE COMPATIBILITÉ CJC-F912 F913 IDÉOGRAMME DE COMPATIBILITÉ CJC-F913 F914 IDÉOGRAMME DE COMPATIBILITÉ CJC-F914 F915 IDÉOGRAMME DE COMPATIBILITÉ CJC-F915 F916 IDÉOGRAMME DE COMPATIBILITÉ CJC-F916 F917 IDÉOGRAMME DE COMPATIBILITÉ CJC-F917 F918 IDÉOGRAMME DE COMPATIBILITÉ CJC-F918 F919 IDÉOGRAMME DE COMPATIBILITÉ CJC-F919 F91A IDÉOGRAMME DE COMPATIBILITÉ CJC-F91A F91B IDÉOGRAMME DE COMPATIBILITÉ CJC-F91B F91C IDÉOGRAMME DE COMPATIBILITÉ CJC-F91C F91D IDÉOGRAMME DE COMPATIBILITÉ CJC-F91D F91E IDÉOGRAMME DE COMPATIBILITÉ CJC-F91E F91F IDÉOGRAMME DE COMPATIBILITÉ CJC-F91F F920 IDÉOGRAMME DE COMPATIBILITÉ CJC-F920 F921 IDÉOGRAMME DE COMPATIBILITÉ CJC-F921 F922 IDÉOGRAMME DE COMPATIBILITÉ CJC-F922 F923 IDÉOGRAMME DE COMPATIBILITÉ CJC-F923 F924 IDÉOGRAMME DE COMPATIBILITÉ CJC-F924 F925 IDÉOGRAMME DE COMPATIBILITÉ CJC-F925 F926 IDÉOGRAMME DE COMPATIBILITÉ CJC-F926 F927 IDÉOGRAMME DE COMPATIBILITÉ CJC-F927 F928 IDÉOGRAMME DE COMPATIBILITÉ CJC-F928 F929 IDÉOGRAMME DE COMPATIBILITÉ CJC-F929 F92A IDÉOGRAMME DE COMPATIBILITÉ CJC-F92A F92B IDÉOGRAMME DE COMPATIBILITÉ CJC-F92B F92C IDÉOGRAMME DE COMPATIBILITÉ CJC-F92C F92D IDÉOGRAMME DE COMPATIBILITÉ CJC-F92D F92E IDÉOGRAMME DE COMPATIBILITÉ CJC-F92E F92F IDÉOGRAMME DE COMPATIBILITÉ CJC-F92F F930 IDÉOGRAMME DE COMPATIBILITÉ CJC-F930 F931 IDÉOGRAMME DE COMPATIBILITÉ CJC-F931 F932 IDÉOGRAMME DE COMPATIBILITÉ CJC-F932 F933 IDÉOGRAMME DE COMPATIBILITÉ CJC-F933 F934 IDÉOGRAMME DE COMPATIBILITÉ CJC-F934 F935 IDÉOGRAMME DE COMPATIBILITÉ CJC-F935 F936 IDÉOGRAMME DE COMPATIBILITÉ CJC-F936 F937 IDÉOGRAMME DE COMPATIBILITÉ CJC-F937 F938 IDÉOGRAMME DE COMPATIBILITÉ CJC-F938 F939 IDÉOGRAMME DE COMPATIBILITÉ CJC-F939 F93A IDÉOGRAMME DE COMPATIBILITÉ CJC-F93A F93B IDÉOGRAMME DE COMPATIBILITÉ CJC-F93B F93C IDÉOGRAMME DE COMPATIBILITÉ CJC-F93C F93D IDÉOGRAMME DE COMPATIBILITÉ CJC-F93D F93E IDÉOGRAMME DE COMPATIBILITÉ CJC-F93E F93F IDÉOGRAMME DE COMPATIBILITÉ CJC-F93F F940 IDÉOGRAMME DE COMPATIBILITÉ CJC-F940 F941 IDÉOGRAMME DE COMPATIBILITÉ CJC-F941 F942 IDÉOGRAMME DE COMPATIBILITÉ CJC-F942 F943 IDÉOGRAMME DE COMPATIBILITÉ CJC-F943 F944 IDÉOGRAMME DE COMPATIBILITÉ CJC-F944 F945 IDÉOGRAMME DE COMPATIBILITÉ CJC-F945 F946 IDÉOGRAMME DE COMPATIBILITÉ CJC-F946 F947 IDÉOGRAMME DE COMPATIBILITÉ CJC-F947 F948 IDÉOGRAMME DE COMPATIBILITÉ CJC-F948 F949 IDÉOGRAMME DE COMPATIBILITÉ CJC-F949 F94A IDÉOGRAMME DE COMPATIBILITÉ CJC-F94A F94B IDÉOGRAMME DE COMPATIBILITÉ CJC-F94B F94C IDÉOGRAMME DE COMPATIBILITÉ CJC-F94C F94D IDÉOGRAMME DE COMPATIBILITÉ CJC-F94D F94E IDÉOGRAMME DE COMPATIBILITÉ CJC-F94E F94F IDÉOGRAMME DE COMPATIBILITÉ CJC-F94F F950 IDÉOGRAMME DE COMPATIBILITÉ CJC-F950 F951 IDÉOGRAMME DE COMPATIBILITÉ CJC-F951 F952 IDÉOGRAMME DE COMPATIBILITÉ CJC-F952 F953 IDÉOGRAMME DE COMPATIBILITÉ CJC-F953 F954 IDÉOGRAMME DE COMPATIBILITÉ CJC-F954 F955 IDÉOGRAMME DE COMPATIBILITÉ CJC-F955 F956 IDÉOGRAMME DE COMPATIBILITÉ CJC-F956 F957 IDÉOGRAMME DE COMPATIBILITÉ CJC-F957 F958 IDÉOGRAMME DE COMPATIBILITÉ CJC-F958 F959 IDÉOGRAMME DE COMPATIBILITÉ CJC-F959 F95A IDÉOGRAMME DE COMPATIBILITÉ CJC-F95A F95B IDÉOGRAMME DE COMPATIBILITÉ CJC-F95B F95C IDÉOGRAMME DE COMPATIBILITÉ CJC-F95C F95D IDÉOGRAMME DE COMPATIBILITÉ CJC-F95D F95E IDÉOGRAMME DE COMPATIBILITÉ CJC-F95E F95F IDÉOGRAMME DE COMPATIBILITÉ CJC-F95F F960 IDÉOGRAMME DE COMPATIBILITÉ CJC-F960 F961 IDÉOGRAMME DE COMPATIBILITÉ CJC-F961 F962 IDÉOGRAMME DE COMPATIBILITÉ CJC-F962 F963 IDÉOGRAMME DE COMPATIBILITÉ CJC-F963 F964 IDÉOGRAMME DE COMPATIBILITÉ CJC-F964 F965 IDÉOGRAMME DE COMPATIBILITÉ CJC-F965 F966 IDÉOGRAMME DE COMPATIBILITÉ CJC-F966 F967 IDÉOGRAMME DE COMPATIBILITÉ CJC-F967 F968 IDÉOGRAMME DE COMPATIBILITÉ CJC-F968 F969 IDÉOGRAMME DE COMPATIBILITÉ CJC-F969 F96A IDÉOGRAMME DE COMPATIBILITÉ CJC-F96A F96B IDÉOGRAMME DE COMPATIBILITÉ CJC-F96B F96C IDÉOGRAMME DE COMPATIBILITÉ CJC-F96C F96D IDÉOGRAMME DE COMPATIBILITÉ CJC-F96D F96E IDÉOGRAMME DE COMPATIBILITÉ CJC-F96E F96F IDÉOGRAMME DE COMPATIBILITÉ CJC-F96F F970 IDÉOGRAMME DE COMPATIBILITÉ CJC-F970 F971 IDÉOGRAMME DE COMPATIBILITÉ CJC-F971 F972 IDÉOGRAMME DE COMPATIBILITÉ CJC-F972 F973 IDÉOGRAMME DE COMPATIBILITÉ CJC-F973 F974 IDÉOGRAMME DE COMPATIBILITÉ CJC-F974 F975 IDÉOGRAMME DE COMPATIBILITÉ CJC-F975 F976 IDÉOGRAMME DE COMPATIBILITÉ CJC-F976 F977 IDÉOGRAMME DE COMPATIBILITÉ CJC-F977 F978 IDÉOGRAMME DE COMPATIBILITÉ CJC-F978 F979 IDÉOGRAMME DE COMPATIBILITÉ CJC-F979 F97A IDÉOGRAMME DE COMPATIBILITÉ CJC-F97A F97B IDÉOGRAMME DE COMPATIBILITÉ CJC-F97B F97C IDÉOGRAMME DE COMPATIBILITÉ CJC-F97C F97D IDÉOGRAMME DE COMPATIBILITÉ CJC-F97D F97E IDÉOGRAMME DE COMPATIBILITÉ CJC-F97E F97F IDÉOGRAMME DE COMPATIBILITÉ CJC-F97F F980 IDÉOGRAMME DE COMPATIBILITÉ CJC-F980 F981 IDÉOGRAMME DE COMPATIBILITÉ CJC-F981 F982 IDÉOGRAMME DE COMPATIBILITÉ CJC-F982 F983 IDÉOGRAMME DE COMPATIBILITÉ CJC-F983 F984 IDÉOGRAMME DE COMPATIBILITÉ CJC-F984 F985 IDÉOGRAMME DE COMPATIBILITÉ CJC-F985 F986 IDÉOGRAMME DE COMPATIBILITÉ CJC-F986 F987 IDÉOGRAMME DE COMPATIBILITÉ CJC-F987 F988 IDÉOGRAMME DE COMPATIBILITÉ CJC-F988 F989 IDÉOGRAMME DE COMPATIBILITÉ CJC-F989 F98A IDÉOGRAMME DE COMPATIBILITÉ CJC-F98A F98B IDÉOGRAMME DE COMPATIBILITÉ CJC-F98B F98C IDÉOGRAMME DE COMPATIBILITÉ CJC-F98C F98D IDÉOGRAMME DE COMPATIBILITÉ CJC-F98D F98E IDÉOGRAMME DE COMPATIBILITÉ CJC-F98E F98F IDÉOGRAMME DE COMPATIBILITÉ CJC-F98F F990 IDÉOGRAMME DE COMPATIBILITÉ CJC-F990 F991 IDÉOGRAMME DE COMPATIBILITÉ CJC-F991 F992 IDÉOGRAMME DE COMPATIBILITÉ CJC-F992 F993 IDÉOGRAMME DE COMPATIBILITÉ CJC-F993 F994 IDÉOGRAMME DE COMPATIBILITÉ CJC-F994 F995 IDÉOGRAMME DE COMPATIBILITÉ CJC-F995 F996 IDÉOGRAMME DE COMPATIBILITÉ CJC-F996 F997 IDÉOGRAMME DE COMPATIBILITÉ CJC-F997 F998 IDÉOGRAMME DE COMPATIBILITÉ CJC-F998 F999 IDÉOGRAMME DE COMPATIBILITÉ CJC-F999 F99A IDÉOGRAMME DE COMPATIBILITÉ CJC-F99A F99B IDÉOGRAMME DE COMPATIBILITÉ CJC-F99B F99C IDÉOGRAMME DE COMPATIBILITÉ CJC-F99C F99D IDÉOGRAMME DE COMPATIBILITÉ CJC-F99D F99E IDÉOGRAMME DE COMPATIBILITÉ CJC-F99E F99F IDÉOGRAMME DE COMPATIBILITÉ CJC-F99F F9A0 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9A0 F9A1 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9A1 F9A2 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9A2 F9A3 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9A3 F9A4 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9A4 F9A5 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9A5 F9A6 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9A6 F9A7 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9A7 F9A8 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9A8 F9A9 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9A9 F9AA IDÉOGRAMME DE COMPATIBILITÉ CJC-F9AA F9AB IDÉOGRAMME DE COMPATIBILITÉ CJC-F9AB F9AC IDÉOGRAMME DE COMPATIBILITÉ CJC-F9AC F9AD IDÉOGRAMME DE COMPATIBILITÉ CJC-F9AD F9AE IDÉOGRAMME DE COMPATIBILITÉ CJC-F9AE F9AF IDÉOGRAMME DE COMPATIBILITÉ CJC-F9AF F9B0 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9B0 F9B1 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9B1 F9B2 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9B2 F9B3 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9B3 F9B4 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9B4 F9B5 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9B5 F9B6 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9B6 F9B7 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9B7 F9B8 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9B8 F9B9 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9B9 F9BA IDÉOGRAMME DE COMPATIBILITÉ CJC-F9BA F9BB IDÉOGRAMME DE COMPATIBILITÉ CJC-F9BB F9BC IDÉOGRAMME DE COMPATIBILITÉ CJC-F9BC F9BD IDÉOGRAMME DE COMPATIBILITÉ CJC-F9BD F9BE IDÉOGRAMME DE COMPATIBILITÉ CJC-F9BE F9BF IDÉOGRAMME DE COMPATIBILITÉ CJC-F9BF F9C0 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9C0 F9C1 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9C1 F9C2 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9C2 F9C3 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9C3 F9C4 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9C4 F9C5 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9C5 F9C6 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9C6 F9C7 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9C7 F9C8 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9C8 F9C9 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9C9 F9CA IDÉOGRAMME DE COMPATIBILITÉ CJC-F9CA F9CB IDÉOGRAMME DE COMPATIBILITÉ CJC-F9CB F9CC IDÉOGRAMME DE COMPATIBILITÉ CJC-F9CC F9CD IDÉOGRAMME DE COMPATIBILITÉ CJC-F9CD F9CE IDÉOGRAMME DE COMPATIBILITÉ CJC-F9CE F9CF IDÉOGRAMME DE COMPATIBILITÉ CJC-F9CF F9D0 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9D0 F9D1 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9D1 F9D2 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9D2 F9D3 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9D3 F9D4 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9D4 F9D5 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9D5 F9D6 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9D6 F9D7 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9D7 F9D8 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9D8 F9D9 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9D9 F9DA IDÉOGRAMME DE COMPATIBILITÉ CJC-F9DA F9DB IDÉOGRAMME DE COMPATIBILITÉ CJC-F9DB F9DC IDÉOGRAMME DE COMPATIBILITÉ CJC-F9DC F9DD IDÉOGRAMME DE COMPATIBILITÉ CJC-F9DD F9DE IDÉOGRAMME DE COMPATIBILITÉ CJC-F9DE F9DF IDÉOGRAMME DE COMPATIBILITÉ CJC-F9DF F9E0 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9E0 F9E1 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9E1 F9E2 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9E2 F9E3 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9E3 F9E4 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9E4 F9E5 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9E5 F9E6 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9E6 F9E7 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9E7 F9E8 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9E8 F9E9 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9E9 F9EA IDÉOGRAMME DE COMPATIBILITÉ CJC-F9EA F9EB IDÉOGRAMME DE COMPATIBILITÉ CJC-F9EB F9EC IDÉOGRAMME DE COMPATIBILITÉ CJC-F9EC F9ED IDÉOGRAMME DE COMPATIBILITÉ CJC-F9ED F9EE IDÉOGRAMME DE COMPATIBILITÉ CJC-F9EE F9EF IDÉOGRAMME DE COMPATIBILITÉ CJC-F9EF F9F0 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9F0 F9F1 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9F1 F9F2 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9F2 F9F3 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9F3 F9F4 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9F4 F9F5 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9F5 F9F6 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9F6 F9F7 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9F7 F9F8 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9F8 F9F9 IDÉOGRAMME DE COMPATIBILITÉ CJC-F9F9 F9FA IDÉOGRAMME DE COMPATIBILITÉ CJC-F9FA F9FB IDÉOGRAMME DE COMPATIBILITÉ CJC-F9FB F9FC IDÉOGRAMME DE COMPATIBILITÉ CJC-F9FC F9FD IDÉOGRAMME DE COMPATIBILITÉ CJC-F9FD F9FE IDÉOGRAMME DE COMPATIBILITÉ CJC-F9FE F9FF IDÉOGRAMME DE COMPATIBILITÉ CJC-F9FF FA00 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA00 FA01 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA01 FA02 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA02 FA03 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA03 FA04 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA04 FA05 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA05 FA06 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA06 FA07 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA07 FA08 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA08 FA09 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA09 FA0A IDÉOGRAMME DE COMPATIBILITÉ CJC-FA0A FA0B IDÉOGRAMME DE COMPATIBILITÉ CJC-FA0B FA0C IDÉOGRAMME DE COMPATIBILITÉ CJC-FA0C FA0D IDÉOGRAMME DE COMPATIBILITÉ CJC-FA0D FA0E IDÉOGRAMME DE COMPATIBILITÉ CJC-FA0E FA0F IDÉOGRAMME DE COMPATIBILITÉ CJC-FA0F FA10 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA10 FA11 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA11 FA12 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA12 FA13 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA13 FA14 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA14 FA15 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA15 FA16 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA16 FA17 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA17 FA18 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA18 FA19 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA19 FA1A IDÉOGRAMME DE COMPATIBILITÉ CJC-FA1A FA1B IDÉOGRAMME DE COMPATIBILITÉ CJC-FA1B FA1C IDÉOGRAMME DE COMPATIBILITÉ CJC-FA1C FA1D IDÉOGRAMME DE COMPATIBILITÉ CJC-FA1D FA1E IDÉOGRAMME DE COMPATIBILITÉ CJC-FA1E FA1F IDÉOGRAMME DE COMPATIBILITÉ CJC-FA1F * FA20 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA20 FA21 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA21 FA22 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA22 FA23 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA23 * FA24 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA24 FA25 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA25 FA26 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA26 FA27 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA27 FA28 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA28 FA29 IDÉOGRAMME DE COMPATIBILITÉ CJC-FA29 FA2A IDÉOGRAMME DE COMPATIBILITÉ CJC-FA2A FA2B IDÉOGRAMME DE COMPATIBILITÉ CJC-FA2B FA2C IDÉOGRAMME DE COMPATIBILITÉ CJC-FA2C FA2D IDÉOGRAMME DE COMPATIBILITÉ CJC-FA2D @@ FB00 Formes de présentation alphabétiques FB4F FB00 LIGATURE MINUSCULE LATINE FF FB01 LIGATURE MINUSCULE LATINE FI FB02 LIGATURE MINUSCULE LATINE FL FB03 LIGATURE MINUSCULE LATINE FFI FB04 LIGATURE MINUSCULE LATINE FFL FB05 LIGATURE MINUSCULE LATINE S LONG T FB06 LIGATURE MINUSCULE LATINE ST FB13 LIGATURE MINUSCULE ARMÉNIENNE MÈN NOU FB14 LIGATURE MINUSCULE ARMÉNIENNE MÈN YÈTCH FB15 LIGATURE MINUSCULE ARMÉNIENNE MÈN INI FB16 LIGATURE MINUSCULE ARMÉNIENNE VÈV NOU FB17 LIGATURE MINUSCULE ARMÉNIENNE MÈN KHÉ FB1D LETTRE HÉBRAÏQUE YOD HIRIK FB1E POINT HÉBREU JUDÉO-ESPAGNOL VARIKA FB1F LIGATURE HÉBRAÏQUE YIDICH YOD YOD PATAH FB20 LETTRE HÉBRAÏQUE ALTERNATIVE AÏN FB21 LETTRE HÉBRAÏQUE LARGE ALEF FB22 LETTRE HÉBRAÏQUE LARGE DALÈT FB23 LETTRE HÉBRAÏQUE LARGE HÈ FB24 LETTRE HÉBRAÏQUE LARGE KAF FB25 LETTRE HÉBRAÏQUE LARGE LAMÈD FB26 LETTRE HÉBRAÏQUE LARGE MÉM FINAL FB27 LETTRE HÉBRAÏQUE LARGE RÈCH FB28 LETTRE HÉBRAÏQUE LARGE TAV FB29 LETTRE HÉBRAÏQUE SIGNE PLUS VARIANT FB2A LETTRE HÉBRAÏQUE CHINE POINT CHINE FB2B LETTRE HÉBRAÏQUE CHINE POINT SINE FB2C LETTRE HÉBRAÏQUE CHINE DAGUECH ET POINT CHINE FB2D LETTRE HÉBRAÏQUE CHINE DAGUÈCH ET POINT SINE FB2E LETTRE HÉBRAÏQUE ALEF PATAH FB2F LETTRE HÉBRAÏQUE ALEF QAMATS FB30 LETTRE HÉBRAÏQUE ALEF MAPIQ FB31 LETTRE HÉBRAÏQUE BET DAGUÈCH FB32 LETTRE HÉBRAÏQUE GUIMEL DAGUÈCH FB33 LETTRE HÉBRAÏQUE DALÈT DAGUÈCH FB34 LETTRE HÉBRAÏQUE HÈ MAPIQ FB35 LETTRE HÉBRAÏQUE WAW DAGUÈCH FB36 LETTRE HÉBRAÏQUE ZAÏN DAGUÈCH FB38 LETTRE HÉBRAÏQUE TÈT DAGUÈCH FB39 LETTRE HÉBRAÏQUE YOD DAGUÈCH FB3A LETTRE HÉBRAÏQUE KAF DAGUÈCH FINAL FB3B LETTRE HÉBRAÏQUE KAF DAGUÈCH FB3C LETTRE HÉBRAÏQUE LAMÈD DAGUÈCH FB3E LETTRE HÉBRAÏQUE MÉM DAGUÈCH FB40 LETTRE HÉBRAÏQUE NOUN DAGUÈCH FB41 LETTRE HÉBRAÏQUE SAMÈKH DAGUÈCH FB43 LETTRE HÉBRAÏQUE PÉ DAGUÈCH FINAL FB44 LETTRE HÉBRAÏQUE PÉ DAGUÈCH FB46 LETTRE HÉBRAÏQUE TSADÉ DAGUÈCH FB47 LETTRE HÉBRAÏQUE QOF DAGUÈCH FB48 LETTRE HÉBRAÏQUE RÈCH DAGUÈCH FB49 LETTRE HÉBRAÏQUE CHINE DAGUÈCH FB4A LETTRE HÉBRAÏQUE TAV DAGUÈCH FB4B LETTRE HÉBRAÏQUE WAW HOLAM FB4C LETTRE HÉBRAÏQUE BÈT RAFE FB4D LETTRE HÉBRAÏQUE KAF RAFE FB4E LETTRE HÉBRAÏQUE PÉ RAFE FB4F LIGATURE HÉBRAÏQUE ALEF LAMÈD @@ FB50 Formes de présentation arabes A FDFF FB50 LETTRE ARABE ALIF WASLA ISOLÉ FB51 LETTRE ARABE ALIF WASLA FINAL FB52 LETTRE ARABE BEA' ISOLÉ FB53 LETTRE ARABE BEA' FINAL FB54 LETTRE ARABE BEA' INITIAL FB55 LETTRE ARABE BEA' MÉDIAL FB56 LETTRE ARABE PA' ISOLÉ FB57 LETTRE ARABE PA' FINAL FB58 LETTRE ARABE PA' INITIAL FB59 LETTRE ARABE PA' MÉDIAL FB5A LETTRE ARABE BEHA' ISOLÉ FB5B LETTRE ARABE BEHA' FINAL FB5C LETTRE ARABE BEHA' INITIAL FB5D LETTRE ARABE BEHA' MÉDIAL FB5E LETTRE ARABE TTEHA' ISOLÉ FB5F LETTRE ARABE TTEHA' FINAL FB60 LETTRE ARABE TTEHA' INITIAL FB61 LETTRE ARABE TTEHA' MÉDIAL FB62 LETTRE ARABE TEHA' ISOLÉ FB63 LETTRE ARABE TEHA' FINAL FB64 LETTRE ARABE TEHA' INITIAL FB65 LETTRE ARABE TEHA' MÉDIAL FB66 LETTRE ARABE TTA' ISOLÉ FB67 LETTRE ARABE TTA' FINAL FB68 LETTRE ARABE TTA' INITIAL FB69 LETTRE ARABE TTA' MÉDIAL FB6A LETTRE ARABE VA' ISOLÉ FB6B LETTRE ARABE VA' FINAL FB6C LETTRE ARABE VA' INITIAL FB6D LETTRE ARABE VA' MÉDIAL FB6E LETTRE ARABE PEHA' ISOLÉ FB6F LETTRE ARABE PEHA' FINAL FB70 LETTRE ARABE PEHA' INITIAL FB71 LETTRE ARABE PEHA' MÉDIAL FB72 LETTRE ARABE DYA' ISOLÉ FB73 LETTRE ARABE DYA' FINAL FB74 LETTRE ARABE DYA' INITIAL FB75 LETTRE ARABE DYA' MÉDIAL FB76 LETTRE ARABE NYA' ISOLÉ FB77 LETTRE ARABE NYA' FINAL FB78 LETTRE ARABE NYA' INITIAL FB79 LETTRE ARABE NYA' MÉDIAL FB7A LETTRE ARABE TCHIM' ISOLÉ FB7B LETTRE ARABE TCHIM' FINAL FB7C LETTRE ARABE TCHIM' INITIAL FB7D LETTRE ARABE TCHIM' MÉDIAL FB7E LETTRE ARABE TCHEHA' ISOLÉ FB7F LETTRE ARABE TCHEHA' FINAL FB80 LETTRE ARABE TCHEHA' INITIAL FB81 LETTRE ARABE TCHEHA' MÉDIAL FB82 LETTRE ARABE DDAHAL ISOLÉ FB83 LETTRE ARABE DDAHAL FINAL FB84 LETTRE ARABE DAHAL ISOLÉ FB85 LETTRE ARABE DAHAL FINAL FB86 LETTRE ARABE DUL ISOLÉ FB87 LETTRE ARABE DUL FINAL FB88 LETTRE ARABE DDAL ISOLÉ FB89 LETTRE ARABE DDAL FINAL FB8A LETTRE ARABE JA' ISOLÉ FB8B LETTRE ARABE JA' FINAL FB8C LETTRE ARABE RRA' ISOLÉ FB8D LETTRE ARABE RRA' FINAL FB8E LETTRE ARABE KEHA' ISOLÉ FB8F LETTRE ARABE KEHA' FINAL FB90 LETTRE ARABE KEHA' INITIAL FB91 LETTRE ARABE KEHA' MÉDIAL FB92 LETTRE ARABE GAF ISOLÉ FB93 LETTRE ARABE GAF FINAL FB94 LETTRE ARABE GAF INITIAL FB95 LETTRE ARABE GAF MÉDIAL FB96 LETTRE ARABE GUA' ISOLÉ FB97 LETTRE ARABE GUA' FINAL FB98 LETTRE ARABE GUA' INITIAL FB99 LETTRE ARABE GUA' MÉDIAL FB9A LETTRE ARABE NGOA' ISOLÉ FB9B LETTRE ARABE NGOA' FINAL FB9C LETTRE ARABE NGOA' INITIAL FB9D LETTRE ARABE NGOA' MÉDIAL FB9E LETTRE ARABE NOÛN GHUNNA ISOLÉ FB9F LETTRE ARABE NOÛN GHUNNA FINAL FBA0 LETTRE ARABE RNOÛN ISOLÉ FBA1 LETTRE ARABE RNOÛN FINAL FBA2 LETTRE ARABE RNOÛN INITIAL FBA3 LETTRE ARABE RNOÛN MÉDIAL FBA4 LETTRE ARABE HÉ' YA' EN CHEF ISOLÉ FBA5 LETTRE ARABE HÉ' YA' EN CHEF FINAL FBA6 LETTRE ARABE HÉ' GÔL ISOLÉ FBA7 LETTRE ARABE HÉ' GÔL FINAL FBA8 LETTRE ARABE HÉ' GÔL INITIAL FBA9 LETTRE ARABE HÉ' GÔL MÉDIAL FBAA LETTRE ARABE HÉ' DOATCHACHMI ISOLÉ FBAB LETTRE ARABE HÉ' DOATCHACHMI FINAL FBAC LETTRE ARABE HÉ' DOATCHACHMI INITIAL FBAD LETTRE ARABE HÉ' DOATCHACHMI MÉDIAL FBAE LETTRE ARABE YA' BARRI ISOLÉ FBAF LETTRE ARABE YA' BARRI FINAL FBB0 LETTRE ARABE YA' BARRI HAMZA EN CHEF ISOLÉ FBB1 LETTRE ARABE YA' BARRI HAMZA EN CHEF FINAL FBD3 LETTRE ARABE NG ISOLÉ FBD4 LETTRE ARABE NG FINAL FBD5 LETTRE ARABE NG INITIAL FBD6 LETTRE ARABE NG MÉDIAL FBD7 LETTRE ARABE OU ISOLÉ FBD8 LETTRE ARABE OU FINAL FBD9 LETTRE ARABE OE ISOLÉ FBDA LETTRE ARABE OE FINAL FBDB LETTRE ARABE YOU ISOLÉ FBDC LETTRE ARABE YOU FINAL FBDD LETTRE ARABE OU HAMZA EN CHEF ISOLÉ FBDE LETTRE ARABE VE ISOLÉ FBDF LETTRE ARABE VE FINAL FBE0 LETTRE ARABE KIRGHIZE OE ISOLÉ FBE1 LETTRE ARABE KIRGHIZE OE FINAL FBE2 LETTRE ARABE KIRGHIZE YOU ISOLÉ FBE3 LETTRE ARABE KIRGHIZE YOU FINAL FBE4 LETTRE ARABE E ISOLÉ FBE5 LETTRE ARABE E FINAL FBE6 LETTRE ARABE E INITIAL FBE7 LETTRE ARABE E MÉDIAL FBE8 LETTRE ARABE OUÏGOUR KAZAKHE KIRGHIZE ALIF MAKSOURA INITIAL FBE9 LETTRE ARABE OUÏGOUR KAZAKHE KIRGHIZE ALIF MAKSOURA MÉDIAL FBEA LIGATURE ARABE YA' HAMZA EN CHEF ALIF ISOLÉ FBEB LIGATURE ARABE YA' HAMZA EN CHEF ALIF FINAL FBEC LIGATURE ARABE YA' HAMZA EN CHEF AE ISOLÉ FBED LIGATURE ARABE YA' HAMZA EN CHEF AE FINAL FBEE LIGATURE ARABE YA' HAMZA EN CHEF WAW ISOLÉ FBEF LIGATURE ARABE YA' HAMZA EN CHEF WAW FINAL FBF0 LIGATURE ARABE YA' HAMZA EN CHEF U ISOLÉ FBF1 LIGATURE ARABE YA' HAMZA EN CHEF U FINAL FBF2 LIGATURE ARABE YA' HAMZA EN CHEF OE ISOLÉ FBF3 LIGATURE ARABE YA' HAMZA EN CHEF OE FINAL FBF4 LIGATURE ARABE YA' HAMZA EN CHEF YOU ISOLÉ FBF5 LIGATURE ARABE YA' HAMZA EN CHEF YOU FINAL FBF6 LIGATURE ARABE YA' HAMZA EN CHEF E ISOLÉ FBF7 LIGATURE ARABE YA' HAMZA EN CHEF E FINAL FBF8 LIGATURE ARABE YA' HAMZA EN CHEF E INITIAL FBF9 LIGATURE ARABE OUÏGOUR KIRGHIZE YA' HAMZA EN CHEF ALIF MAKSOURA ISOLÉ FBFA LIGATURE ARABE OUÏGOUR KIRGHIZE YA' HAMZA EN CHEF ALIF MAKSOURA FINAL FBFB LIGATURE ARABE OUÏGOUR KIRGHIZE YA' HAMZA EN CHEF ALIF MAKSOURA INITIAL FBFC LETTRE ARABE FARSI YA' ISOLÉ FBFD LETTRE ARABE FARSI YA' FINAL FBFE LETTRE ARABE FARSI YA' INITIAL FBFF LETTRE ARABE FARSI YA' MÉDIAL FC00 LIGATURE ARABE YA' HAMZA EN CHEF DJÎM ISOLÉ FC01 LIGATURE ARABE YA' HAMZA EN CHEF HA' ISOLÉ FC02 LIGATURE ARABE YA' HAMZA EN CHEF MÎM ISOLÉ FC03 LIGATURE ARABE YA' HAMZA EN CHEF ALIF MAKSOURA ISOLÉ FC04 LIGATURE ARABE YA' HAMZA EN CHEF YA' ISOLÉ FC05 LIGATURE ARABE BA' DJÎM ISOLÉ FC06 LIGATURE ARABE BA' HA' ISOLÉ FC07 LIGATURE ARABE BA' KHA' ISOLÉ FC08 LIGATURE ARABE BA' MÎM ISOLÉ FC09 LIGATURE ARABE BA' ALIF MAKSOURA ISOLÉ FC0A LIGATURE ARABE BA' YA' ISOLÉ FC0B LIGATURE ARABE TÉ' DJÎM ISOLÉ FC0C LIGATURE ARABE TÉ' HA' ISOLÉ FC0D LIGATURE ARABE TÉ' KHA' ISOLÉ FC0E LIGATURE ARABE TÉ' MÎM ISOLÉ FC0F LIGATURE ARABE TÉ' ALIF MAKSOURA ISOLÉ FC10 LIGATURE ARABE TÉ' YA' ISOLÉ FC11 LIGATURE ARABE THÉ' DJÎM ISOLÉ FC12 LIGATURE ARABE THÉ' MÎM ISOLÉ FC13 LIGATURE ARABE THÉ' ALIF MAKSOURA ISOLÉ FC14 LIGATURE ARABE THÉ' YA' ISOLÉ FC15 LIGATURE ARABE DJÎM HA' ISOLÉ FC16 LIGATURE ARABE DJÎM MÎM ISOLÉ FC17 LIGATURE ARABE HA' DJÎM ISOLÉ FC18 LIGATURE ARABE HA' MÎM ISOLÉ FC19 LIGATURE ARABE KHA' DJÎM ISOLÉ FC1A LIGATURE ARABE KHA' HA' ISOLÉ FC1B LIGATURE ARABE KHA' MÎM ISOLÉ FC1C LIGATURE ARABE SÎN DJÎM ISOLÉ FC1D LIGATURE ARABE SÎN HA' ISOLÉ FC1E LIGATURE ARABE SÎN KHA' ISOLÉ FC1F LIGATURE ARABE SÎN MÎM ISOLÉ FC20 LIGATURE ARABE SAD HA' ISOLÉ FC21 LIGATURE ARABE SAD MÎM ISOLÉ FC22 LIGATURE ARABE DAD DJÎM ISOLÉ FC23 LIGATURE ARABE DAD HA' ISOLÉ FC24 LIGATURE ARABE DAD KHA' ISOLÉ FC25 LIGATURE ARABE DAD MÎM ISOLÉ FC26 LIGATURE ARABE TA' HA' ISOLÉ FC27 LIGATURE ARABE TA' MÎM ISOLÉ FC28 LIGATURE ARABE ZZA' MÎM ISOLÉ FC29 LIGATURE ARABE 'AÏN DJÎM ISOLÉ FC2A LIGATURE ARABE 'AÏN MÎM ISOLÉ FC2B LIGATURE ARABE GHAÏN DJÎM ISOLÉ FC2C LIGATURE ARABE GHAÏN MÎM ISOLÉ FC2D LIGATURE ARABE FA' DJÎM ISOLÉ FC2E LIGATURE ARABE FA' HA' ISOLÉ FC2F LIGATURE ARABE FA' KHA' ISOLÉ FC30 LIGATURE ARABE FA' MÎM ISOLÉ FC31 LIGATURE ARABE FA' ALIF MAKSOURA ISOLÉ FC32 LIGATURE ARABE FA' YA' ISOLÉ FC33 LIGATURE ARABE QAF HA' ISOLÉ FC34 LIGATURE ARABE QAF MÎM ISOLÉ FC35 LIGATURE ARABE QAF ALIF MAKSOURA ISOLÉ FC36 LIGATURE ARABE QAF YA' ISOLÉ FC37 LIGATURE ARABE KAF ALIF ISOLÉ FC38 LIGATURE ARABE KAF DJÎM ISOLÉ FC39 LIGATURE ARABE KAF HA' ISOLÉ FC3A LIGATURE ARABE KAF KHA' ISOLÉ FC3B LIGATURE ARABE KAF LAM ISOLÉ FC3C LIGATURE ARABE KAF MÎM ISOLÉ FC3D LIGATURE ARABE KAF ALIF MAKSOURA ISOLÉ FC3E LIGATURE ARABE KAF YA' ISOLÉ FC3F LIGATURE ARABE LAM DJÎM ISOLÉ FC40 LIGATURE ARABE LAM HA' ISOLÉ FC41 LIGATURE ARABE LAM KHA' ISOLÉ FC42 LIGATURE ARABE LAM MÎM ISOLÉ FC43 LIGATURE ARABE LAM ALIF MAKSOURA ISOLÉ FC44 LIGATURE ARABE LAM YA' ISOLÉ FC45 LIGATURE ARABE MÎM DJÎM ISOLÉ FC46 LIGATURE ARABE MÎM HA' ISOLÉ FC47 LIGATURE ARABE MÎM KHA' ISOLÉ FC48 LIGATURE ARABE MÎM MÎM ISOLÉ FC49 LIGATURE ARABE MÎM ALIF MAKSOURA ISOLÉ FC4A LIGATURE ARABE MÎM YA' ISOLÉ FC4B LIGATURE ARABE NOÛN DJÎM ISOLÉ FC4C LIGATURE ARABE NOÛN HA' ISOLÉ FC4D LIGATURE ARABE NOÛN KHA' ISOLÉ FC4E LIGATURE ARABE NOÛN MÎM ISOLÉ FC4F LIGATURE ARABE NOÛN ALIF MAKSOURA ISOLÉ FC50 LIGATURE ARABE NOÛN YA' ISOLÉ FC51 LIGATURE ARABE HÉ' DJÎM ISOLÉ FC52 LIGATURE ARABE HÉ' MÎM ISOLÉ FC53 LIGATURE ARABE HÉ' ALIF MAKSOURA ISOLÉ FC54 LIGATURE ARABE HÉ' YA' ISOLÉ FC55 LIGATURE ARABE YA' DJÎM ISOLÉ FC56 LIGATURE ARABE YA' HA' ISOLÉ FC57 LIGATURE ARABE YA' KHA' ISOLÉ FC58 LIGATURE ARABE YA' MÎM ISOLÉ FC59 LIGATURE ARABE YA' ALIF MAKSOURA ISOLÉ FC5A LIGATURE ARABE YA' YA' ISOLÉ FC5B LIGATURE ARABE DHAL EN CHEF ALIF ISOLÉ FC5C LIGATURE ARABE RA' EN CHEF ALIF ISOLÉ FC5D LIGATURE ARABE ALIF MAKSOURA EN CHEF ALIF ISOLÉ FC5E LIGATURE ARABE CHADDA DAMMATAN ISOLÉ FC5F LIGATURE ARABE CHADDA KASRATAN ISOLÉ FC60 LIGATURE ARABE CHADDA FATHA ISOLÉ FC61 LIGATURE ARABE CHADDA DAMMA ISOLÉ FC62 LIGATURE ARABE CHADDA KASRA ISOLÉ FC63 LIGATURE ARABE CHADDA EN CHEF ALIF ISOLÉ FC64 LIGATURE ARABE YA' HAMZA EN CHEF RA' FINAL FC65 LIGATURE ARABE YA' HAMZA EN CHEF ZAY FINAL FC66 LIGATURE ARABE YA' HAMZA EN CHEF MÎM FINAL FC67 LIGATURE ARABE YA' HAMZA EN CHEF NOÛN FINAL FC68 LIGATURE ARABE YA' HAMZA EN CHEF ALIF MAKSOURA FINAL FC69 LIGATURE ARABE YA' HAMZA EN CHEF YA' FINAL FC6A LIGATURE ARABE BA' RA' FINAL FC6B LIGATURE ARABE BA' ZAY FINAL FC6C LIGATURE ARABE BA' MÎM FINAL FC6D LIGATURE ARABE BA' NOÛN FINAL FC6E LIGATURE ARABE BA' ALIF MAKSOURA FINAL FC6F LIGATURE ARABE BA' YA' FINAL FC70 LIGATURE ARABE TÉ' RA' FINAL FC71 LIGATURE ARABE TÉ' ZAY FINAL FC72 LIGATURE ARABE TÉ' MÎM FINAL FC73 LIGATURE ARABE TÉ' NOÛN FINAL FC74 LIGATURE ARABE TÉ' ALIF MAKSOURA FINAL FC75 LIGATURE ARABE TÉ' YA' FINAL FC76 LIGATURE ARABE THÉ' RA' FINAL FC77 LIGATURE ARABE THÉ' ZAY FINAL FC78 LIGATURE ARABE THÉ' MÎM FINAL FC79 LIGATURE ARABE THÉ' NOÛN FINAL FC7A LIGATURE ARABE THÉ' ALIF MAKSOURA FINAL FC7B LIGATURE ARABE THÉ' YA' FINAL FC7C LIGATURE ARABE FA' ALIF MAKSOURA FINAL FC7D LIGATURE ARABE FA' YA' FINAL FC7E LIGATURE ARABE QAF ALIF MAKSOURA FINAL FC7F LIGATURE ARABE QAF YA' FINAL FC80 LIGATURE ARABE KAF ALIF FINAL FC81 LIGATURE ARABE KAF LAM FINAL FC82 LIGATURE ARABE KAF MÎM FINAL FC83 LIGATURE ARABE KAF ALIF MAKSOURA FINAL FC84 LIGATURE ARABE KAF YA' FINAL FC85 LIGATURE ARABE LAM MÎM FINAL FC86 LIGATURE ARABE LAM ALIF MAKSOURA FINAL FC87 LIGATURE ARABE LAM YA' FINAL FC88 LIGATURE ARABE MÎM ALIF FINAL FC89 LIGATURE ARABE MÎM MÎM FINAL FC8A LIGATURE ARABE NOÛN RA' FINAL FC8B LIGATURE ARABE NOÛN ZAY FINAL FC8C LIGATURE ARABE NOÛN MÎM FINAL FC8D LIGATURE ARABE NOÛN NOÛN FINAL FC8E LIGATURE ARABE NOÛN ALIF MAKSOURA FINAL FC8F LIGATURE ARABE NOÛN YA' FINAL FC90 LIGATURE ARABE ALIF MAKSOURA EN CHEF ALIF FINAL FC91 LIGATURE ARABE YA' RA' FINAL FC92 LIGATURE ARABE YA' ZAY FINAL FC93 LIGATURE ARABE YA' MÎM FINAL FC94 LIGATURE ARABE YA' NOÛN FINAL FC95 LIGATURE ARABE YA' ALIF MAKSOURA FINAL FC96 LIGATURE ARABE YA' YA' FINAL FC97 LIGATURE ARABE YA' HAMZA EN CHEF DJÎM INITIAL FC98 LIGATURE ARABE YA' HAMZA EN CHEF HA' INITIAL FC99 LIGATURE ARABE YA' HAMZA EN CHEF KHA' INITIAL FC9A LIGATURE ARABE YA' HAMZA EN CHEF MÎM INITIAL FC9B LIGATURE ARABE YA' HAMZA EN CHEF HÉ' INITIAL FC9C LIGATURE ARABE BA' DJÎM INITIAL FC9D LIGATURE ARABE BA' HA' INITIAL FC9E LIGATURE ARABE BA' KHA' INITIAL FC9F LIGATURE ARABE BA' MÎM INITIAL FCA0 LIGATURE ARABE BA' HÉ' INITIAL FCA1 LIGATURE ARABE TÉ' DJÎM INITIAL FCA2 LIGATURE ARABE TÉ' HA' INITIAL FCA3 LIGATURE ARABE TÉ' KHA' INITIAL FCA4 LIGATURE ARABE TÉ' MÎM INITIAL FCA5 LIGATURE ARABE TÉ' HÉ' INITIAL FCA6 LIGATURE ARABE THÉ' MÎM INITIAL FCA7 LIGATURE ARABE DJÎM HA' INITIAL FCA8 LIGATURE ARABE DJÎM MÎM INITIAL FCA9 LIGATURE ARABE HA' DJÎM INITIAL FCAA LIGATURE ARABE HA' MÎM INITIAL FCAB LIGATURE ARABE KHA' DJÎM INITIAL FCAC LIGATURE ARABE KHA' MÎM INITIAL FCAD LIGATURE ARABE SÎN DJÎM INITIAL FCAE LIGATURE ARABE SÎN HA' INITIAL FCAF LIGATURE ARABE SÎN KHA' INITIAL FCB0 LIGATURE ARABE SÎN MÎM INITIAL FCB1 LIGATURE ARABE SAD HA' INITIAL FCB2 LIGATURE ARABE SAD KHA' INITIAL FCB3 LIGATURE ARABE SAD MÎM INITIAL FCB4 LIGATURE ARABE DAD DJÎM INITIAL FCB5 LIGATURE ARABE DAD HA' INITIAL FCB6 LIGATURE ARABE DAD KHA' INITIAL FCB7 LIGATURE ARABE DAD MÎM INITIAL FCB8 LIGATURE ARABE TA' HA' INITIAL FCB9 LIGATURE ARABE ZZA' MÎM INITIAL FCBA LIGATURE ARABE 'AÏN DJÎM INITIAL FCBB LIGATURE ARABE 'AÏN MÎM INITIAL FCBC LIGATURE ARABE GHAÏN DJÎM INITIAL FCBD LIGATURE ARABE GHAÏN MÎM INITIAL FCBE LIGATURE ARABE FA' DJÎM INITIAL FCBF LIGATURE ARABE FA' HA' INITIAL FCC0 LIGATURE ARABE FA' KHA' INITIAL FCC1 LIGATURE ARABE FA' MÎM INITIAL FCC2 LIGATURE ARABE QAF HA' INITIAL FCC3 LIGATURE ARABE QAF MÎM INITIAL FCC4 LIGATURE ARABE KAF DJÎM INITIAL FCC5 LIGATURE ARABE KAF HA' INITIAL FCC6 LIGATURE ARABE KAF KHA' INITIAL FCC7 LIGATURE ARABE KAF LAM INITIAL FCC8 LIGATURE ARABE KAF MÎM INITIAL FCC9 LIGATURE ARABE LAM DJÎM INITIAL FCCA LIGATURE ARABE LAM HA' INITIAL FCCB LIGATURE ARABE LAM KHA' INITIAL FCCC LIGATURE ARABE LAM MÎM INITIAL FCCD LIGATURE ARABE LAM HÉ' INITIAL FCCE LIGATURE ARABE MÎM DJÎM INITIAL FCCF LIGATURE ARABE MÎM HA' INITIAL FCD0 LIGATURE ARABE MÎM KHA' INITIAL FCD1 LIGATURE ARABE MÎM MÎM INITIAL FCD2 LIGATURE ARABE NOÛN DJÎM INITIAL FCD3 LIGATURE ARABE NOÛN HA' INITIAL FCD4 LIGATURE ARABE NOÛN KHA' INITIAL FCD5 LIGATURE ARABE NOÛN MÎM INITIAL FCD6 LIGATURE ARABE NOÛN HÉ' INITIAL FCD7 LIGATURE ARABE HÉ' DJÎM INITIAL FCD8 LIGATURE ARABE HÉ' MÎM INITIAL FCD9 LIGATURE ARABE HÉ' EN CHEF ALIF INITIAL FCDA LIGATURE ARABE YA' DJÎM INITIAL FCDB LIGATURE ARABE YA' HA' INITIAL FCDC LIGATURE ARABE YA' KHA' INITIAL FCDD LIGATURE ARABE YA' MÎM INITIAL FCDE LIGATURE ARABE YA' HÉ' INITIAL FCDF LIGATURE ARABE YA' HAMZA EN CHEF MÎM MÉDIAL FCE0 LIGATURE ARABE YA' HAMZA EN CHEF HÉ' MÉDIAL FCE1 LIGATURE ARABE BA' MÎM MÉDIAL FCE2 LIGATURE ARABE BA' HÉ' MÉDIAL FCE3 LIGATURE ARABE TÉ' MÎM MÉDIAL FCE4 LIGATURE ARABE TÉ' HÉ' MÉDIAL FCE5 LIGATURE ARABE THÉ' MÎM MÉDIAL FCE6 LIGATURE ARABE THÉ' HÉ' MÉDIAL FCE7 LIGATURE ARABE SÎN MÎM MÉDIAL FCE8 LIGATURE ARABE SÎN HÉ' MÉDIAL FCE9 LIGATURE ARABE CHÎN MÎM MÉDIAL FCEA LIGATURE ARABE CHÎN HÉ' MÉDIAL FCEB LIGATURE ARABE KAF LAM MÉDIAL FCEC LIGATURE ARABE KAF MÎM MÉDIAL FCED LIGATURE ARABE LAM MÎM MÉDIAL FCEE LIGATURE ARABE NOÛN MÎM MÉDIAL FCEF LIGATURE ARABE NOÛN HÉ' MÉDIAL FCF0 LIGATURE ARABE YA' MÎM MÉDIAL FCF1 LIGATURE ARABE YA' HÉ' MÉDIAL FCF2 LIGATURE ARABE CHADDA FATHA MÉDIAL FCF3 LIGATURE ARABE CHADDA DAMMA MÉDIAL FCF4 LIGATURE ARABE CHADDA KASRA MÉDIAL FCF5 LIGATURE ARABE TA' ALIF MAKSOURA ISOLÉ FCF6 LIGATURE ARABE TA' YA' ISOLÉ FCF7 LIGATURE ARABE 'AÏN ALIF MAKSOURA ISOLÉ FCF8 LIGATURE ARABE 'AÏN YA' ISOLÉ FCF9 LIGATURE ARABE GHAÏN ALIF MAKSOURA ISOLÉ FCFA LIGATURE ARABE GHAÏN YA' ISOLÉ FCFB LIGATURE ARABE SÎN ALIF MAKSOURA ISOLÉ FCFC LIGATURE ARABE SÎN YA' ISOLÉ FCFD LIGATURE ARABE CHÎN ALIF MAKSOURA ISOLÉ FCFE LIGATURE ARABE CHÎN YA' ISOLÉ FCFF LIGATURE ARABE HA' ALIF MAKSOURA ISOLÉ FD00 LIGATURE ARABE HA' YA' ISOLÉ FD01 LIGATURE ARABE DJÎM ALIF MAKSOURA ISOLÉ FD02 LIGATURE ARABE DJÎM YA' ISOLÉ FD03 LIGATURE ARABE KHA' ALIF MAKSOURA ISOLÉ FD04 LIGATURE ARABE KHA' YA' ISOLÉ FD05 LIGATURE ARABE SAD ALIF MAKSOURA ISOLÉ FD06 LIGATURE ARABE SAD YA' ISOLÉ FD07 LIGATURE ARABE DAD ALIF MAKSOURA ISOLÉ FD08 LIGATURE ARABE DAD YA' ISOLÉ FD09 LIGATURE ARABE CHÎN DJÎM ISOLÉ FD0A LIGATURE ARABE CHÎN HA' ISOLÉ FD0B LIGATURE ARABE CHÎN KHA' ISOLÉ FD0C LIGATURE ARABE CHÎN MÎM ISOLÉ FD0D LIGATURE ARABE CHÎN RA' ISOLÉ FD0E LIGATURE ARABE SÎN RA' ISOLÉ FD0F LIGATURE ARABE SAD RA' ISOLÉ FD10 LIGATURE ARABE DAD RA' ISOLÉ FD11 LIGATURE ARABE TA' ALIF MAKSOURA FINAL FD12 LIGATURE ARABE TA' YA' FINAL FD13 LIGATURE ARABE 'AÏN ALIF MAKSOURA FINAL FD14 LIGATURE ARABE 'AÏN YA' FINAL FD15 LIGATURE ARABE GHAÏN ALIF MAKSOURA FINAL FD16 LIGATURE ARABE GHAÏN YA' FINAL FD17 LIGATURE ARABE SÎN ALIF MAKSOURA FINAL FD18 LIGATURE ARABE SÎN YA' FINAL FD19 LIGATURE ARABE CHÎN ALIF MAKSOURA FINAL FD1A LIGATURE ARABE CHÎN YA' FINAL FD1B LIGATURE ARABE HA' ALIF MAKSOURA FINAL FD1C LIGATURE ARABE HA' YA' FINAL FD1D LIGATURE ARABE DJÎM ALIF MAKSOURA FINAL FD1E LIGATURE ARABE DJÎM YA' FINAL FD1F LIGATURE ARABE KHA' ALIF MAKSOURA FINAL FD20 LIGATURE ARABE KHA' YA' FINAL FD21 LIGATURE ARABE SAD ALIF MAKSOURA FINAL FD22 LIGATURE ARABE SAD YA' FINAL FD23 LIGATURE ARABE DAD ALIF MAKSOURA FINAL FD24 LIGATURE ARABE DAD YA' FINAL FD25 LIGATURE ARABE CHÎN DJÎM FINAL FD26 LIGATURE ARABE CHÎN HA' FINAL FD27 LIGATURE ARABE CHÎN KHA' FINAL FD28 LIGATURE ARABE CHÎN MÎM FINAL FD29 LIGATURE ARABE CHÎN RA' FINAL FD2A LIGATURE ARABE SÎN RA' FINAL FD2B LIGATURE ARABE SAD RA' FINAL FD2C LIGATURE ARABE DAD RA' FINAL FD2D LIGATURE ARABE CHÎN DJÎM INITIAL FD2E LIGATURE ARABE CHÎN HA' INITIAL FD2F LIGATURE ARABE CHÎN KHA' INITIAL FD30 LIGATURE ARABE CHÎN MÎM INITIAL FD31 LIGATURE ARABE SÎN HÉ' INITIAL FD32 LIGATURE ARABE CHÎN HÉ' INITIAL FD33 LIGATURE ARABE TA' MÎM INITIAL FD34 LIGATURE ARABE SÎN DJÎM MÉDIAL FD35 LIGATURE ARABE SÎN HA' MÉDIAL FD36 LIGATURE ARABE SÎN KHA' MÉDIAL FD37 LIGATURE ARABE CHÎN DJÎM MÉDIAL FD38 LIGATURE ARABE CHÎN HA' MÉDIAL FD39 LIGATURE ARABE CHÎN KHA' MÉDIAL FD3A LIGATURE ARABE TA' MÎM MÉDIAL FD3B LIGATURE ARABE ZZA' MÎM MÉDIAL FD3C LIGATURE ARABE ALIF FATHATAN FINAL FD3D LIGATURE ARABE ALIF FATHATAN ISOLÉ FD3E PARENTHÈSE GAUCHE ORNÉE FD3F PARENTHÈSE DROITE ORNÉE FD50 LIGATURE ARABE TÉ' DJÎM MÎM INITIAL FD51 LIGATURE ARABE TÉ' HA' DJÎM FINAL FD52 LIGATURE ARABE TÉ' HA' DJÎM INITIAL FD53 LIGATURE ARABE TÉ' HA' MÎM INITIAL FD54 LIGATURE ARABE TÉ' KHA' MÎM INITIAL FD55 LIGATURE ARABE TÉ' MÎM DJÎM INITIAL FD56 LIGATURE ARABE TÉ' MÎM HA' INITIAL FD57 LIGATURE ARABE TÉ' MÎM KHA' INITIAL FD58 LIGATURE ARABE DJÎM MÎM HA' FINAL FD59 LIGATURE ARABE DJÎM MÎM HA' INITIAL FD5A LIGATURE ARABE HA' MÎM YA' FINAL FD5B LIGATURE ARABE HA' MÎM ALIF MAKSOURA FINAL FD5C LIGATURE ARABE SÎN HA' DJÎM INITIAL FD5D LIGATURE ARABE SÎN DJÎM HA' INITIAL FD5E LIGATURE ARABE SÎN DJÎM ALIF MAKSOURA FINAL FD5F LIGATURE ARABE SÎN MÎM HA' FINAL FD60 LIGATURE ARABE SÎN MÎM HA' INITIAL FD61 LIGATURE ARABE SÎN MÎM DJÎM INITIAL FD62 LIGATURE ARABE SÎN MÎM MÎM FINAL FD63 LIGATURE ARABE SÎN MÎM MÎM INITIAL FD64 LIGATURE ARABE SAD HA' HA' FINAL FD65 LIGATURE ARABE SAD HA' HA' INITIAL FD66 LIGATURE ARABE SAD MÎM MÎM FINAL FD67 LIGATURE ARABE CHÎN HA' MÎM FINAL FD68 LIGATURE ARABE CHÎN HA' MÎM INITIAL FD69 LIGATURE ARABE CHÎN DJÎM YA' FINAL FD6A LIGATURE ARABE CHÎN MÎM KHA' FINAL FD6B LIGATURE ARABE CHÎN MÎM KHA' INITIAL FD6C LIGATURE ARABE CHÎN MÎM MÎM FINAL FD6D LIGATURE ARABE CHÎN MÎM MÎM INITIAL FD6E LIGATURE ARABE DAD HA' ALIF MAKSOURA FINAL FD6F LIGATURE ARABE DAD KHA' MÎM FINAL FD70 LIGATURE ARABE DAD KHA' MÎM INITIAL FD71 LIGATURE ARABE TA' MÎM HA' FINAL FD72 LIGATURE ARABE TA' MÎM HA' INITIAL FD73 LIGATURE ARABE TA' MÎM MÎM INITIAL FD74 LIGATURE ARABE TA' MÎM YA' FINAL FD75 LIGATURE ARABE 'AÏN DJÎM MÎM FINAL FD76 LIGATURE ARABE 'AÏN MÎM MÎM FINAL FD77 LIGATURE ARABE 'AÏN MÎM MÎM INITIAL FD78 LIGATURE ARABE 'AÏN MÎM ALIF MAKSOURA FINAL FD79 LIGATURE ARABE GHAÏN MÎM MÎM FINAL FD7A LIGATURE ARABE GHAÏN MÎM YA' FINAL FD7B LIGATURE ARABE GHAÏN MÎM ALIF MAKSOURA FINAL FD7C LIGATURE ARABE FA' KHA' MÎM FINAL FD7D LIGATURE ARABE FA' KHA' MÎM INITIAL FD7E LIGATURE ARABE QAF MÎM HA' FINAL FD7F LIGATURE ARABE QAF MÎM MÎM FINAL FD80 LIGATURE ARABE LAM HA' MÎM FINAL FD81 LIGATURE ARABE LAM HA' YA' FINAL FD82 LIGATURE ARABE LAM HA' ALIF MAKSOURA FINAL FD83 LIGATURE ARABE LAM DJÎM DJÎM INITIAL FD84 LIGATURE ARABE LAM DJÎM DJÎM FINAL FD85 LIGATURE ARABE LAM KHA' MÎM FINAL FD86 LIGATURE ARABE LAM KHA' MÎM INITIAL FD87 LIGATURE ARABE LAM MÎM HA' FINAL FD88 LIGATURE ARABE LAM MÎM HA' INITIAL FD89 LIGATURE ARABE MÎM HA' DJÎM INITIAL FD8A LIGATURE ARABE MÎM HA' MÎM INITIAL FD8B LIGATURE ARABE MÎM HA' YA' FINAL FD8C LIGATURE ARABE MÎM DJÎM HA' INITIAL FD8D LIGATURE ARABE MÎM DJÎM MÎM INITIAL FD8E LIGATURE ARABE MÎM KHA' DJÎM INITIAL FD8F LIGATURE ARABE MÎM KHA' MÎM INITIAL FD92 LIGATURE ARABE MÎM DJÎM KHA' INITIAL FD93 LIGATURE ARABE HÉ' MÎM DJÎM INITIAL FD94 LIGATURE ARABE HÉ' MÎM MÎM INITIAL FD95 LIGATURE ARABE NOÛN HA' MÎM INITIAL FD96 LIGATURE ARABE NOÛN HA' ALIF MAKSOURA FINAL FD97 LIGATURE ARABE NOÛN DJÎM MÎM FINAL FD98 LIGATURE ARABE NOÛN DJÎM MÎM INITIAL FD99 LIGATURE ARABE NOÛN DJÎM ALIF MAKSOURA FINAL FD9A LIGATURE ARABE NOÛN MÎM YA' FINAL FD9B LIGATURE ARABE NOÛN MÎM ALIF MAKSOURA FINAL FD9C LIGATURE ARABE YA' MÎM MÎM FINAL FD9D LIGATURE ARABE YA' MÎM MÎM INITIAL FD9E LIGATURE ARABE BA' KHA' YA' FINAL FD9F LIGATURE ARABE TÉ' DJÎM YA' FINAL FDA0 LIGATURE ARABE TÉ' DJÎM ALIF MAKSOURA FINAL FDA1 LIGATURE ARABE TÉ' KHA' YA' FINAL FDA2 LIGATURE ARABE TÉ' KHA' ALIF MAKSOURA FINAL FDA3 LIGATURE ARABE TÉ' MÎM YA' FINAL FDA4 LIGATURE ARABE TÉ' MÎM ALIF MAKSOURA FINAL FDA5 LIGATURE ARABE DJÎM MÎM YA' FINAL FDA6 LIGATURE ARABE DJÎM HA' ALIF MAKSOURA FINAL FDA7 LIGATURE ARABE DJÎM MÎM ALIF MAKSOURA FINAL FDA8 LIGATURE ARABE SÎN KHA' ALIF MAKSOURA FINAL FDA9 LIGATURE ARABE SAD HA' YA' FINAL FDAA LIGATURE ARABE CHÎN HA' YA' FINAL FDAB LIGATURE ARABE DAD HA' YA' FINAL FDAC LIGATURE ARABE LAM DJÎM YA' FINAL FDAD LIGATURE ARABE LAM MÎM YA' FINAL FDAE LIGATURE ARABE YA' HA' YA' FINAL FDAF LIGATURE ARABE YA' DJÎM YA' FINAL FDB0 LIGATURE ARABE YA' MÎM YA' FINAL FDB1 LIGATURE ARABE MÎM MÎM YA' FINAL FDB2 LIGATURE ARABE QAF MÎM YA' FINAL FDB3 LIGATURE ARABE NOÛN HA' YA' FINAL FDB4 LIGATURE ARABE QAF MÎM HA' INITIAL FDB5 LIGATURE ARABE LAM HA' MÎM INITIAL FDB6 LIGATURE ARABE 'AÏN MÎM YA' FINAL FDB7 LIGATURE ARABE KAF MÎM YA' FINAL FDB8 LIGATURE ARABE NOÛN DJÎM HA' INITIAL FDB9 LIGATURE ARABE MÎM KHA' YA' FINAL FDBA LIGATURE ARABE LAM DJÎM MÎM INITIAL FDBB LIGATURE ARABE KAF MÎM MÎM FINAL FDBC LIGATURE ARABE LAM DJÎM MÎM FINAL FDBD LIGATURE ARABE NOÛN DJÎM HA' FINAL FDBE LIGATURE ARABE DJÎM HA' YA' FINAL FDBF LIGATURE ARABE HA' DJÎM YA' FINAL FDC0 LIGATURE ARABE MÎM DJÎM YA' FINAL FDC1 LIGATURE ARABE FA' MÎM YA' FINAL FDC2 LIGATURE ARABE BA' HA' YA' FINAL FDC3 LIGATURE ARABE KAF MÎM MÎM INITIAL FDC4 LIGATURE ARABE 'AÏN DJÎM MÎM INITIAL FDC5 LIGATURE ARABE SAD MÎM MÎM INITIAL FDC6 LIGATURE ARABE SÎN KHA' YA' FINAL FDC7 LIGATURE ARABE NOÛN DJÎM YA' FINAL FDF0 LIGATURE ARABE SALLA ISOLÉ UTILISÉ COMME SIGNE D'ARRÊT CORANIQUE FDF1 LIGATURE ARABE QALA ISOLÉ UTILISÉ COMME SIGNE D'ARRÊT CORANIQUE FDF2 LIGATURE ARABE ALLAH ISOLÉ FDF3 LIGATURE ARABE AKBAR ISOLÉ FDF4 LIGATURE ARABE MOHAMMAD ISOLÉ FDF5 LIGATURE ARABE SALAM ISOLÉ FDF6 LIGATURE ARABE RASOUL ISOLÉ FDF7 LIGATURE ARABE ALAÏHE ISOLÉ FDF8 LIGATURE ARABE WASALLAM ISOLÉ FDF9 LIGATURE ARABE SALLA ISOLÉ FDFA LIGATURE ARABE SALLALLAHOU ALAÏHE WASALLAM FDFB LIGATURE ARABE DJALLADJALALOUHOU @@ FE20 Demi-signes combinatoires FE2F FE20 DIACRITIQUE MOITIÉ GAUCHE DE LIGATURE FE21 DIACRITIQUE MOITIÉ DROITE DE LIGATURE FE22 DIACRITIQUE MOITIÉ GAUCHE DE TILDE DOUBLE FE23 DIACRITIQUE MOITIÉ DROITE DE TILDE DOUBLE @@ FE30 Formes de compatibilité CJC FE4F FE30 FORME DE PRÉSENTATION DE POINT D'AMORCE DOUBLE VERTICAL FE31 FORME DE PRÉSENTATION DE TIRET CADRATIN VERTICAL FE32 FORME DE PRÉSENTATION DE TIRET DEMI-CADRATIN VERTICAL FE33 FORME DE PRÉSENTATION DE TIRET BAS VERTICAL FE34 FORME DE PRÉSENTATION DE TIRET BAS ONDULÉ VERTICAL FE35 FORME DE PRÉSENTATION DE PARENTHÈSE GAUCHE VERTICALE FE36 FORME DE PRÉSENTATION DE PARENTHÈSE DROITE VERTICALE FE37 FORME DE PRÉSENTATION D'ACCOLADE GAUCHE VERTICALE FE38 FORME DE PRÉSENTATION D'ACCOLADE DROITE VERTICALE FE39 FORME DE PRÉSENTATION DE CROCHET GAUCHE VERTICAL EN ÉCAILLE FE3A FORME DE PRÉSENTATION DE CROCHET DROIT VERTICAL EN ÉCAILLE FE3B FORME DE PRÉSENTATION DE CROCHET GAUCHE LENTICULAIRE NOIR VERTICAL FE3C FORME DE PRÉSENTATION DE CROCHET DROIT LENTICULAIRE NOIR VERTICAL FE3D FORME DE PRÉSENTATION DE CROCHET DOUBLE GAUCHE VERTICAL FE3E FORME DE PRÉSENTATION DE CROCHET DOUBLE DROIT VERTICAL FE3F FORME DE PRÉSENTATION DE CROCHET GAUCHE VERTICAL FE40 FORME DE PRÉSENTATION DE CROCHET DROIT VERTICAL FE41 FORME DE PRÉSENTATION DE CROCHET VERTICAL GAUCHE EN COIN FE42 FORME DE PRÉSENTATION DE CROCHET VERTICAL DROIT EN COIN FE43 FORME DE PRÉSENTATION DE CROCHET BLANC VERTICAL GAUCHE EN COIN FE44 FORME DE PRÉSENTATION DE CROCHET BLANC VERTICAL DROIT EN COIN FE49 TIRET HAUT EN POINTILLÉS FE4A TIRET HAUT À POINT CENTRAL FE4B TIRET HAUT ONDULÉ FE4C TIRET HAUT DOUBLE ONDULÉ FE4D TIRET BAS AVEC POINTILLÉS FE4E TIRET BAS À POINT CENTRAL FE4F TIRET BAS ONDULÉ @@ FE50 Petites variantes de forme FE6F FE50 VIRGULE MINUSCULE FE51 VIRGULE IDÉOGRAPHIQUE MINUSCULE FE52 POINT MINUSCULE FE53 FE54 POINT-VIRGULE MINUSCULE FE55 DEUX-POINTS MINUSCULE FE56 POINT D'INTERROGATION MINUSCULE FE57 POINT D'EXCLAMATION MINUSCULE FE58 TRAIT D'UNION CADRATIN MINUSCULE FE59 PARENTHÈSE GAUCHE MINUSCULE FE5A PARENTHÈSE DROITE MINUSCULE FE5B ACCOLADE GAUCHE MINUSCULE FE5C ACCOLADE DROITE MINUSCULE FE5D CROCHET GAUCHE EN ÉCAILLE MINUSCULE FE5E CROCHET DROIT EN ÉCAILLE MINUSCULE FE5F CROISILLON MINUSCULE FE60 PERLUÈTE MINUSCULE FE61 ASTÉRISQUE MINUSCULE FE62 SIGNE PLUS MINUSCULE FE63 TIRET MINUSCULE FE64 SIGNE INFÉRIEUR À MINUSCULE FE65 SIGNE SUPÉRIEUR À MINUSCULE FE66 SIGNE ÉGAL À MINUSCULE FE67 FE68 BARRE OBLIQUE INVERSÉE MINUSCULE (contre-cotice minuscule) FE69 SYMBOLE DOLLAR MINUSCULE FE6A SYMBOLE POUR CENT MINUSCULE FE6B ARROBE MINUSCULE (à commercial, arobas, arobase, arrobas [minuscule]) @@ FE70 Formes de présentation arabes B FEFF FE70 FATHATAN ARABE ISOLÉ FE71 TATOUÏL FATHATAN EN CHEF ARABE FE72 DAMMATAN ARABE ISOLÉ FE74 KASRATAN ISOLÉ ARABE FE76 FATHA ISOLÉ ARABE FE77 FATHA MÉDIAL ARABE FE78 DAMMA ISOLÉ ARABE FE79 DAMMA MÉDIAL ARABE FE7A KASRA ISOLÉ ARABE FE7B KASRA MÉDIAL ARABE FE7C CHADDA ISOLÉ ARABE FE7D CHADDA MÉDIAL ARABE FE7E SOUKOUN ISOLÉ ARABE FE7F SOUKOUN MÉDIAL ARABE FE80 LETTRE ARABE HAMZA ISOLÉ FE81 LETTRE ARABE ALIF MADDA EN CHEF ISOLÉ FE82 LETTRE ARABE ALIF MADDA EN CHEF FINAL FE83 LETTRE ARABE ALIF HAMZA EN CHEF ISOLÉ FE84 LETTRE ARABE FINAL FE85 LETTRE ARABE WAW HAMZA EN CHEF ISOLÉ FE86 LETTRE ARABE WAW HAMZA EN CHEF FINAL FE87 LETTRE ARABE ALIF HAMZA SOUSCRIT ISOLÉ FE88 LETTRE ARABE ALIF HAMZA SOUSCRIT FINAL FE89 LETTRE ARABE YA' HAMZA EN CHEF ISOLÉ FE8A LETTRE ARABE YA' HAMZA EN CHEF FINAL FE8B LETTRE ARABE YA' HAMZA EN CHEF INITIAL FE8C LETTRE ARABE YA' HAMZA EN CHEF MÉDIAL FE8D LETTRE ARABE ALIF ISOLÉ FE8E LETTRE ARABE ALIF FINAL FE8F LETTRE ARABE BA' ISOLÉ FE90 LETTRE ARABE BA' FINAL FE91 LETTRE ARABE BA' INITIAL FE92 LETTRE ARABE BA' MÉDIAL FE93 LETTRE ARABE TÉ' MARBOUTA ISOLÉ FE94 LETTRE ARABE TÉ' MARBOUTA FINAL FE95 LETTRE ARABE TÉ' ISOLÉ FE96 LETTRE ARABE TÉ' FINAL FE97 LETTRE ARABE TÉ' INITIAL FE98 LETTRE ARABE TÉ' MÉDIAL FE99 LETTRE ARABE THÉ' ISOLÉ FE9A LETTRE ARABE THÉ' FINAL FE9B LETTRE ARABE THÉ' INITIAL FE9C LETTRE ARABE THÉ' MÉDIAL FE9D LETTRE ARABE DJÎM ISOLÉ FE9E LETTRE ARABE DJÎM FINAL FE9F LETTRE ARABE DJÎM INITIAL FEA0 LETTRE ARABE DJÎM MÉDIAL FEA1 LETTRE ARABE HA' ISOLÉ FEA2 LETTRE ARABE HA' FINAL FEA3 LETTRE ARABE HA' INITIAL FEA4 LETTRE ARABE HA' MÉDIAL FEA5 LETTRE ARABE KHA' ISOLÉ FEA6 LETTRE ARABE KHA' FINAL FEA7 LETTRE ARABE KHA' INITIAL FEA8 LETTRE ARABE KHA' MÉDIAL FEA9 LETTRE ARABE DAL ISOLÉ FEAA LETTRE ARABE DAL FINAL FEAB LETTRE ARABE DHAL ISOLÉ FEAC LETTRE ARABE DHAL FINAL FEAD LETTRE ARABE RA' ISOLÉ FEAE LETTRE ARABE RA' FINAL FEAF LETTRE ARABE ZAÏ ISOLÉ FEB0 LETTRE ARABE ZAÏ FINAL FEB1 LETTRE ARABE SÎN ISOLÉ FEB2 LETTRE ARABE SÎN FINAL FEB3 LETTRE ARABE SÎN INITIAL FEB4 LETTRE ARABE SÎN MÉDIAL FEB5 LETTRE ARABE CHÎN ISOLÉ FEB6 LETTRE ARABE CHÎN FINAL FEB7 LETTRE ARABE CHÎN INITIAL FEB8 LETTRE ARABE CHÎN MÉDIAL FEB9 LETTRE ARABE SAD ISOLÉ FEBA LETTRE ARABE SAD FINAL FEBB LETTRE ARABE SAD INITIAL FEBC LETTRE ARABE SAD MÉDIAL FEBD LETTRE ARABE DAD ISOLÉ FEBE LETTRE ARABE DAD FINAL FEBF LETTRE ARABE DAD INITIAL FEC0 LETTRE ARABE DAD MÉDIAL FEC1 LETTRE ARABE TA' ISOLÉ FEC2 LETTRE ARABE TA' FINAL FEC3 LETTRE ARABE TA' INITIAL FEC4 LETTRE ARABE TA' MÉDIAL FEC5 LETTRE ARABE ZZA' ISOLÉ FEC6 LETTRE ARABE ZZA' FINAL FEC7 LETTRE ARABE ZZA' INITIAL FEC8 LETTRE ARABE ZZA' MÉDIAL FEC9 LETTRE ARABE 'AÏN ISOLÉ FECA LETTRE ARABE 'AÏN FINAL FECB LETTRE ARABE 'AÏN INITIAL FECC LETTRE ARABE 'AÏN MÉDIAL FECD LETTRE ARABE GHAÏN ISOLÉ FECE LETTRE ARABE GHAÏN FINAL FECF LETTRE ARABE GHAÏN INITIAL FED0 LETTRE ARABE GHAÏN MÉDIAL FED1 LETTRE ARABE FA' ISOLÉ FED2 LETTRE ARABE FA' FINAL FED3 LETTRE ARABE FA' INITIAL FED4 LETTRE ARABE FA' MÉDIAL FED5 LETTRE ARABE QAF ISOLÉ FED6 LETTRE ARABE QAF FINAL FED7 LETTRE ARABE QAF INITIAL FED8 LETTRE ARABE QAF MÉDIAL FED9 LETTRE ARABE KAF ISOLÉ FEDA LETTRE ARABE KAF FINAL FEDB LETTRE ARABE KAF INITIAL FEDC LETTRE ARABE KAF MÉDIAL FEDD LETTRE ARABE LAM ISOLÉ FEDE LETTRE ARABE LAM FINAL FEDF LETTRE ARABE LAM INITIAL FEE0 LETTRE ARABE LAM MÉDIAL FEE1 LETTRE ARABE MÎM ISOLÉ FEE2 LETTRE ARABE MÎM FINAL FEE3 LETTRE ARABE MÎM INITIAL FEE4 LETTRE ARABE MÎM MÉDIAL FEE5 LETTRE ARABE NOÛN ISOLÉ FEE6 LETTRE ARABE NOÛN FINAL FEE7 LETTRE ARABE NOÛN INITIAL FEE8 LETTRE ARABE NOÛN MÉDIAL FEE9 LETTRE ARABE HÉ' ISOLÉ FEEA LETTRE ARABE HÉ' FINAL FEEB LETTRE ARABE HÉ' INITIAL FEEC LETTRE ARABE HÉ' MÉDIAL FEED LETTRE ARABE WAW ISOLÉ FEEE LETTRE ARABE WAW FINAL FEEF LETTRE ARABE ALIF MAKSOURA ISOLÉ FEF0 LETTRE ARABE ALIF MAKSOURA FINAL FEF1 LETTRE ARABE YA' ISOLÉ FEF2 LETTRE ARABE YA' FINAL FEF3 LETTRE ARABE YA' INITIAL FEF4 LETTRE ARABE YA' MÉDIAL FEF5 LIGATURE ARABE LAM ALIF MADDA EN CHEF ISOLÉ FEF6 LIGATURE ARABE LAM ALIF MADDA EN CHEF FINAL FEF7 LIGATURE ARABE LAM ALIF HAMZA EN CHEF ISOLÉ FEF8 LIGATURE ARABE LAM ALIF HAMZA EN CHEF FINAL FEF9 LIGATURE ARABE LAM ALIF HAMZA SOUSCRIT ISOLÉ FEFA LIGATURE ARABE LAM ALIF HAMZA SOUSCRIT FINAL FEFB LIGATURE ARABE LAM ALIF ISOLÉ FEFC LIGATURE ARABE LAM ALIF FINAL FEFF ESPACE INSÉCABLE SANS CHASSE @@ FF00 Formes de demi et pleine chasse FFEF FF01 POINT D'EXCLAMATION PLEINE CHASSE FF02 GUILLEMET PLEINE CHASSE FF03 CROISILLON PLEINE CHASSE FF04 SYMBOLE DOLLAR PLEINE CHASSE FF05 SYMBOLE POUR CENT PLEINE CHASSE FF06 PERLUÈTE PLEINE CHASSE FF07 APOSTROPHE PLEINE CHASSE FF08 PARENTHÈSE GAUCHE PLEINE CHASSE FF09 PARENTHÈSE DROITE PLEINE CHASSE FF0A ASTÉRISQUE PLEINE CHASSE FF0B SIGNE PLUS PLEINE CHASSE FF0C VIRGULE PLEINE CHASSE FF0D TIRET PLEINE CHASSE FF0E POINT PLEINE CHASSE FF0F BARRE OBLIQUE PLEINE CHASSE (cotice pleine chasse) FF10 CHIFFRE ZÉRO PLEINE CHASSE FF11 CHIFFRE UN PLEINE CHASSE FF12 CHIFFRE DEUX PLEINE CHASSE FF13 CHIFFRE TROIS PLEINE CHASSE FF14 CHIFFRE QUATRE PLEINE CHASSE FF15 CHIFFRE CINQ PLEINE CHASSE FF16 CHIFFRE SIX PLEINE CHASSE FF17 CHIFFRE SEPT PLEINE CHASSE FF18 CHIFFRE HUIT PLEINE CHASSE FF19 CHIFFRE NEUF PLEINE CHASSE FF1A DEUX-POINTS COLON PLEINE CHASSE FF1B POINT-VIRGULE PLEINE CHASSE FF1C SIGNE INFÉRIEUR À PLEINE CHASSE FF1D SIGNE ÉGAL À PLEINE CHASSE FF1E SIGNE SUPÉRIEUR À PLEINE CHASSE FF1F POINT D'INTERROGATION PLEINE CHASSE FF20 ARROBE PLEINE CHASSE (à commercial,arobas,arobase,arrobas [pleine chasse]) FF21 LETTRE MAJUSCULE LATINE A PLEINE CHASSE FF22 LETTRE MAJUSCULE LATINE B PLEINE CHASSE FF23 LETTRE MAJUSCULE LATINE C PLEINE CHASSE FF24 LETTRE MAJUSCULE LATINE D PLEINE CHASSE FF25 LETTRE MAJUSCULE LATINE E PLEINE CHASSE FF26 LETTRE MAJUSCULE LATINE F PLEINE CHASSE FF27 LETTRE MAJUSCULE LATINE G PLEINE CHASSE FF28 LETTRE MAJUSCULE LATINE H PLEINE CHASSE FF29 LETTRE MAJUSCULE LATINE I PLEINE CHASSE FF2A LETTRE MAJUSCULE LATINE J PLEINE CHASSE FF2B LETTRE MAJUSCULE LATINE K PLEINE CHASSE FF2C LETTRE MAJUSCULE LATINE L PLEINE CHASSE FF2D LETTRE MAJUSCULE LATINE M PLEINE CHASSE FF2E LETTRE MAJUSCULE LATINE N PLEINE CHASSE FF2F LETTRE MAJUSCULE LATINE O PLEINE CHASSE FF30 LETTRE MAJUSCULE LATINE P PLEINE CHASSE FF31 LETTRE MAJUSCULE LATINE Q PLEINE CHASSE FF32 LETTRE MAJUSCULE LATINE R PLEINE CHASSE FF33 LETTRE MAJUSCULE LATINE S PLEINE CHASSE FF34 LETTRE MAJUSCULE LATINE T PLEINE CHASSE FF35 LETTRE MAJUSCULE LATINE U PLEINE CHASSE FF36 LETTRE MAJUSCULE LATINE V PLEINE CHASSE FF37 LETTRE MAJUSCULE LATINE W PLEINE CHASSE FF38 LETTRE MAJUSCULE LATINE X PLEINE CHASSE FF39 LETTRE MAJUSCULE LATINE Y PLEINE CHASSE FF3A LETTRE MAJUSCULE LATINE Z PLEINE CHASSE FF3B CROCHET GAUCHE PLEINE CHASSE FF3C BARRE OBLIQUE INVERSÉE PLEINE CHASSE (contre-cotice pleine chasse) FF3D CROCHET DROIT PLEINE CHASSE FF3E ACCENT CIRCONFLEXE PLEINE CHASSE FF3F TIRET BAS PLEINE CHASSE FF40 ACCENT GRAVE PLEINE CHASSE FF41 LETTRE MINUSCULE LATINE A PLEINE CHASSE FF42 LETTRE MINUSCULE LATINE B PLEINE CHASSE FF43 LETTRE MINUSCULE LATINE C PLEINE CHASSE FF44 LETTRE MINUSCULE LATINE D PLEINE CHASSE FF45 LETTRE MINUSCULE LATINE E PLEINE CHASSE FF46 LETTRE MINUSCULE LATINE F PLEINE CHASSE FF47 LETTRE MINUSCULE LATINE G PLEINE CHASSE FF48 LETTRE MINUSCULE LATINE H PLEINE CHASSE FF49 LETTRE MINUSCULE LATINE I PLEINE CHASSE FF4A LETTRE MINUSCULE LATINE J PLEINE CHASSE FF4B LETTRE MINUSCULE LATINE K PLEINE CHASSE FF4C LETTRE MINUSCULE LATINE L PLEINE CHASSE FF4D LETTRE MINUSCULE LATINE M PLEINE CHASSE FF4E LETTRE MINUSCULE LATINE N PLEINE CHASSE FF4F LETTRE MINUSCULE LATINE O PLEINE CHASSE FF50 LETTRE MINUSCULE LATINE P PLEINE CHASSE FF51 LETTRE MINUSCULE LATINE Q PLEINE CHASSE FF52 LETTRE MINUSCULE LATINE R PLEINE CHASSE FF53 LETTRE MINUSCULE LATINE S PLEINE CHASSE FF54 LETTRE MINUSCULE LATINE T PLEINE CHASSE FF55 LETTRE MINUSCULE LATINE U PLEINE CHASSE FF56 LETTRE MINUSCULE LATINE V PLEINE CHASSE FF57 LETTRE MINUSCULE LATINE W PLEINE CHASSE FF58 LETTRE MINUSCULE LATINE X PLEINE CHASSE FF59 LETTRE MINUSCULE LATINE Y PLEINE CHASSE FF5A LETTRE MINUSCULE LATINE Z PLEINE CHASSE FF5B ACCOLADE GAUCHE PLEINE CHASSE FF5C LIGNE VERTICALE PLEINE CHASSE FF5D ACCOLADE DROITE PLEINE CHASSE FF5E TILDE PLEINE CHASSE FF61 POINT IDÉOGRAPHIQUE DEMI-CHASSE FF62 CROCHET GAUCHE EN COIN DEMI-CHASSE FF63 CROCHET DROIT EN COIN DEMI-CHASSE FF64 VIRGULE IDÉOGRAPHIQUE DEMI-CHASSE FF65 POINT MÉDIAN KATAKANA DEMI-CHASSE FF66 SYLLABE KATAKANA WO DEMI-CHASSE FF67 SYLLABE KATAKANA PETIT A DEMI-CHASSE FF68 SYLLABE KATAKANA PETIT I DEMI-CHASSE FF69 SYLLABE KATAKANA PETIT U DEMI-CHASSE FF6A SYLLABE KATAKANA PETIT E DEMI-CHASSE FF6B SYLLABE KATAKANA PETIT O DEMI-CHASSE FF6C SYLLABE KATAKANA PETIT YA DEMI-CHASSE FF6D SYLLABE KATAKANA PETIT YU DEMI-CHASSE FF6E SYLLABE KATAKANA PETIT YO DEMI-CHASSE FF6F SYLLABE KATAKANA PETIT TU DEMI-CHASSE FF70 MARQUE KATAKANA-HIRAGANA DE SON PROLONGÉ DEMI-CHASSE FF71 SYLLABE KATAKANA A DEMI-CHASSE FF72 SYLLABE KATAKANA I DEMI-CHASSE FF73 SYLLABE KATAKANA U DEMI-CHASSE FF74 SYLLABE KATAKANA E DEMI-CHASSE FF75 SYLLABE KATAKANA O DEMI-CHASSE FF76 SYLLABE KATAKANA KA DEMI-CHASSE FF77 SYLLABE KATAKANA KI DEMI-CHASSE FF78 SYLLABE KATAKANA KU DEMI-CHASSE FF79 SYLLABE KATAKANA KE DEMI-CHASSE FF7A SYLLABE KATAKANA KO DEMI-CHASSE FF7B SYLLABE KATAKANA SA DEMI-CHASSE FF7C SYLLABE KATAKANA SI DEMI-CHASSE FF7D SYLLABE KATAKANA SU DEMI-CHASSE FF7E SYLLABE KATAKANA SE DEMI-CHASSE FF7F SYLLABE KATAKANA SO DEMI-CHASSE FF80 SYLLABE KATAKANA TA DEMI-CHASSE FF81 SYLLABE KATAKANA TI DEMI-CHASSE FF82 SYLLABE KATAKANA TU DEMI-CHASSE FF83 SYLLABE KATAKANA TE DEMI-CHASSE FF84 SYLLABE KATAKANA TO DEMI-CHASSE FF85 SYLLABE KATAKANA NA DEMI-CHASSE FF86 SYLLABE KATAKANA NI DEMI-CHASSE FF87 SYLLABE KATAKANA NU DEMI-CHASSE FF88 SYLLABE KATAKANA NE DEMI-CHASSE FF89 SYLLABE KATAKANA NO DEMI-CHASSE FF8A SYLLABE KATAKANA HA DEMI-CHASSE FF8B SYLLABE KATAKANA HI DEMI-CHASSE FF8C SYLLABE KATAKANA HU DEMI-CHASSE FF8D SYLLABE KATAKANA HE DEMI-CHASSE FF8E SYLLABE KATAKANA HO DEMI-CHASSE FF8F SYLLABE KATAKANA MA DEMI-CHASSE FF90 SYLLABE KATAKANA MI DEMI-CHASSE FF91 SYLLABE KATAKANA MU DEMI-CHASSE FF92 SYLLABE KATAKANA ME DEMI-CHASSE FF93 SYLLABE KATAKANA MO DEMI-CHASSE FF94 SYLLABE KATAKANA YA DEMI-CHASSE FF95 SYLLABE KATAKANA YU DEMI-CHASSE FF96 SYLLABE KATAKANA YO DEMI-CHASSE FF97 SYLLABE KATAKANA RA DEMI-CHASSE FF98 SYLLABE KATAKANA RI DEMI-CHASSE FF99 SYLLABE KATAKANA RU DEMI-CHASSE FF9A SYLLABE KATAKANA RE DEMI-CHASSE FF9B SYLLABE KATAKANA RO DEMI-CHASSE FF9C SYLLABE KATAKANA WA DEMI-CHASSE FF9D SYLLABE KATAKANA N DEMI-CHASSE FF9E MARQUE KATAKANA DE SON VOISÉ DEMI-CHASSE (marque katakana-hiragana de son voisé demi-chasse) FF9F MARQUE KATAKANA DE SON SEMI-VOISÉ DEMI-CHASSE (marque katakana-hiragana de son semi-voisé demi-chasse) FFA0 BOURRE HANGÛL DEMI-CHASSE FFA1 LETTRE HANGÛL KIYOK DEMI-CHASSE FFA2 LETTRE HANGÛL SSANGKIYOK DEMI-CHASSE FFA3 LETTRE HANGÛL KIYOK-SIÔS DEMI-CHASSE FFA4 LETTRE HANGÛL NIÛN DEMI-CHASSE FFA5 LETTRE HANGÛL NIÛN-TCHIÛTCH DEMI-CHASSE FFA6 LETTRE HANGÛL NIÛN-HIÛH DEMI-CHASSE FFA7 LETTRE HANGÛL TIKÛT DEMI-CHASSE FFA8 LETTRE HANGÛL SSANGTIKÛT DEMI-CHASSE FFA9 LETTRE HANGÛL RIÛL DEMI-CHASSE FFAA LETTRE HANGÛL RIÛL-KIYOK DEMI-CHASSE FFAB LETTRE HANGÛL RIÛL-MIÛM DEMI-CHASSE FFAC LETTRE HANGÛL RIÛL-PIÛP DEMI-CHASSE FFAD LETTRE HANGÛL RIÛL-SIÔS DEMI-CHASSE FFAE LETTRE HANGÛL RIÛL-T'IÛT' DEMI-CHASSE FFAF LETTRE HANGÛL RIÛL-P'IÛP' DEMI-CHASSE FFB0 LETTRE HANGÛL RIÛL-HIÛH DEMI-CHASSE FFB1 LETTRE HANGÛL MIÛM DEMI-CHASSE FFB2 LETTRE HANGÛL PIÛP DEMI-CHASSE FFB3 LETTRE HANGÛL SSANGPIÛP DEMI-CHASSE FFB4 LETTRE HANGÛL PIÛP-SIÔS DEMI-CHASSE FFB5 LETTRE HANGÛL SIÔS DEMI-CHASSE FFB6 LETTRE HANGÛL SSANGSIÔS DEMI-CHASSE FFB7 LETTRE HANGÛL IÛNG DEMI-CHASSE FFB8 LETTRE HANGÛL TCHIÛTCH DEMI-CHASSE FFB9 LETTRE HANGÛL SSANGTCHIÛTCH DEMI-CHASSE FFBA LETTRE HANGÛL TCH'IÛTCH' DEMI-CHASSE FFBB LETTRE HANGÛL K'IÛK' DEMI-CHASSE FFBC LETTRE HANGÛL T'IÛT' DEMI-CHASSE FFBD LETTRE HANGÛL P'IÛP' DEMI-CHASSE FFBE LETTRE HANGÛL HIÛH DEMI-CHASSE FFC2 LETTRE HANGÛL A DEMI-CHASSE FFC3 LETTRE HANGÛL È DEMI-CHASSE FFC4 LETTRE HANGÛL YA DEMI-CHASSE FFC5 LETTRE HANGÛL YÈ DEMI-CHASSE FFC6 LETTRE HANGÛL O DEMI-CHASSE FFC7 LETTRE HANGÛL É DEMI-CHASSE FFCA LETTRE HANGÛL YO DEMI-CHASSE FFCB LETTRE HANGÛL YÉ DEMI-CHASSE FFCC LETTRE HANGÛL Ô DEMI-CHASSE FFCD LETTRE HANGÛL WA DEMI-CHASSE FFCE LETTRE HANGÛL WÈ DEMI-CHASSE FFCF LETTRE HANGÛL EU DEMI-CHASSE FFD2 LETTRE HANGÛL YÔ DEMI-CHASSE FFD3 LETTRE HANGÛL OU DEMI-CHASSE FFD4 LETTRE HANGÛL WO DEMI-CHASSE FFD5 LETTRE HANGÛL WÉ DEMI-CHASSE FFD6 LETTRE HANGÛL WI DEMI-CHASSE FFD7 LETTRE HANGÛL YOU DEMI-CHASSE FFDA LETTRE HANGÛL Û DEMI-CHASSE FFDB LETTRE HANGÛL ÛI DEMI-CHASSE FFDC LETTRE HANGÛL I DEMI-CHASSE FFE0 SYMBOLE CENTIME PLEINE CHASSE FFE1 SYMBOLE LIVRE PLEINE CHASSE FFE2 SIGNE NÉGATION PLEINE CHASSE FFE3 MACRON PLEINE CHASSE * FFE4 LIGNE BRISÉE PLEINE CHASSE FFE5 SYMBOLE YEN PLEINE CHASSE FFE6 SYMBOLE WON PLEINE CHASSE FFE8 LIGNE VERTICALE MINCE DEMI-CHASSE FFE9 FLÈCHE VERS LA GAUCHE DEMI-CHASSE FFEA FLÈCHE VERS LE HAUT DEMI-CHASSE FFEB FLÈCHE VERS LA DROITE DEMI-CHASSE FFEC FLÈCHE VERS LE BAS DEMI-CHASSE FFED CARRÉ NOIR DEMI-CHASSE FFEE CERCLE BLANC DEMI-CHASSE @@ FFF0 Caractères spéciaux FFFF FFF9 ANCRE D'ANNOTATION INTERLINÉAIRE FFFA SÉPARATEUR D'ANNOTATION INTERLINÉAIRE FFFB TERMINATEUR D'ANNOTATION INTERLINÉAIRE FFFC CARACTÈRE DE REMPLACEMENT D'OBJET FFFD CARACTÈRE DE REMPLACEMENT FFFE FFFF recode-3.7.15/keld/control.def0000644000175000017500000000376513226751246011633 Control characters Names according to ISO 2047 and ISO 6429:1988 Acronyms for the 7-bit control codes taken from ISO 2047 Acronyms for the 8-bit control codes taken if possible from 6429, else an abbrevation of the 6429 names not conflicting with other 6429 names. group 000 plane 000 row 000 cell 000 NU NULL (NUL) SH START OF HEADING (SOH) SX START OF TEXT (STX) EX END OF TEXT (ETX) ET END OF TRANSMISSION (EOT) EQ ENQUIRY (ENQ) AK ACKNOWLEDGE (ACK) BL BELL (BEL) BS BACKSPACE (BS) HT CHARACTER TABULATION (HT) LF LINE FEED (LF) VT LINE TABULATION (VT) FF FORM FEED (FF) CR CARRIAGE RETURN (CR) SO SHIFT OUT (SO) SI SHIFT IN (SI) DL DATALINK ESCAPE (DLE) D1 DEVICE CONTROL ONE (DC1) D2 DEVICE CONTROL TWO (DC2) D3 DEVICE CONTROL THREE (DC3) D4 DEVICE CONTROL FOUR (DC4) NK NEGATIVE ACKNOWLEDGE (NAK) SY SYNCHRONOUS IDLE (SYN) EB END OF TRANSMISSION BLOCK (ETB) CN CANCEL (CAN) EM END OF MEDIUM (EM) SB SUBSTITUTE (SUB) EC ESCAPE (ESC) FS FILE SEPARATOR (IS4) GS GROUP SEPARATOR (IS3) RS RECORD SEPARATOR (IS2) US UNIT SEPARATOR (IS1) cell 127 DT DELETE (DEL) PA PADDING CHARACTER (PAD) HO HIGH OCTET PRESET (HOP) BH BREAK PERMITTED HERE (BPH) NH NO BREAK HERE (NBH) IN INDEX (IND) NL NEXT LINE (NEL) SA START OF SELECTED AREA (SSA) ES END OF SELECTED AREA (ESA) HS CHARACTER TABULATION SET (HTS) HJ CHARACTER TABULATION WITH JUSTIFICATION (HTJ) VS LINE TABULATION SET (VTS) PD PARTIAL LINE FORWARD (PLD) PU PARTIAL LINE BACKWARD (PLU) RI REVERSE LINE FEED (RI) S2 SINGLE-SHIFT TWO (SS2) S3 SINGLE-SHIFT THREE (SS3) DC DEVICE CONTROL STRING (DCS) P1 PRIVATE USE ONE (PU1) P2 PRIVATE USE TWO (PU2) TS SET TRANSMIT STATE (STS) CC CANCEL CHARACTER (CCH) MW MESSAGE WAITING (MW) SG START OF GUARDED AREA (SPA) EG END OF GUARDED AREA (EPA) SS START OF STRING (SOS) GC SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) SC SINGLE CHARACTER INTRODUCER (SCI) CI CONTROL SEQUENCE INTRODUCER (CSI) ST STRING TERMINATOR (ST) OC OPERATING SYSTEM COMMAND (OSC) PM PRIVACY MESSAGE (PM) AC APPLICATION PROGRAM COMMAND (APC) recode-3.7.15/keld/other.def0000644000175000017500000000503113226751246011260 Private use group 000 plane 000 row 224 cell 000 The NON-SPACING entries are for convenience only, as they do not constitute a character, but are used as part of the coding for a character. The reference to the character is first the name of the coded character set, and after the _ the hexadecimal code in the coded character set "3 NON-SPACING UMLAUT (not a real character) "1 NON-SPACING DIAERESIS WITH ACCENT (not a real character) "! NON-SPACING GRAVE ACCENT (not a real character) "' NON-SPACING ACUTE ACCENT (not a real character) "> NON-SPACING CIRCUMFLEX ACCENT (not a real character) "? NON-SPACING TILDE (not a real character) "- NON-SPACING MACRON (not a real character) "( NON-SPACING BREVE (not a real character) ". NON-SPACING DOT ABOVE (not a real character) ": NON-SPACING DIAERESIS (not a real character) "0 NON-SPACING RING ABOVE (not a real character) ", NON-SPACING CEDILLA (not a real character) "_ NON-SPACING LOW LINE (not a real character) "" NON-SPACING DOUBLE ACCUTE ACCENT (not a real character) "; NON-SPACING OGONEK (not a real character) "< NON-SPACING CARON (not a real character) "= NON-SPACING DOUBLE LOW LINE (not a real character) "/ NON-SPACING LONG SOLIDUS OVERLAY (not a real character) "p GREEK NON-SPACING PSILI PNEUMATA (not a real character) "d GREEK NON-SPACING DASIA PNEUMATA (not a real character) "i GREEK NON-SPACING IOTA BELOW (not a real character) +_ IDEOGRAPHIC DITTO MARK a+: ARABIC LETTER ALEF FINAL FORM COMPATIBILITY Tel TEL COMPATIBILITY SIGN UA Unit space A UB Unit space B t3 GREEK SMALL LETTER STIGMA m3 GREEK SMALL LETTER DIGAMMA k3 GREEK SMALL LETTER KOPPA p3 GREEK SMALL LETTER SAMPI Mc APPLE LOGO (Macintosh_F0) Fl HUNGARIAN FLORINTH (CWI_9F) Ss LATIN CAPITAL LIGATURE SS (German) (CORK_FF) Ch LATIN SMALL LIGATURE CH (Slovak) (KOI-8_CS2_C7) CH LATIN CAPITAL LIGATURE CH (Slovak) (KOI-8_CS2_E7) J LATIN CAPITAL LETTER J WITH CARON (the lowercase exist U01f0) a8 b8 c8 d8 e8 f8 g8 h8 i8 j8 k8 l8 m8 n8 o8 p8 q8 r8 s8 t8 u8 v8 w8 x8 y8 z8 __ indicates unfinished (Mnemonic) /c JOIN THIS LINE WITH NEXT LINE (Mnemonic) recode-3.7.15/keld/iso10646.def0000644000175000017500000022435413226751246011345 Repertoire according to ISO/IEC 10646-1:1993 With modifications as per ISO/IEC JTC1/SC2/WG2 N949 keld@dkuug.dk 1997-12-13 group 000 Plane 000 row 000 cell 032 SP SPACE ! EXCLAMATION MARK " QUOTATION MARK Nb NUMBER SIGN DO DOLLAR SIGN % PERCENT SIGN & AMPERSAND ' APOSTROPHE ( LEFT PARENTHESIS ) RIGHT PARENTHESIS * ASTERISK + PLUS SIGN , COMMA - HYPHEN-MINUS . FULL STOP / SOLIDUS 0 DIGIT ZERO 1 DIGIT ONE 2 DIGIT TWO 3 DIGIT THREE 4 DIGIT FOUR 5 DIGIT FIVE 6 DIGIT SIX 7 DIGIT SEVEN 8 DIGIT EIGHT 9 DIGIT NINE : COLON ; SEMICOLON < LESS-THAN SIGN = EQUALS SIGN > GREATER-THAN SIGN ? QUESTION MARK At COMMERCIAL AT A LATIN CAPITAL LETTER A B LATIN CAPITAL LETTER B C LATIN CAPITAL LETTER C D LATIN CAPITAL LETTER D E LATIN CAPITAL LETTER E F LATIN CAPITAL LETTER F G LATIN CAPITAL LETTER G H LATIN CAPITAL LETTER H I LATIN CAPITAL LETTER I J LATIN CAPITAL LETTER J K LATIN CAPITAL LETTER K L LATIN CAPITAL LETTER L M LATIN CAPITAL LETTER M N LATIN CAPITAL LETTER N O LATIN CAPITAL LETTER O P LATIN CAPITAL LETTER P Q LATIN CAPITAL LETTER Q R LATIN CAPITAL LETTER R S LATIN CAPITAL LETTER S T LATIN CAPITAL LETTER T U LATIN CAPITAL LETTER U V LATIN CAPITAL LETTER V W LATIN CAPITAL LETTER W X LATIN CAPITAL LETTER X Y LATIN CAPITAL LETTER Y Z LATIN CAPITAL LETTER Z <( LEFT SQUARE BRACKET // REVERSE SOLIDUS )> RIGHT SQUARE BRACKET '> CIRCUMFLEX ACCENT _ LOW LINE '! GRAVE ACCENT a LATIN SMALL LETTER A b LATIN SMALL LETTER B c LATIN SMALL LETTER C d LATIN SMALL LETTER D e LATIN SMALL LETTER E f LATIN SMALL LETTER F g LATIN SMALL LETTER G h LATIN SMALL LETTER H i LATIN SMALL LETTER I j LATIN SMALL LETTER J k LATIN SMALL LETTER K l LATIN SMALL LETTER L m LATIN SMALL LETTER M n LATIN SMALL LETTER N o LATIN SMALL LETTER O p LATIN SMALL LETTER P q LATIN SMALL LETTER Q r LATIN SMALL LETTER R s LATIN SMALL LETTER S t LATIN SMALL LETTER T u LATIN SMALL LETTER U v LATIN SMALL LETTER V w LATIN SMALL LETTER W x LATIN SMALL LETTER X y LATIN SMALL LETTER Y z LATIN SMALL LETTER Z (! LEFT CURLY BRACKET !! VERTICAL LINE !) RIGHT CURLY BRACKET '? TILDE cell 160 NS NO-BREAK SPACE !I INVERTED EXCLAMATION MARK Ct CENT SIGN Pd POUND SIGN Cu CURRENCY SIGN Ye YEN SIGN BB BROKEN BAR SE SECTION SIGN ': DIAERESIS Co COPYRIGHT SIGN -a FEMININE ORDINAL INDICATOR << LEFT-POINTING DOUBLE ANGLE QUOTATION MARK NO NOT SIGN -- SOFT HYPHEN Rg REGISTERED SIGN 'm MACRON DG DEGREE SIGN +- PLUS-MINUS SIGN 2S SUPERSCRIPT TWO 3S SUPERSCRIPT THREE '' ACUTE ACCENT My MICRO SIGN PI PILCROW SIGN .M MIDDLE DOT ', CEDILLA 1S SUPERSCRIPT ONE -o MASCULINE ORDINAL INDICATOR >> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 14 VULGAR FRACTION ONE QUARTER 12 VULGAR FRACTION ONE HALF 34 VULGAR FRACTION THREE QUARTERS ?I INVERTED QUESTION MARK A! LATIN CAPITAL LETTER A WITH GRAVE A' LATIN CAPITAL LETTER A WITH ACUTE A> LATIN CAPITAL LETTER A WITH CIRCUMFLEX A? LATIN CAPITAL LETTER A WITH TILDE A: LATIN CAPITAL LETTER A WITH DIAERESIS AA LATIN CAPITAL LETTER A WITH RING ABOVE AE LATIN CAPITAL LETTER AE (ash) C, LATIN CAPITAL LETTER C WITH CEDILLA E! LATIN CAPITAL LETTER E WITH GRAVE E' LATIN CAPITAL LETTER E WITH ACUTE E> LATIN CAPITAL LETTER E WITH CIRCUMFLEX E: LATIN CAPITAL LETTER E WITH DIAERESIS I! LATIN CAPITAL LETTER I WITH GRAVE I' LATIN CAPITAL LETTER I WITH ACUTE I> LATIN CAPITAL LETTER I WITH CIRCUMFLEX I: LATIN CAPITAL LETTER I WITH DIAERESIS D- LATIN CAPITAL LETTER ETH (Icelandic) N? LATIN CAPITAL LETTER N WITH TILDE O! LATIN CAPITAL LETTER O WITH GRAVE O' LATIN CAPITAL LETTER O WITH ACUTE O> LATIN CAPITAL LETTER O WITH CIRCUMFLEX O? LATIN CAPITAL LETTER O WITH TILDE O: LATIN CAPITAL LETTER O WITH DIAERESIS *X MULTIPLICATION SIGN O/ LATIN CAPITAL LETTER O WITH STROKE U! LATIN CAPITAL LETTER U WITH GRAVE U' LATIN CAPITAL LETTER U WITH ACUTE U> LATIN CAPITAL LETTER U WITH CIRCUMFLEX U: LATIN CAPITAL LETTER U WITH DIAERESIS Y' LATIN CAPITAL LETTER Y WITH ACUTE TH LATIN CAPITAL LETTER THORN (Icelandic) ss LATIN SMALL LETTER SHARP S (German) a! LATIN SMALL LETTER A WITH GRAVE a' LATIN SMALL LETTER A WITH ACUTE a> LATIN SMALL LETTER A WITH CIRCUMFLEX a? LATIN SMALL LETTER A WITH TILDE a: LATIN SMALL LETTER A WITH DIAERESIS aa LATIN SMALL LETTER A WITH RING ABOVE ae LATIN SMALL LETTER AE (ash) c, LATIN SMALL LETTER C WITH CEDILLA e! LATIN SMALL LETTER E WITH GRAVE e' LATIN SMALL LETTER E WITH ACUTE e> LATIN SMALL LETTER E WITH CIRCUMFLEX e: LATIN SMALL LETTER E WITH DIAERESIS i! LATIN SMALL LETTER I WITH GRAVE i' LATIN SMALL LETTER I WITH ACUTE i> LATIN SMALL LETTER I WITH CIRCUMFLEX i: LATIN SMALL LETTER I WITH DIAERESIS d- LATIN SMALL LETTER ETH (Icelandic) n? LATIN SMALL LETTER N WITH TILDE o! LATIN SMALL LETTER O WITH GRAVE o' LATIN SMALL LETTER O WITH ACUTE o> LATIN SMALL LETTER O WITH CIRCUMFLEX o? LATIN SMALL LETTER O WITH TILDE o: LATIN SMALL LETTER O WITH DIAERESIS -: DIVISION SIGN o/ LATIN SMALL LETTER O WITH STROKE u! LATIN SMALL LETTER U WITH GRAVE u' LATIN SMALL LETTER U WITH ACUTE u> LATIN SMALL LETTER U WITH CIRCUMFLEX u: LATIN SMALL LETTER U WITH DIAERESIS y' LATIN SMALL LETTER Y WITH ACUTE th LATIN SMALL LETTER THORN (Icelandic) y: LATIN SMALL LETTER Y WITH DIAERESIS row 001 cell 000 A- LATIN CAPITAL LETTER A WITH MACRON a- LATIN SMALL LETTER A WITH MACRON A( LATIN CAPITAL LETTER A WITH BREVE a( LATIN SMALL LETTER A WITH BREVE A; LATIN CAPITAL LETTER A WITH OGONEK a; LATIN SMALL LETTER A WITH OGONEK C' LATIN CAPITAL LETTER C WITH ACUTE c' LATIN SMALL LETTER C WITH ACUTE C> LATIN CAPITAL LETTER C WITH CIRCUMFLEX c> LATIN SMALL LETTER C WITH CIRCUMFLEX C. LATIN CAPITAL LETTER C WITH DOT ABOVE c. LATIN SMALL LETTER C WITH DOT ABOVE C< LATIN CAPITAL LETTER C WITH CARON c< LATIN SMALL LETTER C WITH CARON D< LATIN CAPITAL LETTER D WITH CARON d< LATIN SMALL LETTER D WITH CARON D/ LATIN CAPITAL LETTER D WITH STROKE d/ LATIN SMALL LETTER D WITH STROKE E- LATIN CAPITAL LETTER E WITH MACRON e- LATIN SMALL LETTER E WITH MACRON E( LATIN CAPITAL LETTER E WITH BREVE e( LATIN SMALL LETTER E WITH BREVE E. LATIN CAPITAL LETTER E WITH DOT ABOVE e. LATIN SMALL LETTER E WITH DOT ABOVE E; LATIN CAPITAL LETTER E WITH OGONEK e; LATIN SMALL LETTER E WITH OGONEK E< LATIN CAPITAL LETTER E WITH CARON e< LATIN SMALL LETTER E WITH CARON G> LATIN CAPITAL LETTER G WITH CIRCUMFLEX g> LATIN SMALL LETTER G WITH CIRCUMFLEX G( LATIN CAPITAL LETTER G WITH BREVE g( LATIN SMALL LETTER G WITH BREVE G. LATIN CAPITAL LETTER G WITH DOT ABOVE g. LATIN SMALL LETTER G WITH DOT ABOVE G, LATIN CAPITAL LETTER G WITH CEDILLA g, LATIN SMALL LETTER G WITH CEDILLA H> LATIN CAPITAL LETTER H WITH CIRCUMFLEX h> LATIN SMALL LETTER H WITH CIRCUMFLEX H/ LATIN CAPITAL LETTER H WITH STROKE h/ LATIN SMALL LETTER H WITH STROKE I? LATIN CAPITAL LETTER I WITH TILDE i? LATIN SMALL LETTER I WITH TILDE I- LATIN CAPITAL LETTER I WITH MACRON i- LATIN SMALL LETTER I WITH MACRON I( LATIN CAPITAL LETTER I WITH BREVE i( LATIN SMALL LETTER I WITH BREVE I; LATIN CAPITAL LETTER I WITH OGONEK i; LATIN SMALL LETTER I WITH OGONEK I. LATIN CAPITAL LETTER I WITH DOT ABOVE i. LATIN SMALL LETTER DOTLESS I IJ LATIN CAPITAL LIGATURE IJ ij LATIN SMALL LIGATURE IJ J> LATIN CAPITAL LETTER J WITH CIRCUMFLEX j> LATIN SMALL LETTER J WITH CIRCUMFLEX K, LATIN CAPITAL LETTER K WITH CEDILLA k, LATIN SMALL LETTER K WITH CEDILLA kk LATIN SMALL LETTER KRA (Greenlandic) L' LATIN CAPITAL LETTER L WITH ACUTE l' LATIN SMALL LETTER L WITH ACUTE L, LATIN CAPITAL LETTER L WITH CEDILLA l, LATIN SMALL LETTER L WITH CEDILLA L< LATIN CAPITAL LETTER L WITH CARON l< LATIN SMALL LETTER L WITH CARON L. LATIN CAPITAL LETTER L WITH MIDDLE DOT l. LATIN SMALL LETTER L WITH MIDDLE DOT L/ LATIN CAPITAL LETTER L WITH STROKE l/ LATIN SMALL LETTER L WITH STROKE N' LATIN CAPITAL LETTER N WITH ACUTE n' LATIN SMALL LETTER N WITH ACUTE N, LATIN CAPITAL LETTER N WITH CEDILLA n, LATIN SMALL LETTER N WITH CEDILLA N< LATIN CAPITAL LETTER N WITH CARON n< LATIN SMALL LETTER N WITH CARON 'n LATIN SMALL LETTER N PRECEDED BY APOSTROPHE NG LATIN CAPITAL LETTER ENG (Sami) ng LATIN SMALL LETTER ENG (Sami) O- LATIN CAPITAL LETTER O WITH MACRON o- LATIN SMALL LETTER O WITH MACRON O( LATIN CAPITAL LETTER O WITH BREVE o( LATIN SMALL LETTER O WITH BREVE O" LATIN CAPITAL LETTER O WITH DOUBLE ACUTE o" LATIN SMALL LETTER O WITH DOUBLE ACUTE OE LATIN CAPITAL LIGATURE OE oe LATIN SMALL LIGATURE OE R' LATIN CAPITAL LETTER R WITH ACUTE r' LATIN SMALL LETTER R WITH ACUTE R, LATIN CAPITAL LETTER R WITH CEDILLA r, LATIN SMALL LETTER R WITH CEDILLA R< LATIN CAPITAL LETTER R WITH CARON r< LATIN SMALL LETTER R WITH CARON S' LATIN CAPITAL LETTER S WITH ACUTE s' LATIN SMALL LETTER S WITH ACUTE S> LATIN CAPITAL LETTER S WITH CIRCUMFLEX s> LATIN SMALL LETTER S WITH CIRCUMFLEX S, LATIN CAPITAL LETTER S WITH CEDILLA s, LATIN SMALL LETTER S WITH CEDILLA S< LATIN CAPITAL LETTER S WITH CARON s< LATIN SMALL LETTER S WITH CARON T, LATIN CAPITAL LETTER T WITH CEDILLA t, LATIN SMALL LETTER T WITH CEDILLA T< LATIN CAPITAL LETTER T WITH CARON t< LATIN SMALL LETTER T WITH CARON T/ LATIN CAPITAL LETTER T WITH STROKE t/ LATIN SMALL LETTER T WITH STROKE U? LATIN CAPITAL LETTER U WITH TILDE u? LATIN SMALL LETTER U WITH TILDE U- LATIN CAPITAL LETTER U WITH MACRON u- LATIN SMALL LETTER U WITH MACRON U( LATIN CAPITAL LETTER U WITH BREVE u( LATIN SMALL LETTER U WITH BREVE U0 LATIN CAPITAL LETTER U WITH RING ABOVE u0 LATIN SMALL LETTER U WITH RING ABOVE U" LATIN CAPITAL LETTER U WITH DOUBLE ACUTE u" LATIN SMALL LETTER U WITH DOUBLE ACUTE U; LATIN CAPITAL LETTER U WITH OGONEK u; LATIN SMALL LETTER U WITH OGONEK W> LATIN CAPITAL LETTER W WITH CIRCUMFLEX w> LATIN SMALL LETTER W WITH CIRCUMFLEX Y> LATIN CAPITAL LETTER Y WITH CIRCUMFLEX y> LATIN SMALL LETTER Y WITH CIRCUMFLEX Y: LATIN CAPITAL LETTER Y WITH DIAERESIS Z' LATIN CAPITAL LETTER Z WITH ACUTE z' LATIN SMALL LETTER Z WITH ACUTE Z. LATIN CAPITAL LETTER Z WITH DOT ABOVE z. LATIN SMALL LETTER Z WITH DOT ABOVE Z< LATIN CAPITAL LETTER Z WITH CARON z< LATIN SMALL LETTER Z WITH CARON s1 LATIN SMALL LETTER LONG S b/ LATIN SMALL LETTER B WITH STROKE B2 LATIN CAPITAL LETTER B WITH HOOK cell 135 C2 LATIN CAPITAL LETTER C WITH HOOK c2 LATIN SMALL LETTER C WITH HOOK cell 145 F2 LATIN CAPITAL LETTER F WITH HOOK f2 LATIN SMALL LETTER F WITH HOOK cell 152 K2 LATIN CAPITAL LETTER K WITH HOOK k2 LATIN SMALL LETTER K WITH HOOK cell 160 O9 LATIN CAPITAL LETTER O WITH HORN o9 LATIN SMALL LETTER O WITH HORN OI LATIN CAPITAL LETTER OI oi LATIN SMALL LETTER OI cell 166 yr LATIN LETTER YR cell 175 U9 LATIN CAPITAL LETTER U WITH HORN u9 LATIN SMALL LETTER U WITH HORN cell 179 LATIN CAPITAL LETTER Y WITH HOOK LATIN SMALL LETTER Y WITH HOOK cell 181 Z/ LATIN CAPITAL LETTER Z WITH STROKE z/ LATIN SMALL LETTER Z WITH STROKE ED LATIN CAPITAL LETTER EZH cell 196 DZ< LATIN CAPITAL LETTER DZ WITH CARON Dz< LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON dz< LATIN SMALL LETTER DZ WITH CARON LJ3 LATIN CAPITAL LETTER LJ Lj3 LATIN CAPITAL LETTER L WITH SMALL LETTER J lj3 LATIN SMALL LETTER LJ NJ3 LATIN CAPITAL LETTER NJ Nj3 LATIN CAPITAL LETTER N WITH SMALL LETTER J nj3 LATIN SMALL LETTER NJ cell 205 A< LATIN CAPITAL LETTER A WITH CARON a< LATIN SMALL LETTER A WITH CARON I< LATIN CAPITAL LETTER I WITH CARON i< LATIN SMALL LETTER I WITH CARON O< LATIN CAPITAL LETTER O WITH CARON o< LATIN SMALL LETTER O WITH CARON U< LATIN CAPITAL LETTER U WITH CARON u< LATIN SMALL LETTER U WITH CARON U:- LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON u:- LATIN SMALL LETTER U WITH DIAERESIS AND MACRON U:' LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE u:' LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE U:< LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON u:< LATIN SMALL LETTER U WITH DIAERESIS AND CARON U:! LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE u:! LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE e1 LATIN SMALL LETTER TURNED E cell 222 A1 LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON a1 LATIN SMALL LETTER A WITH DIAERESIS AND MACRON A7 LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON a7 LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON A3 LATIN CAPITAL LETTER AE WITH MACRON (ash) a3 LATIN SMALL LETTER AE WITH MACRON (ash) G/ LATIN CAPITAL LETTER G WITH STROKE g/ LATIN SMALL LETTER G WITH STROKE G< LATIN CAPITAL LETTER G WITH CARON g< LATIN SMALL LETTER G WITH CARON K< LATIN CAPITAL LETTER K WITH CARON k< LATIN SMALL LETTER K WITH CARON O; LATIN CAPITAL LETTER O WITH OGONEK o; LATIN SMALL LETTER O WITH OGONEK O1 LATIN CAPITAL LETTER O WITH OGONEK AND MACRON o1 LATIN SMALL LETTER O WITH OGONEK AND MACRON EZ LATIN CAPITAL LETTER EZH WITH CARON ez LATIN SMALL LETTER EZH WITH CARON j< LATIN SMALL LETTER J WITH CARON cell 241 DZ3 LATIN CAPITAL LETTER DZ Dz3 LATIN CAPITAL LETTER D WITH SMALL LETTER Z dz3 LATIN SMALL LETTER DZ cell 244 G' LATIN CAPITAL LETTER G WITH ACUTE g' LATIN SMALL LETTER G WITH ACUTE cell 250 AA' LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE aa' LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE AE' LATIN CAPITAL LETTER AE WITH ACUTE (ash) ae' LATIN SMALL LETTER AE WITH ACUTE (ash) O/' LATIN CAPITAL LETTER O WITH STROKE AND ACUTE o/' LATIN SMALL LETTER O WITH STROKE AND ACUTE row 002 cell 000 A!! LATIN CAPITAL LETTER A WITH DOUBLE GRAVE a!! LATIN SMALL LETTER A WITH DOUBLE GRAVE A) LATIN CAPITAL LETTER A WITH INVERTED BREVE a) LATIN SMALL LETTER A WITH INVERTED BREVE E!! LATIN CAPITAL LETTER E WITH DOUBLE GRAVE e!! LATIN SMALL LETTER E WITH DOUBLE GRAVE E) LATIN CAPITAL LETTER E WITH INVERTED BREVE e) LATIN SMALL LETTER E WITH INVERTED BREVE I!! LATIN CAPITAL LETTER I WITH DOUBLE GRAVE i!! LATIN SMALL LETTER I WITH DOUBLE GRAVE I) LATIN CAPITAL LETTER I WITH INVERTED BREVE i) LATIN SMALL LETTER I WITH INVERTED BREVE O!! LATIN CAPITAL LETTER O WITH DOUBLE GRAVE o!! LATIN SMALL LETTER O WITH DOUBLE GRAVE O) LATIN CAPITAL LETTER O WITH INVERTED BREVE o) LATIN SMALL LETTER O WITH INVERTED BREVE R!! LATIN CAPITAL LETTER R WITH DOUBLE GRAVE r!! LATIN SMALL LETTER R WITH DOUBLE GRAVE R) LATIN CAPITAL LETTER R WITH INVERTED BREVE r) LATIN SMALL LETTER R WITH INVERTED BREVE U!! LATIN CAPITAL LETTER U WITH DOUBLE GRAVE u!! LATIN SMALL LETTER U WITH DOUBLE GRAVE U) LATIN CAPITAL LETTER U WITH INVERTED BREVE u) LATIN SMALL LETTER U WITH INVERTED BREVE cell 124 r1 LATIN SMALL LETTER R WITH LONG LEG .... cell 146 ed LATIN SMALL LETTER EZH .... cell 187 ;S MODIFIER LETTER TURNED COMMA cell 198 1> MODIFIER LETTER CIRCUMFLEX ACCENT '< CARON (Mandarin Chinese third tone) .... cell 201 1- MODIFIER LETTER MACRON (Mandarin Chinese first tone) MODIFIER LETTER ACUTE ACCENT (Mandarin Chinese second tone) cell 203 1! MODIFIER LETTER GRAVE ACCENT (Mandarin Chinese fourth tone) .... cell 216 '( BREVE '. DOT ABOVE (Mandarin Chinese light tone) '0 RING ABOVE '; OGONEK 1? SMALL TILDE cell 221 '" DOUBLE ACUTE ACCENT row 003 cell 000 COMBINING GRAVE ACCENT (Varia) COMBINING ACUTE ACCENT (Oxia) COMBINING CIRCUMFLEX ACCENT COMBINING TILDE COMBINING MACRON COMBINING OVERLINE cell 006 COMBINING BREVE (Vrachy) COMBINING DOT ABOVE COMBINING DIAERESIS (Dialytika) COMBINING HOOK ABOVE COMBINING RING ABOVE COMBINING DOUBLE ACCUTE ACCENT COMBINING CARON cell 039 COMBINING CEDILLA COMBINING OGONEK cell 050 COMBINING LOW LINE COMBINING DOUBLE LOW LINE cell 056 COMBINING LONG SOLIDUS OVERLAY cell 116 'G GREEK NUMERAL SIGN (Dexia keraia) ,G GREEK LOWER NUMERAL SIGN (Aristeri keraia) cell 122 j3 GREEK YPOGEGRAMMENI cell 126 ?% GREEK QUESTION MARK (Erotimatiko) cell 132 '* GREEK TONOS cell 133 '% GREEK DIALYTIKA TONOS A% GREEK CAPITAL LETTER ALPHA WITH TONOS .* GREEK ANO TELEIA cell 136 E% GREEK CAPITAL LETTER EPSILON WITH TONOS Y% GREEK CAPITAL LETTER ETA WITH TONOS I% GREEK CAPITAL LETTER IOTA WITH TONOS cell 140 O% GREEK CAPITAL LETTER OMICRON WITH TONOS cell 142 U% GREEK CAPITAL LETTER UPSILON WITH TONOS W% GREEK CAPITAL LETTER OMEGA WITH TONOS i3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS A* GREEK CAPITAL LETTER ALPHA B* GREEK CAPITAL LETTER BETA G* GREEK CAPITAL LETTER GAMMA D* GREEK CAPITAL LETTER DELTA E* GREEK CAPITAL LETTER EPSILON Z* GREEK CAPITAL LETTER ZETA Y* GREEK CAPITAL LETTER ETA H* GREEK CAPITAL LETTER THETA I* GREEK CAPITAL LETTER IOTA K* GREEK CAPITAL LETTER KAPPA L* GREEK CAPITAL LETTER LAMDA M* GREEK CAPITAL LETTER MU N* GREEK CAPITAL LETTER NU C* GREEK CAPITAL LETTER XI O* GREEK CAPITAL LETTER OMICRON P* GREEK CAPITAL LETTER PI R* GREEK CAPITAL LETTER RHO cell 163 S* GREEK CAPITAL LETTER SIGMA T* GREEK CAPITAL LETTER TAU U* GREEK CAPITAL LETTER UPSILON F* GREEK CAPITAL LETTER PHI X* GREEK CAPITAL LETTER CHI Q* GREEK CAPITAL LETTER PSI W* GREEK CAPITAL LETTER OMEGA J* GREEK CAPITAL LETTER IOTA WITH DIALYTIKA V* GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA a% GREEK SMALL LETTER ALPHA WITH TONOS e% GREEK SMALL LETTER EPSILON WITH TONOS y% GREEK SMALL LETTER ETA WITH TONOS i% GREEK SMALL LETTER IOTA WITH TONOS u3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS a* GREEK SMALL LETTER ALPHA b* GREEK SMALL LETTER BETA g* GREEK SMALL LETTER GAMMA d* GREEK SMALL LETTER DELTA e* GREEK SMALL LETTER EPSILON z* GREEK SMALL LETTER ZETA y* GREEK SMALL LETTER ETA h* GREEK SMALL LETTER THETA i* GREEK SMALL LETTER IOTA k* GREEK SMALL LETTER KAPPA l* GREEK SMALL LETTER LAMDA m* GREEK SMALL LETTER MU n* GREEK SMALL LETTER NU c* GREEK SMALL LETTER XI o* GREEK SMALL LETTER OMICRON p* GREEK SMALL LETTER PI r* GREEK SMALL LETTER RHO *s GREEK SMALL LETTER FINAL SIGMA s* GREEK SMALL LETTER SIGMA t* GREEK SMALL LETTER TAU u* GREEK SMALL LETTER UPSILON f* GREEK SMALL LETTER PHI x* GREEK SMALL LETTER CHI q* GREEK SMALL LETTER PSI w* GREEK SMALL LETTER OMEGA j* GREEK SMALL LETTER IOTA WITH DIALYTIKA v* GREEK SMALL LETTER UPSILON WITH DIALYTIKA o% GREEK SMALL LETTER OMICRON WITH TONOS u% GREEK SMALL LETTER UPSILON WITH TONOS w% GREEK SMALL LETTER OMEGA WITH TONOS ........ cell 208 b3 GREEK BETA SYMBOL cell 218 T3 GREEK LETTER STIGMA cell 220 M3 GREEK LETTER DIGAMMA cell 222 K3 GREEK LETTER KOPPA cell 224 P3 GREEK LETTER SAMPI ... row 004 cell 001 IO CYRILLIC CAPITAL LETTER IO D% CYRILLIC CAPITAL LETTER DJE (Serbocroatian) G% CYRILLIC CAPITAL LETTER GJE IE CYRILLIC CAPITAL LETTER UKRAINIAN IE DS CYRILLIC CAPITAL LETTER DZE II CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I YI CYRILLIC CAPITAL LETTER YI (Ukrainian) J% CYRILLIC CAPITAL LETTER JE LJ CYRILLIC CAPITAL LETTER LJE NJ CYRILLIC CAPITAL LETTER NJE Ts CYRILLIC CAPITAL LETTER TSHE (Serbocroatian) KJ CYRILLIC CAPITAL LETTER KJE cell 014 V% CYRILLIC CAPITAL LETTER SHORT U (Byelorussian) DZ CYRILLIC CAPITAL LETTER DZHE A= CYRILLIC CAPITAL LETTER A B= CYRILLIC CAPITAL LETTER BE V= CYRILLIC CAPITAL LETTER VE G= CYRILLIC CAPITAL LETTER GHE D= CYRILLIC CAPITAL LETTER DE E= CYRILLIC CAPITAL LETTER IE Z% CYRILLIC CAPITAL LETTER ZHE Z= CYRILLIC CAPITAL LETTER ZE I= CYRILLIC CAPITAL LETTER I J= CYRILLIC CAPITAL LETTER SHORT I K= CYRILLIC CAPITAL LETTER KA L= CYRILLIC CAPITAL LETTER EL M= CYRILLIC CAPITAL LETTER EM N= CYRILLIC CAPITAL LETTER EN O= CYRILLIC CAPITAL LETTER O P= CYRILLIC CAPITAL LETTER PE R= CYRILLIC CAPITAL LETTER ER S= CYRILLIC CAPITAL LETTER ES T= CYRILLIC CAPITAL LETTER TE U= CYRILLIC CAPITAL LETTER U F= CYRILLIC CAPITAL LETTER EF H= CYRILLIC CAPITAL LETTER HA C= CYRILLIC CAPITAL LETTER TSE C% CYRILLIC CAPITAL LETTER CHE S% CYRILLIC CAPITAL LETTER SHA Sc CYRILLIC CAPITAL LETTER SHCHA =" CYRILLIC CAPITAL LETTER HARD SIGN Y= CYRILLIC CAPITAL LETTER YERU %" CYRILLIC CAPITAL LETTER SOFT SIGN JE CYRILLIC CAPITAL LETTER E JU CYRILLIC CAPITAL LETTER YU JA CYRILLIC CAPITAL LETTER YA a= CYRILLIC SMALL LETTER A b= CYRILLIC SMALL LETTER BE v= CYRILLIC SMALL LETTER VE g= CYRILLIC SMALL LETTER GHE d= CYRILLIC SMALL LETTER DE e= CYRILLIC SMALL LETTER IE z% CYRILLIC SMALL LETTER ZHE z= CYRILLIC SMALL LETTER ZE i= CYRILLIC SMALL LETTER I j= CYRILLIC SMALL LETTER SHORT I k= CYRILLIC SMALL LETTER KA l= CYRILLIC SMALL LETTER EL m= CYRILLIC SMALL LETTER EM n= CYRILLIC SMALL LETTER EN o= CYRILLIC SMALL LETTER O p= CYRILLIC SMALL LETTER PE r= CYRILLIC SMALL LETTER ER s= CYRILLIC SMALL LETTER ES t= CYRILLIC SMALL LETTER TE u= CYRILLIC SMALL LETTER U f= CYRILLIC SMALL LETTER EF h= CYRILLIC SMALL LETTER HA c= CYRILLIC SMALL LETTER TSE c% CYRILLIC SMALL LETTER CHE s% CYRILLIC SMALL LETTER SHA sc CYRILLIC SMALL LETTER SHCHA =' CYRILLIC SMALL LETTER HARD SIGN y= CYRILLIC SMALL LETTER YERU %' CYRILLIC SMALL LETTER SOFT SIGN je CYRILLIC SMALL LETTER E ju CYRILLIC SMALL LETTER YU ja CYRILLIC SMALL LETTER YA cell 081 io CYRILLIC SMALL LETTER IO d% CYRILLIC SMALL LETTER DJE (Serbocroatian) g% CYRILLIC SMALL LETTER GJE ie CYRILLIC SMALL LETTER UKRAINIAN IE ds CYRILLIC SMALL LETTER DZE ii CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I yi CYRILLIC SMALL LETTER YI (Ukrainian) j% CYRILLIC SMALL LETTER JE lj CYRILLIC SMALL LETTER LJE nj CYRILLIC SMALL LETTER NJE ts CYRILLIC SMALL LETTER TSHE (Serbocroatian) kj CYRILLIC SMALL LETTER KJE cell 094 v% CYRILLIC SMALL LETTER SHORT U (Byelorussian) dz CYRILLIC SMALL LETTER DZHE CYRILLIC CAPITAL LETTER OMEGA CYRILLIC SMALL LETTER OMEGA cell 098 Y3 CYRILLIC CAPITAL LETTER YAT y3 CYRILLIC SMALL LETTER YAT .... cell 106 O3 CYRILLIC CAPITAL LETTER BIG YUS o3 CYRILLIC SMALL LETTER BIG YUS .... cell 114 F3 CYRILLIC CAPITAL LETTER FITA f3 CYRILLIC SMALL LETTER FITA V3 CYRILLIC CAPITAL LETTER IZHITSA v3 CYRILLIC SMALL LETTER IZHITSA .... cell 128 C3 CYRILLIC CAPITAL LETTER KOPPA c3 CYRILLIC SMALL LETTER KOPPA .... cell 144 G3 CYRILLIC CAPITAL LETTER GHE WITH UPTURN g3 CYRILLIC SMALL LETTER GHE WITH UPTURN .... row 005 cell 208 A+ HEBREW LETTER ALEF B+ HEBREW LETTER BET G+ HEBREW LETTER GIMEL D+ HEBREW LETTER DALET H+ HEBREW LETTER HE W+ HEBREW LETTER VAV Z+ HEBREW LETTER ZAYIN X+ HEBREW LETTER HET Tj HEBREW LETTER TET J+ HEBREW LETTER YOD K% HEBREW LETTER FINAL KAF K+ HEBREW LETTER KAF L+ HEBREW LETTER LAMED M% HEBREW LETTER FINAL MEM M+ HEBREW LETTER MEM N% HEBREW LETTER FINAL NUN N+ HEBREW LETTER NUN S+ HEBREW LETTER SAMEKH E+ HEBREW LETTER AYIN P% HEBREW LETTER FINAL PE P+ HEBREW LETTER PE Zj HEBREW LETTER FINAL TSADI ZJ HEBREW LETTER TSADI Q+ HEBREW LETTER QOF R+ HEBREW LETTER RESH Sh HEBREW LETTER SHIN T+ HEBREW LETTER TAV ..... row 006 cell 012 ,+ ARABIC COMMA cell 027 ;+ ARABIC SEMICOLON cell 031 ?+ ARABIC QUESTION MARK cell 033 H' ARABIC LETTER HAMZA aM ARABIC LETTER ALEF WITH MADDA ABOVE aH ARABIC LETTER ALEF WITH HAMZA ABOVE wH ARABIC LETTER WAW WITH HAMZA ABOVE ah ARABIC LETTER ALEF WITH HAMZA BELOW yH ARABIC LETTER YEH WITH HAMZA ABOVE a+ ARABIC LETTER ALEF b+ ARABIC LETTER BEH tm ARABIC LETTER TEH MARBUTA t+ ARABIC LETTER TEH tk ARABIC LETTER THEH g+ ARABIC LETTER JEEM hk ARABIC LETTER HAH x+ ARABIC LETTER KHAH d+ ARABIC LETTER DAL dk ARABIC LETTER THAL r+ ARABIC LETTER REH z+ ARABIC LETTER ZAIN s+ ARABIC LETTER SEEN sn ARABIC LETTER SHEEN c+ ARABIC LETTER SAD dd ARABIC LETTER DAD tj ARABIC LETTER TAH zH ARABIC LETTER ZAH e+ ARABIC LETTER AIN i+ ARABIC LETTER GHAIN cell 064 ++ ARABIC TATWEEL f+ ARABIC LETTER FEH q+ ARABIC LETTER QAF k+ ARABIC LETTER KAF l+ ARABIC LETTER LAM m+ ARABIC LETTER MEEM n+ ARABIC LETTER NOON h+ ARABIC LETTER HEH w+ ARABIC LETTER WAW j+ ARABIC LETTER ALEF MAKSURA y+ ARABIC LETTER YEH :+ ARABIC FATHATAN "+ ARABIC DAMMATAN =+ ARABIC KASRATAN /+ ARABIC FATHA '+ ARABIC DAMMA 1+ ARABIC KASRA 3+ ARABIC SHADDA 0+ ARABIC SUKUN cell 096 0a ARABIC-INDIC DIGIT ZERO 1a ARABIC-INDIC DIGIT ONE 2a ARABIC-INDIC DIGIT TWO 3a ARABIC-INDIC DIGIT THREE 4a ARABIC-INDIC DIGIT FOUR 5a ARABIC-INDIC DIGIT FIVE 6a ARABIC-INDIC DIGIT SIX 7a ARABIC-INDIC DIGIT SEVEN 8a ARABIC-INDIC DIGIT EIGHT 9a ARABIC-INDIC DIGIT NINE .... cell 112 aS ARABIC LETTER SUPERSCRIPT ALEF cell 126 p+ ARABIC LETTER PEH cell 129 hH ARABIC LETTER HAH WITH HAMZA ABOVE cell 134 tc ARABIC LETTER TCHEH cell 152 zj ARABIC LETTER JEH cell 164 v+ ARABIC LETTER VEH ..... cell 175 gf ARABIC LETTER GAF row 030 cell 000 A-0 LATIN CAPITAL LETTER A WITH RING BELOW a-0 LATIN SMALL LETTER A WITH RING BELOW B. LATIN CAPITAL LETTER B WITH DOT ABOVE b. LATIN SMALL LETTER B WITH DOT ABOVE B-. LATIN CAPITAL LETTER B WITH DOT BELOW b-. LATIN SMALL LETTER B WITH DOT BELOW B_ LATIN CAPITAL LETTER B WITH LINE BELOW b_ LATIN SMALL LETTER B WITH LINE BELOW C,' LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE c,' LATIN SMALL LETTER C WITH CEDILLA AND ACUTE D. LATIN CAPITAL LETTER D WITH DOT ABOVE d. LATIN SMALL LETTER D WITH DOT ABOVE D-. LATIN CAPITAL LETTER D WITH DOT BELOW d-. LATIN SMALL LETTER D WITH DOT BELOW D_ LATIN CAPITAL LETTER D WITH LINE BELOW d_ LATIN SMALL LETTER D WITH LINE BELOW D, LATIN CAPITAL LETTER D WITH CEDILLA d, LATIN SMALL LETTER D WITH CEDILLA D-> LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW d-> LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW E-! LATIN CAPITAL LETTER E WITH MACRON AND GRAVE e-! LATIN SMALL LETTER E WITH MACRON AND GRAVE E-' LATIN CAPITAL LETTER E WITH MACRON AND ACUTE e-' LATIN SMALL LETTER E WITH MACRON AND ACUTE E-> LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW e-> LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW E-? LATIN CAPITAL LETTER E WITH TILDE BELOW e-? LATIN SMALL LETTER E WITH TILDE BELOW E,( LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE e,( LATIN SMALL LETTER E WITH CEDILLA AND BREVE F. LATIN CAPITAL LETTER F WITH DOT ABOVE f. LATIN SMALL LETTER F WITH DOT ABOVE G- LATIN CAPITAL LETTER G WITH MACRON g- LATIN SMALL LETTER G WITH MACRON H. LATIN CAPITAL LETTER H WITH DOT ABOVE h. LATIN SMALL LETTER H WITH DOT ABOVE H-. LATIN CAPITAL LETTER H WITH DOT BELOW h-. LATIN SMALL LETTER H WITH DOT BELOW H: LATIN CAPITAL LETTER H WITH DIAERESIS h: LATIN SMALL LETTER H WITH DIAERESIS H, LATIN CAPITAL LETTER H WITH CEDILLA h, LATIN SMALL LETTER H WITH CEDILLA H-( LATIN CAPITAL LETTER H WITH BREVE BELOW h-( LATIN SMALL LETTER H WITH BREVE BELOW I-? LATIN CAPITAL LETTER I WITH TILDE BELOW i-? LATIN SMALL LETTER I WITH TILDE BELOW I:' LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE i:' LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE K' LATIN CAPITAL LETTER K WITH ACUTE k' LATIN SMALL LETTER K WITH ACUTE K-. LATIN CAPITAL LETTER K WITH DOT BELOW k-. LATIN SMALL LETTER K WITH DOT BELOW K_ LATIN CAPITAL LETTER K WITH LINE BELOW k_ LATIN SMALL LETTER K WITH LINE BELOW L-. LATIN CAPITAL LETTER L WITH DOT BELOW l-. LATIN SMALL LETTER L WITH DOT BELOW L--. LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON l--. LATIN SMALL LETTER L WITH DOT BELOW AND MACRON L_ LATIN CAPITAL LETTER L WITH LINE BELOW l_ LATIN SMALL LETTER L WITH LINE BELOW L-> LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW l-> LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW M' LATIN CAPITAL LETTER M WITH ACUTE m' LATIN SMALL LETTER M WITH ACUTE M. LATIN CAPITAL LETTER M WITH DOT ABOVE m. LATIN SMALL LETTER M WITH DOT ABOVE M-. LATIN CAPITAL LETTER M WITH DOT BELOW m-. LATIN SMALL LETTER M WITH DOT BELOW N. LATIN CAPITAL LETTER N WITH DOT ABOVE n. LATIN SMALL LETTER N WITH DOT ABOVE N-. LATIN CAPITAL LETTER N WITH DOT BELOW n-. LATIN SMALL LETTER N WITH DOT BELOW N_ LATIN CAPITAL LETTER N WITH LINE BELOW n_ LATIN SMALL LETTER N WITH LINE BELOW N-> LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW n-> LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW O?' LATIN CAPITAL LETTER O WITH TILDE AND ACUTE o?' LATIN SMALL LETTER O WITH TILDE AND ACUTE O?: LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS o?: LATIN SMALL LETTER O WITH TILDE AND DIAERESIS O-! LATIN CAPITAL LETTER O WITH MACRON AND GRAVE o-! LATIN SMALL LETTER O WITH MACRON AND GRAVE O-' LATIN CAPITAL LETTER O WITH MACRON AND ACUTE o-' LATIN SMALL LETTER O WITH MACRON AND ACUTE P' LATIN CAPITAL LETTER P WITH ACUTE p' LATIN SMALL LETTER P WITH ACUTE P. LATIN CAPITAL LETTER P WITH DOT ABOVE p. LATIN SMALL LETTER P WITH DOT ABOVE R. LATIN CAPITAL LETTER R WITH DOT ABOVE r. LATIN SMALL LETTER R WITH DOT ABOVE R-. LATIN CAPITAL LETTER R WITH DOT BELOW r-. LATIN SMALL LETTER R WITH DOT BELOW R--. LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON r--. LATIN SMALL LETTER R WITH DOT BELOW AND MACRON R_ LATIN CAPITAL LETTER R WITH LINE BELOW r_ LATIN SMALL LETTER R WITH LINE BELOW S. LATIN CAPITAL LETTER S WITH DOT ABOVE s. LATIN SMALL LETTER S WITH DOT ABOVE S-. LATIN CAPITAL LETTER S WITH DOT BELOW s-. LATIN SMALL LETTER S WITH DOT BELOW S'. LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE s'. LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE S<. LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE s<. LATIN SMALL LETTER S WITH CARON AND DOT ABOVE S.-. LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE s.-. LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE T. LATIN CAPITAL LETTER T WITH DOT ABOVE t. LATIN SMALL LETTER T WITH DOT ABOVE T-. LATIN CAPITAL LETTER T WITH DOT BELOW t-. LATIN SMALL LETTER T WITH DOT BELOW T_ LATIN CAPITAL LETTER T WITH LINE BELOW t_ LATIN SMALL LETTER T WITH LINE BELOW T-> LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW t-> LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW U--: LATIN CAPITAL LETTER U WITH DIAERESIS BELOW u--: LATIN SMALL LETTER U WITH DIAERESIS BELOW U-? LATIN CAPITAL LETTER U WITH TILDE BELOW u-? LATIN SMALL LETTER U WITH TILDE BELOW U-> LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW u-> LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW U?' LATIN CAPITAL LETTER U WITH TILDE AND ACUTE u?' LATIN SMALL LETTER U WITH TILDE AND ACUTE U-: LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS u-: LATIN SMALL LETTER U WITH MACRON AND DIAERESIS V? LATIN CAPITAL LETTER V WITH TILDE v? LATIN SMALL LETTER V WITH TILDE V-. LATIN CAPITAL LETTER V WITH DOT BELOW v-. LATIN SMALL LETTER V WITH DOT BELOW W! LATIN CAPITAL LETTER W WITH GRAVE w! LATIN SMALL LETTER W WITH GRAVE W' LATIN CAPITAL LETTER W WITH ACUTE w' LATIN SMALL LETTER W WITH ACUTE W: LATIN CAPITAL LETTER W WITH DIAERESIS w: LATIN SMALL LETTER W WITH DIAERESIS W. LATIN CAPITAL LETTER W WITH DOT ABOVE w. LATIN SMALL LETTER W WITH DOT ABOVE W-. LATIN CAPITAL LETTER W WITH DOT BELOW w-. LATIN SMALL LETTER W WITH DOT BELOW X. LATIN CAPITAL LETTER X WITH DOT ABOVE x. LATIN SMALL LETTER X WITH DOT ABOVE X: LATIN CAPITAL LETTER X WITH DIAERESIS x: LATIN SMALL LETTER X WITH DIAERESIS Y. LATIN CAPITAL LETTER Y WITH DOT ABOVE y. LATIN SMALL LETTER Y WITH DOT ABOVE Z> LATIN CAPITAL LETTER Z WITH CIRCUMFLEX z> LATIN SMALL LETTER Z WITH CIRCUMFLEX Z-. LATIN CAPITAL LETTER Z WITH DOT BELOW z-. LATIN SMALL LETTER Z WITH DOT BELOW Z_ LATIN CAPITAL LETTER Z WITH LINE BELOW z_ LATIN SMALL LETTER Z WITH LINE BELOW h_ LATIN SMALL LETTER H WITH LINE BELOW cell 156 t: LATIN SMALL LETTER T WITH DIAERESIS cell 157 w0 LATIN SMALL LETTER W WITH RING ABOVE y0 LATIN SMALL LETTER Y WITH RING ABOVE LATIN SMALL LETTER A WITH RIGHT HALF RING cell 160 A-. LATIN CAPITAL LETTER A WITH DOT BELOW a-. LATIN SMALL LETTER A WITH DOT BELOW A2 LATIN CAPITAL LETTER A WITH HOOK ABOVE a2 LATIN SMALL LETTER A WITH HOOK ABOVE A>' LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE a>' LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE A>! LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE a>! LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE A>2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE a>2 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE A>? LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE a>? LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE A>-. LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW a>-. LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW A(' LATIN CAPITAL LETTER A WITH BREVE AND ACUTE a(' LATIN SMALL LETTER A WITH BREVE AND ACUTE A(! LATIN CAPITAL LETTER A WITH BREVE AND GRAVE a(! LATIN SMALL LETTER A WITH BREVE AND GRAVE A(2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE a(2 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE A(? LATIN CAPITAL LETTER A WITH BREVE AND TILDE a(? LATIN SMALL LETTER A WITH BREVE AND TILDE A(-. LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW a(-. LATIN SMALL LETTER A WITH BREVE AND DOT BELOW E-. LATIN CAPITAL LETTER E WITH DOT BELOW e-. LATIN SMALL LETTER E WITH DOT BELOW E2 LATIN CAPITAL LETTER E WITH HOOK ABOVE e2 LATIN SMALL LETTER E WITH HOOK ABOVE E? LATIN CAPITAL LETTER E WITH TILDE e? LATIN SMALL LETTER E WITH TILDE E>' LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE e>' LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE E>! LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE e>! LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE E>2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE e>2 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE E>? LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE e>? LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE E>-. LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW e>-. LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW I2 LATIN CAPITAL LETTER I WITH HOOK ABOVE i2 LATIN SMALL LETTER I WITH HOOK ABOVE I-. LATIN CAPITAL LETTER I WITH DOT BELOW i-. LATIN SMALL LETTER I WITH DOT BELOW O-. LATIN CAPITAL LETTER O WITH DOT BELOW o-. LATIN SMALL LETTER O WITH DOT BELOW O2 LATIN CAPITAL LETTER O WITH HOOK ABOVE o2 LATIN SMALL LETTER O WITH HOOK ABOVE O>' LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE o>' LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE O>! LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE o>! LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE O>2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE o>2 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE O>? LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE o>? LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE O>-. LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW o>-. LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW O9' LATIN CAPITAL LETTER O WITH HORN AND ACUTE o9' LATIN SMALL LETTER O WITH HORN AND ACUTE O9! LATIN CAPITAL LETTER O WITH HORN AND GRAVE o9! LATIN SMALL LETTER O WITH HORN AND GRAVE O92 LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE o92 LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE O9? LATIN CAPITAL LETTER O WITH HORN AND TILDE o9? LATIN SMALL LETTER O WITH HORN AND TILDE O9-. LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW o9-. LATIN SMALL LETTER O WITH HORN AND DOT BELOW U-. LATIN CAPITAL LETTER U WITH DOT BELOW u-. LATIN SMALL LETTER U WITH DOT BELOW U2 LATIN CAPITAL LETTER U WITH HOOK ABOVE u2 LATIN SMALL LETTER U WITH HOOK ABOVE U9' LATIN CAPITAL LETTER U WITH HORN AND ACUTE u9' LATIN SMALL LETTER U WITH HORN AND ACUTE U9! LATIN CAPITAL LETTER U WITH HORN AND GRAVE u9! LATIN SMALL LETTER U WITH HORN AND GRAVE U92 LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE u92 LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE U9? LATIN CAPITAL LETTER U WITH HORN AND TILDE u9? LATIN SMALL LETTER U WITH HORN AND TILDE U9-. LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW u9-. LATIN SMALL LETTER U WITH HORN AND DOT BELOW Y! LATIN CAPITAL LETTER Y WITH GRAVE y! LATIN SMALL LETTER Y WITH GRAVE Y-. LATIN CAPITAL LETTER Y WITH DOT BELOW y-. LATIN SMALL LETTER Y WITH DOT BELOW Y2 LATIN CAPITAL LETTER Y WITH HOOK ABOVE y2 LATIN SMALL LETTER Y WITH HOOK ABOVE Y? LATIN CAPITAL LETTER Y WITH TILDE y? LATIN SMALL LETTER Y WITH TILDE row 031 cell 000 a*, GREEK SMALL LETTER ALPHA WITH PSILI a*; GREEK SMALL LETTER ALPHA WITH DASIA a*,! GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA a*;! GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA a*,' GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA a*;' GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA a*,? GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI a*;? GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI A*, GREEK CAPITAL LETTER ALPHA WITH PSILI A*; GREEK CAPITAL LETTER ALPHA WITH DASIA A*,! GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA A*;! GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA A*,' GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA A*;' GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA A*,? GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI A*;? GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI e*, GREEK SMALL LETTER EPSILON WITH PSILI e*; GREEK SMALL LETTER EPSILON WITH DASIA e*,! GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA e*;! GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA e*,' GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA e*;' GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA cell 024 E*, GREEK CAPITAL LETTER EPSILON WITH PSILI E*; GREEK CAPITAL LETTER EPSILON WITH DASIA E*,! GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA E*;! GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA E*,' GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA E*;' GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA cell 032 y*, GREEK SMALL LETTER ETA WITH PSILI y*; GREEK SMALL LETTER ETA WITH DASIA y*,! GREEK SMALL LETTER ETA WITH PSILI AND VARIA y*;! GREEK SMALL LETTER ETA WITH DASIA AND VARIA y*,' GREEK SMALL LETTER ETA WITH PSILI AND OXIA y*;' GREEK SMALL LETTER ETA WITH DASIA AND OXIA y*,? GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI y*;? GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI Y*, GREEK CAPITAL LETTER ETA WITH PSILI Y*; GREEK CAPITAL LETTER ETA WITH DASIA Y*,! GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA Y*;! GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA Y*,' GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA Y*;' GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA Y*,? GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI Y*;? GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI i*, GREEK SMALL LETTER IOTA WITH PSILI i*; GREEK SMALL LETTER IOTA WITH DASIA i*,! GREEK SMALL LETTER IOTA WITH PSILI AND VARIA i*;! GREEK SMALL LETTER IOTA WITH DASIA AND VARIA i*,' GREEK SMALL LETTER IOTA WITH PSILI AND OXIA i*;' GREEK SMALL LETTER IOTA WITH DASIA AND OXIA i*,? GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI i*;? GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI I*, GREEK CAPITAL LETTER IOTA WITH PSILI I*; GREEK CAPITAL LETTER IOTA WITH DASIA I*,! GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA I*;! GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA I*,' GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA I*;' GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA I*,? GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI I*;? GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI o*, GREEK SMALL LETTER OMICRON WITH PSILI o*; GREEK SMALL LETTER OMICRON WITH DASIA o*,! GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA o*;! GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA o*,' GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA o*;' GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA cell 072 O*, GREEK CAPITAL LETTER OMICRON WITH PSILI O*; GREEK CAPITAL LETTER OMICRON WITH DASIA O*,! GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA O*;! GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA O*,' GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA O*;' GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA cell 080 u*, GREEK SMALL LETTER UPSILON WITH PSILI u*; GREEK SMALL LETTER UPSILON WITH DASIA u*,! GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA u*;! GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA u*,' GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA u*;' GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA u*,? GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI u*;? GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI cell 089 U*; GREEK CAPITAL LETTER UPSILON WITH DASIA cell 091 U*;! GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA cell 093 U*;' GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA cell 095 U*;? GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI w*, GREEK SMALL LETTER OMEGA WITH PSILI w*; GREEK SMALL LETTER OMEGA WITH DASIA w*,! GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA w*;! GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA w*,' GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA w*;' GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA w*,? GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI w*;? GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI W*, GREEK CAPITAL LETTER OMEGA WITH PSILI W*; GREEK CAPITAL LETTER OMEGA WITH DASIA W*,! GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA W*;! GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA W*,' GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA W*;' GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA W*,? GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI W*;? GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI a*! GREEK SMALL LETTER ALPHA WITH VARIA a*' GREEK SMALL LETTER ALPHA WITH OXIA e*! GREEK SMALL LETTER EPSILON WITH VARIA e*' GREEK SMALL LETTER EPSILON WITH OXIA y*! GREEK SMALL LETTER ETA WITH VARIA y*' GREEK SMALL LETTER ETA WITH OXIA i*! GREEK SMALL LETTER IOTA WITH VARIA i*' GREEK SMALL LETTER IOTA WITH OXIA o*! GREEK SMALL LETTER OMICRON WITH VARIA o*' GREEK SMALL LETTER OMICRON WITH OXIA u*! GREEK SMALL LETTER UPSILON WITH VARIA u*' GREEK SMALL LETTER UPSILON WITH OXIA w*! GREEK SMALL LETTER OMEGA WITH VARIA w*' GREEK SMALL LETTER OMEGA WITH OXIA cell 128 a*,j GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI a*;j GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI a*,!j GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI a*;!j GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI a*,'j GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI a*;'j GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI a*,?j GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI a*;?j GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI A*,J GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI A*;J GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI A*,!J GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI A*;!J GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI A*,'J GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI A*;'J GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI A*,?J GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI A*;?J GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI y*,j GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI y*;j GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI y*,!j GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI y*;!j GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI y*,'j GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI y*;'j GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI y*,?j GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI y*;?j GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI Y*,J GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI Y*;J GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI Y*,!J GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI Y*;!J GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI Y*,'J GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI Y*;'J GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI Y*,?J GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI Y*;?J GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI w*,j GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI w*;j GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI w*,!j GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI w*;!j GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI w*,'j GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI w*;'j GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI w*,?j GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI w*;?j GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI W*,J GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI W*;J GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI W*,!J GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI W*;!J GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI W*,'J GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI W*;'J GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI W*,?J GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI W*;?J GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI a*( GREEK SMALL LETTER ALPHA WITH VRACHY a*- GREEK SMALL LETTER ALPHA WITH MACRON a*!j GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI a*j GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI a*'j GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI cell 182 a*? GREEK SMALL LETTER ALPHA WITH PERISPOMENI a*?j GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI A*( GREEK CAPITAL LETTER ALPHA WITH VRACHY A*- GREEK CAPITAL LETTER ALPHA WITH MACRON A*! GREEK CAPITAL LETTER ALPHA WITH VARIA A*' GREEK CAPITAL LETTER ALPHA WITH OXIA A*J GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI )* GREEK KORONIS J3 GREEK PROSGEGRAMMENI ,, GREEK PSILI ?* GREEK PERISPOMENI ?: GREEK DIALYTIKA AND PERISPOMENI y*!j GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI y*j GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI y*'j GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI cell 198 y*? GREEK SMALL LETTER ETA WITH PERISPOMENI y*?j GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI E*!! GREEK CAPITAL LETTER EPSILON WITH VARIA E*' GREEK CAPITAL LETTER EPSILON WITH OXIA Y*! GREEK CAPITAL LETTER ETA WITH VARIA Y*' GREEK CAPITAL LETTER ETA WITH OXIA Y*J GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI ,! GREEK PSILI AND VARIA ,' GREEK PSILI AND OXIA ?, GREEK PSILI AND PERISPOMENI i*( GREEK SMALL LETTER IOTA WITH VRACHY i*- GREEK SMALL LETTER IOTA WITH MACRON i*:! GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA i*:' GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA cell 214 i*? GREEK SMALL LETTER IOTA WITH PERISPOMENI i*:? GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI I*( GREEK CAPITAL LETTER IOTA WITH VRACHY I*- GREEK CAPITAL LETTER IOTA WITH MACRON I*! GREEK CAPITAL LETTER IOTA WITH VARIA I*' GREEK CAPITAL LETTER IOTA WITH OXIA cell 221 ;! GREEK DASIA AND VARIA ;' GREEK DASIA AND OXIA ?; GREEK DASIA AND PERISPOMENI u*( GREEK SMALL LETTER UPSILON WITH VRACHY u*- GREEK SMALL LETTER UPSILON WITH MACRON u*:! GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA u*:' GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA r*, GREEK SMALL LETTER RHO WITH PSILI r*; GREEK SMALL LETTER RHO WITH DASIA u*? GREEK SMALL LETTER UPSILON WITH PERISPOMENI u*:? GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI U*( GREEK CAPITAL LETTER UPSILON WITH VRACHY U*- GREEK CAPITAL LETTER UPSILON WITH MACRON U*! GREEK CAPITAL LETTER UPSILON WITH VARIA U*' GREEK CAPITAL LETTER UPSILON WITH OXIA R*; GREEK CAPITAL LETTER RHO WITH DASIA !: GREEK DIALYTIKA AND VARIA :' GREEK DIALYTIKA AND OXIA !* GREEK VARIA cell 242 w*!j GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI w*j GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI w*'j GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI cell 246 w*? GREEK SMALL LETTER OMEGA WITH PERISPOMENI w*?j GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI O*! GREEK CAPITAL LETTER OMICRON WITH VARIA O*' GREEK CAPITAL LETTER OMICRON WITH OXIA W*! GREEK CAPITAL LETTER OMEGA WITH VARIA W*' GREEK CAPITAL LETTER OMEGA WITH OXIA W*J GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI /* GREEK OXIA ;; GREEK DASIA row 032 cell 002 1N EN SPACE 1M EM SPACE 3M THREE-PER-EM SPACE 4M FOUR-PER-EM SPACE 6M SIX-PER-EM SPACE cell 014 LR LEFT-TO-RIGHT MARK RL RIGHT-TO-LEFT MARK cell 009 1T THIN SPACE 1H HAIR SPACE cell 016 -1 HYPHEN cell 019 -N EN DASH -M EM DASH -3 HORIZONTAL BAR !2 DOUBLE VERTICAL LINE =2 DOUBLE LOW LINE '6 LEFT SINGLE QUOTATION MARK '9 RIGHT SINGLE QUOTATION MARK .9 SINGLE LOW-9 QUOTATION MARK 9' SINGLE HIGH-REVERSED-9 QUOTATION MARK "6 LEFT DOUBLE QUOTATION MARK "9 RIGHT DOUBLE QUOTATION MARK :9 DOUBLE LOW-9 QUOTATION MARK 9" DOUBLE HIGH-REVERSED-9 QUOTATION MARK /- DAGGER /= DOUBLE DAGGER sb BULLET 3b TRIANGULAR BULLET cell 037 .. TWO DOT LEADER .3 HORIZONTAL ELLIPSIS .- HYPHENATION POINT linesep LINE SEPARATOR parsep PARAGRAPH SEPARATOR cell 048 %0 PER MILLE SIGN cell 050 1' PRIME 2' DOUBLE PRIME 3' TRIPLE PRIME 1" REVERSED PRIME 2" REVERSED DOUBLE PRIME 3" REVERSED TRIPLE PRIME Ca CARET <1 SINGLE LEFT-POINTING ANGLE QUOTATION MARK >1 SINGLE RIGHT-POINTING ANGLE QUOTATION MARK :X REFERENCE MARK !*2 DOUBLE EXCLAMATION MARK cell 062 '- OVERLINE cell 067 -b HYPHEN BULLET /f FRACTION SLASH cell 112 0S SUPERSCRIPT ZERO cell 116 4S SUPERSCRIPT FOUR 5S SUPERSCRIPT FIVE 6S SUPERSCRIPT SIX 7S SUPERSCRIPT SEVEN 8S SUPERSCRIPT EIGHT 9S SUPERSCRIPT NINE +S SUPERSCRIPT PLUS SIGN -S SUPERSCRIPT MINUS =S SUPERSCRIPT EQUALS SIGN (S SUPERSCRIPT LEFT PARENTHESIS )S SUPERSCRIPT RIGHT PARENTHESIS nS SUPERSCRIPT LATIN SMALL LETTER N 0s SUBSCRIPT ZERO 1s SUBSCRIPT ONE 2s SUBSCRIPT TWO 3s SUBSCRIPT THREE 4s SUBSCRIPT FOUR 5s SUBSCRIPT FIVE 6s SUBSCRIPT SIX 7s SUBSCRIPT SEVEN 8s SUBSCRIPT EIGHT 9s SUBSCRIPT NINE +s SUBSCRIPT PLUS SIGN -s SUBSCRIPT MINUS =s SUBSCRIPT EQUALS SIGN (s SUBSCRIPT LEFT PARENTHESIS )s SUBSCRIPT RIGHT PARENTHESIS cell 163 Ff FRENCH FRANC SIGN Li LIRA SIGN cell 167 Pt PESETA SIGN cell 169 W= WON SIGN NSh NEW SHEQEL SIGN cell 172 Eu EURO SIGN cell 209 "7 COMBINING RIGHT HARPOON ABOVE row 033 cell 003 oC DEGREE CELSIUS cell 005 co CARE OF cell 009 oF DEGREE FAHRENHEIT cell 022 N0 NUMERO SIGN PO SOUND RECORDING COPYRIGHT cell 030 Rx PRESCRIPTION TAKE cell 032 SM SERVICE MARK TELEPHONE SIGN cell 034 TM TRADE MARK SIGN cell 038 Om OHM SIGN cell 043 AO ANGSTROM SIGN cell 046 Est ESTIMATED SYMBOL cell 083 13 VULGAR FRACTION ONE THIRD 23 VULGAR FRACTION TWO THIRDS 15 VULGAR FRACTION ONE FIFTH 25 VULGAR FRACTION TWO FIFTHS 35 VULGAR FRACTION THREE FIFTHS 45 VULGAR FRACTION FOUR FIFTHS 16 VULGAR FRACTION ONE SIXTH 56 VULGAR FRACTION FIVE SIXTHS 18 VULGAR FRACTION ONE EIGHTH 38 VULGAR FRACTION THREE EIGHTHS 58 VULGAR FRACTION FIVE EIGHTHS 78 VULGAR FRACTION SEVEN EIGHTHS FRACTION NUMERATOR ONE cell 096 1R ROMAN NUMERAL ONE 2R ROMAN NUMERAL TWO 3R ROMAN NUMERAL THREE 4R ROMAN NUMERAL FOUR 5R ROMAN NUMERAL FIVE 6R ROMAN NUMERAL SIX 7R ROMAN NUMERAL SEVEN 8R ROMAN NUMERAL EIGHT 9R ROMAN NUMERAL NINE aR ROMAN NUMERAL TEN bR ROMAN NUMERAL ELEVEN cR ROMAN NUMERAL TWELVE 50R ROMAN NUMERAL FIFTY 100R ROMAN NUMERAL ONE HUNDRED 500R ROMAN NUMERAL FIVE HUNDRED 1000R ROMAN NUMERAL ONE THOUSAND 1r SMALL ROMAN NUMERAL ONE 2r SMALL ROMAN NUMERAL TWO 3r SMALL ROMAN NUMERAL THREE 4r SMALL ROMAN NUMERAL FOUR 5r SMALL ROMAN NUMERAL FIVE 6r SMALL ROMAN NUMERAL SIX 7r SMALL ROMAN NUMERAL SEVEN 8r SMALL ROMAN NUMERAL EIGHT 9r SMALL ROMAN NUMERAL NINE ar SMALL ROMAN NUMERAL TEN br SMALL ROMAN NUMERAL ELEVEN cr SMALL ROMAN NUMERAL TWELVE 50r SMALL ROMAN NUMERAL FIFTY 100r SMALL ROMAN NUMERAL ONE HUNDRED 500r SMALL ROMAN NUMERAL FIVE HUNDRED 1000r SMALL ROMAN NUMERAL ONE THOUSAND 1000RCD ROMAN NUMERAL ONE THOUSAND C D 5000R ROMAN NUMERAL FIVE THOUSAND 10000R ROMAN NUMERAL TEN THOUSAND row 033 cell 144 <- LEFTWARDS ARROW -! UPWARDS ARROW -> RIGHTWARDS ARROW -v DOWNWARDS ARROW <> LEFT RIGHT ARROW UD UP DOWN ARROW NORTH EAST ARROW !!> SOUTH EAST ARROW V RIGHTWARDS HARPOON WITH BARB UPWARDS cell 208 <= LEFTWARDS DOUBLE ARROW cell 210 => RIGHTWARDS DOUBLE ARROW cell 212 == LEFT RIGHT DOUBLE ARROW row 034 cell 00 FA FOR ALL cell 002 dP PARTIAL DIFFERENTIAL TE THERE EXISTS cell 005 /0 EMPTY SET DE INCREMENT NB NABLA (- ELEMENT OF cell 011 -) CONTAINS AS MEMBER cell 014 FP END OF PROOF *P N-ARY PRODUCT cell 017 +Z N-ARY SUMMATION -2 MINUS SIGN -+ MINUS-OR-PLUS SIGN .+ DOT PLUS cell 023 *- ASTERISK OPERATOR Ob RING OPERATOR cell 025 Sb BULLET OPERATOR RT SQUARE ROOT cell 029 0( PROPORTIONAL TO 00 INFINITY -L RIGHT ANGLE -V ANGLE cell 037 PP PARALLEL TO cell 039 AN LOGICAL AND OR LOGICAL OR (U INTERSECTION )U UNION In INTEGRAL DI DOUBLE INTEGRAL cell 046 Io CONTOUR INTEGRAL cell 052 .: THEREFORE :. BECAUSE :R RATIO :: PROPORTION cell 060 ?1 TILDE OPERATOR cell 062 CG INVERTED LAZY S cell 067 ?- ASYMPTOTICALLY EQUAL TO cell 069 ?= APPROXIMATELY EQUAL TO cell 072 ?2 ALMOST EQUAL TO cell 076 =? ALL EQUAL TO cell 083 HI IMAGE OF OR APPROXIMATELY EQUAL TO cell 096 != NOT EQUAL TO =3 IDENTICAL TO cell 100 =< LESS-THAN OR EQUAL TO >= GREATER-THAN OR EQUAL TO cell 106 <* MUCH LESS-THAN *> MUCH GREATER-THAN cell 110 !< NOT LESS-THAN !> NOT GREATER-THAN row 034 cell 130 (C SUBSET OF )C SUPERSET OF cell 134 (_ SUBSET OF OR EQUAL TO )_ SUPERSET OF OR EQUAL TO cell 153 0. CIRCLED DOT OPERATOR 02 CIRCLED RING OPERATOR cell 165 -T UP TACK cell 197 .P DOT OPERATOR cell 238 :3 VERTICAL ELLIPSIS row 035 cell 002 Eh HOUSE cell 008 <7 LEFT CEILING >7 RIGHT CEILING 7< LEFT FLOOR 7> RIGHT FLOOR cell 016 NI REVERSED NOT SIGN cell 018 (A ARC cell 021 TR TELEPHONE RECORDER cell 024 88 PLACE OF INTEREST SIGN cell 032 Iu TOP HALF INTEGRAL Il BOTTOM HALF INTEGRAL cell 041 RIGHT-POINTING ANGLE BRACKET row 036 cell 035 Vs OPEN BOX cell 064 1h OCR HOOK 3h OCR CHAIR 2h OCR FORK 4h OCR INVERTED FORK cell 070 1j OCR BRANCH BANK IDENTIFICATION 2j OCR AMOUNT OF CHECK 3j OCR DASH 4j OCR CUSTOMER ACCOUNT NUMBER cell 096 1-o CIRCLED DIGIT ONE 2-o CIRCLED DIGIT TWO 3-o CIRCLED DIGIT THREE 4-o CIRCLED DIGIT FOUR 5-o CIRCLED DIGIT FIVE 6-o CIRCLED DIGIT SIX 7-o CIRCLED DIGIT SEVEN 8-o CIRCLED DIGIT EIGHT 9-o CIRCLED DIGIT NINE 10-o CIRCLED NUMBER TEN 11-o CIRCLED NUMBER ELEVEN 12-o CIRCLED NUMBER TWELVE 13-o CIRCLED NUMBER THIRTEEN 14-o CIRCLED NUMBER FOURTEEN 15-o CIRCLED NUMBER FIFTEEN 16-o CIRCLED NUMBER SIXTEEN 17-o CIRCLED NUMBER SEVENTEEN 18-o CIRCLED NUMBER EIGHTEEN 19-o CIRCLED NUMBER NINETEEN 20-o CIRCLED NUMBER TWENTY (1) PARENTHESIZED DIGIT ONE (2) PARENTHESIZED DIGIT TWO (3) PARENTHESIZED DIGIT THREE (4) PARENTHESIZED DIGIT FOUR (5) PARENTHESIZED DIGIT FIVE (6) PARENTHESIZED DIGIT SIX (7) PARENTHESIZED DIGIT SEVEN (8) PARENTHESIZED DIGIT EIGHT (9) PARENTHESIZED DIGIT NINE (10) PARENTHESIZED NUMBER TEN (11) PARENTHESIZED NUMBER ELEVEN (12) PARENTHESIZED NUMBER TWELVE (13) PARENTHESIZED NUMBER THIRTEEN (14) PARENTHESIZED NUMBER FOURTEEN (15) PARENTHESIZED NUMBER FIFTEEN (16) PARENTHESIZED NUMBER SIXTEEN (17) PARENTHESIZED NUMBER SEVENTEEN (18) PARENTHESIZED NUMBER EIGHTEEN (19) PARENTHESIZED NUMBER NINETEEN (20) PARENTHESIZED NUMBER TWENTY 1. DIGIT ONE FULL STOP 2. DIGIT TWO FULL STOP 3. DIGIT THREE FULL STOP 4. DIGIT FOUR FULL STOP 5. DIGIT FIVE FULL STOP 6. DIGIT SIX FULL STOP 7. DIGIT SEVEN FULL STOP 8. DIGIT EIGHT FULL STOP 9. DIGIT NINE FULL STOP 10. NUMBER TEN FULL STOP 11. NUMBER ELEVEN FULL STOP 12. NUMBER TWELVE FULL STOP 13. NUMBER THIRTEEN FULL STOP 14. NUMBER FOURTEEN FULL STOP 15. NUMBER FIFTEEN FULL STOP 16. NUMBER SIXTEEN FULL STOP 17. NUMBER SEVENTEEN FULL STOP 18. NUMBER EIGHTEEN FULL STOP 19. NUMBER NINETEEN FULL STOP 20. NUMBER TWENTY FULL STOP (a) PARENTHESIZED LATIN SMALL LETTER A (b) PARENTHESIZED LATIN SMALL LETTER B (c) PARENTHESIZED LATIN SMALL LETTER C (d) PARENTHESIZED LATIN SMALL LETTER D (e) PARENTHESIZED LATIN SMALL LETTER E (f) PARENTHESIZED LATIN SMALL LETTER F (g) PARENTHESIZED LATIN SMALL LETTER G (h) PARENTHESIZED LATIN SMALL LETTER H (i) PARENTHESIZED LATIN SMALL LETTER I (j) PARENTHESIZED LATIN SMALL LETTER J (k) PARENTHESIZED LATIN SMALL LETTER K (l) PARENTHESIZED LATIN SMALL LETTER L (m) PARENTHESIZED LATIN SMALL LETTER M (n) PARENTHESIZED LATIN SMALL LETTER N (o) PARENTHESIZED LATIN SMALL LETTER O (p) PARENTHESIZED LATIN SMALL LETTER P (q) PARENTHESIZED LATIN SMALL LETTER Q (r) PARENTHESIZED LATIN SMALL LETTER R (s) PARENTHESIZED LATIN SMALL LETTER S (t) PARENTHESIZED LATIN SMALL LETTER T (u) PARENTHESIZED LATIN SMALL LETTER U (v) PARENTHESIZED LATIN SMALL LETTER V (w) PARENTHESIZED LATIN SMALL LETTER W (x) PARENTHESIZED LATIN SMALL LETTER X (y) PARENTHESIZED LATIN SMALL LETTER Y (z) PARENTHESIZED LATIN SMALL LETTER Z A-o CIRCLED LATIN CAPITAL LETTER A B-o CIRCLED LATIN CAPITAL LETTER B C-o CIRCLED LATIN CAPITAL LETTER C D-o CIRCLED LATIN CAPITAL LETTER D E-o CIRCLED LATIN CAPITAL LETTER E F-o CIRCLED LATIN CAPITAL LETTER F G-o CIRCLED LATIN CAPITAL LETTER G H-o CIRCLED LATIN CAPITAL LETTER H I-o CIRCLED LATIN CAPITAL LETTER I J-o CIRCLED LATIN CAPITAL LETTER J K-o CIRCLED LATIN CAPITAL LETTER K L-o CIRCLED LATIN CAPITAL LETTER L M-o CIRCLED LATIN CAPITAL LETTER M N-o CIRCLED LATIN CAPITAL LETTER N O-o CIRCLED LATIN CAPITAL LETTER O P-o CIRCLED LATIN CAPITAL LETTER P Q-o CIRCLED LATIN CAPITAL LETTER Q R-o CIRCLED LATIN CAPITAL LETTER R S-o CIRCLED LATIN CAPITAL LETTER S T-o CIRCLED LATIN CAPITAL LETTER T U-o CIRCLED LATIN CAPITAL LETTER U V-o CIRCLED LATIN CAPITAL LETTER V W-o CIRCLED LATIN CAPITAL LETTER W X-o CIRCLED LATIN CAPITAL LETTER X Y-o CIRCLED LATIN CAPITAL LETTER Y Z-o CIRCLED LATIN CAPITAL LETTER Z a-o CIRCLED LATIN SMALL LETTER A b-o CIRCLED LATIN SMALL LETTER B c-o CIRCLED LATIN SMALL LETTER C d-o CIRCLED LATIN SMALL LETTER D e-o CIRCLED LATIN SMALL LETTER E f-o CIRCLED LATIN SMALL LETTER F g-o CIRCLED LATIN SMALL LETTER G h-o CIRCLED LATIN SMALL LETTER H i-o CIRCLED LATIN SMALL LETTER I j-o CIRCLED LATIN SMALL LETTER J k-o CIRCLED LATIN SMALL LETTER K l-o CIRCLED LATIN SMALL LETTER L m-o CIRCLED LATIN SMALL LETTER M n-o CIRCLED LATIN SMALL LETTER N o-o CIRCLED LATIN SMALL LETTER O p-o CIRCLED LATIN SMALL LETTER P q-o CIRCLED LATIN SMALL LETTER Q r-o CIRCLED LATIN SMALL LETTER R s-o CIRCLED LATIN SMALL LETTER S t-o CIRCLED LATIN SMALL LETTER T u-o CIRCLED LATIN SMALL LETTER U v-o CIRCLED LATIN SMALL LETTER V w-o CIRCLED LATIN SMALL LETTER W x-o CIRCLED LATIN SMALL LETTER X y-o CIRCLED LATIN SMALL LETTER Y z-o CIRCLED LATIN SMALL LETTER Z 0-o CIRCLED DIGIT ZERO row 037 cell 000 hh BOX DRAWINGS LIGHT HORIZONTAL HH- BOX DRAWINGS HEAVY HORIZONTAL vv BOX DRAWINGS LIGHT VERTICAL VV- BOX DRAWINGS HEAVY VERTICAL 3- BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL 3_ BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL 3! BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL 3/ BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL 4- BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL 4_ BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL 4! BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL 4/ BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL naming: first vertical (up, down) - then horizontal (left, right) dr BOX DRAWINGS LIGHT DOWN AND RIGHT dR- BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY Dr- BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT DR- BOX DRAWINGS HEAVY DOWN AND RIGHT dl BOX DRAWINGS LIGHT DOWN AND LEFT dL- BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY Dl- BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT LD- BOX DRAWINGS HEAVY DOWN AND LEFT ur BOX DRAWINGS LIGHT UP AND RIGHT uR- BOX DRAWINGS UP LIGHT AND RIGHT HEAVY Ur- BOX DRAWINGS UP HEAVY AND RIGHT LIGHT UR- BOX DRAWINGS HEAVY UP AND RIGHT ul BOX DRAWINGS LIGHT UP AND LEFT uL- BOX DRAWINGS UP LIGHT AND LEFT HEAVY Ul- BOX DRAWINGS UP HEAVY AND LEFT LIGHT UL- BOX DRAWINGS HEAVY UP AND LEFT vr BOX DRAWINGS LIGHT VERTICAL AND RIGHT vR- BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY Udr BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT uDr BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT Vr- BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT UdR BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY uDR BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY VR- BOX DRAWINGS HEAVY VERTICAL AND RIGHT vl BOX DRAWINGS LIGHT VERTICAL AND LEFT vL- BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY Udl BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT uDl BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT Vl- BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT UdL BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY uDL BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY VL- BOX DRAWINGS HEAVY VERTICAL AND LEFT dh BOX DRAWINGS LIGHT DOWN AND HORIZONTAL dLr BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT dlR BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT dH- BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY Dh- BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT DLr BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY DlR BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY DH- BOX DRAWINGS HEAVY DOWN AND HORIZONTAL uh BOX DRAWINGS LIGHT UP AND HORIZONTAL uLr BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT ulR BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT uH- BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY Uh- BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT ULr BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY UlR BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY UH- BOX DRAWINGS HEAVY UP AND HORIZONTAL vh BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL vLr BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT vlR BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT vH- BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY Udh BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT uDh BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT Vh- BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT UdLr BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT UdlR BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT uDLr BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT uDlR BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT UdH BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY uDH BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY VLr BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY VlR BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY VH- BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL ..... ... changes mapping due to CEN/TC304 decisions. cell 080 HH BOX DRAWINGS DOUBLE HORIZONTAL VV BOX DRAWINGS DOUBLE VERTICAL dR BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE Dr BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE DR BOX DRAWINGS DOUBLE DOWN AND RIGHT dL BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE Dl BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE LD BOX DRAWINGS DOUBLE DOWN AND LEFT uR BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE Ur BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE UR BOX DRAWINGS DOUBLE UP AND RIGHT uL BOX DRAWINGS UP SINGLE AND LEFT DOUBLE Ul BOX DRAWINGS UP DOUBLE AND LEFT SINGLE UL BOX DRAWINGS DOUBLE UP AND LEFT vR BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE Vr BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE VR BOX DRAWINGS DOUBLE VERTICAL AND RIGHT vL BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE Vl BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE VL BOX DRAWINGS DOUBLE VERTICAL AND LEFT dH BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE Dh BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE DH BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL uH BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE Uh BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE UH BOX DRAWINGS DOUBLE UP AND HORIZONTAL vH BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE Vh BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE VH BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL ..... cell 113 FD BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT BD BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT row 037 cell 128 TB UPPER HALF BLOCK cell 132 LB LOWER HALF BLOCK cell 136 FB FULL BLOCK cell 140 lB LEFT HALF BLOCK cell 144 RB RIGHT HALF BLOCK .S LIGHT SHADE :S MEDIUM SHADE ?S DARK SHADE cell 160 fS BLACK SQUARE OS WHITE SQUARE RO WHITE SQUARE WITH ROUNDED CORNERS Rr WHITE SQUARE CONTAINING BLACK SMALL SQUARE RF SQUARE WITH HORIZONTAL FILL RY SQUARE WITH VERTICAL FILL RH SQUARE WITH ORTHOGONAL CROSSHATCH FILL RZ SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL RK SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL RX SQUARE WITH DIAGONAL CROSSHATCH FILL sB BLACK SMALL SQUARE cell 172 SR BLACK RECTANGLE Or WHITE RECTANGLE cell 178 UT BLACK UP-POINTING TRIANGLE uT WHITE UP-POINTING TRIANGLE cell 183 Tr WHITE RIGHT-POINTING TRIANGLE cell 186 PR BLACK RIGHT-POINTING POINTER cell 188 Dt BLACK DOWN-POINTING TRIANGLE dT WHITE DOWN-POINTING TRIANGLE cell 193 Tl WHITE LEFT-POINTING TRIANGLE cell 196 PL BLACK LEFT-POINTING POINTER cell 198 Db BLACK DIAMOND Dw WHITE DIAMOND cell 202 LZ LOZENGE 0m WHITE CIRCLE cell 206 0o BULLSEYE 0M BLACK CIRCLE 0L CIRCLE WITH LEFT HALF BLACK 0R CIRCLE WITH RIGHT HALF BLACK cell 216 Sn INVERSE BULLET Ic INVERSE WHITE CIRCLE cell 226 Fd BLACK LOWER RIGHT TRIANGLE Bd BLACK LOWER LEFT TRIANGLE cell 239 Ci LARGE CIRCLE row 038 cell 005 *2 BLACK STAR *1 WHITE STAR cell 014 TEL BLACK TELEPHONE tel WHITE TELEPHONE cell 028 H WHITE RIGHT POINTING INDEX cell 058 0u WHITE SMILING FACE 0U BLACK SMILING FACE SU WHITE SUN WITH RAYS cell 064 Fm FEMALE SIGN cell 066 Ml MALE SIGN cell 096 cS BLACK SPADE SUIT cH WHITE HEART SUIT cD WHITE DIAMOND SUIT cC BLACK CLUB SUIT cS- WHITE SPADE SUIT cH- BLACK HEART SUIT cD- BLACK DIAMOND SUIT cC- WHITE CLUB SUIT HOT SPRINGS cell 105 Md QUARTER NOTE M8 EIGHTH NOTE M2 BEAMED EIGHTH NOTES M16 BEAMED SIXTEENTH NOTES Mb MUSIC FLAT SIGN Mx MUSIC NATURAL SIGN MX MUSIC SHARP SIGN row 039 cell 019 OK CHECK MARK cell 023 XX BALLOT X cell 032 -X MALTESE CROSS row 048 cell 000 IS IDEOGRAPHIC SPACE ,_ IDEOGRAPHIC COMMA ._ IDEOGRAPHIC FULL STOP +" DITTO MARK +_ IDEOGRAPHIC DITTO MARK JIS JAPANESE INDUSTRIAL STANDARD SYMBOL *_ IDEOGRAPHIC ITERATION MARK ;_ IDEOGRAPHIC CLOSING MARK 0_ IDEOGRAPHIC NUMBER ZERO LEFT ANGLE BRACKET RIGHT ANGLE BRACKET cell 010 <+ LEFT DOUBLE ANGLE BRACKET >+ RIGHT DOUBLE ANGLE BRACKET <' LEFT CORNER BRACKET >' RIGHT CORNER BRACKET <" LEFT WHITE CORNER BRACKET >" RIGHT WHITE CORNER BRACKET (" LEFT BLACK LENTICULAR BRACKET )" RIGHT BLACK LENTICULAR BRACKET =T POSTAL MARK =_ GETA MARK (' LEFT TORTOISE SHELL BRACKET )' RIGHT TORTOISE SHELL BRACKET (I LEFT WHITE LENTICULAR BRACKET )I RIGHT WHITE LENTICULAR BRACKET .... cell 028 -? WAVE DASH cell 032 =T:) POSTAL MARK FACE row 048 cell 065 A5 HIRAGANA LETTER SMALL A a5 HIRAGANA LETTER A I5 HIRAGANA LETTER SMALL I i5 HIRAGANA LETTER I U5 HIRAGANA LETTER SMALL U u5 HIRAGANA LETTER U E5 HIRAGANA LETTER SMALL E e5 HIRAGANA LETTER E O5 HIRAGANA LETTER SMALL O o5 HIRAGANA LETTER O ka HIRAGANA LETTER KA ga HIRAGANA LETTER GA ki HIRAGANA LETTER KI gi HIRAGANA LETTER GI ku HIRAGANA LETTER KU gu HIRAGANA LETTER GU ke HIRAGANA LETTER KE ge HIRAGANA LETTER GE ko HIRAGANA LETTER KO go HIRAGANA LETTER GO sa HIRAGANA LETTER SA za HIRAGANA LETTER ZA si HIRAGANA LETTER SI zi HIRAGANA LETTER ZI su HIRAGANA LETTER SU zu HIRAGANA LETTER ZU se HIRAGANA LETTER SE ze HIRAGANA LETTER ZE so HIRAGANA LETTER SO zo HIRAGANA LETTER ZO ta HIRAGANA LETTER TA da HIRAGANA LETTER DA ti HIRAGANA LETTER TI di HIRAGANA LETTER DI tU HIRAGANA LETTER SMALL TU tu HIRAGANA LETTER TU du HIRAGANA LETTER DU te HIRAGANA LETTER TE de HIRAGANA LETTER DE to HIRAGANA LETTER TO do HIRAGANA LETTER DO na HIRAGANA LETTER NA ni HIRAGANA LETTER NI nu HIRAGANA LETTER NU ne HIRAGANA LETTER NE no HIRAGANA LETTER NO ha HIRAGANA LETTER HA ba HIRAGANA LETTER BA pa HIRAGANA LETTER PA hi HIRAGANA LETTER HI bi HIRAGANA LETTER BI pi HIRAGANA LETTER PI hu HIRAGANA LETTER HU bu HIRAGANA LETTER BU pu HIRAGANA LETTER PU he HIRAGANA LETTER HE be HIRAGANA LETTER BE pe HIRAGANA LETTER PE ho HIRAGANA LETTER HO bo HIRAGANA LETTER BO po HIRAGANA LETTER PO ma HIRAGANA LETTER MA mi HIRAGANA LETTER MI mu HIRAGANA LETTER MU me HIRAGANA LETTER ME mo HIRAGANA LETTER MO yA HIRAGANA LETTER SMALL YA ya HIRAGANA LETTER YA yU HIRAGANA LETTER SMALL YU yu HIRAGANA LETTER YU yO HIRAGANA LETTER SMALL YO yo HIRAGANA LETTER YO ra HIRAGANA LETTER RA ri HIRAGANA LETTER RI ru HIRAGANA LETTER RU re HIRAGANA LETTER RE ro HIRAGANA LETTER RO wA HIRAGANA LETTER SMALL WA wa HIRAGANA LETTER WA wi HIRAGANA LETTER WI we HIRAGANA LETTER WE wo HIRAGANA LETTER WO n5 HIRAGANA LETTER N vu HIRAGANA LETTER VU cell 153 COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK cell 155 "5 KATAKANA-HIRAGANA VOICED SOUND MARK 05 KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK *5 HIRAGANA ITERATION MARK +5 HIRAGANA VOICED ITERATION MARK cell 161 a6 KATAKANA LETTER SMALL A A6 KATAKANA LETTER A i6 KATAKANA LETTER SMALL I I6 KATAKANA LETTER I u6 KATAKANA LETTER SMALL U U6 KATAKANA LETTER U e6 KATAKANA LETTER SMALL E E6 KATAKANA LETTER E o6 KATAKANA LETTER SMALL O O6 KATAKANA LETTER O Ka KATAKANA LETTER KA Ga KATAKANA LETTER GA Ki KATAKANA LETTER KI Gi KATAKANA LETTER GI Ku KATAKANA LETTER KU Gu KATAKANA LETTER GU Ke KATAKANA LETTER KE Ge KATAKANA LETTER GE Ko KATAKANA LETTER KO Go KATAKANA LETTER GO Sa KATAKANA LETTER SA Za KATAKANA LETTER ZA Si KATAKANA LETTER SI Zi KATAKANA LETTER ZI Su KATAKANA LETTER SU Zu KATAKANA LETTER ZU Se KATAKANA LETTER SE Ze KATAKANA LETTER ZE So KATAKANA LETTER SO Zo KATAKANA LETTER ZO Ta KATAKANA LETTER TA Da KATAKANA LETTER DA Ti KATAKANA LETTER TI Di KATAKANA LETTER DI TU KATAKANA LETTER SMALL TU Tu KATAKANA LETTER TU Du KATAKANA LETTER DU Te KATAKANA LETTER TE De KATAKANA LETTER DE To KATAKANA LETTER TO Do KATAKANA LETTER DO Na KATAKANA LETTER NA Ni KATAKANA LETTER NI Nu KATAKANA LETTER NU Ne KATAKANA LETTER NE No KATAKANA LETTER NO Ha KATAKANA LETTER HA Ba KATAKANA LETTER BA Pa KATAKANA LETTER PA Hi KATAKANA LETTER HI Bi KATAKANA LETTER BI Pi KATAKANA LETTER PI Hu KATAKANA LETTER HU Bu KATAKANA LETTER BU Pu KATAKANA LETTER PU He KATAKANA LETTER HE Be KATAKANA LETTER BE Pe KATAKANA LETTER PE Ho KATAKANA LETTER HO Bo KATAKANA LETTER BO Po KATAKANA LETTER PO Ma KATAKANA LETTER MA Mi KATAKANA LETTER MI Mu KATAKANA LETTER MU Me KATAKANA LETTER ME Mo KATAKANA LETTER MO YA KATAKANA LETTER SMALL YA Ya KATAKANA LETTER YA YU KATAKANA LETTER SMALL YU Yu KATAKANA LETTER YU YO KATAKANA LETTER SMALL YO Yo KATAKANA LETTER YO Ra KATAKANA LETTER RA Ri KATAKANA LETTER RI Ru KATAKANA LETTER RU Re KATAKANA LETTER RE Ro KATAKANA LETTER RO WA KATAKANA LETTER SMALL WA Wa KATAKANA LETTER WA Wi KATAKANA LETTER WI We KATAKANA LETTER WE Wo KATAKANA LETTER WO N6 KATAKANA LETTER N Vu KATAKANA LETTER VU KA KATAKANA LETTER SMALL KA KE KATAKANA LETTER SMALL KE Va KATAKANA LETTER VA Vi KATAKANA LETTER VI Ve KATAKANA LETTER VE Vo KATAKANA LETTER VO .6 KATAKANA MIDDLE DOT -6 KATAKANA-HIRAGANA PROLONGED SOUND MARK *6 KATAKANA ITERATION MARK +6 KATAKANA VOICED ITERATION MARK row 049 cell 005 b4 BOPOMOFO LETTER B p4 BOPOMOFO LETTER P m4 BOPOMOFO LETTER M f4 BOPOMOFO LETTER F d4 BOPOMOFO LETTER D t4 BOPOMOFO LETTER T n4 BOPOMOFO LETTER N l4 BOPOMOFO LETTER L g4 BOPOMOFO LETTER G k4 BOPOMOFO LETTER K h4 BOPOMOFO LETTER H j4 BOPOMOFO LETTER J q4 BOPOMOFO LETTER Q x4 BOPOMOFO LETTER X zh BOPOMOFO LETTER ZH ch BOPOMOFO LETTER CH sh BOPOMOFO LETTER SH r4 BOPOMOFO LETTER R z4 BOPOMOFO LETTER Z c4 BOPOMOFO LETTER C s4 BOPOMOFO LETTER S a4 BOPOMOFO LETTER A o4 BOPOMOFO LETTER O e4 BOPOMOFO LETTER E eh4 BOPOMOFO LETTER EH ai BOPOMOFO LETTER AI ei BOPOMOFO LETTER EI au BOPOMOFO LETTER AU ou BOPOMOFO LETTER OU an BOPOMOFO LETTER AN en BOPOMOFO LETTER EN aN BOPOMOFO LETTER ANG eN BOPOMOFO LETTER ENG er BOPOMOFO LETTER ER i4 BOPOMOFO LETTER I u4 BOPOMOFO LETTER U iu BOPOMOFO LETTER IU v4 BOPOMOFO LETTER V nG BOPOMOFO LETTER NG gn BOPOMOFO LETTER GN row 050 cell 028 (JU) PARENTHESIZED HANGUL CIEUC U cell 032 1c PARENTHESIZED IDEOGRAPH ONE 2c PARENTHESIZED IDEOGRAPH TWO 3c PARENTHESIZED IDEOGRAPH THREE 4c PARENTHESIZED IDEOGRAPH FOUR 5c PARENTHESIZED IDEOGRAPH FIVE 6c PARENTHESIZED IDEOGRAPH SIX 7c PARENTHESIZED IDEOGRAPH SEVEN 8c PARENTHESIZED IDEOGRAPH EIGHT 9c PARENTHESIZED IDEOGRAPH NINE 10c PARENTHESIZED IDEOGRAPH TEN cell 127 KSC KOREAN STANDARD SYMBOL row 051 cell 194 am SQUARE AM cell 216 pm SQUARE PM Presentation forms row 251 cell 000 ff LATIN SMALL LIGATURE FF fi LATIN SMALL LIGATURE FI fl LATIN SMALL LIGATURE FL ffi LATIN SMALL LIGATURE FFI ffl LATIN SMALL LIGATURE FFL St LATIN SMALL LIGATURE LONG S T st LATIN SMALL LIGATURE ST row 254 cell 125 3+; ARABIC SHADDA MEDIAL FORM cell 130 aM. ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM cell 132 aH. ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM cell 136 ah. ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM cell 141 a+- ARABIC LETTER ALEF ISOLATED FORM a+. ARABIC LETTER ALEF FINAL FORM b+- ARABIC LETTER BEH ISOLATED FORM b+. ARABIC LETTER BEH FINAL FORM b+, ARABIC LETTER BEH INITIAL FORM b+; ARABIC LETTER BEH MEDIAL FORM tm- ARABIC LETTER TEH MARBUTA ISOLATED FORM tm. ARABIC LETTER TEH MARBUTA FINAL FORM t+- ARABIC LETTER TEH ISOLATED FORM t+. ARABIC LETTER TEH FINAL FORM t+, ARABIC LETTER TEH INITIAL FORM t+; ARABIC LETTER TEH MEDIAL FORM tk- ARABIC LETTER THEH ISOLATED FORM tk. ARABIC LETTER THEH FINAL FORM tk, ARABIC LETTER THEH INITIAL FORM tk; ARABIC LETTER THEH MEDIAL FORM g+- ARABIC LETTER JEEM ISOLATED FORM g+. ARABIC LETTER JEEM FINAL FORM g+, ARABIC LETTER JEEM INITIAL FORM g+; ARABIC LETTER JEEM MEDIAL FORM hk- ARABIC LETTER HAH ISOLATED FORM hk. ARABIC LETTER HAH FINAL FORM hk, ARABIC LETTER HAH INITIAL FORM hk; ARABIC LETTER HAH MEDIAL FORM x+- ARABIC LETTER KHAH ISOLATED FORM x+. ARABIC LETTER KHAH FINAL FORM x+, ARABIC LETTER KHAH INITIAL FORM x+; ARABIC LETTER KHAH MEDIAL FORM d+- ARABIC LETTER DAL ISOLATED FORM d+. ARABIC LETTER DAL FINAL FORM dk- ARABIC LETTER THAL ISOLATED FORM dk. ARABIC LETTER THAL FINAL FORM r+- ARABIC LETTER REH ISOLATED FORM r+. ARABIC LETTER REH FINAL FORM z+- ARABIC LETTER ZAIN ISOLATED FORM z+. ARABIC LETTER ZAIN FINAL FORM s+- ARABIC LETTER SEEN ISOLATED FORM s+. ARABIC LETTER SEEN FINAL FORM s+, ARABIC LETTER SEEN INITIAL FORM s+; ARABIC LETTER SEEN MEDIAL FORM sn- ARABIC LETTER SHEEN ISOLATED FORM sn. ARABIC LETTER SHEEN FINAL FORM sn, ARABIC LETTER SHEEN INITIAL FORM sn; ARABIC LETTER SHEEN MEDIAL FORM c+- ARABIC LETTER SAD ISOLATED FORM c+. ARABIC LETTER SAD FINAL FORM c+, ARABIC LETTER SAD INITIAL FORM c+; ARABIC LETTER SAD MEDIAL FORM dd- ARABIC LETTER DAD ISOLATED FORM dd. ARABIC LETTER DAD FINAL FORM dd, ARABIC LETTER DAD INITIAL FORM dd; ARABIC LETTER DAD MEDIAL FORM tj- ARABIC LETTER TAH ISOLATED FORM tj. ARABIC LETTER TAH FINAL FORM tj, ARABIC LETTER TAH INITIAL FORM tj; ARABIC LETTER TAH MEDIAL FORM zH- ARABIC LETTER ZAH ISOLATED FORM zH. ARABIC LETTER ZAH FINAL FORM zH, ARABIC LETTER ZAH INITIAL FORM zH; ARABIC LETTER ZAH MEDIAL FORM e+- ARABIC LETTER AIN ISOLATED FORM e+. ARABIC LETTER AIN FINAL FORM e+, ARABIC LETTER AIN INITIAL FORM e+; ARABIC LETTER AIN MEDIAL FORM i+- ARABIC LETTER GHAIN ISOLATED FORM i+. ARABIC LETTER GHAIN FINAL FORM i+, ARABIC LETTER GHAIN INITIAL FORM i+; ARABIC LETTER GHAIN MEDIAL FORM f+- ARABIC LETTER FEH ISOLATED FORM f+. ARABIC LETTER FEH FINAL FORM f+, ARABIC LETTER FEH INITIAL FORM f+; ARABIC LETTER FEH MEDIAL FORM q+- ARABIC LETTER QAF ISOLATED FORM q+. ARABIC LETTER QAF FINAL FORM q+, ARABIC LETTER QAF INITIAL FORM q+; ARABIC LETTER QAF MEDIAL FORM k+- ARABIC LETTER KAF ISOLATED FORM k+. ARABIC LETTER KAF FINAL FORM k+, ARABIC LETTER KAF INITIAL FORM k+; ARABIC LETTER KAF MEDIAL FORM l+- ARABIC LETTER LAM ISOLATED FORM l+. ARABIC LETTER LAM FINAL FORM l+, ARABIC LETTER LAM INITIAL FORM l+; ARABIC LETTER LAM MEDIAL FORM m+- ARABIC LETTER MEEM ISOLATED FORM m+. ARABIC LETTER MEEM FINAL FORM m+, ARABIC LETTER MEEM INITIAL FORM m+; ARABIC LETTER MEEM MEDIAL FORM n+- ARABIC LETTER NOON ISOLATED FORM n+. ARABIC LETTER NOON FINAL FORM n+, ARABIC LETTER NOON INITIAL FORM n+; ARABIC LETTER NOON MEDIAL FORM h+- ARABIC LETTER HEH ISOLATED FORM h+. ARABIC LETTER HEH FINAL FORM h+, ARABIC LETTER HEH INITIAL FORM h+; ARABIC LETTER HEH MEDIAL FORM w+- ARABIC LETTER WAW ISOLATED FORM w+. ARABIC LETTER WAW FINAL FORM j+- ARABIC LETTER ALEF MAKSURA ISOLATED FORM j+. ARABIC LETTER ALEF MAKSURA FINAL FORM y+- ARABIC LETTER YEH ISOLATED FORM y+. ARABIC LETTER YEH FINAL FORM y+, ARABIC LETTER YEH INITIAL FORM y+; ARABIC LETTER YEH MEDIAL FORM lM- ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM lM. ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM lH- ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM lH. ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM lh- ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM lh. ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM la- ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM la. ARABIC LIGATURE LAM WITH ALEF FINAL FORM recode-3.7.15/keld/charsets.def0000644000175000017500000043014514172742375011767 &referenceset !" %&'()*+,-./0123456789:;<=>? ABCDEFGHIJKLMNOPQRSTUVWXYZ _ abcdefghijklmnopqrstuvwxyz &charset ISO_646.basic &rem source: ISO 2375 registry &alias ref &alias ISO_646.basic:1983 &bits 7 &code 32 SP ! " ?? ?? % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ?? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ?? ?? ?? ?? _ ?? a b c d e f g h i j k l m n o p q r s t u v w x y z &charset INVARIANT &alias iso-ir-170 &g0esc x2840 &g1esc x2940 &g2esc x2a40 &g3esc x2b40 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " ?? ?? % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ?? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ?? ?? ?? ?? _ ?? a b c d e f g h i j k l m n o p q r s t u v w x y z ?? ?? ?? ?? DT &charset ISO_646.irv &rem source: ISO 2375 registry &alias iso-ir-2 &alias ISO_646.irv:1983 &alias irv &g0esc x2840 &g1esc x2940 &g2esc x2a40 &g3esc x2b40 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT &charset BS_4730 &rem source: ISO 2375 registry &alias iso-ir-4 &alias ISO646-GB &alias gb &alias uk &g0esc x2841 &g1esc x2941 &g2esc x2a41 &g3esc x2b41 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT &charset ANSI_X3.4-1968 &rem source: ISO 2375 registry &alias iso-ir-6 &alias ANSI_X3.4-1986 &alias ISO_646.irv:1991 &alias ASCII &alias ISO646-US &alias US-ASCII &alias us &alias IBM367 &alias CP367 &alias 367 &g0esc x2842 &g1esc x2942 &g2esc x2a42 &g3esc x2b42 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT &charset NATS-SEFI &rem source: ISO 2375 registry &alias iso-ir-8-1 &g0esc x2843 &g1esc x2943 &g2esc x2a43 &g3esc x2b43 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? UA A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A: O: AA fS _ UB a b c d e f g h i j k l m n o p q r s t u v w x y z a: o: aa -N DT &charset NATS-SEFI-ADD &rem source: ISO 2375 registry &alias iso-ir-8-2 &g0esc x2844 &g1esc x2944 &g2esc x2a44 &g3esc x2b44 &bits 7 &code 0 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? A! ?? ?? D/ E' ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? TH ?? ?? ?? ?? U: ?? ?? ?? ?? ?? AE O/ ?? ?? ?? ?? a! ?? ?? d/ e' ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? th ?? ?? ?? ?? u: ?? ?? ?? ?? ?? ae o/ ?? ?? ?? &charset NATS-DANO &rem source: ISO 2375 registry &alias iso-ir-9-1 &g0esc x2845 &g1esc x2945 &g2esc x2a45 &g3esc x2b45 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! << >> DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? UA A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AE O/ AA fS _ UB a b c d e f g h i j k l m n o p q r s t u v w x y z ae o/ aa -N DT &charset NATS-DANO-ADD &rem source: ISO 2375 registry &alias iso-ir-9-2 &g0esc x2846 &g1esc x2946 &g2esc x2a46 &g3esc x2b46 &bits 7 &code 0 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? A! ?? ?? D/ E' ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? TH ?? ?? ?? ?? U: ?? ?? ?? ?? ?? A: O: ?? ?? ?? ?? a! ?? ?? d/ e' ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? th ?? ?? ?? ?? u: ?? ?? ?? ?? ?? a: o: ?? ?? ?? &charset SEN_850200_B &rem source: ISO 2375 registry &alias iso-ir-10 &alias FI &alias ISO646-FI &alias ISO646-SE &alias se &alias SS636127 &g0esc x2847 &g1esc x2947 &g2esc x2a47 &g3esc x2b47 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A: O: AA '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z a: o: aa '- DT &charset SEN_850200_C &rem source: ISO 2375 registry &alias iso-ir-11 &alias ISO646-SE2 &alias se2 &g0esc x2848 &g1esc x2948 &g2esc x2a48 &g3esc x2b48 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? E' A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A: O: AA U: _ e' a b c d e f g h i j k l m n o p q r s t u v w x y z a: o: aa u: DT &charset JIS_C6220-1969-jp &rem source: ISO 2375 registry &alias JIS_C6220-1969 &alias iso-ir-13 &alias katakana &alias x0201-7 &g0esc x2849 &g1esc x2949 &g2esc x2a49 &g3esc x2b49 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ._ <' >' ,_ .6 Wo a6 i6 u6 e6 o6 YA YU YO TU -6 A6 I6 U6 E6 O6 Ka Ki Ku Ke Ko Sa Si Su Se So Ta Ti Tu Te To Na Ni Nu Ne No Ha Hi Hu He Ho Ma Mi Mu Me Mo Ya Yu Yo Ra Ri Ru Re Ro Wa N6 "5 05 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? DT &charset JIS_C6220-1969-ro &rem source: ISO 2375 registry &alias iso-ir-14 &alias jp &alias ISO646-JP &g0esc x284a &g1esc x294a &g2esc x2a4a &g3esc x2b4a &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( Ye )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT &charset IT &rem source: ISO 2375 registry &alias iso-ir-15 &alias ISO646-IT &g0esc x2859 &g1esc x2959 &g2esc x2a59 &g3esc x2b59 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? SE A B C D E F G H I J K L M N O P Q R S T U V W X Y Z DG c, e' '> _ u! a b c d e f g h i j k l m n o p q r s t u v w x y z a! o! e! i! DT &charset PT &rem source: ISO 2375 registry &alias iso-ir-16 &alias ISO646-PT &g0esc x284c &g1esc x294c &g2esc x2a4c &g3esc x2b4c &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? SE A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A? C, O? '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z a? c, o? DG DT &charset ES &rem source: ISO 2375 registry &alias iso-ir-17 &alias ISO646-ES &g0esc x285a &g1esc x295a &g2esc x2a5a &g3esc x2b5a &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? SE A B C D E F G H I J K L M N O P Q R S T U V W X Y Z !I N? ?I '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z DG n? c, '? DT &charset greek7-old &rem source: ISO 2375 registry &alias iso-ir-18 &g0esc x285b &g1esc x295b &g2esc x2a5b &g3esc x2b5b &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? '' a* b* q* d* e* f* g* y* i* c* k* l* m* n* o* p* j3 r* s* t* h* w* *s x* u* z* ?, ,, ,' '? _ '! A* B* Q* D* E* F* G* Y* I* C* K* L* M* N* O* P* ?? R* S* T* H* W* .M X* U* Z* ?; ;; ;' ': DT &charset latin-greek &rem source: ISO 2375 registry &alias iso-ir-19 &g0esc x285c &g1esc x295c &g2esc x2a5c &g3esc x2b5c &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! A* B* Q* D* E* F* G* Y* I* C* K* L* M* N* O* P* ?? R* S* T* H* W* .M X* U* Z* (! !! !) ': DT &charset DIN_66003 &rem source: ISO 2375 registry &alias iso-ir-21 &alias de &alias ISO646-DE &g0esc x284b &g1esc x294b &g2esc x2a4b &g3esc x2b4b &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? SE A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A: O: U: '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z a: o: u: ss DT &charset NF_Z_62-010_(1973) &rem source: ISO 2375 registry &alias iso-ir-25 &alias ISO646-FR1 &g0esc x2852 &g1esc x2952 &g2esc x2a52 &g3esc x2b52 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? a! A B C D E F G H I J K L M N O P Q R S T U V W X Y Z DG c, SE '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z e' u! e! ': DT &charset Latin-greek-1 &rem source: ISO 2375 registry &alias iso-ir-27 &g0esc x2855 &g1esc x2955 &g2esc x2a55 &g3esc x2b55 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP C* " G* Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 Q* ; < = > P* D* A B C D E F G H I J K L M N O P Q R S T U V W X Y Z W* H* F* L* S* '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT &charset ISO_5427 &rem source: ISO 2375 registry &alias iso-ir-37 &g0esc x284e &g1esc x294e &g2esc x2a4e &g3esc x2b4e &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ju a= b= c= d= e= f= g= h= i= j= k= l= m= n= o= p= ja r= s= t= u= z% v= %' y= z= s% je sc c% =' JU A= B= C= D= E= F= G= H= I= J= K= L= M= N= O= P= JA R= S= T= U= Z% V= %" Y= Z= S% JE Sc C% DT &charset JIS_C6226-1978 &rem source: ISO 2375 registry &alias iso-ir-42 &g0esc x2440 &g1esc x242940 &g2esc x242a40 &g3esc x242b40 &bits 14 &code2 1 1 SP ,_ ._ , . .6 : ; ! "5 05 '' '! ': '> '- _ *6 +6 *5 +5 +" +_ *_ ;_ 0_ -6 -? -N &code2 1 31 FD BD ?1 PP !! .3 .. '6 '9 "6 "9 ( ) (' )' <( )> (! !) <1 >1 <' >' <" >" (" )" + - +- *X -: = != < > =< >= 00 .: Ml Fm DG 1' 2' oC Ye DO Ct Pd % Nb & * At SE *1 *2 0m 0M 0o LZ &code2 2 1 Db OS fS uT UT dT DT :X =T -> <- -! -v =_ &code2 3 16 0 1 2 3 4 5 6 7 8 9 &code2 3 33 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z &code2 3 65 a b c d e f g h i j k l m n o p q r s t u v w x y z &code2 4 1 A5 a5 I5 i5 U5 u5 E5 e5 O5 o5 ka ga ki gi ku gu ke ge ko go sa za si zi su zu se ze so zo ta da ti di tU tu du te de to do na ni nu ne no ha ba pa hi bi pi hu bu pu he be pe ho bo po ma mi mu me mo yA ya yU yu yO yo ra ri ru re ro wA wa wi we wo n5 &code2 5 1 a6 A6 i6 I6 u6 U6 e6 E6 o6 O6 Ka Ga Ki Gi Ku Gu Ke Ge Ko Go Sa Za Si Zi Su Zu Se Ze So Zo Ta Da Ti Di TU Tu Du Te De To Do Na Ni Nu Ne No Ha Ba Pa Hi Bi Pi Hu Bu Pu He Be Pe Ho Bo Po Ma Mi Mu Me Mo YA Ya YU Yu YO Yo Ra Ri Ru Re Ro WA Wa Wi We Wo N6 Vi KA KE &code2 6 1 A* B* G* D* E* Z* Y* H* I* K* L* M* N* C* O* P* R* S* T* U* F* X* Q* W* &code2 6 33 a* b* g* d* e* z* y* h* i* k* l* m* n* c* o* p* r* s* t* u* f* x* q* w* &code2 7 1 A= B= V= G= D= E= IO Z% Z= I= J= K= L= M= N= O= P= R= S= T= U= F= H= C= C% S% Sc =" Y= %" JE JU JA &code2 7 49 a= b= v= g= d= e= io z% z= i= j= k= l= m= n= o= p= r= s= t= u= f= h= c= c% s% sc =' y= %' je ju ja &codex j 16 46 1 94 &codex j 47 47 1 51 &codex j 48 83 1 94 &charset BS_viewdata &rem source: ISO 2375 registry &alias iso-ir-47 &g0esc x2856 &g1esc x2956 &g2esc x2a56 &g3esc x2b56 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <- 12 -> -! OS '! a b c d e f g h i j k l m n o p q r s t u v w x y z 14 PP 34 -: DT &charset INIS &rem source: ISO 2375 registry &alias iso-ir-49 &g0esc x2857 &g1esc x2957 &g2esc x2a57 &g3esc x2b57 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? ?? ?? DO % ?? ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?? ?? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( ?? )> ?? ?? ?? a b c d e f g h i j k l m n o p q r s t u v w x y z ?? !! ?? ?? DT &charset INIS-8 &rem source: ISO 2375 registry &alias iso-ir-50 &g0esc x285d &g1esc x295d &g2esc x2a5d &g3esc x2b5d &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? a* b* g* d* C* ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? -> In 0S 1S 2S 3S 4S 5S 6S 7S 8S 9S +S -S Ru D* L* W* 0s 1s 2s 3s 4s 5s 6s 7s 8s 9s S* m* n* w* p* DT &charset INIS-cyrillic &rem source: ISO 2375 registry &alias iso-ir-51 &g0esc x285e &g1esc x295e &g2esc x2a5e &g3esc x2b5e &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? RT ?? -> In a* b* g* d* S* m* n* w* p* C* D* L* W* =" -S +S ju a= b= c= d= e= f= g= h= i= j= k= l= m= n= o= p= ja r= s= t= u= z% v= %' y= z= s% je sc c% =' JU A= B= C= D= E= F= G= H= I= J= K= L= M= N= O= P= JA R= S= T= U= Z% V= %" Y= Z= S% JE Sc C% DT &charset ISO_5427-ext &rem source: ISO 2375 registry &alias iso-ir-54 &alias ISO_5427:1981 &g0esc x2851 &g1esc x2951 &g2esc x2a51 &g3esc x2b51 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? g3 d% g% ie io ds ii yi j% lj nj ts kj v% dz ?? y3 f3 v3 o3 ?? ?? ?? ?? ?? ?? ?? <( ?? )> ?? _ G3 D% G% IE IO DS II YI J% LJ NJ Ts KJ V% DZ =" Y3 F3 V3 O3 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? DT &charset ISO_5428 &rem source: ISO 2375 registry &alias iso-ir-55 &alias ISO_5428:1980 &g0esc x2853 &g1esc x2953 &g2esc x2a53 &g3esc x2b53 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP "! "' ": "? "p "d "i ?? ?? ?? ?? ?? ?? ?? ?? << >> "9 "6 'G ,G ?? ?? ?? ?? ?? .M ?? ?? ?? ; ?? A* B* ?? G* D* E* T3 M3 Z* Y* H* I* K* L* M* N* C* O* P* K3 R* S* ?? T* U* F* X* Q* W* P3 ?? ?? a* b* b3 g* d* e* t3 m3 z* y* h* i* k* l* m* n* c* o* p* k3 r* s* *s t* u* f* x* q* w* p3 DT &charset GB_1988-80 &rem source: ISO 2375 registry &alias iso-ir-57 &alias cn &alias ISO646-CN &g0esc x2854 &g1esc x2954 &g2esc x2a54 &g3esc x2b54 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Ye % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT &charset GB_2312-80 &rem source: ISO 2375 registry &alias iso-ir-58 &alias chinese &g0esc x2441 &g1esc x242941 &g2esc x242a41 &g3esc x242b41 &bits 14 &code2 1 1 SP ,_ .6 .M 'm '< ': +" *_ -6 ?1 !2 .3 '6 '9 "6 "9 (' )' <1 >1 << >> <+ >+ <7 7> (I )I (" )" +- *X -: :R AN OR +Z *P (U )U (- :: RT -T PP -L (A 0. In Io =3 =? ?2 CG 0( != !< !> =< >= 00 :. .: Ml Fm DG 1' 2' oC DO Cu Ct Pd %0 SE NB *1 *2 0m 0M 0o Dw Db OS fS uT UT :X -> <- -! -v =_ &code2 2 17 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) 1-o 2-o 3-o 4-o 5-o 6-o 7-o 8-o 9-o &code2 2 69 1c 2c 3c 4c 5c 6c 7c 8c 9c 10c &code2 2 81 1R 2R 3R 4R 5R 6R 7R 8R 9R aR bR cR &code2 3 1 ! " Nb Ye % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- &code2 4 1 A5 a5 I5 i5 U5 u5 E5 e5 O5 o5 ka ga ki gi ku gu ke ge ko go sa za si zi su zu se ze so zo ta da ti di tU tu du te de to do na ni nu ne no ha ba pa hi bi pi hu bu pu he be pe ho bo po ma mi mu me mo yA ya yU yu yO yo ra ri ru re ro wA wa wi we wo n5 &code2 5 1 a6 A6 i6 I6 u6 U6 e6 E6 o6 O6 Ka Ga Ki Gi Ku Gu Ke Ge Ko Go Sa Za Si Zi Su Zu Se Ze So Zo Ta Da Ti Di TU Tu Du Te De To Do Na Ni Nu Ne No Ha Ba Pa Hi Bi Pi Hu Bu Pu He Be Pe Ho Bo Po Ma Mi Mu Me Mo YA Ya YU Yu YO Yo Ra Ri Ru Re Ro WA Wa Wi We Wo N6 Vi KA KE &code2 6 1 A* B* G* D* E* Z* Y* H* I* K* L* M* N* C* O* P* R* S* T* U* F* X* Q* W* &code2 6 33 a* b* g* d* e* z* y* h* i* k* l* m* n* c* o* p* r* s* t* u* f* x* q* w* &code2 7 1 A= B= V= G= D= E= IO Z% Z= I= J= K= L= M= N= O= P= R= S= T= U= F= H= C= C% S% Sc =" Y= %" JE JU JA &code2 7 49 a= b= v= g= d= e= io z% z= i= j= k= l= m= n= o= p= r= s= t= u= f= h= c= c% s% sc =' y= %' je ju ja &code2 8 1 a- a' a< a! e- e' e< e! i- i' i< i! o- o' o< o! u- u' u< u! u:- u:< u:! u: e> &code2 8 37 b4 p4 m4 f4 d4 t4 n4 l4 g4 k4 h4 j4 q4 x4 zh ch sh r4 z4 c4 s4 a4 o4 e4 eh4 ai ei au ou an en aN eN er i4 u4 iu &code2 9 4 hh HH vv VV 3- 3_ 3! 3/ 4- 4_ 4! 4/ dr dR Dr DR dl dL Dl LD ur uR Ur UR ul uL Ul UL vr vR Udr uDr Vr UdR uDR VR vl vL Udl uDl Vl UdL uDL VL dh dLr dlR dH Dh DLr DlR DH vh vLr vlR vH Udh uDh Vh UdLr UdlR uDLr uDlR UdH uDH VLr VlR VH &codex c 16 54 1 94 &codex c 55 55 1 89 &codex c 56 87 1 94 &charset NS_4551-1 &rem source: ISO 2375 registry &alias iso-ir-60 &alias ISO646-NO &alias no &g0esc x2860 &g1esc x2960 &g2esc x2a60 &g3esc x2b60 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AE O/ AA '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z ae o/ aa '- DT &charset NS_4551-2 &rem source: ISO 2375 registry &alias ISO646-NO2 &alias iso-ir-61 &alias no2 &g0esc x2861 &g1esc x2961 &g2esc x2a61 &g3esc x2b61 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " SE DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AE O/ AA '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z ae o/ aa !! DT &charset NF_Z_62-010 &rem source: ISO 2375 registry &alias iso-ir-69 &alias ISO646-FR &alias fr &g0esc x2866 &g1esc x2966 &g2esc x2a66 &g3esc x2b66 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? a! A B C D E F G H I J K L M N O P Q R S T U V W X Y Z DG c, SE '> _ My a b c d e f g h i j k l m n o p q r s t u v w x y z e' u! e! ': DT &charset videotex-suppl &rem source: ISO 2375 registry &alias iso-ir-70 &g0esc x2862 &g1esc x2962 &g2esc x2a62 &g3esc x2b62 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " ?? ?? % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC ?? !I Ct Pd DO Ye Nb SE Cu '6 "6 << <- -! -> -v DG +- 2S 3S *X My PI .M -: '9 "9 >> 14 12 34 ?I "1 "! "' "> "? "- "( ". ": ?? "0 ", ?? "" "; "< -M 1S Rg Co TM M8 ?? ?? ?? ?? ?? ?? 18 38 58 78 Om AE D- -a H/ ?? IJ L. L/ O/ OE -o TH T/ NG 'n kk ae d/ d- h/ i. ij l. l/ o/ oe ss th t/ ng ?? &comb2 "' SP '' a a' A A' e e' E E' i i' I I' o o' O O' u u' U U' y y' Y Y' c c' C C' l l' L L' n n' N N' r r' R R' s s' S S' z z' Z Z' &comb2 "( SP '( a a( A A( g g( G G( u u( U U( &comb2 "< SP '< c c< C C< d d< D D< e e< E E< l l< L L< n n< N N< r r< R R< s s< S S< t t< T T< z z< Z Z< &comb2 ", SP ', c c, C C, g g, G G, k k, K K, l l, L L, n n, N N, r r, R R, s s, S S, t t, T T, &comb2 "> a a> A A> e e> E E> i i> I I> o o> O O> u u> U U> y y> Y Y> c c> C C> g g> G G> h h> H H> j j> J J> s s> S S> w w> W W> &comb2 ": SP ': a a: A A: e e: E E: i i: I I: o o: O O: u u: U U: y y: Y Y: &comb2 ". SP '. c c. C C. e e. E E. g g. G G. I I. z z. Z Z. &comb2 "" SP '" o o" O O" u u" U U" &comb2 "! a a! A A! e e! E E! i i! I I! o o! O O! u u! U U! &comb2 "- a a- A A- e e- E E- i i- I I- o o- O O- u u- U U- &comb2 "; SP '; a a; A A; e e; E E; i i; I I; u u; U U; &comb2 "0 SP '0 a aa A AA u u0 U U0 &comb2 "? SP '? a a? A A? n n? N N? i i? I I? o o? O O? u u? U U? &charset PT2 &rem source: ISO 2375 registry &alias iso-ir-84 &alias ISO646-PT2 &g0esc x2867 &g1esc x2967 &g2esc x2a67 &g3esc x2b67 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? '' A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A? C, O? '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z a? c, o? '? DT &charset ES2 &rem source: ISO 2375 registry &alias iso-ir-85 &alias ISO646-ES2 &g0esc x2868 &g1esc x2968 &g2esc x2a68 &g3esc x2b68 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? sb A B C D E F G H I J K L M N O P Q R S T U V W X Y Z !I N? C, ?I _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z '' n? c, ': DT &charset MSZ_7795.3 &rem source: ISO 2375 registry &alias iso-ir-86 &alias ISO646-HU &alias hu &g0esc x2869 &g1esc x2969 &g2esc x2a69 &g3esc x2b69 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? A' A B C D E F G H I J K L M N O P Q R S T U V W X Y Z E' O: U: '> _ a' a b c d e f g h i j k l m n o p q r s t u v w x y z e' o: u: '" DT &charset JIS_C6226-1983 &rem source: ISO 2375 registry &alias iso-ir-87 &alias x0208 &alias JIS_X0208-1983 &g0esc x2442 &g1esc x242942 &g2esc x242a42 &g3esc x242b42 &bits 14 &code2 1 1 SP ,_ ._ , . .6 : ; ! "5 05 '' '! ': '> '- _ *6 +6 *5 +5 +" +_ *_ ;_ 0_ -6 -? -N &code2 1 31 FD BD ?1 PP !! .3 .. '6 '9 "6 "9 ( ) (' )' <( )> (! !) <1 >1 <' >' <" >" (" )" + - +- *X -: = != < > =< >= 00 .: Ml Fm DG 1' 2' oC Ye DO Ct Pd % Nb & * At SE *1 *2 0m 0M 0o LZ &code2 2 1 Db OS fS uT UT dT DT :X =T -> <- -! -v =_ &code2 2 26 (- -) (_ )_ (C )C (U )U &code2 2 42 AN OR NO => <= FA TE &code2 2 60 -V -T (A dP NB =3 HI <* *> RT CG 0( :. In DI &code2 2 82 AA %0 MX Mb M8 /- /= PI &code2 2 94 Ci &code2 3 16 0 1 2 3 4 5 6 7 8 9 &code2 3 33 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z &code2 3 65 a b c d e f g h i j k l m n o p q r s t u v w x y z &code2 4 1 A5 a5 I5 i5 U5 u5 E5 e5 O5 o5 ka ga ki gi ku gu ke ge ko go sa za si zi su zu se ze so zo ta da ti di tU tu du te de to do na ni nu ne no ha ba pa hi bi pi hu bu pu he be pe ho bo po ma mi mu me mo yA ya yU yu yO yo ra ri ru re ro wA wa wi we wo n5 &code2 5 1 a6 A6 i6 I6 u6 U6 e6 E6 o6 O6 Ka Ga Ki Gi Ku Gu Ke Ge Ko Go Sa Za Si Zi Su Zu Se Ze So Zo Ta Da Ti Di TU Tu Du Te De To Do Na Ni Nu Ne No Ha Ba Pa Hi Bi Pi Hu Bu Pu He Be Pe Ho Bo Po Ma Mi Mu Me Mo YA Ya YU Yu YO Yo Ra Ri Ru Re Ro WA Wa Wi We Wo N6 Vi KA KE &code2 6 1 A* B* G* D* E* Z* Y* H* I* K* L* M* N* C* O* P* R* S* T* U* F* X* Q* W* &code2 6 33 a* b* g* d* e* z* y* h* i* k* l* m* n* c* o* p* r* s* t* u* f* x* q* w* &code2 7 1 A= B= V= G= D= E= IO Z% Z= I= J= K= L= M= N= O= P= R= S= T= U= F= H= C= C% S% Sc =" Y= %" JE JU JA &code2 7 49 a= b= v= g= d= e= io z% z= i= j= k= l= m= n= o= p= r= s= t= u= f= h= c= c% s% sc =' y= %' je ju ja &code2 8 1 hh vv dr dl ul ur vr dh vl uh vh HH VV DR LD UL UR VR DH VL UH VH Vr dH Vl uH vH vR Dh vL Uh Vh &codex j 16 46 1 94 &codex j 47 47 1 51 &codex j 48 83 1 94 &codex j 84 84 1 4 &charset greek7 &rem source: ISO 2375 registry &alias iso-ir-88 &g0esc x286a &g1esc x296a &g2esc x2a6a &g3esc x2b6a &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A* B* G* D* E* Z* Y* H* I* ?? K* L* M* N* C* O* P* R* S* T* U* F* ?? X* Q* W* <( // )> '> _ '! a* b* g* d* e* z* y* h* i* ?? k* l* m* n* c* o* p* r* s* t* u* f* *s x* q* w* (! !! !) '- DT &charset ASMO_449 &rem source: ISO 2375 registry &alias ISO_9036 &alias arabic7 &alias iso-ir-89 &g0esc x286b &g1esc x296b &g2esc x2a6b &g3esc x2b6b &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + ,+ - . / 0 1 2 3 4 5 6 7 8 9 : ;+ < = > ?+ At H' aM aH wH ah yH a+ b+ tm t+ tk g+ hk x+ d+ dk r+ z+ s+ sn c+ dd tj zH e+ i+ <( // )> '> _ ++ f+ q+ k+ l+ m+ n+ h+ w+ j+ y+ :+ "+ =+ /+ '+ 1+ 3+ 0+ ?? ?? ?? ?? ?? ?? ?? ?? (! !! !) '- DT &charset iso-ir-90 &rem source: ISO 2375 registry &alias ISO_6937-2:1983 &g0esc x286c &g1esc x296c &g2esc x2a6c &g3esc x2b6c &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC ?? !I Ct Pd DO Ye ?? SE ?? '6 "6 << <- -! -> -v DG +- 2S 3S *X My PI .M -: '9 "9 >> 14 12 34 ?I ?? "! "' "> "? "- "( ". ": ?? "0 ", "_ "" "; "< -M 1S Rg Co TM M8 ?? ?? ?? ?? ?? ?? 18 38 58 78 Om AE D- -a H/ ?? IJ L. L/ O/ OE -o TH T/ NG 'n kk ae d/ d- h/ i. ij l. l/ o/ oe ss th t/ ng ?? &comb2 "' SP '' a a' A A' e e' E E' i i' I I' o o' O O' u u' U U' y y' Y Y' c c' C C' l l' L L' n n' N N' r r' R R' s s' S S' z z' Z Z' &comb2 "( SP '( a a( A A( g g( G G( u u( U U( &comb2 "< SP '< c c< C C< d d< D D< e e< E E< l l< L L< n n< N N< r r< R R< s s< S S< t t< T T< z z< Z Z< &comb2 ", SP ', c c, C C, g g, G G, k k, K K, l l, L L, n n, N N, r r, R R, s s, S S, t t, T T, &comb2 "> a a> A A> e e> E E> i i> I I> o o> O O> u u> U U> y y> Y Y> c c> C C> g g> G G> h h> H H> j j> J J> s s> S S> w w> W W> &comb2 ": SP ': a a: A A: e e: E E: i i: I I: o o: O O: u u: U U: y y: Y Y: &comb2 ". SP '. c c. C C. e e. E E. g g. G G. I I. z z. Z Z. &comb2 "" SP '" o o" O O" u u" U U" &comb2 "! a a! A A! e e! E E! i i! I I! o o! O O! u u! U U! &comb2 "- a a- A A- e e- E E- i i- I I- o o- O O- u u- U U- &comb2 "; SP '; a a; A A; e e; E E; i i; I I; u u; U U; &comb2 "0 SP '0 a aa A AA u u0 U U0 &comb2 "? SP '? a a? A A? n n? N N? i i? I I? o o? O O? u u? U U? &charset JIS_C6229-1984-a &rem source: ISO 2375 registry &alias iso-ir-91 &alias jp-ocr-a &g0esc x286d &g1esc x296d &g2esc x2a6d &g3esc x2b6d &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; 1h = 3h ? ?? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ?? Ye 2h '> _ ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 4h ?? ?? DT &charset JIS_C6229-1984-b &rem source: ISO 2375 registry &alias iso-ir-92 &alias ISO646-JP-OCR-B &alias jp-ocr-b &g0esc x286e &g1esc x296e &g2esc x2a6e &g3esc x2b6e &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z '> _ ?? a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) ?? DT &charset JIS_C6229-1984-b-add &rem source: ISO 2375 registry &alias iso-ir-93 &alias jp-ocr-b-add &g0esc x286f &g1esc x296f &g2esc x2a6f &g3esc x2b6f &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? ?? Pd Cu // ?? SE ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? DT &charset JIS_C6229-1984-hand &rem source: ISO 2375 registry &alias iso-ir-94 &alias jp-ocr-hand &g0esc x2870 &g1esc x2970 &g2esc x2a70 &g3esc x2b70 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z '> _ ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? !! ?? ?? DT &charset JIS_C6229-1984-hand-add &rem source: ISO 2375 registry &alias iso-ir-95 &alias jp-ocr-hand-add &g0esc x2871 &g1esc x2971 &g2esc x2a71 &g3esc x2b71 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? ?? ?? ?? // ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? DT &charset JIS_C6229-1984-kana &rem source: ISO 2375 registry &alias iso-ir-96 &g0esc x2872 &g1esc x2972 &g2esc x2a72 &g3esc x2b72 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? <' >' ?? ?? Wo ?? ?? ?? ?? ?? ?? ?? ?? ?? -6 A6 I6 U6 E6 O6 Ka Ki Ku Ke Ko Sa Si Su Se So Ta Ti Tu Te To Na Ni Nu Ne No Ha Hi Hu He Ho Ma Mi Mu Me Mo Ya Yu Yo Ra Ri Ru Re Ro Wa N6 "5 05 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? DT &charset ISO_2033-1983 &rem source: ISO 2375 registry &alias iso-ir-98 &alias e13b &g0esc x2873 &g1esc x2973 &g2esc x2a73 &g3esc x2b73 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 1j 2j 3j 4j ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? DT &charset ANSI_X3.110-1983 &rem source: ISO 2375 registry &alias iso-ir-99 &alias CSA_T500-1983 &alias NAPLPS &g0esc x2874 &g1esc x2974 &g2esc x2a74 &g3esc x2b74 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " ?? ?? % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC ?? !I Ct Pd DO Ye Nb SE Cu '6 "6 << <- -! -> -v DG +- 2S 3S *X My PI .M -: '9 "9 >> 14 12 34 ?I ?? "! "' "> "? "- "( ". ": "/ "0 ", "_ "" "; "< -M 1S Rg Co TM M8 hh vv FD BD Fd Bd 18 38 58 78 Om AE D- -a H/ vh IJ L. L/ O/ OE -o TH T/ NG 'n kk ae d/ d- h/ i. ij l. l/ o/ oe ss th t/ ng ?? &comb2 "' SP '' a a' A A' e e' E E' i i' I I' o o' O O' u u' U U' y y' Y Y' c c' C C' l l' L L' n n' N N' r r' R R' s s' S S' z z' Z Z' &comb2 "( SP '( a a( A A( g g( G G( u u( U U( &comb2 "< SP '< c c< C C< d d< D D< e e< E E< l l< L L< n n< N N< r r< R R< s s< S S< t t< T T< z z< Z Z< &comb2 ", SP ', c c, C C, g g, G G, k k, K K, l l, L L, n n, N N, r r, R R, s s, S S, t t, T T, &comb2 "> a a> A A> e e> E E> i i> I I> o o> O O> u u> U U> y y> Y Y> c c> C C> g g> G G> h h> H H> j j> J J> s s> S S> w w> W W> &comb2 ": SP ': a a: A A: e e: E E: i i: I I: o o: O O: u u: U U: y y: Y Y: &comb2 ". SP '. c c. C C. e e. E E. g g. G G. I I. z z. Z Z. &comb2 "" SP '" o o" O O" u u" U U" &comb2 "! a a! A A! e e! E E! i i! I I! o o! O O! u u! U U! &comb2 "- SP 'm a a- A A- e e- E E- i i- I I- o o- O O- u u- U U- &comb2 "; SP '; a a; A A; e e; E E; i i; I I; u u; U U; &comb2 "0 SP '0 a aa A AA u u0 U U0 &comb2 "? a a? A A? n n? N N? i i? I I? o o? O O? u u? U U? &charset ISO-8859-1 &rem source: ISO 2375 registry &alias iso-ir-100 &alias ISO_8859-1:1987 &alias ISO_8859-1 &alias ISO8859-1 &alias latin1 &alias l1 &alias IBM819 &alias CP819 &alias 819 &g1esc x2d41 &g2esc x2e41 &g3esc x2f41 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I Ct Pd Cu Ye BB SE ': Co -a << NO -- Rg 'm DG +- 2S 3S '' My PI .M ', 1S -o >> 14 12 34 ?I A! A' A> A? A: AA AE C, E! E' E> E: I! I' I> I: D- N? O! O' O> O? O: *X O/ U! U' U> U: Y' TH ss a! a' a> a? a: aa ae c, e! e' e> e: i! i' i> i: d- n? o! o' o> o? o: -: o/ u! u' u> u: y' th y: &charset ISO-8859-2 &rem source: ISO 2375 registry &alias iso-ir-101 &alias ISO_8859-2:1987 &alias ISO_8859-2 &alias ISO8859-2 &alias latin2 &alias l2 &alias IBM912 &alias CP912 &alias 912 &g1esc x2d42 &g2esc x2e42 &g3esc x2f42 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS A; '( L/ Cu L< S' SE ': S< S, T< Z' -- Z< Z. DG a; '; l/ '' l< s' '< ', s< s, t< z' '" z< z. R' A' A> A( A: L' C' C, C< E' E; E: E< I' I> D< D/ N' N< O' O> O" O: *X R< U0 U' U" U: Y' T, ss r' a' a> a( a: l' c' c, c< e' e; e: e< i' i> d< d/ n' n< o' o> o" o: -: r< u0 u' u" u: y' t, '. &charset T.61-7bit &rem source: ISO 2375 registry &alias iso-ir-102 &g0esc x2875 &g1esc x2975 &g2esc x2a75 &g3esc x2b75 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( ?? )> ?? _ ?? a b c d e f g h i j k l m n o p q r s t u v w x y z ?? !! ?? ?? DT &charset T.61-8bit &rem source: ISO 2375 registry &alias T.61 &alias iso-ir-103 &g0esc x2876 &g1esc x2976 &g2esc x2a76 &g3esc x2b76 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " ?? ?? % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( ?? )> ?? _ ?? a b c d e f g h i j k l m n o p q r s t u v w x y z ?? !! ?? ?? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC ?? !I Ct Pd DO Ye Nb SE Cu ?? ?? << ?? ?? ?? ?? DG +- 2S 3S *X My PI .M -: ?? ?? >> 14 12 34 ?I ?? "! "' "> "? "- "( ". ": ?? "0 ", "_ "" "; "< ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? Om AE D- -a H/ ?? IJ L. L/ O/ OE -o TH T/ NG 'n kk ae d/ d- h/ i. ij l. l/ o/ oe ss th t/ ng ?? &comb2 "' SP '' a a' A A' e e' E E' i i' I I' o o' O O' u u' U U' y y' Y Y' c c' C C' l l' L L' n n' N N' r r' R R' s s' S S' z z' Z Z' &comb2 "( SP '( a a( A A( g g( G G( u u( U U( &comb2 "< SP '< c c< C C< d d< D D< e e< E E< l l< L L< n n< N N< r r< R R< s s< S S< t t< T T< z z< Z Z< &comb2 ", SP ', c c, C C, g g, G G, k k, K K, l l, L L, n n, N N, r r, R R, s s, S S, t t, T T, &comb2 "> a a> A A> e e> E E> i i> I I> o o> O O> u u> U U> y y> Y Y> c c> C C> g g> G G> h h> H H> j j> J J> s s> S S> w w> W W> &comb2 ": SP ': a a: A A: e e: E E: i i: I I: o o: O O: u u: U U: y y: Y Y: &comb2 ". SP '. c c. C C. e e. E E. g g. G G. I I. z z. Z Z. &comb2 "" SP '" o o" O O" u u" U U" &comb2 "! a a! A A! e e! E E! i i! I I! o o! O O! u u! U U! &comb2 "- SP 'm a a- A A- e e- E E- i i- I I- o o- O O- u u- U U- &comb2 "; SP '; a a; A A; e e; E E; i i; I I; u u; U U; &comb2 "0 SP '0 a aa A AA u u0 U U0 &comb2 "? a a? A A? n n? N N? i i? I I? o o? O O? u u? U U? &charset ISO-8859-3 &rem source: ISO 2375 registry &alias iso-ir-109 &alias ISO_8859-3:1988 &alias ISO_8859-3 &alias ISO8859-3 &alias latin3 &alias l3 &g1esc x2d43 &g2esc x2e43 &g3esc x2f43 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS H/ '( Pd Cu ?? H> SE ': I. S, G( J> -- ?? Z. DG h/ 2S 3S '' My h> .M ', i. s, g( j> 12 ?? z. A! A' A> ?? A: C. C> C, E! E' E> E: I! I' I> I: ?? N? O! O' O> G. O: *X G> U! U' U> U: U( S> ss a! a' a> ?? a: c. c> c, e! e' e> e: i! i' i> i: ?? n? o! o' o> g. o: -: g> u! u' u> u: u( s> '. &charset ISO-8859-4 &rem source: ISO 2375 registry &alias iso-ir-110 &alias ISO_8859-4:1988 &alias ISO_8859-4 &alias ISO8859-4 &alias latin4 &alias l4 &g1esc x2d44 &g2esc x2e44 &g3esc x2f44 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS A; kk R, Cu I? L, SE ': S< E- G, T/ -- Z< 'm DG a; '; r, '' i? l, '< ', s< e- g, t/ NG z< ng A- A' A> A? A: AA AE I; C< E' E; E: E. I' I> I- D/ N, O- K, O> O? O: *X O/ U; U' U> U: U? U- ss a- a' a> a? a: aa ae i; c< e' e; e: e. i' i> i- d/ n, o- k, o> o? o: -: o/ u; u' u> u: u? u- '. &charset ECMA-cyrillic &rem source: ISO 2375 registry &alias iso-ir-111 &alias ECMA-113:1986 &alias ECMA-113 &g1esc x2d40 &g2esc x2e40 &g3esc x2f40 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS d% g% io ie ds ii yi j% lj nj ts kj -- v% dz N0 D% G% IO IE DS II YI J% LJ NJ Ts KJ Cu V% DZ ju a= b= c= d= e= f= g= h= i= j= k= l= m= n= o= p= ja r= s= t= u= z% v= %' y= z= s% je sc c% =' JU A= B= C= D= E= F= G= H= I= J= K= L= M= N= O= P= JA R= S= T= U= Z% V= %" Y= Z= S% JE Sc C% =" &charset CSA_Z243.4-1985-1 &rem source: ISO 2375 registry &alias iso-ir-121 &alias ISO646-CA &alias csa7-1 &alias ca &g0esc x2877 &g1esc x2977 &g2esc x2a77 &g3esc x2b77 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? a! A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a> c, e> i> _ o> a b c d e f g h i j k l m n o p q r s t u v w x y z e' u! e! u> DT &charset CSA_Z243.4-1985-2 &rem source: ISO 2375 registry &alias iso-ir-122 &alias ISO646-CA2 &alias csa7-2 &g0esc x2878 &g1esc x2978 &g2esc x2a78 &g3esc x2b78 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? a! A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a> c, e> E' _ o> a b c d e f g h i j k l m n o p q r s t u v w x y z e' u! e! u> DT &charset CSA_Z243.4-1985-gr &rem source: ISO 2375 registry &alias iso-ir-123 &g1esc x2d45 &g2esc x2e45 &g3esc x2f45 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I ': Pd Ct Ye +- '' (S )S 12 +S ', -- .M -S 0S 1S 2S 3S 4S 5S 6S 7S 8S 9S 14 34 <= != >= ?I A! A' A> C, E! E' E> E: I' I> I: N? O' O> U! U' U> U: Rg SE PI My -a -o '6 '9 "6 "9 << >> DG BB a! a' a> c, e! e' e> e: i' i> i: n? o' o> u! u' u> u: Co hh vv ur ul dl dr vr uh vl dh vh NO FB &charset ISO-8859-7 &rem source: ISO 2375 registry &alias iso-ir-126 &alias ISO_8859-7:1987 &alias ISO_8859-7 &alias ISO8859-7 &alias ELOT_928 &alias ECMA-118 &alias greek &alias greek8 &g1esc x2d46 &g2esc x2e46 &g3esc x2f46 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS 9' '9 Pd ?? ?? BB SE ': Co ?? << NO -- ?? -M DG +- 2S 3S '' '% A% .M E% Y% I% >> O% 12 U% W% i3 A* B* G* D* E* Z* Y* H* I* K* L* M* N* C* O* P* R* ?? S* T* U* F* X* Q* W* J* V* a% e% y% i% u3 a* b* g* d* e* z* y* h* i* k* l* m* n* c* o* p* r* *s s* t* u* f* x* q* w* j* v* o% u% w% ?? &charset ISO-8859-6 &rem source: ISO 2375 registry &alias iso-ir-127 &alias ISO_8859-6:1987 &alias ISO_8859-6 &alias ISO8859-6 &alias ECMA-114 &alias ASMO-708 &alias arabic &g1esc x2d47 &g2esc x2e47 &g3esc x2f47 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS ?? ?? ?? Cu ?? ?? ?? ?? ?? ?? ?? ,+ -- ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ;+ ?? ?? ?? ?+ ?? H' aM aH wH ah yH a+ b+ tm t+ tk g+ hk x+ d+ dk r+ z+ s+ sn c+ dd tj zH e+ i+ ?? ?? ?? ?? ?? ++ f+ q+ k+ l+ m+ n+ h+ w+ j+ y+ :+ "+ =+ /+ '+ 1+ 3+ 0+ ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? &charset T.101-G2 &rem source: ISO 2375 registry &alias iso-ir-128 &g0esc x287c &g1esc x297c &g2esc x2a7c &g3esc x2b7c &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " ?? ?? % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC ?? !I Ct Pd DO Ye Nb SE Cu '6 "6 << <- -! -> -v DG +- 2S 3S *X My PI .M -: '9 "9 >> 14 12 34 ?I ?? "! "' "> "? "- "( ". ": "/ "0 ", "_ "" "; "< -M 1S Rg Co TM M8 hh vv FD BD Fd Bd 18 38 58 78 Om AE D- -a H/ vh IJ L. L/ O/ OE -o TH T/ NG 'n kk ae d/ d- h/ i. ij l. l/ o/ oe ss th t/ ng ?? &comb2 "' SP '' a a' A A' e e' E E' i i' I I' o o' O O' u u' U U' y y' Y Y' c c' C C' l l' L L' n n' N N' r r' R R' s s' S S' z z' Z Z' &comb2 "( SP '( a a( A A( g g( G G( u u( U U( &comb2 "< SP '< c c< C C< d d< D D< e e< E E< l l< L L< n n< N N< r r< R R< s s< S S< t t< T T< z z< Z Z< &comb2 ", SP ', c c, C C, g g, G G, k k, K K, l l, L L, n n, N N, r r, R R, s s, S S, t t, T T, &comb2 "> a a> A A> e e> E E> i i> I I> o o> O O> u u> U U> y y> Y Y> c c> C C> g g> G G> h h> H H> j j> J J> s s> S S> w w> W W> &comb2 ": SP ': a a: A A: e e: E E: i i: I I: o o: O O: u u: U U: y y: Y Y: &comb2 ". SP '. c c. C C. e e. E E. g g. G G. I I. z z. Z Z. &comb2 "" SP '" o o" O O" u u" U U" &comb2 "! a a! A A! e e! E E! i i! I I! o o! O O! u u! U U! &comb2 "- SP 'm a a- A A- e e- E E- i i- I I- o o- O O- u u- U U- &comb2 "; SP '; a a; A A; e e; E E; i i; I I; u u; U U; &comb2 "0 SP '0 a aa A AA u u0 U U0 &comb2 "? a a? A A? n n? N N? i i? I I? o o? O O? u u? U U? &charset ISO-8859-8 &rem source: ISO 2375 registry &alias iso-ir-138 &alias ISO_8859-8:1988 &alias ISO_8859-8 &alias ISO8859-8 &alias hebrew &g1esc x2d48 &g2esc x2e48 &g3esc x2f48 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS ?? Ct Pd Cu Ye BB SE ': Co *X << NO -- Rg '- DG +- 2S 3S '' My PI .M ', 1S -: >> 14 12 34 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? =2 A+ B+ G+ D+ H+ W+ Z+ X+ Tj J+ K% K+ L+ M% M+ N% N+ S+ E+ P% P+ Zj ZJ Q+ R+ Sh T+ ?? ?? ?? ?? ?? &charset CSN_369103 &rem source: ISO 2375 registry &alias iso-ir-139 &alias KOI-8_L2 &alias koi8l2 &g1esc x2d49 &g2esc x2e49 &g3esc x2f49 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS A; '( L/ DO L< S' SE ': S< S, T< Z' -- Z< Z. DG a; '; l/ '' l< s' '< ', s< s, t< z' '" z< z. R' A' A> A( A: L' C' C, C< E' E; E: E< I' I> D< D/ N' N< O' O> O" O: *X R< U0 U' U" U: Y' T, ss r' a' a> a( a: l' c' c, c< e' e; e: e< i' i> d< d/ n' n< o' o> o" o: -: r< u0 u' u" u: y' t, '. &charset JUS_I.B1.002 &rem source: ISO 2375 registry &alias iso-ir-141 &alias ISO646-YU &alias js &alias yu &g0esc x287a &g1esc x297a &g2esc x2a7a &g3esc x2b7a &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Z< A B C D E F G H I J K L M N O P Q R S T U V W X Y Z S< D/ C' C< _ z< a b c d e f g h i j k l m n o p q r s t u v w x y z s< d/ c' c< DT &charset ISO_6937-2-add &rem source: ISO 2375 registry and ISO 6937-2:1983 &alias iso-ir-142 &g1esc x2d4a &g2esc x2e4a &g3esc x2f4a &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I Ct Pd DO Ye ?? SE ?? '6 "6 << <- -! -> -v DG +- 2S 3S *X My PI .M -: '9 "9 >> 14 12 34 ?I ?? "! "' "> "? "- "( ". ": ?? "0 ", "_ "" "; "< -M 1S Rg Co TM M8 NO BB ?? ?? ?? ?? 18 38 58 78 Om AE D- -a H/ ?? IJ L. L/ O/ OE -o TH T/ NG 'n kk ae d/ d- h/ i. ij l. l/ o/ oe ss th t/ ng -- &comb2 "' SP '' a a' A A' e e' E E' i i' I I' o o' O O' u u' U U' y y' Y Y' c c' C C' l l' L L' n n' N N' r r' R R' s s' S S' z z' Z Z' &comb2 "( SP '( a a( A A( g g( G G( u u( U U( &comb2 "< SP '< c c< C C< d d< D D< e e< E E< l l< L L< n n< N N< r r< R R< s s< S S< t t< T T< z z< Z Z< &comb2 ", SP ', c c, C C, g g, G G, k k, K K, l l, L L, n n, N N, r r, R R, s s, S S, t t, T T, &comb2 "> a a> A A> e e> E E> i i> I I> o o> O O> u u> U U> y y> Y Y> c c> C C> g g> G G> h h> H H> j j> J J> s s> S S> w w> W W> &comb2 ": SP ': a a: A A: e e: E E: i i: I I: o o: O O: u u: U U: y y: Y Y: &comb2 ". SP '. c c. C C. e e. E E. g g. G G. I I. z z. Z Z. &comb2 "" SP '" o o" O O" u u" U U" &comb2 "! a a! A A! e e! E E! i i! I I! o o! O O! u u! U U! &comb2 "- SP 'm a a- A A- e e- E E- i i- I I- o o- O O- u u- U U- &comb2 "; SP '; a a; A A; e e; E E; i i; I I; u u; U U; &comb2 "0 SP '0 a aa A AA u u0 U U0 &comb2 "? a a? A A? n n? N N? i i? I I? o o? O O? u u? U U? &charset IEC_P27-1 &rem source: ISO 2375 registry &alias iso-ir-143 &g1esc x2d4b &g2esc x2e4b &g3esc x2f4b &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC '< =3 AN OR (U )U (C )C <= => .: :. (- -) (_ )_ In Io 00 NB dP ?1 ?2 ?- ?= =< != >= <> NO FA TE A+ OS PP G* D* -T -V -L H* L* 1' 2' C* -+ P* 2S S* *X 3S U* F* .M Q* W* /0 >V RT f2 0( +- DG a* b* g* d* e* z* y* h* i* k* l* m* n* c* %0 p* r* s* -: t* u* f* x* q* w* /- <- -! -> -v '- &charset ISO-8859-5 &rem source: ISO 2375 registry &alias iso-ir-144 &alias ISO_8859-5:1988 &alias ISO_8859-5 &alias ISO8859-5 &alias cyrillic &g1esc x2d4c &g2esc x2e4c &g3esc x2f4c &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS IO D% G% IE DS II YI J% LJ NJ Ts KJ -- V% DZ A= B= V= G= D= E= Z% Z= I= J= K= L= M= N= O= P= R= S= T= U= F= H= C= C% S% Sc =" Y= %" JE JU JA a= b= v= g= d= e= z% z= i= j= k= l= m= n= o= p= r= s= t= u= f= h= c= c% s% sc =' y= %' je ju ja N0 io d% g% ie ds ii yi j% lj nj ts kj SE v% dz &charset JUS_I.B1.003-serb &rem source: ISO 2375 registry &alias iso-ir-146 &alias serbian &g0esc x287b &g1esc x297b &g2esc x2a7b &g3esc x2b7b &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Z% A= B= C= D= E= F= G= H= I= J% K= L= M= N= O= P= LJ R= S= T= U= V= NJ DZ DS Z= S% D% Ts C% _ z% a= b= c= d= e= f= g= h= i= j% k= l= m= n= o= p= lj r= s= t= u= v= nj dz ds z= s% d% ts c% DT &charset JUS_I.B1.003-mac &rem source: ISO 2375 registry &alias macedonian &alias iso-ir-147 &g0esc x287d &g1esc x297d &g2esc x2a7d &g3esc x2b7d &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Z% A= B= C= D= E= F= G= H= I= J% K= L= M= N= O= P= LJ R= S= T= U= V= NJ DZ DS Z= S% G% KJ C% _ z% a= b= c= d= e= f= g= h= i= j% k= l= m= n= o= p= lj r= s= t= u= v= nj dz ds z= s% g% kj c% DT &charset ISO-8859-9 &rem source: ISO 2375 registry &alias iso-ir-148 &alias ISO_8859-9:1989 &alias ISO_8859-9 &alias ISO8859-9 &alias latin5 &alias l5 &g1esc x2d4d &g2esc x2e4d &g3esc x2f4d &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I Ct Pd Cu Ye BB SE ': Co -a << NO -- Rg 'm DG +- 2S 3S '' My PI .M ', 1S -o >> 14 12 34 ?I A! A' A> A? A: AA AE C, E! E' E> E: I! I' I> I: G( N? O! O' O> O? O: *X O/ U! U' U> U: I. S, ss a! a' a> a? a: aa ae c, e! e' e; e: e. i' i> i- g( n? o! o' o> o? o: -: o/ u! u' u> u: i. s, y: &charset KS_C_5601-1987 &rem source: ISO 2375 registry &alias iso-ir-149 &alias KS_C_5601-1989 &alias KSC_5601 &alias korean &g0esc x242843 &g1esc x242943 &g2esc x242a43 &g3esc x242b43 &bits 14 &code2 1 1 SP ,_ .6 .M .. .3 ': +" -N -M PP // ?1 '6 '9 "6 "9 (' )' <1 >1 <+ >+ <' >' <" >" (" )" +- *X -: != =< >= 00 .: DG 1' 2' oC Ye AA Ct Pd Ml Fm -V -T (A dP NB =3 HI SE :X *1 *2 0m 0M 0o Dw Db OS fS uT UT dT DT -> <- -! -v <> =2 <* *> RT CG 0( :. In DI &code2 2 1 => == FA TE '' '? '< '( '" '0 '. ', '; !I ?I :R Io +Z *P Cu oF %0 Tl PL Tr PR cS- cS cH cH- cC- cC 0. cD- Rr 0L 0R .S RF RY RK RZ RH RX =T:) tel TEL H PI /- /= UD //> Mb Md M8 M16 KSC (JU) N0 Co TM am pm Tel &code2 3 1 ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( W= )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- &codex k 4 4 1 94 &code2 5 1 1r 2r 3r 4r 5r 6r 7r 8r 9r ar br cr &code2 5 16 1R 2R 3R 4R 5R 6R 7R 8R 9R aR bR cR &code2 5 33 A* B* G* D* E* Z* Y* H* I* K* L* M* N* C* O* P* R* S* T* U* F* X* Q* W* &code2 5 65 a* b* g* d* e* z* y* h* i* k* l* m* n* c* o* p* r* s* t* u* f* x* q* w* &code2 6 1 hh vv dr dl ul ur vr dh vl uh vh HH VV DR LD UL UR VR DH VL UH VH Vr dH Vl uH vH vR Dh vL Uh Vh Dl dL Ul uL Ur uR Dr dR Udr uDr UdR uDR Udl uDl UdL uDL dLr dlR DLr DlR uLr ulR UlR vLr vlR Udh uDh UdLr UdlR uDLr uDlR UdH uDH VLr VlR &codex k 7 7 1 79 &code2 8 1 AE D- -a H/ ?? IJ ?? L. L/ O/ OE -o TH T/ NG &codex k 8 8 17 44 &code2 8 45 a-o b-o c-o d-o e-o f-o g-o h-o i-o j-o k-o l-o m-o n-o o-o p-o q-o r-o s-o t-o u-o v-o w-o x-o y-o z-o 1-o 2-o 3-o 4-o 5-o 6-o 7-o 8-o 9-o 10-o 11-o 12-o 13-o 14-o 15-o 12 13 23 14 34 18 38 58 78 &code2 9 1 ae d/ d- h/ i. ij kk l. l/ o/ oe ss th t/ ng 'n &codex k 9 9 17 44 &code2 9 45 (a) (b) (c) (d) (e) (f) (g) (h) (i) (j) (k) (l) (m) (n) (o) (p) (q) (r) (s) (t) (u) (v) (w) (x) (y) (z) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) 1S 2S 3S 4S nS 1s 2s 3s 4s &code2 10 1 A5 a5 I5 i5 U5 u5 E5 e5 O5 o5 ka ga ki gi ku gu ke ge ko go sa za si zi su zu se ze so zo ta da ti di tU tu du te de to do na ni nu ne no ha ba pa hi bi pi hu bu pu he be pe ho bo po ma mi mu me mo yA ya yU yu yO yo ra ri ru re ro wA wa wi we wo n5 &code2 11 1 a6 A6 i6 I6 u6 U6 e6 E6 o6 O6 Ka Ga Ki Gi Ku Gu Ke Ge Ko Go Sa Za Si Zi Su Zu Se Ze So Zo Ta Da Ti Di TU Tu Du Te De To Do Na Ni Nu Ne No Ha Ba Pa Hi Bi Pi Hu Bu Pu He Be Pe Ho Bo Po Ma Mi Mu Me Mo YA Ya YU Yu YO Yo Ra Ri Ru Re Ro WA Wa Wi We Wo N6 Vi KA KE &code2 12 1 A= B= V= G= D= E= IO Z% Z= I= J= K= L= M= N= O= P= R= S= T= U= F= H= C= C% S% Sc =" Y= %" JE JU JA &code2 12 49 a= b= v= g= d= e= io z% z= i= j= k= l= m= n= o= p= r= s= t= u= f= h= c= c% s% sc =' y= %' je ju ja &codex k 16 40 1 94 &codex k 42 93 1 94 &charset greek-ccitt &rem source: ISO 2375 registry &alias iso-ir-150 &g0esc x282140 &g1esc x292140 &g2esc x2a2140 &g3esc x2b2140 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A* B* G* D* E* Z* Y* H* I* K* L* M* N* C* O* P* R* ?? S* T* U* F* X* Q* W* ?? <( // )> '> _ ?? a* b* g* d* e* z* y* h* i* k* l* m* n* c* o* p* r* *s s* t* u* f* x* q* w* ?? (! !! !) 'm DT &charset NC_NC00-10 &rem source: ISO 2375 registry &alias cuba &alias NC_NC00-10:81 &alias iso-ir-151 &alias ISO646-CU &g0esc x282141 &g1esc x292141 &g2esc x2a2141 &g3esc x2b2141 &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z !I N? )> ?I _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z '' n? <( ': DT &charset ISO_6937-2-25 &rem source: ISO 2375 registry &alias iso-ir-152 &g1esc x2d4e &g2esc x2e4e &g3esc x2f4e &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS ?? ?? ?? ?? ?? ?? ?? ?? ?? "6 ?? <- -! -> -v ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? "9 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? TM M8 ?? ?? ?? ?? ?? ?? 18 38 58 78 Om ?? ?? ?? ?? ?? IJ L. ?? ?? OE ?? W> Y> Y: 'n ?? ?? ?? ?? ?? ?? ij l. ?? ?? oe ?? w> y> ?? ?? &charset GOST_19768-87 &rem source: ISO 2375 registry &alias ST_SEV_358-88 &alias iso-ir-153 &g1esc x2d4f &g2esc x2e4f &g3esc x2f4f &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS IO ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? -- ?? ?? A= B= V= G= D= E= Z% Z= I= J= K= L= M= N= O= P= R= S= T= U= F= H= C= C% S% Sc =" Y= %" JE JU JA a= b= v= g= d= e= z% z= i= j= k= l= m= n= o= p= r= s= t= u= f= h= c= c% s% sc =' y= %' je ju ja ?? io ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? &charset ISO_8859-supp &rem source: ISO 2375 registry &alias iso-ir-154 &alias latin1-2-5 &g1esc x2d50 &g2esc x2e50 &g3esc x2f50 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC ?? ?? A- C> C. ?? E. E- G> '6 "6 TM <- -! -> -v ?? ?? a- c> c. d- e. e- g> '9 "9 M8 18 38 58 78 ?? G( G. G, H> H/ I? I. I- I; IJ J> K, L, L. N, -M NG O- OE R, S> T/ TH U? U( U- U; W> Y' Y> Y: Om g( g. g, h> h/ i? i. i- i; ij j> k, l, l. n, kk ng o- oe r, s> t/ th u? u( u- u; w> y' y> 'n &charset ISO_10367-box &rem source: ISO 2375 registry &alias iso-ir-155 &g1esc x2d51 &g2esc x2e51 &g3esc x2f51 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? VV HH DR LD UR UL VR VL DH UH VH UB LB FB sB ?? vv hh dr dl ur ul vr vl dh uh vh .S :S ?S ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? &charset ISO_6937 &rem source: ISO 2375 registry and ISO/IEC 6937:1992 &alias iso-ir-156 &alias ISO_6937:1992 &alias ISO6937 &g1esc x2d52 &g2esc x2e52 &g3esc x2f52 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I Ct Pd ?? Ye ?? SE Cu '6 "6 << <- -! -> -v DG +- 2S 3S *X My PI .M -: '9 "9 >> 14 12 34 ?I ?? "! "' "> "? "- "( ". ": "_ "0 ", ?? "" "; "< -M 1S Rg Co TM M8 NO BB ?? ?? ?? ?? 18 38 58 78 Om AE D- -a H/ ?? IJ L. L/ O/ OE -o TH T/ NG 'n kk ae d/ d- h/ i. ij l. l/ o/ oe ss th t/ ng -- &comb2 "' SP '' a a' A A' e e' E E' i i' I I' o o' O O' u u' U U' y y' Y Y' c c' C C' l l' L L' n n' N N' r r' R R' s s' S S' z z' Z Z' &comb2 "( SP '( a a( A A( g g( G G( u u( U U( &comb2 "< SP '< c c< C C< d d< D D< e e< E E< l l< L L< n n< N N< r r< R R< s s< S S< t t< T T< z z< Z Z< &comb2 ", SP ', c c, C C, g g, G G, k k, K K, l l, L L, n n, N N, r r, R R, s s, S S, t t, T T, &comb2 "> a a> A A> e e> E E> i i> I I> o o> O O> u u> U U> y y> Y Y> c c> C C> g g> G G> h h> H H> j j> J J> s s> S S> w w> W W> &comb2 ": SP ': a a: A A: e e: E E: i i: I I: o o: O O: u u: U U: y y: Y Y: &comb2 ". SP '. c c. C C. e e. E E. g g. G G. I I. z z. Z Z. &comb2 "" SP '" o o" O O" u u" U U" &comb2 "! a a! A A! e e! E E! i i! I I! o o! O O! u u! U U! &comb2 "- SP 'm a a- A A- e e- E E- i i- I I- o o- O O- u u- U U- &comb2 "; SP '; a a; A A; e e; E E; i i; I I; u u; U U; &comb2 "0 SP '0 a aa A AA u u0 U U0 &comb2 "? a a? A A? n n? N N? i i? I I? o o? O O? u u? U U? &charset ISO-8859-10 &rem source: ISO 2375 registry &alias iso-ir-157 &alias ISO_8859-10:1993 &alias ISO_8859-10 &alias ISO8859-10 &alias L6 &alias latin6 &g1esc x2d56 &g2esc x2e56 &g3esc x2f56 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS A; E- G, I- I? K, SE L, D/ S< T/ Z< -- U- NG DG a; e- g, i- i? k, .M l, d/ s< t/ z< -M u- ng A- A' A> A? A: AA AE I; C< E' E; E: E. I' I> I: D- N, O- O' O> O? O: U? O/ U; U' U> U: Y' TH ss a- a' a> a? a: aa ae i; c< e' e; e: e. i' i> i: d- n, o- o' o> o? o: u? o/ u; u' u> u: y' th kk &charset ISO-8859-13 &rem source: ISO 2375 registry &alias iso-ir-179a &alias ISO_8859-13:1998 &alias ISO_8859-13 &alias ISO8859-13 &alias latin7 &alias iso-baltic &alias l7 &g1esc x2d41 &g2esc x2e41 &g3esc x2f41 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I Ct Pd Cu :9 BB SE ': Co -a << NO -- Rg 'm DG +- 2S 3S "6 My PI .M ', 1S -o >> 14 12 34 ?I A; I; A- C' A: AA E; E- C< E' Z' E. G, K, I- L, S< N' N, O' O- O? O: *X U; L/ S' U- U: Z. Z< ss a; i; a- c' a: aa e; e- c< e' z' e. g, k, i- l, s< n' n, o' o- o? o: -: u; l/ s' u- u: z. z< '9 &charset ISO-8859-14 &rem source: ISO 2375 registry &alias iso-ir-199 &alias ISO_8859-14:1998 &alias ISO_8859-14 &alias ISO8859-14 &alias latin8 &alias iso-celtic &alias l8 &g1esc x2d5f &g2esc x2e5f &g3esc x2f5f &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS B. b. Pd C. c. D. SE W! Co W' d. Y! -- Rg s. F. f. G. g. M. m. PI P. w! p. w' S. y! W: w: Y: A! A' A> A? A: AA AE C, E! E' E> E: I! I' I> I: W> N? O! O' O> O? O: T. O/ U! U' U> U: Y' Y> ss a! a' a> a? a: aa ae c, e! e' e> e: i! i' i> i: w> n? o! o' o> o? o: t. o/ u! u' u> u: y' y> y: &charset ISO-8859-15 &rem source: ISO 2375 registry &alias iso-ir-203 &alias ISO_8859-15:1998 &alias ISO_8859-15 &alias ISO8859-15 &alias latin9 &alias l9 &g1esc x2d62 &g2esc x2e62 &g3esc x2f62 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I Ct Pd Eu Ye S< SE s< Co -a << NO -- Rg 'm DG +- 2S 3S Z< My PI .M z< 1S -o >> OE oe Y: ?I A! A' A> A? A: AA AE C, E! E' E> E: I! I' I> I: D- N? O! O' O> O? O: *X O/ U! U' U> U: Y' TH ss a! a' a> a? a: aa ae c, e! e' e> e: i! i' i> i: d- n? o! o' o> o? o: -: o/ u! u' u> u: y' th y: &charset sami &rem source: ISO 2375 registry &alias latin-lap &alias lap &alias iso-ir-158 &g2esc x2d58 &g2esc x2e58 &g3esc x2f58 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC '' ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ;S ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? A( A! A1 A7 A3 E( E! G/ G< K< O( O! O; O1 ED EZ ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? a( a! a1 a7 a3 e( e! g/ g< k< o( o! o; o1 ed ez ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? &charset JIS_X0212-1990 &rem source: ISO 2375 registry &alias x0212 &alias iso-ir-159 &g0esc x242844 &g1esc x242944 &g2esc x242a44 &g3esc x242b44 &bits 14 &code2 2 15 '( '< ', '. '" '- '; '0 '? '' '% &code2 2 34 !I BB ?I &code2 2 75 -o -a Co Rg TM Cu N0 &code2 6 65 A% E% Y% I% J* ?? O% ?? U% V* ?? W% &code2 6 81 a% e% y% i% j* i3 o% *s u% v* u3 w% &code2 7 34 D% G% IE DS II YI J% LJ NJ Ts KJ V% DZ &code2 7 82 d% g% ie ds ii yi j% lj nj ts kj v% dz &code2 9 1 AE D/ ?? H/ ?? IJ ?? L/ L. ?? NG O/ OE ?? T/ TH &code2 9 33 ae d/ d- h/ i. ij kk l/ l. 'n ng o/ oe ss t/ th &code2 10 1 A' A! A: A> A( A< A- A; AA A? C' C> C< C, C. D< E' E! E: E> E( E. E- E; ?? G> G( G, G. H> I' I! I: I> I< I. I- I; I? J> K, L' L< L, N' N< N, N? O' O! O: O> O< O" O- O? R' R< R, S' S> S< S, T< T, U' U! U: U> U( U< U" U- U; U0 U? U:' U:! U:< U:- W. Y' Y: Y> Z' Z< Z. &code2 11 1 a' a! a: a> a( a< a- a; aa a? c' c> c< c, c. d< e' e! e: e> e( e. e- e; g' g> g( ?? g. h> i' i! i: i> i< ?? i- i; i? j> k, l' l< l, n' n< n, n? o' o! o: o> o< o" o- o? r' r< r, s' s> s< s, t< t, u' u! u: u> u( u< u" u- u; u0 u? u:' u:! u:< u:- w. y' y: y> z' z< z. &codex J 16 76 1 94 &codex J 77 77 1 67 &charset baltic &rem source: ISO 2375 registry &rem &g1esc x2d56 &g2esc x2e56 &g3esc x2f56 &alias iso-ir-179 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS "9 Ct Pd Cu Ye BB SE O/ Co :9 << NO -- Rg AE DG +- 2S 3S '' My PI .M o/ 1S "6 >> 14 12 34 ae I; E. A- C' A: AA A; C< G, E' Z< E; E- K, I- L, L/ N, N' O' O- O? O: *X U; S< S' U- U: Z. Z' ss i; e. a- c' a: aa a; c< g, e' z< e; e- k, i- l, l/ n, n' o' o- o? o: -: u; s< s' u- u: z. z' kk &charset DS_2089 &rem source: Danish Standard, DS 2089, February 1974 &alias DS2089 &alias ISO646-DK &alias dk &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AE O/ AA '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z ae o/ aa '? DT &charset us-dk &rem for compatibility with ASCII &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT &duplicate 91 AE &duplicate 92 O/ &duplicate 93 AA &duplicate 123 ae &duplicate 124 o/ &duplicate 125 aa &duplicate 91 A: &duplicate 92 O: &duplicate 123 a: &duplicate 124 o: &charset dk-us &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AE O/ AA '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z ae o/ aa '? DT &duplicate 91 <( &duplicate 92 // &duplicate 93 )> &duplicate 123 (! &duplicate 124 !! &duplicate 125 !) &duplicate 91 A: &duplicate 92 O: &duplicate 123 a: &duplicate 124 o: &charset JIS_X0201 &alias X0201 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( Ye )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC ?? ._ <' >' ,_ .6 Wo a6 i6 u6 e6 o6 YA YU YO TU -6 A6 I6 U6 E6 O6 Ka Ki Ku Ke Ko Sa Si Su Se So Ta Ti Tu Te To Na Ni Nu Ne No Ha Hi Hu He Ho Ma Mi Mu Me Mo Ya Yu Yo Ra Ri Ru Re Ro Wa N6 "5 05 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? &charset KSC5636 &alias ISO646-KR &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( W= )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT &charset DEC-MCS &rem VAX/VMS User's Manual, Order Number: AI-Y517A-TE, April 1986. &alias dec &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC ?? !I Ct Pd ?? Ye ?? SE Cu Co -a << ?? ?? ?? ?? DG +- 2S 3S ?? My PI .M ?? 1S -o >> 14 12 ?? ?I A! A' A> A? A: AA AE C, E! E' E> E: I! I' I> I: ?? N? O! O' O> O? O: OE O/ U! U' U> U: Y: ?? ss a! a' a> a? a: aa ae c, e! e' e> e: i! i' i> i: ?? n? o! o' o> o? o: oe o/ u! u' u> u: y: ?? ?? &charset hp-roman8 &rem source: LaserJet IIP Printer User's Manual, &rem HP part no 33471-90901, Hewlet-Packard, June 1989. &alias roman8 &alias r8 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS A! A> E! E> E: I> I: '' 1! 1> ': 1? U! U> Li 'm Y' y' DG C, c, N? n? !I ?I Cu Pd Ye SE f2 Ct a> e> o> u> a' e' o' u' a! e! o! u! a: e: o: u: AA i> O/ AE aa i' o/ ae A: i! O: U: E' i: ss O> A' A? a? D- d- I' I! O' O! O? o? S< s< U' Y: y: TH th .M My PI 34 -M 14 12 -a -o << fS >> +- ?? &charset NeXTSTEP &rem source: Peter Svanberg - psv@nada.kth.se &alias next &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT NS A! A' A> A? A: AA C, E! E' E> E: I! I' I> I: D- N? O! O' O> O? O: U! U' U> U: Y' TH My *X -: Co !I Ct Pd /f Ye f2 SE Cu ?? "6 << ?? ?? fi fl Rg -N /- /= .M BB PI sb ?? ?? "9 >> .3 %0 NO ?I 1S 1! '' 1> 1? 'm '( '. ': 2S '0 ', 3S '" '; '< -M +- 14 12 34 a! a' a> a? a: aa c, e! e' e> e: i! AE i' -a i> i: d- n? L/ O/ OE -o o! o' o> o? o: ae u! u' u> i. u: y' l/ o/ oe ss th y: ?? ?? &charset macintosh &rem source: The Unicode Standard ver 1.0, ISBN 0-201-56788-1, Oct 1991 &alias mac &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT A: AA C, E' N? O: U: a' a! a> a: a? aa c, e' e! e> e: i' i! i> i: n? o' o! o> o: o? u' u! u> u: /- DG Ct Pd SE sb PI ss Rg Co TM '' ': != AE O/ 00 +- =< >= Ye My dP +Z *P p* In -a -o W* ae o/ ?I !I NO RT f2 ?2 D* << >> .3 NS A! A? Om OE oe -N -M "6 "9 '6 '9 -: LZ y: Y: /f Cu <1 >1 fi fl /= .M .9 :9 %0 A> E> A' E: E! I' I> I: I! O' O> Mc O! U' U> U! i. ?? ?? 'm '( '. '0 ', '" '; '< &charset mac-is &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT A: AA C, E' N? O: U: a' a! a> a: a? aa c, e' e! e> e: i' i! i> i: n? o' o! o> o: o? u' u! u> u: /- DG Ct Pd SE sb PI ss Rg Co TM '' ': != AE O/ 00 +- =< >= Ye My dP +Z *P p* In -a -o W* ae o/ ?I !I NO RT f2 ?2 D* << >> .3 NS A! A? O? OE oe -M -N "6 "9 '6 '9 -: Db y: Y: /f Cu D/ d/ TH th /= .M .9 :9 %0 A> E> A' E: E! I' I> I: I! O' O> Mc O! U' U> U! i. ?? ?? 'm '( '. '0 ', '" '; '< &charset IBM037 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP037 &alias 037 &alias ebcdic-cp-us &alias ebcdic-cp-ca &alias ebcdic-cp-wt &alias ebcdic-cp-nl &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS a> a: a! a' a? aa c, n? Ct . < ( + !! & e' e> e: e! i' i> i: i! ss ! DO * ) ; NO - / A> A: A! A' A? AA C, N? BB , % _ > ? o/ E' E> E: E! I' I> I: I! '! : Nb At ' = " O/ a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o ae ', AE Cu My '? s t u v w x y z !I ?I D- Y' TH Rg '> Pd Ye .M Co SE PI 14 12 34 <( )> 'm ': '' *X (! A B C D E F G H I -- o> o: o! o' o? !) J K L M N O P Q R 1S u> u: u! u' y: // -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' AC &charset IBM038 &rem source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 &alias EBCDIC-INT &alias CP038 &alias 038 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? <( . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? )> DO * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Nb At ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? '? s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? (! A B C D E F G H I ?? ?? ?? ?? ?? ?? !) J K L M N O P Q R ?? ?? ?? ?? ?? ?? // ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset IBM256 &rem source: IBM Registry C-H 3-3220-050 &alias EBCDIC-INT1 &alias CP256 &alias 256 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS a> a: a! a' a? aa c, n? <( . < ( + ! & e' e> e: e! i' i> i: i! ss )> DO * ) ; '> - / A> A: A! A' A? AA C, N? BB , % _ > ? o/ E' E> E: E! I' I> I: I! '! : Nb At ' = " O/ a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o ae ', AE Cu My '? s t u v w x y z !I ?I D- Y' TH Rg Ct Pd Ye Pt f2 SE PI 14 12 34 NO !! '- ': '' =2 (! A B C D E F G H I -- o> o: o! o' o? !) J K L M N O P Q R 1S u> u: u! u' y: // 1M S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' AC &charset IBM273 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP273 &alias 273 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS a> (! a! a' a? aa c, n? A: . < ( + ! & e' e> e: e! i' i> i: i! '? U: DO * ) ; '> - / A> <( A! A' A? AA C, N? o: , % _ > ? o/ E' E> E: E! I' I> I: I! '! : Nb SE ' = " O/ a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o ae ', AE Cu My ss s t u v w x y z !I ?I D- Y' TH Rg Ct Pd Ye .M Co At PI 14 12 34 NO !! '- ': '' *X a: A B C D E F G H I -- o> BB o! o' o? u: J K L M N O P Q R 1S u> !) u! u' y: O: -: S T U V W X Y Z 2S O> // O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> )> U! U' AC &charset IBM274 &rem source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 &alias EBCDIC-BE &alias CP274 &alias 274 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? <( . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? )> DO * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? u! , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Nb a! ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ': s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? e' A B C D E F G H I ?? ?? ?? ?? ?? ?? e! J K L M N O P Q R ?? ?? ?? ?? ?? ?? c, ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset IBM275 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias EBCDIC-BR &alias CP275 &alias 275 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? E' . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? DO C, * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? c, , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? a? : O? A? ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? '? s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? o? A B C D E F G H I ?? ?? ?? ?? ?? ?? e' J K L M N O P Q R ?? ?? ?? ?? ?? ?? // ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset IBM277 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias EBCDIC-CP-DK &alias EBCDIC-CP-NO &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS a> a: a! a' a? !) c, n? Nb . < ( + ! & e' e> e: e! i' i> i: i! ss Cu AA * ) ; '> - / A> A: A! A' A? DO C, N? o/ , % _ > ? BB E' E> E: E! I' I> I: I! '! : AE O/ ' = " At a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o (! ', <( )> My u: s t u v w x y z !I ?I D- Y' TH Rg Ct Pd Ye .M Co SE PI 14 12 34 NO !! '- ': '' *X ae A B C D E F G H I -- o> o: o! o' o? aa J K L M N O P Q R 1S u> '? u! u' y: // -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' AC &charset IBM278 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP278 &alias 278 &alias ebcdic-cp-fi &alias ebcdic-cp-se &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS a> (! a! a' a? !) c, n? SE . < ( + ! & '! e> e: e! i' i> i: i! ss Cu AA * ) ; '> - / A> Nb A! A' A? DO C, N? o: , % _ > ? o/ E' E> E: E! I' I> I: I! e' : A: O: ' = " O/ a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o ae ', AE )> My u: s t u v w x y z !I ?I D- Y' TH Rg Ct Pd Ye .M Co <( PI 14 12 34 NO !! '- ': '' *X a: A B C D E F G H I -- o> BB o! o' o? aa J K L M N O P Q R 1S u> '? u! u' y: // -: S T U V W X Y Z 2S O> At O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' AC &charset IBM280 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP280 &alias 280 &alias ebcdic-cp-it &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS a> a: (! a' a? aa // n? DG . < ( + ! & )> e> e: !) i' i> i: '? ss e' DO * ) ; '> - / A> A: A! A' A? AA C, N? o! , % _ > ? o/ E' E> E: E! I' I> I: I! u! : Pd SE ' = " O/ a b c d e f g h i << >> d- y' th +- <( j k l m n o p q r -a -o ae ', AE Cu My i! s t u v w x y z !I ?I D- Y' TH Rg Ct Nb Ye .M Co At PI 14 12 34 NO !! '- ': '' *X a! A B C D E F G H I -- o> o: BB o' o? e! J K L M N O P Q R 1S u> u: '! u' y: c, -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' AC &charset IBM281 &rem source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 &alias EBCDIC-JP-E &alias CP281 &alias 281 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? Pd . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? ! Ye * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Nb At ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? '- s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? (! A B C D E F G H I ?? ?? ?? ?? ?? ?? !) J K L M N O P Q R ?? ?? ?? ?? ?? ?? DO ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset IBM284 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP284 &alias 284 &alias ebcdic-cp-es &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS a> a: a! a' a? aa c, BB <( . < ( + !! & e' e> e: e! i' i> i: i! ss )> DO * ) ; NO - / A> A: A! A' A? AA C, Nb n? , % _ > ? o/ E' E> E: E! I' I> I: I! '! : N? At ' = " O/ a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o ae ', AE Cu My ': s t u v w x y z !I ?I D- Y' TH Rg Ct Pd Ye .M Co SE PI 14 12 34 '> ! '- '? '' *X (! A B C D E F G H I -- o> o: o! o' o? !) J K L M N O P Q R 1S u> u: u! u' y: // -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' AC &charset IBM285 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP285 &alias 285 &alias ebcdic-cp-gb &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS a> a: a! a' a? aa c, n? DO . < ( + !! & e' e> e: e! i' i> i: i! ss ! Pd * ) ; NO - / A> A: A! A' A? AA C, N? BB , % _ > ? o/ E' E> E: E! I' I> I: I! '! : Nb At ' = " O/ a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o ae ', AE Cu My '- s t u v w x y z !I ?I D- Y' TH Rg Ct <( Ye .M Co SE PI 14 12 34 '> )> '? ': '' *X (! A B C D E F G H I -- o> o: o! o' o? !) J K L M N O P Q R 1S u> u: u! u' y: // -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' AC &charset IBM290 &rem source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 &alias CP290 &alias 290 &alias EBCDIC-JP-kana &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ._ <' >' ,_ .6 Wo a6 i6 u6 Pd . < ( + !! & e6 o6 YA YU YO TU ?? -6 ?? ! Ye * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Nb At ' = " ?? A6 I6 U6 E6 O6 Ka Ki Ku Ke Ko ?? Sa Si Su Se So Ta Ti Tu Te To Na Ni Nu Ne No ?? ?? Ha Hi Hu ?? '- He Ho Ma Mi Mu Me Mo Ya Yu ?? Yo Ra Ri Ru ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? Re Ro Wa N6 "5 05 ?? A B C D E F G H I ?? ?? ?? ?? ?? ?? ?? J K L M N O P Q R ?? ?? ?? ?? ?? ?? DO ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset IBM297 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP297 &alias 297 &alias ebcdic-cp-fr &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS a> a: At a' a? aa // n? DG . < ( + ! & (! e> e: !) i' i> i: i! ss SE DO * ) ; '> - / A> A: A! A' A? AA C, N? u! , % _ > ? o/ E' E> E: E! I' I> I: I! My : Pd a! ' = " O/ a b c d e f g h i << >> d- y' th +- <( j k l m n o p q r -a -o ae ', AE Cu '! ': s t u v w x y z !I ?I D- Y' TH Rg Ct Nb Ye .M Co )> PI 14 12 34 NO !! '- '? '' *X e' A B C D E F G H I -- o> o: o! o' o? e! J K L M N O P Q R 1S u> u: BB u' y: c, -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' AC &charset IBM420 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &rem IBM NLS RM p 11-11 &alias CP420 &alias 420 &alias ebcdic-cp-ar1 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS 3+ 3+; ++ ?? H' aM aM. aH Ct . < ( + !! & aH. wH ?? ?? yH a+ a+. b+ b+, ! DO * ) ; NO - / tm t+ t+, tk tk, g+ g+, hk BB , % _ > ? hk, x+ x+, d+ dk r+ z+ s+ s+, ,+ : Nb At ' = " sn a b c d e f g h i sn, c+ c+, dd dd, tj zH j k l m n o p q r e+ e+. e+, e+; i+ i+. i+, -: s t u v w x y z i+; f+ f+, q+ q+, k+ k+, l+ lM- lM. lH- lH. ?? ?? la- la. l+, m+ m+, n+ n+, h+ ;+ A B C D E F G H I -- h+, ?? h+; ?? w+ ?+ J K L M N O P Q R j+ j+. y+ y+. y+, 0a *X ?? S T U V W X Y Z 1a 2a ?? 3a 4a 5a 0 1 2 3 4 5 6 7 8 9 ?? 6a 7a 8a 9a AC &charset IBM423 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP423 &alias 423 &alias ebcdic-cp-gr &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP A* B* G* D* E* Z* Y* H* I* <( . < ( + ! & K* L* M* N* C* O* P* R* S* )> DO * ) ; '> - / T* U* F* X* Q* W* ?? ?? ?? , % _ > ? ?? A% E% Y% ?? I% O% U% W% '! : Pd SE ' = " A: a b c d e f g h i a* b* g* d* e* z* O: j k l m n o p q r y* h* i* k* l* m* U: ': s t u v w x y z n* c* o* p* r* *s ?? a% e% y% j* i% o% u% v* w% s* t* u* f* x* q* ', A B C D E F G H I ?? w* A> a! a: e> '' J K L M N O P Q R +- e' e! e: i> i: DG ?? S T U V W X Y Z 12 o: o> u> u! u: 0 1 2 3 4 5 6 7 8 9 y: c, C, ?? ?? AC &charset IBM424 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP424 &alias 424 &alias ebcdic-cp-he &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP A+ B+ G+ D+ H+ W+ Z+ X+ Tj Ct . < ( + !! & J+ K% K+ L+ M% M+ N% N+ S+ ! DO * ) ; NO - / E+ P% P+ Zj ZJ Q+ R+ Sh BB , % _ > ? ?? T+ ?? ?? NS ?? ?? ?? == '! : Nb At ' = " ?? a b c d e f g h i << >> ?? ?? ?? ?? DG j k l m n o p q r ?? ?? ?? ', ?? Cu My '? s t u v w x y z ?? ?? ?? ?? ?? Rg '> Pd Ye .M Co SE PI 14 12 34 <( )> '- ': '' *X (! A B C D E F G H I -- ?? ?? ?? ?? ?? !) J K L M N O P Q R 1S ?? ?? ?? ?? ?? // -: S T U V W X Y Z 2S ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 3S ?? ?? ?? ?? AC &charset IBM437 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP437 &alias 437 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: a! aa c, e> e: e! i: i> i! A: AA E' ae AE o> o: o! u> u! y: O: U: Ct Pd Ye Pt f2 a' i' o' u' n? N? -a -o ?I NI NO 12 14 !I << >> .S :S ?S vv vl vL Vl Dl dL VL VV LD UL Ul uL dl ur uh dh vr hh vh vR Vr UR DR UH DH VR HH VH uH Uh dH Dh Ur uR dR Dr Vh vH ul dr FB LB lB RB TB a* ss G* p* S* s* My t* F* H* W* d* 00 f* e* (U =3 +- >= =< Iu Il -: ?2 DG .M sb RT nS 2S fS NS &charset IBM500 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP500 &alias 500 &alias 500V1 &alias ebcdic-cp-be &alias ebcdic-cp-ch &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS a> a: a! a' a? aa c, n? <( . < ( + ! & e' e> e: e! i' i> i: i! ss )> DO * ) ; '> - / A> A: A! A' A? AA C, N? BB , % _ > ? o/ E' E> E: E! I' I> I: I! '! : Nb At ' = " O/ a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o ae ', AE Cu My '? s t u v w x y z !I ?I D- Y' TH Rg Ct Pd Ye .M Co SE PI 14 12 34 NO !! 'm ': '' *X (! A B C D E F G H I -- o> o: o! o' o? !) J K L M N O P Q R 1S u> u: u! u' y: // -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' AC &charset IBM850 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &rem source: UNICODE 1.0 &alias CP850 &alias 850 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: a! aa c, e> e: e! i: i> i! A: AA E' ae AE o> o: o! u> u! y: O: U: o/ Pd O/ *X f2 a' i' o' u' n? N? -a -o ?I Rg NO 12 14 !I << >> .S :S ?S vv vl A' A> A! Co VL VV LD UL Ct Ye dl ur uh dh vr hh vh a? A? UR DR UH DH VR HH VH Cu d- D- E> E: E! i. I' I> I: ul dr FB LB BB I! TB O' ss O> O! o? O? My th TH U' U> U! y' Y' 'm '' -- +- =2 34 PI SE -: ', DG ': .M 1S 3S 2S fS NS &charset IBM851 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP851 &alias 851 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: a! A% c, e> e: e! i: i> E% A: Y% I% ?? O% o> o: U% u> u! W% O: U: a% Pd e% y% i% j* i3 o% u% A* B* G* D* E* Z* Y* 12 H* I* << >> .S :S ?S vv vl K* L* N* M* VL VV LD UL C* O* dl ur uh dh vr hh vh P* R* UR DR UH DH VR HH VH S* T* U* F* X* Q* W* a* b* g* ul dr FB LB d* e* TB z* y* h* i* k* l* m* n* c* o* p* r* s* *s t* '' -- +- u* f* x* SE q* '; DG ': w* v* u3 w% fS NS &charset IBM852 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP852 &alias 852 &alias pcl2 &alias pclatin2 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: u0 c' c, l/ e: O" o" i> Z' A: C' E' L' l' o> o: L< l< S' s' O: U: T< t< L/ *X c< a' i' o' u' A; a; Z< z< E; e; NO z' C< s, << >> .S :S ?S vv vl A' A> E< S, VL VV LD UL Z. z. dl ur uh dh vr hh vh A( a( UR DR UH DH VR HH VH Cu d/ D/ D< E: d< N< I' I> e< ul dr FB LB T, U0 TB O' ss O> N' n' n< S< s< R' U' r' U" y' Y' t, '' -- '" '; '< '( SE -: ', DG ': '. u" R< r< fS NS &charset IBM855 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP855 &alias 855 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT d% D% g% G% io IO ie IE ds DS ii II yi YI j% J% lj LJ nj NJ ts TS kj KJ v% V% dz DZ ju JU =' =" a= A= b= B= c= C= d= D= e= E= f= F= g= G= << >> .S :S ?S vv vl h= H= i= I= VL VV LD UL j= J= dl ur uh dh vr hh vh k= K= UR DR UH DH VR HH VH Cu l= L= m= M= n= N= o= O= p= ul dr FB LB P= ja TB JA r= R= s= S= t= T= u= U= z% Z% v= V= %' %" '' -- y= Y= z= Z= s% S% je JE sc Sc c% C% ?? fS NS &charset IBM857 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP857 &alias 857 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: a! aa c, e> e: e! i: i> i. A: AA E' ae AE o> o: o! u> u! I. O: U: o/ Pd O/ S, s, a' i' o' u' n? N? G( g( ?I Rg NO 12 14 !I << >> .S :S ?S vv vl A' A> A! Co VL VV LD UL Ct Ye dl ur uh dh vr hh vh a? A? UR DR UH DH VR HH VH Cu -o -a E> E: E! ?? I' I> I: ul dr FB LB BB I! TB O' ss O> O! o? O? My ?? *X U' U> U! i! y: -M '' -- +- ?? 34 PI SE -: '; DG ': '. 1S 3S 2S fS NS &charset IBM860 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP860 &alias 860 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a? a! A' c, e> E> e! I> O> i! A? A> E' A! E! o> o? o! U' u! I! O? U: Ct Pd U! Pt O! a' i' o' u' n? N? -a -o ?I O' NO 12 14 !I << >> .S :S ?S vv vl vL Vl Dl dL VL VV LD UL Ul uL dl ur uh dh vr hh vh vR Vr UR DR UH DH VR HH VH uH Uh dH Dh Ur uR dR Dr Vh vH ul dr FB LB lB RB TB a* ss G* p* S* s* My t* F* H* W* d* 00 f* e* (U =3 +- >= =< Iu Il -: ?2 DG .M sb RT nS 2S fS NS &charset IBM861 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP861 &alias 861 &alias cp-is &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: a! aa c, e> e: e! D- d- TH A: AA E' ae AE o> o: th u> Y' y' O: U: o/ Pd O/ Pt O! a' i' o' u' A' I' O' U' ?I ?? NO 12 14 !I << >> .S :S ?S vv vl vL Vl Dl dL VL VV LD UL Ul uL dl ur uh dh vr hh vh vR Vr UR DR UH DH VR HH VH uH Uh dH Dh Ur uR dR Dr Vh vH ul dr FB LB lB RB TB a* ss G* p* S* s* My t* F* H* W* d* 00 f* e* (U =3 +- >= =< Iu Il -: ?2 DG .M sb RT nS 2S fS NS &charset IBM862 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP862 &alias 862 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT A+ B+ G+ D+ H+ W+ Z+ X+ Tj J+ K% K+ L+ M% M+ N% N+ S+ E+ P% P+ Zj ZJ Q+ R+ Sh T+ Ct Pd U! Pt O! a' i' o' u' n? N? -a -o ?I ?? NO 12 14 !I << >> .S :S ?S vv vl vL Vl Dl dL VL VV LD UL Ul uL dl ur uh dh vr hh vh vR Vr UR DR UH DH VR HH VH uH Uh dH Dh Ur uR dR Dr Vh vH ul dr FB LB lB RB TB a* ss G* p* S* s* My t* F* H* W* d* 00 f* e* (U =3 +- >= =< Iu Il -: ?2 DG .M sb RT nS 2S fS NS &charset IBM863 &rem source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991 &alias CP863 &alias 863 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> A> a! PI c, e> e: e! i: i> i! A! SE E' E! E> o> E: I: u> u! Cu O> U: Ct Pd U! U> f2 BB '' o' u' ': ', 3S 'm I> NI NO 12 14 34 << >> .S :S ?S vv vl vL Vl Dl dL VL VV LD UL Ul uL dl ur uh dh vr hh vh vR Vr UR DR UH DH VR HH VH uH Uh dH Dh Ur uR dR Dr Vh vH ul dr FB LB lB RB TB a* ss G* p* S* s* My t* F* H* W* d* 00 /0 e* (U =3 +- >= =< Iu Il -: ?2 Ob .M sb RT nS 2S fS NS &charset IBM864 &rem source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991 &alias CP864 &alias 864 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT DG .M Ob RT :S hh vv vh vl dh vr uh dl dr ur ul ss 00 o/ +- 12 14 ?2 << >> lH- lH. ?? ?? la- la. a+: ?? -- aM. Pd Cu aH. ?? ?? a+. b+ t+ tk ,+ g+ hk x+ 0a 1a 2a 3a 4a 5a 6a 7a 8a 9a v+ ;+ s+ sn c+ ?+ Ct H' aM aH wH e+. yH a+ b+, tm t+, tk, g+, hk, x+, d+ dk r+ z+ s+, sn, c+, dd, tj zH e+, i+, BB NO -: *X e+ ++ f+. q+. k+, l+. m+, n+. h+, w+ j+ y+, dd m+. i+. i+ m+ 3+; 3+ n+ h+ h+; j+. y+. f+ q+ lM- lM. l+ k+ y+ fS NS &charset IBM865 &rem source: IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987) &alias CP865 &alias 865 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: a! aa c, e> e: e! i: i> i! A: AA E' ae AE o> o: o! u> u! y: O: U: o/ Pd O/ Pt f2 a' i' o' u' n? N? -a -o ?I NI NO 12 14 !I << >> .S :S ?S vv vl vL Vl Dl dL VL VV LD UL Ul uL dl ur uh dh vr hh vh vR Vr UR DR UH DH VR HH VH uH Uh dH Dh Ur uR dR Dr Vh vH ul dr FB LB lB RB TB a* ss G* p* S* s* My t* F* H* W* d* 00 /0 e* (U =3 +- >= =< Iu Il -: ?2 Ob .M sb RT nS 2S fS NS &charset IBM868 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP868 &alias 868 &alias cp-ar &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT 0a 1a 2a 3a 4a 5a 6a 7a 8a 9a ,+ ;+ ?+ aM a+ a+. a+: b+ b+, p+ ?? tm t+ t+, ?? ?? tk tk, g+ g+, ?? ?? hk hk, x+ x+, d+ ?? dk r+ ?? z+ ?? s+ s+, sn << >> sn, c+ .S :S ?S vv vl c+, dd dd, tj VL VV LD UL zH e+ dl ur uh dh vr hh vh e+. e+, UR DR UH DH VR HH VH e+; i+ i+. i+, i+; f+ f+, q+ q+, k+. ul dr FB TB k+, ?? LB ?? l+ l+. l+; m+ m+, ?? n+ n+, ?? w+ ?? ?? ?? ?? H' -- ?? ?? ?? ?? ?? ?? ?? ?? 3+ 3+; ?? fS NS &charset IBM869 &rem source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991 &alias CP869 &alias 869 &alias cp-gr &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT ?? ?? ?? ?? ?? ?? A% ?? .M NO BB 9' '9 E% -M Y% I% J* O% ?? ?? U% V* Co W% 2S 3S a% Pd e% y% i% j* i3 o% u% A* B* G* D* E* Z* Y* 12 H* I* << >> .S :S ?S vv vl K* L* M* N* VL VV LD UL C* O* dl ur uh dh vr hh vh P* R* UR DR UH DH VR HH VH S* T* U* F* X* Q* W* a* b* g* ul dr FB LB d* e* TB z* y* h* i* k* l* m* n* c* o* p* r* s* *s t* '' -- +- u* f* x* SE q* '% DG ': w* v* u3 w% fS NS &charset IBM870 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP870 &alias 870 &alias ebcdic-cp-roece &alias ebcdic-cp-yu &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS a> a: t, a' a( c< c, c' <( . < ( + ! & e' e; e: u0 i' i> l< l' ss )> DO * ) ; '> - / A> A: '" A' A< C< C, C' !! , % _ > ? '< E' E; E: U0 I' I> L< L' '! : Nb At ' = " '( a b c d e f g h i s' n< d/ y' r< s, DG j k l m n o p q r l/ n' s< ', '; Cu a; '? s t u v w x y z S' N< D/ Y' R< S, .M A; z. T, Z. SE z< z' Z< Z' L/ N' S< ': '' *X (! A B C D E F G H I -- o> o: r' o' o" !) J K L M N O P Q R E< u" u: t< u' e< // -: S T U V W X Y Z d< O> O: R' O' O" 0 1 2 3 4 5 6 7 8 9 D< U" U: T< U' AC &charset IBM871 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP871 &alias 871 &alias ebcdic-cp-is &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS a> a: a! a' a? aa c, n? th . < ( + ! & e' e> e: e! i' i> i: i! ss AE DO * ) ; O: - / A> A: A! A' A? AA C, N? BB , % _ > ? o/ E' E> E: E! I' I> I: I! d- : Nb D- ' = " O/ a b c d e f g h i << >> '! y' (! +- DG j k l m n o p q r -a -o !) ', )> Cu My o: s t u v w x y z !I ?I At Y' <( Rg Ct Pd Ye .M Co SE PI 14 12 34 NO !! 'm ': // *X TH A B C D E F G H I -- o> '? o! o' o? ae J K L M N O P Q R 1S u> u: u! u' y: '' -: S T U V W X Y Z 2S O> '> O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' AC &charset IBM875 &rem source: UNICODE 1.0 &alias CP875 &alias 875 &alias EBCDIC-Greek &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP A* B* G* D* E* Z* Y* H* I* <( . < ( + ! & K* L* M* N* C* O* P* R* S* )> DO * ) ; '> - / T* U* F* X* Q* W* J* V* ?? , % _ > ? ': A% E% Y% NB I% O% U% W% '! : Nb At ' = " '% a b c d e f g h i a* b* g* d* e* z* DG j k l m n o p q r y* h* i* k* l* m* '' '? s t u v w x y z n* c* o* p* r* s* Pd a% e% y% i3 i% o% u% u3 w% *s t* u* f* x* q* (! A B C D E F G H I -- w* j* v* '6 -3 !) J K L M N O P Q R +- 12 ?? .M '9 BB // ?? S T U V W X Y Z 2S SE ?? ?? << NO 0 1 2 3 4 5 6 7 8 9 3S Co ?? ?? >> AC &charset IBM880 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP880 &alias 880 &alias EBCDIC-Cyrillic &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? d% g% io ?? ds ii yi j% <( . < ( + ! & lj nj ts kj ?? dz =" N0 D% )> DO * ) ; '> - / G% IO ?? DS II YI J% LJ BB , % _ > ? NJ Ts KJ ?? ?? DZ ju a= b= ?? : Nb At ' = " c= a b c d e f g h i d= e= f= g= h= i= j= j k l m n o p q r k= l= m= n= o= p= ja ?? s t u v w x y z r= s= t= u= z% v= %' y= z= s% je sc c% =' JU A= B= C= D= E= F= G= ?? A B C D E F G H I H= I= J= K= L= M= ?? J K L M N O P Q R N= O= P= JA R= S= // Cu S T U V W X Y Z T= U= Z% V= %" Y= 0 1 2 3 4 5 6 7 8 9 Z= S% JE Sc C% AC &charset IBM891 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP891 &alias 891 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? &charset IBM903 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP903 &alias 903 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? &charset IBM904 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP904 &alias 904 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT Ct ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? NO BB ?? &charset IBM905 &rem source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 &alias CP905 &alias 905 &alias ebcdic-cp-tr &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? a> a: a! a' ?? c. (! n? C, . < ( + ! & e' e> e: e! i' i> i: i! ss G( I. * ) ; '> - / A> A: A! A' ?? C. <( N? s, , % _ > ? ?? E' E> E: E! I' I> I: I! i. : O: S, ' = U: '( a b c d e f g h i h/ c> s> u( ?? !! DG j k l m n o p q r h> g> j> '; ?? Cu My o: s t u v w x y z H/ C> S> U( ?? At .M Pd z. !) Z. SE )> ?? 12 DO H> G> J> ': '' *X c, A B C D E F G H I -- o> '? o! o' g. g( J K L M N O P Q R '! u> // u! u' ?? u: -: S T U V W X Y Z 2S O> Nb O! O' G. 0 1 2 3 4 5 6 7 8 9 3S U> " U! U' AC &charset IBM918 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP918 &alias 918 &alias ebcdic-cp-ar2 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS ,+ ;+ ?+ aH a+ a+. ?? b+ <( . < ( + ! & b+, p+ ?? tm t+ t+, ?? ?? tk )> DO * ) ; '> - / tk, g+ g+, ?? ?? hk hk, x+ '! , % _ > ? 0a 1a 2a 3a 4a 5a 6a 7a 8a 9a : Nb At ' = " x+, a b c d e f g h i d+ ?? dk r+ ?? z+ ?? j k l m n o p q r s+ s+, sn sn, c+ c+, dd '? s t u v w x y z dd, tj zH e+ e+. e+, e+; i+ i+. i+, i+; f+ f+, q+ q+, k+ k+, !! ?? ?? l+ l+. (! A B C D E F G H I -- ?? m+ m+, ?? n+ !) J K L M N O P Q R n+, ?? w+ ?? ?? ?? // ?? S T U V W X Y Z H' ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? 3+ 3+; AC &charset IBM1004 &rem source: CEN/TC304 N283, 1994-02-04 &alias CP1004 &alias 1004 &alias os2latin1 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT ?? ?? .9 ?? :9 .3 /- /= 1> %0 S< <1 OE ?? ?? ?? ?? '6 '9 "6 "9 sb -N -M 1? TM s< >1 oe ?? ?? Y: NS !I Ct Pd Cu Ye BB SE ': Co -a << NO -- Rg 'm DG +- 2S 3S '' My PI .M ', 1S -o >> 14 12 34 ?I A! A' A> A? A: AA AE C, E! E' E> E: I! I' I> I: D- N? O! O' O> O? O: *X O/ U! U' U> U: Y' TH ss a! a' a> a? a: aa ae c, e! e' e> e: i! i' i> i: d- n? o! o' o> o? o: -: o/ u! u' u> u: y' th y: &charset IBM1026 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP1026 &alias 1026 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS a> a: a! a' a? aa (! n? C, . < ( + ! & e' e> e: e! i' i> i: i! ss G( I. * ) ; '> - / A> A: A! A' A? AA <( N? s, , % _ > ? o/ E' E> E: E! I' I> I: I! i. : O: S, ' = U: O/ a b c d e f g h i << >> !) '! BB +- DG j k l m n o p q r -a -o ae '; AE Cu My o: s t u v w x y z !I ?I )> DO At Rg Ct Pd Ye .M Co SE PI 14 12 34 NO !! -M ': '' *X c, A B C D E F G H I -- o> '? o! o' o? g( J K L M N O P Q R 1S u> // u! u' y: u: -: S T U V W X Y Z 2S O> Nb O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> " U! U' AC &charset IBM1047 &rem source: IBM Character Data Representation Architecture &rem Registry SC09-1391-00 p 150. &alias CP1047 &alias 1047 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP NS a> a: a! a' a? aa c, n? Ct . < ( + !! & e' e> e: e! i' i> i: i! ss ! DO * ) ; '> - / A> A: A! A' A? AA C, N? BB , % _ > ? o/ E' E> E: E! I' I> I: I! '! : Nb At ' = " O/ a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o ae ', AE Cu My '? s t u v w x y z !I ?I D- <( TH Rg NO Pd Ye .M Co SE PI 14 12 34 Y' ': 'm )> '' *X (! A B C D E F G H I -- o> o: o! o' o? !) J K L M N O P Q R 1S u> u: u! u' y: // -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' AC &charset CP1250 &rem source: UNICODE 1.0 &alias ms-ee &alias 1250 &rem &alias windows-1250 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT Eu ?? .9 ?? :9 .3 /- /= ?? %0 S< <1 S' T< Z< Z' ?? '6 '9 "6 "9 sb -N -M ?? TM s< >1 s' t< z< z' NS '< '( L/ Cu A; BB SE ': Co S, << NO -- Rg Z. DG +- '; l/ '' My PI .M ', a; s, >> L< '" l< z. R' A' A> A( A: L' C' C, C< E' E; E: E< I' I> D< D/ N' N< O' O> O" O: *X R< U0 U' U" U: Y' T, ss r' a' a> a( a: l' c' c, c< e' e; e: e< i' i> d< d/ n' n< o' o> o" o: -: r< u0 u' u" u: y' t, '. &charset CP1251 &rem source: UNICODE 1.0 &alias ms-cyrl &alias 1251 &rem &alias windows-1251 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT D% G% .9 g% :9 .3 /- /= Eu %0 LJ <1 NJ KJ Ts DZ d% '6 '9 "6 "9 sb -N -M ?? TM lj >1 nj kj ts dz NS V% v% J% Cu G3 BB SE IO Co IE << NO -- Rg YI DG +- II ii g3 My PI .M io N0 ie >> j% DS ds yi A= B= V= G= D= E= Z% Z= I= J= K= L= M= N= O= P= R= S= T= U= F= H= C= C% S% Sc =" Y= %" JE JU JA a= b= v= g= d= e= z% z= i= j= k= l= m= n= o= p= r= s= t= u= f= h= c= c% s% sc =' y= %' je ju ja &charset CP1252 &rem source: UNICODE 1.0 &alias ms-ansi &alias 1252 &rem &alias windows-1252 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT Eu ?? .9 f2 :9 .3 /- /= 1> %0 S< <1 OE ?? Z< ?? ?? '6 '9 "6 "9 sb -N -M 1? TM s< >1 oe ?? z< Y: NS !I Ct Pd Cu Ye BB SE ': Co -a << NO -- Rg 'm DG +- 2S 3S '' My PI .M ', 1S -o >> 14 12 34 ?I A! A' A> A? A: AA AE C, E! E' E> E: I! I' I> I: D- N? O! O' O> O? O: *X O/ U! U' U> U: Y' TH ss a! a' a> a? a: aa ae c, e! e' e> e: i! i' i> i: d- n? o! o' o> o? o: -: o/ u! u' u> u: y' th y: &charset CP1253 &rem source: UNICODE 1.0 &alias ms-greek &alias 1253 &rem &alias windows-1253 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT Eu ?? .9 f2 :9 .3 /- /= ?? %0 ?? <1 ?? ?? ?? ?? ?? '6 '9 "6 "9 sb -N -M ?? TM ?? >1 ?? ?? ?? ?? NS '% A% Pd Cu Ye BB SE ': Co ?? << NO -- Rg -3 DG +- 2S 3S '* My PI .M E% Y% I% >> O% 12 U% W% i3 A* B* G* D* E* Z* Y* H* I* K* L* M* N* C* O* P* R* ?? S* T* U* F* X* Q* W* J* V* a% e% y% i% u3 a* b* g* d* e* z* y* h* i* k* l* m* n* c* o* p* r* *s s* t* u* f* x* q* w* j* v* o% u% w% ?? &charset CP1254 &rem source: UNICODE 1.0 &alias ms-turk &alias 1254 &rem &alias windows-1254 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT Eu ?? .9 f2 :9 .3 /- /= 1> %0 S< <1 OE ?? ?? ?? ?? '6 '9 "6 "9 sb -N -M 1? TM s< >1 oe ?? ?? Y: NS !I Ct Pd Cu Ye BB SE ': Co -a << NO -- Rg 'm DG +- 2S 3S '' My PI .M ', 1S -o >> 14 12 34 ?I A! A' A> A? A: AA AE C, E! E' E> E: I! I' I> I: G( N? O! O' O> O? O: *X O/ U! U' U> U: I. S, ss a! a' a> a? a: aa ae c, e! e' e; e: e. i' i> i- g( n? o! o' o> o? o: -: o/ u! u' u> u: i. s, y: &charset CP1255 &rem source: UNICODE 1.0 &alias ms-hebr &alias 1255 &rem &alias windows-1255 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT Eu ?? .9 f2 :9 .3 /- /= ?? %0 ?? <1 ?? ?? ?? ?? ?? '6 '9 "6 "9 sb -N -M ?? TM ?? >1 ?? ?? ?? ?? NS ?? Ct Pd Cu Ye BB SE ': Co *X << NO -- Rg '- DG +- 2S 3S '' My PI .M ', 1S -: >> 14 12 34 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? =2 A+ B+ G+ D+ H+ W+ Z+ X+ Tj J+ K% K+ L+ M% M+ N% N+ S+ E+ P% P+ Zj ZJ Q+ R+ Sh T+ ?? ?? LR RL ?? &charset CP1256 &rem source: UNICODE 1.0 &alias ms-arab &alias 1256 &rem &alias windows-1256 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT Eu 0a .9 1a :9 .3 /- /= 2a 3a 4a <1 5a 6a 7a 8a 9a '6 '9 "6 "9 sb -N -M ;+ TM ?+ >1 H' aM aH Y: NS wH ah Pd Cu yH BB SE a+ Co b+ << NO -- Rg p+ DG +- tm t+ tk My PI .M g+ tc hk >> x+ d+ dk r+ A! z+ A> zj s+ sn c+ C, E! E' E> E: dd tj I> I: zh e+ i+ ++ O> f+ q+ *X k+ U! gf U> U: l+ m+ n+ a! h+ a> hH w+ j+ y+ c, e! e' e> e: :+ "+ i> i: =+ /+ '+ 1+ o> 3+ 0+ -: ?? u! ?? u> u: LR RL y: &charset CP1257 &rem source: CEN/TC304 N283 &alias WinBaltRim &alias 1257 &rem &alias windows-1257 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT Eu ?? .9 ?? :9 .3 /- /= ?? %0 ?? <1 ?? ?? ?? ?? ?? '6 '9 "6 "9 sb -N -M ?? TM ?? >1 ?? ?? ?? ?? NS ?? Ct Pd Cu ?? BB SE O/ Co R, << NO -- Rg AE DG +- 2S 3S ?? My PI .M o/ 1S r, >> 14 12 34 ae A; I; A- C' A: AA E; E- C< E' Z' E. G, K, I- L, S< N' N, O' O- O? O: *X U; L/ S' U- U: Z. Z< ss a; i; a- c' a: aa e; e- c< e' z' e. g, k, i- l, s< n' n, o' o- o? o: -: u; l/ s' u- u: z. z< ?? &charset EBCDIC-AT-DE &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? A: . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? U: DO * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? o: , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Nb SE ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ss s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? a: A B C D E F G H I ?? ?? ?? ?? ?? ?? u: J K L M N O P Q R ?? ?? ?? ?? ?? ?? O: ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset EBCDIC-AT-DE-A &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? o: . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? u: U: * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? ss , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? : A: O: ' = a: ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ?? s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? A B C D E F G H I ?? ?? ?? ?? ?? ?? ?? J K L M N O P Q R ?? ?? ?? ?? ?? ?? ?? ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset EBCDIC-CA-FR &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? a> ?? ?? ?? ?? ?? c, ?? a! . < ( + ! & ?? e> e: ?? ?? i> i: ?? ?? '' DO * ) ; '> - / A> ?? A! ?? ?? ?? C, ?? u! , % _ > ? ?? E' E> E: ?? I> I: ?? ?? '! : Nb At ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ': s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? e' A B C D E F G H I ?? o> ?? ?? ?? ?? e! J K L M N O P Q R ?? u> u: ?? ?? ?? ', ?? S T U V W X Y Z ?? O> ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? U> U: U! ?? AC &charset EBCDIC-DK-NO &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? Nb . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? Cu AA * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? o/ , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : AE O/ ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? u: s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ae A B C D E F G H I ?? ?? ?? ?? ?? ?? aa J K L M N O P Q R ?? ?? ?? ?? ?? ?? // ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset EBCDIC-DK-NO-A &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? o/ . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? aa AA * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? : AE O/ ' = ae ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ?? s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? A B C D E F G H I ?? ?? ?? ?? ?? ?? ?? J K L M N O P Q R ?? ?? ?? ?? ?? ?? ?? ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset EBCDIC-FI-SE &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? SE . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? Cu AA * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? o: , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? e' : A: O: ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? u: s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? a: A B C D E F G H I ?? ?? ?? ?? ?? ?? aa J K L M N O P Q R ?? ?? ?? ?? ?? ?? E' ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset EBCDIC-FI-SE-A &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? o: . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? aa AA * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? : A: O: ' = a: ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ?? s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? A B C D E F G H I ?? ?? ?? ?? ?? ?? ?? J K L M N O P Q R ?? ?? ?? ?? ?? ?? ?? ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset EBCDIC-FR &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? DG . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? SE DO * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? u! , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Pd a! ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ': s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? e' A B C D E F G H I ?? ?? ?? ?? ?? ?? e! J K L M N O P Q R ?? ?? ?? ?? ?? ?? c, ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset EBCDIC-IT &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? DG . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? e' DO * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? o! , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? u! : Pd SE ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? i! s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? a! A B C D E F G H I ?? ?? ?? ?? ?? ?? e! J K L M N O P Q R ?? ?? ?? ?? ?? ?? c, ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset EBCDIC-PT &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? <( . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? )> DO * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? o? , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : A? O? ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? c, s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? a? A B C D E F G H I ?? ?? ?? ?? ?? ?? '' J K L M N O P Q R ?? ?? ?? ?? ?? ?? C, ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset EBCDIC-ES &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? Ct . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? ! Pt * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? n? , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : N? At ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ': s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? (! A B C D E F G H I ?? ?? ?? ?? ?? ?? !) J K L M N O P Q R ?? ?? ?? ?? ?? ?? // ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset EBCDIC-ES-A &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? Ct . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? ! Pt * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? : N? At ' = n? ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ?? s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? A B C D E F G H I ?? ?? ?? ?? ?? ?? ?? J K L M N O P Q R ?? ?? ?? ?? ?? ?? ?? ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset EBCDIC-ES-S &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? Ct . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? ! DO * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? n? , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : N? At ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ': s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? (! A B C D E F G H I ?? ?? ?? ?? ?? ?? !) J K L M N O P Q R ?? ?? ?? ?? ?? ?? // ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset EBCDIC-UK &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? DO . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? ! Pd * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Nb At ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? '- s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? (! A B C D E F G H I ?? ?? ?? ?? ?? ?? !) J K L M N O P Q R ?? ?? ?? ?? ?? ?? // ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset EBCDIC-US &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &bits 8 &code 0 NU SH SX EX ST HT SA DT EG RI S2 VT FF CR SO SI DL D1 D2 D3 OC NL BS ES CN EM P2 S3 FS GS RS US PA HO BH NH IN LF EB EC HS HJ VS PD PU EQ AK BL DC P1 SY TS CC MW SG ET SS GC SC CI D4 NK PM SB SP ?? ?? ?? ?? ?? ?? ?? ?? ?? Ct . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? ! DO * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Nb At ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? '? s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? (! A B C D E F G H I ?? ?? ?? ?? ?? ?? !) J K L M N O P Q R ?? ?? ?? ?? ?? ?? // ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? AC &charset EBCDIC-IS-FRISS &rem source: Skyrsuvelar Rikisins og Reykjavikurborgar, feb 1982 &alias friss &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? a' ?? ?? ?? ?? < . A' ( + ! D- e' ?? ?? ?? i' ?? ?? ?? DO % E' * ) ; & - / ?? ?? ?? ?? ?? ?? ?? Nb '6 , TH _ > ? ?? ?? ?? ?? ?? I' ?? ?? !! d- : AE O: ' = " ?? a b c d e f g h i ?? ?? ?? Y' ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? DG o: s t u v w x y z ?? ?? <( y' ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? )> ': ?? ?? th A B C D E F G H I ?? ?? ?? ?? o' ?? ae J K L M N O P Q R ?? ?? ?? ?? u' ?? '' ?? S T U V W X Y Z ?? ?? ?? ?? O' ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? U' DT &charset KOI-7 &rem source: Andrey A. Chernov &bits 7 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ JU A= B= C= D= E= F= G= H= I= J= K= L= M= N= O= P= JA R= S= T= U= Z% V= %" Y= Z= S% JE Sc C% DT &charset KOI-8 &rem source: Andrey A. Chernov &alias GOST_19768-74 &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ju a= b= c= d= e= f= g= h= i= j= k= l= m= n= o= p= ja r= s= t= u= z% v= %' y= z= s% je sc c% =' JU A= B= C= D= E= F= G= H= I= J= K= L= M= N= O= P= JA R= S= T= U= Z% V= %" Y= Z= S% JE Sc C% ?? &charset KOI8-R &rem source: RFC1489 via Gabor Kiss &rem and Andrey A. Chernov &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT hh vv dr dl ur ul vr vl dh uh vh TB LB FB lB RB .S :S ?S Iu fS sb RT ?2 =< >= NS Il DG 2S .M -: HH VV dR io Dr DR dL Dl LD uR Ur UR uL Ul UL vR Vr VR vL IO Vl VL dH Dh DH uH Uh UH vH Vh VH Co ju a= b= c= d= e= f= g= h= i= j= k= l= m= n= o= p= ja r= s= t= u= z% v= %' y= z= s% je sc c% =' JU A= B= C= D= E= F= G= H= I= J= K= L= M= N= O= P= JA R= S= T= U= Z% V= %" Y= Z= S% JE Sc C% =" &charset KOI8-RU &rem source: http://cad.ntu-kpi.kiev.ua/multiling/koi8-ru/ &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT hh vv dr dl ur ul vr vl dh uh vh TB LB FB lB RB .S :S ?S "6 fS sb "9 -M N0 TM NS >> Rg << .M Cu HH VV dR io ie DR ii yi LD uR Ur UR uL g3 v% vR Vr VR vL IO IE VL II YI DH uH Uh UH vH G3 V% Co ju a= b= c= d= e= f= g= h= i= j= k= l= m= n= o= p= ja r= s= t= u= z% v= %' y= z= s% je sc c% =' JU A= B= C= D= E= F= G= H= I= J= K= L= M= N= O= P= JA R= S= T= U= Z% V= %" Y= Z= S% JE Sc C% =" &charset KOI8-U &rem source: RFC 2319 &rem Mibenum: 2088 &rem source: http://www.net.ua/KOI8-U/ &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT hh vv dr dl ur ul vr vl dh uh vh TB LB FB lB RB .S :S ?S Iu fS Sb RT ?2 =< >= NS Il DG 2S .M -: HH VV dR io ie DR ii yi LD uR Ur UR uL g3 UL vR Vr VR vL IO IE VL II YI DH uH Uh UH vH G3 VH Co ju a= b= c= d= e= f= g= h= i= j= k= l= m= n= o= p= ja r= s= t= u= z% v= %' y= z= s% je sc c% =' JU A= B= C= D= E= F= G= H= I= J= K= L= M= N= O= &charset CWI &rem source: Computerworld Sza'mita'stechnika vol 3 issue 13 1988-06-29 &alias CWI-2 &alias cp-hu &bits 8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: a! aa c, e> e: e! i: i> I' A: A' E' ae AE o" o: O' u" U' U" O: U: Ct Pd Ye Pt Fl a' i' o' u' n? N? -a O" ?I NI NO 12 14 !I << >> .S :S ?S vv vl vL Vl Dl dL VL VV LD UL Ul uL dl ur uh dh vr hh vh vR Vr UR DR UH DH VR HH VH uH Uh dH Dh Ur uR dR Dr Vh vH ul dr FB LB lB RB TB a* b* G* p* S* s* m* t* F* H* W* d* 00 /0 e* (U =3 +- >= =< Iu Il -: ?2 Ob .M sb RT nS 2S fS NS &charset macintosh_ce &rem source: Macintosh CE fonts &alias macce &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT A: A- a- E' A; O: U: a' a; C< a: c< C' c' e' Z' z' D< i' d< E- e- E. o' e. o> o: o? u' E< e< u: /- DG E; Pd SE Sb PI ss Rg Co TM e; ': != g' I; i; I- =< >= i- K, dP +Z l/ L, l, L< l< L' l' N, n, N' NO RT n' N< D* << >> .3 NS n< O" O? o" O- -N -M "6 "9 '6 '9 -: Db o- R' r' R< <1 >1 r< R, r, S< .9 :9 s< S' s' A' T< t< I' Z< z< U- O' O> u- U0 U' u0 U" u" U; u; Y' y' k, Z. L/ z. G, '< recode-3.7.15/keld/rfc1345.txt0000644000175000017500000074761213226751246011331 Network Working Group K. Simonsen Request for Comments: 1345 Rationel Almen Planlaegning June 1992 Character Mnemonics & Character Sets Status of the Memo This memo provides information for the Internet community. It does not specify an Internet standard. Distribution of this memo is unlimited. Summary This memo lists a selection of characters and their presence in some coded character sets. To facilitate the coded character set tabulations an unambiguous mnemonic for each character is used, and a format for tabulating the coded character sets is defined. The coded character sets are given names for easy reference. A family of coded character sets called the mnemonic character sets and conversion between these coded character set without information loss is defined. The character set names are registered with the Internet Assigned Numbers Authority (IANA). Additional character sets not described in this memo should be registered with the IANA. This memo may be updated periodically, or additional specifications may be published, to reflect other coded character sets. Please send any comments including comments about the accuracy of the tables to the author, Keld Simonsen . 1. INTRODUCTION With the growing internationalization of the Internet, support for many coded character sets is required. It is the intention of this memo to document precisely the mapping between all characters and their corresponding coded representations in various coded character sets, and give names to these coded character sets, so they can be referenced unambiguously in Internet standards. This memo does not indicate anything about the validity of using these specifications in any Internet standard, so you should consult each individual Internet standard to see which coded character sets and names are allowed there. Unambiguous character mnemonics are specified, which provide a practical way of identifying a character, without reference to a coded character set and its code in this coded character set. The mnemonics are written in a minimal set of characters, namely the invariant 83 graphical characters of ISO 646, which is a kind of greatest common subset to be found between the majority of coded Simonsen [Page 1] RFC 1345 Character Mnemonics & Character Sets June 1992 character sets, including ASCII, national variants of the ISO 646 7- bit character set and various EBCDICs. In addition, the numeric value of the coded representations of all these characters are the same in all coded character sets compatible with ISO standards. All of them except two, EXCLAMATION MARK and QUOTATION MARK, have the same coded representation in all variants of EBCDIC. This minimal set of characters is called the reference character set in this memo. The mnemonics can be used in Internet standards for easy and unambiguous reference, and they can also serve as a fallback representation in various Internet specifications. The coded character sets covered include all parts of ISO 8859, ISO 6937-2 and all ISO 646 conforming coded character sets in the ISO character set registry managed by ECMA according to ISO 2375. Almost all graphic coded character sets in the ECMA registry (1) are covered. The graphic coded character sets not included are registry numbers 31, 38, 39, 53, 59, 68, 71, 72, 129 and 137. In addition many vendor defined character sets are covered, including PC codepages (4), (7), (8), many EBCDIC character sets (4), (5), (6) and HP, DEC and Apple character sets (8), (9), (10), (13), (14). The East-Asian 16-bit character sets from the ECMA registry is also included in this memo. 2. CHARACTER MNEMONICS 2.1 General Syntax The character mnemonics are taken from the ISO committee draft (CD) of the POSIX.2 standard (3). They are classified into two groups: 1. A group with two-character mnemonics - Primarily intended for alphabetic scripts like Latin, Greek, Cyrillic, Hebrew and Arabic, and special characters. 2. A group with variable-length mnemonics - primarily intended for non-alphabetic scripts like Japanese and Chinese, but also used for some accented letters and special characters. In the two-character mnemonics, all invariant graphic character in the ISO 646 character codes except "&" are used, i.e. the following characters: ! " % ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z The character "_" is not used as the first character. In the variable-length mnemonics, the character "_" is not used as the first character. If it is used in a name, its presence is doubled. Simonsen [Page 2] RFC 1345 Character Mnemonics & Character Sets June 1992 The mnemonics can be used in several different ways for different purposes. One of these is description of coded character sets, which is detailed in section 3. Another is for extending a given coded character set to a mnemonic character set. This is described in section 4. The restrictions on the use of the characters "&" and "_" are due to demands of the compositional methods of these techniques. 2.2 ISO Official Long Descriptive Character Name For all mnemonics, the character for which it stands is indicated in the following table by a long descriptive name. This name is identical to the ISO name of the character as given in reference (2). For a few characters that are not included there, descriptive names of the same kind are introduced in this memo. The source of each character is stated in the table after the name and should be consulted for a reliable identification of the character. These long descriptive names consists only of the capital Latin letters of the invariant part of ISO 646, the digits, "-", and SPACE. Digits are only used in names of ideographic and Hangul characters and never as the first character. 2.3 The 2-character Mnemonics The two-character mnemonics include various accented Latin letters, Greek, Cyrillic, Hebrew, Arabic, Hiragana and Katakana. Also a fair number of special characters are included. Almost all ISO or ISO registered 7- and 8-bit graphical coded character sets are covered with these two-character mnemonics. The two characters are chosen so the graphical appearance in the reference set resembles as much as possible (within the possibilities available) the graphical appearance of the character. The basic character set of ISO 646 is used as the reference set, as mentioned above. The characters in the reference character set are chosen to represent themselves. For control characters from ISO 646 the two-character acronyms of ISO 2047 are used as mnemonics. For the other control characters of ISO 6429, two-character mnemonics have been selected based on the variable-length acronyms used in that standard. Letters, including Greek, Cyrillic, Arabic and Hebrew, are represented with the base letter as the first letter, and the second letter represents an accent or relation to a non-Latin script. Non- Latin letters are transliterated to Latin letters, following transliteration standards as closely as possible. This is also done with the Latin letters such as ETH and THORN, and the Danish/Norwegian/Swedish letter A WITH RING ABOVE is transliterated into "aa". Simonsen [Page 3] RFC 1345 Character Mnemonics & Character Sets June 1992 After a letter, the second character signifies the following: Exclamation mark ! Grave Apostrophe ' Acute accent Greater-Than sign > Circumflex accent Question Mark ? tilde Hyphen-Minus - Macron Left parenthesis ( Breve Full Stop . Dot Above Colon : Diaeresis Comma , Cedilla Underline _ Underline Solidus / Stroke Quotation mark " Double acute accent Semicolon ; Ogonek Less-Than sign < Caron Zero 0 Ring above Two 2 Hook Nine 9 Horn Equals = Cyrillic Asterisk * Greek Percent sign % Greek/Cyrillic special Plus + smalls: Arabic, capitals: Hebrew Three 3 some Latin/Greek/Cyrillic letters Four 4 Bopomofo Five 5 Hiragana Six 6 Katakana In designing the mnemonics the following special characters were reserved: The ampersand is reserved as an intro character, indicating that the following string is in the mnemonic character set. The underline character is reserved for the variable-length mnemonics. This use does not eliminate usage as an accent or language identifier. Special characters are encoded with some mnemonic value. These are not systematic thruout, but most mnemonics start with a related special character of the reference set. 2.4 The Variable-length Character Mnemonics The Variable-length Character Mnemonics are primarily meant for the ideographic characters in larger Asian character sets, but are also used for accented characters with several accents and some special characters. To have the mnemonics as short as possible, which both saves storage and is easier to input, a quite short name is preferred. Considering the Chinese standard GB 2312-1980, the Japanese standards JIS X0208 and JIS X0212, and the Korean standard KS C 5601, they are all given by row and column numbers between 1 and 94. So two positions for row and column and a character set identifier of one character would be almost as short as possible. The following character set identifiers are defined: Simonsen [Page 4] RFC 1345 Character Mnemonics & Character Sets June 1992 c GB 2312-1980 j JIS X0208-1990 J JIS X0212-1990 k KS C 5601-1987 This system for the representation of ideographic characters and Hangul characters is not truly mnemonic, but it provides short representations that are easy to connect to the corresponding character by means of the code table of an official character set standard. Alternative methods based on the graphic appearance or the pronunciation of the characters are thought to be unfeasible. One prominent character in the reference character set is reserved for identifying variable-length mnemonics, namely the underline character "_". This character is intended as a delimiter both in the front and in the end of the mnemonic. An example of its use would be: (&=intro): &_j3210_ &_j4436_&_j6530_ 3. CHARACTER MNEMONIC TABLE The following table contains the character mnemonic and the encoding and long descriptive name of ISO 2DIS 10646 (2). Although the ISO 10646 is only at DIS stage at this moment of writing and there is quite some debate about it, the long descriptive naming in the DIS is considered to be stable and the best official ISO reference to character names. The 2-octet encoded value of the ISO 2DIS 10646 is also used, but only as an identification of the character, and it should only be used for identification purposes as the coded representation may be changed in the final 10646 international standard. Some characters not in the ISO 2DIS 10646 are allocated values in the private use zone and given names and references to a character set where it is used. The format of the table is: 1st field is the character mnemonic (mostly 2 characters). 2nd field is the ISO 2DIS 10646 code in hexadecimal. 3rd field is the long descriptive name of ISO 2DIS 10646. SP 0020 SPACE ! 0021 EXCLAMATION MARK " 0022 QUOTATION MARK Nb 0023 NUMBER SIGN DO 0024 DOLLAR SIGN % 0025 PERCENT SIGN & 0026 AMPERSAND ' 0027 APOSTROPHE ( 0028 LEFT PARENTHESIS ) 0029 RIGHT PARENTHESIS * 002a ASTERISK + 002b PLUS SIGN Simonsen [Page 5] RFC 1345 Character Mnemonics & Character Sets June 1992 , 002c COMMA - 002d HYPHEN-MINUS . 002e FULL STOP / 002f SOLIDUS 0 0030 DIGIT ZERO 1 0031 DIGIT ONE 2 0032 DIGIT TWO 3 0033 DIGIT THREE 4 0034 DIGIT FOUR 5 0035 DIGIT FIVE 6 0036 DIGIT SIX 7 0037 DIGIT SEVEN 8 0038 DIGIT EIGHT 9 0039 DIGIT NINE : 003a COLON ; 003b SEMICOLON < 003c LESS-THAN SIGN = 003d EQUALS SIGN > 003e GREATER-THAN SIGN ? 003f QUESTION MARK At 0040 COMMERCIAL AT A 0041 LATIN CAPITAL LETTER A B 0042 LATIN CAPITAL LETTER B C 0043 LATIN CAPITAL LETTER C D 0044 LATIN CAPITAL LETTER D E 0045 LATIN CAPITAL LETTER E F 0046 LATIN CAPITAL LETTER F G 0047 LATIN CAPITAL LETTER G H 0048 LATIN CAPITAL LETTER H I 0049 LATIN CAPITAL LETTER I J 004a LATIN CAPITAL LETTER J K 004b LATIN CAPITAL LETTER K L 004c LATIN CAPITAL LETTER L M 004d LATIN CAPITAL LETTER M N 004e LATIN CAPITAL LETTER N O 004f LATIN CAPITAL LETTER O P 0050 LATIN CAPITAL LETTER P Q 0051 LATIN CAPITAL LETTER Q R 0052 LATIN CAPITAL LETTER R S 0053 LATIN CAPITAL LETTER S T 0054 LATIN CAPITAL LETTER T U 0055 LATIN CAPITAL LETTER U V 0056 LATIN CAPITAL LETTER V W 0057 LATIN CAPITAL LETTER W X 0058 LATIN CAPITAL LETTER X Y 0059 LATIN CAPITAL LETTER Y Z 005a LATIN CAPITAL LETTER Z <( 005b LEFT SQUARE BRACKET // 005c REVERSE SOLIDUS )> 005d RIGHT SQUARE BRACKET '> 005e CIRCUMFLEX ACCENT _ 005f LOW LINE '! 0060 GRAVE ACCENT Simonsen [Page 6] RFC 1345 Character Mnemonics & Character Sets June 1992 a 0061 LATIN SMALL LETTER A b 0062 LATIN SMALL LETTER B c 0063 LATIN SMALL LETTER C d 0064 LATIN SMALL LETTER D e 0065 LATIN SMALL LETTER E f 0066 LATIN SMALL LETTER F g 0067 LATIN SMALL LETTER G h 0068 LATIN SMALL LETTER H i 0069 LATIN SMALL LETTER I j 006a LATIN SMALL LETTER J k 006b LATIN SMALL LETTER K l 006c LATIN SMALL LETTER L m 006d LATIN SMALL LETTER M n 006e LATIN SMALL LETTER N o 006f LATIN SMALL LETTER O p 0070 LATIN SMALL LETTER P q 0071 LATIN SMALL LETTER Q r 0072 LATIN SMALL LETTER R s 0073 LATIN SMALL LETTER S t 0074 LATIN SMALL LETTER T u 0075 LATIN SMALL LETTER U v 0076 LATIN SMALL LETTER V w 0077 LATIN SMALL LETTER W x 0078 LATIN SMALL LETTER X y 0079 LATIN SMALL LETTER Y z 007a LATIN SMALL LETTER Z (! 007b LEFT CURLY BRACKET !! 007c VERTICAL LINE !) 007d RIGHT CURLY BRACKET '? 007e TILDE NS 00a0 NO-BREAK SPACE !I 00a1 INVERTED EXCLAMATION MARK Ct 00a2 CENT SIGN Pd 00a3 POUND SIGN Cu 00a4 CURRENCY SIGN Ye 00a5 YEN SIGN BB 00a6 BROKEN BAR SE 00a7 SECTION SIGN ': 00a8 DIAERESIS Co 00a9 COPYRIGHT SIGN -a 00aa FEMININE ORDINAL INDICATOR << 00ab LEFT-POINTING DOUBLE ANGLE QUOTATION MARK NO 00ac NOT SIGN -- 00ad SOFT HYPHEN Rg 00ae REGISTERED SIGN 'm 00af MACRON DG 00b0 DEGREE SIGN +- 00b1 PLUS-MINUS SIGN 2S 00b2 SUPERSCRIPT TWO 3S 00b3 SUPERSCRIPT THREE '' 00b4 ACUTE ACCENT My 00b5 MICRO SIGN PI 00b6 PILCROW SIGN Simonsen [Page 7] RFC 1345 Character Mnemonics & Character Sets June 1992 .M 00b7 MIDDLE DOT ', 00b8 CEDILLA 1S 00b9 SUPERSCRIPT ONE -o 00ba MASCULINE ORDINAL INDICATOR >> 00bb RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 14 00bc VULGAR FRACTION ONE QUARTER 12 00bd VULGAR FRACTION ONE HALF 34 00be VULGAR FRACTION THREE QUARTERS ?I 00bf INVERTED QUESTION MARK A! 00c0 LATIN CAPITAL LETTER A WITH GRAVE A' 00c1 LATIN CAPITAL LETTER A WITH ACUTE A> 00c2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX A? 00c3 LATIN CAPITAL LETTER A WITH TILDE A: 00c4 LATIN CAPITAL LETTER A WITH DIAERESIS AA 00c5 LATIN CAPITAL LETTER A WITH RING ABOVE AE 00c6 LATIN CAPITAL LETTER AE C, 00c7 LATIN CAPITAL LETTER C WITH CEDILLA E! 00c8 LATIN CAPITAL LETTER E WITH GRAVE E' 00c9 LATIN CAPITAL LETTER E WITH ACUTE E> 00ca LATIN CAPITAL LETTER E WITH CIRCUMFLEX E: 00cb LATIN CAPITAL LETTER E WITH DIAERESIS I! 00cc LATIN CAPITAL LETTER I WITH GRAVE I' 00cd LATIN CAPITAL LETTER I WITH ACUTE I> 00ce LATIN CAPITAL LETTER I WITH CIRCUMFLEX I: 00cf LATIN CAPITAL LETTER I WITH DIAERESIS D- 00d0 LATIN CAPITAL LETTER ETH (Icelandic) N? 00d1 LATIN CAPITAL LETTER N WITH TILDE O! 00d2 LATIN CAPITAL LETTER O WITH GRAVE O' 00d3 LATIN CAPITAL LETTER O WITH ACUTE O> 00d4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX O? 00d5 LATIN CAPITAL LETTER O WITH TILDE O: 00d6 LATIN CAPITAL LETTER O WITH DIAERESIS *X 00d7 MULTIPLICATION SIGN O/ 00d8 LATIN CAPITAL LETTER O WITH STROKE U! 00d9 LATIN CAPITAL LETTER U WITH GRAVE U' 00da LATIN CAPITAL LETTER U WITH ACUTE U> 00db LATIN CAPITAL LETTER U WITH CIRCUMFLEX U: 00dc LATIN CAPITAL LETTER U WITH DIAERESIS Y' 00dd LATIN CAPITAL LETTER Y WITH ACUTE TH 00de LATIN CAPITAL LETTER THORN (Icelandic) ss 00df LATIN SMALL LETTER SHARP S (German) a! 00e0 LATIN SMALL LETTER A WITH GRAVE a' 00e1 LATIN SMALL LETTER A WITH ACUTE a> 00e2 LATIN SMALL LETTER A WITH CIRCUMFLEX a? 00e3 LATIN SMALL LETTER A WITH TILDE a: 00e4 LATIN SMALL LETTER A WITH DIAERESIS aa 00e5 LATIN SMALL LETTER A WITH RING ABOVE ae 00e6 LATIN SMALL LETTER AE c, 00e7 LATIN SMALL LETTER C WITH CEDILLA e! 00e8 LATIN SMALL LETTER E WITH GRAVE e' 00e9 LATIN SMALL LETTER E WITH ACUTE e> 00ea LATIN SMALL LETTER E WITH CIRCUMFLEX e: 00eb LATIN SMALL LETTER E WITH DIAERESIS Simonsen [Page 8] RFC 1345 Character Mnemonics & Character Sets June 1992 i! 00ec LATIN SMALL LETTER I WITH GRAVE i' 00ed LATIN SMALL LETTER I WITH ACUTE i> 00ee LATIN SMALL LETTER I WITH CIRCUMFLEX i: 00ef LATIN SMALL LETTER I WITH DIAERESIS d- 00f0 LATIN SMALL LETTER ETH (Icelandic) n? 00f1 LATIN SMALL LETTER N WITH TILDE o! 00f2 LATIN SMALL LETTER O WITH GRAVE o' 00f3 LATIN SMALL LETTER O WITH ACUTE o> 00f4 LATIN SMALL LETTER O WITH CIRCUMFLEX o? 00f5 LATIN SMALL LETTER O WITH TILDE o: 00f6 LATIN SMALL LETTER O WITH DIAERESIS -: 00f7 DIVISION SIGN o/ 00f8 LATIN SMALL LETTER O WITH STROKE u! 00f9 LATIN SMALL LETTER U WITH GRAVE u' 00fa LATIN SMALL LETTER U WITH ACUTE u> 00fb LATIN SMALL LETTER U WITH CIRCUMFLEX u: 00fc LATIN SMALL LETTER U WITH DIAERESIS y' 00fd LATIN SMALL LETTER Y WITH ACUTE th 00fe LATIN SMALL LETTER THORN (Icelandic) y: 00ff LATIN SMALL LETTER Y WITH DIAERESIS A- 0100 LATIN CAPITAL LETTER A WITH MACRON a- 0101 LATIN SMALL LETTER A WITH MACRON A( 0102 LATIN CAPITAL LETTER A WITH BREVE a( 0103 LATIN SMALL LETTER A WITH BREVE A; 0104 LATIN CAPITAL LETTER A WITH OGONEK a; 0105 LATIN SMALL LETTER A WITH OGONEK C' 0106 LATIN CAPITAL LETTER C WITH ACUTE c' 0107 LATIN SMALL LETTER C WITH ACUTE C> 0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX c> 0109 LATIN SMALL LETTER C WITH CIRCUMFLEX C. 010a LATIN CAPITAL LETTER C WITH DOT ABOVE c. 010b LATIN SMALL LETTER C WITH DOT ABOVE C< 010c LATIN CAPITAL LETTER C WITH CARON c< 010d LATIN SMALL LETTER C WITH CARON D< 010e LATIN CAPITAL LETTER D WITH CARON d< 010f LATIN SMALL LETTER D WITH CARON D/ 0110 LATIN CAPITAL LETTER D WITH STROKE d/ 0111 LATIN SMALL LETTER D WITH STROKE E- 0112 LATIN CAPITAL LETTER E WITH MACRON e- 0113 LATIN SMALL LETTER E WITH MACRON E( 0114 LATIN CAPITAL LETTER E WITH BREVE e( 0115 LATIN SMALL LETTER E WITH BREVE E. 0116 LATIN CAPITAL LETTER E WITH DOT ABOVE e. 0117 LATIN SMALL LETTER E WITH DOT ABOVE E; 0118 LATIN CAPITAL LETTER E WITH OGONEK e; 0119 LATIN SMALL LETTER E WITH OGONEK E< 011a LATIN CAPITAL LETTER E WITH CARON e< 011b LATIN SMALL LETTER E WITH CARON G> 011c LATIN CAPITAL LETTER G WITH CIRCUMFLEX g> 011d LATIN SMALL LETTER G WITH CIRCUMFLEX G( 011e LATIN CAPITAL LETTER G WITH BREVE g( 011f LATIN SMALL LETTER G WITH BREVE G. 0120 LATIN CAPITAL LETTER G WITH DOT ABOVE Simonsen [Page 9] RFC 1345 Character Mnemonics & Character Sets June 1992 g. 0121 LATIN SMALL LETTER G WITH DOT ABOVE G, 0122 LATIN CAPITAL LETTER G WITH CEDILLA g, 0123 LATIN SMALL LETTER G WITH CEDILLA H> 0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX h> 0125 LATIN SMALL LETTER H WITH CIRCUMFLEX H/ 0126 LATIN CAPITAL LETTER H WITH STROKE h/ 0127 LATIN SMALL LETTER H WITH STROKE I? 0128 LATIN CAPITAL LETTER I WITH TILDE i? 0129 LATIN SMALL LETTER I WITH TILDE I- 012a LATIN CAPITAL LETTER I WITH MACRON i- 012b LATIN SMALL LETTER I WITH MACRON I( 012c LATIN CAPITAL LETTER I WITH BREVE i( 012d LATIN SMALL LETTER I WITH BREVE I; 012e LATIN CAPITAL LETTER I WITH OGONEK i; 012f LATIN SMALL LETTER I WITH OGONEK I. 0130 LATIN CAPITAL LETTER I WITH DOT ABOVE i. 0131 LATIN SMALL LETTER I DOTLESS IJ 0132 LATIN CAPITAL LIGATURE IJ ij 0133 LATIN SMALL LIGATURE IJ J> 0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX j> 0135 LATIN SMALL LETTER J WITH CIRCUMFLEX K, 0136 LATIN CAPITAL LETTER K WITH CEDILLA k, 0137 LATIN SMALL LETTER K WITH CEDILLA kk 0138 LATIN SMALL LETTER KRA (Greenlandic) L' 0139 LATIN CAPITAL LETTER L WITH ACUTE l' 013a LATIN SMALL LETTER L WITH ACUTE L, 013b LATIN CAPITAL LETTER L WITH CEDILLA l, 013c LATIN SMALL LETTER L WITH CEDILLA L< 013d LATIN CAPITAL LETTER L WITH CARON l< 013e LATIN SMALL LETTER L WITH CARON L. 013f LATIN CAPITAL LETTER L WITH MIDDLE DOT l. 0140 LATIN SMALL LETTER L WITH MIDDLE DOT L/ 0141 LATIN CAPITAL LETTER L WITH STROKE l/ 0142 LATIN SMALL LETTER L WITH STROKE N' 0143 LATIN CAPITAL LETTER N WITH ACUTE n' 0144 LATIN SMALL LETTER N WITH ACUTE N, 0145 LATIN CAPITAL LETTER N WITH CEDILLA n, 0146 LATIN SMALL LETTER N WITH CEDILLA N< 0147 LATIN CAPITAL LETTER N WITH CARON n< 0148 LATIN SMALL LETTER N WITH CARON 'n 0149 LATIN SMALL LETTER N PRECEDED BY APOSTROPHE NG 014a LATIN CAPITAL LETTER ENG (Lappish) ng 014b LATIN SMALL LETTER ENG (Lappish) O- 014c LATIN CAPITAL LETTER O WITH MACRON o- 014d LATIN SMALL LETTER O WITH MACRON O( 014e LATIN CAPITAL LETTER O WITH BREVE o( 014f LATIN SMALL LETTER O WITH BREVE O" 0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE o" 0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE OE 0152 LATIN CAPITAL LIGATURE OE oe 0153 LATIN SMALL LIGATURE OE R' 0154 LATIN CAPITAL LETTER R WITH ACUTE r' 0155 LATIN SMALL LETTER R WITH ACUTE Simonsen [Page 10] RFC 1345 Character Mnemonics & Character Sets June 1992 R, 0156 LATIN CAPITAL LETTER R WITH CEDILLA r, 0157 LATIN SMALL LETTER R WITH CEDILLA R< 0158 LATIN CAPITAL LETTER R WITH CARON r< 0159 LATIN SMALL LETTER R WITH CARON S' 015a LATIN CAPITAL LETTER S WITH ACUTE s' 015b LATIN SMALL LETTER S WITH ACUTE S> 015c LATIN CAPITAL LETTER S WITH CIRCUMFLEX s> 015d LATIN SMALL LETTER S WITH CIRCUMFLEX S, 015e LATIN CAPITAL LETTER S WITH CEDILLA s, 015f LATIN SMALL LETTER S WITH CEDILLA S< 0160 LATIN CAPITAL LETTER S WITH CARON s< 0161 LATIN SMALL LETTER S WITH CARON T, 0162 LATIN CAPITAL LETTER T WITH CEDILLA t, 0163 LATIN SMALL LETTER T WITH CEDILLA T< 0164 LATIN CAPITAL LETTER T WITH CARON t< 0165 LATIN SMALL LETTER T WITH CARON T/ 0166 LATIN CAPITAL LETTER T WITH STROKE t/ 0167 LATIN SMALL LETTER T WITH STROKE U? 0168 LATIN CAPITAL LETTER U WITH TILDE u? 0169 LATIN SMALL LETTER U WITH TILDE U- 016a LATIN CAPITAL LETTER U WITH MACRON u- 016b LATIN SMALL LETTER U WITH MACRON U( 016c LATIN CAPITAL LETTER U WITH BREVE u( 016d LATIN SMALL LETTER U WITH BREVE U0 016e LATIN CAPITAL LETTER U WITH RING ABOVE u0 016f LATIN SMALL LETTER U WITH RING ABOVE U" 0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE u" 0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE U; 0172 LATIN CAPITAL LETTER U WITH OGONEK u; 0173 LATIN SMALL LETTER U WITH OGONEK W> 0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX w> 0175 LATIN SMALL LETTER W WITH CIRCUMFLEX Y> 0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX y> 0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX Y: 0178 LATIN CAPITAL LETTER Y WITH DIAERESIS Z' 0179 LATIN CAPITAL LETTER Z WITH ACUTE z' 017a LATIN SMALL LETTER Z WITH ACUTE Z. 017b LATIN CAPITAL LETTER Z WITH DOT ABOVE z. 017c LATIN SMALL LETTER Z WITH DOT ABOVE Z< 017d LATIN CAPITAL LETTER Z WITH CARON z< 017e LATIN SMALL LETTER Z WITH CARON O9 01a0 LATIN CAPITAL LETTER O WITH HORN o9 01a1 LATIN SMALL LETTER O WITH HORN OI 01a2 LATIN CAPITAL LETTER OI oi 01a3 LATIN SMALL LETTER OI yr 01a6 LATIN LETTER YR U9 01af LATIN CAPITAL LETTER U WITH HORN u9 01b0 LATIN SMALL LETTER U WITH HORN Z/ 01b5 LATIN CAPITAL LETTER Z WITH STROKE z/ 01b6 LATIN SMALL LETTER Z WITH STROKE ED 01b7 LATIN CAPITAL LETTER EZH A< 01cd LATIN CAPITAL LETTER A WITH CARON a< 01ce LATIN SMALL LETTER A WITH CARON Simonsen [Page 11] RFC 1345 Character Mnemonics & Character Sets June 1992 I< 01cf LATIN CAPITAL LETTER I WITH CARON i< 01d0 LATIN SMALL LETTER I WITH CARON O< 01d1 LATIN CAPITAL LETTER O WITH CARON o< 01d2 LATIN SMALL LETTER O WITH CARON U< 01d3 LATIN CAPITAL LETTER U WITH CARON u< 01d4 LATIN SMALL LETTER U WITH CARON U:- 01d5 LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON u:- 01d6 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON U:' 01d7 LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE u:' 01d8 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE U:< 01d9 LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON u:< 01da LATIN SMALL LETTER U WITH DIAERESIS AND CARON U:! 01db LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE u:! 01dc LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE A1 01de LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON a1 01df LATIN SMALL LETTER A WITH DIAERESIS AND MACRON A7 01e0 LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON a7 01e1 LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON A3 01e2 LATIN CAPITAL LETTER AE WITH MACRON a3 01e3 LATIN SMALL LETTER AE WITH MACRON G/ 01e4 LATIN CAPITAL LETTER G WITH STROKE g/ 01e5 LATIN SMALL LETTER G WITH STROKE G< 01e6 LATIN CAPITAL LETTER G WITH CARON g< 01e7 LATIN SMALL LETTER G WITH CARON K< 01e8 LATIN CAPITAL LETTER K WITH CARON k< 01e9 LATIN SMALL LETTER K WITH CARON O; 01ea LATIN CAPITAL LETTER O WITH OGONEK o; 01eb LATIN SMALL LETTER O WITH OGONEK O1 01ec LATIN CAPITAL LETTER O WITH OGONEK AND MACRON o1 01ed LATIN SMALL LETTER O WITH OGONEK AND MACRON EZ 01ee LATIN CAPITAL LETTER EZH WITH CARON ez 01ef LATIN SMALL LETTER EZH WITH CARON j< 01f0 LATIN SMALL LETTER J WITH CARON G' 01f4 LATIN CAPITAL LETTER G WITH ACUTE g' 01f5 LATIN SMALL LETTER G WITH ACUTE AA' 01fa LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE aa' 01fb LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE AE' 01fc LATIN CAPITAL LETTER AE WITH ACUTE ae' 01fd LATIN SMALL LETTER AE WITH ACUTE O/' 01fe LATIN CAPITAL LETTER O WITH STROKE AND ACUTE o/' 01ff LATIN SMALL LETTER O WITH STROKE AND ACUTE ;S 02bf MODIFIER LETTER LEFT HALF RING '< 02c7 CARON '( 02d8 BREVE '. 02d9 DOT ABOVE '0 02da RING ABOVE '; 02db OGONEK '" 02dd DOUBLE ACUTE ACCENT A% 0386 GREEK CAPITAL LETTER ALPHA WITH ACUTE E% 0388 GREEK CAPITAL LETTER EPSILON WITH ACUTE Y% 0389 GREEK CAPITAL LETTER ETA WITH ACUTE I% 038a GREEK CAPITAL LETTER IOTA WITH ACUTE O% 038c GREEK CAPITAL LETTER OMICRON WITH ACUTE Simonsen [Page 12] RFC 1345 Character Mnemonics & Character Sets June 1992 U% 038e GREEK CAPITAL LETTER UPSILON WITH ACUTE W% 038f GREEK CAPITAL LETTER OMEGA WITH ACUTE i3 0390 GREEK SMALL LETTER IOTA WITH ACUTE AND DIAERESIS A* 0391 GREEK CAPITAL LETTER ALPHA B* 0392 GREEK CAPITAL LETTER BETA G* 0393 GREEK CAPITAL LETTER GAMMA D* 0394 GREEK CAPITAL LETTER DELTA E* 0395 GREEK CAPITAL LETTER EPSILON Z* 0396 GREEK CAPITAL LETTER ZETA Y* 0397 GREEK CAPITAL LETTER ETA H* 0398 GREEK CAPITAL LETTER THETA I* 0399 GREEK CAPITAL LETTER IOTA K* 039a GREEK CAPITAL LETTER KAPPA L* 039b GREEK CAPITAL LETTER LAMDA M* 039c GREEK CAPITAL LETTER MU N* 039d GREEK CAPITAL LETTER NU C* 039e GREEK CAPITAL LETTER XI O* 039f GREEK CAPITAL LETTER OMICRON P* 03a0 GREEK CAPITAL LETTER PI R* 03a1 GREEK CAPITAL LETTER RHO S* 03a3 GREEK CAPITAL LETTER SIGMA T* 03a4 GREEK CAPITAL LETTER TAU U* 03a5 GREEK CAPITAL LETTER UPSILON F* 03a6 GREEK CAPITAL LETTER PHI X* 03a7 GREEK CAPITAL LETTER CHI Q* 03a8 GREEK CAPITAL LETTER PSI W* 03a9 GREEK CAPITAL LETTER OMEGA J* 03aa GREEK CAPITAL LETTER IOTA WITH DIAERESIS V* 03ab GREEK CAPITAL LETTER UPSILON WITH DIAERESIS a% 03ac GREEK SMALL LETTER ALPHA WITH ACUTE e% 03ad GREEK SMALL LETTER EPSILON WITH ACUTE y% 03ae GREEK SMALL LETTER ETA WITH ACUTE i% 03af GREEK SMALL LETTER IOTA WITH ACUTE u3 03b0 GREEK SMALL LETTER UPSILON WITH ACUTE AND DIAERESIS a* 03b1 GREEK SMALL LETTER ALPHA b* 03b2 GREEK SMALL LETTER BETA g* 03b3 GREEK SMALL LETTER GAMMA d* 03b4 GREEK SMALL LETTER DELTA e* 03b5 GREEK SMALL LETTER EPSILON z* 03b6 GREEK SMALL LETTER ZETA y* 03b7 GREEK SMALL LETTER ETA h* 03b8 GREEK SMALL LETTER THETA i* 03b9 GREEK SMALL LETTER IOTA k* 03ba GREEK SMALL LETTER KAPPA l* 03bb GREEK SMALL LETTER LAMDA m* 03bc GREEK SMALL LETTER MU n* 03bd GREEK SMALL LETTER NU c* 03be GREEK SMALL LETTER XI o* 03bf GREEK SMALL LETTER OMICRON p* 03c0 GREEK SMALL LETTER PI r* 03c1 GREEK SMALL LETTER RHO *s 03c2 GREEK SMALL LETTER FINAL SIGMA s* 03c3 GREEK SMALL LETTER SIGMA Simonsen [Page 13] RFC 1345 Character Mnemonics & Character Sets June 1992 t* 03c4 GREEK SMALL LETTER TAU u* 03c5 GREEK SMALL LETTER UPSILON f* 03c6 GREEK SMALL LETTER PHI x* 03c7 GREEK SMALL LETTER CHI q* 03c8 GREEK SMALL LETTER PSI w* 03c9 GREEK SMALL LETTER OMEGA j* 03ca GREEK SMALL LETTER IOTA WITH DIAERESIS v* 03cb GREEK SMALL LETTER UPSILON WITH DIAERESIS o% 03cc GREEK SMALL LETTER OMICRON WITH ACUTE u% 03cd GREEK SMALL LETTER UPSILON WITH ACUTE w% 03ce GREEK SMALL LETTER OMEGA WITH ACUTE 'G 03d8 GREEK NUMERAL SIGN ,G 03d9 GREEK LOWER NUMERAL SIGN T3 03da GREEK CAPITAL LETTER STIGMA t3 03db GREEK SMALL LETTER STIGMA M3 03dc GREEK CAPITAL LETTER DIGAMMA m3 03dd GREEK SMALL LETTER DIGAMMA K3 03de GREEK CAPITAL LETTER KOPPA k3 03df GREEK SMALL LETTER KOPPA P3 03e0 GREEK CAPITAL LETTER SAMPI p3 03e1 GREEK SMALL LETTER SAMPI '% 03f4 ACUTE ACCENT AND DIAERESIS (Tonos and Dialytika) j3 03f5 GREEK IOTA BELOW IO 0401 CYRILLIC CAPITAL LETTER IO D% 0402 CYRILLIC CAPITAL LETTER DJE (Serbocroatian) G% 0403 CYRILLIC CAPITAL LETTER GJE (Macedonian) IE 0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE DS 0405 CYRILLIC CAPITAL LETTER DZE (Macedonian) II 0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I YI 0407 CYRILLIC CAPITAL LETTER YI (Ukrainian) J% 0408 CYRILLIC CAPITAL LETTER JE LJ 0409 CYRILLIC CAPITAL LETTER LJE NJ 040a CYRILLIC CAPITAL LETTER NJE Ts 040b CYRILLIC CAPITAL LETTER TSHE (Serbocroatian) KJ 040c CYRILLIC CAPITAL LETTER KJE (Macedonian) V% 040e CYRILLIC CAPITAL LETTER SHORT U (Byelorussian) DZ 040f CYRILLIC CAPITAL LETTER DZHE A= 0410 CYRILLIC CAPITAL LETTER A B= 0411 CYRILLIC CAPITAL LETTER BE V= 0412 CYRILLIC CAPITAL LETTER VE G= 0413 CYRILLIC CAPITAL LETTER GHE D= 0414 CYRILLIC CAPITAL LETTER DE E= 0415 CYRILLIC CAPITAL LETTER IE Z% 0416 CYRILLIC CAPITAL LETTER ZHE Z= 0417 CYRILLIC CAPITAL LETTER ZE I= 0418 CYRILLIC CAPITAL LETTER I J= 0419 CYRILLIC CAPITAL LETTER SHORT I K= 041a CYRILLIC CAPITAL LETTER KA L= 041b CYRILLIC CAPITAL LETTER EL M= 041c CYRILLIC CAPITAL LETTER EM N= 041d CYRILLIC CAPITAL LETTER EN O= 041e CYRILLIC CAPITAL LETTER O P= 041f CYRILLIC CAPITAL LETTER PE Simonsen [Page 14] RFC 1345 Character Mnemonics & Character Sets June 1992 R= 0420 CYRILLIC CAPITAL LETTER ER S= 0421 CYRILLIC CAPITAL LETTER ES T= 0422 CYRILLIC CAPITAL LETTER TE U= 0423 CYRILLIC CAPITAL LETTER U F= 0424 CYRILLIC CAPITAL LETTER EF H= 0425 CYRILLIC CAPITAL LETTER HA C= 0426 CYRILLIC CAPITAL LETTER TSE C% 0427 CYRILLIC CAPITAL LETTER CHE S% 0428 CYRILLIC CAPITAL LETTER SHA Sc 0429 CYRILLIC CAPITAL LETTER SHCHA =" 042a CYRILLIC CAPITAL LETTER HARD SIGN Y= 042b CYRILLIC CAPITAL LETTER YERU %" 042c CYRILLIC CAPITAL LETTER SOFT SIGN JE 042d CYRILLIC CAPITAL LETTER E JU 042e CYRILLIC CAPITAL LETTER YU JA 042f CYRILLIC CAPITAL LETTER YA a= 0430 CYRILLIC SMALL LETTER A b= 0431 CYRILLIC SMALL LETTER BE v= 0432 CYRILLIC SMALL LETTER VE g= 0433 CYRILLIC SMALL LETTER GHE d= 0434 CYRILLIC SMALL LETTER DE e= 0435 CYRILLIC SMALL LETTER IE z% 0436 CYRILLIC SMALL LETTER ZHE z= 0437 CYRILLIC SMALL LETTER ZE i= 0438 CYRILLIC SMALL LETTER I j= 0439 CYRILLIC SMALL LETTER SHORT I k= 043a CYRILLIC SMALL LETTER KA l= 043b CYRILLIC SMALL LETTER EL m= 043c CYRILLIC SMALL LETTER EM n= 043d CYRILLIC SMALL LETTER EN o= 043e CYRILLIC SMALL LETTER O p= 043f CYRILLIC SMALL LETTER PE r= 0440 CYRILLIC SMALL LETTER ER s= 0441 CYRILLIC SMALL LETTER ES t= 0442 CYRILLIC SMALL LETTER TE u= 0443 CYRILLIC SMALL LETTER U f= 0444 CYRILLIC SMALL LETTER EF h= 0445 CYRILLIC SMALL LETTER HA c= 0446 CYRILLIC SMALL LETTER TSE c% 0447 CYRILLIC SMALL LETTER CHE s% 0448 CYRILLIC SMALL LETTER SHA sc 0449 CYRILLIC SMALL LETTER SHCHA =' 044a CYRILLIC SMALL LETTER HARD SIGN y= 044b CYRILLIC SMALL LETTER YERU %' 044c CYRILLIC SMALL LETTER SOFT SIGN je 044d CYRILLIC SMALL LETTER E ju 044e CYRILLIC SMALL LETTER YU ja 044f CYRILLIC SMALL LETTER YA io 0451 CYRILLIC SMALL LETTER IO d% 0452 CYRILLIC SMALL LETTER DJE (Serbocroatian) g% 0453 CYRILLIC SMALL LETTER GJE (Macedonian) ie 0454 CYRILLIC SMALL LETTER UKRAINIAN IE ds 0455 CYRILLIC SMALL LETTER DZE (Macedonian) Simonsen [Page 15] RFC 1345 Character Mnemonics & Character Sets June 1992 ii 0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I yi 0457 CYRILLIC SMALL LETTER YI (Ukrainian) j% 0458 CYRILLIC SMALL LETTER JE lj 0459 CYRILLIC SMALL LETTER LJE nj 045a CYRILLIC SMALL LETTER NJE ts 045b CYRILLIC SMALL LETTER TSHE (Serbocroatian) kj 045c CYRILLIC SMALL LETTER KJE (Macedonian) v% 045e CYRILLIC SMALL LETTER SHORT U (Byelorussian) dz 045f CYRILLIC SMALL LETTER DZHE Y3 0462 CYRILLIC CAPITAL LETTER YAT y3 0463 CYRILLIC SMALL LETTER YAT O3 046a CYRILLIC CAPITAL LETTER BIG YUS o3 046b CYRILLIC SMALL LETTER BIG YUS F3 0472 CYRILLIC CAPITAL LETTER FITA f3 0473 CYRILLIC SMALL LETTER FITA V3 0474 CYRILLIC CAPITAL LETTER IZHITSA v3 0475 CYRILLIC SMALL LETTER IZHITSA C3 0480 CYRILLIC CAPITAL LETTER KOPPA c3 0481 CYRILLIC SMALL LETTER KOPPA G3 0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN g3 0491 CYRILLIC SMALL LETTER GHE WITH UPTURN A+ 05d0 HEBREW LETTER ALEF B+ 05d1 HEBREW LETTER BET G+ 05d2 HEBREW LETTER GIMEL D+ 05d3 HEBREW LETTER DALET H+ 05d4 HEBREW LETTER HE W+ 05d5 HEBREW LETTER VAV Z+ 05d6 HEBREW LETTER ZAYIN X+ 05d7 HEBREW LETTER HET Tj 05d8 HEBREW LETTER TET J+ 05d9 HEBREW LETTER YOD K% 05da HEBREW LETTER FINAL KAF K+ 05db HEBREW LETTER KAF L+ 05dc HEBREW LETTER LAMED M% 05dd HEBREW LETTER FINAL MEM M+ 05de HEBREW LETTER MEM N% 05df HEBREW LETTER FINAL NUN N+ 05e0 HEBREW LETTER NUN S+ 05e1 HEBREW LETTER SAMEKH E+ 05e2 HEBREW LETTER AYIN P% 05e3 HEBREW LETTER FINAL PE P+ 05e4 HEBREW LETTER PE Zj 05e5 HEBREW LETTER FINAL TSADI ZJ 05e6 HEBREW LETTER TSADI Q+ 05e7 HEBREW LETTER QOF R+ 05e8 HEBREW LETTER RESH Sh 05e9 HEBREW LETTER SHIN T+ 05ea HEBREW LETTER TAV ,+ 060c ARABIC COMMA ;+ 061b ARABIC SEMICOLON ?+ 061f ARABIC QUESTION MARK H' 0621 ARABIC LETTER HAMZA aM 0622 ARABIC LETTER ALEF WITH MADDA ABOVE Simonsen [Page 16] RFC 1345 Character Mnemonics & Character Sets June 1992 aH 0623 ARABIC LETTER ALEF WITH HAMZA ABOVE wH 0624 ARABIC LETTER WAW WITH HAMZA ABOVE ah 0625 ARABIC LETTER ALEF WITH HAMZA BELOW yH 0626 ARABIC LETTER YEH WITH HAMZA ABOVE a+ 0627 ARABIC LETTER ALEF b+ 0628 ARABIC LETTER BEH tm 0629 ARABIC LETTER TEH MARBUTA t+ 062a ARABIC LETTER TEH tk 062b ARABIC LETTER THEH g+ 062c ARABIC LETTER JEEM hk 062d ARABIC LETTER HAH x+ 062e ARABIC LETTER KHAH d+ 062f ARABIC LETTER DAL dk 0630 ARABIC LETTER THAL r+ 0631 ARABIC LETTER REH z+ 0632 ARABIC LETTER ZAIN s+ 0633 ARABIC LETTER SEEN sn 0634 ARABIC LETTER SHEEN c+ 0635 ARABIC LETTER SAD dd 0636 ARABIC LETTER DAD tj 0637 ARABIC LETTER TAH zH 0638 ARABIC LETTER ZAH e+ 0639 ARABIC LETTER AIN i+ 063a ARABIC LETTER GHAIN ++ 0640 ARABIC TATWEEL f+ 0641 ARABIC LETTER FEH q+ 0642 ARABIC LETTER QAF k+ 0643 ARABIC LETTER KAF l+ 0644 ARABIC LETTER LAM m+ 0645 ARABIC LETTER MEEM n+ 0646 ARABIC LETTER NOON h+ 0647 ARABIC LETTER HEH w+ 0648 ARABIC LETTER WAW j+ 0649 ARABIC LETTER ALEF MAKSURA y+ 064a ARABIC LETTER YEH :+ 064b ARABIC FATHATAN "+ 064c ARABIC DAMMATAN =+ 064d ARABIC KASRATAN /+ 064e ARABIC FATHA '+ 064f ARABIC DAMMA 1+ 0650 ARABIC KASRA 3+ 0651 ARABIC SHADDA 0+ 0652 ARABIC SUKUN aS 0670 SUPERSCRIPT ARABIC LETTER ALEF p+ 067e ARABIC LETTER PEH v+ 06a4 ARABIC LETTER VEH gf 06af ARABIC LETTER GAF 0a 06f0 EASTERN ARABIC-INDIC DIGIT ZERO 1a 06f1 EASTERN ARABIC-INDIC DIGIT ONE 2a 06f2 EASTERN ARABIC-INDIC DIGIT TWO 3a 06f3 EASTERN ARABIC-INDIC DIGIT THREE 4a 06f4 EASTERN ARABIC-INDIC DIGIT FOUR 5a 06f5 EASTERN ARABIC-INDIC DIGIT FIVE Simonsen [Page 17] RFC 1345 Character Mnemonics & Character Sets June 1992 6a 06f6 EASTERN ARABIC-INDIC DIGIT SIX 7a 06f7 EASTERN ARABIC-INDIC DIGIT SEVEN 8a 06f8 EASTERN ARABIC-INDIC DIGIT EIGHT 9a 06f9 EASTERN ARABIC-INDIC DIGIT NINE A-0 1e00 LATIN CAPITAL LETTER A WITH RING BELOW a-0 1e01 LATIN SMALL LETTER A WITH RING BELOW B. 1e02 LATIN CAPITAL LETTER B WITH DOT ABOVE b. 1e03 LATIN SMALL LETTER B WITH DOT ABOVE B-. 1e04 LATIN CAPITAL LETTER B WITH DOT BELOW b-. 1e05 LATIN SMALL LETTER B WITH DOT BELOW B_ 1e06 LATIN CAPITAL LETTER B WITH LINE BELOW b_ 1e07 LATIN SMALL LETTER B WITH LINE BELOW C,' 1e08 LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE c,' 1e09 LATIN SMALL LETTER C WITH CEDILLA AND ACUTE D. 1e0a LATIN CAPITAL LETTER D WITH DOT ABOVE d. 1e0b LATIN SMALL LETTER D WITH DOT ABOVE D-. 1e0c LATIN CAPITAL LETTER D WITH DOT BELOW d-. 1e0d LATIN SMALL LETTER D WITH DOT BELOW D_ 1e0e LATIN CAPITAL LETTER D WITH LINE BELOW d_ 1e0f LATIN SMALL LETTER D WITH LINE BELOW D, 1e10 LATIN CAPITAL LETTER D WITH CEDILLA d, 1e11 LATIN SMALL LETTER D WITH CEDILLA D-> 1e12 LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW d-> 1e13 LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW E-! 1e14 LATIN CAPITAL LETTER E WITH MACRON AND GRAVE e-! 1e15 LATIN SMALL LETTER E WITH MACRON AND GRAVE E-' 1e16 LATIN CAPITAL LETTER E WITH MACRON AND ACUTE e-' 1e17 LATIN SMALL LETTER E WITH MACRON AND ACUTE E-> 1e18 LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW e-> 1e19 LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW E-? 1e1a LATIN CAPITAL LETTER E WITH TILDE BELOW e-? 1e1b LATIN SMALL LETTER E WITH TILDE BELOW E,( 1e1c LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE e,( 1e1d LATIN SMALL LETTER E WITH CEDILLA AND BREVE F. 1e1e LATIN CAPITAL LETTER F WITH DOT ABOVE f. 1e1f LATIN SMALL LETTER F WITH DOT ABOVE G- 1e20 LATIN CAPITAL LETTER G WITH MACRON g- 1e21 LATIN SMALL LETTER G WITH MACRON H. 1e22 LATIN CAPITAL LETTER H WITH DOT ABOVE h. 1e23 LATIN SMALL LETTER H WITH DOT ABOVE H-. 1e24 LATIN CAPITAL LETTER H WITH DOT BELOW h-. 1e25 LATIN SMALL LETTER H WITH DOT BELOW H: 1e26 LATIN CAPITAL LETTER H WITH DIAERESIS h: 1e27 LATIN SMALL LETTER H WITH DIAERESIS H, 1e28 LATIN CAPITAL LETTER H WITH CEDILLA h, 1e29 LATIN SMALL LETTER H WITH CEDILLA H-( 1e2a LATIN CAPITAL LETTER H WITH BREVE BELOW h-( 1e2b LATIN SMALL LETTER H WITH BREVE BELOW I-? 1e2c LATIN CAPITAL LETTER I WITH TILDE BELOW i-? 1e2d LATIN SMALL LETTER I WITH TILDE BELOW I:' 1e2e LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE i:' 1e2f LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE K' 1e30 LATIN CAPITAL LETTER K WITH ACUTE Simonsen [Page 18] RFC 1345 Character Mnemonics & Character Sets June 1992 k' 1e31 LATIN SMALL LETTER K WITH ACUTE K-. 1e32 LATIN CAPITAL LETTER K WITH DOT BELOW k-. 1e33 LATIN SMALL LETTER K WITH DOT BELOW K_ 1e34 LATIN CAPITAL LETTER K WITH LINE BELOW k_ 1e35 LATIN SMALL LETTER K WITH LINE BELOW L-. 1e36 LATIN CAPITAL LETTER L WITH DOT BELOW l-. 1e37 LATIN SMALL LETTER L WITH DOT BELOW L--. 1e38 LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON l--. 1e39 LATIN SMALL LETTER L WITH DOT BELOW AND MACRON L_ 1e3a LATIN CAPITAL LETTER L WITH LINE BELOW l_ 1e3b LATIN SMALL LETTER L WITH LINE BELOW L-> 1e3c LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW l-> 1e3d LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW M' 1e3e LATIN CAPITAL LETTER M WITH ACUTE m' 1e3f LATIN SMALL LETTER M WITH ACUTE M. 1e40 LATIN CAPITAL LETTER M WITH DOT ABOVE m. 1e41 LATIN SMALL LETTER M WITH DOT ABOVE M-. 1e42 LATIN CAPITAL LETTER M WITH DOT BELOW m-. 1e43 LATIN SMALL LETTER M WITH DOT BELOW N. 1e44 LATIN CAPITAL LETTER N WITH DOT ABOVE n. 1e45 LATIN SMALL LETTER N WITH DOT ABOVE N-. 1e46 LATIN CAPITAL LETTER N WITH DOT BELOW n-. 1e47 LATIN SMALL LETTER N WITH DOT BELOW N_ 1e48 LATIN CAPITAL LETTER N WITH LINE BELOW n_ 1e49 LATIN SMALL LETTER N WITH LINE BELOW N-> 1e4a LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW N-> 1e4b LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW O?' 1e4c LATIN CAPITAL LETTER O WITH TILDE AND ACUTE o?' 1e4d LATIN SMALL LETTER O WITH TILDE AND ACUTE O?: 1e4e LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS o?: 1e4f LATIN SMALL LETTER O WITH TILDE AND DIAERESIS O-! 1e50 LATIN CAPITAL LETTER O WITH MACRON AND GRAVE o-! 1e51 LATIN SMALL LETTER O WITH MACRON AND GRAVE O-' 1e52 LATIN CAPITAL LETTER O WITH MACRON AND ACUTE o-' 1e53 LATIN SMALL LETTER O WITH MACRON AND ACUTE P' 1e54 LATIN CAPITAL LETTER P WITH ACUTE p' 1e55 LATIN SMALL LETTER P WITH ACUTE P. 1e56 LATIN CAPITAL LETTER P WITH DOT ABOVE p. 1e57 LATIN SMALL LETTER P WITH DOT ABOVE R. 1e58 LATIN CAPITAL LETTER R WITH DOT ABOVE r. 1e59 LATIN SMALL LETTER R WITH DOT ABOVE R-. 1e5a LATIN CAPITAL LETTER R WITH DOT BELOW r-. 1e5b LATIN SMALL LETTER R WITH DOT BELOW R--. 1e5c LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON r--. 1e5d LATIN SMALL LETTER R WITH DOT BELOW AND MACRON R_ 1e5e LATIN CAPITAL LETTER R WITH LINE BELOW r_ 1e5f LATIN SMALL LETTER R WITH LINE BELOW S. 1e60 LATIN CAPITAL LETTER S WITH DOT ABOVE s. 1e61 LATIN SMALL LETTER S WITH DOT ABOVE S-. 1e62 LATIN CAPITAL LETTER S WITH DOT BELOW s-. 1e63 LATIN SMALL LETTER S WITH DOT BELOW S'. 1e64 LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE s'. 1e65 LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE Simonsen [Page 19] RFC 1345 Character Mnemonics & Character Sets June 1992 S<. 1e66 LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE s<. 1e67 LATIN SMALL LETTER S WITH CARON AND DOT ABOVE S.-. 1e68 LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE S.-. 1e69 LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE T. 1e6a LATIN CAPITAL LETTER T WITH DOT ABOVE t. 1e6b LATIN SMALL LETTER T WITH DOT ABOVE T-. 1e6c LATIN CAPITAL LETTER T WITH DOT BELOW t-. 1e6d LATIN SMALL LETTER T WITH DOT BELOW T_ 1e6e LATIN CAPITAL LETTER T WITH LINE BELOW t_ 1e6f LATIN SMALL LETTER T WITH LINE BELOW T-> 1e70 LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW t-> 1e71 LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW U--: 1e72 LATIN CAPITAL LETTER U WITH DIAERESIS BELOW u--: 1e73 LATIN SMALL LETTER U WITH DIAERESIS BELOW U-? 1e74 LATIN CAPITAL LETTER U WITH TILDE BELOW u-? 1e75 LATIN SMALL LETTER U WITH TILDE BELOW U-> 1e76 LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW u-> 1e77 LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW U?' 1e78 LATIN CAPITAL LETTER U WITH TILDE AND ACUTE u?' 1e79 LATIN SMALL LETTER U WITH TILDE AND ACUTE U-: 1e7a LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS u-: 1e7b LATIN SMALL LETTER U WITH MACRON AND DIAERESIS V? 1e7c LATIN CAPITAL LETTER V WITH TILDE v? 1e7d LATIN SMALL LETTER V WITH TILDE V-. 1e7e LATIN CAPITAL LETTER V WITH DOT BELOW v-. 1e7f LATIN SMALL LETTER V WITH DOT BELOW W! 1e80 LATIN CAPITAL LETTER W WITH GRAVE w! 1e81 LATIN SMALL LETTER W WITH GRAVE W' 1e82 LATIN CAPITAL LETTER W WITH ACUTE w' 1e83 LATIN SMALL LETTER W WITH ACUTE W: 1e84 LATIN CAPITAL LETTER W WITH DIAERESIS w: 1e85 LATIN SMALL LETTER W WITH DIAERESIS W. 1e86 LATIN CAPITAL LETTER W WITH DOT ABOVE w. 1e87 LATIN SMALL LETTER W WITH DOT ABOVE W-. 1e88 LATIN CAPITAL LETTER W WITH DOT BELOW w-. 1e89 LATIN SMALL LETTER W WITH DOT BELOW X. 1e8a LATIN CAPITAL LETTER X WITH DOT ABOVE x. 1e8b LATIN SMALL LETTER X WITH DOT ABOVE X: 1e8c LATIN CAPITAL LETTER X WITH DIAERESIS x: 1e8d LATIN SMALL LETTER X WITH DIAERESIS Y. 1e8e LATIN CAPITAL LETTER Y WITH DOT ABOVE y. 1e8f LATIN SMALL LETTER Y WITH DOT ABOVE Z> 1e90 LATIN CAPITAL LETTER Z WITH CIRCUMFLEX z> 1e91 LATIN SMALL LETTER Z WITH CIRCUMFLEX Z-. 1e92 LATIN CAPITAL LETTER Z WITH DOT BELOW z-. 1e93 LATIN SMALL LETTER Z WITH DOT BELOW Z_ 1e94 LATIN CAPITAL LETTER Z WITH LINE BELOW z_ 1e95 LATIN SMALL LETTER Z WITH LINE BELOW h_ 1e96 LATIN SMALL LETTER H WITH LINE BELOW t: 1e97 LATIN SMALL LETTER T WITH DIAERESIS w0 1e98 LATIN SMALL LETTER W WITH RING ABOVE y0 1e99 LATIN SMALL LETTER Y WITH RING ABOVE A-. 1ea0 LATIN CAPITAL LETTER A WITH DOT BELOW Simonsen [Page 20] RFC 1345 Character Mnemonics & Character Sets June 1992 a-. 1ea1 LATIN SMALL LETTER A WITH DOT BELOW A2 1ea2 LATIN CAPITAL LETTER A WITH HOOK ABOVE a2 1ea3 LATIN SMALL LETTER A WITH HOOK ABOVE A>' 1ea4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE a>' 1ea5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE A>! 1ea6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE a>! 1ea7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE A>2 1ea8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE a>2 1ea9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE A>? 1eaa LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE a>? 1eab LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE A>-. 1eac LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW a>-. 1ead LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW A(' 1eae LATIN CAPITAL LETTER A WITH BREVE AND ACUTE a(' 1eaf LATIN SMALL LETTER A WITH BREVE AND ACUTE A(! 1eb0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE a(! 1eb1 LATIN SMALL LETTER A WITH BREVE AND GRAVE A(2 1eb2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE a(2 1eb3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE A(? 1eb4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE a(? 1eb5 LATIN SMALL LETTER A WITH BREVE AND TILDE A(-. 1eb6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW a(-. 1eb7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW E-. 1eb8 LATIN CAPITAL LETTER E WITH DOT BELOW e-. 1eb9 LATIN SMALL LETTER E WITH DOT BELOW E2 1eba LATIN CAPITAL LETTER E WITH HOOK ABOVE e2 1ebb LATIN SMALL LETTER E WITH HOOK ABOVE E? 1ebc LATIN CAPITAL LETTER E WITH TILDE e? 1ebd LATIN SMALL LETTER E WITH TILDE E>' 1ebe LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE e>' 1ebf LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE E>! 1ec0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE e>! 1ec1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE E>2 1ec2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE e>2 1ec3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE E>? 1ec4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE e>? 1ec5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE E>-. 1ec6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW e>-. 1ec7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW I2 1ec8 LATIN CAPITAL LETTER I WITH HOOK ABOVE i2 1ec9 LATIN SMALL LETTER I WITH HOOK ABOVE I-. 1eca LATIN CAPITAL LETTER I WITH DOT BELOW i-. 1ecb LATIN SMALL LETTER I WITH DOT BELOW O-. 1ecc LATIN CAPITAL LETTER O WITH DOT BELOW o-. 1ecd LATIN SMALL LETTER O WITH DOT BELOW O2 1ece LATIN CAPITAL LETTER O WITH HOOK ABOVE o2 1ecf LATIN SMALL LETTER O WITH HOOK ABOVE O>' 1ed0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE o>' 1ed1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE O>! 1ed2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE o>! 1ed3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE O>2 1ed4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE o>2 1ed5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE Simonsen [Page 21] RFC 1345 Character Mnemonics & Character Sets June 1992 O>? 1ed6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE o>? 1ed7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE O>-. 1ed8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW o>-. 1ed9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW O9' 1eda LATIN CAPITAL LETTER O WITH HORN AND ACUTE o9' 1edb LATIN SMALL LETTER O WITH HORN AND ACUTE O9! 1edc LATIN CAPITAL LETTER O WITH HORN AND GRAVE o9! 1edd LATIN SMALL LETTER O WITH HORN AND GRAVE O92 1ede LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE o92 1edf LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE O9? 1ee0 LATIN CAPITAL LETTER O WITH HORN AND TILDE o9? 1ee1 LATIN SMALL LETTER O WITH HORN AND TILDE O9-. 1ee2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW o9-. 1ee3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW U-. 1ee4 LATIN CAPITAL LETTER U WITH DOT BELOW u-. 1ee5 LATIN SMALL LETTER U WITH DOT BELOW U2 1ee6 LATIN CAPITAL LETTER U WITH HOOK ABOVE u2 1ee7 LATIN SMALL LETTER U WITH HOOK ABOVE U9' 1ee8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE u9' 1ee9 LATIN SMALL LETTER U WITH HORN AND ACUTE U9! 1eea LATIN CAPITAL LETTER U WITH HORN AND GRAVE u9! 1eeb LATIN SMALL LETTER U WITH HORN AND GRAVE U92 1eec LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE u92 1eed LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE U9? 1eee LATIN CAPITAL LETTER U WITH HORN AND TILDE u9? 1eef LATIN SMALL LETTER U WITH HORN AND TILDE U9-. 1ef0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW u9-. 1ef1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW Y! 1ef2 LATIN CAPITAL LETTER Y WITH GRAVE y! 1ef3 LATIN SMALL LETTER Y WITH GRAVE Y-. 1ef4 LATIN CAPITAL LETTER Y WITH DOT BELOW y-. 1ef5 LATIN SMALL LETTER Y WITH DOT BELOW Y2 1ef6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE y2 1ef7 LATIN SMALL LETTER Y WITH HOOK ABOVE Y? 1ef8 LATIN CAPITAL LETTER Y WITH TILDE y? 1ef9 LATIN SMALL LETTER Y WITH TILDE ;' 1f00 GREEK DASIA AND ACUTE ACCENT ,' 1f01 GREEK PSILI AND ACUTE ACCENT ;! 1f02 GREEK DASIA AND VARIA ,! 1f03 GREEK PSILI AND VARIA ?; 1f04 GREEK DASIA AND PERISPOMENI ?, 1f05 GREEK PSILI AND PERISPOMENI !: 1f06 GREEK DIAERESIS AND VARIA ?: 1f07 GREEK DIAERESIS AND PERISPOMENI 1N 2002 EN SPACE 1M 2003 EM SPACE 3M 2004 THREE-PER-EM SPACE 4M 2005 FOUR-PER-EM SPACE 6M 2006 SIX-PER-EM SPACE 1T 2009 THIN SPACE 1H 200a HAIR SPACE -1 2010 HYPHEN -N 2013 EN DASH Simonsen [Page 22] RFC 1345 Character Mnemonics & Character Sets June 1992 -M 2014 EM DASH -3 2015 HORIZONTAL BAR !2 2016 DOUBLE VERTICAL LINE =2 2017 DOUBLE LOW LINE '6 2018 LEFT SINGLE QUOTATION MARK '9 2019 RIGHT SINGLE QUOTATION MARK .9 201a SINGLE LOW-9 QUOTATION MARK 9' 201b SINGLE HIGH-REVERSED-9 QUOTATION MARK "6 201c LEFT DOUBLE QUOTATION MARK "9 201d RIGHT DOUBLE QUOTATION MARK :9 201e DOUBLE LOW-9 QUOTATION MARK 9" 201f DOUBLE HIGH-REVERSED-9 QUOTATION MARK /- 2020 DAGGER /= 2021 DOUBLE DAGGER .. 2025 TWO DOT LEADER %0 2030 PER MILLE SIGN 1' 2032 PRIME 2' 2033 DOUBLE PRIME 3' 2034 TRIPLE PRIME 1" 2035 REVERSED PRIME 2" 2036 REVERSED DOUBLE PRIME 3" 2037 REVERSED TRIPLE PRIME Ca 2038 CARET <1 2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK >1 203a SINGLE RIGHT-POINTING ANGLE QUOTATION MARK :X 203b REFERENCE MARK !*2 203c DOUBLE EXCLAMATION MARK '- 203e OVERLINE /f 2044 FRACTION SLASH 0S 2070 SUPERSCRIPT DIGIT ZERO 4S 2074 SUPERSCRIPT DIGIT FOUR 5S 2075 SUPERSCRIPT DIGIT FIVE 6S 2076 SUPERSCRIPT DIGIT SIX 7S 2077 SUPERSCRIPT DIGIT SEVEN 8S 2078 SUPERSCRIPT DIGIT EIGHT 9S 2079 SUPERSCRIPT DIGIT NINE +S 207a SUPERSCRIPT PLUS SIGN -S 207b SUPERSCRIPT MINUS =S 207c SUPERSCRIPT EQUALS SIGN (S 207d SUPERSCRIPT LEFT PARENTHESIS )S 207e SUPERSCRIPT RIGHT PARENTHESIS nS 207f SUPERSCRIPT LATIN SMALL LETTER N 0s 2080 SUBSCRIPT DIGIT ZERO 1s 2081 SUBSCRIPT DIGIT ONE 2s 2082 SUBSCRIPT DIGIT TWO 3s 2083 SUBSCRIPT DIGIT THREE 4s 2084 SUBSCRIPT DIGIT FOUR 5s 2085 SUBSCRIPT DIGIT FIVE 6s 2086 SUBSCRIPT DIGIT SIX 7s 2087 SUBSCRIPT DIGIT SEVEN 8s 2088 SUBSCRIPT DIGIT EIGHT 9s 2089 SUBSCRIPT DIGIT NINE +s 208a SUBSCRIPT PLUS SIGN Simonsen [Page 23] RFC 1345 Character Mnemonics & Character Sets June 1992 -s 208b SUBSCRIPT MINUS =s 208c SUBSCRIPT EQUALS SIGN (s 208d SUBSCRIPT LEFT PARENTHESIS )s 208e SUBSCRIPT RIGHT PARENTHESIS Li 20a4 LIRA SIGN Pt 20a7 PESETA SIGN W= 20a9 WON SIGN oC 2103 DEGREE CENTIGRADE co 2105 CARE OF oF 2109 DEGREE FAHRENHEIT N0 2116 NUMERO SIGN PO 2117 SOUND RECORDING COPYRIGHT Rx 211e PRESCRIPTION TAKE SM 2120 SERVICE MARK TM 2122 TRADE MARK SIGN Om 2126 OHM SIGN AO 212b ANGSTROEM SIGN 13 2153 VULGAR FRACTION ONE THIRD 23 2154 VULGAR FRACTION TWO THIRDS 15 2155 VULGAR FRACTION ONE FIFTH 25 2156 VULGAR FRACTION TWO FIFTHS 35 2157 VULGAR FRACTION THREE FIFTHS 45 2158 VULGAR FRACTION FOUR FIFTHS 16 2159 VULGAR FRACTION ONE SIXTH 56 215a VULGAR FRACTION FIVE SIXTHS 18 215b VULGAR FRACTION ONE EIGHTH 38 215c VULGAR FRACTION THREE EIGHTHS 58 215d VULGAR FRACTION FIVE EIGHTHS 78 215e VULGAR FRACTION SEVEN EIGHTHS 1R 2160 ROMAN NUMERAL ONE 2R 2161 ROMAN NUMERAL TWO 3R 2162 ROMAN NUMERAL THREE 4R 2163 ROMAN NUMERAL FOUR 5R 2164 ROMAN NUMERAL FIVE 6R 2165 ROMAN NUMERAL SIX 7R 2166 ROMAN NUMERAL SEVEN 8R 2167 ROMAN NUMERAL EIGHT 9R 2168 ROMAN NUMERAL NINE aR 2169 ROMAN NUMERAL TEN bR 216a ROMAN NUMERAL ELEVEN cR 216b ROMAN NUMERAL TWELVE 50R 216c ROMAN NUMERAL FIFTY 100R 216d ROMAN NUMERAL ONE HUNDRED 500R 216e ROMAN NUMERAL FIVE HUNDRED 1000R 216f ROMAN NUMERAL ONE THOUSAND 1r 2170 SMALL ROMAN NUMERAL ONE 2r 2171 SMALL ROMAN NUMERAL TWO 3r 2172 SMALL ROMAN NUMERAL THREE 4r 2173 SMALL ROMAN NUMERAL FOUR 5r 2174 SMALL ROMAN NUMERAL FIVE 6r 2175 SMALL ROMAN NUMERAL SIX 7r 2176 SMALL ROMAN NUMERAL SEVEN 8r 2177 SMALL ROMAN NUMERAL EIGHT Simonsen [Page 24] RFC 1345 Character Mnemonics & Character Sets June 1992 9r 2178 SMALL ROMAN NUMERAL NINE ar 2179 SMALL ROMAN NUMERAL TEN br 217a SMALL ROMAN NUMERAL ELEVEN cr 217b SMALL ROMAN NUMERAL TWELVE 50r 217c SMALL ROMAN NUMERAL FIFTY 100r 217d SMALL ROMAN NUMERAL ONE HUNDRED 500r 217e SMALL ROMAN NUMERAL FIVE HUNDRED 1000r 217f SMALL ROMAN NUMERAL ONE THOUSAND 1000RCD 2180 ROMAN NUMERAL ONE THOUSAND C D 5000R 2181 ROMAN NUMERAL FIVE THOUSAND 10000R 2182 ROMAN NUMERAL TEN THOUSAND <- 2190 LEFTWARDS ARROW -! 2191 UPWARDS ARROW -> 2192 RIGHTWARDS ARROW -v 2193 DOWNWARDS ARROW <> 2194 LEFT RIGHT ARROW UD 2195 UP DOWN ARROW 2197 NORTH EAST ARROW !!> 2198 SOUTH EAST ARROW 21d2 RIGHTWARDS DOUBLE ARROW == 21d4 LEFT RIGHT DOUBLE ARROW FA 2200 FOR ALL dP 2202 PARTIAL DIFFERENTIAL TE 2203 THERE EXISTS /0 2205 EMPTY SET DE 2206 INCREMENT NB 2207 NABLA (- 2208 ELEMENT OF -) 220b CONTAINS AS MEMBER *P 220f N-ARY PRODUCT +Z 2211 N-ARY SUMMATION -2 2212 MINUS SIGN -+ 2213 MINUS-OR-PLUS SIGN *- 2217 ASTERISK OPERATOR Ob 2218 RING OPERATOR Sb 2219 BULLET OPERATOR RT 221a SQUARE ROOT 0( 221d PROPORTIONAL TO 00 221e INFINITY -L 221f RIGHT ANGLE -V 2220 ANGLE PP 2225 PARALLEL TO AN 2227 LOGICAL AND OR 2228 LOGICAL OR (U 2229 INTERSECTION )U 222a UNION In 222b INTEGRAL DI 222c DOUBLE INTEGRAL Io 222e CONTOUR INTEGRAL .: 2234 THEREFORE Simonsen [Page 25] RFC 1345 Character Mnemonics & Character Sets June 1992 :. 2235 BECAUSE :R 2236 RATIO :: 2237 PROPORTION ?1 223c TILDE OPERATOR CG 223e INVERTED LAZY S ?- 2243 ASYMPTOTICALLY EQUAL TO ?= 2245 APPROXIMATELY EQUAL TO ?2 2248 ALMOST EQUAL TO =? 224c ALL EQUAL TO HI 2253 IMAGE OF OR APPROXIMATELY EQUAL TO != 2260 NOT EQUAL TO =3 2261 IDENTICAL TO =< 2264 LESS-THAN OR EQUAL TO >= 2265 GREATER-THAN OR EQUAL TO <* 226a MUCH LESS-THAN *> 226b MUCH GREATER-THAN !< 226e NOT LESS-THAN !> 226f NOT GREATER-THAN (C 2282 SUBSET OF )C 2283 SUPERSET OF (_ 2286 SUBSET OF OR EQUAL TO )_ 2287 SUPERSET OF OR EQUAL TO 0. 2299 CIRCLED DOT OPERATOR 02 229a CIRCLED RING OPERATOR -T 22a5 UP TACK .P 22c5 DOT OPERATOR :3 22ee VERTICAL ELLIPSIS .3 22ef MIDLINE HORIZONTAL ELLIPSIS Eh 2302 HOUSE <7 2308 LEFT CEILING >7 2309 RIGHT CEILING 7< 230a LEFT FLOOR 7> 230b RIGHT FLOOR NI 2310 REVERSED NOT SIGN (A 2312 ARC TR 2315 TELEPHONE RECORDER Iu 2320 TOP HALF INTEGRAL Il 2321 BOTTOM HALF INTEGRAL 232a RIGHT-POINTING ANGLE BRACKET Vs 2423 OPEN BOX 1h 2440 OCR HOOK 3h 2441 OCR CHAIR 2h 2442 OCR FORK 4h 2443 OCR INVERTED FORK 1j 2446 OCR BRANCH BANK IDENTIFICATION 2j 2447 OCR AMOUNT OF CHECK 3j 2448 OCR DASH 4j 2449 OCR CUSTOMER ACCOUNT NUMBER 1-o 2460 CIRCLED DIGIT ONE 2-o 2461 CIRCLED DIGIT TWO 3-o 2462 CIRCLED DIGIT THREE 4-o 2463 CIRCLED DIGIT FOUR Simonsen [Page 26] RFC 1345 Character Mnemonics & Character Sets June 1992 5-o 2464 CIRCLED DIGIT FIVE 6-o 2465 CIRCLED DIGIT SIX 7-o 2466 CIRCLED DIGIT SEVEN 8-o 2467 CIRCLED DIGIT EIGHT 9-o 2468 CIRCLED DIGIT NINE 10-o 2469 CIRCLED NUMBER TEN 11-o 246a CIRCLED NUMBER ELEVEN 12-o 246b CIRCLED NUMBER TWELVE 13-o 246c CIRCLED NUMBER THIRTEEN 14-o 246d CIRCLED NUMBER FOURTEEN 15-o 246e CIRCLED NUMBER FIFTEEN 16-o 246f CIRCLED NUMBER SIXTEEN 17-o 2470 CIRCLED NUMBER SEVENTEEN 18-o 2471 CIRCLED NUMBER EIGHTEEN 19-o 2472 CIRCLED NUMBER NINETEEN 20-o 2473 CIRCLED NUMBER TWENTY (1) 2474 PARENTHESIZED DIGIT ONE (2) 2475 PARENTHESIZED DIGIT TWO (3) 2476 PARENTHESIZED DIGIT THREE (4) 2477 PARENTHESIZED DIGIT FOUR (5) 2478 PARENTHESIZED DIGIT FIVE (6) 2479 PARENTHESIZED DIGIT SIX (7) 247a PARENTHESIZED DIGIT SEVEN (8) 247b PARENTHESIZED DIGIT EIGHT (9) 247c PARENTHESIZED DIGIT NINE (10) 247d PARENTHESIZED NUMBER TEN (11) 247e PARENTHESIZED NUMBER ELEVEN (12) 247f PARENTHESIZED NUMBER TWELVE (13) 2480 PARENTHESIZED NUMBER THIRTEEN (14) 2481 PARENTHESIZED NUMBER FOURTEEN (15) 2482 PARENTHESIZED NUMBER FIFTEEN (16) 2483 PARENTHESIZED NUMBER SIXTEEN (17) 2484 PARENTHESIZED NUMBER SEVENTEEN (18) 2485 PARENTHESIZED NUMBER EIGHTEEN (19) 2486 PARENTHESIZED NUMBER NINETEEN (20) 2487 PARENTHESIZED NUMBER TWENTY 1. 2488 DIGIT ONE FULL STOP 2. 2489 DIGIT TWO FULL STOP 3. 248a DIGIT THREE FULL STOP 4. 248b DIGIT FOUR FULL STOP 5. 248c DIGIT FIVE FULL STOP 6. 248d DIGIT SIX FULL STOP 7. 248e DIGIT SEVEN FULL STOP 8. 248f DIGIT EIGHT FULL STOP 9. 2490 DIGIT NINE FULL STOP 10. 2491 NUMBER TEN FULL STOP 11. 2492 NUMBER ELEVEN FULL STOP 12. 2493 NUMBER TWELVE FULL STOP 13. 2494 NUMBER THIRTEEN FULL STOP 14. 2495 NUMBER FOURTEEN FULL STOP 15. 2496 NUMBER FIFTEEN FULL STOP 16. 2497 NUMBER SIXTEEN FULL STOP 17. 2498 NUMBER SEVENTEEN FULL STOP Simonsen [Page 27] RFC 1345 Character Mnemonics & Character Sets June 1992 18. 2499 NUMBER EIGHTEEN FULL STOP 19. 249a NUMBER NINETEEN FULL STOP 20. 249b NUMBER TWENTY FULL STOP (a) 249c PARENTHESIZED LATIN SMALL LETTER A (b) 249d PARENTHESIZED LATIN SMALL LETTER B (c) 249e PARENTHESIZED LATIN SMALL LETTER C (d) 249f PARENTHESIZED LATIN SMALL LETTER D (e) 24a0 PARENTHESIZED LATIN SMALL LETTER E (f) 24a1 PARENTHESIZED LATIN SMALL LETTER F (g) 24a2 PARENTHESIZED LATIN SMALL LETTER G (h) 24a3 PARENTHESIZED LATIN SMALL LETTER H (i) 24a4 PARENTHESIZED LATIN SMALL LETTER I (j) 24a5 PARENTHESIZED LATIN SMALL LETTER J (k) 24a6 PARENTHESIZED LATIN SMALL LETTER K (l) 24a7 PARENTHESIZED LATIN SMALL LETTER L (m) 24a8 PARENTHESIZED LATIN SMALL LETTER M (n) 24a9 PARENTHESIZED LATIN SMALL LETTER N (o) 24aa PARENTHESIZED LATIN SMALL LETTER O (p) 24ab PARENTHESIZED LATIN SMALL LETTER P (q) 24ac PARENTHESIZED LATIN SMALL LETTER Q (r) 24ad PARENTHESIZED LATIN SMALL LETTER R (s) 24ae PARENTHESIZED LATIN SMALL LETTER S (t) 24af PARENTHESIZED LATIN SMALL LETTER T (u) 24b0 PARENTHESIZED LATIN SMALL LETTER U (v) 24b1 PARENTHESIZED LATIN SMALL LETTER V (w) 24b2 PARENTHESIZED LATIN SMALL LETTER W (x) 24b3 PARENTHESIZED LATIN SMALL LETTER X (y) 24b4 PARENTHESIZED LATIN SMALL LETTER Y (z) 24b5 PARENTHESIZED LATIN SMALL LETTER Z A-o 24b6 CIRCLED LATIN CAPITAL LETTER A B-o 24b7 CIRCLED LATIN CAPITAL LETTER B C-o 24b8 CIRCLED LATIN CAPITAL LETTER C D-o 24b9 CIRCLED LATIN CAPITAL LETTER D E-o 24ba CIRCLED LATIN CAPITAL LETTER E F-o 24bb CIRCLED LATIN CAPITAL LETTER F G-o 24bc CIRCLED LATIN CAPITAL LETTER G H-o 24bd CIRCLED LATIN CAPITAL LETTER H I-o 24be CIRCLED LATIN CAPITAL LETTER I J-o 24bf CIRCLED LATIN CAPITAL LETTER J K-o 24c0 CIRCLED LATIN CAPITAL LETTER K L-o 24c1 CIRCLED LATIN CAPITAL LETTER L M-o 24c2 CIRCLED LATIN CAPITAL LETTER M N-o 24c3 CIRCLED LATIN CAPITAL LETTER N O-o 24c4 CIRCLED LATIN CAPITAL LETTER O P-o 24c5 CIRCLED LATIN CAPITAL LETTER P Q-o 24c6 CIRCLED LATIN CAPITAL LETTER Q R-o 24c7 CIRCLED LATIN CAPITAL LETTER R S-o 24c8 CIRCLED LATIN CAPITAL LETTER S T-o 24c9 CIRCLED LATIN CAPITAL LETTER T U-o 24ca CIRCLED LATIN CAPITAL LETTER U V-o 24cb CIRCLED LATIN CAPITAL LETTER V W-o 24cc CIRCLED LATIN CAPITAL LETTER W X-o 24cd CIRCLED LATIN CAPITAL LETTER X Simonsen [Page 28] RFC 1345 Character Mnemonics & Character Sets June 1992 Y-o 24ce CIRCLED LATIN CAPITAL LETTER Y Z-o 24cf CIRCLED LATIN CAPITAL LETTER Z a-o 24d0 CIRCLED LATIN SMALL LETTER A b-o 24d1 CIRCLED LATIN SMALL LETTER B c-o 24d2 CIRCLED LATIN SMALL LETTER C d-o 24d3 CIRCLED LATIN SMALL LETTER D e-o 24d4 CIRCLED LATIN SMALL LETTER E f-o 24d5 CIRCLED LATIN SMALL LETTER F g-o 24d6 CIRCLED LATIN SMALL LETTER G h-o 24d7 CIRCLED LATIN SMALL LETTER H i-o 24d8 CIRCLED LATIN SMALL LETTER I j-o 24d9 CIRCLED LATIN SMALL LETTER J k-o 24da CIRCLED LATIN SMALL LETTER K l-o 24db CIRCLED LATIN SMALL LETTER L m-o 24dc CIRCLED LATIN SMALL LETTER M n-o 24dd CIRCLED LATIN SMALL LETTER N o-o 24de CIRCLED LATIN SMALL LETTER O p-o 24df CIRCLED LATIN SMALL LETTER P q-o 24e0 CIRCLED LATIN SMALL LETTER Q r-o 24e1 CIRCLED LATIN SMALL LETTER R s-o 24e2 CIRCLED LATIN SMALL LETTER S t-o 24e3 CIRCLED LATIN SMALL LETTER T u-o 24e4 CIRCLED LATIN SMALL LETTER U v-o 24e5 CIRCLED LATIN SMALL LETTER V w-o 24e6 CIRCLED LATIN SMALL LETTER W x-o 24e7 CIRCLED LATIN SMALL LETTER X y-o 24e8 CIRCLED LATIN SMALL LETTER Y z-o 24e9 CIRCLED LATIN SMALL LETTER Z 0-o 24ea CIRCLED DIGIT ZERO hh 2500 BOX DRAWINGS LIGHT HORIZONTAL HH 2501 BOX DRAWINGS HEAVY HORIZONTAL vv 2502 BOX DRAWINGS LIGHT VERTICAL VV 2503 BOX DRAWINGS HEAVY VERTICAL 3- 2504 BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL 3_ 2505 BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL 3! 2506 BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL 3/ 2507 BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL 4- 2508 BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL 4_ 2509 BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL 4! 250a BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL 4/ 250b BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL dr 250c BOX DRAWINGS LIGHT DOWN AND RIGHT dR 250d BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY Dr 250e BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT DR 250f BOX DRAWINGS HEAVY DOWN AND RIGHT dl 2510 BOX DRAWINGS LIGHT DOWN AND LEFT dL 2511 BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY Dl 2512 BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT LD 2513 BOX DRAWINGS HEAVY DOWN AND LEFT ur 2514 BOX DRAWINGS LIGHT UP AND RIGHT uR 2515 BOX DRAWINGS UP LIGHT AND RIGHT HEAVY Ur 2516 BOX DRAWINGS UP HEAVY AND RIGHT LIGHT UR 2517 BOX DRAWINGS HEAVY UP AND RIGHT Simonsen [Page 29] RFC 1345 Character Mnemonics & Character Sets June 1992 ul 2518 BOX DRAWINGS LIGHT UP AND LEFT uL 2519 BOX DRAWINGS UP LIGHT AND LEFT HEAVY Ul 251a BOX DRAWINGS UP HEAVY AND LEFT LIGHT UL 251b BOX DRAWINGS HEAVY UP AND LEFT vr 251c BOX DRAWINGS LIGHT VERTICAL AND RIGHT vR 251d BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY Udr 251e BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT uDr 251f BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT Vr 2520 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT UdR 2521 BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY uDR 2522 BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY VR 2523 BOX DRAWINGS HEAVY VERTICAL AND RIGHT vl 2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT vL 2525 BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY Udl 2526 BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT uDl 2527 BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT Vl 2528 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT UdL 2529 BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY uDL 252a BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY VL 252b BOX DRAWINGS HEAVY VERTICAL AND LEFT dh 252c BOX DRAWINGS LIGHT DOWN AND HORIZONTAL dLr 252d BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT dlR 252e BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT dH 252f BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY Dh 2530 BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT DLr 2531 BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY DlR 2532 BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY DH 2533 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL uh 2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL uLr 2535 BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT ulR 2536 BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT uH 2537 BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY Uh 2538 BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT ULr 2539 BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY UlR 253a BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY UH 253b BOX DRAWINGS HEAVY UP AND HORIZONTAL vh 253c BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL vLr 253d BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT vlR 253e BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT vH 253f BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY Udh 2540 BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT uDh 2541 BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT Vh 2542 BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT UdLr 2543 BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT UdlR 2544 BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT uDLr 2545 BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT uDlR 2546 BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT UdH 2547 BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY uDH 2548 BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY VLr 2549 BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY VlR 254a BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY VH 254b BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL FD 2571 BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT Simonsen [Page 30] RFC 1345 Character Mnemonics & Character Sets June 1992 BD 2572 BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT TB 2580 UPPER HALF BLOCK LB 2584 LOWER HALF BLOCK FB 2588 FULL BLOCK lB 258c LEFT HALF BLOCK RB 2590 RIGHT HALF BLOCK .S 2591 LIGHT SHADE :S 2592 MEDIUM SHADE ?S 2593 DARK SHADE fS 25a0 BLACK SQUARE OS 25a1 WHITE SQUARE RO 25a2 WHITE SQUARE WITH ROUNDED CORNERS Rr 25a3 WHITE SQUARE CONTAINING BLACK SMALL SQUARE RF 25a4 SQUARE WITH HORIZONTAL FILL RY 25a5 SQUARE WITH VERTICAL FILL RH 25a6 SQUARE WITH ORTHOGONAL CROSSHATCH FILL RZ 25a7 SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL RK 25a8 SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL RX 25a9 SQUARE WITH DIAGONAL CROSSHATCH FILL sB 25aa BLACK SMALL SQUARE SR 25ac BLACK RECTANGLE Or 25ad WHITE RECTANGLE UT 25b2 BLACK UP-POINTING TRIANGLE uT 25b3 WHITE UP-POINTING TRIANGLE PR 25b6 BLACK RIGHT-POINTING TRIANGLE Tr 25b7 WHITE RIGHT-POINTING TRIANGLE Dt 25bc BLACK DOWN-POINTING TRIANGLE dT 25bd WHITE DOWN-POINTING TRIANGLE PL 25c0 BLACK LEFT-POINTING TRIANGLE Tl 25c1 WHITE LEFT-POINTING TRIANGLE Db 25c6 BLACK DIAMOND Dw 25c7 WHITE DIAMOND LZ 25ca LOZENGE 0m 25cb WHITE CIRCLE 0o 25ce BULLSEYE 0M 25cf BLACK CIRCLE 0L 25d0 CIRCLE WITH LEFT HALF BLACK 0R 25d1 CIRCLE WITH RIGHT HALF BLACK Sn 25d8 INVERSE BULLET Ic 25d9 INVERSE WHITE CIRCLE Fd 25e2 BLACK LOWER RIGHT TRIANGLE Bd 25e3 BLACK LOWER LEFT TRIANGLE *2 2605 BLACK STAR *1 2606 WHITE STAR TEL 260e BLACK TELEPHONE tel 260f WHITE TELEPHONE H 261e WHITE RIGHT POINTING INDEX 0u 263a WHITE SMILING FACE 0U 263b BLACK SMILING FACE SU 263c WHITE SUN WITH RAYS Fm 2640 FEMALE SIGN Ml 2642 MALE SIGN Simonsen [Page 31] RFC 1345 Character Mnemonics & Character Sets June 1992 cS 2660 BLACK SPADE SUIT cH 2661 WHITE HEART SUIT cD 2662 WHITE DIAMOND SUIT cC 2663 BLACK CLUB SUIT cS- 2664 WHITE SPADE SUIT cH- 2665 BLACK HEART SUIT cD- 2666 BLACK DIAMOND SUIT cC- 2667 WHITE CLUB SUIT Md 2669 QUARTER NOTE M8 266a EIGHTH NOTE M2 266b BARRED EIGHTH NOTES M16 266c BARRED SIXTEENTH NOTES Mb 266d MUSIC FLAT SIGN Mx 266e MUSIC NATURAL SIGN MX 266f MUSIC SHARP SIGN OK 2713 CHECK MARK XX 2717 BALLOT X -X 2720 MALTESE CROSS IS 3000 IDEOGRAPHIC SPACE ,_ 3001 IDEOGRAPHIC COMMA ._ 3002 IDEOGRAPHIC PERIOD +" 3003 DITTO MARK +_ 3004 IDEOGRAPHIC DITTO MARK *_ 3005 IDEOGRAPHIC ITERATION MARK ;_ 3006 IDEOGRAPHIC CLOSING MARK 0_ 3007 IDEOGRAPHIC NUMBER ZERO <+ 300a LEFT DOUBLE ANGLE BRACKET >+ 300b RIGHT DOUBLE ANGLE BRACKET <' 300c LEFT CORNER BRACKET >' 300d RIGHT CORNER BRACKET <" 300e LEFT WHITE CORNER BRACKET >" 300f RIGHT WHITE CORNER BRACKET (" 3010 LEFT BLACK LENTICULAR BRACKET )" 3011 RIGHT BLACK LENTICULAR BRACKET =T 3012 POSTAL MARK =_ 3013 GETA MARK (' 3014 LEFT TORTOISE SHELL BRACKET )' 3015 RIGHT TORTOISE SHELL BRACKET (I 3016 LEFT WHITE LENTICULAR BRACKET )I 3017 RIGHT WHITE LENTICULAR BRACKET -? 301c WAVE DASH =T:) 3020 POSTAL MARK FACE A5 3041 HIRAGANA LETTER SMALL A a5 3042 HIRAGANA LETTER A I5 3043 HIRAGANA LETTER SMALL I i5 3044 HIRAGANA LETTER I U5 3045 HIRAGANA LETTER SMALL U u5 3046 HIRAGANA LETTER U E5 3047 HIRAGANA LETTER SMALL E e5 3048 HIRAGANA LETTER E O5 3049 HIRAGANA LETTER SMALL O o5 304a HIRAGANA LETTER O ka 304b HIRAGANA LETTER KA Simonsen [Page 32] RFC 1345 Character Mnemonics & Character Sets June 1992 ga 304c HIRAGANA LETTER GA ki 304d HIRAGANA LETTER KI gi 304e HIRAGANA LETTER GI ku 304f HIRAGANA LETTER KU gu 3050 HIRAGANA LETTER GU ke 3051 HIRAGANA LETTER KE ge 3052 HIRAGANA LETTER GE ko 3053 HIRAGANA LETTER KO go 3054 HIRAGANA LETTER GO sa 3055 HIRAGANA LETTER SA za 3056 HIRAGANA LETTER ZA si 3057 HIRAGANA LETTER SI zi 3058 HIRAGANA LETTER ZI su 3059 HIRAGANA LETTER SU zu 305a HIRAGANA LETTER ZU se 305b HIRAGANA LETTER SE ze 305c HIRAGANA LETTER ZE so 305d HIRAGANA LETTER SO zo 305e HIRAGANA LETTER ZO ta 305f HIRAGANA LETTER TA da 3060 HIRAGANA LETTER DA ti 3061 HIRAGANA LETTER TI di 3062 HIRAGANA LETTER DI tU 3063 HIRAGANA LETTER SMALL TU tu 3064 HIRAGANA LETTER TU du 3065 HIRAGANA LETTER DU te 3066 HIRAGANA LETTER TE de 3067 HIRAGANA LETTER DE to 3068 HIRAGANA LETTER TO do 3069 HIRAGANA LETTER DO na 306a HIRAGANA LETTER NA ni 306b HIRAGANA LETTER NI nu 306c HIRAGANA LETTER NU ne 306d HIRAGANA LETTER NE no 306e HIRAGANA LETTER NO ha 306f HIRAGANA LETTER HA ba 3070 HIRAGANA LETTER BA pa 3071 HIRAGANA LETTER PA hi 3072 HIRAGANA LETTER HI bi 3073 HIRAGANA LETTER BI pi 3074 HIRAGANA LETTER PI hu 3075 HIRAGANA LETTER HU bu 3076 HIRAGANA LETTER BU pu 3077 HIRAGANA LETTER PU he 3078 HIRAGANA LETTER HE be 3079 HIRAGANA LETTER BE pe 307a HIRAGANA LETTER PE ho 307b HIRAGANA LETTER HO bo 307c HIRAGANA LETTER BO po 307d HIRAGANA LETTER PO ma 307e HIRAGANA LETTER MA mi 307f HIRAGANA LETTER MI mu 3080 HIRAGANA LETTER MU Simonsen [Page 33] RFC 1345 Character Mnemonics & Character Sets June 1992 me 3081 HIRAGANA LETTER ME mo 3082 HIRAGANA LETTER MO yA 3083 HIRAGANA LETTER SMALL YA ya 3084 HIRAGANA LETTER YA yU 3085 HIRAGANA LETTER SMALL YU yu 3086 HIRAGANA LETTER YU yO 3087 HIRAGANA LETTER SMALL YO yo 3088 HIRAGANA LETTER YO ra 3089 HIRAGANA LETTER RA ri 308a HIRAGANA LETTER RI ru 308b HIRAGANA LETTER RU re 308c HIRAGANA LETTER RE ro 308d HIRAGANA LETTER RO wA 308e HIRAGANA LETTER SMALL WA wa 308f HIRAGANA LETTER WA wi 3090 HIRAGANA LETTER WI we 3091 HIRAGANA LETTER WE wo 3092 HIRAGANA LETTER WO n5 3093 HIRAGANA LETTER N vu 3094 HIRAGANA LETTER VU "5 309b KATAKANA-HIRAGANA VOICED SOUND MARK 05 309c KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK *5 309d HIRAGANA ITERATION MARK +5 309e HIRAGANA VOICED ITERATION MARK a6 30a1 KATAKANA LETTER SMALL A A6 30a2 KATAKANA LETTER A i6 30a3 KATAKANA LETTER SMALL I I6 30a4 KATAKANA LETTER I u6 30a5 KATAKANA LETTER SMALL U U6 30a6 KATAKANA LETTER U e6 30a7 KATAKANA LETTER SMALL E E6 30a8 KATAKANA LETTER E o6 30a9 KATAKANA LETTER SMALL O O6 30aa KATAKANA LETTER O Ka 30ab KATAKANA LETTER KA Ga 30ac KATAKANA LETTER GA Ki 30ad KATAKANA LETTER KI Gi 30ae KATAKANA LETTER GI Ku 30af KATAKANA LETTER KU Gu 30b0 KATAKANA LETTER GU Ke 30b1 KATAKANA LETTER KE Ge 30b2 KATAKANA LETTER GE Ko 30b3 KATAKANA LETTER KO Go 30b4 KATAKANA LETTER GO Sa 30b5 KATAKANA LETTER SA Za 30b6 KATAKANA LETTER ZA Si 30b7 KATAKANA LETTER SI Zi 30b8 KATAKANA LETTER ZI Su 30b9 KATAKANA LETTER SU Zu 30ba KATAKANA LETTER ZU Se 30bb KATAKANA LETTER SE Ze 30bc KATAKANA LETTER ZE So 30bd KATAKANA LETTER SO Simonsen [Page 34] RFC 1345 Character Mnemonics & Character Sets June 1992 Zo 30be KATAKANA LETTER ZO Ta 30bf KATAKANA LETTER TA Da 30c0 KATAKANA LETTER DA Ti 30c1 KATAKANA LETTER TI Di 30c2 KATAKANA LETTER DI TU 30c3 KATAKANA LETTER SMALL TU Tu 30c4 KATAKANA LETTER TU Du 30c5 KATAKANA LETTER DU Te 30c6 KATAKANA LETTER TE De 30c7 KATAKANA LETTER DE To 30c8 KATAKANA LETTER TO Do 30c9 KATAKANA LETTER DO Na 30ca KATAKANA LETTER NA Ni 30cb KATAKANA LETTER NI Nu 30cc KATAKANA LETTER NU Ne 30cd KATAKANA LETTER NE No 30ce KATAKANA LETTER NO Ha 30cf KATAKANA LETTER HA Ba 30d0 KATAKANA LETTER BA Pa 30d1 KATAKANA LETTER PA Hi 30d2 KATAKANA LETTER HI Bi 30d3 KATAKANA LETTER BI Pi 30d4 KATAKANA LETTER PI Hu 30d5 KATAKANA LETTER HU Bu 30d6 KATAKANA LETTER BU Pu 30d7 KATAKANA LETTER PU He 30d8 KATAKANA LETTER HE Be 30d9 KATAKANA LETTER BE Pe 30da KATAKANA LETTER PE Ho 30db KATAKANA LETTER HO Bo 30dc KATAKANA LETTER BO Po 30dd KATAKANA LETTER PO Ma 30de KATAKANA LETTER MA Mi 30df KATAKANA LETTER MI Mu 30e0 KATAKANA LETTER MU Me 30e1 KATAKANA LETTER ME Mo 30e2 KATAKANA LETTER MO YA 30e3 KATAKANA LETTER SMALL YA Ya 30e4 KATAKANA LETTER YA YU 30e5 KATAKANA LETTER SMALL YU Yu 30e6 KATAKANA LETTER YU YO 30e7 KATAKANA LETTER SMALL YO Yo 30e8 KATAKANA LETTER YO Ra 30e9 KATAKANA LETTER RA Ri 30ea KATAKANA LETTER RI Ru 30eb KATAKANA LETTER RU Re 30ec KATAKANA LETTER RE Ro 30ed KATAKANA LETTER RO WA 30ee KATAKANA LETTER SMALL WA Wa 30ef KATAKANA LETTER WA Wi 30f0 KATAKANA LETTER WI We 30f1 KATAKANA LETTER WE Wo 30f2 KATAKANA LETTER WO Simonsen [Page 35] RFC 1345 Character Mnemonics & Character Sets June 1992 N6 30f3 KATAKANA LETTER N Vu 30f4 KATAKANA LETTER VU KA 30f5 KATAKANA LETTER SMALL KA KE 30f6 KATAKANA LETTER SMALL KE Va 30f7 KATAKANA LETTER VA Vi 30f8 KATAKANA LETTER VI Ve 30f9 KATAKANA LETTER VE Vo 30fa KATAKANA LETTER VO .6 30fb KATAKANA MIDDLE DOT -6 30fc KATAKANA-HIRAGANA PROLONGED SOUND MARK *6 30fd KATAKANA ITERATION MARK +6 30fe KATAKANA VOICED ITERATION MARK b4 3105 BOPOMOFO LETTER B p4 3106 BOPOMOFO LETTER P m4 3107 BOPOMOFO LETTER M f4 3108 BOPOMOFO LETTER F d4 3109 BOPOMOFO LETTER D t4 310a BOPOMOFO LETTER T n4 310b BOPOMOFO LETTER N l4 310c BOPOMOFO LETTER L g4 310d BOPOMOFO LETTER G k4 310e BOPOMOFO LETTER K h4 310f BOPOMOFO LETTER H j4 3110 BOPOMOFO LETTER J q4 3111 BOPOMOFO LETTER Q x4 3112 BOPOMOFO LETTER X zh 3113 BOPOMOFO LETTER ZH ch 3114 BOPOMOFO LETTER CH sh 3115 BOPOMOFO LETTER SH r4 3116 BOPOMOFO LETTER R z4 3117 BOPOMOFO LETTER Z c4 3118 BOPOMOFO LETTER C s4 3119 BOPOMOFO LETTER S a4 311a BOPOMOFO LETTER A o4 311b BOPOMOFO LETTER O e4 311c BOPOMOFO LETTER E eh4 311d BOPOMOFO LETTER EH ai 311e BOPOMOFO LETTER AI ei 311f BOPOMOFO LETTER EI au 3120 BOPOMOFO LETTER AU ou 3121 BOPOMOFO LETTER OU an 3122 BOPOMOFO LETTER AN en 3123 BOPOMOFO LETTER EN aN 3124 BOPOMOFO LETTER ANG eN 3125 BOPOMOFO LETTER ENG er 3126 BOPOMOFO LETTER ER i4 3127 BOPOMOFO LETTER I u4 3128 BOPOMOFO LETTER U iu 3129 BOPOMOFO LETTER IU v4 312a BOPOMOFO LETTER V nG 312b BOPOMOFO LETTER NG gn 312c BOPOMOFO LETTER GN (JU) 321c PARENTHESIZED HANGUL JU Simonsen [Page 36] RFC 1345 Character Mnemonics & Character Sets June 1992 1c 3220 PARENTHESIZED IDEOGRAPH ONE 2c 3221 PARENTHESIZED IDEOGRAPH TWO 3c 3222 PARENTHESIZED IDEOGRAPH THREE 4c 3223 PARENTHESIZED IDEOGRAPH FOUR 5c 3224 PARENTHESIZED IDEOGRAPH FIVE 6c 3225 PARENTHESIZED IDEOGRAPH SIX 7c 3226 PARENTHESIZED IDEOGRAPH SEVEN 8c 3227 PARENTHESIZED IDEOGRAPH EIGHT 9c 3228 PARENTHESIZED IDEOGRAPH NINE 10c 3229 PARENTHESIZED IDEOGRAPH TEN KSC 327f KOREAN STANDARD SYMBOL ff fb00 LATIN SMALL LIGATURE FF fi fb01 LATIN SMALL LIGATURE FI fl fb02 LATIN SMALL LIGATURE FL ffi fb03 LATIN SMALL LIGATURE FFI ffl fb04 LATIN SMALL LIGATURE FFL ft fb05 LATIN SMALL LIGATURE FT st fb06 LATIN SMALL LIGATURE ST 3+; fe7d ARABIC SHADDA MEDIAL FORM aM. fe82 ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM aH. fe84 ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM a+- fe8d ARABIC LETTER ALEF ISOLATED FORM a+. fe8e ARABIC LETTER ALEF FINAL FORM b+- fe8f ARABIC LETTER BEH ISOLATED FORM b+, fe90 ARABIC LETTER BEH INITIAL FORM b+; fe91 ARABIC LETTER BEH MEDIAL FORM b+. fe92 ARABIC LETTER BEH FINAL FORM tm- fe93 ARABIC LETTER TEH MARBUTA ISOLATED FORM tm. fe94 ARABIC LETTER TEH MARBUTA FINAL FORM t+- fe95 ARABIC LETTER TEH ISOLATED FORM t+, fe96 ARABIC LETTER TEH INITIAL FORM t+; fe97 ARABIC LETTER TEH MEDIAL FORM t+. fe98 ARABIC LETTER TEH FINAL FORM tk- fe99 ARABIC LETTER THEH ISOLATED FORM tk, fe9a ARABIC LETTER THEH INITIAL FORM tk; fe9b ARABIC LETTER THEH MEDIAL FORM tk. fe9c ARABIC LETTER THEH FINAL FORM g+- fe9d ARABIC LETTER JEEM ISOLATED FORM g+, fe9e ARABIC LETTER JEEM INITIAL FORM g+; fe9f ARABIC LETTER JEEM MEDIAL FORM g+. fea0 ARABIC LETTER JEEM FINAL FORM hk- fea1 ARABIC LETTER HAH ISOLATED FORM hk, fea2 ARABIC LETTER HAH INITIAL FORM hk; fea3 ARABIC LETTER HAH MEDIAL FORM hk. fea4 ARABIC LETTER HAH FINAL FORM x+- fea5 ARABIC LETTER KHAH ISOLATED FORM x+, fea6 ARABIC LETTER KHAH INITIAL FORM x+; fea7 ARABIC LETTER KHAH MEDIAL FORM x+. fea8 ARABIC LETTER KHAH FINAL FORM d+- fea9 ARABIC LETTER DAL ISOLATED FORM d+. feaa ARABIC LETTER DAL FINAL FORM dk- feab ARABIC LETTER THAL ISOLATED FORM dk. feac ARABIC LETTER THAL FINAL FORM Simonsen [Page 37] RFC 1345 Character Mnemonics & Character Sets June 1992 r+- fead ARABIC LETTER REH ISOLATED FORM r+. feae ARABIC LETTER REH FINAL FORM z+- feaf ARABIC LETTER ZAIN ISOLATED FORM z+. feb0 ARABIC LETTER ZAIN FINAL FORM s+- feb1 ARABIC LETTER SEEN ISOLATED FORM s+, feb2 ARABIC LETTER SEEN INITIAL FORM s+; feb3 ARABIC LETTER SEEN MEDIAL FORM s+. feb4 ARABIC LETTER SEEN FINAL FORM sn- feb5 ARABIC LETTER SHEEN ISOLATED FORM sn, feb6 ARABIC LETTER SHEEN INITIAL FORM sn; feb7 ARABIC LETTER SHEEN MEDIAL FORM sn. feb8 ARABIC LETTER SHEEN FINAL FORM c+- feb9 ARABIC LETTER SAD ISOLATED FORM c+, feba ARABIC LETTER SAD INITIAL FORM c+; febb ARABIC LETTER SAD MEDIAL FORM c+. febc ARABIC LETTER SAD FINAL FORM dd- febd ARABIC LETTER DAD ISOLATED FORM dd, febe ARABIC LETTER DAD INITIAL FORM dd; febf ARABIC LETTER DAD MEDIAL FORM dd. fec0 ARABIC LETTER DAD FINAL FORM tj- fec1 ARABIC LETTER TAH ISOLATED FORM tj, fec2 ARABIC LETTER TAH INITIAL FORM tj; fec3 ARABIC LETTER TAH MEDIAL FORM tj. fec4 ARABIC LETTER TAH FINAL FORM zH- fec5 ARABIC LETTER ZAH ISOLATED FORM zH, fec6 ARABIC LETTER ZAH INITIAL FORM zH; fec7 ARABIC LETTER ZAH MEDIAL FORM zH. fec8 ARABIC LETTER ZAH FINAL FORM e+- fec9 ARABIC LETTER AIN ISOLATED FORM e+, feca ARABIC LETTER AIN INITIAL FORM e+; fecb ARABIC LETTER AIN MEDIAL FORM e+. fecc ARABIC LETTER AIN FINAL FORM i+- fecd ARABIC LETTER GHAIN ISOLATED FORM i+, fece ARABIC LETTER GHAIN INITIAL FORM i+; fecf ARABIC LETTER GHAIN MEDIAL FORM i+. fed0 ARABIC LETTER GHAIN FINAL FORM f+- fed1 ARABIC LETTER FEH ISOLATED FORM f+, fed2 ARABIC LETTER FEH INITIAL FORM f+; fed3 ARABIC LETTER FEH MEDIAL FORM f+. fed4 ARABIC LETTER FEH FINAL FORM q+- fed5 ARABIC LETTER QAF ISOLATED FORM q+, fed6 ARABIC LETTER QAF INITIAL FORM q+; fed7 ARABIC LETTER QAF MEDIAL FORM q+. fed8 ARABIC LETTER QAF FINAL FORM k+- fed9 ARABIC LETTER KAF ISOLATED FORM k+, feda ARABIC LETTER KAF INITIAL FORM k+; fedb ARABIC LETTER KAF MEDIAL FORM k+. fedc ARABIC LETTER KAF FINAL FORM l+- fedd ARABIC LETTER LAM ISOLATED FORM l+, fede ARABIC LETTER LAM INITIAL FORM l+; fedf ARABIC LETTER LAM MEDIAL FORM l+. fee0 ARABIC LETTER LAM FINAL FORM m+- fee1 ARABIC LETTER MEEM ISOLATED FORM Simonsen [Page 38] RFC 1345 Character Mnemonics & Character Sets June 1992 m+, fee2 ARABIC LETTER MEEM INITIAL FORM m+; fee3 ARABIC LETTER MEEM MEDIAL FORM m+. fee4 ARABIC LETTER MEEM FINAL FORM n+- fee5 ARABIC LETTER NOON ISOLATED FORM n+, fee6 ARABIC LETTER NOON INITIAL FORM n+; fee7 ARABIC LETTER NOON MEDIAL FORM n+. fee8 ARABIC LETTER NOON FINAL FORM h+- fee9 ARABIC LETTER HEH ISOLATED FORM h+, feea ARABIC LETTER HEH INITIAL FORM h+; feeb ARABIC LETTER HEH MEDIAL FORM h+. feec ARABIC LETTER HEH FINAL FORM w+- feed ARABIC LETTER WAW ISOLATED FORM w+. feee ARABIC LETTER WAW FINAL FORM j+- feef ARABIC LETTER ALEF MAKSURA ISOLATED FORM j+. fef0 ARABIC LETTER ALEF MAKSURA FINAL FORM y+- fef1 ARABIC LETTER YEH ISOLATED FORM y+, fef2 ARABIC LETTER YEH INITIAL FORM y+; fef3 ARABIC LETTER YEH MEDIAL FORM y+. fef4 ARABIC LETTER YEH FINAL FORM lM- fef5 ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM lM. fef6 ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM lH- fef7 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM lH. fef8 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM lh- fef9 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM lh. fefa ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM la- fefb ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM la. fefc ARABIC LIGATURE LAM WITH ALEF FINAL FORM NU 0000 NULL (NUL) SH 0001 START OF HEADING (SOH) SX 0002 START OF TEXT (STX) EX 0003 END OF TEXT (ETX) ET 0004 END OF TRANSMISSION (EOT) EQ 0005 ENQUIRY (ENQ) AK 0006 ACKNOWLEDGE (ACK) BL 0007 BELL (BEL) BS 0008 BACKSPACE (BS) HT 0009 CHARACTER TABULATION (HT) LF 000a LINE FEED (LF) VT 000b LINE TABULATION (VT) FF 000c FORM FEED (FF) CR 000d CARRIAGE RETURN (CR) SO 000e SHIFT OUT (SO) SI 000f SHIFT IN (SI) DL 0010 DATALINK ESCAPE (DLE) D1 0011 DEVICE CONTROL ONE (DC1) D2 0012 DEVICE CONTROL TWO (DC2) D3 0013 DEVICE CONTROL THREE (DC3) Simonsen [Page 39] RFC 1345 Character Mnemonics & Character Sets June 1992 D4 0014 DEVICE CONTROL FOUR (DC4) NK 0015 NEGATIVE ACKNOWLEDGE (NAK) SY 0016 SYNCRONOUS IDLE (SYN) EB 0017 END OF TRANSMISSION BLOCK (ETB) CN 0018 CANCEL (CAN) EM 0019 END OF MEDIUM (EM) SB 001a SUBSTITUTE (SUB) EC 001b ESCAPE (ESC) FS 001c FILE SEPARATOR (IS4) GS 001d GROUP SEPARATOR (IS3) RS 001e RECORD SEPARATOR (IS2) US 001f UNIT SEPARATOR (IS1) DT 007f DELETE (DEL) PA 0080 PADDING CHARACTER (PAD) HO 0081 HIGH OCTET PRESET (HOP) BH 0082 BREAK PERMITTED HERE (BPH) NH 0083 NO BREAK HERE (NBH) IN 0084 INDEX (IND) NL 0085 NEXT LINE (NEL) SA 0086 START OF SELECTED AREA (SSA) ES 0087 END OF SELECTED AREA (ESA) HS 0088 CHARACTER TABULATION SET (HTS) HJ 0089 CHARACTER TABULATION WITH JUSTIFICATION (HTJ) VS 008a LINE TABULATION SET (VTS) PD 008b PARTIAL LINE FORWARD (PLD) PU 008c PARTIAL LINE BACKWARD (PLU) RI 008d REVERSE LINE FEED (RI) S2 008e SINGLE-SHIFT TWO (SS2) S3 008f SINGLE-SHIFT THREE (SS3) DC 0090 DEVICE CONTROL STRING (DCS) P1 0091 PRIVATE USE ONE (PU1) P2 0092 PRIVATE USE TWO (PU2) TS 0093 SET TRANSMIT STATE (STS) CC 0094 CANCEL CHARACTER (CCH) MW 0095 MESSAGE WAITING (MW) SG 0096 START OF GUARDED AREA (SPA) EG 0097 END OF GUARDED AREA (EPA) SS 0098 START OF STRING (SOS) GC 0099 SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) SC 009a SINGLE CHARACTER INTRODUCER (SCI) CI 009b CONTROL SEQUENCE INTRODUCER (CSI) ST 009c STRING TERMINATOR (ST) OC 009d OPERATING SYSTEM COMMAND (OSC) PM 009e PRIVACY MESSAGE (PM) AC 009f APPLICATION PROGRAM COMMAND (APC) e000 indicates unfinished (Mnemonic) /c e001 JOIN THIS LINE WITH NEXT LINE (Mnemonic) UA e002 Unit space A (ISO-IR-8-1 064) UB e003 Unit space B (ISO-IR-8-1 096) "3 e004 NON-SPACING UMLAUT (ISO-IR-38 201) (character part) "1 e005 NON-SPACING DIAERESIS WITH ACCENT (ISO-IR-70 192) (character part) "! e006 NON-SPACING GRAVE ACCENT (ISO-IR-103 193) (character Simonsen [Page 40] RFC 1345 Character Mnemonics & Character Sets June 1992 part) "' e007 NON-SPACING ACUTE ACCENT (ISO-IR-103 194) (character part) "> e008 NON-SPACING CIRCUMFLEX ACCENT (ISO-IR-103 195) (character part) "? e009 NON-SPACING TILDE (ISO-IR-103 196) (character part) "- e00a NON-SPACING MACRON (ISO-IR-103 197) (character part) "( e00b NON-SPACING BREVE (ISO-IR-103 198) (character part) ". e00c NON-SPACING DOT ABOVE (ISO-IR-103 199) (character part) ": e00d NON-SPACING DIAERESIS (ISO-IR-103 200) (character part) "0 e00e NON-SPACING RING ABOVE (ISO-IR-103 202) (character part) "" e00f NON-SPACING DOUBLE ACCUTE (ISO-IR-103 204) (character part) "< e010 NON-SPACING CARON (ISO-IR-103 206) (character part) ", e011 NON-SPACING CEDILLA (ISO-IR-103 203) (character part) "; e012 NON-SPACING OGONEK (ISO-IR-103 206) (character part) "_ e013 NON-SPACING LOW LINE (ISO-IR-103 204) (character part) "= e014 NON-SPACING DOUBLE LOW LINE (ISO-IR-38 217) (character part) "/ e015 NON-SPACING LONG SOLIDUS (ISO-IR-128 201) (character part) "i e016 GREEK NON-SPACING IOTA BELOW (ISO-IR-55 39) (character part) "d e017 GREEK NON-SPACING DASIA PNEUMATA (ISO-IR-55 38) (character part) "p e018 GREEK NON-SPACING PSILI PNEUMATA (ISO-IR-55 37) (character part) ;; e019 GREEK DASIA PNEUMATA (ISO-IR-18 92) ,, e01a GREEK PSILI PNEUMATA (ISO-IR-18 124) b3 e01b GREEK SMALL LETTER MIDDLE BETA (ISO-IR-18 99) Ci e01c CIRCLE (ISO-IR-83 0294) f( e01d FUNCTION SIGN (ISO-IR-143 221) ed e01e LATIN SMALL LETTER EZH (ISO-IR-158 142) am e01f ANTE MERIDIAM SIGN (ISO-IR-149 0267) pm e020 POST MERIDIAM SIGN (ISO-IR-149 0268) Tel e021 TEL COMPATIBILITY SIGN (ISO-IR-149 0269) a+: e022 ARABIC LETTER ALEF FINAL FORM COMPATIBILITY (IBM868 144) Fl e023 DUTCH GUILDER SIGN (IBM437 159) GF e024 GAMMA FUNCTION SIGN (ISO-10646-1DIS 032/032/037/122) >V e025 RIGHTWARDS VECTOR ABOVE (ISO-10646-1DIS 032/032/038/046) !* e026 GREEK VARIA (ISO-10646-1DIS 032/032/042/164) ?* e027 GREEK PERISPOMENI (ISO-10646-1DIS 032/032/042/165) J< e028 LATIN CAPITAL LETTER J WITH CARON (lowercase: 000/000/001/240) 4. CHARSETS The character mnemonics hav been used to table a number of coded character sets. The coded character set names are taken if possible from the official ISO registration description in the ISO 2375 (ECMA) register, or with a number like the code page number - or with an indication of the language or country it is being used for - using Simonsen [Page 41] RFC 1345 Character Mnemonics & Character Sets June 1992 the country designators of ISO 3166. For the character sets in the ECMA register, their ISO registration number is also given (as ISO- IR-xxx). Often the ISO registration number does not cover all the codes of a character set in use, but for instance only the graphical characters, where another ISO registration number covers the control characters; in the case of the 8-bit character sets the ISO registration only covers the upper graphical characters (GR). The ISO registration number is here taken to indicate the full coded character set including control characters and lower half of the graphical characters, normally ISO 6429 and ASCII, respectively. The ISO definition of the term "coded character set" is as follows: "A set of unambiguous rules that establishes a character set and the one-to-one relationship between the characters of the set and their coded representation." and this definition may be subject to different interpretations. This memo does not put further restrictions on the term of "coded character set" than the following: "A coded character set is a set of rules that unambiguously and completely determines which sequence of characters, if any, is represented by each possible sequence of n-bit bytes for a certain value of n." This implies that e.g. a coded character set extended with one or more other coded character sets by means of the extension techniques of ISO 2022 constitutes a coded character set in its own right. In this memo the term "charset" is used to refer to the above interpretation of the ISO term "coded character set". A special problem is, if two characters of two different coded character sets with the same descriptive name, or depicted by what looks like the same graphic symbol, or with the same historical origin, really are to be regarded as the same character or not. This problem has been studied in great detail in the development efforts that have resulted in ISO DIS 10646 and Unicode (under the heading "character unification"). As much as possible such results have been used in the construction of the code tables of this section. 4.1 Charset Naming The coded character set names are given in ISO 646 invariant subset (83 characters, where a space in the name is replaced with an underline character; sometimes a hyphen is also used instead of a blank, or the blank is eliminated when practice exist). Case is not significant in the charset names. 4.2 Code Table Format The following code tables are given in a simple format to facilitate use of this text as program input. Programs and routines written in C to handle these tables are freely available from the author of this memo. Keywords are signified with the character "&" as the first character, to distinguish them from ordinary data. Numbers may be given in decimal, hexadecimal or octal notation; hexadecimal numbers are given with an "x" as the first character, and octal numbers has an "o" as the first character. Simonsen [Page 42] RFC 1345 Character Mnemonics & Character Sets June 1992 The following keywords are used: "&charset" has one parameter defining the name of the character set. This is required for every character set. "&alias" has one parameter defining a possible alternate name for the character set. This is optional. "&g0esc", "&g1esc", "&g2esc", "&g3esc", "&c0esc", "&c1esc" has one parameter indicating the string of octets used to define the character set as the G0, G1, G2, G3, C0 or C1 set respectively, according to ISO 2022 (11). The string is to be preceded by an ESC character. It is only the relevant parts of the table, which can be used with the definition; the charset is often coded with both graphical and control character sets. If the coded character set is a 96-character set, it is tabled with the relevant GL set (normally ISO-IR-6) and with ISO 6429 as C0 and C1 (12). If it is a 94- character set, it is tabled with the C0 set of ISO 6429. If it is a double-octet coded character set, it is tabled without control character sets and accompanying one-octet coded character sets, and the two-octet code is tabled as a G0 set. "&bits" has one parameter indicating the number of bits to represent the charset. This is optional and 8 bits is the default. "&code" has one parameter indicating the byte number allocated to the following character mnemonic. After the "&code" specification the characters are listed with their mnemonic in ascending order. A character mnemonic of "??" indicates that the position is unused. A character mnemonic of "__" indicates that the character set is not completely defined with the specifications in this memo. "&code2" has 2 parameters specifying the row and column in certain 16-bit character sets. The value 32 must be added to obtain the first and second byte respectively. Mnemonics can be specified after the "&code2" specification as mentioned for the "&code" specification. "&codex" has 5 parameters, specifying the character set prefix string, the start row number, the end row number, the start column number and the end column number respectively. This is equivalent to specifying a series of mnemonics of the form "nrrcc" where "n" is the character set name prefix string, "rr" is the row number running from the specified start row number to the end row number, and "cc" is the column number running from the specified start column number to the end column number. The thereby created series mnemonics are allocated to code positions which are added 32 to the row and column numbers to get the row and column octet. "&duplicate" has a special meaning indicating that a position is being used for more than one character. This is an ugly convention but it is a sad fact of life that same code in one coded character set can mean different characters. "&duplicate" takes two parameters Simonsen [Page 43] RFC 1345 Character Mnemonics & Character Sets June 1992 - the first is the code to be duplicated, the other is the new mnemonic. "&rem" is followed by text to explain something in the table to a human reader. All lines in such a remark has to start with this keyword. "&comb2" specifies a combination of two characters which signifies a third character. All characters in the specification are given by their mnemonic. The two combining characters must be specified previously in the code table. The first combining character is specified as the first character after the keyword, and then the following pairs of characters are the second combining character and the result, respectively. The specification can be repeated, terminated by an occurrence of a keyword. 4.3 Mnemonic charsets The following is compatible with current practice on the internet within EUnet - the European not-for-profit networking organisation in Europe and North Africa currently operating in 24 countries. The mnemonic charsets are a family of charsets which have the facility that within the relevant parts of the message, encoded in an ordinary coded character set, text may have occurrences of the following sequence: an intro character sequence, followed by a string of characters that represent a character mnemonic, as described below. Similarly, the intro character sequence may be doubled, indicating a single occurrence of the respective symbols in decoded format. Note that many characters within a mnemonic character set may be represented in two different ways. Normally the character itself is used, but it is also possible to use the mnemonic allocated to the character in a mnemonic sequence. In this way all characters with assigned mnemonics can be represented without information loss in any character set, which contains the invariant ISO 646 characters as a subset. As a consequence, using a mnemonic character set all these characters can be generated uniformly on all keyboards and presented uniformly on all terminal equipment, whenever the real character is not available. Data encoded in a mnemonic charset is intended to be read by the end user possibly without further treatment. If the transport encoding and the presentation encoding for the user differ, it is recommended that the data be translated into a mnemonic representation in the presentation encoding. A mnemonic charset is specified with the name "mnemonic+charset+intro" where "mnemonic" is written as given and "charset" and "intro" is specified as described below. The mnemonic charset "mnemonic" is a shorthand for "mnemonic+ascii+38". The Simonsen [Page 44] RFC 1345 Character Mnemonics & Character Sets June 1992 mnemonic charset "mnem" is a shorthand for "mnemonic+ascii+8200". It is discouraged to use mnemonics for Chinese characters of either Chinese, Japanese or Korean origin, as the probability that the end user equipment can deal with the original encoding is very high for the intended receiver, and the mnemonics for such Chinese characters described in this memo convey very little meaning to humans. 4.3.1 charset The charset is given as one of the charset names in this memo and is the encoding used for the transport. It cannot be a mnemonic charset. 4.3.2 Intro The intro character sequence is given as the decimal value of the intro characters in the transport character set. There may be up to two characters used in the intro character sequence, and the decimal value for two-character intro sequences are then the first character value multiplied with 256 to the power of the number of octets used in the character set, plus the second character value. The recommended value is 38 for the ampersand (&) character in ASCII. Another common value is 29 for the control character "Group Separator", or 8200 for "space" followed by "backspace", which may be convenient when operating in some environments, and ordinary text is not changed. Only the ampersand character may be chosen as intro from the invariant ISO 646 charset, but any character not in the invariant ISO 646 character can be used as intro. The intro character sequence is used for introducing character mnemonics when a character is not present in the mail transport character set (as defined by "charset"). Character mnemonics longer than two characters are surrounded by the underline character. The intro character sequence is doubled to represent one occurrence of itself. Characters in the mail transport character set are normally just represented with their encoding, but may also be represented by the intro character sequence and the mnemonic encoding. If the intro character sequence is specified as 0 (zero), it is omitted in the transport, giving a better readably content, but eliminating the possibility of reversibility and introducing an information loss. With intro specified as 0, also underline characters surrounding mnemonics longer than 2 characters are removed. Mnemonic charsets with the intro specified as zero is equivalent to the ordinary charset, e.g. "mnemonic+ascii+0" is equivalent to "ascii". The intro character can be given in a header "Mnemonic-Intro:" with the value given in decimal as noted above in the first parameter. This has only meaning if the charset can be deducted by other information as specified by the relevant Internet specification. This information has precedence over other information on the intro. Simonsen [Page 45] RFC 1345 Character Mnemonics & Character Sets June 1992 4.3.3 Compatibility If applications conforming to this memo interoperate with other versions of this memo, and encounter mnemonics that are undefined with this memo, they shall leave the mnemonic as it is coded. This provides for upward compatibility. 4.3.4 Conversion Between Mnemonic Charsets To determine which mnemonic charsets are permitted with the use of an Internet specification, please refer to that specification. It may be that only "ASCII" or "INVARIANT" is allowed as the base charset. ASCII is the most used character set, while INVARIANT will be very robust for traversing gateways, but it will cause trouble for (amongst other things) source code for several programming languages. The use of other character sets may be limited to agreement between the communicating parties. When such an agreement has been achieved, a conversion between different mnemonic charsets can be done according to the charset tables below, as characters occurring in both encodings are just transformed, and characters not existing in the receiving coded character set are represented by the intro character sequence of the receiving coded character set plus the character mnemonic, as described for the intro character sequence. The characters forming the mnemonic are translated into the receiving code, which must have these characters present. An undefined character in the originating coded character set is transformed into the following sequence: the intro character sequence, an underline, a question mark character, a "u" (for undefined) and then the hexadecimal value of the character with letters in lowercase (possibly more than one byte for multibyte character sets) and then a terminating underline character. Headers may need to be changed accordingly to reflect such conversion. The character mnemonic "/c" has a special meaning in specifying that a line is to be continued even if the next characters are specifying a new line. 5. CHARSET TABLES &charset ISO_646.basic:1983 &rem source: ECMA registry &alias ref &code 32 SP ! " ?? ?? % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ?? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ?? ?? ?? ?? _ ?? a b c d e f g h i j k l m n o p q r s t u v w x y z &charset INVARIANT &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " ?? ?? % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ?? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ?? ?? ?? ?? _ ?? a b c d e f g h i j k l m n o p q r s t u v w x y z ?? ?? ?? ?? DT Simonsen [Page 46] RFC 1345 Character Mnemonics & Character Sets June 1992 &charset ISO_646.irv:1983 &rem source: ECMA registry &alias iso-ir-2 &alias irv &g0esc x2840 &g1esc x2940 &g2esc x2a40 &g3esc x2b40 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT &charset BS_4730 &rem source: ECMA registry &alias iso-ir-4 &alias ISO646-GB &g0esc x2841 &g1esc x2941 &g2esc x2a41 &g3esc x2b41 &alias gb &alias uk &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT &charset ANSI_X3.4-1968 &rem source: ECMA registry &alias iso-ir-6 &alias ANSI_X3.4-1986 &alias ISO_646.irv:1991 &g0esc x2842 &g1esc x2942 &g2esc x2a42 &g3esc x2b42 &alias ASCII &alias ISO646-US &alias US-ASCII &alias us &alias IBM367 &alias cp367 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT &charset NATS-SEFI &rem source: ECMA registry &alias iso-ir-8-1 &g0esc x2843 &g1esc x2943 &g2esc x2a43 &g3esc x2b43 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Simonsen [Page 47] RFC 1345 Character Mnemonics & Character Sets June 1992 UA A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A: O: AA fS _ UB a b c d e f g h i j k l m n o p q r s t u v w x y z a: o: aa -N DT &charset NATS-SEFI-ADD &rem source: ECMA registry &alias iso-ir-8-2 &g0esc x2844 &g1esc x2944 &g2esc x2a44 &g3esc x2b44 &code 0 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? A! ?? ?? D/ E' ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? TH ?? ?? ?? ?? U: ?? ?? ?? ?? ?? AE O/ ?? ?? ?? ?? a! ?? ?? d/ e' ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? th ?? ?? ?? ?? u: ?? ?? ?? ?? ?? ae o/ ?? ?? ?? &charset NATS-DANO &rem source: ECMA registry &alias iso-ir-9-1 &g0esc x2845 &g1esc x2945 &g2esc x2a45 &g3esc x2b45 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! << >> DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? UA A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AE O/ AA fS _ UB a b c d e f g h i j k l m n o p q r s t u v w x y z ae o/ aa -N DT &charset NATS-DANO-ADD &rem source: ECMA registry &alias iso-ir-9-2 &g0esc x2846 &g1esc x2946 &g2esc x2a46 &g3esc x2b46 &code 0 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? A! ?? ?? D/ E' ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? TH ?? ?? ?? ?? U: ?? ?? ?? ?? ?? A: O: ?? ?? ?? ?? a! ?? ?? d/ e' ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? th ?? ?? ?? ?? u: ?? ?? ?? ?? ?? a: o: ?? ?? ?? &charset SEN_850200_B &rem source: ECMA registry &alias iso-ir-10 &alias FI &alias ISO646-FI &alias ISO646-SE &alias se &g0esc x2847 &g1esc x2947 &g2esc x2a47 &g3esc x2b47 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US Simonsen [Page 48] RFC 1345 Character Mnemonics & Character Sets June 1992 SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A: O: AA '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z a: o: aa '- DT &charset SEN_850200_C &rem source: ECMA registry &alias iso-ir-11 &alias ISO646-SE2 &g0esc x2848 &g1esc x2948 &g2esc x2a48 &g3esc x2b48 &alias se2 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? E' A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A: O: AA U: _ e' a b c d e f g h i j k l m n o p q r s t u v w x y z a: o: aa u: DT &charset JIS_C6220-1969-jp &rem source: ECMA registry &alias JIS_C6220-1969 &alias iso-ir-13 &alias katakana &alias x0201-7 &g0esc x2849 &g1esc x2949 &g2esc x2a49 &g3esc x2b49 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ._ <' >' ,_ .6 Wo a6 i6 u6 e6 o6 YA YU YO TU -6 A6 I6 U6 E6 O6 Ka Ki Ku Ke Ko Sa Si Su Se So Ta Ti Tu Te To Na Ni Nu Ne No Ha Hi Hu He Ho Ma Mi Mu Me Mo Ya Yu Yo Ra Ri Ru Re Ro Wa N6 "5 05 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? DT &charset JIS_C6220-1969-ro &rem source: ECMA registry &alias iso-ir-14 &g0esc x284a &g1esc x294a &g2esc x2a4a &g3esc x2b4a &alias jp &alias ISO646-JP &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( Ye )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT &charset IT &rem source: ECMA registry &alias iso-ir-15 &alias ISO646-IT &g0esc x2859 &g1esc x2959 &g2esc x2a59 &g3esc x2b59 &code 0 Simonsen [Page 49] RFC 1345 Character Mnemonics & Character Sets June 1992 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? SE A B C D E F G H I J K L M N O P Q R S T U V W X Y Z DG c, e' '> _ u! a b c d e f g h i j k l m n o p q r s t u v w x y z a! o! e! i! DT &charset PT &rem source: ECMA registry &alias iso-ir-16 &alias ISO646-PT &g0esc x284c &g1esc x294c &g2esc x2a4c &g3esc x2b4c &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? SE A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A? C, O? '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z a? c, o? DG DT &charset ES &rem source: ECMA registry &alias iso-ir-17 &alias ISO646-ES &g0esc x285a &g1esc x295a &g2esc x2a5a &g3esc x2b5a &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? SE A B C D E F G H I J K L M N O P Q R S T U V W X Y Z !I N? ?I '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z DG n? c, '? DT &charset greek7-old &rem source: ECMA registry &alias iso-ir-18 &g0esc x285b &g1esc x295b &g2esc x2a5b &g3esc x2b5b &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? '' a* b* q* d* e* f* g* y* i* c* k* l* m* n* o* p* j3 r* s* t* h* w* *s x* u* z* ?, ,, ,' '? _ '! A* B* Q* D* E* F* G* Y* I* C* K* L* M* N* O* P* ?? R* S* T* H* W* .M X* U* Z* ?; ;; ;' ': DT &charset latin-greek &rem source: ECMA registry &alias iso-ir-19 &g0esc x285c &g1esc x295c &g2esc x2a5c &g3esc x2b5c &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ Simonsen [Page 50] RFC 1345 Character Mnemonics & Character Sets June 1992 '! A* B* Q* D* E* F* G* Y* I* C* K* L* M* N* O* P* ?? R* S* T* H* W* .M X* U* Z* (! !! !) ': DT &charset DIN_66003 &rem source: ECMA registry &alias iso-ir-21 &g0esc x284b &g1esc x294b &g2esc x2a4b &g3esc x2b4b &alias de &alias ISO646-DE &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? SE A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A: O: U: '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z a: o: u: ss DT &charset NF_Z_62-010_(1973) &rem source: ECMA registry &alias iso-ir-25 &alias ISO646-FR1 &g0esc x2852 &g1esc x2952 &g2esc x2a52 &g3esc x2b52 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? a! A B C D E F G H I J K L M N O P Q R S T U V W X Y Z DG c, SE '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z e' u! e! ': DT &charset Latin-greek-1 &rem source: ECMA registry &alias iso-ir-27 &g0esc x2855 &g1esc x2955 &g2esc x2a55 &g3esc x2b55 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP C* " G* Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 Q* ; < = > P* D* A B C D E F G H I J K L M N O P Q R S T U V W X Y Z W* H* F* L* S* '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT &charset ISO_5427 &rem source: ECMA registry &alias iso-ir-37 &g0esc x284e &g1esc x294e &g2esc x2a4e &g3esc x2b4e &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ju a= b= c= d= e= f= g= h= i= j= k= l= m= n= o= p= ja r= s= t= u= z% v= %' y= z= s% je sc c% =' JU A= B= C= D= E= F= G= H= I= J= K= L= M= N= O= Simonsen [Page 51] RFC 1345 Character Mnemonics & Character Sets June 1992 P= JA R= S= T= U= Z% V= %" Y= Z= S% JE Sc C% DT &charset JIS_C6226-1978 &rem source: ECMA registry &alias iso-ir-42 &bits 16 &g0esc x2440 &g1esc x242940 &g2esc x242a40 &g3esc x242b40 &code2 1 1 SP ,_ ._ , . .6 : ; ! "5 05 '' '! ': '> '- _ *6 +6 *5 +5 +" +_ *_ ;_ 0_ -6 -? -N &code2 1 31 FD BD ?1 PP !! .3 .. '6 '9 "6 "9 ( ) (' )' <( )> (! !) <1 >1 <' >' <" >" (" )" + - +- *X -: = != < > =< >= 00 .: Ml Fm DG 1' 2' oC Ye DO Ct Pd % Nb & * At SE *1 *2 0m 0M 0o LZ &code2 2 1 Db OS fS uT UT dT DT :X =T -> <- -! -v =_ &code2 3 16 0 1 2 3 4 5 6 7 8 9 &code2 3 33 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z &code2 3 65 a b c d e f g h i j k l m n o p q r s t u v w x y z &code2 4 1 A5 a5 I5 i5 U5 u5 E5 e5 O5 o5 ka ga ki gi ku gu ke ge ko go sa za si zi su zu se ze so zo ta da ti di tU tu du te de to do na ni nu ne no ha ba pa hi bi pi hu bu pu he be pe ho bo po ma mi mu me mo yA ya yU yu yO yo ra ri ru re ro wA wa wi we wo n5 &code2 5 1 a6 A6 i6 I6 u6 U6 e6 E6 o6 O6 Ka Ga Ki Gi Ku Gu Ke Ge Ko Go Sa Za Si Zi Su Zu Se Ze So Zo Ta Da Ti Di TU Tu Du Te De To Do Na Ni Nu Ne No Ha Ba Pa Hi Bi Pi Hu Bu Pu He Be Pe Ho Bo Po Ma Mi Mu Me Mo YA Ya YU Yu YO Yo Ra Ri Ru Re Ro WA Wa Wi We Wo N6 Vi KA KE &code2 6 1 A* B* G* D* E* Z* Y* H* I* K* L* M* N* C* O* P* R* S* T* U* F* X* Q* W* &code2 6 33 a* b* g* d* e* z* y* h* i* k* l* m* n* c* o* p* r* s* t* u* f* x* q* w* &code2 7 1 A= B= V= G= D= E= IO Z% Z= I= J= K= L= M= N= O= P= R= S= T= U= F= H= C= C% S% Sc =" Y= %" JE JU JA &code2 7 49 a= b= v= g= d= e= io z% z= i= j= k= l= m= n= o= p= r= s= t= u= f= h= c= c% s% sc =' y= %' je ju ja &codex j 16 46 1 94 &codex j 47 47 1 51 &codex j 48 83 1 94 &charset BS_viewdata Simonsen [Page 52] RFC 1345 Character Mnemonics & Character Sets June 1992 &rem source: ECMA registry &alias iso-ir-47 &g0esc x2856 &g1esc x2956 &g2esc x2a56 &g3esc x2b56 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <- 12 -> -! OS '! a b c d e f g h i j k l m n o p q r s t u v w x y z 14 PP 34 -: DT &charset INIS &rem source: ECMA registry &alias iso-ir-49 &g0esc x2857 &g1esc x2957 &g2esc x2a57 &g3esc x2b57 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? ?? ?? DO % ?? ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?? ?? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( ?? )> ?? ?? ?? a b c d e f g h i j k l m n o p q r s t u v w x y z ?? !! ?? ?? DT &charset INIS-8 &rem source: ECMA registry &alias iso-ir-50 &g0esc x285d &g1esc x295d &g2esc x2a5d &g3esc x2b5d &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? a* b* g* d* C* ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? -> In 0S 1S 2S 3S 4S 5S 6S 7S 8S 9S +S -S Ru D* L* W* 0s 1s 2s 3s 4s 5s 6s 7s 8s 9s S* m* n* w* p* DT &charset INIS-cyrillic &rem source: ECMA registry &alias iso-ir-51 &g0esc x285e &g1esc x295e &g2esc x2a5e &g3esc x2b5e &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? RT ?? -> In a* b* g* d* S* m* n* w* p* C* D* L* W* =" -S +S ju a= b= c= d= e= f= g= h= i= j= k= l= m= n= o= p= ja r= s= t= u= z% v= %' y= z= s% je sc c% =' JU A= B= C= D= E= F= G= H= I= J= K= L= M= N= O= P= JA R= S= T= U= Z% V= %" Y= Z= S% JE Sc C% DT &charset ISO_5427:1981 &rem source: ECMA registry &alias iso-ir-54 &g0esc x2851 &g1esc x2951 &g2esc x2a51 &g3esc x2b51 Simonsen [Page 53] RFC 1345 Character Mnemonics & Character Sets June 1992 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? g3 d% g% ie io ds ii yi j% lj nj ts kj v% dz ?? y3 f3 v3 o3 ?? ?? ?? ?? ?? ?? ?? <( ?? )> ?? _ G3 D% G% IE IO DS II YI J% LJ NJ Ts KJ V% DZ =" Y3 F3 V3 O3 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? DT &charset ISO_5428:1980 &rem source: ECMA registry &alias iso-ir-55 &g0esc x2853 &g1esc x2953 &g2esc x2a53 &g3esc x2b53 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP "! "' ": "? "p "d "i ?? ?? ?? ?? ?? ?? ?? ?? << >> "9 "6 'G ,G ?? ?? ?? ?? ?? .M ?? ?? ?? ; ?? A* B* ?? G* D* E* T3 M3 Z* Y* H* I* K* L* M* N* C* O* P* K3 R* S* ?? T* U* F* X* Q* W* P3 ?? ?? a* b* b3 g* d* e* t3 m3 z* y* h* i* k* l* m* n* c* o* p* k3 r* s* *s t* u* f* x* q* w* p3 DT &charset GB_1988-80 &rem source: ECMA registry &alias iso-ir-57 &g0esc x2854 &g1esc x2954 &g2esc x2a54 &g3esc x2b54 &alias cn &alias ISO646-CN &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Ye % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT &charset GB_2312-80 &rem source: ECMA registry &alias iso-ir-58 &g0esc x2441 &g1esc x242941 &g2esc x242a41 &g3esc x242b41 &bits 16 &alias chinese &code2 1 1 SP ,_ .6 .M 'm '< ': +" *_ -6 ?1 !2 .3 '6 '9 "6 "9 (' )' <1 >1 << >> <+ >+ <7 7> (I )I (" )" +- *X -: :R AN OR +Z *P (U )U (- :: RT -T PP -L (A 0. In Io =3 =? ?2 CG 0( != !< !> =< >= 00 :. .: Ml Fm DG 1' 2' oC DO Cu Ct Pd %0 SE NB *1 *2 0m 0M 0o Dw Db OS fS uT UT :X -> <- -! -v =_ &code2 2 17 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Simonsen [Page 54] RFC 1345 Character Mnemonics & Character Sets June 1992 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) 1-o 2-o 3-o 4-o 5-o 6-o 7-o 8-o 9-o &code2 2 69 1c 2c 3c 4c 5c 6c 7c 8c 9c 10c &code2 2 81 1R 2R 3R 4R 5R 6R 7R 8R 9R aR bR cR &code2 3 1 ! " Nb Ye % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- &code2 4 1 A5 a5 I5 i5 U5 u5 E5 e5 O5 o5 ka ga ki gi ku gu ke ge ko go sa za si zi su zu se ze so zo ta da ti di tU tu du te de to do na ni nu ne no ha ba pa hi bi pi hu bu pu he be pe ho bo po ma mi mu me mo yA ya yU yu yO yo ra ri ru re ro wA wa wi we wo n5 &code2 5 1 a6 A6 i6 I6 u6 U6 e6 E6 o6 O6 Ka Ga Ki Gi Ku Gu Ke Ge Ko Go Sa Za Si Zi Su Zu Se Ze So Zo Ta Da Ti Di TU Tu Du Te De To Do Na Ni Nu Ne No Ha Ba Pa Hi Bi Pi Hu Bu Pu He Be Pe Ho Bo Po Ma Mi Mu Me Mo YA Ya YU Yu YO Yo Ra Ri Ru Re Ro WA Wa Wi We Wo N6 Vi KA KE &code2 6 1 A* B* G* D* E* Z* Y* H* I* K* L* M* N* C* O* P* R* S* T* U* F* X* Q* W* &code2 6 33 a* b* g* d* e* z* y* h* i* k* l* m* n* c* o* p* r* s* t* u* f* x* q* w* &code2 7 1 A= B= V= G= D= E= IO Z% Z= I= J= K= L= M= N= O= P= R= S= T= U= F= H= C= C% S% Sc =" Y= %" JE JU JA &code2 7 49 a= b= v= g= d= e= io z% z= i= j= k= l= m= n= o= p= r= s= t= u= f= h= c= c% s% sc =' y= %' je ju ja &code2 8 1 a- a' a< a! e- e' e< e! i- i' i< i! o- o' o< o! u- u' u< u! u:- u:< u:! u: e> &code2 8 37 b4 p4 m4 f4 d4 t4 n4 l4 g4 k4 h4 j4 q4 x4 zh ch sh r4 z4 c4 s4 a4 o4 e4 eh4 ai ei au ou an en aN eN er i4 u4 iu &code2 9 4 hh HH vv VV 3- 3_ 3! 3/ 4- 4_ 4! 4/ dr dR Dr DR dl dL Dl LD ur uR Ur UR ul uL Ul UL vr vR Udr uDr Vr UdR uDR VR vl vL Udl uDl Vl UdL uDL VL dh dLr dlR dH Dh DLr DlR DH vh vLr vlR vH Udh uDh Vh UdLr UdlR uDLr uDlR UdH uDH VLr VlR VH &codex c 16 54 1 94 &codex c 55 55 1 89 &codex c 56 87 1 94 Simonsen [Page 55] RFC 1345 Character Mnemonics & Character Sets June 1992 &charset NS_4551-1 &rem source: ECMA registry &alias iso-ir-60 &alias ISO646-NO &g0esc x2860 &g1esc x2960 &g2esc x2a60 &g3esc x2b60 &alias no &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AE O/ AA '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z ae o/ aa '- DT &charset NS_4551-2 &rem source: ECMA registry &alias ISO646-NO2 &alias iso-ir-61 &g0esc x2861 &g1esc x2961 &g2esc x2a61 &g3esc x2b61 &alias no2 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " PI DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AE O/ AA '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z ae o/ aa !! DT &charset NF_Z_62-010 &rem source: ECMA registry &alias iso-ir-69 &alias ISO646-FR &g0esc x2866 &g1esc x2966 &g2esc x2a66 &g3esc x2b66 &alias fr &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? a! A B C D E F G H I J K L M N O P Q R S T U V W X Y Z DG c, SE '> _ My a b c d e f g h i j k l m n o p q r s t u v w x y z e' u! e! ': DT &charset videotex-suppl &rem source: ECMA registry &alias iso-ir-70 &g0esc x2862 &g1esc x2962 &g2esc x2a62 &g3esc x2b62 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " ?? ?? % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I Ct Pd DO Ye Nb SE Cu '6 "6 << <- -! -> -v Simonsen [Page 56] RFC 1345 Character Mnemonics & Character Sets June 1992 DG +- 2S 3S *X My PI .M -: '9 "9 >> 14 12 34 ?I "1 "! "' "> "? "- "( ". ": ?? "0 ", ?? "" "; "< -M 1S Rg Co TM Md ?? ?? ?? ?? ?? ?? 18 38 58 78 Om AE D- -a H/ ?? IJ L. L/ O/ OE -o TH T/ NG 'n kk ae d/ d- h/ i. ij l. l/ o/ oe ss th t/ ng ?? &comb2 "' SP '' a a' A A' e e' E E' i i' I I' o o' O O' u u' U U' y y' Y Y' c c' C C' l l' L L' n n' N N' r r' R R' s s' S S' z z' Z Z' &comb2 "( SP '( a a( A A( g g( G G( u u( U U( &comb2 "< SP '< c c< C C< d d< D D< e e< E E< l l< L L< n n< N N< r r< R R< s s< S S< t t< T T< z z< Z Z< &comb2 ", SP ', c c, C C, g g, G G, k k, K K, l l, L L, n n, N N, r r, R R, s s, S S, t t, T T, &comb2 "> a a> A A> e e> E E> i i> I I> o o> O O> u u> U U> y y> Y Y> c c> C C> g g> G G> h h> H H> j j> J J> s s> S S> w w> W W> &comb2 ": SP ': a a: A A: e e: E E: i i: I I: o o: O O: u u: U U: y y: Y Y: &comb2 ". SP '. c c. C C. e e. E E. g g. G G. I I. z z. Z Z. &comb2 "" SP '" o o" O O" u u" U U" &comb2 "! a a! A A! e e! E E! i i! I I! o o! O O! u u! U U! &comb2 "- a a- A A- e e- E E- i i- I I- o o- O O- u u- U U- &comb2 "; SP '; a a; A A; e e; E E; i i; I I; u u; U U; &comb2 "0 SP '0 a aa A AA u u0 U U0 &comb2 "? SP '? a a? A A? n n? N N? i i? I I? o o? O O? u u? U U? &charset PT2 &rem source: ECMA registry &alias iso-ir-84 &alias ISO646-PT2 &g0esc x2867 &g1esc x2967 &g2esc x2a67 &g3esc x2b67 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? '' A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A? C, O? '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z a? c, o? '- DT &charset ES2 &rem source: ECMA registry &alias iso-ir-85 &alias ISO646-ES2 &g0esc x2868 &g1esc x2968 &g2esc x2a68 &g3esc x2b68 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Sb A B C D E F G H I J K L M N O P Q R S T U V W X Y Z !I N? C, ?I _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z '' n? c, ': DT &charset MSZ_7795.3 &rem source: ECMA registry &alias iso-ir-86 Simonsen [Page 57] RFC 1345 Character Mnemonics & Character Sets June 1992 &alias ISO646-HU &g0esc x2869 &g1esc x2969 &g2esc x2a69 &g3esc x2b69 &alias hu &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? A' A B C D E F G H I J K L M N O P Q R S T U V W X Y Z E' O: U: '> _ a' a b c d e f g h i j k l m n o p q r s t u v w x y z e' o: u: '" DT &charset JIS_C6226-1983 &rem source: ECMA registry &alias iso-ir-87 &bits 16 &g0esc x2442 &g1esc x242942 &g2esc x242a42 &g3esc x242b42 &alias x0208 &alias JIS_X0208-1983 &code2 1 1 SP ,_ ._ , . .6 : ; ! "5 05 '' '! ': '> '- _ *6 +6 *5 +5 +" +_ *_ ;_ 0_ -6 -? -N &code2 1 31 FD BD ?1 PP !! .3 .. '6 '9 "6 "9 ( ) (' )' <( )> (! !) <1 >1 <' >' <" >" (" )" + - +- *X -: = != < > =< >= 00 .: Ml Fm DG 1' 2' oC Ye DO Ct Pd % Nb & * At SE *1 *2 0m 0M 0o LZ &code2 2 1 Db OS fS uT UT dT DT :X =T -> <- -! -v =_ &code2 2 26 (- -) (_ )_ (C )C (U )U &code2 2 42 AN OR NO => <= FA TE &code2 2 60 -V -T (A dP NB =3 HI <* *> RT CG 0( :. In DI &code2 2 82 AA %0 MX Mb Md /- /= PI &code2 2 94 Ci &code2 3 16 0 1 2 3 4 5 6 7 8 9 &code2 3 33 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z &code2 3 65 a b c d e f g h i j k l m n o p q r s t u v w x y z &code2 4 1 A5 a5 I5 i5 U5 u5 E5 e5 O5 o5 ka ga ki gi ku gu ke ge ko go sa za si zi su zu se ze so zo ta da ti di tU tu du te de to do na ni nu ne no ha ba pa hi bi pi hu bu pu he be pe ho bo po ma mi mu me mo yA ya yU yu yO yo ra ri ru re ro wA wa wi we wo n5 &code2 5 1 a6 A6 i6 I6 u6 U6 e6 E6 o6 O6 Ka Ga Ki Gi Ku Gu Ke Ge Ko Go Sa Za Si Zi Su Zu Se Ze So Zo Ta Da Ti Di TU Tu Du Te De To Do Na Ni Nu Ne No Ha Simonsen [Page 58] RFC 1345 Character Mnemonics & Character Sets June 1992 Ba Pa Hi Bi Pi Hu Bu Pu He Be Pe Ho Bo Po Ma Mi Mu Me Mo YA Ya YU Yu YO Yo Ra Ri Ru Re Ro WA Wa Wi We Wo N6 Vi KA KE &code2 6 1 A* B* G* D* E* Z* Y* H* I* K* L* M* N* C* O* P* R* S* T* U* F* X* Q* W* &code2 6 33 a* b* g* d* e* z* y* h* i* k* l* m* n* c* o* p* r* s* t* u* f* x* q* w* &code2 7 1 A= B= V= G= D= E= IO Z% Z= I= J= K= L= M= N= O= P= R= S= T= U= F= H= C= C% S% Sc =" Y= %" JE JU JA &code2 7 49 a= b= v= g= d= e= io z% z= i= j= k= l= m= n= o= p= r= s= t= u= f= h= c= c% s% sc =' y= %' je ju ja &code2 8 1 hh vv dr dl ul ur vr dh vl uh vh HH VV DR LD UL UR VR DH VL UH VH Vr dH Vl uH vH vR Dh vL Uh Vh &codex j 16 46 1 94 &codex j 47 47 1 51 &codex j 48 83 1 94 &codex j 84 84 1 4 &charset greek7 &rem source: ECMA registry &alias iso-ir-88 &g0esc x286a &g1esc x296a &g2esc x2a6a &g3esc x2b6a &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A* B* G* D* E* Z* Y* H* I* ?? K* L* M* N* C* O* P* R* S* T* U* F* ?? X* Q* W* <( // )> '> _ '! a* b* g* d* e* z* y* h* i* ?? k* l* m* n* c* o* p* r* s* t* u* f* *s x* q* w* (! !! !) '- DT &charset ASMO_449 &rem source: ECMA registry &alias ISO_9036 &alias arabic7 &alias iso-ir-89 &g0esc x286b &g1esc x296b &g2esc x2a6b &g3esc x2b6b &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + ,+ - . / 0 1 2 3 4 5 6 7 8 9 : ;+ < = > ?+ At H' aM aH wH ah yH a+ b+ tm t+ tk g+ hk x+ d+ dk r+ z+ s+ sn c+ dd tj zH e+ i+ <( // )> '> _ ++ f+ q+ k+ l+ m+ n+ h+ w+ j+ y+ :+ "+ =+ /+ '+ 1+ 3+ 0+ ?? ?? ?? ?? ?? ?? ?? ?? (! !! !) '- DT &charset iso-ir-90 Simonsen [Page 59] RFC 1345 Character Mnemonics & Character Sets June 1992 &rem source: ECMA registry &g0esc x286c &g1esc x296c &g2esc x2a6c &g3esc x2b6c &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I Ct Pd DO Ye ?? SE ?? '6 "6 << <- -! -> -v DG +- 2S 3S *X My PI .M -: '9 "9 >> 14 12 34 ?I ?? "! "' "> "? "- "( ". ": ?? "0 ", "_ "" "; "< -M 1S Rg Co TM Md ?? ?? ?? ?? ?? ?? 18 38 58 78 Om AE D- -a H/ ?? IJ L. L/ O/ OE -o TH T/ NG 'n kk ae d/ d- h/ i. ij l. l/ o/ oe ss th t/ ng ?? &comb2 "' SP '' a a' A A' e e' E E' i i' I I' o o' O O' u u' U U' y y' Y Y' c c' C C' l l' L L' n n' N N' r r' R R' s s' S S' z z' Z Z' &comb2 "( SP '( a a( A A( g g( G G( u u( U U( &comb2 "< SP '< c c< C C< d d< D D< e e< E E< l l< L L< n n< N N< r r< R R< s s< S S< t t< T T< z z< Z Z< &comb2 ", SP ', c c, C C, g g, G G, k k, K K, l l, L L, n n, N N, r r, R R, s s, S S, t t, T T, &comb2 "> a a> A A> e e> E E> i i> I I> o o> O O> u u> U U> y y> Y Y> c c> C C> g g> G G> h h> H H> j j> J J> s s> S S> w w> W W> &comb2 ": SP ': a a: A A: e e: E E: i i: I I: o o: O O: u u: U U: y y: Y Y: &comb2 ". SP '. c c. C C. e e. E E. g g. G G. I I. z z. Z Z. &comb2 "" SP '" o o" O O" u u" U U" &comb2 "! a a! A A! e e! E E! i i! I I! o o! O O! u u! U U! &comb2 "- a a- A A- e e- E E- i i- I I- o o- O O- u u- U U- &comb2 "; SP '; a a; A A; e e; E E; i i; I I; u u; U U; &comb2 "0 SP '0 a aa A AA u u0 U U0 &comb2 "? SP '? a a? A A? n n? N N? i i? I I? o o? O O? u u? U U? &charset JIS_C6229-1984-a &rem source: ECMA registry &alias iso-ir-91 &g0esc x286d &g1esc x296d &g2esc x2a6d &g3esc x2b6d &alias jp-ocr-a &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? " Pd DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; 1h = 3h ? ?? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ?? Ye 2h '> _ ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 4h ?? ?? DT &charset JIS_C6229-1984-b &rem source: ECMA registry &alias iso-ir-92 Simonsen [Page 60] RFC 1345 Character Mnemonics & Character Sets June 1992 &alias ISO646-JP-OCR-B &g0esc x286e &g1esc x296e &g2esc x2a6e &g3esc x2b6e &alias jp-ocr-b &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z '> _ ?? a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) ?? DT &charset JIS_C6229-1984-b-add &rem source: ECMA registry &alias iso-ir-93 &g0esc x286f &g1esc x296f &g2esc x2a6f &g3esc x2b6f &alias jp-ocr-b-add &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? ?? Pd Cu // ?? SE ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? DT &charset JIS_C6229-1984-hand &rem source: ECMA registry &alias iso-ir-94 &g0esc x2870 &g1esc x2970 &g2esc x2a70 &g3esc x2b70 &alias jp-ocr-hand &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z '> _ ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? !! ?? ?? DT &charset JIS_C6229-1984-hand-add &rem source: ECMA registry &alias iso-ir-95 &g0esc x2871 &g1esc x2971 &g2esc x2a71 &g3esc x2b71 &alias jp-ocr-hand-add &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? ?? ?? ?? // ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? DT Simonsen [Page 61] RFC 1345 Character Mnemonics & Character Sets June 1992 &charset JIS_C6229-1984-kana &rem source: ECMA registry &alias iso-ir-96 &g0esc x2872 &g1esc x2972 &g2esc x2a72 &g3esc x2b72 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? <' >' ?? ?? Wo ?? ?? ?? ?? ?? ?? ?? ?? ?? -6 A6 I6 U6 E6 O6 Ka Ki Ku Ke Ko Sa Si Su Se So Ta Ti Tu Te To Na Ni Nu Ne No Ha Hi Hu He Ho Ma Mi Mu Me Mo Ya Yu Yo Ra Ri Ru Re Ro Wa N6 "5 05 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? DT &charset ISO_2033-1983 &rem source: ECMA registry &alias iso-ir-98 &alias e13b &g0esc x2873 &g1esc x2973 &g2esc x2a73 &g3esc x2b73 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 1j 2j 3j 4j ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? DT &charset ANSI_X3.110-1983 &rem source: ECMA registry &alias iso-ir-99 &alias CSA_T500-1983 &alias NAPLPS &g0esc x2874 &g1esc x2974 &g2esc x2a74 &g3esc x2b74 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " ?? ?? % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I Ct Pd DO Ye Nb SE Cu '6 "6 << <- -! -> -v DG +- 2S 3S *X My PI .M -: '9 "9 >> 14 12 34 ?I ?? "! "' "> "? "- "( ". ": "/ "0 ", "_ "" "; "< -M 1S Rg Co TM Md HH VV FD BD Fd Bd 18 38 58 78 Om AE D- -a H/ VH IJ L. L/ O/ OE -o TH T/ NG 'n kk ae d/ d- h/ i. ij l. l/ o/ oe ss th t/ ng ?? &comb2 "' SP '' a a' A A' e e' E E' i i' I I' o o' O O' u u' U U' y y' Y Y' c c' C C' l l' L L' n n' N N' r r' R R' s s' S S' z z' Z Z' &comb2 "( SP '( a a( A A( g g( G G( u u( U U( Simonsen [Page 62] RFC 1345 Character Mnemonics & Character Sets June 1992 &comb2 "< SP '< c c< C C< d d< D D< e e< E E< l l< L L< n n< N N< r r< R R< s s< S S< t t< T T< z z< Z Z< &comb2 ", SP ', c c, C C, g g, G G, k k, K K, l l, L L, n n, N N, r r, R R, s s, S S, t t, T T, &comb2 "> a a> A A> e e> E E> i i> I I> o o> O O> u u> U U> y y> Y Y> c c> C C> g g> G G> h h> H H> j j> J J> s s> S S> w w> W W> &comb2 ": SP ': a a: A A: e e: E E: i i: I I: o o: O O: u u: U U: y y: Y Y: &comb2 ". SP '. c c. C C. e e. E E. g g. G G. I I. z z. Z Z. &comb2 "" SP '" o o" O O" u u" U U" &comb2 "! a a! A A! e e! E E! i i! I I! o o! O O! u u! U U! &comb2 "- SP '- a a- A A- e e- E E- i i- I I- o o- O O- u u- U U- &comb2 "; SP '; a a; A A; e e; E E; i i; I I; u u; U U; &comb2 "0 SP '0 a aa A AA u u0 U U0 &comb2 "? a a? A A? n n? N N? i i? I I? o o? O O? u u? U U? &charset ISO_8859-1:1987 &rem source: ECMA registry &alias iso-ir-100 &g1esc x2d41 &g2esc x2e41 &g3esc x2f41 &alias ISO_8859-1 &alias ISO-8859-1 &alias latin1 &alias l1 &alias IBM819 &alias CP819 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I Ct Pd Cu Ye BB SE ': Co -a << NO -- Rg '- DG +- 2S 3S '' My PI .M ', 1S -o >> 14 12 34 ?I A! A' A> A? A: AA AE C, E! E' E> E: I! I' I> I: D- N? O! O' O> O? O: *X O/ U! U' U> U: Y' TH ss a! a' a> a? a: aa ae c, e! e' e> e: i! i' i> i: d- n? o! o' o> o? o: -: o/ u! u' u> u: y' th y: &charset ISO_8859-2:1987 &rem source: ECMA registry &alias iso-ir-101 &g1esc x2d42 &g2esc x2e42 &g3esc x2f42 &alias ISO_8859-2 &alias ISO-8859-2 &alias latin2 &alias l2 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US Simonsen [Page 63] RFC 1345 Character Mnemonics & Character Sets June 1992 SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS A; '( L/ Cu L< S' SE ': S< S, T< Z' -- Z< Z. DG a; '; l/ '' l< s' '< ', s< s, t< z' '" z< z. R' A' A> A( A: L' C' C, C< E' E; E: E< I' I> D< D/ N' N< O' O> O" O: *X R< U0 U' U" U: Y' T, ss r' a' a> a( a: l' c' c, c< e' e; e: e< i' i> d< d/ n' n< o' o> o" o: -: r< u0 u' u" u: y' t, '. &charset T.61-7bit &rem source: ECMA registry &alias iso-ir-102 &g0esc x2875 &g1esc x2975 &g2esc x2a75 &g3esc x2b75 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( ?? )> ?? _ ?? a b c d e f g h i j k l m n o p q r s t u v w x y z ?? !! ?? ?? DT &charset T.61-8bit &alias T.61 &rem source: ECMA registry &alias iso-ir-103 &g0esc x2876 &g1esc x2976 &g2esc x2a76 &g3esc x2b76 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " ?? ?? % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( ?? )> ?? _ ?? a b c d e f g h i j k l m n o p q r s t u v w x y z ?? !! ?? ?? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I Ct Pd DO Ye Nb SE Cu ?? ?? << ?? ?? ?? ?? DG +- 2S 3S *X My PI .M -: ?? ?? >> 14 12 34 ?I ?? "! "' "> "? "- "( ". ": ?? "0 ", "_ "" "; "< ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? Om AE D- -a H/ ?? IJ L. L/ O/ OE -o TH T/ NG 'n kk ae d/ d- h/ i. ij l. l/ o/ oe ss th t/ ng ?? &comb2 "' SP '' a a' A A' e e' E E' i i' I I' o o' O O' u u' U U' y y' Y Y' c c' C C' l l' L L' n n' N N' r r' R R' s s' S S' z z' Z Z' &comb2 "( SP '( a a( A A( g g( G G( u u( U U( &comb2 "< SP '< c c< C C< d d< D D< e e< E E< l l< L L< n n< N N< r r< R R< s s< S S< t t< T T< z z< Z Z< &comb2 ", SP ', c c, C C, g g, G G, k k, K K, l l, L L, n n, N N, r r, R R, s s, S S, t t, T T, &comb2 "> a a> A A> e e> E E> i i> I I> o o> O O> u u> U U> y y> Y Y> c c> C C> g g> G G> h h> H H> j j> J J> s s> S S> w w> W W> Simonsen [Page 64] RFC 1345 Character Mnemonics & Character Sets June 1992 &comb2 ": SP ': a a: A A: e e: E E: i i: I I: o o: O O: u u: U U: y y: Y Y: &comb2 ". SP '. c c. C C. e e. E E. g g. G G. I I. z z. Z Z. &comb2 "" SP '" o o" O O" u u" U U" &comb2 "! a a! A A! e e! E E! i i! I I! o o! O O! u u! U U! &comb2 "- SP '- a a- A A- e e- E E- i i- I I- o o- O O- u u- U U- &comb2 "; SP '; a a; A A; e e; E E; i i; I I; u u; U U; &comb2 "0 SP '0 a aa A AA u u0 U U0 &comb2 "? a a? A A? n n? N N? i i? I I? o o? O O? u u? U U? &charset ISO_8859-3:1988 &rem source: ECMA registry &alias iso-ir-109 &g1esc x2d43 &g2esc x2e43 &g3esc x2f43 &alias ISO_8859-3 &alias ISO-8859-3 &alias latin3 &alias l3 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS H/ '( Pd Cu ?? H> SE ': I. S, G( J> -- ?? Z. DG h/ 2S 3S '' My h> .M ', i. s, g( j> 12 ?? z. A! A' A> ?? A: C. C> C, E! E' E> E: I! I' I> I: ?? N? O! O' O> G. O: *X G> U! U' U> U: U( S> ss a! a' a> ?? a: c. c> c, e! e' e> e: i! i' i> i: ?? n? o! o' o> g. o: -: g> u! u' u> u: u( s> '. &charset ISO_8859-4:1988 &rem source: ECMA registry &alias iso-ir-110 &g1esc x2d44 &g2esc x2e44 &g3esc x2f44 &alias ISO_8859-4 &alias ISO-8859-4 &alias latin4 &alias l4 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS A; kk R, Cu I? L, SE ': S< E- G, T/ -- Z< '- DG a; '; r, '' i? l, '< ', s< e- g, t/ NG z< ng A- A' A> A? A: AA AE I; C< E' E; E: E. I' I> I- D/ N, O- K, O> O? O: *X O/ U; U' U> U: U? U- ss Simonsen [Page 65] RFC 1345 Character Mnemonics & Character Sets June 1992 a- a' a> a? a: aa ae i; c< e' e; e: e. i' i> i- d/ n, o- k, o> o? o: -: o/ u; u' u> u: u? u- '. &charset ECMA-cyrillic &rem source: ECMA registry &alias iso-ir-111 &g1esc x2d40 &g2esc x2e40 &g3esc x2f40 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS IO D% G% IE DS II YI J% LJ NJ Ts KJ -- V% DZ N0 io d% g% ie ds ii yi j% lj nj ts kj Cu v% dz A= B= V= G= D= E= Z% Z= I= J= K= L= M= N= O= P= R= S= T= U= F= H= C= C% S% Sc =" Y= %" JE JU JA a= b= v= g= d= e= z% z= i= j= k= l= m= n= o= p= r= s= t= u= f= h= c= c% s% sc =' y= %' je ju ja &charset CSA_Z243.4-1985-1 &rem source: ECMA registry &alias iso-ir-121 &g0esc x2877 &g1esc x2977 &g2esc x2a77 &g3esc x2b77 &alias ISO646-CA &alias csa7-1 &alias ca &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? a! A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a> c, e> i> _ o> a b c d e f g h i j k l m n o p q r s t u v w x y z e' u! e! u> DT &charset CSA_Z243.4-1985-2 &rem source: ECMA registry &alias iso-ir-122 &alias ISO646-CA2 &g0esc x2878 &g1esc x2978 &g2esc x2a78 &g3esc x2b78 &alias csa7-2 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? a! A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a> c, e> E' _ o> a b c d e f g h i j k l m n o p q r s t u v w x y z e' u! e! u> DT &charset CSA_Z243.4-1985-gr &rem source: ECMA registry &alias iso-ir-123 &g1esc x2d45 &g2esc x2e45 &g3esc x2f45 Simonsen [Page 66] RFC 1345 Character Mnemonics & Character Sets June 1992 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I ': Pd Ct Ye +- '' (S )S 12 +S ', -- .M -S 0S 1S 2S 3S 4S 5S 6S 7S 8S 9S 14 34 <= != >= ?I A! A' A> C, E! E' E> E: I' I> I: N? O' O> U! U' U> U: Rg SE PI m* -a -o '6 '9 "6 "9 << >> DG BB a! a' a> c, e! e' e> e: i' i> i: n? o' o> u! u' u> u: Co hh vv ur ul dl dr vr uh vl dh vh NO FB &charset ISO_8859-7:1987 &rem source: ECMA registry &alias iso-ir-126 &g1esc x2d46 &g2esc x2e46 &g3esc x2f46 &alias ISO_8859-7 &alias ISO-8859-7 &alias ELOT_928 &alias ECMA-118 &alias greek &alias greek8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS 9' '9 Pd ?? ?? BB SE ': Co ?? << NO -- ?? -M DG +- 2S 3S '' '% A% .M E% Y% I% >> O% 12 U% W% i3 A* B* G* D* E* Z* Y* H* I* K* L* M* N* C* O* P* R* ?? S* T* U* F* X* Q* W* J* V* a% e% y% i% u3 a* b* g* d* e* z* y* h* i* k* l* m* n* c* o* p* r* *s s* t* u* f* x* q* w* j* v* o% u% w% ?? &charset ISO_8859-6:1987 &rem source: ECMA registry &alias iso-ir-127 &g1esc x2d47 &g2esc x2e47 &g3esc x2f47 &alias ISO_8859-6 &alias ISO-8859-6 &alias ECMA-114 &alias ASMO-708 &alias arabic &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Simonsen [Page 67] RFC 1345 Character Mnemonics & Character Sets June 1992 At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS ?? ?? ?? Cu ?? ?? ?? ?? ?? ?? ?? ,+ -- ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ;+ ?? ?? ?? ?+ ?? H' aM aH wH ah yH a+ b+ tm t+ tk g+ hk x+ d+ dk r+ z+ s+ sn c+ dd tj zH e+ i+ ?? ?? ?? ?? ?? ++ f+ q+ k+ l+ m+ n+ h+ w+ j+ y+ :+ "+ =+ /+ '+ 1+ 3+ 0+ ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? &charset T.101-G2 &rem source: ECMA registry &alias iso-ir-128 &g0esc x287c &g1esc x297c &g2esc x2a7c &g3esc x2b7c &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " ?? ?? % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I Ct Pd DO Ye Nb SE Cu '6 "6 << <- -! -> -v DG +- 2S 3S *X My PI .M -: '9 "9 >> 14 12 34 ?I ?? "! "' "> "? "- "( ". ": "/ "0 ", "_ "" "; "< -M 1S Rg Co TM Md HH VV FD BD Fd Bd 18 38 58 78 Om AE D- -a H/ VH IJ L. L/ O/ OE -o TH T/ NG 'n kk ae d/ d- h/ i. ij l. l/ o/ oe ss th t/ ng ?? &comb2 "' SP '' a a' A A' e e' E E' i i' I I' o o' O O' u u' U U' y y' Y Y' c c' C C' l l' L L' n n' N N' r r' R R' s s' S S' z z' Z Z' &comb2 "( SP '( a a( A A( g g( G G( u u( U U( &comb2 "< SP '< c c< C C< d d< D D< e e< E E< l l< L L< n n< N N< r r< R R< s s< S S< t t< T T< z z< Z Z< &comb2 ", SP ', c c, C C, g g, G G, k k, K K, l l, L L, n n, N N, r r, R R, s s, S S, t t, T T, &comb2 "> a a> A A> e e> E E> i i> I I> o o> O O> u u> U U> y y> Y Y> c c> C C> g g> G G> h h> H H> j j> J J> s s> S S> w w> W W> &comb2 ": SP ': a a: A A: e e: E E: i i: I I: o o: O O: u u: U U: y y: Y Y: &comb2 ". SP '. c c. C C. e e. E E. g g. G G. I I. z z. Z Z. &comb2 "" SP '" o o" O O" u u" U U" &comb2 "! a a! A A! e e! E E! i i! I I! o o! O O! u u! U U! &comb2 "- SP '- a a- A A- e e- E E- i i- I I- o o- O O- u u- U U- &comb2 "; SP '; a a; A A; e e; E E; i i; I I; u u; U U; &comb2 "0 SP '0 a aa A AA u u0 U U0 &comb2 "? a a? A A? n n? N N? i i? I I? o o? O O? u u? U U? &charset ISO_8859-8:1988 &rem source: ECMA registry &alias iso-ir-138 Simonsen [Page 68] RFC 1345 Character Mnemonics & Character Sets June 1992 &g1esc x2d48 &g2esc x2e48 &g3esc x2f48 &alias ISO_8859-8 &alias ISO-8859-8 &alias hebrew &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS ?? Ct Pd Cu Ye BB SE ': Co *X << NO -- Rg '- DG +- 2S 3S '' My PI .M ', 1S -: >> 14 12 34 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? =2 A+ B+ G+ D+ H+ W+ Z+ X+ Tj J+ K% K+ L+ M% M+ N% N+ S+ E+ P% P+ Zj ZJ Q+ R+ Sh T+ ?? ?? ?? ?? ?? &charset CSN_369103 &rem source: ECMA registry &alias iso-ir-139 &g1esc x2d49 &g2esc x2e49 &g3esc x2f49 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS A; '( L/ DO L< S' SE ': S< S, T< Z' -- Z< Z. DG a; '; l/ '' l< s' '< ', s< s, t< z' '" z< z. R' A' A> A( A: L' C' C, C< E' E; E: E< I' I> D< D/ N' N< O' O> O" O: *X R< U0 U' U" U: Y' T, ss r' a' a> a( a: l' c' c, c< e' e; e: e< i' i> d< d/ n' n< o' o> o" o: -: r< u0 u' u" u: y' t, '. &charset JUS_I.B1.002 &rem source: ECMA registry &alias iso-ir-141 &g0esc x287a &g1esc x297a &g2esc x2a7a &g3esc x2b7a &alias ISO646-YU &alias js &alias yu &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Z< A B C D E F G H I J K L M N O P Q R S T U V W X Y Z S< D/ C' C< _ z< a b c d e f g h i j k l m n o p q r s t u v w x y z s< d/ c' c< DT &charset ISO_6937-2-add Simonsen [Page 69] RFC 1345 Character Mnemonics & Character Sets June 1992 &rem source: ECMA registry and ISO 6937-2:1983 &alias iso-ir-142 &g1esc x2d4a &g2esc x2e4a &g3esc x2f4a &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I Ct Pd DO Ye ?? SE ?? '6 "6 << <- -! -> -v DG +- 2S 3S *X My PI .M -: '9 "9 >> 14 12 34 ?I ?? "! "' "> "? "- "( ". ": ?? "0 ", "_ "" "; "< -M 1S Rg Co TM Md NO BB ?? ?? ?? ?? 18 38 58 78 Om AE D- -a H/ ?? IJ L. L/ O/ OE -o TH T/ NG 'n kk ae d/ d- h/ i. ij l. l/ o/ oe ss th t/ ng -- &comb2 "' SP '' a a' A A' e e' E E' i i' I I' o o' O O' u u' U U' y y' Y Y' c c' C C' l l' L L' n n' N N' r r' R R' s s' S S' z z' Z Z' &comb2 "( SP '( a a( A A( g g( G G( u u( U U( &comb2 "< SP '< c c< C C< d d< D D< e e< E E< l l< L L< n n< N N< r r< R R< s s< S S< t t< T T< z z< Z Z< &comb2 ", SP ', c c, C C, g g, G G, k k, K K, l l, L L, n n, N N, r r, R R, s s, S S, t t, T T, &comb2 "> a a> A A> e e> E E> i i> I I> o o> O O> u u> U U> y y> Y Y> c c> C C> g g> G G> h h> H H> j j> J J> s s> S S> w w> W W> &comb2 ": SP ': a a: A A: e e: E E: i i: I I: o o: O O: u u: U U: y y: Y Y: &comb2 ". SP '. c c. C C. e e. E E. g g. G G. I I. z z. Z Z. &comb2 "" SP '" o o" O O" u u" U U" &comb2 "! a a! A A! e e! E E! i i! I I! o o! O O! u u! U U! &comb2 "- SP '- a a- A A- e e- E E- i i- I I- o o- O O- u u- U U- &comb2 "; SP '; a a; A A; e e; E E; i i; I I; u u; U U; &comb2 "0 SP '0 a aa A AA u u0 U U0 &comb2 "? a a? A A? n n? N N? i i? I I? o o? O O? u u? U U? &charset IEC_P27-1 &rem source: ECMA registry &alias iso-ir-143 &g1esc x2d4b &g2esc x2e4b &g3esc x2f4b &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC '< =3 AN OR (U )U (C )C <= => .: :. (- -) (_ )_ In Io 00 NB dP ?1 ?2 ?- ?= =< != >= <> NO FA TE A+ OS PP G* D* -T -V -L H* L* 1' 2' C* -+ Simonsen [Page 70] RFC 1345 Character Mnemonics & Character Sets June 1992 P* 2S S* *X 3S U* F* .M Q* W* /0 >V RT f( 0( +- DG a* b* g* d* e* z* y* h* i* k* l* m* n* c* %0 p* r* s* -: t* u* f* x* q* w* /- <- -! -> -v '- &charset ISO_8859-5:1988 &rem source: ECMA registry &alias iso-ir-144 &g1esc x2d4c &g2esc x2e4c &g3esc x2f4c &alias ISO_8859-5 &alias ISO-8859-5 &alias cyrillic &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS IO D% G% IE DS II YI J% LJ NJ Ts KJ -- V% DZ A= B= V= G= D= E= Z% Z= I= J= K= L= M= N= O= P= R= S= T= U= F= H= C= C% S% Sc =" Y= %" JE JU JA a= b= v= g= d= e= z% z= i= j= k= l= m= n= o= p= r= s= t= u= f= h= c= c% s% sc =' y= %' je ju ja N0 io d% g% ie ds ii yi j% lj nj ts kj SE v% dz &charset JUS_I.B1.003-serb &rem source: ECMA registry &alias iso-ir-146 &g0esc x287b &g1esc x297b &g2esc x2a7b &g3esc x2b7b &alias serbian &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Z% A= B= C= D= E= F= G= H= I= J% K= L= M= N= O= P= LJ R= S= T= U= V= NJ DZ DS Z= S% D% Ts C% _ z% a= b= c= d= e= f= g= h= i= j% k= l= m= n= o= p= lj r= s= t= u= v= nj dz ds z= s% d% ts c% DT &charset JUS_I.B1.003-mac &rem source: ECMA registry &alias macedonian &alias iso-ir-147 &g0esc x287d &g1esc x297d &g2esc x2a7d &g3esc x2b7d &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Z% A= B= C= D= E= F= G= H= I= J% K= L= M= N= O= P= LJ R= S= T= U= V= NJ DZ DS Z= S% G% KJ C% _ z% a= b= c= d= e= f= g= h= i= j% k= l= m= n= o= p= lj r= s= t= u= v= nj dz ds z= s% g% kj c% DT Simonsen [Page 71] RFC 1345 Character Mnemonics & Character Sets June 1992 &charset ISO_8859-9:1989 &rem source: ECMA registry &alias iso-ir-148 &g1esc x2d4d &g2esc x2e4d &g3esc x2f4d &alias ISO_8859-9 &alias ISO-8859-9 &alias latin5 &alias l5 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS !I Ct Pd Cu Ye BB SE ': Co -a << NO -- Rg '- DG +- 2S 3S '' My PI .M ', 1S -o >> 14 12 34 ?I A! A' A> A? A: AA AE C, E! E' E> E: I! I' I> I: G( N? O! O' O> O? O: *X O/ U! U' U> U: I. S, ss a! a' a> a? a: aa ae c, e! e' e; e: e. i' i> i- g( n? o! o' o> o? o: -: o/ u! u' u> u: i. s, y: &charset KS_C_5601-1987 &rem source: ECMA registry &alias iso-ir-149 &alias KS_C_5601-1989 &alias KSC_5601 &bits 16 &g0esc x2443 &g1esc x242943 &g2esc x242a43 &g3esc x242b43 &alias korean &code2 1 1 SP ,_ .6 .M .. .3 ': +" -N -M PP // ?1 '6 '9 "6 "9 (' )' <1 >1 <+ >+ <' >' <" >" (" )" +- *X -: != =< >= 00 .: DG 1' 2' oC Ye AA Ct Pd Ml Fm -V -T (A dP NB =3 HI SE :X *1 *2 0m 0M 0o Dw Db OS fS uT UT dT DT -> <- -! -v <> =2 <* *> RT CG 0( :. In DI &code2 2 1 => == FA TE '' '? '< '( '" '0 '. ', '; !I ?I :R Io +Z *P Cu oF %0 Tl PL Tr PR cS- cS cH cH- cC- cC 0. cD- Rr 0L 0R .S RF RY RK RZ RH RX =T:) tel TEL H PI /- /= UD //> Mb Md M8 M16 KSC (JU) N0 Co TM am pm Tel &code2 3 1 ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( W= )> '> _ a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- &codex k 4 4 1 94 &code2 5 1 1r 2r 3r 4r 5r 6r 7r 8r 9r ar br cr Simonsen [Page 72] RFC 1345 Character Mnemonics & Character Sets June 1992 &code2 5 16 1R 2R 3R 4R 5R 6R 7R 8R 9R aR bR cR &code2 5 33 A* B* G* D* E* Z* Y* H* I* K* L* M* N* C* O* P* R* S* T* U* F* X* Q* W* &code2 5 65 a* b* g* d* e* z* y* h* i* k* l* m* n* c* o* p* r* s* t* u* f* x* q* w* &code2 6 1 hh vv dr dl ul ur vr dh vl uh vh HH VV DR LD UL UR VR DH VL UH VH Vr dH Vl uH vH vR Dh vL Uh Vh Dl dL Ul uL Ur uR Dr dR Udr uDr UdR uDR Udl uDl UdL uDL dLr dlR DLr DlR uLr ulR UlR vLr vlR Udh uDh UdLr UdlR uDLr uDlR UdH uDH VLr VlR &codex k 7 7 1 79 &code2 8 1 AE D- -a H/ ?? IJ ?? L. L/ O/ OE -o TH T/ NG &codex k 8 8 17 44 &code2 8 45 a-o b-o c-o d-o e-o f-o g-o h-o i-o j-o k-o l-o m-o n-o o-o p-o q-o r-o s-o t-o u-o v-o w-o x-o y-o z-o 1-o 2-o 3-o 4-o 5-o 6-o 7-o 8-o 9-o 10-o 11-o 12-o 13-o 14-o 15-o 12 13 23 14 34 18 38 58 78 &code2 9 1 ae d/ d- h/ i. ij kk l. l/ o/ oe ss th t/ ng 'n &codex k 9 9 17 44 &code2 9 45 (a) (b) (c) (d) (e) (f) (g) (h) (i) (j) (k) (l) (m) (n) (o) (p) (q) (r) (s) (t) (u) (v) (w) (x) (y) (z) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) 1S 2S 3S 4S nS 1s 2s 3s 4s &code2 10 1 A5 a5 I5 i5 U5 u5 E5 e5 O5 o5 ka ga ki gi ku gu ke ge ko go sa za si zi su zu se ze so zo ta da ti di tU tu du te de to do na ni nu ne no ha ba pa hi bi pi hu bu pu he be pe ho bo po ma mi mu me mo yA ya yU yu yO yo ra ri ru re ro wA wa wi we wo n5 &code2 11 1 a6 A6 i6 I6 u6 U6 e6 E6 o6 O6 Ka Ga Ki Gi Ku Gu Ke Ge Ko Go Sa Za Si Zi Su Zu Se Ze So Zo Ta Da Ti Di TU Tu Du Te De To Do Na Ni Nu Ne No Ha Ba Pa Hi Bi Pi Hu Bu Pu He Be Pe Ho Bo Po Ma Mi Mu Me Mo YA Ya YU Yu YO Yo Ra Ri Ru Re Ro WA Wa Wi We Wo N6 Vi KA KE &code2 12 1 A= B= V= G= D= E= IO Z% Z= I= J= K= L= M= N= O= P= R= S= T= U= F= H= C= C% S% Sc =" Y= %" JE JU JA &code2 12 49 a= b= v= g= d= e= io z% z= i= j= k= l= m= n= o= p= r= s= t= u= f= h= c= c% s% sc =' y= %' je ju ja &codex k 16 40 1 94 Simonsen [Page 73] RFC 1345 Character Mnemonics & Character Sets June 1992 &codex k 42 93 1 94 &charset greek-ccitt &rem source: ECMA registry &alias iso-ir-150 &g0esc x282140 &g1esc x292140 &g2esc x2a2140 &g3esc x2b2140 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A* B* G* D* E* Z* Y* H* I* K* L* M* N* C* O* P* R* ?? S* T* U* F* X* Q* W* ?? <( // )> '> _ ?? a* b* g* d* e* z* y* h* i* k* l* m* n* c* o* p* r* *s s* t* u* f* x* q* w* ?? (! !! !) '- DT &charset NC_NC00-10:81 &rem source: ECMA registry &alias cuba &alias iso-ir-151 &alias ISO646-CU &g0esc x282141 &g1esc x292141 &g2esc x2a2141 &g3esc x2b2141 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z !I N? )> ?I _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z '' n? <( ': DT &charset ISO_6937-2-25 &rem source: ECMA registry &alias iso-ir-152 &g1esc x2d4e &g2esc x2e4e &g3esc x2f4e &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb Cu % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS ?? ?? ?? ?? ?? ?? ?? ?? ?? "6 ?? <- -! -> -v ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? "9 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? TM Md ?? ?? ?? ?? ?? ?? 18 38 58 78 Om ?? ?? ?? ?? ?? IJ L. ?? ?? OE ?? W> Y> Y: 'n ?? ?? ?? ?? ?? ?? ij l. ?? ?? oe ?? w> y> ?? ?? &charset GOST_19768-74 &rem source: ECMA registry &alias ST_SEV_358-88 &alias iso-ir-153 &g1esc x2d4f &g2esc x2e4f &g3esc x2f4f &code 0 Simonsen [Page 74] RFC 1345 Character Mnemonics & Character Sets June 1992 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS IO ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? -- ?? ?? A= B= V= G= D= E= Z% Z= I= J= K= L= M= N= O= P= R= S= T= U= F= H= C= C% S% Sc =" Y= %" JE JU JA a= b= v= g= d= e= z% z= i= j= k= l= m= n= o= p= r= s= t= u= f= h= c= c% s% sc =' y= %' je ju ja ?? io ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? &charset ISO_8859-supp &rem source: ECMA registry &alias iso-ir-154 &alias latin1-2-5 &g1esc x2d50 &g2esc x2e50 &g3esc x2f50 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC ?? ?? A- C> C. ?? E. E- G> '6 "6 TM <- -! -> -v ?? ?? a- c> c. d- e. e- g> '9 "9 Md 18 38 58 78 ?? G( G. G, H> H/ I? I. I- I; IJ J> K, L, L. N, -M NG O- OE R, S> T/ TH U? U( U- U; W> Y' Y> Y: Om g( g. g, h> h/ i? i. i- i; ij j> k, l, l. n, kk ng o- oe r, s> t/ th u? u( u- u; w> y' y> 'n &charset ISO_10367-box &rem source: ECMA registry &alias iso-ir-155 &g1esc x2d51 &g2esc x2e51 &g3esc x2f51 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? VV HH DR LD UR UL VR VL DH UH VH UB LB FB sB ?? vv hh dr dl ur ul vr vl dh uh vh .S :S ?S ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? Simonsen [Page 75] RFC 1345 Character Mnemonics & Character Sets June 1992 &charset latin6 &rem source: ECMA registry &alias iso-ir-157 &alias l6 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS A; E- G, I- I? K, L, N' R, S< T/ Z< -- kk NG d/ a; e- g, i- i? k, l, n' r, s< t/ z< SE ss ng A- A' A> A? A: AA AE I; C< E' E; E: E. I' I> I: D/ N, O- O' O> O? O: U? O/ U; U' U> U: Y' TH U- a- a' a> a? a: aa ae i; c< e' e; e: e. i' i> i: d- n, o- o' o> o? o: u? o/ u; u' u> u: y' th u- &charset latin-lap &rem source: ECMA registry &alias lap &alias iso-ir-158 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC '' ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ;S ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? A( A> A! A- A1 A7 A3 E( E! E- G/ G< K< O( O! O; O1 U- ED EZ ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? a( a> a! a- a1 a7 a3 e( e! e- g/ g< k< o( o! o; o1 u- ed ez ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? &charset JIS_X0212-1990 &rem source: ECMA registry &alias x0212 &alias iso-ir-159 &bits 16 &g0esc x2444 &g1esc x242944 &g2esc x242a44 &g3esc x242b44 &code2 2 15 '( '< ', '. '" '- '; '0 '? '' '% &code2 2 34 !I BB ?I TM Cu N0 &code2 2 75 -o -a Co Rg &code2 6 65 A% E% Y% I% J* ?? O% ?? U% V* ?? W% Simonsen [Page 76] RFC 1345 Character Mnemonics & Character Sets June 1992 &code2 6 81 a% e% y% i% j* i3 o% *s u% v* u3 w% &code2 7 34 D% G% IE DS II YI J% LJ NJ Ts KJ V% DZ &code2 7 82 d% g% ie ds ii yi j% lj nj ts kj v% dz &code2 9 1 AE D/ ?? H/ ?? IJ ?? L/ L. ?? NG O/ OE ?? T/ TH &code2 9 33 ae d/ d- h/ i. ij kk l/ l. 'n ng o/ oe ss t/ th &code2 10 1 A' A! A: A> A( A< A; AA A? C' C> C< C, C. D< E' E! E: E> E( E. E- E; ?? G> G( G, G. H> I' I! I: I> I< I. I- I; I? J> K, L' L, N' N< N, N? O' O! O: O> O< O" O- O? R' R< R, S' S> S< S, T< T, U' U! U: U( U< U" U- U; U0 U:' U:! U:< U:- W. Y' Y: Y> Z' Z< Z. &code2 11 1 a' a! a: a> a( a< a; aa a? c' c> c< c, c. d< e' e! e: e> e( e. e- e; g' g> g( ?? g. h> i' i! i: i> i< ?? i- i; i? j> k, l' l, n' n< n, n? o' o! o: o> o< o" o- o? r' r< r, s' s> s< s, t< t, u' u! u: u( u< u" u- u; u0 u:' u:! u:< u:- w. y' y: y> z' z< z. &codex J 16 76 1 94 &codex J 77 77 1 67 &charset DS_2089 &rem source: Danish Standard, DS 2089, February 1974 &alias DS2089 &alias ISO646-DK &alias dk &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AE O/ AA '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z ae o/ aa '? DT &charset us-dk &rem for compatibility with ASCII &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT &duplicate 91 AE &duplicate 92 O/ &duplicate 93 AA &duplicate 123 ae &duplicate 124 o/ &duplicate 125 aa &duplicate 91 A: &duplicate 92 O: &duplicate 123 a: &duplicate 124 o: Simonsen [Page 77] RFC 1345 Character Mnemonics & Character Sets June 1992 &charset dk-us &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AE O/ AA '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z ae o/ aa '? DT &duplicate 91 <( &duplicate 92 // &duplicate 93 )> &duplicate 123 (! &duplicate 124 !! &duplicate 125 !) &duplicate 91 A: &duplicate 92 O: &duplicate 123 a: &duplicate 124 o: &charset JIS_X0201 &alias X0201 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( Ye )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '- DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS ._ <' >' ,_ .6 Wo a6 i6 u6 e6 o6 YA YU YO TU -6 A6 I6 U6 E6 O6 Ka Ki Ku Ke Ko Sa Si Su Se So Ta Ti Tu Te To Na Ni Nu Ne No Ha Hi Hu He Ho Ma Mi Mu Me Mo Ya Yu Yo Ra Ri Ru Re Ro Wa N6 "5 05 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? &charset KSC5636 &alias ISO646-KR &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( W= )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT &charset DEC-MCS &rem VAX/VMS User's Manual, Order Number: AI-Y517A-TE, April 1986. &alias dec &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ Simonsen [Page 78] RFC 1345 Character Mnemonics & Character Sets June 1992 '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC ?? !I Ct Pd ?? Ye ?? SE Cu Co -a << ?? ?? ?? ?? DG +- 2S 3S ?? My PI .M ?? 1S -o >> 14 12 ?? ?I A! A' A> A? A: AA AE C, E! E' E> E: I! I' I> I: ?? N? O! O' O> O? O: OE O/ U! U' U> U: Y: ?? ss a! a' a> a? a: aa ae c, e! e' e> e: i! i' i> i: ?? n? o! o' o> o? o: oe o/ u! u' u> u: y: ?? ?? &charset hp-roman8 &rem source: LaserJet IIP Printer User's Manual, &rem HP part no 33471-90901, Hewlet-Packard, June 1989. &alias roman8 &alias r8 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3 DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC NS A! A> E! E> E: I> I: '' 1" AN ': ?1 U! U> Li '- Y' y' DG C, c, N? n? !I ?I Cu Pd Ye SE Fl Ct a> e> o> u> a' e' o' u' a! e! o! u! a: e: o: u: AA i> O/ AE aa i' o/ ae A: i! O: U: E' i: ss O> A' A? a? D- d- I' I! O' O! O? o? S< s< U' Y: y: TH th .M My PI 34 -M 14 12 -a -o << fS >> +- ?? &charset macintosh &rem source: The Unicode Standard ver1.0, ISBN 0-201-56788-1, Oct 1991 &alias mac &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT A: AA C, E' N? O: U: a' a! a> a: a? aa c, e' e! e> e: i' i! i> i: n? o' o! o> o: o? u' u! u> u: /- DG Ct Pd SE Sb PI ss Rg Co TM '' ': != AE O/ 00 +- =< >= Ye My dP +Z *P p* In -a -o W* ae o/ ?I !I NO RT Fl ?2 D* << >> .3 NS A! A? O? OE oe -M -N "6 "9 '6 '9 -: Db y: Y: /f Cu <1 >1 fi fl /= .M .9 :9 %0 A> E> A' E: E! I' I> I: I! O' O> ?? O! U' U> U! i. ?? ?? '- '( '. '0 ', '" '; '< &charset IBM037 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp037 &alias ebcdic-cp-us &alias ebcdic-cp-ca Simonsen [Page 79] RFC 1345 Character Mnemonics & Character Sets June 1992 &alias ebcdic-cp-wt &alias ebcdic-cp-nl &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP NS a> a: a! a' a? aa c, n? Ct . < ( + !! & e' e> e: e! i' i> i: i! ss ! DO * ) ; NO - / A> A: A! A' A? AA C, N? BB , % _ > ? o/ E' E> E: E! I' I> I: I! '! : Nb At ' = " O/ a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o ae ', AE Cu My '? s t u v w x y z !I ?I D- Y' TH Rg '> Pd Ye .M Co SE PI 14 12 34 <( )> '- ': '' *X (! A B C D E F G H I -- o> o: o! o' o? !) J K L M N O P Q R 1S u> u: u! u' y: // -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' DT &charset IBM038 &rem source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 &alias EBCDIC-INT &alias cp038 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? <( . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? )> DO * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Nb At ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? '? s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? (! A B C D E F G H I ?? ?? ?? ?? ?? ?? !) J K L M N O P Q R ?? ?? ?? ?? ?? ?? // ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset IBM273 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP273 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP NS a> (! a! a' a? aa c, n? A: . < ( + ! & e' e> e: e! i' i> i: i! '? U: DO * ) ; '> - / A> <( A! A' A? AA C, N? o: , % _ > ? Simonsen [Page 80] RFC 1345 Character Mnemonics & Character Sets June 1992 o/ E' E> E: E! I' I> I: I! '! : Nb SE ' = " O/ a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o ae ', AE Cu My ss s t u v w x y z !I ?I D- Y' TH Rg Ct Pd Ye .M Co At PI 14 12 34 NO !! '- ': '' *X a: A B C D E F G H I -- o> BB o! o' o? u: J K L M N O P Q R 1S u> !) u! u' y: O: -: S T U V W X Y Z 2S O> // O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> )> U! U' DT &charset IBM274 &rem source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 &alias EBCDIC-BE &alias CP274 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? <( . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? )> DO * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? u! , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Nb a! ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ': s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? e' A B C D E F G H I ?? ?? ?? ?? ?? ?? e! J K L M N O P Q R ?? ?? ?? ?? ?? ?? c, ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset IBM275 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias EBCDIC-BR &alias cp275 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? E' . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? DO C, * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? c, , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? a? : O? A? ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? '? s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? o? A B C D E F G H I ?? ?? ?? ?? ?? ?? e' J K L M N O P Q R ?? ?? ?? ?? ?? ?? // ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT Simonsen [Page 81] RFC 1345 Character Mnemonics & Character Sets June 1992 &charset IBM277 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias EBCDIC-CP-DK &alias EBCDIC-CP-NO &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP NS a> a: a! a' a? !) c, n? Nb . < ( + ! & e' e> e: e! i' i> i: i! ss Cu AA * ) ; '> - / A> A: A! A' A? DO C, N? o/ , % _ > ? BB E' E> E: E! I' I> I: I! '! : AE O/ ' = " At a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o (! ', <( )> My u: s t u v w x y z !I ?I D- Y' TH Rg Ct Pd Ye .M Co SE PI 14 12 34 NO !! '- ': '' *X ae A B C D E F G H I -- o> o: o! o' o? aa J K L M N O P Q R 1S u> '? u! u' y: // -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' DT &charset IBM278 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP278 &alias ebcdic-cp-fi &alias ebcdic-cp-se &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP NS a> (! a! a' a? !) c, n? SE . < ( + ! & '! e> e: e! i' i> i: i! ss Cu AA * ) ; '> - / A> Nb A! A' A? DO C, N? o: , % _ > ? o/ E' E> E: E! I' I> I: I! e' : A: O: ' = " O/ a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o ae ', AE )> My u: s t u v w x y z !I ?I D- Y' TH Rg Ct Pd Ye .M Co <( PI 14 12 34 NO !! '- ': '' *X a: A B C D E F G H I -- o> BB o! o' o? aa J K L M N O P Q R 1S u> '? u! u' y: // -: S T U V W X Y Z 2S O> At O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' DT &charset IBM280 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP280 &alias ebcdic-cp-it &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US Simonsen [Page 82] RFC 1345 Character Mnemonics & Character Sets June 1992 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP NS a> a: (! a' a? aa // n? DG . < ( + ! & )> e> e: !) i' i> i: '? ss e' DO * ) ; '> - / A> A: A! A' A? AA C, N? o! , % _ > ? o/ E' E> E: E! I' I> I: I! u! : Pd SE ' = " O/ a b c d e f g h i << >> d- y' th +- <( j k l m n o p q r -a -o ae ', AE Cu My i! s t u v w x y z !I ?I D- Y' TH Rg Ct Nb Ye .M Co At PI 14 12 34 NO !! '- ': '' *X a! A B C D E F G H I -- o> o: BB o' o? e! J K L M N O P Q R 1S u> u: '! u' y: c, -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' DT &charset IBM281 &rem source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 &alias EBCDIC-JP-E &alias cp281 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? Pd . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? ! Ye * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Nb At ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? '- s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? (! A B C D E F G H I ?? ?? ?? ?? ?? ?? !) J K L M N O P Q R ?? ?? ?? ?? ?? ?? DO ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset IBM284 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP284 &alias ebcdic-cp-es &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP NS a> a: a! a' a? aa c, BB <( . < ( + !! & e' e> e: e! i' i> i: i! ss )> DO * ) ; NO - / A> A: A! A' A? AA C, Nb n? , % _ > ? o/ E' E> E: E! I' I> I: I! '! : N? At ' = " O/ a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o ae ', AE Cu My ': s t u v w x y z !I ?I D- Y' TH Rg Simonsen [Page 83] RFC 1345 Character Mnemonics & Character Sets June 1992 Ct Pd Ye .M Co SE PI 14 12 34 '> ! '- '? '' *X (! A B C D E F G H I -- o> o: o! o' o? !) J K L M N O P Q R 1S u> u: u! u' y: // -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' DT &charset IBM285 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP285 &alias ebcdic-cp-gb &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP NS a> a: a! a' a? aa c, n? DO . < ( + !! & e' e> e: e! i' i> i: i! ss ! Pd * ) ; NO - / A> A: A! A' A? AA C, N? BB , % _ > ? o/ E' E> E: E! I' I> I: I! '! : Nb At ' = " O/ a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o ae ', AE Cu My '? s t u v w x y z !I ?I D- Y' TH Rg Ct <( Ye .M Co SE PI 14 12 34 '> )> '- ': '' *X (! A B C D E F G H I -- o> o: o! o' o? !) J K L M N O P Q R 1S u> u: u! u' y: // -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' DT &charset IBM290 &rem source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 &alias cp290 &alias EBCDIC-JP-kana &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ._ <' >' ,_ .6 Wo a6 i6 u6 Pd . < ( + !! & e6 o6 YA YU YO TU ?? -6 ?? ! Ye * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Nb At ' = " ?? A6 I6 U6 E6 O6 Ka Ki Ku Ke Ko ?? Sa Si Su Se So Ta Ti Tu Te To Na Ni Nu Ne No ?? ?? Ha Hi Hu ?? '- He Ho Ma Mi Mu Me Mo Ya Yu ?? Yo Ra Ri Ru ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? Re Ro Wa N6 "5 05 ?? A B C D E F G H I ?? ?? ?? ?? ?? ?? ?? J K L M N O P Q R ?? ?? ?? ?? ?? ?? DO ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset IBM297 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp297 Simonsen [Page 84] RFC 1345 Character Mnemonics & Character Sets June 1992 &alias ebcdic-cp-fr &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP NS a> a: At a' a? aa // n? DG . < ( + ! & (! e> e: !) i' i> i: i! ss SE DO * ) ; '> - / A> A: A! A' A? AA C, N? u! , % _ > ? o/ E' E> E: E! I' I> I: I! My : Pd a! ' = " O/ a b c d e f g h i << >> d- y' th +- <( j k l m n o p q r -a -o ae ', AE Cu '! ': s t u v w x y z !I ?I D- Y' TH Rg Ct Nb Ye .M Co )> PI 14 12 34 NO !! '- '? '' *X e' A B C D E F G H I -- o> o: o! o' o? e! J K L M N O P Q R 1S u> u: BB u' y: c, -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' DT &charset IBM420 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &rem IBM NLS RM p 11-11 &alias cp420 &alias ebcdic-cp-ar1 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP NS 3+ 3+; ++ ?? H' aM aM. aH Ct . < ( + !! & aH. wH ?? ?? yH a+ a+. b+ b+, ! DO * ) ; NO - / tm t+ t+, tk tk, g+ g+, hk BB , % _ > ? hk, x+ x+, d+ dk r+ z+ s+ s+, ,+ : Nb At ' = " sn a b c d e f g h i sn, c+ c+, dd dd, tj zH j k l m n o p q r e+ e+. e+, e+; i+ i+. i+, -: s t u v w x y z i+; f+ f+, q+ q+, k+ k+, l+ lM- lM. lH- lH. ?? ?? la- la. l+, m+ m+, n+ n+, h+ ;+ A B C D E F G H I -- h+, ?? h+; ?? w+ ?+ J K L M N O P Q R j+ j+. y+ y+. y+, 0a *X ?? S T U V W X Y Z 1a 2a ?? 3a 4a 5a 0 1 2 3 4 5 6 7 8 9 ?? 6a 7a 8a 9a DT &charset IBM423 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp423 &alias ebcdic-cp-gr &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP A* B* G* D* E* Z* Y* H* I* <( . < ( + ! & K* L* M* N* C* O* P* R* S* )> DO * ) ; '> Simonsen [Page 85] RFC 1345 Character Mnemonics & Character Sets June 1992 - / T* U* F* X* Q* W* ?? ?? ?? , % _ > ? ?? A% E% Y% ?? I% O% U% W% '! : Pd SE ' = " A: a b c d e f g h i a* b* g* d* e* z* O: j k l m n o p q r y* h* i* k* l* m* U: ': s t u v w x y z n* c* o* p* r* *s ?? a% e% y% j* i% o% u% v* w% s* t* u* f* x* q* %' y= z= s% je sc c% =' JU A= B= C= D= E= F= G= ', A B C D E F G H I ?? w* A> a! a: e> '' J K L M N O P Q R +- e' e! e: i> i: DG ?? S T U V W X Y Z 12 o: o> u> u! u: 0 1 2 3 4 5 6 7 8 9 y: c, C, ?? ?? DT &charset IBM424 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp424 &alias ebcdic-cp-he &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP A+ B+ G+ D+ H+ W+ Z+ X+ Tj Ct . < ( + !! & J+ K% K+ L+ M% M+ N% N+ S+ ! DO * ) ; NO - / E+ P% P+ Zj ZJ Q+ R+ Sh BB , % _ > ? ?? T+ ?? ?? NS ?? ?? ?? == '! : Nb At ' = " ?? a b c d e f g h i << >> ?? ?? ?? ?? DG j k l m n o p q r ?? ?? ?? ', ?? Cu My '? s t u v w x y z ?? ?? ?? ?? ?? Rg '> Pd Ye .M Co SE PI 14 12 34 <( )> '- ': '' *X (! A B C D E F G H I -- ?? ?? ?? ?? ?? !) J K L M N O P Q R 1S ?? ?? ?? ?? ?? // -: S T U V W X Y Z 2S ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 3S ?? ?? ?? ?? DT &charset IBM437 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp437 &alias 437 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: a! aa c, e> e: e! i: i> i! A: AA E' ae AE o> o: o! u> u! y: O: U: Ct Pd Ye Pt Fl a' i' o' u' n? N? -a -o ?I NI NO 12 14 !I << >> .S :S ?S vv vl vL Vl Dl dL VL VV LD UL Ul uL dl ur uh dh vr hh vh vR Vr UR DR UH DH VR HH VH uH Uh dH Dh Ur uR dR Dr Vh vH ul dr FB LB lB RB TB a* b* G* p* S* s* m* t* F* H* W* d* 00 /0 e* (U =3 +- >= =< Iu Il -: ?2 Ob .M Sb RT nS 2S fS NS Simonsen [Page 86] RFC 1345 Character Mnemonics & Character Sets June 1992 &charset IBM500 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP500 &alias ebcdic-cp-be &alias ebcdic-cp-ch &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP NS a> a: a! a' a? aa c, n? <( . < ( + ! & e' e> e: e! i' i> i: i! ss )> DO * ) ; '> - / A> A: A! A' A? AA C, N? BB , % _ > ? o/ E' E> E: E! I' I> I: I! '! : Nb At ' = " O/ a b c d e f g h i << >> d- y' th +- DG j k l m n o p q r -a -o ae ', AE Cu My '? s t u v w x y z !I ?I D- Y' TH Rg Ct Pd Ye .M Co SE PI 14 12 34 NO !! '- ': '' *X (! A B C D E F G H I -- o> o: o! o' o? !) J K L M N O P Q R 1S u> u: u! u' y: // -: S T U V W X Y Z 2S O> O: O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' DT &charset IBM850 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp850 &alias 850 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: a! aa c, e> e: e! i: i> i! A: AA E' ae AE o> o: o! u> u! y: O: U: o/ Pd O/ *X Fl a' i' o' u' n? N? -a -o ?I Rg NO 12 14 !I << >> .S :S ?S vv vl A' A> A! Co VL VV LD UL Ct Ye dl ur uh dh vr hh vh a? A? UR DR UH DH VR HH VH Cu d- D- E> E: E! i. I' I> I: ul dr FB LB BB I! TB O' ss O> O! o? O? m* TH th U' U> U! y' Y' -M '' -- +- == 34 PI SE -: '; DG ': '. 1S 3S 2S fS NS &charset IBM851 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp851 &alias 851 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: a! A% c, e> e: e! i: i> E% A: Y% Simonsen [Page 87] RFC 1345 Character Mnemonics & Character Sets June 1992 I% ?? O% o> o: U% u> u! W% O: U: a% Pd e% y% i% j* i3 o% u% A* B* G* D* E* Z* Y* 12 H* I* << >> .S :S ?S vv vl K* L* N* M* VL VV LD UL C* O* dl ur uh dh vr hh vh P* R* UR DR UH DH VR HH VH S* T* U* F* X* Q* W* a* b* g* ul dr FB LB d* e* TB z* y* h* i* k* l* m* n* c* o* p* r* s* *s t* '' -- +- u* f* x* SE q* '; DG ': w* v* u3 w% fS NS &charset IBM852 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp852 &alias 852 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: u0 c' c, l/ e: O" o" i> Z' A: C' E' L' l' o> o: L< l< S' s' O: U: T< t< L/ *X c< a' i' o' u' A; a; Z< z< E; e; ?? z' C< s, << >> .S :S ?S vv vl A' A> E< S, VL VV LD UL Z. z. dl ur uh dh vr hh vh A( a( UR DR UH DH VR HH VH Cu d/ D/ D< E: d< N< I' U> e< ul dr FB LB T, U0 TB O' ss O> N' n' n< S< s< R' U' r' U" y' Y' t, '' -- '" ', '< '( SE -: '; DG ': '. u" R< r< fS NS &charset IBM855 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp855 &alias 855 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT d% D% g% G% io IO ie IE ds DS ii II yi YI j% J% lj LJ nj NJ ts TS kj KJ v% V% dz DZ ju JU =' =" a= A= b= B= c= C= d= D= e= E= f= F= g= G= << >> .S :S ?S vv vl h= H= i= I= VL VV LD UL j= J= dl ur uh dh vr hh vh k= K= UR DR UH DH VR HH VH Cu l= L= m= M= n= N= o= O= p= ul dr FB LB P= ja TB JA r= R= s= S= t= T= u= U= z% Z% v= V= %' %" '' -- y= Y= z= Z= s% S% je JE sc Sc c% C% ?? fS NS &charset IBM857 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp857 &alias 857 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US Simonsen [Page 88] RFC 1345 Character Mnemonics & Character Sets June 1992 SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: a! aa c, e> e: e! i: i> i. A: AA E' ae AE o> o: o! u> u! I. O: U: o/ Pd O/ S, s, a' i' o' u' n? N? G( g( ?I Rg NO 12 14 !I << >> .S :S ?S vv vl A' A> A! Co VL VV LD UL Ct Ye dl ur uh dh vr hh vh a? A? UR DR UH DH VR HH VH Cu -o -a E> E: E! ?? I' I> I: ul dr FB LB BB I! TB O' ss O> O! o? O? m* ?? *X U' U> U! i! y: -M '' -- +- ?? 34 PI SE -: '; DG ': '. 1S 3S 2S fS NS &charset IBM860 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp860 &alias 860 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a? a! A' c, e> E> e! I> O> i! A? A> E' A! E! o> o? o! U' u! I! O? U: Ct Pd U! Pt O! a' i' o' u' n? N? -a -o ?I O' NO 12 14 !I << >> .S :S ?S vv vl vL Vl Dl dL VL VV LD UL Ul uL dl ur uh dh vr hh vh vR Vr UR DR UH DH VR HH VH uH Uh dH Dh Ur uR dR Dr Vh vH ul dr FB LB lB RB TB a* b* G* p* S* s* m* t* F* H* W* d* 00 /0 e* (U =3 +- >= =< Iu Il -: ?2 Ob .M Sb RT nS 2S fS NS &charset IBM861 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp861 &alias 861 &alias cp-is &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: a! aa c, e> e: e! D- d- TH A: AA E' ae AE o> o: th u> Y' y' O: U: o/ Pd O/ Pt O! a' i' o' u' A' I' O' U' ?I ?? NO 12 14 !I << >> .S :S ?S vv vl vL Vl Dl dL VL VV LD UL Ul uL dl ur uh dh vr hh vh vR Vr UR DR UH DH VR HH VH uH Uh dH Dh Ur uR dR Dr Vh vH ul dr FB LB lB RB TB a* b* G* p* S* s* m* t* F* H* W* d* 00 /0 e* (U =3 +- >= =< Iu Il -: ?2 Ob .M Sb RT nS 2S fS NS &charset IBM862 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 Simonsen [Page 89] RFC 1345 Character Mnemonics & Character Sets June 1992 &alias cp862 &alias 862 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT A+ B+ G+ D+ H+ W+ Z+ X+ Tj J+ K% K+ L+ M% M+ N% N+ S+ E+ P% P+ Zj ZJ Q+ R+ Sh T+ Ct Pd U! Pt O! a' i' o' u' n? N? -a -o ?I ?? NO 12 14 !I << >> .S :S ?S vv vl vL Vl Dl dL VL VV LD UL Ul uL dl ur uh dh vr hh vh vR Vr UR DR UH DH VR HH VH uH Uh dH Dh Ur uR dR Dr Vh vH ul dr FB LB lB RB TB a* b* G* p* S* s* m* t* F* H* W* d* 00 /0 e* (U =3 +- >= =< Iu Il -: ?2 Ob .M Sb RT nS 2S fS NS &charset IBM863 &rem source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991 &alias cp863 &alias 863 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> A> a! PI c, e> e: e! i: i> i! A! SE E' E! E> o> E: I: u> u! Cu O> U: Ct Pd U! U> Fl BB '' o' u' ': ', 3S '- I> NI NO 12 14 34 << >> .S :S ?S vv vl vL Vl Dl dL VL VV LD UL Ul uL dl ur uh dh vr hh vh vR Vr UR DR UH DH VR HH VH uH Uh dH Dh Ur uR dR Dr Vh vH ul dr FB LB lB RB TB a* b* G* p* S* s* m* t* F* H* W* d* 00 /0 e* (U =3 +- >= =< Iu Il -: ?2 Ob .M Sb RT nS 2S fS NS &charset IBM864 &rem source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991 &alias cp864 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT DG .M Ob RT :S hh vv vh vl dh vr uh dl dr ur ul ss 00 o/ +- 12 14 ?2 << >> lH- lH. ?? ?? la- la. a+: ?? -- aM. Pd Cu aH. ?? ?? a+. b+ t+ tk ,+ g+ hk x+ 0a 1a 2a 3a 4a 5a 6a 7a 8a 9a v+ ;+ s+ sn c+ ?+ Ct H' aM aH wH e+. yH a+ b+, tm t+, tk, g+, hk, x+, d+ dk r+ z+ s+, sn, c+, dd, tj zH e+, i+, BB NO -: *X e+ ++ f+. q+. k+, l+. m+, n+. h+, w+ j+ y+, dd m+. i+. i+ m+ 3+; 3+ n+ h+ h+; j+. y+. f+ q+ lM- lM. l+ k+ y+ fS NS Simonsen [Page 90] RFC 1345 Character Mnemonics & Character Sets June 1992 &charset IBM865 &rem source: IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987) &alias cp865 &alias 865 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT C, u: e' a> a: a! aa c, e> e: e! i: i> i! A: AA E' ae AE o> o: o! u> u! y: O: U: o/ Pd O/ Pt Fl a' i' o' u' n? N? -a -o ?I NI NO 12 14 !I << >> .S :S ?S vv vl vL Vl Dl dL VL VV LD UL Ul uL dl ur uh dh vr hh vh vR Vr UR DR UH DH VR HH VH uH Uh dH Dh Ur uR dR Dr Vh vH ul dr FB LB lB RB TB a* b* G* p* S* s* m* t* F* H* W* d* 00 /0 e* (U =3 +- >= =< Iu Il -: ?2 Ob .M Sb RT nS 2S fS NS &charset IBM868 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP868 &alias cp-ar &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT 0a 1a 2a 3a 4a 5a 6a 7a 8a 9a ,+ ;+ ?+ aM a+ a+. a+: b+ b+, p+ ?? tm t+ t+, ?? ?? tk tk, g+ g+, ?? ?? hk hk, x+ x+, d+ ?? dk r+ ?? z+ ?? s+ s+, sn << >> sn, c+ .S :S ?S vv vl c+, dd dd, tj VL VV LD UL zH e+ dl ur uh dh vr hh vh e+. e+, UR DR UH DH VR HH VH e+; i+ i+. i+, i+; f+ f+, q+ q+, k+. ul dr FB TB k+, ?? LB ?? l+ l+. l+; m+ m+, ?? n+ n+, ?? w+ ?? ?? ?? ?? H' -- ?? ?? ?? ?? ?? ?? ?? ?? 3+ 3+; ?? fS NS &charset IBM869 &rem source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991 &alias cp869 &alias 869 &alias cp-gr &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT ?? ?? ?? ?? ?? ?? A% ?? .M NO BB 9' '9 E% -M Y% I% J* O% ?? ?? U% V* Co W% 2S 3S a% Pd e% y% i% j* i3 o% u% A* B* G* D* E* Z* Y* 12 H* I* << >> Simonsen [Page 91] RFC 1345 Character Mnemonics & Character Sets June 1992 .S :S ?S vv vl K* L* M* N* VL VV LD UL C* O* dl ur uh dh vr hh vh P* R* UR DR UH DH VR HH VH S* T* U* F* X* Q* W* a* b* g* ul dr FB LB d* e* TB z* y* h* i* k* l* m* n* c* o* p* r* s* *s t* '' -- +- u* f* x* SE q* '% DG ': w* v* u3 w% fS NS &charset IBM870 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP870 &alias ebcdic-cp-roece &alias ebcdic-cp-yu &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP NS ?? a: ?? a' a( c< c, c' <( . < ( + ! & e' ?? e: u0 i' ?? l< l' ss )> DO * ) ; '> - / ?? A: '" A' ?? C< C, C' !! , % _ > ? '< E' ?? E: U0 I' ?? L< L' '! : Nb At ' = " '( a b c d e f g h i s' n< d/ y' r< ?? DG j k l m n o p q r l/ n' s< ', '; Cu a; '? s t u v w x y z S' N< D/ Y' R< ?? .M A; z. ?? Z. SE PI z< z' Z< Z' N' S< ': '' *X (! A B C D E F G H I -- o> o: r' o' o" !) J K L M N O P Q R E< u" u: t< u' e< // -: S T U V W X Y Z d< O> O: R' O' O" 0 1 2 3 4 5 6 7 8 9 D< U" U: T< U' DT &charset IBM871 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP871 &alias ebcdic-cp-is &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP NS a> a: a! a' a? aa c, n? th . < ( + ! & e' e> e: e! i' i> i: i! ss AE DO * ) ; O: - / A> A: A! A' A? AA C, N? BB , % _ > ? o/ E' E> E: E! I' I> I: I! d- : Nb D- ' = " O/ a b c d e f g h i << >> '! y' (! +- DG j k l m n o p q r -a -o !) ', )> Cu My o: s t u v w x y z !I ?I At Y' <( Rg Ct Pd Ye .M Co SE PI 14 12 34 NO !! '- ': // *X TH A B C D E F G H I -- o> '? o! o' o? ae J K L M N O P Q R 1S u> u: u! u' y: '' -: S T U V W X Y Z 2S O> '> O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> U: U! U' DT &charset IBM880 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 Simonsen [Page 92] RFC 1345 Character Mnemonics & Character Sets June 1992 &alias cp880 &alias EBCDIC-Cyrillic &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? d% g% io ?? ds ii yi j% <( . < ( + ! & lj nj ts kj ?? dz =" N0 D% )> DO * ) ; '> - / G% IO ?? DS II YI J% LJ BB , % _ > ? NJ Ts KJ ?? ?? DZ ju a= b= ?? : Nb At ' = " c= a b c d e f g h i d= e= f= g= h= i= j= j k l m n o p q r k= l= m= n= o= p= ja ?? s t u v w x y z r= s= t= u= z% v= %' y= z= s% je sc c% =' JU A= B= C= D= E= F= G= ?? A B C D E F G H I H= I= J= K= L= M= ?? J K L M N O P Q R N= O= P= JA R= S= // Cu S T U V W X Y Z T= U= Z% V= %" Y= 0 1 2 3 4 5 6 7 8 9 Z= S% JE Sc C% DT &charset IBM891 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp891 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? &charset IBM903 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp903 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? Simonsen [Page 93] RFC 1345 Character Mnemonics & Character Sets June 1992 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? &charset IBM904 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias cp904 &alias 904 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _ '! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT Ct ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? NO BB ?? &charset IBM905 &rem source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 &alias CP905 &alias ebcdic-cp-tr &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? a> a: a! a' ?? c. (! n? C, . < ( + ! & e' e> e: e! i' i> i: i! ss G( I. * ) ; '> - / A> A: A! A' ?? C. <( N? s, , % _ > ? ?? E' E> E: E! I' I> I: I! i. : O: S, ' = U: '( a b c d e f g h i h/ c> s> u( ?? !! DG j k l m n o p q r h> g> j> '; ?? Cu My o: s t u v w x y z H/ C> S> U( ?? At .M Pd z. !) Z. SE )> ?? 12 DO H> G> J> ': '' *X c, A B C D E F G H I -- o> '? o! o' g. g( J K L M N O P Q R '! u> // u! u' ?? u: -: S T U V W X Y Z 2S O> Nb O! O' G. 0 1 2 3 4 5 6 7 8 9 3S U> " U! U' DT &charset IBM918 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP918 &alias ebcdic-cp-ar2 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? Simonsen [Page 94] RFC 1345 Character Mnemonics & Character Sets June 1992 SP NS ,+ ;+ ?+ aH a+ a+. ?? b+ <( . < ( + ! & b+, p+ ?? tm t+ t+, ?? ?? tk )> DO * ) ; '> - / tk, g+ g+, ?? ?? hk hk, x+ '! , % _ > ? 0a 1a 2a 3a 4a 5a 6a 7a 8a 9a : Nb At ' = " x+, a b c d e f g h i d+ ?? dk r+ ?? z+ ?? j k l m n o p q r s+ s+, sn sn, c+ c+, dd '? s t u v w x y z dd, tj zH e+ e+. e+, e+; i+ i+. i+, i+; f+ f+, q+ q+, k+ k+, !! ?? ?? l+ l+. (! A B C D E F G H I -- ?? m+ m+, ?? n+ !) J K L M N O P Q R n+, ?? w+ ?? ?? ?? // ?? S T U V W X Y Z H' ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? 3+ 3+; DT &charset IBM1026 &rem source: IBM NLS RM Vol2 SE09-8002-01, March 1990 &alias CP1026 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP NS a> a: a! a' a? aa (! n? C, . < ( + ! & e' e> e: e! i' i> i: i! ss G( I. * ) ; '> - / A> A: A! A' A? AA <( N? s, , % _ > ? o/ E' E> E: E! I' I> I: I! i. : O: S, ' = U: O/ a b c d e f g h i << >> !) '! BB +- DG j k l m n o p q r -a -o ae '; AE Cu My o: s t u v w x y z !I ?I )> DO At Rg Ct Pd Ye .M Co SE PI 14 12 34 NO !! -M ': '' *X c, A B C D E F G H I -- o> '? o! o' o? g( J K L M N O P Q R 1S u> // u! u' y: u: -: S T U V W X Y Z 2S O> Nb O! O' O? 0 1 2 3 4 5 6 7 8 9 3S U> " U! U' DT &charset EBCDIC-AT-DE &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? A: . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? U: DO * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? o: , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Nb SE ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ss s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? a: A B C D E F G H I ?? ?? ?? ?? ?? ?? u: J K L M N O P Q R ?? ?? ?? ?? ?? ?? O: ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT Simonsen [Page 95] RFC 1345 Character Mnemonics & Character Sets June 1992 &charset EBCDIC-AT-DE-A &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? o: . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? u: U: * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? ss , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? : A: O: ' = a: ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ?? s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? A B C D E F G H I ?? ?? ?? ?? ?? ?? ?? J K L M N O P Q R ?? ?? ?? ?? ?? ?? ?? ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset EBCDIC-CA-FR &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? a> ?? ?? ?? ?? ?? c, ?? a! . < ( + ! & ?? e> e: ?? ?? i> i: ?? ?? '' DO * ) ; '> - / A> ?? A! ?? ?? ?? C, ?? u! , % _ > ? ?? E' E> E: ?? I> I: ?? ?? '! : Nb At ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ': s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? e' A B C D E F G H I ?? o> ?? ?? ?? ?? e! J K L M N O P Q R ?? u> u: ?? ?? ?? ', ?? S T U V W X Y Z ?? O> ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? U> U: U! ?? DT &charset EBCDIC-DK-NO &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? Nb . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? Cu AA * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? o/ , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : AE O/ ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? Simonsen [Page 96] RFC 1345 Character Mnemonics & Character Sets June 1992 ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? u: s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ae A B C D E F G H I ?? ?? ?? ?? ?? ?? aa J K L M N O P Q R ?? ?? ?? ?? ?? ?? // ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset EBCDIC-DK-NO-A &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? o/ . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? aa AA * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? : AE O/ ' = ae ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ?? s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? A B C D E F G H I ?? ?? ?? ?? ?? ?? ?? J K L M N O P Q R ?? ?? ?? ?? ?? ?? ?? ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset EBCDIC-FI-SE &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? SE . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? Cu AA * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? o: , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? e' : A: O: ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? u: s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? a: A B C D E F G H I ?? ?? ?? ?? ?? ?? aa J K L M N O P Q R ?? ?? ?? ?? ?? ?? E' ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset EBCDIC-FI-SE-A &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US Simonsen [Page 97] RFC 1345 Character Mnemonics & Character Sets June 1992 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? o: . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? aa AA * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? : A: O: ' = a: ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ?? s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? A B C D E F G H I ?? ?? ?? ?? ?? ?? ?? J K L M N O P Q R ?? ?? ?? ?? ?? ?? ?? ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset EBCDIC-FR &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? DG . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? SE DO * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? u! , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Pd a! ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ': s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? e' A B C D E F G H I ?? ?? ?? ?? ?? ?? e! J K L M N O P Q R ?? ?? ?? ?? ?? ?? c, ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset EBCDIC-IT &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? DG . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? e' DO * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? o! , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? u! : Pd SE ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? i! s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? a! A B C D E F G H I ?? ?? ?? ?? ?? ?? e! J K L M N O P Q R ?? ?? ?? ?? ?? ?? c, ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? Simonsen [Page 98] RFC 1345 Character Mnemonics & Character Sets June 1992 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset EBCDIC-PT &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? <( . < ( + ! & ?? ?? ?? ?? ?? ?? ?? ?? ?? )> DO * ) ; '> - / ?? ?? ?? ?? ?? ?? ?? ?? o? , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : A? O? ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? c, s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? a? A B C D E F G H I ?? ?? ?? ?? ?? ?? '' J K L M N O P Q R ?? ?? ?? ?? ?? ?? C, ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset EBCDIC-ES &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? Ct . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? ! Pt * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? n? , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : N? At ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ': s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? (! A B C D E F G H I ?? ?? ?? ?? ?? ?? !) J K L M N O P Q R ?? ?? ?? ?? ?? ?? // ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset EBCDIC-ES-A &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? Ct . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? ! Pt * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? : N? At ' = n? Simonsen [Page 99] RFC 1345 Character Mnemonics & Character Sets June 1992 ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ?? s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? A B C D E F G H I ?? ?? ?? ?? ?? ?? ?? J K L M N O P Q R ?? ?? ?? ?? ?? ?? ?? ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset EBCDIC-ES-S &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? Ct . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? ! DO * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? n? , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : N? At ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? ': s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? (! A B C D E F G H I ?? ?? ?? ?? ?? ?? !) J K L M N O P Q R ?? ?? ?? ?? ?? ?? // ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset EBCDIC-UK &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? DO . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? ! Pd * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Nb At ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? '- s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? (! A B C D E F G H I ?? ?? ?? ?? ?? ?? !) J K L M N O P Q R ?? ?? ?? ?? ?? ?? // ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT &charset EBCDIC-US &rem source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 &code 0 NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI Simonsen [Page 100] RFC 1345 Character Mnemonics & Character Sets June 1992 DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? SP ?? ?? ?? ?? ?? ?? ?? ?? ?? Ct . < ( + !! & ?? ?? ?? ?? ?? ?? ?? ?? ?? ! DO * ) ; NO - / ?? ?? ?? ?? ?? ?? ?? ?? BB , % _ > ? ?? ?? ?? ?? ?? ?? ?? ?? ?? '! : Nb At ' = " ?? a b c d e f g h i ?? ?? ?? ?? ?? ?? ?? j k l m n o p q r ?? ?? ?? ?? ?? ?? ?? '? s t u v w x y z ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? (! A B C D E F G H I ?? ?? ?? ?? ?? ?? !) J K L M N O P Q R ?? ?? ?? ?? ?? ?? // ?? S T U V W X Y Z ?? ?? ?? ?? ?? ?? 0 1 2 3 4 5 6 7 8 9 ?? ?? ?? ?? ?? DT ACKNOWLEDGEMENTS This memo has been produced with a grant from Nordisk Industrifond project number 91030. I thank all of the people in the IETF 822ext WG for their constructive discussion and remarks on this memo. People from many other circles have also commented on the text and the tables. The following is a list of persons that I remember bringing forward suggestions that made me change the specifications - my aging memory may have forgot even significant contributions, and I apologize for that. Alain LaBonte' Alina Da Cruz Anders Samuelsson Bob Smart Cuong Bui Dan Oscarsson David Crocker David Joslin Dick Weaver Dmitry V. Volodin Erik van der Poel Geir Petersen Greg Vaudreuil Harald Tveit Alvestrand Hugh Tucker Isai Scheinberg James Do Jan-Michael Rynning Johan van Wingen John C. Klensin John F. Chandler Johnny Erikson Justin Bur Keith Moore Kevin Donnelly Kim F. Storm Marius Olofson Masahiro Sekiguchi Maurizio Sichera Michael Patton Nandor Horvath Nathaniel Borenstein Ned Freed Neil Katin Olle Jaernefors Patrick Faeltstroem Paul Pomes Peter Svanberg Philippe-Andre' Prindeville Randall Atkinson Steve Hardcastle-Kille Simonsen [Page 101] RFC 1345 Character Mnemonics & Character Sets June 1992 REFERENCES (1) ISO 2375 registration: "International Register of Coded Character Sets to be Used With Escape Sequences", European Computer Manufacturers Association (ECMA), Rue du Rhone 114, CH-1204 Geneve, Switzerland, December 1990. (2) ISO 2DIS 10646, Information Technology - Universal Multiple-Octet Coded Character Set (UCS), ISO/IEC JTC1/SC2/WG2 N783 (26 December 1991). (3) ISO/IEC 9945-2.2 CD POSIX Shell and Utilities, informative annex F, ISO/IEC JTC1/SC22 N1063 (October 1991). (4) IBM National Language Support Reference Manual Volume 2, SE09- 8002-01 (March 1990). (5) IBM 3174 Establishment Controller, Character Set Reference, GA27-3831-02 (March 1990). (6) IBM 3270 Information Display System Character Set Reference, Chapter 10, GA27-2837-9 (April 1987) (7) IBM DOS 3.30 Reference (Abridged) 94X9575 (February 1987) (8) IBM Keyboard layouts and code pages, Part Number 07G4586 (June 1991) (9) HP LaserJet IIP Printer User's Manual, HP Part No. 33471-90901 (June 1989) (10) Danish Standard DS 2089, Application of ISO 7-bit coded character set, UDC 681.3:003.62, February 1974. (withdrawn). (11) ISO 2022:1986 Information processing - ISO 7-bit and 8-bit coded character sets - Code extension techniques. (12) ISO 6429:1988 Information processing - ISO 7-bit and 8-bit coded character sets - Control functions for 7-bit and 8-bit coded character sets. (13) VAX/VMS User's Manual, Order Number: AI-Y517A-TE, April 1986. (14) The Unicode Standard Version 1.0 Volume 1, ISBN 0-201-56788-1 (October 1991). Simonsen [Page 102] RFC 1345 Character Mnemonics & Character Sets June 1992 Author's Address Keld Simonsen Rationel Almen Planlaegning Sankt Joergens Alle 8 DK-1615 Koebenhavn V Danmark Tel: +45 31 22 65 43 Fax: +45 33 15 85 16 Email: Keld.Simonsen@dkuug.dk Simonsen [Page 103] recode-3.7.15/configure0000754000175000017500000446717314766020636010477 #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for recode 3.7.15. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and rrt@sc3d.org about $0: your system, including any error possibly output before $0: this message. Then install a modern shell, or manually $0: run the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='recode' PACKAGE_TARNAME='recode' PACKAGE_VERSION='3.7.15' PACKAGE_STRING='recode 3.7.15' PACKAGE_BUGREPORT='rrt@sc3d.org' PACKAGE_URL='' ac_unique_file="src/recode.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_func_c_list= gl_getopt_required=POSIX gt_needs= enable_year2038=no enable_largefile=yes ac_subst_vars='gltests_LIBOBJDEPS gltests_LTLIBOBJS gltests_LIBOBJS gl_LIBOBJDEPS gl_LTLIBOBJS gl_LIBOBJS am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS POSUB INTLLIBS INTL_MACOSX_LIBS XGETTEXT_EXTRA_OPTIONS MSGMERGE XGETTEXT_015 XGETTEXT GMSGFMT_015 MSGFMT_015 GMSGFMT MSGFMT GETTEXT_MACRO_VERSION USE_NLS TESTS_ENVIRONMENT_EXTRA ISYSTEM WARN_CFLAGS pyextext objdir HAVE_CYTHON_FALSE HAVE_CYTHON_TRUE CYTHON CROSS_COMPILING HELP2MAN PERL GL_CFLAG_GNULIB_WARNINGS GL_CFLAG_ALLOW_WARNINGS gltests_WITNESS GL_GNULIB_TOWCTRANS GL_GNULIB_WCTRANS GL_GNULIB_ISWCTYPE GL_GNULIB_WCTYPE GL_GNULIB_ISWXDIGIT GL_GNULIB_ISWDIGIT GL_GNULIB_ISWBLANK REPLACE_TOWLOWER REPLACE_ISWCNTRL HAVE_WCTYPE_H NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H NEXT_WCTYPE_H HAVE_ISWCNTRL REPLACE_ISWXDIGIT REPLACE_ISWDIGIT REPLACE_ISWBLANK HAVE_WCTRANS_T HAVE_WCTYPE_T HAVE_ISWBLANK HAVE_CRTDEFS_H HAVE_WINT_T NEXT_AS_FIRST_DIRECTIVE_WCHAR_H NEXT_WCHAR_H HAVE_FEATURES_H HAVE_UTIME_H NEXT_AS_FIRST_DIRECTIVE_UTIME_H NEXT_UTIME_H GL_GNULIB_MDA_UTIME GL_GNULIB_UTIME GL_COND_OBJ_UTIME_FALSE GL_COND_OBJ_UTIME_TRUE REPLACE_UTIME HAVE_UTIME HAVE_UNISTD_H NEXT_AS_FIRST_DIRECTIVE_UNISTD_H NEXT_UNISTD_H GL_GNULIB_MDA_TZSET GL_GNULIB_TZSET GL_GNULIB_TIME_RZ GL_GNULIB_TIME_R GL_GNULIB_TIMESPEC_GETRES GL_GNULIB_TIMESPEC_GET GL_GNULIB_TIMEGM GL_GNULIB_STRPTIME GL_GNULIB_STRFTIME GL_GNULIB_NANOSLEEP GL_GNULIB_LOCALTIME GL_GNULIB_MKTIME GL_GNULIB_CTIME TIME_H_DEFINES_TIME_UTC UNISTD_H_DEFINES_STRUCT_TIMESPEC PTHREAD_H_DEFINES_STRUCT_TIMESPEC SYS_TIME_H_DEFINES_STRUCT_TIMESPEC TIME_H_DEFINES_STRUCT_TIMESPEC NEXT_AS_FIRST_DIRECTIVE_TIME_H NEXT_TIME_H REPLACE_LOCALTIME REPLACE_GMTIME GNULIB_GETTIMEOFDAY REPLACE_TZSET REPLACE_TIMESPEC_GET REPLACE_TIMEGM REPLACE_STRFTIME REPLACE_NANOSLEEP REPLACE_MKTIME REPLACE_LOCALTIME_R REPLACE_CTIME HAVE_TIMEZONE_T HAVE_TIMESPEC_GETRES HAVE_TIMESPEC_GET HAVE_TIMEGM HAVE_STRPTIME HAVE_NANOSLEEP HAVE_DECL_LOCALTIME_R GL_GNULIB_WAITPID NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H NEXT_SYS_WAIT_H WINDOWS_STAT_INODES WINDOWS_64_BIT_OFF_T NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H NEXT_SYS_TYPES_H HAVE_SYS_RANDOM_H NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H NEXT_SYS_RANDOM_H GL_COND_OBJ_STRNLEN_FALSE GL_COND_OBJ_STRNLEN_TRUE GL_COND_OBJ_STRNDUP_FALSE GL_COND_OBJ_STRNDUP_TRUE NEXT_AS_FIRST_DIRECTIVE_STRING_H NEXT_STRING_H GL_COND_OBJ_STRERROR_OVERRIDE_FALSE GL_COND_OBJ_STRERROR_OVERRIDE_TRUE GL_COND_OBJ_STRERROR_FALSE GL_COND_OBJ_STRERROR_TRUE NEXT_AS_FIRST_DIRECTIVE_STDLIB_H NEXT_STDLIB_H GL_COND_OBJ_STDIO_WRITE_FALSE GL_COND_OBJ_STDIO_WRITE_TRUE GL_COND_OBJ_STDIO_READ_FALSE GL_COND_OBJ_STDIO_READ_TRUE GL_GNULIB_MDA_TEMPNAM GL_GNULIB_MDA_PUTW GL_GNULIB_MDA_GETW GL_GNULIB_MDA_FILENO GL_GNULIB_MDA_FDOPEN GL_GNULIB_MDA_FCLOSEALL GL_GNULIB_VSPRINTF_POSIX GL_GNULIB_VSNPRINTF GL_GNULIB_VPRINTF_POSIX GL_GNULIB_VPRINTF GL_GNULIB_VFPRINTF_POSIX GL_GNULIB_VFPRINTF GL_GNULIB_VDPRINTF GL_GNULIB_VSCANF GL_GNULIB_VFSCANF GL_GNULIB_VASPRINTF GL_GNULIB_TMPFILE GL_GNULIB_STDIO_H_SIGPIPE GL_GNULIB_STDIO_H_NONBLOCKING GL_GNULIB_SPRINTF_POSIX GL_GNULIB_SNPRINTF GL_GNULIB_SCANF GL_GNULIB_RENAMEAT GL_GNULIB_RENAME GL_GNULIB_REMOVE GL_GNULIB_PUTS GL_GNULIB_PUTCHAR GL_GNULIB_PUTC GL_GNULIB_PRINTF_POSIX GL_GNULIB_PRINTF GL_GNULIB_POPEN GL_GNULIB_PERROR GL_GNULIB_PCLOSE GL_GNULIB_OBSTACK_PRINTF_POSIX GL_GNULIB_OBSTACK_PRINTF GL_GNULIB_GETLINE GL_GNULIB_GETDELIM GL_GNULIB_GETCHAR GL_GNULIB_GETC GL_GNULIB_FWRITE GL_GNULIB_FTELLO GL_GNULIB_FTELL GL_GNULIB_FSEEKO GL_GNULIB_FSEEK GL_GNULIB_FSCANF GL_GNULIB_FREOPEN GL_GNULIB_FREAD GL_GNULIB_FPUTS GL_GNULIB_FPUTC GL_GNULIB_FPURGE GL_GNULIB_FPRINTF_POSIX GL_GNULIB_FPRINTF GL_GNULIB_FOPEN_GNU GL_GNULIB_FOPEN GL_GNULIB_FGETS GL_GNULIB_FGETC GL_GNULIB_FFLUSH GL_GNULIB_FDOPEN GL_GNULIB_FCLOSE GL_GNULIB_DPRINTF NEXT_AS_FIRST_DIRECTIVE_STDIO_H NEXT_STDIO_H REPLACE_VSPRINTF REPLACE_VSNPRINTF REPLACE_VPRINTF REPLACE_VFPRINTF REPLACE_VDPRINTF REPLACE_VASPRINTF REPLACE_TMPFILE REPLACE_STDIO_WRITE_FUNCS REPLACE_STDIO_READ_FUNCS REPLACE_SPRINTF REPLACE_SNPRINTF REPLACE_RENAMEAT REPLACE_RENAME REPLACE_REMOVE REPLACE_PRINTF REPLACE_POPEN REPLACE_PERROR REPLACE_OBSTACK_PRINTF REPLACE_GETLINE REPLACE_GETDELIM REPLACE_FTELLO REPLACE_FTELL REPLACE_FSEEKO REPLACE_FSEEK REPLACE_FREOPEN REPLACE_FPURGE REPLACE_FPRINTF REPLACE_FOPEN_FOR_FOPEN_GNU REPLACE_FOPEN REPLACE_FFLUSH REPLACE_FDOPEN REPLACE_FCLOSE REPLACE_DPRINTF HAVE_VDPRINTF HAVE_VASPRINTF HAVE_RENAMEAT HAVE_POPEN HAVE_PCLOSE HAVE_FTELLO HAVE_FSEEKO HAVE_DPRINTF HAVE_DECL_VSNPRINTF HAVE_DECL_SNPRINTF HAVE_DECL_PUTW HAVE_DECL_OBSTACK_PRINTF HAVE_DECL_GETW HAVE_DECL_GETLINE HAVE_DECL_GETDELIM HAVE_DECL_FTELLO HAVE_DECL_FSEEKO HAVE_DECL_FPURGE HAVE_DECL_FCLOSEALL GL_GENERATE_STDINT_H_FALSE GL_GENERATE_STDINT_H_TRUE STDINT_H GL_GENERATE_STDDEF_H_FALSE GL_GENERATE_STDDEF_H_TRUE STDDEF_H GL_GENERATE_STDCKDINT_H_FALSE GL_GENERATE_STDCKDINT_H_TRUE STDCKDINT_H GL_COND_OBJ_STAT_FALSE GL_COND_OBJ_STAT_TRUE GL_COND_OBJ_SIGPROCMASK_FALSE GL_COND_OBJ_SIGPROCMASK_TRUE GL_COND_OBJ_SIGNBIT3_FALSE GL_COND_OBJ_SIGNBIT3_TRUE NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H NEXT_SIGNAL_H GL_COND_OBJ_SIGACTION_FALSE GL_COND_OBJ_SIGACTION_TRUE GL_COND_OBJ_SETLOCALE_LOCK_FALSE GL_COND_OBJ_SETLOCALE_LOCK_TRUE GL_COND_OBJ_REALLOCARRAY_FALSE GL_COND_OBJ_REALLOCARRAY_TRUE GL_COND_OBJ_READLINK_FALSE GL_COND_OBJ_READLINK_TRUE GL_COND_OBJ_RAWMEMCHR_FALSE GL_COND_OBJ_RAWMEMCHR_TRUE GL_GNULIB_SIGACTION GL_GNULIB_SIGPROCMASK GL_GNULIB_SIGNAL_H_SIGPIPE GL_GNULIB_RAISE GL_GNULIB_PTHREAD_SIGMASK GL_COND_OBJ_RAISE_FALSE GL_COND_OBJ_RAISE_TRUE REPLACE_RAISE REPLACE_PTHREAD_SIGMASK HAVE_SIGHANDLER_T HAVE_TYPE_VOLATILE_SIG_ATOMIC_T HAVE_STRUCT_SIGACTION_SA_SIGACTION HAVE_SIGACTION HAVE_SIGINFO_T HAVE_SIGSET_T HAVE_RAISE HAVE_PTHREAD_SIGMASK HAVE_POSIX_SIGNALBLOCKING GL_COND_OBJ_PIPE_FALSE GL_COND_OBJ_PIPE_TRUE GL_COND_OBJ_OPEN_FALSE GL_COND_OBJ_OPEN_TRUE GL_COND_OBJ_MSVC_NOTHROW_FALSE GL_COND_OBJ_MSVC_NOTHROW_TRUE GL_COND_OBJ_MSVC_INVAL_FALSE GL_COND_OBJ_MSVC_INVAL_TRUE GL_COND_OBJ_MKSTEMPS_FALSE GL_COND_OBJ_MKSTEMPS_TRUE GL_COND_OBJ_MKDIR_FALSE GL_COND_OBJ_MKDIR_TRUE GL_COND_OBJ_MEMPCPY_FALSE GL_COND_OBJ_MEMPCPY_TRUE GL_GNULIB_MDA_STRDUP GL_GNULIB_MDA_MEMCCPY GL_GNULIB_STRVERSCMP GL_GNULIB_STRSIGNAL GL_GNULIB_SIGDESCR_NP GL_GNULIB_SIGABBREV_NP GL_GNULIB_STRERRORNAME_NP GL_GNULIB_STRERROR_R GL_GNULIB_STRERROR GL_GNULIB_MBSTOK_R GL_GNULIB_MBSSEP GL_GNULIB_MBSSPN GL_GNULIB_MBSPBRK GL_GNULIB_MBSCSPN GL_GNULIB_MBSCASESTR GL_GNULIB_MBSPCASECMP GL_GNULIB_MBSNCASECMP GL_GNULIB_MBSCASECMP GL_GNULIB_MBSSTR GL_GNULIB_MBSRCHR GL_GNULIB_MBSCHR GL_GNULIB_MBSNLEN GL_GNULIB_MBSLEN GL_GNULIB_STRTOK_R GL_GNULIB_STRCASESTR GL_GNULIB_STRSTR GL_GNULIB_STRSEP GL_GNULIB_STRPBRK GL_GNULIB_STRNLEN GL_GNULIB_STRNDUP GL_GNULIB_STRNCAT GL_GNULIB_STRDUP GL_GNULIB_STRCHRNUL GL_GNULIB_STPNCPY GL_GNULIB_STPCPY GL_GNULIB_RAWMEMCHR GL_GNULIB_MEMSET_EXPLICIT GL_GNULIB_MEMRCHR GL_GNULIB_MEMPCPY GL_GNULIB_MEMMEM GL_GNULIB_MEMCHR GL_GNULIB_FFSLL GL_GNULIB_FFSL GL_GNULIB_EXPLICIT_BZERO GL_COND_OBJ_MEMCHR_FALSE GL_COND_OBJ_MEMCHR_TRUE UNDEFINE_STRTOK_R REPLACE_STRSIGNAL REPLACE_STRERRORNAME_NP REPLACE_STRERROR_R REPLACE_STRERROR REPLACE_STRTOK_R REPLACE_STRCASESTR REPLACE_STRSTR REPLACE_STRNLEN REPLACE_STRNDUP REPLACE_STRNCAT REPLACE_STRDUP REPLACE_STRCHRNUL REPLACE_STPNCPY REPLACE_STPCPY REPLACE_MEMPCPY REPLACE_MEMMEM REPLACE_MEMCHR REPLACE_FFSLL HAVE_STRVERSCMP HAVE_DECL_STRSIGNAL HAVE_SIGDESCR_NP HAVE_SIGABBREV_NP HAVE_STRERRORNAME_NP HAVE_DECL_STRERROR_R HAVE_DECL_STRTOK_R HAVE_STRCASESTR HAVE_STRSEP HAVE_STRPBRK HAVE_DECL_STRNLEN HAVE_DECL_STRNDUP HAVE_DECL_STRDUP HAVE_STRCHRNUL HAVE_STPNCPY HAVE_STPCPY HAVE_RAWMEMCHR HAVE_DECL_MEMRCHR HAVE_MEMSET_EXPLICIT HAVE_MEMPCPY HAVE_DECL_MEMMEM HAVE_FFSLL HAVE_FFSL HAVE_EXPLICIT_BZERO HAVE_MBSLEN GL_COND_OBJ_MBSINIT_FALSE GL_COND_OBJ_MBSINIT_TRUE GL_GNULIB_MDA_WCSDUP GL_GNULIB_WCSFTIME GL_GNULIB_WCSWIDTH GL_GNULIB_WCSTOK GL_GNULIB_WCSSTR GL_GNULIB_WCSPBRK GL_GNULIB_WCSSPN GL_GNULIB_WCSCSPN GL_GNULIB_WCSRCHR GL_GNULIB_WCSCHR GL_GNULIB_WCSDUP GL_GNULIB_WCSXFRM GL_GNULIB_WCSCOLL GL_GNULIB_WCSNCASECMP GL_GNULIB_WCSCASECMP GL_GNULIB_WCSNCMP GL_GNULIB_WCSCMP GL_GNULIB_WCSNCAT GL_GNULIB_WCSCAT GL_GNULIB_WCPNCPY GL_GNULIB_WCSNCPY GL_GNULIB_WCPCPY GL_GNULIB_WCSCPY GL_GNULIB_WCSNLEN GL_GNULIB_WCSLEN GL_GNULIB_WMEMSET GL_GNULIB_WMEMPCPY GL_GNULIB_WMEMMOVE GL_GNULIB_WMEMCPY GL_GNULIB_WMEMCMP GL_GNULIB_WMEMCHR GL_GNULIB_WCWIDTH GL_GNULIB_WCSNRTOMBS GL_GNULIB_WCSRTOMBS GL_GNULIB_WCRTOMB GL_GNULIB_MBSNRTOWCS GL_GNULIB_MBSRTOWCS GL_GNULIB_MBRLEN GL_GNULIB_MBRTOWC GL_GNULIB_MBSINIT GL_GNULIB_WCTOB GL_GNULIB_BTOWC HAVE_VISIBILITY CFLAG_VISIBILITY GL_COND_OBJ_MBRTOWC_FALSE GL_COND_OBJ_MBRTOWC_TRUE LIB_MBRTOWC MBRTOWC_LIB LOCALE_ZH_CN LOCALE_FR_UTF8 LOCALE_JA REPLACE_WMEMPCPY REPLACE_WCSTOK REPLACE_WCSFTIME REPLACE_WCSWIDTH REPLACE_WCWIDTH REPLACE_WCSNRTOMBS REPLACE_WCSRTOMBS REPLACE_WCRTOMB REPLACE_MBSNRTOWCS REPLACE_MBSRTOWCS REPLACE_MBRLEN REPLACE_MBRTOWC REPLACE_MBSINIT REPLACE_WCTOB REPLACE_BTOWC REPLACE_MBSTATE_T HAVE_DECL_WCWIDTH HAVE_DECL_WCSDUP HAVE_DECL_WCTOB HAVE_WCSFTIME HAVE_WCSWIDTH HAVE_WCSTOK HAVE_WCSSTR HAVE_WCSPBRK HAVE_WCSSPN HAVE_WCSCSPN HAVE_WCSRCHR HAVE_WCSCHR HAVE_WCSDUP HAVE_WCSXFRM HAVE_WCSCOLL HAVE_WCSNCASECMP HAVE_WCSCASECMP HAVE_WCSNCMP HAVE_WCSCMP HAVE_WCSNCAT HAVE_WCSCAT HAVE_WCPNCPY HAVE_WCSNCPY HAVE_WCPCPY HAVE_WCSCPY HAVE_WCSNLEN HAVE_WCSLEN HAVE_WMEMSET HAVE_WMEMPCPY HAVE_WMEMMOVE HAVE_WMEMCPY HAVE_WMEMCMP HAVE_WMEMCHR HAVE_WCSNRTOMBS HAVE_WCSRTOMBS HAVE_WCRTOMB HAVE_MBSNRTOWCS HAVE_MBSRTOWCS HAVE_MBRLEN HAVE_MBRTOWC HAVE_MBSINIT HAVE_BTOWC NEXT_AS_FIRST_DIRECTIVE_MATH_H NEXT_MATH_H GL_COND_OBJ_LSTAT_FALSE GL_COND_OBJ_LSTAT_TRUE GL_GNULIB_LOCALENAME GL_GNULIB_DUPLOCALE GL_GNULIB_SETLOCALE_NULL GL_GNULIB_SETLOCALE GL_GNULIB_LOCALECONV NEXT_AS_FIRST_DIRECTIVE_LOCALE_H NEXT_LOCALE_H HAVE_XLOCALE_H NEXT_AS_FIRST_DIRECTIVE_STDDEF_H NEXT_STDDEF_H HAVE_WCHAR_T HAVE_MAX_ALIGN_T REPLACE_NULL LOCALENAME_ENHANCE_LOCALE_FUNCS REPLACE_STRUCT_LCONV REPLACE_FREELOCALE REPLACE_DUPLOCALE REPLACE_NEWLOCALE REPLACE_SETLOCALE REPLACE_LOCALECONV HAVE_FREELOCALE HAVE_DUPLOCALE HAVE_NEWLOCALE LOCALCHARSET_TESTS_ENVIRONMENT GL_GENERATE_LIMITS_H_FALSE GL_GENERATE_LIMITS_H_TRUE LIMITS_H GL_COND_OBJ_ISATTY_FALSE GL_COND_OBJ_ISATTY_TRUE GL_GNULIB_STRTOUMAX GL_GNULIB_STRTOIMAX GL_GNULIB_IMAXDIV GL_GNULIB_IMAXABS NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H NEXT_INTTYPES_H UINT64_MAX_EQ_ULONG_MAX UINT32_MAX_LT_UINTMAX_MAX PRIPTR_PREFIX INT64_MAX_EQ_LONG_MAX INT32_MAX_LT_INTMAX_MAX REPLACE_STRTOUMAX REPLACE_STRTOIMAX REPLACE_IMAXDIV REPLACE_IMAXABS HAVE_IMAXDIV HAVE_IMAXABS HAVE_IMAXDIV_T HAVE_DECL_STRTOUMAX HAVE_DECL_STRTOIMAX HAVE_DECL_IMAXDIV HAVE_DECL_IMAXABS HAVE_SYS_INTTYPES_H HAVE_SYS_BITYPES_H HAVE_C99_STDINT_H WINT_T_SUFFIX WCHAR_T_SUFFIX SIG_ATOMIC_T_SUFFIX SIZE_T_SUFFIX PTRDIFF_T_SUFFIX HAVE_SIGNED_WINT_T HAVE_SIGNED_WCHAR_T HAVE_SIGNED_SIG_ATOMIC_T BITSIZEOF_WINT_T BITSIZEOF_WCHAR_T BITSIZEOF_SIG_ATOMIC_T BITSIZEOF_SIZE_T BITSIZEOF_PTRDIFF_T APPLE_UNIVERSAL_BUILD HAVE_STDINT_H NEXT_AS_FIRST_DIRECTIVE_STDINT_H NEXT_STDINT_H HAVE_SYS_TYPES_H HAVE_INTTYPES_H HAVE_WCHAR_H GNULIBHEADERS_OVERRIDE_WINT_T NEXT_AS_FIRST_DIRECTIVE_LIMITS_H NEXT_LIMITS_H LTLIBICONV LIBICONV LIB_HARD_LOCALE HARD_LOCALE_LIB LIB_SETLOCALE_NULL SETLOCALE_NULL_LIB LIB_SCHED_YIELD SCHED_YIELD_LIB LIBPMULTITHREAD LIBPTHREAD LTLIBINTL LIBINTL GL_GNULIB_GETRANDOM GL_COND_OBJ_GETRANDOM_FALSE GL_COND_OBJ_GETRANDOM_TRUE LIB_GETRANDOM GETRANDOM_LIB REPLACE_GETRANDOM HAVE_GETRANDOM GL_COND_OBJ_GETPROGNAME_FALSE GL_COND_OBJ_GETPROGNAME_TRUE GL_COND_OBJ_GETOPT_FALSE GL_COND_OBJ_GETOPT_TRUE GL_GENERATE_GETOPT_CDEFS_H_FALSE GL_GENERATE_GETOPT_CDEFS_H_TRUE GETOPT_CDEFS_H GL_GENERATE_GETOPT_H_FALSE GL_GENERATE_GETOPT_H_TRUE GETOPT_H HAVE_SYS_CDEFS_H HAVE_GETOPT_H NEXT_AS_FIRST_DIRECTIVE_GETOPT_H NEXT_GETOPT_H GL_COND_OBJ_GETDTABLESIZE_FALSE GL_COND_OBJ_GETDTABLESIZE_TRUE GL_GNULIB_MDA_UMASK GL_GNULIB_MDA_MKDIR GL_GNULIB_MDA_CHMOD GL_GNULIB_OVERRIDES_STRUCT_STAT GL_GNULIB_UTIMENSAT GL_GNULIB_STAT GL_GNULIB_MKNODAT GL_GNULIB_MKNOD GL_GNULIB_MKFIFOAT GL_GNULIB_MKFIFO GL_GNULIB_MKDIRAT GL_GNULIB_MKDIR GL_GNULIB_LSTAT GL_GNULIB_LCHMOD GL_GNULIB_GETUMASK GL_GNULIB_FUTIMENS GL_GNULIB_FSTATAT GL_GNULIB_FSTAT GL_GNULIB_FCHMODAT GL_GNULIB_CHMOD WINDOWS_64_BIT_ST_SIZE WINDOWS_STAT_TIMESPEC NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H NEXT_SYS_STAT_H GL_COND_OBJ_FSTAT_FALSE GL_COND_OBJ_FSTAT_TRUE REPLACE_UTIMENSAT REPLACE_STAT REPLACE_MKNODAT REPLACE_MKNOD REPLACE_MKFIFOAT REPLACE_MKFIFO REPLACE_MKDIR REPLACE_LSTAT REPLACE_FUTIMENS REPLACE_FSTATAT REPLACE_FSTAT REPLACE_FCHMODAT REPLACE_CHMOD HAVE_UTIMENSAT HAVE_MKNODAT HAVE_MKNOD HAVE_MKFIFOAT HAVE_MKFIFO HAVE_MKDIRAT HAVE_LSTAT HAVE_LCHMOD HAVE_GETUMASK HAVE_FUTIMENS HAVE_FSTATAT HAVE_FCHMODAT GL_COND_OBJ_FSETERR_FALSE GL_COND_OBJ_FSETERR_TRUE HAVE_SAME_LONG_DOUBLE_AS_DOUBLE GL_GNULIB_MDA_YN GL_GNULIB_MDA_Y1 GL_GNULIB_MDA_Y0 GL_GNULIB_MDA_JN GL_GNULIB_MDA_J1 GL_GNULIB_MDA_J0 GL_GNULIB_TRUNCL GL_GNULIB_TRUNCF GL_GNULIB_TRUNC GL_GNULIB_TANHF GL_GNULIB_TANL GL_GNULIB_TANF GL_GNULIB_SQRTL GL_GNULIB_SQRTF GL_GNULIB_SINHF GL_GNULIB_SINL GL_GNULIB_SINF GL_GNULIB_SIGNBIT GL_GNULIB_ROUNDL GL_GNULIB_ROUNDF GL_GNULIB_ROUND GL_GNULIB_RINTL GL_GNULIB_RINTF GL_GNULIB_RINT GL_GNULIB_REMAINDERL GL_GNULIB_REMAINDERF GL_GNULIB_REMAINDER GL_GNULIB_POWF GL_GNULIB_MODFL GL_GNULIB_MODFF GL_GNULIB_MODF GL_GNULIB_LOGBL GL_GNULIB_LOGBF GL_GNULIB_LOGB GL_GNULIB_LOG2L GL_GNULIB_LOG2F GL_GNULIB_LOG2 GL_GNULIB_LOG1PL GL_GNULIB_LOG1PF GL_GNULIB_LOG1P GL_GNULIB_LOG10L GL_GNULIB_LOG10F GL_GNULIB_LOG10 GL_GNULIB_LOGL GL_GNULIB_LOGF GL_GNULIB_LOG GL_GNULIB_LDEXPL GL_GNULIB_LDEXPF GL_GNULIB_ISNANL GL_GNULIB_ISNAND GL_GNULIB_ISNANF GL_GNULIB_ISNAN GL_GNULIB_ISINF GL_GNULIB_ISFINITE GL_GNULIB_ILOGBL GL_GNULIB_ILOGBF GL_GNULIB_ILOGB GL_GNULIB_HYPOTL GL_GNULIB_HYPOTF GL_GNULIB_HYPOT GL_GNULIB_FREXPL GL_GNULIB_FREXP GL_GNULIB_FREXPF GL_GNULIB_FMODL GL_GNULIB_FMODF GL_GNULIB_FMOD GL_GNULIB_FMAL GL_GNULIB_FMAF GL_GNULIB_FMA GL_GNULIB_FLOORL GL_GNULIB_FLOORF GL_GNULIB_FLOOR GL_GNULIB_FABSL GL_GNULIB_FABSF GL_GNULIB_EXPM1L GL_GNULIB_EXPM1F GL_GNULIB_EXPM1 GL_GNULIB_EXP2L GL_GNULIB_EXP2F GL_GNULIB_EXP2 GL_GNULIB_EXPL GL_GNULIB_EXPF GL_GNULIB_COSHF GL_GNULIB_COSL GL_GNULIB_COSF GL_GNULIB_COPYSIGNL GL_GNULIB_COPYSIGNF GL_GNULIB_COPYSIGN GL_GNULIB_CEILL GL_GNULIB_CEILF GL_GNULIB_CEIL GL_GNULIB_CBRTL GL_GNULIB_CBRTF GL_GNULIB_CBRT GL_GNULIB_ATAN2F GL_GNULIB_ATANL GL_GNULIB_ATANF GL_GNULIB_ASINL GL_GNULIB_ASINF GL_GNULIB_ACOSL GL_GNULIB_ACOSF REPLACE_TRUNCL REPLACE_TRUNCF REPLACE_TRUNC REPLACE_TANHF REPLACE_TANF REPLACE_SQRTL REPLACE_SQRTF REPLACE_SINHF REPLACE_SINF REPLACE_SIGNBIT_USING_BUILTINS REPLACE_SIGNBIT REPLACE_ROUNDL REPLACE_ROUNDF REPLACE_ROUND REPLACE_RINTL REPLACE_REMAINDERL REPLACE_REMAINDERF REPLACE_REMAINDER REPLACE_NAN REPLACE_MODFL REPLACE_MODFF REPLACE_MODF REPLACE_LOGBL REPLACE_LOGBF REPLACE_LOGB REPLACE_LOG2L REPLACE_LOG2F REPLACE_LOG2 REPLACE_LOG1PL REPLACE_LOG1PF REPLACE_LOG1P REPLACE_LOG10L REPLACE_LOG10F REPLACE_LOG10 REPLACE_LOGL REPLACE_LOGF REPLACE_LOG REPLACE_LDEXPL REPLACE_ISNAN REPLACE_ISINF REPLACE_ISFINITE REPLACE_ILOGBL REPLACE_ILOGBF REPLACE_ILOGB REPLACE_HYPOTL REPLACE_HYPOTF REPLACE_HYPOT REPLACE_HUGE_VAL REPLACE_FREXPL REPLACE_FREXP REPLACE_FREXPF REPLACE_FMODL REPLACE_FMODF REPLACE_FMOD REPLACE_FMAL REPLACE_FMAF REPLACE_FMA REPLACE_FLOORL REPLACE_FLOORF REPLACE_FLOOR REPLACE_FABSL REPLACE_EXP2L REPLACE_EXP2 REPLACE_EXPM1L REPLACE_EXPM1F REPLACE_EXPM1 REPLACE_EXPL REPLACE_EXPF REPLACE_COSHF REPLACE_COSF REPLACE_CEILL REPLACE_CEILF REPLACE_CEIL REPLACE_CBRTL REPLACE_CBRTF REPLACE_ATAN2F REPLACE_ATANF REPLACE_ASINF REPLACE_ACOSF HAVE_DECL_TRUNCL HAVE_DECL_TRUNCF HAVE_DECL_TRUNC HAVE_DECL_TANL HAVE_DECL_SQRTL HAVE_DECL_SINL HAVE_DECL_ROUNDL HAVE_DECL_ROUNDF HAVE_DECL_ROUND HAVE_DECL_RINTF HAVE_DECL_REMAINDERL HAVE_DECL_REMAINDER HAVE_DECL_LOGB HAVE_DECL_LOG2L HAVE_DECL_LOG2F HAVE_DECL_LOG2 HAVE_DECL_LOG10L HAVE_DECL_LOGL HAVE_DECL_LDEXPL HAVE_DECL_FREXPL HAVE_DECL_FLOORL HAVE_DECL_FLOORF HAVE_DECL_EXPM1L HAVE_DECL_EXP2L HAVE_DECL_EXP2F HAVE_DECL_EXP2 HAVE_DECL_EXPL HAVE_DECL_COSL HAVE_DECL_COPYSIGNF HAVE_DECL_CEILL HAVE_DECL_CEILF HAVE_DECL_CBRTL HAVE_DECL_CBRTF HAVE_DECL_ATANL HAVE_DECL_ASINL HAVE_DECL_ACOSL HAVE_TANHF HAVE_TANL HAVE_TANF HAVE_SQRTL HAVE_SQRTF HAVE_SINHF HAVE_SINL HAVE_SINF HAVE_RINTL HAVE_RINT HAVE_REMAINDERF HAVE_REMAINDER HAVE_POWF HAVE_MODFL HAVE_MODFF HAVE_LOGBL HAVE_LOGBF HAVE_LOG1PL HAVE_LOG1PF HAVE_LOG1P HAVE_LOG10L HAVE_LOG10F HAVE_LOGL HAVE_LOGF HAVE_LDEXPF HAVE_ISNANL HAVE_ISNAND HAVE_ISNANF HAVE_ILOGBL HAVE_ILOGBF HAVE_ILOGB HAVE_HYPOTL HAVE_HYPOTF HAVE_FREXPF HAVE_FMODL HAVE_FMODF HAVE_FMAL HAVE_FMAF HAVE_FMA HAVE_FABSL HAVE_FABSF HAVE_EXPM1F HAVE_EXPM1 HAVE_EXPL HAVE_EXPF HAVE_COSHF HAVE_COSL HAVE_COSF HAVE_COPYSIGNL HAVE_COPYSIGN HAVE_CBRTL HAVE_CBRTF HAVE_CBRT HAVE_ATAN2F HAVE_ATANL HAVE_ATANF HAVE_ASINL HAVE_ASINF HAVE_ACOSL HAVE_ACOSF GL_COND_OBJ_FREE_FALSE GL_COND_OBJ_FREE_TRUE GL_COND_OBJ_ITOLD_FALSE GL_COND_OBJ_ITOLD_TRUE GL_COND_OBJ_FLOAT_FALSE GL_COND_OBJ_FLOAT_TRUE GL_GENERATE_FLOAT_H_FALSE GL_GENERATE_FLOAT_H_TRUE FLOAT_H REPLACE_ITOLD NEXT_AS_FIRST_DIRECTIVE_FLOAT_H NEXT_FLOAT_H NEXT_AS_FIRST_DIRECTIVE_FCNTL_H NEXT_FCNTL_H GL_GNULIB_MDA_OPEN GL_GNULIB_MDA_CREAT GL_GNULIB_OPENAT GL_GNULIB_OPEN GL_GNULIB_NONBLOCKING GL_GNULIB_FCNTL GL_GNULIB_CREAT GL_COND_OBJ_FCNTL_FALSE GL_COND_OBJ_FCNTL_TRUE REPLACE_OPENAT REPLACE_OPEN REPLACE_FCNTL REPLACE_CREAT HAVE_OPENAT HAVE_FCNTL GL_GENERATE_ERROR_H_FALSE GL_GENERATE_ERROR_H_TRUE ERROR_H GL_COND_OBJ_ERROR_FALSE GL_COND_OBJ_ERROR_TRUE REPLACE_ERROR_AT_LINE REPLACE_ERROR HAVE_ERROR_AT_LINE HAVE_ERROR GL_GENERATE_ERRNO_H_FALSE GL_GENERATE_ERRNO_H_TRUE ERRNO_H EOVERFLOW_VALUE EOVERFLOW_HIDDEN ENOLINK_VALUE ENOLINK_HIDDEN EMULTIHOP_VALUE EMULTIHOP_HIDDEN NEXT_AS_FIRST_DIRECTIVE_ERRNO_H NEXT_ERRNO_H GL_COND_OBJ_DUP2_FALSE GL_COND_OBJ_DUP2_TRUE GL_GNULIB_MDA_WRITE GL_GNULIB_MDA_UNLINK GL_GNULIB_MDA_SWAB GL_GNULIB_MDA_RMDIR GL_GNULIB_MDA_READ GL_GNULIB_MDA_LSEEK GL_GNULIB_MDA_ISATTY GL_GNULIB_MDA_GETPID GL_GNULIB_MDA_GETCWD GL_GNULIB_MDA_EXECVPE GL_GNULIB_MDA_EXECVP GL_GNULIB_MDA_EXECVE GL_GNULIB_MDA_EXECV GL_GNULIB_MDA_EXECLP GL_GNULIB_MDA_EXECLE GL_GNULIB_MDA_EXECL GL_GNULIB_MDA_DUP2 GL_GNULIB_MDA_DUP GL_GNULIB_MDA_CLOSE GL_GNULIB_MDA_CHDIR GL_GNULIB_MDA_ACCESS GL_GNULIB_WRITE GL_GNULIB_USLEEP GL_GNULIB_UNLINKAT GL_GNULIB_UNLINK GL_GNULIB_UNISTD_H_SIGPIPE GL_GNULIB_UNISTD_H_NONBLOCKING GL_GNULIB_UNISTD_H_GETOPT GL_GNULIB_TTYNAME_R GL_GNULIB_TRUNCATE GL_GNULIB_SYMLINKAT GL_GNULIB_SYMLINK GL_GNULIB_SLEEP GL_GNULIB_SETHOSTNAME GL_GNULIB_RMDIR GL_GNULIB_READLINKAT GL_GNULIB_READLINK GL_GNULIB_READ GL_GNULIB_PWRITE GL_GNULIB_PREAD GL_GNULIB_PIPE2 GL_GNULIB_PIPE GL_GNULIB_LSEEK GL_GNULIB_LINKAT GL_GNULIB_LINK GL_GNULIB_LCHOWN GL_GNULIB_ISATTY GL_GNULIB_GROUP_MEMBER GL_GNULIB_GETUSERSHELL GL_GNULIB_GETPASS_GNU GL_GNULIB_GETPASS GL_GNULIB_GETPAGESIZE GL_GNULIB_GETOPT_POSIX GL_GNULIB_GETLOGIN_R GL_GNULIB_GETLOGIN GL_GNULIB_GETHOSTNAME GL_GNULIB_GETGROUPS GL_GNULIB_GETENTROPY GL_GNULIB_GETDTABLESIZE GL_GNULIB_GETDOMAINNAME GL_GNULIB_GETCWD GL_GNULIB_FTRUNCATE GL_GNULIB_FSYNC GL_GNULIB_FDATASYNC GL_GNULIB_FCHOWNAT GL_GNULIB_FCHDIR GL_GNULIB_FACCESSAT GL_GNULIB_EXECVPE GL_GNULIB_EXECVP GL_GNULIB_EXECVE GL_GNULIB_EXECV GL_GNULIB_EXECLP GL_GNULIB_EXECLE GL_GNULIB_EXECL GL_GNULIB_EUIDACCESS GL_GNULIB_ENVIRON GL_GNULIB_DUP3 GL_GNULIB_DUP2 GL_GNULIB_DUP GL_GNULIB_COPY_FILE_RANGE GL_GNULIB_CLOSE GL_GNULIB_CHOWN GL_GNULIB_CHDIR GL_GNULIB_ACCESS GL_COND_OBJ_CLOSE_FALSE GL_COND_OBJ_CLOSE_TRUE HAVE_WINSOCK2_H HAVE_MSVC_INVALID_PARAMETER_HANDLER UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS UNISTD_H_HAVE_WINSOCK2_H UNISTD_H_HAVE_SYS_RANDOM_H REPLACE_WRITE REPLACE_USLEEP REPLACE_UNLINKAT REPLACE_UNLINK REPLACE_TTYNAME_R REPLACE_TRUNCATE REPLACE_SYMLINKAT REPLACE_SYMLINK REPLACE_SLEEP REPLACE_SETHOSTNAME REPLACE_RMDIR REPLACE_READLINKAT REPLACE_READLINK REPLACE_READ REPLACE_PWRITE REPLACE_PREAD REPLACE_PIPE2 REPLACE_LSEEK REPLACE_LINKAT REPLACE_LINK REPLACE_LCHOWN REPLACE_ISATTY REPLACE_GETPASS_FOR_GETPASS_GNU REPLACE_GETPASS REPLACE_GETPAGESIZE REPLACE_GETGROUPS REPLACE_GETLOGIN_R REPLACE_GETENTROPY REPLACE_GETDTABLESIZE REPLACE_GETDOMAINNAME REPLACE_GETCWD REPLACE_FTRUNCATE REPLACE_FDATASYNC REPLACE_FCHOWNAT REPLACE_FACCESSAT REPLACE_EXECVPE REPLACE_EXECVP REPLACE_EXECVE REPLACE_EXECV REPLACE_EXECLP REPLACE_EXECLE REPLACE_EXECL REPLACE_DUP3 REPLACE_DUP2 REPLACE_DUP REPLACE_COPY_FILE_RANGE REPLACE_CLOSE REPLACE_CHOWN REPLACE_ACCESS HAVE_SYS_PARAM_H HAVE_OS_H HAVE_DECL_TTYNAME_R HAVE_DECL_TRUNCATE HAVE_DECL_SETHOSTNAME HAVE_DECL_GETUSERSHELL HAVE_DECL_GETPAGESIZE HAVE_DECL_GETLOGIN_R HAVE_DECL_GETLOGIN HAVE_DECL_GETDOMAINNAME HAVE_DECL_FDATASYNC HAVE_DECL_FCHDIR HAVE_DECL_EXECVPE HAVE_DECL_ENVIRON HAVE_USLEEP HAVE_UNLINKAT HAVE_SYMLINKAT HAVE_SYMLINK HAVE_SLEEP HAVE_SETHOSTNAME HAVE_READLINKAT HAVE_READLINK HAVE_PWRITE HAVE_PREAD HAVE_PIPE2 HAVE_PIPE HAVE_LINKAT HAVE_LINK HAVE_LCHOWN HAVE_GROUP_MEMBER HAVE_GETPASS HAVE_GETPAGESIZE HAVE_GETLOGIN HAVE_GETHOSTNAME HAVE_GETGROUPS HAVE_GETENTROPY HAVE_GETDTABLESIZE HAVE_FTRUNCATE HAVE_FSYNC HAVE_FDATASYNC HAVE_FCHOWNAT HAVE_FCHDIR HAVE_FACCESSAT HAVE_EXECVPE HAVE_EUIDACCESS HAVE_DUP3 HAVE_COPY_FILE_RANGE HAVE_CHOWN LIB_CLOCK_GETTIME CLOCK_TIME_LIB GL_COND_OBJ_CANONICALIZE_LGPL_FALSE GL_COND_OBJ_CANONICALIZE_LGPL_TRUE GL_GNULIB_MDA_PUTENV GL_GNULIB_MDA_MKTEMP GL_GNULIB_MDA_GCVT GL_GNULIB_MDA_FCVT GL_GNULIB_MDA_ECVT GL_GNULIB_WCTOMB GL_GNULIB_UNSETENV GL_GNULIB_UNLOCKPT GL_GNULIB_SYSTEM_POSIX GL_GNULIB_STRTOULL GL_GNULIB_STRTOUL GL_GNULIB_STRTOLL GL_GNULIB_STRTOLD GL_GNULIB_STRTOL GL_GNULIB_STRTOD GL_GNULIB_SETENV GL_GNULIB_SECURE_GETENV GL_GNULIB_RPMATCH GL_GNULIB_REALPATH GL_GNULIB_REALLOC_POSIX GL_GNULIB_REALLOC_GNU GL_GNULIB_REALLOCARRAY GL_GNULIB_RANDOM_R GL_GNULIB_RANDOM GL_GNULIB_QSORT_R GL_GNULIB_PUTENV GL_GNULIB_PTSNAME_R GL_GNULIB_PTSNAME GL_GNULIB_POSIX_OPENPT GL_GNULIB_POSIX_MEMALIGN GL_GNULIB_MKSTEMPS GL_GNULIB_MKSTEMP GL_GNULIB_MKOSTEMPS GL_GNULIB_MKOSTEMP GL_GNULIB_MKDTEMP GL_GNULIB_MBTOWC GL_GNULIB_MALLOC_POSIX GL_GNULIB_MALLOC_GNU GL_GNULIB_GRANTPT GL_GNULIB_GETSUBOPT GL_GNULIB_GETPROGNAME GL_GNULIB_GETLOADAVG GL_GNULIB_FREE_POSIX GL_GNULIB_CANONICALIZE_FILE_NAME GL_GNULIB_CALLOC_POSIX GL_GNULIB_CALLOC_GNU GL_GNULIB_ATOLL GL_GNULIB_ALIGNED_ALLOC GL_GNULIB__EXIT REPLACE_WCTOMB REPLACE_UNSETENV REPLACE_STRTOULL REPLACE_STRTOUL REPLACE_STRTOLL REPLACE_STRTOLD REPLACE_STRTOL REPLACE_STRTOD REPLACE_SETSTATE REPLACE_SETENV REPLACE_REALPATH REPLACE_REALLOCARRAY REPLACE_REALLOC_FOR_REALLOC_POSIX REPLACE_REALLOC_FOR_REALLOC_GNU REPLACE_RANDOM_R REPLACE_RANDOM REPLACE_QSORT_R REPLACE_PUTENV REPLACE_PTSNAME_R REPLACE_PTSNAME REPLACE_POSIX_OPENPT REPLACE_POSIX_MEMALIGN REPLACE_MKSTEMP REPLACE_MKOSTEMPS REPLACE_MKOSTEMP REPLACE_MBTOWC REPLACE_MALLOC_FOR_MALLOC_POSIX REPLACE_MALLOC_FOR_MALLOC_GNU REPLACE_INITSTATE REPLACE_GETSUBOPT REPLACE_GETPROGNAME REPLACE_GETLOADAVG REPLACE_FREE REPLACE_CANONICALIZE_FILE_NAME REPLACE_CALLOC_FOR_CALLOC_POSIX REPLACE_CALLOC_FOR_CALLOC_GNU REPLACE_ALIGNED_ALLOC REPLACE__EXIT HAVE_DECL_UNSETENV HAVE_UNLOCKPT HAVE_SYS_LOADAVG_H HAVE_STRUCT_RANDOM_DATA HAVE_STRTOULL HAVE_STRTOUL HAVE_STRTOLL HAVE_STRTOLD HAVE_STRTOL HAVE_STRTOD HAVE_DECL_SETSTATE HAVE_SETSTATE HAVE_DECL_SETENV HAVE_SETENV HAVE_SECURE_GETENV HAVE_RPMATCH HAVE_REALPATH HAVE_REALLOCARRAY HAVE_RANDOM_R HAVE_RANDOM_H HAVE_RANDOM HAVE_QSORT_R HAVE_PTSNAME_R HAVE_PTSNAME HAVE_POSIX_OPENPT HAVE_POSIX_MEMALIGN HAVE_MKSTEMPS HAVE_MKSTEMP HAVE_MKOSTEMPS HAVE_MKOSTEMP HAVE_MKDTEMP HAVE_MBTOWC HAVE_DECL_INITSTATE HAVE_INITSTATE HAVE_GRANTPT HAVE_GETSUBOPT HAVE_GETPROGNAME HAVE_DECL_GETLOADAVG HAVE_DECL_GCVT HAVE_DECL_FCVT HAVE_DECL_ECVT HAVE_CANONICALIZE_FILE_NAME HAVE_ATOLL HAVE_ALIGNED_ALLOC HAVE__EXIT GL_GENERATE_ASSERT_H_FALSE GL_GENERATE_ASSERT_H_TRUE ASSERT_H NEXT_AS_FIRST_DIRECTIVE_ASSERT_H NEXT_ASSERT_H PRAGMA_COLUMNS PRAGMA_SYSTEM_HEADER INCLUDE_NEXT_AS_FIRST_DIRECTIVE INCLUDE_NEXT GL_GENERATE_ALLOCA_H_FALSE GL_GENERATE_ALLOCA_H_TRUE ALLOCA_H HAVE_ALLOCA_H ALLOCA GL_COND_LIBTOOL_FALSE GL_COND_LIBTOOL_TRUE pkgpyexecdir pyexecdir pkgpythondir pythondir PYTHON_EXEC_PREFIX PYTHON_PREFIX PYTHON_PLATFORM PYTHON_VERSION PYTHON LEXLIB LEX_OUTPUT_ROOT LEX LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL ac_ct_AR DLLTOOL OBJDUMP FILECMD LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP SED LIBTOOL RANLIB ARFLAGS AR EGREP GREP CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC VERSION_INFO host_os host_vendor host_cpu host build_os build_vendor build_cpu build AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V CSCOPE ETAGS CTAGS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock with_python_sys_prefix with_python_prefix with_python_exec_prefix enable_cross_guesses enable_rpath with_libiconv_prefix enable_gcc_warnings enable_nls with_libintl_prefix enable_year2038 enable_largefile ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP LT_SYS_LIBRARY_PATH PYTHON' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures recode 3.7.15 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/recode] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of recode 3.7.15:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-cross-guesses={conservative|risky} specify policy for cross-compilation guesses --disable-rpath do not hardcode runtime library paths --disable-gcc-warnings turn off lots of GCC warnings --disable-nls do not use Native Language Support --enable-year2038 support timestamps after 2038 --disable-largefile omit support for large files Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-python-sys-prefix use Python's sys.prefix and sys.exec_prefix values --with-python_prefix override the default PYTHON_PREFIX --with-python_exec_prefix override the default PYTHON_EXEC_PREFIX --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor LT_SYS_LIBRARY_PATH User-defined run-time library search path. PYTHON the Python interpreter Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF recode configure 3.7.15 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_try_run LINENO # ---------------------- # Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that # executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: program exited with status $ac_status" >&5 printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR # ------------------------------------------------------------------ # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR # accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. ac_fn_check_decl () { ac_save_ac_compile="$ac_compile" if test -n "$ac_compile_for_check_decl"; then ac_compile="$ac_compile_for_check_decl" fi as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 printf %s "checking whether $as_decl_name is declared... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` eval ac_save_FLAGS=\$$6 as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext eval $6=\$ac_save_FLAGS fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ac_compile="$ac_save_ac_compile" } # ac_fn_check_decl # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_hi=$ac_mid; break else $as_nop as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_lo=$ac_mid; break else $as_nop as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done else $as_nop ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_hi=$ac_mid else $as_nop as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval (void) { return $2; } static unsigned long int ulongval (void) { return $2; } #include #include int main (void) { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : echo >>conftest.val; read $3 &5 printf %s "checking for $2.$3... " >&6; } if eval test \${$4+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main (void) { static $2 ac_aggr; if (ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$4=yes" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main (void) { static $2 ac_aggr; if (sizeof ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$4=yes" else $as_nop eval "$4=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$4 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by recode $as_me 3.7.15, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' // Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' // Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" as_fn_append ac_func_c_list " canonicalize_file_name HAVE_CANONICALIZE_FILE_NAME" as_fn_append ac_func_c_list " realpath HAVE_REALPATH" as_fn_append ac_func_c_list " lstat HAVE_LSTAT" as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" as_fn_append ac_func_c_list " _set_invalid_parameter_handler HAVE__SET_INVALID_PARAMETER_HANDLER" as_fn_append ac_header_c_list " sys/socket.h sys_socket_h HAVE_SYS_SOCKET_H" as_fn_append ac_func_c_list " fcntl HAVE_FCNTL" as_fn_append ac_func_c_list " symlink HAVE_SYMLINK" as_fn_append ac_func_c_list " getdtablesize HAVE_GETDTABLESIZE" as_fn_append ac_header_c_list " getopt.h getopt_h HAVE_GETOPT_H" as_fn_append ac_header_c_list " sys/cdefs.h sys_cdefs_h HAVE_SYS_CDEFS_H" as_fn_append ac_func_c_list " getexecname HAVE_GETEXECNAME" as_fn_append ac_header_c_list " threads.h threads_h HAVE_THREADS_H" as_fn_append ac_header_c_list " limits.h limits_h HAVE_LIMITS_H" as_fn_append ac_header_c_list " xlocale.h xlocale_h HAVE_XLOCALE_H" as_fn_append ac_header_c_list " math.h math_h HAVE_MATH_H" as_fn_append ac_func_c_list " mbsinit HAVE_MBSINIT" as_fn_append ac_func_c_list " mbrtowc HAVE_MBRTOWC" as_fn_append ac_header_c_list " sys/mman.h sys_mman_h HAVE_SYS_MMAN_H" as_fn_append ac_func_c_list " mprotect HAVE_MPROTECT" as_fn_append ac_func_c_list " mkstemps HAVE_MKSTEMPS" as_fn_append ac_func_c_list " pipe HAVE_PIPE" gl_printf_safe=yes as_fn_append ac_func_c_list " readlink HAVE_READLINK" as_fn_append ac_func_c_list " sigaction HAVE_SIGACTION" as_fn_append ac_func_c_list " sigaltstack HAVE_SIGALTSTACK" as_fn_append ac_func_c_list " siginterrupt HAVE_SIGINTERRUPT" as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H" as_fn_append ac_header_c_list " stdbool.h stdbool_h HAVE_STDBOOL_H" as_fn_append ac_header_c_list " stdckdint.h stdckdint_h HAVE_STDCKDINT_H" as_fn_append ac_func_c_list " strndup HAVE_STRNDUP" as_fn_append ac_header_c_list " sys/random.h sys_random_h HAVE_SYS_RANDOM_H" as_fn_append ac_header_c_list " sys/wait.h sys_wait_h HAVE_SYS_WAIT_H" as_fn_append ac_header_c_list " utime.h utime_h HAVE_UTIME_H" as_fn_append ac_func_c_list " vasnprintf HAVE_VASNPRINTF" as_fn_append ac_header_c_list " features.h features_h HAVE_FEATURES_H" as_fn_append ac_func_c_list " snprintf HAVE_SNPRINTF" as_fn_append ac_header_c_list " crtdefs.h crtdefs_h HAVE_CRTDEFS_H" as_fn_append ac_func_c_list " iswcntrl HAVE_ISWCNTRL" as_fn_append ac_header_c_list " wctype.h wctype_h HAVE_WCTYPE_H" gt_needs="$gt_needs " # Auxiliary files required by this configure script. ac_aux_files="config.rpath ltmain.sh compile config.guess config.sub missing install-sh" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}/build-aux" # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.16' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else $as_nop if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='recode' VERSION='3.7.15' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi if test -z "$ETAGS"; then ETAGS=etags fi if test -z "$CSCOPE"; then CSCOPE=cscope fi # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac RECODE_MAJOR_VERSION=`echo $VERSION | awk -F. '{print $1}'` RECODE_MINOR_VERSION=`echo $VERSION | awk -F. '{print $2}'` RECODE_MICRO_VERSION=`echo $VERSION | awk -F. '{print $3}'` RECODE_SONUM=$RECODE_MAJOR_VERSION AGE=$RECODE_MINOR_VERSION REVISION=$RECODE_MICRO_VERSION CURRENT=`expr $RECODE_SONUM + $AGE` VERSION_INFO=$CURRENT:$REVISION:$AGE ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 printf %s "checking whether the compiler is clang... " >&6; } if test ${gl_cv_compiler_clang+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __clang__ barfbarf #endif int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_compiler_clang=no else $as_nop gl_cv_compiler_clang=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 printf "%s\n" "$gl_cv_compiler_clang" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 printf %s "checking for compiler option needed when checking for declarations... " >&6; } if test ${gl_cv_compiler_check_decl_option+y} then : printf %s "(cached) " >&6 else $as_nop if test $gl_cv_compiler_clang = yes; then save_ac_compile="$ac_compile" ac_compile="$ac_compile -Werror=implicit-function-declaration" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' else $as_nop gl_cv_compiler_check_decl_option=none fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_compile="$save_ac_compile" else gl_cv_compiler_check_decl_option=none fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 printf "%s\n" "$gl_cv_compiler_check_decl_option" >&6; } if test "x$gl_cv_compiler_check_decl_option" != xnone; then ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" else ac_compile_for_check_decl="$ac_compile" fi DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } if test ${ac_cv_safe_to_define___extensions__+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 $ac_includes_default int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_safe_to_define___extensions__=yes else $as_nop ac_cv_safe_to_define___extensions__=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } if test ${ac_cv_should_define__xopen_source+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_should_define__xopen_source=no if test $ac_cv_header_wchar_h = yes then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include mbstate_t x; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE 500 #include mbstate_t x; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_should_define__xopen_source=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h if test $ac_cv_header_minix_config_h = yes then : MINIX=yes printf "%s\n" "#define _MINIX 1" >>confdefs.h printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h else $as_nop MINIX= fi if test $ac_cv_safe_to_define___extensions__ = yes then : printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h fi if test $ac_cv_should_define__xopen_source = yes then : printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h fi case "$host_os" in openbsd*) printf "%s\n" "#define _ISOC11_SOURCE 1" >>confdefs.h ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 printf %s "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test ${ac_cv_prog_CPP+y} then : printf %s "(cached) " >&6 else $as_nop # Double quotes because $CC needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 printf "%s\n" "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 printf %s "checking for Minix Amsterdam compiler... " >&6; } if test ${gl_cv_c_amsterdam_compiler+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __ACK__ Amsterdam #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Amsterdam" >/dev/null 2>&1 then : gl_cv_c_amsterdam_compiler=yes else $as_nop gl_cv_c_amsterdam_compiler=no fi rm -rf conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 printf "%s\n" "$gl_cv_c_amsterdam_compiler" >&6; } if test $gl_cv_c_amsterdam_compiler = yes; then if test -z "$AR"; then AR='cc -c.a' fi if test -z "$ARFLAGS"; then ARFLAGS='-o' fi else : fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="ar" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi if test -z "$ARFLAGS"; then ARFLAGS='cr' fi if test -z "$RANLIB"; then if test $gl_cv_c_amsterdam_compiler = yes; then RANLIB=':' else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi fi fi # IEEE behaviour is the default on all CPUs except Alpha and SH # (according to the test results of Bruno Haible's ieeefp/fenv_default.m4 # and the GCC 4.1.2 manual). case "$host_cpu" in alpha*) # On Alpha systems, a compiler option provides the behaviour. # See the ieee(3) manual page, also available at # if test -n "$GCC"; then # GCC has the option -mieee. # For full IEEE compliance (rarely needed), use option -mieee-with-inexact. CPPFLAGS="$CPPFLAGS -mieee" else # Compaq (ex-DEC) C has the option -ieee, equivalent to -ieee_with_no_inexact. # For full IEEE compliance (rarely needed), use option -ieee_with_inexact. CPPFLAGS="$CPPFLAGS -ieee" fi ;; sh*) if test -n "$GCC"; then # GCC has the option -mieee. CPPFLAGS="$CPPFLAGS -mieee" fi ;; esac if test "$enable_largefile" != no then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable large file support" >&5 printf %s "checking for $CC option to enable large file support... " >&6; } if test ${ac_cv_sys_largefile_opts+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_CC="$CC" ac_opt_found=no for ac_opt in "none needed" "-D_FILE_OFFSET_BITS=64" "-D_LARGE_FILES=1" "-n32"; do if test x"$ac_opt" != x"none needed" then : CC="$ac_save_CC $ac_opt" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_sys_largefile_opts="$ac_opt" ac_opt_found=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test $ac_opt_found = no || break done CC="$ac_save_CC" test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_opts" >&5 printf "%s\n" "$ac_cv_sys_largefile_opts" >&6; } ac_have_largefile=yes case $ac_cv_sys_largefile_opts in #( "none needed") : ;; #( "support not detected") : ac_have_largefile=no ;; #( "-D_FILE_OFFSET_BITS=64") : printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h ;; #( "-D_LARGE_FILES=1") : printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h ;; #( "-n32") : CC="$CC -n32" ;; #( *) : as_fn_error $? "internal error: bad value for \$ac_cv_sys_largefile_opts" "$LINENO" 5 ;; esac if test "$enable_year2038" != no then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable timestamps after Jan 2038" >&5 printf %s "checking for $CC option to enable timestamps after Jan 2038... " >&6; } if test ${ac_cv_sys_year2038_opts+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_CPPFLAGS="$CPPFLAGS" ac_opt_found=no for ac_opt in "none needed" "-D_TIME_BITS=64" "-D__MINGW_USE_VC2005_COMPAT" "-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"; do if test x"$ac_opt" != x"none needed" then : CPPFLAGS="$ac_save_CPPFLAGS $ac_opt" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that time_t can represent 2**32 - 1 correctly. */ #define LARGE_TIME_T \\ ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 && LARGE_TIME_T % 65537 == 0) ? 1 : -1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_sys_year2038_opts="$ac_opt" ac_opt_found=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test $ac_opt_found = no || break done CPPFLAGS="$ac_save_CPPFLAGS" test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_year2038_opts" >&5 printf "%s\n" "$ac_cv_sys_year2038_opts" >&6; } ac_have_year2038=yes case $ac_cv_sys_year2038_opts in #( "none needed") : ;; #( "support not detected") : ac_have_year2038=no case $enable_year2038 in #( yes) : # If we're not cross compiling and 'touch' works with a large # timestamp, then we can presume the system supports wider time_t # *somehow* and we just weren't able to detect it. One common # case that we deliberately *don't* probe for is a system that # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers # wide time_t. (It would be inappropriate for us to override an # intentional use of -m32.) Error out, demanding use of # --disable-year2038 if this is intentional. if test $cross_compiling = no then : if TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null then : case `TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null` in #( *'Feb 7 2106'* | *'Feb 7 17:10'*) : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "this system appears to support timestamps after January 2038, but no mechanism for enabling wide 'time_t' was detected. Did you mean to build a 64-bit binary? (e.g. 'CC=\"${CC} -m64\"'.) To proceed with 32-bit time_t, configure with '--disable-year2038'. See \`config.log' for more details" "$LINENO" 5; } ;; #( *) : ;; esac fi fi ;; #( *) : ;; esac ;; #( "-D_TIME_BITS=64") : printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h ;; #( "-D__MINGW_USE_VC2005_COMPAT=1") : printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h ;; #( "-U_USE_32_BIT_TIME_T"*) : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "the 'time_t' type is currently forced to be 32-bit. It will stop working after January 2038. Remove _USE_32BIT_TIME_T from the compiler flags. See \`config.log' for more details" "$LINENO" 5; } ;; #( *) : as_fn_error $? "internal error: bad value for \$ac_cv_sys_year2038_opts" "$LINENO" 5 ;; esac fi fi # Pre-early section. # Code from module absolute-header: # Code from module alignasof: # Code from module alloca-opt: # Code from module argmatch: # Code from module assert-h: # Code from module attribute: # Code from module basename-lgpl: # Code from module binary-io: # Code from module bitrotate: # Code from module bootstrap: # Code from module builtin-expect: # Code from module c-ctype: # Code from module c-strcase: # Code from module c-strcaseeq: # Code from module c99: # Code from module calloc-gnu: # Code from module calloc-posix: # Code from module canonicalize-lgpl: # Code from module clock-time: # Code from module cloexec: # Code from module close: # Code from module dirname: # Code from module dirname-lgpl: # Code from module double-slash-root: # Code from module dup2: # Code from module eloop-threshold: # Code from module errno: # Code from module error: # Code from module error-h: # Code from module exitfail: # Code from module extensions: # Code from module extern-inline: # Code from module extract-trace: # Code from module fcntl: # Code from module fcntl-h: # Code from module fd-hook: # Code from module filename: # Code from module float: # Code from module fpieee: # Code from module fpucw: # Code from module free-posix: # Code from module frexp-nolibm: # Code from module frexpl-nolibm: # Code from module fseterr: # Code from module fstat: # Code from module funclib.sh: # Code from module gen-header: # Code from module getdtablesize: # Code from module getopt-posix: # Code from module getprogname: # Code from module getrandom: # Code from module gettext-h: # Code from module glibc-internal/scratch_buffer: # Code from module hard-locale: # Code from module hash: # Code from module havelib: # Code from module ialloc: # Code from module iconv: # Code from module idx: # Code from module include_next: # Code from module inline-source: # Code from module intprops: # Code from module inttypes-incomplete: # Code from module isatty: # Code from module isnand-nolibm: # Code from module isnanf-nolibm: # Code from module isnanl-nolibm: # Code from module largefile: # Code from module libc-config: # Code from module limits-h: # Code from module localcharset: # Code from module locale: # Code from module lstat: # Code from module malloc-gnu: # Code from module malloc-posix: # Code from module malloca: # Code from module manywarnings: # Code from module math: # Code from module mbrtowc: # Code from module mbsinit: # Code from module memchr: # Code from module mempcpy: # Code from module minmax: # Code from module mkdir: # Code from module mkstemps: # Code from module msvc-inval: # Code from module msvc-nothrow: # Code from module multiarch: # Code from module nocrash: # Code from module open: # Code from module options-parser: # Code from module pathmax: # Code from module pipe-posix: # Code from module printf-frexp: # Code from module printf-frexpl: # Code from module printf-safe: # Code from module quote: # Code from module quotearg: # Code from module quotearg-simple: # Code from module raise: # Code from module rawmemchr: # Code from module readlink: # Code from module realloc-gnu: # Code from module realloc-posix: # Code from module reallocarray: # Code from module setlocale-null: # Code from module sigaction: # Code from module signal-h: # Code from module signbit: # Code from module sigprocmask: # Code from module size_max: # Code from module snippet/_Noreturn: # Code from module snippet/arg-nonnull: # Code from module snippet/c++defs: # Code from module snippet/warn-on-use: # Code from module ssize_t: # Code from module stat: # Code from module stat-time: # Code from module std-gnu11: # Code from module stdbool: # Code from module stdckdint: # Code from module stddef: # Code from module stdint: # Code from module stdio: # Code from module stdlib: # Code from module streq: # Code from module strerror: # Code from module strerror-override: # Code from module string: # Code from module strndup: # Code from module strnlen: # Code from module sys_random: # Code from module sys_stat: # Code from module sys_types: # Code from module sys_wait: # Code from module tempname: # Code from module time: # Code from module unistd: # Code from module utime: # Code from module utime-h: # Code from module vararrays: # Code from module vasnprintf: # Code from module vasprintf: # Code from module verify: # Code from module vfprintf-posix: # Code from module vprintf-posix: # Code from module warnings: # Code from module wchar: # Code from module wctype-h: # Code from module xalloc: # Code from module xalloc-die: # Code from module xalloc-oversized: # Code from module xbinary-io: # Code from module xsize: case `pwd` in *\ * | *\ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.7' macro_revision='2.4.7' ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 printf "%s\n" "printf" >&6; } ;; print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 printf "%s\n" "print -r" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 printf "%s\n" "cat" >&6; } ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 printf %s "checking for fgrep... " >&6; } if test ${ac_cv_path_FGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in fgrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test ${lt_cv_path_NM+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DUMPBIN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 printf "%s\n" "$DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DUMPBIN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 printf %s "checking the name lister ($NM) interface... " >&6; } if test ${lt_cv_nm_interface+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 printf "%s\n" "$lt_cv_nm_interface" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 printf %s "checking the maximum length of command line arguments... " >&6; } if test ${lt_cv_sys_max_cmd_len+y} then : printf %s "(cached) " >&6 else $as_nop i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 printf %s "checking how to convert $build file names to $host format... " >&6; } if test ${lt_cv_to_host_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 printf %s "checking how to convert $build file names to toolchain format... " >&6; } if test ${lt_cv_to_tool_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 printf %s "checking for $LD option to reload object files... " >&6; } if test ${lt_cv_ld_reload_flag+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_reload_flag='-r' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}file", so it can be a program name with args. set dummy ${ac_tool_prefix}file; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_FILECMD+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$FILECMD"; then ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_FILECMD="${ac_tool_prefix}file" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi FILECMD=$ac_cv_prog_FILECMD if test -n "$FILECMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 printf "%s\n" "$FILECMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_FILECMD"; then ac_ct_FILECMD=$FILECMD # Extract the first word of "file", so it can be a program name with args. set dummy file; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_FILECMD+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_FILECMD"; then ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_FILECMD="file" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD if test -n "$ac_ct_FILECMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5 printf "%s\n" "$ac_ct_FILECMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_FILECMD" = x; then FILECMD=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac FILECMD=$ac_ct_FILECMD fi else FILECMD="$ac_cv_prog_FILECMD" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 printf "%s\n" "$OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 printf %s "checking how to recognize dependent libraries... " >&6; } if test ${lt_cv_deplibs_check_method+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 printf "%s\n" "$DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 printf %s "checking how to associate runtime and link libraries... " >&6; } if test ${lt_cv_sharedlib_from_linklib_cmd+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because thats what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 printf %s "checking for archiver @FILE support... " >&6; } if test ${lt_cv_ar_at_file+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 printf %s "checking command to parse $NM output from $compiler object... " >&6; } if test ${lt_cv_sys_global_symbol_pipe+y} then : printf %s "(cached) " >&6 else $as_nop # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 printf "%s\n" "failed" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 printf "%s\n" "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test ${with_sysroot+y} then : withval=$with_sysroot; else $as_nop with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 printf "%s\n" "${lt_sysroot:-no}" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 printf %s "checking for a working dd... " >&6; } if test ${ac_cv_path_lt_DD+y} then : printf %s "(cached) " >&6 else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in dd do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 printf "%s\n" "$ac_cv_path_lt_DD" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 printf %s "checking how to truncate binary pipes... " >&6; } if test ${lt_cv_truncate_bin+y} then : printf %s "(cached) " >&6 else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 printf "%s\n" "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test ${enable_libtool_lock+y} then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 printf %s "checking whether the C compiler needs -belf... " >&6; } if test ${lt_cv_cc_needs_belf+y} then : printf %s "(cached) " >&6 else $as_nop ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_cc_needs_belf=yes else $as_nop lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 printf "%s\n" "$MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if test ${lt_cv_path_mainfest_tool+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DSYMUTIL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 printf "%s\n" "$DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NMEDIT+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 printf "%s\n" "$NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NMEDIT+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 printf "%s\n" "$ac_ct_NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LIPO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 printf "%s\n" "$LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_LIPO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 printf "%s\n" "$ac_ct_LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 printf "%s\n" "$OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 printf "%s\n" "$ac_ct_OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL64+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 printf "%s\n" "$OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL64+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 printf "%s\n" "$ac_ct_OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 printf %s "checking for -single_module linker flag... " >&6; } if test ${lt_cv_apple_cc_single_mod+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 printf %s "checking for -exported_symbols_list linker flag... " >&6; } if test ${lt_cv_ld_exported_symbols_list+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_ld_exported_symbols_list=yes else $as_nop lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 printf %s "checking for -force_load linker flag... " >&6; } if test ${lt_cv_ld_force_load+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 $AR $AR_FLAGS libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) case $MACOSX_DEPLOYMENT_TARGET,$host in 10.[012],*|,*powerpc*-darwin[5-8]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; *) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes then : printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test ${enable_shared+y} then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_shared=yes fi # Check whether --enable-static was given. if test ${enable_static+y} then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_static=yes fi # Check whether --with-pic was given. if test ${with_pic+y} then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop pic_mode=default fi # Check whether --enable-fast-install was given. if test ${enable_fast_install+y} then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test ${with_aix_soname+y} then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else $as_nop if test ${lt_cv_with_aix_soname+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 printf %s "checking for objdir... " >&6; } if test ${lt_cv_objdir+y} then : printf %s "(cached) " >&6 else $as_nop rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC and # ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 printf %s "checking for ${ac_tool_prefix}file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 printf %s "checking for file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test ${lt_cv_prog_compiler_rtti_exceptions+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # flang / f18. f95 an alias for gfortran or flang on Debian flang* | f18* | f95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl* | icl*) # Native MSVC or ICC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC and ICC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly* | midnightbsd*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 printf %s "checking if $CC understands -b... " >&6; } if test ${lt_cv_prog_compiler__b+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if test ${lt_cv_irix_exported_symbol+y} then : printf %s "(cached) " >&6 else $as_nop save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_irix_exported_symbol=yes else $as_nop lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc+y} then : printf %s "(cached) " >&6 else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else $as_nop lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes then : lt_cv_dlopen=shl_load else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 printf %s "checking for shl_load in -ldld... " >&6; } if test ${ac_cv_lib_dld_shl_load+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char shl_load (); int main (void) { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_shl_load=yes else $as_nop ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else $as_nop ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes then : lt_cv_dlopen=dlopen else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 printf %s "checking for dlopen in -lsvld... " >&6; } if test ${ac_cv_lib_svld_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_svld_dlopen=yes else $as_nop ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 printf %s "checking for dld_link in -ldld... " >&6; } if test ${ac_cv_lib_dld_dld_link+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dld_link (); int main (void) { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_dld_link=yes else $as_nop ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 printf %s "checking whether a program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self+y} then : printf %s "(cached) " >&6 else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 printf %s "checking whether a statically linked program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self_static+y} then : printf %s "(cached) " >&6 else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 printf %s "checking whether stripping libraries is possible... " >&6; } if test -z "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac fi fi # Report what library types will actually be built { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 printf %s "checking if libtool supports shared libraries... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 printf "%s\n" "$can_build_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 printf "%s\n" "$enable_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 printf "%s\n" "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC ac_config_commands="$ac_config_commands libtool" # Only expand once: for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LEX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 printf "%s\n" "$LEX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %{ #ifdef __cplusplus extern "C" #endif int yywrap(void); %} %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ #ifdef __cplusplus yyless ((yyinput () != 0)); #else yyless ((input () != 0)); #endif } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int yywrap (void) { return 1; } int main (void) { return ! yylex (); } _ACEOF { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lex output file root" >&5 printf %s "checking for lex output file root... " >&6; } if test ${ac_cv_prog_lex_root+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_lex_root=unknown { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 printf "%s\n" "$ac_cv_prog_lex_root" >&6; } if test "$ac_cv_prog_lex_root" = unknown then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot find output from $LEX; giving up on $LEX" >&5 printf "%s\n" "$as_me: WARNING: cannot find output from $LEX; giving up on $LEX" >&2;} LEX=: LEXLIB= fi LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test ${LEXLIB+y} then : else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lex library" >&5 printf %s "checking for lex library... " >&6; } if test ${ac_cv_lib_lex+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_LIBS="$LIBS" ac_found=false for ac_cv_lib_lex in 'none needed' -lfl -ll 'not found'; do case $ac_cv_lib_lex in #( 'none needed') : ;; #( 'not found') : break ;; #( *) : LIBS="$ac_cv_lib_lex $ac_save_LIBS" ;; #( *) : ;; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_found=: fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if $ac_found; then break fi done LIBS="$ac_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 printf "%s\n" "$ac_cv_lib_lex" >&6; } if test "$ac_cv_lib_lex" = 'not found' then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: required lex library not found; giving up on $LEX" >&5 printf "%s\n" "$as_me: WARNING: required lex library not found; giving up on $LEX" >&2;} LEX=: LEXLIB= elif test "$ac_cv_lib_lex" = 'none needed' then : LEXLIB='' else $as_nop LEXLIB=$ac_cv_lib_lex fi fi if test "$LEX" != : then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 printf %s "checking whether yytext is a pointer... " >&6; } if test ${ac_cv_prog_lex_yytext_pointer+y} then : printf %s "(cached) " >&6 else $as_nop # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_lex_yytext_pointer=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 printf "%s\n" "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then printf "%s\n" "#define YYTEXT_POINTER 1" >>confdefs.h fi fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.8" >&5 printf %s "checking whether $PYTHON version is >= 3.8... " >&6; } prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '3.8'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5 ($PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "Python interpreter is too old" "$LINENO" 5 fi am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.8" >&5 printf %s "checking for a Python interpreter with version >= 3.8... " >&6; } if test ${am_cv_pathless_PYTHON+y} then : printf %s "(cached) " >&6 else $as_nop for am_cv_pathless_PYTHON in python python2 python3 python3.11 python3.10 python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do test "$am_cv_pathless_PYTHON" = none && break prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '3.8'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5 ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then : break fi done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5 printf "%s\n" "$am_cv_pathless_PYTHON" >&6; } # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args. set dummy $am_cv_pathless_PYTHON; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PYTHON+y} then : printf %s "(cached) " >&6 else $as_nop case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 printf "%s\n" "$PYTHON" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi am_display_PYTHON=$am_cv_pathless_PYTHON fi if test "$PYTHON" = :; then as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5 printf %s "checking for $am_display_PYTHON version... " >&6; } if test ${am_cv_python_version+y} then : printf %s "(cached) " >&6 else $as_nop am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[:2])"` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 printf "%s\n" "$am_cv_python_version" >&6; } PYTHON_VERSION=$am_cv_python_version { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5 printf %s "checking for $am_display_PYTHON platform... " >&6; } if test ${am_cv_python_platform+y} then : printf %s "(cached) " >&6 else $as_nop am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5 printf "%s\n" "$am_cv_python_platform" >&6; } PYTHON_PLATFORM=$am_cv_python_platform if test "x$prefix" = xNONE; then am__usable_prefix=$ac_default_prefix else am__usable_prefix=$prefix fi # Allow user to request using sys.* values from Python, # instead of the GNU $prefix values. # Check whether --with-python-sys-prefix was given. if test ${with_python_sys_prefix+y} then : withval=$with_python_sys_prefix; am_use_python_sys=: else $as_nop am_use_python_sys=false fi # Allow user to override whatever the default Python prefix is. # Check whether --with-python_prefix was given. if test ${with_python_prefix+y} then : withval=$with_python_prefix; am_python_prefix_subst=$withval am_cv_python_prefix=$withval { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON prefix" >&5 printf %s "checking for explicit $am_display_PYTHON prefix... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5 printf "%s\n" "$am_cv_python_prefix" >&6; } else $as_nop if $am_use_python_sys; then # using python sys.prefix value, not GNU { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON prefix" >&5 printf %s "checking for python default $am_display_PYTHON prefix... " >&6; } if test ${am_cv_python_prefix+y} then : printf %s "(cached) " >&6 else $as_nop am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5 printf "%s\n" "$am_cv_python_prefix" >&6; } case $am_cv_python_prefix in $am__usable_prefix*) am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'` am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"` ;; *) am_python_prefix_subst=$am_cv_python_prefix ;; esac else # using GNU prefix value, not python sys.prefix am_python_prefix_subst='${prefix}' am_python_prefix=$am_python_prefix_subst { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON prefix" >&5 printf %s "checking for GNU default $am_display_PYTHON prefix... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_prefix" >&5 printf "%s\n" "$am_python_prefix" >&6; } fi fi # Substituting python_prefix_subst value. PYTHON_PREFIX=$am_python_prefix_subst # emacs-page Now do it all over again for Python exec_prefix, but with yet # another conditional: fall back to regular prefix if that was specified. # Check whether --with-python_exec_prefix was given. if test ${with_python_exec_prefix+y} then : withval=$with_python_exec_prefix; am_python_exec_prefix_subst=$withval am_cv_python_exec_prefix=$withval { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON exec_prefix" >&5 printf %s "checking for explicit $am_display_PYTHON exec_prefix... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5 printf "%s\n" "$am_cv_python_exec_prefix" >&6; } else $as_nop # no explicit --with-python_exec_prefix, but if # --with-python_prefix was given, use its value for python_exec_prefix too. if test -n "$with_python_prefix" then : am_python_exec_prefix_subst=$with_python_prefix am_cv_python_exec_prefix=$with_python_prefix { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python_prefix-given $am_display_PYTHON exec_prefix" >&5 printf %s "checking for python_prefix-given $am_display_PYTHON exec_prefix... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5 printf "%s\n" "$am_cv_python_exec_prefix" >&6; } else $as_nop # Set am__usable_exec_prefix whether using GNU or Python values, # since we use that variable for pyexecdir. if test "x$exec_prefix" = xNONE; then am__usable_exec_prefix=$am__usable_prefix else am__usable_exec_prefix=$exec_prefix fi # if $am_use_python_sys; then # using python sys.exec_prefix, not GNU { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON exec_prefix" >&5 printf %s "checking for python default $am_display_PYTHON exec_prefix... " >&6; } if test ${am_cv_python_exec_prefix+y} then : printf %s "(cached) " >&6 else $as_nop am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5 printf "%s\n" "$am_cv_python_exec_prefix" >&6; } case $am_cv_python_exec_prefix in $am__usable_exec_prefix*) am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'` am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"` ;; *) am_python_exec_prefix_subst=$am_cv_python_exec_prefix ;; esac else # using GNU $exec_prefix, not python sys.exec_prefix am_python_exec_prefix_subst='${exec_prefix}' am_python_exec_prefix=$am_python_exec_prefix_subst { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON exec_prefix" >&5 printf %s "checking for GNU default $am_display_PYTHON exec_prefix... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_exec_prefix" >&5 printf "%s\n" "$am_python_exec_prefix" >&6; } fi fi fi # Substituting python_exec_prefix_subst. PYTHON_EXEC_PREFIX=$am_python_exec_prefix_subst # Factor out some code duplication into this shell variable. am_python_setup_sysconfig="\ import sys # Prefer sysconfig over distutils.sysconfig, for better compatibility # with python 3.x. See automake bug#10227. try: import sysconfig except ImportError: can_use_sysconfig = 0 else: can_use_sysconfig = 1 # Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: # try: from platform import python_implementation if python_implementation() == 'CPython' and sys.version[:3] == '2.7': can_use_sysconfig = 0 except ImportError: pass" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory (pythondir)" >&5 printf %s "checking for $am_display_PYTHON script directory (pythondir)... " >&6; } if test ${am_cv_python_pythondir+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$am_cv_python_prefix" = x; then am_py_prefix=$am__usable_prefix else am_py_prefix=$am_cv_python_prefix fi am_cv_python_pythondir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: if hasattr(sysconfig, 'get_default_scheme'): scheme = sysconfig.get_default_scheme() else: scheme = sysconfig._get_default_scheme() if scheme == 'posix_local': # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/ scheme = 'posix_prefix' sitedir = sysconfig.get_path('purelib', scheme, vars={'base':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` # case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages" ;; esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5 printf "%s\n" "$am_cv_python_pythondir" >&6; } pythondir=$am_cv_python_pythondir pkgpythondir=\${pythondir}/$PACKAGE { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory (pyexecdir)" >&5 printf %s "checking for $am_display_PYTHON extension module directory (pyexecdir)... " >&6; } if test ${am_cv_python_pyexecdir+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$am_cv_python_exec_prefix" = x; then am_py_exec_prefix=$am__usable_exec_prefix else am_py_exec_prefix=$am_cv_python_exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: if hasattr(sysconfig, 'get_default_scheme'): scheme = sysconfig.get_default_scheme() else: scheme = sysconfig._get_default_scheme() if scheme == 'posix_local': # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/ scheme = 'posix_prefix' sitedir = sysconfig.get_path('platlib', scheme, vars={'platbase':'$am_py_exec_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix') sys.stdout.write(sitedir)"` # case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages" ;; esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5 printf "%s\n" "$am_cv_python_pyexecdir" >&6; } pyexecdir=$am_cv_python_pyexecdir pkgpyexecdir=\${pyexecdir}/$PACKAGE fi # Check whether --enable-cross-guesses was given. if test ${enable_cross_guesses+y} then : enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 printf "%s\n" "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} enableval=conservative fi gl_cross_guesses="$enableval" else $as_nop gl_cross_guesses=conservative fi if test $gl_cross_guesses = risky; then gl_cross_guess_normal="guessing yes" gl_cross_guess_inverted="guessing no" else gl_cross_guess_normal="guessing no" gl_cross_guess_inverted="guessing yes" fi LIBC_FATAL_STDERR_=1 export LIBC_FATAL_STDERR_ ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes then : else $as_nop printf "%s\n" "#define size_t unsigned int" >>confdefs.h fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 printf %s "checking for working alloca.h... " >&6; } if test ${ac_cv_working_alloca_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { char *p = (char *) alloca (2 * sizeof (int)); if (p) return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_working_alloca_h=yes else $as_nop ac_cv_working_alloca_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 printf "%s\n" "$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 printf %s "checking for alloca... " >&6; } if test ${ac_cv_func_alloca_works+y} then : printf %s "(cached) " >&6 else $as_nop if test $ac_cv_working_alloca_h = yes; then ac_cv_func_alloca_works=yes else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef alloca # ifdef __GNUC__ # define alloca __builtin_alloca # elif defined _MSC_VER # include # define alloca _alloca # else # ifdef __cplusplus extern "C" # endif void *alloca (size_t); # endif #endif int main (void) { char *p = (char *) alloca (1); if (p) return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_func_alloca_works=yes else $as_nop ac_cv_func_alloca_works=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 printf "%s\n" "$ac_cv_func_alloca_works" >&6; } fi if test $ac_cv_func_alloca_works = yes; then printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h else # The SVR3 libPW and SVR4 libucb both contain incompatible functions # that cause trouble. Some versions do not even contain alloca or # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. ALLOCA=\${LIBOBJDIR}alloca.$ac_objext printf "%s\n" "#define C_ALLOCA 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 printf %s "checking stack direction for C alloca... " >&6; } if test ${ac_cv_c_stack_direction+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : ac_cv_c_stack_direction=0 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int find_stack_direction (int *addr, int depth) { int dir, dummy = 0; if (! addr) addr = &dummy; *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; dir = depth ? find_stack_direction (addr, depth - 1) : 0; return dir + dummy; } int main (int argc, char **argv) { return find_stack_direction (0, argc + !argv + 20) < 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_c_stack_direction=1 else $as_nop ac_cv_c_stack_direction=-1 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 printf "%s\n" "$ac_cv_c_stack_direction" >&6; } printf "%s\n" "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the preprocessor supports include_next" >&5 printf %s "checking whether the preprocessor supports include_next... " >&6; } if test ${gl_cv_have_include_next+y} then : printf %s "(cached) " >&6 else $as_nop rm -rf conftestd1a conftestd1b conftestd2 mkdir conftestd1a conftestd1b conftestd2 cat < conftestd1a/conftest.h #define DEFINED_IN_CONFTESTD1 #include_next #ifdef DEFINED_IN_CONFTESTD2 int foo; #else #error "include_next doesn't work" #endif EOF cat < conftestd1b/conftest.h #define DEFINED_IN_CONFTESTD1 #include #include_next #ifdef DEFINED_IN_CONFTESTD2 int foo; #else #error "include_next doesn't work" #endif EOF cat < conftestd2/conftest.h #ifndef DEFINED_IN_CONFTESTD1 #error "include_next test doesn't work" #endif #define DEFINED_IN_CONFTESTD2 EOF gl_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_have_include_next=yes else $as_nop CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_have_include_next=buggy else $as_nop gl_cv_have_include_next=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CPPFLAGS="$gl_save_CPPFLAGS" rm -rf conftestd1a conftestd1b conftestd2 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_include_next" >&5 printf "%s\n" "$gl_cv_have_include_next" >&6; } PRAGMA_SYSTEM_HEADER= if test $gl_cv_have_include_next = yes; then INCLUDE_NEXT=include_next INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next if test -n "$GCC"; then PRAGMA_SYSTEM_HEADER='#pragma GCC system_header' fi else if test $gl_cv_have_include_next = buggy; then INCLUDE_NEXT=include INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next else INCLUDE_NEXT=include INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether source code line length is unlimited" >&5 printf %s "checking whether source code line length is unlimited... " >&6; } if test ${gl_cv_source_line_length_unlimited+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __TANDEM choke me #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "choke me" >/dev/null 2>&1 then : gl_cv_source_line_length_unlimited=no else $as_nop gl_cv_source_line_length_unlimited=yes fi rm -rf conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_source_line_length_unlimited" >&5 printf "%s\n" "$gl_cv_source_line_length_unlimited" >&6; } if test $gl_cv_source_line_length_unlimited = no; then PRAGMA_COLUMNS="#pragma COLUMNS 10000" else PRAGMA_COLUMNS= fi HAVE__EXIT=1; HAVE_ALIGNED_ALLOC=1; HAVE_ATOLL=1; HAVE_CANONICALIZE_FILE_NAME=1; HAVE_DECL_ECVT=1; HAVE_DECL_FCVT=1; HAVE_DECL_GCVT=1; HAVE_DECL_GETLOADAVG=1; HAVE_GETPROGNAME=1; HAVE_GETSUBOPT=1; HAVE_GRANTPT=1; HAVE_INITSTATE=1; HAVE_DECL_INITSTATE=1; HAVE_MBTOWC=1; HAVE_MKDTEMP=1; HAVE_MKOSTEMP=1; HAVE_MKOSTEMPS=1; HAVE_MKSTEMP=1; HAVE_MKSTEMPS=1; HAVE_POSIX_MEMALIGN=1; HAVE_POSIX_OPENPT=1; HAVE_PTSNAME=1; HAVE_PTSNAME_R=1; HAVE_QSORT_R=1; HAVE_RANDOM=1; HAVE_RANDOM_H=1; HAVE_RANDOM_R=1; HAVE_REALLOCARRAY=1; HAVE_REALPATH=1; HAVE_RPMATCH=1; HAVE_SECURE_GETENV=1; HAVE_SETENV=1; HAVE_DECL_SETENV=1; HAVE_SETSTATE=1; HAVE_DECL_SETSTATE=1; HAVE_STRTOD=1; HAVE_STRTOL=1; HAVE_STRTOLD=1; HAVE_STRTOLL=1; HAVE_STRTOUL=1; HAVE_STRTOULL=1; HAVE_STRUCT_RANDOM_DATA=1; HAVE_SYS_LOADAVG_H=0; HAVE_UNLOCKPT=1; HAVE_DECL_UNSETENV=1; REPLACE__EXIT=0; REPLACE_ALIGNED_ALLOC=0; REPLACE_CALLOC_FOR_CALLOC_GNU=0; REPLACE_CALLOC_FOR_CALLOC_POSIX=0; REPLACE_CANONICALIZE_FILE_NAME=0; REPLACE_FREE=0; REPLACE_GETLOADAVG=0; REPLACE_GETPROGNAME=0; REPLACE_GETSUBOPT=0; REPLACE_INITSTATE=0; REPLACE_MALLOC_FOR_MALLOC_GNU=0; REPLACE_MALLOC_FOR_MALLOC_POSIX=0; REPLACE_MBTOWC=0; REPLACE_MKOSTEMP=0; REPLACE_MKOSTEMPS=0; REPLACE_MKSTEMP=0; REPLACE_POSIX_MEMALIGN=0; REPLACE_POSIX_OPENPT=0; REPLACE_PTSNAME=0; REPLACE_PTSNAME_R=0; REPLACE_PUTENV=0; REPLACE_QSORT_R=0; REPLACE_RANDOM=0; REPLACE_RANDOM_R=0; REPLACE_REALLOC_FOR_REALLOC_GNU=0; REPLACE_REALLOC_FOR_REALLOC_POSIX=0; REPLACE_REALLOCARRAY=0; REPLACE_REALPATH=0; REPLACE_SETENV=0; REPLACE_SETSTATE=0; REPLACE_STRTOD=0; REPLACE_STRTOL=0; REPLACE_STRTOLD=0; REPLACE_STRTOLL=0; REPLACE_STRTOUL=0; REPLACE_STRTOULL=0; REPLACE_UNSETENV=0; REPLACE_WCTOMB=0; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether malloc is ptrdiff_t safe" >&5 printf %s "checking whether malloc is ptrdiff_t safe... " >&6; } if test ${gl_cv_malloc_ptrdiff+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { /* 64-bit ptrdiff_t is so wide that no practical platform can exceed it. */ #define WIDE_PTRDIFF (PTRDIFF_MAX >> 31 >> 31 != 0) /* On rare machines where size_t fits in ptrdiff_t there is no problem. */ #define NARROW_SIZE (SIZE_MAX <= PTRDIFF_MAX) /* glibc 2.30 and later malloc refuses to exceed ptrdiff_t bounds even on 32-bit platforms. We don't know which non-glibc systems are safe. */ #define KNOWN_SAFE (2 < __GLIBC__ + (30 <= __GLIBC_MINOR__)) #if WIDE_PTRDIFF || NARROW_SIZE || KNOWN_SAFE return 0; #else #error "malloc might not be ptrdiff_t safe" syntax error #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_malloc_ptrdiff=yes else $as_nop gl_cv_malloc_ptrdiff=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_malloc_ptrdiff" >&5 printf "%s\n" "$gl_cv_malloc_ptrdiff" >&6; } test "$gl_cv_malloc_ptrdiff" = yes || REPLACE_MALLOC_FOR_MALLOC_POSIX=1 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether malloc, realloc, calloc set errno on failure" >&5 printf %s "checking whether malloc, realloc, calloc set errno on failure... " >&6; } if test ${gl_cv_func_malloc_posix+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in mingw*) gl_cv_func_malloc_posix=no ;; irix* | solaris*) gl_cv_func_malloc_posix=no ;; *) gl_cv_func_malloc_posix=yes ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_malloc_posix" >&5 printf "%s\n" "$gl_cv_func_malloc_posix" >&6; } if test "$gl_cv_func_malloc_posix" = yes; then printf "%s\n" "#define HAVE_MALLOC_POSIX 1" >>confdefs.h else REPLACE_MALLOC_FOR_MALLOC_POSIX=1 fi if test $REPLACE_MALLOC_FOR_MALLOC_POSIX = 1; then REPLACE_CALLOC_FOR_CALLOC_POSIX=1 fi GL_GNULIB__EXIT=0 GL_GNULIB_ALIGNED_ALLOC=0 GL_GNULIB_ATOLL=0 GL_GNULIB_CALLOC_GNU=0 GL_GNULIB_CALLOC_POSIX=0 GL_GNULIB_CANONICALIZE_FILE_NAME=0 GL_GNULIB_FREE_POSIX=0 GL_GNULIB_GETLOADAVG=0 GL_GNULIB_GETPROGNAME=0 GL_GNULIB_GETSUBOPT=0 GL_GNULIB_GRANTPT=0 GL_GNULIB_MALLOC_GNU=0 GL_GNULIB_MALLOC_POSIX=0 GL_GNULIB_MBTOWC=0 GL_GNULIB_MKDTEMP=0 GL_GNULIB_MKOSTEMP=0 GL_GNULIB_MKOSTEMPS=0 GL_GNULIB_MKSTEMP=0 GL_GNULIB_MKSTEMPS=0 GL_GNULIB_POSIX_MEMALIGN=0 GL_GNULIB_POSIX_OPENPT=0 GL_GNULIB_PTSNAME=0 GL_GNULIB_PTSNAME_R=0 GL_GNULIB_PUTENV=0 GL_GNULIB_QSORT_R=0 GL_GNULIB_RANDOM=0 GL_GNULIB_RANDOM_R=0 GL_GNULIB_REALLOCARRAY=0 GL_GNULIB_REALLOC_GNU=0 GL_GNULIB_REALLOC_POSIX=0 GL_GNULIB_REALPATH=0 GL_GNULIB_RPMATCH=0 GL_GNULIB_SECURE_GETENV=0 GL_GNULIB_SETENV=0 GL_GNULIB_STRTOD=0 GL_GNULIB_STRTOL=0 GL_GNULIB_STRTOLD=0 GL_GNULIB_STRTOLL=0 GL_GNULIB_STRTOUL=0 GL_GNULIB_STRTOULL=0 GL_GNULIB_SYSTEM_POSIX=0 GL_GNULIB_UNLOCKPT=0 GL_GNULIB_UNSETENV=0 GL_GNULIB_WCTOMB=0 GL_GNULIB_MDA_ECVT=1 GL_GNULIB_MDA_FCVT=1 GL_GNULIB_MDA_GCVT=1 GL_GNULIB_MDA_MKTEMP=1 GL_GNULIB_MDA_PUTENV=1 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 printf %s "checking whether lstat correctly handles trailing slash... " >&6; } if test ${gl_cv_func_lstat_dereferences_slashed_symlink+y} then : printf %s "(cached) " >&6 else $as_nop rm -f conftest.sym conftest.file echo >conftest.file if test "$cross_compiling" = yes then : case "$host_os" in linux-* | linux) # Guess yes on Linux systems. gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;; *-gnu* | gnu*) # Guess yes on glibc systems. gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;; mingw*) # Guess no on native Windows. gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;; *) # If we don't know, obey --enable-cross-guesses. gl_cv_func_lstat_dereferences_slashed_symlink="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main (void) { struct stat sbuf; if (symlink ("conftest.file", "conftest.sym") != 0) return 1; /* Linux will dereference the symlink and fail, as required by POSIX. That is better in the sense that it means we will not have to compile and use the lstat wrapper. */ return lstat ("conftest.sym/", &sbuf) == 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_lstat_dereferences_slashed_symlink=yes else $as_nop gl_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.sym conftest.file fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_lstat_dereferences_slashed_symlink" >&5 printf "%s\n" "$gl_cv_func_lstat_dereferences_slashed_symlink" >&6; } case "$gl_cv_func_lstat_dereferences_slashed_symlink" in *yes) printf "%s\n" "#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1" >>confdefs.h ;; esac ac_func= for ac_item in $ac_func_c_list do if test $ac_func; then ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then echo "#define $ac_item 1" >> confdefs.h fi ac_func= else ac_func=$ac_item fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } if test ${ac_cv_c_undeclared_builtin_options+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_CFLAGS=$CFLAGS ac_cv_c_undeclared_builtin_options='cannot detect' for ac_arg in '' -fno-builtin; do CFLAGS="$ac_save_CFLAGS $ac_arg" # This test program should *not* compile successfully. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { (void) strchr; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop # This test program should compile successfully. # No library function is consistently available on # freestanding implementations, so test against a dummy # declaration. Include always-available headers on the # off chance that they somehow elicit warnings. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include extern void ac_decl (int, char *); int main (void) { (void) ac_decl (0, (char *) 0); (void) ac_decl; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : if test x"$ac_arg" = x then : ac_cv_c_undeclared_builtin_options='none needed' else $as_nop ac_cv_c_undeclared_builtin_options=$ac_arg fi break fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done CFLAGS=$ac_save_CFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } case $ac_cv_c_undeclared_builtin_options in #( 'cannot detect') : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot make $CC report undeclared builtins See \`config.log' for more details" "$LINENO" 5; } ;; #( 'none needed') : ac_c_undeclared_builtin_options='' ;; #( *) : ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether // is distinct from /" >&5 printf %s "checking whether // is distinct from /... " >&6; } if test ${gl_cv_double_slash_root+y} then : printf %s "(cached) " >&6 else $as_nop if test x"$cross_compiling" = xyes ; then # When cross-compiling, there is no way to tell whether // is special # short of a list of hosts. However, the only known hosts to date # that have a distinct // are Apollo DomainOS (too old to port to), # Cygwin, and z/OS. If anyone knows of another system for which // has # special semantics and is distinct from /, please report it to # . case $host in *-cygwin | i370-ibm-openedition) gl_cv_double_slash_root=yes ;; *) # Be optimistic and assume that / and // are the same when we # don't know. gl_cv_double_slash_root='unknown, assuming no' ;; esac else set x `ls -di / // 2>/dev/null` if test "$2" = "$4" && wc //dev/null >/dev/null 2>&1; then gl_cv_double_slash_root=no else gl_cv_double_slash_root=yes fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_double_slash_root" >&5 printf "%s\n" "$gl_cv_double_slash_root" >&6; } if test "$gl_cv_double_slash_root" = yes; then printf "%s\n" "#define DOUBLE_SLASH_IS_DISTINCT_ROOT 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether realpath works" >&5 printf %s "checking whether realpath works... " >&6; } if test ${gl_cv_func_realpath_works+y} then : printf %s "(cached) " >&6 else $as_nop rm -rf conftest.a conftest.d touch conftest.a # Assume that if we have lstat, we can also check symlinks. if test $ac_cv_func_lstat = yes; then ln -s conftest.a conftest.l fi mkdir conftest.d if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_realpath_works="guessing yes" ;; # Guess 'nearly' on musl systems. *-musl*) gl_cv_func_realpath_works="guessing nearly" ;; # Guess no on Cygwin. cygwin*) gl_cv_func_realpath_works="guessing no" ;; # Guess no on native Windows. mingw*) gl_cv_func_realpath_works="guessing no" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_realpath_works="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if defined __MACH__ && defined __APPLE__ /* Avoid a crash on Mac OS X. */ #include #include #include #include #include #include /* The exception port on which our thread listens. */ static mach_port_t our_exception_port; /* The main function of the thread listening for exceptions of type EXC_BAD_ACCESS. */ static void * mach_exception_thread (void *arg) { /* Buffer for a message to be received. */ struct { mach_msg_header_t head; mach_msg_body_t msgh_body; char data[1024]; } msg; mach_msg_return_t retval; /* Wait for a message on the exception port. */ retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg), our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); if (retval != MACH_MSG_SUCCESS) abort (); exit (1); } static void nocrash_init (void) { mach_port_t self = mach_task_self (); /* Allocate a port on which the thread shall listen for exceptions. */ if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port) == KERN_SUCCESS) { /* See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */ if (mach_port_insert_right (self, our_exception_port, our_exception_port, MACH_MSG_TYPE_MAKE_SEND) == KERN_SUCCESS) { /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting for us. */ exception_mask_t mask = EXC_MASK_BAD_ACCESS; /* Create the thread listening on the exception port. */ pthread_attr_t attr; pthread_t thread; if (pthread_attr_init (&attr) == 0 && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0 && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) { pthread_attr_destroy (&attr); /* Replace the exception port info for these exceptions with our own. Note that we replace the exception port for the entire task, not only for a particular thread. This has the effect that when our exception port gets the message, the thread specific exception port has already been asked, and we don't need to bother about it. See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */ task_set_exception_ports (self, mask, our_exception_port, EXCEPTION_DEFAULT, MACHINE_THREAD_STATE); } } } } #elif defined _WIN32 && ! defined __CYGWIN__ /* Avoid a crash on native Windows. */ #define WIN32_LEAN_AND_MEAN #include #include static LONG WINAPI exception_filter (EXCEPTION_POINTERS *ExceptionInfo) { switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_IN_PAGE_ERROR: case EXCEPTION_STACK_OVERFLOW: case EXCEPTION_GUARD_PAGE: case EXCEPTION_PRIV_INSTRUCTION: case EXCEPTION_ILLEGAL_INSTRUCTION: case EXCEPTION_DATATYPE_MISALIGNMENT: case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: case EXCEPTION_NONCONTINUABLE_EXCEPTION: exit (1); } return EXCEPTION_CONTINUE_SEARCH; } static void nocrash_init (void) { SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter); } #else /* Avoid a crash on POSIX systems. */ #include #include /* A POSIX signal handler. */ static void exception_handler (int sig) { _exit (1); } static void nocrash_init (void) { #ifdef SIGSEGV signal (SIGSEGV, exception_handler); #endif #ifdef SIGBUS signal (SIGBUS, exception_handler); #endif } #endif #include #include #include int main (void) { int result = 0; /* This test fails on Solaris 10. */ { char *name = realpath ("conftest.a", NULL); if (!(name && *name == '/')) result |= 1; free (name); } /* This test fails on older versions of Cygwin. */ { char *name = realpath ("conftest.b/../conftest.a", NULL); if (name != NULL) result |= 2; free (name); } /* This test fails on Cygwin 2.9. */ #if HAVE_LSTAT { char *name = realpath ("conftest.l/../conftest.a", NULL); if (name != NULL || errno != ENOTDIR) result |= 4; free (name); } #endif /* This test fails on Mac OS X 10.13, OpenBSD 6.0. */ { char *name = realpath ("conftest.a/", NULL); if (name != NULL) result |= 8; free (name); } /* This test fails on AIX 7, Solaris 10. */ { char *name1 = realpath (".", NULL); char *name2 = realpath ("conftest.d//./..", NULL); if (! name1 || ! name2 || strcmp (name1, name2)) result |= 16; free (name1); free (name2); } #ifdef __linux__ /* On Linux, // is the same as /. See also double-slash-root.m4. realpath() should respect this. This test fails on musl libc 1.2.2. */ { char *name = realpath ("//", NULL); if (! name || strcmp (name, "/")) result |= 32; free (name); } #endif return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_realpath_works=yes else $as_nop case $? in 32) gl_cv_func_realpath_works=nearly ;; *) gl_cv_func_realpath_works=no ;; esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -rf conftest.a conftest.l conftest.d fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_realpath_works" >&5 printf "%s\n" "$gl_cv_func_realpath_works" >&6; } case "$gl_cv_func_realpath_works" in *yes) printf "%s\n" "#define FUNC_REALPATH_WORKS 1" >>confdefs.h ;; *nearly) printf "%s\n" "#define FUNC_REALPATH_NEARLY_WORKS 1" >>confdefs.h ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for faccessat" >&5 printf %s "checking for faccessat... " >&6; } if test ${gl_cv_onwards_func_faccessat+y} then : printf %s "(cached) " >&6 else $as_nop exec 9>&6 6>/dev/null case "$host_os" in linux*-android*) ac_fn_check_decl "$LINENO" "faccessat" "ac_cv_have_decl_faccessat" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_faccessat" = xyes then : fi if test $ac_cv_have_decl_faccessat = yes; then ac_fn_c_check_func "$LINENO" "faccessat" "ac_cv_func_faccessat" if test "x$ac_cv_func_faccessat" = xyes then : fi if test $ac_cv_func_faccessat = yes; then gl_cv_onwards_func_faccessat=yes else gl_cv_onwards_func_faccessat='future OS version' fi else gl_cv_onwards_func_faccessat='future OS version' fi ;; *) ac_fn_c_check_func "$LINENO" "faccessat" "ac_cv_func_faccessat" if test "x$ac_cv_func_faccessat" = xyes then : fi gl_cv_onwards_func_faccessat=$ac_cv_func_faccessat ;; esac exec 6>&9 9>&- fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_onwards_func_faccessat" >&5 printf "%s\n" "$gl_cv_onwards_func_faccessat" >&6; } case "$gl_cv_onwards_func_faccessat" in future*) ac_cv_func_faccessat=no ;; *) ac_cv_func_faccessat=$gl_cv_onwards_func_faccessat ;; esac if test $ac_cv_func_faccessat = yes; then printf "%s\n" "#define HAVE_FACCESSAT 1" >>confdefs.h fi case "$host_os" in mingw*) ;; *) ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" if test "x$ac_cv_func_getcwd" = xyes then : printf "%s\n" "#define HAVE_GETCWD 1" >>confdefs.h fi ;; esac HAVE_CHOWN=1; HAVE_COPY_FILE_RANGE=1; HAVE_DUP3=1; HAVE_EUIDACCESS=1; HAVE_EXECVPE=1; HAVE_FACCESSAT=1; HAVE_FCHDIR=1; HAVE_FCHOWNAT=1; HAVE_FDATASYNC=1; HAVE_FSYNC=1; HAVE_FTRUNCATE=1; HAVE_GETDTABLESIZE=1; HAVE_GETENTROPY=1; HAVE_GETGROUPS=1; HAVE_GETHOSTNAME=1; HAVE_GETLOGIN=1; HAVE_GETPAGESIZE=1; HAVE_GETPASS=1; HAVE_GROUP_MEMBER=1; HAVE_LCHOWN=1; HAVE_LINK=1; HAVE_LINKAT=1; HAVE_PIPE=1; HAVE_PIPE2=1; HAVE_PREAD=1; HAVE_PWRITE=1; HAVE_READLINK=1; HAVE_READLINKAT=1; HAVE_SETHOSTNAME=1; HAVE_SLEEP=1; HAVE_SYMLINK=1; HAVE_SYMLINKAT=1; HAVE_UNLINKAT=1; HAVE_USLEEP=1; HAVE_DECL_ENVIRON=1; HAVE_DECL_EXECVPE=1; HAVE_DECL_FCHDIR=1; HAVE_DECL_FDATASYNC=1; HAVE_DECL_GETDOMAINNAME=1; HAVE_DECL_GETLOGIN=1; HAVE_DECL_GETLOGIN_R=1; HAVE_DECL_GETPAGESIZE=1; HAVE_DECL_GETUSERSHELL=1; HAVE_DECL_SETHOSTNAME=1; HAVE_DECL_TRUNCATE=1; HAVE_DECL_TTYNAME_R=1; HAVE_OS_H=0; HAVE_SYS_PARAM_H=0; REPLACE_ACCESS=0; REPLACE_CHOWN=0; REPLACE_CLOSE=0; REPLACE_COPY_FILE_RANGE=0; REPLACE_DUP=0; REPLACE_DUP2=0; REPLACE_DUP3=0; REPLACE_EXECL=0; REPLACE_EXECLE=0; REPLACE_EXECLP=0; REPLACE_EXECV=0; REPLACE_EXECVE=0; REPLACE_EXECVP=0; REPLACE_EXECVPE=0; REPLACE_FACCESSAT=0; REPLACE_FCHOWNAT=0; REPLACE_FDATASYNC=0; REPLACE_FTRUNCATE=0; REPLACE_GETCWD=0; REPLACE_GETDOMAINNAME=0; REPLACE_GETDTABLESIZE=0; REPLACE_GETENTROPY=0; REPLACE_GETLOGIN_R=0; REPLACE_GETGROUPS=0; REPLACE_GETPAGESIZE=0; REPLACE_GETPASS=0; REPLACE_GETPASS_FOR_GETPASS_GNU=0; REPLACE_ISATTY=0; REPLACE_LCHOWN=0; REPLACE_LINK=0; REPLACE_LINKAT=0; REPLACE_LSEEK=0; REPLACE_PIPE2=0; REPLACE_PREAD=0; REPLACE_PWRITE=0; REPLACE_READ=0; REPLACE_READLINK=0; REPLACE_READLINKAT=0; REPLACE_RMDIR=0; REPLACE_SETHOSTNAME=0; REPLACE_SLEEP=0; REPLACE_SYMLINK=0; REPLACE_SYMLINKAT=0; REPLACE_TRUNCATE=0; REPLACE_TTYNAME_R=0; REPLACE_UNLINK=0; REPLACE_UNLINKAT=0; REPLACE_USLEEP=0; REPLACE_WRITE=0; UNISTD_H_HAVE_SYS_RANDOM_H=0; UNISTD_H_HAVE_WINSOCK2_H=0; UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0; if test $ac_cv_func__set_invalid_parameter_handler = yes; then HAVE_MSVC_INVALID_PARAMETER_HANDLER=1 printf "%s\n" "#define HAVE_MSVC_INVALID_PARAMETER_HANDLER 1" >>confdefs.h else HAVE_MSVC_INVALID_PARAMETER_HANDLER=0 fi GL_GNULIB_ACCESS=0 GL_GNULIB_CHDIR=0 GL_GNULIB_CHOWN=0 GL_GNULIB_CLOSE=0 GL_GNULIB_COPY_FILE_RANGE=0 GL_GNULIB_DUP=0 GL_GNULIB_DUP2=0 GL_GNULIB_DUP3=0 GL_GNULIB_ENVIRON=0 GL_GNULIB_EUIDACCESS=0 GL_GNULIB_EXECL=0 GL_GNULIB_EXECLE=0 GL_GNULIB_EXECLP=0 GL_GNULIB_EXECV=0 GL_GNULIB_EXECVE=0 GL_GNULIB_EXECVP=0 GL_GNULIB_EXECVPE=0 GL_GNULIB_FACCESSAT=0 GL_GNULIB_FCHDIR=0 GL_GNULIB_FCHOWNAT=0 GL_GNULIB_FDATASYNC=0 GL_GNULIB_FSYNC=0 GL_GNULIB_FTRUNCATE=0 GL_GNULIB_GETCWD=0 GL_GNULIB_GETDOMAINNAME=0 GL_GNULIB_GETDTABLESIZE=0 GL_GNULIB_GETENTROPY=0 GL_GNULIB_GETGROUPS=0 GL_GNULIB_GETHOSTNAME=0 GL_GNULIB_GETLOGIN=0 GL_GNULIB_GETLOGIN_R=0 GL_GNULIB_GETOPT_POSIX=0 GL_GNULIB_GETPAGESIZE=0 GL_GNULIB_GETPASS=0 GL_GNULIB_GETPASS_GNU=0 GL_GNULIB_GETUSERSHELL=0 GL_GNULIB_GROUP_MEMBER=0 GL_GNULIB_ISATTY=0 GL_GNULIB_LCHOWN=0 GL_GNULIB_LINK=0 GL_GNULIB_LINKAT=0 GL_GNULIB_LSEEK=0 GL_GNULIB_PIPE=0 GL_GNULIB_PIPE2=0 GL_GNULIB_PREAD=0 GL_GNULIB_PWRITE=0 GL_GNULIB_READ=0 GL_GNULIB_READLINK=0 GL_GNULIB_READLINKAT=0 GL_GNULIB_RMDIR=0 GL_GNULIB_SETHOSTNAME=0 GL_GNULIB_SLEEP=0 GL_GNULIB_SYMLINK=0 GL_GNULIB_SYMLINKAT=0 GL_GNULIB_TRUNCATE=0 GL_GNULIB_TTYNAME_R=0 GL_GNULIB_UNISTD_H_GETOPT=0 GL_GNULIB_UNISTD_H_NONBLOCKING=0 GL_GNULIB_UNISTD_H_SIGPIPE=0 GL_GNULIB_UNLINK=0 GL_GNULIB_UNLINKAT=0 GL_GNULIB_USLEEP=0 GL_GNULIB_WRITE=0 GL_GNULIB_MDA_ACCESS=1 GL_GNULIB_MDA_CHDIR=1 GL_GNULIB_MDA_CLOSE=1 GL_GNULIB_MDA_DUP=1 GL_GNULIB_MDA_DUP2=1 GL_GNULIB_MDA_EXECL=1 GL_GNULIB_MDA_EXECLE=1 GL_GNULIB_MDA_EXECLP=1 GL_GNULIB_MDA_EXECV=1 GL_GNULIB_MDA_EXECVE=1 GL_GNULIB_MDA_EXECVP=1 GL_GNULIB_MDA_EXECVPE=1 GL_GNULIB_MDA_GETCWD=1 GL_GNULIB_MDA_GETPID=1 GL_GNULIB_MDA_ISATTY=1 GL_GNULIB_MDA_LSEEK=1 GL_GNULIB_MDA_READ=1 GL_GNULIB_MDA_RMDIR=1 GL_GNULIB_MDA_SWAB=1 GL_GNULIB_MDA_UNLINK=1 GL_GNULIB_MDA_WRITE=1 gl_mda_defines=' #if defined _WIN32 && !defined __CYGWIN__ #define access _access #define chdir _chdir #define chmod _chmod #define close _close #define creat _creat #define dup _dup #define dup2 _dup2 #define ecvt _ecvt #define execl _execl #define execle _execle #define execlp _execlp #define execv _execv #define execve _execve #define execvp _execvp #define execvpe _execvpe #define fcloseall _fcloseall #define fcvt _fcvt #define fdopen _fdopen #define fileno _fileno #define gcvt _gcvt #define getcwd _getcwd #define getpid _getpid #define getw _getw #define isatty _isatty #define j0 _j0 #define j1 _j1 #define jn _jn #define lfind _lfind #define lsearch _lsearch #define lseek _lseek #define memccpy _memccpy #define mkdir _mkdir #define mktemp _mktemp #define open _open #define putenv _putenv #define putw _putw #define read _read #define rmdir _rmdir #define strdup _strdup #define swab _swab #define tempnam _tempnam #define tzset _tzset #define umask _umask #define unlink _unlink #define utime _utime #define wcsdup _wcsdup #define write _write #define y0 _y0 #define y1 _y1 #define yn _yn #endif ' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for complete errno.h" >&5 printf %s "checking for complete errno.h... " >&6; } if test ${gl_cv_header_errno_h_complete+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if !defined ETXTBSY booboo #endif #if !defined ENOMSG booboo #endif #if !defined EIDRM booboo #endif #if !defined ENOLINK booboo #endif #if !defined EPROTO booboo #endif #if !defined EMULTIHOP booboo #endif #if !defined EBADMSG booboo #endif #if !defined EOVERFLOW booboo #endif #if !defined ENOTSUP booboo #endif #if !defined ENETRESET booboo #endif #if !defined ECONNABORTED booboo #endif #if !defined ESTALE booboo #endif #if !defined EDQUOT booboo #endif #if !defined ECANCELED booboo #endif #if !defined EOWNERDEAD booboo #endif #if !defined ENOTRECOVERABLE booboo #endif #if !defined EILSEQ booboo #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "booboo" >/dev/null 2>&1 then : gl_cv_header_errno_h_complete=no else $as_nop gl_cv_header_errno_h_complete=yes fi rm -rf conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_complete" >&5 printf "%s\n" "$gl_cv_header_errno_h_complete" >&6; } if test $gl_cv_header_errno_h_complete = yes; then GL_GENERATE_ERRNO_H=false else if test $gl_cv_have_include_next = yes; then gl_cv_next_errno_h='<'errno.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_errno_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'errno.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_errno_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_errno_h gl_cv_next_errno_h='"'$gl_header'"' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_errno_h" >&5 printf "%s\n" "$gl_cv_next_errno_h" >&6; } fi NEXT_ERRNO_H=$gl_cv_next_errno_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'errno.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_errno_h fi NEXT_AS_FIRST_DIRECTIVE_ERRNO_H=$gl_next_as_first_directive GL_GENERATE_ERRNO_H=true fi if $GL_GENERATE_ERRNO_H; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for EMULTIHOP value" >&5 printf %s "checking for EMULTIHOP value... " >&6; } if test ${gl_cv_header_errno_h_EMULTIHOP+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef EMULTIHOP yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1 then : gl_cv_header_errno_h_EMULTIHOP=yes else $as_nop gl_cv_header_errno_h_EMULTIHOP=no fi rm -rf conftest* if test $gl_cv_header_errno_h_EMULTIHOP = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE_EXTENDED 1 #include #ifdef EMULTIHOP yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1 then : gl_cv_header_errno_h_EMULTIHOP=hidden fi rm -rf conftest* if test $gl_cv_header_errno_h_EMULTIHOP = hidden; then if ac_fn_c_compute_int "$LINENO" "EMULTIHOP" "gl_cv_header_errno_h_EMULTIHOP" " #define _XOPEN_SOURCE_EXTENDED 1 #include /* The following two lines are a workaround against an autoconf-2.52 bug. */ #include #include " then : fi fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EMULTIHOP" >&5 printf "%s\n" "$gl_cv_header_errno_h_EMULTIHOP" >&6; } case $gl_cv_header_errno_h_EMULTIHOP in yes | no) EMULTIHOP_HIDDEN=0; EMULTIHOP_VALUE= ;; *) EMULTIHOP_HIDDEN=1; EMULTIHOP_VALUE="$gl_cv_header_errno_h_EMULTIHOP" ;; esac fi if $GL_GENERATE_ERRNO_H; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ENOLINK value" >&5 printf %s "checking for ENOLINK value... " >&6; } if test ${gl_cv_header_errno_h_ENOLINK+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef ENOLINK yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1 then : gl_cv_header_errno_h_ENOLINK=yes else $as_nop gl_cv_header_errno_h_ENOLINK=no fi rm -rf conftest* if test $gl_cv_header_errno_h_ENOLINK = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE_EXTENDED 1 #include #ifdef ENOLINK yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1 then : gl_cv_header_errno_h_ENOLINK=hidden fi rm -rf conftest* if test $gl_cv_header_errno_h_ENOLINK = hidden; then if ac_fn_c_compute_int "$LINENO" "ENOLINK" "gl_cv_header_errno_h_ENOLINK" " #define _XOPEN_SOURCE_EXTENDED 1 #include /* The following two lines are a workaround against an autoconf-2.52 bug. */ #include #include " then : fi fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_ENOLINK" >&5 printf "%s\n" "$gl_cv_header_errno_h_ENOLINK" >&6; } case $gl_cv_header_errno_h_ENOLINK in yes | no) ENOLINK_HIDDEN=0; ENOLINK_VALUE= ;; *) ENOLINK_HIDDEN=1; ENOLINK_VALUE="$gl_cv_header_errno_h_ENOLINK" ;; esac fi if $GL_GENERATE_ERRNO_H; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for EOVERFLOW value" >&5 printf %s "checking for EOVERFLOW value... " >&6; } if test ${gl_cv_header_errno_h_EOVERFLOW+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef EOVERFLOW yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1 then : gl_cv_header_errno_h_EOVERFLOW=yes else $as_nop gl_cv_header_errno_h_EOVERFLOW=no fi rm -rf conftest* if test $gl_cv_header_errno_h_EOVERFLOW = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE_EXTENDED 1 #include #ifdef EOVERFLOW yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1 then : gl_cv_header_errno_h_EOVERFLOW=hidden fi rm -rf conftest* if test $gl_cv_header_errno_h_EOVERFLOW = hidden; then if ac_fn_c_compute_int "$LINENO" "EOVERFLOW" "gl_cv_header_errno_h_EOVERFLOW" " #define _XOPEN_SOURCE_EXTENDED 1 #include /* The following two lines are a workaround against an autoconf-2.52 bug. */ #include #include " then : fi fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EOVERFLOW" >&5 printf "%s\n" "$gl_cv_header_errno_h_EOVERFLOW" >&6; } case $gl_cv_header_errno_h_EOVERFLOW in yes | no) EOVERFLOW_HIDDEN=0; EOVERFLOW_VALUE= ;; *) EOVERFLOW_HIDDEN=1; EOVERFLOW_VALUE="$gl_cv_header_errno_h_EOVERFLOW" ;; esac fi REPLACE_ERROR=0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for error" >&5 printf %s "checking for error... " >&6; } if test ${gl_cv_onwards_func_error+y} then : printf %s "(cached) " >&6 else $as_nop exec 9>&6 6>/dev/null case "$host_os" in linux*-android*) ac_fn_check_decl "$LINENO" "error" "ac_cv_have_decl_error" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_error" = xyes then : fi if test $ac_cv_have_decl_error = yes; then ac_fn_c_check_func "$LINENO" "error" "ac_cv_func_error" if test "x$ac_cv_func_error" = xyes then : fi if test $ac_cv_func_error = yes; then gl_cv_onwards_func_error=yes else gl_cv_onwards_func_error='future OS version' fi else gl_cv_onwards_func_error='future OS version' fi ;; *) ac_fn_c_check_func "$LINENO" "error" "ac_cv_func_error" if test "x$ac_cv_func_error" = xyes then : fi gl_cv_onwards_func_error=$ac_cv_func_error ;; esac exec 6>&9 9>&- fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_onwards_func_error" >&5 printf "%s\n" "$gl_cv_onwards_func_error" >&6; } case "$gl_cv_onwards_func_error" in future*) ac_cv_func_error=no ;; *) ac_cv_func_error=$gl_cv_onwards_func_error ;; esac if test $ac_cv_func_error = yes; then printf "%s\n" "#define HAVE_ERROR 1" >>confdefs.h fi if test $ac_cv_func_error = yes; then HAVE_ERROR=1 else HAVE_ERROR=0 case "$gl_cv_onwards_func_error" in future*) REPLACE_ERROR=1 ;; esac fi ac_fn_check_decl "$LINENO" "error_at_line" "ac_cv_have_decl_error_at_line" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_error_at_line" = xyes then : fi if test $ac_cv_have_decl_error_at_line = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for error_at_line" >&5 printf %s "checking for error_at_line... " >&6; } if test ${ac_cv_lib_error_at_line+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { error_at_line (0, 0, "", 0, "an error occurred"); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_error_at_line=yes else $as_nop ac_cv_lib_error_at_line=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_error_at_line" >&5 printf "%s\n" "$ac_cv_lib_error_at_line" >&6; } else ac_cv_lib_error_at_line=no fi if test $ac_cv_lib_error_at_line = yes; then HAVE_ERROR_AT_LINE=1 else HAVE_ERROR_AT_LINE=0 fi REPLACE_ERROR_AT_LINE=0 if test $ac_cv_func_error = yes && test $ac_cv_lib_error_at_line = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working error function" >&5 printf %s "checking for working error function... " >&6; } if test ${gl_cv_func_working_error+y} then : printf %s "(cached) " >&6 else $as_nop if test $cross_compiling != yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include static void print_no_progname (void) {} int main (void) { error_print_progname = print_no_progname; error (0, 0, "foo"); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : rm -f conftest.out if test -s conftest$ac_exeext \ && ./conftest$ac_exeext 2> conftest.out; then if grep ' ' conftest.out >/dev/null; then gl_cv_func_working_error=no else gl_cv_func_working_error=yes fi else gl_cv_func_working_error=no fi rm -f conftest.out else $as_nop gl_cv_func_working_error=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { error (0, 0, "foo"); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_working_error="guessing yes" ;; # Guess no on Android. linux*-android*) gl_cv_func_working_error="guessing no" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_working_error="$gl_cross_guess_normal" ;; esac else $as_nop gl_cv_func_working_error=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_working_error" >&5 printf "%s\n" "$gl_cv_func_working_error" >&6; } case "$gl_cv_func_working_error" in *no) REPLACE_ERROR=1 REPLACE_ERROR_AT_LINE=1 ;; esac fi if test $HAVE_ERROR = 0 || test $REPLACE_ERROR = 1 \ || test $HAVE_ERROR_AT_LINE = 0 || test $REPLACE_ERROR_AT_LINE = 1; then GL_GENERATE_ERROR_H=true else GL_GENERATE_ERROR_H=false fi ac_fn_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_strerror_r" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_STRERROR_R $ac_have_decl" >>confdefs.h if test $ac_cv_have_decl_strerror_r = yes; then # For backward compatibility's sake, define HAVE_STRERROR_R. # (We used to run AC_CHECK_FUNCS_ONCE for strerror_r, as well # as AC_CHECK_DECLS_ONCE.) printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5 printf %s "checking whether strerror_r returns char *... " >&6; } if test ${ac_cv_func_strerror_r_char_p+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_func_strerror_r_char_p=no if test $ac_cv_have_decl_strerror_r = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { char buf[100]; char x = *strerror_r (0, buf, sizeof buf); char *p = strerror_r (0, buf, sizeof buf); return !p || x; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_func_strerror_r_char_p=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strerror_r_char_p" >&5 printf "%s\n" "$ac_cv_func_strerror_r_char_p" >&6; } if test $ac_cv_func_strerror_r_char_p = yes; then printf "%s\n" "#define STRERROR_R_CHAR_P 1" >>confdefs.h fi XGETTEXT_EXTRA_OPTIONS= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ctype.h defines __header_inline" >&5 printf %s "checking whether ctype.h defines __header_inline... " >&6; } if test ${gl_cv_have___header_inline+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef __header_inline #error " does not define __header_inline" #endif _ACEOF if ac_fn_c_try_cpp "$LINENO" then : gl_cv_have___header_inline=yes else $as_nop gl_cv_have___header_inline=no fi rm -f conftest.err conftest.i conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have___header_inline" >&5 printf "%s\n" "$gl_cv_have___header_inline" >&6; } if test "$gl_cv_have___header_inline" = yes; then printf "%s\n" "#define HAVE___HEADER_INLINE 1" >>confdefs.h fi HAVE_FCNTL=1; HAVE_OPENAT=1; REPLACE_CREAT=0; REPLACE_FCNTL=0; REPLACE_OPEN=0; REPLACE_OPENAT=0; GL_GNULIB_CREAT=0 GL_GNULIB_FCNTL=0 GL_GNULIB_NONBLOCKING=0 GL_GNULIB_OPEN=0 GL_GNULIB_OPENAT=0 GL_GNULIB_MDA_CREAT=1 GL_GNULIB_MDA_OPEN=1 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5 printf %s "checking for working fcntl.h... " >&6; } if test ${gl_cv_header_working_fcntl_h+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess 'no' on native Windows. mingw*) gl_cv_header_working_fcntl_h='no' ;; *) gl_cv_header_working_fcntl_h=cross-compiling ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if HAVE_UNISTD_H # include #else /* on Windows with MSVC */ # include # include # defined sleep(n) _sleep ((n) * 1000) #endif #include $gl_mda_defines #ifndef O_NOATIME #define O_NOATIME 0 #endif #ifndef O_NOFOLLOW #define O_NOFOLLOW 0 #endif static int const constants[] = { O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY }; int main (void) { int result = !constants; #if HAVE_SYMLINK { static char const sym[] = "conftest.sym"; if (symlink ("/dev/null", sym) != 0) result |= 2; else { int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0); if (fd >= 0) { close (fd); result |= 4; } } if (unlink (sym) != 0 || symlink (".", sym) != 0) result |= 2; else { int fd = open (sym, O_RDONLY | O_NOFOLLOW); if (fd >= 0) { close (fd); result |= 4; } } unlink (sym); } #endif { static char const file[] = "confdefs.h"; int fd = open (file, O_RDONLY | O_NOATIME); if (fd < 0) result |= 8; else { struct stat st0; if (fstat (fd, &st0) != 0) result |= 16; else { char c; sleep (1); if (read (fd, &c, 1) != 1) result |= 24; else { if (close (fd) != 0) result |= 32; else { struct stat st1; if (stat (file, &st1) != 0) result |= 40; else if (st0.st_atime != st1.st_atime) result |= 64; } } } } } return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_header_working_fcntl_h=yes else $as_nop case $? in #( 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( *) gl_cv_header_working_fcntl_h='no';; esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5 printf "%s\n" "$gl_cv_header_working_fcntl_h" >&6; } case $gl_cv_header_working_fcntl_h in #( *O_NOATIME* | no | cross-compiling) ac_val=0;; #( *) ac_val=1;; esac printf "%s\n" "#define HAVE_WORKING_O_NOATIME $ac_val" >>confdefs.h case $gl_cv_header_working_fcntl_h in #( *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( *) ac_val=1;; esac printf "%s\n" "#define HAVE_WORKING_O_NOFOLLOW $ac_val" >>confdefs.h ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default " if test "x$ac_cv_type_pid_t" = xyes then : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined _WIN64 && !defined __CYGWIN__ LLP64 #endif int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_pid_type='int' else $as_nop ac_pid_type='__int64' fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext printf "%s\n" "#define pid_t $ac_pid_type" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" if test "x$ac_cv_type_mode_t" = xyes then : else $as_nop printf "%s\n" "#define mode_t int" >>confdefs.h fi if test $gl_cv_have_include_next = yes; then gl_cv_next_fcntl_h='<'fcntl.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_fcntl_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'fcntl.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_fcntl_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_fcntl_h gl_cv_next_fcntl_h='"'$gl_header'"' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_fcntl_h" >&5 printf "%s\n" "$gl_cv_next_fcntl_h" >&6; } fi NEXT_FCNTL_H=$gl_cv_next_fcntl_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'fcntl.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_fcntl_h fi NEXT_AS_FIRST_DIRECTIVE_FCNTL_H=$gl_next_as_first_directive HAVE_ACOSF=1; HAVE_ACOSL=1; HAVE_ASINF=1; HAVE_ASINL=1; HAVE_ATANF=1; HAVE_ATANL=1; HAVE_ATAN2F=1; HAVE_CBRT=1; HAVE_CBRTF=1; HAVE_CBRTL=1; HAVE_COPYSIGN=1; HAVE_COPYSIGNL=1; HAVE_COSF=1; HAVE_COSL=1; HAVE_COSHF=1; HAVE_EXPF=1; HAVE_EXPL=1; HAVE_EXPM1=1; HAVE_EXPM1F=1; HAVE_FABSF=1; HAVE_FABSL=1; HAVE_FMA=1; HAVE_FMAF=1; HAVE_FMAL=1; HAVE_FMODF=1; HAVE_FMODL=1; HAVE_FREXPF=1; HAVE_HYPOTF=1; HAVE_HYPOTL=1; HAVE_ILOGB=1; HAVE_ILOGBF=1; HAVE_ILOGBL=1; HAVE_ISNANF=1; HAVE_ISNAND=1; HAVE_ISNANL=1; HAVE_LDEXPF=1; HAVE_LOGF=1; HAVE_LOGL=1; HAVE_LOG10F=1; HAVE_LOG10L=1; HAVE_LOG1P=1; HAVE_LOG1PF=1; HAVE_LOG1PL=1; HAVE_LOGBF=1; HAVE_LOGBL=1; HAVE_MODFF=1; HAVE_MODFL=1; HAVE_POWF=1; HAVE_REMAINDER=1; HAVE_REMAINDERF=1; HAVE_RINT=1; HAVE_RINTL=1; HAVE_SINF=1; HAVE_SINL=1; HAVE_SINHF=1; HAVE_SQRTF=1; HAVE_SQRTL=1; HAVE_TANF=1; HAVE_TANL=1; HAVE_TANHF=1; HAVE_DECL_ACOSL=1; HAVE_DECL_ASINL=1; HAVE_DECL_ATANL=1; HAVE_DECL_CBRTF=1; HAVE_DECL_CBRTL=1; HAVE_DECL_CEILF=1; HAVE_DECL_CEILL=1; HAVE_DECL_COPYSIGNF=1; HAVE_DECL_COSL=1; HAVE_DECL_EXPL=1; HAVE_DECL_EXP2=1; HAVE_DECL_EXP2F=1; HAVE_DECL_EXP2L=1; HAVE_DECL_EXPM1L=1; HAVE_DECL_FLOORF=1; HAVE_DECL_FLOORL=1; HAVE_DECL_FREXPL=1; HAVE_DECL_LDEXPL=1; HAVE_DECL_LOGL=1; HAVE_DECL_LOG10L=1; HAVE_DECL_LOG2=1; HAVE_DECL_LOG2F=1; HAVE_DECL_LOG2L=1; HAVE_DECL_LOGB=1; HAVE_DECL_REMAINDER=1; HAVE_DECL_REMAINDERL=1; HAVE_DECL_RINTF=1; HAVE_DECL_ROUND=1; HAVE_DECL_ROUNDF=1; HAVE_DECL_ROUNDL=1; HAVE_DECL_SINL=1; HAVE_DECL_SQRTL=1; HAVE_DECL_TANL=1; HAVE_DECL_TRUNC=1; HAVE_DECL_TRUNCF=1; HAVE_DECL_TRUNCL=1; REPLACE_ACOSF=0; REPLACE_ASINF=0; REPLACE_ATANF=0; REPLACE_ATAN2F=0; REPLACE_CBRTF=0; REPLACE_CBRTL=0; REPLACE_CEIL=0; REPLACE_CEILF=0; REPLACE_CEILL=0; REPLACE_COSF=0; REPLACE_COSHF=0; REPLACE_EXPF=0; REPLACE_EXPL=0; REPLACE_EXPM1=0; REPLACE_EXPM1F=0; REPLACE_EXPM1L=0; REPLACE_EXP2=0; REPLACE_EXP2L=0; REPLACE_FABSL=0; REPLACE_FLOOR=0; REPLACE_FLOORF=0; REPLACE_FLOORL=0; REPLACE_FMA=0; REPLACE_FMAF=0; REPLACE_FMAL=0; REPLACE_FMOD=0; REPLACE_FMODF=0; REPLACE_FMODL=0; REPLACE_FREXPF=0; REPLACE_FREXP=0; REPLACE_FREXPL=0; REPLACE_HUGE_VAL=0; REPLACE_HYPOT=0; REPLACE_HYPOTF=0; REPLACE_HYPOTL=0; REPLACE_ILOGB=0; REPLACE_ILOGBF=0; REPLACE_ILOGBL=0; REPLACE_ISFINITE=0; REPLACE_ISINF=0; REPLACE_ISNAN=0; REPLACE_LDEXPL=0; REPLACE_LOG=0; REPLACE_LOGF=0; REPLACE_LOGL=0; REPLACE_LOG10=0; REPLACE_LOG10F=0; REPLACE_LOG10L=0; REPLACE_LOG1P=0; REPLACE_LOG1PF=0; REPLACE_LOG1PL=0; REPLACE_LOG2=0; REPLACE_LOG2F=0; REPLACE_LOG2L=0; REPLACE_LOGB=0; REPLACE_LOGBF=0; REPLACE_LOGBL=0; REPLACE_MODF=0; REPLACE_MODFF=0; REPLACE_MODFL=0; REPLACE_NAN=0; REPLACE_REMAINDER=0; REPLACE_REMAINDERF=0; REPLACE_REMAINDERL=0; REPLACE_RINTL=0; REPLACE_ROUND=0; REPLACE_ROUNDF=0; REPLACE_ROUNDL=0; REPLACE_SIGNBIT=0; REPLACE_SIGNBIT_USING_BUILTINS=0; REPLACE_SINF=0; REPLACE_SINHF=0; REPLACE_SQRTF=0; REPLACE_SQRTL=0; REPLACE_TANF=0; REPLACE_TANHF=0; REPLACE_TRUNC=0; REPLACE_TRUNCF=0; REPLACE_TRUNCL=0; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether frexp() can be used without linking with libm" >&5 printf %s "checking whether frexp() can be used without linking with libm... " >&6; } if test ${gl_cv_func_frexp_no_libm+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include double x; int main (void) { int e; return frexp (x, &e) > 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_func_frexp_no_libm=yes else $as_nop gl_cv_func_frexp_no_libm=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexp_no_libm" >&5 printf "%s\n" "$gl_cv_func_frexp_no_libm" >&6; } ac_fn_check_decl "$LINENO" "alarm" "ac_cv_have_decl_alarm" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_alarm" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_ALARM $ac_have_decl" >>confdefs.h GL_GNULIB_ACOSF=0 GL_GNULIB_ACOSL=0 GL_GNULIB_ASINF=0 GL_GNULIB_ASINL=0 GL_GNULIB_ATANF=0 GL_GNULIB_ATANL=0 GL_GNULIB_ATAN2F=0 GL_GNULIB_CBRT=0 GL_GNULIB_CBRTF=0 GL_GNULIB_CBRTL=0 GL_GNULIB_CEIL=0 GL_GNULIB_CEILF=0 GL_GNULIB_CEILL=0 GL_GNULIB_COPYSIGN=0 GL_GNULIB_COPYSIGNF=0 GL_GNULIB_COPYSIGNL=0 GL_GNULIB_COSF=0 GL_GNULIB_COSL=0 GL_GNULIB_COSHF=0 GL_GNULIB_EXPF=0 GL_GNULIB_EXPL=0 GL_GNULIB_EXP2=0 GL_GNULIB_EXP2F=0 GL_GNULIB_EXP2L=0 GL_GNULIB_EXPM1=0 GL_GNULIB_EXPM1F=0 GL_GNULIB_EXPM1L=0 GL_GNULIB_FABSF=0 GL_GNULIB_FABSL=0 GL_GNULIB_FLOOR=0 GL_GNULIB_FLOORF=0 GL_GNULIB_FLOORL=0 GL_GNULIB_FMA=0 GL_GNULIB_FMAF=0 GL_GNULIB_FMAL=0 GL_GNULIB_FMOD=0 GL_GNULIB_FMODF=0 GL_GNULIB_FMODL=0 GL_GNULIB_FREXPF=0 GL_GNULIB_FREXP=0 GL_GNULIB_FREXPL=0 GL_GNULIB_HYPOT=0 GL_GNULIB_HYPOTF=0 GL_GNULIB_HYPOTL=0 GL_GNULIB_ILOGB=0 GL_GNULIB_ILOGBF=0 GL_GNULIB_ILOGBL=0 GL_GNULIB_ISFINITE=0 GL_GNULIB_ISINF=0 GL_GNULIB_ISNAN=0 GL_GNULIB_ISNANF=0 GL_GNULIB_ISNAND=0 GL_GNULIB_ISNANL=0 GL_GNULIB_LDEXPF=0 GL_GNULIB_LDEXPL=0 GL_GNULIB_LOG=0 GL_GNULIB_LOGF=0 GL_GNULIB_LOGL=0 GL_GNULIB_LOG10=0 GL_GNULIB_LOG10F=0 GL_GNULIB_LOG10L=0 GL_GNULIB_LOG1P=0 GL_GNULIB_LOG1PF=0 GL_GNULIB_LOG1PL=0 GL_GNULIB_LOG2=0 GL_GNULIB_LOG2F=0 GL_GNULIB_LOG2L=0 GL_GNULIB_LOGB=0 GL_GNULIB_LOGBF=0 GL_GNULIB_LOGBL=0 GL_GNULIB_MODF=0 GL_GNULIB_MODFF=0 GL_GNULIB_MODFL=0 GL_GNULIB_POWF=0 GL_GNULIB_REMAINDER=0 GL_GNULIB_REMAINDERF=0 GL_GNULIB_REMAINDERL=0 GL_GNULIB_RINT=0 GL_GNULIB_RINTF=0 GL_GNULIB_RINTL=0 GL_GNULIB_ROUND=0 GL_GNULIB_ROUNDF=0 GL_GNULIB_ROUNDL=0 GL_GNULIB_SIGNBIT=0 GL_GNULIB_SINF=0 GL_GNULIB_SINL=0 GL_GNULIB_SINHF=0 GL_GNULIB_SQRTF=0 GL_GNULIB_SQRTL=0 GL_GNULIB_TANF=0 GL_GNULIB_TANL=0 GL_GNULIB_TANHF=0 GL_GNULIB_TRUNC=0 GL_GNULIB_TRUNCF=0 GL_GNULIB_TRUNCL=0 GL_GNULIB_MDA_J0=1 GL_GNULIB_MDA_J1=1 GL_GNULIB_MDA_JN=1 GL_GNULIB_MDA_Y0=1 GL_GNULIB_MDA_Y1=1 GL_GNULIB_MDA_YN=1 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether long double and double are the same" >&5 printf %s "checking whether long double and double are the same... " >&6; } if test ${gl_cv_long_double_equals_double+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { typedef int check[sizeof (long double) == sizeof (double) && LDBL_MANT_DIG == DBL_MANT_DIG && LDBL_MAX_EXP == DBL_MAX_EXP && LDBL_MIN_EXP == DBL_MIN_EXP ? 1 : -1]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_long_double_equals_double=yes else $as_nop gl_cv_long_double_equals_double=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_long_double_equals_double" >&5 printf "%s\n" "$gl_cv_long_double_equals_double" >&6; } if test $gl_cv_long_double_equals_double = yes; then printf "%s\n" "#define HAVE_SAME_LONG_DOUBLE_AS_DOUBLE 1" >>confdefs.h HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=1 else HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=0 fi HAVE_FCHMODAT=1; HAVE_FSTATAT=1; HAVE_FUTIMENS=1; HAVE_GETUMASK=1; HAVE_LCHMOD=1; HAVE_LSTAT=1; HAVE_MKDIRAT=1; HAVE_MKFIFO=1; HAVE_MKFIFOAT=1; HAVE_MKNOD=1; HAVE_MKNODAT=1; HAVE_UTIMENSAT=1; REPLACE_CHMOD=0; REPLACE_FCHMODAT=0; REPLACE_FSTAT=0; REPLACE_FSTATAT=0; REPLACE_FUTIMENS=0; REPLACE_LSTAT=0; REPLACE_MKDIR=0; REPLACE_MKFIFO=0; REPLACE_MKFIFOAT=0; REPLACE_MKNOD=0; REPLACE_MKNODAT=0; REPLACE_STAT=0; REPLACE_UTIMENSAT=0; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 printf %s "checking whether stat file-mode macros are broken... " >&6; } if test ${ac_cv_header_stat_broken+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if defined S_ISBLK && defined S_IFDIR extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; #endif #if defined S_ISBLK && defined S_IFCHR extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; #endif #if defined S_ISLNK && defined S_IFREG extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; #endif #if defined S_ISSOCK && defined S_IFREG extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_header_stat_broken=no else $as_nop ac_cv_header_stat_broken=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 printf "%s\n" "$ac_cv_header_stat_broken" >&6; } if test $ac_cv_header_stat_broken = yes; then printf "%s\n" "#define STAT_MACROS_BROKEN 1" >>confdefs.h fi case "$host_os" in mingw*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit off_t" >&5 printf %s "checking for 64-bit off_t... " >&6; } if test ${gl_cv_type_off_t_64+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_type_off_t_64=yes else $as_nop gl_cv_type_off_t_64=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 printf "%s\n" "$gl_cv_type_off_t_64" >&6; } if test $gl_cv_type_off_t_64 = no; then WINDOWS_64_BIT_OFF_T=1 else WINDOWS_64_BIT_OFF_T=0 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit st_size" >&5 printf %s "checking for 64-bit st_size... " >&6; } if test ${gl_cv_member_st_size_64+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include struct stat buf; int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_member_st_size_64=yes else $as_nop gl_cv_member_st_size_64=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_member_st_size_64" >&5 printf "%s\n" "$gl_cv_member_st_size_64" >&6; } if test $gl_cv_member_st_size_64 = no; then WINDOWS_64_BIT_ST_SIZE=1 else WINDOWS_64_BIT_ST_SIZE=0 fi ;; *) WINDOWS_64_BIT_OFF_T=0 WINDOWS_64_BIT_ST_SIZE=0 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 printf %s "checking for C/C++ restrict keyword... " >&6; } if test ${ac_cv_c_restrict+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_c_restrict=no # Put '__restrict__' first, to avoid problems with glibc and non-GCC; see: # https://lists.gnu.org/archive/html/bug-autoconf/2016-02/msg00006.html # Put 'restrict' last, because C++ lacks it. for ac_kw in __restrict__ __restrict _Restrict restrict; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ typedef int *int_ptr; int foo (int_ptr $ac_kw ip) { return ip[0]; } int bar (int [$ac_kw]); /* Catch GCC bug 14050. */ int bar (int ip[$ac_kw]) { return ip[0]; } int main (void) { int s[1]; int *$ac_kw t = s; t[0] = 0; return foo (t) + bar (t); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_restrict=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_restrict" != no && break done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 printf "%s\n" "$ac_cv_c_restrict" >&6; } case $ac_cv_c_restrict in restrict) ;; no) printf "%s\n" "#define restrict /**/" >>confdefs.h ;; *) printf "%s\n" "#define restrict $ac_cv_c_restrict" >>confdefs.h ;; esac if test $gl_cv_have_include_next = yes; then gl_cv_next_sys_stat_h='<'sys/stat.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_sys_stat_h+y} then : printf %s "(cached) " >&6 else $as_nop if test $ac_cv_header_sys_stat_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'sys/stat.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_sys_stat_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_sys_stat_h gl_cv_next_sys_stat_h='"'$gl_header'"' else gl_cv_next_sys_stat_h='<'sys/stat.h'>' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_stat_h" >&5 printf "%s\n" "$gl_cv_next_sys_stat_h" >&6; } fi NEXT_SYS_STAT_H=$gl_cv_next_sys_stat_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'sys/stat.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_sys_stat_h fi NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H=$gl_next_as_first_directive WINDOWS_STAT_TIMESPEC=0 ac_fn_c_check_type "$LINENO" "nlink_t" "ac_cv_type_nlink_t" "#include #include " if test "x$ac_cv_type_nlink_t" = xyes then : else $as_nop printf "%s\n" "#define nlink_t int" >>confdefs.h fi case "$host_os" in mingw*) ac_fn_c_check_header_compile "$LINENO" "sdkddkver.h" "ac_cv_header_sdkddkver_h" "$ac_includes_default" if test "x$ac_cv_header_sdkddkver_h" = xyes then : printf "%s\n" "#define HAVE_SDKDDKVER_H 1" >>confdefs.h fi ;; esac GL_GNULIB_CHMOD=0 GL_GNULIB_FCHMODAT=0 GL_GNULIB_FSTAT=0 GL_GNULIB_FSTATAT=0 GL_GNULIB_FUTIMENS=0 GL_GNULIB_GETUMASK=0 GL_GNULIB_LCHMOD=0 GL_GNULIB_LSTAT=0 GL_GNULIB_MKDIR=0 GL_GNULIB_MKDIRAT=0 GL_GNULIB_MKFIFO=0 GL_GNULIB_MKFIFOAT=0 GL_GNULIB_MKNOD=0 GL_GNULIB_MKNODAT=0 GL_GNULIB_STAT=0 GL_GNULIB_UTIMENSAT=0 GL_GNULIB_OVERRIDES_STRUCT_STAT=0 GL_GNULIB_MDA_CHMOD=1 GL_GNULIB_MDA_MKDIR=1 GL_GNULIB_MDA_UMASK=1 ac_fn_check_decl "$LINENO" "getdtablesize" "ac_cv_have_decl_getdtablesize" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_getdtablesize" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_GETDTABLESIZE $ac_have_decl" >>confdefs.h if test $gl_cv_have_include_next = yes; then gl_cv_next_getopt_h='<'getopt.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_getopt_h+y} then : printf %s "(cached) " >&6 else $as_nop if test $ac_cv_header_getopt_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'getopt.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_getopt_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_getopt_h gl_cv_next_getopt_h='"'$gl_header'"' else gl_cv_next_getopt_h='<'getopt.h'>' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_getopt_h" >&5 printf "%s\n" "$gl_cv_next_getopt_h" >&6; } fi NEXT_GETOPT_H=$gl_cv_next_getopt_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'getopt.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_getopt_h fi NEXT_AS_FIRST_DIRECTIVE_GETOPT_H=$gl_next_as_first_directive if test $ac_cv_header_getopt_h = yes; then HAVE_GETOPT_H=1 else HAVE_GETOPT_H=0 fi gl_replace_getopt= if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then for ac_header in getopt.h do : ac_fn_c_check_header_compile "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" if test "x$ac_cv_header_getopt_h" = xyes then : printf "%s\n" "#define HAVE_GETOPT_H 1" >>confdefs.h else $as_nop gl_replace_getopt=yes fi done fi if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then for ac_func in getopt_long_only do : ac_fn_c_check_func "$LINENO" "getopt_long_only" "ac_cv_func_getopt_long_only" if test "x$ac_cv_func_getopt_long_only" = xyes then : printf "%s\n" "#define HAVE_GETOPT_LONG_ONLY 1" >>confdefs.h else $as_nop gl_replace_getopt=yes fi done fi if test -z "$gl_replace_getopt"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether getopt is POSIX compatible" >&5 printf %s "checking whether getopt is POSIX compatible... " >&6; } if test ${gl_cv_func_getopt_posix+y} then : printf %s "(cached) " >&6 else $as_nop if test $cross_compiling = no; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { static char program[] = "program"; static char a[] = "-a"; static char foo[] = "foo"; static char bar[] = "bar"; char *argv[] = { program, a, foo, bar, NULL }; int c; c = getopt (4, argv, "ab"); if (!(c == 'a')) return 1; c = getopt (4, argv, "ab"); if (!(c == -1)) return 2; if (!(optind == 2)) return 3; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_getopt_posix=maybe else $as_nop gl_cv_func_getopt_posix=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $gl_cv_func_getopt_posix = maybe; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { static char program[] = "program"; static char donald[] = "donald"; static char p[] = "-p"; static char billy[] = "billy"; static char duck[] = "duck"; static char a[] = "-a"; static char bar[] = "bar"; char *argv[] = { program, donald, p, billy, duck, a, bar, NULL }; int c; c = getopt (7, argv, "+abp:q:"); if (!(c == -1)) return 4; if (!(strcmp (argv[0], "program") == 0)) return 5; if (!(strcmp (argv[1], "donald") == 0)) return 6; if (!(strcmp (argv[2], "-p") == 0)) return 7; if (!(strcmp (argv[3], "billy") == 0)) return 8; if (!(strcmp (argv[4], "duck") == 0)) return 9; if (!(strcmp (argv[5], "-a") == 0)) return 10; if (!(strcmp (argv[6], "bar") == 0)) return 11; if (!(optind == 1)) return 12; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_getopt_posix=maybe else $as_nop gl_cv_func_getopt_posix=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi if test $gl_cv_func_getopt_posix = maybe; then if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { static char program[] = "program"; static char ab[] = "-ab"; char *argv[3] = { program, ab, NULL }; if (getopt (2, argv, "ab:") != 'a') return 13; if (getopt (2, argv, "ab:") != '?') return 14; if (optopt != 'b') return 15; if (optind != 2) return 16; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_getopt_posix=yes else $as_nop gl_cv_func_getopt_posix=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi else case "$host_os" in darwin* | aix* | mingw*) gl_cv_func_getopt_posix="guessing no";; *) gl_cv_func_getopt_posix="guessing yes";; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getopt_posix" >&5 printf "%s\n" "$gl_cv_func_getopt_posix" >&6; } case "$gl_cv_func_getopt_posix" in *no) gl_replace_getopt=yes ;; esac fi if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working GNU getopt function" >&5 printf %s "checking for working GNU getopt function... " >&6; } if test ${gl_cv_func_getopt_gnu+y} then : printf %s "(cached) " >&6 else $as_nop # Even with POSIXLY_CORRECT, the GNU extension of leading '-' in the # optstring is necessary for programs like m4 that have POSIX-mandated # semantics for supporting options interspersed with files. # Also, since getopt_long is a GNU extension, we require optind=0. # Bash ties 'set -o posix' to a non-exported POSIXLY_CORRECT; # so take care to revert to the correct (non-)export state. gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }' case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #if defined __MACH__ && defined __APPLE__ /* Avoid a crash on Mac OS X. */ #include #include #include #include #include #include /* The exception port on which our thread listens. */ static mach_port_t our_exception_port; /* The main function of the thread listening for exceptions of type EXC_BAD_ACCESS. */ static void * mach_exception_thread (void *arg) { /* Buffer for a message to be received. */ struct { mach_msg_header_t head; mach_msg_body_t msgh_body; char data[1024]; } msg; mach_msg_return_t retval; /* Wait for a message on the exception port. */ retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg), our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); if (retval != MACH_MSG_SUCCESS) abort (); exit (1); } static void nocrash_init (void) { mach_port_t self = mach_task_self (); /* Allocate a port on which the thread shall listen for exceptions. */ if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port) == KERN_SUCCESS) { /* See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */ if (mach_port_insert_right (self, our_exception_port, our_exception_port, MACH_MSG_TYPE_MAKE_SEND) == KERN_SUCCESS) { /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting for us. */ exception_mask_t mask = EXC_MASK_BAD_ACCESS; /* Create the thread listening on the exception port. */ pthread_attr_t attr; pthread_t thread; if (pthread_attr_init (&attr) == 0 && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0 && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) { pthread_attr_destroy (&attr); /* Replace the exception port info for these exceptions with our own. Note that we replace the exception port for the entire task, not only for a particular thread. This has the effect that when our exception port gets the message, the thread specific exception port has already been asked, and we don't need to bother about it. See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */ task_set_exception_ports (self, mask, our_exception_port, EXCEPTION_DEFAULT, MACHINE_THREAD_STATE); } } } } #elif defined _WIN32 && ! defined __CYGWIN__ /* Avoid a crash on native Windows. */ #define WIN32_LEAN_AND_MEAN #include #include static LONG WINAPI exception_filter (EXCEPTION_POINTERS *ExceptionInfo) { switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_IN_PAGE_ERROR: case EXCEPTION_STACK_OVERFLOW: case EXCEPTION_GUARD_PAGE: case EXCEPTION_PRIV_INSTRUCTION: case EXCEPTION_ILLEGAL_INSTRUCTION: case EXCEPTION_DATATYPE_MISALIGNMENT: case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: case EXCEPTION_NONCONTINUABLE_EXCEPTION: exit (1); } return EXCEPTION_CONTINUE_SEARCH; } static void nocrash_init (void) { SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter); } #else /* Avoid a crash on POSIX systems. */ #include #include /* A POSIX signal handler. */ static void exception_handler (int sig) { _exit (1); } static void nocrash_init (void) { #ifdef SIGSEGV signal (SIGSEGV, exception_handler); #endif #ifdef SIGBUS signal (SIGBUS, exception_handler); #endif } #endif int main (void) { int result = 0; nocrash_init(); /* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw, and fails on Mac OS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10. */ { static char conftest[] = "conftest"; static char plus[] = "-+"; char *argv[3] = { conftest, plus, NULL }; opterr = 0; if (getopt (2, argv, "+a") != '?') result |= 1; } /* This code succeeds on glibc 2.8, mingw, and fails on Mac OS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x. */ { static char program[] = "program"; static char p[] = "-p"; static char foo[] = "foo"; static char bar[] = "bar"; char *argv[] = { program, p, foo, bar, NULL }; optind = 1; if (getopt (4, argv, "p::") != 'p') result |= 2; else if (optarg != NULL) result |= 4; else if (getopt (4, argv, "p::") != -1) result |= 6; else if (optind != 2) result |= 8; } /* This code succeeds on glibc 2.8 and fails on Cygwin 1.7.0. */ { static char program[] = "program"; static char foo[] = "foo"; static char p[] = "-p"; char *argv[] = { program, foo, p, NULL }; optind = 0; if (getopt (3, argv, "-p") != 1) result |= 16; else if (getopt (3, argv, "-p") != 'p') result |= 16; } /* This code fails on glibc 2.11. */ { static char program[] = "program"; static char b[] = "-b"; static char a[] = "-a"; char *argv[] = { program, b, a, NULL }; optind = opterr = 0; if (getopt (3, argv, "+:a:b") != 'b') result |= 32; else if (getopt (3, argv, "+:a:b") != ':') result |= 32; } /* This code dumps core on glibc 2.14. */ { static char program[] = "program"; static char w[] = "-W"; static char dummy[] = "dummy"; char *argv[] = { program, w, dummy, NULL }; optind = opterr = 1; if (getopt (3, argv, "W;") != 'W') result |= 64; } return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_getopt_gnu=yes else $as_nop gl_cv_func_getopt_gnu=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi case $gl_had_POSIXLY_CORRECT in exported) ;; yes) { POSIXLY_CORRECT=; unset POSIXLY_CORRECT;}; POSIXLY_CORRECT=1 ;; *) { POSIXLY_CORRECT=; unset POSIXLY_CORRECT;} ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getopt_gnu" >&5 printf "%s\n" "$gl_cv_func_getopt_gnu" >&6; } if test "$gl_cv_func_getopt_gnu" != yes; then gl_replace_getopt=yes else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working GNU getopt_long function" >&5 printf %s "checking for working GNU getopt_long function... " >&6; } if test ${gl_cv_func_getopt_long_gnu+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in openbsd*) gl_cv_func_getopt_long_gnu="guessing no";; *) gl_cv_func_getopt_long_gnu="guessing yes";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main (void) { static const struct option long_options[] = { { "xtremely-",no_argument, NULL, 1003 }, { "xtra", no_argument, NULL, 1001 }, { "xtreme", no_argument, NULL, 1002 }, { "xtremely", no_argument, NULL, 1003 }, { NULL, 0, NULL, 0 } }; /* This code fails on OpenBSD 5.0. */ { static char program[] = "program"; static char xtremel[] = "--xtremel"; char *argv[] = { program, xtremel, NULL }; int option_index; optind = 1; opterr = 0; if (getopt_long (2, argv, "", long_options, &option_index) != 1003) return 1; } return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_getopt_long_gnu=yes else $as_nop gl_cv_func_getopt_long_gnu=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getopt_long_gnu" >&5 printf "%s\n" "$gl_cv_func_getopt_long_gnu" >&6; } case "$gl_cv_func_getopt_long_gnu" in *yes) ;; *) gl_replace_getopt=yes ;; esac fi fi HAVE_GETRANDOM=1; REPLACE_GETRANDOM=0; GL_GNULIB_GETRANDOM=0 if test -z "$gl_anythreadlib_early_done"; then case "$host_os" in osf*) # On OSF/1, the compiler needs the flag -D_REENTRANT so that it # groks . cc also understands the flag -pthread, but # we don't use it because 1. gcc-2.95 doesn't understand -pthread, # 2. putting a flag into CPPFLAGS that has an effect on the linker # causes the AC_LINK_IFELSE test below to succeed unexpectedly, # leading to wrong values of LIBTHREAD and LTLIBTHREAD. CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; esac # Some systems optimize for single-threaded programs by default, and # need special flags to disable these optimizations. For example, the # definition of 'errno' in . case "$host_os" in aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; esac gl_anythreadlib_early_done=done fi if test -z "$gl_pthreadlib_body_done"; then gl_pthread_api=no LIBPTHREAD= LIBPMULTITHREAD= # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that # it groks . It's added above, in gl_ANYTHREADLIB_EARLY. ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" if test "x$ac_cv_header_pthread_h" = xyes then : gl_have_pthread_h=yes else $as_nop gl_have_pthread_h=no fi if test "$gl_have_pthread_h" = yes; then # Other possible tests: # -lpthreads (FSU threads, PCthreads) # -lgthreads # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist # in libc. IRIX 6.5 has the first one in both libc and libpthread, but # the second one only in libpthread, and lock.c needs it. # # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04 # needs -pthread for some reason. See: # https://lists.gnu.org/r/bug-gnulib/2014-09/msg00023.html save_LIBS=$LIBS for gl_pthread in '' '-pthread'; do LIBS="$LIBS $gl_pthread" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include pthread_mutex_t m; pthread_mutexattr_t ma; int main (void) { pthread_mutex_lock (&m); pthread_mutexattr_init (&ma); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_pthread_api=yes LIBPTHREAD=$gl_pthread LIBPMULTITHREAD=$gl_pthread fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$save_LIBS test $gl_pthread_api = yes && break done echo "$as_me:20660: gl_pthread_api=$gl_pthread_api" >&5 echo "$as_me:20661: LIBPTHREAD=$LIBPTHREAD" >&5 gl_pthread_in_glibc=no # On Linux with glibc >= 2.34, libc contains the fully functional # pthread functions. case "$host_os" in linux*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 34) || (__GLIBC__ > 2) Lucky user #endif #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Lucky user" >/dev/null 2>&1 then : gl_pthread_in_glibc=yes fi rm -rf conftest* ;; esac echo "$as_me:20687: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5 # Test for libpthread by looking for pthread_kill. (Not pthread_self, # since it is defined as a macro on OSF/1.) if test $gl_pthread_api = yes && test -z "$LIBPTHREAD"; then # The program links fine without libpthread. But it may actually # need to link with libpthread in order to create multiple threads. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 printf %s "checking for pthread_kill in -lpthread... " >&6; } if test ${ac_cv_lib_pthread_pthread_kill+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char pthread_kill (); int main (void) { return pthread_kill (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_pthread_pthread_kill=yes else $as_nop ac_cv_lib_pthread_pthread_kill=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 printf "%s\n" "$ac_cv_lib_pthread_pthread_kill" >&6; } if test "x$ac_cv_lib_pthread_pthread_kill" = xyes then : if test $gl_pthread_in_glibc = yes; then LIBPMULTITHREAD= else LIBPMULTITHREAD=-lpthread # On Solaris and HP-UX, most pthread functions exist also in libc. # Therefore pthread_in_use() needs to actually try to create a # thread: pthread_create from libc will fail, whereas # pthread_create will actually create a thread. # On Solaris 10 or newer, this test is no longer needed, because # libc contains the fully functional pthread functions. case "$host_os" in solaris | solaris2.[1-9] | solaris2.[1-9].* | hpux*) printf "%s\n" "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h esac fi fi elif test $gl_pthread_api != yes; then # Some library is needed. Try libpthread and libc_r. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 printf %s "checking for pthread_kill in -lpthread... " >&6; } if test ${ac_cv_lib_pthread_pthread_kill+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char pthread_kill (); int main (void) { return pthread_kill (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_pthread_pthread_kill=yes else $as_nop ac_cv_lib_pthread_pthread_kill=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 printf "%s\n" "$ac_cv_lib_pthread_pthread_kill" >&6; } if test "x$ac_cv_lib_pthread_pthread_kill" = xyes then : gl_pthread_api=yes LIBPTHREAD=-lpthread LIBPMULTITHREAD=-lpthread fi if test $gl_pthread_api != yes; then # For FreeBSD 4. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5 printf %s "checking for pthread_kill in -lc_r... " >&6; } if test ${ac_cv_lib_c_r_pthread_kill+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lc_r $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char pthread_kill (); int main (void) { return pthread_kill (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_c_r_pthread_kill=yes else $as_nop ac_cv_lib_c_r_pthread_kill=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5 printf "%s\n" "$ac_cv_lib_c_r_pthread_kill" >&6; } if test "x$ac_cv_lib_c_r_pthread_kill" = xyes then : gl_pthread_api=yes LIBPTHREAD=-lc_r LIBPMULTITHREAD=-lc_r fi fi fi echo "$as_me:20841: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether POSIX threads API is available" >&5 printf %s "checking whether POSIX threads API is available... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_pthread_api" >&5 printf "%s\n" "$gl_pthread_api" >&6; } if test $gl_pthread_api = yes; then printf "%s\n" "#define HAVE_PTHREAD_API 1" >>confdefs.h fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { sched_yield (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : SCHED_YIELD_LIB= else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sched_yield in -lrt" >&5 printf %s "checking for sched_yield in -lrt... " >&6; } if test ${ac_cv_lib_rt_sched_yield+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lrt $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char sched_yield (); int main (void) { return sched_yield (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_rt_sched_yield=yes else $as_nop ac_cv_lib_rt_sched_yield=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_sched_yield" >&5 printf "%s\n" "$ac_cv_lib_rt_sched_yield" >&6; } if test "x$ac_cv_lib_rt_sched_yield" = xyes then : SCHED_YIELD_LIB=-lrt else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sched_yield in -lposix4" >&5 printf %s "checking for sched_yield in -lposix4... " >&6; } if test ${ac_cv_lib_posix4_sched_yield+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lposix4 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char sched_yield (); int main (void) { return sched_yield (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_posix4_sched_yield=yes else $as_nop ac_cv_lib_posix4_sched_yield=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix4_sched_yield" >&5 printf "%s\n" "$ac_cv_lib_posix4_sched_yield" >&6; } if test "x$ac_cv_lib_posix4_sched_yield" = xyes then : SCHED_YIELD_LIB=-lposix4 fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIB_SCHED_YIELD="$SCHED_YIELD_LIB" gl_pthreadlib_body_done=done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether setlocale (LC_ALL, NULL) is multithread-safe" >&5 printf %s "checking whether setlocale (LC_ALL, NULL) is multithread-safe... " >&6; } if test ${gl_cv_func_setlocale_null_all_mtsafe+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in # Guess no on musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku. *-musl* | darwin* | freebsd* | midnightbsd* | netbsd* | openbsd* | aix* | haiku*) gl_cv_func_setlocale_null_all_mtsafe=no ;; # Guess no on Cygwin < 3.4.6. cygwin*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __CYGWIN__ #include #if CYGWIN_VERSION_DLL_COMBINED >= CYGWIN_VERSION_DLL_MAKE_COMBINED (3004, 6) Lucky user #endif #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Lucky user" >/dev/null 2>&1 then : gl_cv_func_setlocale_null_all_mtsafe=yes else $as_nop gl_cv_func_setlocale_null_all_mtsafe=no fi rm -rf conftest* ;; # Guess yes on glibc, HP-UX, IRIX, Solaris, native Windows. *-gnu* | gnu* | hpux* | irix* | solaris* | mingw*) gl_cv_func_setlocale_null_all_mtsafe=yes ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_setlocale_null_all_mtsafe="$gl_cross_guess_normal" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_setlocale_null_all_mtsafe" >&5 printf "%s\n" "$gl_cv_func_setlocale_null_all_mtsafe" >&6; } case "$host_os" in mingw*) ;; *) if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then gl_cv_func_setlocale_null_all_mtsafe="trivially yes" fi ;; esac case "$gl_cv_func_setlocale_null_all_mtsafe" in *yes) SETLOCALE_NULL_ALL_MTSAFE=1 ;; *) SETLOCALE_NULL_ALL_MTSAFE=0 ;; esac printf "%s\n" "#define SETLOCALE_NULL_ALL_MTSAFE $SETLOCALE_NULL_ALL_MTSAFE" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether setlocale (category, NULL) is multithread-safe" >&5 printf %s "checking whether setlocale (category, NULL) is multithread-safe... " >&6; } if test ${gl_cv_func_setlocale_null_one_mtsafe+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in # Guess no on OpenBSD, AIX. openbsd* | aix*) gl_cv_func_setlocale_null_one_mtsafe=no ;; # Guess yes on glibc, musl libc, macOS, FreeBSD, NetBSD, HP-UX, IRIX, Solaris, Haiku, Cygwin, native Windows. *-gnu* | gnu* | *-musl* | darwin* | freebsd* | midnightbsd* | netbsd* | hpux* | irix* | solaris* | haiku* | cygwin* | mingw*) gl_cv_func_setlocale_null_one_mtsafe=yes ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_setlocale_null_one_mtsafe="$gl_cross_guess_normal" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_setlocale_null_one_mtsafe" >&5 printf "%s\n" "$gl_cv_func_setlocale_null_one_mtsafe" >&6; } case "$host_os" in mingw*) ;; *) if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then gl_cv_func_setlocale_null_one_mtsafe="trivially yes" fi ;; esac case "$gl_cv_func_setlocale_null_one_mtsafe" in *yes) SETLOCALE_NULL_ONE_MTSAFE=1 ;; *) SETLOCALE_NULL_ONE_MTSAFE=0 ;; esac printf "%s\n" "#define SETLOCALE_NULL_ONE_MTSAFE $SETLOCALE_NULL_ONE_MTSAFE" >>confdefs.h if test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0; then case "$host_os" in mingw*) SETLOCALE_NULL_LIB= ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5 printf %s "checking whether imported symbols can be declared weak... " >&6; } if test ${gl_cv_have_weak+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in cygwin*) gl_cv_have_weak="guessing no" ;; *) gl_cv_have_weak=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ extern void xyzzy (); #pragma weak xyzzy int main (void) { xyzzy(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_have_weak=maybe fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test $gl_cv_have_weak = maybe; then if test "$cross_compiling" = yes then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __ELF__ Extensible Linking Format #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Extensible Linking Format" >/dev/null 2>&1 then : gl_cv_have_weak="guessing yes" else $as_nop gl_cv_have_weak="guessing no" fi rm -rf conftest* else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #pragma weak fputs int main () { return (fputs == NULL); } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_have_weak=yes else $as_nop gl_cv_have_weak=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi ;; esac case " $LDFLAGS " in *" -static "*) gl_cv_have_weak=no ;; esac case "$gl_cv_have_weak" in *yes) case "$host_os" in freebsd* | dragonfly* | midnightbsd*) : > conftest1.c $CC $CPPFLAGS $CFLAGS $LDFLAGS -fPIC -shared -o libempty.so conftest1.c -lpthread >&5 2>&1 cat < conftest2.c #include #pragma weak pthread_mutexattr_gettype int main () { return (pthread_mutexattr_gettype != NULL); } EOF $CC $CPPFLAGS $CFLAGS $LDFLAGS -o conftest conftest2.c libempty.so >&5 2>&1 \ || gl_cv_have_weak=no rm -f conftest1.c libempty.so conftest2.c conftest ;; esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5 printf "%s\n" "$gl_cv_have_weak" >&6; } case "$gl_cv_have_weak" in *yes) printf "%s\n" "#define HAVE_WEAK_SYMBOLS 1" >>confdefs.h ;; esac case "$gl_cv_have_weak" in *yes) SETLOCALE_NULL_LIB= ;; *) SETLOCALE_NULL_LIB="$LIBPTHREAD" ;; esac ;; esac else SETLOCALE_NULL_LIB= fi LIB_SETLOCALE_NULL="$SETLOCALE_NULL_LIB" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi if test -n "$LD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld" >&5 printf %s "checking for ld... " >&6; } elif test "$GCC" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } elif test "$with_gnu_ld" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test -n "$LD"; then # Let the user override the test with a path. : else if test ${acl_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop acl_cv_path_LD= # Final result of this test ac_prog=ld # Program to search in $PATH if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) acl_output=`($CC -print-prog-name=ld) 2>&5` ;; esac case $acl_output in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` done # Got the pathname. No search in PATH is needed. acl_cv_path_LD="$acl_output" ac_prog= ;; "") # If it fails, then pretend we aren't using GCC. ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac fi if test -n "$ac_prog"; then # Search for $ac_prog in $PATH. acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 conftest.$ac_ext /* end confdefs.h. */ #if defined __powerpc64__ || defined __LP64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : # The compiler produces 64-bit code. Add option '-b64' so that the # linker groks 64-bit object files. case "$acl_cv_path_LD " in *" -b64 "*) ;; *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; sparc64-*-netbsd*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __sparcv9 || defined __arch64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop # The compiler produces 32-bit code. Add option '-m elf32_sparc' # so that the linker groks 32-bit object files. case "$acl_cv_path_LD " in *" -m elf32_sparc "*) ;; *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi LD="$acl_cv_path_LD" fi if test -n "$LD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${acl_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 printf %s "checking for shared library run path origin... " >&6; } if test ${acl_cv_rpath+y} then : printf %s "(cached) " >&6 else $as_nop CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 printf "%s\n" "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test ${enable_rpath+y} then : enableval=$enable_rpath; : else $as_nop enable_rpath=yes fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5 printf %s "checking 32-bit host C ABI... " >&6; } if test ${gl_cv_host_cpu_c_abi_32bit+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$gl_cv_host_cpu_c_abi"; then case "$gl_cv_host_cpu_c_abi" in i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc) gl_cv_host_cpu_c_abi_32bit=yes ;; x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 ) gl_cv_host_cpu_c_abi_32bit=no ;; *) gl_cv_host_cpu_c_abi_32bit=unknown ;; esac else case "$host_cpu" in # CPUs that only support a 32-bit ABI. arc \ | bfin \ | cris* \ | csky \ | epiphany \ | ft32 \ | h8300 \ | m68k \ | microblaze | microblazeel \ | nds32 | nds32le | nds32be \ | nios2 | nios2eb | nios2el \ | or1k* \ | or32 \ | sh | sh1234 | sh1234elb \ | tic6x \ | xtensa* ) gl_cv_host_cpu_c_abi_32bit=yes ;; # CPUs that only support a 64-bit ABI. alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \ | mmix ) gl_cv_host_cpu_c_abi_32bit=no ;; i[34567]86 ) gl_cv_host_cpu_c_abi_32bit=yes ;; x86_64 ) # On x86_64 systems, the C compiler may be generating code in one of # these ABIs: # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 # with native Windows (mingw, MSVC). # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if (defined __x86_64__ || defined __amd64__ \ || defined _M_X64 || defined _M_AMD64) \ && !(defined __ILP32__ || defined _ILP32) int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; arm* | aarch64 ) # Assume arm with EABI. # On arm64 systems, the C compiler may be generating code in one of # these ABIs: # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32) int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) # On hppa, the C compiler may be generating 32-bit code or 64-bit # code. In the latter case, it defines _LP64 and __LP64__. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __LP64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; ia64* ) # On ia64 on HP-UX, the C compiler may be generating 64-bit code or # 32-bit code. In the latter case, it defines _ILP32. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _ILP32 int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=yes else $as_nop gl_cv_host_cpu_c_abi_32bit=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; mips* ) # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this # at 32. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; powerpc* ) # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. # No need to distinguish them here; the caller may distinguish # them based on the OS. # On powerpc64 systems, the C compiler may still be generating # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may # be generating 64-bit code. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __powerpc64__ || defined __LP64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; rs6000 ) gl_cv_host_cpu_c_abi_32bit=yes ;; riscv32 | riscv64 ) # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. # Size of 'long' and 'void *': cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __LP64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; s390* ) # On s390x, the C compiler may be generating 64-bit (= s390x) code # or 31-bit (= s390) code. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __LP64__ || defined __s390x__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; sparc | sparc64 ) # UltraSPARCs running Linux have `uname -m` = "sparc64", but the # C compiler still generates 32-bit code. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __sparcv9 || defined __arch64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_host_cpu_c_abi_32bit=no else $as_nop gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; *) gl_cv_host_cpu_c_abi_32bit=unknown ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5 printf "%s\n" "$gl_cv_host_cpu_c_abi_32bit" >&6; } HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ELF binary format" >&5 printf %s "checking for ELF binary format... " >&6; } if test ${gl_cv_elf+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __ELF__ || (defined __linux__ && defined __EDG__) Extensible Linking Format #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Extensible Linking Format" >/dev/null 2>&1 then : gl_cv_elf=yes else $as_nop gl_cv_elf=no fi rm -rf conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_elf" >&5 printf "%s\n" "$gl_cv_elf" >&6; } if test $gl_cv_elf = yes; then # Extract the ELF class of a file (5th byte) in decimal. # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header if od -A x < /dev/null >/dev/null 2>/dev/null; then # Use POSIX od. func_elfclass () { od -A n -t d1 -j 4 -N 1 } else # Use BSD hexdump. func_elfclass () { dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' echo } fi # Use 'expr', not 'test', to compare the values of func_elfclass, because on # Solaris 11 OpenIndiana and Solaris 11 OmniOS, the result is 001 or 002, # not 1 or 2. case $HOST_CPU_C_ABI_32BIT in yes) # 32-bit ABI. acl_is_expected_elfclass () { expr "`func_elfclass | sed -e 's/[ ]//g'`" = 1 > /dev/null } ;; no) # 64-bit ABI. acl_is_expected_elfclass () { expr "`func_elfclass | sed -e 's/[ ]//g'`" = 2 > /dev/null } ;; *) # Unknown. acl_is_expected_elfclass () { : } ;; esac else acl_is_expected_elfclass () { : } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5 printf %s "checking for the common suffixes of directories in the library search path... " >&6; } if test ${acl_cv_libdirstems+y} then : printf %s "(cached) " >&6 else $as_nop acl_libdirstem=lib acl_libdirstem2= acl_libdirstem3= case "$host_os" in solaris*) if test $HOST_CPU_C_ABI_32BIT = no; then acl_libdirstem2=lib/64 case "$host_cpu" in sparc*) acl_libdirstem3=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test $HOST_CPU_C_ABI_32BIT != no; then # 32-bit or unknown ABI. if test -d /usr/lib32; then acl_libdirstem2=lib32 fi fi if test $HOST_CPU_C_ABI_32BIT != yes; then # 64-bit or unknown ABI. if test -d /usr/lib64; then acl_libdirstem3=lib64 fi fi if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib32 ) acl_libdirstem2=lib32 ;; */lib64 ) acl_libdirstem3=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" if test $HOST_CPU_C_ABI_32BIT = yes; then # 32-bit ABI. acl_libdirstem3= fi if test $HOST_CPU_C_ABI_32BIT = no; then # 64-bit ABI. acl_libdirstem2= fi fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5 printf "%s\n" "$acl_cv_libdirstems" >&6; } acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test ${with_libiconv_prefix+y} then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" additional_libdir2="$withval/$acl_libdirstem2" additional_libdir3="$withval/$acl_libdirstem3" fi fi fi if test "X$additional_libdir2" = "X$additional_libdir"; then additional_libdir2= fi if test "X$additional_libdir3" = "X$additional_libdir"; then additional_libdir3= fi LIBICONV= LTLIBICONV= INCICONV= LIBICONV_PREFIX= HAVE_LIBICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do if test "X$found_dir" = "X"; then eval dir=\$$additional_libdir_variable if test -n "$dir"; then if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi fi done fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem3 | */$acl_libdirstem3/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then haveit= if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$dependency_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$dependency_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dep=`echo "X$dep" | sed -e 's/^X-l//'` if test "X$dep" != Xc \ || case $host_os in linux* | gnu* | k*bsd*-gnu) false ;; *) true ;; esac; then names_next_round="$names_next_round $dep" fi ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 printf %s "checking for iconv... " >&6; } if test ${am_cv_func_iconv+y} then : printf %s "(cached) " >&6 else $as_nop am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 printf "%s\n" "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 printf %s "checking for working iconv... " >&6; } if test ${am_cv_func_iconv_works+y} then : printf %s "(cached) " >&6 else $as_nop am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do if test "$cross_compiling" = yes then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif int main (void) { int result = 0; /* Test against AIX 5.1...7.2 bug: Failures are not distinguishable from successful returns. This is even documented in */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ { /* Try standardized names. */ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); /* Try IRIX, OSF/1 names. */ iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); /* Try AIX names. */ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); /* Try HP-UX names. */ iconv_t cd4 = iconv_open ("utf8", "eucJP"); if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) result |= 16; if (cd1 != (iconv_t)(-1)) iconv_close (cd1); if (cd2 != (iconv_t)(-1)) iconv_close (cd2); if (cd3 != (iconv_t)(-1)) iconv_close (cd3); if (cd4 != (iconv_t)(-1)) iconv_close (cd4); } return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : am_cv_func_iconv_works=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 printf "%s\n" "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 printf %s "checking how to link with libiconv... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 printf "%s\n" "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi if test "$am_cv_func_iconv" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether iconv is compatible with its POSIX signature" >&5 printf %s "checking whether iconv is compatible with its POSIX signature... " >&6; } if test ${gl_cv_iconv_nonconst+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include extern #ifdef __cplusplus "C" #endif size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_iconv_nonconst=yes else $as_nop gl_cv_iconv_nonconst=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_iconv_nonconst" >&5 printf "%s\n" "$gl_cv_iconv_nonconst" >&6; } else gl_cv_iconv_nonconst=yes fi if test $gl_cv_iconv_nonconst = yes; then iconv_arg1="" else iconv_arg1="const" fi printf "%s\n" "#define ICONV_CONST $iconv_arg1" >>confdefs.h if test "$am_func_iconv" = yes; then if test -n "$LIBICONV"; then am_cv_func_iconv_summary='yes, in libiconv' else am_cv_func_iconv_summary='yes, in libc' fi else if test "$am_cv_func_iconv" = yes; then am_cv_func_iconv_summary='not working, consider installing GNU libiconv' else am_cv_func_iconv_summary='no, consider installing GNU libiconv' fi fi if test $gl_cv_have_include_next = yes; then gl_cv_next_limits_h='<'limits.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_limits_h+y} then : printf %s "(cached) " >&6 else $as_nop if test $ac_cv_header_limits_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'limits.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_limits_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_limits_h gl_cv_next_limits_h='"'$gl_header'"' else gl_cv_next_limits_h='<'limits.h'>' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_limits_h" >&5 printf "%s\n" "$gl_cv_next_limits_h" >&6; } fi NEXT_LIMITS_H=$gl_cv_next_limits_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'limits.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_limits_h fi NEXT_AS_FIRST_DIRECTIVE_LIMITS_H=$gl_next_as_first_directive { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether limits.h has WORD_BIT, BOOL_WIDTH etc." >&5 printf %s "checking whether limits.h has WORD_BIT, BOOL_WIDTH etc.... " >&6; } if test ${gl_cv_header_limits_width+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __STDC_WANT_IEC_60559_BFP_EXT__ #define __STDC_WANT_IEC_60559_BFP_EXT__ 1 #endif #include long long llm = LLONG_MAX; int wb = WORD_BIT; int ullw = ULLONG_WIDTH; int bw = BOOL_WIDTH; int bm = BOOL_MAX; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_header_limits_width=yes else $as_nop gl_cv_header_limits_width=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_limits_width" >&5 printf "%s\n" "$gl_cv_header_limits_width" >&6; } if test "$gl_cv_header_limits_width" = yes; then GL_GENERATE_LIMITS_H=false else GL_GENERATE_LIMITS_H=true fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5 printf %s "checking for wint_t... " >&6; } if test ${gt_cv_c_wint_t+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include wint_t foo = (wchar_t)'\0'; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gt_cv_c_wint_t=yes else $as_nop gt_cv_c_wint_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5 printf "%s\n" "$gt_cv_c_wint_t" >&6; } if test $gt_cv_c_wint_t = yes; then printf "%s\n" "#define HAVE_WINT_T 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether wint_t is large enough" >&5 printf %s "checking whether wint_t is large enough... " >&6; } if test ${gl_cv_type_wint_t_large_enough+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_type_wint_t_large_enough=yes else $as_nop gl_cv_type_wint_t_large_enough=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wint_t_large_enough" >&5 printf "%s\n" "$gl_cv_type_wint_t_large_enough" >&6; } if test $gl_cv_type_wint_t_large_enough = no; then GNULIBHEADERS_OVERRIDE_WINT_T=1 else GNULIBHEADERS_OVERRIDE_WINT_T=0 fi else GNULIBHEADERS_OVERRIDE_WINT_T=0 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler produces multi-arch binaries" >&5 printf %s "checking whether the compiler produces multi-arch binaries... " >&6; } if test ${gl_cv_c_multiarch+y} then : printf %s "(cached) " >&6 else $as_nop gl_cv_c_multiarch=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO" then : arch= prev= for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do if test -n "$prev"; then case $word in i?86 | x86_64 | ppc | ppc64 | arm | arm64) if test -z "$arch" || test "$arch" = "$word"; then arch="$word" else gl_cv_c_multiarch=yes fi ;; esac prev= else if test "x$word" = "x-arch"; then prev=arch fi fi done fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_multiarch" >&5 printf "%s\n" "$gl_cv_c_multiarch" >&6; } if test $gl_cv_c_multiarch = yes; then APPLE_UNIVERSAL_BUILD=1 else APPLE_UNIVERSAL_BUILD=0 fi printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h if test $ac_cv_header_wchar_h = yes; then HAVE_WCHAR_H=1 else HAVE_WCHAR_H=0 fi if test $ac_cv_header_inttypes_h = yes; then HAVE_INTTYPES_H=1 else HAVE_INTTYPES_H=0 fi if test $ac_cv_header_sys_types_h = yes; then HAVE_SYS_TYPES_H=1 else HAVE_SYS_TYPES_H=0 fi if test $gl_cv_have_include_next = yes; then gl_cv_next_stdint_h='<'stdint.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_stdint_h+y} then : printf %s "(cached) " >&6 else $as_nop if test $ac_cv_header_stdint_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stdint.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_stdint_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_stdint_h gl_cv_next_stdint_h='"'$gl_header'"' else gl_cv_next_stdint_h='<'stdint.h'>' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdint_h" >&5 printf "%s\n" "$gl_cv_next_stdint_h" >&6; } fi NEXT_STDINT_H=$gl_cv_next_stdint_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stdint.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stdint_h fi NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive if test $ac_cv_header_stdint_h = yes; then HAVE_STDINT_H=1 else HAVE_STDINT_H=0 fi if test $ac_cv_header_stdint_h = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5 printf %s "checking whether stdint.h conforms to C99... " >&6; } if test ${gl_cv_header_working_stdint_h+y} then : printf %s "(cached) " >&6 else $as_nop gl_cv_header_working_stdint_h=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #define __STDC_CONSTANT_MACROS 1 #define __STDC_LIMIT_MACROS 1 #include /* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in . */ #if !(defined WCHAR_MIN && defined WCHAR_MAX) #error "WCHAR_MIN, WCHAR_MAX not defined in " #endif #include #include #if HAVE_WCHAR_H # include #endif #ifdef INT8_MAX int8_t a1 = INT8_MAX; int8_t a1min = INT8_MIN; #endif #ifdef INT16_MAX int16_t a2 = INT16_MAX; int16_t a2min = INT16_MIN; #endif #ifdef INT32_MAX int32_t a3 = INT32_MAX; int32_t a3min = INT32_MIN; #endif #ifdef INT64_MAX int64_t a4 = INT64_MAX; int64_t a4min = INT64_MIN; #endif #ifdef UINT8_MAX uint8_t b1 = UINT8_MAX; #else typedef int b1[(unsigned char) -1 != 255 ? 1 : -1]; #endif #ifdef UINT16_MAX uint16_t b2 = UINT16_MAX; #endif #ifdef UINT32_MAX uint32_t b3 = UINT32_MAX; #endif #ifdef UINT64_MAX uint64_t b4 = UINT64_MAX; #endif int_least8_t c1 = INT8_C (0x7f); int_least8_t c1max = INT_LEAST8_MAX; int_least8_t c1min = INT_LEAST8_MIN; int_least16_t c2 = INT16_C (0x7fff); int_least16_t c2max = INT_LEAST16_MAX; int_least16_t c2min = INT_LEAST16_MIN; int_least32_t c3 = INT32_C (0x7fffffff); int_least32_t c3max = INT_LEAST32_MAX; int_least32_t c3min = INT_LEAST32_MIN; int_least64_t c4 = INT64_C (0x7fffffffffffffff); int_least64_t c4max = INT_LEAST64_MAX; int_least64_t c4min = INT_LEAST64_MIN; uint_least8_t d1 = UINT8_C (0xff); uint_least8_t d1max = UINT_LEAST8_MAX; uint_least16_t d2 = UINT16_C (0xffff); uint_least16_t d2max = UINT_LEAST16_MAX; uint_least32_t d3 = UINT32_C (0xffffffff); uint_least32_t d3max = UINT_LEAST32_MAX; uint_least64_t d4 = UINT64_C (0xffffffffffffffff); uint_least64_t d4max = UINT_LEAST64_MAX; int_fast8_t e1 = INT_FAST8_MAX; int_fast8_t e1min = INT_FAST8_MIN; int_fast16_t e2 = INT_FAST16_MAX; int_fast16_t e2min = INT_FAST16_MIN; int_fast32_t e3 = INT_FAST32_MAX; int_fast32_t e3min = INT_FAST32_MIN; int_fast64_t e4 = INT_FAST64_MAX; int_fast64_t e4min = INT_FAST64_MIN; uint_fast8_t f1 = UINT_FAST8_MAX; uint_fast16_t f2 = UINT_FAST16_MAX; uint_fast32_t f3 = UINT_FAST32_MAX; uint_fast64_t f4 = UINT_FAST64_MAX; #ifdef INTPTR_MAX intptr_t g = INTPTR_MAX; intptr_t gmin = INTPTR_MIN; #endif #ifdef UINTPTR_MAX uintptr_t h = UINTPTR_MAX; #endif intmax_t i = INTMAX_MAX; uintmax_t j = UINTMAX_MAX; /* Check that SIZE_MAX has the correct type, if possible. */ #if 201112 <= __STDC_VERSION__ int k = _Generic (SIZE_MAX, size_t: 0); #elif (2 <= __GNUC__ || 4 <= __clang_major__ || defined __IBM__TYPEOF__ \ || (0x5110 <= __SUNPRO_C && !__STDC__)) extern size_t k; extern __typeof__ (SIZE_MAX) k; #endif #include /* for CHAR_BIT */ #define TYPE_MINIMUM(t) \ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t))) #define TYPE_MAXIMUM(t) \ ((t) ((t) 0 < (t) -1 \ ? (t) -1 \ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) struct s { int check_PTRDIFF: PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t) && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t) ? 1 : -1; /* Detect bug in FreeBSD 6.0/ia64 and FreeBSD 13.0/arm64. */ int check_SIG_ATOMIC: SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t) && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t) ? 1 : -1; int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1; int check_WCHAR: WCHAR_MIN == TYPE_MINIMUM (wchar_t) && WCHAR_MAX == TYPE_MAXIMUM (wchar_t) ? 1 : -1; /* Detect bug in mingw. */ int check_WINT: WINT_MIN == TYPE_MINIMUM (wint_t) && WINT_MAX == TYPE_MAXIMUM (wint_t) ? 1 : -1; /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */ int check_UINT8_C: (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1; int check_UINT16_C: (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1; /* Detect bugs in OpenBSD 3.9 stdint.h. */ #ifdef UINT8_MAX int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1; #endif #ifdef UINT16_MAX int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1; #endif #ifdef UINT32_MAX int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1; #endif #ifdef UINT64_MAX int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1; #endif int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1; int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1; int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1; int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1; int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1; int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1; int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1; int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1; int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1; int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1; int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1; }; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on native Windows. mingw*) gl_cv_header_working_stdint_h="guessing yes" ;; # In general, assume it works. *) gl_cv_header_working_stdint_h="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #define __STDC_CONSTANT_MACROS 1 #define __STDC_LIMIT_MACROS 1 #include #include #include #if HAVE_WCHAR_H # include #endif #include #include #define MVAL(macro) MVAL1(macro) #define MVAL1(expression) #expression static const char *macro_values[] = { #ifdef INT8_MAX MVAL (INT8_MAX), #endif #ifdef INT16_MAX MVAL (INT16_MAX), #endif #ifdef INT32_MAX MVAL (INT32_MAX), #endif #ifdef INT64_MAX MVAL (INT64_MAX), #endif #ifdef UINT8_MAX MVAL (UINT8_MAX), #endif #ifdef UINT16_MAX MVAL (UINT16_MAX), #endif #ifdef UINT32_MAX MVAL (UINT32_MAX), #endif #ifdef UINT64_MAX MVAL (UINT64_MAX), #endif NULL }; int main (void) { const char **mv; for (mv = macro_values; *mv != NULL; mv++) { const char *value = *mv; /* Test whether it looks like a cast expression. */ if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0 || strncmp (value, "((unsigned short)"/*)*/, 17) == 0 || strncmp (value, "((unsigned char)"/*)*/, 16) == 0 || strncmp (value, "((int)"/*)*/, 6) == 0 || strncmp (value, "((signed short)"/*)*/, 15) == 0 || strncmp (value, "((signed char)"/*)*/, 14) == 0) return mv - macro_values + 1; } return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_header_working_stdint_h=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_stdint_h" >&5 printf "%s\n" "$gl_cv_header_working_stdint_h" >&6; } fi HAVE_C99_STDINT_H=0 HAVE_SYS_BITYPES_H=0 HAVE_SYS_INTTYPES_H=0 GL_GENERATE_STDINT_H=true case "$gl_cv_header_working_stdint_h" in *yes) HAVE_C99_STDINT_H=1 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stdint.h works without ISO C predefines" >&5 printf %s "checking whether stdint.h works without ISO C predefines... " >&6; } if test ${gl_cv_header_stdint_without_STDC_macros+y} then : printf %s "(cached) " >&6 else $as_nop gl_cv_header_stdint_without_STDC_macros=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #include #include #include #if HAVE_WCHAR_H # include #endif intmax_t im = INTMAX_MAX; int32_t i32 = INT32_C (0x7fffffff); int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_header_stdint_without_STDC_macros=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_without_STDC_macros" >&5 printf "%s\n" "$gl_cv_header_stdint_without_STDC_macros" >&6; } if test $gl_cv_header_stdint_without_STDC_macros = no; then printf "%s\n" "#define __STDC_CONSTANT_MACROS 1" >>confdefs.h printf "%s\n" "#define __STDC_LIMIT_MACROS 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stdint.h has UINTMAX_WIDTH etc." >&5 printf %s "checking whether stdint.h has UINTMAX_WIDTH etc.... " >&6; } if test ${gl_cv_header_stdint_width+y} then : printf %s "(cached) " >&6 else $as_nop gl_cv_header_stdint_width=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Work if build is not clean. */ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 #ifndef __STDC_WANT_IEC_60559_BFP_EXT__ #define __STDC_WANT_IEC_60559_BFP_EXT__ 1 #endif #include #include #include #if HAVE_WCHAR_H # include #endif int iw = UINTMAX_WIDTH; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_header_stdint_width=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_width" >&5 printf "%s\n" "$gl_cv_header_stdint_width" >&6; } if test "$gl_cv_header_stdint_width" = yes; then GL_GENERATE_STDINT_H=false fi ;; *) ac_fn_c_check_header_compile "$LINENO" "sys/inttypes.h" "ac_cv_header_sys_inttypes_h" "$ac_includes_default" if test "x$ac_cv_header_sys_inttypes_h" = xyes then : printf "%s\n" "#define HAVE_SYS_INTTYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/bitypes.h" "ac_cv_header_sys_bitypes_h" "$ac_includes_default" if test "x$ac_cv_header_sys_bitypes_h" = xyes then : printf "%s\n" "#define HAVE_SYS_BITYPES_H 1" >>confdefs.h fi if test $ac_cv_header_sys_inttypes_h = yes; then HAVE_SYS_INTTYPES_H=1 fi if test $ac_cv_header_sys_bitypes_h = yes; then HAVE_SYS_BITYPES_H=1 fi if test $APPLE_UNIVERSAL_BUILD = 0; then for gltype in ptrdiff_t size_t ; do { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5 printf %s "checking for bit size of $gltype... " >&6; } if eval test \${gl_cv_bitsizeof_${gltype}+y} then : printf %s "(cached) " >&6 else $as_nop if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" " #include #include #if HAVE_WCHAR_H # include #endif #include " then : else $as_nop result=unknown fi eval gl_cv_bitsizeof_${gltype}=\$result fi eval ac_res=\$gl_cv_bitsizeof_${gltype} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval result=\$gl_cv_bitsizeof_${gltype} if test $result = unknown; then result=0 fi GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` printf "%s\n" "#define BITSIZEOF_${GLTYPE} $result" >>confdefs.h eval BITSIZEOF_${GLTYPE}=\$result done fi for gltype in sig_atomic_t wchar_t wint_t ; do { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5 printf %s "checking for bit size of $gltype... " >&6; } if eval test \${gl_cv_bitsizeof_${gltype}+y} then : printf %s "(cached) " >&6 else $as_nop if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" " #include #include #if HAVE_WCHAR_H # include #endif #include " then : else $as_nop result=unknown fi eval gl_cv_bitsizeof_${gltype}=\$result fi eval ac_res=\$gl_cv_bitsizeof_${gltype} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval result=\$gl_cv_bitsizeof_${gltype} if test $result = unknown; then result=0 fi GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` printf "%s\n" "#define BITSIZEOF_${GLTYPE} $result" >>confdefs.h eval BITSIZEOF_${GLTYPE}=\$result done for gltype in sig_atomic_t wchar_t wint_t ; do { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5 printf %s "checking whether $gltype is signed... " >&6; } if eval test \${gl_cv_type_${gltype}_signed+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if HAVE_WCHAR_H # include #endif int verify[2 * (($gltype) -1 < ($gltype) 0) - 1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : result=yes else $as_nop result=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext eval gl_cv_type_${gltype}_signed=\$result fi eval ac_res=\$gl_cv_type_${gltype}_signed { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval result=\$gl_cv_type_${gltype}_signed GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` if test "$result" = yes; then printf "%s\n" "#define HAVE_SIGNED_${GLTYPE} 1" >>confdefs.h eval HAVE_SIGNED_${GLTYPE}=1 else eval HAVE_SIGNED_${GLTYPE}=0 fi done gl_cv_type_ptrdiff_t_signed=yes gl_cv_type_size_t_signed=no if test $APPLE_UNIVERSAL_BUILD = 0; then for gltype in ptrdiff_t size_t ; do { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5 printf %s "checking for $gltype integer literal suffix... " >&6; } if eval test \${gl_cv_type_${gltype}_suffix+y} then : printf %s "(cached) " >&6 else $as_nop eval gl_cv_type_${gltype}_suffix=no eval result=\$gl_cv_type_${gltype}_signed if test "$result" = yes; then glsufu= else glsufu=u fi for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do case $glsuf in '') gltype1='int';; l) gltype1='long int';; ll) gltype1='long long int';; i64) gltype1='__int64';; u) gltype1='unsigned int';; ul) gltype1='unsigned long int';; ull) gltype1='unsigned long long int';; ui64)gltype1='unsigned __int64';; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if HAVE_WCHAR_H # include #endif extern $gltype foo; extern $gltype1 foo; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval gl_cv_type_${gltype}_suffix=\$glsuf fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext eval result=\$gl_cv_type_${gltype}_suffix test "$result" != no && break done fi eval ac_res=\$gl_cv_type_${gltype}_suffix { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` eval result=\$gl_cv_type_${gltype}_suffix test "$result" = no && result= eval ${GLTYPE}_SUFFIX=\$result printf "%s\n" "#define ${GLTYPE}_SUFFIX $result" >>confdefs.h done fi for gltype in sig_atomic_t wchar_t wint_t ; do { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5 printf %s "checking for $gltype integer literal suffix... " >&6; } if eval test \${gl_cv_type_${gltype}_suffix+y} then : printf %s "(cached) " >&6 else $as_nop eval gl_cv_type_${gltype}_suffix=no eval result=\$gl_cv_type_${gltype}_signed if test "$result" = yes; then glsufu= else glsufu=u fi for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do case $glsuf in '') gltype1='int';; l) gltype1='long int';; ll) gltype1='long long int';; i64) gltype1='__int64';; u) gltype1='unsigned int';; ul) gltype1='unsigned long int';; ull) gltype1='unsigned long long int';; ui64)gltype1='unsigned __int64';; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if HAVE_WCHAR_H # include #endif extern $gltype foo; extern $gltype1 foo; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval gl_cv_type_${gltype}_suffix=\$glsuf fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext eval result=\$gl_cv_type_${gltype}_suffix test "$result" != no && break done fi eval ac_res=\$gl_cv_type_${gltype}_suffix { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` eval result=\$gl_cv_type_${gltype}_suffix test "$result" = no && result= eval ${GLTYPE}_SUFFIX=\$result printf "%s\n" "#define ${GLTYPE}_SUFFIX $result" >>confdefs.h done if test $GNULIBHEADERS_OVERRIDE_WINT_T = 1; then BITSIZEOF_WINT_T=32 fi ;; esac GL_GENERATE_LIMITS_H=true HAVE_DECL_IMAXABS=1; HAVE_DECL_IMAXDIV=1; HAVE_DECL_STRTOIMAX=1; HAVE_DECL_STRTOUMAX=1; HAVE_IMAXDIV_T=1; HAVE_IMAXABS=1; HAVE_IMAXDIV=1; REPLACE_IMAXABS=0; REPLACE_IMAXDIV=0; REPLACE_STRTOIMAX=0; REPLACE_STRTOUMAX=0; INT32_MAX_LT_INTMAX_MAX=1; INT64_MAX_EQ_LONG_MAX='defined _LP64'; PRIPTR_PREFIX=__PRIPTR_PREFIX; UINT32_MAX_LT_UINTMAX_MAX=1; UINT64_MAX_EQ_ULONG_MAX='defined _LP64'; if test $gl_cv_have_include_next = yes; then gl_cv_next_inttypes_h='<'inttypes.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_inttypes_h+y} then : printf %s "(cached) " >&6 else $as_nop if test $ac_cv_header_inttypes_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'inttypes.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_inttypes_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_inttypes_h gl_cv_next_inttypes_h='"'$gl_header'"' else gl_cv_next_inttypes_h='<'inttypes.h'>' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_inttypes_h" >&5 printf "%s\n" "$gl_cv_next_inttypes_h" >&6; } fi NEXT_INTTYPES_H=$gl_cv_next_inttypes_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'inttypes.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_inttypes_h fi NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H=$gl_next_as_first_directive GL_GNULIB_IMAXABS=0 GL_GNULIB_IMAXDIV=0 GL_GNULIB_STRTOIMAX=0 GL_GNULIB_STRTOUMAX=0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'double'" >&5 printf %s "checking where to find the exponent in a 'double'... " >&6; } if test ${gl_cv_cc_double_expbit0+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined arm || defined __arm || defined __arm__ mixed_endianness #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "mixed_endianness" >/dev/null 2>&1 then : gl_cv_cc_double_expbit0="unknown" else $as_nop : if test ${ac_cv_c_bigendian+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO" then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_bigendian=yes else $as_nop ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_bigendian=yes else $as_nop ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ unsigned short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; unsigned short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } unsigned short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; unsigned short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main (void) { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main (void) { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_c_bigendian=no else $as_nop ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi : case $ac_cv_c_bigendian in #( yes) gl_cv_cc_double_expbit0="word 0 bit 20";; #( no) gl_cv_cc_double_expbit0="word 1 bit 20" ;; #( universal) printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) gl_cv_cc_double_expbit0="unknown" ;; esac fi rm -rf conftest* else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #define NWORDS \ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { double value; unsigned int word[NWORDS]; } memory_double; static unsigned int ored_words[NWORDS]; static unsigned int anded_words[NWORDS]; static void add_to_ored_words (double x) { memory_double m; size_t i; /* Clear it first, in case sizeof (double) < sizeof (memory_double). */ memset (&m, 0, sizeof (memory_double)); m.value = x; for (i = 0; i < NWORDS; i++) { ored_words[i] |= m.word[i]; anded_words[i] &= m.word[i]; } } int main () { size_t j; FILE *fp = fopen ("conftest.out", "w"); if (fp == NULL) return 1; for (j = 0; j < NWORDS; j++) anded_words[j] = ~ (unsigned int) 0; add_to_ored_words (0.25); add_to_ored_words (0.5); add_to_ored_words (1.0); add_to_ored_words (2.0); add_to_ored_words (4.0); /* Remove bits that are common (e.g. if representation of the first mantissa bit is explicit). */ for (j = 0; j < NWORDS; j++) ored_words[j] &= ~anded_words[j]; /* Now find the nonzero word. */ for (j = 0; j < NWORDS; j++) if (ored_words[j] != 0) break; if (j < NWORDS) { size_t i; for (i = j + 1; i < NWORDS; i++) if (ored_words[i] != 0) { fprintf (fp, "unknown"); return (fclose (fp) != 0); } for (i = 0; ; i++) if ((ored_words[j] >> i) & 1) { fprintf (fp, "word %d bit %d", (int) j, (int) i); return (fclose (fp) != 0); } } fprintf (fp, "unknown"); return (fclose (fp) != 0); } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_cc_double_expbit0=`cat conftest.out` else $as_nop gl_cv_cc_double_expbit0="unknown" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.out fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_double_expbit0" >&5 printf "%s\n" "$gl_cv_cc_double_expbit0" >&6; } case "$gl_cv_cc_double_expbit0" in word*bit*) word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'` printf "%s\n" "#define DBL_EXPBIT0_WORD $word" >>confdefs.h printf "%s\n" "#define DBL_EXPBIT0_BIT $bit" >>confdefs.h ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'float'" >&5 printf %s "checking where to find the exponent in a 'float'... " >&6; } if test ${gl_cv_cc_float_expbit0+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : gl_cv_cc_float_expbit0="word 0 bit 23" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #define NWORDS \ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { float value; unsigned int word[NWORDS]; } memory_float; static unsigned int ored_words[NWORDS]; static unsigned int anded_words[NWORDS]; static void add_to_ored_words (float x) { memory_float m; size_t i; /* Clear it first, in case sizeof (float) < sizeof (memory_float). */ memset (&m, 0, sizeof (memory_float)); m.value = x; for (i = 0; i < NWORDS; i++) { ored_words[i] |= m.word[i]; anded_words[i] &= m.word[i]; } } int main () { size_t j; FILE *fp = fopen ("conftest.out", "w"); if (fp == NULL) return 1; for (j = 0; j < NWORDS; j++) anded_words[j] = ~ (unsigned int) 0; add_to_ored_words (0.25f); add_to_ored_words (0.5f); add_to_ored_words (1.0f); add_to_ored_words (2.0f); add_to_ored_words (4.0f); /* Remove bits that are common (e.g. if representation of the first mantissa bit is explicit). */ for (j = 0; j < NWORDS; j++) ored_words[j] &= ~anded_words[j]; /* Now find the nonzero word. */ for (j = 0; j < NWORDS; j++) if (ored_words[j] != 0) break; if (j < NWORDS) { size_t i; for (i = j + 1; i < NWORDS; i++) if (ored_words[i] != 0) { fprintf (fp, "unknown"); return (fclose (fp) != 0); } for (i = 0; ; i++) if ((ored_words[j] >> i) & 1) { fprintf (fp, "word %d bit %d", (int) j, (int) i); return (fclose (fp) != 0); } } fprintf (fp, "unknown"); return (fclose (fp) != 0); } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_cc_float_expbit0=`cat conftest.out` else $as_nop gl_cv_cc_float_expbit0="unknown" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.out fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_float_expbit0" >&5 printf "%s\n" "$gl_cv_cc_float_expbit0" >&6; } case "$gl_cv_cc_float_expbit0" in word*bit*) word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'` printf "%s\n" "#define FLT_EXPBIT0_WORD $word" >>confdefs.h printf "%s\n" "#define FLT_EXPBIT0_BIT $bit" >>confdefs.h ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 printf %s "checking whether byte ordering is bigendian... " >&6; } if test ${ac_cv_c_bigendian+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO" then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_bigendian=yes else $as_nop ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_bigendian=yes else $as_nop ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ unsigned short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; unsigned short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } unsigned short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; unsigned short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main (void) { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main (void) { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_c_bigendian=no else $as_nop ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 printf "%s\n" "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 printf %s "checking for nl_langinfo and CODESET... " >&6; } if test ${am_cv_langinfo_codeset+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { char* cs = nl_langinfo(CODESET); return !cs; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : am_cv_langinfo_codeset=yes else $as_nop am_cv_langinfo_codeset=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 printf "%s\n" "$am_cv_langinfo_codeset" >&6; } if test $am_cv_langinfo_codeset = yes; then printf "%s\n" "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h fi HAVE_NEWLOCALE=1; HAVE_DUPLOCALE=1; HAVE_FREELOCALE=1; REPLACE_LOCALECONV=0; REPLACE_SETLOCALE=0; REPLACE_NEWLOCALE=0; REPLACE_DUPLOCALE=0; REPLACE_FREELOCALE=0; REPLACE_STRUCT_LCONV=0; LOCALENAME_ENHANCE_LOCALE_FUNCS=0; REPLACE_NULL=0; HAVE_MAX_ALIGN_T=1; HAVE_WCHAR_T=1; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5 printf %s "checking for wchar_t... " >&6; } if test ${gt_cv_c_wchar_t+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include wchar_t foo = (wchar_t)'\0'; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gt_cv_c_wchar_t=yes else $as_nop gt_cv_c_wchar_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5 printf "%s\n" "$gt_cv_c_wchar_t" >&6; } if test $gt_cv_c_wchar_t = yes; then printf "%s\n" "#define HAVE_WCHAR_T 1" >>confdefs.h fi GL_GENERATE_STDDEF_H=false { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for good max_align_t" >&5 printf %s "checking for good max_align_t... " >&6; } if test ${gl_cv_type_max_align_t+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* On FreeBSD 12.0/x86, max_align_t defined by has the correct alignment with the default (wrong) definition of _Alignof, but a wrong alignment as soon as we activate an ISO C compliant _Alignof definition. */ #if ((defined __GNUC__ && 4 <= __GNUC__) || defined __clang__) && !defined __cplusplus #define _Alignof(type) __builtin_offsetof (struct { char __a; type __b; }, __b) #endif #include unsigned int s = sizeof (max_align_t); #if defined __GNUC__ || defined __clang__ || defined __IBM__ALIGNOF__ int check1[2 * (__alignof__ (double) <= __alignof__ (max_align_t)) - 1]; int check2[2 * (__alignof__ (long double) <= __alignof__ (max_align_t)) - 1]; #endif typedef struct { char a; max_align_t b; } max_helper; typedef struct { char a; long b; } long_helper; typedef struct { char a; double b; } double_helper; typedef struct { char a; long double b; } long_double_helper; int check3[2 * (offsetof (long_helper, b) <= offsetof (max_helper, b)) - 1]; int check4[2 * (offsetof (double_helper, b) <= offsetof (max_helper, b)) - 1]; int check5[2 * (offsetof (long_double_helper, b) <= offsetof (max_helper, b)) - 1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_type_max_align_t=yes else $as_nop gl_cv_type_max_align_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_max_align_t" >&5 printf "%s\n" "$gl_cv_type_max_align_t" >&6; } if test $gl_cv_type_max_align_t = no; then HAVE_MAX_ALIGN_T=0 GL_GENERATE_STDDEF_H=true fi if test $gt_cv_c_wchar_t = no; then HAVE_WCHAR_T=0 GL_GENERATE_STDDEF_H=true fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5 printf %s "checking whether NULL can be used in arbitrary expressions... " >&6; } if test ${gl_cv_decl_null_works+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int test[2 * (sizeof NULL == sizeof (void *)) -1]; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_decl_null_works=yes else $as_nop gl_cv_decl_null_works=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5 printf "%s\n" "$gl_cv_decl_null_works" >&6; } if test $gl_cv_decl_null_works = no; then REPLACE_NULL=1 GL_GENERATE_STDDEF_H=true fi if $GL_GENERATE_STDDEF_H; then if test $gl_cv_have_include_next = yes; then gl_cv_next_stddef_h='<'stddef.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_stddef_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stddef.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_stddef_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_stddef_h gl_cv_next_stddef_h='"'$gl_header'"' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5 printf "%s\n" "$gl_cv_next_stddef_h" >&6; } fi NEXT_STDDEF_H=$gl_cv_next_stddef_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stddef.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stddef_h fi NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether locale.h defines locale_t" >&5 printf %s "checking whether locale.h defines locale_t... " >&6; } if test ${gl_cv_header_locale_has_locale_t+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include locale_t x; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_header_locale_has_locale_t=yes else $as_nop gl_cv_header_locale_has_locale_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_locale_has_locale_t" >&5 printf "%s\n" "$gl_cv_header_locale_has_locale_t" >&6; } if test $ac_cv_header_xlocale_h = yes; then HAVE_XLOCALE_H=1 if test $gl_cv_header_locale_has_locale_t = yes; then gl_cv_header_locale_h_needs_xlocale_h=no else gl_cv_header_locale_h_needs_xlocale_h=yes fi HAVE_LOCALE_T=1 else HAVE_XLOCALE_H=0 gl_cv_header_locale_h_needs_xlocale_h=no if test $gl_cv_header_locale_has_locale_t = yes; then HAVE_LOCALE_T=1 else HAVE_LOCALE_T=0 fi fi case "$host_os" in solaris*) printf "%s\n" "#define _LCONV_C99 1" >>confdefs.h ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether locale.h conforms to POSIX:2001" >&5 printf %s "checking whether locale.h conforms to POSIX:2001... " >&6; } if test ${gl_cv_header_locale_h_posix2001+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int x = LC_MESSAGES; int y = sizeof (((struct lconv *) 0)->decimal_point); int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_header_locale_h_posix2001=yes else $as_nop gl_cv_header_locale_h_posix2001=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_locale_h_posix2001" >&5 printf "%s\n" "$gl_cv_header_locale_h_posix2001" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct lconv is properly defined" >&5 printf %s "checking whether struct lconv is properly defined... " >&6; } if test ${gl_cv_sys_struct_lconv_ok+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include struct lconv l; int x = sizeof (l.decimal_point); int y = sizeof (l.int_p_cs_precedes); int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_sys_struct_lconv_ok=yes else $as_nop gl_cv_sys_struct_lconv_ok=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_lconv_ok" >&5 printf "%s\n" "$gl_cv_sys_struct_lconv_ok" >&6; } if test $gl_cv_sys_struct_lconv_ok = no; then case "$host_os" in mingw*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _MSC_VER Special #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Special" >/dev/null 2>&1 then : else $as_nop REPLACE_STRUCT_LCONV=1 fi rm -rf conftest* ;; *) REPLACE_STRUCT_LCONV=1 ;; esac fi if test $gl_cv_have_include_next = yes; then gl_cv_next_locale_h='<'locale.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_locale_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'locale.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_locale_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_locale_h gl_cv_next_locale_h='"'$gl_header'"' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_locale_h" >&5 printf "%s\n" "$gl_cv_next_locale_h" >&6; } fi NEXT_LOCALE_H=$gl_cv_next_locale_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'locale.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_locale_h fi NEXT_AS_FIRST_DIRECTIVE_LOCALE_H=$gl_next_as_first_directive GL_GNULIB_LOCALECONV=0 GL_GNULIB_SETLOCALE=0 GL_GNULIB_SETLOCALE_NULL=0 GL_GNULIB_DUPLOCALE=0 GL_GNULIB_LOCALENAME=0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether malloc (0) returns nonnull" >&5 printf %s "checking whether malloc (0) returns nonnull... " >&6; } if test ${ac_cv_func_malloc_0_nonnull+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \ | gnu* | *-musl* | midnightbsd* \ | hpux* | solaris* | cygwin* | mingw* | msys* ) ac_cv_func_malloc_0_nonnull="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) ac_cv_func_malloc_0_nonnull="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { void *p = malloc (0); int result = !p; free (p); return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_malloc_0_nonnull=yes else $as_nop ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 printf "%s\n" "$ac_cv_func_malloc_0_nonnull" >&6; } case $ac_cv_func_malloc_0_nonnull in #( *yes) : gl_cv_func_malloc_0_nonnull=1 ;; #( *) : gl_cv_func_malloc_0_nonnull=0 ;; esac printf "%s\n" "#define MALLOC_0_IS_NONNULL $gl_cv_func_malloc_0_nonnull" >>confdefs.h if test $gl_cv_have_include_next = yes; then gl_cv_next_math_h='<'math.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_math_h+y} then : printf %s "(cached) " >&6 else $as_nop if test $ac_cv_header_math_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'math.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_math_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_math_h gl_cv_next_math_h='"'$gl_header'"' else gl_cv_next_math_h='<'math.h'>' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_math_h" >&5 printf "%s\n" "$gl_cv_next_math_h" >&6; } fi NEXT_MATH_H=$gl_cv_next_math_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'math.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_math_h fi NEXT_AS_FIRST_DIRECTIVE_MATH_H=$gl_next_as_first_directive { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NAN macro works" >&5 printf %s "checking whether NAN macro works... " >&6; } if test ${gl_cv_header_math_nan_works+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { /* Solaris 10 has a broken definition of NAN. Other platforms fail to provide NAN, or provide it only in C99 mode; this test only needs to fail when NAN is provided but wrong. */ float f = 1.0f; #ifdef NAN f = NAN; #endif return f == 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_header_math_nan_works=yes else $as_nop gl_cv_header_math_nan_works=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_math_nan_works" >&5 printf "%s\n" "$gl_cv_header_math_nan_works" >&6; } if test $gl_cv_header_math_nan_works = no; then REPLACE_NAN=1 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether HUGE_VAL works" >&5 printf %s "checking whether HUGE_VAL works... " >&6; } if test ${gl_cv_header_math_huge_val_works+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { /* Solaris 10 has a broken definition of HUGE_VAL. */ double d = HUGE_VAL; return d == 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_header_math_huge_val_works=yes else $as_nop gl_cv_header_math_huge_val_works=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_math_huge_val_works" >&5 printf "%s\n" "$gl_cv_header_math_huge_val_works" >&6; } if test $gl_cv_header_math_huge_val_works = no; then REPLACE_HUGE_VAL=1 fi HAVE_BTOWC=1; HAVE_MBSINIT=1; HAVE_MBRTOWC=1; HAVE_MBRLEN=1; HAVE_MBSRTOWCS=1; HAVE_MBSNRTOWCS=1; HAVE_WCRTOMB=1; HAVE_WCSRTOMBS=1; HAVE_WCSNRTOMBS=1; HAVE_WMEMCHR=1; HAVE_WMEMCMP=1; HAVE_WMEMCPY=1; HAVE_WMEMMOVE=1; HAVE_WMEMPCPY=1; HAVE_WMEMSET=1; HAVE_WCSLEN=1; HAVE_WCSNLEN=1; HAVE_WCSCPY=1; HAVE_WCPCPY=1; HAVE_WCSNCPY=1; HAVE_WCPNCPY=1; HAVE_WCSCAT=1; HAVE_WCSNCAT=1; HAVE_WCSCMP=1; HAVE_WCSNCMP=1; HAVE_WCSCASECMP=1; HAVE_WCSNCASECMP=1; HAVE_WCSCOLL=1; HAVE_WCSXFRM=1; HAVE_WCSDUP=1; HAVE_WCSCHR=1; HAVE_WCSRCHR=1; HAVE_WCSCSPN=1; HAVE_WCSSPN=1; HAVE_WCSPBRK=1; HAVE_WCSSTR=1; HAVE_WCSTOK=1; HAVE_WCSWIDTH=1; HAVE_WCSFTIME=1; HAVE_DECL_WCTOB=1; HAVE_DECL_WCSDUP=1; HAVE_DECL_WCWIDTH=1; REPLACE_MBSTATE_T=0; REPLACE_BTOWC=0; REPLACE_WCTOB=0; REPLACE_MBSINIT=0; REPLACE_MBRTOWC=0; REPLACE_MBRLEN=0; REPLACE_MBSRTOWCS=0; REPLACE_MBSNRTOWCS=0; REPLACE_WCRTOMB=0; REPLACE_WCSRTOMBS=0; REPLACE_WCSNRTOMBS=0; REPLACE_WCWIDTH=0; REPLACE_WCSWIDTH=0; REPLACE_WCSFTIME=0; REPLACE_WCSTOK=0; REPLACE_WMEMPCPY=0; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mbstate_t" >&5 printf %s "checking for mbstate_t... " >&6; } if test ${ac_cv_type_mbstate_t+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default #include int main (void) { mbstate_t x; return sizeof x; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_type_mbstate_t=yes else $as_nop ac_cv_type_mbstate_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_mbstate_t" >&5 printf "%s\n" "$ac_cv_type_mbstate_t" >&6; } if test $ac_cv_type_mbstate_t = yes; then printf "%s\n" "#define HAVE_MBSTATE_T 1" >>confdefs.h else printf "%s\n" "#define mbstate_t int" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a traditional japanese locale" >&5 printf %s "checking for a traditional japanese locale... " >&6; } if test ${gt_cv_locale_ja+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if HAVE_LANGINFO_CODESET # include #endif #include #include struct tm t; char buf[16]; int main () { /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl imitates locale dependent behaviour by looking at the environment variables, and all locales use the UTF-8 encoding. */ #if defined __BEOS__ || defined __HAIKU__ return 1; #else /* Check whether the given locale name is recognized by the system. */ # if defined _WIN32 && !defined __CYGWIN__ /* On native Windows, setlocale(category, "") looks at the system settings, not at the environment variables. Also, when an encoding suffix such as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE category of the locale to "C". */ if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) return 1; # else if (setlocale (LC_ALL, "") == NULL) return 1; # endif /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) is empty, and the behaviour of Tcl 8.4 in this locale is not useful. On OpenBSD 4.0, when an unsupported locale is specified, setlocale() succeeds but then nl_langinfo(CODESET) is "646". In this situation, some unit tests fail. On MirBSD 10, when an unsupported locale is specified, setlocale() succeeds but then nl_langinfo(CODESET) is "UTF-8". */ # if HAVE_LANGINFO_CODESET { const char *cs = nl_langinfo (CODESET); if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0 || strcmp (cs, "UTF-8") == 0) return 1; } # endif # ifdef __CYGWIN__ /* On Cygwin, avoid locale names without encoding suffix, because the locale_charset() function relies on the encoding suffix. Note that LC_ALL is set on the command line. */ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; # endif /* Check whether MB_CUR_MAX is > 1. This excludes the dysfunctional locales on Cygwin 1.5.x. */ if (MB_CUR_MAX == 1) return 1; /* Check whether in a month name, no byte in the range 0x80..0x9F occurs. This excludes the UTF-8 encoding (except on MirBSD). */ { const char *p; t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1; for (p = buf; *p != '\0'; p++) if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0) return 1; } return 0; #endif } _ACEOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then case "$host_os" in # Handle native Windows specially, because there setlocale() interprets # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256", # "fr" or "fra" as "French" or "French_France.1252", # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", # "ja" as "Japanese" or "Japanese_Japan.932", # and similar. mingw*) # Note that on native Windows, the Japanese locale is # Japanese_Japan.932, and CP932 is very different from EUC-JP, so we # cannot use it here. gt_cv_locale_ja=none ;; *) # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the # configure script would override the LC_ALL setting. Likewise for # LC_CTYPE, which is also set at the beginning of the configure script. # Test for the AIX locale name. if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_ja=ja_JP else # Test for the locale name with explicit encoding suffix. if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_ja=ja_JP.EUC-JP else # Test for the HP-UX, OSF/1, NetBSD locale name. if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_ja=ja_JP.eucJP else # Test for the IRIX, FreeBSD locale name. if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_ja=ja_JP.EUC else # Test for the Solaris 7 locale name. if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_ja=ja else # Special test for NetBSD 1.6. if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then gt_cv_locale_ja=ja_JP.eucJP else # None found. gt_cv_locale_ja=none fi fi fi fi fi fi ;; esac fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_ja" >&5 printf "%s\n" "$gt_cv_locale_ja" >&6; } LOCALE_JA=$gt_cv_locale_ja { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a french Unicode locale" >&5 printf %s "checking for a french Unicode locale... " >&6; } if test ${gt_cv_locale_fr_utf8+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if HAVE_LANGINFO_CODESET # include #endif #include #include struct tm t; char buf[16]; int main () { /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl imitates locale dependent behaviour by looking at the environment variables, and all locales use the UTF-8 encoding. */ #if !(defined __BEOS__ || defined __HAIKU__) /* Check whether the given locale name is recognized by the system. */ # if defined _WIN32 && !defined __CYGWIN__ /* On native Windows, setlocale(category, "") looks at the system settings, not at the environment variables. Also, when an encoding suffix such as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE category of the locale to "C". */ if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) return 1; # else if (setlocale (LC_ALL, "") == NULL) return 1; # endif /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) is empty, and the behaviour of Tcl 8.4 in this locale is not useful. On OpenBSD 4.0, when an unsupported locale is specified, setlocale() succeeds but then nl_langinfo(CODESET) is "646". In this situation, some unit tests fail. */ # if HAVE_LANGINFO_CODESET { const char *cs = nl_langinfo (CODESET); if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0) return 1; } # endif # ifdef __CYGWIN__ /* On Cygwin, avoid locale names without encoding suffix, because the locale_charset() function relies on the encoding suffix. Note that LC_ALL is set on the command line. */ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; # endif /* Check whether in the abbreviation of the second month, the second character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is two bytes long, with UTF-8 encoding. */ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; if (strftime (buf, sizeof (buf), "%b", &t) < 4 || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v') return 1; #endif #if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */ /* Check whether the decimal separator is a comma. On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point are nl_langinfo(RADIXCHAR) are both ".". */ if (localeconv () ->decimal_point[0] != ',') return 1; #endif return 0; } _ACEOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then case "$host_os" in # Handle native Windows specially, because there setlocale() interprets # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256", # "fr" or "fra" as "French" or "French_France.1252", # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", # "ja" as "Japanese" or "Japanese_Japan.932", # and similar. mingw*) # Test for the hypothetical native Windows locale name. if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr_utf8=French_France.65001 else # None found. gt_cv_locale_fr_utf8=none fi ;; *) # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the # configure script would override the LC_ALL setting. Likewise for # LC_CTYPE, which is also set at the beginning of the configure script. # Test for the usual locale name. if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr_utf8=fr_FR else # Test for the locale name with explicit encoding suffix. if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr_utf8=fr_FR.UTF-8 else # Test for the Solaris 7 locale name. if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr_utf8=fr.UTF-8 else # None found. gt_cv_locale_fr_utf8=none fi fi fi ;; esac fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr_utf8" >&5 printf "%s\n" "$gt_cv_locale_fr_utf8" >&6; } LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a transitional chinese locale" >&5 printf %s "checking for a transitional chinese locale... " >&6; } if test ${gt_cv_locale_zh_CN+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #if HAVE_LANGINFO_CODESET # include #endif #include #include struct tm t; char buf[16]; int main () { /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl imitates locale dependent behaviour by looking at the environment variables, and all locales use the UTF-8 encoding. */ #if defined __BEOS__ || defined __HAIKU__ return 1; #else /* Check whether the given locale name is recognized by the system. */ # if defined _WIN32 && !defined __CYGWIN__ /* On native Windows, setlocale(category, "") looks at the system settings, not at the environment variables. Also, when an encoding suffix such as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE category of the locale to "C". */ if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) return 1; # else if (setlocale (LC_ALL, "") == NULL) return 1; # endif /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) is empty, and the behaviour of Tcl 8.4 in this locale is not useful. On OpenBSD 4.0, when an unsupported locale is specified, setlocale() succeeds but then nl_langinfo(CODESET) is "646". In this situation, some unit tests fail. On MirBSD 10, when an unsupported locale is specified, setlocale() succeeds but then nl_langinfo(CODESET) is "UTF-8". */ # if HAVE_LANGINFO_CODESET { const char *cs = nl_langinfo (CODESET); if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0 || strcmp (cs, "UTF-8") == 0) return 1; } # endif # ifdef __CYGWIN__ /* On Cygwin, avoid locale names without encoding suffix, because the locale_charset() function relies on the encoding suffix. Note that LC_ALL is set on the command line. */ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; # endif /* Check whether in a month name, no byte in the range 0x80..0x9F occurs. This excludes the UTF-8 encoding (except on MirBSD). */ { const char *p; t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1; for (p = buf; *p != '\0'; p++) if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0) return 1; } /* Check whether a typical GB18030 multibyte sequence is recognized as a single wide character. This excludes the GB2312 and GBK encodings. */ if (mblen ("\203\062\332\066", 5) != 4) return 1; return 0; #endif } _ACEOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then case "$host_os" in # Handle native Windows specially, because there setlocale() interprets # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256", # "fr" or "fra" as "French" or "French_France.1252", # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", # "ja" as "Japanese" or "Japanese_Japan.932", # and similar. mingw*) # Test for the hypothetical native Windows locale name. if (LC_ALL=Chinese_China.54936 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_zh_CN=Chinese_China.54936 else # None found. gt_cv_locale_zh_CN=none fi ;; solaris2.8) # On Solaris 8, the locales zh_CN.GB18030, zh_CN.GBK, zh.GBK are # broken. One witness is the test case in gl_MBRTOWC_SANITYCHECK. # Another witness is that "LC_ALL=zh_CN.GB18030 bash -c true" dumps core. gt_cv_locale_zh_CN=none ;; *) # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the # configure script would override the LC_ALL setting. Likewise for # LC_CTYPE, which is also set at the beginning of the configure script. # Test for the locale name without encoding suffix. if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_zh_CN=zh_CN else # Test for the locale name with explicit encoding suffix. if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_zh_CN=zh_CN.GB18030 else # None found. gt_cv_locale_zh_CN=none fi fi ;; esac else # If there was a link error, due to mblen(), the system is so old that # it certainly doesn't have a chinese locale. gt_cv_locale_zh_CN=none fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_zh_CN" >&5 printf "%s\n" "$gt_cv_locale_zh_CN" >&6; } LOCALE_ZH_CN=$gt_cv_locale_zh_CN { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 printf %s "checking for inline... " >&6; } if test ${ac_cv_c_inline+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo (void) {return 0; } $ac_kw foo_t foo (void) {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 printf "%s\n" "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac GL_GNULIB_BTOWC=0 GL_GNULIB_WCTOB=0 GL_GNULIB_MBSINIT=0 GL_GNULIB_MBRTOWC=0 GL_GNULIB_MBRLEN=0 GL_GNULIB_MBSRTOWCS=0 GL_GNULIB_MBSNRTOWCS=0 GL_GNULIB_WCRTOMB=0 GL_GNULIB_WCSRTOMBS=0 GL_GNULIB_WCSNRTOMBS=0 GL_GNULIB_WCWIDTH=0 GL_GNULIB_WMEMCHR=0 GL_GNULIB_WMEMCMP=0 GL_GNULIB_WMEMCPY=0 GL_GNULIB_WMEMMOVE=0 GL_GNULIB_WMEMPCPY=0 GL_GNULIB_WMEMSET=0 GL_GNULIB_WCSLEN=0 GL_GNULIB_WCSNLEN=0 GL_GNULIB_WCSCPY=0 GL_GNULIB_WCPCPY=0 GL_GNULIB_WCSNCPY=0 GL_GNULIB_WCPNCPY=0 GL_GNULIB_WCSCAT=0 GL_GNULIB_WCSNCAT=0 GL_GNULIB_WCSCMP=0 GL_GNULIB_WCSNCMP=0 GL_GNULIB_WCSCASECMP=0 GL_GNULIB_WCSNCASECMP=0 GL_GNULIB_WCSCOLL=0 GL_GNULIB_WCSXFRM=0 GL_GNULIB_WCSDUP=0 GL_GNULIB_WCSCHR=0 GL_GNULIB_WCSRCHR=0 GL_GNULIB_WCSCSPN=0 GL_GNULIB_WCSSPN=0 GL_GNULIB_WCSPBRK=0 GL_GNULIB_WCSSTR=0 GL_GNULIB_WCSTOK=0 GL_GNULIB_WCSWIDTH=0 GL_GNULIB_WCSFTIME=0 GL_GNULIB_MDA_WCSDUP=1 # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is # irrelevant for anonymous mappings. ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap" if test "x$ac_cv_func_mmap" = xyes then : gl_have_mmap=yes else $as_nop gl_have_mmap=no fi # Try to allow MAP_ANONYMOUS. gl_have_mmap_anonymous=no if test $gl_have_mmap = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MAP_ANONYMOUS" >&5 printf %s "checking for MAP_ANONYMOUS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef MAP_ANONYMOUS I cannot identify this map #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "I cannot identify this map" >/dev/null 2>&1 then : gl_have_mmap_anonymous=yes fi rm -rf conftest* if test $gl_have_mmap_anonymous != yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef MAP_ANON I cannot identify this map #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "I cannot identify this map" >/dev/null 2>&1 then : printf "%s\n" "#define MAP_ANONYMOUS MAP_ANON" >>confdefs.h gl_have_mmap_anonymous=yes fi rm -rf conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_have_mmap_anonymous" >&5 printf "%s\n" "$gl_have_mmap_anonymous" >&6; } if test $gl_have_mmap_anonymous = yes; then printf "%s\n" "#define HAVE_MAP_ANONYMOUS 1" >>confdefs.h fi fi HAVE_MBSLEN=0; HAVE_EXPLICIT_BZERO=1; HAVE_FFSL=1; HAVE_FFSLL=1; HAVE_DECL_MEMMEM=1; HAVE_MEMPCPY=1; HAVE_MEMSET_EXPLICIT=1; HAVE_DECL_MEMRCHR=1; HAVE_RAWMEMCHR=1; HAVE_STPCPY=1; HAVE_STPNCPY=1; HAVE_STRCHRNUL=1; HAVE_DECL_STRDUP=1; HAVE_DECL_STRNDUP=1; HAVE_DECL_STRNLEN=1; HAVE_STRPBRK=1; HAVE_STRSEP=1; HAVE_STRCASESTR=1; HAVE_DECL_STRTOK_R=1; HAVE_DECL_STRERROR_R=1; HAVE_STRERRORNAME_NP=1; HAVE_SIGABBREV_NP=1; HAVE_SIGDESCR_NP=1; HAVE_DECL_STRSIGNAL=1; HAVE_STRVERSCMP=1; REPLACE_FFSLL=0; REPLACE_MEMCHR=0; REPLACE_MEMMEM=0; REPLACE_MEMPCPY=0; REPLACE_STPCPY=0; REPLACE_STPNCPY=0; REPLACE_STRCHRNUL=0; REPLACE_STRDUP=0; REPLACE_STRNCAT=0; REPLACE_STRNDUP=0; REPLACE_STRNLEN=0; REPLACE_STRSTR=0; REPLACE_STRCASESTR=0; REPLACE_STRTOK_R=0; REPLACE_STRERROR=0; REPLACE_STRERROR_R=0; REPLACE_STRERRORNAME_NP=0; REPLACE_STRSIGNAL=0; UNDEFINE_STRTOK_R=0; # Detect platform-specific bugs in some versions of glibc: # memchr should not dereference anything with length 0 # https://bugzilla.redhat.com/show_bug.cgi?id=499689 # memchr should not dereference overestimated length after a match # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737 # https://sourceware.org/bugzilla/show_bug.cgi?id=10162 # memchr should cast the second argument to 'unsigned char'. # This bug exists in Android 4.3. # Assume that memchr works on platforms that lack mprotect. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether memchr works" >&5 printf %s "checking whether memchr works... " >&6; } if test ${gl_cv_func_memchr_works+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess no on Android. linux*-android*) gl_cv_func_memchr_works="guessing no" ;; # Guess yes on native Windows. mingw*) gl_cv_func_memchr_works="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_memchr_works="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if HAVE_SYS_MMAN_H # include # include # include # include # ifndef MAP_FILE # define MAP_FILE 0 # endif #endif int main (void) { int result = 0; char *fence = NULL; #if HAVE_SYS_MMAN_H && HAVE_MPROTECT # if HAVE_MAP_ANONYMOUS const int flags = MAP_ANONYMOUS | MAP_PRIVATE; const int fd = -1; # else /* !HAVE_MAP_ANONYMOUS */ const int flags = MAP_FILE | MAP_PRIVATE; int fd = open ("/dev/zero", O_RDONLY, 0666); if (fd >= 0) # endif { int pagesize = getpagesize (); char *two_pages = (char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE, flags, fd, 0); if (two_pages != (char *)(-1) && mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0) fence = two_pages + pagesize; } #endif if (fence) { /* Test against bugs on glibc systems. */ if (memchr (fence, 0, 0)) result |= 1; strcpy (fence - 9, "12345678"); if (memchr (fence - 9, 0, 79) != fence - 1) result |= 2; if (memchr (fence - 1, 0, 3) != fence - 1) result |= 4; /* Test against bug on AIX 7.2. */ if (memchr (fence - 4, '6', 16) != fence - 4) result |= 8; } /* Test against bug on Android 4.3. */ { char input[3]; input[0] = 'a'; input[1] = 'b'; input[2] = 'c'; if (memchr (input, 0x789abc00 | 'b', 3) != input + 1) result |= 16; } return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_memchr_works=yes else $as_nop gl_cv_func_memchr_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_memchr_works" >&5 printf "%s\n" "$gl_cv_func_memchr_works" >&6; } case "$gl_cv_func_memchr_works" in *yes) ;; *) REPLACE_MEMCHR=1 ;; esac GL_GNULIB_EXPLICIT_BZERO=0 GL_GNULIB_FFSL=0 GL_GNULIB_FFSLL=0 GL_GNULIB_MEMCHR=0 GL_GNULIB_MEMMEM=0 GL_GNULIB_MEMPCPY=0 GL_GNULIB_MEMRCHR=0 GL_GNULIB_MEMSET_EXPLICIT=0 GL_GNULIB_RAWMEMCHR=0 GL_GNULIB_STPCPY=0 GL_GNULIB_STPNCPY=0 GL_GNULIB_STRCHRNUL=0 GL_GNULIB_STRDUP=0 GL_GNULIB_STRNCAT=0 GL_GNULIB_STRNDUP=0 GL_GNULIB_STRNLEN=0 GL_GNULIB_STRPBRK=0 GL_GNULIB_STRSEP=0 GL_GNULIB_STRSTR=0 GL_GNULIB_STRCASESTR=0 GL_GNULIB_STRTOK_R=0 GL_GNULIB_MBSLEN=0 GL_GNULIB_MBSNLEN=0 GL_GNULIB_MBSCHR=0 GL_GNULIB_MBSRCHR=0 GL_GNULIB_MBSSTR=0 GL_GNULIB_MBSCASECMP=0 GL_GNULIB_MBSNCASECMP=0 GL_GNULIB_MBSPCASECMP=0 GL_GNULIB_MBSCASESTR=0 GL_GNULIB_MBSCSPN=0 GL_GNULIB_MBSPBRK=0 GL_GNULIB_MBSSPN=0 GL_GNULIB_MBSSEP=0 GL_GNULIB_MBSTOK_R=0 GL_GNULIB_STRERROR=0 GL_GNULIB_STRERROR_R=0 GL_GNULIB_STRERRORNAME_NP=0 GL_GNULIB_SIGABBREV_NP=0 GL_GNULIB_SIGDESCR_NP=0 GL_GNULIB_STRSIGNAL=0 GL_GNULIB_STRVERSCMP=0 GL_GNULIB_MDA_MEMCCPY=1 GL_GNULIB_MDA_STRDUP=1 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether defines MIN and MAX" >&5 printf %s "checking whether defines MIN and MAX... " >&6; } if test ${gl_cv_minmax_in_limits_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int x = MIN (42, 17); int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_minmax_in_limits_h=yes else $as_nop gl_cv_minmax_in_limits_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_minmax_in_limits_h" >&5 printf "%s\n" "$gl_cv_minmax_in_limits_h" >&6; } if test $gl_cv_minmax_in_limits_h = yes; then printf "%s\n" "#define HAVE_MINMAX_IN_LIMITS_H 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether defines MIN and MAX" >&5 printf %s "checking whether defines MIN and MAX... " >&6; } if test ${gl_cv_minmax_in_sys_param_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int x = MIN (42, 17); int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_minmax_in_sys_param_h=yes else $as_nop gl_cv_minmax_in_sys_param_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_minmax_in_sys_param_h" >&5 printf "%s\n" "$gl_cv_minmax_in_sys_param_h" >&6; } if test $gl_cv_minmax_in_sys_param_h = yes; then printf "%s\n" "#define HAVE_MINMAX_IN_SYS_PARAM_H 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for O_CLOEXEC" >&5 printf %s "checking for O_CLOEXEC... " >&6; } if test ${gl_cv_macro_O_CLOEXEC+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef O_CLOEXEC choke me; #endif int main (void) { return O_CLOEXEC; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_macro_O_CLOEXEC=yes else $as_nop gl_cv_macro_O_CLOEXEC=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_macro_O_CLOEXEC" >&5 printf "%s\n" "$gl_cv_macro_O_CLOEXEC" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for promoted mode_t type" >&5 printf %s "checking for promoted mode_t type... " >&6; } if test ${gl_cv_promoted_mode_t+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { typedef int array[2 * (sizeof (mode_t) < sizeof (int)) - 1]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_promoted_mode_t='int' else $as_nop gl_cv_promoted_mode_t='mode_t' fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_promoted_mode_t" >&5 printf "%s\n" "$gl_cv_promoted_mode_t" >&6; } printf "%s\n" "#define PROMOTED_MODE_T $gl_cv_promoted_mode_t" >>confdefs.h HAVE_POSIX_SIGNALBLOCKING=1; HAVE_PTHREAD_SIGMASK=1; HAVE_RAISE=1; HAVE_SIGSET_T=1; HAVE_SIGINFO_T=1; HAVE_SIGACTION=1; HAVE_STRUCT_SIGACTION_SA_SIGACTION=1; HAVE_TYPE_VOLATILE_SIG_ATOMIC_T=1; HAVE_SIGHANDLER_T=1; REPLACE_PTHREAD_SIGMASK=0; REPLACE_RAISE=0; ac_fn_c_check_type "$LINENO" "sigset_t" "ac_cv_type_sigset_t" " #include /* Mingw defines sigset_t not in , but in . */ #include " if test "x$ac_cv_type_sigset_t" = xyes then : printf "%s\n" "#define HAVE_SIGSET_T 1" >>confdefs.h gl_cv_type_sigset_t=yes else $as_nop gl_cv_type_sigset_t=no fi if test $gl_cv_type_sigset_t != yes; then HAVE_SIGSET_T=0 fi GL_GNULIB_PTHREAD_SIGMASK=0 GL_GNULIB_RAISE=0 GL_GNULIB_SIGNAL_H_SIGPIPE=0 GL_GNULIB_SIGPROCMASK=0 GL_GNULIB_SIGACTION=0 if test $REPLACE_MALLOC_FOR_MALLOC_POSIX = 1; then REPLACE_REALLOC_FOR_REALLOC_POSIX=1 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 printf %s "checking for uid_t in sys/types.h... " >&6; } if test ${ac_cv_type_uid_t+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "uid_t" >/dev/null 2>&1 then : ac_cv_type_uid_t=yes else $as_nop ac_cv_type_uid_t=no fi rm -rf conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 printf "%s\n" "$ac_cv_type_uid_t" >&6; } if test $ac_cv_type_uid_t = no; then printf "%s\n" "#define uid_t int" >>confdefs.h printf "%s\n" "#define gid_t int" >>confdefs.h fi : if test $gl_cv_have_include_next = yes; then gl_cv_next_signal_h='<'signal.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_signal_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'signal.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_signal_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_signal_h gl_cv_next_signal_h='"'$gl_header'"' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_signal_h" >&5 printf "%s\n" "$gl_cv_next_signal_h" >&6; } fi NEXT_SIGNAL_H=$gl_cv_next_signal_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'signal.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_signal_h fi NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H=$gl_next_as_first_directive # AIX declares sig_atomic_t to already include volatile, and C89 compilers # then choke on 'volatile sig_atomic_t'. C99 requires that it compile. ac_fn_c_check_type "$LINENO" "volatile sig_atomic_t" "ac_cv_type_volatile_sig_atomic_t" " #include " if test "x$ac_cv_type_volatile_sig_atomic_t" = xyes then : else $as_nop HAVE_TYPE_VOLATILE_SIG_ATOMIC_T=0 fi ac_fn_c_check_type "$LINENO" "sighandler_t" "ac_cv_type_sighandler_t" " #include " if test "x$ac_cv_type_sighandler_t" = xyes then : else $as_nop HAVE_SIGHANDLER_T=0 fi HAVE_DECL_FCLOSEALL=1; HAVE_DECL_FPURGE=1; HAVE_DECL_FSEEKO=1; HAVE_DECL_FTELLO=1; HAVE_DECL_GETDELIM=1; HAVE_DECL_GETLINE=1; HAVE_DECL_GETW=1; HAVE_DECL_OBSTACK_PRINTF=1; HAVE_DECL_PUTW=1; HAVE_DECL_SNPRINTF=1; HAVE_DECL_VSNPRINTF=1; HAVE_DPRINTF=1; HAVE_FSEEKO=1; HAVE_FTELLO=1; HAVE_PCLOSE=1; HAVE_POPEN=1; HAVE_RENAMEAT=1; HAVE_VASPRINTF=1; HAVE_VDPRINTF=1; REPLACE_DPRINTF=0; REPLACE_FCLOSE=0; REPLACE_FDOPEN=0; REPLACE_FFLUSH=0; REPLACE_FOPEN=0; REPLACE_FOPEN_FOR_FOPEN_GNU=0; REPLACE_FPRINTF=0; REPLACE_FPURGE=0; REPLACE_FREOPEN=0; REPLACE_FSEEK=0; REPLACE_FSEEKO=0; REPLACE_FTELL=0; REPLACE_FTELLO=0; REPLACE_GETDELIM=0; REPLACE_GETLINE=0; REPLACE_OBSTACK_PRINTF=0; REPLACE_PERROR=0; REPLACE_POPEN=0; REPLACE_PRINTF=0; REPLACE_REMOVE=0; REPLACE_RENAME=0; REPLACE_RENAMEAT=0; REPLACE_SNPRINTF=0; REPLACE_SPRINTF=0; REPLACE_STDIO_READ_FUNCS=0; REPLACE_STDIO_WRITE_FUNCS=0; REPLACE_TMPFILE=0; REPLACE_VASPRINTF=0; REPLACE_VDPRINTF=0; REPLACE_VFPRINTF=0; REPLACE_VPRINTF=0; REPLACE_VSNPRINTF=0; REPLACE_VSPRINTF=0; ac_fn_check_decl "$LINENO" "fcloseall" "ac_cv_have_decl_fcloseall" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_fcloseall" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_FCLOSEALL $ac_have_decl" >>confdefs.h ac_fn_check_decl "$LINENO" "getw" "ac_cv_have_decl_getw" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_getw" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_GETW $ac_have_decl" >>confdefs.h ac_fn_check_decl "$LINENO" "putw" "ac_cv_have_decl_putw" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_putw" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_PUTW $ac_have_decl" >>confdefs.h printf "%s\n" "#define __USE_MINGW_ANSI_STDIO 1" >>confdefs.h if test $gl_cv_have_include_next = yes; then gl_cv_next_stdio_h='<'stdio.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_stdio_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stdio.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_stdio_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_stdio_h gl_cv_next_stdio_h='"'$gl_header'"' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdio_h" >&5 printf "%s\n" "$gl_cv_next_stdio_h" >&6; } fi NEXT_STDIO_H=$gl_cv_next_stdio_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stdio.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stdio_h fi NEXT_AS_FIRST_DIRECTIVE_STDIO_H=$gl_next_as_first_directive { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which flavor of printf attribute matches inttypes macros" >&5 printf %s "checking which flavor of printf attribute matches inttypes macros... " >&6; } if test ${gl_cv_func_printf_attribute_flavor+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define __STDC_FORMAT_MACROS 1 #include #include /* For non-mingw systems, compilation will trivially succeed. For mingw, compilation will succeed for older mingw (system printf, "I64d") and fail for newer mingw (gnu printf, "lld"). */ #if (defined _WIN32 && ! defined __CYGWIN__) && \ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) extern char PRIdMAX_probe[sizeof PRIdMAX == sizeof "I64d" ? 1 : -1]; #endif int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_func_printf_attribute_flavor=system else $as_nop gl_cv_func_printf_attribute_flavor=gnu fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_attribute_flavor" >&5 printf "%s\n" "$gl_cv_func_printf_attribute_flavor" >&6; } if test "$gl_cv_func_printf_attribute_flavor" = gnu; then printf "%s\n" "#define GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU 1" >>confdefs.h fi if test $ac_cv_have_decl_fcloseall = no; then HAVE_DECL_FCLOSEALL=0 fi if test $ac_cv_have_decl_getw = no; then HAVE_DECL_GETW=0 fi if test $ac_cv_have_decl_putw = no; then HAVE_DECL_PUTW=0 fi GL_GNULIB_DPRINTF=0 GL_GNULIB_FCLOSE=0 GL_GNULIB_FDOPEN=0 GL_GNULIB_FFLUSH=0 GL_GNULIB_FGETC=0 GL_GNULIB_FGETS=0 GL_GNULIB_FOPEN=0 GL_GNULIB_FOPEN_GNU=0 GL_GNULIB_FPRINTF=0 GL_GNULIB_FPRINTF_POSIX=0 GL_GNULIB_FPURGE=0 GL_GNULIB_FPUTC=0 GL_GNULIB_FPUTS=0 GL_GNULIB_FREAD=0 GL_GNULIB_FREOPEN=0 GL_GNULIB_FSCANF=0 GL_GNULIB_FSEEK=0 GL_GNULIB_FSEEKO=0 GL_GNULIB_FTELL=0 GL_GNULIB_FTELLO=0 GL_GNULIB_FWRITE=0 GL_GNULIB_GETC=0 GL_GNULIB_GETCHAR=0 GL_GNULIB_GETDELIM=0 GL_GNULIB_GETLINE=0 GL_GNULIB_OBSTACK_PRINTF=0 GL_GNULIB_OBSTACK_PRINTF_POSIX=0 GL_GNULIB_PCLOSE=0 GL_GNULIB_PERROR=0 GL_GNULIB_POPEN=0 GL_GNULIB_PRINTF=0 GL_GNULIB_PRINTF_POSIX=0 GL_GNULIB_PUTC=0 GL_GNULIB_PUTCHAR=0 GL_GNULIB_PUTS=0 GL_GNULIB_REMOVE=0 GL_GNULIB_RENAME=0 GL_GNULIB_RENAMEAT=0 GL_GNULIB_SCANF=0 GL_GNULIB_SNPRINTF=0 GL_GNULIB_SPRINTF_POSIX=0 GL_GNULIB_STDIO_H_NONBLOCKING=0 GL_GNULIB_STDIO_H_SIGPIPE=0 GL_GNULIB_TMPFILE=0 GL_GNULIB_VASPRINTF=0 GL_GNULIB_VFSCANF=0 GL_GNULIB_VSCANF=0 GL_GNULIB_VDPRINTF=0 GL_GNULIB_VFPRINTF=0 GL_GNULIB_VFPRINTF_POSIX=0 GL_GNULIB_VPRINTF=0 GL_GNULIB_VPRINTF_POSIX=0 GL_GNULIB_VSNPRINTF=0 GL_GNULIB_VSPRINTF_POSIX=0 GL_GNULIB_MDA_FCLOSEALL=1 GL_GNULIB_MDA_FDOPEN=1 GL_GNULIB_MDA_FILENO=1 GL_GNULIB_MDA_GETW=1 GL_GNULIB_MDA_PUTW=1 GL_GNULIB_MDA_TEMPNAM=1 ac_fn_check_decl "$LINENO" "ecvt" "ac_cv_have_decl_ecvt" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_ecvt" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_ECVT $ac_have_decl" >>confdefs.h ac_fn_check_decl "$LINENO" "fcvt" "ac_cv_have_decl_fcvt" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_fcvt" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_FCVT $ac_have_decl" >>confdefs.h ac_fn_check_decl "$LINENO" "gcvt" "ac_cv_have_decl_gcvt" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_gcvt" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_GCVT $ac_have_decl" >>confdefs.h if test $gl_cv_have_include_next = yes; then gl_cv_next_stdlib_h='<'stdlib.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_stdlib_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stdlib.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_stdlib_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_stdlib_h gl_cv_next_stdlib_h='"'$gl_header'"' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdlib_h" >&5 printf "%s\n" "$gl_cv_next_stdlib_h" >&6; } fi NEXT_STDLIB_H=$gl_cv_next_stdlib_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stdlib.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stdlib_h fi NEXT_AS_FIRST_DIRECTIVE_STDLIB_H=$gl_next_as_first_directive if test $ac_cv_have_decl_ecvt = no; then HAVE_DECL_ECVT=0 fi if test $ac_cv_have_decl_fcvt = no; then HAVE_DECL_FCVT=0 fi if test $ac_cv_have_decl_gcvt = no; then HAVE_DECL_GCVT=0 fi REPLACE_STRERROR_0=0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether strerror(0) succeeds" >&5 printf %s "checking whether strerror(0) succeeds... " >&6; } if test ${gl_cv_func_strerror_0_works+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_strerror_0_works="guessing yes" ;; # Guess yes on musl systems. *-musl*) gl_cv_func_strerror_0_works="guessing yes" ;; # Guess yes on native Windows. mingw*) gl_cv_func_strerror_0_works="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_strerror_0_works="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { int result = 0; char *str; errno = 0; str = strerror (0); if (!*str) result |= 1; if (errno) result |= 2; if (strstr (str, "nknown") || strstr (str, "ndefined")) result |= 4; return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_strerror_0_works=yes else $as_nop gl_cv_func_strerror_0_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_strerror_0_works" >&5 printf "%s\n" "$gl_cv_func_strerror_0_works" >&6; } case "$gl_cv_func_strerror_0_works" in *yes) ;; *) REPLACE_STRERROR_0=1 printf "%s\n" "#define REPLACE_STRERROR_0 1" >>confdefs.h ;; esac if test $gl_cv_have_include_next = yes; then gl_cv_next_string_h='<'string.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_string_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'string.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_string_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_string_h gl_cv_next_string_h='"'$gl_header'"' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_string_h" >&5 printf "%s\n" "$gl_cv_next_string_h" >&6; } fi NEXT_STRING_H=$gl_cv_next_string_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'string.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_string_h fi NEXT_AS_FIRST_DIRECTIVE_STRING_H=$gl_next_as_first_directive ac_fn_check_decl "$LINENO" "strndup" "ac_cv_have_decl_strndup" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_strndup" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_STRNDUP $ac_have_decl" >>confdefs.h ac_fn_check_decl "$LINENO" "strnlen" "ac_cv_have_decl_strnlen" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_strnlen" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_STRNLEN $ac_have_decl" >>confdefs.h if test $gl_cv_have_include_next = yes; then gl_cv_next_sys_random_h='<'sys/random.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_sys_random_h+y} then : printf %s "(cached) " >&6 else $as_nop if test $ac_cv_header_sys_random_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'sys/random.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_sys_random_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_sys_random_h gl_cv_next_sys_random_h='"'$gl_header'"' else gl_cv_next_sys_random_h='<'sys/random.h'>' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_random_h" >&5 printf "%s\n" "$gl_cv_next_sys_random_h" >&6; } fi NEXT_SYS_RANDOM_H=$gl_cv_next_sys_random_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'sys/random.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_sys_random_h fi NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H=$gl_next_as_first_directive if test $ac_cv_header_sys_random_h = yes; then HAVE_SYS_RANDOM_H=1 else HAVE_SYS_RANDOM_H=0 fi if test $ac_cv_header_sys_random_h = yes; then UNISTD_H_HAVE_SYS_RANDOM_H=1 fi printf "%s\n" "#define _USE_STD_STAT 1" >>confdefs.h if test $gl_cv_have_include_next = yes; then gl_cv_next_sys_types_h='<'sys/types.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_sys_types_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'sys/types.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_sys_types_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_sys_types_h gl_cv_next_sys_types_h='"'$gl_header'"' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_types_h" >&5 printf "%s\n" "$gl_cv_next_sys_types_h" >&6; } fi NEXT_SYS_TYPES_H=$gl_cv_next_sys_types_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'sys/types.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_sys_types_h fi NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H=$gl_next_as_first_directive WINDOWS_STAT_INODES=0 if test $gl_cv_have_include_next = yes; then gl_cv_next_sys_wait_h='<'sys/wait.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_sys_wait_h+y} then : printf %s "(cached) " >&6 else $as_nop if test $ac_cv_header_sys_wait_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'sys/wait.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_sys_wait_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_sys_wait_h gl_cv_next_sys_wait_h='"'$gl_header'"' else gl_cv_next_sys_wait_h='<'sys/wait.h'>' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_wait_h" >&5 printf "%s\n" "$gl_cv_next_sys_wait_h" >&6; } fi NEXT_SYS_WAIT_H=$gl_cv_next_sys_wait_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'sys/wait.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_sys_wait_h fi NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H=$gl_next_as_first_directive GL_GNULIB_WAITPID=0 HAVE_DECL_LOCALTIME_R=1; HAVE_NANOSLEEP=1; HAVE_STRPTIME=1; HAVE_TIMEGM=1; HAVE_TIMESPEC_GET=1; HAVE_TIMESPEC_GETRES=1; HAVE_TIMEZONE_T=0; REPLACE_CTIME=GNULIB_PORTCHECK; REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; REPLACE_MKTIME=GNULIB_PORTCHECK; REPLACE_NANOSLEEP=GNULIB_PORTCHECK; REPLACE_STRFTIME=GNULIB_PORTCHECK; REPLACE_TIMEGM=GNULIB_PORTCHECK; REPLACE_TIMESPEC_GET=GNULIB_PORTCHECK; REPLACE_TZSET=GNULIB_PORTCHECK; : ${GNULIB_GETTIMEOFDAY=0}; REPLACE_GMTIME=0; REPLACE_LOCALTIME=0; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 printf %s "checking for struct timespec in ... " >&6; } if test ${gl_cv_sys_struct_timespec_in_time_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { static struct timespec x; x.tv_sec = x.tv_nsec; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_sys_struct_timespec_in_time_h=yes else $as_nop gl_cv_sys_struct_timespec_in_time_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_time_h" >&5 printf "%s\n" "$gl_cv_sys_struct_timespec_in_time_h" >&6; } TIME_H_DEFINES_STRUCT_TIMESPEC=0 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 UNISTD_H_DEFINES_STRUCT_TIMESPEC=0 if test $gl_cv_sys_struct_timespec_in_time_h = yes; then TIME_H_DEFINES_STRUCT_TIMESPEC=1 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 printf %s "checking for struct timespec in ... " >&6; } if test ${gl_cv_sys_struct_timespec_in_sys_time_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { static struct timespec x; x.tv_sec = x.tv_nsec; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_sys_struct_timespec_in_sys_time_h=yes else $as_nop gl_cv_sys_struct_timespec_in_sys_time_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_sys_time_h" >&5 printf "%s\n" "$gl_cv_sys_struct_timespec_in_sys_time_h" >&6; } if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 printf %s "checking for struct timespec in ... " >&6; } if test ${gl_cv_sys_struct_timespec_in_pthread_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { static struct timespec x; x.tv_sec = x.tv_nsec; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_sys_struct_timespec_in_pthread_h=yes else $as_nop gl_cv_sys_struct_timespec_in_pthread_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_pthread_h" >&5 printf "%s\n" "$gl_cv_sys_struct_timespec_in_pthread_h" >&6; } if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 printf %s "checking for struct timespec in ... " >&6; } if test ${gl_cv_sys_struct_timespec_in_unistd_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { static struct timespec x; x.tv_sec = x.tv_nsec; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_sys_struct_timespec_in_unistd_h=yes else $as_nop gl_cv_sys_struct_timespec_in_unistd_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_unistd_h" >&5 printf "%s\n" "$gl_cv_sys_struct_timespec_in_unistd_h" >&6; } if test $gl_cv_sys_struct_timespec_in_unistd_h = yes; then UNISTD_H_DEFINES_STRUCT_TIMESPEC=1 fi fi fi fi if test $gl_cv_have_include_next = yes; then gl_cv_next_time_h='<'time.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_time_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'time.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_time_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_time_h gl_cv_next_time_h='"'$gl_header'"' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_time_h" >&5 printf "%s\n" "$gl_cv_next_time_h" >&6; } fi NEXT_TIME_H=$gl_cv_next_time_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'time.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_time_h fi NEXT_AS_FIRST_DIRECTIVE_TIME_H=$gl_next_as_first_directive { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for TIME_UTC in " >&5 printf %s "checking for TIME_UTC in ... " >&6; } if test ${gl_cv_time_h_has_TIME_UTC+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { static int x = TIME_UTC; x++; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_time_h_has_TIME_UTC=yes else $as_nop gl_cv_time_h_has_TIME_UTC=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_time_h_has_TIME_UTC" >&5 printf "%s\n" "$gl_cv_time_h_has_TIME_UTC" >&6; } if test $gl_cv_time_h_has_TIME_UTC = yes; then TIME_H_DEFINES_TIME_UTC=1 else TIME_H_DEFINES_TIME_UTC=0 fi GL_GNULIB_CTIME=0 GL_GNULIB_MKTIME=0 GL_GNULIB_LOCALTIME=0 GL_GNULIB_NANOSLEEP=0 GL_GNULIB_STRFTIME=0 GL_GNULIB_STRPTIME=0 GL_GNULIB_TIMEGM=0 GL_GNULIB_TIMESPEC_GET=0 GL_GNULIB_TIMESPEC_GETRES=0 GL_GNULIB_TIME_R=0 GL_GNULIB_TIME_RZ=0 GL_GNULIB_TZSET=0 GL_GNULIB_MDA_TZSET=1 ac_fn_check_decl "$LINENO" "execvpe" "ac_cv_have_decl_execvpe" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_execvpe" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_EXECVPE $ac_have_decl" >>confdefs.h if test $gl_cv_have_include_next = yes; then gl_cv_next_unistd_h='<'unistd.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_unistd_h+y} then : printf %s "(cached) " >&6 else $as_nop if test $ac_cv_header_unistd_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'unistd.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_unistd_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_unistd_h gl_cv_next_unistd_h='"'$gl_header'"' else gl_cv_next_unistd_h='<'unistd.h'>' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_unistd_h" >&5 printf "%s\n" "$gl_cv_next_unistd_h" >&6; } fi NEXT_UNISTD_H=$gl_cv_next_unistd_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'unistd.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_unistd_h fi NEXT_AS_FIRST_DIRECTIVE_UNISTD_H=$gl_next_as_first_directive if test $ac_cv_header_unistd_h = yes; then HAVE_UNISTD_H=1 else HAVE_UNISTD_H=0 fi if test $ac_cv_have_decl_execvpe = no; then HAVE_DECL_EXECVPE=0 fi HAVE_UTIME=1; REPLACE_UTIME=0; GL_GNULIB_UTIME=0 GL_GNULIB_MDA_UTIME=1 if test $gl_cv_have_include_next = yes; then gl_cv_next_utime_h='<'utime.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_utime_h+y} then : printf %s "(cached) " >&6 else $as_nop if test $ac_cv_header_utime_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'utime.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_utime_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_utime_h gl_cv_next_utime_h='"'$gl_header'"' else gl_cv_next_utime_h='<'utime.h'>' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_utime_h" >&5 printf "%s\n" "$gl_cv_next_utime_h" >&6; } fi NEXT_UTIME_H=$gl_cv_next_utime_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'utime.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_utime_h fi NEXT_AS_FIRST_DIRECTIVE_UTIME_H=$gl_next_as_first_directive if test $ac_cv_header_utime_h = yes; then HAVE_UTIME_H=1 else HAVE_UTIME_H=0 fi if test $ac_cv_header_features_h = yes; then HAVE_FEATURES_H=1 else HAVE_FEATURES_H=0 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5 printf %s "checking for inttypes.h... " >&6; } if test ${gl_cv_header_inttypes_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { uintmax_t i = (uintmax_t) -1; return !i; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_header_inttypes_h=yes else $as_nop gl_cv_header_inttypes_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_inttypes_h" >&5 printf "%s\n" "$gl_cv_header_inttypes_h" >&6; } if test $gl_cv_header_inttypes_h = yes; then printf "%s\n" "#define HAVE_INTTYPES_H_WITH_UINTMAX 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5 printf %s "checking for stdint.h... " >&6; } if test ${gl_cv_header_stdint_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { uintmax_t i = (uintmax_t) -1; return !i; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_header_stdint_h=yes else $as_nop gl_cv_header_stdint_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_h" >&5 printf "%s\n" "$gl_cv_header_stdint_h" >&6; } if test $gl_cv_header_stdint_h = yes; then printf "%s\n" "#define HAVE_STDINT_H_WITH_UINTMAX 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5 printf %s "checking for intmax_t... " >&6; } if test ${gt_cv_c_intmax_t+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if HAVE_STDINT_H_WITH_UINTMAX #include #endif #if HAVE_INTTYPES_H_WITH_UINTMAX #include #endif int main (void) { intmax_t x = -1; return !x; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gt_cv_c_intmax_t=yes else $as_nop gt_cv_c_intmax_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_intmax_t" >&5 printf "%s\n" "$gt_cv_c_intmax_t" >&6; } if test $gt_cv_c_intmax_t = yes; then printf "%s\n" "#define HAVE_INTMAX_T 1" >>confdefs.h else printf "%s\n" "#define intmax_t long long" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether snprintf returns a byte count as in C99" >&5 printf %s "checking whether snprintf returns a byte count as in C99... " >&6; } if test ${gl_cv_func_snprintf_retval_c99+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4].*) gl_cv_func_snprintf_retval_c99="guessing no";; freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; midnightbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_snprintf_retval_c99="guessing no";; darwin*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on OpenBSD >= 3.9. openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*) gl_cv_func_snprintf_retval_c99="guessing no";; openbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on Solaris >= 2.10. solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";; solaris*) gl_cv_func_printf_sizes_c99="guessing no";; # Guess yes on AIX >= 4. aix[1-3]*) gl_cv_func_snprintf_retval_c99="guessing no";; aix*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_snprintf_retval_c99="guessing no";; netbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on Android. linux*-android*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on MSVC, no on mingw. mingw*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _MSC_VER Known #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Known" >/dev/null 2>&1 then : gl_cv_func_snprintf_retval_c99="guessing yes" else $as_nop gl_cv_func_snprintf_retval_c99="guessing no" fi rm -rf conftest* ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_snprintf_retval_c99="$gl_cross_guess_normal";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if HAVE_SNPRINTF # define my_snprintf snprintf #else # include static int my_snprintf (char *buf, int size, const char *format, ...) { va_list args; int ret; va_start (args, format); ret = vsnprintf (buf, size, format, args); va_end (args); return ret; } #endif static char buf[100]; int main () { strcpy (buf, "ABCDEF"); if (my_snprintf (buf, 3, "%d %d", 4567, 89) != 7) return 1; if (my_snprintf (buf, 0, "%d %d", 4567, 89) != 7) return 2; if (my_snprintf (NULL, 0, "%d %d", 4567, 89) != 7) return 3; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_snprintf_retval_c99=yes else $as_nop gl_cv_func_snprintf_retval_c99=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_snprintf_retval_c99" >&5 printf "%s\n" "$gl_cv_func_snprintf_retval_c99" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether snprintf truncates the result as in C99" >&5 printf %s "checking whether snprintf truncates the result as in C99... " >&6; } if test ${gl_cv_func_snprintf_truncation_c99+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4].*) gl_cv_func_snprintf_truncation_c99="guessing no";; freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; midnightbsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_snprintf_truncation_c99="guessing no";; darwin*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on OpenBSD >= 3.9. openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*) gl_cv_func_snprintf_truncation_c99="guessing no";; openbsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on Solaris >= 2.6. solaris2.[0-5] | solaris2.[0-5].*) gl_cv_func_snprintf_truncation_c99="guessing no";; solaris*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on AIX >= 4. aix[1-3]*) gl_cv_func_snprintf_truncation_c99="guessing no";; aix*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on HP-UX >= 11. hpux[7-9]* | hpux10*) gl_cv_func_snprintf_truncation_c99="guessing no";; hpux*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on IRIX >= 6.5. irix6.5) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on OSF/1 >= 5. osf[3-4]*) gl_cv_func_snprintf_truncation_c99="guessing no";; osf*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_snprintf_truncation_c99="guessing no";; netbsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on Android. linux*-android*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess no on native Windows. mingw*) gl_cv_func_snprintf_truncation_c99="guessing no";; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_snprintf_truncation_c99="$gl_cross_guess_normal";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if HAVE_SNPRINTF # define my_snprintf snprintf #else # include static int my_snprintf (char *buf, int size, const char *format, ...) { va_list args; int ret; va_start (args, format); ret = vsnprintf (buf, size, format, args); va_end (args); return ret; } #endif static char buf[100]; int main () { strcpy (buf, "ABCDEF"); my_snprintf (buf, 3, "%d %d", 4567, 89); if (memcmp (buf, "45\0DEF", 6) != 0) return 1; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_snprintf_truncation_c99=yes else $as_nop gl_cv_func_snprintf_truncation_c99=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_snprintf_truncation_c99" >&5 printf "%s\n" "$gl_cv_func_snprintf_truncation_c99" >&6; } ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" if test "x$ac_cv_func_snprintf" = xyes then : printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strnlen" "ac_cv_func_strnlen" if test "x$ac_cv_func_strnlen" = xyes then : printf "%s\n" "#define HAVE_STRNLEN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcslen" "ac_cv_func_wcslen" if test "x$ac_cv_func_wcslen" = xyes then : printf "%s\n" "#define HAVE_WCSLEN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcsnlen" "ac_cv_func_wcsnlen" if test "x$ac_cv_func_wcsnlen" = xyes then : printf "%s\n" "#define HAVE_WCSNLEN 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "mbrtowc" "ac_cv_func_mbrtowc" if test "x$ac_cv_func_mbrtowc" = xyes then : printf "%s\n" "#define HAVE_MBRTOWC 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "wcrtomb" "ac_cv_func_wcrtomb" if test "x$ac_cv_func_wcrtomb" = xyes then : printf "%s\n" "#define HAVE_WCRTOMB 1" >>confdefs.h fi ac_fn_check_decl "$LINENO" "_snprintf" "ac_cv_have_decl__snprintf" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl__snprintf" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL__SNPRINTF $ac_have_decl" >>confdefs.h case "$gl_cv_func_snprintf_retval_c99" in *yes) printf "%s\n" "#define HAVE_SNPRINTF_RETVAL_C99 1" >>confdefs.h ;; esac case "$gl_cv_func_snprintf_truncation_c99" in *yes) printf "%s\n" "#define HAVE_SNPRINTF_TRUNCATION_C99 1" >>confdefs.h ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf supports size specifiers as in C99" >&5 printf %s "checking whether printf supports size specifiers as in C99... " >&6; } if test ${gl_cv_func_printf_sizes_c99+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4].*) gl_cv_func_printf_sizes_c99="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";; midnightbsd*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_printf_sizes_c99="guessing no";; darwin*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on OpenBSD >= 3.9. openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*) gl_cv_func_printf_sizes_c99="guessing no";; openbsd*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on Solaris >= 2.10. solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";; solaris*) gl_cv_func_printf_sizes_c99="guessing no";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_printf_sizes_c99="guessing no";; netbsd*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on Android. linux*-android*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on MSVC, no on mingw. mingw*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _MSC_VER Known #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Known" >/dev/null 2>&1 then : gl_cv_func_printf_sizes_c99="guessing yes" else $as_nop gl_cv_func_printf_sizes_c99="guessing no" fi rm -rf conftest* ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_sizes_c99="$gl_cross_guess_normal";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #if HAVE_STDINT_H_WITH_UINTMAX # include #endif #if HAVE_INTTYPES_H_WITH_UINTMAX # include #endif static char buf[100]; int main () { int result = 0; #if HAVE_STDINT_H_WITH_UINTMAX || HAVE_INTTYPES_H_WITH_UINTMAX buf[0] = '\0'; if (sprintf (buf, "%ju %d", (uintmax_t) 12345671, 33, 44, 55) < 0 || strcmp (buf, "12345671 33") != 0) result |= 1; #else result |= 1; #endif buf[0] = '\0'; if (sprintf (buf, "%zu %d", (size_t) 12345672, 33, 44, 55) < 0 || strcmp (buf, "12345672 33") != 0) result |= 2; buf[0] = '\0'; if (sprintf (buf, "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55) < 0 || strcmp (buf, "12345673 33") != 0) result |= 4; buf[0] = '\0'; if (sprintf (buf, "%Lg %d", (long double) 1.5, 33, 44, 55) < 0 || strcmp (buf, "1.5 33") != 0) result |= 8; return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_printf_sizes_c99=yes else $as_nop gl_cv_func_printf_sizes_c99=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_sizes_c99" >&5 printf "%s\n" "$gl_cv_func_printf_sizes_c99" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf supports 'long double' arguments" >&5 printf %s "checking whether printf supports 'long double' arguments... " >&6; } if test ${gl_cv_func_printf_long_double+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess no on BeOS. beos*) gl_cv_func_printf_long_double="guessing no";; # Guess yes on Android. linux*-android*) gl_cv_func_printf_long_double="guessing yes";; # Guess yes on MSVC, no on mingw. mingw*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _MSC_VER Known #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Known" >/dev/null 2>&1 then : gl_cv_func_printf_long_double="guessing yes" else $as_nop gl_cv_func_printf_long_double="guessing no" fi rm -rf conftest* ;; *) gl_cv_func_printf_long_double="guessing yes";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include static char buf[10000]; int main () { int result = 0; buf[0] = '\0'; if (sprintf (buf, "%Lf %d", 1.75L, 33, 44, 55) < 0 || strcmp (buf, "1.750000 33") != 0) result |= 1; buf[0] = '\0'; if (sprintf (buf, "%Le %d", 1.75L, 33, 44, 55) < 0 || strcmp (buf, "1.750000e+00 33") != 0) result |= 2; buf[0] = '\0'; if (sprintf (buf, "%Lg %d", 1.75L, 33, 44, 55) < 0 || strcmp (buf, "1.75 33") != 0) result |= 4; return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_printf_long_double=yes else $as_nop gl_cv_func_printf_long_double=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_long_double" >&5 printf "%s\n" "$gl_cv_func_printf_long_double" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf supports infinite 'double' arguments" >&5 printf %s "checking whether printf supports infinite 'double' arguments... " >&6; } if test ${gl_cv_func_printf_infinite+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on FreeBSD >= 6. freebsd[1-5].*) gl_cv_func_printf_infinite="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";; midnightbsd*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_printf_infinite="guessing no";; darwin*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on HP-UX >= 11. hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite="guessing no";; hpux*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_printf_infinite="guessing no";; netbsd*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on OpenBSD >= 6.0. openbsd[1-5].*) gl_cv_func_printf_infinite="guessing no";; openbsd*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_printf_infinite="guessing yes";; # Guess no on Android. linux*-android*) gl_cv_func_printf_infinite="guessing no";; # Guess yes on MSVC, no on mingw. mingw*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _MSC_VER Known #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Known" >/dev/null 2>&1 then : gl_cv_func_printf_infinite="guessing yes" else $as_nop gl_cv_func_printf_infinite="guessing no" fi rm -rf conftest* ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_infinite="$gl_cross_guess_normal";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include static int strisnan (const char *string, size_t start_index, size_t end_index) { if (start_index < end_index) { if (string[start_index] == '-') start_index++; if (start_index + 3 <= end_index && memcmp (string + start_index, "nan", 3) == 0) { start_index += 3; if (start_index == end_index || (string[start_index] == '(' && string[end_index - 1] == ')')) return 1; } } return 0; } static int have_minus_zero () { static double plus_zero = 0.0; double minus_zero = - plus_zero; return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0; } static char buf[10000]; static double zero = 0.0; int main () { int result = 0; if (sprintf (buf, "%f", 1.0 / zero) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 1; if (sprintf (buf, "%f", -1.0 / zero) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 1; if (sprintf (buf, "%f", zero / zero) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%e", 1.0 / zero) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 4; if (sprintf (buf, "%e", -1.0 / zero) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 4; if (sprintf (buf, "%e", zero / zero) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 8; if (sprintf (buf, "%g", 1.0 / zero) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 16; if (sprintf (buf, "%g", -1.0 / zero) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 16; if (sprintf (buf, "%g", zero / zero) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 32; /* This test fails on HP-UX 10.20. */ if (have_minus_zero ()) if (sprintf (buf, "%g", - zero) < 0 || strcmp (buf, "-0") != 0) result |= 64; return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_printf_infinite=yes else $as_nop gl_cv_func_printf_infinite=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_infinite" >&5 printf "%s\n" "$gl_cv_func_printf_infinite" >&6; } if test -n "$gl_printf_safe"; then printf "%s\n" "#define CHECK_PRINTF_SAFE 1" >>confdefs.h fi case "$gl_cv_func_printf_long_double" in *yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf supports infinite 'long double' arguments" >&5 printf %s "checking whether printf supports infinite 'long double' arguments... " >&6; } if test ${gl_cv_func_printf_infinite_long_double+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_cpu" in # Guess no on ia64, x86_64, i386. ia64 | x86_64 | i*86) gl_cv_func_printf_infinite_long_double="guessing no";; *) case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_infinite_long_double="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_printf_infinite_long_double="guessing yes";; # Guess yes on FreeBSD >= 6. freebsd[1-5].*) gl_cv_func_printf_infinite_long_double="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_infinite_long_double="guessing yes";; midnightbsd*) gl_cv_func_printf_infinite_long_double="guessing yes";; # Guess yes on HP-UX >= 11. hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite_long_double="guessing no";; hpux*) gl_cv_func_printf_infinite_long_double="guessing yes";; # Guess yes on OpenBSD >= 6.0. openbsd[1-5].*) gl_cv_func_printf_infinite_long_double="guessing no";; openbsd*) gl_cv_func_printf_infinite_long_double="guessing yes";; # Guess no on Android. linux*-android*) gl_cv_func_printf_infinite_long_double="guessing no";; # Guess yes on MSVC, no on mingw. mingw*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _MSC_VER Known #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Known" >/dev/null 2>&1 then : gl_cv_func_printf_infinite_long_double="guessing yes" else $as_nop gl_cv_func_printf_infinite_long_double="guessing no" fi rm -rf conftest* ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_infinite_long_double="$gl_cross_guess_normal";; esac ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if defined __MACH__ && defined __APPLE__ /* Avoid a crash on Mac OS X. */ #include #include #include #include #include #include /* The exception port on which our thread listens. */ static mach_port_t our_exception_port; /* The main function of the thread listening for exceptions of type EXC_BAD_ACCESS. */ static void * mach_exception_thread (void *arg) { /* Buffer for a message to be received. */ struct { mach_msg_header_t head; mach_msg_body_t msgh_body; char data[1024]; } msg; mach_msg_return_t retval; /* Wait for a message on the exception port. */ retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg), our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); if (retval != MACH_MSG_SUCCESS) abort (); exit (1); } static void nocrash_init (void) { mach_port_t self = mach_task_self (); /* Allocate a port on which the thread shall listen for exceptions. */ if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port) == KERN_SUCCESS) { /* See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */ if (mach_port_insert_right (self, our_exception_port, our_exception_port, MACH_MSG_TYPE_MAKE_SEND) == KERN_SUCCESS) { /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting for us. */ exception_mask_t mask = EXC_MASK_BAD_ACCESS; /* Create the thread listening on the exception port. */ pthread_attr_t attr; pthread_t thread; if (pthread_attr_init (&attr) == 0 && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0 && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) { pthread_attr_destroy (&attr); /* Replace the exception port info for these exceptions with our own. Note that we replace the exception port for the entire task, not only for a particular thread. This has the effect that when our exception port gets the message, the thread specific exception port has already been asked, and we don't need to bother about it. See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */ task_set_exception_ports (self, mask, our_exception_port, EXCEPTION_DEFAULT, MACHINE_THREAD_STATE); } } } } #elif defined _WIN32 && ! defined __CYGWIN__ /* Avoid a crash on native Windows. */ #define WIN32_LEAN_AND_MEAN #include #include static LONG WINAPI exception_filter (EXCEPTION_POINTERS *ExceptionInfo) { switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_IN_PAGE_ERROR: case EXCEPTION_STACK_OVERFLOW: case EXCEPTION_GUARD_PAGE: case EXCEPTION_PRIV_INSTRUCTION: case EXCEPTION_ILLEGAL_INSTRUCTION: case EXCEPTION_DATATYPE_MISALIGNMENT: case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: case EXCEPTION_NONCONTINUABLE_EXCEPTION: exit (1); } return EXCEPTION_CONTINUE_SEARCH; } static void nocrash_init (void) { SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter); } #else /* Avoid a crash on POSIX systems. */ #include #include /* A POSIX signal handler. */ static void exception_handler (int sig) { _exit (1); } static void nocrash_init (void) { #ifdef SIGSEGV signal (SIGSEGV, exception_handler); #endif #ifdef SIGBUS signal (SIGBUS, exception_handler); #endif } #endif #include #include #include static int strisnan (const char *string, size_t start_index, size_t end_index) { if (start_index < end_index) { if (string[start_index] == '-') start_index++; if (start_index + 3 <= end_index && memcmp (string + start_index, "nan", 3) == 0) { start_index += 3; if (start_index == end_index || (string[start_index] == '(' && string[end_index - 1] == ')')) return 1; } } return 0; } static char buf[10000]; static long double zeroL = 0.0L; int main () { int result = 0; nocrash_init(); if (sprintf (buf, "%Lf", 1.0L / zeroL) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 1; if (sprintf (buf, "%Lf", -1.0L / zeroL) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 1; if (sprintf (buf, "%Lf", zeroL / zeroL) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 1; if (sprintf (buf, "%Le", 1.0L / zeroL) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 1; if (sprintf (buf, "%Le", -1.0L / zeroL) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 1; if (sprintf (buf, "%Le", zeroL / zeroL) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 1; if (sprintf (buf, "%Lg", 1.0L / zeroL) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 1; if (sprintf (buf, "%Lg", -1.0L / zeroL) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 1; if (sprintf (buf, "%Lg", zeroL / zeroL) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 1; #if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE /* Representation of an 80-bit 'long double' as an initializer for a sequence of 'unsigned int' words. */ # ifdef WORDS_BIGENDIAN # define LDBL80_WORDS(exponent,manthi,mantlo) \ { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \ (unsigned int) (mantlo) << 16 \ } # else # define LDBL80_WORDS(exponent,manthi,mantlo) \ { mantlo, manthi, exponent } # endif { /* Quiet NaN. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%Le", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%Lg", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; } { /* Signalling NaN. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%Le", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%Lg", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; } { /* Pseudo-NaN. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) <= 0) result |= 4; if (sprintf (buf, "%Le", x.value) <= 0) result |= 4; if (sprintf (buf, "%Lg", x.value) <= 0) result |= 4; } { /* Pseudo-Infinity. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) <= 0) result |= 8; if (sprintf (buf, "%Le", x.value) <= 0) result |= 8; if (sprintf (buf, "%Lg", x.value) <= 0) result |= 8; } { /* Pseudo-Zero. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) <= 0) result |= 16; if (sprintf (buf, "%Le", x.value) <= 0) result |= 16; if (sprintf (buf, "%Lg", x.value) <= 0) result |= 16; } { /* Unnormalized number. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) <= 0) result |= 32; if (sprintf (buf, "%Le", x.value) <= 0) result |= 32; if (sprintf (buf, "%Lg", x.value) <= 0) result |= 32; } { /* Pseudo-Denormal. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) <= 0) result |= 64; if (sprintf (buf, "%Le", x.value) <= 0) result |= 64; if (sprintf (buf, "%Lg", x.value) <= 0) result |= 64; } #endif return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_printf_infinite_long_double=yes else $as_nop gl_cv_func_printf_infinite_long_double=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_infinite_long_double" >&5 printf "%s\n" "$gl_cv_func_printf_infinite_long_double" >&6; } ;; *) gl_cv_func_printf_infinite_long_double="irrelevant" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf supports the 'a' and 'A' directives" >&5 printf %s "checking whether printf supports the 'a' and 'A' directives... " >&6; } if test ${gl_cv_func_printf_directive_a+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on glibc >= 2.5 systems. *-gnu* | gnu*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef __GNU_LIBRARY__ #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)) && !defined __UCLIBC__ BZ2908 #endif #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "BZ2908" >/dev/null 2>&1 then : gl_cv_func_printf_directive_a="guessing yes" else $as_nop gl_cv_func_printf_directive_a="guessing no" fi rm -rf conftest* ;; # Guess yes on musl systems. *-musl*) gl_cv_func_printf_directive_a="guessing yes";; # Guess no on Android. linux*-android*) gl_cv_func_printf_directive_a="guessing no";; # Guess no on native Windows. mingw*) gl_cv_func_printf_directive_a="guessing no";; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_directive_a="$gl_cross_guess_normal";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include static char buf[100]; static double zero = 0.0; int main () { int result = 0; if (sprintf (buf, "%a %d", 3.1416015625, 33, 44, 55) < 0 || (strcmp (buf, "0x1.922p+1 33") != 0 && strcmp (buf, "0x3.244p+0 33") != 0 && strcmp (buf, "0x6.488p-1 33") != 0 && strcmp (buf, "0xc.91p-2 33") != 0)) result |= 1; if (sprintf (buf, "%A %d", -3.1416015625, 33, 44, 55) < 0 || (strcmp (buf, "-0X1.922P+1 33") != 0 && strcmp (buf, "-0X3.244P+0 33") != 0 && strcmp (buf, "-0X6.488P-1 33") != 0 && strcmp (buf, "-0XC.91P-2 33") != 0)) result |= 2; /* This catches a FreeBSD 13.0 bug: it doesn't round. */ if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0 || (strcmp (buf, "0x1.83p+0 33") != 0 && strcmp (buf, "0x3.05p-1 33") != 0 && strcmp (buf, "0x6.0ap-2 33") != 0 && strcmp (buf, "0xc.14p-3 33") != 0)) result |= 4; /* This catches a Mac OS X 10.12.4 (Darwin 16.5) bug: it doesn't round. */ if (sprintf (buf, "%.0a %d", 1.51, 33, 44, 55) < 0 || (strcmp (buf, "0x2p+0 33") != 0 && strcmp (buf, "0x3p-1 33") != 0 && strcmp (buf, "0x6p-2 33") != 0 && strcmp (buf, "0xcp-3 33") != 0)) result |= 4; /* This catches a FreeBSD 6.1 bug. See */ if (sprintf (buf, "%010a %d", 1.0 / zero, 33, 44, 55) < 0 || buf[0] == '0') result |= 8; /* This catches a Mac OS X 10.3.9 (Darwin 7.9) bug. */ if (sprintf (buf, "%.1a", 1.999) < 0 || (strcmp (buf, "0x1.0p+1") != 0 && strcmp (buf, "0x2.0p+0") != 0 && strcmp (buf, "0x4.0p-1") != 0 && strcmp (buf, "0x8.0p-2") != 0)) result |= 16; /* This catches the same Mac OS X 10.3.9 (Darwin 7.9) bug and also a glibc 2.4 bug . */ if (sprintf (buf, "%.1La", 1.999L) < 0 || (strcmp (buf, "0x1.0p+1") != 0 && strcmp (buf, "0x2.0p+0") != 0 && strcmp (buf, "0x4.0p-1") != 0 && strcmp (buf, "0x8.0p-2") != 0)) result |= 32; return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_printf_directive_a=yes else $as_nop gl_cv_func_printf_directive_a=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_directive_a" >&5 printf "%s\n" "$gl_cv_func_printf_directive_a" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf supports the 'F' directive" >&5 printf %s "checking whether printf supports the 'F' directive... " >&6; } if test ${gl_cv_func_printf_directive_f+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on FreeBSD >= 6. freebsd[1-5].*) gl_cv_func_printf_directive_f="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";; midnightbsd*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_printf_directive_f="guessing no";; darwin*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on OpenBSD >= 6.0. openbsd[1-5].*) gl_cv_func_printf_directive_f="guessing no";; openbsd*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on Solaris >= 2.10. solaris2.[1-9][0-9]*) gl_cv_func_printf_directive_f="guessing yes";; solaris*) gl_cv_func_printf_directive_f="guessing no";; # Guess no on Android. linux*-android*) gl_cv_func_printf_directive_f="guessing no";; # Guess yes on MSVC, no on mingw. mingw*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _MSC_VER Known #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Known" >/dev/null 2>&1 then : gl_cv_func_printf_directive_f="guessing yes" else $as_nop gl_cv_func_printf_directive_f="guessing no" fi rm -rf conftest* ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_directive_f="$gl_cross_guess_normal";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include static char buf[100]; static double zero = 0.0; int main () { int result = 0; if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0 || strcmp (buf, "1234567.000000 33") != 0) result |= 1; if (sprintf (buf, "%F", 1.0 / zero) < 0 || (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0)) result |= 2; /* This catches a Cygwin 1.5.x bug. */ if (sprintf (buf, "%.F", 1234.0) < 0 || strcmp (buf, "1234") != 0) result |= 4; return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_printf_directive_f=yes else $as_nop gl_cv_func_printf_directive_f=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_directive_f" >&5 printf "%s\n" "$gl_cv_func_printf_directive_f" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf supports the 'n' directive" >&5 printf %s "checking whether printf supports the 'n' directive... " >&6; } if test ${gl_cv_func_printf_directive_n+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess no on glibc when _FORTIFY_SOURCE >= 2. *-gnu* | gnu*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if _FORTIFY_SOURCE >= 2 error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_func_printf_directive_n="guessing yes" else $as_nop gl_cv_func_printf_directive_n="guessing no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; # Guess no on Android. linux*-android*) gl_cv_func_printf_directive_n="guessing no";; # Guess no on native Windows. mingw*) gl_cv_func_printf_directive_n="guessing no";; *) gl_cv_func_printf_directive_n="guessing yes";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #ifdef _MSC_VER #include /* See page about "Parameter Validation" on msdn.microsoft.com. */ static void cdecl invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { exit (1); } #endif static char fmtstring[10]; static char buf[100]; int main () { int count = -1; #ifdef _MSC_VER _set_invalid_parameter_handler (invalid_parameter_handler); #endif /* Copy the format string. Some systems (glibc with _FORTIFY_SOURCE=2) support %n in format strings in read-only memory but not in writable memory. */ strcpy (fmtstring, "%d %n"); if (sprintf (buf, fmtstring, 123, &count, 33, 44, 55) < 0 || strcmp (buf, "123 ") != 0 || count != 4) return 1; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_printf_directive_n=yes else $as_nop gl_cv_func_printf_directive_n=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_directive_n" >&5 printf "%s\n" "$gl_cv_func_printf_directive_n" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf supports the 'ls' directive" >&5 printf %s "checking whether printf supports the 'ls' directive... " >&6; } if test ${gl_cv_func_printf_directive_ls+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on OpenBSD >= 6.0. openbsd[1-5].*) gl_cv_func_printf_directive_ls="guessing no";; openbsd*) gl_cv_func_printf_directive_ls="guessing yes";; irix*) gl_cv_func_printf_directive_ls="guessing no";; solaris*) gl_cv_func_printf_directive_ls="guessing no";; cygwin*) gl_cv_func_printf_directive_ls="guessing no";; beos* | haiku*) gl_cv_func_printf_directive_ls="guessing no";; # Guess no on Android. linux*-android*) gl_cv_func_printf_directive_ls="guessing no";; # Guess yes on native Windows. mingw*) gl_cv_func_printf_directive_ls="guessing yes";; *) gl_cv_func_printf_directive_ls="guessing yes";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { int result = 0; char buf[100]; /* Test whether %ls works at all. This test fails on OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Haiku, but not on Cygwin 1.5. */ { static const wchar_t wstring[] = { 'a', 'b', 'c', 0 }; buf[0] = '\0'; if (sprintf (buf, "%ls", wstring) < 0 || strcmp (buf, "abc") != 0) result |= 1; } /* This test fails on IRIX 6.5, Solaris 2.6, Cygwin 1.5, Haiku (with an assertion failure inside libc), but not on OpenBSD 4.0. */ { static const wchar_t wstring[] = { 'a', 0 }; buf[0] = '\0'; if (sprintf (buf, "%ls", wstring) < 0 || strcmp (buf, "a") != 0) result |= 2; } /* Test whether precisions in %ls are supported as specified in ISO C 99 section 7.19.6.1: "If a precision is specified, no more than that many bytes are written (including shift sequences, if any), and the array shall contain a null wide character if, to equal the multibyte character sequence length given by the precision, the function would need to access a wide character one past the end of the array." This test fails on Solaris 10. */ { static const wchar_t wstring[] = { 'a', 'b', (wchar_t) 0xfdfdfdfd, 0 }; buf[0] = '\0'; if (sprintf (buf, "%.2ls", wstring) < 0 || strcmp (buf, "ab") != 0) result |= 8; } return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_printf_directive_ls=yes else $as_nop gl_cv_func_printf_directive_ls=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_directive_ls" >&5 printf "%s\n" "$gl_cv_func_printf_directive_ls" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf supports POSIX/XSI format strings with positions" >&5 printf %s "checking whether printf supports POSIX/XSI format strings with positions... " >&6; } if test ${gl_cv_func_printf_positions+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*) gl_cv_func_printf_positions="guessing no";; beos*) gl_cv_func_printf_positions="guessing no";; # Guess yes on Android. linux*-android*) gl_cv_func_printf_positions="guessing yes";; # Guess no on native Windows. mingw* | pw*) gl_cv_func_printf_positions="guessing no";; *) gl_cv_func_printf_positions="guessing yes";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include /* The string "%2$d %1$d", with dollar characters protected from the shell's dollar expansion (possibly an autoconf bug). */ static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; static char buf[100]; int main () { sprintf (buf, format, 33, 55); return (strcmp (buf, "55 33") != 0); } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_printf_positions=yes else $as_nop gl_cv_func_printf_positions=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_positions" >&5 printf "%s\n" "$gl_cv_func_printf_positions" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf supports the grouping flag" >&5 printf %s "checking whether printf supports the grouping flag... " >&6; } if test ${gl_cv_func_printf_flag_grouping+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in cygwin*) gl_cv_func_printf_flag_grouping="guessing no";; netbsd*) gl_cv_func_printf_flag_grouping="guessing no";; # Guess no on Android. linux*-android*) gl_cv_func_printf_flag_grouping="guessing no";; # Guess no on native Windows. mingw* | pw*) gl_cv_func_printf_flag_grouping="guessing no";; *) gl_cv_func_printf_flag_grouping="guessing yes";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include static char buf[100]; int main () { if (sprintf (buf, "%'d %d", 1234567, 99) < 0 || buf[strlen (buf) - 1] != '9') return 1; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_printf_flag_grouping=yes else $as_nop gl_cv_func_printf_flag_grouping=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_flag_grouping" >&5 printf "%s\n" "$gl_cv_func_printf_flag_grouping" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf supports the left-adjust flag correctly" >&5 printf %s "checking whether printf supports the left-adjust flag correctly... " >&6; } if test ${gl_cv_func_printf_flag_leftadjust+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on HP-UX 11. hpux11*) gl_cv_func_printf_flag_leftadjust="guessing yes";; # Guess no on HP-UX 10 and older. hpux*) gl_cv_func_printf_flag_leftadjust="guessing no";; # Guess yes on Android. linux*-android*) gl_cv_func_printf_flag_leftadjust="guessing yes";; # Guess yes on native Windows. mingw*) gl_cv_func_printf_flag_leftadjust="guessing yes";; # Guess yes otherwise. *) gl_cv_func_printf_flag_leftadjust="guessing yes";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include static char buf[100]; int main () { /* Check that a '-' flag is not annihilated by a negative width. */ if (sprintf (buf, "a%-*sc", -3, "b") < 0 || strcmp (buf, "ab c") != 0) return 1; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_printf_flag_leftadjust=yes else $as_nop gl_cv_func_printf_flag_leftadjust=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_flag_leftadjust" >&5 printf "%s\n" "$gl_cv_func_printf_flag_leftadjust" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf supports the zero flag correctly" >&5 printf %s "checking whether printf supports the zero flag correctly... " >&6; } if test ${gl_cv_func_printf_flag_zero+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_flag_zero="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_printf_flag_zero="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_printf_flag_zero="guessing yes";; # Guess no on Android. linux*-android*) gl_cv_func_printf_flag_zero="guessing no";; # Guess no on native Windows. mingw*) gl_cv_func_printf_flag_zero="guessing no";; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_flag_zero="$gl_cross_guess_normal";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include static char buf[100]; static double zero = 0.0; int main () { if (sprintf (buf, "%010f", 1.0 / zero, 33, 44, 55) < 0 || (strcmp (buf, " inf") != 0 && strcmp (buf, " infinity") != 0)) return 1; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_printf_flag_zero=yes else $as_nop gl_cv_func_printf_flag_zero=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_flag_zero" >&5 printf "%s\n" "$gl_cv_func_printf_flag_zero" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf supports large precisions" >&5 printf %s "checking whether printf supports large precisions... " >&6; } if test ${gl_cv_func_printf_precision+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess no only on Solaris, native Windows, and BeOS systems. solaris*) gl_cv_func_printf_precision="guessing no" ;; mingw* | pw*) gl_cv_func_printf_precision="guessing no" ;; beos*) gl_cv_func_printf_precision="guessing no" ;; # Guess yes on Android. linux*-android*) gl_cv_func_printf_precision="guessing yes" ;; *) gl_cv_func_printf_precision="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include static char buf[5000]; int main () { int result = 0; #ifdef __BEOS__ /* On BeOS, this would crash and show a dialog box. Avoid the crash. */ return 1; #endif if (sprintf (buf, "%.4000d %d", 1, 33, 44) < 4000 + 3) result |= 1; if (sprintf (buf, "%.4000f %d", 1.0, 33, 44) < 4000 + 5) result |= 2; if (sprintf (buf, "%.511f %d", 1.0, 33, 44) < 511 + 5 || buf[0] != '1') result |= 4; if (sprintf (buf, "%.999f %d", 1.0, 33, 44) < 999 + 5 || buf[0] != '1') result |= 4; return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_printf_precision=yes else $as_nop gl_cv_func_printf_precision=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_precision" >&5 printf "%s\n" "$gl_cv_func_printf_precision" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf survives out-of-memory conditions" >&5 printf %s "checking whether printf survives out-of-memory conditions... " >&6; } if test ${gl_cv_func_printf_enomem+y} then : printf %s "(cached) " >&6 else $as_nop gl_cv_func_printf_enomem="guessing no" if test "$cross_compiling" = no; then if test $APPLE_UNIVERSAL_BUILD = 0; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if defined __MACH__ && defined __APPLE__ /* Avoid a crash on Mac OS X. */ #include #include #include #include #include #include /* The exception port on which our thread listens. */ static mach_port_t our_exception_port; /* The main function of the thread listening for exceptions of type EXC_BAD_ACCESS. */ static void * mach_exception_thread (void *arg) { /* Buffer for a message to be received. */ struct { mach_msg_header_t head; mach_msg_body_t msgh_body; char data[1024]; } msg; mach_msg_return_t retval; /* Wait for a message on the exception port. */ retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg), our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); if (retval != MACH_MSG_SUCCESS) abort (); exit (1); } static void nocrash_init (void) { mach_port_t self = mach_task_self (); /* Allocate a port on which the thread shall listen for exceptions. */ if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port) == KERN_SUCCESS) { /* See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */ if (mach_port_insert_right (self, our_exception_port, our_exception_port, MACH_MSG_TYPE_MAKE_SEND) == KERN_SUCCESS) { /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting for us. */ exception_mask_t mask = EXC_MASK_BAD_ACCESS; /* Create the thread listening on the exception port. */ pthread_attr_t attr; pthread_t thread; if (pthread_attr_init (&attr) == 0 && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0 && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) { pthread_attr_destroy (&attr); /* Replace the exception port info for these exceptions with our own. Note that we replace the exception port for the entire task, not only for a particular thread. This has the effect that when our exception port gets the message, the thread specific exception port has already been asked, and we don't need to bother about it. See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */ task_set_exception_ports (self, mask, our_exception_port, EXCEPTION_DEFAULT, MACHINE_THREAD_STATE); } } } } #elif defined _WIN32 && ! defined __CYGWIN__ /* Avoid a crash on native Windows. */ #define WIN32_LEAN_AND_MEAN #include #include static LONG WINAPI exception_filter (EXCEPTION_POINTERS *ExceptionInfo) { switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_IN_PAGE_ERROR: case EXCEPTION_STACK_OVERFLOW: case EXCEPTION_GUARD_PAGE: case EXCEPTION_PRIV_INSTRUCTION: case EXCEPTION_ILLEGAL_INSTRUCTION: case EXCEPTION_DATATYPE_MISALIGNMENT: case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: case EXCEPTION_NONCONTINUABLE_EXCEPTION: exit (1); } return EXCEPTION_CONTINUE_SEARCH; } static void nocrash_init (void) { SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter); } #else /* Avoid a crash on POSIX systems. */ #include #include /* A POSIX signal handler. */ static void exception_handler (int sig) { _exit (1); } static void nocrash_init (void) { #ifdef SIGSEGV signal (SIGSEGV, exception_handler); #endif #ifdef SIGBUS signal (SIGBUS, exception_handler); #endif } #endif #include #include #include #include #include int main() { struct rlimit limit; int ret; nocrash_init (); /* Some printf implementations allocate temporary space with malloc. */ /* On BSD systems, malloc() is limited by RLIMIT_DATA. */ #ifdef RLIMIT_DATA if (getrlimit (RLIMIT_DATA, &limit) < 0) return 77; if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000) limit.rlim_max = 5000000; limit.rlim_cur = limit.rlim_max; if (setrlimit (RLIMIT_DATA, &limit) < 0) return 77; #endif /* On Linux systems, malloc() is limited by RLIMIT_AS. */ #ifdef RLIMIT_AS if (getrlimit (RLIMIT_AS, &limit) < 0) return 77; if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000) limit.rlim_max = 5000000; limit.rlim_cur = limit.rlim_max; if (setrlimit (RLIMIT_AS, &limit) < 0) return 77; #endif /* Some printf implementations allocate temporary space on the stack. */ #ifdef RLIMIT_STACK if (getrlimit (RLIMIT_STACK, &limit) < 0) return 77; if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000) limit.rlim_max = 5000000; limit.rlim_cur = limit.rlim_max; if (setrlimit (RLIMIT_STACK, &limit) < 0) return 77; #endif ret = printf ("%.5000000f", 1.0); return !(ret == 5000002 || (ret < 0 && errno == ENOMEM)); } _ACEOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then (./conftest 2>&5 result=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $result" >&5 if test $result != 0 && test $result != 77; then result=1; fi exit $result ) >/dev/null 2>/dev/null case $? in 0) gl_cv_func_printf_enomem="yes" ;; 77) gl_cv_func_printf_enomem="guessing no" ;; *) gl_cv_func_printf_enomem="no" ;; esac else gl_cv_func_printf_enomem="guessing no" fi rm -fr conftest* else gl_cv_func_printf_enomem="guessing no" fi fi if test "$gl_cv_func_printf_enomem" = "guessing no"; then case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on Solaris. solaris*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on AIX. aix*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on HP-UX/hppa. hpux*) case "$host_cpu" in hppa*) gl_cv_func_printf_enomem="guessing yes";; *) gl_cv_func_printf_enomem="guessing no";; esac ;; # Guess yes on IRIX. irix*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on OSF/1. osf*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on Haiku. haiku*) gl_cv_func_printf_enomem="guessing yes";; # Guess no on Android. linux*-android*) gl_cv_func_printf_enomem="guessing no";; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_enomem="$gl_cross_guess_normal";; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_enomem" >&5 printf "%s\n" "$gl_cv_func_printf_enomem" >&6; } case "$gl_cv_func_printf_long_double" in *yes) ;; *) printf "%s\n" "#define NEED_PRINTF_LONG_DOUBLE 1" >>confdefs.h ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether uses 'inline' correctly" >&5 printf %s "checking whether uses 'inline' correctly... " >&6; } if test ${gl_cv_header_wchar_h_correct_inline+y} then : printf %s "(cached) " >&6 else $as_nop gl_cv_header_wchar_h_correct_inline=yes case "$host_os" in *-gnu* | gnu*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define wcstod renamed_wcstod #include extern int zero (void); int main () { return zero(); } _ACEOF save_ac_compile="$ac_compile" ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest1/` if echo '#include "conftest.c"' >conftest1.c \ && { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define wcstod renamed_wcstod #include int zero (void) { return 0; } _ACEOF ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest2/` if echo '#include "conftest.c"' >conftest2.c \ && { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&5 2>&1; then : else gl_cv_header_wchar_h_correct_inline=no fi fi fi ac_compile="$save_ac_compile" rm -f conftest12.c conftest12.$ac_objext conftest$ac_exeext ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_wchar_h_correct_inline" >&5 printf "%s\n" "$gl_cv_header_wchar_h_correct_inline" >&6; } if test $gl_cv_header_wchar_h_correct_inline = no; then as_fn_error $? " cannot be used with this compiler ($CC $CFLAGS $CPPFLAGS). This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in C99 mode. You have four options: - Add the flag -fgnu89-inline to CC and reconfigure, or - Fix your include files, using parts of , or - Use a gcc version older than 4.3, or - Don't use the flags -std=c99 or -std=gnu99. Configuration aborted." "$LINENO" 5 fi if test $ac_cv_header_crtdefs_h = yes; then HAVE_CRTDEFS_H=1 else HAVE_CRTDEFS_H=0 fi if test $gl_cv_have_include_next = yes; then gl_cv_next_wchar_h='<'wchar.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_wchar_h+y} then : printf %s "(cached) " >&6 else $as_nop if test $ac_cv_header_wchar_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'wchar.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_wchar_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_wchar_h gl_cv_next_wchar_h='"'$gl_header'"' else gl_cv_next_wchar_h='<'wchar.h'>' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wchar_h" >&5 printf "%s\n" "$gl_cv_next_wchar_h" >&6; } fi NEXT_WCHAR_H=$gl_cv_next_wchar_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'wchar.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_wchar_h fi NEXT_AS_FIRST_DIRECTIVE_WCHAR_H=$gl_next_as_first_directive if test $ac_cv_header_wchar_h = yes; then HAVE_WCHAR_H=1 else HAVE_WCHAR_H=0 fi if test $gt_cv_c_wint_t = yes; then HAVE_WINT_T=1 else HAVE_WINT_T=0 fi ac_fn_check_decl "$LINENO" "wcsdup" "ac_cv_have_decl_wcsdup" " #include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_wcsdup" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_WCSDUP $ac_have_decl" >>confdefs.h if test $ac_cv_have_decl_wcsdup = no; then HAVE_DECL_WCSDUP=0 fi HAVE_ISWBLANK=1; HAVE_WCTYPE_T=1; HAVE_WCTRANS_T=1; REPLACE_ISWBLANK=0; REPLACE_ISWDIGIT=0; REPLACE_ISWXDIGIT=0; if test $ac_cv_func_iswcntrl = yes; then HAVE_ISWCNTRL=1 else HAVE_ISWCNTRL=0 fi if test $gt_cv_c_wint_t = yes; then HAVE_WINT_T=1 else HAVE_WINT_T=0 fi if test $gl_cv_have_include_next = yes; then gl_cv_next_wctype_h='<'wctype.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_wctype_h+y} then : printf %s "(cached) " >&6 else $as_nop if test $ac_cv_header_wctype_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'wctype.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_wctype_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_wctype_h gl_cv_next_wctype_h='"'$gl_header'"' else gl_cv_next_wctype_h='<'wctype.h'>' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wctype_h" >&5 printf "%s\n" "$gl_cv_next_wctype_h" >&6; } fi NEXT_WCTYPE_H=$gl_cv_next_wctype_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'wctype.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_wctype_h fi NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H=$gl_next_as_first_directive if test $ac_cv_header_wctype_h = yes; then if test $ac_cv_func_iswcntrl = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether iswcntrl works" >&5 printf %s "checking whether iswcntrl works... " >&6; } if test ${gl_cv_func_iswcntrl_works+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if __GNU_LIBRARY__ == 1 Linux libc5 i18n is broken. #endif int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_func_iswcntrl_works="guessing yes" else $as_nop gl_cv_func_iswcntrl_works="guessing no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return iswprint ('x') == 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_iswcntrl_works=yes else $as_nop gl_cv_func_iswcntrl_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_iswcntrl_works" >&5 printf "%s\n" "$gl_cv_func_iswcntrl_works" >&6; } fi HAVE_WCTYPE_H=1 else HAVE_WCTYPE_H=0 fi if test $GNULIBHEADERS_OVERRIDE_WINT_T = 1; then REPLACE_ISWCNTRL=1 else case "$gl_cv_func_iswcntrl_works" in *yes) REPLACE_ISWCNTRL=0 ;; *) REPLACE_ISWCNTRL=1 ;; esac fi if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then : fi if test $REPLACE_ISWCNTRL = 1; then REPLACE_TOWLOWER=1 else ac_fn_c_check_func "$LINENO" "towlower" "ac_cv_func_towlower" if test "x$ac_cv_func_towlower" = xyes then : printf "%s\n" "#define HAVE_TOWLOWER 1" >>confdefs.h fi if test $ac_cv_func_towlower = yes; then REPLACE_TOWLOWER=0 else ac_fn_check_decl "$LINENO" "towlower" "ac_cv_have_decl_towlower" "#include #if HAVE_WCTYPE_H # include #endif " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_towlower" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_TOWLOWER $ac_have_decl" >>confdefs.h if test $ac_cv_have_decl_towlower = yes; then REPLACE_TOWLOWER=1 else REPLACE_TOWLOWER=0 fi fi fi if test $HAVE_ISWCNTRL = 0 || test $REPLACE_TOWLOWER = 1; then : fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wctype_t" >&5 printf %s "checking for wctype_t... " >&6; } if test ${gl_cv_type_wctype_t+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if HAVE_WCTYPE_H # include #endif wctype_t a; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_type_wctype_t=yes else $as_nop gl_cv_type_wctype_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wctype_t" >&5 printf "%s\n" "$gl_cv_type_wctype_t" >&6; } if test $gl_cv_type_wctype_t = no; then HAVE_WCTYPE_T=0 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wctrans_t" >&5 printf %s "checking for wctrans_t... " >&6; } if test ${gl_cv_type_wctrans_t+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include wctrans_t a; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_type_wctrans_t=yes else $as_nop gl_cv_type_wctrans_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wctrans_t" >&5 printf "%s\n" "$gl_cv_type_wctrans_t" >&6; } if test $gl_cv_type_wctrans_t = no; then HAVE_WCTRANS_T=0 fi GL_GNULIB_ISWBLANK=0 GL_GNULIB_ISWDIGIT=0 GL_GNULIB_ISWXDIGIT=0 GL_GNULIB_WCTYPE=0 GL_GNULIB_ISWCTYPE=0 GL_GNULIB_WCTRANS=0 GL_GNULIB_TOWCTRANS=0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler option to allow warnings" >&5 printf %s "checking for C compiler option to allow warnings... " >&6; } if test ${gl_cv_cc_wallow+y} then : printf %s "(cached) " >&6 else $as_nop rm -f conftest* echo 'int dummy;' > conftest.c { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } >/dev/null { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } >/dev/null if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then gl_cv_cc_wallow='-Wno-error' else gl_cv_cc_wallow=none fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_wallow" >&5 printf "%s\n" "$gl_cv_cc_wallow" >&6; } case "$gl_cv_cc_wallow" in none) GL_CFLAG_ALLOW_WARNINGS='' ;; *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; esac GL_CFLAG_GNULIB_WARNINGS='' if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then cat > conftest.c <<\EOF #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) -Wno-cast-qual -Wno-conversion -Wno-float-equal -Wno-sign-compare -Wno-undef -Wno-unused-function -Wno-unused-parameter #endif #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) -Wno-float-conversion #endif #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) -Wimplicit-fallthrough #endif #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) -Wno-pedantic #endif #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) -Wno-sign-conversion -Wno-type-limits #endif #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 -Wno-unsuffixed-float-constants #endif EOF gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gl_command\""; } >&5 (eval $gl_command) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then gl_options=`grep -v '#' conftest.out` for word in $gl_options; do GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" done fi rm -f conftest.c conftest.out fi if true; then GL_COND_LIBTOOL_TRUE= GL_COND_LIBTOOL_FALSE='#' else GL_COND_LIBTOOL_TRUE='#' GL_COND_LIBTOOL_FALSE= fi gl_cond_libtool=true gl_m4_base='m4' gl_source_base='lib' gl_source_base_prefix= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alignas and alignof" >&5 printf %s "checking for alignas and alignof... " >&6; } if test ${gl_cv_header_working_stdalign_h+y} then : printf %s "(cached) " >&6 else $as_nop gl_save_CFLAGS=$CFLAGS for gl_working in "yes, keywords" "yes, macros"; do case $gl_working in #( *stdalign.h*) : CFLAGS="$gl_save_CFLAGS -DINCLUDE_STDALIGN_H" ;; #( *) : ;; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef INCLUDE_STDALIGN_H #include #endif #include /* Test that alignof yields a result consistent with offsetof. This catches GCC bug 52023 . */ #ifdef __cplusplus template struct alignof_helper { char a; t b; }; # define ao(type) offsetof (alignof_helper, b) #else # define ao(type) offsetof (struct { char a; type b; }, b) #endif char test_double[ao (double) % _Alignof (double) == 0 ? 1 : -1]; char test_long[ao (long int) % _Alignof (long int) == 0 ? 1 : -1]; char test_alignof[alignof (double) == _Alignof (double) ? 1 : -1]; /* Test alignas only on platforms where gnulib can help. */ #if \ ((defined __cplusplus && 201103 <= __cplusplus) \ || (__TINYC__ && defined __attribute__) \ || (defined __APPLE__ && defined __MACH__ \ ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \ : __GNUC__) \ || (__ia64 && (61200 <= __HP_cc || 61200 <= __HP_aCC)) \ || __ICC || 0x590 <= __SUNPRO_C || 0x0600 <= __xlC__ \ || 1300 <= _MSC_VER) struct alignas_test { char c; char alignas (8) alignas_8; }; char test_alignas[offsetof (struct alignas_test, alignas_8) == 8 ? 1 : -1]; #endif int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_header_working_stdalign_h=$gl_working else $as_nop gl_cv_header_working_stdalign_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$gl_save_CFLAGS test "$gl_cv_header_working_stdalign_h" != no && break done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_stdalign_h" >&5 printf "%s\n" "$gl_cv_header_working_stdalign_h" >&6; } case $gl_cv_header_working_stdalign_h in #( yes*keyword*) : printf "%s\n" "#define HAVE_C_ALIGNASOF 1" >>confdefs.h ;; #( *) : ;; esac if test $ac_cv_func_alloca_works = no; then : fi # Define an additional variable used in the Makefile substitution. if test $ac_cv_working_alloca_h = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 printf %s "checking for alloca as a compiler built-in... " >&6; } if test ${gl_cv_rpl_alloca+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __GNUC__ || defined _AIX || defined _MSC_VER Need own alloca #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Need own alloca" >/dev/null 2>&1 then : gl_cv_rpl_alloca=yes else $as_nop gl_cv_rpl_alloca=no fi rm -rf conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 printf "%s\n" "$gl_cv_rpl_alloca" >&6; } if test $gl_cv_rpl_alloca = yes; then printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h GL_GENERATE_ALLOCA_H=true else GL_GENERATE_ALLOCA_H=false fi else GL_GENERATE_ALLOCA_H=true fi if test $ac_cv_working_alloca_h = yes; then HAVE_ALLOCA_H=1 else HAVE_ALLOCA_H=0 fi case "$GL_GENERATE_ALLOCA_H" in false) ALLOCA_H='' ;; true) if test -z "$ALLOCA_H"; then ALLOCA_H="${gl_source_base_prefix}alloca.h" fi ;; *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;; esac if $GL_GENERATE_ALLOCA_H; then GL_GENERATE_ALLOCA_H_TRUE= GL_GENERATE_ALLOCA_H_FALSE='#' else GL_GENERATE_ALLOCA_H_TRUE='#' GL_GENERATE_ALLOCA_H_FALSE= fi : if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then GL_GENERATE_ALLOCA_H_TRUE='#' GL_GENERATE_ALLOCA_H_FALSE='#' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for static_assert" >&5 printf %s "checking for static_assert... " >&6; } if test ${gl_cv_static_assert+y} then : printf %s "(cached) " >&6 else $as_nop gl_save_CFLAGS=$CFLAGS for gl_working in "yes, a keyword" "yes, an macro"; do case $gl_working in #( *assert.h*) : CFLAGS="$gl_save_CFLAGS -DINCLUDE_ASSERT_H" ;; #( *) : ;; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __clang__ && __STDC_VERSION__ < 202311 #pragma clang diagnostic error "-Wc2x-extensions" #pragma clang diagnostic error "-Wc++1z-extensions" #endif #ifdef INCLUDE_ASSERT_H #include #endif static_assert (2 + 2 == 4, "arithmetic does not work"); static_assert (2 + 2 == 4); int main (void) { static_assert (sizeof (char) == 1, "sizeof does not work"); static_assert (sizeof (char) == 1); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_static_assert=$gl_working else $as_nop gl_cv_static_assert=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$gl_save_CFLAGS test "$gl_cv_static_assert" != no && break done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_static_assert" >&5 printf "%s\n" "$gl_cv_static_assert" >&6; } GL_GENERATE_ASSERT_H=false case $gl_cv_static_assert in #( yes*keyword*) : printf "%s\n" "#define HAVE_C_STATIC_ASSERT 1" >>confdefs.h ;; #( no) : GL_GENERATE_ASSERT_H=true if test $gl_cv_have_include_next = yes; then gl_cv_next_assert_h='<'assert.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_assert_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'assert.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_assert_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_assert_h gl_cv_next_assert_h='"'$gl_header'"' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_assert_h" >&5 printf "%s\n" "$gl_cv_next_assert_h" >&6; } fi NEXT_ASSERT_H=$gl_cv_next_assert_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'assert.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_assert_h fi NEXT_AS_FIRST_DIRECTIVE_ASSERT_H=$gl_next_as_first_directive ;; #( *) : ;; esac case "$GL_GENERATE_ASSERT_H" in false) ASSERT_H='' ;; true) if test -z "$ASSERT_H"; then ASSERT_H="${gl_source_base_prefix}assert.h" fi ;; *) echo "*** GL_GENERATE_ASSERT_H is not set correctly" 1>&2; exit 1 ;; esac if $GL_GENERATE_ASSERT_H; then GL_GENERATE_ASSERT_H_TRUE= GL_GENERATE_ASSERT_H_FALSE='#' else GL_GENERATE_ASSERT_H_TRUE='#' GL_GENERATE_ASSERT_H_FALSE= fi : if test -z "${GL_GENERATE_ASSERT_H_TRUE}" && test -z "${GL_GENERATE_ASSERT_H_FALSE}"; then GL_GENERATE_ASSERT_H_TRUE='#' GL_GENERATE_ASSERT_H_FALSE='#' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __builtin_expect" >&5 printf %s "checking for __builtin_expect... " >&6; } if test ${gl_cv___builtin_expect+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (int argc, char **argv) { argc = __builtin_expect (argc, 100); return argv[argc != 100][0]; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv___builtin_expect=yes else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (int argc, char **argv) { argc = __builtin_expect (argc, 100); return argv[argc != 100][0]; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv___builtin_expect="in " else $as_nop gl_cv___builtin_expect=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv___builtin_expect" >&5 printf "%s\n" "$gl_cv___builtin_expect" >&6; } if test "$gl_cv___builtin_expect" = yes; then printf "%s\n" "#define HAVE___BUILTIN_EXPECT 1" >>confdefs.h elif test "$gl_cv___builtin_expect" = "in "; then printf "%s\n" "#define HAVE___BUILTIN_EXPECT 2" >>confdefs.h fi REPLACE_CALLOC_FOR_CALLOC_GNU="$REPLACE_CALLOC_FOR_CALLOC_POSIX" if test $REPLACE_CALLOC_FOR_CALLOC_GNU = 0; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether calloc (0, n) and calloc (n, 0) return nonnull" >&5 printf %s "checking whether calloc (0, n) and calloc (n, 0) return nonnull... " >&6; } if test ${ac_cv_func_calloc_0_nonnull+y} then : printf %s "(cached) " >&6 else $as_nop if test $cross_compiling != yes; then ac_cv_func_calloc_0_nonnull=yes if test "$cross_compiling" = yes then : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main (void) { int result = 0; char * volatile p = calloc (0, 0); if (!p) result |= 1; free (p); return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : else $as_nop ac_cv_func_calloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; # Guess yes on musl systems. *-musl*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; # Guess yes on native Windows. mingw*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) ac_cv_func_calloc_0_nonnull="$gl_cross_guess_normal" ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_calloc_0_nonnull" >&5 printf "%s\n" "$ac_cv_func_calloc_0_nonnull" >&6; } case $ac_cv_func_calloc_0_nonnull in #( *yes) : ;; #( *) : REPLACE_CALLOC_FOR_CALLOC_GNU=1 ;; esac fi if test $REPLACE_CALLOC_FOR_CALLOC_GNU = 1; then gl_LIBOBJS="$gl_LIBOBJS calloc.$ac_objext" fi GL_GNULIB_CALLOC_GNU=1 printf "%s\n" "#define GNULIB_TEST_CALLOC_GNU 1" >>confdefs.h if test $REPLACE_MALLOC_FOR_MALLOC_POSIX = 1; then REPLACE_CALLOC_FOR_CALLOC_POSIX=1 fi if test $REPLACE_CALLOC_FOR_CALLOC_POSIX = 1; then gl_LIBOBJS="$gl_LIBOBJS calloc.$ac_objext" fi GL_GNULIB_CALLOC_POSIX=1 printf "%s\n" "#define GNULIB_TEST_CALLOC_POSIX 1" >>confdefs.h if test $ac_cv_func_canonicalize_file_name = no; then HAVE_CANONICALIZE_FILE_NAME=0 if test $ac_cv_func_realpath = no; then HAVE_REALPATH=0 else case "$gl_cv_func_realpath_works" in *yes) ;; *) REPLACE_REALPATH=1 ;; esac fi else case "$gl_cv_func_realpath_works" in *yes) ;; *) REPLACE_CANONICALIZE_FILE_NAME=1 REPLACE_REALPATH=1 ;; esac fi if test $HAVE_CANONICALIZE_FILE_NAME = 0 || test $REPLACE_CANONICALIZE_FILE_NAME = 1; then GL_COND_OBJ_CANONICALIZE_LGPL_TRUE= GL_COND_OBJ_CANONICALIZE_LGPL_FALSE='#' else GL_COND_OBJ_CANONICALIZE_LGPL_TRUE='#' GL_COND_OBJ_CANONICALIZE_LGPL_FALSE= fi : if test -z "${GL_COND_OBJ_CANONICALIZE_LGPL_TRUE}" && test -z "${GL_COND_OBJ_CANONICALIZE_LGPL_FALSE}"; then GL_COND_OBJ_CANONICALIZE_LGPL_TRUE='#' GL_COND_OBJ_CANONICALIZE_LGPL_FALSE='#' fi printf "%s\n" "#define GNULIB_CANONICALIZE_LGPL 1" >>confdefs.h GL_GNULIB_CANONICALIZE_FILE_NAME=1 printf "%s\n" "#define GNULIB_TEST_CANONICALIZE_FILE_NAME 1" >>confdefs.h GL_GNULIB_REALPATH=1 printf "%s\n" "#define GNULIB_TEST_REALPATH 1" >>confdefs.h # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. # Save and restore LIBS so e.g., -lrt, isn't added to it. Otherwise, *all* # programs in the package would end up linked with that potentially-shared # library, inducing unnecessary run-time overhead. CLOCK_TIME_LIB= gl_saved_libs=$LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 printf %s "checking for library containing clock_gettime... " >&6; } if test ${ac_cv_search_clock_gettime+y} then : printf %s "(cached) " >&6 else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char clock_gettime (); int main (void) { return clock_gettime (); ; return 0; } _ACEOF for ac_lib in '' rt posix4 do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_clock_gettime=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_clock_gettime+y} then : break fi done if test ${ac_cv_search_clock_gettime+y} then : else $as_nop ac_cv_search_clock_gettime=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } ac_res=$ac_cv_search_clock_gettime if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" test "$ac_cv_search_clock_gettime" = "none required" || CLOCK_TIME_LIB=$ac_cv_search_clock_gettime fi ac_fn_c_check_func "$LINENO" "clock_getres" "ac_cv_func_clock_getres" if test "x$ac_cv_func_clock_getres" = xyes then : printf "%s\n" "#define HAVE_CLOCK_GETRES 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime" if test "x$ac_cv_func_clock_gettime" = xyes then : printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "clock_settime" "ac_cv_func_clock_settime" if test "x$ac_cv_func_clock_settime" = xyes then : printf "%s\n" "#define HAVE_CLOCK_SETTIME 1" >>confdefs.h fi LIBS=$gl_saved_libs # For backward compatibility. LIB_CLOCK_GETTIME="$CLOCK_TIME_LIB" printf "%s\n" "#define GNULIB_TEST_CLOEXEC 1" >>confdefs.h if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then REPLACE_CLOSE=1 fi if test $ac_cv_header_sys_socket_h != yes; then ac_fn_c_check_header_compile "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default" if test "x$ac_cv_header_winsock2_h" = xyes then : printf "%s\n" "#define HAVE_WINSOCK2_H 1" >>confdefs.h fi fi if test "$ac_cv_header_winsock2_h" = yes; then HAVE_WINSOCK2_H=1 UNISTD_H_HAVE_WINSOCK2_H=1 SYS_IOCTL_H_HAVE_WINSOCK2_H=1 else HAVE_WINSOCK2_H=0 fi if test $UNISTD_H_HAVE_WINSOCK2_H = 1; then REPLACE_CLOSE=1 fi if test $REPLACE_CLOSE = 1; then GL_COND_OBJ_CLOSE_TRUE= GL_COND_OBJ_CLOSE_FALSE='#' else GL_COND_OBJ_CLOSE_TRUE='#' GL_COND_OBJ_CLOSE_FALSE= fi : if test -z "${GL_COND_OBJ_CLOSE_TRUE}" && test -z "${GL_COND_OBJ_CLOSE_FALSE}"; then GL_COND_OBJ_CLOSE_TRUE='#' GL_COND_OBJ_CLOSE_FALSE='#' fi GL_GNULIB_CLOSE=1 printf "%s\n" "#define GNULIB_TEST_CLOSE 1" >>confdefs.h printf "%s\n" "#define GNULIB_DIRNAME 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether // is distinct from /" >&5 printf %s "checking whether // is distinct from /... " >&6; } if test ${gl_cv_double_slash_root+y} then : printf %s "(cached) " >&6 else $as_nop if test x"$cross_compiling" = xyes ; then # When cross-compiling, there is no way to tell whether // is special # short of a list of hosts. However, the only known hosts to date # that have a distinct // are Apollo DomainOS (too old to port to), # Cygwin, and z/OS. If anyone knows of another system for which // has # special semantics and is distinct from /, please report it to # . case $host in *-cygwin | i370-ibm-openedition) gl_cv_double_slash_root=yes ;; *) # Be optimistic and assume that / and // are the same when we # don't know. gl_cv_double_slash_root='unknown, assuming no' ;; esac else set x `ls -di / // 2>/dev/null` if test "$2" = "$4" && wc //dev/null >/dev/null 2>&1; then gl_cv_double_slash_root=no else gl_cv_double_slash_root=yes fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_double_slash_root" >&5 printf "%s\n" "$gl_cv_double_slash_root" >&6; } if test "$gl_cv_double_slash_root" = yes; then printf "%s\n" "#define DOUBLE_SLASH_IS_DISTINCT_ROOT 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether dup2 works" >&5 printf %s "checking whether dup2 works... " >&6; } if test ${gl_cv_func_dup2_works+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in mingw*) # on this platform, dup2 always returns 0 for success gl_cv_func_dup2_works="guessing no" ;; cygwin*) # on cygwin 1.5.x, dup2(1,1) returns 0 gl_cv_func_dup2_works="guessing no" ;; aix* | freebsd*) # on AIX 7.1 and FreeBSD 6.1, dup2 (1,toobig) gives EMFILE, # not EBADF. gl_cv_func_dup2_works="guessing no" ;; haiku*) # on Haiku alpha 2, dup2(1, 1) resets FD_CLOEXEC. gl_cv_func_dup2_works="guessing no" ;; *-android*) # implemented using dup3(), which fails if oldfd == newfd gl_cv_func_dup2_works="guessing no" ;; os2*) # on OS/2 kLIBC, dup2() does not work on a directory fd. gl_cv_func_dup2_works="guessing no" ;; *) gl_cv_func_dup2_works="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #include $gl_mda_defines #ifndef RLIM_SAVED_CUR # define RLIM_SAVED_CUR RLIM_INFINITY #endif #ifndef RLIM_SAVED_MAX # define RLIM_SAVED_MAX RLIM_INFINITY #endif int main (void) { int result = 0; int bad_fd = INT_MAX; struct rlimit rlim; if (getrlimit (RLIMIT_NOFILE, &rlim) == 0 && 0 <= rlim.rlim_cur && rlim.rlim_cur <= INT_MAX && rlim.rlim_cur != RLIM_INFINITY && rlim.rlim_cur != RLIM_SAVED_MAX && rlim.rlim_cur != RLIM_SAVED_CUR) bad_fd = rlim.rlim_cur; #ifdef FD_CLOEXEC if (fcntl (1, F_SETFD, FD_CLOEXEC) == -1) result |= 1; #endif if (dup2 (1, 1) != 1) result |= 2; #ifdef FD_CLOEXEC if (fcntl (1, F_GETFD) != FD_CLOEXEC) result |= 4; #endif close (0); if (dup2 (0, 0) != -1) result |= 8; /* Many gnulib modules require POSIX conformance of EBADF. */ if (dup2 (2, bad_fd) == -1 && errno != EBADF) result |= 16; /* Flush out some cygwin core dumps. */ if (dup2 (2, -1) != -1 || errno != EBADF) result |= 32; dup2 (2, 255); dup2 (2, 256); /* On OS/2 kLIBC, dup2() does not work on a directory fd. */ { int fd = open (".", O_RDONLY); if (fd == -1) result |= 64; else if (dup2 (fd, fd + 1) == -1) result |= 128; close (fd); } return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_dup2_works=yes else $as_nop gl_cv_func_dup2_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_dup2_works" >&5 printf "%s\n" "$gl_cv_func_dup2_works" >&6; } case "$gl_cv_func_dup2_works" in *yes) ;; *) REPLACE_DUP2=1 ac_fn_c_check_func "$LINENO" "setdtablesize" "ac_cv_func_setdtablesize" if test "x$ac_cv_func_setdtablesize" = xyes then : printf "%s\n" "#define HAVE_SETDTABLESIZE 1" >>confdefs.h fi ;; esac if test $REPLACE_DUP2 = 1; then GL_COND_OBJ_DUP2_TRUE= GL_COND_OBJ_DUP2_FALSE='#' else GL_COND_OBJ_DUP2_TRUE='#' GL_COND_OBJ_DUP2_FALSE= fi : if test -z "${GL_COND_OBJ_DUP2_TRUE}" && test -z "${GL_COND_OBJ_DUP2_FALSE}"; then GL_COND_OBJ_DUP2_TRUE='#' GL_COND_OBJ_DUP2_FALSE='#' fi if test -z "$GL_COND_OBJ_DUP2_TRUE"; then : fi GL_GNULIB_DUP2=1 printf "%s\n" "#define GNULIB_TEST_DUP2 1" >>confdefs.h case "$GL_GENERATE_ERRNO_H" in false) ERRNO_H='' ;; true) if test -z "$ERRNO_H"; then ERRNO_H="${gl_source_base_prefix}errno.h" fi ;; *) echo "*** GL_GENERATE_ERRNO_H is not set correctly" 1>&2; exit 1 ;; esac if $GL_GENERATE_ERRNO_H; then GL_GENERATE_ERRNO_H_TRUE= GL_GENERATE_ERRNO_H_FALSE='#' else GL_GENERATE_ERRNO_H_TRUE='#' GL_GENERATE_ERRNO_H_FALSE= fi : if test -z "${GL_GENERATE_ERRNO_H_TRUE}" && test -z "${GL_GENERATE_ERRNO_H_FALSE}"; then GL_GENERATE_ERRNO_H_TRUE='#' GL_GENERATE_ERRNO_H_FALSE='#' fi if test $GL_GENERATE_ERROR_H = true; then GL_COND_OBJ_ERROR_TRUE= GL_COND_OBJ_ERROR_FALSE='#' else GL_COND_OBJ_ERROR_TRUE='#' GL_COND_OBJ_ERROR_FALSE= fi : if test -z "${GL_COND_OBJ_ERROR_TRUE}" && test -z "${GL_COND_OBJ_ERROR_FALSE}"; then GL_COND_OBJ_ERROR_TRUE='#' GL_COND_OBJ_ERROR_FALSE='#' fi if test -z "$GL_COND_OBJ_ERROR_TRUE"; then : : fi XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error:3:c-format" XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error_at_line:5:c-format" case "$GL_GENERATE_ERROR_H" in false) ERROR_H='' ;; true) if test -z "$ERROR_H"; then ERROR_H="${gl_source_base_prefix}error.h" fi ;; *) echo "*** GL_GENERATE_ERROR_H is not set correctly" 1>&2; exit 1 ;; esac if $GL_GENERATE_ERROR_H; then GL_GENERATE_ERROR_H_TRUE= GL_GENERATE_ERROR_H_FALSE='#' else GL_GENERATE_ERROR_H_TRUE='#' GL_GENERATE_ERROR_H_FALSE= fi : if test -z "${GL_GENERATE_ERROR_H_TRUE}" && test -z "${GL_GENERATE_ERROR_H_FALSE}"; then GL_GENERATE_ERROR_H_TRUE='#' GL_GENERATE_ERROR_H_FALSE='#' fi if test $ac_cv_func_fcntl = no; then if test $ac_cv_func_fcntl = no; then HAVE_FCNTL=0 else REPLACE_FCNTL=1 fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether fcntl handles F_DUPFD correctly" >&5 printf %s "checking whether fcntl handles F_DUPFD correctly... " >&6; } if test ${gl_cv_func_fcntl_f_dupfd_works+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case $host_os in aix* | cygwin* | haiku*) gl_cv_func_fcntl_f_dupfd_works="guessing no" ;; *) gl_cv_func_fcntl_f_dupfd_works="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #include $gl_mda_defines #ifndef RLIM_SAVED_CUR # define RLIM_SAVED_CUR RLIM_INFINITY #endif #ifndef RLIM_SAVED_MAX # define RLIM_SAVED_MAX RLIM_INFINITY #endif int main (void) { int result = 0; int bad_fd = INT_MAX; struct rlimit rlim; if (getrlimit (RLIMIT_NOFILE, &rlim) == 0 && 0 <= rlim.rlim_cur && rlim.rlim_cur <= INT_MAX && rlim.rlim_cur != RLIM_INFINITY && rlim.rlim_cur != RLIM_SAVED_MAX && rlim.rlim_cur != RLIM_SAVED_CUR) bad_fd = rlim.rlim_cur; if (fcntl (0, F_DUPFD, -1) != -1) result |= 1; if (errno != EINVAL) result |= 2; if (fcntl (0, F_DUPFD, bad_fd) != -1) result |= 4; if (errno != EINVAL) result |= 8; /* On OS/2 kLIBC, F_DUPFD does not work on a directory fd */ { int fd; fd = open (".", O_RDONLY); if (fd == -1) result |= 16; else if (fcntl (fd, F_DUPFD, STDERR_FILENO + 1) == -1) result |= 32; close (fd); } return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_fcntl_f_dupfd_works=yes else $as_nop gl_cv_func_fcntl_f_dupfd_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fcntl_f_dupfd_works" >&5 printf "%s\n" "$gl_cv_func_fcntl_f_dupfd_works" >&6; } case $gl_cv_func_fcntl_f_dupfd_works in *yes) ;; *) if test $ac_cv_func_fcntl = no; then HAVE_FCNTL=0 else REPLACE_FCNTL=1 fi printf "%s\n" "#define FCNTL_DUPFD_BUGGY 1" >>confdefs.h ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether fcntl understands F_DUPFD_CLOEXEC" >&5 printf %s "checking whether fcntl understands F_DUPFD_CLOEXEC... " >&6; } if test ${gl_cv_func_fcntl_f_dupfd_cloexec+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess no on NetBSD. netbsd*) gl_cv_func_fcntl_f_dupfd_cloexec="guessing no" ;; *) gl_cv_func_fcntl_f_dupfd_cloexec="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (int argc, char *argv[]) { if (argc == 1) /* parent process */ { if (fcntl (1, F_DUPFD_CLOEXEC, 10) < 0) return 1; return execl ("./conftest", "./conftest", "child", NULL); } else /* child process */ return (fcntl (10, F_GETFL) < 0 ? 0 : 42); } _ACEOF if ac_fn_c_try_run "$LINENO" then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __linux__ /* The Linux kernel only added F_DUPFD_CLOEXEC in 2.6.24, so we always replace it to support the semantics on older kernels that failed with EINVAL. */ choke me #endif int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_func_fcntl_f_dupfd_cloexec=yes else $as_nop gl_cv_func_fcntl_f_dupfd_cloexec="needs runtime check" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext else $as_nop gl_cv_func_fcntl_f_dupfd_cloexec=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fcntl_f_dupfd_cloexec" >&5 printf "%s\n" "$gl_cv_func_fcntl_f_dupfd_cloexec" >&6; } case "$gl_cv_func_fcntl_f_dupfd_cloexec" in *yes) ;; *) if test $ac_cv_func_fcntl = no; then HAVE_FCNTL=0 else REPLACE_FCNTL=1 fi ;; esac fi if test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1; then GL_COND_OBJ_FCNTL_TRUE= GL_COND_OBJ_FCNTL_FALSE='#' else GL_COND_OBJ_FCNTL_TRUE='#' GL_COND_OBJ_FCNTL_FALSE= fi : if test -z "${GL_COND_OBJ_FCNTL_TRUE}" && test -z "${GL_COND_OBJ_FCNTL_FALSE}"; then GL_COND_OBJ_FCNTL_TRUE='#' GL_COND_OBJ_FCNTL_FALSE='#' fi GL_GNULIB_FCNTL=1 printf "%s\n" "#define GNULIB_TEST_FCNTL 1" >>confdefs.h GL_GENERATE_FLOAT_H=false REPLACE_FLOAT_LDBL=0 case "$host_os" in aix* | beos* | openbsd* | mirbsd* | irix*) GL_GENERATE_FLOAT_H=true ;; freebsd* | dragonfly*) case "$host_cpu" in i[34567]86 ) GL_GENERATE_FLOAT_H=true ;; x86_64 ) # On x86_64 systems, the C compiler may still be generating # 32-bit code. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __LP64__ || defined __x86_64__ || defined __amd64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop GL_GENERATE_FLOAT_H=true fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac ;; linux*) case "$host_cpu" in powerpc*) GL_GENERATE_FLOAT_H=true ;; esac ;; esac case "$host_os" in aix* | freebsd* | dragonfly* | linux*) if $GL_GENERATE_FLOAT_H; then REPLACE_FLOAT_LDBL=1 fi ;; esac REPLACE_ITOLD=0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether conversion from 'int' to 'long double' works" >&5 printf %s "checking whether conversion from 'int' to 'long double' works... " >&6; } if test ${gl_cv_func_itold_works+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host" in sparc*-*-linux*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __LP64__ || defined __arch64__ int ok; #else error fail #endif _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_func_itold_works="guessing no" else $as_nop gl_cv_func_itold_works="guessing yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; # Guess yes on native Windows. mingw*) gl_cv_func_itold_works="guessing yes" ;; *) gl_cv_func_itold_works="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int i = -1; volatile long double ld; int main () { ld += i * 1.0L; if (ld > 0) return 1; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_itold_works=yes else $as_nop gl_cv_func_itold_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_itold_works" >&5 printf "%s\n" "$gl_cv_func_itold_works" >&6; } case "$gl_cv_func_itold_works" in *no) REPLACE_ITOLD=1 GL_GENERATE_FLOAT_H=true ;; esac if $GL_GENERATE_FLOAT_H; then if test $gl_cv_have_include_next = yes; then gl_cv_next_float_h='<'float.h'>' else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 printf %s "checking absolute name of ... " >&6; } if test ${gl_cv_next_float_h+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'float.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_absolute_float_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"` gl_header=$gl_cv_absolute_float_h gl_cv_next_float_h='"'$gl_header'"' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_float_h" >&5 printf "%s\n" "$gl_cv_next_float_h" >&6; } fi NEXT_FLOAT_H=$gl_cv_next_float_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'float.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_float_h fi NEXT_AS_FIRST_DIRECTIVE_FLOAT_H=$gl_next_as_first_directive fi case "$GL_GENERATE_FLOAT_H" in false) FLOAT_H='' ;; true) if test -z "$FLOAT_H"; then FLOAT_H="${gl_source_base_prefix}float.h" fi ;; *) echo "*** GL_GENERATE_FLOAT_H is not set correctly" 1>&2; exit 1 ;; esac if $GL_GENERATE_FLOAT_H; then GL_GENERATE_FLOAT_H_TRUE= GL_GENERATE_FLOAT_H_FALSE='#' else GL_GENERATE_FLOAT_H_TRUE='#' GL_GENERATE_FLOAT_H_FALSE= fi : if test -z "${GL_GENERATE_FLOAT_H_TRUE}" && test -z "${GL_GENERATE_FLOAT_H_FALSE}"; then GL_GENERATE_FLOAT_H_TRUE='#' GL_GENERATE_FLOAT_H_FALSE='#' fi if test $REPLACE_FLOAT_LDBL = 1; then GL_COND_OBJ_FLOAT_TRUE= GL_COND_OBJ_FLOAT_FALSE='#' else GL_COND_OBJ_FLOAT_TRUE='#' GL_COND_OBJ_FLOAT_FALSE= fi : if test -z "${GL_COND_OBJ_FLOAT_TRUE}" && test -z "${GL_COND_OBJ_FLOAT_FALSE}"; then GL_COND_OBJ_FLOAT_TRUE='#' GL_COND_OBJ_FLOAT_FALSE='#' fi if test $REPLACE_ITOLD = 1; then GL_COND_OBJ_ITOLD_TRUE= GL_COND_OBJ_ITOLD_FALSE='#' else GL_COND_OBJ_ITOLD_TRUE='#' GL_COND_OBJ_ITOLD_FALSE= fi : if test -z "${GL_COND_OBJ_ITOLD_TRUE}" && test -z "${GL_COND_OBJ_ITOLD_FALSE}"; then GL_COND_OBJ_ITOLD_TRUE='#' GL_COND_OBJ_ITOLD_FALSE='#' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether free is known to preserve errno" >&5 printf %s "checking whether free is known to preserve errno... " >&6; } if test ${gl_cv_func_free_preserves_errno+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { #if 2 < __GLIBC__ + (33 <= __GLIBC_MINOR__) #elif defined __OpenBSD__ #elif defined __sun #else #error "'free' is not known to preserve errno" #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_func_free_preserves_errno=yes else $as_nop gl_cv_func_free_preserves_errno=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_free_preserves_errno" >&5 printf "%s\n" "$gl_cv_func_free_preserves_errno" >&6; } case $gl_cv_func_free_preserves_errno in *yes) printf "%s\n" "#define HAVE_FREE_POSIX 1" >>confdefs.h ;; *) REPLACE_FREE=1 ;; esac if test $REPLACE_FREE = 1; then GL_COND_OBJ_FREE_TRUE= GL_COND_OBJ_FREE_FALSE='#' else GL_COND_OBJ_FREE_TRUE='#' GL_COND_OBJ_FREE_FALSE= fi : if test -z "${GL_COND_OBJ_FREE_TRUE}" && test -z "${GL_COND_OBJ_FREE_FALSE}"; then GL_COND_OBJ_FREE_TRUE='#' GL_COND_OBJ_FREE_FALSE='#' fi if test -z "$GL_COND_OBJ_FREE_TRUE"; then : : fi GL_GNULIB_FREE_POSIX=1 printf "%s\n" "#define GNULIB_TEST_FREE_POSIX 1" >>confdefs.h if test $gl_cv_func_frexp_no_libm = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether frexp works" >&5 printf %s "checking whether frexp works... " >&6; } if test ${gl_cv_func_frexp_works+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in netbsd* | irix*) gl_cv_func_frexp_works="guessing no" ;; mingw*) # Guess yes with MSVC, no with mingw. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _MSC_VER Good #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Good" >/dev/null 2>&1 then : gl_cv_func_frexp_works="guessing yes" else $as_nop gl_cv_func_frexp_works="guessing no" fi rm -rf conftest* ;; *) gl_cv_func_frexp_works="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #if HAVE_DECL_ALARM # include # include #endif /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. ICC 10.0 has a bug when optimizing the expression -zero. The expression -DBL_MIN * DBL_MIN does not work when cross-compiling to PowerPC on Mac OS X 10.5. */ #if defined __hpux || defined __sgi || defined __ICC static double compute_minus_zero (void) { return -DBL_MIN * DBL_MIN; } # define minus_zero compute_minus_zero () #else double minus_zero = -0.0; #endif int main() { int result = 0; int i; volatile double x; double zero = 0.0; #if HAVE_DECL_ALARM /* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite number. Let the test fail in this case. */ signal (SIGALRM, SIG_DFL); alarm (5); #endif /* Test on denormalized numbers. */ for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5) ; if (x > 0.0) { int exp; double y = frexp (x, &exp); /* On machines with IEEE754 arithmetic: x = 1.11254e-308, exp = -1022. On NetBSD: y = 0.75. Correct: y = 0.5. */ if (y != 0.5) result |= 1; } /* Test on infinite numbers. */ x = 1.0 / zero; { int exp; double y = frexp (x, &exp); if (y != x) result |= 2; } /* Test on negative zero. */ x = minus_zero; { int exp; double y = frexp (x, &exp); if (memcmp (&y, &x, sizeof x)) result |= 4; } return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_frexp_works=yes else $as_nop gl_cv_func_frexp_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexp_works" >&5 printf "%s\n" "$gl_cv_func_frexp_works" >&6; } case "$gl_cv_func_frexp_works" in *yes) gl_func_frexp_no_libm=yes ;; *) gl_func_frexp_no_libm=no; REPLACE_FREXP=1 ;; esac else gl_func_frexp_no_libm=no REPLACE_FREXP=1 fi if test $gl_func_frexp_no_libm = yes; then printf "%s\n" "#define HAVE_FREXP_IN_LIBC 1" >>confdefs.h fi if test $gl_func_frexp_no_libm != yes; then gl_LIBOBJS="$gl_LIBOBJS frexp.$ac_objext" fi GL_GNULIB_FREXP=1 printf "%s\n" "#define GNULIB_TEST_FREXP 1" >>confdefs.h ac_fn_check_decl "$LINENO" "frexpl" "ac_cv_have_decl_frexpl" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_frexpl" = xyes then : else $as_nop HAVE_DECL_FREXPL=0 fi if test $HAVE_DECL_FREXPL = 1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether frexpl() can be used without linking with libm" >&5 printf %s "checking whether frexpl() can be used without linking with libm... " >&6; } if test ${gl_cv_func_frexpl_no_libm+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include long double x; int main (void) { int e; return frexpl (x, &e) > 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_func_frexpl_no_libm=yes else $as_nop gl_cv_func_frexpl_no_libm=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexpl_no_libm" >&5 printf "%s\n" "$gl_cv_func_frexpl_no_libm" >&6; } if test $gl_cv_func_frexpl_no_libm = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether frexpl works" >&5 printf %s "checking whether frexpl works... " >&6; } if test ${gl_cv_func_frexpl_works+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in aix | aix[3-6]* | beos* | darwin* | irix* | mingw* | pw*) gl_cv_func_frexpl_works="guessing no";; *) gl_cv_func_frexpl_works="guessing yes";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include /* Override the values of , like done in float.in.h. */ #if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__) # undef LDBL_MIN_EXP # define LDBL_MIN_EXP (-16381) #endif #if defined __i386__ && (defined __FreeBSD__ || defined __DragonFly__) # undef LDBL_MIN_EXP # define LDBL_MIN_EXP (-16381) #endif #if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__ # undef LDBL_MIN_EXP # define LDBL_MIN_EXP DBL_MIN_EXP #endif #if defined __sgi && (LDBL_MANT_DIG >= 106) # if defined __GNUC__ # undef LDBL_MIN_EXP # define LDBL_MIN_EXP DBL_MIN_EXP # endif #endif extern #ifdef __cplusplus "C" #endif long double frexpl (long double, int *); long double zero = 0.0L; int main() { int result = 0; volatile long double x; /* Test on finite numbers that fails on AIX 5.1. */ x = 16.0L; { int exp = -9999; frexpl (x, &exp); if (exp != 5) result |= 1; } /* Test on finite numbers that fails on Mac OS X 10.4, because its frexpl function returns an invalid (incorrectly normalized) value: it returns y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 } but the correct result is 0.505L = { 0x3fe028f5, 0xc28f5c29, 0xbc547ae1, 0x47ae1480 } */ x = 1.01L; { int exp = -9999; long double y = frexpl (x, &exp); if (!(exp == 1 && y == 0.505L)) result |= 2; } /* Test on large finite numbers. This fails on BeOS at i = 16322, while LDBL_MAX_EXP = 16384. In the loop end test, we test x against Infinity, rather than comparing i with LDBL_MAX_EXP, because BeOS has a wrong LDBL_MAX_EXP. */ { int i; for (i = 1, x = 1.0L; x != x + x; i++, x *= 2.0L) { int exp = -9999; frexpl (x, &exp); if (exp != i) { result |= 4; break; } } } /* Test on denormalized numbers. */ { int i; for (i = 1, x = 1.0L; i >= LDBL_MIN_EXP; i--, x *= 0.5L) ; if (x > 0.0L) { int exp; long double y = frexpl (x, &exp); /* On machines with IEEE854 arithmetic: x = 1.68105e-4932, exp = -16382, y = 0.5. On Mac OS X 10.5: exp = -16384, y = 0.5. */ if (exp != LDBL_MIN_EXP - 1) result |= 8; } } /* Test on infinite numbers. */ /* The Microsoft MSVC 14 compiler chokes on the expression 1.0 / 0.0. */ x = 1.0L / zero; { int exp; long double y = frexpl (x, &exp); if (y != x) result |= 16; } return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_frexpl_works=yes else $as_nop gl_cv_func_frexpl_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexpl_works" >&5 printf "%s\n" "$gl_cv_func_frexpl_works" >&6; } case "$gl_cv_func_frexpl_works" in *yes) gl_func_frexpl_no_libm=yes ;; *) gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;; esac else gl_func_frexpl_no_libm=no REPLACE_FREXPL=1 fi if test $gl_func_frexpl_no_libm = yes; then printf "%s\n" "#define HAVE_FREXPL_IN_LIBC 1" >>confdefs.h fi fi if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; then gl_LIBOBJS="$gl_LIBOBJS frexpl.$ac_objext" fi GL_GNULIB_FREXPL=1 printf "%s\n" "#define GNULIB_TEST_FREXPL 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __fseterr" >&5 printf %s "checking for __fseterr... " >&6; } if test ${gl_cv_onwards_func___fseterr+y} then : printf %s "(cached) " >&6 else $as_nop exec 9>&6 6>/dev/null case "$host_os" in linux*-android*) ac_fn_check_decl "$LINENO" "__fseterr" "ac_cv_have_decl___fseterr" "#include #include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl___fseterr" = xyes then : fi if test $ac_cv_have_decl___fseterr = yes; then ac_fn_c_check_func "$LINENO" "__fseterr" "ac_cv_func___fseterr" if test "x$ac_cv_func___fseterr" = xyes then : fi if test $ac_cv_func___fseterr = yes; then gl_cv_onwards_func___fseterr=yes else gl_cv_onwards_func___fseterr='future OS version' fi else gl_cv_onwards_func___fseterr='future OS version' fi ;; *) ac_fn_c_check_func "$LINENO" "__fseterr" "ac_cv_func___fseterr" if test "x$ac_cv_func___fseterr" = xyes then : fi gl_cv_onwards_func___fseterr=$ac_cv_func___fseterr ;; esac exec 6>&9 9>&- fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_onwards_func___fseterr" >&5 printf "%s\n" "$gl_cv_onwards_func___fseterr" >&6; } case "$gl_cv_onwards_func___fseterr" in future*) ac_cv_func___fseterr=no ;; *) ac_cv_func___fseterr=$gl_cv_onwards_func___fseterr ;; esac if test $ac_cv_func___fseterr = yes; then printf "%s\n" "#define HAVE___FSETERR 1" >>confdefs.h fi if test $ac_cv_func___fseterr = no; then GL_COND_OBJ_FSETERR_TRUE= GL_COND_OBJ_FSETERR_FALSE='#' else GL_COND_OBJ_FSETERR_TRUE='#' GL_COND_OBJ_FSETERR_FALSE= fi : if test -z "${GL_COND_OBJ_FSETERR_TRUE}" && test -z "${GL_COND_OBJ_FSETERR_FALSE}"; then GL_COND_OBJ_FSETERR_TRUE='#' GL_COND_OBJ_FSETERR_FALSE='#' fi case "$host_os" in mingw* | solaris*) REPLACE_FSTAT=1 ;; esac if test $REPLACE_FSTAT = 1; then GL_COND_OBJ_FSTAT_TRUE= GL_COND_OBJ_FSTAT_FALSE='#' else GL_COND_OBJ_FSTAT_TRUE='#' GL_COND_OBJ_FSTAT_FALSE= fi : if test -z "${GL_COND_OBJ_FSTAT_TRUE}" && test -z "${GL_COND_OBJ_FSTAT_FALSE}"; then GL_COND_OBJ_FSTAT_TRUE='#' GL_COND_OBJ_FSTAT_FALSE='#' fi if test -z "$GL_COND_OBJ_FSTAT_TRUE"; then : case "$host_os" in mingw*) gl_LIBOBJS="$gl_LIBOBJS stat-w32.$ac_objext" ;; esac : fi GL_GNULIB_FSTAT=1 printf "%s\n" "#define GNULIB_TEST_FSTAT 1" >>confdefs.h if test $ac_cv_func_getdtablesize = yes && test $ac_cv_have_decl_getdtablesize = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether getdtablesize works" >&5 printf %s "checking whether getdtablesize works... " >&6; } if test ${gl_cv_func_getdtablesize_works+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in vms*) gl_cv_func_getdtablesize_works="no (limitation)" ;; *) if test "$cross_compiling" = yes then : case "$host_os" in cygwin*) # on cygwin 1.5.25, getdtablesize() automatically grows gl_cv_func_getdtablesize_works="guessing no" ;; *) gl_cv_func_getdtablesize_works="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gl_mda_defines int main (void) { int size = getdtablesize(); if (dup2 (0, getdtablesize()) != -1) return 1; if (size != getdtablesize()) return 2; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_getdtablesize_works=yes else $as_nop gl_cv_func_getdtablesize_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getdtablesize_works" >&5 printf "%s\n" "$gl_cv_func_getdtablesize_works" >&6; } case "$gl_cv_func_getdtablesize_works" in *yes | "no (limitation)") ;; *) REPLACE_GETDTABLESIZE=1 ;; esac else HAVE_GETDTABLESIZE=0 fi if test $HAVE_GETDTABLESIZE = 0 || test $REPLACE_GETDTABLESIZE = 1; then GL_COND_OBJ_GETDTABLESIZE_TRUE= GL_COND_OBJ_GETDTABLESIZE_FALSE='#' else GL_COND_OBJ_GETDTABLESIZE_TRUE='#' GL_COND_OBJ_GETDTABLESIZE_FALSE= fi : if test -z "${GL_COND_OBJ_GETDTABLESIZE_TRUE}" && test -z "${GL_COND_OBJ_GETDTABLESIZE_FALSE}"; then GL_COND_OBJ_GETDTABLESIZE_TRUE='#' GL_COND_OBJ_GETDTABLESIZE_FALSE='#' fi if test -z "$GL_COND_OBJ_GETDTABLESIZE_TRUE"; then : : fi GL_GNULIB_GETDTABLESIZE=1 printf "%s\n" "#define GNULIB_TEST_GETDTABLESIZE 1" >>confdefs.h REPLACE_GETOPT=0 if test -n "$gl_replace_getopt"; then REPLACE_GETOPT=1 fi GL_GENERATE_GETOPT_H=false GL_GENERATE_GETOPT_CDEFS_H=false if test $REPLACE_GETOPT = 1; then if test $ac_cv_header_sys_cdefs_h = yes; then HAVE_SYS_CDEFS_H=1 else HAVE_SYS_CDEFS_H=0 fi printf "%s\n" "#define __GETOPT_PREFIX rpl_" >>confdefs.h GL_GENERATE_GETOPT_H=true GL_GENERATE_GETOPT_CDEFS_H=true fi case "$GL_GENERATE_GETOPT_H" in false) GETOPT_H='' ;; true) if test -z "$GETOPT_H"; then GETOPT_H="${gl_source_base_prefix}getopt.h" fi ;; *) echo "*** GL_GENERATE_GETOPT_H is not set correctly" 1>&2; exit 1 ;; esac if $GL_GENERATE_GETOPT_H; then GL_GENERATE_GETOPT_H_TRUE= GL_GENERATE_GETOPT_H_FALSE='#' else GL_GENERATE_GETOPT_H_TRUE='#' GL_GENERATE_GETOPT_H_FALSE= fi : if test -z "${GL_GENERATE_GETOPT_H_TRUE}" && test -z "${GL_GENERATE_GETOPT_H_FALSE}"; then GL_GENERATE_GETOPT_H_TRUE='#' GL_GENERATE_GETOPT_H_FALSE='#' fi case "$GL_GENERATE_GETOPT_CDEFS_H" in false) GETOPT_CDEFS_H='' ;; true) if test -z "$GETOPT_CDEFS_H"; then GETOPT_CDEFS_H="${gl_source_base_prefix}getopt-cdefs.h" fi ;; *) echo "*** GL_GENERATE_GETOPT_CDEFS_H is not set correctly" 1>&2; exit 1 ;; esac if $GL_GENERATE_GETOPT_CDEFS_H; then GL_GENERATE_GETOPT_CDEFS_H_TRUE= GL_GENERATE_GETOPT_CDEFS_H_FALSE='#' else GL_GENERATE_GETOPT_CDEFS_H_TRUE='#' GL_GENERATE_GETOPT_CDEFS_H_FALSE= fi : if test -z "${GL_GENERATE_GETOPT_CDEFS_H_TRUE}" && test -z "${GL_GENERATE_GETOPT_CDEFS_H_FALSE}"; then GL_GENERATE_GETOPT_CDEFS_H_TRUE='#' GL_GENERATE_GETOPT_CDEFS_H_FALSE='#' fi if test $REPLACE_GETOPT = 1; then GL_COND_OBJ_GETOPT_TRUE= GL_COND_OBJ_GETOPT_FALSE='#' else GL_COND_OBJ_GETOPT_TRUE='#' GL_COND_OBJ_GETOPT_FALSE= fi : if test -z "${GL_COND_OBJ_GETOPT_TRUE}" && test -z "${GL_COND_OBJ_GETOPT_FALSE}"; then GL_COND_OBJ_GETOPT_TRUE='#' GL_COND_OBJ_GETOPT_FALSE='#' fi if test -z "$GL_COND_OBJ_GETOPT_TRUE"; then : GL_GNULIB_UNISTD_H_GETOPT=1 fi GL_GNULIB_GETOPT_POSIX=1 printf "%s\n" "#define GNULIB_TEST_GETOPT_POSIX 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getprogname" >&5 printf %s "checking for getprogname... " >&6; } if test ${gl_cv_onwards_func_getprogname+y} then : printf %s "(cached) " >&6 else $as_nop exec 9>&6 6>/dev/null case "$host_os" in linux*-android*) ac_fn_check_decl "$LINENO" "getprogname" "ac_cv_have_decl_getprogname" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_getprogname" = xyes then : fi if test $ac_cv_have_decl_getprogname = yes; then ac_fn_c_check_func "$LINENO" "getprogname" "ac_cv_func_getprogname" if test "x$ac_cv_func_getprogname" = xyes then : fi if test $ac_cv_func_getprogname = yes; then gl_cv_onwards_func_getprogname=yes else gl_cv_onwards_func_getprogname='future OS version' fi else gl_cv_onwards_func_getprogname='future OS version' fi ;; *) ac_fn_c_check_func "$LINENO" "getprogname" "ac_cv_func_getprogname" if test "x$ac_cv_func_getprogname" = xyes then : fi gl_cv_onwards_func_getprogname=$ac_cv_func_getprogname ;; esac exec 6>&9 9>&- fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_onwards_func_getprogname" >&5 printf "%s\n" "$gl_cv_onwards_func_getprogname" >&6; } case "$gl_cv_onwards_func_getprogname" in future*) ac_cv_func_getprogname=no ;; *) ac_cv_func_getprogname=$gl_cv_onwards_func_getprogname ;; esac if test $ac_cv_func_getprogname = yes; then printf "%s\n" "#define HAVE_GETPROGNAME 1" >>confdefs.h fi if test $ac_cv_func_getprogname = no; then HAVE_GETPROGNAME=0 case "$gl_cv_onwards_func_getprogname" in future*) REPLACE_GETPROGNAME=1 ;; esac fi if test $HAVE_GETPROGNAME = 0 || test $REPLACE_GETPROGNAME = 1; then GL_COND_OBJ_GETPROGNAME_TRUE= GL_COND_OBJ_GETPROGNAME_FALSE='#' else GL_COND_OBJ_GETPROGNAME_TRUE='#' GL_COND_OBJ_GETPROGNAME_FALSE= fi : if test -z "${GL_COND_OBJ_GETPROGNAME_TRUE}" && test -z "${GL_COND_OBJ_GETPROGNAME_FALSE}"; then GL_COND_OBJ_GETPROGNAME_TRUE='#' GL_COND_OBJ_GETPROGNAME_FALSE='#' fi if test -z "$GL_COND_OBJ_GETPROGNAME_TRUE"; then : ac_found=0 ac_fn_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_program_invocation_name" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_PROGRAM_INVOCATION_NAME $ac_have_decl" >>confdefs.h if test $ac_have_decl = 1 then : ac_found=1 fi ac_fn_check_decl "$LINENO" "program_invocation_short_name" "ac_cv_have_decl_program_invocation_short_name" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_program_invocation_short_name" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME $ac_have_decl" >>confdefs.h if test $ac_have_decl = 1 then : ac_found=1 fi ac_fn_check_decl "$LINENO" "__argv" "ac_cv_have_decl___argv" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl___argv" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL___ARGV $ac_have_decl" >>confdefs.h if test $ac_have_decl = 1 then : ac_found=1 fi # Incur the cost of this test only if none of the above worked. if test $ac_found = 0; then # On OpenBSD 5.1, using the global __progname variable appears to be # the only way to implement getprogname. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether __progname is defined in default libraries" >&5 printf %s "checking whether __progname is defined in default libraries... " >&6; } if test ${gl_cv_var___progname+y} then : printf %s "(cached) " >&6 else $as_nop gl_cv_var___progname= cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ extern char *__progname; int main (void) { return *__progname; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_var___progname=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_var___progname" >&5 printf "%s\n" "$gl_cv_var___progname" >&6; } if test "$gl_cv_var___progname" = yes; then printf "%s\n" "#define HAVE_VAR___PROGNAME 1" >>confdefs.h fi fi fi GL_GNULIB_GETPROGNAME=1 printf "%s\n" "#define GNULIB_TEST_GETPROGNAME 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getrandom" >&5 printf %s "checking for getrandom... " >&6; } if test ${gl_cv_onwards_func_getrandom+y} then : printf %s "(cached) " >&6 else $as_nop exec 9>&6 6>/dev/null case "$host_os" in linux*-android*) ac_fn_check_decl "$LINENO" "getrandom" "ac_cv_have_decl_getrandom" "/* Additional includes are needed before on uClibc and Mac OS X. */ #include #include #include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_getrandom" = xyes then : fi if test $ac_cv_have_decl_getrandom = yes; then ac_fn_c_check_func "$LINENO" "getrandom" "ac_cv_func_getrandom" if test "x$ac_cv_func_getrandom" = xyes then : fi if test $ac_cv_func_getrandom = yes; then gl_cv_onwards_func_getrandom=yes else gl_cv_onwards_func_getrandom='future OS version' fi else gl_cv_onwards_func_getrandom='future OS version' fi ;; *) ac_fn_c_check_func "$LINENO" "getrandom" "ac_cv_func_getrandom" if test "x$ac_cv_func_getrandom" = xyes then : fi gl_cv_onwards_func_getrandom=$ac_cv_func_getrandom ;; esac exec 6>&9 9>&- fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_onwards_func_getrandom" >&5 printf "%s\n" "$gl_cv_onwards_func_getrandom" >&6; } case "$gl_cv_onwards_func_getrandom" in future*) ac_cv_func_getrandom=no ;; *) ac_cv_func_getrandom=$gl_cv_onwards_func_getrandom ;; esac if test $ac_cv_func_getrandom = yes; then printf "%s\n" "#define HAVE_GETRANDOM 1" >>confdefs.h fi if test "$ac_cv_func_getrandom" != yes; then HAVE_GETRANDOM=0 case "$gl_cv_onwards_func_getrandom" in future*) REPLACE_GETRANDOM=1 ;; esac else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether getrandom is compatible with its GNU+BSD signature" >&5 printf %s "checking whether getrandom is compatible with its GNU+BSD signature... " >&6; } if test ${gl_cv_func_getrandom_ok+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Additional includes are needed before on uClibc and Mac OS X. */ #include #include #include ssize_t getrandom (void *, size_t, unsigned int); int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_func_getrandom_ok=yes else $as_nop gl_cv_func_getrandom_ok=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getrandom_ok" >&5 printf "%s\n" "$gl_cv_func_getrandom_ok" >&6; } if test $gl_cv_func_getrandom_ok = no; then REPLACE_GETRANDOM=1 fi fi case "$host_os" in mingw*) ac_fn_c_check_header_compile "$LINENO" "bcrypt.h" "ac_cv_header_bcrypt_h" "#include " if test "x$ac_cv_header_bcrypt_h" = xyes then : printf "%s\n" "#define HAVE_BCRYPT_H 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the bcrypt library is guaranteed to be present" >&5 printf %s "checking whether the bcrypt library is guaranteed to be present... " >&6; } if test ${gl_cv_lib_assume_bcrypt+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { #if !(_WIN32_WINNT >= _WIN32_WINNT_WIN7) cannot assume it #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_lib_assume_bcrypt=yes else $as_nop gl_cv_lib_assume_bcrypt=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_lib_assume_bcrypt" >&5 printf "%s\n" "$gl_cv_lib_assume_bcrypt" >&6; } if test $gl_cv_lib_assume_bcrypt = yes; then printf "%s\n" "#define HAVE_LIB_BCRYPT 1" >>confdefs.h GETRANDOM_LIB='-lbcrypt' else GETRANDOM_LIB='-ladvapi32' fi ;; *) GETRANDOM_LIB= ;; esac LIB_GETRANDOM="$GETRANDOM_LIB" if test $HAVE_GETRANDOM = 0 || test $REPLACE_GETRANDOM = 1; then GL_COND_OBJ_GETRANDOM_TRUE= GL_COND_OBJ_GETRANDOM_FALSE='#' else GL_COND_OBJ_GETRANDOM_TRUE='#' GL_COND_OBJ_GETRANDOM_FALSE= fi : if test -z "${GL_COND_OBJ_GETRANDOM_TRUE}" && test -z "${GL_COND_OBJ_GETRANDOM_FALSE}"; then GL_COND_OBJ_GETRANDOM_TRUE='#' GL_COND_OBJ_GETRANDOM_FALSE='#' fi GL_GNULIB_GETRANDOM=1 printf "%s\n" "#define GNULIB_TEST_GETRANDOM 1" >>confdefs.h HARD_LOCALE_LIB="$SETLOCALE_NULL_LIB" LIB_HARD_LOCALE="$HARD_LOCALE_LIB" case $host_os in mingw*) REPLACE_ISATTY=1 ;; esac if test $REPLACE_ISATTY = 1; then GL_COND_OBJ_ISATTY_TRUE= GL_COND_OBJ_ISATTY_FALSE='#' else GL_COND_OBJ_ISATTY_TRUE='#' GL_COND_OBJ_ISATTY_FALSE= fi : if test -z "${GL_COND_OBJ_ISATTY_TRUE}" && test -z "${GL_COND_OBJ_ISATTY_FALSE}"; then GL_COND_OBJ_ISATTY_TRUE='#' GL_COND_OBJ_ISATTY_FALSE='#' fi if test -z "$GL_COND_OBJ_ISATTY_TRUE"; then : : fi GL_GNULIB_ISATTY=1 printf "%s\n" "#define GNULIB_TEST_ISATTY 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether isnan(double) can be used without linking with libm" >&5 printf %s "checking whether isnan(double) can be used without linking with libm... " >&6; } if test ${gl_cv_func_isnand_no_libm+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # undef isnand # define isnand(x) __builtin_isnan ((double)(x)) #else # undef isnand # define isnand(x) isnan ((double)(x)) #endif double x; int main (void) { return isnand (x); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_func_isnand_no_libm=yes else $as_nop gl_cv_func_isnand_no_libm=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnand_no_libm" >&5 printf "%s\n" "$gl_cv_func_isnand_no_libm" >&6; } gl_func_isnand_no_libm=$gl_cv_func_isnand_no_libm if test $gl_cv_func_isnand_no_libm = yes; then printf "%s\n" "#define HAVE_ISNAND_IN_LIBC 1" >>confdefs.h fi if test $gl_func_isnand_no_libm != yes; then gl_LIBOBJS="$gl_LIBOBJS isnand.$ac_objext" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether isnan(float) can be used without linking with libm" >&5 printf %s "checking whether isnan(float) can be used without linking with libm... " >&6; } if test ${gl_cv_func_isnanf_no_libm+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # undef isnanf # define isnanf(x) __builtin_isnan ((float)(x)) #elif defined isnan # undef isnanf # define isnanf(x) isnan ((float)(x)) #endif float x; int main (void) { return isnanf (x); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_func_isnanf_no_libm=yes else $as_nop gl_cv_func_isnanf_no_libm=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanf_no_libm" >&5 printf "%s\n" "$gl_cv_func_isnanf_no_libm" >&6; } if test $gl_cv_func_isnanf_no_libm = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether isnan(float) works" >&5 printf %s "checking whether isnan(float) works... " >&6; } if test ${gl_cv_func_isnanf_works+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in irix* | solaris*) gl_cv_func_isnanf_works="guessing no" ;; mingw*) # Guess yes on mingw, no on MSVC. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __MINGW32__ Known #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Known" >/dev/null 2>&1 then : gl_cv_func_isnanf_works="guessing yes" else $as_nop gl_cv_func_isnanf_works="guessing no" fi rm -rf conftest* ;; *) gl_cv_func_isnanf_works="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # undef isnanf # define isnanf(x) __builtin_isnan ((float)(x)) #elif defined isnan # undef isnanf # define isnanf(x) isnan ((float)(x)) #endif /* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */ #ifdef __DECC static float NaN () { static float zero = 0.0f; return zero / zero; } #else # define NaN() (0.0f / 0.0f) #endif #define NWORDS \ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { unsigned int word[NWORDS]; float value; } memory_float; int main() { int result = 0; if (isnanf (1.0f / 0.0f)) result |= 1; if (!isnanf (NaN ())) result |= 2; #if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT /* The isnanf function should be immune against changes in the sign bit and in the mantissa bits. The xor operation twiddles a bit that can only be a sign bit or a mantissa bit. */ if (FLT_EXPBIT0_WORD == 0 && FLT_EXPBIT0_BIT > 0) { memory_float m; m.value = NaN (); /* Set the bits below the exponent to 01111...111. */ m.word[0] &= -1U << FLT_EXPBIT0_BIT; m.word[0] |= (1U << (FLT_EXPBIT0_BIT - 1)) - 1; if (!isnanf (m.value)) result |= 4; } #endif return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_isnanf_works=yes else $as_nop gl_cv_func_isnanf_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanf_works" >&5 printf "%s\n" "$gl_cv_func_isnanf_works" >&6; } fi if test $gl_cv_func_isnanf_no_libm = yes \ && { case "$gl_cv_func_isnanf_works" in *yes) true;; *) false;; esac }; then gl_func_isnanf_no_libm=yes printf "%s\n" "#define HAVE_ISNANF_IN_LIBC 1" >>confdefs.h else gl_func_isnanf_no_libm=no fi if test $gl_func_isnanf_no_libm != yes; then gl_LIBOBJS="$gl_LIBOBJS isnanf.$ac_objext" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'float'" >&5 printf %s "checking where to find the exponent in a 'float'... " >&6; } if test ${gl_cv_cc_float_expbit0+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : gl_cv_cc_float_expbit0="word 0 bit 23" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #define NWORDS \ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { float value; unsigned int word[NWORDS]; } memory_float; static unsigned int ored_words[NWORDS]; static unsigned int anded_words[NWORDS]; static void add_to_ored_words (float x) { memory_float m; size_t i; /* Clear it first, in case sizeof (float) < sizeof (memory_float). */ memset (&m, 0, sizeof (memory_float)); m.value = x; for (i = 0; i < NWORDS; i++) { ored_words[i] |= m.word[i]; anded_words[i] &= m.word[i]; } } int main () { size_t j; FILE *fp = fopen ("conftest.out", "w"); if (fp == NULL) return 1; for (j = 0; j < NWORDS; j++) anded_words[j] = ~ (unsigned int) 0; add_to_ored_words (0.25f); add_to_ored_words (0.5f); add_to_ored_words (1.0f); add_to_ored_words (2.0f); add_to_ored_words (4.0f); /* Remove bits that are common (e.g. if representation of the first mantissa bit is explicit). */ for (j = 0; j < NWORDS; j++) ored_words[j] &= ~anded_words[j]; /* Now find the nonzero word. */ for (j = 0; j < NWORDS; j++) if (ored_words[j] != 0) break; if (j < NWORDS) { size_t i; for (i = j + 1; i < NWORDS; i++) if (ored_words[i] != 0) { fprintf (fp, "unknown"); return (fclose (fp) != 0); } for (i = 0; ; i++) if ((ored_words[j] >> i) & 1) { fprintf (fp, "word %d bit %d", (int) j, (int) i); return (fclose (fp) != 0); } } fprintf (fp, "unknown"); return (fclose (fp) != 0); } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_cc_float_expbit0=`cat conftest.out` else $as_nop gl_cv_cc_float_expbit0="unknown" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.out fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_float_expbit0" >&5 printf "%s\n" "$gl_cv_cc_float_expbit0" >&6; } case "$gl_cv_cc_float_expbit0" in word*bit*) word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'` printf "%s\n" "#define FLT_EXPBIT0_WORD $word" >>confdefs.h printf "%s\n" "#define FLT_EXPBIT0_BIT $bit" >>confdefs.h ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether isnan(long double) can be used without linking with libm" >&5 printf %s "checking whether isnan(long double) can be used without linking with libm... " >&6; } if test ${gl_cv_func_isnanl_no_libm+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # undef isnanl # define isnanl(x) __builtin_isnan ((long double)(x)) #elif defined isnan # undef isnanl # define isnanl(x) isnan ((long double)(x)) #endif long double x; int main (void) { return isnanl (x); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_func_isnanl_no_libm=yes else $as_nop gl_cv_func_isnanl_no_libm=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanl_no_libm" >&5 printf "%s\n" "$gl_cv_func_isnanl_no_libm" >&6; } gl_func_isnanl_no_libm=$gl_cv_func_isnanl_no_libm if test $gl_func_isnanl_no_libm = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether isnanl works" >&5 printf %s "checking whether isnanl works... " >&6; } if test ${gl_cv_func_isnanl_works+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in mingw*) # Guess yes on mingw, no on MSVC. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __MINGW32__ Known #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Known" >/dev/null 2>&1 then : gl_cv_func_isnanl_works="guessing yes" else $as_nop gl_cv_func_isnanl_works="guessing no" fi rm -rf conftest* ;; *) gl_cv_func_isnanl_works="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # undef isnanl # define isnanl(x) __builtin_isnan ((long double)(x)) #elif defined isnan # undef isnanl # define isnanl(x) isnan ((long double)(x)) #endif #define NWORDS \ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { unsigned int word[NWORDS]; long double value; } memory_long_double; /* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the runtime type conversion. */ #ifdef __sgi static long double NaNl () { double zero = 0.0; return zero / zero; } #else # define NaNl() (0.0L / 0.0L) #endif int main () { int result = 0; if (!isnanl (NaNl ())) result |= 1; { memory_long_double m; unsigned int i; /* The isnanl function should be immune against changes in the sign bit and in the mantissa bits. The xor operation twiddles a bit that can only be a sign bit or a mantissa bit (since the exponent never extends to bit 31). */ m.value = NaNl (); m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); for (i = 0; i < NWORDS; i++) m.word[i] |= 1; if (!isnanl (m.value)) result |= 1; } #if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE /* Representation of an 80-bit 'long double' as an initializer for a sequence of 'unsigned int' words. */ # ifdef WORDS_BIGENDIAN # define LDBL80_WORDS(exponent,manthi,mantlo) \ { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \ (unsigned int) (mantlo) << 16 \ } # else # define LDBL80_WORDS(exponent,manthi,mantlo) \ { mantlo, manthi, exponent } # endif { /* Quiet NaN. */ static memory_long_double x = { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; if (!isnanl (x.value)) result |= 2; } { /* Signalling NaN. */ static memory_long_double x = { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; if (!isnanl (x.value)) result |= 2; } /* isnanl should return something even for noncanonical values. */ { /* Pseudo-NaN. */ static memory_long_double x = { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; if (isnanl (x.value) && !isnanl (x.value)) result |= 4; } { /* Pseudo-Infinity. */ static memory_long_double x = { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; if (isnanl (x.value) && !isnanl (x.value)) result |= 8; } { /* Pseudo-Zero. */ static memory_long_double x = { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; if (isnanl (x.value) && !isnanl (x.value)) result |= 16; } { /* Unnormalized number. */ static memory_long_double x = { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; if (isnanl (x.value) && !isnanl (x.value)) result |= 32; } { /* Pseudo-Denormal. */ static memory_long_double x = { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; if (isnanl (x.value) && !isnanl (x.value)) result |= 64; } #endif return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_isnanl_works=yes else $as_nop gl_cv_func_isnanl_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_isnanl_works" >&5 printf "%s\n" "$gl_cv_func_isnanl_works" >&6; } case "$gl_cv_func_isnanl_works" in *yes) ;; *) gl_func_isnanl_no_libm=no ;; esac fi if test $gl_func_isnanl_no_libm = yes; then printf "%s\n" "#define HAVE_ISNANL_IN_LIBC 1" >>confdefs.h fi if test $gl_func_isnanl_no_libm != yes; then gl_LIBOBJS="$gl_LIBOBJS isnanl.$ac_objext" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where to find the exponent in a 'long double'" >&5 printf %s "checking where to find the exponent in a 'long double'... " >&6; } if test ${gl_cv_cc_long_double_expbit0+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : gl_cv_cc_long_double_expbit0="unknown" case "$host_os" in mingw*) # On native Windows (little-endian), we know the result # in two cases: mingw, MSVC. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __MINGW32__ Known #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Known" >/dev/null 2>&1 then : gl_cv_cc_long_double_expbit0="word 2 bit 0" fi rm -rf conftest* cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _MSC_VER Known #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Known" >/dev/null 2>&1 then : gl_cv_cc_long_double_expbit0="word 1 bit 20" fi rm -rf conftest* ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #define NWORDS \ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { long double value; unsigned int word[NWORDS]; } memory_long_double; static unsigned int ored_words[NWORDS]; static unsigned int anded_words[NWORDS]; static void add_to_ored_words (long double *x) { memory_long_double m; size_t i; /* Clear it first, in case sizeof (long double) < sizeof (memory_long_double). */ memset (&m, 0, sizeof (memory_long_double)); m.value = *x; for (i = 0; i < NWORDS; i++) { ored_words[i] |= m.word[i]; anded_words[i] &= m.word[i]; } } int main () { static long double samples[5] = { 0.25L, 0.5L, 1.0L, 2.0L, 4.0L }; size_t j; FILE *fp = fopen ("conftest.out", "w"); if (fp == NULL) return 1; for (j = 0; j < NWORDS; j++) anded_words[j] = ~ (unsigned int) 0; for (j = 0; j < 5; j++) add_to_ored_words (&samples[j]); /* Remove bits that are common (e.g. if representation of the first mantissa bit is explicit). */ for (j = 0; j < NWORDS; j++) ored_words[j] &= ~anded_words[j]; /* Now find the nonzero word. */ for (j = 0; j < NWORDS; j++) if (ored_words[j] != 0) break; if (j < NWORDS) { size_t i; for (i = j + 1; i < NWORDS; i++) if (ored_words[i] != 0) { fprintf (fp, "unknown"); return (fclose (fp) != 0); } for (i = 0; ; i++) if ((ored_words[j] >> i) & 1) { fprintf (fp, "word %d bit %d", (int) j, (int) i); return (fclose (fp) != 0); } } fprintf (fp, "unknown"); return (fclose (fp) != 0); } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_cc_long_double_expbit0=`cat conftest.out` else $as_nop gl_cv_cc_long_double_expbit0="unknown" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.out fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_long_double_expbit0" >&5 printf "%s\n" "$gl_cv_cc_long_double_expbit0" >&6; } case "$gl_cv_cc_long_double_expbit0" in word*bit*) word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'` printf "%s\n" "#define LDBL_EXPBIT0_WORD $word" >>confdefs.h printf "%s\n" "#define LDBL_EXPBIT0_BIT $bit" >>confdefs.h ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports the __inline keyword" >&5 printf %s "checking whether the compiler supports the __inline keyword... " >&6; } if test ${gl_cv_c___inline+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ typedef int foo_t; static __inline foo_t foo (void) { return 0; } int main (void) { return foo (); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_c___inline=yes else $as_nop gl_cv_c___inline=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c___inline" >&5 printf "%s\n" "$gl_cv_c___inline" >&6; } if test $gl_cv_c___inline = yes; then printf "%s\n" "#define HAVE___INLINE 1" >>confdefs.h fi case "$GL_GENERATE_LIMITS_H" in false) LIMITS_H='' ;; true) if test -z "$LIMITS_H"; then LIMITS_H="${gl_source_base_prefix}limits.h" fi ;; *) echo "*** GL_GENERATE_LIMITS_H is not set correctly" 1>&2; exit 1 ;; esac if $GL_GENERATE_LIMITS_H; then GL_GENERATE_LIMITS_H_TRUE= GL_GENERATE_LIMITS_H_FALSE='#' else GL_GENERATE_LIMITS_H_TRUE='#' GL_GENERATE_LIMITS_H_FALSE= fi : if test -z "${GL_GENERATE_LIMITS_H_TRUE}" && test -z "${GL_GENERATE_LIMITS_H_FALSE}"; then GL_GENERATE_LIMITS_H_TRUE='#' GL_GENERATE_LIMITS_H_FALSE='#' fi LOCALCHARSET_TESTS_ENVIRONMENT= if test $ac_cv_func_lstat = yes; then case $host_os,$gl_cv_func_lstat_dereferences_slashed_symlink in solaris* | *no) REPLACE_LSTAT=1 ;; esac else HAVE_LSTAT=0 fi if test $REPLACE_LSTAT = 1; then GL_COND_OBJ_LSTAT_TRUE= GL_COND_OBJ_LSTAT_FALSE='#' else GL_COND_OBJ_LSTAT_TRUE='#' GL_COND_OBJ_LSTAT_FALSE= fi : if test -z "${GL_COND_OBJ_LSTAT_TRUE}" && test -z "${GL_COND_OBJ_LSTAT_FALSE}"; then GL_COND_OBJ_LSTAT_TRUE='#' GL_COND_OBJ_LSTAT_FALSE='#' fi if test -z "$GL_COND_OBJ_LSTAT_TRUE"; then : : fi GL_GNULIB_LSTAT=1 printf "%s\n" "#define GNULIB_TEST_LSTAT 1" >>confdefs.h REPLACE_MALLOC_FOR_MALLOC_GNU="$REPLACE_MALLOC_FOR_MALLOC_POSIX" if test $REPLACE_MALLOC_FOR_MALLOC_GNU = 0; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether malloc (0) returns nonnull" >&5 printf %s "checking whether malloc (0) returns nonnull... " >&6; } if test ${ac_cv_func_malloc_0_nonnull+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \ | gnu* | *-musl* | midnightbsd* \ | hpux* | solaris* | cygwin* | mingw* | msys* ) ac_cv_func_malloc_0_nonnull="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) ac_cv_func_malloc_0_nonnull="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { void *p = malloc (0); int result = !p; free (p); return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_malloc_0_nonnull=yes else $as_nop ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 printf "%s\n" "$ac_cv_func_malloc_0_nonnull" >&6; } case $ac_cv_func_malloc_0_nonnull in #( *yes) : ;; #( *) : REPLACE_MALLOC_FOR_MALLOC_GNU=1 ;; esac fi if test $REPLACE_MALLOC_FOR_MALLOC_GNU = 1; then gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext" fi GL_GNULIB_MALLOC_GNU=1 printf "%s\n" "#define GNULIB_TEST_MALLOC_GNU 1" >>confdefs.h if test $REPLACE_MALLOC_FOR_MALLOC_POSIX = 1; then gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext" fi GL_GNULIB_MALLOC_POSIX=1 printf "%s\n" "#define GNULIB_TEST_MALLOC_POSIX 1" >>confdefs.h if case "$host_os" in mingw*) true ;; *) test $ac_cv_func_mbsinit = yes ;; esac \ && test $ac_cv_func_mbrtowc = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles incomplete characters" >&5 printf %s "checking whether mbrtowc handles incomplete characters... " >&6; } if test ${gl_cv_func_mbrtowc_incomplete_state+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in # Guess no on AIX and OSF/1. aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;; esac if test $LOCALE_JA != none; then if test "$cross_compiling" = yes then : : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) { const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) if (mbsinit (&state)) return 2; } return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mbrtowc_incomplete_state=yes else $as_nop gl_cv_func_mbrtowc_incomplete_state=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else if test $LOCALE_FR_UTF8 != none; then if test "$cross_compiling" = yes then : : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { const char input[] = "B\303\274\303\237er"; /* "Büßer" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) if (mbsinit (&state)) return 2; } return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mbrtowc_incomplete_state=yes else $as_nop gl_cv_func_mbrtowc_incomplete_state=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_incomplete_state" >&5 printf "%s\n" "$gl_cv_func_mbrtowc_incomplete_state" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc works as well as mbtowc" >&5 printf %s "checking whether mbrtowc works as well as mbtowc... " >&6; } if test ${gl_cv_func_mbrtowc_sanitycheck+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in # Guess no on Solaris 8. solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;; esac if test $LOCALE_ZH_CN != none; then if test "$cross_compiling" = yes then : : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { /* This fails on Solaris 8: mbrtowc returns 2, and sets wc to 0x00F0. mbtowc returns 4 (correct) and sets wc to 0x5EDC. */ if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) { char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 3, 6, &state) != 4 && mbtowc (&wc, input + 3, 6) == 4) return 2; } return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mbrtowc_sanitycheck=yes else $as_nop gl_cv_func_mbrtowc_sanitycheck=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_sanitycheck" >&5 printf "%s\n" "$gl_cv_func_mbrtowc_sanitycheck" >&6; } REPLACE_MBSTATE_T=0 case "$gl_cv_func_mbrtowc_incomplete_state" in *yes) ;; *) REPLACE_MBSTATE_T=1 ;; esac case "$gl_cv_func_mbrtowc_sanitycheck" in *yes) ;; *) REPLACE_MBSTATE_T=1 ;; esac else REPLACE_MBSTATE_T=1 fi if test $ac_cv_func_mbrtowc = no; then HAVE_MBRTOWC=0 ac_fn_check_decl "$LINENO" "mbrtowc" "ac_cv_have_decl_mbrtowc" " #include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_mbrtowc" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_MBRTOWC $ac_have_decl" >>confdefs.h if test $ac_cv_have_decl_mbrtowc = yes; then REPLACE_MBRTOWC=1 fi else if test $REPLACE_MBSTATE_T = 1; then REPLACE_MBRTOWC=1 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles a NULL pwc argument" >&5 printf %s "checking whether mbrtowc handles a NULL pwc argument... " >&6; } if test ${gl_cv_func_mbrtowc_null_arg1+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in # Guess no on Solaris. solaris*) gl_cv_func_mbrtowc_null_arg1="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_mbrtowc_null_arg1="guessing yes" ;; esac if test $LOCALE_FR_UTF8 != none; then if test "$cross_compiling" = yes then : : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { int result = 0; if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { char input[] = "\303\237er"; mbstate_t state; wchar_t wc; size_t ret; memset (&state, '\0', sizeof (mbstate_t)); wc = (wchar_t) 0xBADFACE; ret = mbrtowc (&wc, input, 5, &state); if (ret != 2) result |= 1; if (!mbsinit (&state)) result |= 2; memset (&state, '\0', sizeof (mbstate_t)); ret = mbrtowc (NULL, input, 5, &state); if (ret != 2) /* Solaris 7 fails here: ret is -1. */ result |= 4; if (!mbsinit (&state)) result |= 8; } return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mbrtowc_null_arg1=yes else $as_nop gl_cv_func_mbrtowc_null_arg1=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_null_arg1" >&5 printf "%s\n" "$gl_cv_func_mbrtowc_null_arg1" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles a NULL string argument" >&5 printf %s "checking whether mbrtowc handles a NULL string argument... " >&6; } if test ${gl_cv_func_mbrtowc_null_arg2+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in # Guess no on OSF/1. osf*) gl_cv_func_mbrtowc_null_arg2="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_mbrtowc_null_arg2="guessing yes" ;; esac if test $LOCALE_FR_UTF8 != none; then if test "$cross_compiling" = yes then : : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { mbstate_t state; wchar_t wc; int ret; memset (&state, '\0', sizeof (mbstate_t)); wc = (wchar_t) 0xBADFACE; mbrtowc (&wc, NULL, 5, &state); /* Check that wc was not modified. */ if (wc != (wchar_t) 0xBADFACE) return 2; } return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mbrtowc_null_arg2=yes else $as_nop gl_cv_func_mbrtowc_null_arg2=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_null_arg2" >&5 printf "%s\n" "$gl_cv_func_mbrtowc_null_arg2" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc has a correct return value" >&5 printf %s "checking whether mbrtowc has a correct return value... " >&6; } if test ${gl_cv_func_mbrtowc_retval+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in # Guess no on HP-UX, Solaris, native Windows. hpux* | solaris* | mingw*) gl_cv_func_mbrtowc_retval="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_mbrtowc_retval="guessing yes" ;; esac if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none \ || { case "$host_os" in mingw*) true;; *) false;; esac; }; then if test "$cross_compiling" = yes then : : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { int result = 0; int found_some_locale = 0; /* This fails on Solaris. */ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { char input[] = "B\303\274\303\237er"; /* "Büßer" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) { input[1] = '\0'; if (mbrtowc (&wc, input + 2, 5, &state) != 1) result |= 1; } found_some_locale = 1; } /* This fails on HP-UX 11.11. */ if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) { char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) { input[1] = '\0'; if (mbrtowc (&wc, input + 2, 5, &state) != 2) result |= 2; } found_some_locale = 1; } /* This fails on native Windows. */ if (setlocale (LC_ALL, "Japanese_Japan.932") != NULL) { char input[] = "<\223\372\226\173\214\352>"; /* "<日本語>" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2)) { input[3] = '\0'; if (mbrtowc (&wc, input + 4, 4, &state) != 1) result |= 4; } found_some_locale = 1; } if (setlocale (LC_ALL, "Chinese_Taiwan.950") != NULL) { char input[] = "<\244\351\245\273\273\171>"; /* "<日本語>" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2)) { input[3] = '\0'; if (mbrtowc (&wc, input + 4, 4, &state) != 1) result |= 8; } found_some_locale = 1; } if (setlocale (LC_ALL, "Chinese_China.936") != NULL) { char input[] = "<\310\325\261\276\325\132>"; /* "<日本語>" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2)) { input[3] = '\0'; if (mbrtowc (&wc, input + 4, 4, &state) != 1) result |= 16; } found_some_locale = 1; } return (found_some_locale ? result : 77); } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mbrtowc_retval=yes else $as_nop if test $? != 77; then gl_cv_func_mbrtowc_retval=no fi fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_retval" >&5 printf "%s\n" "$gl_cv_func_mbrtowc_retval" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc returns 0 when parsing a NUL character" >&5 printf %s "checking whether mbrtowc returns 0 when parsing a NUL character... " >&6; } if test ${gl_cv_func_mbrtowc_nul_retval+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in # Guess no on Solaris 8 and 9. solaris2.[89]) gl_cv_func_mbrtowc_nul_retval="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_mbrtowc_nul_retval="guessing yes" ;; esac if test $LOCALE_ZH_CN != none; then if test "$cross_compiling" = yes then : : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { /* This fails on Solaris 8 and 9. */ if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) { mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, "", 1, &state) != 0) return 2; } return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mbrtowc_nul_retval=yes else $as_nop gl_cv_func_mbrtowc_nul_retval=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_nul_retval" >&5 printf "%s\n" "$gl_cv_func_mbrtowc_nul_retval" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc stores incomplete characters" >&5 printf %s "checking whether mbrtowc stores incomplete characters... " >&6; } if test ${gl_cv_func_mbrtowc_stores_incomplete+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in # Guess yes on native Windows. mingw*) gl_cv_func_mbrtowc_stores_incomplete="guessing yes" ;; *) gl_cv_func_mbrtowc_stores_incomplete="guessing no" ;; esac case "$host_os" in mingw*) if test "$cross_compiling" = yes then : : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { int result = 0; if (setlocale (LC_ALL, "French_France.65001") != NULL) { wchar_t wc = (wchar_t) 0xBADFACE; mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, "\303", 1, &state) == (size_t)(-2) && wc != (wchar_t) 0xBADFACE) result |= 1; } if (setlocale (LC_ALL, "Japanese_Japan.932") != NULL) { wchar_t wc = (wchar_t) 0xBADFACE; mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, "\226", 1, &state) == (size_t)(-2) && wc != (wchar_t) 0xBADFACE) result |= 2; } if (setlocale (LC_ALL, "Chinese_Taiwan.950") != NULL) { wchar_t wc = (wchar_t) 0xBADFACE; mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, "\245", 1, &state) == (size_t)(-2) && wc != (wchar_t) 0xBADFACE) result |= 4; } if (setlocale (LC_ALL, "Chinese_China.936") != NULL) { wchar_t wc = (wchar_t) 0xBADFACE; mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, "\261", 1, &state) == (size_t)(-2) && wc != (wchar_t) 0xBADFACE) result |= 8; } return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mbrtowc_stores_incomplete=no else $as_nop gl_cv_func_mbrtowc_stores_incomplete=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ;; *) if test $LOCALE_FR_UTF8 != none; then if test "$cross_compiling" = yes then : : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { wchar_t wc = (wchar_t) 0xBADFACE; mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, "\303", 1, &state) == (size_t)(-2) && wc != (wchar_t) 0xBADFACE) return 1; } return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mbrtowc_stores_incomplete=no else $as_nop gl_cv_func_mbrtowc_stores_incomplete=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_stores_incomplete" >&5 printf "%s\n" "$gl_cv_func_mbrtowc_stores_incomplete" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc works on empty input" >&5 printf %s "checking whether mbrtowc works on empty input... " >&6; } if test ${gl_cv_func_mbrtowc_empty_input+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in # Guess no on AIX and glibc systems. aix* | *-gnu* | gnu*) gl_cv_func_mbrtowc_empty_input="guessing no" ;; # Guess yes on native Windows. mingw*) gl_cv_func_mbrtowc_empty_input="guessing yes" ;; *) gl_cv_func_mbrtowc_empty_input="guessing yes" ;; esac if test "$cross_compiling" = yes then : : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include static wchar_t wc; static mbstate_t mbs; int main (void) { return mbrtowc (&wc, "", 0, &mbs) != (size_t) -2; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mbrtowc_empty_input=yes else $as_nop gl_cv_func_mbrtowc_empty_input=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_empty_input" >&5 printf "%s\n" "$gl_cv_func_mbrtowc_empty_input" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C locale is free of encoding errors" >&5 printf %s "checking whether the C locale is free of encoding errors... " >&6; } if test ${gl_cv_func_mbrtowc_C_locale_sans_EILSEQ+y} then : printf %s "(cached) " >&6 else $as_nop gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="$gl_cross_guess_normal" if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on native Windows. mingw*) gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main (void) { int i; char *locale = setlocale (LC_ALL, "C"); if (! locale) return 2; for (i = CHAR_MIN; i <= CHAR_MAX; i++) { char c = i; wchar_t wc; mbstate_t mbs = { 0, }; size_t ss = mbrtowc (&wc, &c, 1, &mbs); if (1 < ss) return 3; } return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=yes else $as_nop gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" >&5 printf "%s\n" "$gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" >&6; } case "$gl_cv_func_mbrtowc_null_arg1" in *yes) ;; *) printf "%s\n" "#define MBRTOWC_NULL_ARG1_BUG 1" >>confdefs.h REPLACE_MBRTOWC=1 ;; esac case "$gl_cv_func_mbrtowc_null_arg2" in *yes) ;; *) printf "%s\n" "#define MBRTOWC_NULL_ARG2_BUG 1" >>confdefs.h REPLACE_MBRTOWC=1 ;; esac case "$gl_cv_func_mbrtowc_retval" in *yes) ;; *) printf "%s\n" "#define MBRTOWC_RETVAL_BUG 1" >>confdefs.h REPLACE_MBRTOWC=1 ;; esac case "$gl_cv_func_mbrtowc_nul_retval" in *yes) ;; *) printf "%s\n" "#define MBRTOWC_NUL_RETVAL_BUG 1" >>confdefs.h REPLACE_MBRTOWC=1 ;; esac case "$gl_cv_func_mbrtowc_stores_incomplete" in *no) ;; *) printf "%s\n" "#define MBRTOWC_STORES_INCOMPLETE_BUG 1" >>confdefs.h REPLACE_MBRTOWC=1 ;; esac case "$gl_cv_func_mbrtowc_empty_input" in *yes) ;; *) printf "%s\n" "#define MBRTOWC_EMPTY_INPUT_BUG 1" >>confdefs.h REPLACE_MBRTOWC=1 ;; esac case "$gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" in *yes) ;; *) printf "%s\n" "#define MBRTOWC_IN_C_LOCALE_MAYBE_EILSEQ 1" >>confdefs.h REPLACE_MBRTOWC=1 ;; esac fi fi if test $REPLACE_MBSTATE_T = 1; then case "$host_os" in mingw*) MBRTOWC_LIB= ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5 printf %s "checking whether imported symbols can be declared weak... " >&6; } if test ${gl_cv_have_weak+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in cygwin*) gl_cv_have_weak="guessing no" ;; *) gl_cv_have_weak=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ extern void xyzzy (); #pragma weak xyzzy int main (void) { xyzzy(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_have_weak=maybe fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test $gl_cv_have_weak = maybe; then if test "$cross_compiling" = yes then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __ELF__ Extensible Linking Format #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Extensible Linking Format" >/dev/null 2>&1 then : gl_cv_have_weak="guessing yes" else $as_nop gl_cv_have_weak="guessing no" fi rm -rf conftest* else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #pragma weak fputs int main () { return (fputs == NULL); } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_have_weak=yes else $as_nop gl_cv_have_weak=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi ;; esac case " $LDFLAGS " in *" -static "*) gl_cv_have_weak=no ;; esac case "$gl_cv_have_weak" in *yes) case "$host_os" in freebsd* | dragonfly* | midnightbsd*) : > conftest1.c $CC $CPPFLAGS $CFLAGS $LDFLAGS -fPIC -shared -o libempty.so conftest1.c -lpthread >&5 2>&1 cat < conftest2.c #include #pragma weak pthread_mutexattr_gettype int main () { return (pthread_mutexattr_gettype != NULL); } EOF $CC $CPPFLAGS $CFLAGS $LDFLAGS -o conftest conftest2.c libempty.so >&5 2>&1 \ || gl_cv_have_weak=no rm -f conftest1.c libempty.so conftest2.c conftest ;; esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5 printf "%s\n" "$gl_cv_have_weak" >&6; } case "$gl_cv_have_weak" in *yes) printf "%s\n" "#define HAVE_WEAK_SYMBOLS 1" >>confdefs.h ;; esac case "$gl_cv_have_weak" in *yes) MBRTOWC_LIB= ;; *) MBRTOWC_LIB="$LIBPTHREAD" ;; esac ;; esac else MBRTOWC_LIB= fi LIB_MBRTOWC="$MBRTOWC_LIB" if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then GL_COND_OBJ_MBRTOWC_TRUE= GL_COND_OBJ_MBRTOWC_FALSE='#' else GL_COND_OBJ_MBRTOWC_TRUE='#' GL_COND_OBJ_MBRTOWC_FALSE= fi : if test -z "${GL_COND_OBJ_MBRTOWC_TRUE}" && test -z "${GL_COND_OBJ_MBRTOWC_FALSE}"; then GL_COND_OBJ_MBRTOWC_TRUE='#' GL_COND_OBJ_MBRTOWC_FALSE='#' fi if test -z "$GL_COND_OBJ_MBRTOWC_TRUE"; then : if test $REPLACE_MBSTATE_T = 1; then gl_LIBOBJS="$gl_LIBOBJS lc-charset-dispatch.$ac_objext" gl_LIBOBJS="$gl_LIBOBJS mbtowc-lock.$ac_objext" CFLAG_VISIBILITY= HAVE_VISIBILITY=0 if test -n "$GCC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5 printf %s "checking whether the -Werror option is usable... " >&6; } if test ${gl_cv_cc_vis_werror+y} then : printf %s "(cached) " >&6 else $as_nop gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_cc_vis_werror=yes else $as_nop gl_cv_cc_vis_werror=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5 printf "%s\n" "$gl_cv_cc_vis_werror" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 printf %s "checking for simple visibility declarations... " >&6; } if test ${gl_cv_cc_visibility+y} then : printf %s "(cached) " >&6 else $as_nop gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden" if test $gl_cv_cc_vis_werror = yes; then CFLAGS="$CFLAGS -Werror" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ extern __attribute__((__visibility__("hidden"))) int hiddenvar; extern __attribute__((__visibility__("default"))) int exportedvar; extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); extern __attribute__((__visibility__("default"))) int exportedfunc (void); void dummyfunc (void); int hiddenvar; int exportedvar; int hiddenfunc (void) { return 51; } int exportedfunc (void) { return 1225736919; } void dummyfunc (void) {} int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_cc_visibility=yes else $as_nop gl_cv_cc_visibility=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 printf "%s\n" "$gl_cv_cc_visibility" >&6; } if test $gl_cv_cc_visibility = yes; then CFLAG_VISIBILITY="-fvisibility=hidden" HAVE_VISIBILITY=1 fi fi printf "%s\n" "#define HAVE_VISIBILITY $HAVE_VISIBILITY" >>confdefs.h fi : fi GL_GNULIB_MBRTOWC=1 printf "%s\n" "#define GNULIB_TEST_MBRTOWC 1" >>confdefs.h if case "$host_os" in mingw*) true ;; *) test $ac_cv_func_mbsinit = yes ;; esac \ && test $ac_cv_func_mbrtowc = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc handles incomplete characters" >&5 printf %s "checking whether mbrtowc handles incomplete characters... " >&6; } if test ${gl_cv_func_mbrtowc_incomplete_state+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in # Guess no on AIX and OSF/1. aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;; esac if test $LOCALE_JA != none; then if test "$cross_compiling" = yes then : : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) { const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) if (mbsinit (&state)) return 2; } return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mbrtowc_incomplete_state=yes else $as_nop gl_cv_func_mbrtowc_incomplete_state=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else if test $LOCALE_FR_UTF8 != none; then if test "$cross_compiling" = yes then : : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { const char input[] = "B\303\274\303\237er"; /* "Büßer" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) if (mbsinit (&state)) return 2; } return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mbrtowc_incomplete_state=yes else $as_nop gl_cv_func_mbrtowc_incomplete_state=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_incomplete_state" >&5 printf "%s\n" "$gl_cv_func_mbrtowc_incomplete_state" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc works as well as mbtowc" >&5 printf %s "checking whether mbrtowc works as well as mbtowc... " >&6; } if test ${gl_cv_func_mbrtowc_sanitycheck+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in # Guess no on Solaris 8. solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;; esac if test $LOCALE_ZH_CN != none; then if test "$cross_compiling" = yes then : : else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { /* This fails on Solaris 8: mbrtowc returns 2, and sets wc to 0x00F0. mbtowc returns 4 (correct) and sets wc to 0x5EDC. */ if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) { char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 3, 6, &state) != 4 && mbtowc (&wc, input + 3, 6) == 4) return 2; } return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mbrtowc_sanitycheck=yes else $as_nop gl_cv_func_mbrtowc_sanitycheck=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_sanitycheck" >&5 printf "%s\n" "$gl_cv_func_mbrtowc_sanitycheck" >&6; } REPLACE_MBSTATE_T=0 case "$gl_cv_func_mbrtowc_incomplete_state" in *yes) ;; *) REPLACE_MBSTATE_T=1 ;; esac case "$gl_cv_func_mbrtowc_sanitycheck" in *yes) ;; *) REPLACE_MBSTATE_T=1 ;; esac else REPLACE_MBSTATE_T=1 fi if test $ac_cv_func_mbsinit = no; then HAVE_MBSINIT=0 ac_fn_check_decl "$LINENO" "mbsinit" "ac_cv_have_decl_mbsinit" " #include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_mbsinit" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_MBSINIT $ac_have_decl" >>confdefs.h if test $ac_cv_have_decl_mbsinit = yes; then REPLACE_MBSINIT=1 fi else if test $REPLACE_MBSTATE_T = 1; then REPLACE_MBSINIT=1 else case "$host_os" in mingw*) REPLACE_MBSINIT=1 ;; esac fi fi if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then GL_COND_OBJ_MBSINIT_TRUE= GL_COND_OBJ_MBSINIT_FALSE='#' else GL_COND_OBJ_MBSINIT_TRUE='#' GL_COND_OBJ_MBSINIT_FALSE= fi : if test -z "${GL_COND_OBJ_MBSINIT_TRUE}" && test -z "${GL_COND_OBJ_MBSINIT_FALSE}"; then GL_COND_OBJ_MBSINIT_TRUE='#' GL_COND_OBJ_MBSINIT_FALSE='#' fi if test -z "$GL_COND_OBJ_MBSINIT_TRUE"; then : : fi GL_GNULIB_MBSINIT=1 printf "%s\n" "#define GNULIB_TEST_MBSINIT 1" >>confdefs.h if test $REPLACE_MEMCHR = 1; then GL_COND_OBJ_MEMCHR_TRUE= GL_COND_OBJ_MEMCHR_FALSE='#' else GL_COND_OBJ_MEMCHR_TRUE='#' GL_COND_OBJ_MEMCHR_FALSE= fi : if test -z "${GL_COND_OBJ_MEMCHR_TRUE}" && test -z "${GL_COND_OBJ_MEMCHR_FALSE}"; then GL_COND_OBJ_MEMCHR_TRUE='#' GL_COND_OBJ_MEMCHR_FALSE='#' fi if test -z "$GL_COND_OBJ_MEMCHR_TRUE"; then : ac_fn_c_check_header_compile "$LINENO" "bp-sym.h" "ac_cv_header_bp_sym_h" "$ac_includes_default" if test "x$ac_cv_header_bp_sym_h" = xyes then : printf "%s\n" "#define HAVE_BP_SYM_H 1" >>confdefs.h fi fi GL_GNULIB_MEMCHR=1 printf "%s\n" "#define GNULIB_TEST_MEMCHR 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mempcpy" >&5 printf %s "checking for mempcpy... " >&6; } if test ${gl_cv_onwards_func_mempcpy+y} then : printf %s "(cached) " >&6 else $as_nop exec 9>&6 6>/dev/null case "$host_os" in linux*-android*) ac_fn_check_decl "$LINENO" "mempcpy" "ac_cv_have_decl_mempcpy" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_mempcpy" = xyes then : fi if test $ac_cv_have_decl_mempcpy = yes; then ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" if test "x$ac_cv_func_mempcpy" = xyes then : fi if test $ac_cv_func_mempcpy = yes; then gl_cv_onwards_func_mempcpy=yes else gl_cv_onwards_func_mempcpy='future OS version' fi else gl_cv_onwards_func_mempcpy='future OS version' fi ;; *) ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" if test "x$ac_cv_func_mempcpy" = xyes then : fi gl_cv_onwards_func_mempcpy=$ac_cv_func_mempcpy ;; esac exec 6>&9 9>&- fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_onwards_func_mempcpy" >&5 printf "%s\n" "$gl_cv_onwards_func_mempcpy" >&6; } case "$gl_cv_onwards_func_mempcpy" in future*) ac_cv_func_mempcpy=no ;; *) ac_cv_func_mempcpy=$gl_cv_onwards_func_mempcpy ;; esac if test $ac_cv_func_mempcpy = yes; then printf "%s\n" "#define HAVE_MEMPCPY 1" >>confdefs.h fi if test $ac_cv_func_mempcpy = no; then HAVE_MEMPCPY=0 case "$gl_cv_onwards_func_mempcpy" in future*) REPLACE_MEMPCPY=1 ;; esac fi if test $HAVE_MEMPCPY = 0 || test $REPLACE_MEMPCPY = 1; then GL_COND_OBJ_MEMPCPY_TRUE= GL_COND_OBJ_MEMPCPY_FALSE='#' else GL_COND_OBJ_MEMPCPY_TRUE='#' GL_COND_OBJ_MEMPCPY_FALSE= fi : if test -z "${GL_COND_OBJ_MEMPCPY_TRUE}" && test -z "${GL_COND_OBJ_MEMPCPY_FALSE}"; then GL_COND_OBJ_MEMPCPY_TRUE='#' GL_COND_OBJ_MEMPCPY_FALSE='#' fi if test -z "$GL_COND_OBJ_MEMPCPY_TRUE"; then : : fi GL_GNULIB_MEMPCPY=1 printf "%s\n" "#define GNULIB_TEST_MEMPCPY 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mkdir handles trailing slash" >&5 printf %s "checking whether mkdir handles trailing slash... " >&6; } if test ${gl_cv_func_mkdir_trailing_slash_works+y} then : printf %s "(cached) " >&6 else $as_nop rm -rf conftest.dir if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on Linux systems. linux-* | linux) gl_cv_func_mkdir_trailing_slash_works="guessing yes" ;; # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_mkdir_trailing_slash_works="guessing yes" ;; # Guess yes on MSVC, no on mingw. mingw*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _MSC_VER Known #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Known" >/dev/null 2>&1 then : gl_cv_func_mkdir_trailing_slash_works="guessing yes" else $as_nop gl_cv_func_mkdir_trailing_slash_works="guessing no" fi rm -rf conftest* ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_mkdir_trailing_slash_works="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include $gl_mda_defines int main (void) { return mkdir ("conftest.dir/", 0700); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mkdir_trailing_slash_works=yes else $as_nop gl_cv_func_mkdir_trailing_slash_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -rf conftest.dir fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mkdir_trailing_slash_works" >&5 printf "%s\n" "$gl_cv_func_mkdir_trailing_slash_works" >&6; } case "$gl_cv_func_mkdir_trailing_slash_works" in *yes) ;; *) REPLACE_MKDIR=1 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mkdir handles trailing dot" >&5 printf %s "checking whether mkdir handles trailing dot... " >&6; } if test ${gl_cv_func_mkdir_trailing_dot_works+y} then : printf %s "(cached) " >&6 else $as_nop rm -rf conftest.dir if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;; # Guess yes on musl systems. *-musl*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;; # Guess no on native Windows. mingw*) gl_cv_func_mkdir_trailing_dot_works="guessing no" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_mkdir_trailing_dot_works="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include $gl_mda_defines int main (void) { return !mkdir ("conftest.dir/./", 0700); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_mkdir_trailing_dot_works=yes else $as_nop gl_cv_func_mkdir_trailing_dot_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -rf conftest.dir fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mkdir_trailing_dot_works" >&5 printf "%s\n" "$gl_cv_func_mkdir_trailing_dot_works" >&6; } case "$gl_cv_func_mkdir_trailing_dot_works" in *yes) ;; *) REPLACE_MKDIR=1 printf "%s\n" "#define FUNC_MKDIR_DOT_BUG 1" >>confdefs.h ;; esac if test $REPLACE_MKDIR = 1; then GL_COND_OBJ_MKDIR_TRUE= GL_COND_OBJ_MKDIR_FALSE='#' else GL_COND_OBJ_MKDIR_TRUE='#' GL_COND_OBJ_MKDIR_FALSE= fi : if test -z "${GL_COND_OBJ_MKDIR_TRUE}" && test -z "${GL_COND_OBJ_MKDIR_FALSE}"; then GL_COND_OBJ_MKDIR_TRUE='#' GL_COND_OBJ_MKDIR_FALSE='#' fi GL_GNULIB_MKDIR=1 printf "%s\n" "#define GNULIB_TEST_MKDIR 1" >>confdefs.h if test $ac_cv_func_mkstemps != yes; then HAVE_MKSTEMPS=0 fi if test $HAVE_MKSTEMPS = 0; then GL_COND_OBJ_MKSTEMPS_TRUE= GL_COND_OBJ_MKSTEMPS_FALSE='#' else GL_COND_OBJ_MKSTEMPS_TRUE='#' GL_COND_OBJ_MKSTEMPS_FALSE= fi : if test -z "${GL_COND_OBJ_MKSTEMPS_TRUE}" && test -z "${GL_COND_OBJ_MKSTEMPS_FALSE}"; then GL_COND_OBJ_MKSTEMPS_TRUE='#' GL_COND_OBJ_MKSTEMPS_FALSE='#' fi printf "%s\n" "#define GNULIB_MKSTEMPS 1" >>confdefs.h GL_GNULIB_MKSTEMPS=1 printf "%s\n" "#define GNULIB_TEST_MKSTEMPS 1" >>confdefs.h if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then GL_COND_OBJ_MSVC_INVAL_TRUE= GL_COND_OBJ_MSVC_INVAL_FALSE='#' else GL_COND_OBJ_MSVC_INVAL_TRUE='#' GL_COND_OBJ_MSVC_INVAL_FALSE= fi : if test -z "${GL_COND_OBJ_MSVC_INVAL_TRUE}" && test -z "${GL_COND_OBJ_MSVC_INVAL_FALSE}"; then GL_COND_OBJ_MSVC_INVAL_TRUE='#' GL_COND_OBJ_MSVC_INVAL_FALSE='#' fi if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then GL_COND_OBJ_MSVC_NOTHROW_TRUE= GL_COND_OBJ_MSVC_NOTHROW_FALSE='#' else GL_COND_OBJ_MSVC_NOTHROW_TRUE='#' GL_COND_OBJ_MSVC_NOTHROW_FALSE= fi : if test -z "${GL_COND_OBJ_MSVC_NOTHROW_TRUE}" && test -z "${GL_COND_OBJ_MSVC_NOTHROW_FALSE}"; then GL_COND_OBJ_MSVC_NOTHROW_TRUE='#' GL_COND_OBJ_MSVC_NOTHROW_FALSE='#' fi printf "%s\n" "#define GNULIB_MSVC_NOTHROW 1" >>confdefs.h case "$host_os" in mingw* | pw*) REPLACE_OPEN=1 ;; *) if test "$gl_cv_macro_O_CLOEXEC" != yes; then REPLACE_OPEN=1 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether open recognizes a trailing slash" >&5 printf %s "checking whether open recognizes a trailing slash... " >&6; } if test ${gl_cv_func_open_slash+y} then : printf %s "(cached) " >&6 else $as_nop # Assume that if we have lstat, we can also check symlinks. if test $ac_cv_func_lstat = yes; then touch conftest.tmp ln -s conftest.tmp conftest.lnk fi if test "$cross_compiling" = yes then : case "$host_os" in freebsd* | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*) gl_cv_func_open_slash="guessing no" ;; *) gl_cv_func_open_slash="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if HAVE_UNISTD_H # include #endif $gl_mda_defines int main () { int result = 0; #if HAVE_LSTAT if (open ("conftest.lnk/", O_RDONLY) != -1) result |= 1; #endif if (open ("conftest.sl/", O_CREAT, 0600) >= 0) result |= 2; return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_open_slash=yes else $as_nop gl_cv_func_open_slash=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.sl conftest.tmp conftest.lnk fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_open_slash" >&5 printf "%s\n" "$gl_cv_func_open_slash" >&6; } case "$gl_cv_func_open_slash" in *no) printf "%s\n" "#define OPEN_TRAILING_SLASH_BUG 1" >>confdefs.h ;; esac case "$gl_cv_func_open_slash" in *no) REPLACE_OPEN=1 ;; esac ;; esac if test $REPLACE_OPEN = 1; then GL_COND_OBJ_OPEN_TRUE= GL_COND_OBJ_OPEN_FALSE='#' else GL_COND_OBJ_OPEN_TRUE='#' GL_COND_OBJ_OPEN_FALSE= fi : if test -z "${GL_COND_OBJ_OPEN_TRUE}" && test -z "${GL_COND_OBJ_OPEN_FALSE}"; then GL_COND_OBJ_OPEN_TRUE='#' GL_COND_OBJ_OPEN_FALSE='#' fi if test -z "$GL_COND_OBJ_OPEN_TRUE"; then : : fi GL_GNULIB_OPEN=1 printf "%s\n" "#define GNULIB_TEST_OPEN 1" >>confdefs.h if test $ac_cv_func_pipe != yes; then HAVE_PIPE=0 fi if test $HAVE_PIPE = 0; then GL_COND_OBJ_PIPE_TRUE= GL_COND_OBJ_PIPE_FALSE='#' else GL_COND_OBJ_PIPE_TRUE='#' GL_COND_OBJ_PIPE_FALSE= fi : if test -z "${GL_COND_OBJ_PIPE_TRUE}" && test -z "${GL_COND_OBJ_PIPE_FALSE}"; then GL_COND_OBJ_PIPE_TRUE='#' GL_COND_OBJ_PIPE_FALSE='#' fi GL_GNULIB_PIPE=1 printf "%s\n" "#define GNULIB_TEST_PIPE 1" >>confdefs.h if test $gl_cv_func_frexp_no_libm = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether frexp works" >&5 printf %s "checking whether frexp works... " >&6; } if test ${gl_cv_func_frexp_works+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in netbsd* | irix*) gl_cv_func_frexp_works="guessing no" ;; mingw*) # Guess yes with MSVC, no with mingw. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _MSC_VER Good #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Good" >/dev/null 2>&1 then : gl_cv_func_frexp_works="guessing yes" else $as_nop gl_cv_func_frexp_works="guessing no" fi rm -rf conftest* ;; *) gl_cv_func_frexp_works="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #if HAVE_DECL_ALARM # include # include #endif /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. ICC 10.0 has a bug when optimizing the expression -zero. The expression -DBL_MIN * DBL_MIN does not work when cross-compiling to PowerPC on Mac OS X 10.5. */ #if defined __hpux || defined __sgi || defined __ICC static double compute_minus_zero (void) { return -DBL_MIN * DBL_MIN; } # define minus_zero compute_minus_zero () #else double minus_zero = -0.0; #endif int main() { int result = 0; int i; volatile double x; double zero = 0.0; #if HAVE_DECL_ALARM /* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite number. Let the test fail in this case. */ signal (SIGALRM, SIG_DFL); alarm (5); #endif /* Test on denormalized numbers. */ for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5) ; if (x > 0.0) { int exp; double y = frexp (x, &exp); /* On machines with IEEE754 arithmetic: x = 1.11254e-308, exp = -1022. On NetBSD: y = 0.75. Correct: y = 0.5. */ if (y != 0.5) result |= 1; } /* Test on infinite numbers. */ x = 1.0 / zero; { int exp; double y = frexp (x, &exp); if (y != x) result |= 2; } /* Test on negative zero. */ x = minus_zero; { int exp; double y = frexp (x, &exp); if (memcmp (&y, &x, sizeof x)) result |= 4; } return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_frexp_works=yes else $as_nop gl_cv_func_frexp_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexp_works" >&5 printf "%s\n" "$gl_cv_func_frexp_works" >&6; } case "$gl_cv_func_frexp_works" in *yes) printf "%s\n" "#define HAVE_FREXP_IN_LIBC 1" >>confdefs.h ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ldexp can be used without linking with libm" >&5 printf %s "checking whether ldexp can be used without linking with libm... " >&6; } if test ${gl_cv_func_ldexp_no_libm+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include double x; int y; int main (void) { return ldexp (x, y) < 1; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_func_ldexp_no_libm=yes else $as_nop gl_cv_func_ldexp_no_libm=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ldexp_no_libm" >&5 printf "%s\n" "$gl_cv_func_ldexp_no_libm" >&6; } if test $gl_cv_func_ldexp_no_libm = yes; then printf "%s\n" "#define HAVE_LDEXP_IN_LIBC 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether frexpl() can be used without linking with libm" >&5 printf %s "checking whether frexpl() can be used without linking with libm... " >&6; } if test ${gl_cv_func_frexpl_no_libm+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include long double x; int main (void) { int e; return frexpl (x, &e) > 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_func_frexpl_no_libm=yes else $as_nop gl_cv_func_frexpl_no_libm=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexpl_no_libm" >&5 printf "%s\n" "$gl_cv_func_frexpl_no_libm" >&6; } if test $gl_cv_func_frexpl_no_libm = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether frexpl works" >&5 printf %s "checking whether frexpl works... " >&6; } if test ${gl_cv_func_frexpl_works+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in aix | aix[3-6]* | beos* | darwin* | irix* | mingw* | pw*) gl_cv_func_frexpl_works="guessing no";; *) gl_cv_func_frexpl_works="guessing yes";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include /* Override the values of , like done in float.in.h. */ #if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__) # undef LDBL_MIN_EXP # define LDBL_MIN_EXP (-16381) #endif #if defined __i386__ && (defined __FreeBSD__ || defined __DragonFly__) # undef LDBL_MIN_EXP # define LDBL_MIN_EXP (-16381) #endif #if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__ # undef LDBL_MIN_EXP # define LDBL_MIN_EXP DBL_MIN_EXP #endif #if defined __sgi && (LDBL_MANT_DIG >= 106) # if defined __GNUC__ # undef LDBL_MIN_EXP # define LDBL_MIN_EXP DBL_MIN_EXP # endif #endif extern #ifdef __cplusplus "C" #endif long double frexpl (long double, int *); long double zero = 0.0L; int main() { int result = 0; volatile long double x; /* Test on finite numbers that fails on AIX 5.1. */ x = 16.0L; { int exp = -9999; frexpl (x, &exp); if (exp != 5) result |= 1; } /* Test on finite numbers that fails on Mac OS X 10.4, because its frexpl function returns an invalid (incorrectly normalized) value: it returns y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 } but the correct result is 0.505L = { 0x3fe028f5, 0xc28f5c29, 0xbc547ae1, 0x47ae1480 } */ x = 1.01L; { int exp = -9999; long double y = frexpl (x, &exp); if (!(exp == 1 && y == 0.505L)) result |= 2; } /* Test on large finite numbers. This fails on BeOS at i = 16322, while LDBL_MAX_EXP = 16384. In the loop end test, we test x against Infinity, rather than comparing i with LDBL_MAX_EXP, because BeOS has a wrong LDBL_MAX_EXP. */ { int i; for (i = 1, x = 1.0L; x != x + x; i++, x *= 2.0L) { int exp = -9999; frexpl (x, &exp); if (exp != i) { result |= 4; break; } } } /* Test on denormalized numbers. */ { int i; for (i = 1, x = 1.0L; i >= LDBL_MIN_EXP; i--, x *= 0.5L) ; if (x > 0.0L) { int exp; long double y = frexpl (x, &exp); /* On machines with IEEE854 arithmetic: x = 1.68105e-4932, exp = -16382, y = 0.5. On Mac OS X 10.5: exp = -16384, y = 0.5. */ if (exp != LDBL_MIN_EXP - 1) result |= 8; } } /* Test on infinite numbers. */ /* The Microsoft MSVC 14 compiler chokes on the expression 1.0 / 0.0. */ x = 1.0L / zero; { int exp; long double y = frexpl (x, &exp); if (y != x) result |= 16; } return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_frexpl_works=yes else $as_nop gl_cv_func_frexpl_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexpl_works" >&5 printf "%s\n" "$gl_cv_func_frexpl_works" >&6; } case "$gl_cv_func_frexpl_works" in *yes) gl_func_frexpl_no_libm=yes ;; *) gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;; esac else gl_func_frexpl_no_libm=no REPLACE_FREXPL=1 fi if test $gl_func_frexpl_no_libm = yes; then printf "%s\n" "#define HAVE_FREXPL_IN_LIBC 1" >>confdefs.h ac_fn_check_decl "$LINENO" "frexpl" "ac_cv_have_decl_frexpl" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_frexpl" = xyes then : else $as_nop HAVE_DECL_FREXPL=0 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ldexpl() can be used without linking with libm" >&5 printf %s "checking whether ldexpl() can be used without linking with libm... " >&6; } if test ${gl_cv_func_ldexpl_no_libm+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include long double x; int main (void) { return ldexpl (x, -1) > 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_func_ldexpl_no_libm=yes else $as_nop gl_cv_func_ldexpl_no_libm=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ldexpl_no_libm" >&5 printf "%s\n" "$gl_cv_func_ldexpl_no_libm" >&6; } if test $gl_cv_func_ldexpl_no_libm = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ldexpl works" >&5 printf %s "checking whether ldexpl works... " >&6; } if test ${gl_cv_func_ldexpl_works+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in aix | aix[3-6]*) gl_cv_func_ldexpl_works="guessing no" ;; # Guess yes on native Windows. mingw*) gl_cv_func_ldexpl_works="guessing yes" ;; *) gl_cv_func_ldexpl_works="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern #ifdef __cplusplus "C" #endif long double ldexpl (long double, int); int main() { int result = 0; { volatile long double x = 1.0; volatile long double y = ldexpl (x, -1); if (y != 0.5L) result |= 1; } { volatile long double x = 1.73205L; volatile long double y = ldexpl (x, 0); if (y != x) result |= 2; } return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_ldexpl_works=yes else $as_nop gl_cv_func_ldexpl_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ldexpl_works" >&5 printf "%s\n" "$gl_cv_func_ldexpl_works" >&6; } case "$gl_cv_func_ldexpl_works" in *yes) printf "%s\n" "#define HAVE_LDEXPL_IN_LIBC 1" >>confdefs.h ac_fn_check_decl "$LINENO" "ldexpl" "ac_cv_have_decl_ldexpl" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_ldexpl" = xyes then : else $as_nop HAVE_DECL_LDEXPL=0 fi ;; esac fi : : ac_fn_c_check_func "$LINENO" "raise" "ac_cv_func_raise" if test "x$ac_cv_func_raise" = xyes then : printf "%s\n" "#define HAVE_RAISE 1" >>confdefs.h fi if test $ac_cv_func_raise = no; then HAVE_RAISE=0 else if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then REPLACE_RAISE=1 fi HAVE_POSIX_SIGNALBLOCKING=0 if test "$gl_cv_type_sigset_t" = yes; then ac_fn_c_check_func "$LINENO" "sigprocmask" "ac_cv_func_sigprocmask" if test "x$ac_cv_func_sigprocmask" = xyes then : HAVE_POSIX_SIGNALBLOCKING=1 fi fi if test $HAVE_POSIX_SIGNALBLOCKING = 0; then : fi fi if test $HAVE_RAISE = 0 || test $REPLACE_RAISE = 1; then GL_COND_OBJ_RAISE_TRUE= GL_COND_OBJ_RAISE_FALSE='#' else GL_COND_OBJ_RAISE_TRUE='#' GL_COND_OBJ_RAISE_FALSE= fi : if test -z "${GL_COND_OBJ_RAISE_TRUE}" && test -z "${GL_COND_OBJ_RAISE_FALSE}"; then GL_COND_OBJ_RAISE_TRUE='#' GL_COND_OBJ_RAISE_FALSE='#' fi if test -z "$GL_COND_OBJ_RAISE_TRUE"; then : : fi GL_GNULIB_RAISE=1 printf "%s\n" "#define GNULIB_TEST_RAISE 1" >>confdefs.h ac_fn_c_check_func "$LINENO" "rawmemchr" "ac_cv_func_rawmemchr" if test "x$ac_cv_func_rawmemchr" = xyes then : printf "%s\n" "#define HAVE_RAWMEMCHR 1" >>confdefs.h fi if test $ac_cv_func_rawmemchr = no; then HAVE_RAWMEMCHR=0 fi if test $HAVE_RAWMEMCHR = 0; then GL_COND_OBJ_RAWMEMCHR_TRUE= GL_COND_OBJ_RAWMEMCHR_FALSE='#' else GL_COND_OBJ_RAWMEMCHR_TRUE='#' GL_COND_OBJ_RAWMEMCHR_FALSE= fi : if test -z "${GL_COND_OBJ_RAWMEMCHR_TRUE}" && test -z "${GL_COND_OBJ_RAWMEMCHR_FALSE}"; then GL_COND_OBJ_RAWMEMCHR_TRUE='#' GL_COND_OBJ_RAWMEMCHR_FALSE='#' fi if test -z "$GL_COND_OBJ_RAWMEMCHR_TRUE"; then : : fi GL_GNULIB_RAWMEMCHR=1 printf "%s\n" "#define GNULIB_TEST_RAWMEMCHR 1" >>confdefs.h if test $ac_cv_func_readlink = no; then HAVE_READLINK=0 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether readlink signature is correct" >&5 printf %s "checking whether readlink signature is correct... " >&6; } if test ${gl_cv_decl_readlink_works+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Cause compilation failure if original declaration has wrong type. */ ssize_t readlink (const char *, char *, size_t); int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_decl_readlink_works=yes else $as_nop gl_cv_decl_readlink_works=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_readlink_works" >&5 printf "%s\n" "$gl_cv_decl_readlink_works" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether readlink handles trailing slash correctly" >&5 printf %s "checking whether readlink handles trailing slash correctly... " >&6; } if test ${gl_cv_func_readlink_trailing_slash+y} then : printf %s "(cached) " >&6 else $as_nop # We have readlink, so assume ln -s works. ln -s conftest.no-such conftest.link ln -s conftest.link conftest.lnk2 if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on Linux or glibc systems. linux-* | linux | *-gnu* | gnu*) gl_cv_func_readlink_trailing_slash="guessing yes" ;; # Guess no on AIX or HP-UX. aix* | hpux*) gl_cv_func_readlink_trailing_slash="guessing no" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_readlink_trailing_slash="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { char buf[20]; return readlink ("conftest.lnk2/", buf, sizeof buf) != -1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_readlink_trailing_slash=yes else $as_nop gl_cv_func_readlink_trailing_slash=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.link conftest.lnk2 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_readlink_trailing_slash" >&5 printf "%s\n" "$gl_cv_func_readlink_trailing_slash" >&6; } case "$gl_cv_func_readlink_trailing_slash" in *yes) if test "$gl_cv_decl_readlink_works" != yes; then REPLACE_READLINK=1 fi ;; *) printf "%s\n" "#define READLINK_TRAILING_SLASH_BUG 1" >>confdefs.h REPLACE_READLINK=1 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether readlink truncates results correctly" >&5 printf %s "checking whether readlink truncates results correctly... " >&6; } if test ${gl_cv_func_readlink_truncate+y} then : printf %s "(cached) " >&6 else $as_nop # We have readlink, so assume ln -s works. ln -s ab conftest.link if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on Linux or glibc systems. linux-* | linux | *-gnu* | gnu*) gl_cv_func_readlink_truncate="guessing yes" ;; # Guess no on AIX or HP-UX. aix* | hpux*) gl_cv_func_readlink_truncate="guessing no" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_readlink_truncate="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { char c; return readlink ("conftest.link", &c, 1) != 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_readlink_truncate=yes else $as_nop gl_cv_func_readlink_truncate=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.link conftest.lnk2 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_readlink_truncate" >&5 printf "%s\n" "$gl_cv_func_readlink_truncate" >&6; } case $gl_cv_func_readlink_truncate in *yes) if test "$gl_cv_decl_readlink_works" != yes; then REPLACE_READLINK=1 fi ;; *) printf "%s\n" "#define READLINK_TRUNCATE_BUG 1" >>confdefs.h REPLACE_READLINK=1 ;; esac fi if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then GL_COND_OBJ_READLINK_TRUE= GL_COND_OBJ_READLINK_FALSE='#' else GL_COND_OBJ_READLINK_TRUE='#' GL_COND_OBJ_READLINK_FALSE= fi : if test -z "${GL_COND_OBJ_READLINK_TRUE}" && test -z "${GL_COND_OBJ_READLINK_FALSE}"; then GL_COND_OBJ_READLINK_TRUE='#' GL_COND_OBJ_READLINK_FALSE='#' fi if test -z "$GL_COND_OBJ_READLINK_TRUE"; then : : fi GL_GNULIB_READLINK=1 printf "%s\n" "#define GNULIB_TEST_READLINK 1" >>confdefs.h if test $REPLACE_REALLOC_FOR_REALLOC_GNU = 0; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether realloc (0, 0) returns nonnull" >&5 printf %s "checking whether realloc (0, 0) returns nonnull... " >&6; } if test ${ac_cv_func_realloc_0_nonnull+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \ | gnu* | *-musl* | midnightbsd* \ | hpux* | solaris* | cygwin* | mingw* | msys* ) ac_cv_func_realloc_0_nonnull="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) ac_cv_func_realloc_0_nonnull="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { void *p = realloc (0, 0); int result = !p; free (p); return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_realloc_0_nonnull=yes else $as_nop ac_cv_func_realloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_realloc_0_nonnull" >&5 printf "%s\n" "$ac_cv_func_realloc_0_nonnull" >&6; } case $ac_cv_func_realloc_0_nonnull in #( *yes) : ;; #( *) : REPLACE_REALLOC_FOR_REALLOC_GNU=1 ;; esac fi if test $REPLACE_REALLOC_FOR_REALLOC_GNU = 1; then gl_LIBOBJS="$gl_LIBOBJS realloc.$ac_objext" fi GL_GNULIB_REALLOC_GNU=1 printf "%s\n" "#define GNULIB_TEST_REALLOC_GNU 1" >>confdefs.h if test $REPLACE_MALLOC_FOR_MALLOC_POSIX = 1; then REPLACE_REALLOC_FOR_REALLOC_POSIX=1 fi if test $REPLACE_REALLOC_FOR_REALLOC_POSIX = 1; then gl_LIBOBJS="$gl_LIBOBJS realloc.$ac_objext" fi GL_GNULIB_REALLOC_POSIX=1 printf "%s\n" "#define GNULIB_TEST_REALLOC_POSIX 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for reallocarray" >&5 printf %s "checking for reallocarray... " >&6; } if test ${gl_cv_onwards_func_reallocarray+y} then : printf %s "(cached) " >&6 else $as_nop exec 9>&6 6>/dev/null case "$host_os" in linux*-android*) ac_fn_check_decl "$LINENO" "reallocarray" "ac_cv_have_decl_reallocarray" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_reallocarray" = xyes then : fi if test $ac_cv_have_decl_reallocarray = yes; then ac_fn_c_check_func "$LINENO" "reallocarray" "ac_cv_func_reallocarray" if test "x$ac_cv_func_reallocarray" = xyes then : fi if test $ac_cv_func_reallocarray = yes; then gl_cv_onwards_func_reallocarray=yes else gl_cv_onwards_func_reallocarray='future OS version' fi else gl_cv_onwards_func_reallocarray='future OS version' fi ;; *) ac_fn_c_check_func "$LINENO" "reallocarray" "ac_cv_func_reallocarray" if test "x$ac_cv_func_reallocarray" = xyes then : fi gl_cv_onwards_func_reallocarray=$ac_cv_func_reallocarray ;; esac exec 6>&9 9>&- fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_onwards_func_reallocarray" >&5 printf "%s\n" "$gl_cv_onwards_func_reallocarray" >&6; } case "$gl_cv_onwards_func_reallocarray" in future*) ac_cv_func_reallocarray=no ;; *) ac_cv_func_reallocarray=$gl_cv_onwards_func_reallocarray ;; esac if test $ac_cv_func_reallocarray = yes; then printf "%s\n" "#define HAVE_REALLOCARRAY 1" >>confdefs.h fi if test "$ac_cv_func_reallocarray" = no; then HAVE_REALLOCARRAY=0 case "$gl_cv_onwards_func_reallocarray" in future*) REPLACE_REALLOCARRAY=1 ;; esac elif test "$gl_cv_malloc_ptrdiff" = no; then REPLACE_REALLOCARRAY=1 fi if test $HAVE_REALLOCARRAY = 0 || test $REPLACE_REALLOCARRAY = 1; then GL_COND_OBJ_REALLOCARRAY_TRUE= GL_COND_OBJ_REALLOCARRAY_FALSE='#' else GL_COND_OBJ_REALLOCARRAY_TRUE='#' GL_COND_OBJ_REALLOCARRAY_FALSE= fi : if test -z "${GL_COND_OBJ_REALLOCARRAY_TRUE}" && test -z "${GL_COND_OBJ_REALLOCARRAY_FALSE}"; then GL_COND_OBJ_REALLOCARRAY_TRUE='#' GL_COND_OBJ_REALLOCARRAY_FALSE='#' fi if test -z "$GL_COND_OBJ_REALLOCARRAY_TRUE"; then : : fi printf "%s\n" "#define GNULIB_REALLOCARRAY 1" >>confdefs.h GL_GNULIB_REALLOCARRAY=1 printf "%s\n" "#define GNULIB_TEST_REALLOCARRAY 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether setlocale (LC_ALL, NULL) is multithread-safe" >&5 printf %s "checking whether setlocale (LC_ALL, NULL) is multithread-safe... " >&6; } if test ${gl_cv_func_setlocale_null_all_mtsafe+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in # Guess no on musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku. *-musl* | darwin* | freebsd* | midnightbsd* | netbsd* | openbsd* | aix* | haiku*) gl_cv_func_setlocale_null_all_mtsafe=no ;; # Guess no on Cygwin < 3.4.6. cygwin*) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __CYGWIN__ #include #if CYGWIN_VERSION_DLL_COMBINED >= CYGWIN_VERSION_DLL_MAKE_COMBINED (3004, 6) Lucky user #endif #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Lucky user" >/dev/null 2>&1 then : gl_cv_func_setlocale_null_all_mtsafe=yes else $as_nop gl_cv_func_setlocale_null_all_mtsafe=no fi rm -rf conftest* ;; # Guess yes on glibc, HP-UX, IRIX, Solaris, native Windows. *-gnu* | gnu* | hpux* | irix* | solaris* | mingw*) gl_cv_func_setlocale_null_all_mtsafe=yes ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_setlocale_null_all_mtsafe="$gl_cross_guess_normal" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_setlocale_null_all_mtsafe" >&5 printf "%s\n" "$gl_cv_func_setlocale_null_all_mtsafe" >&6; } case "$host_os" in mingw*) ;; *) if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then gl_cv_func_setlocale_null_all_mtsafe="trivially yes" fi ;; esac case "$gl_cv_func_setlocale_null_all_mtsafe" in *yes) SETLOCALE_NULL_ALL_MTSAFE=1 ;; *) SETLOCALE_NULL_ALL_MTSAFE=0 ;; esac printf "%s\n" "#define SETLOCALE_NULL_ALL_MTSAFE $SETLOCALE_NULL_ALL_MTSAFE" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether setlocale (category, NULL) is multithread-safe" >&5 printf %s "checking whether setlocale (category, NULL) is multithread-safe... " >&6; } if test ${gl_cv_func_setlocale_null_one_mtsafe+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in # Guess no on OpenBSD, AIX. openbsd* | aix*) gl_cv_func_setlocale_null_one_mtsafe=no ;; # Guess yes on glibc, musl libc, macOS, FreeBSD, NetBSD, HP-UX, IRIX, Solaris, Haiku, Cygwin, native Windows. *-gnu* | gnu* | *-musl* | darwin* | freebsd* | midnightbsd* | netbsd* | hpux* | irix* | solaris* | haiku* | cygwin* | mingw*) gl_cv_func_setlocale_null_one_mtsafe=yes ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_setlocale_null_one_mtsafe="$gl_cross_guess_normal" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_setlocale_null_one_mtsafe" >&5 printf "%s\n" "$gl_cv_func_setlocale_null_one_mtsafe" >&6; } case "$host_os" in mingw*) ;; *) if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then gl_cv_func_setlocale_null_one_mtsafe="trivially yes" fi ;; esac case "$gl_cv_func_setlocale_null_one_mtsafe" in *yes) SETLOCALE_NULL_ONE_MTSAFE=1 ;; *) SETLOCALE_NULL_ONE_MTSAFE=0 ;; esac printf "%s\n" "#define SETLOCALE_NULL_ONE_MTSAFE $SETLOCALE_NULL_ONE_MTSAFE" >>confdefs.h if test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0; then case "$host_os" in mingw*) SETLOCALE_NULL_LIB= ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5 printf %s "checking whether imported symbols can be declared weak... " >&6; } if test ${gl_cv_have_weak+y} then : printf %s "(cached) " >&6 else $as_nop case "$host_os" in cygwin*) gl_cv_have_weak="guessing no" ;; *) gl_cv_have_weak=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ extern void xyzzy (); #pragma weak xyzzy int main (void) { xyzzy(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_have_weak=maybe fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test $gl_cv_have_weak = maybe; then if test "$cross_compiling" = yes then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __ELF__ Extensible Linking Format #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Extensible Linking Format" >/dev/null 2>&1 then : gl_cv_have_weak="guessing yes" else $as_nop gl_cv_have_weak="guessing no" fi rm -rf conftest* else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #pragma weak fputs int main () { return (fputs == NULL); } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_have_weak=yes else $as_nop gl_cv_have_weak=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi ;; esac case " $LDFLAGS " in *" -static "*) gl_cv_have_weak=no ;; esac case "$gl_cv_have_weak" in *yes) case "$host_os" in freebsd* | dragonfly* | midnightbsd*) : > conftest1.c $CC $CPPFLAGS $CFLAGS $LDFLAGS -fPIC -shared -o libempty.so conftest1.c -lpthread >&5 2>&1 cat < conftest2.c #include #pragma weak pthread_mutexattr_gettype int main () { return (pthread_mutexattr_gettype != NULL); } EOF $CC $CPPFLAGS $CFLAGS $LDFLAGS -o conftest conftest2.c libempty.so >&5 2>&1 \ || gl_cv_have_weak=no rm -f conftest1.c libempty.so conftest2.c conftest ;; esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5 printf "%s\n" "$gl_cv_have_weak" >&6; } case "$gl_cv_have_weak" in *yes) printf "%s\n" "#define HAVE_WEAK_SYMBOLS 1" >>confdefs.h ;; esac case "$gl_cv_have_weak" in *yes) SETLOCALE_NULL_LIB= ;; *) SETLOCALE_NULL_LIB="$LIBPTHREAD" ;; esac ;; esac else SETLOCALE_NULL_LIB= fi LIB_SETLOCALE_NULL="$SETLOCALE_NULL_LIB" if test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0; then GL_COND_OBJ_SETLOCALE_LOCK_TRUE= GL_COND_OBJ_SETLOCALE_LOCK_FALSE='#' else GL_COND_OBJ_SETLOCALE_LOCK_TRUE='#' GL_COND_OBJ_SETLOCALE_LOCK_FALSE= fi : if test -z "${GL_COND_OBJ_SETLOCALE_LOCK_TRUE}" && test -z "${GL_COND_OBJ_SETLOCALE_LOCK_FALSE}"; then GL_COND_OBJ_SETLOCALE_LOCK_TRUE='#' GL_COND_OBJ_SETLOCALE_LOCK_FALSE='#' fi if test -z "$GL_COND_OBJ_SETLOCALE_LOCK_TRUE"; then : CFLAG_VISIBILITY= HAVE_VISIBILITY=0 if test -n "$GCC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5 printf %s "checking whether the -Werror option is usable... " >&6; } if test ${gl_cv_cc_vis_werror+y} then : printf %s "(cached) " >&6 else $as_nop gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_cc_vis_werror=yes else $as_nop gl_cv_cc_vis_werror=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5 printf "%s\n" "$gl_cv_cc_vis_werror" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 printf %s "checking for simple visibility declarations... " >&6; } if test ${gl_cv_cc_visibility+y} then : printf %s "(cached) " >&6 else $as_nop gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden" if test $gl_cv_cc_vis_werror = yes; then CFLAGS="$CFLAGS -Werror" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ extern __attribute__((__visibility__("hidden"))) int hiddenvar; extern __attribute__((__visibility__("default"))) int exportedvar; extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); extern __attribute__((__visibility__("default"))) int exportedfunc (void); void dummyfunc (void); int hiddenvar; int exportedvar; int hiddenfunc (void) { return 51; } int exportedfunc (void) { return 1225736919; } void dummyfunc (void) {} int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_cc_visibility=yes else $as_nop gl_cv_cc_visibility=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 printf "%s\n" "$gl_cv_cc_visibility" >&6; } if test $gl_cv_cc_visibility = yes; then CFLAG_VISIBILITY="-fvisibility=hidden" HAVE_VISIBILITY=1 fi fi printf "%s\n" "#define HAVE_VISIBILITY $HAVE_VISIBILITY" >>confdefs.h fi GL_GNULIB_SETLOCALE_NULL=1 printf "%s\n" "#define GNULIB_TEST_SETLOCALE_NULL 1" >>confdefs.h if test $ac_cv_func_sigaction = yes; then ac_fn_c_check_member "$LINENO" "struct sigaction" "sa_sigaction" "ac_cv_member_struct_sigaction_sa_sigaction" "#include " if test "x$ac_cv_member_struct_sigaction_sa_sigaction" = xyes then : printf "%s\n" "#define HAVE_STRUCT_SIGACTION_SA_SIGACTION 1" >>confdefs.h fi if test $ac_cv_member_struct_sigaction_sa_sigaction = no; then HAVE_STRUCT_SIGACTION_SA_SIGACTION=0 fi else HAVE_SIGACTION=0 fi if test $HAVE_SIGACTION = 0; then GL_COND_OBJ_SIGACTION_TRUE= GL_COND_OBJ_SIGACTION_FALSE='#' else GL_COND_OBJ_SIGACTION_TRUE='#' GL_COND_OBJ_SIGACTION_FALSE= fi : if test -z "${GL_COND_OBJ_SIGACTION_TRUE}" && test -z "${GL_COND_OBJ_SIGACTION_FALSE}"; then GL_COND_OBJ_SIGACTION_TRUE='#' GL_COND_OBJ_SIGACTION_FALSE='#' fi if test -z "$GL_COND_OBJ_SIGACTION_TRUE"; then : ac_fn_c_check_type "$LINENO" "siginfo_t" "ac_cv_type_siginfo_t" " #include " if test "x$ac_cv_type_siginfo_t" = xyes then : printf "%s\n" "#define HAVE_SIGINFO_T 1" >>confdefs.h fi if test $ac_cv_type_siginfo_t = no; then HAVE_SIGINFO_T=0 fi fi GL_GNULIB_SIGACTION=1 printf "%s\n" "#define GNULIB_TEST_SIGACTION 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for signbit macro" >&5 printf %s "checking for signbit macro... " >&6; } if test ${gl_cv_func_signbit+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_signbit="guessing yes" ;; # Guess yes on musl systems. *-musl*) gl_cv_func_signbit="guessing yes" ;; # Guess yes on native Windows. mingw*) gl_cv_func_signbit="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_signbit="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* If signbit is defined as a function, don't use it, since calling it for 'float' or 'long double' arguments would involve conversions. If signbit is not declared at all but exists as a library function, don't use it, since the prototype may not match. If signbit is not declared at all but exists as a compiler built-in, don't use it, since it's preferable to use __builtin_signbit* (no warnings, no conversions). */ #ifndef signbit # error "signbit should be a macro" #endif #include /* Global variables. Needed because GCC 4 constant-folds __builtin_signbitl (literal) but cannot constant-fold __builtin_signbitl (variable). */ float vf; double vd; long double vl; int main () { /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. So we use -p0f and -p0d instead. */ float p0f = 0.0f; float m0f = -p0f; double p0d = 0.0; double m0d = -p0d; /* On HP-UX 10.20, negating 0.0L does not yield -0.0L. So we use another constant expression instead. But that expression does not work on other platforms, such as when cross-compiling to PowerPC on Mac OS X 10.5. */ long double p0l = 0.0L; #if defined __hpux || defined __sgi long double m0l = -LDBL_MIN * LDBL_MIN; #else long double m0l = -p0l; #endif int result = 0; if (signbit (vf)) /* link check */ vf++; { float plus_inf = 1.0f / p0f; float minus_inf = -1.0f / p0f; if (!(!signbit (255.0f) && signbit (-255.0f) && !signbit (p0f) && (memcmp (&m0f, &p0f, sizeof (float)) == 0 || signbit (m0f)) && !signbit (plus_inf) && signbit (minus_inf))) result |= 1; } if (signbit (vd)) /* link check */ vd++; { double plus_inf = 1.0 / p0d; double minus_inf = -1.0 / p0d; if (!(!signbit (255.0) && signbit (-255.0) && !signbit (p0d) && (memcmp (&m0d, &p0d, sizeof (double)) == 0 || signbit (m0d)) && !signbit (plus_inf) && signbit (minus_inf))) result |= 2; } if (signbit (vl)) /* link check */ vl++; { long double plus_inf = 1.0L / p0l; long double minus_inf = -1.0L / p0l; if (signbit (255.0L)) result |= 4; if (!signbit (-255.0L)) result |= 4; if (signbit (p0l)) result |= 8; if (!(memcmp (&m0l, &p0l, sizeof (long double)) == 0 || signbit (m0l))) result |= 16; if (signbit (plus_inf)) result |= 32; if (!signbit (minus_inf)) result |= 64; } return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_signbit=yes else $as_nop gl_cv_func_signbit=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_signbit" >&5 printf "%s\n" "$gl_cv_func_signbit" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for signbit compiler built-ins" >&5 printf %s "checking for signbit compiler built-ins... " >&6; } if test ${gl_cv_func_signbit_builtins+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_signbit_builtins="guessing yes" ;; # Guess yes on musl systems. *-musl*) gl_cv_func_signbit_builtins="guessing yes" ;; # Guess yes on mingw, no on MSVC. mingw*) if test -n "$GCC"; then gl_cv_func_signbit_builtins="guessing yes" else gl_cv_func_signbit_builtins="guessing no" fi ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_signbit_builtins="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # define signbit(x) \ (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \ sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \ __builtin_signbitf (x)) #else # error "signbit should be three compiler built-ins" #endif #include /* Global variables. Needed because GCC 4 constant-folds __builtin_signbitl (literal) but cannot constant-fold __builtin_signbitl (variable). */ float vf; double vd; long double vl; int main () { /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. So we use -p0f and -p0d instead. */ float p0f = 0.0f; float m0f = -p0f; double p0d = 0.0; double m0d = -p0d; /* On HP-UX 10.20, negating 0.0L does not yield -0.0L. So we use another constant expression instead. But that expression does not work on other platforms, such as when cross-compiling to PowerPC on Mac OS X 10.5. */ long double p0l = 0.0L; #if defined __hpux || defined __sgi long double m0l = -LDBL_MIN * LDBL_MIN; #else long double m0l = -p0l; #endif int result = 0; if (signbit (vf)) /* link check */ vf++; { float plus_inf = 1.0f / p0f; float minus_inf = -1.0f / p0f; if (!(!signbit (255.0f) && signbit (-255.0f) && !signbit (p0f) && (memcmp (&m0f, &p0f, sizeof (float)) == 0 || signbit (m0f)) && !signbit (plus_inf) && signbit (minus_inf))) result |= 1; } if (signbit (vd)) /* link check */ vd++; { double plus_inf = 1.0 / p0d; double minus_inf = -1.0 / p0d; if (!(!signbit (255.0) && signbit (-255.0) && !signbit (p0d) && (memcmp (&m0d, &p0d, sizeof (double)) == 0 || signbit (m0d)) && !signbit (plus_inf) && signbit (minus_inf))) result |= 2; } if (signbit (vl)) /* link check */ vl++; { long double plus_inf = 1.0L / p0l; long double minus_inf = -1.0L / p0l; if (signbit (255.0L)) result |= 4; if (!signbit (-255.0L)) result |= 4; if (signbit (p0l)) result |= 8; if (!(memcmp (&m0l, &p0l, sizeof (long double)) == 0 || signbit (m0l))) result |= 16; if (signbit (plus_inf)) result |= 32; if (!signbit (minus_inf)) result |= 64; } return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_signbit_builtins=yes else $as_nop gl_cv_func_signbit_builtins=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_signbit_builtins" >&5 printf "%s\n" "$gl_cv_func_signbit_builtins" >&6; } case "$gl_cv_func_signbit_builtins" in *yes) REPLACE_SIGNBIT_USING_BUILTINS=1 ;; *) case "$gl_cv_func_signbit" in *yes) ;; *) REPLACE_SIGNBIT=1 ;; esac ;; esac case "$host_os" in solaris*) REPLACE_SIGNBIT=1 ;; esac if test $REPLACE_SIGNBIT = 1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where to find the sign bit in a 'float'" >&5 printf %s "checking where to find the sign bit in a 'float'... " >&6; } if test ${gl_cv_cc_float_signbit+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : gl_cv_cc_float_signbit="unknown" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #define NWORDS \ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { float value; unsigned int word[NWORDS]; } memory_float; static memory_float plus = { 1.0f }; static memory_float minus = { -1.0f }; int main () { size_t j, k, i; unsigned int m; FILE *fp = fopen ("conftest.out", "w"); if (fp == NULL) return 1; /* Find the different bit. */ k = 0; m = 0; for (j = 0; j < NWORDS; j++) { unsigned int x = plus.word[j] ^ minus.word[j]; if ((x & (x - 1)) || (x && m)) { /* More than one bit difference. */ fprintf (fp, "unknown"); fclose (fp); return 2; } if (x) { k = j; m = x; } } if (m == 0) { /* No difference. */ fprintf (fp, "unknown"); fclose (fp); return 3; } /* Now m = plus.word[k] ^ ~minus.word[k]. */ if (plus.word[k] & ~minus.word[k]) { /* Oh? The sign bit is set in the positive and cleared in the negative numbers? */ fprintf (fp, "unknown"); fclose (fp); return 4; } for (i = 0; ; i++) if ((m >> i) & 1) break; fprintf (fp, "word %d bit %d", (int) k, (int) i); if (fclose (fp) != 0) return 5; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_cc_float_signbit=`cat conftest.out` else $as_nop gl_cv_cc_float_signbit="unknown" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.out fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_float_signbit" >&5 printf "%s\n" "$gl_cv_cc_float_signbit" >&6; } case "$gl_cv_cc_float_signbit" in word*bit*) word=`echo "$gl_cv_cc_float_signbit" | sed -e 's/word //' -e 's/ bit.*//'` bit=`echo "$gl_cv_cc_float_signbit" | sed -e 's/word.*bit //'` printf "%s\n" "#define FLT_SIGNBIT_WORD $word" >>confdefs.h printf "%s\n" "#define FLT_SIGNBIT_BIT $bit" >>confdefs.h ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where to find the sign bit in a 'double'" >&5 printf %s "checking where to find the sign bit in a 'double'... " >&6; } if test ${gl_cv_cc_double_signbit+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : gl_cv_cc_double_signbit="unknown" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #define NWORDS \ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { double value; unsigned int word[NWORDS]; } memory_float; static memory_float plus = { 1.0 }; static memory_float minus = { -1.0 }; int main () { size_t j, k, i; unsigned int m; FILE *fp = fopen ("conftest.out", "w"); if (fp == NULL) return 1; /* Find the different bit. */ k = 0; m = 0; for (j = 0; j < NWORDS; j++) { unsigned int x = plus.word[j] ^ minus.word[j]; if ((x & (x - 1)) || (x && m)) { /* More than one bit difference. */ fprintf (fp, "unknown"); fclose (fp); return 2; } if (x) { k = j; m = x; } } if (m == 0) { /* No difference. */ fprintf (fp, "unknown"); fclose (fp); return 3; } /* Now m = plus.word[k] ^ ~minus.word[k]. */ if (plus.word[k] & ~minus.word[k]) { /* Oh? The sign bit is set in the positive and cleared in the negative numbers? */ fprintf (fp, "unknown"); fclose (fp); return 4; } for (i = 0; ; i++) if ((m >> i) & 1) break; fprintf (fp, "word %d bit %d", (int) k, (int) i); if (fclose (fp) != 0) return 5; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_cc_double_signbit=`cat conftest.out` else $as_nop gl_cv_cc_double_signbit="unknown" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.out fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_double_signbit" >&5 printf "%s\n" "$gl_cv_cc_double_signbit" >&6; } case "$gl_cv_cc_double_signbit" in word*bit*) word=`echo "$gl_cv_cc_double_signbit" | sed -e 's/word //' -e 's/ bit.*//'` bit=`echo "$gl_cv_cc_double_signbit" | sed -e 's/word.*bit //'` printf "%s\n" "#define DBL_SIGNBIT_WORD $word" >>confdefs.h printf "%s\n" "#define DBL_SIGNBIT_BIT $bit" >>confdefs.h ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where to find the sign bit in a 'long double'" >&5 printf %s "checking where to find the sign bit in a 'long double'... " >&6; } if test ${gl_cv_cc_long_double_signbit+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : gl_cv_cc_long_double_signbit="unknown" else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #define NWORDS \ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { long double value; unsigned int word[NWORDS]; } memory_float; static memory_float plus = { 1.0L }; static memory_float minus = { -1.0L }; int main () { size_t j, k, i; unsigned int m; FILE *fp = fopen ("conftest.out", "w"); if (fp == NULL) return 1; /* Find the different bit. */ k = 0; m = 0; for (j = 0; j < NWORDS; j++) { unsigned int x = plus.word[j] ^ minus.word[j]; if ((x & (x - 1)) || (x && m)) { /* More than one bit difference. */ fprintf (fp, "unknown"); fclose (fp); return 2; } if (x) { k = j; m = x; } } if (m == 0) { /* No difference. */ fprintf (fp, "unknown"); fclose (fp); return 3; } /* Now m = plus.word[k] ^ ~minus.word[k]. */ if (plus.word[k] & ~minus.word[k]) { /* Oh? The sign bit is set in the positive and cleared in the negative numbers? */ fprintf (fp, "unknown"); fclose (fp); return 4; } for (i = 0; ; i++) if ((m >> i) & 1) break; fprintf (fp, "word %d bit %d", (int) k, (int) i); if (fclose (fp) != 0) return 5; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_cc_long_double_signbit=`cat conftest.out` else $as_nop gl_cv_cc_long_double_signbit="unknown" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.out fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_long_double_signbit" >&5 printf "%s\n" "$gl_cv_cc_long_double_signbit" >&6; } case "$gl_cv_cc_long_double_signbit" in word*bit*) word=`echo "$gl_cv_cc_long_double_signbit" | sed -e 's/word //' -e 's/ bit.*//'` bit=`echo "$gl_cv_cc_long_double_signbit" | sed -e 's/word.*bit //'` printf "%s\n" "#define LDBL_SIGNBIT_WORD $word" >>confdefs.h printf "%s\n" "#define LDBL_SIGNBIT_BIT $bit" >>confdefs.h ;; esac if test "$gl_cv_cc_float_signbit" = unknown; then ac_fn_check_decl "$LINENO" "copysignf" "ac_cv_have_decl_copysignf" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_copysignf" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_COPYSIGNF $ac_have_decl" >>confdefs.h if test "$ac_cv_have_decl_copysignf" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether copysignf can be used without linking with libm" >&5 printf %s "checking whether copysignf can be used without linking with libm... " >&6; } if test ${gl_cv_func_copysignf_no_libm+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include float x, y; int main (void) { return copysignf (x, y) < 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_func_copysignf_no_libm=yes else $as_nop gl_cv_func_copysignf_no_libm=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_copysignf_no_libm" >&5 printf "%s\n" "$gl_cv_func_copysignf_no_libm" >&6; } if test $gl_cv_func_copysignf_no_libm = yes; then printf "%s\n" "#define HAVE_COPYSIGNF_IN_LIBC 1" >>confdefs.h fi fi fi if test "$gl_cv_cc_double_signbit" = unknown; then ac_fn_check_decl "$LINENO" "copysign" "ac_cv_have_decl_copysign" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_copysign" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_COPYSIGN $ac_have_decl" >>confdefs.h if test "$ac_cv_have_decl_copysign" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether copysign can be used without linking with libm" >&5 printf %s "checking whether copysign can be used without linking with libm... " >&6; } if test ${gl_cv_func_copysign_no_libm+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include double x, y; int main (void) { return copysign (x, y) < 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_func_copysign_no_libm=yes else $as_nop gl_cv_func_copysign_no_libm=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_copysign_no_libm" >&5 printf "%s\n" "$gl_cv_func_copysign_no_libm" >&6; } if test $gl_cv_func_copysign_no_libm = yes; then printf "%s\n" "#define HAVE_COPYSIGN_IN_LIBC 1" >>confdefs.h fi fi fi if test "$gl_cv_cc_long_double_signbit" = unknown; then ac_fn_check_decl "$LINENO" "copysignl" "ac_cv_have_decl_copysignl" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_copysignl" = xyes then : ac_have_decl=1 else $as_nop ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_COPYSIGNL $ac_have_decl" >>confdefs.h if test "$ac_cv_have_decl_copysignl" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether copysignl can be used without linking with libm" >&5 printf %s "checking whether copysignl can be used without linking with libm... " >&6; } if test ${gl_cv_func_copysignl_no_libm+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include long double x, y; int main (void) { return copysignl (x, y) < 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_func_copysignl_no_libm=yes else $as_nop gl_cv_func_copysignl_no_libm=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_copysignl_no_libm" >&5 printf "%s\n" "$gl_cv_func_copysignl_no_libm" >&6; } if test $gl_cv_func_copysignl_no_libm = yes; then printf "%s\n" "#define HAVE_COPYSIGNL_IN_LIBC 1" >>confdefs.h fi fi fi fi if test $REPLACE_SIGNBIT = 1; then GL_COND_OBJ_SIGNBIT3_TRUE= GL_COND_OBJ_SIGNBIT3_FALSE='#' else GL_COND_OBJ_SIGNBIT3_TRUE='#' GL_COND_OBJ_SIGNBIT3_FALSE= fi : if test -z "${GL_COND_OBJ_SIGNBIT3_TRUE}" && test -z "${GL_COND_OBJ_SIGNBIT3_FALSE}"; then GL_COND_OBJ_SIGNBIT3_TRUE='#' GL_COND_OBJ_SIGNBIT3_FALSE='#' fi GL_GNULIB_SIGNBIT=1 printf "%s\n" "#define GNULIB_TEST_SIGNBIT 1" >>confdefs.h HAVE_POSIX_SIGNALBLOCKING=0 if test "$gl_cv_type_sigset_t" = yes; then ac_fn_c_check_func "$LINENO" "sigprocmask" "ac_cv_func_sigprocmask" if test "x$ac_cv_func_sigprocmask" = xyes then : HAVE_POSIX_SIGNALBLOCKING=1 fi fi if test $HAVE_POSIX_SIGNALBLOCKING = 0; then GL_COND_OBJ_SIGPROCMASK_TRUE= GL_COND_OBJ_SIGPROCMASK_FALSE='#' else GL_COND_OBJ_SIGPROCMASK_TRUE='#' GL_COND_OBJ_SIGPROCMASK_FALSE= fi : if test -z "${GL_COND_OBJ_SIGPROCMASK_TRUE}" && test -z "${GL_COND_OBJ_SIGPROCMASK_FALSE}"; then GL_COND_OBJ_SIGPROCMASK_TRUE='#' GL_COND_OBJ_SIGPROCMASK_FALSE='#' fi if test -z "$GL_COND_OBJ_SIGPROCMASK_TRUE"; then : : fi GL_GNULIB_SIGPROCMASK=1 printf "%s\n" "#define GNULIB_TEST_SIGPROCMASK 1" >>confdefs.h ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" if test "x$ac_cv_header_stdint_h" = xyes then : printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SIZE_MAX" >&5 printf %s "checking for SIZE_MAX... " >&6; } if test ${gl_cv_size_max+y} then : printf %s "(cached) " >&6 else $as_nop gl_cv_size_max=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if HAVE_STDINT_H #include #endif #ifdef SIZE_MAX Found it #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Found it" >/dev/null 2>&1 then : gl_cv_size_max=yes fi rm -rf conftest* if test $gl_cv_size_max != yes; then if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) * CHAR_BIT - 1" "size_t_bits_minus_1" "#include #include " then : else $as_nop size_t_bits_minus_1= fi if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) <= sizeof (unsigned int)" "fits_in_uint" "#include " then : else $as_nop fits_in_uint= fi if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then if test $fits_in_uint = 1; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern size_t foo; extern unsigned long foo; int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : fits_in_uint=0 fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $fits_in_uint = 1; then gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" else gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" fi else gl_cv_size_max='((size_t)~(size_t)0)' fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_size_max" >&5 printf "%s\n" "$gl_cv_size_max" >&6; } if test "$gl_cv_size_max" != yes; then printf "%s\n" "#define SIZE_MAX $gl_cv_size_max" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5 printf %s "checking for ssize_t... " >&6; } if test ${gt_cv_ssize_t+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { int x = sizeof (ssize_t *) + sizeof (ssize_t); return !x; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gt_cv_ssize_t=yes else $as_nop gt_cv_ssize_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_ssize_t" >&5 printf "%s\n" "$gt_cv_ssize_t" >&6; } if test $gt_cv_ssize_t = no; then printf "%s\n" "#define ssize_t int" >>confdefs.h fi case "$host_os" in mingw*) REPLACE_STAT=1 ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stat handles trailing slashes on files" >&5 printf %s "checking whether stat handles trailing slashes on files... " >&6; } if test ${gl_cv_func_stat_file_slash+y} then : printf %s "(cached) " >&6 else $as_nop touch conftest.tmp # Assume that if we have lstat, we can also check symlinks. if test $ac_cv_func_lstat = yes; then ln -s conftest.tmp conftest.lnk fi if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on Linux systems. linux-* | linux) gl_cv_func_stat_file_slash="guessing yes" ;; # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_stat_file_slash="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_stat_file_slash="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { int result = 0; struct stat st; if (!stat ("conftest.tmp/", &st)) result |= 1; #if HAVE_LSTAT if (!stat ("conftest.lnk/", &st)) result |= 2; #endif return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_stat_file_slash=yes else $as_nop gl_cv_func_stat_file_slash=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.tmp conftest.lnk fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_stat_file_slash" >&5 printf "%s\n" "$gl_cv_func_stat_file_slash" >&6; } case $gl_cv_func_stat_file_slash in *no) REPLACE_STAT=1 printf "%s\n" "#define REPLACE_FUNC_STAT_FILE 1" >>confdefs.h ;; esac case $host_os in solaris*) REPLACE_FSTAT=1 ;; esac ;; esac if test $REPLACE_STAT = 1; then GL_COND_OBJ_STAT_TRUE= GL_COND_OBJ_STAT_FALSE='#' else GL_COND_OBJ_STAT_TRUE='#' GL_COND_OBJ_STAT_FALSE= fi : if test -z "${GL_COND_OBJ_STAT_TRUE}" && test -z "${GL_COND_OBJ_STAT_FALSE}"; then GL_COND_OBJ_STAT_TRUE='#' GL_COND_OBJ_STAT_FALSE='#' fi if test -z "$GL_COND_OBJ_STAT_TRUE"; then : case "$host_os" in mingw*) gl_LIBOBJS="$gl_LIBOBJS stat-w32.$ac_objext" ;; esac : fi GL_GNULIB_STAT=1 printf "%s\n" "#define GNULIB_TEST_STAT 1" >>confdefs.h ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.tv_nsec" "ac_cv_member_struct_stat_st_atim_tv_nsec" "#include #include " if test "x$ac_cv_member_struct_stat_st_atim_tv_nsec" = xyes then : printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct stat.st_atim is of type struct timespec" >&5 printf %s "checking whether struct stat.st_atim is of type struct timespec... " >&6; } if test ${ac_cv_typeof_struct_stat_st_atim_is_struct_timespec+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if HAVE_SYS_TIME_H # include #endif #include struct timespec ts; struct stat st; int main (void) { st.st_atim = ts; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes else $as_nop ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&5 printf "%s\n" "$ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&6; } if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then printf "%s\n" "#define TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC 1" >>confdefs.h fi else $as_nop ac_fn_c_check_member "$LINENO" "struct stat" "st_atimespec.tv_nsec" "ac_cv_member_struct_stat_st_atimespec_tv_nsec" "#include #include " if test "x$ac_cv_member_struct_stat_st_atimespec_tv_nsec" = xyes then : printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC 1" >>confdefs.h else $as_nop ac_fn_c_check_member "$LINENO" "struct stat" "st_atimensec" "ac_cv_member_struct_stat_st_atimensec" "#include #include " if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes then : printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIMENSEC 1" >>confdefs.h else $as_nop ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.st__tim.tv_nsec" "ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" "#include #include " if test "x$ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" = xyes then : printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC 1" >>confdefs.h fi fi fi fi ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtimespec.tv_nsec" "ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" "#include #include " if test "x$ac_cv_member_struct_stat_st_birthtimespec_tv_nsec" = xyes then : printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC 1" >>confdefs.h else $as_nop ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtimensec" "ac_cv_member_struct_stat_st_birthtimensec" "#include #include " if test "x$ac_cv_member_struct_stat_st_birthtimensec" = xyes then : printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC 1" >>confdefs.h else $as_nop ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtim.tv_nsec" "ac_cv_member_struct_stat_st_birthtim_tv_nsec" "#include #include " if test "x$ac_cv_member_struct_stat_st_birthtim_tv_nsec" = xyes then : printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC 1" >>confdefs.h fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bool, true, false" >&5 printf %s "checking for bool, true, false... " >&6; } if test ${gl_cv_c_bool+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if true == false #error "true == false" #endif extern bool b; bool b = true == false; _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_c_bool=yes else $as_nop gl_cv_c_bool=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_bool" >&5 printf "%s\n" "$gl_cv_c_bool" >&6; } if test "$gl_cv_c_bool" = yes; then printf "%s\n" "#define HAVE_C_BOOL 1" >>confdefs.h fi if test $ac_cv_header_stdckdint_h = yes; then GL_GENERATE_STDCKDINT_H=false else GL_GENERATE_STDCKDINT_H=true fi case "$GL_GENERATE_STDCKDINT_H" in false) STDCKDINT_H='' ;; true) if test -z "$STDCKDINT_H"; then STDCKDINT_H="${gl_source_base_prefix}stdckdint.h" fi ;; *) echo "*** GL_GENERATE_STDCKDINT_H is not set correctly" 1>&2; exit 1 ;; esac if $GL_GENERATE_STDCKDINT_H; then GL_GENERATE_STDCKDINT_H_TRUE= GL_GENERATE_STDCKDINT_H_FALSE='#' else GL_GENERATE_STDCKDINT_H_TRUE='#' GL_GENERATE_STDCKDINT_H_FALSE= fi : if test -z "${GL_GENERATE_STDCKDINT_H_TRUE}" && test -z "${GL_GENERATE_STDCKDINT_H_FALSE}"; then GL_GENERATE_STDCKDINT_H_TRUE='#' GL_GENERATE_STDCKDINT_H_FALSE='#' fi case "$GL_GENERATE_STDDEF_H" in false) STDDEF_H='' ;; true) if test -z "$STDDEF_H"; then STDDEF_H="${gl_source_base_prefix}stddef.h" fi ;; *) echo "*** GL_GENERATE_STDDEF_H is not set correctly" 1>&2; exit 1 ;; esac if $GL_GENERATE_STDDEF_H; then GL_GENERATE_STDDEF_H_TRUE= GL_GENERATE_STDDEF_H_FALSE='#' else GL_GENERATE_STDDEF_H_TRUE='#' GL_GENERATE_STDDEF_H_FALSE= fi : if test -z "${GL_GENERATE_STDDEF_H_TRUE}" && test -z "${GL_GENERATE_STDDEF_H_FALSE}"; then GL_GENERATE_STDDEF_H_TRUE='#' GL_GENERATE_STDDEF_H_FALSE='#' fi case "$GL_GENERATE_STDINT_H" in false) STDINT_H='' ;; true) if test -z "$STDINT_H"; then STDINT_H="${gl_source_base_prefix}stdint.h" fi ;; *) echo "*** GL_GENERATE_STDINT_H is not set correctly" 1>&2; exit 1 ;; esac if $GL_GENERATE_STDINT_H; then GL_GENERATE_STDINT_H_TRUE= GL_GENERATE_STDINT_H_FALSE='#' else GL_GENERATE_STDINT_H_TRUE='#' GL_GENERATE_STDINT_H_FALSE= fi : if test -z "${GL_GENERATE_STDINT_H_TRUE}" && test -z "${GL_GENERATE_STDINT_H_FALSE}"; then GL_GENERATE_STDINT_H_TRUE='#' GL_GENERATE_STDINT_H_FALSE='#' fi case "$GL_GENERATE_LIMITS_H" in false) LIMITS_H='' ;; true) if test -z "$LIMITS_H"; then LIMITS_H="${gl_source_base_prefix}limits.h" fi ;; *) echo "*** GL_GENERATE_LIMITS_H is not set correctly" 1>&2; exit 1 ;; esac if $GL_GENERATE_LIMITS_H; then GL_GENERATE_LIMITS_H_TRUE= GL_GENERATE_LIMITS_H_FALSE='#' else GL_GENERATE_LIMITS_H_TRUE='#' GL_GENERATE_LIMITS_H_FALSE= fi : if test -z "${GL_GENERATE_LIMITS_H_TRUE}" && test -z "${GL_GENERATE_LIMITS_H_FALSE}"; then GL_GENERATE_LIMITS_H_TRUE='#' GL_GENERATE_LIMITS_H_FALSE='#' fi if test $REPLACE_STDIO_READ_FUNCS = 1; then GL_COND_OBJ_STDIO_READ_TRUE= GL_COND_OBJ_STDIO_READ_FALSE='#' else GL_COND_OBJ_STDIO_READ_TRUE='#' GL_COND_OBJ_STDIO_READ_FALSE= fi : if test -z "${GL_COND_OBJ_STDIO_READ_TRUE}" && test -z "${GL_COND_OBJ_STDIO_READ_FALSE}"; then GL_COND_OBJ_STDIO_READ_TRUE='#' GL_COND_OBJ_STDIO_READ_FALSE='#' fi if test $REPLACE_STDIO_WRITE_FUNCS = 1; then GL_COND_OBJ_STDIO_WRITE_TRUE= GL_COND_OBJ_STDIO_WRITE_FALSE='#' else GL_COND_OBJ_STDIO_WRITE_TRUE='#' GL_COND_OBJ_STDIO_WRITE_FALSE= fi : if test -z "${GL_COND_OBJ_STDIO_WRITE_TRUE}" && test -z "${GL_COND_OBJ_STDIO_WRITE_FALSE}"; then GL_COND_OBJ_STDIO_WRITE_TRUE='#' GL_COND_OBJ_STDIO_WRITE_FALSE='#' fi GL_GNULIB_FSCANF=1 printf "%s\n" "#define GNULIB_TEST_FSCANF 1" >>confdefs.h printf "%s\n" "#define GNULIB_FSCANF 1" >>confdefs.h GL_GNULIB_SCANF=1 printf "%s\n" "#define GNULIB_TEST_SCANF 1" >>confdefs.h printf "%s\n" "#define GNULIB_SCANF 1" >>confdefs.h GL_GNULIB_FGETC=1 printf "%s\n" "#define GNULIB_TEST_FGETC 1" >>confdefs.h GL_GNULIB_GETC=1 printf "%s\n" "#define GNULIB_TEST_GETC 1" >>confdefs.h GL_GNULIB_GETCHAR=1 printf "%s\n" "#define GNULIB_TEST_GETCHAR 1" >>confdefs.h GL_GNULIB_FGETS=1 printf "%s\n" "#define GNULIB_TEST_FGETS 1" >>confdefs.h GL_GNULIB_FREAD=1 printf "%s\n" "#define GNULIB_TEST_FREAD 1" >>confdefs.h GL_GNULIB_FPRINTF=1 printf "%s\n" "#define GNULIB_TEST_FPRINTF 1" >>confdefs.h GL_GNULIB_PRINTF=1 printf "%s\n" "#define GNULIB_TEST_PRINTF 1" >>confdefs.h GL_GNULIB_VFPRINTF=1 printf "%s\n" "#define GNULIB_TEST_VFPRINTF 1" >>confdefs.h GL_GNULIB_VPRINTF=1 printf "%s\n" "#define GNULIB_TEST_VPRINTF 1" >>confdefs.h GL_GNULIB_FPUTC=1 printf "%s\n" "#define GNULIB_TEST_FPUTC 1" >>confdefs.h GL_GNULIB_PUTC=1 printf "%s\n" "#define GNULIB_TEST_PUTC 1" >>confdefs.h GL_GNULIB_PUTCHAR=1 printf "%s\n" "#define GNULIB_TEST_PUTCHAR 1" >>confdefs.h GL_GNULIB_FPUTS=1 printf "%s\n" "#define GNULIB_TEST_FPUTS 1" >>confdefs.h GL_GNULIB_PUTS=1 printf "%s\n" "#define GNULIB_TEST_PUTS 1" >>confdefs.h GL_GNULIB_FWRITE=1 printf "%s\n" "#define GNULIB_TEST_FWRITE 1" >>confdefs.h if test "$GL_GENERATE_ERRNO_H:$REPLACE_STRERROR_0" = false:0; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working strerror function" >&5 printf %s "checking for working strerror function... " >&6; } if test ${gl_cv_func_working_strerror+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_working_strerror="guessing yes" ;; # Guess yes on musl systems. *-musl*) gl_cv_func_working_strerror="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_working_strerror="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { if (!*strerror (-2)) return 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_working_strerror=yes else $as_nop gl_cv_func_working_strerror=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_working_strerror" >&5 printf "%s\n" "$gl_cv_func_working_strerror" >&6; } case "$gl_cv_func_working_strerror" in *yes) ;; *) REPLACE_STRERROR=1 ;; esac else REPLACE_STRERROR=1 fi if test $REPLACE_STRERROR = 1; then GL_COND_OBJ_STRERROR_TRUE= GL_COND_OBJ_STRERROR_FALSE='#' else GL_COND_OBJ_STRERROR_TRUE='#' GL_COND_OBJ_STRERROR_FALSE= fi : if test -z "${GL_COND_OBJ_STRERROR_TRUE}" && test -z "${GL_COND_OBJ_STRERROR_FALSE}"; then GL_COND_OBJ_STRERROR_TRUE='#' GL_COND_OBJ_STRERROR_FALSE='#' fi printf "%s\n" "#define GNULIB_STRERROR 1" >>confdefs.h GL_GNULIB_STRERROR=1 printf "%s\n" "#define GNULIB_TEST_STRERROR 1" >>confdefs.h if test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1; then GL_COND_OBJ_STRERROR_OVERRIDE_TRUE= GL_COND_OBJ_STRERROR_OVERRIDE_FALSE='#' else GL_COND_OBJ_STRERROR_OVERRIDE_TRUE='#' GL_COND_OBJ_STRERROR_OVERRIDE_FALSE= fi : if test -z "${GL_COND_OBJ_STRERROR_OVERRIDE_TRUE}" && test -z "${GL_COND_OBJ_STRERROR_OVERRIDE_FALSE}"; then GL_COND_OBJ_STRERROR_OVERRIDE_TRUE='#' GL_COND_OBJ_STRERROR_OVERRIDE_FALSE='#' fi if test -z "$GL_COND_OBJ_STRERROR_OVERRIDE_TRUE"; then : if test $ac_cv_header_sys_socket_h != yes; then ac_fn_c_check_header_compile "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default" if test "x$ac_cv_header_winsock2_h" = xyes then : printf "%s\n" "#define HAVE_WINSOCK2_H 1" >>confdefs.h fi fi if test "$ac_cv_header_winsock2_h" = yes; then HAVE_WINSOCK2_H=1 UNISTD_H_HAVE_WINSOCK2_H=1 SYS_IOCTL_H_HAVE_WINSOCK2_H=1 else HAVE_WINSOCK2_H=0 fi fi if test $ac_cv_have_decl_strndup = no; then HAVE_DECL_STRNDUP=0 fi if test $ac_cv_func_strndup = yes; then HAVE_STRNDUP=1 # AIX 4.3.3, AIX 5.1 have a function that fails to add the terminating '\0'. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working strndup" >&5 printf %s "checking for working strndup... " >&6; } if test ${gl_cv_func_strndup_works+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case $host_os in aix | aix[3-6]*) gl_cv_func_strndup_works="guessing no";; *) gl_cv_func_strndup_works="guessing yes";; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { #if !HAVE_DECL_STRNDUP extern #ifdef __cplusplus "C" #endif char *strndup (const char *, size_t); #endif int result; char *s; s = strndup ("some longer string", 15); free (s); s = strndup ("shorter string", 13); result = s[13] != '\0'; free (s); return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_strndup_works=yes else $as_nop gl_cv_func_strndup_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_strndup_works" >&5 printf "%s\n" "$gl_cv_func_strndup_works" >&6; } case $gl_cv_func_strndup_works in *no) REPLACE_STRNDUP=1 ;; esac else HAVE_STRNDUP=0 fi if test $HAVE_STRNDUP = 0 || test $REPLACE_STRNDUP = 1; then GL_COND_OBJ_STRNDUP_TRUE= GL_COND_OBJ_STRNDUP_FALSE='#' else GL_COND_OBJ_STRNDUP_TRUE='#' GL_COND_OBJ_STRNDUP_FALSE= fi : if test -z "${GL_COND_OBJ_STRNDUP_TRUE}" && test -z "${GL_COND_OBJ_STRNDUP_FALSE}"; then GL_COND_OBJ_STRNDUP_TRUE='#' GL_COND_OBJ_STRNDUP_FALSE='#' fi GL_GNULIB_STRNDUP=1 printf "%s\n" "#define GNULIB_TEST_STRNDUP 1" >>confdefs.h if test $ac_cv_have_decl_strnlen = no; then HAVE_DECL_STRNLEN=0 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working strnlen" >&5 printf %s "checking for working strnlen... " >&6; } if test ${ac_cv_func_strnlen_working+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : # Guess no on AIX systems, yes otherwise. case "$host_os" in aix*) ac_cv_func_strnlen_working=no;; *) ac_cv_func_strnlen_working=yes;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main (void) { #define S "foobar" #define S_LEN (sizeof S - 1) /* At least one implementation is buggy: that of AIX 4.3 would give strnlen (S, 1) == 3. */ int i; for (i = 0; i < S_LEN + 1; ++i) { int expected = i <= S_LEN ? i : S_LEN; if (strnlen (S, i) != expected) return 1; } return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_strnlen_working=yes else $as_nop ac_cv_func_strnlen_working=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strnlen_working" >&5 printf "%s\n" "$ac_cv_func_strnlen_working" >&6; } test $ac_cv_func_strnlen_working = no && : if test $ac_cv_func_strnlen_working = no; then REPLACE_STRNLEN=1 fi fi if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then GL_COND_OBJ_STRNLEN_TRUE= GL_COND_OBJ_STRNLEN_FALSE='#' else GL_COND_OBJ_STRNLEN_TRUE='#' GL_COND_OBJ_STRNLEN_FALSE= fi : if test -z "${GL_COND_OBJ_STRNLEN_TRUE}" && test -z "${GL_COND_OBJ_STRNLEN_FALSE}"; then GL_COND_OBJ_STRNLEN_TRUE='#' GL_COND_OBJ_STRNLEN_FALSE='#' fi if test -z "$GL_COND_OBJ_STRNLEN_TRUE"; then : : fi GL_GNULIB_STRNLEN=1 printf "%s\n" "#define GNULIB_TEST_STRNLEN 1" >>confdefs.h : printf "%s\n" "#define GNULIB_TEMPNAME 1" >>confdefs.h case "$host_os" in mingw*) REPLACE_UTIME=1 ;; *) ac_fn_c_check_func "$LINENO" "utime" "ac_cv_func_utime" if test "x$ac_cv_func_utime" = xyes then : printf "%s\n" "#define HAVE_UTIME 1" >>confdefs.h fi if test $ac_cv_func_utime = no; then HAVE_UTIME=0 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether utime handles trailing slashes on files" >&5 printf %s "checking whether utime handles trailing slashes on files... " >&6; } if test ${gl_cv_func_utime_file_slash+y} then : printf %s "(cached) " >&6 else $as_nop touch conftest.tmp # Assume that if we have lstat, we can also check symlinks. if test $ac_cv_func_lstat = yes; then ln -s conftest.tmp conftest.lnk fi if test "$cross_compiling" = yes then : case "$host_os" in # Guess yes on Linux systems. linux-* | linux) gl_cv_func_utime_file_slash="guessing yes" ;; # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_utime_file_slash="guessing yes" ;; # Guess no on macOS. darwin*) gl_cv_func_utime_file_slash="guessing no" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_utime_file_slash="$gl_cross_guess_normal" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { int result = 0; if (!utime ("conftest.tmp/", NULL)) result |= 1; #if HAVE_LSTAT if (!utime ("conftest.lnk/", NULL)) result |= 2; #endif return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : gl_cv_func_utime_file_slash=yes else $as_nop gl_cv_func_utime_file_slash=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.tmp conftest.lnk fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_utime_file_slash" >&5 printf "%s\n" "$gl_cv_func_utime_file_slash" >&6; } case $gl_cv_func_stat_file_slash in *no) REPLACE_UTIME=1 printf "%s\n" "#define REPLACE_FUNC_UTIME_FILE 1" >>confdefs.h ;; esac fi ;; esac if test $HAVE_UTIME = 0 || test $REPLACE_UTIME = 1; then GL_COND_OBJ_UTIME_TRUE= GL_COND_OBJ_UTIME_FALSE='#' else GL_COND_OBJ_UTIME_TRUE='#' GL_COND_OBJ_UTIME_FALSE= fi : if test -z "${GL_COND_OBJ_UTIME_TRUE}" && test -z "${GL_COND_OBJ_UTIME_FALSE}"; then GL_COND_OBJ_UTIME_TRUE='#' GL_COND_OBJ_UTIME_FALSE='#' fi if test -z "$GL_COND_OBJ_UTIME_TRUE"; then : : fi GL_GNULIB_UTIME=1 printf "%s\n" "#define GNULIB_TEST_UTIME 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for variable-length arrays" >&5 printf %s "checking for variable-length arrays... " >&6; } if test ${ac_cv_c_vararrays+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC_NO_VLA__ defined #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "defined" >/dev/null 2>&1 then : ac_cv_c_vararrays='no: __STDC_NO_VLA__ is defined' else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Test for VLA support. This test is partly inspired from examples in the C standard. Use at least two VLA functions to detect the GCC 3.4.3 bug described in: https://lists.gnu.org/archive/html/bug-gnulib/2014-08/msg00014.html */ #ifdef __STDC_NO_VLA__ syntax error; #else extern int n; int B[100]; int fvla (int m, int C[m][m]); int simple (int count, int all[static count]) { return all[count - 1]; } int fvla (int m, int C[m][m]) { typedef int VLA[m][m]; VLA x; int D[m]; static int (*q)[m] = &B; int (*s)[n] = q; return C && &x[0][0] == &D[0] && &D[0] == s[0]; } #endif int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_vararrays=yes else $as_nop ac_cv_c_vararrays=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -rf conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_vararrays" >&5 printf "%s\n" "$ac_cv_c_vararrays" >&6; } if test "$ac_cv_c_vararrays" = yes; then printf "%s\n" "#define HAVE_C_VARARRAYS 1" >>confdefs.h elif test "$ac_cv_c_vararrays" = no; then printf "%s\n" "#define __STDC_NO_VLA__ 1" >>confdefs.h fi if test $ac_cv_func_vasnprintf = no; then gl_LIBOBJS="$gl_LIBOBJS vasnprintf.$ac_objext" gl_LIBOBJS="$gl_LIBOBJS printf-args.$ac_objext" gl_LIBOBJS="$gl_LIBOBJS printf-parse.$ac_objext" gl_LIBOBJS="$gl_LIBOBJS asnprintf.$ac_objext" if test $ac_cv_func_vasnprintf = yes; then printf "%s\n" "#define REPLACE_VASNPRINTF 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" if test "x$ac_cv_type_ptrdiff_t" = xyes then : else $as_nop printf "%s\n" "#define ptrdiff_t long" >>confdefs.h fi fi ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf" if test "x$ac_cv_func_vasprintf" = xyes then : printf "%s\n" "#define HAVE_VASPRINTF 1" >>confdefs.h fi if test $ac_cv_func_vasprintf = no; then gl_LIBOBJS="$gl_LIBOBJS vasprintf.$ac_objext" gl_LIBOBJS="$gl_LIBOBJS asprintf.$ac_objext" if test $ac_cv_func_vasprintf = yes; then REPLACE_VASPRINTF=1 else HAVE_VASPRINTF=0 fi fi GL_GNULIB_VASPRINTF=1 printf "%s\n" "#define GNULIB_TEST_VASPRINTF 1" >>confdefs.h XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=asprintf:2:c-format" XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=vasprintf:2:c-format" gl_cv_func_vfprintf_posix=no case "$gl_cv_func_printf_sizes_c99" in *yes) case "$gl_cv_func_printf_long_double" in *yes) case "$gl_cv_func_printf_infinite" in *yes) case "$gl_cv_func_printf_infinite_long_double" in *yes) case "$gl_cv_func_printf_directive_a" in *yes) case "$gl_cv_func_printf_directive_f" in *yes) case "$gl_cv_func_printf_directive_n" in *yes) case "$gl_cv_func_printf_directive_ls" in *yes) case "$gl_cv_func_printf_positions" in *yes) case "$gl_cv_func_printf_flag_grouping" in *yes) case "$gl_cv_func_printf_flag_leftadjust" in *yes) case "$gl_cv_func_printf_flag_zero" in *yes) case "$gl_cv_func_printf_precision" in *yes) case "$gl_cv_func_printf_enomem" in *yes) # vfprintf exists and is # already POSIX compliant. gl_cv_func_vfprintf_posix=yes ;; esac ;; esac ;; esac ;; esac ;; esac ;; esac ;; esac ;; esac ;; esac ;; esac ;; esac ;; esac ;; esac ;; esac if test $gl_cv_func_vfprintf_posix = no; then case "$gl_cv_func_printf_infinite" in *yes) ;; *) printf "%s\n" "#define NEED_PRINTF_INFINITE_DOUBLE 1" >>confdefs.h ;; esac case "$gl_cv_func_printf_long_double" in *yes) case "$gl_cv_func_printf_infinite_long_double" in *yes) ;; *) printf "%s\n" "#define NEED_PRINTF_INFINITE_LONG_DOUBLE 1" >>confdefs.h ;; esac ;; esac case "$gl_cv_func_printf_directive_a" in *yes) ;; *) printf "%s\n" "#define NEED_PRINTF_DIRECTIVE_A 1" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo" >&5 printf %s "checking for nl_langinfo... " >&6; } if test ${gl_cv_onwards_func_nl_langinfo+y} then : printf %s "(cached) " >&6 else $as_nop exec 9>&6 6>/dev/null case "$host_os" in linux*-android*) ac_fn_check_decl "$LINENO" "nl_langinfo" "ac_cv_have_decl_nl_langinfo" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_nl_langinfo" = xyes then : fi if test $ac_cv_have_decl_nl_langinfo = yes; then ac_fn_c_check_func "$LINENO" "nl_langinfo" "ac_cv_func_nl_langinfo" if test "x$ac_cv_func_nl_langinfo" = xyes then : fi if test $ac_cv_func_nl_langinfo = yes; then gl_cv_onwards_func_nl_langinfo=yes else gl_cv_onwards_func_nl_langinfo='future OS version' fi else gl_cv_onwards_func_nl_langinfo='future OS version' fi ;; *) ac_fn_c_check_func "$LINENO" "nl_langinfo" "ac_cv_func_nl_langinfo" if test "x$ac_cv_func_nl_langinfo" = xyes then : fi gl_cv_onwards_func_nl_langinfo=$ac_cv_func_nl_langinfo ;; esac exec 6>&9 9>&- fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_onwards_func_nl_langinfo" >&5 printf "%s\n" "$gl_cv_onwards_func_nl_langinfo" >&6; } case "$gl_cv_onwards_func_nl_langinfo" in future*) ac_cv_func_nl_langinfo=no ;; *) ac_cv_func_nl_langinfo=$gl_cv_onwards_func_nl_langinfo ;; esac if test $ac_cv_func_nl_langinfo = yes; then printf "%s\n" "#define HAVE_NL_LANGINFO 1" >>confdefs.h fi ;; esac case "$gl_cv_func_printf_directive_f" in *yes) ;; *) printf "%s\n" "#define NEED_PRINTF_DIRECTIVE_F 1" >>confdefs.h ;; esac case "$gl_cv_func_printf_directive_ls" in *yes) ;; *) printf "%s\n" "#define NEED_PRINTF_DIRECTIVE_LS 1" >>confdefs.h ;; esac case "$gl_cv_func_printf_flag_grouping" in *yes) ;; *) printf "%s\n" "#define NEED_PRINTF_FLAG_GROUPING 1" >>confdefs.h ;; esac case "$gl_cv_func_printf_flag_leftadjust" in *yes) ;; *) printf "%s\n" "#define NEED_PRINTF_FLAG_LEFTADJUST 1" >>confdefs.h ;; esac case "$gl_cv_func_printf_flag_zero" in *yes) ;; *) printf "%s\n" "#define NEED_PRINTF_FLAG_ZERO 1" >>confdefs.h ;; esac case "$gl_cv_func_printf_precision" in *yes) ;; *) printf "%s\n" "#define NEED_PRINTF_UNBOUNDED_PRECISION 1" >>confdefs.h printf "%s\n" "#define NEED_PRINTF_DOUBLE 1" >>confdefs.h printf "%s\n" "#define NEED_PRINTF_LONG_DOUBLE 1" >>confdefs.h ;; esac case "$gl_cv_func_printf_enomem" in *yes) ;; *) printf "%s\n" "#define NEED_PRINTF_ENOMEM 1" >>confdefs.h printf "%s\n" "#define NEED_PRINTF_DOUBLE 1" >>confdefs.h printf "%s\n" "#define NEED_PRINTF_LONG_DOUBLE 1" >>confdefs.h ;; esac gl_LIBOBJS="$gl_LIBOBJS vasnprintf.$ac_objext" gl_LIBOBJS="$gl_LIBOBJS printf-args.$ac_objext" gl_LIBOBJS="$gl_LIBOBJS printf-parse.$ac_objext" gl_LIBOBJS="$gl_LIBOBJS asnprintf.$ac_objext" if test $ac_cv_func_vasnprintf = yes; then printf "%s\n" "#define REPLACE_VASNPRINTF 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" if test "x$ac_cv_type_ptrdiff_t" = xyes then : else $as_nop printf "%s\n" "#define ptrdiff_t long" >>confdefs.h fi gl_LIBOBJS="$gl_LIBOBJS vfprintf.$ac_objext" REPLACE_VFPRINTF=1 printf "%s\n" "#define REPLACE_VFPRINTF_POSIX 1" >>confdefs.h : fi GL_GNULIB_VFPRINTF_POSIX=1 printf "%s\n" "#define GNULIB_TEST_VFPRINTF_POSIX 1" >>confdefs.h printf "%s\n" "#define GNULIB_VFPRINTF_POSIX 1" >>confdefs.h if test $gl_cv_func_vfprintf_posix = no; then gl_LIBOBJS="$gl_LIBOBJS vprintf.$ac_objext" REPLACE_VPRINTF=1 printf "%s\n" "#define REPLACE_VPRINTF_POSIX 1" >>confdefs.h : fi GL_GNULIB_VPRINTF_POSIX=1 printf "%s\n" "#define GNULIB_TEST_VPRINTF_POSIX 1" >>confdefs.h printf "%s\n" "#define GNULIB_VPRINTF_POSIX 1" >>confdefs.h : printf "%s\n" "#define GNULIB_XALLOC 1" >>confdefs.h printf "%s\n" "#define GNULIB_XALLOC_DIE 1" >>confdefs.h ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" if test "x$ac_cv_header_stdint_h" = xyes then : printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h fi # End of code from modules gltests_libdeps= gltests_ltlibdeps= gl_source_base='tests' gl_source_base_prefix= gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS gl_module_indicator_condition=$gltests_WITNESS # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PERL+y} then : printf %s "(cached) " >&6 else $as_nop case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 printf "%s\n" "$PERL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "help2man", so it can be a program name with args. set dummy help2man; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_HELP2MAN+y} then : printf %s "(cached) " >&6 else $as_nop case $HELP2MAN in [\\/]* | ?:[\\/]*) ac_cv_path_HELP2MAN="$HELP2MAN" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_HELP2MAN="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi HELP2MAN=$ac_cv_path_HELP2MAN if test -n "$HELP2MAN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $HELP2MAN" >&5 printf "%s\n" "$HELP2MAN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi CROSS_COMPILING=$cross_compiling for ac_prog in cython3 cython do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CYTHON+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CYTHON"; then ac_cv_prog_CYTHON="$CYTHON" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CYTHON="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CYTHON=$ac_cv_prog_CYTHON if test -n "$CYTHON"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CYTHON" >&5 printf "%s\n" "$CYTHON" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CYTHON" && break done if test -n "$ac_cv_prog_CYTHON"; then HAVE_CYTHON_TRUE= HAVE_CYTHON_FALSE='#' else HAVE_CYTHON_TRUE='#' HAVE_CYTHON_FALSE= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking what extension is used for runtime loadable modules" >&5 printf %s "checking what extension is used for runtime loadable modules... " >&6; } if test ${libltdl_cv_shlibext+y} then : printf %s "(cached) " >&6 else $as_nop module=yes eval libltdl_cv_shlibext=$shrext_cmds module=no eval libltdl_cv_shrext=$shrext_cmds fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libltdl_cv_shlibext" >&5 printf "%s\n" "$libltdl_cv_shlibext" >&6; } if test -n "$libltdl_cv_shlibext"; then printf "%s\n" "#define LT_MODULE_EXT \"$libltdl_cv_shlibext\"" >>confdefs.h fi if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then printf "%s\n" "#define LT_SHARED_EXT \"$libltdl_cv_shrext\"" >>confdefs.h fi if test -n "$shared_archive_member_spec"; then printf "%s\n" "#define LT_SHARED_LIB_MEMBER \"($shared_archive_member_spec.o)\"" >>confdefs.h fi case $host_os in *mingw* ) pyextext=.pyd;; *cygwin*) pyextext=.dll;; * ) pyextext=.so;; esac pyextext=$pyextext # Check whether --enable-gcc-warnings was given. if test ${enable_gcc_warnings+y} then : enableval=$enable_gcc_warnings; case $enableval in yes|no) ;; *) as_fn_error $? "bad value $enableval for gcc-warnings option" "$LINENO" 5 ;; esac gl_gcc_warnings=$enableval else $as_nop gl_gcc_warnings=yes fi if test "$gl_gcc_warnings" = yes; then nw= nw="$nw -Wsystem-headers" # Don’t let system headers trigger warnings nw="$nw -Wundef" # All compiler preprocessors support #if UNDEF nw="$nw -Wtraditional" # All compilers nowadays support ANSI C nw="$nw -Wdeclaration-after-statement" # We require C99. nw="$nw -Wstrict-overflow" # Use a lower level (see below). nw="$nw -Wconversion" # These warnings usually don’t point to mistakes. nw="$nw -Wsign-conversion" # Likewise. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$GCC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -Wno-missing-field-initializers is supported" >&5 printf %s "checking whether -Wno-missing-field-initializers is supported... " >&6; } if test ${gl_cv_cc_nomfi_supported+y} then : printf %s "(cached) " >&6 else $as_nop gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wextra -Werror -Wno-missing-field-initializers" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_cc_nomfi_supported=yes else $as_nop gl_cv_cc_nomfi_supported=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_nomfi_supported" >&5 printf "%s\n" "$gl_cv_cc_nomfi_supported" >&6; } if test "$gl_cv_cc_nomfi_supported" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -Wno-missing-field-initializers is needed" >&5 printf %s "checking whether -Wno-missing-field-initializers is needed... " >&6; } if test ${gl_cv_cc_nomfi_needed+y} then : printf %s "(cached) " >&6 else $as_nop gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wextra -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int f (void) { typedef struct { int a; int b; } s_t; s_t s1 = { 0, }; return s1.b; } int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_cc_nomfi_needed=no else $as_nop gl_cv_cc_nomfi_needed=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_nomfi_needed" >&5 printf "%s\n" "$gl_cv_cc_nomfi_needed" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -Wuninitialized is supported" >&5 printf %s "checking whether -Wuninitialized is supported... " >&6; } if test ${gl_cv_cc_uninitialized_supported+y} then : printf %s "(cached) " >&6 else $as_nop gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror -Wuninitialized" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : gl_cv_cc_uninitialized_supported=yes else $as_nop gl_cv_cc_uninitialized_supported=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_uninitialized_supported" >&5 printf "%s\n" "$gl_cv_cc_uninitialized_supported" >&6; } fi # List all gcc warning categories. # To compare this list to your installed GCC's, run this Bash command: # # comm -3 \ # <((sed -n 's/^ *\(-[^ 0-9][^ ]*\).*/\1/p' manywarnings.m4; \ # awk '/^[^#]/ {print warnings}' ../build-aux/gcc-warning.spec) | sort) \ # <(LC_ALL=C gcc --help=warnings | sed -n 's/^ \(-[^ ]*\) .*/\1/p' | sort) warnings= for gl_manywarn_item in -fanalyzer -fno-common \ -Wall \ -Warith-conversion \ -Wbad-function-cast \ -Wcast-align=strict \ -Wdate-time \ -Wdisabled-optimization \ -Wdouble-promotion \ -Wduplicated-branches \ -Wduplicated-cond \ -Wextra \ -Wformat-signedness \ -Winit-self \ -Winline \ -Winvalid-pch \ -Wlogical-op \ -Wmissing-declarations \ -Wmissing-include-dirs \ -Wmissing-prototypes \ -Wnested-externs \ -Wnull-dereference \ -Wold-style-definition \ -Wopenmp-simd \ -Woverlength-strings \ -Wpacked \ -Wpointer-arith \ -Wshadow \ -Wstack-protector \ -Wstrict-overflow \ -Wstrict-prototypes \ -Wsuggest-attribute=cold \ -Wsuggest-attribute=const \ -Wsuggest-attribute=format \ -Wsuggest-attribute=malloc \ -Wsuggest-attribute=noreturn \ -Wsuggest-attribute=pure \ -Wsuggest-final-methods \ -Wsuggest-final-types \ -Wsync-nand \ -Wsystem-headers \ -Wtrampolines \ -Wuninitialized \ -Wunknown-pragmas \ -Wunsafe-loop-optimizations \ -Wunused-macros \ -Wvariadic-macros \ -Wvector-operation-performance \ -Wvla \ -Wwrite-strings \ \ ; do as_fn_append warnings " $gl_manywarn_item" done # gcc --help=warnings outputs an unusual form for these options; list # them here so that the above 'comm' command doesn't report a false match. as_fn_append warnings ' -Warray-bounds=2' as_fn_append warnings ' -Wattribute-alias=2' as_fn_append warnings ' -Wbidi-chars=any,ucn' as_fn_append warnings ' -Wformat-overflow=2' as_fn_append warnings ' -Wformat=2' as_fn_append warnings ' -Wformat-truncation=2' as_fn_append warnings ' -Wimplicit-fallthrough=5' as_fn_append warnings ' -Wshift-overflow=2' as_fn_append warnings ' -Wuse-after-free=3' as_fn_append warnings ' -Wunused-const-variable=2' as_fn_append warnings ' -Wvla-larger-than=4031' # These are needed for older GCC versions. if test -n "$GCC"; then case `($CC --version) 2>/dev/null` in 'gcc (GCC) '[0-3].* | \ 'gcc (GCC) '4.[0-7].*) as_fn_append warnings ' -fdiagnostics-show-option' as_fn_append warnings ' -funit-at-a-time' ;; esac fi # Disable specific options as needed. if test "$gl_cv_cc_nomfi_needed" = yes; then as_fn_append warnings ' -Wno-missing-field-initializers' fi if test "$gl_cv_cc_uninitialized_supported" = no; then as_fn_append warnings ' -Wno-uninitialized' fi # This warning have too many false alarms in GCC 11.2.1. # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101713 as_fn_append warnings ' -Wno-analyzer-malloc-leak' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu gl_warn_set= set x $warnings; shift for gl_warn_item do case " $nw " in *" $gl_warn_item "*) ;; *) as_fn_append gl_warn_set " $gl_warn_item" ;; esac done warnings=$gl_warn_set for w in $warnings; do ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Werror -Wunknown-warning-option" >&5 printf %s "checking whether C compiler handles -Werror -Wunknown-warning-option... " >&6; } if test ${gl_cv_warn_c__Werror__Wunknown_warning_option+y} then : printf %s "(cached) " >&6 else $as_nop gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_warn_c__Werror__Wunknown_warning_option=yes else $as_nop gl_cv_warn_c__Werror__Wunknown_warning_option=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Werror__Wunknown_warning_option" >&5 printf "%s\n" "$gl_cv_warn_c__Werror__Wunknown_warning_option" >&6; } if test "x$gl_cv_warn_c__Werror__Wunknown_warning_option" = xyes then : gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror' else $as_nop gl_unknown_warnings_are_errors= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu as_gl_Warn=`printf "%s\n" "gl_cv_warn_c_$w" | $as_tr_sh` gl_positive="$w" case $gl_positive in -Wno-*) gl_positive=-W`expr "X$gl_positive" : 'X-Wno-\(.*\)'` ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles $w" >&5 printf %s "checking whether C compiler handles $w... " >&6; } if eval test \${$as_gl_Warn+y} then : printf %s "(cached) " >&6 else $as_nop gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " $gl_unknown_warnings_are_errors $gl_positive" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$as_gl_Warn=yes" else $as_nop eval "$as_gl_Warn=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi eval ac_res=\$$as_gl_Warn { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_gl_Warn"\" = x"yes" then : as_fn_append WARN_CFLAGS " $w" fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wstrict-overflow=1" >&5 printf %s "checking whether C compiler handles -Wstrict-overflow=1... " >&6; } if test ${gl_cv_warn_c__Wstrict_overflow_1+y} then : printf %s "(cached) " >&6 else $as_nop gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wstrict-overflow=1" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_warn_c__Wstrict_overflow_1=yes else $as_nop gl_cv_warn_c__Wstrict_overflow_1=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wstrict_overflow_1" >&5 printf "%s\n" "$gl_cv_warn_c__Wstrict_overflow_1" >&6; } if test "x$gl_cv_warn_c__Wstrict_overflow_1" = xyes then : as_fn_append WARN_CFLAGS " -Wstrict-overflow=1" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wno-error=format-security" >&5 printf %s "checking whether C compiler handles -Wno-error=format-security... " >&6; } if test ${gl_cv_warn_c__Wno_error_format_security+y} then : printf %s "(cached) " >&6 else $as_nop gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror=format-security" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gl_cv_warn_c__Wno_error_format_security=yes else $as_nop gl_cv_warn_c__Wno_error_format_security=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wno_error_format_security" >&5 printf "%s\n" "$gl_cv_warn_c__Wno_error_format_security" >&6; } if test "x$gl_cv_warn_c__Wno_error_format_security" = xyes then : as_fn_append WARN_CFLAGS " -Wno-error=format-security" fi # When compiling with GCC, prefer -isystem to -I when including system # include files, to avoid generating useless diagnostics for the files. ISYSTEM='-isystem ' else ISYSTEM='-I' fi # Extra settings for running tests, e.g. LD_PRELOAD for ASAN # Gettext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 printf %s "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test ${enable_nls+y} then : enableval=$enable_nls; USE_NLS=$enableval else $as_nop USE_NLS=yes fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 printf "%s\n" "$USE_NLS" >&6; } GETTEXT_MACRO_VERSION=0.19 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_MSGFMT+y} then : printf %s "(cached) " >&6 else $as_nop case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 printf "%s\n" "$MSGFMT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GMSGFMT+y} then : printf %s "(cached) " >&6 else $as_nop case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 printf "%s\n" "$GMSGFMT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_XGETTEXT+y} then : printf %s "(cached) " >&6 else $as_nop case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 printf "%s\n" "$XGETTEXT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f messages.po case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_MSGMERGE+y} then : printf %s "(cached) " >&6 else $as_nop case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 printf "%s\n" "$MSGMERGE" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$localedir" || localedir='${datadir}/locale' test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= ac_config_commands="$ac_config_commands po-directories" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 printf %s "checking for CFPreferencesCopyAppValue... " >&6; } if test ${gt_cv_func_CFPreferencesCopyAppValue+y} then : printf %s "(cached) " >&6 else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gt_cv_func_CFPreferencesCopyAppValue=yes else $as_nop gt_cv_func_CFPreferencesCopyAppValue=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 printf %s "checking for CFLocaleCopyCurrent... " >&6; } if test ${gt_cv_func_CFLocaleCopyCurrent+y} then : printf %s "(cached) " >&6 else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { CFLocaleCopyCurrent(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gt_cv_func_CFLocaleCopyCurrent=yes else $as_nop gt_cv_func_CFLocaleCopyCurrent=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 printf "%s\n" "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then printf "%s\n" "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 printf %s "checking for GNU gettext in libc... " >&6; } if eval test \${$gt_func_gnugettext_libc+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$gt_func_gnugettext_libc=yes" else $as_nop eval "$gt_func_gnugettext_libc=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 printf %s "checking for iconv... " >&6; } if test ${am_cv_func_iconv+y} then : printf %s "(cached) " >&6 else $as_nop am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 printf "%s\n" "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 printf %s "checking for working iconv... " >&6; } if test ${am_cv_func_iconv_works+y} then : printf %s "(cached) " >&6 else $as_nop am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do if test "$cross_compiling" = yes then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif int main (void) { int result = 0; /* Test against AIX 5.1...7.2 bug: Failures are not distinguishable from successful returns. This is even documented in */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ { /* Try standardized names. */ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); /* Try IRIX, OSF/1 names. */ iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); /* Try AIX names. */ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); /* Try HP-UX names. */ iconv_t cd4 = iconv_open ("utf8", "eucJP"); if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) result |= 16; if (cd1 != (iconv_t)(-1)) iconv_close (cd1); if (cd2 != (iconv_t)(-1)) iconv_close (cd2); if (cd3 != (iconv_t)(-1)) iconv_close (cd3); if (cd4 != (iconv_t)(-1)) iconv_close (cd4); } return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : am_cv_func_iconv_works=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 printf "%s\n" "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 printf %s "checking how to link with libiconv... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 printf "%s\n" "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test ${with_libintl_prefix+y} then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" additional_libdir2="$withval/$acl_libdirstem2" additional_libdir3="$withval/$acl_libdirstem3" fi fi fi if test "X$additional_libdir2" = "X$additional_libdir"; then additional_libdir2= fi if test "X$additional_libdir3" = "X$additional_libdir"; then additional_libdir3= fi LIBINTL= LTLIBINTL= INCINTL= LIBINTL_PREFIX= HAVE_LIBINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do if test "X$found_dir" = "X"; then eval dir=\$$additional_libdir_variable if test -n "$dir"; then if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi fi done fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem3 | */$acl_libdirstem3/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then haveit= if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$dependency_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$dependency_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dep=`echo "X$dep" | sed -e 's/^X-l//'` if test "X$dep" != Xc \ || case $host_os in linux* | gnu* | k*bsd*-gnu) false ;; *) true ;; esac; then names_next_round="$names_next_round $dep" fi ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 printf %s "checking for GNU gettext in libintl... " >&6; } if eval test \${$gt_func_gnugettext_libintl+y} then : printf %s "(cached) " >&6 else $as_nop gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$gt_func_gnugettext_libintl=yes" else $as_nop eval "$gt_func_gnugettext_libintl=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 printf %s "checking whether to use NLS... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 printf "%s\n" "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 printf %s "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 printf "%s\n" "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 printf %s "checking how to link with libintl... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 printf "%s\n" "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --from-code=UTF-8" ac_config_headers="$ac_config_headers config.h" ac_config_files="$ac_config_files Makefile contrib/Makefile doc/Makefile lib/Makefile po/Makefile.in src/Makefile src/recode.x tests/Makefile tests/setup.py" ac_config_files="$ac_config_files build-aux/x-to-1" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi # Check whether --enable-year2038 was given. if test ${enable_year2038+y} then : enableval=$enable_year2038; fi # Check whether --enable-largefile was given. if test ${enable_largefile+y} then : enableval=$enable_largefile; fi if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi gl_libobjs= gl_ltlibobjs= gl_libobjdeps= if test -n "$gl_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' sed_dirname1='s,//*,/,g' sed_dirname2='s,\(.\)/$,\1,' sed_dirname3='s,^[^/]*$,.,' sed_dirname4='s,\(.\)/[^/]*$,\1,' sed_basename1='s,.*/,,' for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gl_libobjs="$gl_libobjs $i.$ac_objext" gl_ltlibobjs="$gl_ltlibobjs $i.lo" i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` i_base=`echo "$i" | sed -e "$sed_basename1"` gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Plo" done fi gl_LIBOBJS=$gl_libobjs gl_LTLIBOBJS=$gl_ltlibobjs gl_LIBOBJDEPS=$gl_libobjdeps gltests_libobjs= gltests_ltlibobjs= gltests_libobjdeps= if test -n "$gltests_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' sed_dirname1='s,//*,/,g' sed_dirname2='s,\(.\)/$,\1,' sed_dirname3='s,^[^/]*$,.,' sed_dirname4='s,\(.\)/[^/]*$,\1,' sed_basename1='s,.*/,,' for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gltests_libobjs="$gltests_libobjs $i.$ac_objext" gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` i_base=`echo "$i" | sed -e "$sed_basename1"` gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Plo" done fi gltests_LIBOBJS=$gltests_libobjs gltests_LTLIBOBJS=$gltests_ltlibobjs gltests_LIBOBJDEPS=$gltests_libobjdeps if test -z "${HAVE_CYTHON_TRUE}" && test -z "${HAVE_CYTHON_FALSE}"; then as_fn_error $? "conditional \"HAVE_CYTHON\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by recode $as_me 3.7.15, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ recode config.status 3.7.15 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ FILECMD \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/recode.x") CONFIG_FILES="$CONFIG_FILES src/recode.x" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "tests/setup.py") CONFIG_FILES="$CONFIG_FILES tests/setup.py" ;; "build-aux/x-to-1") CONFIG_FILES="$CONFIG_FILES build-aux/x-to-1" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool 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 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool 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, see . # The names of the tagged configurations supported by this script. available_tags='' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # A file(cmd) program that detects file types. FILECMD=$lt_FILECMD # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive (by configure). lt_ar_flags=$lt_ar_flags # Flags to create an archive. AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; "build-aux/x-to-1":F) chmod +x build-aux/x-to-1 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi recode-3.7.15/tables.py0000754000175000017500000013661114765654444010412 #!/usr/bin/python3 # -*- coding: utf-8 -*- # Automatically derive Recode table files from various sources. # Copyright © 1993-2000 Free Software Foundation, Inc. # François Pinard , 1993. # 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 3, 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, see . """\ `tables.py' derives Recode table files from various sources. Usage: python tables.py [OPTION]... DATA-FILE... Output selection: -e Produce C source file for explode data (explode.c) -i Produce C source file for iconv charsets (iconvdecl.h) -m Produce C inclusion file for short RFC 1345 mnemonics (rfc1345.h) -n Produce C inclusion file for character names (charname.h) -p Produce C source files for strip data (strip-pool.c and strip-data.c) -t Produce Texinfo inclusion file for RFC 1345 (rfc1345.texi) Modality options: -C DIRECTORY Change to DIRECTORY prior to processing -F Produce French versions for -n, -s or -t -v Increase verbosity DATA-FILEs may be rfc1345.txt, mnemonic[.,]ds, Unicode maps, or .def files from Keld's chset* packages. The digesting order is usually important. When `-F' and `-n' are used, process Alain's tables. """ import re, sys, io # Character constants. REPLACEMENT_CHARACTER = 0xFFFD NOT_A_CHARACTER = 0xFFFF # Main driver. class Main: directory = None charnames = None explodes = None iconv = None mnemonics = None strips = None verbose = False def main(self, *arguments): if not arguments: sys.stdout.write(__doc__) return import getopt French_option = False options, arguments = getopt.getopt(arguments, 'C:Feimnptv') for option, value in options: if option == '-C': self.directory = value elif option == '-F': French_option = True elif option == '-e': if not self.explodes: self.explodes = Explodes() self.explodes.do_sources = True elif option == '-i': if not self.iconv: self.iconv = Iconv() self.iconv.do_sources = True elif option == '-m': if not self.mnemonics: self.mnemonics = Mnemonics() self.mnemonics.do_sources = True elif option == '-n': if not self.charnames: self.charnames = Charnames() self.charnames.do_sources = True elif option == '-p': if not self.strips: self.strips = Strips() self.strips.do_sources = True elif option == '-t': if not self.strips: self.strips = Strips() self.strips.do_texinfo = True elif option == '-v': self.verbose = True # Read all data tables. if self.directory: import os os.chdir(self.directory) if self.iconv: self.iconv.digest() for name in arguments: input = Input(name) while True: line = input.readline() if not line: break if line[0] == '\n': continue if line[:2] == '/*': while line.find('*/') < 0: line = input.readline() continue if input.begins('# Name:'): if not self.strips: self.strips = Strips() self.strips.digest_unimap(input) break if line[0] == '#': continue if input.begins('escape_char'): if not self.mnemonics: self.mnemonics = Mnemonics() self.mnemonics.digest_mnemonics_ds(input) break if input.match('Network Working Group +K\. Simonsen$'): if (self.charnames and self.charnames.do_sources and not French_option): while not input.begins( ' 3rd field is the long descriptive'): line = input.readline() if not self.mnemonics: self.mnemonics = Mnemonics() self.mnemonics.digest_rfc1345(input) if self.explodes or self.strips: while line != '5. CHARSET TABLES\n': line = input.readline() if not self.strips: self.strips = Strips() self.strips.digest_rfc1345(input) break if input.begins('@@\t'): if self.charnames.do_sources and French_option: self.charnames.digest_french(input) break if line == '&referenceset\n': while line != '\n': line = input.readline() if not self.strips: self.strips = Strips() if not self.mnemonics: self.mnemonics = Mnemonics() self.strips.digest_rfc1345(input) break if line in (' Repertoire according to ISO/IEC 10646-1:1993\n', ' Control characters\n', ' Private use\n'): while line not in (' Plane 000\n', ' plane 000\n'): line = input.readline() if not self.mnemonics: self.mnemonics = Mnemonics() self.mnemonics.digest_iso10646_def(input) break input.die("Data file with unknown contents") for instance in (self.explodes, self.strips, self.charnames, self.iconv, self.mnemonics): if instance: instance.complete(French_option) run = Main() main = run.main class Options: def __init__(self): self.do_sources = False self.do_texinfo = False # Charnames. class Charnames(Options): SOURCES = 'charname.h' # Name of character, given its numerical value. charname_map = {} # Maximum printable length of a character name. max_length = 0 # Frequency of each word, then its crypt code. code_map = {} def digest_french(self, input): self.preset_french() fold_table = list(range(256)) for before, after in zip( u'ABCDEFGHIJKLMNOPQRSTUVWXYZÀÂÇÈÉÊÎÃÑÔÖÛ'.encode('ISO-8859-1'), u'abcdefghijklmnopqrstuvwxyzàâçèéêîïñôöû'.encode('ISO-8859-1')): fold_table[before] = after folding = ''.join(map(chr, fold_table)) ignorables = ( u''.encode('ISO-8859-1'), u''.encode('ISO-8859-1'), u''.encode('ISO-8859-1')) while True: line = input.readline() if not line: break if input.begins('@@\t'): continue # Pour éliminer la fin de ligne. line = line.rstrip() input.line = line match = input.match('([0-9A-F]{4})\t([^(]+)( \\(.*\\))?( \\*)?$') if match: ucs = int(match.group(1), 16) text = match.group(2).translate(folding) if text in ignorables: continue self.declare(ucs, re.sub(r' +\*$', '', text, 1)) else: input.warn("Unrecognised line") def preset_french(self): self.max_length = 0 ucs = 0x0000 for text in ( u"nul (nul)", # 0000 u"début d'en-tête (soh)", # 0001 u"début de texte (stx)", # 0002 u"fin de texte (etx)", # 0003 u"fin de transmission (eot)", # 0004 u"demande (enq)", # 0005 u"accusé de réception positif (ack)", # 0006 u"sonnerie (bel)", # 0007 u"espace arrière (bs)", # 0008 u"tabulation horizontale (ht)", # 0009 u"interligne (lf)", # 000A u"tabulation verticale (vt)", # 000B u"page suivante (ff)", # 000C u"retour de chariot (cr)", # 000D u"hors code (so)", # 000E u"en code (si)", # 000F u"échappement transmission (dle)", # 0010 u"commande d'appareil un (dc1)", # 0011 u"commande d'appareil deux (dc2)", # 0012 u"commande d'appareil trois (dc3)", # 0013 u"commande d'appareil quatre (dc4)", # 0014 u"accusé de réception négatif (nak)", # 0015 u"synchronisation (syn)", # 0016 u"fin de transmission de bloc (etb)", # 0017 u"annulation (can)", # 0018 u"fin de support (em)", # 0019 u"caractère de substitution (sub)", # 001A u"échappement (esc)", # 001B u"séparateur de fichier (fs)", # 001C u"séparateur de groupe (gs)", # 001D u"séparateur d'article (rs)", # 001E u"séparateur de sous-article (us)", # 001F ): self.declare(ucs, text) ucs += 1 ucs = 0x007F for text in ( u"suppression (del)", # 007F u"caractère de bourre (pad)", # 0080 u"octet supérieur prédéfini (hop)", # 0081 u"arrêt permis ici (bph)", # 0082 u"aucun arrêt ici (nbh)", # 0083 u"index (ind)", # 0084 u"à la ligne (nel)", # 0085 u"début de zone sélectionnée (ssa)", # 0086 u"fin de zone sélectionnée (esa)", # 0087 u"arrêt de tabulateur horizontal (hts)", # 0088 u"tabulateur horizontal avec justification (htj)", # 0089 u"arrêt de tabulateur vertical (vts)", # 008A u"interligne partiel vers <= bas (pld)", # 008B u"interligne partiel vers <= haut (plu)", # 008C u"index inversé (ri)", # 008D u"remplacement unique deux (ss2)", # 008E u"remplacement unique trois (ss3)", # 008F u"chaîne de commande d'appareil (dcs)", # 0090 u"usage privé un (pu1)", # 0091 u"usage privé deux (pu2)", # 0092 u"mise en mode transmission (sts)", # 0093 u"annulation du caractère précédent (cch)", # 0094 u"message en attente (mw)", # 0095 u"début de zone protégée (sga)", # 0096 u"fin de zone protégée (ega)", # 0097 u"début de chaîne (sos)", # 0098 u"introducteur de caractère graphique unique (sgci)",# 0099 u"introducteur de caractère unique (sci)", # 009A u"introducteur de séquence de commande (csi)", # 009B u"fin de chaîne (st)", # 009C u"commande de système d'exploitation (osc)", # 009D u"message privé (pm)", # 009E u"commande de progiciel (apc)", # 009F ): self.declare(ucs, text) ucs += 1 def declare(self, ucs, text): self.charname_map[ucs] = text if len(text) > self.max_length: self.max_length = len(text) for word in text.split(): self.code_map[word] = self.code_map.get(word, 0) + 1 def presort_word(self, word): return -self.code_map[word], word # Write a compressed list of character names. def complete(self, french): if not self.do_sources: return if french: write = Output('fr-%s' % self.SOURCES).write else: write = Output(self.SOURCES).write # Establish a mild compression scheme. Words word[:singles] # will be represented by a single byte running from 1 to # singles. All remaining words will be represented by two # bytes, the first one running slowly from singles+1 to 255, # the second cycling faster from 1 to 255. if run.verbose: sys.stdout.write(' sorting words...') pairs = list(map(self.presort_word, self.code_map.keys())) pairs.sort() words = list(map(lambda pair: pair[1], pairs)) pairs = None if run.verbose: sys.stdout.write(' %d of them\n' % len(words)) count = len(words) singles = (255 * 255 - count) // 254 # Transmit a few values for further usage by the C code. if run.verbose: sys.stdout.write(' sorting names...') ucs2_table = list(self.charname_map.keys()) ucs2_table.sort() if run.verbose: sys.stdout.write(' %d of them\n' % len(ucs2_table)) write('\n' '#define NUMBER_OF_SINGLES %d\n' '#define MAX_CHARNAME_LENGTH %d\n' '#define NUMBER_OF_CHARNAMES %d\n' % (singles, self.max_length, len(ucs2_table))) # Establish a mild compression scheme (one or two bytes per word). sys.stdout.write(" writing words\n") write('\n' 'static const char *const word[%d] =\n' ' {\n' % count) char1 = 1 char2 = 1 for counter in range(singles): word = words[counter] write(' %-28s/* \\%0.3o */\n' % ('"%s",' % re.sub('"', r'\"', word), char1)) self.code_map[words[counter]] = char1 char1 += 1 for counter in range(singles, count): word = words[counter] write(' %-28s/* \\%0.3o\\%0.3o */\n' % ('"%s",' % re.sub('"', r'\"', word, 1), char1, char2)) self.code_map[words[counter]] = 256 * char1 + char2 if char2 == 255: char1 += 1 char2 = 1 else: char2 += 1 write(' };\n') sys.stdout.write(" writing names\n") write('\n' 'struct charname\n' ' {\n' ' recode_ucs2 code;\n' ' const char *crypted;\n' ' };\n' '\n' 'static const struct charname charname[NUMBER_OF_CHARNAMES] =\n' ' {\n') for ucs2 in ucs2_table: write(' {0x%04X, "' % ucs2) for word in self.charname_map[ucs2].split(): if word in self.code_map: code = self.code_map[word] if code < 256: write('\\%0.3o' % code) else: write('\\%0.3o\\%0.3o' % (code // 256, code % 256)) else: sys.stdout.write('??? %s\n' % word) write('"},\n') write(' };\n') # Explodes. class Explodes(Options): SOURCES = 'explode.c' def __init__(self): Options.__init__(self) # Table fragments will be produced while reading data tables. self.write = Output(self.SOURCES).write write = self.write write('\n' '#include "config.h"\n' '#include "common.h"\n') def complete(self, french): if not self.do_sources: return # Print the collectable initialization function. sys.stdout.write("Completing %s\n" % self.SOURCES) write = self.write write('\n' 'bool\n' 'module_explodes (struct recode_outer *outer)\n' '{\n') count = 0 while self.declare_charset: write(' if (!recode_declare_explode_data (outer, &data_%d, "%s"))\n' ' return false;\n' % (count, self.declare_charset[0])) del self.declare_charset[0] count += 1 write('\n') while recode_declare_alias: write(' if (!recode_declare_alias (outer, "%s", "%s"))\n' ' return false;\n' % recode_declare_alias[0]) del recode_declare_alias[0] write('\n' ' return true;\n' '}\n' '\n' 'void\n' 'delmodule_explodes (_GL_UNUSED struct recode_outer *outer)\n' '{\n' '}\n') # Iconv. class Iconv(Options): SOURCES = 'iconvdecl.h' data = [] def digest(self): canonical = {} for charset in ('Georgian-Academy', 'Georgian-PS', 'MuleLao-1', 'Macintosh', 'MacArabic', 'MacCentralEurope', 'MacCroatian', 'MacCyrillic', 'MacGreek', 'MacHebrew', 'MacIceland', 'MacRoman', 'MacRomania', 'MacThai', 'MacTurkish', 'MacUkraine'): canonical[charset.upper()] = charset # Read in the encodings.def file. sys.stdout.write("Reading from `iconv -l'\n") libc = None import os names = [] for line in os.popen('iconv -l'): if libc is None: libc = len(line.split('/')) == 3 if libc: first, second, empty = line.split('/') assert empty == '\n', repr(line) name = second or first if name not in names: names.append(name) self.data.append((name, ())) else: aliases = [] for alias in line.split(): if alias in canonical: alias = canonical[alias] aliases.append(alias) self.data.append((aliases[0], aliases[1:])) def complete(self, french): def write_charset(format, charset): write(format % charset) write(format % (charset + "-translit")) if not self.do_sources: return write = Output(self.SOURCES).write count = 1 for charset, aliases in self.data: versions = 2 # Normal, //TRANSLIT count = count + (versions + len(aliases)) * versions write('\n' "/* This is derived from Bruno Haible's `libiconv' package. */" '\n' 'static const char *iconv_name_list[%d] =\n' ' {\n' % count) for charset, aliases in self.data: if aliases: write_charset(' "%s",\n', charset) for alias in aliases[:-1]: write_charset('\t"%s",\n', alias) write_charset('\t"%s", NULL,\n', aliases[-1]) else: write_charset(' "%s", NULL,\n', charset) write(' NULL\n' ' };\n') # Mnemonics. class Mnemonics(Options): SOURCES = 'rfc1345.h' # Ignore any mnemonic whose length is greater than MAX_MNEMONIC_LENGTH. MAX_MNEMONIC_LENGTH = 3 # Numeric value of a character, given its mnemonic. ucs2_map = {} table_length = 0 mnemonic_map = {} # Read in a mnemonics file. def digest_mnemonics_ds(self, input): while input.readline(): match = input.match('<([^ \t\n]+)>\t') if match: mnemonic = re.sub('/(.)', r'\1', match.group(1)) ucs2 = int(match.group(2), 16) self.declare(mnemonic, ucs2, input.warn) # Read in Keld's list of 10646 characters. def digest_iso10646_def(self, input): while True: line = input.readline() if not line: break if line == '\n': continue if len(line) == 3: continue if input.begins(' \.\.\.'): continue if line == ' Presentation forms\n': continue if input.begins(' naming: first vertical '): continue match = input.match(' row ([0-9][0-9][0-9])$') if match and int(match.group(1)) < 256: row = int(match.group(1)) cell = 0 continue if line == ' cell 00\n': cell = 0 continue match = input.match(' cell ([0-9][0-9][0-9])$') if match and int(match.group(1)) < 256: cell = int(match.group(1)) continue if input.match(' [^ ]+'): if not input.match(' [A-Z][A-Z][A-Z]'): continue if input.match(' [^ ].*'): if cell == 256: input.warn("Over 256 cells in row %d", row) cell += 1 continue match = (input.match('([^ ]) [^ ].*') or input.match('([^ ][^ ]+) [^ ].*')) if match: if cell == 256: input.warn("Over 256 cells in row %d", row) self.declare(match.group(1), 256*row + cell, input.warn) cell += 1 continue input.warn("Unrecognised line") # Read the text of RFC 1345, saving all character names it declares. def digest_rfc1345(self, input): def read_line(input=input): skip = False while True: line = input.readline() if not line: break if input.begins('Simonsen'): skip = True continue if skip: if input.begins('RFC 1345'): skip = False continue if input.begins('4. CHARSETS'): break if line == '\n': continue if line[0] == ' ': return line[:-1].lstrip() return None self.max_length = 0 # Read the character descriptions. Count words in charnames. line = read_line() while line: # Look ahead one line and merge it if it should. next = read_line() while next: match = re.match(' *( .*)', next) if not match: break line += match.group(1) next = read_line() # Separate fields and save needed information. match = re.search('([^ ]+) +[0-9a-f]+ +(.*)', line) if match: mnemo = match.group(1) text = match.group(2).lower() if mnemo in self.ucs2_map: run.charnames.declare(self.ucs2_map[mnemo], text) elif len(mnemo) <= self.MAX_MNEMONIC_LENGTH: input.warn("No known UCS-2 code for `%s'", mnemo) elif not re.search(' +e000', line): input.warn("Unrecognised line") line = next # Declare a correspondence between a mnemonic and an UCS-2 value. def declare(self, mnemonic, ucs2, warn): if len(mnemonic) > self.MAX_MNEMONIC_LENGTH: return if self.do_sources: if ucs2 in self.mnemonic_map: if self.mnemonic_map[ucs2] != mnemonic: warn("U+%04X `%s' known as `%s'", ucs2, mnemonic, self.mnemonic_map[ucs2]) if len(mnemonic) < len(self.mnemonic_map[ucs2]): self.mnemonic_map[ucs2] = mnemonic else: self.mnemonic_map[ucs2] = mnemonic self.table_length += 1 if mnemonic in self.ucs2_map: if self.ucs2_map[mnemonic] != ucs2: warn("`%s' U+%04X known as U+%04X", mnemonic, ucs2, self.ucs2_map[mnemonic]) #FIXME: ??? cell = self.ucs2_map[mnemonic] - 256*row else: self.ucs2_map[mnemonic] = ucs2 def complete(self, french): if self.do_sources: self.complete_sources() # Write an UCS-2 to RFC 1345 mnemonic table. def complete_sources(self): inverse_map = {} write = Output(self.SOURCES).write write('\n' '#define TABLE_LENGTH %d\n' '#define MAX_MNEMONIC_LENGTH %d\n' % (self.table_length, self.MAX_MNEMONIC_LENGTH)) write('\n' 'struct entry\n' ' {\n' ' recode_ucs2 code;\n' ' const char *rfc1345;\n' ' };\n' '\n' 'static const struct entry table[TABLE_LENGTH] =\n' ' {\n') count = 0 indices = list(self.mnemonic_map.keys()) indices.sort() for ucs2 in indices: text = self.mnemonic_map[ucs2] inverse_map[text] = count write(' /* %4d */ {0x%04X, "%s"},\n' % (count, ucs2, re.sub(r'([\"])', r'\\\1', text))) count += 1 write(' };\n') write('\n' 'static const unsigned short inverse[TABLE_LENGTH] =\n' ' {') count = 0 keys = list(inverse_map.keys()) keys.sort() for text in keys: if count % 10 == 0: if count != 0: write(',') write('\n /* %4d */ ' % count) else: write(', ') write('%4d' % inverse_map[text]) count += 1 write('\n' ' };\n') # Global table of strips. class Strips(Options): POOL = 'strip-pool.c' DATA = 'strip-data.c' TEXINFO = 'rfc1345.texi' # Change STRIP_SIZE in `src/recode.h' if you change the value here. # See the accompanying documentation there, as needed. STRIP_SIZE = 8 # Prepare the production of tables. pool_size = 0 pool_refs = 0 strip_map = {} strips = [] # While digesting files. used_map = {} table = [] recode_declare_alias = [] implied_surface = {} def __init__(self): Options.__init__(self) self.write_data = None self.aliases_map = {} self.remark_map = {} self.declare_charset = [] # Prepare to read various tables. self.charset_ordinal = 0 self.discard_charset = False self.alias_count = 0 self.comment = '' def init_write_data(self): if self.do_sources and not self.write_data: # Table fragments will be produced while reading data tables. self.write_data = Output(self.DATA).write write = self.write_data write('\n' '#include "config.h"\n' '#include "common.h"\n' '#include "decsteps.h"\n') # Read the text of RFC 1345, saving all charsets it declares. # UCS-2 mnemonics files should have been read in already. def digest_rfc1345(self, input): self.init_write_data() # Informal canonical order of presentation. CHARSET, REM, ALIAS, ESC, BITS, CODE = range(6) charset = None skip = False while True: line = input.readline() if not line: break if input.begins('Simonsen'): skip = True continue if skip: if input.begins('RFC 1345'): skip = False continue if line == '\n': continue if line == 'ACKNOWLEDGEMENTS\n': break line, count = re.subn('^ ?', '', line) if not count: continue input.line = line # Recognize `&charset'. match = input.match('&charset (.*)') if match: # Before beginning a new charset, process the previous one. if charset: self.charset_done(charset, remark, aliases) charset = match.group(1) # Prepare for processing a new charset: save the charset # name for further declaration; announce this charset in # the array initialization section; and initialize its # processing. if run.verbose: sys.stdout.write(" %d) %s\n" % (self.charset_ordinal + 1, charset)) status = CHARSET self.comment = '\n/* %s\n' % charset hashname = re.sub('[^a-z0-9]', '', charset.lower()) if hashname in self.used_map: input.warn("Duplicate of %s (discarded)", self.used_map[hashname]) self.discard_charset = True continue self.used_map[hashname] = charset self.alias_count = 0 self.table = [NOT_A_CHARACTER] * 256 codedim = 0 code = 0 aliases = [] remark = [] #FIXME:match = re.match('(CP|IBM|windows-)([0-9]+)$', charset) match = re.match('(CP|IBM)([0-9]+)$', charset) if match: self.implied_surface[match.group(2)] = 'crlf' self.implied_surface['CP' + match.group(2)] = 'crlf' self.implied_surface['IBM' + match.group(2)] = 'crlf' self.recode_declare_alias.append((charset, charset)) self.alias_count += 1 continue if charset in ('macintosh', 'macintosh_ce'): self.implied_surface[charset] = 'cr' self.recode_declare_alias.append((charset, charset)) self.alias_count += 1 continue continue # Recognize other `&' directives. match = input.match('&rem (.*)') if match and not input.begins('&rem &alias'): # Keld now prefers `&rem' to be allowed everywhere. #if status > REM: # input.warn("`&rem' out of sequence") #status = REM; if self.do_texinfo: # Save remarks for Texinfo. text = match.group(1) remark.append(text) continue match = input.match('(&rem )?&alias (.*)') if match: if status > ALIAS: input.warn("`&alias' out of sequence") status = ALIAS # Save synonymous charset names for later declarations. alias = match.group(2) if alias[-1] == ' ': input.warn("Spurious trailing whitespace") alias = alias.rstrip() self.comment = self.comment + ' %s\n' % alias hashname = re.sub('[^a-z0-9]', '', alias.lower()) if hashname in self.used_map: if self.used_map[hashname] != charset: input.warn("Duplicate of %s", self.used_map[hashname]) continue else: self.used_map[hashname] = charset aliases.append(alias) match = re.match('(CP|IBM)([0-9]+)$', alias) if match: self.implied_surface[match.group(2)] = 'crlf' self.implied_surface['CP' + match.group(2)] = 'crlf' self.implied_surface['IBM' + match.group(2)] = 'crlf' elif alias in ('mac', 'macce'): self.implied_surface[alias] = 'cr' self.recode_declare_alias.append((alias, charset)) self.alias_count += 1 continue if input.match('&g[0-4]esc'): if status > ESC: input.warn("`&esc' out of sequence") status = ESC continue match = input.match('&bits ([0-9]+)$') if match: if status > BITS: input.warn("`&bits' out of sequence") status = BITS if int(match.group(1)) > 8: input.warn("`&bits %s' not accepted (charset discarded)", match.group(1)) self.discard_charset = True continue match = input.match('&code (.*)') if match: if status > CODE: input.warn("`&code' out of sequence") status = CODE # Save the code position. code = int(match.group(1)) continue # Other lines cause the charset to be discarded. match = input.match('&([^ ]+)') if match: if not self.discard_charset: input.warn("`&%s' not accepted (charset discarded)", match.group(1)) self.discard_charset = True if self.discard_charset: continue # Save all other tokens into the double table. for token in line.split(): if token == '??': self.table[code] = NOT_A_CHARACTER elif token == '__': self.table[code] = REPLACEMENT_CHARACTER elif token in run.mnemonics.ucs2_map: self.table[code] = run.mnemonics.ucs2_map[token] if len(token) > codedim: codedim = len(token) else: input.warn("Unknown mnemonic for code: %s", token) self.table[code] = REPLACEMENT_CHARACTER code += 1 # Push the last charset out. self.charset_done(charset, remark, aliases) # Read a Unicode map, as found in ftp://ftp.unicode.com/MAPPINGS. def digest_unimap(self, input): self.init_write_data() line = input.line match = input.match('# +Name: +([^ ]+) to Unicode table$') if match: # Set comment. name = match.group(1).split() charset = name[0] del name[0] self.comment = '\n/* %s\n' % charset # Set charset. hashname = re.sub('[^a-z0-9]', '', charset.lower()) if self.used_map[hashname]: input.warn("`%s' duplicates `%s' (charset discarded)", hashname, self.used_map[hashname]) self.discard_charset = True return self.used_map[hashname] = charset # Prepare for read. self.alias_count = 0 self.table = [NOT_A_CHARACTER] * 256 codedim = 0 code = 0 aliases = [] remark = [] if self.discard_charset: return # Process aliases. for alias in name: self.comment = self.comment + ' %s\n' % alias hashname = re.sub('[^a-z0-9]', '', alias.lower()) if self.used_map[hashname] and self.used_map[hashname] != charset: input.warn("`%s' duplicates `%s'", hashname, self.used_map[hashname]) continue self.used_map[hashname] = charset aliases.append(alias) self.recode_declare_alias.append((alias, charset)) self.alias_count += 1 # Read table contents. while True: line = input.readline() if not line: break if line == '\n': continue if line[0] == '#': continue if input.match('0x([0-9A-F]+)\t\t#UNDEFINED$'): continue if input.search('\032'): # Old MS-DOS C-z !! break match = input.match('0x([0-9A-F]+)\t0x([0-9A-F]+)\t\#') if match: self.table[int(match.group(1), 16)] = int(match.group(2), 16) else: input.warn("Unrecognised input line") # Complete processing. self.charset_done(charset, remark, aliases) # Print all accumulated information for the charset. If the # charset should be discarded, adjust tables. def charset_done(self, charset, remark, aliases): if self.discard_charset: while self.alias_count > 0: del self.recode_declare_alias[-1] self.alias_count -= 1 self.discard_charset = False self.comment = '' if not self.comment: return if self.do_texinfo: # Save the documentation. aliases.sort() self.aliases_map[charset] = aliases self.remark_map[charset] = remark if run.explodes: write = run.explodes.write # Make introductory C comments. write(self.comment) write('*/\n') # Make the table for this charset. write('\n' 'static const unsigned short data_%d[] =\n' ' {\n' % self.charset_ordinal) for code in range(256): if code != self.table[code]: write(' %3d, 0x%.4X, DONE,\n' % (code, self.table[code])) write(' DONE\n' ' };\n') # Register the table. self.declare_charset.append(charset) if self.do_sources: write = self.write_data # Make introductory C comments. write(self.comment) write('*/\n') # Make the table for this charset. write('\n' 'static struct strip_data data_%d =\n' ' {\n' ' ucs2_data_pool,\n' ' {\n' % self.charset_ordinal) count = 0 for code in range(0, 256, self.STRIP_SIZE): if count % 12 == 0: if count != 0: write(',\n') write(' ') else: write(', ') strip = self.table[code:code+self.STRIP_SIZE] write('%4d' % self.pool_index(strip)) count += 1 write('\n' ' }\n' ' };\n') # Register the table. self.declare_charset.append(charset) self.charset_ordinal += 1 self.comment = '' # Return the pool index for strip. Add to the pool as required. def pool_index(self, strip): def format(item): return '%04X' % item self.pool_refs += 1 text = ''.join(map(format, strip)) if text not in self.strip_map: self.strip_map[text] = self.pool_size self.pool_size = self.pool_size + self.STRIP_SIZE self.strips.append(text) return self.strip_map[text] def complete(self, french): if self.do_sources: self.complete_sources() if self.do_texinfo: self.complete_texinfo(french) def complete_sources(self): # Give memory statistics. sys.stdout.write('Table memory = %d bytes (pool %d, refs %d)\n' % (self.pool_size * 2 + self.pool_refs * 2, self.pool_size * 2, self.pool_refs * 2)) # Print the collectable initialization function. sys.stdout.write("Completing %s\n" % self.DATA) write = self.write_data write('\n' '_GL_ATTRIBUTE_CONST bool\n' 'module_strips (_GL_UNUSED struct recode_outer *outer)\n' '{\n' ' RECODE_ALIAS alias;\n' '\n') count = 0 while self.declare_charset: write(' if (!recode_declare_strip_data (outer, &data_%d, "%s"))\n' ' return false;\n' % (count, self.declare_charset[0])) del self.declare_charset[0] count += 1 write('\n') while self.recode_declare_alias: alias, charset = self.recode_declare_alias[0] if alias in self.implied_surface: write(' if (alias = recode_declare_alias (outer, "%s", "%s"),' ' !alias)\n' ' return false;\n' % self.recode_declare_alias[0]) write(' if (!recode_declare_implied_surface (outer, alias,' ' outer->%s_surface))\n' ' return false;\n' % self.implied_surface[alias]) else: write(' if (!recode_declare_alias (outer, "%s", "%s"))\n' ' return false;\n' % self.recode_declare_alias[0]) del self.recode_declare_alias[0] write('\n' ' return true;\n' '}\n' '\n' 'void\n' 'delmodule_strips (_GL_UNUSED struct recode_outer *outer)\n' '{\n' '}\n') # Write the pool file. write = Output(self.POOL).write write('\n' '#include "config.h"\n' '#include "common.h"\n' '\n' 'const recode_ucs2 ucs2_data_pool[%d] =\n' ' {' % self.pool_size) count = 0 for strip in self.strips: for pos in range(0, self.STRIP_SIZE * 4, 4): if count % 8 == 0: if count != 0: write(',') write('\n /* %4d */ ' % count) else: write(', ') write('0x' + strip[pos:pos+4]) count += 1 write('\n' ' };\n') def complete_texinfo(self, french): if french: write = Output('fr-%s' % self.TEXINFO, noheader=True).write else: write = Output(self.TEXINFO, noheader=True).write charsets = list(self.remark_map.keys()) charsets.sort() for charset in charsets: write('\n' '@item %s\n' '@tindex %s@r{, aliases and source}\n' % (charset, re.sub(':([0-9]+)', r'(\1)', charset))) aliases = self.aliases_map[charset] if aliases: if len(aliases) == 1: if aliases[0]: # FIXME: why empty sometimes? write('@tindex %s\n' '@code{%s} is an alias for this charset.\n' % (re.sub(':([0-9]+)', r'(\1)', aliases[0]), aliases[0])) else: for alias in aliases: write('@tindex %s\n' % re.sub(':([0-9]+)', r'(\1)', alias)) write('@code{%s} and @code{%s} are aliases' ' for this charset.\n' % ('}, @code{'.join(aliases[:-1]), aliases[-1])) for line in self.remark_map[charset]: if line[0].islower(): line = line[0].upper() + line[1:] write(line.replace('@', '@@')) if line[-1] != '.': write('.') write('\n') # Handling basic input and output. class Input: def __init__(self, name): self.name = name self.input = io.open(name, encoding='latin-1') self.line_count = 0 sys.stdout.write("Reading %s\n" % name) def readline(self): self.line = self.input.readline() self.line_count += 1 if type(self.line) == bytes: self.line = self.line.decode('utf-8') return self.line def warn(self, format, *args): if run.verbose: sys.stdout.write('%s:%s: %s\n' % (self.name, self.line_count, format % args)) def die(self, format, *args): sys.stdout.write('%s:%s: %s\n' % (self.name, self.line_count, format % args)) raise 'Fatal' def begins(self, text): return self.line[:len(text)] == text def match(self, pattern): return re.match(pattern, self.line) def search(self, pattern): return re.search(pattern, self.line) class Output: def __init__(self, name, noheader=False): self.name = name self.write = open(name, 'w', encoding='utf-8').write sys.stdout.write("Writing %s\n" % name) if not noheader: self.write("""\ /* DO NOT MODIFY THIS FILE! It was generated by `recode/tables.py'. */ /* Conversion of files between different charsets and surfaces. Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. This library 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 3 of the License, or (at your option) any later version. This library 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 the Recode Library; see the file `COPYING.LIB'. If not, see . Suite 330, Boston, MA 02111-1307, USA. */ """) if __name__ == '__main__': main(*sys.argv[1:]) recode-3.7.15/m4/0000755000175000017500000000000014766021044007135 5recode-3.7.15/m4/errno_h.m40000644000175000017500000000564214371444255010767 # errno_h.m4 serial 14 dnl Copyright (C) 2004, 2006, 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_PREREQ([2.61]) AC_DEFUN_ONCE([gl_HEADER_ERRNO_H], [ AC_REQUIRE([AC_PROG_CC]) AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [ AC_EGREP_CPP([booboo],[ #include #if !defined ETXTBSY booboo #endif #if !defined ENOMSG booboo #endif #if !defined EIDRM booboo #endif #if !defined ENOLINK booboo #endif #if !defined EPROTO booboo #endif #if !defined EMULTIHOP booboo #endif #if !defined EBADMSG booboo #endif #if !defined EOVERFLOW booboo #endif #if !defined ENOTSUP booboo #endif #if !defined ENETRESET booboo #endif #if !defined ECONNABORTED booboo #endif #if !defined ESTALE booboo #endif #if !defined EDQUOT booboo #endif #if !defined ECANCELED booboo #endif #if !defined EOWNERDEAD booboo #endif #if !defined ENOTRECOVERABLE booboo #endif #if !defined EILSEQ booboo #endif ], [gl_cv_header_errno_h_complete=no], [gl_cv_header_errno_h_complete=yes]) ]) if test $gl_cv_header_errno_h_complete = yes; then GL_GENERATE_ERRNO_H=false else gl_NEXT_HEADERS([errno.h]) GL_GENERATE_ERRNO_H=true fi gl_REPLACE_ERRNO_VALUE([EMULTIHOP]) gl_REPLACE_ERRNO_VALUE([ENOLINK]) gl_REPLACE_ERRNO_VALUE([EOVERFLOW]) ]) # Assuming $1 = EOVERFLOW. # The EOVERFLOW errno value ought to be defined in , according to # POSIX. But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and # some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined. # Check for the value of EOVERFLOW. # Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE. AC_DEFUN([gl_REPLACE_ERRNO_VALUE], [ if $GL_GENERATE_ERRNO_H; then AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [ AC_EGREP_CPP([yes],[ #include #ifdef ]$1[ yes #endif ], [gl_cv_header_errno_h_]$1[=yes], [gl_cv_header_errno_h_]$1[=no]) if test $gl_cv_header_errno_h_]$1[ = no; then AC_EGREP_CPP([yes],[ #define _XOPEN_SOURCE_EXTENDED 1 #include #ifdef ]$1[ yes #endif ], [gl_cv_header_errno_h_]$1[=hidden]) if test $gl_cv_header_errno_h_]$1[ = hidden; then dnl The macro exists but is hidden. dnl Define it to the same value. AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [ #define _XOPEN_SOURCE_EXTENDED 1 #include /* The following two lines are a workaround against an autoconf-2.52 bug. */ #include #include ]) fi fi ]) case $gl_cv_header_errno_h_]$1[ in yes | no) ]$1[_HIDDEN=0; ]$1[_VALUE= ;; *) ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1[" ;; esac AC_SUBST($1[_HIDDEN]) AC_SUBST($1[_VALUE]) fi ]) recode-3.7.15/m4/locale-ja.m40000644000175000017500000001316714371444255011163 # locale-ja.m4 serial 15 dnl Copyright (C) 2003, 2005-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Determine the name of a japanese locale with EUC-JP encoding. AC_DEFUN([gt_LOCALE_JA], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AM_LANGINFO_CODESET]) AC_CACHE_CHECK([for a traditional japanese locale], [gt_cv_locale_ja], [ AC_LANG_CONFTEST([AC_LANG_SOURCE([[ #include #include #if HAVE_LANGINFO_CODESET # include #endif #include #include struct tm t; char buf[16]; int main () { /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl imitates locale dependent behaviour by looking at the environment variables, and all locales use the UTF-8 encoding. */ #if defined __BEOS__ || defined __HAIKU__ return 1; #else /* Check whether the given locale name is recognized by the system. */ # if defined _WIN32 && !defined __CYGWIN__ /* On native Windows, setlocale(category, "") looks at the system settings, not at the environment variables. Also, when an encoding suffix such as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE category of the locale to "C". */ if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) return 1; # else if (setlocale (LC_ALL, "") == NULL) return 1; # endif /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) is empty, and the behaviour of Tcl 8.4 in this locale is not useful. On OpenBSD 4.0, when an unsupported locale is specified, setlocale() succeeds but then nl_langinfo(CODESET) is "646". In this situation, some unit tests fail. On MirBSD 10, when an unsupported locale is specified, setlocale() succeeds but then nl_langinfo(CODESET) is "UTF-8". */ # if HAVE_LANGINFO_CODESET { const char *cs = nl_langinfo (CODESET); if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0 || strcmp (cs, "UTF-8") == 0) return 1; } # endif # ifdef __CYGWIN__ /* On Cygwin, avoid locale names without encoding suffix, because the locale_charset() function relies on the encoding suffix. Note that LC_ALL is set on the command line. */ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; # endif /* Check whether MB_CUR_MAX is > 1. This excludes the dysfunctional locales on Cygwin 1.5.x. */ if (MB_CUR_MAX == 1) return 1; /* Check whether in a month name, no byte in the range 0x80..0x9F occurs. This excludes the UTF-8 encoding (except on MirBSD). */ { const char *p; t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1; for (p = buf; *p != '\0'; p++) if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0) return 1; } return 0; #endif } ]])]) if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then case "$host_os" in # Handle native Windows specially, because there setlocale() interprets # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256", # "fr" or "fra" as "French" or "French_France.1252", # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", # "ja" as "Japanese" or "Japanese_Japan.932", # and similar. mingw*) # Note that on native Windows, the Japanese locale is # Japanese_Japan.932, and CP932 is very different from EUC-JP, so we # cannot use it here. gt_cv_locale_ja=none ;; *) # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the # configure script would override the LC_ALL setting. Likewise for # LC_CTYPE, which is also set at the beginning of the configure script. # Test for the AIX locale name. if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_ja=ja_JP else # Test for the locale name with explicit encoding suffix. if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_ja=ja_JP.EUC-JP else # Test for the HP-UX, OSF/1, NetBSD locale name. if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_ja=ja_JP.eucJP else # Test for the IRIX, FreeBSD locale name. if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_ja=ja_JP.EUC else # Test for the Solaris 7 locale name. if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_ja=ja else # Special test for NetBSD 1.6. if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then gt_cv_locale_ja=ja_JP.eucJP else # None found. gt_cv_locale_ja=none fi fi fi fi fi fi ;; esac fi rm -fr conftest* ]) LOCALE_JA=$gt_cv_locale_ja AC_SUBST([LOCALE_JA]) ]) recode-3.7.15/m4/sys_wait_h.m40000644000175000017500000000351614371444255011502 # sys_wait_h.m4 serial 9 dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_SYS_WAIT_H], [ AC_REQUIRE([gl_SYS_WAIT_H_DEFAULTS]) dnl is always overridden, because of GNULIB_POSIXCHECK. gl_CHECK_NEXT_HEADERS([sys/wait.h]) dnl Ensure the type pid_t gets defined. AC_REQUIRE([AC_TYPE_PID_T]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[#include ]], [waitpid]) ]) # gl_SYS_WAIT_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_SYS_WAIT_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_SYS_WAIT_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_SYS_WAIT_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_WAIT_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WAITPID]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_WAIT_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_SYS_WAIT_H_DEFAULTS]) ]) AC_DEFUN([gl_SYS_WAIT_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. ]) recode-3.7.15/m4/gettext.m40000644000175000017500000003561513226751342011016 # gettext.m4 serial 66 (gettext-0.18.2) dnl Copyright (C) 1995-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2006, 2008-2010. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value '$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], ifelse([$1], [external], ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), [yes])) define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. gt_INTL_MACOSX dnl Set USE_NLS. AC_REQUIRE([AM_NLS]) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl Add a version number to the cache macros. case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH([included-gettext], [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings ]])], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], [$gt_func_gnugettext_libintl], [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ]])], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) dnl Now see whether libintl exists and depends on libiconv. if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ]])], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included 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. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi CATOBJEXT= if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Some extra flags are needed during linking. LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE([ENABLE_NLS], [1], [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE([HAVE_GETTEXT], [1], [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE([HAVE_DCGETTEXT], [1], [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST([BUILD_INCLUDED_LIBINTL]) AC_SUBST([USE_INCLUDED_LIBINTL]) AC_SUBST([CATOBJEXT]) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST([DATADIRNAME]) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST([INSTOBJEXT]) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST([GENCAT]) dnl For backward compatibility. Some Makefiles may be using this. INTLOBJS= if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST([INTLOBJS]) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST([INTLLIBS]) dnl Make all documented variables known to autoconf. AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) AC_SUBST([POSUB]) ]) dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. m4_define([gt_NEEDS_INIT], [ m4_divert_text([DEFAULTS], [gt_needs=]) m4_define([gt_NEEDS_INIT], []) ]) dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) AC_DEFUN([AM_GNU_GETTEXT_NEED], [ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) recode-3.7.15/m4/off_t.m40000644000175000017500000000100614371444255010416 # off_t.m4 serial 1 dnl Copyright (C) 2012-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Check whether to override the 'off_t' type. dnl Set WINDOWS_64_BIT_OFF_T. AC_DEFUN([gl_TYPE_OFF_T], [ m4_ifdef([gl_LARGEFILE], [ AC_REQUIRE([gl_LARGEFILE]) ], [ WINDOWS_64_BIT_OFF_T=0 ]) AC_SUBST([WINDOWS_64_BIT_OFF_T]) ]) recode-3.7.15/m4/readlink.m40000644000175000017500000000773114371444255011125 # readlink.m4 serial 16 dnl Copyright (C) 2003, 2007, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_READLINK], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CHECK_FUNCS_ONCE([readlink]) if test $ac_cv_func_readlink = no; then HAVE_READLINK=0 else AC_CACHE_CHECK([whether readlink signature is correct], [gl_cv_decl_readlink_works], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include /* Cause compilation failure if original declaration has wrong type. */ ssize_t readlink (const char *, char *, size_t);]])], [gl_cv_decl_readlink_works=yes], [gl_cv_decl_readlink_works=no])]) dnl Solaris 9 ignores trailing slash. dnl FreeBSD 7.2 dereferences only one level of links with trailing slash. AC_CACHE_CHECK([whether readlink handles trailing slash correctly], [gl_cv_func_readlink_trailing_slash], [# We have readlink, so assume ln -s works. ln -s conftest.no-such conftest.link ln -s conftest.link conftest.lnk2 AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[char buf[20]; return readlink ("conftest.lnk2/", buf, sizeof buf) != -1;]])], [gl_cv_func_readlink_trailing_slash=yes], [gl_cv_func_readlink_trailing_slash=no], [case "$host_os" in # Guess yes on Linux or glibc systems. linux-* | linux | *-gnu* | gnu*) gl_cv_func_readlink_trailing_slash="guessing yes" ;; # Guess no on AIX or HP-UX. aix* | hpux*) gl_cv_func_readlink_trailing_slash="guessing no" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_readlink_trailing_slash="$gl_cross_guess_normal" ;; esac ]) rm -f conftest.link conftest.lnk2]) case "$gl_cv_func_readlink_trailing_slash" in *yes) if test "$gl_cv_decl_readlink_works" != yes; then REPLACE_READLINK=1 fi ;; *) AC_DEFINE([READLINK_TRAILING_SLASH_BUG], [1], [Define to 1 if readlink fails to recognize a trailing slash.]) REPLACE_READLINK=1 ;; esac AC_CACHE_CHECK([whether readlink truncates results correctly], [gl_cv_func_readlink_truncate], [# We have readlink, so assume ln -s works. ln -s ab conftest.link AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[char c; return readlink ("conftest.link", &c, 1) != 1;]])], [gl_cv_func_readlink_truncate=yes], [gl_cv_func_readlink_truncate=no], [case "$host_os" in # Guess yes on Linux or glibc systems. linux-* | linux | *-gnu* | gnu*) gl_cv_func_readlink_truncate="guessing yes" ;; # Guess no on AIX or HP-UX. aix* | hpux*) gl_cv_func_readlink_truncate="guessing no" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_readlink_truncate="$gl_cross_guess_normal" ;; esac ]) rm -f conftest.link conftest.lnk2]) case $gl_cv_func_readlink_truncate in *yes) if test "$gl_cv_decl_readlink_works" != yes; then REPLACE_READLINK=1 fi ;; *) AC_DEFINE([READLINK_TRUNCATE_BUG], [1], [Define to 1 if readlink sets errno instead of truncating a too-long link.]) REPLACE_READLINK=1 ;; esac fi ]) # Like gl_FUNC_READLINK, except prepare for separate compilation # (no REPLACE_READLINK, no AC_LIBOBJ). AC_DEFUN([gl_FUNC_READLINK_SEPARATE], [ AC_CHECK_FUNCS_ONCE([readlink]) gl_PREREQ_READLINK ]) # Prerequisites of lib/readlink.c. AC_DEFUN([gl_PREREQ_READLINK], [ : ]) recode-3.7.15/m4/isatty.m40000644000175000017500000000124214371444255010640 # isatty.m4 serial 3 dnl Copyright (C) 2012-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_ISATTY], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl On native Windows, the system's isatty(), defined as an alias of _isatty() dnl in the "oldnames" library, returns true for the NUL device. case $host_os in mingw*) REPLACE_ISATTY=1 ;; esac ]) # Prerequisites of lib/isatty.c. AC_DEFUN([gl_PREREQ_ISATTY], [:]) recode-3.7.15/m4/extensions.m40000644000175000017500000002062614371444255011531 # serial 23 -*- Autoconf -*- # Enable extensions on systems that normally disable them. # Copyright (C) 2003, 2006-2023 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. dnl Define to empty for the benefit of Autoconf 2.69 and earlier, so that dnl AC_USE_SYSTEM_EXTENSIONS (below) can be used unchanged from Autoconf 2.70+. m4_ifndef([AC_CHECK_INCLUDES_DEFAULT], [AC_DEFUN([AC_CHECK_INCLUDES_DEFAULT], [])]) # This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from git # Autoconf. Perhaps we can remove this once we can assume Autoconf # is recent-enough everywhere, but since Autoconf mutates rapidly # enough in this area it's likely we'll need to redefine # AC_USE_SYSTEM_EXTENSIONS for quite some time. # If autoconf reports a warning # warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS # or warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS # the fix is # 1) to ensure that AC_USE_SYSTEM_EXTENSIONS is never directly invoked # but always AC_REQUIREd, # 2) to ensure that for each occurrence of # AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) # or # AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # the corresponding gnulib module description has 'extensions' among # its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS # invocation occurs in gl_EARLY, not in gl_INIT. m4_version_prereq([2.72], [], [ # AC_USE_SYSTEM_EXTENSIONS # ------------------------ # Enable extensions on systems that normally disable them, # typically due to standards-conformance issues. # We unconditionally define as many of the known feature-enabling # as possible, reserving conditional behavior for macros that are # known to cause problems on some platforms (such as __EXTENSIONS__). AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS], [AC_BEFORE([$0], [AC_PREPROC_IFELSE])dnl AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl AC_BEFORE([$0], [AC_LINK_IFELSE])dnl AC_BEFORE([$0], [AC_RUN_IFELSE])dnl AC_BEFORE([$0], [AC_CHECK_INCLUDES_DEFAULT])dnl dnl #undef in AH_VERBATIM gets replaced with #define by AC_DEFINE. dnl Use a different key than __EXTENSIONS__, as that name broke existing dnl configure.ac when using autoheader 2.62. dnl The macros below are in alphabetical order ignoring leading _ or __ dnl prefixes. AH_VERBATIM([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable general extensions on macOS. */ #ifndef _DARWIN_C_SOURCE # undef _DARWIN_C_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable X/Open compliant socket functions that do not require linking with -lxnet on HP-UX 11.11. */ #ifndef _HPUX_ALT_XOPEN_SOCKET_API # undef _HPUX_ALT_XOPEN_SOCKET_API #endif /* Identify the host operating system as Minix. This macro does not affect the system headers' behavior. A future release of Autoconf may stop defining this macro. */ #ifndef _MINIX # undef _MINIX #endif /* Enable general extensions on NetBSD. Enable NetBSD compatibility extensions on Minix. */ #ifndef _NETBSD_SOURCE # undef _NETBSD_SOURCE #endif /* Enable OpenBSD compatibility extensions on NetBSD. Oddly enough, this does nothing on OpenBSD. */ #ifndef _OPENBSD_SOURCE # undef _OPENBSD_SOURCE #endif /* Define to 1 if needed for POSIX-compatible behavior. */ #ifndef _POSIX_SOURCE # undef _POSIX_SOURCE #endif /* Define to 2 if needed for POSIX-compatible behavior. */ #ifndef _POSIX_1_SOURCE # undef _POSIX_1_SOURCE #endif /* Enable POSIX-compatible threading on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ #ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ # undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ #endif /* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ #ifndef __STDC_WANT_IEC_60559_BFP_EXT__ # undef __STDC_WANT_IEC_60559_BFP_EXT__ #endif /* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ # undef __STDC_WANT_IEC_60559_DFP_EXT__ #endif /* Enable extensions specified by C23 Annex F. */ #ifndef __STDC_WANT_IEC_60559_EXT__ # undef __STDC_WANT_IEC_60559_EXT__ #endif /* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ # undef __STDC_WANT_IEC_60559_FUNCS_EXT__ #endif /* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ # undef __STDC_WANT_IEC_60559_TYPES_EXT__ #endif /* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ #ifndef __STDC_WANT_LIB_EXT2__ # undef __STDC_WANT_LIB_EXT2__ #endif /* Enable extensions specified by ISO/IEC 24747:2009. */ #ifndef __STDC_WANT_MATH_SPEC_FUNCS__ # undef __STDC_WANT_MATH_SPEC_FUNCS__ #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable X/Open extensions. Define to 500 only if necessary to make mbstate_t available. */ #ifndef _XOPEN_SOURCE # undef _XOPEN_SOURCE #endif ])dnl AC_REQUIRE([AC_CHECK_INCLUDES_DEFAULT])dnl _AC_CHECK_HEADER_ONCE([wchar.h]) _AC_CHECK_HEADER_ONCE([minix/config.h]) dnl Defining __EXTENSIONS__ may break the system headers on some systems. dnl (FIXME: Which ones?) AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__], [ac_cv_safe_to_define___extensions__], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ # define __EXTENSIONS__ 1 ]AC_INCLUDES_DEFAULT])], [ac_cv_safe_to_define___extensions__=yes], [ac_cv_safe_to_define___extensions__=no])]) dnl HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to dnl 500, regardless of whether compiling with -Ae or -D_HPUX_SOURCE=1. dnl But defining _XOPEN_SOURCE may turn *off* extensions on platforms dnl not covered by turn-on-extensions macros (notably Dragonfly, Free, dnl and OpenBSD, which don't have any equivalent of _NETBSD_SOURCE) so dnl it should only be defined when necessary. AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined], [ac_cv_should_define__xopen_source], [ac_cv_should_define__xopen_source=no AS_IF([test $ac_cv_header_wchar_h = yes], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ #include mbstate_t x;]])], [], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ #define _XOPEN_SOURCE 500 #include mbstate_t x;]])], [ac_cv_should_define__xopen_source=yes])])])]) AC_DEFINE([_ALL_SOURCE]) AC_DEFINE([_DARWIN_C_SOURCE]) AC_DEFINE([_GNU_SOURCE]) AC_DEFINE([_HPUX_ALT_XOPEN_SOCKET_API]) AC_DEFINE([_NETBSD_SOURCE]) AC_DEFINE([_OPENBSD_SOURCE]) AC_DEFINE([_POSIX_PTHREAD_SEMANTICS]) AC_DEFINE([__STDC_WANT_IEC_60559_ATTRIBS_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_BFP_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_DFP_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_FUNCS_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_TYPES_EXT__]) AC_DEFINE([__STDC_WANT_LIB_EXT2__]) AC_DEFINE([__STDC_WANT_MATH_SPEC_FUNCS__]) AC_DEFINE([_TANDEM_SOURCE]) AS_IF([test $ac_cv_header_minix_config_h = yes], [MINIX=yes AC_DEFINE([_MINIX]) AC_DEFINE([_POSIX_SOURCE]) AC_DEFINE([_POSIX_1_SOURCE], [2])], [MINIX=]) AS_IF([test $ac_cv_safe_to_define___extensions__ = yes], [AC_DEFINE([__EXTENSIONS__])]) AS_IF([test $ac_cv_should_define__xopen_source = yes], [AC_DEFINE([_XOPEN_SOURCE], [500])]) ])# AC_USE_SYSTEM_EXTENSIONS ]) # gl_USE_SYSTEM_EXTENSIONS # ------------------------ # Enable extensions on systems that normally disable them, # typically due to standards-conformance issues. AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS], [ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) dnl On OpenBSD 6.8 with GCC, the include files contain a couple of dnl definitions that are only activated with an explicit -D_ISOC11_SOURCE. dnl That's because this version of GCC (4.2.1) supports the option dnl '-std=gnu99' but not the option '-std=gnu11'. AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in openbsd*) AC_DEFINE([_ISOC11_SOURCE], [1], [Define to enable the declarations of ISO C 11 types and functions.]) ;; esac ]) recode-3.7.15/m4/extern-inline.m40000644000175000017500000001277414371444255012120 dnl 'extern inline' a la ISO C99. dnl Copyright 2012-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_EXTERN_INLINE], [ AC_CACHE_CHECK([whether ctype.h defines __header_inline], [gl_cv_have___header_inline], [AC_PREPROC_IFELSE( [AC_LANG_SOURCE([[#include #ifndef __header_inline #error " does not define __header_inline" #endif ]])], [gl_cv_have___header_inline=yes], [gl_cv_have___header_inline=no])]) if test "$gl_cv_have___header_inline" = yes; then AC_DEFINE([HAVE___HEADER_INLINE], [1], [Define to 1 if ctype.h defines __header_inline.]) fi AH_VERBATIM([HAVE___HEADER_INLINE_1], [/* Please see the Gnulib manual for how to use these macros. Suppress extern inline with HP-UX cc, as it appears to be broken; see . Suppress extern inline with Sun C in standards-conformance mode, as it mishandles inline functions that call each other. E.g., for 'inline void f (void) { } inline void g (void) { f (); }', c99 incorrectly complains 'reference to static identifier "f" in extern inline function'. This bug was observed with Oracle Developer Studio 12.6 (Sun C 5.15 SunOS_sparc 2017/05/30). Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) on configurations that mistakenly use 'static inline' to implement functions or macros in standard C headers like . For example, if isdigit is mistakenly implemented via a static inline function, a program containing an extern inline function that calls isdigit may not work since the C standard prohibits extern inline functions from calling static functions (ISO C 99 section 6.7.4.(3). This bug is known to occur on: OS X 10.8 and earlier; see: https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html DragonFly; see http://muscles.dragonflybsd.org/bulk/clang-master-potential/20141111_102002/logs/ah-tty-0.3.12.log FreeBSD; see: https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and for clang but remains for g++; see . Assume DragonFly and FreeBSD will be similar. GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 inline semantics, unless -fgnu89-inline is used. It defines a macro __GNUC_STDC_INLINE__ to indicate this situation or a macro __GNUC_GNU_INLINE__ to indicate the opposite situation. GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline semantics but warns, unless -fgnu89-inline is used: warning: C99 inline functions are not supported; using GNU89 warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute It defines a macro __GNUC_GNU_INLINE__ to indicate this situation. */ #if (((defined __APPLE__ && defined __MACH__) \ || defined __DragonFly__ || defined __FreeBSD__) \ && (defined HAVE___HEADER_INLINE \ ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ && ! defined __clang__) \ : ((! defined _DONT_USE_CTYPE_INLINE_ \ && (defined __GNUC__ || defined __cplusplus)) \ || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ && defined __GNUC__ && ! defined __cplusplus)))) # define _GL_EXTERN_INLINE_STDHEADER_BUG #endif #if ((__GNUC__ \ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ : (199901L <= __STDC_VERSION__ \ && !defined __HP_cc \ && !defined __PGI \ && !(defined __SUNPRO_C && __STDC__))) \ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) # define _GL_INLINE inline # define _GL_EXTERN_INLINE extern inline # define _GL_EXTERN_INLINE_IN_USE #elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) # if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ # define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) # else # define _GL_INLINE extern inline # endif # define _GL_EXTERN_INLINE extern # define _GL_EXTERN_INLINE_IN_USE #else # define _GL_INLINE _GL_UNUSED static # define _GL_EXTERN_INLINE _GL_UNUSED static #endif /* In GCC 4.6 (inclusive) to 5.1 (exclusive), suppress bogus "no previous prototype for 'FOO'" and "no previous declaration for 'FOO'" diagnostics, when FOO is an inline function in the header; see and . */ #if __GNUC__ == 4 && 6 <= __GNUC_MINOR__ # if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ # define _GL_INLINE_HEADER_CONST_PRAGMA # else # define _GL_INLINE_HEADER_CONST_PRAGMA \ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") # endif # define _GL_INLINE_HEADER_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ _GL_INLINE_HEADER_CONST_PRAGMA # define _GL_INLINE_HEADER_END \ _Pragma ("GCC diagnostic pop") #else # define _GL_INLINE_HEADER_BEGIN # define _GL_INLINE_HEADER_END #endif]) ]) recode-3.7.15/m4/exponentd.m40000644000175000017500000000755214371444255011341 # exponentd.m4 serial 3 dnl Copyright (C) 2007-2008, 2010-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_DOUBLE_EXPONENT_LOCATION], [ AC_CACHE_CHECK([where to find the exponent in a 'double'], [gl_cv_cc_double_expbit0], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include #include #define NWORDS \ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { double value; unsigned int word[NWORDS]; } memory_double; static unsigned int ored_words[NWORDS]; static unsigned int anded_words[NWORDS]; static void add_to_ored_words (double x) { memory_double m; size_t i; /* Clear it first, in case sizeof (double) < sizeof (memory_double). */ memset (&m, 0, sizeof (memory_double)); m.value = x; for (i = 0; i < NWORDS; i++) { ored_words[i] |= m.word[i]; anded_words[i] &= m.word[i]; } } int main () { size_t j; FILE *fp = fopen ("conftest.out", "w"); if (fp == NULL) return 1; for (j = 0; j < NWORDS; j++) anded_words[j] = ~ (unsigned int) 0; add_to_ored_words (0.25); add_to_ored_words (0.5); add_to_ored_words (1.0); add_to_ored_words (2.0); add_to_ored_words (4.0); /* Remove bits that are common (e.g. if representation of the first mantissa bit is explicit). */ for (j = 0; j < NWORDS; j++) ored_words[j] &= ~anded_words[j]; /* Now find the nonzero word. */ for (j = 0; j < NWORDS; j++) if (ored_words[j] != 0) break; if (j < NWORDS) { size_t i; for (i = j + 1; i < NWORDS; i++) if (ored_words[i] != 0) { fprintf (fp, "unknown"); return (fclose (fp) != 0); } for (i = 0; ; i++) if ((ored_words[j] >> i) & 1) { fprintf (fp, "word %d bit %d", (int) j, (int) i); return (fclose (fp) != 0); } } fprintf (fp, "unknown"); return (fclose (fp) != 0); } ]])], [gl_cv_cc_double_expbit0=`cat conftest.out`], [gl_cv_cc_double_expbit0="unknown"], [ dnl On ARM, there are two 'double' floating-point formats, used by dnl different sets of instructions: The older FPA instructions assume dnl that they are stored in big-endian word order, while the words dnl (like integer types) are stored in little-endian byte order. dnl The newer VFP instructions assume little-endian order dnl consistently. AC_EGREP_CPP([mixed_endianness], [ #if defined arm || defined __arm || defined __arm__ mixed_endianness #endif ], [gl_cv_cc_double_expbit0="unknown"], [ pushdef([AC_MSG_CHECKING],[:])dnl pushdef([AC_MSG_RESULT],[:])dnl pushdef([AC_MSG_RESULT_UNQUOTED],[:])dnl AC_C_BIGENDIAN( [gl_cv_cc_double_expbit0="word 0 bit 20"], [gl_cv_cc_double_expbit0="word 1 bit 20"], [gl_cv_cc_double_expbit0="unknown"]) popdef([AC_MSG_RESULT_UNQUOTED])dnl popdef([AC_MSG_RESULT])dnl popdef([AC_MSG_CHECKING])dnl ]) ]) rm -f conftest.out ]) case "$gl_cv_cc_double_expbit0" in word*bit*) word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'` AC_DEFINE_UNQUOTED([DBL_EXPBIT0_WORD], [$word], [Define as the word index where to find the exponent of 'double'.]) AC_DEFINE_UNQUOTED([DBL_EXPBIT0_BIT], [$bit], [Define as the bit index in the word where to find bit 0 of the exponent of 'double'.]) ;; esac ]) recode-3.7.15/m4/sys_random_h.m40000644000175000017500000000454714371444255012023 # sys_random_h.m4 serial 8 dnl Copyright (C) 2020-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_SYS_RANDOM_H], [ AC_REQUIRE([gl_SYS_RANDOM_H_DEFAULTS]) dnl is always overridden, because of GNULIB_POSIXCHECK. gl_CHECK_NEXT_HEADERS([sys/random.h]) if test $ac_cv_header_sys_random_h = yes; then HAVE_SYS_RANDOM_H=1 else HAVE_SYS_RANDOM_H=0 fi AC_SUBST([HAVE_SYS_RANDOM_H]) m4_ifdef([gl_UNISTD_H_DEFAULTS], [AC_REQUIRE([gl_UNISTD_H_DEFAULTS])]) if test $ac_cv_header_sys_random_h = yes; then UNISTD_H_HAVE_SYS_RANDOM_H=1 fi dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ #if HAVE_SYS_RANDOM_H /* Additional includes are needed before on uClibc and Mac OS X. */ # include # include # include #endif ]], [getrandom]) ]) # gl_SYS_RANDOM_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_SYS_RANDOM_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_SYS_RANDOM_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_SYS_RANDOM_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_RANDOM_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETRANDOM]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_RANDOM_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_SYS_RANDOM_H_DEFAULTS]) ]) AC_DEFUN([gl_SYS_RANDOM_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. HAVE_GETRANDOM=1; AC_SUBST([HAVE_GETRANDOM]) REPLACE_GETRANDOM=0; AC_SUBST([REPLACE_GETRANDOM]) ]) recode-3.7.15/m4/fseterr.m40000644000175000017500000000063114371444255010776 # fseterr.m4 serial 2 dnl Copyright (C) 2012-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FSETERR], [ gl_CHECK_FUNCS_ANDROID([__fseterr], [[#include #include ]]) ]) recode-3.7.15/m4/multiarch.m40000644000175000017500000000422014371444255011312 # multiarch.m4 serial 9 dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Determine whether the compiler is or may be producing universal binaries. # # On Mac OS X 10.5 and later systems, the user can create libraries and # executables that work on multiple system types--known as "fat" or # "universal" binaries--by specifying multiple '-arch' options to the # compiler but only a single '-arch' option to the preprocessor. Like # this: # # ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ # CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ # CPP="gcc -E" CXXCPP="g++ -E" # # Detect this situation and set APPLE_UNIVERSAL_BUILD accordingly. AC_DEFUN_ONCE([gl_MULTIARCH], [ dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN. AC_CACHE_CHECK([whether the compiler produces multi-arch binaries], [gl_cv_c_multiarch], [gl_cv_c_multiarch=no AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; ]])], [ dnl Check for potential -arch flags. It is not universal unless dnl there are at least two -arch flags with different values. arch= prev= for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do if test -n "$prev"; then case $word in i?86 | x86_64 | ppc | ppc64 | arm | arm64) if test -z "$arch" || test "$arch" = "$word"; then arch="$word" else gl_cv_c_multiarch=yes fi ;; esac prev= else if test "x$word" = "x-arch"; then prev=arch fi fi done ]) ]) if test $gl_cv_c_multiarch = yes; then APPLE_UNIVERSAL_BUILD=1 else APPLE_UNIVERSAL_BUILD=0 fi AC_SUBST([APPLE_UNIVERSAL_BUILD]) ]) recode-3.7.15/m4/visibility.m40000644000175000017500000000662214371444255011521 # visibility.m4 serial 8 dnl Copyright (C) 2005, 2008, 2010-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Tests whether the compiler supports the command-line option dnl -fvisibility=hidden and the function and variable attributes dnl __attribute__((__visibility__("hidden"))) and dnl __attribute__((__visibility__("default"))). dnl Does *not* test for __visibility__("protected") - which has tricky dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on dnl Mac OS X. dnl Does *not* test for __visibility__("internal") - which has processor dnl dependent semantics. dnl Does *not* test for #pragma GCC visibility push(hidden) - which is dnl "really only recommended for legacy code". dnl Set the variable CFLAG_VISIBILITY. dnl Defines and sets the variable HAVE_VISIBILITY. AC_DEFUN([gl_VISIBILITY], [ AC_REQUIRE([AC_PROG_CC]) CFLAG_VISIBILITY= HAVE_VISIBILITY=0 if test -n "$GCC"; then dnl First, check whether -Werror can be added to the command line, or dnl whether it leads to an error because of some other option that the dnl user has put into $CC $CFLAGS $CPPFLAGS. AC_CACHE_CHECK([whether the -Werror option is usable], [gl_cv_cc_vis_werror], [gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[]], [[]])], [gl_cv_cc_vis_werror=yes], [gl_cv_cc_vis_werror=no]) CFLAGS="$gl_save_CFLAGS" ]) dnl Now check whether visibility declarations are supported. AC_CACHE_CHECK([for simple visibility declarations], [gl_cv_cc_visibility], [gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden" dnl We use the option -Werror and a function dummyfunc, because on some dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning dnl "visibility attribute not supported in this configuration; ignored" dnl at the first function definition in every compilation unit, and we dnl don't want to use the option in this case. if test $gl_cv_cc_vis_werror = yes; then CFLAGS="$CFLAGS -Werror" fi AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; extern __attribute__((__visibility__("default"))) int exportedvar; extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); extern __attribute__((__visibility__("default"))) int exportedfunc (void); void dummyfunc (void); int hiddenvar; int exportedvar; int hiddenfunc (void) { return 51; } int exportedfunc (void) { return 1225736919; } void dummyfunc (void) {} ]], [[]])], [gl_cv_cc_visibility=yes], [gl_cv_cc_visibility=no]) CFLAGS="$gl_save_CFLAGS" ]) if test $gl_cv_cc_visibility = yes; then CFLAG_VISIBILITY="-fvisibility=hidden" HAVE_VISIBILITY=1 fi fi AC_SUBST([CFLAG_VISIBILITY]) AC_SUBST([HAVE_VISIBILITY]) AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) ]) recode-3.7.15/m4/wchar_t.m40000644000175000017500000000146214371444255010756 # wchar_t.m4 serial 4 (gettext-0.18.2) dnl Copyright (C) 2002-2003, 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Test whether has the 'wchar_t' type. dnl Prerequisite: AC_PROG_CC AC_DEFUN([gt_TYPE_WCHAR_T], [ AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include wchar_t foo = (wchar_t)'\0';]], [[]])], [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])]) if test $gt_cv_c_wchar_t = yes; then AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.]) fi ]) recode-3.7.15/m4/signal_h.m40000644000175000017500000000731514371444255011116 # signal_h.m4 serial 22 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_SIGNAL_H], [ AC_REQUIRE([gl_SIGNAL_H_DEFAULTS]) AC_REQUIRE([gl_CHECK_TYPE_SIGSET_T]) gl_NEXT_HEADERS([signal.h]) # AIX declares sig_atomic_t to already include volatile, and C89 compilers # then choke on 'volatile sig_atomic_t'. C99 requires that it compile. AC_CHECK_TYPE([volatile sig_atomic_t], [], [HAVE_TYPE_VOLATILE_SIG_ATOMIC_T=0], [[ #include ]]) dnl Ensure the type pid_t gets defined. AC_REQUIRE([AC_TYPE_PID_T]) AC_REQUIRE([AC_TYPE_UID_T]) dnl Persuade glibc to define sighandler_t. AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_CHECK_TYPE([sighandler_t], [], [HAVE_SIGHANDLER_T=0], [[ #include ]]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[#include ]], [pthread_sigmask sigaction sigaddset sigdelset sigemptyset sigfillset sigismember sigpending sigprocmask]) AC_REQUIRE([AC_C_RESTRICT]) ]) AC_DEFUN([gl_CHECK_TYPE_SIGSET_T], [ AC_CHECK_TYPES([sigset_t], [gl_cv_type_sigset_t=yes], [gl_cv_type_sigset_t=no], [[ #include /* Mingw defines sigset_t not in , but in . */ #include ]]) if test $gl_cv_type_sigset_t != yes; then HAVE_SIGSET_T=0 fi ]) # gl_SIGNAL_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_SIGNAL_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_SIGNAL_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_SIGNAL_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_SIGNAL_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTHREAD_SIGMASK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RAISE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGNAL_H_SIGPIPE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGPROCMASK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGACTION]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_SIGNAL_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_SIGNAL_H_DEFAULTS]) ]) AC_DEFUN([gl_SIGNAL_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. HAVE_POSIX_SIGNALBLOCKING=1; AC_SUBST([HAVE_POSIX_SIGNALBLOCKING]) HAVE_PTHREAD_SIGMASK=1; AC_SUBST([HAVE_PTHREAD_SIGMASK]) HAVE_RAISE=1; AC_SUBST([HAVE_RAISE]) HAVE_SIGSET_T=1; AC_SUBST([HAVE_SIGSET_T]) HAVE_SIGINFO_T=1; AC_SUBST([HAVE_SIGINFO_T]) HAVE_SIGACTION=1; AC_SUBST([HAVE_SIGACTION]) HAVE_STRUCT_SIGACTION_SA_SIGACTION=1; AC_SUBST([HAVE_STRUCT_SIGACTION_SA_SIGACTION]) HAVE_TYPE_VOLATILE_SIG_ATOMIC_T=1; AC_SUBST([HAVE_TYPE_VOLATILE_SIG_ATOMIC_T]) HAVE_SIGHANDLER_T=1; AC_SUBST([HAVE_SIGHANDLER_T]) REPLACE_PTHREAD_SIGMASK=0; AC_SUBST([REPLACE_PTHREAD_SIGMASK]) REPLACE_RAISE=0; AC_SUBST([REPLACE_RAISE]) ]) recode-3.7.15/m4/lib-link.m40000644000175000017500000010561314371444255011033 # lib-link.m4 serial 33 dnl Copyright (C) 2001-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ([2.61]) dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[m4_translit([$1],[./+-], [____])]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes popdef([NAME]) popdef([Name]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. The missing-message dnl defaults to 'no' and may contain additional hints for the user. dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[m4_translit([$1],[./+-], [____])]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, dnl because these -l options might require -L options that are present in dnl LIBS. -l options benefit only from the -L options listed before it. dnl Otherwise, add it to the front of LIBS, because it may be a static dnl library that depends on another static library that is present in LIBS. dnl Static libraries benefit only from the static libraries listed after dnl it. case " $LIB[]NAME" in *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; *) LIBS="$LIB[]NAME $LIBS" ;; esac AC_LINK_IFELSE( [AC_LANG_PROGRAM([[$3]], [[$4]])], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= LIB[]NAME[]_PREFIX= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) popdef([NAME]) popdef([Name]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl acl_libext, dnl acl_shlibext, dnl acl_libname_spec, dnl acl_library_names_spec, dnl acl_hardcode_libdir_flag_spec, dnl acl_hardcode_libdir_separator, dnl acl_hardcode_direct, dnl acl_hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ dnl Complain if config.rpath is missing. AC_REQUIRE_AUX_FILE([config.rpath]) AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE([rpath], [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_FROMPACKAGE(name, package) dnl declares that libname comes from the given package. The configure file dnl will then not have a --with-libname-prefix option but a dnl --with-package-prefix option. Several libraries can come from the same dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar dnl macro call that searches for libname. AC_DEFUN([AC_LIB_FROMPACKAGE], [ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_frompackage_]NAME, [$2]) popdef([NAME]) pushdef([PACK],[$2]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_libsinpackage_]PACKUP, m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) popdef([PACKUP]) popdef([PACK]) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" ]) AC_ARG_WITH(PACK[-prefix], [[ --with-]]PACK[[-prefix[=DIR] search for ]]PACKLIBS[[ in DIR/include and DIR/lib --without-]]PACK[[-prefix don't search for ]]PACKLIBS[[ in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" additional_libdir2="$withval/$acl_libdirstem2" additional_libdir3="$withval/$acl_libdirstem3" fi fi ]) if test "X$additional_libdir2" = "X$additional_libdir"; then additional_libdir2= fi if test "X$additional_libdir3" = "X$additional_libdir"; then additional_libdir3= fi dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= LIB[]NAME[]_PREFIX= dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been dnl computed. So it has to be reset here. HAVE_LIB[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do if test "X$found_dir" = "X"; then eval dir=\$$additional_libdir_variable if test -n "$dir"; then dnl The same code as in the loop below: dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi fi done fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$acl_hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem3 | */$acl_libdirstem3/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $dependency_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then haveit= if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then dnl Really add $dependency_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$dependency_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$dependency_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$dependency_libdir"; then dnl Really add $dependency_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$dependency_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. dnl But on GNU systems, ignore -lc options, because dnl - linking with libc is the default anyway, dnl - linking with libc.a may produce an error dnl "/usr/bin/ld: dynamic STT_GNU_IFUNC symbol `strcmp' with pointer equality in `/usr/lib/libc.a(strcmp.o)' can not be used when making an executable; recompile with -fPIE and relink with -pie" dnl or may produce an executable that always crashes, see dnl . dep=`echo "X$dep" | sed -e 's/^X-l//'` if test "X$dep" != Xc \ || case $host_os in linux* | gnu* | k*bsd*-gnu) false ;; *) true ;; esac; then names_next_round="$names_next_round $dep" fi ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi popdef([PACKLIBS]) popdef([PACKUP]) popdef([PACK]) popdef([NAME]) ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) dnl For those cases where a variable contains several -L and -l options dnl referring to unknown libraries and directories, this macro determines the dnl necessary additional linker options for the runtime path. dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) dnl sets LDADDVAR to linker options needed together with LIBSVALUE. dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, dnl otherwise linking without libtool is assumed. AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) $1= if test "$enable_rpath" != no; then if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode directories into the resulting dnl binary. rpathdirs= next= for opt in $2; do if test -n "$next"; then dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2" \ && test "X$dir" != "X/usr/$acl_libdirstem3"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2" \ && test "X$dir" != "X/usr/$acl_libdirstem3"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""$3""; then dnl libtool is used for linking. Use -R options. for dir in $rpathdirs; do $1="${$1}${$1:+ }-R$dir" done else dnl The linker is used for linking directly. if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user dnl must pass all path elements in one option. alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="${$1}${$1:+ }$flag" done fi fi fi fi fi AC_SUBST([$1]) ]) recode-3.7.15/m4/stat.m40000644000175000017500000000545714371444255010312 # serial 18 # Copyright (C) 2009-2023 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_STAT], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([lstat]) case "$host_os" in mingw*) dnl On this platform, the original stat() returns st_atime, st_mtime, dnl st_ctime values that are affected by the time zone. REPLACE_STAT=1 ;; *) dnl AIX 7.1, Solaris 9, mingw64 mistakenly succeed on stat("file/"). dnl (For mingw, this is due to a broken stat() override in libmingwex.a.) dnl FreeBSD 7.2 mistakenly succeeds on stat("link-to-file/"). AC_CACHE_CHECK([whether stat handles trailing slashes on files], [gl_cv_func_stat_file_slash], [touch conftest.tmp # Assume that if we have lstat, we can also check symlinks. if test $ac_cv_func_lstat = yes; then ln -s conftest.tmp conftest.lnk fi AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[int result = 0; struct stat st; if (!stat ("conftest.tmp/", &st)) result |= 1; #if HAVE_LSTAT if (!stat ("conftest.lnk/", &st)) result |= 2; #endif return result; ]])], [gl_cv_func_stat_file_slash=yes], [gl_cv_func_stat_file_slash=no], [case "$host_os" in # Guess yes on Linux systems. linux-* | linux) gl_cv_func_stat_file_slash="guessing yes" ;; # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_stat_file_slash="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_stat_file_slash="$gl_cross_guess_normal" ;; esac ]) rm -f conftest.tmp conftest.lnk]) case $gl_cv_func_stat_file_slash in *no) REPLACE_STAT=1 AC_DEFINE([REPLACE_FUNC_STAT_FILE], [1], [Define to 1 if stat needs help when passed a file name with a trailing slash]);; esac case $host_os in dnl Solaris stat can return a negative tv_nsec. solaris*) REPLACE_FSTAT=1 ;; esac ;; esac ]) # Prerequisites of lib/stat.c and lib/stat-w32.c. AC_DEFUN([gl_PREREQ_STAT], [ AC_REQUIRE([gl_SYS_STAT_H]) AC_REQUIRE([gl_PREREQ_STAT_W32]) : ]) # Prerequisites of lib/stat-w32.c. AC_DEFUN([gl_PREREQ_STAT_W32], [ AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in mingw*) AC_CHECK_HEADERS([sdkddkver.h]) ;; esac ]) recode-3.7.15/m4/mmap-anon.m40000644000175000017500000000374714371444255011222 # mmap-anon.m4 serial 12 dnl Copyright (C) 2005, 2007, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Detect how mmap can be used to create anonymous (not file-backed) memory # mappings. # - On Linux, AIX, OSF/1, Solaris, Cygwin, Interix, Haiku, both MAP_ANONYMOUS # and MAP_ANON exist and have the same value. # - On HP-UX, only MAP_ANONYMOUS exists. # - On Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix, only MAP_ANON exists. # - On IRIX, neither exists, and a file descriptor opened to /dev/zero must be # used. AC_DEFUN_ONCE([gl_FUNC_MMAP_ANON], [ dnl Persuade glibc to define MAP_ANONYMOUS. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it # fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is # irrelevant for anonymous mappings. AC_CHECK_FUNC([mmap], [gl_have_mmap=yes], [gl_have_mmap=no]) # Try to allow MAP_ANONYMOUS. gl_have_mmap_anonymous=no if test $gl_have_mmap = yes; then AC_MSG_CHECKING([for MAP_ANONYMOUS]) AC_EGREP_CPP([I cannot identify this map], [ #include #ifdef MAP_ANONYMOUS I cannot identify this map #endif ], [gl_have_mmap_anonymous=yes]) if test $gl_have_mmap_anonymous != yes; then AC_EGREP_CPP([I cannot identify this map], [ #include #ifdef MAP_ANON I cannot identify this map #endif ], [AC_DEFINE([MAP_ANONYMOUS], [MAP_ANON], [Define to a substitute value for mmap()'s MAP_ANONYMOUS flag.]) gl_have_mmap_anonymous=yes]) fi AC_MSG_RESULT([$gl_have_mmap_anonymous]) if test $gl_have_mmap_anonymous = yes; then AC_DEFINE([HAVE_MAP_ANONYMOUS], [1], [Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including config.h and .]) fi fi ]) recode-3.7.15/m4/quote.m40000644000175000017500000000057314371444255010466 # quote.m4 serial 6 dnl Copyright (C) 2002-2003, 2005-2006, 2009-2023 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_QUOTE], [ dnl Prerequisites of lib/quote.c. dnl (none) : ]) recode-3.7.15/m4/sys_types_h.m40000644000175000017500000000436114371444255011701 # sys_types_h.m4 serial 13 dnl Copyright (C) 2011-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_SYS_TYPES_H], [ AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS]) dnl Use sane struct stat types in OpenVMS 8.2 and later. AC_DEFINE([_USE_STD_STAT], 1, [For standard stat data types on VMS.]) gl_NEXT_HEADERS([sys/types.h]) dnl Ensure the type pid_t gets defined. AC_REQUIRE([AC_TYPE_PID_T]) dnl Ensure the type mode_t gets defined. AC_REQUIRE([AC_TYPE_MODE_T]) dnl Whether to override the 'off_t' type. AC_REQUIRE([gl_TYPE_OFF_T]) dnl Whether to override the 'dev_t' and 'ino_t' types. m4_ifdef([gl_WINDOWS_STAT_INODES], [ AC_REQUIRE([gl_WINDOWS_STAT_INODES]) ], [ WINDOWS_STAT_INODES=0 ]) AC_SUBST([WINDOWS_STAT_INODES]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_SYS_TYPES_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_TYPE_H_MODULE_INDICATOR_DEFAULTS], [ ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_TYPE_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS]) ]) AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS], [ ]) # This works around a buggy version in autoconf <= 2.69. # See # The 2.70 version isn't quoted properly, so override it too. m4_version_prereq([2.70.1], [], [ m4_undefine([AC_HEADER_MAJOR]) AC_DEFUN([AC_HEADER_MAJOR], [AC_CHECK_HEADERS_ONCE([sys/types.h]) AC_CHECK_HEADER([sys/mkdev.h], [AC_DEFINE([MAJOR_IN_MKDEV], [1], [Define to 1 if `major', `minor', and `makedev' are declared in .])]) if test $ac_cv_header_sys_mkdev_h = no; then AC_CHECK_HEADER([sys/sysmacros.h], [AC_DEFINE([MAJOR_IN_SYSMACROS], [1], [Define to 1 if `major', `minor', and `makedev' are declared in .])]) fi ])# AC_HEADER_MAJOR ]) recode-3.7.15/m4/sys_socket_h.m40000644000175000017500000001633314371444255012027 # sys_socket_h.m4 serial 29 dnl Copyright (C) 2005-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson. AC_DEFUN_ONCE([gl_SYS_SOCKET_H], [ AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl On OSF/1, the functions recv(), send(), recvfrom(), sendto() have dnl old-style declarations (with return type 'int' instead of 'ssize_t') dnl unless _POSIX_PII_SOCKET is defined. case "$host_os" in osf*) AC_DEFINE([_POSIX_PII_SOCKET], [1], [Define to 1 in order to get the POSIX compatible declarations of socket functions.]) ;; esac GL_GENERATE_SYS_SOCKET_H=false AC_CACHE_CHECK([whether is self-contained], [gl_cv_header_sys_socket_h_selfcontained], [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[]])], [gl_cv_header_sys_socket_h_selfcontained=yes], [gl_cv_header_sys_socket_h_selfcontained=no]) ]) if test $gl_cv_header_sys_socket_h_selfcontained = yes; then dnl If the shutdown function exists, should define dnl SHUT_RD, SHUT_WR, SHUT_RDWR. AC_CHECK_FUNCS([shutdown]) if test $ac_cv_func_shutdown = yes; then AC_CACHE_CHECK([whether defines the SHUT_* macros], [gl_cv_header_sys_socket_h_shut], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR };]])], [gl_cv_header_sys_socket_h_shut=yes], [gl_cv_header_sys_socket_h_shut=no]) ]) if test $gl_cv_header_sys_socket_h_shut = no; then GL_GENERATE_SYS_SOCKET_H=true fi fi fi # We need to check for ws2tcpip.h now. gl_PREREQ_SYS_H_SOCKET AC_CHECK_TYPES([struct sockaddr_storage, sa_family_t],,,[ /* sys/types.h is not needed according to POSIX, but the sys/socket.h in i386-unknown-freebsd4.10 and powerpc-apple-darwin5.5 required it. */ #include #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_WS2TCPIP_H #include #endif ]) if test $ac_cv_type_struct_sockaddr_storage = no; then HAVE_STRUCT_SOCKADDR_STORAGE=0 fi if test $ac_cv_type_sa_family_t = no; then HAVE_SA_FAMILY_T=0 fi if test $ac_cv_type_struct_sockaddr_storage != no; then AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family], [], [HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=0], [#include #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_WS2TCPIP_H #include #endif ]) fi if test $HAVE_STRUCT_SOCKADDR_STORAGE = 0 || test $HAVE_SA_FAMILY_T = 0 \ || test $HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = 0; then GL_GENERATE_SYS_SOCKET_H=true fi gl_PREREQ_SYS_H_WINSOCK2 dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ /* Some systems require prerequisite headers. */ #include #include ]], [socket connect accept bind getpeername getsockname getsockopt listen recv send recvfrom sendto setsockopt shutdown accept4]) AC_REQUIRE([AC_C_RESTRICT]) ]) AC_DEFUN([gl_PREREQ_SYS_H_SOCKET], [ dnl Check prerequisites of the replacement. AC_REQUIRE([gl_CHECK_SOCKET_HEADERS]) gl_CHECK_NEXT_HEADERS([sys/socket.h]) if test $ac_cv_header_sys_socket_h = yes; then HAVE_SYS_SOCKET_H=1 else HAVE_SYS_SOCKET_H=0 fi AC_SUBST([HAVE_SYS_SOCKET_H]) gl_PREREQ_SYS_H_WS2TCPIP ]) # Common prerequisites of the replacement and of the # replacement. # Sets and substitutes HAVE_WINSOCK2_H. AC_DEFUN([gl_PREREQ_SYS_H_WINSOCK2], [ m4_ifdef([gl_UNISTD_H_DEFAULTS], [AC_REQUIRE([gl_UNISTD_H_DEFAULTS])]) m4_ifdef([gl_SYS_IOCTL_H_DEFAULTS], [AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])]) AC_CHECK_HEADERS_ONCE([sys/socket.h]) if test $ac_cv_header_sys_socket_h != yes; then dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make dnl the check for those headers unconditional; yet cygwin reports dnl that the headers are present but cannot be compiled (since on dnl cygwin, all socket information should come from sys/socket.h). AC_CHECK_HEADERS([winsock2.h]) fi if test "$ac_cv_header_winsock2_h" = yes; then HAVE_WINSOCK2_H=1 UNISTD_H_HAVE_WINSOCK2_H=1 SYS_IOCTL_H_HAVE_WINSOCK2_H=1 else HAVE_WINSOCK2_H=0 fi AC_SUBST([HAVE_WINSOCK2_H]) ]) # Common prerequisites of the replacement and of the # replacement. # Sets and substitutes HAVE_WS2TCPIP_H. AC_DEFUN([gl_PREREQ_SYS_H_WS2TCPIP], [ AC_REQUIRE([gl_CHECK_SOCKET_HEADERS]) if test $ac_cv_header_sys_socket_h = yes; then HAVE_WS2TCPIP_H=0 else if test $ac_cv_header_ws2tcpip_h = yes; then HAVE_WS2TCPIP_H=1 else HAVE_WS2TCPIP_H=0 fi fi AC_SUBST([HAVE_WS2TCPIP_H]) ]) # gl_SYS_SOCKET_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_SYS_SOCKET_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_SYS_SOCKET_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_SOCKET_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SOCKET]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CONNECT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACCEPT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_BIND]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPEERNAME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSOCKNAME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSOCKOPT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LISTEN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RECV]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SEND]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RECVFROM]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SENDTO]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETSOCKOPT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SHUTDOWN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACCEPT4]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_SOCKET_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) ]) AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS], [ HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE]) HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY]) HAVE_SA_FAMILY_T=1; AC_SUBST([HAVE_SA_FAMILY_T]) HAVE_ACCEPT4=1; AC_SUBST([HAVE_ACCEPT4]) ]) recode-3.7.15/m4/intmax_t.m40000644000175000017500000000354414371444255011155 # intmax_t.m4 serial 9 dnl Copyright (C) 1997-2004, 2006-2007, 2009-2023 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert. AC_PREREQ([2.53]) # Define intmax_t to 'long' or 'long long' # if it is not already defined in or . AC_DEFUN([gl_AC_TYPE_INTMAX_T], [ dnl For simplicity, we assume that a header file defines 'intmax_t' if and dnl only if it defines 'uintmax_t'. AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) AC_REQUIRE([gl_AC_HEADER_STDINT_H]) if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then AC_DEFINE_UNQUOTED([intmax_t], [long long], [Define to long or long long if and don't define.]) else AC_DEFINE([HAVE_INTMAX_T], [1], [Define if you have the 'intmax_t' type in or .]) fi ]) dnl An alternative would be to explicitly test for 'intmax_t'. AC_DEFUN([gt_AC_TYPE_INTMAX_T], [ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) AC_REQUIRE([gl_AC_HEADER_STDINT_H]) AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #include #include #if HAVE_STDINT_H_WITH_UINTMAX #include #endif #if HAVE_INTTYPES_H_WITH_UINTMAX #include #endif ]], [[intmax_t x = -1; return !x;]])], [gt_cv_c_intmax_t=yes], [gt_cv_c_intmax_t=no])]) if test $gt_cv_c_intmax_t = yes; then AC_DEFINE([HAVE_INTMAX_T], [1], [Define if you have the 'intmax_t' type in or .]) else AC_DEFINE_UNQUOTED([intmax_t], [long long], [Define to long or long long if and don't define.]) fi ]) recode-3.7.15/m4/signalblocking.m40000644000175000017500000000156214371444255012316 # signalblocking.m4 serial 17 dnl Copyright (C) 2001-2002, 2006-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Determine available signal blocking primitives. Three different APIs exist: # 1) POSIX: sigemptyset, sigaddset, sigprocmask # 2) SYSV: sighold, sigrelse # 3) BSD: sigblock, sigsetmask # For simplicity, here we check only for the POSIX signal blocking. AC_DEFUN([gl_SIGNALBLOCKING], [ AC_REQUIRE([gl_SIGNAL_H_DEFAULTS]) AC_REQUIRE([gl_CHECK_TYPE_SIGSET_T]) HAVE_POSIX_SIGNALBLOCKING=0 if test "$gl_cv_type_sigset_t" = yes; then AC_CHECK_FUNC([sigprocmask], [HAVE_POSIX_SIGNALBLOCKING=1]) fi ]) # Prerequisites of lib/sigprocmask.c. AC_DEFUN([gl_PREREQ_SIGPROCMASK], [:]) recode-3.7.15/m4/fcntl.m40000644000175000017500000001217214371444255010435 # fcntl.m4 serial 11 dnl Copyright (C) 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # For now, this module ensures that fcntl() # - supports F_DUPFD correctly # - supports or emulates F_DUPFD_CLOEXEC # - supports F_GETFD # Still to be ported to mingw: # - F_SETFD # - F_GETFL, F_SETFL # - F_GETOWN, F_SETOWN # - F_GETLK, F_SETLK, F_SETLKW AC_DEFUN([gl_FUNC_FCNTL], [ dnl Persuade glibc to expose F_DUPFD_CLOEXEC. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_CHECK_FUNCS_ONCE([fcntl]) if test $ac_cv_func_fcntl = no; then gl_REPLACE_FCNTL else dnl cygwin 1.5.x F_DUPFD has wrong errno, and allows negative target dnl haiku alpha 2 F_DUPFD has wrong errno AC_CACHE_CHECK([whether fcntl handles F_DUPFD correctly], [gl_cv_func_fcntl_f_dupfd_works], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include #include #include #include ]GL_MDA_DEFINES[ #ifndef RLIM_SAVED_CUR # define RLIM_SAVED_CUR RLIM_INFINITY #endif #ifndef RLIM_SAVED_MAX # define RLIM_SAVED_MAX RLIM_INFINITY #endif ]], [[int result = 0; int bad_fd = INT_MAX; struct rlimit rlim; if (getrlimit (RLIMIT_NOFILE, &rlim) == 0 && 0 <= rlim.rlim_cur && rlim.rlim_cur <= INT_MAX && rlim.rlim_cur != RLIM_INFINITY && rlim.rlim_cur != RLIM_SAVED_MAX && rlim.rlim_cur != RLIM_SAVED_CUR) bad_fd = rlim.rlim_cur; if (fcntl (0, F_DUPFD, -1) != -1) result |= 1; if (errno != EINVAL) result |= 2; if (fcntl (0, F_DUPFD, bad_fd) != -1) result |= 4; if (errno != EINVAL) result |= 8; /* On OS/2 kLIBC, F_DUPFD does not work on a directory fd */ { int fd; fd = open (".", O_RDONLY); if (fd == -1) result |= 16; else if (fcntl (fd, F_DUPFD, STDERR_FILENO + 1) == -1) result |= 32; close (fd); } return result;]])], [gl_cv_func_fcntl_f_dupfd_works=yes], [gl_cv_func_fcntl_f_dupfd_works=no], [case $host_os in aix* | cygwin* | haiku*) gl_cv_func_fcntl_f_dupfd_works="guessing no" ;; *) gl_cv_func_fcntl_f_dupfd_works="guessing yes" ;; esac])]) case $gl_cv_func_fcntl_f_dupfd_works in *yes) ;; *) gl_REPLACE_FCNTL AC_DEFINE([FCNTL_DUPFD_BUGGY], [1], [Define this to 1 if F_DUPFD behavior does not match POSIX]) ;; esac dnl Many systems lack F_DUPFD_CLOEXEC. dnl NetBSD 9.0 declares F_DUPFD_CLOEXEC but it works only like F_DUPFD. AC_CACHE_CHECK([whether fcntl understands F_DUPFD_CLOEXEC], [gl_cv_func_fcntl_f_dupfd_cloexec], [AC_RUN_IFELSE( [AC_LANG_SOURCE( [[#include #include int main (int argc, char *argv[]) { if (argc == 1) /* parent process */ { if (fcntl (1, F_DUPFD_CLOEXEC, 10) < 0) return 1; return execl ("./conftest", "./conftest", "child", NULL); } else /* child process */ return (fcntl (10, F_GETFL) < 0 ? 0 : 42); } ]]) ], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #ifdef __linux__ /* The Linux kernel only added F_DUPFD_CLOEXEC in 2.6.24, so we always replace it to support the semantics on older kernels that failed with EINVAL. */ choke me #endif ]])], [gl_cv_func_fcntl_f_dupfd_cloexec=yes], [gl_cv_func_fcntl_f_dupfd_cloexec="needs runtime check"]) ], [gl_cv_func_fcntl_f_dupfd_cloexec=no], [case "$host_os" in # Guess no on NetBSD. netbsd*) gl_cv_func_fcntl_f_dupfd_cloexec="guessing no" ;; *) gl_cv_func_fcntl_f_dupfd_cloexec="$gl_cross_guess_normal" ;; esac ]) ]) case "$gl_cv_func_fcntl_f_dupfd_cloexec" in *yes) ;; *) gl_REPLACE_FCNTL dnl No witness macro needed for this bug. ;; esac fi dnl Replace fcntl() for supporting the gnulib-defined fchdir() function, dnl to keep fchdir's bookkeeping up-to-date. m4_ifdef([gl_FUNC_FCHDIR], [ gl_TEST_FCHDIR if test $HAVE_FCHDIR = 0; then gl_REPLACE_FCNTL fi ]) ]) AC_DEFUN([gl_REPLACE_FCNTL], [ AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([fcntl]) if test $ac_cv_func_fcntl = no; then HAVE_FCNTL=0 else REPLACE_FCNTL=1 fi ]) recode-3.7.15/m4/printf-frexpl.m40000644000175000017500000000332314371444255012125 # printf-frexpl.m4 serial 10 dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Check how to define printf_frexpl() without linking with libm. AC_DEFUN([gl_FUNC_PRINTF_FREXPL], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) dnl Subset of gl_FUNC_FREXPL_NO_LIBM. gl_CHECK_FREXPL_NO_LIBM if test $gl_cv_func_frexpl_no_libm = yes; then gl_FUNC_FREXPL_WORKS case "$gl_cv_func_frexpl_works" in *yes) gl_func_frexpl_no_libm=yes ;; *) gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;; esac else gl_func_frexpl_no_libm=no dnl Set REPLACE_FREXPL here because the system may have frexpl in libm. REPLACE_FREXPL=1 fi if test $gl_func_frexpl_no_libm = yes; then AC_DEFINE([HAVE_FREXPL_IN_LIBC], [1], [Define if the frexpl function is available in libc.]) dnl Also check whether it's declared. dnl Mac OS X 10.3 has frexpl() in libc but doesn't declare it in . AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include ]]) fi gl_CHECK_LDEXPL_NO_LIBM if test $gl_cv_func_ldexpl_no_libm = yes; then gl_FUNC_LDEXPL_WORKS case "$gl_cv_func_ldexpl_works" in *yes) AC_DEFINE([HAVE_LDEXPL_IN_LIBC], [1], [Define if the ldexpl function is available in libc.]) dnl Also check whether it's declared. dnl Mac OS X 10.3 has ldexpl() in libc but doesn't declare it in . AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [[#include ]]) ;; esac fi ]) recode-3.7.15/m4/isnanf.m40000644000175000017500000001276614371444255010616 # isnanf.m4 serial 18 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Check how to get or define isnanf(). AC_DEFUN([gl_FUNC_ISNANF], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) ISNANF_LIBM= gl_HAVE_ISNANF_NO_LIBM if test $gl_cv_func_isnanf_no_libm = no; then gl_HAVE_ISNANF_IN_LIBM if test $gl_cv_func_isnanf_in_libm = yes; then ISNANF_LIBM=-lm fi fi dnl The variable gl_func_isnanf set here is used by isnan.m4. if test $gl_cv_func_isnanf_no_libm = yes \ || test $gl_cv_func_isnanf_in_libm = yes; then save_LIBS="$LIBS" LIBS="$LIBS $ISNANF_LIBM" gl_ISNANF_WORKS LIBS="$save_LIBS" case "$gl_cv_func_isnanf_works" in *yes) gl_func_isnanf=yes ;; *) gl_func_isnanf=no; ISNANF_LIBM= ;; esac else gl_func_isnanf=no fi if test $gl_func_isnanf != yes; then HAVE_ISNANF=0 fi AC_SUBST([ISNANF_LIBM]) ]) dnl Check how to get or define isnanf() without linking with libm. AC_DEFUN([gl_FUNC_ISNANF_NO_LIBM], [ gl_HAVE_ISNANF_NO_LIBM if test $gl_cv_func_isnanf_no_libm = yes; then gl_ISNANF_WORKS fi if test $gl_cv_func_isnanf_no_libm = yes \ && { case "$gl_cv_func_isnanf_works" in *yes) true;; *) false;; esac }; then gl_func_isnanf_no_libm=yes AC_DEFINE([HAVE_ISNANF_IN_LIBC], [1], [Define if the isnan(float) function is available in libc.]) else gl_func_isnanf_no_libm=no fi ]) dnl Prerequisites of replacement isnanf definition. It does not need -lm. AC_DEFUN([gl_PREREQ_ISNANF], [ gl_FLOAT_EXPONENT_LOCATION ]) dnl Test whether isnanf() can be used without libm. AC_DEFUN([gl_HAVE_ISNANF_NO_LIBM], [ AC_CACHE_CHECK([whether isnan(float) can be used without linking with libm], [gl_cv_func_isnanf_no_libm], [ AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # undef isnanf # define isnanf(x) __builtin_isnan ((float)(x)) #elif defined isnan # undef isnanf # define isnanf(x) isnan ((float)(x)) #endif float x;]], [[return isnanf (x);]])], [gl_cv_func_isnanf_no_libm=yes], [gl_cv_func_isnanf_no_libm=no]) ]) ]) dnl Test whether isnanf() can be used with libm. AC_DEFUN([gl_HAVE_ISNANF_IN_LIBM], [ AC_CACHE_CHECK([whether isnan(float) can be used with libm], [gl_cv_func_isnanf_in_libm], [ save_LIBS="$LIBS" LIBS="$LIBS -lm" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # undef isnanf # define isnanf(x) __builtin_isnan ((float)(x)) #elif defined isnan # undef isnanf # define isnanf(x) isnan ((float)(x)) #endif float x;]], [[return isnanf (x);]])], [gl_cv_func_isnanf_in_libm=yes], [gl_cv_func_isnanf_in_libm=no]) LIBS="$save_LIBS" ]) ]) dnl Test whether isnanf() rejects Infinity (this fails on Solaris 2.5.1), dnl recognizes a NaN (this fails on IRIX 6.5 with cc), and recognizes a NaN dnl with in-memory representation 0x7fbfffff (this fails on IRIX 6.5). AC_DEFUN([gl_ISNANF_WORKS], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([gl_FLOAT_EXPONENT_LOCATION]) AC_CACHE_CHECK([whether isnan(float) works], [gl_cv_func_isnanf_works], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # undef isnanf # define isnanf(x) __builtin_isnan ((float)(x)) #elif defined isnan # undef isnanf # define isnanf(x) isnan ((float)(x)) #endif /* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */ #ifdef __DECC static float NaN () { static float zero = 0.0f; return zero / zero; } #else # define NaN() (0.0f / 0.0f) #endif #define NWORDS \ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { unsigned int word[NWORDS]; float value; } memory_float; int main() { int result = 0; if (isnanf (1.0f / 0.0f)) result |= 1; if (!isnanf (NaN ())) result |= 2; #if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT /* The isnanf function should be immune against changes in the sign bit and in the mantissa bits. The xor operation twiddles a bit that can only be a sign bit or a mantissa bit. */ if (FLT_EXPBIT0_WORD == 0 && FLT_EXPBIT0_BIT > 0) { memory_float m; m.value = NaN (); /* Set the bits below the exponent to 01111...111. */ m.word[0] &= -1U << FLT_EXPBIT0_BIT; m.word[0] |= (1U << (FLT_EXPBIT0_BIT - 1)) - 1; if (!isnanf (m.value)) result |= 4; } #endif return result; }]])], [gl_cv_func_isnanf_works=yes], [gl_cv_func_isnanf_works=no], [case "$host_os" in irix* | solaris*) gl_cv_func_isnanf_works="guessing no" ;; mingw*) # Guess yes on mingw, no on MSVC. AC_EGREP_CPP([Known], [ #ifdef __MINGW32__ Known #endif ], [gl_cv_func_isnanf_works="guessing yes"], [gl_cv_func_isnanf_works="guessing no"]) ;; *) gl_cv_func_isnanf_works="guessing yes" ;; esac ]) ]) ]) recode-3.7.15/m4/lt~obsolete.m40000644000175000017500000001377412655752671011721 # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software # Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) recode-3.7.15/m4/xsize.m40000644000175000017500000000062614371444255010472 # xsize.m4 serial 5 dnl Copyright (C) 2003-2004, 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_XSIZE], [ dnl Prerequisites of lib/xsize.h. AC_REQUIRE([gl_SIZE_MAX]) AC_CHECK_HEADERS([stdint.h]) ]) recode-3.7.15/m4/stdio_h.m40000644000175000017500000002610514371444255010761 # stdio_h.m4 serial 61 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_STDIO_H], [ AC_REQUIRE([gl_STDIO_H_DEFAULTS]) AH_VERBATIM([MINGW_ANSI_STDIO], [/* Use GNU style printf and scanf. */ #ifndef __USE_MINGW_ANSI_STDIO # undef __USE_MINGW_ANSI_STDIO #endif ]) AC_DEFINE([__USE_MINGW_ANSI_STDIO]) gl_NEXT_HEADERS([stdio.h]) dnl Determine whether __USE_MINGW_ANSI_STDIO makes printf and dnl inttypes.h behave like gnu instead of system; we must give our dnl printf wrapper the right attribute to match. AC_CACHE_CHECK([which flavor of printf attribute matches inttypes macros], [gl_cv_func_printf_attribute_flavor], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #define __STDC_FORMAT_MACROS 1 #include #include /* For non-mingw systems, compilation will trivially succeed. For mingw, compilation will succeed for older mingw (system printf, "I64d") and fail for newer mingw (gnu printf, "lld"). */ #if (defined _WIN32 && ! defined __CYGWIN__) && \ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) extern char PRIdMAX_probe[sizeof PRIdMAX == sizeof "I64d" ? 1 : -1]; #endif ]])], [gl_cv_func_printf_attribute_flavor=system], [gl_cv_func_printf_attribute_flavor=gnu])]) if test "$gl_cv_func_printf_attribute_flavor" = gnu; then AC_DEFINE([GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU], [1], [Define to 1 if printf and friends should be labeled with attribute "__gnu_printf__" instead of "__printf__"]) fi dnl This ifdef is an optimization, to avoid performing a configure check whose dnl result is not used. But it does not make the test of dnl GNULIB_STDIO_H_NONBLOCKING or GNULIB_NONBLOCKING redundant. m4_ifdef([gl_NONBLOCKING_IO], [ gl_NONBLOCKING_IO if test $gl_cv_have_nonblocking != yes; then REPLACE_STDIO_READ_FUNCS=1 fi ]) dnl This ifdef is an optimization, to avoid performing a configure check whose dnl result is not used. But it does not make the test of dnl GNULIB_STDIO_H_SIGPIPE or GNULIB_SIGPIPE redundant. m4_ifdef([gl_SIGNAL_SIGPIPE], [ gl_SIGNAL_SIGPIPE if test $gl_cv_header_signal_h_SIGPIPE != yes; then REPLACE_STDIO_WRITE_FUNCS=1 fi ]) dnl This ifdef is an optimization, to avoid performing a configure check whose dnl result is not used. But it does not make the test of dnl GNULIB_STDIO_H_NONBLOCKING or GNULIB_NONBLOCKING redundant. m4_ifdef([gl_NONBLOCKING_IO], [ gl_NONBLOCKING_IO if test $gl_cv_have_nonblocking != yes; then REPLACE_STDIO_WRITE_FUNCS=1 fi ]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use, and which is not dnl guaranteed by both C89 and C11. gl_WARN_ON_USE_PREPARE([[#include ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen renameat snprintf tmpfile vdprintf vsnprintf]) AC_REQUIRE([AC_C_RESTRICT]) AC_CHECK_DECLS_ONCE([fcloseall]) if test $ac_cv_have_decl_fcloseall = no; then HAVE_DECL_FCLOSEALL=0 fi AC_CHECK_DECLS_ONCE([getw]) if test $ac_cv_have_decl_getw = no; then HAVE_DECL_GETW=0 fi AC_CHECK_DECLS_ONCE([putw]) if test $ac_cv_have_decl_putw = no; then HAVE_DECL_PUTW=0 fi ]) # gl_STDIO_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_STDIO_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_STDIO_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_STDIO_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDIO_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DPRINTF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCLOSE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FDOPEN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFLUSH]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FGETC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FGETS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FOPEN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FOPEN_GNU]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPRINTF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPRINTF_POSIX]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPURGE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPUTC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPUTS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREAD]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREOPEN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSCANF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSEEK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSEEKO]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTELL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTELLO]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FWRITE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETCHAR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDELIM]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLINE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OBSTACK_PRINTF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OBSTACK_PRINTF_POSIX]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PCLOSE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PERROR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POPEN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PRINTF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PRINTF_POSIX]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTCHAR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMOVE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RENAME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RENAMEAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SCANF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SNPRINTF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SPRINTF_POSIX]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STDIO_H_NONBLOCKING]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STDIO_H_SIGPIPE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TMPFILE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VASPRINTF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFSCANF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSCANF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VDPRINTF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFPRINTF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFPRINTF_POSIX]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VPRINTF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VPRINTF_POSIX]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSNPRINTF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSPRINTF_POSIX]) dnl Support Microsoft deprecated alias function names by default. gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FCLOSEALL], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FDOPEN], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FILENO], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETW], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_PUTW], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_TEMPNAM], [1]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_STDIO_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_STDIO_H_DEFAULTS]) ]) AC_DEFUN([gl_STDIO_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. HAVE_DECL_FCLOSEALL=1; AC_SUBST([HAVE_DECL_FCLOSEALL]) HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE]) HAVE_DECL_FSEEKO=1; AC_SUBST([HAVE_DECL_FSEEKO]) HAVE_DECL_FTELLO=1; AC_SUBST([HAVE_DECL_FTELLO]) HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM]) HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE]) HAVE_DECL_GETW=1; AC_SUBST([HAVE_DECL_GETW]) HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF]) HAVE_DECL_PUTW=1; AC_SUBST([HAVE_DECL_PUTW]) HAVE_DECL_SNPRINTF=1; AC_SUBST([HAVE_DECL_SNPRINTF]) HAVE_DECL_VSNPRINTF=1; AC_SUBST([HAVE_DECL_VSNPRINTF]) HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF]) HAVE_FSEEKO=1; AC_SUBST([HAVE_FSEEKO]) HAVE_FTELLO=1; AC_SUBST([HAVE_FTELLO]) HAVE_PCLOSE=1; AC_SUBST([HAVE_PCLOSE]) HAVE_POPEN=1; AC_SUBST([HAVE_POPEN]) HAVE_RENAMEAT=1; AC_SUBST([HAVE_RENAMEAT]) HAVE_VASPRINTF=1; AC_SUBST([HAVE_VASPRINTF]) HAVE_VDPRINTF=1; AC_SUBST([HAVE_VDPRINTF]) REPLACE_DPRINTF=0; AC_SUBST([REPLACE_DPRINTF]) REPLACE_FCLOSE=0; AC_SUBST([REPLACE_FCLOSE]) REPLACE_FDOPEN=0; AC_SUBST([REPLACE_FDOPEN]) REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH]) REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN]) REPLACE_FOPEN_FOR_FOPEN_GNU=0; AC_SUBST([REPLACE_FOPEN_FOR_FOPEN_GNU]) REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF]) REPLACE_FPURGE=0; AC_SUBST([REPLACE_FPURGE]) REPLACE_FREOPEN=0; AC_SUBST([REPLACE_FREOPEN]) REPLACE_FSEEK=0; AC_SUBST([REPLACE_FSEEK]) REPLACE_FSEEKO=0; AC_SUBST([REPLACE_FSEEKO]) REPLACE_FTELL=0; AC_SUBST([REPLACE_FTELL]) REPLACE_FTELLO=0; AC_SUBST([REPLACE_FTELLO]) REPLACE_GETDELIM=0; AC_SUBST([REPLACE_GETDELIM]) REPLACE_GETLINE=0; AC_SUBST([REPLACE_GETLINE]) REPLACE_OBSTACK_PRINTF=0; AC_SUBST([REPLACE_OBSTACK_PRINTF]) REPLACE_PERROR=0; AC_SUBST([REPLACE_PERROR]) REPLACE_POPEN=0; AC_SUBST([REPLACE_POPEN]) REPLACE_PRINTF=0; AC_SUBST([REPLACE_PRINTF]) REPLACE_REMOVE=0; AC_SUBST([REPLACE_REMOVE]) REPLACE_RENAME=0; AC_SUBST([REPLACE_RENAME]) REPLACE_RENAMEAT=0; AC_SUBST([REPLACE_RENAMEAT]) REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF]) REPLACE_SPRINTF=0; AC_SUBST([REPLACE_SPRINTF]) REPLACE_STDIO_READ_FUNCS=0; AC_SUBST([REPLACE_STDIO_READ_FUNCS]) REPLACE_STDIO_WRITE_FUNCS=0; AC_SUBST([REPLACE_STDIO_WRITE_FUNCS]) REPLACE_TMPFILE=0; AC_SUBST([REPLACE_TMPFILE]) REPLACE_VASPRINTF=0; AC_SUBST([REPLACE_VASPRINTF]) REPLACE_VDPRINTF=0; AC_SUBST([REPLACE_VDPRINTF]) REPLACE_VFPRINTF=0; AC_SUBST([REPLACE_VFPRINTF]) REPLACE_VPRINTF=0; AC_SUBST([REPLACE_VPRINTF]) REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF]) REPLACE_VSPRINTF=0; AC_SUBST([REPLACE_VSPRINTF]) ]) recode-3.7.15/m4/reallocarray.m40000644000175000017500000000157114371444255012010 # reallocarray.m4 serial 5 dnl Copyright (C) 2017-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_REALLOCARRAY], [ dnl Persuade glibc to declare reallocarray. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_CHECK_MALLOC_PTRDIFF]) gl_CHECK_FUNCS_ANDROID([reallocarray], [[#include ]]) if test "$ac_cv_func_reallocarray" = no; then HAVE_REALLOCARRAY=0 case "$gl_cv_onwards_func_reallocarray" in future*) REPLACE_REALLOCARRAY=1 ;; esac elif test "$gl_cv_malloc_ptrdiff" = no; then REPLACE_REALLOCARRAY=1 fi ]) # Prerequisites of lib/reallocarray.c. AC_DEFUN([gl_PREREQ_REALLOCARRAY], [:]) recode-3.7.15/m4/pipe.m40000644000175000017500000000066014371444255010263 # pipe.m4 serial 2 dnl Copyright (C) 2010-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_PIPE], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([pipe]) if test $ac_cv_func_pipe != yes; then HAVE_PIPE=0 fi ]) recode-3.7.15/m4/utime_h.m40000644000175000017500000000422014371444255010754 # utime_h.m4 serial 8 dnl Copyright (C) 2017-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_DEFUN_ONCE([gl_UTIME_H], [ AC_REQUIRE([gl_UTIME_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) m4_ifdef([gl_ANSI_CXX], [AC_REQUIRE([gl_ANSI_CXX])]) AC_CHECK_HEADERS_ONCE([utime.h]) gl_CHECK_NEXT_HEADERS([utime.h]) if test $ac_cv_header_utime_h = yes; then HAVE_UTIME_H=1 else HAVE_UTIME_H=0 fi AC_SUBST([HAVE_UTIME_H]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[#include ]], [utime]) ]) # gl_UTIME_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_UTIME_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_UTIME_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_UTIME_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_UTIME_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UTIME]) dnl Support Microsoft deprecated alias function names by default. gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_UTIME], [1]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_UTIME_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_UTIME_H_DEFAULTS]) ]) AC_DEFUN([gl_UTIME_H_DEFAULTS], [ dnl Assume POSIX behavior unless another module says otherwise. HAVE_UTIME=1; AC_SUBST([HAVE_UTIME]) REPLACE_UTIME=0; AC_SUBST([REPLACE_UTIME]) ]) recode-3.7.15/m4/getdtablesize.m40000644000175000017500000000504514371444255012156 # getdtablesize.m4 serial 8 dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_GETDTABLESIZE], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_CHECK_FUNCS_ONCE([getdtablesize]) AC_CHECK_DECLS_ONCE([getdtablesize]) if test $ac_cv_func_getdtablesize = yes && test $ac_cv_have_decl_getdtablesize = yes; then AC_CACHE_CHECK([whether getdtablesize works], [gl_cv_func_getdtablesize_works], [dnl There are two concepts: the "maximum possible file descriptor value + 1" dnl and the "maximum number of open file descriptors in a process". dnl Per SUSv2 and POSIX, getdtablesize() should return the first one. dnl On most platforms, the first and the second concept are the same. dnl On OpenVMS, however, they are different and getdtablesize() returns dnl the second one; thus the test below fails. But we don't care dnl because there's no good way to write a replacement getdtablesize(). case "$host_os" in vms*) gl_cv_func_getdtablesize_works="no (limitation)" ;; *) dnl Cygwin 1.7.25 automatically increases the RLIMIT_NOFILE soft dnl limit up to an unchangeable hard limit; all other platforms dnl correctly require setrlimit before getdtablesize() can report dnl a larger value. AC_RUN_IFELSE([ AC_LANG_PROGRAM( [[#include ] GL_MDA_DEFINES ], [[int size = getdtablesize(); if (dup2 (0, getdtablesize()) != -1) return 1; if (size != getdtablesize()) return 2; ]])], [gl_cv_func_getdtablesize_works=yes], [gl_cv_func_getdtablesize_works=no], [case "$host_os" in cygwin*) # on cygwin 1.5.25, getdtablesize() automatically grows gl_cv_func_getdtablesize_works="guessing no" ;; *) gl_cv_func_getdtablesize_works="guessing yes" ;; esac ]) ;; esac ]) case "$gl_cv_func_getdtablesize_works" in *yes | "no (limitation)") ;; *) REPLACE_GETDTABLESIZE=1 ;; esac else HAVE_GETDTABLESIZE=0 fi ]) # Prerequisites of lib/getdtablesize.c. AC_DEFUN([gl_PREREQ_GETDTABLESIZE], [:]) recode-3.7.15/m4/inttypes.m40000644000175000017500000001431214371444255011204 # inttypes.m4 serial 37 dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Derek Price, Bruno Haible. dnl Test whether is supported or must be substituted. AC_DEFUN_ONCE([gl_INTTYPES_H], [ AC_REQUIRE([gl_INTTYPES_INCOMPLETE]) gl_INTTYPES_PRI_SCN ]) AC_DEFUN_ONCE([gl_INTTYPES_INCOMPLETE], [ AC_REQUIRE([gl_STDINT_H]) AC_CHECK_HEADERS_ONCE([inttypes.h]) dnl Override always, so that the portability warnings work. AC_REQUIRE([gl_INTTYPES_H_DEFAULTS]) gl_CHECK_NEXT_HEADERS([inttypes.h]) AC_REQUIRE([gl_MULTIARCH]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[#include ]], [imaxabs imaxdiv strtoimax strtoumax]) AC_REQUIRE([AC_C_RESTRICT]) ]) # Ensure that the PRI* and SCN* macros are defined appropriately. AC_DEFUN([gl_INTTYPES_PRI_SCN], [ PRIPTR_PREFIX= if $GL_GENERATE_STDINT_H; then dnl Using the gnulib . It defines intptr_t to 'long' or dnl 'long long', depending on _WIN64. AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ #ifdef _WIN64 LLP64 #endif ]]) ], [PRIPTR_PREFIX='"l"'], [PRIPTR_PREFIX='"ll"']) else dnl Using the system's . for glpfx in '' l ll I64; do case $glpfx in '') gltype1='int';; l) gltype1='long int';; ll) gltype1='long long int';; I64) gltype1='__int64';; esac AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include extern intptr_t foo; extern $gltype1 foo;]])], [PRIPTR_PREFIX='"'$glpfx'"']) test -n "$PRIPTR_PREFIX" && break done fi AC_SUBST([PRIPTR_PREFIX]) gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION( [INT32_MAX_LT_INTMAX_MAX], [defined INT32_MAX && defined INTMAX_MAX], [INT32_MAX < INTMAX_MAX], [sizeof (int) < sizeof (long long int)]) if test $APPLE_UNIVERSAL_BUILD = 0; then gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION( [INT64_MAX_EQ_LONG_MAX], [defined INT64_MAX], [INT64_MAX == LONG_MAX], [sizeof (long long int) == sizeof (long int)]) else INT64_MAX_EQ_LONG_MAX=-1 fi gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION( [UINT32_MAX_LT_UINTMAX_MAX], [defined UINT32_MAX && defined UINTMAX_MAX], [UINT32_MAX < UINTMAX_MAX], [sizeof (unsigned int) < sizeof (unsigned long long int)]) if test $APPLE_UNIVERSAL_BUILD = 0; then gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION( [UINT64_MAX_EQ_ULONG_MAX], [defined UINT64_MAX], [UINT64_MAX == ULONG_MAX], [sizeof (unsigned long long int) == sizeof (unsigned long int)]) else UINT64_MAX_EQ_ULONG_MAX=-1 fi ]) # Define the symbol $1 to be 1 if the condition is true, 0 otherwise. # If $2 is true, the condition is $3; otherwise if long long int is supported # approximate the condition with $4; otherwise, assume the condition is false. # The condition should work on all C99 platforms; the approximations should be # good enough to work on all practical pre-C99 platforms. # $2 is evaluated by the C preprocessor, $3 and $4 as compile-time constants. AC_DEFUN([gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION], [ AC_CACHE_CHECK([whether $3], [gl_cv_test_$1], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[/* Work also in C++ mode. */ #define __STDC_LIMIT_MACROS 1 /* Work if build is not clean. */ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H #include #if HAVE_STDINT_H #include #endif #if $2 #define CONDITION ($3) #else #define CONDITION ($4) #endif int test[CONDITION ? 1 : -1];]])], [gl_cv_test_$1=yes], [gl_cv_test_$1=no])]) if test $gl_cv_test_$1 = yes; then $1=1; else $1=0; fi AC_SUBST([$1]) ]) # gl_INTTYPES_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_INTTYPES_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_INTTYPES_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_INTTYPES_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_INTTYPES_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_IMAXABS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_IMAXDIV]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOIMAX]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOUMAX]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_INTTYPES_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_INTTYPES_H_DEFAULTS]) ]) AC_DEFUN([gl_INTTYPES_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. HAVE_DECL_IMAXABS=1; AC_SUBST([HAVE_DECL_IMAXABS]) HAVE_DECL_IMAXDIV=1; AC_SUBST([HAVE_DECL_IMAXDIV]) HAVE_DECL_STRTOIMAX=1; AC_SUBST([HAVE_DECL_STRTOIMAX]) HAVE_DECL_STRTOUMAX=1; AC_SUBST([HAVE_DECL_STRTOUMAX]) HAVE_IMAXDIV_T=1; AC_SUBST([HAVE_IMAXDIV_T]) HAVE_IMAXABS=1; AC_SUBST([HAVE_IMAXABS]) HAVE_IMAXDIV=1; AC_SUBST([HAVE_IMAXDIV]) REPLACE_IMAXABS=0; AC_SUBST([REPLACE_IMAXABS]) REPLACE_IMAXDIV=0; AC_SUBST([REPLACE_IMAXDIV]) REPLACE_STRTOIMAX=0; AC_SUBST([REPLACE_STRTOIMAX]) REPLACE_STRTOUMAX=0; AC_SUBST([REPLACE_STRTOUMAX]) INT32_MAX_LT_INTMAX_MAX=1; AC_SUBST([INT32_MAX_LT_INTMAX_MAX]) INT64_MAX_EQ_LONG_MAX='defined _LP64'; AC_SUBST([INT64_MAX_EQ_LONG_MAX]) PRIPTR_PREFIX=__PRIPTR_PREFIX; AC_SUBST([PRIPTR_PREFIX]) UINT32_MAX_LT_UINTMAX_MAX=1; AC_SUBST([UINT32_MAX_LT_UINTMAX_MAX]) UINT64_MAX_EQ_ULONG_MAX='defined _LP64'; AC_SUBST([UINT64_MAX_EQ_ULONG_MAX]) ]) recode-3.7.15/m4/inttypes_h.m40000644000175000017500000000177414371444255011523 # inttypes_h.m4 serial 10 dnl Copyright (C) 1997-2004, 2006, 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert. # Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, # doesn't clash with , and declares uintmax_t. AC_DEFUN([gl_AC_HEADER_INTTYPES_H], [ AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[uintmax_t i = (uintmax_t) -1; return !i;]])], [gl_cv_header_inttypes_h=yes], [gl_cv_header_inttypes_h=no])]) if test $gl_cv_header_inttypes_h = yes; then AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1], [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi ]) recode-3.7.15/m4/threadlib.m40000644000175000017500000006053614371444255011274 # threadlib.m4 serial 35 dnl Copyright (C) 2005-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ([2.60]) dnl The general structure of the multithreading modules in gnulib is that we dnl have three set of modules: dnl dnl * POSIX API: dnl pthread, which combines dnl pthread-h dnl pthread-thread dnl pthread-once dnl pthread-mutex dnl pthread-rwlock dnl pthread-cond dnl pthread-tss dnl pthread-spin dnl sched_yield dnl dnl * ISO C API: dnl threads, which combines dnl threads-h dnl thrd dnl mtx dnl cnd dnl tss dnl dnl * Gnulib API, with an implementation that can be chosen at configure dnl time through the option --enable-threads=... dnl thread dnl lock dnl cond dnl tls dnl yield dnl dnl They are independent, except for the fact that dnl - the implementation of the ISO C API may use the POSIX (or some other dnl platform dependent) API, dnl - the implementation of the Gnulib API may use the POSIX or ISO C or dnl some other platform dependent API, depending on the --enable-threads dnl option. dnl dnl This file contains macros for all of these APIs! dnl ============================================================================ dnl Macros for all thread APIs AC_DEFUN([gl_ANYTHREADLIB_EARLY], [ AC_REQUIRE([AC_CANONICAL_HOST]) if test -z "$gl_anythreadlib_early_done"; then case "$host_os" in osf*) # On OSF/1, the compiler needs the flag -D_REENTRANT so that it # groks . cc also understands the flag -pthread, but # we don't use it because 1. gcc-2.95 doesn't understand -pthread, # 2. putting a flag into CPPFLAGS that has an effect on the linker # causes the AC_LINK_IFELSE test below to succeed unexpectedly, # leading to wrong values of LIBTHREAD and LTLIBTHREAD. CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; esac # Some systems optimize for single-threaded programs by default, and # need special flags to disable these optimizations. For example, the # definition of 'errno' in . case "$host_os" in aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; esac gl_anythreadlib_early_done=done fi ]) dnl Checks whether the compiler and linker support weak declarations of symbols. AC_DEFUN([gl_WEAK_SYMBOLS], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_CACHE_CHECK([whether imported symbols can be declared weak], [gl_cv_have_weak], [case "$host_os" in cygwin*) dnl On Cygwin 3.2.0 with gcc 10.2, the test below would succeed, but dnl programs that use pthread_in_use() with weak symbol references dnl crash miserably at runtime. gl_cv_have_weak="guessing no" ;; *) gl_cv_have_weak=no dnl First, test whether the compiler accepts it syntactically. AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[extern void xyzzy (); #pragma weak xyzzy]], [[xyzzy();]])], [gl_cv_have_weak=maybe]) if test $gl_cv_have_weak = maybe; then dnl Second, test whether it actually works. On Cygwin 1.7.2, with dnl gcc 4.3, symbols declared weak always evaluate to the address 0. AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #pragma weak fputs int main () { return (fputs == NULL); }]])], [gl_cv_have_weak=yes], [gl_cv_have_weak=no], [dnl When cross-compiling, assume that only ELF platforms support dnl weak symbols. AC_EGREP_CPP([Extensible Linking Format], [#ifdef __ELF__ Extensible Linking Format #endif ], [gl_cv_have_weak="guessing yes"], [gl_cv_have_weak="guessing no"]) ]) fi ;; esac dnl But when linking statically, weak symbols don't work. case " $LDFLAGS " in *" -static "*) gl_cv_have_weak=no ;; esac dnl Test for a bug in FreeBSD 11: A link error occurs when using a weak dnl symbol and linking against a shared library that has a dependency on dnl the shared library that defines the symbol. case "$gl_cv_have_weak" in *yes) case "$host_os" in freebsd* | dragonfly* | midnightbsd*) : > conftest1.c $CC $CPPFLAGS $CFLAGS $LDFLAGS -fPIC -shared -o libempty.so conftest1.c -lpthread >&AS_MESSAGE_LOG_FD 2>&1 cat < conftest2.c #include #pragma weak pthread_mutexattr_gettype int main () { return (pthread_mutexattr_gettype != NULL); } EOF $CC $CPPFLAGS $CFLAGS $LDFLAGS -o conftest conftest2.c libempty.so >&AS_MESSAGE_LOG_FD 2>&1 \ || gl_cv_have_weak=no rm -f conftest1.c libempty.so conftest2.c conftest ;; esac ;; esac ]) case "$gl_cv_have_weak" in *yes) AC_DEFINE([HAVE_WEAK_SYMBOLS], [1], [Define to 1 if the compiler and linker support weak declarations of symbols.]) ;; esac ]) dnl ============================================================================ dnl Macros for the POSIX API dnl gl_PTHREADLIB dnl ------------- dnl Tests for the libraries needs for using the POSIX threads API. dnl Sets the variable LIBPTHREAD to the linker options for use in a Makefile. dnl Sets the variable LIBPMULTITHREAD, for programs that really need dnl multithread functionality. The difference between LIBPTHREAD and dnl LIBPMULTITHREAD is that on platforms supporting weak symbols, typically dnl LIBPTHREAD is empty whereas LIBPMULTITHREAD is not. dnl Sets the variable SCHED_YIELD_LIB to the linker options needed to use the dnl sched_yield() function. dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for dnl multithread-safe programs. dnl Defines the C macro HAVE_PTHREAD_API if (at least parts of) the POSIX dnl threads API is available. dnl The guts of gl_PTHREADLIB. Needs to be expanded only once. AC_DEFUN([gl_PTHREADLIB_BODY], [ AC_REQUIRE([gl_ANYTHREADLIB_EARLY]) if test -z "$gl_pthreadlib_body_done"; then gl_pthread_api=no LIBPTHREAD= LIBPMULTITHREAD= # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that # it groks . It's added above, in gl_ANYTHREADLIB_EARLY. AC_CHECK_HEADER([pthread.h], [gl_have_pthread_h=yes], [gl_have_pthread_h=no]) if test "$gl_have_pthread_h" = yes; then # Other possible tests: # -lpthreads (FSU threads, PCthreads) # -lgthreads # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist # in libc. IRIX 6.5 has the first one in both libc and libpthread, but # the second one only in libpthread, and lock.c needs it. # # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04 # needs -pthread for some reason. See: # https://lists.gnu.org/r/bug-gnulib/2014-09/msg00023.html save_LIBS=$LIBS for gl_pthread in '' '-pthread'; do LIBS="$LIBS $gl_pthread" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include pthread_mutex_t m; pthread_mutexattr_t ma; ]], [[pthread_mutex_lock (&m); pthread_mutexattr_init (&ma);]])], [gl_pthread_api=yes LIBPTHREAD=$gl_pthread LIBPMULTITHREAD=$gl_pthread]) LIBS=$save_LIBS test $gl_pthread_api = yes && break done echo "$as_me:__oline__: gl_pthread_api=$gl_pthread_api" >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: LIBPTHREAD=$LIBPTHREAD" >&AS_MESSAGE_LOG_FD gl_pthread_in_glibc=no # On Linux with glibc >= 2.34, libc contains the fully functional # pthread functions. case "$host_os" in linux*) AC_EGREP_CPP([Lucky user], [#include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 34) || (__GLIBC__ > 2) Lucky user #endif #endif ], [gl_pthread_in_glibc=yes], []) ;; esac echo "$as_me:__oline__: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&AS_MESSAGE_LOG_FD # Test for libpthread by looking for pthread_kill. (Not pthread_self, # since it is defined as a macro on OSF/1.) if test $gl_pthread_api = yes && test -z "$LIBPTHREAD"; then # The program links fine without libpthread. But it may actually # need to link with libpthread in order to create multiple threads. AC_CHECK_LIB([pthread], [pthread_kill], [if test $gl_pthread_in_glibc = yes; then LIBPMULTITHREAD= else LIBPMULTITHREAD=-lpthread # On Solaris and HP-UX, most pthread functions exist also in libc. # Therefore pthread_in_use() needs to actually try to create a # thread: pthread_create from libc will fail, whereas # pthread_create will actually create a thread. # On Solaris 10 or newer, this test is no longer needed, because # libc contains the fully functional pthread functions. case "$host_os" in changequote(,)dnl solaris | solaris2.[1-9] | solaris2.[1-9].* | hpux*) changequote([,])dnl AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], [Define if the pthread_in_use() detection is hard.]) esac fi ]) elif test $gl_pthread_api != yes; then # Some library is needed. Try libpthread and libc_r. AC_CHECK_LIB([pthread], [pthread_kill], [gl_pthread_api=yes LIBPTHREAD=-lpthread LIBPMULTITHREAD=-lpthread]) if test $gl_pthread_api != yes; then # For FreeBSD 4. AC_CHECK_LIB([c_r], [pthread_kill], [gl_pthread_api=yes LIBPTHREAD=-lc_r LIBPMULTITHREAD=-lc_r]) fi fi echo "$as_me:__oline__: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&AS_MESSAGE_LOG_FD fi AC_MSG_CHECKING([whether POSIX threads API is available]) AC_MSG_RESULT([$gl_pthread_api]) AC_SUBST([LIBPTHREAD]) AC_SUBST([LIBPMULTITHREAD]) if test $gl_pthread_api = yes; then AC_DEFINE([HAVE_PTHREAD_API], [1], [Define if you have the header and the POSIX threads API.]) fi dnl On some systems, sched_yield is in librt, rather than in libpthread. AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[sched_yield ();]])], [SCHED_YIELD_LIB= ], [dnl Solaris 7...10 has sched_yield in librt, not in libpthread or libc. AC_CHECK_LIB([rt], [sched_yield], [SCHED_YIELD_LIB=-lrt], [dnl Solaris 2.5.1, 2.6 has sched_yield in libposix4, not librt. AC_CHECK_LIB([posix4], [sched_yield], [SCHED_YIELD_LIB=-lposix4])]) ]) AC_SUBST([SCHED_YIELD_LIB]) dnl For backward compatibility. LIB_SCHED_YIELD="$SCHED_YIELD_LIB" AC_SUBST([LIB_SCHED_YIELD]) gl_pthreadlib_body_done=done fi ]) AC_DEFUN([gl_PTHREADLIB], [ AC_REQUIRE([gl_ANYTHREADLIB_EARLY]) gl_PTHREADLIB_BODY ]) dnl ============================================================================ dnl Macros for the ISO C API dnl gl_STDTHREADLIB dnl --------------- dnl Tests for the libraries needs for using the ISO C threads API. dnl Sets the variable LIBSTDTHREAD to the linker options for use in a Makefile. dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for dnl multithread-safe programs. dnl Defines the C macro HAVE_THREADS_H if (at least parts of) the ISO C threads dnl API is available. dnl The guts of gl_STDTHREADLIB. Needs to be expanded only once. AC_DEFUN([gl_STDTHREADLIB_BODY], [ AC_REQUIRE([gl_ANYTHREADLIB_EARLY]) AC_REQUIRE([AC_CANONICAL_HOST]) if test -z "$gl_stdthreadlib_body_done"; then AC_CHECK_HEADERS_ONCE([threads.h]) case "$host_os" in mingw*) LIBSTDTHREAD= ;; *) gl_PTHREADLIB_BODY if test $ac_cv_header_threads_h = yes; then dnl glibc >= 2.29 has thrd_create in libpthread. dnl FreeBSD >= 10 has thrd_create in libstdthreads; this library depends dnl on libpthread (for the symbol 'pthread_mutexattr_gettype'). dnl glibc >= 2.34, AIX >= 7.1, and Solaris >= 11.4 have thrd_create in dnl libc. gl_CHECK_FUNCS_ANDROID([thrd_create], [[#include ]]) if test $ac_cv_func_thrd_create = yes; then LIBSTDTHREAD= else AC_CHECK_LIB([stdthreads], [thrd_create], [ LIBSTDTHREAD='-lstdthreads -lpthread' ], [ dnl Guess that thrd_create is in libpthread. LIBSTDTHREAD="$LIBPMULTITHREAD" ]) fi else dnl Libraries needed by thrd.c, mtx.c, cnd.c, tss.c. LIBSTDTHREAD="$LIBPMULTITHREAD $SCHED_YIELD_LIB" fi ;; esac AC_SUBST([LIBSTDTHREAD]) AC_MSG_CHECKING([whether ISO C threads API is available]) AC_MSG_RESULT([$ac_cv_header_threads_h]) gl_stdthreadlib_body_done=done fi ]) AC_DEFUN([gl_STDTHREADLIB], [ AC_REQUIRE([gl_ANYTHREADLIB_EARLY]) gl_STDTHREADLIB_BODY ]) dnl ============================================================================ dnl Macros for the Gnulib API dnl gl_THREADLIB dnl ------------ dnl Tests for a multithreading library to be used. dnl If the configure.ac contains a definition of the gl_THREADLIB_DEFAULT_NO dnl (it must be placed before the invocation of gl_THREADLIB_EARLY!), then the dnl default is 'no', otherwise it is system dependent. In both cases, the user dnl can change the choice through the options --enable-threads=choice or dnl --disable-threads. dnl Defines at most one of the macros USE_ISOC_THREADS, USE_POSIX_THREADS, dnl USE_ISOC_AND_POSIX_THREADS, USE_WINDOWS_THREADS. dnl The choice --enable-threads=isoc+posix is available only on platforms that dnl have both the ISO C and the POSIX threads APIs. It has the effect of using dnl the ISO C API for most things and the POSIX API only for creating and dnl controlling threads (because there is no equivalent to pthread_atfork in dnl the ISO C API). dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with dnl libtool). dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for dnl programs that really need multithread functionality. The difference dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak dnl symbols, typically LIBTHREAD is empty whereas LIBMULTITHREAD is not. dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for dnl multithread-safe programs. dnl Since support for GNU pth was removed, $LTLIBTHREAD and $LIBTHREAD have the dnl same value, and similarly $LTLIBMULTITHREAD and $LIBMULTITHREAD have the dnl same value. Only system libraries are needed. AC_DEFUN([gl_THREADLIB_EARLY], [ AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) ]) dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once. AC_DEFUN([gl_THREADLIB_EARLY_BODY], [ dnl Ordering constraints: This macro modifies CPPFLAGS in a way that dnl influences the result of the autoconf tests that test for *_unlocked dnl declarations, on AIX 5 at least. Therefore it must come early. AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl AC_BEFORE([$0], [gl_ARGP])dnl AC_REQUIRE([AC_CANONICAL_HOST]) dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems. AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) dnl Check for multithreading. m4_ifdef([gl_THREADLIB_DEFAULT_NO], [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])], [m4_divert_text([DEFAULTS], [gl_use_threads_default=])]) m4_divert_text([DEFAULTS], [gl_use_winpthreads_default=]) AC_ARG_ENABLE([threads], AS_HELP_STRING([--enable-threads={isoc|posix|isoc+posix|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ AS_HELP_STRING([--disable-threads], [build without multithread safety])]), [gl_use_threads=$enableval], [if test -n "$gl_use_threads_default"; then gl_use_threads="$gl_use_threads_default" else changequote(,)dnl case "$host_os" in dnl Disable multithreading by default on OSF/1, because it interferes dnl with fork()/exec(): When msgexec is linked with -lpthread, its dnl child process gets an endless segmentation fault inside execvp(). osf*) gl_use_threads=no ;; dnl Disable multithreading by default on Cygwin 1.5.x, because it has dnl bugs that lead to endless loops or crashes. See dnl . cygwin*) case `uname -r` in 1.[0-5].*) gl_use_threads=no ;; *) gl_use_threads=yes ;; esac ;; dnl Obey gl_AVOID_WINPTHREAD on mingw. mingw*) case "$gl_use_winpthreads_default" in yes) gl_use_threads=posix ;; no) gl_use_threads=windows ;; *) gl_use_threads=yes ;; esac ;; *) gl_use_threads=yes ;; esac changequote([,])dnl fi ]) if test "$gl_use_threads" = yes \ || test "$gl_use_threads" = isoc \ || test "$gl_use_threads" = posix \ || test "$gl_use_threads" = isoc+posix; then # For using or : gl_ANYTHREADLIB_EARLY fi ]) dnl The guts of gl_THREADLIB. Needs to be expanded only once. AC_DEFUN([gl_THREADLIB_BODY], [ AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) gl_threads_api=none LIBTHREAD= LTLIBTHREAD= LIBMULTITHREAD= LTLIBMULTITHREAD= if test "$gl_use_threads" != no; then dnl Check whether the compiler and linker support weak declarations. gl_WEAK_SYMBOLS if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then dnl If we use weak symbols to implement pthread_in_use / pth_in_use / dnl thread_in_use, we also need to test whether the ISO C 11 thrd_create dnl facility is in use. AC_CHECK_HEADERS_ONCE([threads.h]) : fi if test "$gl_use_threads" = isoc || test "$gl_use_threads" = isoc+posix; then AC_CHECK_HEADERS_ONCE([threads.h]) gl_have_isoc_threads="$ac_cv_header_threads_h" fi if test "$gl_use_threads" = yes \ || test "$gl_use_threads" = posix \ || test "$gl_use_threads" = isoc+posix; then gl_PTHREADLIB_BODY LIBTHREAD=$LIBPTHREAD LTLIBTHREAD=$LIBPTHREAD LIBMULTITHREAD=$LIBPMULTITHREAD LTLIBMULTITHREAD=$LIBPMULTITHREAD if test $gl_pthread_api = yes; then if test "$gl_use_threads" = isoc+posix && test "$gl_have_isoc_threads" = yes; then gl_threads_api='isoc+posix' AC_DEFINE([USE_ISOC_AND_POSIX_THREADS], [1], [Define if the combination of the ISO C and POSIX multithreading APIs can be used.]) LIBTHREAD= LTLIBTHREAD= else gl_threads_api=posix AC_DEFINE([USE_POSIX_THREADS], [1], [Define if the POSIX multithreading library can be used.]) if test -z "$LIBMULTITHREAD" && test -z "$LTLIBMULTITHREAD"; then AC_DEFINE([USE_POSIX_THREADS_FROM_LIBC], [1], [Define if references to the POSIX multithreading library are satisfied by libc.]) else if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then AC_DEFINE([USE_POSIX_THREADS_WEAK], [1], [Define if references to the POSIX multithreading library should be made weak.]) LIBTHREAD= LTLIBTHREAD= else case "$host_os" in freebsd* | dragonfly* | midnightbsd*) if test "x$LIBTHREAD" != "x$LIBMULTITHREAD"; then dnl If weak symbols can't tell whether pthread_create(), pthread_key_create() dnl etc. will succeed, we need a runtime test. AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], [Define if the pthread_in_use() detection is hard.]) fi ;; esac fi fi fi fi fi if test $gl_threads_api = none; then if test "$gl_use_threads" = isoc && test "$gl_have_isoc_threads" = yes; then gl_STDTHREADLIB_BODY LIBTHREAD=$LIBSTDTHREAD LTLIBTHREAD=$LIBSTDTHREAD LIBMULTITHREAD=$LIBSTDTHREAD LTLIBMULTITHREAD=$LIBSTDTHREAD gl_threads_api=isoc AC_DEFINE([USE_ISOC_THREADS], [1], [Define if the ISO C multithreading library can be used.]) fi fi if test $gl_threads_api = none; then case "$gl_use_threads" in yes | windows | win32) # The 'win32' is for backward compatibility. if { case "$host_os" in mingw*) true;; *) false;; esac }; then gl_threads_api=windows AC_DEFINE([USE_WINDOWS_THREADS], [1], [Define if the native Windows multithreading API can be used.]) fi ;; esac fi fi AC_MSG_CHECKING([for multithread API to use]) AC_MSG_RESULT([$gl_threads_api]) AC_SUBST([LIBTHREAD]) AC_SUBST([LTLIBTHREAD]) AC_SUBST([LIBMULTITHREAD]) AC_SUBST([LTLIBMULTITHREAD]) ]) AC_DEFUN([gl_THREADLIB], [ AC_REQUIRE([gl_THREADLIB_EARLY]) AC_REQUIRE([gl_THREADLIB_BODY]) ]) dnl gl_DISABLE_THREADS dnl ------------------ dnl Sets the gl_THREADLIB default so that threads are not used by default. dnl The user can still override it at installation time, by using the dnl configure option '--enable-threads'. AC_DEFUN([gl_DISABLE_THREADS], [ m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no]) ]) dnl gl_AVOID_WINPTHREAD dnl ------------------- dnl Sets the gl_THREADLIB default so that on mingw, a dependency to the dnl libwinpthread DLL (mingw-w64 winpthreads library) is avoided. dnl The user can still override it at installation time, by using the dnl configure option '--enable-threads'. AC_DEFUN([gl_AVOID_WINPTHREAD], [ m4_divert_text([INIT_PREPARE], [gl_use_winpthreads_default=no]) ]) dnl ============================================================================ dnl Survey of platforms: dnl dnl Platform Available Compiler Supports test-lock dnl flavours option weak result dnl --------------- --------- --------- -------- --------- dnl Linux 2.4/glibc posix -lpthread Y OK dnl dnl Linux/glibc 2.34 posix Y OK dnl dnl GNU Hurd/glibc posix -lpthread Y OK dnl dnl Ubuntu 14.04 posix -pthread Y OK dnl dnl FreeBSD 5.3 posix -lc_r Y dnl posix -lkse ? Y dnl posix -lpthread ? Y dnl posix -lthr Y dnl dnl FreeBSD 5.2 posix -lc_r Y dnl posix -lkse Y dnl posix -lthr Y dnl dnl FreeBSD 4.0,4.10 posix -lc_r Y OK dnl dnl NetBSD 1.6 -- dnl dnl OpenBSD 3.4 posix -lpthread Y OK dnl dnl Mac OS X 10.[123] posix -lpthread Y OK dnl dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK dnl dnl HP-UX 11 posix -lpthread N (cc) OK dnl Y (gcc) dnl dnl IRIX 6.5 posix -lpthread Y 0.5 dnl dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK dnl dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK dnl -lpthread (gcc) Y dnl dnl Cygwin posix -lpthread Y OK dnl dnl Mingw windows N OK dnl dnl BeOS 5 -- dnl dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is dnl turned off: dnl OK if all three tests terminate OK, dnl 0.5 if the first test terminates OK but the second one loops endlessly, dnl 0.0 if the first test already loops endlessly. recode-3.7.15/m4/close.m40000644000175000017500000000222114371444255010426 # close.m4 serial 9 dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_CLOSE], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) m4_ifdef([gl_MSVC_INVAL], [ AC_REQUIRE([gl_MSVC_INVAL]) if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then REPLACE_CLOSE=1 fi ]) m4_ifdef([gl_PREREQ_SYS_H_WINSOCK2], [ gl_PREREQ_SYS_H_WINSOCK2 if test $UNISTD_H_HAVE_WINSOCK2_H = 1; then dnl Even if the 'socket' module is not used here, another part of the dnl application may use it and pass file descriptors that refer to dnl sockets to the close() function. So enable the support for sockets. REPLACE_CLOSE=1 fi ]) dnl Replace close() for supporting the gnulib-defined fchdir() function, dnl to keep fchdir's bookkeeping up-to-date. m4_ifdef([gl_FUNC_FCHDIR], [ if test $REPLACE_CLOSE = 0; then gl_TEST_FCHDIR if test $HAVE_FCHDIR = 0; then REPLACE_CLOSE=1 fi fi ]) ]) recode-3.7.15/m4/ltsugar.m40000644000175000017500000001044012655752671011013 # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) recode-3.7.15/m4/lib-ld.m40000644000175000017500000001237014371444255010472 # lib-ld.m4 serial 10 dnl Copyright (C) 1996-2003, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Subroutines of libtool.m4, dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid dnl collision with libtool.m4. dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], [# I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 /dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi if test -n "$LD"; then AC_MSG_CHECKING([for ld]) elif test "$GCC" = yes; then AC_MSG_CHECKING([for ld used by $CC]) elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi if test -n "$LD"; then # Let the user override the test with a path. : else AC_CACHE_VAL([acl_cv_path_LD], [ acl_cv_path_LD= # Final result of this test ac_prog=ld # Program to search in $PATH if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) acl_output=`($CC -print-prog-name=ld) 2>&5` ;; esac case $acl_output in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` done # Got the pathname. No search in PATH is needed. acl_cv_path_LD="$acl_output" ac_prog= ;; "") # If it fails, then pretend we aren't using GCC. ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac fi if test -n "$ac_prog"; then # Search for $ac_prog in $PATH. acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 to declare strnlen(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_CHECK_DECLS_ONCE([strnlen]) if test $ac_cv_have_decl_strnlen = no; then HAVE_DECL_STRNLEN=0 else m4_pushdef([AC_LIBOBJ], [:]) dnl Note: AC_FUNC_STRNLEN does AC_LIBOBJ([strnlen]). AC_FUNC_STRNLEN m4_popdef([AC_LIBOBJ]) if test $ac_cv_func_strnlen_working = no; then REPLACE_STRNLEN=1 fi fi ]) # Prerequisites of lib/strnlen.c. AC_DEFUN([gl_PREREQ_STRNLEN], [:]) recode-3.7.15/m4/getrandom.m40000644000175000017500000000472314371444255011312 # getrandom.m4 serial 11 dnl Copyright 2020-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Paul Eggert. AC_DEFUN([gl_FUNC_GETRANDOM], [ AC_REQUIRE([gl_SYS_RANDOM_H_DEFAULTS]) gl_CHECK_FUNCS_ANDROID([getrandom], [[/* Additional includes are needed before on uClibc and Mac OS X. */ #include #include #include ]]) if test "$ac_cv_func_getrandom" != yes; then HAVE_GETRANDOM=0 case "$gl_cv_onwards_func_getrandom" in future*) REPLACE_GETRANDOM=1 ;; esac else dnl On Solaris 11.4 the return type is 'int', not 'ssize_t'. AC_CACHE_CHECK([whether getrandom is compatible with its GNU+BSD signature], [gl_cv_func_getrandom_ok], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[/* Additional includes are needed before on uClibc and Mac OS X. */ #include #include #include ssize_t getrandom (void *, size_t, unsigned int); ]], [[]]) ], [gl_cv_func_getrandom_ok=yes], [gl_cv_func_getrandom_ok=no]) ]) if test $gl_cv_func_getrandom_ok = no; then REPLACE_GETRANDOM=1 fi fi case "$host_os" in mingw*) AC_CHECK_HEADERS([bcrypt.h], [], [], [[#include ]]) AC_CACHE_CHECK([whether the bcrypt library is guaranteed to be present], [gl_cv_lib_assume_bcrypt], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[#if !(_WIN32_WINNT >= _WIN32_WINNT_WIN7) cannot assume it #endif ]]) ], [gl_cv_lib_assume_bcrypt=yes], [gl_cv_lib_assume_bcrypt=no]) ]) if test $gl_cv_lib_assume_bcrypt = yes; then AC_DEFINE([HAVE_LIB_BCRYPT], [1], [Define to 1 if the bcrypt library is guaranteed to be present.]) GETRANDOM_LIB='-lbcrypt' else GETRANDOM_LIB='-ladvapi32' fi ;; *) GETRANDOM_LIB= ;; esac AC_SUBST([GETRANDOM_LIB]) dnl For backward compatibility. LIB_GETRANDOM="$GETRANDOM_LIB" AC_SUBST([LIB_GETRANDOM]) ]) recode-3.7.15/m4/string_h.m40000644000175000017500000001650314371444255011146 # Configure a GNU-like replacement for . # Copyright (C) 2007-2023 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 37 # Written by Paul Eggert. AC_DEFUN_ONCE([gl_STRING_H], [ dnl Ensure to expand the default settings once only, before all statements dnl that occur in other macros. AC_REQUIRE([gl_STRING_H_DEFAULTS]) gl_NEXT_HEADERS([string.h]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use, and which is not dnl guaranteed by C89. gl_WARN_ON_USE_PREPARE([[#include ]], [explicit_bzero ffsl ffsll memmem mempcpy memrchr memset_explicit rawmemchr stpcpy stpncpy strchrnul strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r strerror_r strerrorname_np sigabbrev_np sigdescr_np strsignal strverscmp]) AC_REQUIRE([AC_C_RESTRICT]) ]) # gl_STRING_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_STRING_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_STRING_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_STRING_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_STRING_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPLICIT_BZERO]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFSL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFSLL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMCHR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMMEM]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMPCPY]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMRCHR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMSET_EXPLICIT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RAWMEMCHR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STPCPY]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STPNCPY]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRCHRNUL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRDUP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNCAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNDUP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNLEN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRPBRK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSEP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSTR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRCASESTR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOK_R]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSLEN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNLEN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCHR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSRCHR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSTR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCASECMP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNCASECMP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSPCASECMP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCASESTR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCSPN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSPBRK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSPN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSEP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSTOK_R]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERROR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERROR_R]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERRORNAME_NP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGABBREV_NP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGDESCR_NP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSIGNAL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRVERSCMP]) dnl Support Microsoft deprecated alias function names by default. gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MEMCCPY], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_STRDUP], [1]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_STRING_H_MODULE_INDICATOR_DEFAULTS]) dnl Make sure the shell variable for GNULIB_FREE_POSIX is initialized. gl_STDLIB_H_REQUIRE_DEFAULTS AC_REQUIRE([gl_STRING_H_DEFAULTS]) ]) AC_DEFUN([gl_STRING_H_DEFAULTS], [ HAVE_MBSLEN=0; AC_SUBST([HAVE_MBSLEN]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_EXPLICIT_BZERO=1; AC_SUBST([HAVE_EXPLICIT_BZERO]) HAVE_FFSL=1; AC_SUBST([HAVE_FFSL]) HAVE_FFSLL=1; AC_SUBST([HAVE_FFSLL]) HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM]) HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY]) HAVE_MEMSET_EXPLICIT=1; AC_SUBST([HAVE_MEMSET_EXPLICIT]) HAVE_DECL_MEMRCHR=1; AC_SUBST([HAVE_DECL_MEMRCHR]) HAVE_RAWMEMCHR=1; AC_SUBST([HAVE_RAWMEMCHR]) HAVE_STPCPY=1; AC_SUBST([HAVE_STPCPY]) HAVE_STPNCPY=1; AC_SUBST([HAVE_STPNCPY]) HAVE_STRCHRNUL=1; AC_SUBST([HAVE_STRCHRNUL]) HAVE_DECL_STRDUP=1; AC_SUBST([HAVE_DECL_STRDUP]) HAVE_DECL_STRNDUP=1; AC_SUBST([HAVE_DECL_STRNDUP]) HAVE_DECL_STRNLEN=1; AC_SUBST([HAVE_DECL_STRNLEN]) HAVE_STRPBRK=1; AC_SUBST([HAVE_STRPBRK]) HAVE_STRSEP=1; AC_SUBST([HAVE_STRSEP]) HAVE_STRCASESTR=1; AC_SUBST([HAVE_STRCASESTR]) HAVE_DECL_STRTOK_R=1; AC_SUBST([HAVE_DECL_STRTOK_R]) HAVE_DECL_STRERROR_R=1; AC_SUBST([HAVE_DECL_STRERROR_R]) HAVE_STRERRORNAME_NP=1; AC_SUBST([HAVE_STRERRORNAME_NP]) HAVE_SIGABBREV_NP=1; AC_SUBST([HAVE_SIGABBREV_NP]) HAVE_SIGDESCR_NP=1; AC_SUBST([HAVE_SIGDESCR_NP]) HAVE_DECL_STRSIGNAL=1; AC_SUBST([HAVE_DECL_STRSIGNAL]) HAVE_STRVERSCMP=1; AC_SUBST([HAVE_STRVERSCMP]) REPLACE_FFSLL=0; AC_SUBST([REPLACE_FFSLL]) REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR]) REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM]) REPLACE_MEMPCPY=0; AC_SUBST([REPLACE_MEMPCPY]) REPLACE_STPCPY=0; AC_SUBST([REPLACE_STPCPY]) REPLACE_STPNCPY=0; AC_SUBST([REPLACE_STPNCPY]) REPLACE_STRCHRNUL=0; AC_SUBST([REPLACE_STRCHRNUL]) REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP]) REPLACE_STRNCAT=0; AC_SUBST([REPLACE_STRNCAT]) REPLACE_STRNDUP=0; AC_SUBST([REPLACE_STRNDUP]) REPLACE_STRNLEN=0; AC_SUBST([REPLACE_STRNLEN]) REPLACE_STRSTR=0; AC_SUBST([REPLACE_STRSTR]) REPLACE_STRCASESTR=0; AC_SUBST([REPLACE_STRCASESTR]) REPLACE_STRTOK_R=0; AC_SUBST([REPLACE_STRTOK_R]) REPLACE_STRERROR=0; AC_SUBST([REPLACE_STRERROR]) REPLACE_STRERROR_R=0; AC_SUBST([REPLACE_STRERROR_R]) REPLACE_STRERRORNAME_NP=0; AC_SUBST([REPLACE_STRERRORNAME_NP]) REPLACE_STRSIGNAL=0; AC_SUBST([REPLACE_STRSIGNAL]) UNDEFINE_STRTOK_R=0; AC_SUBST([UNDEFINE_STRTOK_R]) ]) recode-3.7.15/m4/po.m40000644000175000017500000004503713226751342007747 # po.m4 serial 22 (gettext-0.19) dnl Copyright (C) 1995-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.60]) dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl AC_REQUIRE([AC_PROG_SED])dnl AC_REQUIRE([AM_NLS])dnl dnl Release version of the gettext macros. This is used to ensure that dnl the gettext macros and po/Makefile.in.in are in sync. AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) dnl Test whether it is GNU msgfmt >= 0.15. changequote(,)dnl case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac changequote([,])dnl AC_SUBST([MSGFMT_015]) changequote(,)dnl case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac changequote([,])dnl AC_SUBST([GMSGFMT_015]) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Test whether it is GNU xgettext >= 0.15. changequote(,)dnl case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac changequote([,])dnl AC_SUBST([XGETTEXT_015]) dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) dnl Installation directories. dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we dnl have to define it here, so that it can be used in po/Makefile. test -n "$localedir" || localedir='${datadir}/locale' AC_SUBST([localedir]) dnl Support for AM_XGETTEXT_OPTION. test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) AC_CONFIG_COMMANDS([po-directories], [[ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done]], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" tab=`printf '\t'` if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, for platforms that lack it. dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Paul Eggert. AC_DEFUN_ONCE([gl_WCTYPE_H], [ AC_REQUIRE([gl_WCTYPE_H_DEFAULTS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_CHECK_FUNCS_ONCE([iswcntrl]) if test $ac_cv_func_iswcntrl = yes; then HAVE_ISWCNTRL=1 else HAVE_ISWCNTRL=0 fi AC_SUBST([HAVE_ISWCNTRL]) AC_REQUIRE([gt_TYPE_WINT_T]) if test $gt_cv_c_wint_t = yes; then HAVE_WINT_T=1 else HAVE_WINT_T=0 fi AC_SUBST([HAVE_WINT_T]) AC_REQUIRE([gl_TYPE_WINT_T_PREREQ]) gl_CHECK_NEXT_HEADERS([wctype.h]) if test $ac_cv_header_wctype_h = yes; then if test $ac_cv_func_iswcntrl = yes; then dnl Linux libc5 has an iswprint function that returns 0 for all arguments. dnl The other functions are likely broken in the same way. AC_CACHE_CHECK([whether iswcntrl works], [gl_cv_func_iswcntrl_works], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include int main () { return iswprint ('x') == 0; } ]])], [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no], [dnl Guess no on Linux libc5, yes otherwise. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include #if __GNU_LIBRARY__ == 1 Linux libc5 i18n is broken. #endif]], [[]])], [gl_cv_func_iswcntrl_works="guessing yes"], [gl_cv_func_iswcntrl_works="guessing no"]) ]) ]) fi HAVE_WCTYPE_H=1 else HAVE_WCTYPE_H=0 fi AC_SUBST([HAVE_WCTYPE_H]) if test $GNULIBHEADERS_OVERRIDE_WINT_T = 1; then REPLACE_ISWCNTRL=1 else case "$gl_cv_func_iswcntrl_works" in *yes) REPLACE_ISWCNTRL=0 ;; *) REPLACE_ISWCNTRL=1 ;; esac fi AC_SUBST([REPLACE_ISWCNTRL]) if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then dnl Redefine all of iswcntrl, ..., iswxdigit in . : fi if test $REPLACE_ISWCNTRL = 1; then REPLACE_TOWLOWER=1 else AC_CHECK_FUNCS([towlower]) if test $ac_cv_func_towlower = yes; then REPLACE_TOWLOWER=0 else AC_CHECK_DECLS([towlower],,, [[#include #if HAVE_WCTYPE_H # include #endif ]]) if test $ac_cv_have_decl_towlower = yes; then dnl On Minix 3.1.8, the system's declares towlower() and dnl towupper() although it does not have the functions. Avoid a dnl collision with gnulib's replacement. REPLACE_TOWLOWER=1 else REPLACE_TOWLOWER=0 fi fi fi AC_SUBST([REPLACE_TOWLOWER]) if test $HAVE_ISWCNTRL = 0 || test $REPLACE_TOWLOWER = 1; then dnl Redefine towlower, towupper in . : fi dnl We assume that the wctype() and iswctype() functions exist if and only dnl if the type wctype_t is defined in or in if that dnl exists. dnl HP-UX 11.00 declares all these in and lacks . AC_CACHE_CHECK([for wctype_t], [gl_cv_type_wctype_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include #if HAVE_WCTYPE_H # include #endif wctype_t a; ]], [[]])], [gl_cv_type_wctype_t=yes], [gl_cv_type_wctype_t=no]) ]) if test $gl_cv_type_wctype_t = no; then HAVE_WCTYPE_T=0 fi dnl We assume that the wctrans() and towctrans() functions exist if and only dnl if the type wctrans_t is defined in . AC_CACHE_CHECK([for wctrans_t], [gl_cv_type_wctrans_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include #include wctrans_t a; ]], [[]])], [gl_cv_type_wctrans_t=yes], [gl_cv_type_wctrans_t=no]) ]) if test $gl_cv_type_wctrans_t = no; then HAVE_WCTRANS_T=0 fi dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ #if !(defined __GLIBC__ && !defined __UCLIBC__) # include #endif #include ]], [wctype iswctype wctrans towctrans ]) ]) # gl_WCTYPE_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_WCTYPE_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_WCTYPE_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_WCTYPE_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_WCTYPE_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWBLANK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWDIGIT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWXDIGIT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTYPE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWCTYPE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTRANS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TOWCTRANS]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_WCTYPE_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_WCTYPE_H_DEFAULTS]) ]) AC_DEFUN([gl_WCTYPE_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. HAVE_ISWBLANK=1; AC_SUBST([HAVE_ISWBLANK]) HAVE_WCTYPE_T=1; AC_SUBST([HAVE_WCTYPE_T]) HAVE_WCTRANS_T=1; AC_SUBST([HAVE_WCTRANS_T]) REPLACE_ISWBLANK=0; AC_SUBST([REPLACE_ISWBLANK]) REPLACE_ISWDIGIT=0; AC_SUBST([REPLACE_ISWDIGIT]) REPLACE_ISWXDIGIT=0; AC_SUBST([REPLACE_ISWXDIGIT]) ]) recode-3.7.15/m4/fcntl_h.m40000644000175000017500000000520614371444255010744 # serial 20 # Configure fcntl.h. dnl Copyright (C) 2006-2007, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Paul Eggert. AC_DEFUN_ONCE([gl_FCNTL_H], [ AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) AC_REQUIRE([gl_FCNTL_O_FLAGS]) gl_NEXT_HEADERS([fcntl.h]) dnl Ensure the type pid_t gets defined. AC_REQUIRE([AC_TYPE_PID_T]) dnl Ensure the type mode_t gets defined. AC_REQUIRE([AC_TYPE_MODE_T]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use, if it is not common dnl enough to be declared everywhere. gl_WARN_ON_USE_PREPARE([[#include ]], [fcntl openat]) ]) # gl_FCNTL_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_FCNTL_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_FCNTL_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_FCNTL_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_FCNTL_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CREAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCNTL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NONBLOCKING]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OPEN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OPENAT]) dnl Support Microsoft deprecated alias function names by default. gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CREAT], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_OPEN], [1]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_FCNTL_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) ]) AC_DEFUN([gl_FCNTL_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. HAVE_FCNTL=1; AC_SUBST([HAVE_FCNTL]) HAVE_OPENAT=1; AC_SUBST([HAVE_OPENAT]) REPLACE_CREAT=0; AC_SUBST([REPLACE_CREAT]) REPLACE_FCNTL=0; AC_SUBST([REPLACE_FCNTL]) REPLACE_OPEN=0; AC_SUBST([REPLACE_OPEN]) REPLACE_OPENAT=0; AC_SUBST([REPLACE_OPENAT]) ]) recode-3.7.15/m4/warnings.m40000644000175000017500000000745614371444255011170 # warnings.m4 serial 16 dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # gl_AS_VAR_APPEND(VAR, VALUE) # ---------------------------- # Provide the functionality of AS_VAR_APPEND if Autoconf does not have it. m4_ifdef([AS_VAR_APPEND], [m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])], [m4_define([gl_AS_VAR_APPEND], [AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])]) # gl_COMPILER_OPTION_IF(OPTION, [IF-SUPPORTED], [IF-NOT-SUPPORTED], # [PROGRAM = AC_LANG_PROGRAM()]) # ----------------------------------------------------------------- # Check if the compiler supports OPTION when compiling PROGRAM. # # The effects of this macro depend on the current language (_AC_LANG). AC_DEFUN([gl_COMPILER_OPTION_IF], [ AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_[]_AC_LANG_ABBREV[]_$1])dnl AS_VAR_PUSHDEF([gl_Flags], [_AC_LANG_PREFIX[]FLAGS])dnl AS_LITERAL_IF([$1], [m4_pushdef([gl_Positive], m4_bpatsubst([$1], [^-Wno-], [-W]))], [gl_positive="$1" case $gl_positive in -Wno-*) gl_positive=-W`expr "X$gl_positive" : 'X-Wno-\(.*\)'` ;; esac m4_pushdef([gl_Positive], [$gl_positive])])dnl AC_CACHE_CHECK([whether _AC_LANG compiler handles $1], [gl_Warn], [ gl_save_compiler_FLAGS="$gl_Flags" gl_AS_VAR_APPEND(m4_defn([gl_Flags]), [" $gl_unknown_warnings_are_errors ]m4_defn([gl_Positive])["]) AC_LINK_IFELSE([m4_default([$4], [AC_LANG_PROGRAM([[]])])], [AS_VAR_SET([gl_Warn], [yes])], [AS_VAR_SET([gl_Warn], [no])]) gl_Flags="$gl_save_compiler_FLAGS" ]) AS_VAR_IF(gl_Warn, [yes], [$2], [$3]) m4_popdef([gl_Positive])dnl AS_VAR_POPDEF([gl_Flags])dnl AS_VAR_POPDEF([gl_Warn])dnl ]) # gl_UNKNOWN_WARNINGS_ARE_ERRORS # ------------------------------ # Clang doesn't complain about unknown warning options unless one also # specifies -Wunknown-warning-option -Werror. Detect this. # # The effects of this macro depend on the current language (_AC_LANG). AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS], [_AC_LANG_DISPATCH([$0], _AC_LANG, $@)]) # Specialization for _AC_LANG = C. This macro can be AC_REQUIREd. AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS(C)], [ AC_LANG_PUSH([C]) gl_UNKNOWN_WARNINGS_ARE_ERRORS_IMPL AC_LANG_POP([C]) ]) # Specialization for _AC_LANG = C++. This macro can be AC_REQUIREd. AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS(C++)], [ AC_LANG_PUSH([C++]) gl_UNKNOWN_WARNINGS_ARE_ERRORS_IMPL AC_LANG_POP([C++]) ]) # Specialization for _AC_LANG = Objective C. This macro can be AC_REQUIREd. AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS(Objective C)], [ AC_LANG_PUSH([Objective C]) gl_UNKNOWN_WARNINGS_ARE_ERRORS_IMPL AC_LANG_POP([Objective C]) ]) AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS_IMPL], [gl_COMPILER_OPTION_IF([-Werror -Wunknown-warning-option], [gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'], [gl_unknown_warnings_are_errors=])]) # gl_WARN_ADD(OPTION, [VARIABLE = WARN_CFLAGS/WARN_CXXFLAGS], # [PROGRAM = AC_LANG_PROGRAM()]) # ----------------------------------------------------------- # Adds parameter to WARN_CFLAGS/WARN_CXXFLAGS if the compiler supports it # when compiling PROGRAM. For example, gl_WARN_ADD([-Wparentheses]). # # If VARIABLE is a variable name, AC_SUBST it. # # The effects of this macro depend on the current language (_AC_LANG). AC_DEFUN([gl_WARN_ADD], [AC_REQUIRE([gl_UNKNOWN_WARNINGS_ARE_ERRORS(]_AC_LANG[)]) gl_COMPILER_OPTION_IF([$1], [gl_AS_VAR_APPEND(m4_if([$2], [], [[WARN_]_AC_LANG_PREFIX[FLAGS]], [[$2]]), [" $1"])], [], [$3]) m4_ifval([$2], [AS_LITERAL_IF([$2], [AC_SUBST([$2])])], [AC_SUBST([WARN_]_AC_LANG_PREFIX[FLAGS])])dnl ]) # Local Variables: # mode: autoconf # End: recode-3.7.15/m4/open-slash.m40000644000175000017500000000345514371444255011404 # open-slash.m4 serial 2 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Tests whether open() and creat() recognize a trailing slash. dnl Sets gl_cv_func_open_slash. AC_DEFUN([gl_OPEN_TRAILING_SLASH_BUG], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl open("foo/") should not create a file when the file name has a dnl trailing slash. FreeBSD only has the problem on symlinks. AC_CHECK_FUNCS_ONCE([lstat]) AC_CACHE_CHECK([whether open recognizes a trailing slash], [gl_cv_func_open_slash], [# Assume that if we have lstat, we can also check symlinks. if test $ac_cv_func_lstat = yes; then touch conftest.tmp ln -s conftest.tmp conftest.lnk fi AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #if HAVE_UNISTD_H # include #endif ]GL_MDA_DEFINES[ int main () { int result = 0; #if HAVE_LSTAT if (open ("conftest.lnk/", O_RDONLY) != -1) result |= 1; #endif if (open ("conftest.sl/", O_CREAT, 0600) >= 0) result |= 2; return result; }]])], [gl_cv_func_open_slash=yes], [gl_cv_func_open_slash=no], [ changequote(,)dnl case "$host_os" in freebsd* | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*) gl_cv_func_open_slash="guessing no" ;; *) gl_cv_func_open_slash="guessing yes" ;; esac changequote([,])dnl ]) rm -f conftest.sl conftest.tmp conftest.lnk ]) case "$gl_cv_func_open_slash" in *no) AC_DEFINE([OPEN_TRAILING_SLASH_BUG], [1], [Define to 1 if open() fails to recognize a trailing slash.]) ;; esac ]) recode-3.7.15/m4/exponentl.m40000644000175000017500000000713014371444255011341 # exponentl.m4 serial 5 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_LONG_DOUBLE_EXPONENT_LOCATION], [ AC_REQUIRE([gl_BIGENDIAN]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([where to find the exponent in a 'long double'], [gl_cv_cc_long_double_expbit0], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include #include #define NWORDS \ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { long double value; unsigned int word[NWORDS]; } memory_long_double; static unsigned int ored_words[NWORDS]; static unsigned int anded_words[NWORDS]; static void add_to_ored_words (long double *x) { memory_long_double m; size_t i; /* Clear it first, in case sizeof (long double) < sizeof (memory_long_double). */ memset (&m, 0, sizeof (memory_long_double)); m.value = *x; for (i = 0; i < NWORDS; i++) { ored_words[i] |= m.word[i]; anded_words[i] &= m.word[i]; } } int main () { static long double samples[5] = { 0.25L, 0.5L, 1.0L, 2.0L, 4.0L }; size_t j; FILE *fp = fopen ("conftest.out", "w"); if (fp == NULL) return 1; for (j = 0; j < NWORDS; j++) anded_words[j] = ~ (unsigned int) 0; for (j = 0; j < 5; j++) add_to_ored_words (&samples[j]); /* Remove bits that are common (e.g. if representation of the first mantissa bit is explicit). */ for (j = 0; j < NWORDS; j++) ored_words[j] &= ~anded_words[j]; /* Now find the nonzero word. */ for (j = 0; j < NWORDS; j++) if (ored_words[j] != 0) break; if (j < NWORDS) { size_t i; for (i = j + 1; i < NWORDS; i++) if (ored_words[i] != 0) { fprintf (fp, "unknown"); return (fclose (fp) != 0); } for (i = 0; ; i++) if ((ored_words[j] >> i) & 1) { fprintf (fp, "word %d bit %d", (int) j, (int) i); return (fclose (fp) != 0); } } fprintf (fp, "unknown"); return (fclose (fp) != 0); } ]])], [gl_cv_cc_long_double_expbit0=`cat conftest.out`], [gl_cv_cc_long_double_expbit0="unknown"], [ dnl When cross-compiling, in general we don't know. It depends on the dnl ABI and compiler version. There are too many cases. gl_cv_cc_long_double_expbit0="unknown" case "$host_os" in mingw*) # On native Windows (little-endian), we know the result # in two cases: mingw, MSVC. AC_EGREP_CPP([Known], [ #ifdef __MINGW32__ Known #endif ], [gl_cv_cc_long_double_expbit0="word 2 bit 0"]) AC_EGREP_CPP([Known], [ #ifdef _MSC_VER Known #endif ], [gl_cv_cc_long_double_expbit0="word 1 bit 20"]) ;; esac ]) rm -f conftest.out ]) case "$gl_cv_cc_long_double_expbit0" in word*bit*) word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'` AC_DEFINE_UNQUOTED([LDBL_EXPBIT0_WORD], [$word], [Define as the word index where to find the exponent of 'long double'.]) AC_DEFINE_UNQUOTED([LDBL_EXPBIT0_BIT], [$bit], [Define as the bit index in the word where to find bit 0 of the exponent of 'long double'.]) ;; esac ]) recode-3.7.15/m4/frexp.m40000644000175000017500000001207114371444255010451 # frexp.m4 serial 16 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FREXP], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) AC_REQUIRE([gl_CHECK_FREXP_NO_LIBM]) FREXP_LIBM= if test $gl_cv_func_frexp_no_libm = no; then AC_CACHE_CHECK([whether frexp() can be used with libm], [gl_cv_func_frexp_in_libm], [ save_LIBS="$LIBS" LIBS="$LIBS -lm" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include double x;]], [[int e; return frexp (x, &e) > 0;]])], [gl_cv_func_frexp_in_libm=yes], [gl_cv_func_frexp_in_libm=no]) LIBS="$save_LIBS" ]) if test $gl_cv_func_frexp_in_libm = yes; then FREXP_LIBM=-lm fi fi if test $gl_cv_func_frexp_no_libm = yes \ || test $gl_cv_func_frexp_in_libm = yes; then save_LIBS="$LIBS" LIBS="$LIBS $FREXP_LIBM" gl_FUNC_FREXP_WORKS LIBS="$save_LIBS" case "$gl_cv_func_frexp_works" in *yes) gl_func_frexp=yes ;; *) gl_func_frexp=no; REPLACE_FREXP=1; FREXP_LIBM= ;; esac else gl_func_frexp=no fi if test $gl_func_frexp = yes; then AC_DEFINE([HAVE_FREXP], [1], [Define if the frexp() function is available and works.]) fi AC_SUBST([FREXP_LIBM]) ]) AC_DEFUN([gl_FUNC_FREXP_NO_LIBM], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) AC_REQUIRE([gl_CHECK_FREXP_NO_LIBM]) if test $gl_cv_func_frexp_no_libm = yes; then gl_FUNC_FREXP_WORKS case "$gl_cv_func_frexp_works" in *yes) gl_func_frexp_no_libm=yes ;; *) gl_func_frexp_no_libm=no; REPLACE_FREXP=1 ;; esac else gl_func_frexp_no_libm=no dnl Set REPLACE_FREXP here because the system may have frexp in libm. REPLACE_FREXP=1 fi if test $gl_func_frexp_no_libm = yes; then AC_DEFINE([HAVE_FREXP_IN_LIBC], [1], [Define if the frexp() function is available in libc.]) fi ]) dnl Test whether frexp() can be used without linking with libm. dnl Set gl_cv_func_frexp_no_libm to 'yes' or 'no' accordingly. AC_DEFUN([gl_CHECK_FREXP_NO_LIBM], [ AC_CACHE_CHECK([whether frexp() can be used without linking with libm], [gl_cv_func_frexp_no_libm], [ AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include double x;]], [[int e; return frexp (x, &e) > 0;]])], [gl_cv_func_frexp_no_libm=yes], [gl_cv_func_frexp_no_libm=no]) ]) ]) dnl Test whether frexp() works also on denormalized numbers (this fails e.g. on dnl NetBSD 3.0), on infinite numbers (this fails e.g. on IRIX 6.5 and mingw), dnl and on negative zero (this fails e.g. on NetBSD 4.99 and mingw). AC_DEFUN([gl_FUNC_FREXP_WORKS], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CHECK_DECLS_ONCE([alarm]) AC_CACHE_CHECK([whether frexp works], [gl_cv_func_frexp_works], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include #if HAVE_DECL_ALARM # include # include #endif /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. ICC 10.0 has a bug when optimizing the expression -zero. The expression -DBL_MIN * DBL_MIN does not work when cross-compiling to PowerPC on Mac OS X 10.5. */ #if defined __hpux || defined __sgi || defined __ICC static double compute_minus_zero (void) { return -DBL_MIN * DBL_MIN; } # define minus_zero compute_minus_zero () #else double minus_zero = -0.0; #endif int main() { int result = 0; int i; volatile double x; double zero = 0.0; #if HAVE_DECL_ALARM /* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite number. Let the test fail in this case. */ signal (SIGALRM, SIG_DFL); alarm (5); #endif /* Test on denormalized numbers. */ for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5) ; if (x > 0.0) { int exp; double y = frexp (x, &exp); /* On machines with IEEE754 arithmetic: x = 1.11254e-308, exp = -1022. On NetBSD: y = 0.75. Correct: y = 0.5. */ if (y != 0.5) result |= 1; } /* Test on infinite numbers. */ x = 1.0 / zero; { int exp; double y = frexp (x, &exp); if (y != x) result |= 2; } /* Test on negative zero. */ x = minus_zero; { int exp; double y = frexp (x, &exp); if (memcmp (&y, &x, sizeof x)) result |= 4; } return result; }]])], [gl_cv_func_frexp_works=yes], [gl_cv_func_frexp_works=no], [case "$host_os" in netbsd* | irix*) gl_cv_func_frexp_works="guessing no" ;; mingw*) # Guess yes with MSVC, no with mingw. AC_EGREP_CPP([Good], [ #ifdef _MSC_VER Good #endif ], [gl_cv_func_frexp_works="guessing yes"], [gl_cv_func_frexp_works="guessing no"]) ;; *) gl_cv_func_frexp_works="guessing yes" ;; esac ]) ]) ]) recode-3.7.15/m4/ltoptions.m40000644000175000017500000003426212655752671011375 # Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 8 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_AIX_SONAME([DEFAULT]) # ---------------------------------- # implement the --with-aix-soname flag, and support the `aix-soname=aix' # and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT # is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. m4_define([_LT_WITH_AIX_SONAME], [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[[5-9]]*,yes) AC_MSG_CHECKING([which variant of shared library versioning to provide]) AC_ARG_WITH([aix-soname], [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], [case $withval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --with-aix-soname]) ;; esac lt_cv_with_aix_soname=$with_aix_soname], [AC_CACHE_VAL([lt_cv_with_aix_soname], [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) with_aix_soname=$lt_cv_with_aix_soname]) AC_MSG_RESULT([$with_aix_soname]) if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac _LT_DECL([], [shared_archive_member_spec], [0], [Shared archive member basename, for filename based shared library versioning on AIX])dnl ])# _LT_WITH_AIX_SONAME LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) recode-3.7.15/m4/sys_stat_h.m40000644000175000017500000001223214371444255011504 # sys_stat_h.m4 serial 42 -*- Autoconf -*- dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Eric Blake. dnl Provide a GNU-like . AC_DEFUN_ONCE([gl_SYS_STAT_H], [ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) dnl Check for broken stat macros. AC_REQUIRE([AC_HEADER_STAT]) gl_CHECK_NEXT_HEADERS([sys/stat.h]) dnl Ensure the type mode_t gets defined. AC_REQUIRE([AC_TYPE_MODE_T]) dnl Whether to enable precise timestamps in 'struct stat'. m4_ifdef([gl_WINDOWS_STAT_TIMESPEC], [ AC_REQUIRE([gl_WINDOWS_STAT_TIMESPEC]) ], [ WINDOWS_STAT_TIMESPEC=0 ]) AC_SUBST([WINDOWS_STAT_TIMESPEC]) dnl Whether to ensure that struct stat.st_size is 64-bit wide. m4_ifdef([gl_LARGEFILE], [ AC_REQUIRE([gl_LARGEFILE]) ], [ WINDOWS_64_BIT_ST_SIZE=0 ]) AC_SUBST([WINDOWS_64_BIT_ST_SIZE]) dnl Define types that are supposed to be defined in or dnl . AC_CHECK_TYPE([nlink_t], [], [AC_DEFINE([nlink_t], [int], [Define to the type of st_nlink in struct stat, or a supertype.])], [#include #include ]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[#include ]], [chmod fchmodat fstat fstatat futimens getumask lchmod lstat mkdirat mkfifo mkfifoat mknod mknodat stat utimensat]) AC_REQUIRE([AC_C_RESTRICT]) ]) # gl_SYS_STAT_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_SYS_STAT_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_SYS_STAT_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_SYS_STAT_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_STAT_H_MODULE_INDICATOR_DEFAULTS], [ gl_UNISTD_H_REQUIRE_DEFAULTS dnl for REPLACE_FCHDIR gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHMOD]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHMODAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSTAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSTATAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FUTIMENS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETUMASK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LCHMOD]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LSTAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDIR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDIRAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKFIFO]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKFIFOAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKNOD]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKNODAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UTIMENSAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OVERRIDES_STRUCT_STAT]) dnl Support Microsoft deprecated alias function names by default. gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CHMOD], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MKDIR], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_UMASK], [1]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_STAT_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) ]) AC_DEFUN([gl_SYS_STAT_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. HAVE_FCHMODAT=1; AC_SUBST([HAVE_FCHMODAT]) HAVE_FSTATAT=1; AC_SUBST([HAVE_FSTATAT]) HAVE_FUTIMENS=1; AC_SUBST([HAVE_FUTIMENS]) HAVE_GETUMASK=1; AC_SUBST([HAVE_GETUMASK]) HAVE_LCHMOD=1; AC_SUBST([HAVE_LCHMOD]) HAVE_LSTAT=1; AC_SUBST([HAVE_LSTAT]) HAVE_MKDIRAT=1; AC_SUBST([HAVE_MKDIRAT]) HAVE_MKFIFO=1; AC_SUBST([HAVE_MKFIFO]) HAVE_MKFIFOAT=1; AC_SUBST([HAVE_MKFIFOAT]) HAVE_MKNOD=1; AC_SUBST([HAVE_MKNOD]) HAVE_MKNODAT=1; AC_SUBST([HAVE_MKNODAT]) HAVE_UTIMENSAT=1; AC_SUBST([HAVE_UTIMENSAT]) REPLACE_CHMOD=0; AC_SUBST([REPLACE_CHMOD]) REPLACE_FCHMODAT=0; AC_SUBST([REPLACE_FCHMODAT]) REPLACE_FSTAT=0; AC_SUBST([REPLACE_FSTAT]) REPLACE_FSTATAT=0; AC_SUBST([REPLACE_FSTATAT]) REPLACE_FUTIMENS=0; AC_SUBST([REPLACE_FUTIMENS]) REPLACE_LSTAT=0; AC_SUBST([REPLACE_LSTAT]) REPLACE_MKDIR=0; AC_SUBST([REPLACE_MKDIR]) REPLACE_MKFIFO=0; AC_SUBST([REPLACE_MKFIFO]) REPLACE_MKFIFOAT=0; AC_SUBST([REPLACE_MKFIFOAT]) REPLACE_MKNOD=0; AC_SUBST([REPLACE_MKNOD]) REPLACE_MKNODAT=0; AC_SUBST([REPLACE_MKNODAT]) REPLACE_STAT=0; AC_SUBST([REPLACE_STAT]) REPLACE_UTIMENSAT=0; AC_SUBST([REPLACE_UTIMENSAT]) ]) recode-3.7.15/m4/calloc.m40000644000175000017500000000601414371444255010562 # calloc.m4 serial 29 # Copyright (C) 2004-2023 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Written by Jim Meyering. # Determine whether calloc (N, S) returns non-NULL when N*S is zero, # and returns NULL when N*S overflows. # If so, define HAVE_CALLOC. Otherwise, define calloc to rpl_calloc # and arrange to use a calloc wrapper function that does work in that case. # _AC_FUNC_CALLOC_IF([IF-WORKS], [IF-NOT]) # ------------------------------------- # If calloc is compatible with GNU calloc, run IF-WORKS, otherwise, IF-NOT. AC_DEFUN([_AC_FUNC_CALLOC_IF], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether calloc (0, n) and calloc (n, 0) return nonnull], [ac_cv_func_calloc_0_nonnull], [if test $cross_compiling != yes; then ac_cv_func_calloc_0_nonnull=yes AC_RUN_IFELSE( [AC_LANG_PROGRAM( [AC_INCLUDES_DEFAULT], [[int result = 0; char * volatile p = calloc (0, 0); if (!p) result |= 1; free (p); return result; ]])], [], [ac_cv_func_calloc_0_nonnull=no]) else case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; # Guess yes on musl systems. *-musl*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; # Guess yes on native Windows. mingw*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) ac_cv_func_calloc_0_nonnull="$gl_cross_guess_normal" ;; esac fi ]) AS_CASE([$ac_cv_func_calloc_0_nonnull], [*yes], [$1], [$2]) ]) # gl_FUNC_CALLOC_GNU # ------------------ # Replace calloc if it is not compatible with GNU libc. AC_DEFUN([gl_FUNC_CALLOC_GNU], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_CALLOC_POSIX]) REPLACE_CALLOC_FOR_CALLOC_GNU="$REPLACE_CALLOC_FOR_CALLOC_POSIX" if test $REPLACE_CALLOC_FOR_CALLOC_GNU = 0; then _AC_FUNC_CALLOC_IF([], [REPLACE_CALLOC_FOR_CALLOC_GNU=1]) fi ])# gl_FUNC_CALLOC_GNU # gl_FUNC_CALLOC_POSIX # -------------------- # Test whether 'calloc' is POSIX compliant (sets errno to ENOMEM when it # fails, and doesn't mess up with ptrdiff_t or size_t overflow), # and replace calloc if it is not. AC_DEFUN([gl_FUNC_CALLOC_POSIX], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_MALLOC_POSIX]) if test $REPLACE_MALLOC_FOR_MALLOC_POSIX = 1; then REPLACE_CALLOC_FOR_CALLOC_POSIX=1 fi dnl Although in theory we should also test for size_t overflow, dnl in practice testing for ptrdiff_t overflow suffices dnl since PTRDIFF_MAX <= SIZE_MAX on all known Gnulib porting targets. dnl A separate size_t test would slow down 'configure'. ]) recode-3.7.15/m4/strerror.m40000644000175000017500000000720314371444255011210 # strerror.m4 serial 23 dnl Copyright (C) 2002, 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_STRERROR], [ AC_REQUIRE([gl_STRING_H_DEFAULTS]) AC_REQUIRE([gl_HEADER_ERRNO_H]) AC_REQUIRE([gl_FUNC_STRERROR_0]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [ AC_REQUIRE([gl_FUNC_STRERROR_R_WORKS]) ]) if test "$GL_GENERATE_ERRNO_H:$REPLACE_STRERROR_0" = false:0; then AC_CACHE_CHECK([for working strerror function], [gl_cv_func_working_strerror], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[if (!*strerror (-2)) return 1;]])], [gl_cv_func_working_strerror=yes], [gl_cv_func_working_strerror=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_working_strerror="guessing yes" ;; # Guess yes on musl systems. *-musl*) gl_cv_func_working_strerror="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_working_strerror="$gl_cross_guess_normal" ;; esac ]) ]) case "$gl_cv_func_working_strerror" in *yes) ;; *) dnl The system's strerror() fails to return a string for out-of-range dnl integers. Replace it. REPLACE_STRERROR=1 ;; esac m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [ dnl If the system's strerror_r or __xpg_strerror_r clobbers strerror's dnl buffer, we must replace strerror. case "$gl_cv_func_strerror_r_works" in *no) REPLACE_STRERROR=1 ;; esac ]) else dnl The system's strerror() cannot know about the new errno values we add dnl to , or any fix for strerror(0). Replace it. REPLACE_STRERROR=1 fi ]) dnl Detect if strerror(0) passes (that is, does not set errno, and does not dnl return a string that matches strerror(-1)). AC_DEFUN([gl_FUNC_STRERROR_0], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles REPLACE_STRERROR_0=0 AC_CACHE_CHECK([whether strerror(0) succeeds], [gl_cv_func_strerror_0_works], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include ]], [[int result = 0; char *str; errno = 0; str = strerror (0); if (!*str) result |= 1; if (errno) result |= 2; if (strstr (str, "nknown") || strstr (str, "ndefined")) result |= 4; return result;]])], [gl_cv_func_strerror_0_works=yes], [gl_cv_func_strerror_0_works=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_strerror_0_works="guessing yes" ;; # Guess yes on musl systems. *-musl*) gl_cv_func_strerror_0_works="guessing yes" ;; # Guess yes on native Windows. mingw*) gl_cv_func_strerror_0_works="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_strerror_0_works="$gl_cross_guess_normal" ;; esac ]) ]) case "$gl_cv_func_strerror_0_works" in *yes) ;; *) REPLACE_STRERROR_0=1 AC_DEFINE([REPLACE_STRERROR_0], [1], [Define to 1 if strerror(0) does not return a message implying success.]) ;; esac ]) recode-3.7.15/m4/printf.m40000644000175000017500000021352714371444255010640 # printf.m4 serial 73 dnl Copyright (C) 2003, 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Test whether the *printf family of functions supports the 'j', 'z', 't', dnl 'L' size specifiers. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_sizes_c99. AC_DEFUN([gl_PRINTF_SIZES_C99], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gl_AC_HEADER_STDINT_H]) AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports size specifiers as in C99], [gl_cv_func_printf_sizes_c99], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include #include #if HAVE_STDINT_H_WITH_UINTMAX # include #endif #if HAVE_INTTYPES_H_WITH_UINTMAX # include #endif static char buf[100]; int main () { int result = 0; #if HAVE_STDINT_H_WITH_UINTMAX || HAVE_INTTYPES_H_WITH_UINTMAX buf[0] = '\0'; if (sprintf (buf, "%ju %d", (uintmax_t) 12345671, 33, 44, 55) < 0 || strcmp (buf, "12345671 33") != 0) result |= 1; #else result |= 1; #endif buf[0] = '\0'; if (sprintf (buf, "%zu %d", (size_t) 12345672, 33, 44, 55) < 0 || strcmp (buf, "12345672 33") != 0) result |= 2; buf[0] = '\0'; if (sprintf (buf, "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55) < 0 || strcmp (buf, "12345673 33") != 0) result |= 4; buf[0] = '\0'; if (sprintf (buf, "%Lg %d", (long double) 1.5, 33, 44, 55) < 0 || strcmp (buf, "1.5 33") != 0) result |= 8; return result; }]])], [gl_cv_func_printf_sizes_c99=yes], [gl_cv_func_printf_sizes_c99=no], [ case "$host_os" in changequote(,)dnl # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4].*) gl_cv_func_printf_sizes_c99="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";; midnightbsd*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_printf_sizes_c99="guessing no";; darwin*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on OpenBSD >= 3.9. openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*) gl_cv_func_printf_sizes_c99="guessing no";; openbsd*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on Solaris >= 2.10. solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";; solaris*) gl_cv_func_printf_sizes_c99="guessing no";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_printf_sizes_c99="guessing no";; netbsd*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on Android. linux*-android*) gl_cv_func_printf_sizes_c99="guessing yes";; changequote([,])dnl # Guess yes on MSVC, no on mingw. mingw*) AC_EGREP_CPP([Known], [ #ifdef _MSC_VER Known #endif ], [gl_cv_func_printf_sizes_c99="guessing yes"], [gl_cv_func_printf_sizes_c99="guessing no"]) ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_sizes_c99="$gl_cross_guess_normal";; esac ]) ]) ]) dnl Test whether the *printf family of functions supports 'long double' dnl arguments together with the 'L' size specifier. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_long_double. AC_DEFUN([gl_PRINTF_LONG_DOUBLE], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports 'long double' arguments], [gl_cv_func_printf_long_double], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static char buf[10000]; int main () { int result = 0; buf[0] = '\0'; if (sprintf (buf, "%Lf %d", 1.75L, 33, 44, 55) < 0 || strcmp (buf, "1.750000 33") != 0) result |= 1; buf[0] = '\0'; if (sprintf (buf, "%Le %d", 1.75L, 33, 44, 55) < 0 || strcmp (buf, "1.750000e+00 33") != 0) result |= 2; buf[0] = '\0'; if (sprintf (buf, "%Lg %d", 1.75L, 33, 44, 55) < 0 || strcmp (buf, "1.75 33") != 0) result |= 4; return result; }]])], [gl_cv_func_printf_long_double=yes], [gl_cv_func_printf_long_double=no], [case "$host_os" in # Guess no on BeOS. beos*) gl_cv_func_printf_long_double="guessing no";; # Guess yes on Android. linux*-android*) gl_cv_func_printf_long_double="guessing yes";; # Guess yes on MSVC, no on mingw. mingw*) AC_EGREP_CPP([Known], [ #ifdef _MSC_VER Known #endif ], [gl_cv_func_printf_long_double="guessing yes"], [gl_cv_func_printf_long_double="guessing no"]) ;; *) gl_cv_func_printf_long_double="guessing yes";; esac ]) ]) ]) dnl Test whether the *printf family of functions supports infinite and NaN dnl 'double' arguments and negative zero arguments in the %f, %e, %g dnl directives. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_infinite. AC_DEFUN([gl_PRINTF_INFINITE], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports infinite 'double' arguments], [gl_cv_func_printf_infinite], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static int strisnan (const char *string, size_t start_index, size_t end_index) { if (start_index < end_index) { if (string[start_index] == '-') start_index++; if (start_index + 3 <= end_index && memcmp (string + start_index, "nan", 3) == 0) { start_index += 3; if (start_index == end_index || (string[start_index] == '(' && string[end_index - 1] == ')')) return 1; } } return 0; } static int have_minus_zero () { static double plus_zero = 0.0; double minus_zero = - plus_zero; return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0; } static char buf[10000]; static double zero = 0.0; int main () { int result = 0; if (sprintf (buf, "%f", 1.0 / zero) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 1; if (sprintf (buf, "%f", -1.0 / zero) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 1; if (sprintf (buf, "%f", zero / zero) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%e", 1.0 / zero) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 4; if (sprintf (buf, "%e", -1.0 / zero) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 4; if (sprintf (buf, "%e", zero / zero) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 8; if (sprintf (buf, "%g", 1.0 / zero) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 16; if (sprintf (buf, "%g", -1.0 / zero) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 16; if (sprintf (buf, "%g", zero / zero) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 32; /* This test fails on HP-UX 10.20. */ if (have_minus_zero ()) if (sprintf (buf, "%g", - zero) < 0 || strcmp (buf, "-0") != 0) result |= 64; return result; }]])], [gl_cv_func_printf_infinite=yes], [gl_cv_func_printf_infinite=no], [ case "$host_os" in changequote(,)dnl # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on FreeBSD >= 6. freebsd[1-5].*) gl_cv_func_printf_infinite="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";; midnightbsd*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_printf_infinite="guessing no";; darwin*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on HP-UX >= 11. hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite="guessing no";; hpux*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_printf_infinite="guessing no";; netbsd*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on OpenBSD >= 6.0. openbsd[1-5].*) gl_cv_func_printf_infinite="guessing no";; openbsd*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_printf_infinite="guessing yes";; # Guess no on Android. linux*-android*) gl_cv_func_printf_infinite="guessing no";; changequote([,])dnl # Guess yes on MSVC, no on mingw. mingw*) AC_EGREP_CPP([Known], [ #ifdef _MSC_VER Known #endif ], [gl_cv_func_printf_infinite="guessing yes"], [gl_cv_func_printf_infinite="guessing no"]) ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_infinite="$gl_cross_guess_normal";; esac ]) ]) ]) dnl Test whether the *printf family of functions supports infinite and NaN dnl 'long double' arguments in the %f, %e, %g directives. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_infinite_long_double. AC_DEFUN([gl_PRINTF_INFINITE_LONG_DOUBLE], [ AC_REQUIRE([gl_PRINTF_LONG_DOUBLE]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gl_BIGENDIAN]) AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl The user can set or unset the variable gl_printf_safe to indicate dnl that he wishes a safe handling of non-IEEE-754 'long double' values. if test -n "$gl_printf_safe"; then AC_DEFINE([CHECK_PRINTF_SAFE], [1], [Define if you wish *printf() functions that have a safe handling of non-IEEE-754 'long double' values.]) fi case "$gl_cv_func_printf_long_double" in *yes) AC_CACHE_CHECK([whether printf supports infinite 'long double' arguments], [gl_cv_func_printf_infinite_long_double], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ ]GL_NOCRASH[ #include #include #include static int strisnan (const char *string, size_t start_index, size_t end_index) { if (start_index < end_index) { if (string[start_index] == '-') start_index++; if (start_index + 3 <= end_index && memcmp (string + start_index, "nan", 3) == 0) { start_index += 3; if (start_index == end_index || (string[start_index] == '(' && string[end_index - 1] == ')')) return 1; } } return 0; } static char buf[10000]; static long double zeroL = 0.0L; int main () { int result = 0; nocrash_init(); if (sprintf (buf, "%Lf", 1.0L / zeroL) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 1; if (sprintf (buf, "%Lf", -1.0L / zeroL) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 1; if (sprintf (buf, "%Lf", zeroL / zeroL) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 1; if (sprintf (buf, "%Le", 1.0L / zeroL) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 1; if (sprintf (buf, "%Le", -1.0L / zeroL) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 1; if (sprintf (buf, "%Le", zeroL / zeroL) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 1; if (sprintf (buf, "%Lg", 1.0L / zeroL) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) result |= 1; if (sprintf (buf, "%Lg", -1.0L / zeroL) < 0 || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0)) result |= 1; if (sprintf (buf, "%Lg", zeroL / zeroL) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 1; #if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE /* Representation of an 80-bit 'long double' as an initializer for a sequence of 'unsigned int' words. */ # ifdef WORDS_BIGENDIAN # define LDBL80_WORDS(exponent,manthi,mantlo) \ { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \ (unsigned int) (mantlo) << 16 \ } # else # define LDBL80_WORDS(exponent,manthi,mantlo) \ { mantlo, manthi, exponent } # endif { /* Quiet NaN. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%Le", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%Lg", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; } { /* Signalling NaN. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%Le", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; if (sprintf (buf, "%Lg", x.value) < 0 || !strisnan (buf, 0, strlen (buf))) result |= 2; } { /* Pseudo-NaN. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) <= 0) result |= 4; if (sprintf (buf, "%Le", x.value) <= 0) result |= 4; if (sprintf (buf, "%Lg", x.value) <= 0) result |= 4; } { /* Pseudo-Infinity. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) <= 0) result |= 8; if (sprintf (buf, "%Le", x.value) <= 0) result |= 8; if (sprintf (buf, "%Lg", x.value) <= 0) result |= 8; } { /* Pseudo-Zero. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) <= 0) result |= 16; if (sprintf (buf, "%Le", x.value) <= 0) result |= 16; if (sprintf (buf, "%Lg", x.value) <= 0) result |= 16; } { /* Unnormalized number. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) <= 0) result |= 32; if (sprintf (buf, "%Le", x.value) <= 0) result |= 32; if (sprintf (buf, "%Lg", x.value) <= 0) result |= 32; } { /* Pseudo-Denormal. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; if (sprintf (buf, "%Lf", x.value) <= 0) result |= 64; if (sprintf (buf, "%Le", x.value) <= 0) result |= 64; if (sprintf (buf, "%Lg", x.value) <= 0) result |= 64; } #endif return result; }]])], [gl_cv_func_printf_infinite_long_double=yes], [gl_cv_func_printf_infinite_long_double=no], [case "$host_cpu" in # Guess no on ia64, x86_64, i386. ia64 | x86_64 | i*86) gl_cv_func_printf_infinite_long_double="guessing no";; *) case "$host_os" in changequote(,)dnl # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_infinite_long_double="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_printf_infinite_long_double="guessing yes";; # Guess yes on FreeBSD >= 6. freebsd[1-5].*) gl_cv_func_printf_infinite_long_double="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_infinite_long_double="guessing yes";; midnightbsd*) gl_cv_func_printf_infinite_long_double="guessing yes";; # Guess yes on HP-UX >= 11. hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite_long_double="guessing no";; hpux*) gl_cv_func_printf_infinite_long_double="guessing yes";; # Guess yes on OpenBSD >= 6.0. openbsd[1-5].*) gl_cv_func_printf_infinite_long_double="guessing no";; openbsd*) gl_cv_func_printf_infinite_long_double="guessing yes";; # Guess no on Android. linux*-android*) gl_cv_func_printf_infinite_long_double="guessing no";; changequote([,])dnl # Guess yes on MSVC, no on mingw. mingw*) AC_EGREP_CPP([Known], [ #ifdef _MSC_VER Known #endif ], [gl_cv_func_printf_infinite_long_double="guessing yes"], [gl_cv_func_printf_infinite_long_double="guessing no"]) ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_infinite_long_double="$gl_cross_guess_normal";; esac ;; esac ]) ]) ;; *) gl_cv_func_printf_infinite_long_double="irrelevant" ;; esac ]) dnl Test whether the *printf family of functions supports the 'a' and 'A' dnl conversion specifier for hexadecimal output of floating-point numbers. dnl (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_directive_a. AC_DEFUN([gl_PRINTF_DIRECTIVE_A], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports the 'a' and 'A' directives], [gl_cv_func_printf_directive_a], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static char buf[100]; static double zero = 0.0; int main () { int result = 0; if (sprintf (buf, "%a %d", 3.1416015625, 33, 44, 55) < 0 || (strcmp (buf, "0x1.922p+1 33") != 0 && strcmp (buf, "0x3.244p+0 33") != 0 && strcmp (buf, "0x6.488p-1 33") != 0 && strcmp (buf, "0xc.91p-2 33") != 0)) result |= 1; if (sprintf (buf, "%A %d", -3.1416015625, 33, 44, 55) < 0 || (strcmp (buf, "-0X1.922P+1 33") != 0 && strcmp (buf, "-0X3.244P+0 33") != 0 && strcmp (buf, "-0X6.488P-1 33") != 0 && strcmp (buf, "-0XC.91P-2 33") != 0)) result |= 2; /* This catches a FreeBSD 13.0 bug: it doesn't round. */ if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0 || (strcmp (buf, "0x1.83p+0 33") != 0 && strcmp (buf, "0x3.05p-1 33") != 0 && strcmp (buf, "0x6.0ap-2 33") != 0 && strcmp (buf, "0xc.14p-3 33") != 0)) result |= 4; /* This catches a Mac OS X 10.12.4 (Darwin 16.5) bug: it doesn't round. */ if (sprintf (buf, "%.0a %d", 1.51, 33, 44, 55) < 0 || (strcmp (buf, "0x2p+0 33") != 0 && strcmp (buf, "0x3p-1 33") != 0 && strcmp (buf, "0x6p-2 33") != 0 && strcmp (buf, "0xcp-3 33") != 0)) result |= 4; /* This catches a FreeBSD 6.1 bug. See */ if (sprintf (buf, "%010a %d", 1.0 / zero, 33, 44, 55) < 0 || buf[0] == '0') result |= 8; /* This catches a Mac OS X 10.3.9 (Darwin 7.9) bug. */ if (sprintf (buf, "%.1a", 1.999) < 0 || (strcmp (buf, "0x1.0p+1") != 0 && strcmp (buf, "0x2.0p+0") != 0 && strcmp (buf, "0x4.0p-1") != 0 && strcmp (buf, "0x8.0p-2") != 0)) result |= 16; /* This catches the same Mac OS X 10.3.9 (Darwin 7.9) bug and also a glibc 2.4 bug . */ if (sprintf (buf, "%.1La", 1.999L) < 0 || (strcmp (buf, "0x1.0p+1") != 0 && strcmp (buf, "0x2.0p+0") != 0 && strcmp (buf, "0x4.0p-1") != 0 && strcmp (buf, "0x8.0p-2") != 0)) result |= 32; return result; }]])], [gl_cv_func_printf_directive_a=yes], [gl_cv_func_printf_directive_a=no], [ case "$host_os" in # Guess yes on glibc >= 2.5 systems. *-gnu* | gnu*) AC_EGREP_CPP([BZ2908], [ #include #ifdef __GNU_LIBRARY__ #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)) && !defined __UCLIBC__ BZ2908 #endif #endif ], [gl_cv_func_printf_directive_a="guessing yes"], [gl_cv_func_printf_directive_a="guessing no"]) ;; # Guess yes on musl systems. *-musl*) gl_cv_func_printf_directive_a="guessing yes";; # Guess no on Android. linux*-android*) gl_cv_func_printf_directive_a="guessing no";; # Guess no on native Windows. mingw*) gl_cv_func_printf_directive_a="guessing no";; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_directive_a="$gl_cross_guess_normal";; esac ]) ]) ]) dnl Test whether the *printf family of functions supports the %F format dnl directive. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_directive_f. AC_DEFUN([gl_PRINTF_DIRECTIVE_F], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports the 'F' directive], [gl_cv_func_printf_directive_f], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static char buf[100]; static double zero = 0.0; int main () { int result = 0; if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0 || strcmp (buf, "1234567.000000 33") != 0) result |= 1; if (sprintf (buf, "%F", 1.0 / zero) < 0 || (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0)) result |= 2; /* This catches a Cygwin 1.5.x bug. */ if (sprintf (buf, "%.F", 1234.0) < 0 || strcmp (buf, "1234") != 0) result |= 4; return result; }]])], [gl_cv_func_printf_directive_f=yes], [gl_cv_func_printf_directive_f=no], [ case "$host_os" in changequote(,)dnl # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on FreeBSD >= 6. freebsd[1-5].*) gl_cv_func_printf_directive_f="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";; midnightbsd*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_printf_directive_f="guessing no";; darwin*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on OpenBSD >= 6.0. openbsd[1-5].*) gl_cv_func_printf_directive_f="guessing no";; openbsd*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on Solaris >= 2.10. solaris2.[1-9][0-9]*) gl_cv_func_printf_directive_f="guessing yes";; solaris*) gl_cv_func_printf_directive_f="guessing no";; # Guess no on Android. linux*-android*) gl_cv_func_printf_directive_f="guessing no";; changequote([,])dnl # Guess yes on MSVC, no on mingw. mingw*) AC_EGREP_CPP([Known], [ #ifdef _MSC_VER Known #endif ], [gl_cv_func_printf_directive_f="guessing yes"], [gl_cv_func_printf_directive_f="guessing no"]) ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_directive_f="$gl_cross_guess_normal";; esac ]) ]) ]) dnl Test whether the *printf family of functions supports the %n format dnl directive. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_directive_n. AC_DEFUN([gl_PRINTF_DIRECTIVE_N], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports the 'n' directive], [gl_cv_func_printf_directive_n], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include #ifdef _MSC_VER #include /* See page about "Parameter Validation" on msdn.microsoft.com. */ static void cdecl invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { exit (1); } #endif static char fmtstring[10]; static char buf[100]; int main () { int count = -1; #ifdef _MSC_VER _set_invalid_parameter_handler (invalid_parameter_handler); #endif /* Copy the format string. Some systems (glibc with _FORTIFY_SOURCE=2) support %n in format strings in read-only memory but not in writable memory. */ strcpy (fmtstring, "%d %n"); if (sprintf (buf, fmtstring, 123, &count, 33, 44, 55) < 0 || strcmp (buf, "123 ") != 0 || count != 4) return 1; return 0; }]])], [gl_cv_func_printf_directive_n=yes], [gl_cv_func_printf_directive_n=no], [case "$host_os" in # Guess no on glibc when _FORTIFY_SOURCE >= 2. *-gnu* | gnu*) AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if _FORTIFY_SOURCE >= 2 error fail #endif ]])], [gl_cv_func_printf_directive_n="guessing yes"], [gl_cv_func_printf_directive_n="guessing no"]) ;; # Guess no on Android. linux*-android*) gl_cv_func_printf_directive_n="guessing no";; # Guess no on native Windows. mingw*) gl_cv_func_printf_directive_n="guessing no";; *) gl_cv_func_printf_directive_n="guessing yes";; esac ]) ]) ]) dnl Test whether the *printf family of functions supports the %ls format dnl directive and in particular, when a precision is specified, whether dnl the functions stop converting the wide string argument when the number dnl of bytes that have been produced by this conversion equals or exceeds dnl the precision. dnl Result is gl_cv_func_printf_directive_ls. AC_DEFUN([gl_PRINTF_DIRECTIVE_LS], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports the 'ls' directive], [gl_cv_func_printf_directive_ls], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { int result = 0; char buf[100]; /* Test whether %ls works at all. This test fails on OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Haiku, but not on Cygwin 1.5. */ { static const wchar_t wstring[] = { 'a', 'b', 'c', 0 }; buf[0] = '\0'; if (sprintf (buf, "%ls", wstring) < 0 || strcmp (buf, "abc") != 0) result |= 1; } /* This test fails on IRIX 6.5, Solaris 2.6, Cygwin 1.5, Haiku (with an assertion failure inside libc), but not on OpenBSD 4.0. */ { static const wchar_t wstring[] = { 'a', 0 }; buf[0] = '\0'; if (sprintf (buf, "%ls", wstring) < 0 || strcmp (buf, "a") != 0) result |= 2; } /* Test whether precisions in %ls are supported as specified in ISO C 99 section 7.19.6.1: "If a precision is specified, no more than that many bytes are written (including shift sequences, if any), and the array shall contain a null wide character if, to equal the multibyte character sequence length given by the precision, the function would need to access a wide character one past the end of the array." This test fails on Solaris 10. */ { static const wchar_t wstring[] = { 'a', 'b', (wchar_t) 0xfdfdfdfd, 0 }; buf[0] = '\0'; if (sprintf (buf, "%.2ls", wstring) < 0 || strcmp (buf, "ab") != 0) result |= 8; } return result; }]])], [gl_cv_func_printf_directive_ls=yes], [gl_cv_func_printf_directive_ls=no], [ changequote(,)dnl case "$host_os" in # Guess yes on OpenBSD >= 6.0. openbsd[1-5].*) gl_cv_func_printf_directive_ls="guessing no";; openbsd*) gl_cv_func_printf_directive_ls="guessing yes";; irix*) gl_cv_func_printf_directive_ls="guessing no";; solaris*) gl_cv_func_printf_directive_ls="guessing no";; cygwin*) gl_cv_func_printf_directive_ls="guessing no";; beos* | haiku*) gl_cv_func_printf_directive_ls="guessing no";; # Guess no on Android. linux*-android*) gl_cv_func_printf_directive_ls="guessing no";; # Guess yes on native Windows. mingw*) gl_cv_func_printf_directive_ls="guessing yes";; *) gl_cv_func_printf_directive_ls="guessing yes";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports POSIX/XSI format dnl strings with positions. (POSIX:2001) dnl Result is gl_cv_func_printf_positions. AC_DEFUN([gl_PRINTF_POSITIONS], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports POSIX/XSI format strings with positions], [gl_cv_func_printf_positions], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include /* The string "%2$d %1$d", with dollar characters protected from the shell's dollar expansion (possibly an autoconf bug). */ static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; static char buf[100]; int main () { sprintf (buf, format, 33, 55); return (strcmp (buf, "55 33") != 0); }]])], [gl_cv_func_printf_positions=yes], [gl_cv_func_printf_positions=no], [ changequote(,)dnl case "$host_os" in netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*) gl_cv_func_printf_positions="guessing no";; beos*) gl_cv_func_printf_positions="guessing no";; # Guess yes on Android. linux*-android*) gl_cv_func_printf_positions="guessing yes";; # Guess no on native Windows. mingw* | pw*) gl_cv_func_printf_positions="guessing no";; *) gl_cv_func_printf_positions="guessing yes";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports POSIX/XSI format dnl strings with the ' flag for grouping of decimal digits. (POSIX:2001) dnl Result is gl_cv_func_printf_flag_grouping. AC_DEFUN([gl_PRINTF_FLAG_GROUPING], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports the grouping flag], [gl_cv_func_printf_flag_grouping], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static char buf[100]; int main () { if (sprintf (buf, "%'d %d", 1234567, 99) < 0 || buf[strlen (buf) - 1] != '9') return 1; return 0; }]])], [gl_cv_func_printf_flag_grouping=yes], [gl_cv_func_printf_flag_grouping=no], [ changequote(,)dnl case "$host_os" in cygwin*) gl_cv_func_printf_flag_grouping="guessing no";; netbsd*) gl_cv_func_printf_flag_grouping="guessing no";; # Guess no on Android. linux*-android*) gl_cv_func_printf_flag_grouping="guessing no";; # Guess no on native Windows. mingw* | pw*) gl_cv_func_printf_flag_grouping="guessing no";; *) gl_cv_func_printf_flag_grouping="guessing yes";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports the - flag correctly. dnl (ISO C99.) See dnl dnl Result is gl_cv_func_printf_flag_leftadjust. AC_DEFUN([gl_PRINTF_FLAG_LEFTADJUST], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports the left-adjust flag correctly], [gl_cv_func_printf_flag_leftadjust], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static char buf[100]; int main () { /* Check that a '-' flag is not annihilated by a negative width. */ if (sprintf (buf, "a%-*sc", -3, "b") < 0 || strcmp (buf, "ab c") != 0) return 1; return 0; }]])], [gl_cv_func_printf_flag_leftadjust=yes], [gl_cv_func_printf_flag_leftadjust=no], [ changequote(,)dnl case "$host_os" in # Guess yes on HP-UX 11. hpux11*) gl_cv_func_printf_flag_leftadjust="guessing yes";; # Guess no on HP-UX 10 and older. hpux*) gl_cv_func_printf_flag_leftadjust="guessing no";; # Guess yes on Android. linux*-android*) gl_cv_func_printf_flag_leftadjust="guessing yes";; # Guess yes on native Windows. mingw*) gl_cv_func_printf_flag_leftadjust="guessing yes";; # Guess yes otherwise. *) gl_cv_func_printf_flag_leftadjust="guessing yes";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports padding of non-finite dnl values with the 0 flag correctly. (ISO C99 + TC1 + TC2.) See dnl dnl Result is gl_cv_func_printf_flag_zero. AC_DEFUN([gl_PRINTF_FLAG_ZERO], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports the zero flag correctly], [gl_cv_func_printf_flag_zero], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static char buf[100]; static double zero = 0.0; int main () { if (sprintf (buf, "%010f", 1.0 / zero, 33, 44, 55) < 0 || (strcmp (buf, " inf") != 0 && strcmp (buf, " infinity") != 0)) return 1; return 0; }]])], [gl_cv_func_printf_flag_zero=yes], [gl_cv_func_printf_flag_zero=no], [ changequote(,)dnl case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_flag_zero="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_printf_flag_zero="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_printf_flag_zero="guessing yes";; # Guess no on Android. linux*-android*) gl_cv_func_printf_flag_zero="guessing no";; # Guess no on native Windows. mingw*) gl_cv_func_printf_flag_zero="guessing no";; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_flag_zero="$gl_cross_guess_normal";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions supports large precisions. dnl On mingw, precisions larger than 512 are treated like 512, in integer, dnl floating-point or pointer output. On Solaris 10/x86, precisions larger dnl than 510 in floating-point output crash the program. On Solaris 10/SPARC, dnl precisions larger than 510 in floating-point output yield wrong results. dnl On AIX 7.1, precisions larger than 998 in floating-point output yield dnl wrong results. On BeOS, precisions larger than 1044 crash the program. dnl Result is gl_cv_func_printf_precision. AC_DEFUN([gl_PRINTF_PRECISION], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf supports large precisions], [gl_cv_func_printf_precision], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static char buf[5000]; int main () { int result = 0; #ifdef __BEOS__ /* On BeOS, this would crash and show a dialog box. Avoid the crash. */ return 1; #endif if (sprintf (buf, "%.4000d %d", 1, 33, 44) < 4000 + 3) result |= 1; if (sprintf (buf, "%.4000f %d", 1.0, 33, 44) < 4000 + 5) result |= 2; if (sprintf (buf, "%.511f %d", 1.0, 33, 44) < 511 + 5 || buf[0] != '1') result |= 4; if (sprintf (buf, "%.999f %d", 1.0, 33, 44) < 999 + 5 || buf[0] != '1') result |= 4; return result; }]])], [gl_cv_func_printf_precision=yes], [gl_cv_func_printf_precision=no], [ changequote(,)dnl case "$host_os" in # Guess no only on Solaris, native Windows, and BeOS systems. solaris*) gl_cv_func_printf_precision="guessing no" ;; mingw* | pw*) gl_cv_func_printf_precision="guessing no" ;; beos*) gl_cv_func_printf_precision="guessing no" ;; # Guess yes on Android. linux*-android*) gl_cv_func_printf_precision="guessing yes" ;; *) gl_cv_func_printf_precision="guessing yes" ;; esac changequote([,])dnl ]) ]) ]) dnl Test whether the *printf family of functions recovers gracefully in case dnl of an out-of-memory condition, or whether it crashes the entire program. dnl Result is gl_cv_func_printf_enomem. AC_DEFUN([gl_PRINTF_ENOMEM], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gl_MULTIARCH]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether printf survives out-of-memory conditions], [gl_cv_func_printf_enomem], [ gl_cv_func_printf_enomem="guessing no" if test "$cross_compiling" = no; then if test $APPLE_UNIVERSAL_BUILD = 0; then AC_LANG_CONFTEST([AC_LANG_SOURCE([[ ]GL_NOCRASH[ #include #include #include #include #include int main() { struct rlimit limit; int ret; nocrash_init (); /* Some printf implementations allocate temporary space with malloc. */ /* On BSD systems, malloc() is limited by RLIMIT_DATA. */ #ifdef RLIMIT_DATA if (getrlimit (RLIMIT_DATA, &limit) < 0) return 77; if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000) limit.rlim_max = 5000000; limit.rlim_cur = limit.rlim_max; if (setrlimit (RLIMIT_DATA, &limit) < 0) return 77; #endif /* On Linux systems, malloc() is limited by RLIMIT_AS. */ #ifdef RLIMIT_AS if (getrlimit (RLIMIT_AS, &limit) < 0) return 77; if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000) limit.rlim_max = 5000000; limit.rlim_cur = limit.rlim_max; if (setrlimit (RLIMIT_AS, &limit) < 0) return 77; #endif /* Some printf implementations allocate temporary space on the stack. */ #ifdef RLIMIT_STACK if (getrlimit (RLIMIT_STACK, &limit) < 0) return 77; if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000) limit.rlim_max = 5000000; limit.rlim_cur = limit.rlim_max; if (setrlimit (RLIMIT_STACK, &limit) < 0) return 77; #endif ret = printf ("%.5000000f", 1.0); return !(ret == 5000002 || (ret < 0 && errno == ENOMEM)); } ]])]) if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then (./conftest 2>&AS_MESSAGE_LOG_FD result=$? _AS_ECHO_LOG([\$? = $result]) if test $result != 0 && test $result != 77; then result=1; fi exit $result ) >/dev/null 2>/dev/null case $? in 0) gl_cv_func_printf_enomem="yes" ;; 77) gl_cv_func_printf_enomem="guessing no" ;; *) gl_cv_func_printf_enomem="no" ;; esac else gl_cv_func_printf_enomem="guessing no" fi rm -fr conftest* else dnl A universal build on Apple Mac OS X platforms. dnl The result would be 'no' in 32-bit mode and 'yes' in 64-bit mode. dnl But we need a configuration result that is valid in both modes. gl_cv_func_printf_enomem="guessing no" fi fi if test "$gl_cv_func_printf_enomem" = "guessing no"; then changequote(,)dnl case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on Solaris. solaris*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on AIX. aix*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on HP-UX/hppa. hpux*) case "$host_cpu" in hppa*) gl_cv_func_printf_enomem="guessing yes";; *) gl_cv_func_printf_enomem="guessing no";; esac ;; # Guess yes on IRIX. irix*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on OSF/1. osf*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_printf_enomem="guessing yes";; # Guess yes on Haiku. haiku*) gl_cv_func_printf_enomem="guessing yes";; # Guess no on Android. linux*-android*) gl_cv_func_printf_enomem="guessing no";; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_enomem="$gl_cross_guess_normal";; esac changequote([,])dnl fi ]) ]) dnl Test whether the snprintf function exists. (ISO C99, POSIX:2001) dnl Result is ac_cv_func_snprintf. AC_DEFUN([gl_SNPRINTF_PRESENCE], [ AC_CHECK_FUNCS_ONCE([snprintf]) ]) dnl Test whether the string produced by the snprintf function is always NUL dnl terminated. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_snprintf_truncation_c99. AC_DEFUN_ONCE([gl_SNPRINTF_TRUNCATION_C99], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([gl_SNPRINTF_PRESENCE]) AC_CACHE_CHECK([whether snprintf truncates the result as in C99], [gl_cv_func_snprintf_truncation_c99], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #if HAVE_SNPRINTF # define my_snprintf snprintf #else # include static int my_snprintf (char *buf, int size, const char *format, ...) { va_list args; int ret; va_start (args, format); ret = vsnprintf (buf, size, format, args); va_end (args); return ret; } #endif static char buf[100]; int main () { strcpy (buf, "ABCDEF"); my_snprintf (buf, 3, "%d %d", 4567, 89); if (memcmp (buf, "45\0DEF", 6) != 0) return 1; return 0; }]])], [gl_cv_func_snprintf_truncation_c99=yes], [gl_cv_func_snprintf_truncation_c99=no], [ changequote(,)dnl case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4].*) gl_cv_func_snprintf_truncation_c99="guessing no";; freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; midnightbsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_snprintf_truncation_c99="guessing no";; darwin*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on OpenBSD >= 3.9. openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*) gl_cv_func_snprintf_truncation_c99="guessing no";; openbsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on Solaris >= 2.6. solaris2.[0-5] | solaris2.[0-5].*) gl_cv_func_snprintf_truncation_c99="guessing no";; solaris*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on AIX >= 4. aix[1-3]*) gl_cv_func_snprintf_truncation_c99="guessing no";; aix*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on HP-UX >= 11. hpux[7-9]* | hpux10*) gl_cv_func_snprintf_truncation_c99="guessing no";; hpux*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on IRIX >= 6.5. irix6.5) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on OSF/1 >= 5. osf[3-4]*) gl_cv_func_snprintf_truncation_c99="guessing no";; osf*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_snprintf_truncation_c99="guessing no";; netbsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on Android. linux*-android*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess no on native Windows. mingw*) gl_cv_func_snprintf_truncation_c99="guessing no";; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_snprintf_truncation_c99="$gl_cross_guess_normal";; esac changequote([,])dnl ]) ]) ]) dnl Test whether the return value of the snprintf function is the number dnl of bytes (excluding the terminating NUL) that would have been produced dnl if the buffer had been large enough. (ISO C99, POSIX:2001) dnl For example, this test program fails on IRIX 6.5: dnl --------------------------------------------------------------------- dnl #include dnl int main() dnl { dnl static char buf[8]; dnl int retval = snprintf (buf, 3, "%d", 12345); dnl return retval >= 0 && retval < 3; dnl } dnl --------------------------------------------------------------------- dnl Result is gl_cv_func_snprintf_retval_c99. AC_DEFUN_ONCE([gl_SNPRINTF_RETVAL_C99], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([gl_SNPRINTF_PRESENCE]) AC_CACHE_CHECK([whether snprintf returns a byte count as in C99], [gl_cv_func_snprintf_retval_c99], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #if HAVE_SNPRINTF # define my_snprintf snprintf #else # include static int my_snprintf (char *buf, int size, const char *format, ...) { va_list args; int ret; va_start (args, format); ret = vsnprintf (buf, size, format, args); va_end (args); return ret; } #endif static char buf[100]; int main () { strcpy (buf, "ABCDEF"); if (my_snprintf (buf, 3, "%d %d", 4567, 89) != 7) return 1; if (my_snprintf (buf, 0, "%d %d", 4567, 89) != 7) return 2; if (my_snprintf (NULL, 0, "%d %d", 4567, 89) != 7) return 3; return 0; }]])], [gl_cv_func_snprintf_retval_c99=yes], [gl_cv_func_snprintf_retval_c99=no], [case "$host_os" in changequote(,)dnl # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4].*) gl_cv_func_snprintf_retval_c99="guessing no";; freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; midnightbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_snprintf_retval_c99="guessing no";; darwin*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on OpenBSD >= 3.9. openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*) gl_cv_func_snprintf_retval_c99="guessing no";; openbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on Solaris >= 2.10. solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";; solaris*) gl_cv_func_printf_sizes_c99="guessing no";; # Guess yes on AIX >= 4. aix[1-3]*) gl_cv_func_snprintf_retval_c99="guessing no";; aix*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_snprintf_retval_c99="guessing no";; netbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on Android. linux*-android*) gl_cv_func_snprintf_retval_c99="guessing yes";; changequote([,])dnl # Guess yes on MSVC, no on mingw. mingw*) AC_EGREP_CPP([Known], [ #ifdef _MSC_VER Known #endif ], [gl_cv_func_snprintf_retval_c99="guessing yes"], [gl_cv_func_snprintf_retval_c99="guessing no"]) ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_snprintf_retval_c99="$gl_cross_guess_normal";; esac ]) ]) ]) dnl Test whether the snprintf function supports the %n format directive dnl also in truncated portions of the format string. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_snprintf_directive_n. AC_DEFUN([gl_SNPRINTF_DIRECTIVE_N], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([gl_SNPRINTF_PRESENCE]) AC_CACHE_CHECK([whether snprintf fully supports the 'n' directive], [gl_cv_func_snprintf_directive_n], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #if HAVE_SNPRINTF # define my_snprintf snprintf #else # include static int my_snprintf (char *buf, int size, const char *format, ...) { va_list args; int ret; va_start (args, format); ret = vsnprintf (buf, size, format, args); va_end (args); return ret; } #endif static char fmtstring[10]; static char buf[100]; int main () { int count = -1; /* Copy the format string. Some systems (glibc with _FORTIFY_SOURCE=2) support %n in format strings in read-only memory but not in writable memory. */ strcpy (fmtstring, "%d %n"); my_snprintf (buf, 4, fmtstring, 12345, &count, 33, 44, 55); if (count != 6) return 1; return 0; }]])], [gl_cv_func_snprintf_directive_n=yes], [gl_cv_func_snprintf_directive_n=no], [ case "$host_os" in # Guess no on glibc when _FORTIFY_SOURCE >= 2. *-gnu* | gnu*) AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if _FORTIFY_SOURCE >= 2 error fail #endif ]])], [gl_cv_func_snprintf_directive_n="guessing yes"], [gl_cv_func_snprintf_directive_n="guessing no"]) ;; changequote(,)dnl # Guess yes on musl systems. *-musl*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4].*) gl_cv_func_snprintf_directive_n="guessing no";; freebsd* | kfreebsd*) gl_cv_func_snprintf_directive_n="guessing yes";; midnightbsd*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_snprintf_directive_n="guessing no";; darwin*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on Solaris >= 2.6. solaris2.[0-5] | solaris2.[0-5].*) gl_cv_func_snprintf_directive_n="guessing no";; solaris*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on AIX >= 4. aix[1-3]*) gl_cv_func_snprintf_directive_n="guessing no";; aix*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on IRIX >= 6.5. irix6.5) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on OSF/1 >= 5. osf[3-4]*) gl_cv_func_snprintf_directive_n="guessing no";; osf*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_snprintf_directive_n="guessing no";; netbsd*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess no on Android. linux*-android*) gl_cv_func_snprintf_directive_n="guessing no";; # Guess no on native Windows. mingw*) gl_cv_func_snprintf_directive_n="guessing no";; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_snprintf_directive_n="$gl_cross_guess_normal";; changequote([,])dnl esac ]) ]) ]) dnl Test whether the snprintf function, when passed a size = 1, writes any dnl output without bounds in this case, behaving like sprintf. This is the dnl case on Linux libc5. dnl Result is gl_cv_func_snprintf_size1. AC_DEFUN([gl_SNPRINTF_SIZE1], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([gl_SNPRINTF_PRESENCE]) AC_CACHE_CHECK([whether snprintf respects a size of 1], [gl_cv_func_snprintf_size1], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #if HAVE_SNPRINTF # define my_snprintf snprintf #else # include static int my_snprintf (char *buf, int size, const char *format, ...) { va_list args; int ret; va_start (args, format); ret = vsnprintf (buf, size, format, args); va_end (args); return ret; } #endif int main() { static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' }; my_snprintf (buf, 1, "%d", 12345); return buf[1] != 'E'; }]])], [gl_cv_func_snprintf_size1=yes], [gl_cv_func_snprintf_size1=no], [case "$host_os" in # Guess yes on Android. linux*-android*) gl_cv_func_snprintf_size1="guessing yes" ;; # Guess yes on native Windows. mingw*) gl_cv_func_snprintf_size1="guessing yes" ;; *) gl_cv_func_snprintf_size1="guessing yes" ;; esac ]) ]) ]) dnl Test whether the vsnprintf function, when passed a zero size, produces no dnl output. (ISO C99, POSIX:2001) dnl For example, snprintf nevertheless writes a NUL byte in this case dnl on OSF/1 5.1: dnl --------------------------------------------------------------------- dnl #include dnl int main() dnl { dnl static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' }; dnl snprintf (buf, 0, "%d", 12345); dnl return buf[0] != 'D'; dnl } dnl --------------------------------------------------------------------- dnl And vsnprintf writes any output without bounds in this case, behaving like dnl vsprintf, on HP-UX 11 and OSF/1 5.1: dnl --------------------------------------------------------------------- dnl #include dnl #include dnl static int my_snprintf (char *buf, int size, const char *format, ...) dnl { dnl va_list args; dnl int ret; dnl va_start (args, format); dnl ret = vsnprintf (buf, size, format, args); dnl va_end (args); dnl return ret; dnl } dnl int main() dnl { dnl static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' }; dnl my_snprintf (buf, 0, "%d", 12345); dnl return buf[0] != 'D'; dnl } dnl --------------------------------------------------------------------- dnl Result is gl_cv_func_vsnprintf_zerosize_c99. AC_DEFUN([gl_VSNPRINTF_ZEROSIZE_C99], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether vsnprintf respects a zero size as in C99], [gl_cv_func_vsnprintf_zerosize_c99], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include static int my_snprintf (char *buf, int size, const char *format, ...) { va_list args; int ret; va_start (args, format); ret = vsnprintf (buf, size, format, args); va_end (args); return ret; } int main() { static char buf[8] = { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F' }; my_snprintf (buf, 0, "%d", 12345); return buf[0] != 'D'; }]])], [gl_cv_func_vsnprintf_zerosize_c99=yes], [gl_cv_func_vsnprintf_zerosize_c99=no], [ changequote(,)dnl case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; freebsd* | kfreebsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; midnightbsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on Mac OS X >= 10.3. darwin[1-6].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; darwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on Cygwin. cygwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on Solaris >= 2.6. solaris2.[0-5] | solaris2.[0-5].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; solaris*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on AIX >= 4. aix[1-3]*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; aix*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on IRIX >= 6.5. irix6.5) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; netbsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on BeOS. beos*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on Android. linux*-android*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # Guess yes on native Windows. mingw* | pw*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_vsnprintf_zerosize_c99="$gl_cross_guess_normal";; esac changequote([,])dnl ]) ]) ]) dnl The results of these tests on various platforms are: dnl dnl 1 = gl_PRINTF_SIZES_C99 dnl 2 = gl_PRINTF_LONG_DOUBLE dnl 3 = gl_PRINTF_INFINITE dnl 4 = gl_PRINTF_INFINITE_LONG_DOUBLE dnl 5 = gl_PRINTF_DIRECTIVE_A dnl 6 = gl_PRINTF_DIRECTIVE_F dnl 7 = gl_PRINTF_DIRECTIVE_N dnl 8 = gl_PRINTF_DIRECTIVE_LS dnl 9 = gl_PRINTF_POSITIONS dnl 10 = gl_PRINTF_FLAG_GROUPING dnl 11 = gl_PRINTF_FLAG_LEFTADJUST dnl 12 = gl_PRINTF_FLAG_ZERO dnl 13 = gl_PRINTF_PRECISION dnl 14 = gl_PRINTF_ENOMEM dnl 15 = gl_SNPRINTF_PRESENCE dnl 16 = gl_SNPRINTF_TRUNCATION_C99 dnl 17 = gl_SNPRINTF_RETVAL_C99 dnl 18 = gl_SNPRINTF_DIRECTIVE_N dnl 19 = gl_SNPRINTF_SIZE1 dnl 20 = gl_VSNPRINTF_ZEROSIZE_C99 dnl dnl 1 = checking whether printf supports size specifiers as in C99... dnl 2 = checking whether printf supports 'long double' arguments... dnl 3 = checking whether printf supports infinite 'double' arguments... dnl 4 = checking whether printf supports infinite 'long double' arguments... dnl 5 = checking whether printf supports the 'a' and 'A' directives... dnl 6 = checking whether printf supports the 'F' directive... dnl 7 = checking whether printf supports the 'n' directive... dnl 8 = checking whether printf supports the 'ls' directive... dnl 9 = checking whether printf supports POSIX/XSI format strings with positions... dnl 10 = checking whether printf supports the grouping flag... dnl 11 = checking whether printf supports the left-adjust flag correctly... dnl 12 = checking whether printf supports the zero flag correctly... dnl 13 = checking whether printf supports large precisions... dnl 14 = checking whether printf survives out-of-memory conditions... dnl 15 = checking for snprintf... dnl 16 = checking whether snprintf truncates the result as in C99... dnl 17 = checking whether snprintf returns a byte count as in C99... dnl 18 = checking whether snprintf fully supports the 'n' directive... dnl 19 = checking whether snprintf respects a size of 1... dnl 20 = checking whether vsnprintf respects a zero size as in C99... dnl dnl . = yes, # = no. dnl dnl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 dnl glibc 2.5 . . . . . . . . . . . . . . . . . . . . dnl glibc 2.3.6 . . . . # . . . . . . . . . . . . . . . dnl FreeBSD 13.0 . . . . # . . . . . . . . # . . . . . . dnl FreeBSD 5.4, 6.1 . . . . # . . . . . . # . # . . . . . . dnl Mac OS X 10.13.5 . . . # # . # . . . . . . . . . . # . . dnl Mac OS X 10.5.8 . . . # # . . . . . . # . . . . . . . . dnl Mac OS X 10.3.9 . . . . # . . . . . . # . # . . . . . . dnl OpenBSD 6.0, 6.7 . . . . # . . . . . . . . # . . . . . . dnl OpenBSD 3.9, 4.0 . . # # # # . # . # . # . # . . . . . . dnl Cygwin 1.7.0 (2009) . . . # . . . ? . . . . . ? . . . . . . dnl Cygwin 1.5.25 (2008) . . . # # . . # . . . . . # . . . . . . dnl Cygwin 1.5.19 (2006) # . . # # # . # . # . # # # . . . . . . dnl Solaris 11.4 . . # # # . . # . . . # . . . . . . . . dnl Solaris 11.3 . . . . # . . # . . . . . . . . . . . . dnl Solaris 11.0 . . # # # . . # . . . # . . . . . . . . dnl Solaris 10 . . # # # . . # . . . # # . . . . . . . dnl Solaris 2.6 ... 9 # . # # # # . # . . . # # . . . # . . . dnl Solaris 2.5.1 # . # # # # . # . . . # . . # # # # # # dnl AIX 7.1 . . # # # . . . . . . # # . . . . . . . dnl AIX 5.2 . . # # # . . . . . . # . . . . . . . . dnl AIX 4.3.2, 5.1 # . # # # # . . . . . # . . . . # . . . dnl HP-UX 11.31 . . . . # . . . . . . # . . . . # # . . dnl HP-UX 11.{00,11,23} # . . . # # . . . . . # . . . . # # . # dnl HP-UX 10.20 # . # . # # . ? . . # # . . . . # # ? # dnl IRIX 6.5 # . # # # # . # . . . # . . . . # . . . dnl OSF/1 5.1 # . # # # # . . . . . # . . . . # . . # dnl OSF/1 4.0d # . # # # # . . . . . # . . # # # # # # dnl NetBSD 9.0 . . . . # . . . . . . . . . . . . . . . dnl NetBSD 5.0 . . . # # . . . . . . # . # . . . . . . dnl NetBSD 4.0 . ? ? ? ? ? . ? . ? ? ? ? ? . . . ? ? ? dnl NetBSD 3.0 . . . . # # . ? # # ? # . # . . . . . . dnl Haiku . . . # # # . # . . . . . ? . . ? . . . dnl BeOS # # . # # # . ? # . ? . # ? . . ? . . . dnl Android 4.3 . . # # # # # # . # . # . # . . . # . . dnl old mingw / msvcrt # # # # # # . . # # . # # ? . # # # . . dnl MSVC 9 # # # # # # # . # # . # # ? # # # # . . dnl mingw 2009-2011 . # . # . . . . # # . . . ? . . . . . . dnl mingw-w64 2011 # # # # # # . . # # . # # ? . # # # . . recode-3.7.15/m4/free.m40000644000175000017500000000371014371444255010246 # free.m4 serial 6 # Copyright (C) 2003-2005, 2009-2023 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Written by Paul Eggert and Bruno Haible. AC_DEFUN([gl_FUNC_FREE], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) dnl In the next release of POSIX, free must preserve errno. dnl https://www.austingroupbugs.net/view.php?id=385 dnl https://sourceware.org/bugzilla/show_bug.cgi?id=17924 dnl So far, we know of three platforms that do this: dnl * glibc >= 2.33, thanks to the fix for this bug: dnl dnl * OpenBSD >= 4.5, thanks to this commit: dnl dnl * Solaris, because its malloc() implementation is based on brk(), dnl not mmap(); hence its free() implementation makes no system calls. dnl For other platforms, you can only be sure if they state it in their dnl documentation, or by code inspection of the free() implementation in libc. AC_CACHE_CHECK([whether free is known to preserve errno], [gl_cv_func_free_preserves_errno], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[#if 2 < __GLIBC__ + (33 <= __GLIBC_MINOR__) #elif defined __OpenBSD__ #elif defined __sun #else #error "'free' is not known to preserve errno" #endif ]])], [gl_cv_func_free_preserves_errno=yes], [gl_cv_func_free_preserves_errno=no]) ]) case $gl_cv_func_free_preserves_errno in *yes) AC_DEFINE([HAVE_FREE_POSIX], [1], [Define if the 'free' function is guaranteed to preserve errno.]) ;; *) REPLACE_FREE=1 ;; esac ]) # Prerequisites of lib/free.c. AC_DEFUN([gl_PREREQ_FREE], [:]) recode-3.7.15/m4/malloc.m40000644000175000017500000001352014371444255010574 # malloc.m4 serial 28 dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # This is adapted with modifications from upstream Autoconf here: # https://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/autoconf/functions.m4?id=v2.70#n949 AC_DEFUN([_AC_FUNC_MALLOC_IF], [ AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles AC_CACHE_CHECK([whether malloc (0) returns nonnull], [ac_cv_func_malloc_0_nonnull], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[void *p = malloc (0); int result = !p; free (p); return result;]]) ], [ac_cv_func_malloc_0_nonnull=yes], [ac_cv_func_malloc_0_nonnull=no], [case "$host_os" in # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \ | gnu* | *-musl* | midnightbsd* \ | hpux* | solaris* | cygwin* | mingw* | msys* ) ac_cv_func_malloc_0_nonnull="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) ac_cv_func_malloc_0_nonnull="$gl_cross_guess_normal" ;; esac ]) ]) AS_CASE([$ac_cv_func_malloc_0_nonnull], [*yes], [$1], [$2]) ])# _AC_FUNC_MALLOC_IF # gl_FUNC_MALLOC_GNU # ------------------ # Replace malloc if it is not compatible with GNU libc. AC_DEFUN([gl_FUNC_MALLOC_GNU], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_MALLOC_POSIX]) REPLACE_MALLOC_FOR_MALLOC_GNU="$REPLACE_MALLOC_FOR_MALLOC_POSIX" if test $REPLACE_MALLOC_FOR_MALLOC_GNU = 0; then _AC_FUNC_MALLOC_IF([], [REPLACE_MALLOC_FOR_MALLOC_GNU=1]) fi ]) # gl_FUNC_MALLOC_PTRDIFF # ---------------------- # Test whether malloc (N) reliably fails when N exceeds PTRDIFF_MAX, # and replace malloc otherwise. AC_DEFUN([gl_FUNC_MALLOC_PTRDIFF], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_CHECK_MALLOC_PTRDIFF]) test "$gl_cv_malloc_ptrdiff" = yes || REPLACE_MALLOC_FOR_MALLOC_POSIX=1 ]) # Test whether malloc, realloc, calloc refuse to create objects # larger than what can be expressed in ptrdiff_t. # Set gl_cv_func_malloc_gnu to yes or no accordingly. AC_DEFUN([gl_CHECK_MALLOC_PTRDIFF], [ AC_CACHE_CHECK([whether malloc is ptrdiff_t safe], [gl_cv_malloc_ptrdiff], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[/* 64-bit ptrdiff_t is so wide that no practical platform can exceed it. */ #define WIDE_PTRDIFF (PTRDIFF_MAX >> 31 >> 31 != 0) /* On rare machines where size_t fits in ptrdiff_t there is no problem. */ #define NARROW_SIZE (SIZE_MAX <= PTRDIFF_MAX) /* glibc 2.30 and later malloc refuses to exceed ptrdiff_t bounds even on 32-bit platforms. We don't know which non-glibc systems are safe. */ #define KNOWN_SAFE (2 < __GLIBC__ + (30 <= __GLIBC_MINOR__)) #if WIDE_PTRDIFF || NARROW_SIZE || KNOWN_SAFE return 0; #else #error "malloc might not be ptrdiff_t safe" syntax error #endif ]])], [gl_cv_malloc_ptrdiff=yes], [gl_cv_malloc_ptrdiff=no]) ]) ]) # gl_FUNC_MALLOC_POSIX # -------------------- # Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it # fails, and doesn't mess up with ptrdiff_t overflow), and replace # malloc if it is not. AC_DEFUN([gl_FUNC_MALLOC_POSIX], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_MALLOC_PTRDIFF]) AC_REQUIRE([gl_CHECK_MALLOC_POSIX]) if test "$gl_cv_func_malloc_posix" = yes; then AC_DEFINE([HAVE_MALLOC_POSIX], [1], [Define if malloc, realloc, and calloc set errno on allocation failure.]) else REPLACE_MALLOC_FOR_MALLOC_POSIX=1 fi ]) # Test whether malloc, realloc, calloc set errno to ENOMEM on failure. # Set gl_cv_func_malloc_posix to yes or no accordingly. AC_DEFUN([gl_CHECK_MALLOC_POSIX], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_CACHE_CHECK([whether malloc, realloc, calloc set errno on failure], [gl_cv_func_malloc_posix], [ dnl It is too dangerous to try to allocate a large amount of memory: dnl some systems go to their knees when you do that. So assume that dnl all Unix implementations of the function set errno on failure, dnl except on those platforms where we have seen 'test-malloc-gnu', dnl 'test-realloc-gnu', 'test-calloc-gnu' fail. case "$host_os" in mingw*) gl_cv_func_malloc_posix=no ;; irix* | solaris*) dnl On IRIX 6.5, the three functions return NULL with errno unset dnl when the argument is larger than PTRDIFF_MAX. dnl On Solaris 11.3, the three functions return NULL with errno set dnl to EAGAIN, not ENOMEM, when the argument is larger than dnl PTRDIFF_MAX. dnl Here is a test program: m4_divert_push([KILL]) #include #include #include #define ptrdiff_t long #ifndef PTRDIFF_MAX # define PTRDIFF_MAX ((ptrdiff_t) ((1UL << (8 * sizeof (ptrdiff_t) - 1)) - 1)) #endif int main () { void *p; fprintf (stderr, "PTRDIFF_MAX = %lu\n", (unsigned long) PTRDIFF_MAX); errno = 0; p = malloc ((unsigned long) PTRDIFF_MAX + 1); fprintf (stderr, "p=%p errno=%d\n", p, errno); errno = 0; p = calloc (PTRDIFF_MAX / 2 + 1, 2); fprintf (stderr, "p=%p errno=%d\n", p, errno); errno = 0; p = realloc (NULL, (unsigned long) PTRDIFF_MAX + 1); fprintf (stderr, "p=%p errno=%d\n", p, errno); return 0; } m4_divert_pop([KILL]) gl_cv_func_malloc_posix=no ;; *) gl_cv_func_malloc_posix=yes ;; esac ]) ]) recode-3.7.15/m4/mkdir.m40000644000175000017500000000650114371444255010434 # serial 17 # Copyright (C) 2001, 2003-2004, 2006, 2008-2023 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # On some systems, mkdir ("foo/", 0700) fails because of the trailing slash. # On others, mkdir ("foo/./", 0700) mistakenly succeeds. # On such systems, arrange to use a wrapper function. AC_DEFUN([gl_FUNC_MKDIR], [dnl AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CHECK_HEADERS_ONCE([unistd.h]) AC_CACHE_CHECK([whether mkdir handles trailing slash], [gl_cv_func_mkdir_trailing_slash_works], [rm -rf conftest.dir AC_RUN_IFELSE( [AC_LANG_PROGRAM([[ #include #include ]GL_MDA_DEFINES], [[return mkdir ("conftest.dir/", 0700);]])], [gl_cv_func_mkdir_trailing_slash_works=yes], [gl_cv_func_mkdir_trailing_slash_works=no], [case "$host_os" in # Guess yes on Linux systems. linux-* | linux) gl_cv_func_mkdir_trailing_slash_works="guessing yes" ;; # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_mkdir_trailing_slash_works="guessing yes" ;; # Guess yes on MSVC, no on mingw. mingw*) AC_EGREP_CPP([Known], [ #ifdef _MSC_VER Known #endif ], [gl_cv_func_mkdir_trailing_slash_works="guessing yes"], [gl_cv_func_mkdir_trailing_slash_works="guessing no"]) ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_mkdir_trailing_slash_works="$gl_cross_guess_normal" ;; esac ]) rm -rf conftest.dir ]) case "$gl_cv_func_mkdir_trailing_slash_works" in *yes) ;; *) REPLACE_MKDIR=1 ;; esac AC_CACHE_CHECK([whether mkdir handles trailing dot], [gl_cv_func_mkdir_trailing_dot_works], [rm -rf conftest.dir AC_RUN_IFELSE( [AC_LANG_PROGRAM([[ #include #include ]GL_MDA_DEFINES], [[return !mkdir ("conftest.dir/./", 0700);]])], [gl_cv_func_mkdir_trailing_dot_works=yes], [gl_cv_func_mkdir_trailing_dot_works=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;; # Guess yes on musl systems. *-musl*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;; # Guess no on native Windows. mingw*) gl_cv_func_mkdir_trailing_dot_works="guessing no" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_mkdir_trailing_dot_works="$gl_cross_guess_normal" ;; esac ]) rm -rf conftest.dir ] ) case "$gl_cv_func_mkdir_trailing_dot_works" in *yes) ;; *) REPLACE_MKDIR=1 AC_DEFINE([FUNC_MKDIR_DOT_BUG], [1], [Define to 1 if mkdir mistakenly creates a directory given with a trailing dot component.]) ;; esac ]) recode-3.7.15/m4/open-cloexec.m40000644000175000017500000000132314371444255011704 # Test whether O_CLOEXEC is defined. dnl Copyright 2017-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_PREPROC_O_CLOEXEC], [ AC_CACHE_CHECK([for O_CLOEXEC], [gl_cv_macro_O_CLOEXEC], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include #ifndef O_CLOEXEC choke me; #endif ]], [[return O_CLOEXEC;]])], [gl_cv_macro_O_CLOEXEC=yes], [gl_cv_macro_O_CLOEXEC=no])]) ]) recode-3.7.15/m4/mbrtowc.m40000644000175000017500000005577714371444255011026 # mbrtowc.m4 serial 39 -*- coding: utf-8 -*- dnl Copyright (C) 2001-2002, 2004-2005, 2008-2023 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_MBRTOWC], [ AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) AC_REQUIRE([gl_PTHREADLIB]) AC_CHECK_HEADERS_ONCE([threads.h]) AC_REQUIRE([AC_TYPE_MBSTATE_T]) gl_MBSTATE_T_BROKEN AC_CHECK_FUNCS_ONCE([mbrtowc]) if test $ac_cv_func_mbrtowc = no; then HAVE_MBRTOWC=0 AC_CHECK_DECLS([mbrtowc],,, [[ #include ]]) if test $ac_cv_have_decl_mbrtowc = yes; then dnl On Minix 3.1.8, the system's declares mbrtowc() although dnl it does not have the function. Avoid a collision with gnulib's dnl replacement. REPLACE_MBRTOWC=1 fi else if test $REPLACE_MBSTATE_T = 1; then REPLACE_MBRTOWC=1 else gl_MBRTOWC_NULL_ARG1 gl_MBRTOWC_NULL_ARG2 gl_MBRTOWC_RETVAL gl_MBRTOWC_NUL_RETVAL gl_MBRTOWC_STORES_INCOMPLETE gl_MBRTOWC_EMPTY_INPUT gl_MBRTOWC_C_LOCALE case "$gl_cv_func_mbrtowc_null_arg1" in *yes) ;; *) AC_DEFINE([MBRTOWC_NULL_ARG1_BUG], [1], [Define if the mbrtowc function has the NULL pwc argument bug.]) REPLACE_MBRTOWC=1 ;; esac case "$gl_cv_func_mbrtowc_null_arg2" in *yes) ;; *) AC_DEFINE([MBRTOWC_NULL_ARG2_BUG], [1], [Define if the mbrtowc function has the NULL string argument bug.]) REPLACE_MBRTOWC=1 ;; esac case "$gl_cv_func_mbrtowc_retval" in *yes) ;; *) AC_DEFINE([MBRTOWC_RETVAL_BUG], [1], [Define if the mbrtowc function returns a wrong return value.]) REPLACE_MBRTOWC=1 ;; esac case "$gl_cv_func_mbrtowc_nul_retval" in *yes) ;; *) AC_DEFINE([MBRTOWC_NUL_RETVAL_BUG], [1], [Define if the mbrtowc function does not return 0 for a NUL character.]) REPLACE_MBRTOWC=1 ;; esac case "$gl_cv_func_mbrtowc_stores_incomplete" in *no) ;; *) AC_DEFINE([MBRTOWC_STORES_INCOMPLETE_BUG], [1], [Define if the mbrtowc function stores a wide character when reporting incomplete input.]) REPLACE_MBRTOWC=1 ;; esac case "$gl_cv_func_mbrtowc_empty_input" in *yes) ;; *) AC_DEFINE([MBRTOWC_EMPTY_INPUT_BUG], [1], [Define if the mbrtowc function does not return (size_t) -2 for empty input.]) REPLACE_MBRTOWC=1 ;; esac case "$gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" in *yes) ;; *) AC_DEFINE([MBRTOWC_IN_C_LOCALE_MAYBE_EILSEQ], [1], [Define if the mbrtowc function may signal encoding errors in the C locale.]) REPLACE_MBRTOWC=1 ;; esac fi fi if test $REPLACE_MBSTATE_T = 1; then case "$host_os" in mingw*) MBRTOWC_LIB= ;; *) gl_WEAK_SYMBOLS case "$gl_cv_have_weak" in *yes) MBRTOWC_LIB= ;; *) MBRTOWC_LIB="$LIBPTHREAD" ;; esac ;; esac else MBRTOWC_LIB= fi dnl MBRTOWC_LIB is expected to be '-pthread' or '-lpthread' on AIX dnl with gcc or xlc, and empty otherwise. AC_SUBST([MBRTOWC_LIB]) dnl For backward compatibility. LIB_MBRTOWC="$MBRTOWC_LIB" AC_SUBST([LIB_MBRTOWC]) ]) dnl Test whether mbsinit() and mbrtowc() need to be overridden in a way that dnl redefines the semantics of the given mbstate_t type. dnl Result is REPLACE_MBSTATE_T. dnl When this is set to 1, we replace both mbsinit() and mbrtowc(), in order to dnl avoid inconsistencies. AC_DEFUN([gl_MBSTATE_T_BROKEN], [ AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_TYPE_MBSTATE_T]) AC_CHECK_FUNCS_ONCE([mbsinit]) AC_CHECK_FUNCS_ONCE([mbrtowc]) dnl On native Windows, we know exactly how mbsinit() behaves and don't need dnl to override it, even if - like on MSVC - mbsinit() is only defined as dnl an inline function, not as a global function. if case "$host_os" in mingw*) true ;; *) test $ac_cv_func_mbsinit = yes ;; esac \ && test $ac_cv_func_mbrtowc = yes; then gl_MBRTOWC_INCOMPLETE_STATE gl_MBRTOWC_SANITYCHECK REPLACE_MBSTATE_T=0 case "$gl_cv_func_mbrtowc_incomplete_state" in *yes) ;; *) REPLACE_MBSTATE_T=1 ;; esac case "$gl_cv_func_mbrtowc_sanitycheck" in *yes) ;; *) REPLACE_MBSTATE_T=1 ;; esac else REPLACE_MBSTATE_T=1 fi ]) dnl Test whether mbrtowc puts the state into non-initial state when parsing an dnl incomplete multibyte character. dnl Result is gl_cv_func_mbrtowc_incomplete_state. AC_DEFUN([gl_MBRTOWC_INCOMPLETE_STATE], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gt_LOCALE_JA]) AC_REQUIRE([gt_LOCALE_FR_UTF8]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether mbrtowc handles incomplete characters], [gl_cv_func_mbrtowc_incomplete_state], [ dnl Initial guess, used when cross-compiling or when no suitable locale dnl is present. changequote(,)dnl case "$host_os" in # Guess no on AIX and OSF/1. aix* | osf*) gl_cv_func_mbrtowc_incomplete_state="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_mbrtowc_incomplete_state="guessing yes" ;; esac changequote([,])dnl if test $LOCALE_JA != none; then AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) { const char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) if (mbsinit (&state)) return 2; } return 0; }]])], [gl_cv_func_mbrtowc_incomplete_state=yes], [gl_cv_func_mbrtowc_incomplete_state=no], [:]) else if test $LOCALE_FR_UTF8 != none; then AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { const char input[] = "B\303\274\303\237er"; /* "Büßer" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) if (mbsinit (&state)) return 2; } return 0; }]])], [gl_cv_func_mbrtowc_incomplete_state=yes], [gl_cv_func_mbrtowc_incomplete_state=no], [:]) fi fi ]) ]) dnl Test whether mbrtowc works not worse than mbtowc. dnl Result is gl_cv_func_mbrtowc_sanitycheck. AC_DEFUN([gl_MBRTOWC_SANITYCHECK], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gt_LOCALE_ZH_CN]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether mbrtowc works as well as mbtowc], [gl_cv_func_mbrtowc_sanitycheck], [ dnl Initial guess, used when cross-compiling or when no suitable locale dnl is present. changequote(,)dnl case "$host_os" in # Guess no on Solaris 8. solaris2.8) gl_cv_func_mbrtowc_sanitycheck="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_mbrtowc_sanitycheck="guessing yes" ;; esac changequote([,])dnl if test $LOCALE_ZH_CN != none; then AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include #include int main () { /* This fails on Solaris 8: mbrtowc returns 2, and sets wc to 0x00F0. mbtowc returns 4 (correct) and sets wc to 0x5EDC. */ if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) { char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 3, 6, &state) != 4 && mbtowc (&wc, input + 3, 6) == 4) return 2; } return 0; }]])], [gl_cv_func_mbrtowc_sanitycheck=yes], [gl_cv_func_mbrtowc_sanitycheck=no], [:]) fi ]) ]) dnl Test whether mbrtowc supports a NULL pwc argument correctly. dnl Result is gl_cv_func_mbrtowc_null_arg1. AC_DEFUN([gl_MBRTOWC_NULL_ARG1], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gt_LOCALE_FR_UTF8]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether mbrtowc handles a NULL pwc argument], [gl_cv_func_mbrtowc_null_arg1], [ dnl Initial guess, used when cross-compiling or when no suitable locale dnl is present. changequote(,)dnl case "$host_os" in # Guess no on Solaris. solaris*) gl_cv_func_mbrtowc_null_arg1="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_mbrtowc_null_arg1="guessing yes" ;; esac changequote([,])dnl if test $LOCALE_FR_UTF8 != none; then AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include #include int main () { int result = 0; if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { char input[] = "\303\237er"; mbstate_t state; wchar_t wc; size_t ret; memset (&state, '\0', sizeof (mbstate_t)); wc = (wchar_t) 0xBADFACE; ret = mbrtowc (&wc, input, 5, &state); if (ret != 2) result |= 1; if (!mbsinit (&state)) result |= 2; memset (&state, '\0', sizeof (mbstate_t)); ret = mbrtowc (NULL, input, 5, &state); if (ret != 2) /* Solaris 7 fails here: ret is -1. */ result |= 4; if (!mbsinit (&state)) result |= 8; } return result; }]])], [gl_cv_func_mbrtowc_null_arg1=yes], [gl_cv_func_mbrtowc_null_arg1=no], [:]) fi ]) ]) dnl Test whether mbrtowc supports a NULL string argument correctly. dnl Result is gl_cv_func_mbrtowc_null_arg2. AC_DEFUN([gl_MBRTOWC_NULL_ARG2], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gt_LOCALE_FR_UTF8]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether mbrtowc handles a NULL string argument], [gl_cv_func_mbrtowc_null_arg2], [ dnl Initial guess, used when cross-compiling or when no suitable locale dnl is present. changequote(,)dnl case "$host_os" in # Guess no on OSF/1. osf*) gl_cv_func_mbrtowc_null_arg2="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_mbrtowc_null_arg2="guessing yes" ;; esac changequote([,])dnl if test $LOCALE_FR_UTF8 != none; then AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { mbstate_t state; wchar_t wc; int ret; memset (&state, '\0', sizeof (mbstate_t)); wc = (wchar_t) 0xBADFACE; mbrtowc (&wc, NULL, 5, &state); /* Check that wc was not modified. */ if (wc != (wchar_t) 0xBADFACE) return 2; } return 0; }]])], [gl_cv_func_mbrtowc_null_arg2=yes], [gl_cv_func_mbrtowc_null_arg2=no], [:]) fi ]) ]) dnl Test whether mbrtowc, when parsing the end of a multibyte character, dnl correctly returns the number of bytes that were needed to complete the dnl character (not the total number of bytes of the multibyte character). dnl Result is gl_cv_func_mbrtowc_retval. AC_DEFUN([gl_MBRTOWC_RETVAL], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gt_LOCALE_FR_UTF8]) AC_REQUIRE([gt_LOCALE_JA]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_CACHE_CHECK([whether mbrtowc has a correct return value], [gl_cv_func_mbrtowc_retval], [ dnl Initial guess, used when cross-compiling or when no suitable locale dnl is present. changequote(,)dnl case "$host_os" in # Guess no on HP-UX, Solaris, native Windows. hpux* | solaris* | mingw*) gl_cv_func_mbrtowc_retval="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_mbrtowc_retval="guessing yes" ;; esac changequote([,])dnl if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none \ || { case "$host_os" in mingw*) true;; *) false;; esac; }; then AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { int result = 0; int found_some_locale = 0; /* This fails on Solaris. */ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { char input[] = "B\303\274\303\237er"; /* "Büßer" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) { input[1] = '\0'; if (mbrtowc (&wc, input + 2, 5, &state) != 1) result |= 1; } found_some_locale = 1; } /* This fails on HP-UX 11.11. */ if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) { char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) { input[1] = '\0'; if (mbrtowc (&wc, input + 2, 5, &state) != 2) result |= 2; } found_some_locale = 1; } /* This fails on native Windows. */ if (setlocale (LC_ALL, "Japanese_Japan.932") != NULL) { char input[] = "<\223\372\226\173\214\352>"; /* "<日本語>" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2)) { input[3] = '\0'; if (mbrtowc (&wc, input + 4, 4, &state) != 1) result |= 4; } found_some_locale = 1; } if (setlocale (LC_ALL, "Chinese_Taiwan.950") != NULL) { char input[] = "<\244\351\245\273\273\171>"; /* "<日本語>" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2)) { input[3] = '\0'; if (mbrtowc (&wc, input + 4, 4, &state) != 1) result |= 8; } found_some_locale = 1; } if (setlocale (LC_ALL, "Chinese_China.936") != NULL) { char input[] = "<\310\325\261\276\325\132>"; /* "<日本語>" */ mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, input + 3, 1, &state) == (size_t)(-2)) { input[3] = '\0'; if (mbrtowc (&wc, input + 4, 4, &state) != 1) result |= 16; } found_some_locale = 1; } return (found_some_locale ? result : 77); }]])], [gl_cv_func_mbrtowc_retval=yes], [if test $? != 77; then gl_cv_func_mbrtowc_retval=no fi ], [:]) fi ]) ]) dnl Test whether mbrtowc, when parsing a NUL character, correctly returns 0. dnl Result is gl_cv_func_mbrtowc_nul_retval. AC_DEFUN([gl_MBRTOWC_NUL_RETVAL], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gt_LOCALE_ZH_CN]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether mbrtowc returns 0 when parsing a NUL character], [gl_cv_func_mbrtowc_nul_retval], [ dnl Initial guess, used when cross-compiling or when no suitable locale dnl is present. changequote(,)dnl case "$host_os" in # Guess no on Solaris 8 and 9. solaris2.[89]) gl_cv_func_mbrtowc_nul_retval="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_mbrtowc_nul_retval="guessing yes" ;; esac changequote([,])dnl if test $LOCALE_ZH_CN != none; then AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { /* This fails on Solaris 8 and 9. */ if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) { mbstate_t state; wchar_t wc; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, "", 1, &state) != 0) return 2; } return 0; }]])], [gl_cv_func_mbrtowc_nul_retval=yes], [gl_cv_func_mbrtowc_nul_retval=no], [:]) fi ]) ]) dnl Test whether mbrtowc stores a wide character when reporting incomplete dnl input. AC_DEFUN([gl_MBRTOWC_STORES_INCOMPLETE], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether mbrtowc stores incomplete characters], [gl_cv_func_mbrtowc_stores_incomplete], [ dnl Initial guess, used when cross-compiling or when no suitable locale dnl is present. changequote(,)dnl case "$host_os" in # Guess yes on native Windows. mingw*) gl_cv_func_mbrtowc_stores_incomplete="guessing yes" ;; *) gl_cv_func_mbrtowc_stores_incomplete="guessing no" ;; esac changequote([,])dnl case "$host_os" in mingw*) AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { int result = 0; if (setlocale (LC_ALL, "French_France.65001") != NULL) { wchar_t wc = (wchar_t) 0xBADFACE; mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, "\303", 1, &state) == (size_t)(-2) && wc != (wchar_t) 0xBADFACE) result |= 1; } if (setlocale (LC_ALL, "Japanese_Japan.932") != NULL) { wchar_t wc = (wchar_t) 0xBADFACE; mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, "\226", 1, &state) == (size_t)(-2) && wc != (wchar_t) 0xBADFACE) result |= 2; } if (setlocale (LC_ALL, "Chinese_Taiwan.950") != NULL) { wchar_t wc = (wchar_t) 0xBADFACE; mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, "\245", 1, &state) == (size_t)(-2) && wc != (wchar_t) 0xBADFACE) result |= 4; } if (setlocale (LC_ALL, "Chinese_China.936") != NULL) { wchar_t wc = (wchar_t) 0xBADFACE; mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, "\261", 1, &state) == (size_t)(-2) && wc != (wchar_t) 0xBADFACE) result |= 8; } return result; }]])], [gl_cv_func_mbrtowc_stores_incomplete=no], [gl_cv_func_mbrtowc_stores_incomplete=yes], [:]) ;; *) AC_REQUIRE([gt_LOCALE_FR_UTF8]) if test $LOCALE_FR_UTF8 != none; then AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { wchar_t wc = (wchar_t) 0xBADFACE; mbstate_t state; memset (&state, '\0', sizeof (mbstate_t)); if (mbrtowc (&wc, "\303", 1, &state) == (size_t)(-2) && wc != (wchar_t) 0xBADFACE) return 1; } return 0; }]])], [gl_cv_func_mbrtowc_stores_incomplete=no], [gl_cv_func_mbrtowc_stores_incomplete=yes], [:]) fi ;; esac ]) ]) dnl Test whether mbrtowc returns the correct value on empty input. AC_DEFUN([gl_MBRTOWC_EMPTY_INPUT], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether mbrtowc works on empty input], [gl_cv_func_mbrtowc_empty_input], [ dnl Initial guess, used when cross-compiling or when no suitable locale dnl is present. changequote(,)dnl case "$host_os" in # Guess no on AIX and glibc systems. aix* | *-gnu* | gnu*) gl_cv_func_mbrtowc_empty_input="guessing no" ;; # Guess yes on native Windows. mingw*) gl_cv_func_mbrtowc_empty_input="guessing yes" ;; *) gl_cv_func_mbrtowc_empty_input="guessing yes" ;; esac changequote([,])dnl AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include static wchar_t wc; static mbstate_t mbs; int main (void) { return mbrtowc (&wc, "", 0, &mbs) != (size_t) -2; }]])], [gl_cv_func_mbrtowc_empty_input=yes], [gl_cv_func_mbrtowc_empty_input=no], [:]) ]) ]) dnl Test whether mbrtowc reports encoding errors in the C locale. dnl Although POSIX was never intended to allow this, the GNU C Library dnl and other implementations do it. See: dnl https://sourceware.org/bugzilla/show_bug.cgi?id=19932 AC_DEFUN([gl_MBRTOWC_C_LOCALE], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether the C locale is free of encoding errors], [gl_cv_func_mbrtowc_C_locale_sans_EILSEQ], [ dnl Initial guess, used when cross-compiling or when no suitable locale dnl is present. gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="$gl_cross_guess_normal" AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include #include ]], [[ int i; char *locale = setlocale (LC_ALL, "C"); if (! locale) return 2; for (i = CHAR_MIN; i <= CHAR_MAX; i++) { char c = i; wchar_t wc; mbstate_t mbs = { 0, }; size_t ss = mbrtowc (&wc, &c, 1, &mbs); if (1 < ss) return 3; } return 0; ]])], [gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=yes], [gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=no], [case "$host_os" in # Guess yes on native Windows. mingw*) gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="guessing yes" ;; esac ]) ]) ]) # Prerequisites of lib/mbrtowc.c and lib/lc-charset-dispatch.c. AC_DEFUN([gl_PREREQ_MBRTOWC], [ AC_REQUIRE([AC_C_INLINE]) : ]) # Prerequisites of lib/mbtowc-lock.c. AC_DEFUN([gl_PREREQ_MBTOWC_LOCK], [ gl_VISIBILITY ]) dnl From Paul Eggert dnl This is an override of an autoconf macro. AC_DEFUN([AC_FUNC_MBRTOWC], [ dnl Same as AC_FUNC_MBRTOWC in autoconf-2.60. AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared], [gl_cv_func_mbrtowc], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[wchar_t wc; char const s[] = ""; size_t n = 1; mbstate_t state; return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));]])], [gl_cv_func_mbrtowc=yes], [gl_cv_func_mbrtowc=no])]) if test $gl_cv_func_mbrtowc = yes; then AC_DEFINE([HAVE_MBRTOWC], [1], [Define to 1 if mbrtowc and mbstate_t are properly declared.]) fi ]) recode-3.7.15/m4/nls.m40000644000175000017500000000231513226751342010115 # nls.m4 serial 5 (gettext-0.18) dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) AC_DEFUN([AM_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], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT([$USE_NLS]) AC_SUBST([USE_NLS]) ]) recode-3.7.15/m4/tempname.m40000644000175000017500000000103214371444255011126 #serial 5 # Copyright (C) 2006-2007, 2009-2023 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # glibc provides __gen_tempname as a wrapper for mk[ds]temp. Expose # it as a public API, and provide it on systems that are lacking. AC_DEFUN([gl_FUNC_GEN_TEMPNAME], [ gl_PREREQ_TEMPNAME ]) # Prerequisites of lib/tempname.c. AC_DEFUN([gl_PREREQ_TEMPNAME], [ : ]) recode-3.7.15/m4/include_next.m40000644000175000017500000002103414371444255012005 # include_next.m4 serial 26 dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert and Derek Price. dnl Sets INCLUDE_NEXT, INCLUDE_NEXT_AS_FIRST_DIRECTIVE, PRAGMA_SYSTEM_HEADER, dnl and PRAGMA_COLUMNS. dnl dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to dnl 'include' otherwise. dnl dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler dnl supports it in the special case that it is the first include directive in dnl the given file, or to 'include' otherwise. dnl dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next, dnl so as to avoid GCC warnings when the gcc option -pedantic is used. dnl '#pragma GCC system_header' has the same effect as if the file was found dnl through the include search path specified with '-isystem' options (as dnl opposed to the search path specified with '-I' options). Namely, gcc dnl does not warn about some things, and on some systems (Solaris and Interix) dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead dnl of plain '__STDC__'. dnl dnl PRAGMA_COLUMNS can be used in files that override system header files, so dnl as to avoid compilation errors on HP NonStop systems when the gnulib file dnl is included by a system header file that does a "#pragma COLUMNS 80" (which dnl has the effect of truncating the lines of that file and all files that it dnl includes to 80 columns) and the gnulib file has lines longer than 80 dnl columns. AC_DEFUN([gl_INCLUDE_NEXT], [ AC_LANG_PREPROC_REQUIRE() AC_CACHE_CHECK([whether the preprocessor supports include_next], [gl_cv_have_include_next], [rm -rf conftestd1a conftestd1b conftestd2 mkdir conftestd1a conftestd1b conftestd2 dnl IBM C 9.0, 10.1 (original versions, prior to the 2009-01 updates) on dnl AIX 6.1 support include_next when used as first preprocessor directive dnl in a file, but not when preceded by another include directive. Check dnl for this bug by including . dnl Additionally, with this same compiler, include_next is a no-op when dnl used in a header file that was included by specifying its absolute dnl file name. Despite these two bugs, include_next is used in the dnl compiler's . By virtue of the second bug, we need to use dnl include_next as well in this case. cat < conftestd1a/conftest.h #define DEFINED_IN_CONFTESTD1 #include_next #ifdef DEFINED_IN_CONFTESTD2 int foo; #else #error "include_next doesn't work" #endif EOF cat < conftestd1b/conftest.h #define DEFINED_IN_CONFTESTD1 #include #include_next #ifdef DEFINED_IN_CONFTESTD2 int foo; #else #error "include_next doesn't work" #endif EOF cat < conftestd2/conftest.h #ifndef DEFINED_IN_CONFTESTD1 #error "include_next test doesn't work" #endif #define DEFINED_IN_CONFTESTD2 EOF gl_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2" dnl We intentionally avoid using AC_LANG_SOURCE here. AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include ]], [gl_cv_have_include_next=yes], [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2" AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include ]], [gl_cv_have_include_next=buggy], [gl_cv_have_include_next=no]) ]) CPPFLAGS="$gl_save_CPPFLAGS" rm -rf conftestd1a conftestd1b conftestd2 ]) PRAGMA_SYSTEM_HEADER= if test $gl_cv_have_include_next = yes; then INCLUDE_NEXT=include_next INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next if test -n "$GCC"; then PRAGMA_SYSTEM_HEADER='#pragma GCC system_header' fi else if test $gl_cv_have_include_next = buggy; then INCLUDE_NEXT=include INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next else INCLUDE_NEXT=include INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include fi fi AC_SUBST([INCLUDE_NEXT]) AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE]) AC_SUBST([PRAGMA_SYSTEM_HEADER]) dnl HP NonStop systems, which define __TANDEM, limit the line length dnl after including some system header files. AC_CACHE_CHECK([whether source code line length is unlimited], [gl_cv_source_line_length_unlimited], [AC_EGREP_CPP([choke me], [ #ifdef __TANDEM choke me #endif ], [gl_cv_source_line_length_unlimited=no], [gl_cv_source_line_length_unlimited=yes]) ]) if test $gl_cv_source_line_length_unlimited = no; then PRAGMA_COLUMNS="#pragma COLUMNS 10000" else PRAGMA_COLUMNS= fi AC_SUBST([PRAGMA_COLUMNS]) ]) # gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...) # ------------------------------------------ # For each arg foo.h, if #include_next works, define NEXT_FOO_H to be # ''; otherwise define it to be # '"///usr/include/foo.h"', or whatever other absolute file name is suitable. # Also, if #include_next works as first preprocessing directive in a file, # define NEXT_AS_FIRST_DIRECTIVE_FOO_H to be ''; otherwise define it to # be # '"///usr/include/foo.h"', or whatever other absolute file name is suitable. # That way, a header file with the following line: # #@INCLUDE_NEXT@ @NEXT_FOO_H@ # or # #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_FOO_H@ # behaves (after sed substitution) as if it contained # #include_next # even if the compiler does not support include_next. # The three "///" are to pacify Sun C 5.8, which otherwise would say # "warning: #include of /usr/include/... may be non-portable". # Use '""', not '<>', so that the /// cannot be confused with a C99 comment. # Note: This macro assumes that the header file is not empty after # preprocessing, i.e. it does not only define preprocessor macros but also # provides some type/enum definitions or function/variable declarations. # # This macro also checks whether each header exists, by invoking # AC_CHECK_HEADERS_ONCE or AC_CHECK_HEADERS on each argument. AC_DEFUN([gl_CHECK_NEXT_HEADERS], [ gl_NEXT_HEADERS_INTERNAL([$1], [check]) ]) # gl_NEXT_HEADERS(HEADER1 HEADER2 ...) # ------------------------------------ # Like gl_CHECK_NEXT_HEADERS, except do not check whether the headers exist. # This is suitable for headers like that are standardized by C89 # and therefore can be assumed to exist. AC_DEFUN([gl_NEXT_HEADERS], [ gl_NEXT_HEADERS_INTERNAL([$1], [assume]) ]) # The guts of gl_CHECK_NEXT_HEADERS and gl_NEXT_HEADERS. AC_DEFUN([gl_NEXT_HEADERS_INTERNAL], [ AC_REQUIRE([gl_INCLUDE_NEXT]) AC_REQUIRE([AC_CANONICAL_HOST]) m4_if([$2], [check], [AC_CHECK_HEADERS_ONCE([$1]) ]) m4_foreach_w([gl_HEADER_NAME], [$1], [AS_VAR_PUSHDEF([gl_next_header], [gl_cv_next_]m4_defn([gl_HEADER_NAME])) if test $gl_cv_have_include_next = yes; then AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>']) else AC_CACHE_CHECK( [absolute name of <]m4_defn([gl_HEADER_NAME])[>], [gl_next_header], [m4_if([$2], [check], [AS_VAR_PUSHDEF([gl_header_exists], [ac_cv_header_]m4_defn([gl_HEADER_NAME])) if test AS_VAR_GET([gl_header_exists]) = yes; then AS_VAR_POPDEF([gl_header_exists]) ]) gl_ABSOLUTE_HEADER_ONE(gl_HEADER_NAME) AS_VAR_COPY([gl_header], [gl_cv_absolute_]AS_TR_SH(gl_HEADER_NAME)) AS_VAR_SET([gl_next_header], ['"'$gl_header'"']) m4_if([$2], [check], [else AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>']) fi ]) ]) fi AC_SUBST( AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])), [AS_VAR_GET([gl_next_header])]) if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'gl_HEADER_NAME'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=AS_VAR_GET([gl_next_header]) fi AC_SUBST( AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])), [$gl_next_as_first_directive]) AS_VAR_POPDEF([gl_next_header])]) ]) # Autoconf 2.68 added warnings for our use of AC_COMPILE_IFELSE; # this fallback is safe for all earlier autoconf versions. m4_define_default([AC_LANG_DEFINES_PROVIDED]) recode-3.7.15/m4/locale_h.m40000644000175000017500000001375614371444255011106 # locale_h.m4 serial 28 dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_LOCALE_H], [ dnl Ensure to expand the default settings once only, before all statements dnl that occur in other macros. AC_REQUIRE([gl_LOCALE_H_DEFAULTS]) dnl Persuade glibc to define locale_t and the int_p_*, int_n_* dnl members of 'struct lconv'. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) dnl If is replaced, then must also be replaced. AC_REQUIRE([gl_STDDEF_H]) AC_REQUIRE([gl_LOCALE_T]) dnl Solaris 11.0 defines the int_p_*, int_n_* members of 'struct lconv' dnl only if _LCONV_C99 is defined. AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in solaris*) AC_DEFINE([_LCONV_C99], [1], [Define to 1 on Solaris.]) ;; esac AC_CACHE_CHECK([whether locale.h conforms to POSIX:2001], [gl_cv_header_locale_h_posix2001], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include int x = LC_MESSAGES; int y = sizeof (((struct lconv *) 0)->decimal_point);]], [[]])], [gl_cv_header_locale_h_posix2001=yes], [gl_cv_header_locale_h_posix2001=no])]) dnl Check whether 'struct lconv' is complete. dnl Bionic libc's 'struct lconv' is just a dummy. dnl On OpenBSD 4.9, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.x, dnl mingw, MSVC 9, it lacks the int_p_* and int_n_* members. AC_CACHE_CHECK([whether struct lconv is properly defined], [gl_cv_sys_struct_lconv_ok], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include struct lconv l; int x = sizeof (l.decimal_point); int y = sizeof (l.int_p_cs_precedes);]], [[]])], [gl_cv_sys_struct_lconv_ok=yes], [gl_cv_sys_struct_lconv_ok=no]) ]) if test $gl_cv_sys_struct_lconv_ok = no; then dnl On native Windows with MSVC, merely define these member names as macros. dnl This avoids trouble in C++ mode. case "$host_os" in mingw*) AC_EGREP_CPP([Special], [ #ifdef _MSC_VER Special #endif ], [], [REPLACE_STRUCT_LCONV=1]) ;; *) REPLACE_STRUCT_LCONV=1 ;; esac fi dnl is always overridden, because of GNULIB_POSIXCHECK. gl_NEXT_HEADERS([locale.h]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[#include /* Some systems provide declarations in a non-standard header. */ #if HAVE_XLOCALE_H # include #endif ]], [setlocale newlocale duplocale freelocale]) ]) dnl Checks to determine whether the system has the locale_t type, dnl and how to obtain it. AC_DEFUN([gl_LOCALE_T], [ dnl Persuade glibc and Solaris to define locale_t. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) dnl Check whether use of locale_t requires inclusion of , dnl e.g. on Mac OS X 10.5. If does not define locale_t by dnl itself, we assume that will do so. AC_CACHE_CHECK([whether locale.h defines locale_t], [gl_cv_header_locale_has_locale_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include locale_t x;]], [[]])], [gl_cv_header_locale_has_locale_t=yes], [gl_cv_header_locale_has_locale_t=no]) ]) dnl Check for . AC_CHECK_HEADERS_ONCE([xlocale.h]) if test $ac_cv_header_xlocale_h = yes; then HAVE_XLOCALE_H=1 if test $gl_cv_header_locale_has_locale_t = yes; then gl_cv_header_locale_h_needs_xlocale_h=no else gl_cv_header_locale_h_needs_xlocale_h=yes fi HAVE_LOCALE_T=1 else HAVE_XLOCALE_H=0 gl_cv_header_locale_h_needs_xlocale_h=no if test $gl_cv_header_locale_has_locale_t = yes; then HAVE_LOCALE_T=1 else HAVE_LOCALE_T=0 fi fi AC_SUBST([HAVE_XLOCALE_H]) ]) # gl_LOCALE_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_LOCALE_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_LOCALE_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_LOCALE_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_LOCALE_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOCALECONV]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETLOCALE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETLOCALE_NULL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUPLOCALE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOCALENAME]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_LOCALE_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_LOCALE_H_DEFAULTS]) ]) AC_DEFUN([gl_LOCALE_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. HAVE_NEWLOCALE=1; AC_SUBST([HAVE_NEWLOCALE]) HAVE_DUPLOCALE=1; AC_SUBST([HAVE_DUPLOCALE]) HAVE_FREELOCALE=1; AC_SUBST([HAVE_FREELOCALE]) REPLACE_LOCALECONV=0; AC_SUBST([REPLACE_LOCALECONV]) REPLACE_SETLOCALE=0; AC_SUBST([REPLACE_SETLOCALE]) REPLACE_NEWLOCALE=0; AC_SUBST([REPLACE_NEWLOCALE]) REPLACE_DUPLOCALE=0; AC_SUBST([REPLACE_DUPLOCALE]) REPLACE_FREELOCALE=0; AC_SUBST([REPLACE_FREELOCALE]) REPLACE_STRUCT_LCONV=0; AC_SUBST([REPLACE_STRUCT_LCONV]) LOCALENAME_ENHANCE_LOCALE_FUNCS=0; AC_SUBST([LOCALENAME_ENHANCE_LOCALE_FUNCS]) ]) recode-3.7.15/m4/gnulib-comp.m40000644000175000017500000010425314574045622011545 # DO NOT EDIT! GENERATED AUTOMATICALLY! # Copyright (C) 2002-2023 Free Software Foundation, Inc. # # This file 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 3 of the License, or # (at your option) any later version. # # This file 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # # This file represents the compiled summary of the specification in # gnulib-cache.m4. It lists the computed macro invocations that need # to be invoked from configure.ac. # In projects that use version control, this file can be treated like # other built files. # This macro should be invoked from ./configure.ac, in the section # "Checks for programs", right after AC_PROG_CC, and certainly before # any checks for libraries, header files, types and library functions. AC_DEFUN([gl_EARLY], [ m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace m4_pattern_allow([^gl_ES$])dnl a valid locale name m4_pattern_allow([^gl_LIBOBJS$])dnl a variable m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable # Pre-early section. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_PROG_AR_RANLIB]) # Code from module absolute-header: # Code from module alignasof: # Code from module alloca-opt: # Code from module argmatch: # Code from module assert-h: # Code from module attribute: # Code from module basename-lgpl: # Code from module binary-io: # Code from module bitrotate: # Code from module bootstrap: # Code from module builtin-expect: # Code from module c-ctype: # Code from module c-strcase: # Code from module c-strcaseeq: # Code from module c99: # Code from module calloc-gnu: # Code from module calloc-posix: # Code from module canonicalize-lgpl: # Code from module clock-time: # Code from module cloexec: # Code from module close: # Code from module dirname: # Code from module dirname-lgpl: # Code from module double-slash-root: # Code from module dup2: # Code from module eloop-threshold: # Code from module errno: # Code from module error: # Code from module error-h: # Code from module exitfail: # Code from module extensions: # Code from module extern-inline: # Code from module extract-trace: # Code from module fcntl: # Code from module fcntl-h: # Code from module fd-hook: # Code from module filename: # Code from module float: # Code from module fpieee: AC_REQUIRE([gl_FP_IEEE]) # Code from module fpucw: # Code from module free-posix: # Code from module frexp-nolibm: # Code from module frexpl-nolibm: # Code from module fseterr: # Code from module fstat: # Code from module funclib.sh: # Code from module gen-header: # Code from module getdtablesize: # Code from module getopt-posix: # Code from module getprogname: # Code from module getrandom: # Code from module gettext-h: # Code from module glibc-internal/scratch_buffer: # Code from module hard-locale: # Code from module hash: # Code from module havelib: # Code from module ialloc: # Code from module iconv: # Code from module idx: # Code from module include_next: # Code from module inline-source: # Code from module intprops: # Code from module inttypes-incomplete: # Code from module isatty: # Code from module isnand-nolibm: # Code from module isnanf-nolibm: # Code from module isnanl-nolibm: # Code from module largefile: AC_REQUIRE([AC_SYS_LARGEFILE]) # Code from module libc-config: # Code from module limits-h: # Code from module localcharset: # Code from module locale: # Code from module lstat: # Code from module malloc-gnu: # Code from module malloc-posix: # Code from module malloca: # Code from module manywarnings: # Code from module math: # Code from module mbrtowc: # Code from module mbsinit: # Code from module memchr: # Code from module mempcpy: # Code from module minmax: # Code from module mkdir: # Code from module mkstemps: # Code from module msvc-inval: # Code from module msvc-nothrow: # Code from module multiarch: # Code from module nocrash: # Code from module open: # Code from module options-parser: # Code from module pathmax: # Code from module pipe-posix: # Code from module printf-frexp: # Code from module printf-frexpl: # Code from module printf-safe: # Code from module quote: # Code from module quotearg: # Code from module quotearg-simple: # Code from module raise: # Code from module rawmemchr: # Code from module readlink: # Code from module realloc-gnu: # Code from module realloc-posix: # Code from module reallocarray: # Code from module setlocale-null: # Code from module sigaction: # Code from module signal-h: # Code from module signbit: # Code from module sigprocmask: # Code from module size_max: # Code from module snippet/_Noreturn: # Code from module snippet/arg-nonnull: # Code from module snippet/c++defs: # Code from module snippet/warn-on-use: # Code from module ssize_t: # Code from module stat: # Code from module stat-time: # Code from module std-gnu11: # Code from module stdbool: # Code from module stdckdint: # Code from module stddef: # Code from module stdint: # Code from module stdio: # Code from module stdlib: # Code from module streq: # Code from module strerror: # Code from module strerror-override: # Code from module string: # Code from module strndup: # Code from module strnlen: # Code from module sys_random: # Code from module sys_stat: # Code from module sys_types: # Code from module sys_wait: # Code from module tempname: # Code from module time: # Code from module unistd: # Code from module utime: # Code from module utime-h: # Code from module vararrays: # Code from module vasnprintf: # Code from module vasprintf: # Code from module verify: # Code from module vfprintf-posix: # Code from module vprintf-posix: # Code from module warnings: # Code from module wchar: # Code from module wctype-h: # Code from module xalloc: # Code from module xalloc-die: # Code from module xalloc-oversized: # Code from module xbinary-io: # Code from module xsize: ]) # This macro should be invoked from ./configure.ac, in the section # "Check for header files, types and library functions". AC_DEFUN([gl_INIT], [ AM_CONDITIONAL([GL_COND_LIBTOOL], [true]) gl_cond_libtool=true gl_m4_base='m4' m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ])) m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS])) m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES])) m4_pushdef([gl_LIBSOURCES_LIST], []) m4_pushdef([gl_LIBSOURCES_DIR], []) m4_pushdef([GL_MACRO_PREFIX], [gl]) m4_pushdef([GL_MODULE_INDICATOR_PREFIX], [GL]) gl_COMMON gl_source_base='lib' gl_source_base_prefix= gl_ALIGNASOF gl_FUNC_ALLOCA gl_CONDITIONAL_HEADER([alloca.h]) AC_PROG_MKDIR_P gl_ASSERT_H gl_CONDITIONAL_HEADER([assert.h]) AC_PROG_MKDIR_P gl___BUILTIN_EXPECT gl_FUNC_CALLOC_GNU if test $REPLACE_CALLOC_FOR_CALLOC_GNU = 1; then AC_LIBOBJ([calloc]) fi gl_STDLIB_MODULE_INDICATOR([calloc-gnu]) gl_FUNC_CALLOC_POSIX if test $REPLACE_CALLOC_FOR_CALLOC_POSIX = 1; then AC_LIBOBJ([calloc]) fi gl_STDLIB_MODULE_INDICATOR([calloc-posix]) gl_CANONICALIZE_LGPL gl_CONDITIONAL([GL_COND_OBJ_CANONICALIZE_LGPL], [test $HAVE_CANONICALIZE_FILE_NAME = 0 || test $REPLACE_CANONICALIZE_FILE_NAME = 1]) gl_MODULE_INDICATOR([canonicalize-lgpl]) gl_STDLIB_MODULE_INDICATOR([canonicalize_file_name]) gl_STDLIB_MODULE_INDICATOR([realpath]) gl_CLOCK_TIME gl_MODULE_INDICATOR_FOR_TESTS([cloexec]) gl_FUNC_CLOSE gl_CONDITIONAL([GL_COND_OBJ_CLOSE], [test $REPLACE_CLOSE = 1]) gl_UNISTD_MODULE_INDICATOR([close]) gl_MODULE_INDICATOR([dirname]) gl_DOUBLE_SLASH_ROOT gl_FUNC_DUP2 gl_CONDITIONAL([GL_COND_OBJ_DUP2], [test $REPLACE_DUP2 = 1]) AM_COND_IF([GL_COND_OBJ_DUP2], [ gl_PREREQ_DUP2 ]) gl_UNISTD_MODULE_INDICATOR([dup2]) gl_HEADER_ERRNO_H gl_CONDITIONAL_HEADER([errno.h]) AC_PROG_MKDIR_P AC_REQUIRE([gl_ERROR_H]) gl_ERROR gl_CONDITIONAL([GL_COND_OBJ_ERROR], [test $GL_GENERATE_ERROR_H = true]) AM_COND_IF([GL_COND_OBJ_ERROR], [ gl_PREREQ_ERROR ]) m4_ifdef([AM_XGETTEXT_OPTION], [AM_][XGETTEXT_OPTION([--flag=error:3:c-format]) AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])]) gl_ERROR_H gl_CONDITIONAL_HEADER([error.h]) AC_PROG_MKDIR_P AC_REQUIRE([gl_EXTERN_INLINE]) gl_FUNC_FCNTL gl_CONDITIONAL([GL_COND_OBJ_FCNTL], [test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1]) gl_FCNTL_MODULE_INDICATOR([fcntl]) gl_FCNTL_H gl_FCNTL_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_FLOAT_H gl_CONDITIONAL_HEADER([float.h]) AC_PROG_MKDIR_P gl_CONDITIONAL([GL_COND_OBJ_FLOAT], [test $REPLACE_FLOAT_LDBL = 1]) gl_CONDITIONAL([GL_COND_OBJ_ITOLD], [test $REPLACE_ITOLD = 1]) gl_FUNC_FREE gl_CONDITIONAL([GL_COND_OBJ_FREE], [test $REPLACE_FREE = 1]) AM_COND_IF([GL_COND_OBJ_FREE], [ gl_PREREQ_FREE ]) gl_STDLIB_MODULE_INDICATOR([free-posix]) gl_FUNC_FREXP_NO_LIBM if test $gl_func_frexp_no_libm != yes; then AC_LIBOBJ([frexp]) fi gl_MATH_MODULE_INDICATOR([frexp]) gl_FUNC_FREXPL_NO_LIBM if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; then AC_LIBOBJ([frexpl]) fi gl_MATH_MODULE_INDICATOR([frexpl]) gl_FUNC_FSETERR gl_CONDITIONAL([GL_COND_OBJ_FSETERR], [test $ac_cv_func___fseterr = no]) gl_FUNC_FSTAT gl_CONDITIONAL([GL_COND_OBJ_FSTAT], [test $REPLACE_FSTAT = 1]) AM_COND_IF([GL_COND_OBJ_FSTAT], [ case "$host_os" in mingw*) AC_LIBOBJ([stat-w32]) ;; esac gl_PREREQ_FSTAT ]) gl_SYS_STAT_MODULE_INDICATOR([fstat]) gl_FUNC_GETDTABLESIZE gl_CONDITIONAL([GL_COND_OBJ_GETDTABLESIZE], [test $HAVE_GETDTABLESIZE = 0 || test $REPLACE_GETDTABLESIZE = 1]) AM_COND_IF([GL_COND_OBJ_GETDTABLESIZE], [ gl_PREREQ_GETDTABLESIZE ]) gl_UNISTD_MODULE_INDICATOR([getdtablesize]) gl_FUNC_GETOPT_POSIX gl_CONDITIONAL_HEADER([getopt.h]) gl_CONDITIONAL_HEADER([getopt-cdefs.h]) AC_PROG_MKDIR_P gl_CONDITIONAL([GL_COND_OBJ_GETOPT], [test $REPLACE_GETOPT = 1]) AM_COND_IF([GL_COND_OBJ_GETOPT], [ dnl Define the substituted variable GNULIB_UNISTD_H_GETOPT to 1. gl_UNISTD_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_GETOPT], [1]) ]) gl_UNISTD_MODULE_INDICATOR([getopt-posix]) gl_FUNC_GETPROGNAME gl_CONDITIONAL([GL_COND_OBJ_GETPROGNAME], [test $HAVE_GETPROGNAME = 0 || test $REPLACE_GETPROGNAME = 1]) AM_COND_IF([GL_COND_OBJ_GETPROGNAME], [ gl_PREREQ_GETPROGNAME ]) gl_STDLIB_MODULE_INDICATOR([getprogname]) AC_REQUIRE([AC_CANONICAL_HOST]) gl_FUNC_GETRANDOM gl_CONDITIONAL([GL_COND_OBJ_GETRANDOM], [test $HAVE_GETRANDOM = 0 || test $REPLACE_GETRANDOM = 1]) gl_SYS_RANDOM_MODULE_INDICATOR([getrandom]) AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) AC_PROG_MKDIR_P AC_REQUIRE([gl_FUNC_SETLOCALE_NULL]) HARD_LOCALE_LIB="$SETLOCALE_NULL_LIB" AC_SUBST([HARD_LOCALE_LIB]) dnl For backward compatibility. LIB_HARD_LOCALE="$HARD_LOCALE_LIB" AC_SUBST([LIB_HARD_LOCALE]) AC_DEFUN([gl_HAVE_MODULE_HAVELIB]) AM_ICONV m4_ifdef([gl_ICONV_MODULE_INDICATOR], [gl_ICONV_MODULE_INDICATOR([iconv])]) gl_INTTYPES_INCOMPLETE gl_INTTYPES_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_FUNC_ISATTY gl_CONDITIONAL([GL_COND_OBJ_ISATTY], [test $REPLACE_ISATTY = 1]) AM_COND_IF([GL_COND_OBJ_ISATTY], [ gl_PREREQ_ISATTY ]) gl_UNISTD_MODULE_INDICATOR([isatty]) gl_FUNC_ISNAND_NO_LIBM if test $gl_func_isnand_no_libm != yes; then AC_LIBOBJ([isnand]) gl_PREREQ_ISNAND fi gl_FUNC_ISNANF_NO_LIBM if test $gl_func_isnanf_no_libm != yes; then AC_LIBOBJ([isnanf]) gl_PREREQ_ISNANF fi gl_FUNC_ISNANL_NO_LIBM if test $gl_func_isnanl_no_libm != yes; then AC_LIBOBJ([isnanl]) gl_PREREQ_ISNANL fi AC_REQUIRE([gl_LARGEFILE]) gl___INLINE gl_LIMITS_H gl_CONDITIONAL_HEADER([limits.h]) AC_PROG_MKDIR_P gl_LOCALCHARSET dnl For backward compatibility. Some packages still use this. LOCALCHARSET_TESTS_ENVIRONMENT= AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT]) gl_LOCALE_H gl_LOCALE_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_FUNC_LSTAT gl_CONDITIONAL([GL_COND_OBJ_LSTAT], [test $REPLACE_LSTAT = 1]) AM_COND_IF([GL_COND_OBJ_LSTAT], [ gl_PREREQ_LSTAT ]) gl_SYS_STAT_MODULE_INDICATOR([lstat]) gl_FUNC_MALLOC_GNU if test $REPLACE_MALLOC_FOR_MALLOC_GNU = 1; then AC_LIBOBJ([malloc]) fi gl_STDLIB_MODULE_INDICATOR([malloc-gnu]) AC_REQUIRE([gl_FUNC_MALLOC_POSIX]) if test $REPLACE_MALLOC_FOR_MALLOC_POSIX = 1; then AC_LIBOBJ([malloc]) fi gl_STDLIB_MODULE_INDICATOR([malloc-posix]) gl_MALLOCA gl_MATH_H gl_MATH_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_FUNC_MBRTOWC gl_CONDITIONAL([GL_COND_OBJ_MBRTOWC], [test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1]) AM_COND_IF([GL_COND_OBJ_MBRTOWC], [ if test $REPLACE_MBSTATE_T = 1; then AC_LIBOBJ([lc-charset-dispatch]) AC_LIBOBJ([mbtowc-lock]) gl_PREREQ_MBTOWC_LOCK fi gl_PREREQ_MBRTOWC ]) gl_WCHAR_MODULE_INDICATOR([mbrtowc]) gl_FUNC_MBSINIT gl_CONDITIONAL([GL_COND_OBJ_MBSINIT], [test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1]) AM_COND_IF([GL_COND_OBJ_MBSINIT], [ gl_PREREQ_MBSINIT ]) gl_WCHAR_MODULE_INDICATOR([mbsinit]) gl_FUNC_MEMCHR gl_CONDITIONAL([GL_COND_OBJ_MEMCHR], [test $REPLACE_MEMCHR = 1]) AM_COND_IF([GL_COND_OBJ_MEMCHR], [ gl_PREREQ_MEMCHR ]) gl_STRING_MODULE_INDICATOR([memchr]) gl_FUNC_MEMPCPY gl_CONDITIONAL([GL_COND_OBJ_MEMPCPY], [test $HAVE_MEMPCPY = 0 || test $REPLACE_MEMPCPY = 1]) AM_COND_IF([GL_COND_OBJ_MEMPCPY], [ gl_PREREQ_MEMPCPY ]) gl_STRING_MODULE_INDICATOR([mempcpy]) gl_MINMAX gl_FUNC_MKDIR gl_CONDITIONAL([GL_COND_OBJ_MKDIR], [test $REPLACE_MKDIR = 1]) gl_SYS_STAT_MODULE_INDICATOR([mkdir]) gl_FUNC_MKSTEMPS gl_CONDITIONAL([GL_COND_OBJ_MKSTEMPS], [test $HAVE_MKSTEMPS = 0]) gl_MODULE_INDICATOR([mkstemps]) gl_STDLIB_MODULE_INDICATOR([mkstemps]) AC_REQUIRE([gl_MSVC_INVAL]) gl_CONDITIONAL([GL_COND_OBJ_MSVC_INVAL], [test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1]) AC_REQUIRE([gl_MSVC_NOTHROW]) gl_CONDITIONAL([GL_COND_OBJ_MSVC_NOTHROW], [test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1]) gl_MODULE_INDICATOR([msvc-nothrow]) gl_MULTIARCH gl_FUNC_OPEN gl_CONDITIONAL([GL_COND_OBJ_OPEN], [test $REPLACE_OPEN = 1]) AM_COND_IF([GL_COND_OBJ_OPEN], [ gl_PREREQ_OPEN ]) gl_FCNTL_MODULE_INDICATOR([open]) gl_PATHMAX gl_FUNC_PIPE gl_CONDITIONAL([GL_COND_OBJ_PIPE], [test $HAVE_PIPE = 0]) gl_UNISTD_MODULE_INDICATOR([pipe]) gl_FUNC_PRINTF_FREXP gl_FUNC_PRINTF_FREXPL m4_divert_text([INIT_PREPARE], [gl_printf_safe=yes]) gl_QUOTE gl_QUOTEARG gl_FUNC_RAISE gl_CONDITIONAL([GL_COND_OBJ_RAISE], [test $HAVE_RAISE = 0 || test $REPLACE_RAISE = 1]) AM_COND_IF([GL_COND_OBJ_RAISE], [ gl_PREREQ_RAISE ]) gl_SIGNAL_MODULE_INDICATOR([raise]) gl_FUNC_RAWMEMCHR gl_CONDITIONAL([GL_COND_OBJ_RAWMEMCHR], [test $HAVE_RAWMEMCHR = 0]) AM_COND_IF([GL_COND_OBJ_RAWMEMCHR], [ gl_PREREQ_RAWMEMCHR ]) gl_STRING_MODULE_INDICATOR([rawmemchr]) gl_FUNC_READLINK gl_CONDITIONAL([GL_COND_OBJ_READLINK], [test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1]) AM_COND_IF([GL_COND_OBJ_READLINK], [ gl_PREREQ_READLINK ]) gl_UNISTD_MODULE_INDICATOR([readlink]) gl_FUNC_REALLOC_GNU if test $REPLACE_REALLOC_FOR_REALLOC_GNU = 1; then AC_LIBOBJ([realloc]) fi gl_STDLIB_MODULE_INDICATOR([realloc-gnu]) gl_FUNC_REALLOC_POSIX if test $REPLACE_REALLOC_FOR_REALLOC_POSIX = 1; then AC_LIBOBJ([realloc]) fi gl_STDLIB_MODULE_INDICATOR([realloc-posix]) gl_FUNC_REALLOCARRAY gl_CONDITIONAL([GL_COND_OBJ_REALLOCARRAY], [test $HAVE_REALLOCARRAY = 0 || test $REPLACE_REALLOCARRAY = 1]) AM_COND_IF([GL_COND_OBJ_REALLOCARRAY], [ gl_PREREQ_REALLOCARRAY ]) gl_MODULE_INDICATOR([reallocarray]) gl_STDLIB_MODULE_INDICATOR([reallocarray]) gl_FUNC_SETLOCALE_NULL gl_CONDITIONAL([GL_COND_OBJ_SETLOCALE_LOCK], [test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0]) AM_COND_IF([GL_COND_OBJ_SETLOCALE_LOCK], [ gl_PREREQ_SETLOCALE_LOCK ]) gl_LOCALE_MODULE_INDICATOR([setlocale_null]) gl_SIGACTION gl_CONDITIONAL([GL_COND_OBJ_SIGACTION], [test $HAVE_SIGACTION = 0]) AM_COND_IF([GL_COND_OBJ_SIGACTION], [ gl_PREREQ_SIGACTION ]) gl_SIGNAL_MODULE_INDICATOR([sigaction]) gl_SIGNAL_H gl_SIGNAL_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_SIGNBIT gl_CONDITIONAL([GL_COND_OBJ_SIGNBIT3], [test $REPLACE_SIGNBIT = 1]) gl_MATH_MODULE_INDICATOR([signbit]) gl_SIGNALBLOCKING gl_CONDITIONAL([GL_COND_OBJ_SIGPROCMASK], [test $HAVE_POSIX_SIGNALBLOCKING = 0]) AM_COND_IF([GL_COND_OBJ_SIGPROCMASK], [ gl_PREREQ_SIGPROCMASK ]) gl_SIGNAL_MODULE_INDICATOR([sigprocmask]) gl_SIZE_MAX gt_TYPE_SSIZE_T gl_FUNC_STAT gl_CONDITIONAL([GL_COND_OBJ_STAT], [test $REPLACE_STAT = 1]) AM_COND_IF([GL_COND_OBJ_STAT], [ case "$host_os" in mingw*) AC_LIBOBJ([stat-w32]) ;; esac gl_PREREQ_STAT ]) gl_SYS_STAT_MODULE_INDICATOR([stat]) gl_STAT_TIME gl_STAT_BIRTHTIME gl_C_BOOL AC_CHECK_HEADERS_ONCE([stdckdint.h]) if test $ac_cv_header_stdckdint_h = yes; then GL_GENERATE_STDCKDINT_H=false else GL_GENERATE_STDCKDINT_H=true fi gl_CONDITIONAL_HEADER([stdckdint.h]) AC_PROG_MKDIR_P gl_STDDEF_H gl_STDDEF_H_REQUIRE_DEFAULTS gl_CONDITIONAL_HEADER([stddef.h]) AC_PROG_MKDIR_P gl_STDINT_H gl_CONDITIONAL_HEADER([stdint.h]) dnl Because of gl_REPLACE_LIMITS_H: gl_CONDITIONAL_HEADER([limits.h]) AC_PROG_MKDIR_P gl_STDIO_H gl_STDIO_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_CONDITIONAL([GL_COND_OBJ_STDIO_READ], [test $REPLACE_STDIO_READ_FUNCS = 1]) gl_CONDITIONAL([GL_COND_OBJ_STDIO_WRITE], [test $REPLACE_STDIO_WRITE_FUNCS = 1]) dnl No need to create extra modules for these functions. Everyone who uses dnl likely needs them. gl_STDIO_MODULE_INDICATOR([fscanf]) gl_MODULE_INDICATOR([fscanf]) gl_STDIO_MODULE_INDICATOR([scanf]) gl_MODULE_INDICATOR([scanf]) gl_STDIO_MODULE_INDICATOR([fgetc]) gl_STDIO_MODULE_INDICATOR([getc]) gl_STDIO_MODULE_INDICATOR([getchar]) gl_STDIO_MODULE_INDICATOR([fgets]) gl_STDIO_MODULE_INDICATOR([fread]) dnl No need to create extra modules for these functions. Everyone who uses dnl likely needs them. gl_STDIO_MODULE_INDICATOR([fprintf]) gl_STDIO_MODULE_INDICATOR([printf]) gl_STDIO_MODULE_INDICATOR([vfprintf]) gl_STDIO_MODULE_INDICATOR([vprintf]) gl_STDIO_MODULE_INDICATOR([fputc]) gl_STDIO_MODULE_INDICATOR([putc]) gl_STDIO_MODULE_INDICATOR([putchar]) gl_STDIO_MODULE_INDICATOR([fputs]) gl_STDIO_MODULE_INDICATOR([puts]) gl_STDIO_MODULE_INDICATOR([fwrite]) gl_STDLIB_H gl_STDLIB_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_FUNC_STRERROR gl_CONDITIONAL([GL_COND_OBJ_STRERROR], [test $REPLACE_STRERROR = 1]) gl_MODULE_INDICATOR([strerror]) gl_STRING_MODULE_INDICATOR([strerror]) AC_REQUIRE([gl_HEADER_ERRNO_H]) AC_REQUIRE([gl_FUNC_STRERROR_0]) gl_CONDITIONAL([GL_COND_OBJ_STRERROR_OVERRIDE], [test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1]) AM_COND_IF([GL_COND_OBJ_STRERROR_OVERRIDE], [ gl_PREREQ_SYS_H_WINSOCK2 ]) gl_STRING_H gl_STRING_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_FUNC_STRNDUP gl_CONDITIONAL([GL_COND_OBJ_STRNDUP], [test $HAVE_STRNDUP = 0 || test $REPLACE_STRNDUP = 1]) gl_STRING_MODULE_INDICATOR([strndup]) gl_FUNC_STRNLEN gl_CONDITIONAL([GL_COND_OBJ_STRNLEN], [test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1]) AM_COND_IF([GL_COND_OBJ_STRNLEN], [ gl_PREREQ_STRNLEN ]) gl_STRING_MODULE_INDICATOR([strnlen]) gl_SYS_RANDOM_H gl_SYS_RANDOM_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_SYS_STAT_H gl_SYS_STAT_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_SYS_TYPES_H gl_SYS_TYPES_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_SYS_WAIT_H gl_SYS_WAIT_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_FUNC_GEN_TEMPNAME gl_MODULE_INDICATOR([tempname]) gl_TIME_H gl_TIME_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_UNISTD_H gl_UNISTD_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_FUNC_UTIME gl_CONDITIONAL([GL_COND_OBJ_UTIME], [test $HAVE_UTIME = 0 || test $REPLACE_UTIME = 1]) AM_COND_IF([GL_COND_OBJ_UTIME], [ gl_PREREQ_UTIME ]) gl_UTIME_MODULE_INDICATOR([utime]) gl_UTIME_H gl_UTIME_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P AC_C_VARARRAYS AC_REQUIRE([AC_C_RESTRICT]) gl_FUNC_VASNPRINTF gl_FUNC_VASPRINTF gl_STDIO_MODULE_INDICATOR([vasprintf]) m4_ifdef([AM_XGETTEXT_OPTION], [AM_][XGETTEXT_OPTION([--flag=asprintf:2:c-format]) AM_][XGETTEXT_OPTION([--flag=vasprintf:2:c-format])]) gl_FUNC_VFPRINTF_POSIX gl_STDIO_MODULE_INDICATOR([vfprintf-posix]) gl_MODULE_INDICATOR([vfprintf-posix]) gl_FUNC_VPRINTF_POSIX gl_STDIO_MODULE_INDICATOR([vprintf-posix]) gl_MODULE_INDICATOR([vprintf-posix]) gl_WCHAR_H gl_WCHAR_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_WCTYPE_H gl_WCTYPE_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_XALLOC gl_MODULE_INDICATOR([xalloc]) gl_MODULE_INDICATOR([xalloc-die]) gl_XSIZE # End of code from modules m4_ifval(gl_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || for gl_file in ]gl_LIBSOURCES_LIST[ ; do if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2 exit 1 fi done])dnl m4_if(m4_sysval, [0], [], [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) ]) m4_popdef([GL_MODULE_INDICATOR_PREFIX]) m4_popdef([GL_MACRO_PREFIX]) m4_popdef([gl_LIBSOURCES_DIR]) m4_popdef([gl_LIBSOURCES_LIST]) m4_popdef([AC_LIBSOURCES]) m4_popdef([AC_REPLACE_FUNCS]) m4_popdef([AC_LIBOBJ]) AC_CONFIG_COMMANDS_PRE([ gl_libobjs= gl_ltlibobjs= gl_libobjdeps= if test -n "$gl_LIBOBJS"; then # Remove the extension. changequote(,)dnl sed_drop_objext='s/\.o$//;s/\.obj$//' sed_dirname1='s,//*,/,g' sed_dirname2='s,\(.\)/$,\1,' sed_dirname3='s,^[^/]*$,.,' sed_dirname4='s,\(.\)/[^/]*$,\1,' sed_basename1='s,.*/,,' changequote([, ])dnl for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gl_libobjs="$gl_libobjs $i.$ac_objext" gl_ltlibobjs="$gl_ltlibobjs $i.lo" i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` i_base=`echo "$i" | sed -e "$sed_basename1"` gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Plo" done fi AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) AC_SUBST([gl_LIBOBJDEPS], [$gl_libobjdeps]) ]) gltests_libdeps= gltests_ltlibdeps= m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ])) m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS])) m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES])) m4_pushdef([gltests_LIBSOURCES_LIST], []) m4_pushdef([gltests_LIBSOURCES_DIR], []) m4_pushdef([GL_MACRO_PREFIX], [gltests]) m4_pushdef([GL_MODULE_INDICATOR_PREFIX], [GL]) gl_COMMON gl_source_base='tests' gl_source_base_prefix= changequote(,)dnl gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS changequote([, ])dnl AC_SUBST([gltests_WITNESS]) gl_module_indicator_condition=$gltests_WITNESS m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition]) m4_popdef([gl_MODULE_INDICATOR_CONDITION]) m4_ifval(gltests_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ || for gl_file in ]gltests_LIBSOURCES_LIST[ ; do if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2 exit 1 fi done])dnl m4_if(m4_sysval, [0], [], [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) ]) m4_popdef([GL_MODULE_INDICATOR_PREFIX]) m4_popdef([GL_MACRO_PREFIX]) m4_popdef([gltests_LIBSOURCES_DIR]) m4_popdef([gltests_LIBSOURCES_LIST]) m4_popdef([AC_LIBSOURCES]) m4_popdef([AC_REPLACE_FUNCS]) m4_popdef([AC_LIBOBJ]) AC_CONFIG_COMMANDS_PRE([ gltests_libobjs= gltests_ltlibobjs= gltests_libobjdeps= if test -n "$gltests_LIBOBJS"; then # Remove the extension. changequote(,)dnl sed_drop_objext='s/\.o$//;s/\.obj$//' sed_dirname1='s,//*,/,g' sed_dirname2='s,\(.\)/$,\1,' sed_dirname3='s,^[^/]*$,.,' sed_dirname4='s,\(.\)/[^/]*$,\1,' sed_basename1='s,.*/,,' changequote([, ])dnl for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gltests_libobjs="$gltests_libobjs $i.$ac_objext" gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` i_base=`echo "$i" | sed -e "$sed_basename1"` gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Plo" done fi AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) AC_SUBST([gltests_LIBOBJDEPS], [$gltests_libobjdeps]) ]) AC_REQUIRE([gl_CC_GNULIB_WARNINGS]) ]) # Like AC_LIBOBJ, except that the module name goes # into gl_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gl_LIBOBJ], [ AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext" ]) # Like AC_REPLACE_FUNCS, except that the module name goes # into gl_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gl_REPLACE_FUNCS], [ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)]) ]) # Like AC_LIBSOURCES, except the directory where the source file is # expected is derived from the gnulib-tool parameterization, # and alloca is special cased (for the alloca-opt module). # We could also entirely rely on EXTRA_lib..._SOURCES. AC_DEFUN([gl_LIBSOURCES], [ m4_foreach([_gl_NAME], [$1], [ m4_if(_gl_NAME, [alloca.c], [], [ m4_define([gl_LIBSOURCES_DIR], [lib]) m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ]) ]) ]) ]) # Like AC_LIBOBJ, except that the module name goes # into gltests_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gltests_LIBOBJ], [ AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext" ]) # Like AC_REPLACE_FUNCS, except that the module name goes # into gltests_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gltests_REPLACE_FUNCS], [ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)]) ]) # Like AC_LIBSOURCES, except the directory where the source file is # expected is derived from the gnulib-tool parameterization, # and alloca is special cased (for the alloca-opt module). # We could also entirely rely on EXTRA_lib..._SOURCES. AC_DEFUN([gltests_LIBSOURCES], [ m4_foreach([_gl_NAME], [$1], [ m4_if(_gl_NAME, [alloca.c], [], [ m4_define([gltests_LIBSOURCES_DIR], [tests]) m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ]) ]) ]) ]) # This macro records the list of files which have been installed by # gnulib-tool and may be removed by future gnulib-tool invocations. AC_DEFUN([gl_FILE_LIST], [ build-aux/bootstrap.in build-aux/config.rpath build-aux/extract-trace build-aux/funclib.sh build-aux/inline-source build-aux/options-parser lib/_Noreturn.h lib/alloca.in.h lib/arg-nonnull.h lib/argmatch.c lib/argmatch.h lib/asnprintf.c lib/asprintf.c lib/assert.in.h lib/attribute.h lib/basename-lgpl.c lib/basename-lgpl.h lib/basename.c lib/binary-io.c lib/binary-io.h lib/bitrotate.c lib/bitrotate.h lib/c++defs.h lib/c-ctype.c lib/c-ctype.h lib/c-strcase.h lib/c-strcasecmp.c lib/c-strcaseeq.h lib/c-strncasecmp.c lib/calloc.c lib/canonicalize-lgpl.c lib/cdefs.h lib/cloexec.c lib/cloexec.h lib/close.c lib/dirname-lgpl.c lib/dirname.c lib/dirname.h lib/dup2.c lib/eloop-threshold.h lib/errno.in.h lib/error.c lib/error.in.h lib/exitfail.c lib/exitfail.h lib/fcntl.c lib/fcntl.in.h lib/fd-hook.c lib/fd-hook.h lib/filename.h lib/float+.h lib/float.c lib/float.in.h lib/fpucw.h lib/free.c lib/frexp.c lib/frexpl.c lib/fseterr.c lib/fseterr.h lib/fstat.c lib/getdtablesize.c lib/getopt-cdefs.in.h lib/getopt-core.h lib/getopt-ext.h lib/getopt-pfx-core.h lib/getopt-pfx-ext.h lib/getopt.c lib/getopt.in.h lib/getopt1.c lib/getopt_int.h lib/getprogname.c lib/getprogname.h lib/getrandom.c lib/gettext.h lib/hard-locale.c lib/hard-locale.h lib/hash.c lib/hash.h lib/ialloc.c lib/ialloc.h lib/idx.h lib/intprops-internal.h lib/intprops.h lib/inttypes.in.h lib/isatty.c lib/isnan.c lib/isnand-nolibm.h lib/isnand.c lib/isnanf-nolibm.h lib/isnanf.c lib/isnanl-nolibm.h lib/isnanl.c lib/itold.c lib/lc-charset-dispatch.c lib/lc-charset-dispatch.h lib/libc-config.h lib/limits.in.h lib/localcharset.c lib/localcharset.h lib/locale.in.h lib/lstat.c lib/malloc.c lib/malloc/scratch_buffer.h lib/malloc/scratch_buffer_grow.c lib/malloc/scratch_buffer_grow_preserve.c lib/malloc/scratch_buffer_set_array_size.c lib/malloca.c lib/malloca.h lib/math.c lib/math.in.h lib/mbrtowc-impl-utf8.h lib/mbrtowc-impl.h lib/mbrtowc.c lib/mbsinit.c lib/mbtowc-lock.c lib/mbtowc-lock.h lib/memchr.c lib/memchr.valgrind lib/mempcpy.c lib/minmax.h lib/mkdir.c lib/mkstemps.c lib/msvc-inval.c lib/msvc-inval.h lib/msvc-nothrow.c lib/msvc-nothrow.h lib/open.c lib/pathmax.h lib/pipe.c lib/printf-args.c lib/printf-args.h lib/printf-frexp.c lib/printf-frexp.h lib/printf-frexpl.c lib/printf-frexpl.h lib/printf-parse.c lib/printf-parse.h lib/quote.h lib/quotearg.c lib/quotearg.h lib/raise.c lib/rawmemchr.c lib/rawmemchr.valgrind lib/readlink.c lib/realloc.c lib/reallocarray.c lib/scratch_buffer.h lib/setlocale-lock.c lib/setlocale_null.c lib/setlocale_null.h lib/sig-handler.c lib/sig-handler.h lib/sigaction.c lib/signal.in.h lib/signbitd.c lib/signbitf.c lib/signbitl.c lib/sigprocmask.c lib/size_max.h lib/stat-time.c lib/stat-time.h lib/stat-w32.c lib/stat-w32.h lib/stat.c lib/stdckdint.in.h lib/stddef.in.h lib/stdint.in.h lib/stdio-impl.h lib/stdio-read.c lib/stdio-write.c lib/stdio.in.h lib/stdlib.in.h lib/streq.h lib/strerror-override.c lib/strerror-override.h lib/strerror.c lib/string.in.h lib/stripslash.c lib/strndup.c lib/strnlen.c lib/sys_random.in.h lib/sys_stat.in.h lib/sys_types.in.h lib/sys_wait.in.h lib/tempname.c lib/tempname.h lib/time.in.h lib/unistd.c lib/unistd.in.h lib/utime.c lib/utime.in.h lib/vasnprintf.c lib/vasnprintf.h lib/vasprintf.c lib/verify.h lib/vfprintf.c lib/vprintf.c lib/warn-on-use.h lib/wchar.in.h lib/wctype-h.c lib/wctype.in.h lib/windows-initguard.h lib/xalloc-die.c lib/xalloc-oversized.h lib/xalloc.h lib/xbinary-io.c lib/xbinary-io.h lib/xmalloc.c lib/xsize.c lib/xsize.h m4/00gnulib.m4 m4/__inline.m4 m4/absolute-header.m4 m4/alloca.m4 m4/assert_h.m4 m4/builtin-expect.m4 m4/c-bool.m4 m4/calloc.m4 m4/canonicalize.m4 m4/clock_time.m4 m4/close.m4 m4/codeset.m4 m4/double-slash-root.m4 m4/dup2.m4 m4/eealloc.m4 m4/errno_h.m4 m4/error.m4 m4/error_h.m4 m4/exponentd.m4 m4/exponentf.m4 m4/exponentl.m4 m4/extensions.m4 m4/extern-inline.m4 m4/fcntl-o.m4 m4/fcntl.m4 m4/fcntl_h.m4 m4/float_h.m4 m4/fpieee.m4 m4/free.m4 m4/frexp.m4 m4/frexpl.m4 m4/fseterr.m4 m4/fstat.m4 m4/getdtablesize.m4 m4/getopt.m4 m4/getprogname.m4 m4/getrandom.m4 m4/gnulib-common.m4 m4/host-cpu-c-abi.m4 m4/iconv.m4 m4/include_next.m4 m4/intmax_t.m4 m4/inttypes.m4 m4/inttypes_h.m4 m4/isatty.m4 m4/isnand.m4 m4/isnanf.m4 m4/isnanl.m4 m4/largefile.m4 m4/ldexpl.m4 m4/lib-ld.m4 m4/lib-link.m4 m4/lib-prefix.m4 m4/limits-h.m4 m4/localcharset.m4 m4/locale-fr.m4 m4/locale-ja.m4 m4/locale-zh.m4 m4/locale_h.m4 m4/lstat.m4 m4/malloc.m4 m4/malloca.m4 m4/manywarnings-c++.m4 m4/manywarnings.m4 m4/math_h.m4 m4/mbrtowc.m4 m4/mbsinit.m4 m4/mbstate_t.m4 m4/memchr.m4 m4/mempcpy.m4 m4/minmax.m4 m4/mkdir.m4 m4/mkstemps.m4 m4/mmap-anon.m4 m4/mode_t.m4 m4/msvc-inval.m4 m4/msvc-nothrow.m4 m4/multiarch.m4 m4/nocrash.m4 m4/off_t.m4 m4/open-cloexec.m4 m4/open-slash.m4 m4/open.m4 m4/pathmax.m4 m4/pid_t.m4 m4/pipe.m4 m4/printf-frexp.m4 m4/printf-frexpl.m4 m4/printf.m4 m4/quote.m4 m4/quotearg.m4 m4/raise.m4 m4/rawmemchr.m4 m4/readlink.m4 m4/realloc.m4 m4/reallocarray.m4 m4/setlocale_null.m4 m4/sigaction.m4 m4/signal_h.m4 m4/signalblocking.m4 m4/signbit.m4 m4/size_max.m4 m4/ssize_t.m4 m4/stat-time.m4 m4/stat.m4 m4/std-gnu11.m4 m4/stdalign.m4 m4/stddef_h.m4 m4/stdint.m4 m4/stdint_h.m4 m4/stdio_h.m4 m4/stdlib_h.m4 m4/strerror.m4 m4/string_h.m4 m4/strndup.m4 m4/strnlen.m4 m4/sys_random_h.m4 m4/sys_socket_h.m4 m4/sys_stat_h.m4 m4/sys_types_h.m4 m4/sys_wait_h.m4 m4/tempname.m4 m4/threadlib.m4 m4/time_h.m4 m4/unistd_h.m4 m4/utime.m4 m4/utime_h.m4 m4/vararrays.m4 m4/vasnprintf.m4 m4/vasprintf.m4 m4/vfprintf-posix.m4 m4/visibility.m4 m4/vprintf-posix.m4 m4/warn-on-use.m4 m4/warnings.m4 m4/wchar_h.m4 m4/wchar_t.m4 m4/wctype_h.m4 m4/wint_t.m4 m4/xalloc.m4 m4/xsize.m4 m4/zzgnulib.m4 ]) recode-3.7.15/m4/utime.m40000644000175000017500000000555514371444255010461 # utime.m4 serial 4 dnl Copyright (C) 2017-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_UTIME], [ AC_REQUIRE([gl_UTIME_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_CHECK_FUNCS_ONCE([lstat]) case "$host_os" in mingw*) dnl On this platform, the original utime() or _utime() produces dnl timestamps that are affected by the time zone. dnl Use the function name 'rpl_utime' always, in order to avoid a dnl possible conflict with the function name 'utime' from oldnames.lib dnl (MSVC) or liboldnames.a (mingw). REPLACE_UTIME=1 ;; *) AC_CHECK_FUNCS([utime]) if test $ac_cv_func_utime = no; then HAVE_UTIME=0 else dnl On macOS 10.13, utime("link-to-file/", NULL) mistakenly succeeds. AC_CACHE_CHECK([whether utime handles trailing slashes on files], [gl_cv_func_utime_file_slash], [touch conftest.tmp # Assume that if we have lstat, we can also check symlinks. if test $ac_cv_func_lstat = yes; then ln -s conftest.tmp conftest.lnk fi AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include ]], [[int result = 0; if (!utime ("conftest.tmp/", NULL)) result |= 1; #if HAVE_LSTAT if (!utime ("conftest.lnk/", NULL)) result |= 2; #endif return result; ]])], [gl_cv_func_utime_file_slash=yes], [gl_cv_func_utime_file_slash=no], [case "$host_os" in # Guess yes on Linux systems. linux-* | linux) gl_cv_func_utime_file_slash="guessing yes" ;; # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_utime_file_slash="guessing yes" ;; # Guess no on macOS. darwin*) gl_cv_func_utime_file_slash="guessing no" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_utime_file_slash="$gl_cross_guess_normal" ;; esac ]) rm -f conftest.tmp conftest.lnk ]) case $gl_cv_func_stat_file_slash in *no) REPLACE_UTIME=1 AC_DEFINE([REPLACE_FUNC_UTIME_FILE], [1], [Define to 1 if utime needs help when passed a file name with a trailing slash]) ;; esac fi ;; esac ]) # Prerequisites of lib/utime.c. AC_DEFUN([gl_PREREQ_UTIME], [:]) recode-3.7.15/m4/vasprintf.m40000644000175000017500000000210014371444255011331 # vasprintf.m4 serial 6 dnl Copyright (C) 2002-2003, 2006-2007, 2009-2023 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_VASPRINTF], [ AC_CHECK_FUNCS([vasprintf]) if test $ac_cv_func_vasprintf = no; then gl_REPLACE_VASPRINTF fi ]) AC_DEFUN([gl_REPLACE_VASPRINTF], [ AC_LIBOBJ([vasprintf]) AC_LIBOBJ([asprintf]) AC_REQUIRE([gl_STDIO_H_DEFAULTS]) if test $ac_cv_func_vasprintf = yes; then REPLACE_VASPRINTF=1 else HAVE_VASPRINTF=0 fi gl_PREREQ_VASPRINTF_H gl_PREREQ_VASPRINTF gl_PREREQ_ASPRINTF ]) # Prerequisites of the vasprintf portion of lib/stdio.h. AC_DEFUN([gl_PREREQ_VASPRINTF_H], [ dnl Persuade glibc to declare asprintf() and vasprintf(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) ]) # Prerequisites of lib/vasprintf.c. AC_DEFUN([gl_PREREQ_VASPRINTF], [ ]) # Prerequisites of lib/asprintf.c. AC_DEFUN([gl_PREREQ_ASPRINTF], [ ]) recode-3.7.15/m4/stdalign.m40000644000175000017500000001700214371444255011131 # Check for alignas and alignof that conform to C23. dnl Copyright 2011-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Paul Eggert and Bruno Haible. # Prepare for substituting if it is not supported. AC_DEFUN([gl_ALIGNASOF], [ AC_CACHE_CHECK([for alignas and alignof], [gl_cv_header_working_stdalign_h], [gl_save_CFLAGS=$CFLAGS for gl_working in "yes, keywords" "yes, macros"; do AS_CASE([$gl_working], [*stdalign.h*], [CFLAGS="$gl_save_CFLAGS -DINCLUDE_STDALIGN_H"]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include #ifdef INCLUDE_STDALIGN_H #include #endif #include /* Test that alignof yields a result consistent with offsetof. This catches GCC bug 52023 . */ #ifdef __cplusplus template struct alignof_helper { char a; t b; }; # define ao(type) offsetof (alignof_helper, b) #else # define ao(type) offsetof (struct { char a; type b; }, b) #endif char test_double[ao (double) % _Alignof (double) == 0 ? 1 : -1]; char test_long[ao (long int) % _Alignof (long int) == 0 ? 1 : -1]; char test_alignof[alignof (double) == _Alignof (double) ? 1 : -1]; /* Test alignas only on platforms where gnulib can help. */ #if \ ((defined __cplusplus && 201103 <= __cplusplus) \ || (__TINYC__ && defined __attribute__) \ || (defined __APPLE__ && defined __MACH__ \ ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \ : __GNUC__) \ || (__ia64 && (61200 <= __HP_cc || 61200 <= __HP_aCC)) \ || __ICC || 0x590 <= __SUNPRO_C || 0x0600 <= __xlC__ \ || 1300 <= _MSC_VER) struct alignas_test { char c; char alignas (8) alignas_8; }; char test_alignas[offsetof (struct alignas_test, alignas_8) == 8 ? 1 : -1]; #endif ]])], [gl_cv_header_working_stdalign_h=$gl_working], [gl_cv_header_working_stdalign_h=no]) CFLAGS=$gl_save_CFLAGS test "$gl_cv_header_working_stdalign_h" != no && break done]) AS_CASE([$gl_cv_header_working_stdalign_h], [yes*keyword*], [AC_DEFINE([HAVE_C_ALIGNASOF], [1], [Define to 1 if the alignas and alignof keywords work.])]) dnl The "zz" puts this toward config.h's end, to avoid potential dnl collisions with other definitions. AH_VERBATIM([zzalignas], [#if !defined HAVE_C_ALIGNASOF && __cplusplus < 201103 && !defined alignof # if HAVE_STDALIGN_H # include # endif /* ISO C23 alignas and alignof for platforms that lack it. References: ISO C23 (latest free draft ) sections 6.5.3.4, 6.7.5, 7.15. C++11 (latest free draft ) section 18.10. */ /* alignof (TYPE), also known as _Alignof (TYPE), yields the alignment requirement of a structure member (i.e., slot or field) that is of type TYPE, as an integer constant expression. This differs from GCC's and clang's __alignof__ operator, which can yield a better-performing alignment for an object of that type. For example, on x86 with GCC and on Linux/x86 with clang, __alignof__ (double) and __alignof__ (long long) are 8, whereas alignof (double) and alignof (long long) are 4 unless the option '-malign-double' is used. The result cannot be used as a value for an 'enum' constant, if you want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc. */ /* GCC releases before GCC 4.9 had a bug in _Alignof. See GCC bug 52023 . clang versions < 8.0.0 have the same bug. */ # if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 \ || (defined __GNUC__ && __GNUC__ < 4 + (__GNUC_MINOR__ < 9) \ && !defined __clang__) \ || (defined __clang__ && __clang_major__ < 8)) # undef/**/_Alignof # ifdef __cplusplus # if (201103 <= __cplusplus || defined _MSC_VER) # define _Alignof(type) alignof (type) # else template struct __alignof_helper { char __a; __t __b; }; # define _Alignof(type) offsetof (__alignof_helper, __b) # define _GL_STDALIGN_NEEDS_STDDEF 1 # endif # else # if (defined __GNUC__ && 4 <= __GNUC__) || defined __clang__ # define _Alignof(type) __builtin_offsetof (struct { char __a; type __b; }, __b) # else # define _Alignof(type) offsetof (struct { char __a; type __b; }, __b) # define _GL_STDALIGN_NEEDS_STDDEF 1 # endif # endif # endif # if ! (defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER)) # undef/**/alignof # define alignof _Alignof # endif /* alignas (A), also known as _Alignas (A), aligns a variable or type to the alignment A, where A is an integer constant expression. For example: int alignas (8) foo; struct s { int a; int alignas (8) bar; }; aligns the address of FOO and the offset of BAR to be multiples of 8. A should be a power of two that is at least the type's alignment and at most the implementation's alignment limit. This limit is 2**28 on typical GNUish hosts, and 2**13 on MSVC. To be portable to MSVC through at least version 10.0, A should be an integer constant, as MSVC does not support expressions such as 1 << 3. To be portable to Sun C 5.11, do not align auto variables to anything stricter than their default alignment. The following C23 requirements are not supported here: - If A is zero, alignas has no effect. - alignas can be used multiple times; the strictest one wins. - alignas (TYPE) is equivalent to alignas (alignof (TYPE)). */ # if !HAVE_STDALIGN_H # if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 # if defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER) # define _Alignas(a) alignas (a) # elif (!defined __attribute__ \ && ((defined __APPLE__ && defined __MACH__ \ ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \ : __GNUC__ && !defined __ibmxl__) \ || (4 <= __clang_major__) \ || (__ia64 && (61200 <= __HP_cc || 61200 <= __HP_aCC)) \ || __ICC || 0x590 <= __SUNPRO_C || 0x0600 <= __xlC__)) # define _Alignas(a) __attribute__ ((__aligned__ (a))) # elif 1300 <= _MSC_VER # define _Alignas(a) __declspec (align (a)) # endif # endif # if ((defined _Alignas \ && !(defined __cplusplus \ && (201103 <= __cplusplus || defined _MSC_VER))) \ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) # define alignas _Alignas # endif # endif # if _GL_STDALIGN_NEEDS_STDDEF # include # endif #endif]) ]) AC_DEFUN([gl_STDALIGN_H], [ AC_REQUIRE([gl_ALIGNASOF]) if test "$gl_cv_header_working_stdalign_h" = no; then GL_GENERATE_STDALIGN_H=true else GL_GENERATE_STDALIGN_H=false fi gl_CHECK_NEXT_HEADERS([stdalign.h]) if test $ac_cv_header_stdalign_h = yes; then HAVE_STDALIGN_H=1 else HAVE_STDALIGN_H=0 fi AC_SUBST([HAVE_STDALIGN_H]) ]) recode-3.7.15/m4/quotearg.m40000644000175000017500000000053314371444255011154 # quotearg.m4 serial 10 dnl Copyright (C) 2002, 2004-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_QUOTEARG], [ AC_REQUIRE([AC_C_RESTRICT]) : ]) recode-3.7.15/m4/fpieee.m40000644000175000017500000000434014371444255010562 # fpieee.m4 serial 2 -*- coding: utf-8 -*- dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl IEEE 754 standardized three items: dnl - The formats of single-float and double-float - nowadays commonly dnl available as 'float' and 'double' in C and C++. dnl No autoconf test needed. dnl - The overflow and division by zero behaviour: The result are values dnl '±Inf' and 'NaN', rather than exceptions as it was before. dnl This file provides an autoconf macro for ensuring this behaviour of dnl floating-point operations. dnl - A set of conditions (overflow, underflow, inexact, etc.) which can dnl be configured to trigger an exception. dnl This cannot be done in a portable way: it depends on the compiler, dnl libc, kernel, and CPU. No autoconf macro is provided for this. dnl Ensure non-trapping behaviour of floating-point overflow and dnl floating-point division by zero. dnl (For integer overflow, see gcc's -ftrapv option; for integer division by dnl zero, see the autoconf macro in intdiv0.m4.) AC_DEFUN([gl_FP_IEEE], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) # IEEE behaviour is the default on all CPUs except Alpha and SH # (according to the test results of Bruno Haible's ieeefp/fenv_default.m4 # and the GCC 4.1.2 manual). case "$host_cpu" in alpha*) # On Alpha systems, a compiler option provides the behaviour. # See the ieee(3) manual page, also available at # if test -n "$GCC"; then # GCC has the option -mieee. # For full IEEE compliance (rarely needed), use option -mieee-with-inexact. CPPFLAGS="$CPPFLAGS -mieee" else # Compaq (ex-DEC) C has the option -ieee, equivalent to -ieee_with_no_inexact. # For full IEEE compliance (rarely needed), use option -ieee_with_inexact. CPPFLAGS="$CPPFLAGS -ieee" fi ;; sh*) if test -n "$GCC"; then # GCC has the option -mieee. CPPFLAGS="$CPPFLAGS -mieee" fi ;; esac ]) recode-3.7.15/m4/xalloc.m40000644000175000017500000000047214371444255010611 # xalloc.m4 serial 18 dnl Copyright (C) 2002-2006, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_XALLOC], [:]) recode-3.7.15/m4/codeset.m40000644000175000017500000000152514371444255010755 # codeset.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016, 2019-2023 Free Software dnl Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_DEFUN([AM_LANGINFO_CODESET], [ AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[char* cs = nl_langinfo(CODESET); return !cs;]])], [am_cv_langinfo_codeset=yes], [am_cv_langinfo_codeset=no]) ]) if test $am_cv_langinfo_codeset = yes; then AC_DEFINE([HAVE_LANGINFO_CODESET], [1], [Define if you have and nl_langinfo(CODESET).]) fi ]) recode-3.7.15/m4/mempcpy.m40000644000175000017500000000152714371444255011003 # mempcpy.m4 serial 14 dnl Copyright (C) 2003-2004, 2006-2007, 2009-2023 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_MEMPCPY], [ dnl Persuade glibc to declare mempcpy(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) dnl The mempcpy() declaration in lib/string.in.h uses 'restrict'. AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_STRING_H_DEFAULTS]) gl_CHECK_FUNCS_ANDROID([mempcpy], [[#include ]]) if test $ac_cv_func_mempcpy = no; then HAVE_MEMPCPY=0 case "$gl_cv_onwards_func_mempcpy" in future*) REPLACE_MEMPCPY=1 ;; esac fi ]) # Prerequisites of lib/mempcpy.c. AC_DEFUN([gl_PREREQ_MEMPCPY], [ : ]) recode-3.7.15/m4/strndup.m40000644000175000017500000000326514371444255011031 # strndup.m4 serial 23 dnl Copyright (C) 2002-2003, 2005-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_STRNDUP], [ dnl Persuade glibc to declare strndup(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([gl_STRING_H_DEFAULTS]) AC_CHECK_DECLS_ONCE([strndup]) AC_CHECK_FUNCS_ONCE([strndup]) if test $ac_cv_have_decl_strndup = no; then HAVE_DECL_STRNDUP=0 fi if test $ac_cv_func_strndup = yes; then HAVE_STRNDUP=1 # AIX 4.3.3, AIX 5.1 have a function that fails to add the terminating '\0'. AC_CACHE_CHECK([for working strndup], [gl_cv_func_strndup_works], [AC_RUN_IFELSE([ AC_LANG_PROGRAM([[#include #include ]], [[ #if !HAVE_DECL_STRNDUP extern #ifdef __cplusplus "C" #endif char *strndup (const char *, size_t); #endif int result; char *s; s = strndup ("some longer string", 15); free (s); s = strndup ("shorter string", 13); result = s[13] != '\0'; free (s); return result;]])], [gl_cv_func_strndup_works=yes], [gl_cv_func_strndup_works=no], [ changequote(,)dnl case $host_os in aix | aix[3-6]*) gl_cv_func_strndup_works="guessing no";; *) gl_cv_func_strndup_works="guessing yes";; esac changequote([,])dnl ])]) case $gl_cv_func_strndup_works in *no) REPLACE_STRNDUP=1 ;; esac else HAVE_STRNDUP=0 fi ]) recode-3.7.15/m4/libtool.m40000644000175000017500000113165214605013133010764 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2019, 2021-2022 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool 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 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool 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, see . ]) # serial 59 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_PREPARE_CC_BASENAME # ----------------------- m4_defun([_LT_PREPARE_CC_BASENAME], [ # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in @S|@*""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } ])# _LT_PREPARE_CC_BASENAME # _LT_CC_BASENAME(CC) # ------------------- # It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, # but that macro is also expanded into generated libtool script, which # arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], [m4_require([_LT_PREPARE_CC_BASENAME])dnl AC_REQUIRE([_LT_DECL_SED])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl func_cc_basename $1 cc_basename=$func_cc_basename_result ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_DECL_FILECMD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC and # ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test 0 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) case $MACOSX_DEPLOYMENT_TARGET,$host in 10.[[012]],*|,*powerpc*-darwin[[5-8]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; *) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test yes = "$lt_cv_ld_force_load"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [m4_require([_LT_DECL_SED])dnl AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} _LT_DECL([], [AR], [1], [The archiver]) # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because thats what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS _LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. _LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen=shl_load], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -z "$STRIP"; then AC_MSG_RESULT([no]) else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_PREPARE_MUNGE_PATH_LIST # --------------------------- # Make sure func_munge_path_list() is defined correctly. m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], [[# func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x@S|@2 in x) ;; *:) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; *::*) eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" ;; *) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; esac } ]])# _LT_PREPARE_PATH_LIST # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown AC_ARG_VAR([LT_SYS_LIBRARY_PATH], [User-defined run-time library search path.]) case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], [Detected run-time system search path for libraries]) _LT_DECL([], [configure_time_lt_sys_library_path], [2], [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], [if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi]) rm -f conftest.i conftest2.i conftest.out]) ])# _LT_PATH_DD # _LT_CMD_TRUNCATE # ---------------- # find command to truncate a binary pipe m4_defun([_LT_CMD_TRUNCATE], [m4_require([_LT_PATH_DD]) AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], [printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) _LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], [Command to truncate a binary pipe]) ])# _LT_CMD_TRUNCATE # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # _LT_DLL_DEF_P([FILE]) # --------------------- # True iff FILE is a Windows DLL '.def' file. # Keep in sync with func_dll_def_p in the libtool script AC_DEFUN([_LT_DLL_DEF_P], [dnl test DEF = "`$SED -n dnl -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl -e q dnl Only consider the first "real" line $1`" dnl ])# _LT_DLL_DEF_P # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([nm_interface], [lt_cv_nm_interface], [1], [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # flang / f18. f95 an alias for gfortran or flang on Debian flang* | f18* | f95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl* | icl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl* | icl*) # Native MSVC or ICC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC and ICC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly* | midnightbsd*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi _LT_TAGVAR(link_all_deplibs, $1)=no else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; osf3*) if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test yes = "$GCC"; then wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl* | ,icl* | no,icl*) # Native MSVC or ICC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @S|@2 in .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_FILECMD # ---------------- # Check for a file(cmd) program that can be used to detect file type and magic m4_defun([_LT_DECL_FILECMD], [AC_CHECK_TOOL([FILECMD], [file], [:]) _LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) ])# _LD_DECL_FILECMD # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS recode-3.7.15/m4/fstat.m40000644000175000017500000000211714371444255010446 # fstat.m4 serial 8 dnl Copyright (C) 2011-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FSTAT], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) case "$host_os" in mingw* | solaris*) dnl On MinGW, the original stat() returns st_atime, st_mtime, dnl st_ctime values that are affected by the time zone. dnl Solaris stat can return a negative tv_nsec. REPLACE_FSTAT=1 ;; esac dnl Replace fstat() for supporting the gnulib-defined open() on directories. m4_ifdef([gl_FUNC_FCHDIR], [ gl_TEST_FCHDIR if test $HAVE_FCHDIR = 0; then case "$gl_cv_func_open_directory_works" in *yes) ;; *) REPLACE_FSTAT=1 ;; esac fi ]) ]) # Prerequisites of lib/fstat.c and lib/stat-w32.c. AC_DEFUN([gl_PREREQ_FSTAT], [ AC_REQUIRE([gl_SYS_STAT_H]) AC_REQUIRE([gl_PREREQ_STAT_W32]) : ]) recode-3.7.15/m4/gnulib-cache.m40000644000175000017500000000502114574045617011647 # Copyright (C) 2002-2023 Free Software Foundation, Inc. # # This file 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 3 of the License, or # (at your option) any later version. # # This file 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # # This file represents the specification of how gnulib-tool is used. # It acts as a cache: It is written and read by gnulib-tool. # In projects that use version control, this file is meant to be put under # version control, like the configure.ac and various Makefile.am files. # Specification in the form of a command-line invocation: # gnulib-tool --import --local-dir=gl-mod/bootstrap --local-dir=gl \ # --lib=libgnu \ # --source-base=lib \ # --m4-base=m4 \ # --doc-base=doc \ # --tests-base=tests \ # --aux-dir=build-aux \ # --no-conditional-dependencies \ # --libtool \ # --macro-prefix=gl \ # argmatch \ # bootstrap \ # canonicalize-lgpl \ # dirname \ # error \ # getopt-posix \ # gettext-h \ # hash \ # iconv \ # isatty \ # localcharset \ # manywarnings \ # minmax \ # mkstemps \ # pathmax \ # pipe-posix \ # quotearg \ # sigaction \ # strndup \ # sys_wait \ # unistd \ # utime \ # vasprintf \ # vprintf-posix \ # xalloc \ # xbinary-io # Specification in the form of a few gnulib-tool.m4 macro invocations: gl_LOCAL_DIR([gl-mod/bootstrap:gl]) gl_MODULES([ argmatch bootstrap canonicalize-lgpl dirname error getopt-posix gettext-h hash iconv isatty localcharset manywarnings minmax mkstemps pathmax pipe-posix quotearg sigaction strndup sys_wait unistd utime vasprintf vprintf-posix xalloc xbinary-io ]) gl_AVOID([]) gl_SOURCE_BASE([lib]) gl_M4_BASE([m4]) gl_PO_BASE([]) gl_DOC_BASE([doc]) gl_TESTS_BASE([tests]) gl_LIB([libgnu]) gl_MAKEFILE_NAME([]) gl_LIBTOOL gl_MACRO_PREFIX([gl]) gl_PO_DOMAIN([]) gl_WITNESS_C_MACRO([]) recode-3.7.15/m4/host-cpu-c-abi.m40000644000175000017500000005372014371444255012046 # host-cpu-c-abi.m4 serial 15 dnl Copyright (C) 2002-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible and Sam Steingold. dnl Sets the HOST_CPU variable to the canonical name of the CPU. dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its dnl C language ABI (application binary interface). dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in dnl config.h. dnl dnl This canonical name can be used to select a particular assembly language dnl source file that will interoperate with C code on the given host. dnl dnl For example: dnl * 'i386' and 'sparc' are different canonical names, because code for i386 dnl will not run on SPARC CPUs and vice versa. They have different dnl instruction sets. dnl * 'sparc' and 'sparc64' are different canonical names, because code for dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit dnl mode, but not both. dnl * 'mips' and 'mipsn32' are different canonical names, because they use dnl different argument passing and return conventions for C functions, and dnl although the instruction set of 'mips' is a large subset of the dnl instruction set of 'mipsn32'. dnl * 'mipsn32' and 'mips64' are different canonical names, because they use dnl different sizes for the C types like 'int' and 'void *', and although dnl the instruction sets of 'mipsn32' and 'mips64' are the same. dnl * The same canonical name is used for different endiannesses. You can dnl determine the endianness through preprocessor symbols: dnl - 'arm': test __ARMEL__. dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL. dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN. dnl * The same name 'i386' is used for CPUs of type i386, i486, i586 dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because dnl - Instructions that do not exist on all of these CPUs (cmpxchg, dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your dnl assembly language source files use such instructions, you will dnl need to make the distinction. dnl - Speed of execution of the common instruction set is reasonable across dnl the entire family of CPUs. If you have assembly language source files dnl that are optimized for particular CPU types (like GNU gmp has), you dnl will need to make the distinction. dnl See . AC_DEFUN([gl_HOST_CPU_C_ABI], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([gl_C_ASM]) AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi], [case "$host_cpu" in changequote(,)dnl i[34567]86 ) changequote([,])dnl gl_cv_host_cpu_c_abi=i386 ;; x86_64 ) # On x86_64 systems, the C compiler may be generating code in one of # these ABIs: # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 # with native Windows (mingw, MSVC). # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if (defined __x86_64__ || defined __amd64__ \ || defined _M_X64 || defined _M_AMD64) int ok; #else error fail #endif ]])], [AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __ILP32__ || defined _ILP32 int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=x86_64-x32], [gl_cv_host_cpu_c_abi=x86_64])], [gl_cv_host_cpu_c_abi=i386]) ;; changequote(,)dnl alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) changequote([,])dnl gl_cv_host_cpu_c_abi=alpha ;; arm* | aarch64 ) # Assume arm with EABI. # On arm64 systems, the C compiler may be generating code in one of # these ABIs: # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#ifdef __aarch64__ int ok; #else error fail #endif ]])], [AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __ILP32__ || defined _ILP32 int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=arm64-ilp32], [gl_cv_host_cpu_c_abi=arm64])], [# Don't distinguish little-endian and big-endian arm, since they # don't require different machine code for simple operations and # since the user can distinguish them through the preprocessor # defines __ARMEL__ vs. __ARMEB__. # But distinguish arm which passes floating-point arguments and # return values in integer registers (r0, r1, ...) - this is # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which # passes them in float registers (s0, s1, ...) and double registers # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer # sets the preprocessor defines __ARM_PCS (for the first case) and # __ARM_PCS_VFP (for the second case), but older GCC does not. echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c # Look for a reference to the register d0 in the .s file. AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1 if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then gl_cv_host_cpu_c_abi=armhf else gl_cv_host_cpu_c_abi=arm fi rm -f conftest* ]) ;; hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) # On hppa, the C compiler may be generating 32-bit code or 64-bit # code. In the latter case, it defines _LP64 and __LP64__. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#ifdef __LP64__ int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=hppa64], [gl_cv_host_cpu_c_abi=hppa]) ;; ia64* ) # On ia64 on HP-UX, the C compiler may be generating 64-bit code or # 32-bit code. In the latter case, it defines _ILP32. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#ifdef _ILP32 int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=ia64-ilp32], [gl_cv_host_cpu_c_abi=ia64]) ;; mips* ) # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this # at 32. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=mips64], [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but # may later get defined by ), and _MIPS_SIM == _ABIN32. # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but # may later get defined by ), and _MIPS_SIM == _ABIO32. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if (_MIPS_SIM == _ABIN32) int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=mipsn32], [gl_cv_host_cpu_c_abi=mips])]) ;; powerpc* ) # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. # No need to distinguish them here; the caller may distinguish # them based on the OS. # On powerpc64 systems, the C compiler may still be generating # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may # be generating 64-bit code. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __powerpc64__ || defined __LP64__ int ok; #else error fail #endif ]])], [# On powerpc64, there are two ABIs on Linux: The AIX compatible # one and the ELFv2 one. The latter defines _CALL_ELF=2. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined _CALL_ELF && _CALL_ELF == 2 int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=powerpc64-elfv2], [gl_cv_host_cpu_c_abi=powerpc64]) ], [gl_cv_host_cpu_c_abi=powerpc]) ;; rs6000 ) gl_cv_host_cpu_c_abi=powerpc ;; riscv32 | riscv64 ) # There are 2 architectures (with variants): rv32* and rv64*. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if __riscv_xlen == 64 int ok; #else error fail #endif ]])], [cpu=riscv64], [cpu=riscv32]) # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. # Size of 'long' and 'void *': AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __LP64__ int ok; #else error fail #endif ]])], [main_abi=lp64], [main_abi=ilp32]) # Float ABIs: # __riscv_float_abi_double: # 'float' and 'double' are passed in floating-point registers. # __riscv_float_abi_single: # 'float' are passed in floating-point registers. # __riscv_float_abi_soft: # No values are passed in floating-point registers. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __riscv_float_abi_double int ok; #else error fail #endif ]])], [float_abi=d], [AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __riscv_float_abi_single int ok; #else error fail #endif ]])], [float_abi=f], [float_abi='']) ]) gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" ;; s390* ) # On s390x, the C compiler may be generating 64-bit (= s390x) code # or 31-bit (= s390) code. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __LP64__ || defined __s390x__ int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=s390x], [gl_cv_host_cpu_c_abi=s390]) ;; sparc | sparc64 ) # UltraSPARCs running Linux have `uname -m` = "sparc64", but the # C compiler still generates 32-bit code. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __sparcv9 || defined __arch64__ int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=sparc64], [gl_cv_host_cpu_c_abi=sparc]) ;; *) gl_cv_host_cpu_c_abi="$host_cpu" ;; esac ]) dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same. HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" AC_SUBST([HOST_CPU]) AC_SUBST([HOST_CPU_C_ABI]) # This was # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) # earlier, but KAI C++ 3.2d doesn't like this. sed -e 's/-/_/g' >> confdefs.h < does dnl "#define lstat stat", and lstat.c is a no-op. AC_CHECK_FUNCS_ONCE([lstat]) if test $ac_cv_func_lstat = yes; then AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) case $host_os,$gl_cv_func_lstat_dereferences_slashed_symlink in solaris* | *no) REPLACE_LSTAT=1 ;; esac else HAVE_LSTAT=0 fi ]) # Prerequisites of lib/lstat.c. AC_DEFUN([gl_PREREQ_LSTAT], [:]) AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK], [ dnl We don't use AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK any more, because it dnl is no longer maintained in Autoconf and because it invokes AC_LIBOBJ. AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether lstat correctly handles trailing slash], [gl_cv_func_lstat_dereferences_slashed_symlink], [rm -f conftest.sym conftest.file echo >conftest.file AC_RUN_IFELSE( [AC_LANG_PROGRAM( [AC_INCLUDES_DEFAULT], [[struct stat sbuf; if (symlink ("conftest.file", "conftest.sym") != 0) return 1; /* Linux will dereference the symlink and fail, as required by POSIX. That is better in the sense that it means we will not have to compile and use the lstat wrapper. */ return lstat ("conftest.sym/", &sbuf) == 0; ]])], [gl_cv_func_lstat_dereferences_slashed_symlink=yes], [gl_cv_func_lstat_dereferences_slashed_symlink=no], [case "$host_os" in linux-* | linux) # Guess yes on Linux systems. gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;; *-gnu* | gnu*) # Guess yes on glibc systems. gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;; mingw*) # Guess no on native Windows. gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;; *) # If we don't know, obey --enable-cross-guesses. gl_cv_func_lstat_dereferences_slashed_symlink="$gl_cross_guess_normal" ;; esac ]) rm -f conftest.sym conftest.file ]) case "$gl_cv_func_lstat_dereferences_slashed_symlink" in *yes) AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1], [Define to 1 if 'lstat' dereferences a symlink specified with a trailing slash.]) ;; esac ]) recode-3.7.15/m4/getprogname.m40000644000175000017500000000324014371444255011633 # getprogname.m4 - check for getprogname or replacements for it # Copyright (C) 2016-2023 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 7 AC_DEFUN([gl_FUNC_GETPROGNAME], [ gl_CHECK_FUNCS_ANDROID([getprogname], [[#include ]]) if test $ac_cv_func_getprogname = no; then HAVE_GETPROGNAME=0 case "$gl_cv_onwards_func_getprogname" in future*) REPLACE_GETPROGNAME=1 ;; esac fi ]) AC_DEFUN([gl_PREREQ_GETPROGNAME], [ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_FUNCS_ONCE([getexecname]) ac_found=0 AC_CHECK_DECLS([program_invocation_name], [ac_found=1], [], [#include ]) AC_CHECK_DECLS([program_invocation_short_name], [ac_found=1], [], [#include ]) AC_CHECK_DECLS([__argv], [ac_found=1], [], [#include ]) # Incur the cost of this test only if none of the above worked. if test $ac_found = 0; then # On OpenBSD 5.1, using the global __progname variable appears to be # the only way to implement getprogname. AC_CACHE_CHECK([whether __progname is defined in default libraries], [gl_cv_var___progname], [ gl_cv_var___progname= AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[extern char *__progname;]], [[return *__progname;]] )], [gl_cv_var___progname=yes] ) ] ) if test "$gl_cv_var___progname" = yes; then AC_DEFINE([HAVE_VAR___PROGNAME], 1, [Define if you have a global __progname variable]) fi fi ]) recode-3.7.15/m4/getopt.m40000644000175000017500000003144514371444255010635 # getopt.m4 serial 48 dnl Copyright (C) 2002-2006, 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Request a POSIX compliant getopt function. AC_DEFUN([gl_FUNC_GETOPT_POSIX], [ m4_divert_text([DEFAULTS], [gl_getopt_required=POSIX]) AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([gl_GETOPT_CHECK_HEADERS]) dnl Other modules can request the gnulib implementation of the getopt dnl functions unconditionally, by defining gl_REPLACE_GETOPT_ALWAYS. dnl argp.m4 does this. m4_ifdef([gl_REPLACE_GETOPT_ALWAYS], [ REPLACE_GETOPT=1 ], [ REPLACE_GETOPT=0 if test -n "$gl_replace_getopt"; then REPLACE_GETOPT=1 fi ]) GL_GENERATE_GETOPT_H=false GL_GENERATE_GETOPT_CDEFS_H=false if test $REPLACE_GETOPT = 1; then dnl Arrange for getopt.h to be created. gl_GETOPT_SUBSTITUTE_HEADER fi ]) # Request a POSIX compliant getopt function with GNU extensions (such as # options with optional arguments) and the functions getopt_long, # getopt_long_only. AC_DEFUN([gl_FUNC_GETOPT_GNU], [ dnl Set the variable gl_getopt_required, so that all invocations of dnl gl_GETOPT_CHECK_HEADERS in the scope of the current configure file dnl will check for getopt with GNU extensions. dnl This means that if one gnulib-tool invocation requests getopt-posix dnl and another gnulib-tool invocation requests getopt-gnu, it is as if dnl both had requested getopt-gnu. m4_divert_text([INIT_PREPARE], [gl_getopt_required=GNU]) dnl No need to invoke gl_FUNC_GETOPT_POSIX here; this is automatically dnl done through the module dependency getopt-gnu -> getopt-posix. ]) # Determine whether to replace the entire getopt facility. AC_DEFUN([gl_GETOPT_CHECK_HEADERS], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([AC_PROG_AWK]) dnl for awk that supports ENVIRON dnl Persuade Solaris to declare optarg, optind, opterr, optopt. AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) gl_CHECK_NEXT_HEADERS([getopt.h]) if test $ac_cv_header_getopt_h = yes; then HAVE_GETOPT_H=1 else HAVE_GETOPT_H=0 fi AC_SUBST([HAVE_GETOPT_H]) gl_replace_getopt= dnl Test whether is available. if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then AC_CHECK_HEADERS([getopt.h], [], [gl_replace_getopt=yes]) fi dnl Test whether the function getopt_long is available. if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then AC_CHECK_FUNCS([getopt_long_only], [], [gl_replace_getopt=yes]) fi dnl POSIX 2008 does not specify leading '+' behavior, but see dnl http://austingroupbugs.net/view.php?id=191 for a recommendation on dnl the next version of POSIX. For now, we only guarantee leading '+' dnl behavior with getopt-gnu. if test -z "$gl_replace_getopt"; then AC_CACHE_CHECK([whether getopt is POSIX compatible], [gl_cv_func_getopt_posix], [ dnl Merging these three different test programs into a single one dnl would require a reset mechanism. On BSD systems, it can be done dnl through 'optreset'; on some others (glibc), it can be done by dnl setting 'optind' to 0; on others again (HP-UX, IRIX, OSF/1, dnl Solaris 9, musl libc), there is no such mechanism. if test $cross_compiling = no; then dnl Sanity check. Succeeds everywhere (except on MSVC, dnl which lacks and getopt() entirely). AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { static char program[] = "program"; static char a[] = "-a"; static char foo[] = "foo"; static char bar[] = "bar"; char *argv[] = { program, a, foo, bar, NULL }; int c; c = getopt (4, argv, "ab"); if (!(c == 'a')) return 1; c = getopt (4, argv, "ab"); if (!(c == -1)) return 2; if (!(optind == 2)) return 3; return 0; } ]])], [gl_cv_func_getopt_posix=maybe], [gl_cv_func_getopt_posix=no]) if test $gl_cv_func_getopt_posix = maybe; then dnl Sanity check with '+'. Succeeds everywhere (except on MSVC, dnl which lacks and getopt() entirely). AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { static char program[] = "program"; static char donald[] = "donald"; static char p[] = "-p"; static char billy[] = "billy"; static char duck[] = "duck"; static char a[] = "-a"; static char bar[] = "bar"; char *argv[] = { program, donald, p, billy, duck, a, bar, NULL }; int c; c = getopt (7, argv, "+abp:q:"); if (!(c == -1)) return 4; if (!(strcmp (argv[0], "program") == 0)) return 5; if (!(strcmp (argv[1], "donald") == 0)) return 6; if (!(strcmp (argv[2], "-p") == 0)) return 7; if (!(strcmp (argv[3], "billy") == 0)) return 8; if (!(strcmp (argv[4], "duck") == 0)) return 9; if (!(strcmp (argv[5], "-a") == 0)) return 10; if (!(strcmp (argv[6], "bar") == 0)) return 11; if (!(optind == 1)) return 12; return 0; } ]])], [gl_cv_func_getopt_posix=maybe], [gl_cv_func_getopt_posix=no]) fi if test $gl_cv_func_getopt_posix = maybe; then dnl Detect Mac OS X 10.5, AIX 7.1, mingw bug. AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { static char program[] = "program"; static char ab[] = "-ab"; char *argv[3] = { program, ab, NULL }; if (getopt (2, argv, "ab:") != 'a') return 13; if (getopt (2, argv, "ab:") != '?') return 14; if (optopt != 'b') return 15; if (optind != 2) return 16; return 0; } ]])], [gl_cv_func_getopt_posix=yes], [gl_cv_func_getopt_posix=no]) fi else case "$host_os" in darwin* | aix* | mingw*) gl_cv_func_getopt_posix="guessing no";; *) gl_cv_func_getopt_posix="guessing yes";; esac fi ]) case "$gl_cv_func_getopt_posix" in *no) gl_replace_getopt=yes ;; esac fi if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_getopt_gnu], [# Even with POSIXLY_CORRECT, the GNU extension of leading '-' in the # optstring is necessary for programs like m4 that have POSIX-mandated # semantics for supporting options interspersed with files. # Also, since getopt_long is a GNU extension, we require optind=0. # Bash ties 'set -o posix' to a non-exported POSIXLY_CORRECT; # so take care to revert to the correct (non-)export state. dnl GNU Coding Standards currently allow awk but not env; besides, env dnl is ambiguous with environment values that contain newlines. gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }' case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" #include #include ]GL_NOCRASH[ ]], [[ int result = 0; nocrash_init(); /* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw, and fails on Mac OS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10. */ { static char conftest[] = "conftest"; static char plus[] = "-+"; char *argv[3] = { conftest, plus, NULL }; opterr = 0; if (getopt (2, argv, "+a") != '?') result |= 1; } /* This code succeeds on glibc 2.8, mingw, and fails on Mac OS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x. */ { static char program[] = "program"; static char p[] = "-p"; static char foo[] = "foo"; static char bar[] = "bar"; char *argv[] = { program, p, foo, bar, NULL }; optind = 1; if (getopt (4, argv, "p::") != 'p') result |= 2; else if (optarg != NULL) result |= 4; else if (getopt (4, argv, "p::") != -1) result |= 6; else if (optind != 2) result |= 8; } /* This code succeeds on glibc 2.8 and fails on Cygwin 1.7.0. */ { static char program[] = "program"; static char foo[] = "foo"; static char p[] = "-p"; char *argv[] = { program, foo, p, NULL }; optind = 0; if (getopt (3, argv, "-p") != 1) result |= 16; else if (getopt (3, argv, "-p") != 'p') result |= 16; } /* This code fails on glibc 2.11. */ { static char program[] = "program"; static char b[] = "-b"; static char a[] = "-a"; char *argv[] = { program, b, a, NULL }; optind = opterr = 0; if (getopt (3, argv, "+:a:b") != 'b') result |= 32; else if (getopt (3, argv, "+:a:b") != ':') result |= 32; } /* This code dumps core on glibc 2.14. */ { static char program[] = "program"; static char w[] = "-W"; static char dummy[] = "dummy"; char *argv[] = { program, w, dummy, NULL }; optind = opterr = 1; if (getopt (3, argv, "W;") != 'W') result |= 64; } return result; ]])], [gl_cv_func_getopt_gnu=yes], [gl_cv_func_getopt_gnu=no], [dnl Cross compiling. dnl Assume the worst, even on glibc platforms. dnl But obey --enable-cross-guesses. gl_cv_func_getopt_gnu="$gl_cross_guess_normal" ]) case $gl_had_POSIXLY_CORRECT in exported) ;; yes) AS_UNSET([POSIXLY_CORRECT]); POSIXLY_CORRECT=1 ;; *) AS_UNSET([POSIXLY_CORRECT]) ;; esac ]) if test "$gl_cv_func_getopt_gnu" != yes; then gl_replace_getopt=yes else AC_CACHE_CHECK([for working GNU getopt_long function], [gl_cv_func_getopt_long_gnu], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include #include ]], [[static const struct option long_options[] = { { "xtremely-",no_argument, NULL, 1003 }, { "xtra", no_argument, NULL, 1001 }, { "xtreme", no_argument, NULL, 1002 }, { "xtremely", no_argument, NULL, 1003 }, { NULL, 0, NULL, 0 } }; /* This code fails on OpenBSD 5.0. */ { static char program[] = "program"; static char xtremel[] = "--xtremel"; char *argv[] = { program, xtremel, NULL }; int option_index; optind = 1; opterr = 0; if (getopt_long (2, argv, "", long_options, &option_index) != 1003) return 1; } return 0; ]])], [gl_cv_func_getopt_long_gnu=yes], [gl_cv_func_getopt_long_gnu=no], [dnl Cross compiling. Guess no on OpenBSD, yes otherwise. case "$host_os" in openbsd*) gl_cv_func_getopt_long_gnu="guessing no";; *) gl_cv_func_getopt_long_gnu="guessing yes";; esac ]) ]) case "$gl_cv_func_getopt_long_gnu" in *yes) ;; *) gl_replace_getopt=yes ;; esac fi fi ]) AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER], [ AC_CHECK_HEADERS_ONCE([sys/cdefs.h]) if test $ac_cv_header_sys_cdefs_h = yes; then HAVE_SYS_CDEFS_H=1 else HAVE_SYS_CDEFS_H=0 fi AC_SUBST([HAVE_SYS_CDEFS_H]) AC_DEFINE([__GETOPT_PREFIX], [[rpl_]], [Define to rpl_ if the getopt replacement functions and variables should be used.]) GL_GENERATE_GETOPT_H=true GL_GENERATE_GETOPT_CDEFS_H=true ]) recode-3.7.15/m4/canonicalize.m40000644000175000017500000001370514371444255011771 # canonicalize.m4 serial 38 dnl Copyright (C) 2003-2007, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Provides canonicalize_file_name and canonicalize_filename_mode, but does # not provide or fix realpath. AC_DEFUN([gl_FUNC_CANONICALIZE_FILENAME_MODE], [ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) AC_CHECK_FUNCS_ONCE([canonicalize_file_name]) gl_CHECK_FUNCS_ANDROID([faccessat], [[#include ]]) AC_REQUIRE([gl_DOUBLE_SLASH_ROOT]) AC_REQUIRE([gl_FUNC_REALPATH_WORKS]) if test $ac_cv_func_canonicalize_file_name = no; then HAVE_CANONICALIZE_FILE_NAME=0 else case "$gl_cv_func_realpath_works" in *yes) ;; *) REPLACE_CANONICALIZE_FILE_NAME=1 ;; esac fi ]) # Provides canonicalize_file_name and realpath. AC_DEFUN([gl_CANONICALIZE_LGPL], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_CANONICALIZE_LGPL_SEPARATE]) if test $ac_cv_func_canonicalize_file_name = no; then HAVE_CANONICALIZE_FILE_NAME=0 if test $ac_cv_func_realpath = no; then HAVE_REALPATH=0 else case "$gl_cv_func_realpath_works" in *yes) ;; *) REPLACE_REALPATH=1 ;; esac fi else case "$gl_cv_func_realpath_works" in *yes) ;; *) REPLACE_CANONICALIZE_FILE_NAME=1 REPLACE_REALPATH=1 ;; esac fi ]) # Like gl_CANONICALIZE_LGPL, except prepare for separate compilation # (no REPLACE_CANONICALIZE_FILE_NAME, no REPLACE_REALPATH, no AC_LIBOBJ). AC_DEFUN([gl_CANONICALIZE_LGPL_SEPARATE], [ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) AC_CHECK_FUNCS_ONCE([canonicalize_file_name]) gl_CHECK_FUNCS_ANDROID([faccessat], [[#include ]]) dnl On native Windows, we use _getcwd(), regardless whether getcwd() is dnl available through the linker option '-loldnames'. AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in mingw*) ;; *) AC_CHECK_FUNCS([getcwd]) ;; esac AC_REQUIRE([gl_DOUBLE_SLASH_ROOT]) AC_REQUIRE([gl_FUNC_REALPATH_WORKS]) AC_CHECK_HEADERS_ONCE([sys/param.h]) ]) # Check whether realpath works. Assume that if a platform has both # realpath and canonicalize_file_name, but the former is broken, then # so is the latter. AC_DEFUN([gl_FUNC_REALPATH_WORKS], [ AC_CHECK_FUNCS_ONCE([realpath lstat]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether realpath works], [gl_cv_func_realpath_works], [ rm -rf conftest.a conftest.d touch conftest.a # Assume that if we have lstat, we can also check symlinks. if test $ac_cv_func_lstat = yes; then ln -s conftest.a conftest.l fi mkdir conftest.d AC_RUN_IFELSE([ AC_LANG_PROGRAM([[ ]GL_NOCRASH[ #include #include #include ]], [[ int result = 0; /* This test fails on Solaris 10. */ { char *name = realpath ("conftest.a", NULL); if (!(name && *name == '/')) result |= 1; free (name); } /* This test fails on older versions of Cygwin. */ { char *name = realpath ("conftest.b/../conftest.a", NULL); if (name != NULL) result |= 2; free (name); } /* This test fails on Cygwin 2.9. */ #if HAVE_LSTAT { char *name = realpath ("conftest.l/../conftest.a", NULL); if (name != NULL || errno != ENOTDIR) result |= 4; free (name); } #endif /* This test fails on Mac OS X 10.13, OpenBSD 6.0. */ { char *name = realpath ("conftest.a/", NULL); if (name != NULL) result |= 8; free (name); } /* This test fails on AIX 7, Solaris 10. */ { char *name1 = realpath (".", NULL); char *name2 = realpath ("conftest.d//./..", NULL); if (! name1 || ! name2 || strcmp (name1, name2)) result |= 16; free (name1); free (name2); } #ifdef __linux__ /* On Linux, // is the same as /. See also double-slash-root.m4. realpath() should respect this. This test fails on musl libc 1.2.2. */ { char *name = realpath ("//", NULL); if (! name || strcmp (name, "/")) result |= 32; free (name); } #endif return result; ]]) ], [gl_cv_func_realpath_works=yes], [case $? in 32) gl_cv_func_realpath_works=nearly ;; *) gl_cv_func_realpath_works=no ;; esac ], [case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_realpath_works="guessing yes" ;; # Guess 'nearly' on musl systems. *-musl*) gl_cv_func_realpath_works="guessing nearly" ;; # Guess no on Cygwin. cygwin*) gl_cv_func_realpath_works="guessing no" ;; # Guess no on native Windows. mingw*) gl_cv_func_realpath_works="guessing no" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_realpath_works="$gl_cross_guess_normal" ;; esac ]) rm -rf conftest.a conftest.l conftest.d ]) case "$gl_cv_func_realpath_works" in *yes) AC_DEFINE([FUNC_REALPATH_WORKS], [1], [Define to 1 if realpath() can malloc memory, always gives an absolute path, and handles leading slashes and a trailing slash correctly.]) ;; *nearly) AC_DEFINE([FUNC_REALPATH_NEARLY_WORKS], [1], [Define to 1 if realpath() can malloc memory, always gives an absolute path, and handles a trailing slash correctly.]) ;; esac ]) recode-3.7.15/m4/__inline.m40000644000175000017500000000142314371444255011100 # Test for __inline keyword dnl Copyright 2017-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl___INLINE], [ AC_CACHE_CHECK([whether the compiler supports the __inline keyword], [gl_cv_c___inline], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[typedef int foo_t; static __inline foo_t foo (void) { return 0; }]], [[return foo ();]])], [gl_cv_c___inline=yes], [gl_cv_c___inline=no])]) if test $gl_cv_c___inline = yes; then AC_DEFINE([HAVE___INLINE], [1], [Define to 1 if the compiler supports the keyword '__inline'.]) fi ]) recode-3.7.15/m4/mkstemps.m40000644000175000017500000000104514371444255011167 # mkstemps.m4 serial 2 dnl Copyright (C) 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_MKSTEMPS], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) dnl Persuade glibc to declare mkstemps(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_CHECK_FUNCS_ONCE([mkstemps]) if test $ac_cv_func_mkstemps != yes; then HAVE_MKSTEMPS=0 fi ]) recode-3.7.15/m4/locale-zh.m40000644000175000017500000001261214371444255011204 # locale-zh.m4 serial 15 dnl Copyright (C) 2003, 2005-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Determine the name of a chinese locale with GB18030 encoding. AC_DEFUN([gt_LOCALE_ZH_CN], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AM_LANGINFO_CODESET]) AC_CACHE_CHECK([for a transitional chinese locale], [gt_cv_locale_zh_CN], [ AC_LANG_CONFTEST([AC_LANG_SOURCE([[ #include #include #include #if HAVE_LANGINFO_CODESET # include #endif #include #include struct tm t; char buf[16]; int main () { /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl imitates locale dependent behaviour by looking at the environment variables, and all locales use the UTF-8 encoding. */ #if defined __BEOS__ || defined __HAIKU__ return 1; #else /* Check whether the given locale name is recognized by the system. */ # if defined _WIN32 && !defined __CYGWIN__ /* On native Windows, setlocale(category, "") looks at the system settings, not at the environment variables. Also, when an encoding suffix such as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE category of the locale to "C". */ if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) return 1; # else if (setlocale (LC_ALL, "") == NULL) return 1; # endif /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) is empty, and the behaviour of Tcl 8.4 in this locale is not useful. On OpenBSD 4.0, when an unsupported locale is specified, setlocale() succeeds but then nl_langinfo(CODESET) is "646". In this situation, some unit tests fail. On MirBSD 10, when an unsupported locale is specified, setlocale() succeeds but then nl_langinfo(CODESET) is "UTF-8". */ # if HAVE_LANGINFO_CODESET { const char *cs = nl_langinfo (CODESET); if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0 || strcmp (cs, "UTF-8") == 0) return 1; } # endif # ifdef __CYGWIN__ /* On Cygwin, avoid locale names without encoding suffix, because the locale_charset() function relies on the encoding suffix. Note that LC_ALL is set on the command line. */ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; # endif /* Check whether in a month name, no byte in the range 0x80..0x9F occurs. This excludes the UTF-8 encoding (except on MirBSD). */ { const char *p; t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1; for (p = buf; *p != '\0'; p++) if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0) return 1; } /* Check whether a typical GB18030 multibyte sequence is recognized as a single wide character. This excludes the GB2312 and GBK encodings. */ if (mblen ("\203\062\332\066", 5) != 4) return 1; return 0; #endif } ]])]) if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then case "$host_os" in # Handle native Windows specially, because there setlocale() interprets # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256", # "fr" or "fra" as "French" or "French_France.1252", # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", # "ja" as "Japanese" or "Japanese_Japan.932", # and similar. mingw*) # Test for the hypothetical native Windows locale name. if (LC_ALL=Chinese_China.54936 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_zh_CN=Chinese_China.54936 else # None found. gt_cv_locale_zh_CN=none fi ;; solaris2.8) # On Solaris 8, the locales zh_CN.GB18030, zh_CN.GBK, zh.GBK are # broken. One witness is the test case in gl_MBRTOWC_SANITYCHECK. # Another witness is that "LC_ALL=zh_CN.GB18030 bash -c true" dumps core. gt_cv_locale_zh_CN=none ;; *) # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the # configure script would override the LC_ALL setting. Likewise for # LC_CTYPE, which is also set at the beginning of the configure script. # Test for the locale name without encoding suffix. if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_zh_CN=zh_CN else # Test for the locale name with explicit encoding suffix. if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_zh_CN=zh_CN.GB18030 else # None found. gt_cv_locale_zh_CN=none fi fi ;; esac else # If there was a link error, due to mblen(), the system is so old that # it certainly doesn't have a chinese locale. gt_cv_locale_zh_CN=none fi rm -fr conftest* ]) LOCALE_ZH_CN=$gt_cv_locale_zh_CN AC_SUBST([LOCALE_ZH_CN]) ]) recode-3.7.15/m4/manywarnings.m40000644000175000017500000001472514371444255012052 # manywarnings.m4 serial 23 dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # gl_MANYWARN_COMPLEMENT(OUTVAR, LISTVAR, REMOVEVAR) # -------------------------------------------------- # Copy LISTVAR to OUTVAR except for the entries in REMOVEVAR. # Elements separated by whitespace. In set logic terms, the function # does OUTVAR = LISTVAR \ REMOVEVAR. AC_DEFUN([gl_MANYWARN_COMPLEMENT], [ gl_warn_set= set x $2; shift for gl_warn_item do case " $3 " in *" $gl_warn_item "*) ;; *) gl_AS_VAR_APPEND([gl_warn_set], [" $gl_warn_item"]) ;; esac done $1=$gl_warn_set ]) # gl_MANYWARN_ALL_GCC(VARIABLE) # ----------------------------- # Add all documented GCC warning parameters to variable VARIABLE. # Note that you need to test them using gl_WARN_ADD if you want to # make sure your gcc understands it. # # The effects of this macro depend on the current language (_AC_LANG). AC_DEFUN([gl_MANYWARN_ALL_GCC], [_AC_LANG_DISPATCH([$0], _AC_LANG, $@)]) # Specialization for _AC_LANG = C. AC_DEFUN([gl_MANYWARN_ALL_GCC(C)], [ AC_LANG_PUSH([C]) dnl First, check for some issues that only occur when combining multiple dnl gcc warning categories. AC_REQUIRE([AC_PROG_CC]) if test -n "$GCC"; then dnl Check if -Wextra -Werror -Wno-missing-field-initializers is supported dnl with the current $CC $CFLAGS $CPPFLAGS. AC_CACHE_CHECK([whether -Wno-missing-field-initializers is supported], [gl_cv_cc_nomfi_supported], [gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wextra -Werror -Wno-missing-field-initializers" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[]], [[]])], [gl_cv_cc_nomfi_supported=yes], [gl_cv_cc_nomfi_supported=no]) CFLAGS="$gl_save_CFLAGS" ]) if test "$gl_cv_cc_nomfi_supported" = yes; then dnl Now check whether -Wno-missing-field-initializers is needed dnl for the { 0, } construct. AC_CACHE_CHECK([whether -Wno-missing-field-initializers is needed], [gl_cv_cc_nomfi_needed], [gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wextra -Werror" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[int f (void) { typedef struct { int a; int b; } s_t; s_t s1 = { 0, }; return s1.b; } ]], [[]])], [gl_cv_cc_nomfi_needed=no], [gl_cv_cc_nomfi_needed=yes]) CFLAGS="$gl_save_CFLAGS" ]) fi dnl Next, check if -Werror -Wuninitialized is useful with the dnl user's choice of $CFLAGS; some versions of gcc warn that it dnl has no effect if -O is not also used AC_CACHE_CHECK([whether -Wuninitialized is supported], [gl_cv_cc_uninitialized_supported], [gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror -Wuninitialized" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[]], [[]])], [gl_cv_cc_uninitialized_supported=yes], [gl_cv_cc_uninitialized_supported=no]) CFLAGS="$gl_save_CFLAGS" ]) fi # List all gcc warning categories. # To compare this list to your installed GCC's, run this Bash command: # # comm -3 \ # <((sed -n 's/^ *\(-[^ 0-9][^ ]*\).*/\1/p' manywarnings.m4; \ # awk '/^[^#]/ {print $1}' ../build-aux/gcc-warning.spec) | sort) \ # <(LC_ALL=C gcc --help=warnings | sed -n 's/^ \(-[^ ]*\) .*/\1/p' | sort) $1= for gl_manywarn_item in -fanalyzer -fno-common \ -Wall \ -Warith-conversion \ -Wbad-function-cast \ -Wcast-align=strict \ -Wdate-time \ -Wdisabled-optimization \ -Wdouble-promotion \ -Wduplicated-branches \ -Wduplicated-cond \ -Wextra \ -Wformat-signedness \ -Winit-self \ -Winline \ -Winvalid-pch \ -Wlogical-op \ -Wmissing-declarations \ -Wmissing-include-dirs \ -Wmissing-prototypes \ -Wnested-externs \ -Wnull-dereference \ -Wold-style-definition \ -Wopenmp-simd \ -Woverlength-strings \ -Wpacked \ -Wpointer-arith \ -Wshadow \ -Wstack-protector \ -Wstrict-overflow \ -Wstrict-prototypes \ -Wsuggest-attribute=cold \ -Wsuggest-attribute=const \ -Wsuggest-attribute=format \ -Wsuggest-attribute=malloc \ -Wsuggest-attribute=noreturn \ -Wsuggest-attribute=pure \ -Wsuggest-final-methods \ -Wsuggest-final-types \ -Wsync-nand \ -Wsystem-headers \ -Wtrampolines \ -Wuninitialized \ -Wunknown-pragmas \ -Wunsafe-loop-optimizations \ -Wunused-macros \ -Wvariadic-macros \ -Wvector-operation-performance \ -Wvla \ -Wwrite-strings \ \ ; do gl_AS_VAR_APPEND([$1], [" $gl_manywarn_item"]) done # gcc --help=warnings outputs an unusual form for these options; list # them here so that the above 'comm' command doesn't report a false match. gl_AS_VAR_APPEND([$1], [' -Warray-bounds=2']) gl_AS_VAR_APPEND([$1], [' -Wattribute-alias=2']) gl_AS_VAR_APPEND([$1], [' -Wbidi-chars=any,ucn']) gl_AS_VAR_APPEND([$1], [' -Wformat-overflow=2']) gl_AS_VAR_APPEND([$1], [' -Wformat=2']) gl_AS_VAR_APPEND([$1], [' -Wformat-truncation=2']) gl_AS_VAR_APPEND([$1], [' -Wimplicit-fallthrough=5']) gl_AS_VAR_APPEND([$1], [' -Wshift-overflow=2']) gl_AS_VAR_APPEND([$1], [' -Wuse-after-free=3']) gl_AS_VAR_APPEND([$1], [' -Wunused-const-variable=2']) gl_AS_VAR_APPEND([$1], [' -Wvla-larger-than=4031']) # These are needed for older GCC versions. if test -n "$GCC"; then case `($CC --version) 2>/dev/null` in 'gcc (GCC) '[[0-3]].* | \ 'gcc (GCC) '4.[[0-7]].*) gl_AS_VAR_APPEND([$1], [' -fdiagnostics-show-option']) gl_AS_VAR_APPEND([$1], [' -funit-at-a-time']) ;; esac fi # Disable specific options as needed. if test "$gl_cv_cc_nomfi_needed" = yes; then gl_AS_VAR_APPEND([$1], [' -Wno-missing-field-initializers']) fi if test "$gl_cv_cc_uninitialized_supported" = no; then gl_AS_VAR_APPEND([$1], [' -Wno-uninitialized']) fi # This warning have too many false alarms in GCC 11.2.1. # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101713 gl_AS_VAR_APPEND([$1], [' -Wno-analyzer-malloc-leak']) AC_LANG_POP([C]) ]) # Specialization for _AC_LANG = C++. AC_DEFUN([gl_MANYWARN_ALL_GCC(C++)], [ gl_MANYWARN_ALL_GCC_CXX_IMPL([$1]) ]) recode-3.7.15/m4/ltversion.m40000644000175000017500000000131214605013133011331 # ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation, # Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 4245 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.7]) m4_define([LT_PACKAGE_REVISION], [2.4.7]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.7' macro_revision='2.4.7' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) recode-3.7.15/m4/progtest.m40000644000175000017500000000604013226751342011167 # progtest.m4 serial 7 (gettext-0.18.2) dnl Copyright (C) 1996-2003, 2005, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. AC_PREREQ([2.50]) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL([ac_cv_path_$1], [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$][$1]) else AC_MSG_RESULT([no]) fi AC_SUBST([$1])dnl ]) recode-3.7.15/m4/size_max.m40000644000175000017500000000547614371444255011157 # size_max.m4 serial 12 dnl Copyright (C) 2003, 2005-2006, 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ([2.61]) AC_DEFUN([gl_SIZE_MAX], [ AC_CHECK_HEADERS([stdint.h]) dnl First test whether the system already has SIZE_MAX. AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [ gl_cv_size_max=no AC_EGREP_CPP([Found it], [ #include #if HAVE_STDINT_H #include #endif #ifdef SIZE_MAX Found it #endif ], [gl_cv_size_max=yes]) if test $gl_cv_size_max != yes; then dnl Define it ourselves. Here we assume that the type 'size_t' is not wider dnl than the type 'unsigned long'. Try hard to find a definition that can dnl be used in a preprocessor #if, i.e. doesn't contain a cast. AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1], [#include #include ], [size_t_bits_minus_1=]) AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)], [#include ], [fits_in_uint=]) if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then if test $fits_in_uint = 1; then dnl Even though SIZE_MAX fits in an unsigned int, it must be of type dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include extern size_t foo; extern unsigned long foo; ]], [[]])], [fits_in_uint=0]) fi dnl We cannot use 'expr' to simplify this expression, because 'expr' dnl works only with 'long' integers in the host environment, while we dnl might be cross-compiling from a 32-bit platform to a 64-bit platform. if test $fits_in_uint = 1; then gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" else gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" fi else dnl Shouldn't happen, but who knows... gl_cv_size_max='((size_t)~(size_t)0)' fi fi ]) if test "$gl_cv_size_max" != yes; then AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max], [Define as the maximum value of type 'size_t', if the system doesn't define it.]) fi dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after dnl . Remember that the #undef in AH_VERBATIM gets replaced with dnl #define by AC_DEFINE_UNQUOTED. AH_VERBATIM([SIZE_MAX], [/* Define as the maximum value of type 'size_t', if the system doesn't define it. */ #ifndef SIZE_MAX # undef SIZE_MAX #endif]) ]) recode-3.7.15/m4/unistd_h.m40000644000175000017500000003433514371444255011151 # unistd_h.m4 serial 94 dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Simon Josefsson, Bruno Haible. AC_DEFUN_ONCE([gl_UNISTD_H], [ dnl Ensure to expand the default settings once only, before all statements dnl that occur in other macros. AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) gl_CHECK_NEXT_HEADERS([unistd.h]) if test $ac_cv_header_unistd_h = yes; then HAVE_UNISTD_H=1 else HAVE_UNISTD_H=0 fi AC_SUBST([HAVE_UNISTD_H]) dnl Ensure the type pid_t gets defined. AC_REQUIRE([AC_TYPE_PID_T]) dnl Determine WINDOWS_64_BIT_OFF_T. AC_REQUIRE([gl_TYPE_OFF_T]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ #if HAVE_UNISTD_H # include #endif /* Some systems declare various items in the wrong headers. */ #if !(defined __GLIBC__ && !defined __UCLIBC__) # include # include # include # if defined _WIN32 && ! defined __CYGWIN__ # include # endif #endif ]], [access chdir chown copy_file_range dup dup2 dup3 environ euidaccess execl execle execlp execv execve execvp execvpe faccessat fchdir fchownat fdatasync fsync ftruncate getcwd getdomainname getdtablesize getentropy getgroups gethostname getlogin getlogin_r getpagesize getpass getusershell setusershell endusershell group_member isatty lchown link linkat lseek pipe pipe2 pread pwrite readlink readlinkat rmdir sethostname sleep symlink symlinkat truncate ttyname_r unlink unlinkat usleep]) AC_REQUIRE([AC_C_RESTRICT]) AC_CHECK_DECLS_ONCE([execvpe]) if test $ac_cv_have_decl_execvpe = no; then HAVE_DECL_EXECVPE=0 fi ]) # gl_UNISTD_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_UNISTD_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_UNISTD_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_UNISTD_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACCESS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHDIR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHOWN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CLOSE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPY_FILE_RANGE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP2]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP3]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ENVIRON]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EUIDACCESS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECLE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECLP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECV]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVPE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FACCESSAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHDIR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHOWNAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FDATASYNC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSYNC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTRUNCATE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETCWD]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDOMAINNAME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDTABLESIZE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETENTROPY]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETGROUPS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETHOSTNAME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOGIN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOGIN_R]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETOPT_POSIX]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPAGESIZE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPASS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPASS_GNU]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETUSERSHELL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GROUP_MEMBER]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISATTY]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LCHOWN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LINK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LINKAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LSEEK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PIPE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PIPE2]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PREAD]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PWRITE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READ]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READLINK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READLINKAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RMDIR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETHOSTNAME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SLEEP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYMLINK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYMLINKAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCATE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TTYNAME_R]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_GETOPT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_NONBLOCKING]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_SIGPIPE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINKAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_USLEEP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WRITE]) dnl Support Microsoft deprecated alias function names by default. gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ACCESS], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CHDIR], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CLOSE], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP2], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECL], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLE], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLP], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECV], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVE], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVP], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVPE], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETCWD], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETPID], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ISATTY], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_LSEEK], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_READ], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_RMDIR], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_SWAB], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_UNLINK], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_WRITE], [1]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) ]) AC_DEFUN([gl_UNISTD_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. HAVE_CHOWN=1; AC_SUBST([HAVE_CHOWN]) HAVE_COPY_FILE_RANGE=1; AC_SUBST([HAVE_COPY_FILE_RANGE]) HAVE_DUP3=1; AC_SUBST([HAVE_DUP3]) HAVE_EUIDACCESS=1; AC_SUBST([HAVE_EUIDACCESS]) HAVE_EXECVPE=1; AC_SUBST([HAVE_EXECVPE]) HAVE_FACCESSAT=1; AC_SUBST([HAVE_FACCESSAT]) HAVE_FCHDIR=1; AC_SUBST([HAVE_FCHDIR]) HAVE_FCHOWNAT=1; AC_SUBST([HAVE_FCHOWNAT]) HAVE_FDATASYNC=1; AC_SUBST([HAVE_FDATASYNC]) HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC]) HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE]) HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE]) HAVE_GETENTROPY=1; AC_SUBST([HAVE_GETENTROPY]) HAVE_GETGROUPS=1; AC_SUBST([HAVE_GETGROUPS]) HAVE_GETHOSTNAME=1; AC_SUBST([HAVE_GETHOSTNAME]) HAVE_GETLOGIN=1; AC_SUBST([HAVE_GETLOGIN]) HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE]) HAVE_GETPASS=1; AC_SUBST([HAVE_GETPASS]) HAVE_GROUP_MEMBER=1; AC_SUBST([HAVE_GROUP_MEMBER]) HAVE_LCHOWN=1; AC_SUBST([HAVE_LCHOWN]) HAVE_LINK=1; AC_SUBST([HAVE_LINK]) HAVE_LINKAT=1; AC_SUBST([HAVE_LINKAT]) HAVE_PIPE=1; AC_SUBST([HAVE_PIPE]) HAVE_PIPE2=1; AC_SUBST([HAVE_PIPE2]) HAVE_PREAD=1; AC_SUBST([HAVE_PREAD]) HAVE_PWRITE=1; AC_SUBST([HAVE_PWRITE]) HAVE_READLINK=1; AC_SUBST([HAVE_READLINK]) HAVE_READLINKAT=1; AC_SUBST([HAVE_READLINKAT]) HAVE_SETHOSTNAME=1; AC_SUBST([HAVE_SETHOSTNAME]) HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP]) HAVE_SYMLINK=1; AC_SUBST([HAVE_SYMLINK]) HAVE_SYMLINKAT=1; AC_SUBST([HAVE_SYMLINKAT]) HAVE_UNLINKAT=1; AC_SUBST([HAVE_UNLINKAT]) HAVE_USLEEP=1; AC_SUBST([HAVE_USLEEP]) HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON]) HAVE_DECL_EXECVPE=1; AC_SUBST([HAVE_DECL_EXECVPE]) HAVE_DECL_FCHDIR=1; AC_SUBST([HAVE_DECL_FCHDIR]) HAVE_DECL_FDATASYNC=1; AC_SUBST([HAVE_DECL_FDATASYNC]) HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME]) HAVE_DECL_GETLOGIN=1; AC_SUBST([HAVE_DECL_GETLOGIN]) HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R]) HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE]) HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL]) HAVE_DECL_SETHOSTNAME=1; AC_SUBST([HAVE_DECL_SETHOSTNAME]) HAVE_DECL_TRUNCATE=1; AC_SUBST([HAVE_DECL_TRUNCATE]) HAVE_DECL_TTYNAME_R=1; AC_SUBST([HAVE_DECL_TTYNAME_R]) HAVE_OS_H=0; AC_SUBST([HAVE_OS_H]) HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H]) REPLACE_ACCESS=0; AC_SUBST([REPLACE_ACCESS]) REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN]) REPLACE_CLOSE=0; AC_SUBST([REPLACE_CLOSE]) REPLACE_COPY_FILE_RANGE=0; AC_SUBST([REPLACE_COPY_FILE_RANGE]) REPLACE_DUP=0; AC_SUBST([REPLACE_DUP]) REPLACE_DUP2=0; AC_SUBST([REPLACE_DUP2]) REPLACE_DUP3=0; AC_SUBST([REPLACE_DUP3]) REPLACE_EXECL=0; AC_SUBST([REPLACE_EXECL]) REPLACE_EXECLE=0; AC_SUBST([REPLACE_EXECLE]) REPLACE_EXECLP=0; AC_SUBST([REPLACE_EXECLP]) REPLACE_EXECV=0; AC_SUBST([REPLACE_EXECV]) REPLACE_EXECVE=0; AC_SUBST([REPLACE_EXECVE]) REPLACE_EXECVP=0; AC_SUBST([REPLACE_EXECVP]) REPLACE_EXECVPE=0; AC_SUBST([REPLACE_EXECVPE]) REPLACE_FACCESSAT=0; AC_SUBST([REPLACE_FACCESSAT]) REPLACE_FCHOWNAT=0; AC_SUBST([REPLACE_FCHOWNAT]) REPLACE_FDATASYNC=0; AC_SUBST([REPLACE_FDATASYNC]) REPLACE_FTRUNCATE=0; AC_SUBST([REPLACE_FTRUNCATE]) REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD]) REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME]) REPLACE_GETDTABLESIZE=0; AC_SUBST([REPLACE_GETDTABLESIZE]) REPLACE_GETENTROPY=0; AC_SUBST([REPLACE_GETENTROPY]) REPLACE_GETLOGIN_R=0; AC_SUBST([REPLACE_GETLOGIN_R]) REPLACE_GETGROUPS=0; AC_SUBST([REPLACE_GETGROUPS]) REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE]) REPLACE_GETPASS=0; AC_SUBST([REPLACE_GETPASS]) REPLACE_GETPASS_FOR_GETPASS_GNU=0; AC_SUBST([REPLACE_GETPASS_FOR_GETPASS_GNU]) REPLACE_ISATTY=0; AC_SUBST([REPLACE_ISATTY]) REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN]) REPLACE_LINK=0; AC_SUBST([REPLACE_LINK]) REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT]) REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK]) REPLACE_PIPE2=0; AC_SUBST([REPLACE_PIPE2]) REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD]) REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE]) REPLACE_READ=0; AC_SUBST([REPLACE_READ]) REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK]) REPLACE_READLINKAT=0; AC_SUBST([REPLACE_READLINKAT]) REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR]) REPLACE_SETHOSTNAME=0; AC_SUBST([REPLACE_SETHOSTNAME]) REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP]) REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK]) REPLACE_SYMLINKAT=0; AC_SUBST([REPLACE_SYMLINKAT]) REPLACE_TRUNCATE=0; AC_SUBST([REPLACE_TRUNCATE]) REPLACE_TTYNAME_R=0; AC_SUBST([REPLACE_TTYNAME_R]) REPLACE_UNLINK=0; AC_SUBST([REPLACE_UNLINK]) REPLACE_UNLINKAT=0; AC_SUBST([REPLACE_UNLINKAT]) REPLACE_USLEEP=0; AC_SUBST([REPLACE_USLEEP]) REPLACE_WRITE=0; AC_SUBST([REPLACE_WRITE]) UNISTD_H_HAVE_SYS_RANDOM_H=0; AC_SUBST([UNISTD_H_HAVE_SYS_RANDOM_H]) UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H]) UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS]) ]) recode-3.7.15/m4/msvc-inval.m40000644000175000017500000000133414371444255011404 # msvc-inval.m4 serial 1 dnl Copyright (C) 2011-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_MSVC_INVAL], [ AC_CHECK_FUNCS_ONCE([_set_invalid_parameter_handler]) if test $ac_cv_func__set_invalid_parameter_handler = yes; then HAVE_MSVC_INVALID_PARAMETER_HANDLER=1 AC_DEFINE([HAVE_MSVC_INVALID_PARAMETER_HANDLER], [1], [Define to 1 on MSVC platforms that have the "invalid parameter handler" concept.]) else HAVE_MSVC_INVALID_PARAMETER_HANDLER=0 fi AC_SUBST([HAVE_MSVC_INVALID_PARAMETER_HANDLER]) ]) recode-3.7.15/m4/printf-frexp.m40000644000175000017500000000226614371444255011756 # printf-frexp.m4 serial 5 dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Check how to define printf_frexp() without linking with libm. AC_DEFUN([gl_FUNC_PRINTF_FREXP], [ AC_REQUIRE([gl_CHECK_FREXP_NO_LIBM]) if test $gl_cv_func_frexp_no_libm = yes; then gl_FUNC_FREXP_WORKS case "$gl_cv_func_frexp_works" in *yes) AC_DEFINE([HAVE_FREXP_IN_LIBC], [1], [Define if the frexp function is available in libc.]) ;; esac fi AC_CACHE_CHECK([whether ldexp can be used without linking with libm], [gl_cv_func_ldexp_no_libm], [ AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include double x; int y;]], [[return ldexp (x, y) < 1;]])], [gl_cv_func_ldexp_no_libm=yes], [gl_cv_func_ldexp_no_libm=no]) ]) if test $gl_cv_func_ldexp_no_libm = yes; then AC_DEFINE([HAVE_LDEXP_IN_LIBC], [1], [Define if the ldexp function is available in libc.]) fi ]) recode-3.7.15/m4/double-slash-root.m40000644000175000017500000000312514371444255012670 # double-slash-root.m4 serial 4 -*- Autoconf -*- dnl Copyright (C) 2006, 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_DOUBLE_SLASH_ROOT], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_CACHE_CHECK([whether // is distinct from /], [gl_cv_double_slash_root], [ if test x"$cross_compiling" = xyes ; then # When cross-compiling, there is no way to tell whether // is special # short of a list of hosts. However, the only known hosts to date # that have a distinct // are Apollo DomainOS (too old to port to), # Cygwin, and z/OS. If anyone knows of another system for which // has # special semantics and is distinct from /, please report it to # . case $host in *-cygwin | i370-ibm-openedition) gl_cv_double_slash_root=yes ;; *) # Be optimistic and assume that / and // are the same when we # don't know. gl_cv_double_slash_root='unknown, assuming no' ;; esac else set x `ls -di / // 2>/dev/null` if test "$[2]" = "$[4]" && wc //dev/null >/dev/null 2>&1; then gl_cv_double_slash_root=no else gl_cv_double_slash_root=yes fi fi]) if test "$gl_cv_double_slash_root" = yes; then AC_DEFINE([DOUBLE_SLASH_IS_DISTINCT_ROOT], [1], [Define to 1 if // is a file system root distinct from /.]) fi ]) recode-3.7.15/m4/time_h.m40000644000175000017500000001664714371444255010607 # Configure a more-standard replacement for . # Copyright (C) 2000-2001, 2003-2007, 2009-2023 Free Software Foundation, Inc. # serial 21 # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Written by Paul Eggert and Jim Meyering. AC_DEFUN_ONCE([gl_TIME_H], [ dnl Ensure to expand the default settings once only, before all statements dnl that occur in other macros. AC_REQUIRE([gl_TIME_H_DEFAULTS]) gl_NEXT_HEADERS([time.h]) AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ #include ]], [asctime_r ctime_r]) AC_REQUIRE([AC_C_RESTRICT]) AC_CACHE_CHECK([for TIME_UTC in ], [gl_cv_time_h_has_TIME_UTC], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[static int x = TIME_UTC; x++;]])], [gl_cv_time_h_has_TIME_UTC=yes], [gl_cv_time_h_has_TIME_UTC=no])]) if test $gl_cv_time_h_has_TIME_UTC = yes; then TIME_H_DEFINES_TIME_UTC=1 else TIME_H_DEFINES_TIME_UTC=0 fi AC_SUBST([TIME_H_DEFINES_TIME_UTC]) ]) dnl Check whether 'struct timespec' is declared dnl in time.h, sys/time.h, pthread.h, or unistd.h. AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], [ AC_CHECK_HEADERS_ONCE([sys/time.h]) AC_CACHE_CHECK([for struct timespec in ], [gl_cv_sys_struct_timespec_in_time_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], [gl_cv_sys_struct_timespec_in_time_h=yes], [gl_cv_sys_struct_timespec_in_time_h=no])]) TIME_H_DEFINES_STRUCT_TIMESPEC=0 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 UNISTD_H_DEFINES_STRUCT_TIMESPEC=0 if test $gl_cv_sys_struct_timespec_in_time_h = yes; then TIME_H_DEFINES_STRUCT_TIMESPEC=1 else AC_CACHE_CHECK([for struct timespec in ], [gl_cv_sys_struct_timespec_in_sys_time_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], [gl_cv_sys_struct_timespec_in_sys_time_h=yes], [gl_cv_sys_struct_timespec_in_sys_time_h=no])]) if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1 else AC_CACHE_CHECK([for struct timespec in ], [gl_cv_sys_struct_timespec_in_pthread_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], [gl_cv_sys_struct_timespec_in_pthread_h=yes], [gl_cv_sys_struct_timespec_in_pthread_h=no])]) if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 else AC_CACHE_CHECK([for struct timespec in ], [gl_cv_sys_struct_timespec_in_unistd_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], [gl_cv_sys_struct_timespec_in_unistd_h=yes], [gl_cv_sys_struct_timespec_in_unistd_h=no])]) if test $gl_cv_sys_struct_timespec_in_unistd_h = yes; then UNISTD_H_DEFINES_STRUCT_TIMESPEC=1 fi fi fi fi AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC]) AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC]) AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC]) AC_SUBST([UNISTD_H_DEFINES_STRUCT_TIMESPEC]) ]) # gl_TIME_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_TIME_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_TIME_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_TIME_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_TIME_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CTIME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKTIME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOCALTIME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NANOSLEEP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRFTIME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRPTIME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMEGM]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMESPEC_GET]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMESPEC_GETRES]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIME_R]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIME_RZ]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TZSET]) dnl Support Microsoft deprecated alias function names by default. gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_TZSET], [1]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_TIME_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_TIME_H_DEFAULTS]) ]) AC_DEFUN([gl_TIME_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. HAVE_DECL_LOCALTIME_R=1; AC_SUBST([HAVE_DECL_LOCALTIME_R]) HAVE_NANOSLEEP=1; AC_SUBST([HAVE_NANOSLEEP]) HAVE_STRPTIME=1; AC_SUBST([HAVE_STRPTIME]) HAVE_TIMEGM=1; AC_SUBST([HAVE_TIMEGM]) HAVE_TIMESPEC_GET=1; AC_SUBST([HAVE_TIMESPEC_GET]) HAVE_TIMESPEC_GETRES=1; AC_SUBST([HAVE_TIMESPEC_GETRES]) dnl Even GNU libc does not have timezone_t yet. HAVE_TIMEZONE_T=0; AC_SUBST([HAVE_TIMEZONE_T]) dnl If another module says to replace or to not replace, do that. dnl Otherwise, replace only if someone compiles with -DGNULIB_PORTCHECK; dnl this lets maintainers check for portability. REPLACE_CTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_CTIME]) REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; AC_SUBST([REPLACE_LOCALTIME_R]) REPLACE_MKTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_MKTIME]) REPLACE_NANOSLEEP=GNULIB_PORTCHECK; AC_SUBST([REPLACE_NANOSLEEP]) REPLACE_STRFTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_STRFTIME]) REPLACE_TIMEGM=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMEGM]) REPLACE_TIMESPEC_GET=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMESPEC_GET]) REPLACE_TZSET=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TZSET]) dnl Hack so that the time module doesn't depend on the sys_time module. dnl First, default GNULIB_GETTIMEOFDAY to 0 if sys_time is absent. : ${GNULIB_GETTIMEOFDAY=0}; AC_SUBST([GNULIB_GETTIMEOFDAY]) dnl Second, it's OK to not use GNULIB_PORTCHECK for REPLACE_GMTIME dnl and REPLACE_LOCALTIME, as portability to Solaris 2.6 and earlier dnl is no longer a big deal. REPLACE_GMTIME=0; AC_SUBST([REPLACE_GMTIME]) REPLACE_LOCALTIME=0; AC_SUBST([REPLACE_LOCALTIME]) ]) recode-3.7.15/m4/memchr.m40000644000175000017500000000652014371444255010602 # memchr.m4 serial 18 dnl Copyright (C) 2002-2004, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_FUNC_MEMCHR], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl Check for prerequisites for memory fence checks. gl_FUNC_MMAP_ANON AC_CHECK_HEADERS_ONCE([sys/mman.h]) AC_CHECK_FUNCS_ONCE([mprotect]) AC_REQUIRE([gl_STRING_H_DEFAULTS]) # Detect platform-specific bugs in some versions of glibc: # memchr should not dereference anything with length 0 # https://bugzilla.redhat.com/show_bug.cgi?id=499689 # memchr should not dereference overestimated length after a match # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737 # https://sourceware.org/bugzilla/show_bug.cgi?id=10162 # memchr should cast the second argument to 'unsigned char'. # This bug exists in Android 4.3. # Assume that memchr works on platforms that lack mprotect. AC_CACHE_CHECK([whether memchr works], [gl_cv_func_memchr_works], [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #if HAVE_SYS_MMAN_H # include # include # include # include # ifndef MAP_FILE # define MAP_FILE 0 # endif #endif ]], [[ int result = 0; char *fence = NULL; #if HAVE_SYS_MMAN_H && HAVE_MPROTECT # if HAVE_MAP_ANONYMOUS const int flags = MAP_ANONYMOUS | MAP_PRIVATE; const int fd = -1; # else /* !HAVE_MAP_ANONYMOUS */ const int flags = MAP_FILE | MAP_PRIVATE; int fd = open ("/dev/zero", O_RDONLY, 0666); if (fd >= 0) # endif { int pagesize = getpagesize (); char *two_pages = (char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE, flags, fd, 0); if (two_pages != (char *)(-1) && mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0) fence = two_pages + pagesize; } #endif if (fence) { /* Test against bugs on glibc systems. */ if (memchr (fence, 0, 0)) result |= 1; strcpy (fence - 9, "12345678"); if (memchr (fence - 9, 0, 79) != fence - 1) result |= 2; if (memchr (fence - 1, 0, 3) != fence - 1) result |= 4; /* Test against bug on AIX 7.2. */ if (memchr (fence - 4, '6', 16) != fence - 4) result |= 8; } /* Test against bug on Android 4.3. */ { char input[3]; input[0] = 'a'; input[1] = 'b'; input[2] = 'c'; if (memchr (input, 0x789abc00 | 'b', 3) != input + 1) result |= 16; } return result; ]])], [gl_cv_func_memchr_works=yes], [gl_cv_func_memchr_works=no], [case "$host_os" in # Guess no on Android. linux*-android*) gl_cv_func_memchr_works="guessing no" ;; # Guess yes on native Windows. mingw*) gl_cv_func_memchr_works="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_memchr_works="$gl_cross_guess_normal" ;; esac ]) ]) case "$gl_cv_func_memchr_works" in *yes) ;; *) REPLACE_MEMCHR=1 ;; esac ]) # Prerequisites of lib/memchr.c. AC_DEFUN([gl_PREREQ_MEMCHR], [ AC_CHECK_HEADERS([bp-sym.h]) ]) recode-3.7.15/m4/realloc.m40000644000175000017500000000433514371444255010752 # realloc.m4 serial 26 dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # This is adapted with modifications from upstream Autoconf here: # https://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/autoconf/functions.m4?id=v2.70#n1455 AC_DEFUN([_AC_FUNC_REALLOC_IF], [ AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles AC_CACHE_CHECK([whether realloc (0, 0) returns nonnull], [ac_cv_func_realloc_0_nonnull], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[void *p = realloc (0, 0); int result = !p; free (p); return result;]]) ], [ac_cv_func_realloc_0_nonnull=yes], [ac_cv_func_realloc_0_nonnull=no], [case "$host_os" in # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \ | gnu* | *-musl* | midnightbsd* \ | hpux* | solaris* | cygwin* | mingw* | msys* ) ac_cv_func_realloc_0_nonnull="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) ac_cv_func_realloc_0_nonnull="$gl_cross_guess_normal" ;; esac ]) ]) AS_CASE([$ac_cv_func_realloc_0_nonnull], [*yes], [$1], [$2]) ])# AC_FUNC_REALLOC # gl_FUNC_REALLOC_GNU # ------------------- # Replace realloc if it is not compatible with GNU libc. AC_DEFUN([gl_FUNC_REALLOC_GNU], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_REALLOC_POSIX]) if test $REPLACE_REALLOC_FOR_REALLOC_GNU = 0; then _AC_FUNC_REALLOC_IF([], [REPLACE_REALLOC_FOR_REALLOC_GNU=1]) fi ])# gl_FUNC_REALLOC_GNU # gl_FUNC_REALLOC_POSIX # --------------------- # Test whether 'realloc' is POSIX compliant (sets errno to ENOMEM when it # fails, and doesn't mess up with ptrdiff_t overflow), # and replace realloc if it is not. AC_DEFUN([gl_FUNC_REALLOC_POSIX], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_MALLOC_POSIX]) if test $REPLACE_MALLOC_FOR_MALLOC_POSIX = 1; then REPLACE_REALLOC_FOR_REALLOC_POSIX=1 fi ]) recode-3.7.15/m4/absolute-header.m40000644000175000017500000001015114371444255012366 # absolute-header.m4 serial 17 dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Derek Price. # gl_ABSOLUTE_HEADER(HEADER1 HEADER2 ...) # --------------------------------------- # Find the absolute name of a header file, testing first if the header exists. # If the header were sys/inttypes.h, this macro would define # ABSOLUTE_SYS_INTTYPES_H to the '""' quoted absolute name of sys/inttypes.h # in config.h # (e.g. '#define ABSOLUTE_SYS_INTTYPES_H "///usr/include/sys/inttypes.h"'). # The three "///" are to pacify Sun C 5.8, which otherwise would say # "warning: #include of /usr/include/... may be non-portable". # Use '""', not '<>', so that the /// cannot be confused with a C99 comment. # Note: This macro assumes that the header file is not empty after # preprocessing, i.e. it does not only define preprocessor macros but also # provides some type/enum definitions or function/variable declarations. AC_DEFUN([gl_ABSOLUTE_HEADER], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_PREPROC_REQUIRE()dnl m4_foreach_w([gl_HEADER_NAME], [$1], [AS_VAR_PUSHDEF([gl_absolute_header], [gl_cv_absolute_]m4_defn([gl_HEADER_NAME]))dnl AC_CACHE_CHECK([absolute name of <]m4_defn([gl_HEADER_NAME])[>], [gl_absolute_header], [AS_VAR_PUSHDEF([ac_header_exists], [ac_cv_header_]m4_defn([gl_HEADER_NAME]))dnl AC_CHECK_HEADERS_ONCE(m4_defn([gl_HEADER_NAME]))dnl if test AS_VAR_GET([ac_header_exists]) = yes; then gl_ABSOLUTE_HEADER_ONE(m4_defn([gl_HEADER_NAME])) fi AS_VAR_POPDEF([ac_header_exists])dnl ])dnl AC_DEFINE_UNQUOTED(AS_TR_CPP([ABSOLUTE_]m4_defn([gl_HEADER_NAME])), ["AS_VAR_GET([gl_absolute_header])"], [Define this to an absolute name of <]m4_defn([gl_HEADER_NAME])[>.]) AS_VAR_POPDEF([gl_absolute_header])dnl ])dnl ])# gl_ABSOLUTE_HEADER # gl_ABSOLUTE_HEADER_ONE(HEADER) # ------------------------------ # Like gl_ABSOLUTE_HEADER, except that: # - it assumes that the header exists, # - it uses the current CPPFLAGS, # - it does not cache the result, # - it is silent. AC_DEFUN([gl_ABSOLUTE_HEADER_ONE], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote([$1])[[>]])]) dnl AIX "xlc -E" and "cc -E" omit #line directives for header files dnl that contain only a #include of other header files and no dnl non-comment tokens of their own. This leads to a failure to dnl detect the absolute name of , , dnl and others. The workaround is to force preservation of comments dnl through option -C. This ensures all necessary #line directives dnl are present. GCC supports option -C as well. case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac changequote(,) case "$host_os" in mingw*) dnl For the sake of native Windows compilers (excluding gcc), dnl treat backslash as a directory separator, like /. dnl Actually, these compilers use a double-backslash as dnl directory separator, inside the dnl # line "filename" dnl directives. gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac dnl A sed expression that turns a string into a basic regular dnl expression, for use within "/.../". gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo '$1' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' changequote([,]) dnl eval is necessary to expand gl_absname_cpp. dnl Ultrix and Pyramid sh refuse to redirect output of eval, dnl so use subshell. AS_VAR_SET([gl_cv_absolute_]AS_TR_SH([[$1]]), [`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | sed -n "$gl_absolute_header_sed"`]) ]) recode-3.7.15/m4/stdlib_h.m40000644000175000017500000002436214371444255011123 # stdlib_h.m4 serial 71 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_STDLIB_H], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) gl_NEXT_HEADERS([stdlib.h]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use, and which is not dnl guaranteed by C89. gl_WARN_ON_USE_PREPARE([[#include #if HAVE_SYS_LOADAVG_H /* OpenIndiana has a bug: must be included before . */ # include # include #endif #if HAVE_RANDOM_H # include #endif ]], [_Exit aligned_alloc atoll canonicalize_file_name free getloadavg getprogname getsubopt grantpt initstate initstate_r mbtowc mkdtemp mkostemp mkostemps mkstemp mkstemps posix_memalign posix_openpt ptsname ptsname_r qsort_r random random_r reallocarray realpath rpmatch secure_getenv setenv setstate setstate_r srandom srandom_r strtod strtol strtold strtoll strtoul strtoull unlockpt unsetenv]) AC_REQUIRE([AC_C_RESTRICT]) AC_CHECK_DECLS_ONCE([ecvt]) if test $ac_cv_have_decl_ecvt = no; then HAVE_DECL_ECVT=0 fi AC_CHECK_DECLS_ONCE([fcvt]) if test $ac_cv_have_decl_fcvt = no; then HAVE_DECL_FCVT=0 fi AC_CHECK_DECLS_ONCE([gcvt]) if test $ac_cv_have_decl_gcvt = no; then HAVE_DECL_GCVT=0 fi ]) # gl_STDLIB_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_STDLIB_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_STDLIB_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB__EXIT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ALIGNED_ALLOC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATOLL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CALLOC_GNU]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CALLOC_POSIX]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CANONICALIZE_FILE_NAME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREE_POSIX]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOADAVG]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPROGNAME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSUBOPT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GRANTPT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MALLOC_GNU]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MALLOC_POSIX]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBTOWC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDTEMP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKOSTEMP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKOSTEMPS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKSTEMP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKSTEMPS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POSIX_MEMALIGN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POSIX_OPENPT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTSNAME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTSNAME_R]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTENV]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_QSORT_R]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RANDOM]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RANDOM_R]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOCARRAY]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOC_GNU]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOC_POSIX]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALPATH]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RPMATCH]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SECURE_GETENV]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETENV]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOD]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOLD]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOLL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOUL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOULL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYSTEM_POSIX]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLOCKPT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNSETENV]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTOMB]) dnl Support Microsoft deprecated alias function names by default. gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ECVT], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FCVT], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GCVT], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MKTEMP], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_PUTENV], [1]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) ]) AC_DEFUN([gl_STDLIB_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. HAVE__EXIT=1; AC_SUBST([HAVE__EXIT]) HAVE_ALIGNED_ALLOC=1; AC_SUBST([HAVE_ALIGNED_ALLOC]) HAVE_ATOLL=1; AC_SUBST([HAVE_ATOLL]) HAVE_CANONICALIZE_FILE_NAME=1; AC_SUBST([HAVE_CANONICALIZE_FILE_NAME]) HAVE_DECL_ECVT=1; AC_SUBST([HAVE_DECL_ECVT]) HAVE_DECL_FCVT=1; AC_SUBST([HAVE_DECL_FCVT]) HAVE_DECL_GCVT=1; AC_SUBST([HAVE_DECL_GCVT]) HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG]) HAVE_GETPROGNAME=1; AC_SUBST([HAVE_GETPROGNAME]) HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT]) HAVE_GRANTPT=1; AC_SUBST([HAVE_GRANTPT]) HAVE_INITSTATE=1; AC_SUBST([HAVE_INITSTATE]) HAVE_DECL_INITSTATE=1; AC_SUBST([HAVE_DECL_INITSTATE]) HAVE_MBTOWC=1; AC_SUBST([HAVE_MBTOWC]) HAVE_MKDTEMP=1; AC_SUBST([HAVE_MKDTEMP]) HAVE_MKOSTEMP=1; AC_SUBST([HAVE_MKOSTEMP]) HAVE_MKOSTEMPS=1; AC_SUBST([HAVE_MKOSTEMPS]) HAVE_MKSTEMP=1; AC_SUBST([HAVE_MKSTEMP]) HAVE_MKSTEMPS=1; AC_SUBST([HAVE_MKSTEMPS]) HAVE_POSIX_MEMALIGN=1; AC_SUBST([HAVE_POSIX_MEMALIGN]) HAVE_POSIX_OPENPT=1; AC_SUBST([HAVE_POSIX_OPENPT]) HAVE_PTSNAME=1; AC_SUBST([HAVE_PTSNAME]) HAVE_PTSNAME_R=1; AC_SUBST([HAVE_PTSNAME_R]) HAVE_QSORT_R=1; AC_SUBST([HAVE_QSORT_R]) HAVE_RANDOM=1; AC_SUBST([HAVE_RANDOM]) HAVE_RANDOM_H=1; AC_SUBST([HAVE_RANDOM_H]) HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R]) HAVE_REALLOCARRAY=1; AC_SUBST([HAVE_REALLOCARRAY]) HAVE_REALPATH=1; AC_SUBST([HAVE_REALPATH]) HAVE_RPMATCH=1; AC_SUBST([HAVE_RPMATCH]) HAVE_SECURE_GETENV=1; AC_SUBST([HAVE_SECURE_GETENV]) HAVE_SETENV=1; AC_SUBST([HAVE_SETENV]) HAVE_DECL_SETENV=1; AC_SUBST([HAVE_DECL_SETENV]) HAVE_SETSTATE=1; AC_SUBST([HAVE_SETSTATE]) HAVE_DECL_SETSTATE=1; AC_SUBST([HAVE_DECL_SETSTATE]) HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD]) HAVE_STRTOL=1; AC_SUBST([HAVE_STRTOL]) HAVE_STRTOLD=1; AC_SUBST([HAVE_STRTOLD]) HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL]) HAVE_STRTOUL=1; AC_SUBST([HAVE_STRTOUL]) HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL]) HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA]) HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H]) HAVE_UNLOCKPT=1; AC_SUBST([HAVE_UNLOCKPT]) HAVE_DECL_UNSETENV=1; AC_SUBST([HAVE_DECL_UNSETENV]) REPLACE__EXIT=0; AC_SUBST([REPLACE__EXIT]) REPLACE_ALIGNED_ALLOC=0; AC_SUBST([REPLACE_ALIGNED_ALLOC]) REPLACE_CALLOC_FOR_CALLOC_GNU=0; AC_SUBST([REPLACE_CALLOC_FOR_CALLOC_GNU]) REPLACE_CALLOC_FOR_CALLOC_POSIX=0; AC_SUBST([REPLACE_CALLOC_FOR_CALLOC_POSIX]) REPLACE_CANONICALIZE_FILE_NAME=0; AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME]) REPLACE_FREE=0; AC_SUBST([REPLACE_FREE]) REPLACE_GETLOADAVG=0; AC_SUBST([REPLACE_GETLOADAVG]) REPLACE_GETPROGNAME=0; AC_SUBST([REPLACE_GETPROGNAME]) REPLACE_GETSUBOPT=0; AC_SUBST([REPLACE_GETSUBOPT]) REPLACE_INITSTATE=0; AC_SUBST([REPLACE_INITSTATE]) REPLACE_MALLOC_FOR_MALLOC_GNU=0; AC_SUBST([REPLACE_MALLOC_FOR_MALLOC_GNU]) REPLACE_MALLOC_FOR_MALLOC_POSIX=0; AC_SUBST([REPLACE_MALLOC_FOR_MALLOC_POSIX]) REPLACE_MBTOWC=0; AC_SUBST([REPLACE_MBTOWC]) REPLACE_MKOSTEMP=0; AC_SUBST([REPLACE_MKOSTEMP]) REPLACE_MKOSTEMPS=0; AC_SUBST([REPLACE_MKOSTEMPS]) REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP]) REPLACE_POSIX_MEMALIGN=0; AC_SUBST([REPLACE_POSIX_MEMALIGN]) REPLACE_POSIX_OPENPT=0; AC_SUBST([REPLACE_POSIX_OPENPT]) REPLACE_PTSNAME=0; AC_SUBST([REPLACE_PTSNAME]) REPLACE_PTSNAME_R=0; AC_SUBST([REPLACE_PTSNAME_R]) REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV]) REPLACE_QSORT_R=0; AC_SUBST([REPLACE_QSORT_R]) REPLACE_RANDOM=0; AC_SUBST([REPLACE_RANDOM]) REPLACE_RANDOM_R=0; AC_SUBST([REPLACE_RANDOM_R]) REPLACE_REALLOC_FOR_REALLOC_GNU=0; AC_SUBST([REPLACE_REALLOC_FOR_REALLOC_GNU]) REPLACE_REALLOC_FOR_REALLOC_POSIX=0; AC_SUBST([REPLACE_REALLOC_FOR_REALLOC_POSIX]) REPLACE_REALLOCARRAY=0; AC_SUBST([REPLACE_REALLOCARRAY]) REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH]) REPLACE_SETENV=0; AC_SUBST([REPLACE_SETENV]) REPLACE_SETSTATE=0; AC_SUBST([REPLACE_SETSTATE]) REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD]) REPLACE_STRTOL=0; AC_SUBST([REPLACE_STRTOL]) REPLACE_STRTOLD=0; AC_SUBST([REPLACE_STRTOLD]) REPLACE_STRTOLL=0; AC_SUBST([REPLACE_STRTOLL]) REPLACE_STRTOUL=0; AC_SUBST([REPLACE_STRTOUL]) REPLACE_STRTOULL=0; AC_SUBST([REPLACE_STRTOULL]) REPLACE_UNSETENV=0; AC_SUBST([REPLACE_UNSETENV]) REPLACE_WCTOMB=0; AC_SUBST([REPLACE_WCTOMB]) ]) recode-3.7.15/m4/isnanl.m40000644000175000017500000001654014371444255010616 # isnanl.m4 serial 22 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_ISNANL], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) ISNANL_LIBM= gl_HAVE_ISNANL_NO_LIBM if test $gl_cv_func_isnanl_no_libm = no; then gl_HAVE_ISNANL_IN_LIBM if test $gl_cv_func_isnanl_in_libm = yes; then ISNANL_LIBM=-lm fi fi dnl The variable gl_func_isnanl set here is used by isnan.m4. if test $gl_cv_func_isnanl_no_libm = yes \ || test $gl_cv_func_isnanl_in_libm = yes; then save_LIBS="$LIBS" LIBS="$LIBS $ISNANL_LIBM" gl_FUNC_ISNANL_WORKS LIBS="$save_LIBS" case "$gl_cv_func_isnanl_works" in *yes) gl_func_isnanl=yes ;; *) gl_func_isnanl=no; ISNANL_LIBM= ;; esac else gl_func_isnanl=no fi if test $gl_func_isnanl != yes; then HAVE_ISNANL=0 fi AC_SUBST([ISNANL_LIBM]) ]) AC_DEFUN([gl_FUNC_ISNANL_NO_LIBM], [ gl_HAVE_ISNANL_NO_LIBM gl_func_isnanl_no_libm=$gl_cv_func_isnanl_no_libm if test $gl_func_isnanl_no_libm = yes; then gl_FUNC_ISNANL_WORKS case "$gl_cv_func_isnanl_works" in *yes) ;; *) gl_func_isnanl_no_libm=no ;; esac fi if test $gl_func_isnanl_no_libm = yes; then AC_DEFINE([HAVE_ISNANL_IN_LIBC], [1], [Define if the isnan(long double) function is available in libc.]) fi ]) dnl Prerequisites of replacement isnanl definition. It does not need -lm. AC_DEFUN([gl_PREREQ_ISNANL], [ gl_LONG_DOUBLE_EXPONENT_LOCATION AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) ]) dnl Test whether isnanl() can be used without libm. AC_DEFUN([gl_HAVE_ISNANL_NO_LIBM], [ AC_CACHE_CHECK([whether isnan(long double) can be used without linking with libm], [gl_cv_func_isnanl_no_libm], [ AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # undef isnanl # define isnanl(x) __builtin_isnan ((long double)(x)) #elif defined isnan # undef isnanl # define isnanl(x) isnan ((long double)(x)) #endif long double x;]], [[return isnanl (x);]])], [gl_cv_func_isnanl_no_libm=yes], [gl_cv_func_isnanl_no_libm=no]) ]) ]) dnl Test whether isnanl() can be used with libm. AC_DEFUN([gl_HAVE_ISNANL_IN_LIBM], [ AC_CACHE_CHECK([whether isnan(long double) can be used with libm], [gl_cv_func_isnanl_in_libm], [ save_LIBS="$LIBS" LIBS="$LIBS -lm" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # undef isnanl # define isnanl(x) __builtin_isnan ((long double)(x)) #elif defined isnan # undef isnanl # define isnanl(x) isnan ((long double)(x)) #endif long double x;]], [[return isnanl (x);]])], [gl_cv_func_isnanl_in_libm=yes], [gl_cv_func_isnanl_in_libm=no]) LIBS="$save_LIBS" ]) ]) dnl Test whether isnanl() recognizes all canonical numbers which are neither dnl finite nor infinite. AC_DEFUN([gl_FUNC_ISNANL_WORKS], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gl_BIGENDIAN]) AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether isnanl works], [gl_cv_func_isnanl_works], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # undef isnanl # define isnanl(x) __builtin_isnan ((long double)(x)) #elif defined isnan # undef isnanl # define isnanl(x) isnan ((long double)(x)) #endif #define NWORDS \ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { unsigned int word[NWORDS]; long double value; } memory_long_double; /* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the runtime type conversion. */ #ifdef __sgi static long double NaNl () { double zero = 0.0; return zero / zero; } #else # define NaNl() (0.0L / 0.0L) #endif int main () { int result = 0; if (!isnanl (NaNl ())) result |= 1; { memory_long_double m; unsigned int i; /* The isnanl function should be immune against changes in the sign bit and in the mantissa bits. The xor operation twiddles a bit that can only be a sign bit or a mantissa bit (since the exponent never extends to bit 31). */ m.value = NaNl (); m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); for (i = 0; i < NWORDS; i++) m.word[i] |= 1; if (!isnanl (m.value)) result |= 1; } #if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE /* Representation of an 80-bit 'long double' as an initializer for a sequence of 'unsigned int' words. */ # ifdef WORDS_BIGENDIAN # define LDBL80_WORDS(exponent,manthi,mantlo) \ { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \ (unsigned int) (mantlo) << 16 \ } # else # define LDBL80_WORDS(exponent,manthi,mantlo) \ { mantlo, manthi, exponent } # endif { /* Quiet NaN. */ static memory_long_double x = { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; if (!isnanl (x.value)) result |= 2; } { /* Signalling NaN. */ static memory_long_double x = { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; if (!isnanl (x.value)) result |= 2; } /* isnanl should return something even for noncanonical values. */ { /* Pseudo-NaN. */ static memory_long_double x = { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; if (isnanl (x.value) && !isnanl (x.value)) result |= 4; } { /* Pseudo-Infinity. */ static memory_long_double x = { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; if (isnanl (x.value) && !isnanl (x.value)) result |= 8; } { /* Pseudo-Zero. */ static memory_long_double x = { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; if (isnanl (x.value) && !isnanl (x.value)) result |= 16; } { /* Unnormalized number. */ static memory_long_double x = { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; if (isnanl (x.value) && !isnanl (x.value)) result |= 32; } { /* Pseudo-Denormal. */ static memory_long_double x = { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; if (isnanl (x.value) && !isnanl (x.value)) result |= 64; } #endif return result; }]])], [gl_cv_func_isnanl_works=yes], [gl_cv_func_isnanl_works=no], [case "$host_os" in mingw*) # Guess yes on mingw, no on MSVC. AC_EGREP_CPP([Known], [ #ifdef __MINGW32__ Known #endif ], [gl_cv_func_isnanl_works="guessing yes"], [gl_cv_func_isnanl_works="guessing no"]) ;; *) gl_cv_func_isnanl_works="guessing yes" ;; esac ]) ]) ]) recode-3.7.15/m4/intlmacosx.m40000644000175000017500000000475313226751342011512 # intlmacosx.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2004-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Checks for special options needed on Mac OS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ dnl Check for API introduced in Mac OS X 10.2. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], [gt_cv_func_CFPreferencesCopyAppValue], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFPreferencesCopyAppValue(NULL, NULL)]])], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi dnl Check for API introduced in Mac OS X 10.3. AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFLocaleCopyCurrent();]])], [gt_cv_func_CFLocaleCopyCurrent=yes], [gt_cv_func_CFLocaleCopyCurrent=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFLocaleCopyCurrent = yes; then AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi AC_SUBST([INTL_MACOSX_LIBS]) ]) recode-3.7.15/m4/ldexpl.m40000644000175000017500000000763014371444255010622 # ldexpl.m4 serial 17 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_LDEXPL], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) AC_REQUIRE([gl_FUNC_ISNANL]) dnl for ISNANL_LIBM dnl Persuade glibc to declare ldexpl(). AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) dnl Check whether it's declared. dnl Mac OS X 10.3 has ldexpl() in libc but doesn't declare it in . AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [[#include ]]) LDEXPL_LIBM= if test $HAVE_DECL_LDEXPL = 1; then gl_CHECK_LDEXPL_NO_LIBM if test $gl_cv_func_ldexpl_no_libm = no; then AC_CACHE_CHECK([whether ldexpl() can be used with libm], [gl_cv_func_ldexpl_in_libm], [ save_LIBS="$LIBS" LIBS="$LIBS -lm" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include long double x;]], [[return ldexpl (x, -1) > 0;]])], [gl_cv_func_ldexpl_in_libm=yes], [gl_cv_func_ldexpl_in_libm=no]) LIBS="$save_LIBS" ]) if test $gl_cv_func_ldexpl_in_libm = yes; then LDEXPL_LIBM=-lm fi fi if test $gl_cv_func_ldexpl_no_libm = yes \ || test $gl_cv_func_ldexpl_in_libm = yes; then save_LIBS="$LIBS" LIBS="$LIBS $LDEXPL_LIBM" gl_FUNC_LDEXPL_WORKS LIBS="$save_LIBS" case "$gl_cv_func_ldexpl_works" in *yes) gl_func_ldexpl=yes ;; *) gl_func_ldexpl=no; REPLACE_LDEXPL=1 ;; esac else gl_func_ldexpl=no fi if test $gl_func_ldexpl = yes; then AC_DEFINE([HAVE_LDEXPL], [1], [Define if the ldexpl() function is available.]) fi fi if test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; then dnl Find libraries needed to link lib/ldexpl.c. if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then AC_REQUIRE([gl_FUNC_LDEXP]) LDEXPL_LIBM="$LDEXP_LIBM" else LDEXPL_LIBM="$ISNANL_LIBM" fi fi AC_SUBST([LDEXPL_LIBM]) ]) dnl Test whether ldexpl() can be used without linking with libm. dnl Set gl_cv_func_ldexpl_no_libm to 'yes' or 'no' accordingly. AC_DEFUN([gl_CHECK_LDEXPL_NO_LIBM], [ AC_CACHE_CHECK([whether ldexpl() can be used without linking with libm], [gl_cv_func_ldexpl_no_libm], [ AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include long double x;]], [[return ldexpl (x, -1) > 0;]])], [gl_cv_func_ldexpl_no_libm=yes], [gl_cv_func_ldexpl_no_libm=no]) ]) ]) dnl Test whether ldexpl() works on finite numbers (this fails on AIX 5.1 dnl and Mac OS X 10.4/PowerPC). AC_DEFUN([gl_FUNC_LDEXPL_WORKS], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether ldexpl works], [gl_cv_func_ldexpl_works], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include extern #ifdef __cplusplus "C" #endif long double ldexpl (long double, int); int main() { int result = 0; { volatile long double x = 1.0; volatile long double y = ldexpl (x, -1); if (y != 0.5L) result |= 1; } { volatile long double x = 1.73205L; volatile long double y = ldexpl (x, 0); if (y != x) result |= 2; } return result; }]])], [gl_cv_func_ldexpl_works=yes], [gl_cv_func_ldexpl_works=no], [ changequote(,)dnl case "$host_os" in aix | aix[3-6]*) gl_cv_func_ldexpl_works="guessing no" ;; # Guess yes on native Windows. mingw*) gl_cv_func_ldexpl_works="guessing yes" ;; *) gl_cv_func_ldexpl_works="guessing yes" ;; esac changequote([,])dnl ]) ]) ]) recode-3.7.15/m4/setlocale_null.m40000644000175000017500000001016614371444255012335 # setlocale_null.m4 serial 7 dnl Copyright (C) 2019-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_SETLOCALE_NULL], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([gl_PTHREADLIB]) AC_CHECK_HEADERS_ONCE([threads.h]) AC_CACHE_CHECK([whether setlocale (LC_ALL, NULL) is multithread-safe], [gl_cv_func_setlocale_null_all_mtsafe], [case "$host_os" in # Guess no on musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku. *-musl* | darwin* | freebsd* | midnightbsd* | netbsd* | openbsd* | aix* | haiku*) gl_cv_func_setlocale_null_all_mtsafe=no ;; # Guess no on Cygwin < 3.4.6. cygwin*) AC_EGREP_CPP([Lucky user], [ #if defined __CYGWIN__ #include #if CYGWIN_VERSION_DLL_COMBINED >= CYGWIN_VERSION_DLL_MAKE_COMBINED (3004, 6) Lucky user #endif #endif ], [gl_cv_func_setlocale_null_all_mtsafe=yes], [gl_cv_func_setlocale_null_all_mtsafe=no]) ;; # Guess yes on glibc, HP-UX, IRIX, Solaris, native Windows. *-gnu* | gnu* | hpux* | irix* | solaris* | mingw*) gl_cv_func_setlocale_null_all_mtsafe=yes ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_setlocale_null_all_mtsafe="$gl_cross_guess_normal" ;; esac ]) dnl On platforms without multithreading, there is no issue. case "$host_os" in mingw*) ;; *) if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then gl_cv_func_setlocale_null_all_mtsafe="trivially yes" fi ;; esac case "$gl_cv_func_setlocale_null_all_mtsafe" in *yes) SETLOCALE_NULL_ALL_MTSAFE=1 ;; *) SETLOCALE_NULL_ALL_MTSAFE=0 ;; esac AC_DEFINE_UNQUOTED([SETLOCALE_NULL_ALL_MTSAFE], [$SETLOCALE_NULL_ALL_MTSAFE], [Define to 1 if setlocale (LC_ALL, NULL) is multithread-safe.]) dnl This is about a single category (not LC_ALL). AC_CACHE_CHECK([whether setlocale (category, NULL) is multithread-safe], [gl_cv_func_setlocale_null_one_mtsafe], [case "$host_os" in # Guess no on OpenBSD, AIX. openbsd* | aix*) gl_cv_func_setlocale_null_one_mtsafe=no ;; # Guess yes on glibc, musl libc, macOS, FreeBSD, NetBSD, HP-UX, IRIX, Solaris, Haiku, Cygwin, native Windows. *-gnu* | gnu* | *-musl* | darwin* | freebsd* | midnightbsd* | netbsd* | hpux* | irix* | solaris* | haiku* | cygwin* | mingw*) gl_cv_func_setlocale_null_one_mtsafe=yes ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_setlocale_null_one_mtsafe="$gl_cross_guess_normal" ;; esac ]) dnl On platforms without multithreading, there is no issue. case "$host_os" in mingw*) ;; *) if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then gl_cv_func_setlocale_null_one_mtsafe="trivially yes" fi ;; esac case "$gl_cv_func_setlocale_null_one_mtsafe" in *yes) SETLOCALE_NULL_ONE_MTSAFE=1 ;; *) SETLOCALE_NULL_ONE_MTSAFE=0 ;; esac AC_DEFINE_UNQUOTED([SETLOCALE_NULL_ONE_MTSAFE], [$SETLOCALE_NULL_ONE_MTSAFE], [Define to 1 if setlocale (category, NULL) is multithread-safe.]) dnl Determine link dependencies of lib/setlocale_null.c and lib/setlocale-lock.c. if test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0; then case "$host_os" in mingw*) SETLOCALE_NULL_LIB= ;; *) gl_WEAK_SYMBOLS case "$gl_cv_have_weak" in *yes) SETLOCALE_NULL_LIB= ;; *) SETLOCALE_NULL_LIB="$LIBPTHREAD" ;; esac ;; esac else SETLOCALE_NULL_LIB= fi dnl SETLOCALE_NULL_LIB is expected to be '-pthread' or '-lpthread' on AIX dnl with gcc or xlc, and empty otherwise. AC_SUBST([SETLOCALE_NULL_LIB]) dnl For backward compatibility. LIB_SETLOCALE_NULL="$SETLOCALE_NULL_LIB" AC_SUBST([LIB_SETLOCALE_NULL]) ]) # Prerequisites of lib/setlocale-lock.c. AC_DEFUN([gl_PREREQ_SETLOCALE_LOCK], [ gl_VISIBILITY ]) recode-3.7.15/m4/isnand.m40000644000175000017500000000534114371444255010603 # isnand.m4 serial 12 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Check how to get or define isnand(). AC_DEFUN([gl_FUNC_ISNAND], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) ISNAND_LIBM= gl_HAVE_ISNAND_NO_LIBM if test $gl_cv_func_isnand_no_libm = no; then gl_HAVE_ISNAND_IN_LIBM if test $gl_cv_func_isnand_in_libm = yes; then ISNAND_LIBM=-lm fi fi dnl The variable gl_func_isnand set here is used by isnan.m4. if test $gl_cv_func_isnand_no_libm = yes \ || test $gl_cv_func_isnand_in_libm = yes; then gl_func_isnand=yes else gl_func_isnand=no HAVE_ISNAND=0 fi AC_SUBST([ISNAND_LIBM]) ]) dnl Check how to get or define isnand() without linking with libm. AC_DEFUN([gl_FUNC_ISNAND_NO_LIBM], [ gl_HAVE_ISNAND_NO_LIBM gl_func_isnand_no_libm=$gl_cv_func_isnand_no_libm if test $gl_cv_func_isnand_no_libm = yes; then AC_DEFINE([HAVE_ISNAND_IN_LIBC], [1], [Define if the isnan(double) function is available in libc.]) fi ]) dnl Prerequisites of replacement isnand definition. It does not need -lm. AC_DEFUN([gl_PREREQ_ISNAND], [ AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION]) ]) dnl Test whether isnand() can be used with libm. AC_DEFUN([gl_HAVE_ISNAND_IN_LIBM], [ AC_CACHE_CHECK([whether isnan(double) can be used with libm], [gl_cv_func_isnand_in_libm], [ save_LIBS="$LIBS" LIBS="$LIBS -lm" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # undef isnand # define isnand(x) __builtin_isnan ((double)(x)) #elif defined isnan # undef isnand # define isnand(x) isnan ((double)(x)) #endif double x;]], [[return isnand (x);]])], [gl_cv_func_isnand_in_libm=yes], [gl_cv_func_isnand_in_libm=no]) LIBS="$save_LIBS" ]) ]) AC_DEFUN([gl_HAVE_ISNAND_NO_LIBM], [ AC_CACHE_CHECK([whether isnan(double) can be used without linking with libm], [gl_cv_func_isnand_no_libm], [ AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # undef isnand # define isnand(x) __builtin_isnan ((double)(x)) #else # undef isnand # define isnand(x) isnan ((double)(x)) #endif double x;]], [[return isnand (x);]])], [gl_cv_func_isnand_no_libm=yes], [gl_cv_func_isnand_no_libm=no]) ]) ]) recode-3.7.15/m4/stdint.m40000644000175000017500000004273114371444255010640 # stdint.m4 serial 61 dnl Copyright (C) 2001-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert and Bruno Haible. dnl Test whether is supported or must be substituted. AC_PREREQ([2.61]) AC_DEFUN_ONCE([gl_STDINT_H], [ AC_PREREQ([2.59])dnl AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([gl_LIMITS_H]) AC_REQUIRE([gt_TYPE_WINT_T]) dnl For backward compatibility. Some packages may still be testing these dnl macros. AC_DEFINE([HAVE_LONG_LONG_INT], [1], [Define to 1 if the system has the type 'long long int'.]) AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], [Define to 1 if the system has the type 'unsigned long long int'.]) dnl Check for , in the same way as gl_WCHAR_H does. AC_CHECK_HEADERS_ONCE([wchar.h]) if test $ac_cv_header_wchar_h = yes; then HAVE_WCHAR_H=1 else HAVE_WCHAR_H=0 fi AC_SUBST([HAVE_WCHAR_H]) dnl Check for . AC_CHECK_HEADERS_ONCE([inttypes.h]) if test $ac_cv_header_inttypes_h = yes; then HAVE_INTTYPES_H=1 else HAVE_INTTYPES_H=0 fi AC_SUBST([HAVE_INTTYPES_H]) dnl Check for . AC_CHECK_HEADERS_ONCE([sys/types.h]) if test $ac_cv_header_sys_types_h = yes; then HAVE_SYS_TYPES_H=1 else HAVE_SYS_TYPES_H=0 fi AC_SUBST([HAVE_SYS_TYPES_H]) gl_CHECK_NEXT_HEADERS([stdint.h]) if test $ac_cv_header_stdint_h = yes; then HAVE_STDINT_H=1 else HAVE_STDINT_H=0 fi AC_SUBST([HAVE_STDINT_H]) dnl Now see whether we need a substitute . if test $ac_cv_header_stdint_h = yes; then AC_CACHE_CHECK([whether stdint.h conforms to C99], [gl_cv_header_working_stdint_h], [gl_cv_header_working_stdint_h=no AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #define __STDC_CONSTANT_MACROS 1 #define __STDC_LIMIT_MACROS 1 #include /* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in . */ #if !(defined WCHAR_MIN && defined WCHAR_MAX) #error "WCHAR_MIN, WCHAR_MAX not defined in " #endif ] gl_STDINT_INCLUDES [ #ifdef INT8_MAX int8_t a1 = INT8_MAX; int8_t a1min = INT8_MIN; #endif #ifdef INT16_MAX int16_t a2 = INT16_MAX; int16_t a2min = INT16_MIN; #endif #ifdef INT32_MAX int32_t a3 = INT32_MAX; int32_t a3min = INT32_MIN; #endif #ifdef INT64_MAX int64_t a4 = INT64_MAX; int64_t a4min = INT64_MIN; #endif #ifdef UINT8_MAX uint8_t b1 = UINT8_MAX; #else typedef int b1[(unsigned char) -1 != 255 ? 1 : -1]; #endif #ifdef UINT16_MAX uint16_t b2 = UINT16_MAX; #endif #ifdef UINT32_MAX uint32_t b3 = UINT32_MAX; #endif #ifdef UINT64_MAX uint64_t b4 = UINT64_MAX; #endif int_least8_t c1 = INT8_C (0x7f); int_least8_t c1max = INT_LEAST8_MAX; int_least8_t c1min = INT_LEAST8_MIN; int_least16_t c2 = INT16_C (0x7fff); int_least16_t c2max = INT_LEAST16_MAX; int_least16_t c2min = INT_LEAST16_MIN; int_least32_t c3 = INT32_C (0x7fffffff); int_least32_t c3max = INT_LEAST32_MAX; int_least32_t c3min = INT_LEAST32_MIN; int_least64_t c4 = INT64_C (0x7fffffffffffffff); int_least64_t c4max = INT_LEAST64_MAX; int_least64_t c4min = INT_LEAST64_MIN; uint_least8_t d1 = UINT8_C (0xff); uint_least8_t d1max = UINT_LEAST8_MAX; uint_least16_t d2 = UINT16_C (0xffff); uint_least16_t d2max = UINT_LEAST16_MAX; uint_least32_t d3 = UINT32_C (0xffffffff); uint_least32_t d3max = UINT_LEAST32_MAX; uint_least64_t d4 = UINT64_C (0xffffffffffffffff); uint_least64_t d4max = UINT_LEAST64_MAX; int_fast8_t e1 = INT_FAST8_MAX; int_fast8_t e1min = INT_FAST8_MIN; int_fast16_t e2 = INT_FAST16_MAX; int_fast16_t e2min = INT_FAST16_MIN; int_fast32_t e3 = INT_FAST32_MAX; int_fast32_t e3min = INT_FAST32_MIN; int_fast64_t e4 = INT_FAST64_MAX; int_fast64_t e4min = INT_FAST64_MIN; uint_fast8_t f1 = UINT_FAST8_MAX; uint_fast16_t f2 = UINT_FAST16_MAX; uint_fast32_t f3 = UINT_FAST32_MAX; uint_fast64_t f4 = UINT_FAST64_MAX; #ifdef INTPTR_MAX intptr_t g = INTPTR_MAX; intptr_t gmin = INTPTR_MIN; #endif #ifdef UINTPTR_MAX uintptr_t h = UINTPTR_MAX; #endif intmax_t i = INTMAX_MAX; uintmax_t j = UINTMAX_MAX; /* Check that SIZE_MAX has the correct type, if possible. */ #if 201112 <= __STDC_VERSION__ int k = _Generic (SIZE_MAX, size_t: 0); #elif (2 <= __GNUC__ || 4 <= __clang_major__ || defined __IBM__TYPEOF__ \ || (0x5110 <= __SUNPRO_C && !__STDC__)) extern size_t k; extern __typeof__ (SIZE_MAX) k; #endif #include /* for CHAR_BIT */ #define TYPE_MINIMUM(t) \ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t))) #define TYPE_MAXIMUM(t) \ ((t) ((t) 0 < (t) -1 \ ? (t) -1 \ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) struct s { int check_PTRDIFF: PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t) && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t) ? 1 : -1; /* Detect bug in FreeBSD 6.0/ia64 and FreeBSD 13.0/arm64. */ int check_SIG_ATOMIC: SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t) && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t) ? 1 : -1; int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1; int check_WCHAR: WCHAR_MIN == TYPE_MINIMUM (wchar_t) && WCHAR_MAX == TYPE_MAXIMUM (wchar_t) ? 1 : -1; /* Detect bug in mingw. */ int check_WINT: WINT_MIN == TYPE_MINIMUM (wint_t) && WINT_MAX == TYPE_MAXIMUM (wint_t) ? 1 : -1; /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */ int check_UINT8_C: (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1; int check_UINT16_C: (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1; /* Detect bugs in OpenBSD 3.9 stdint.h. */ #ifdef UINT8_MAX int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1; #endif #ifdef UINT16_MAX int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1; #endif #ifdef UINT32_MAX int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1; #endif #ifdef UINT64_MAX int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1; #endif int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1; int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1; int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1; int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1; int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1; int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1; int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1; int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1; int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1; int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1; int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1; }; ]])], [dnl Determine whether the various *_MIN, *_MAX macros are usable dnl in preprocessor expression. We could do it by compiling a test dnl program for each of these macros. It is faster to run a program dnl that inspects the macro expansion. dnl This detects a bug on HP-UX 11.23/ia64. AC_RUN_IFELSE([ AC_LANG_PROGRAM([[ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #define __STDC_CONSTANT_MACROS 1 #define __STDC_LIMIT_MACROS 1 #include ] gl_STDINT_INCLUDES [ #include #include #define MVAL(macro) MVAL1(macro) #define MVAL1(expression) #expression static const char *macro_values[] = { #ifdef INT8_MAX MVAL (INT8_MAX), #endif #ifdef INT16_MAX MVAL (INT16_MAX), #endif #ifdef INT32_MAX MVAL (INT32_MAX), #endif #ifdef INT64_MAX MVAL (INT64_MAX), #endif #ifdef UINT8_MAX MVAL (UINT8_MAX), #endif #ifdef UINT16_MAX MVAL (UINT16_MAX), #endif #ifdef UINT32_MAX MVAL (UINT32_MAX), #endif #ifdef UINT64_MAX MVAL (UINT64_MAX), #endif NULL }; ]], [[ const char **mv; for (mv = macro_values; *mv != NULL; mv++) { const char *value = *mv; /* Test whether it looks like a cast expression. */ if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0 || strncmp (value, "((unsigned short)"/*)*/, 17) == 0 || strncmp (value, "((unsigned char)"/*)*/, 16) == 0 || strncmp (value, "((int)"/*)*/, 6) == 0 || strncmp (value, "((signed short)"/*)*/, 15) == 0 || strncmp (value, "((signed char)"/*)*/, 14) == 0) return mv - macro_values + 1; } return 0; ]])], [gl_cv_header_working_stdint_h=yes], [], [case "$host_os" in # Guess yes on native Windows. mingw*) gl_cv_header_working_stdint_h="guessing yes" ;; # In general, assume it works. *) gl_cv_header_working_stdint_h="guessing yes" ;; esac ]) ]) ]) fi HAVE_C99_STDINT_H=0 HAVE_SYS_BITYPES_H=0 HAVE_SYS_INTTYPES_H=0 GL_GENERATE_STDINT_H=true case "$gl_cv_header_working_stdint_h" in *yes) HAVE_C99_STDINT_H=1 dnl Now see whether the system works without dnl __STDC_CONSTANT_MACROS/__STDC_LIMIT_MACROS defined. dnl If not, there would be problems when stdint.h is included from C++. AC_CACHE_CHECK([whether stdint.h works without ISO C predefines], [gl_cv_header_stdint_without_STDC_macros], [gl_cv_header_stdint_without_STDC_macros=no AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #include ] gl_STDINT_INCLUDES [ intmax_t im = INTMAX_MAX; int32_t i32 = INT32_C (0x7fffffff); ]])], [gl_cv_header_stdint_without_STDC_macros=yes]) ]) if test $gl_cv_header_stdint_without_STDC_macros = no; then AC_DEFINE([__STDC_CONSTANT_MACROS], [1], [Define to 1 if the system predates C++11.]) AC_DEFINE([__STDC_LIMIT_MACROS], [1], [Define to 1 if the system predates C++11.]) fi AC_CACHE_CHECK([whether stdint.h has UINTMAX_WIDTH etc.], [gl_cv_header_stdint_width], [gl_cv_header_stdint_width=no AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ /* Work if build is not clean. */ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 #ifndef __STDC_WANT_IEC_60559_BFP_EXT__ #define __STDC_WANT_IEC_60559_BFP_EXT__ 1 #endif #include ]gl_STDINT_INCLUDES[ int iw = UINTMAX_WIDTH; ]])], [gl_cv_header_stdint_width=yes])]) if test "$gl_cv_header_stdint_width" = yes; then GL_GENERATE_STDINT_H=false fi ;; *) dnl Check for , and for dnl (used in Linux libc4 >= 4.6.7 and libc5). AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h]) if test $ac_cv_header_sys_inttypes_h = yes; then HAVE_SYS_INTTYPES_H=1 fi if test $ac_cv_header_sys_bitypes_h = yes; then HAVE_SYS_BITYPES_H=1 fi gl_STDINT_TYPE_PROPERTIES ;; esac dnl The substitute stdint.h needs the substitute limit.h's _GL_INTEGER_WIDTH. gl_REPLACE_LIMITS_H AC_SUBST([HAVE_C99_STDINT_H]) AC_SUBST([HAVE_SYS_BITYPES_H]) AC_SUBST([HAVE_SYS_INTTYPES_H]) ]) dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES) dnl Determine the size of each of the given types in bits. AC_DEFUN([gl_STDINT_BITSIZEOF], [ dnl Use a shell loop, to avoid bloating configure, and dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into dnl config.h.in, dnl - extra AC_SUBST calls, so that the right substitutions are made. m4_foreach_w([gltype], [$1], [AH_TEMPLATE([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), [Define to the number of bits in type ']gltype['.])]) for gltype in $1 ; do AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}], [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT], [$2 #include ], [result=unknown]) eval gl_cv_bitsizeof_${gltype}=\$result ]) eval result=\$gl_cv_bitsizeof_${gltype} if test $result = unknown; then dnl Use a nonempty default, because some compilers, such as IRIX 5 cc, dnl do a syntax check even on unused #if conditions and give an error dnl on valid C code like this: dnl #if 0 dnl # if > 32 dnl # endif dnl #endif result=0 fi GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result]) eval BITSIZEOF_${GLTYPE}=\$result done m4_foreach_w([gltype], [$1], [AC_SUBST([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) ]) dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES) dnl Determine the signedness of each of the given types. dnl Define HAVE_SIGNED_TYPE if type is signed. AC_DEFUN([gl_CHECK_TYPES_SIGNED], [ dnl Use a shell loop, to avoid bloating configure, and dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into dnl config.h.in, dnl - extra AC_SUBST calls, so that the right substitutions are made. m4_foreach_w([gltype], [$1], [AH_TEMPLATE([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), [Define to 1 if ']gltype[' is a signed integer type.])]) for gltype in $1 ; do AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([$2[ int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])], result=yes, result=no) eval gl_cv_type_${gltype}_signed=\$result ]) eval result=\$gl_cv_type_${gltype}_signed GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` if test "$result" = yes; then AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1]) eval HAVE_SIGNED_${GLTYPE}=1 else eval HAVE_SIGNED_${GLTYPE}=0 fi done m4_foreach_w([gltype], [$1], [AC_SUBST([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) ]) dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES) dnl Determine the suffix to use for integer constants of the given types. dnl Define t_SUFFIX for each such type. AC_DEFUN([gl_INTEGER_TYPE_SUFFIX], [ dnl Use a shell loop, to avoid bloating configure, and dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into dnl config.h.in, dnl - extra AC_SUBST calls, so that the right substitutions are made. m4_foreach_w([gltype], [$1], [AH_TEMPLATE(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX], [Define to l, ll, u, ul, ull, etc., as suitable for constants of type ']gltype['.])]) for gltype in $1 ; do AC_CACHE_CHECK([for $gltype integer literal suffix], [gl_cv_type_${gltype}_suffix], [eval gl_cv_type_${gltype}_suffix=no eval result=\$gl_cv_type_${gltype}_signed if test "$result" = yes; then glsufu= else glsufu=u fi for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do case $glsuf in '') gltype1='int';; l) gltype1='long int';; ll) gltype1='long long int';; i64) gltype1='__int64';; u) gltype1='unsigned int';; ul) gltype1='unsigned long int';; ull) gltype1='unsigned long long int';; ui64)gltype1='unsigned __int64';; esac AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([$2[ extern $gltype foo; extern $gltype1 foo;]])], [eval gl_cv_type_${gltype}_suffix=\$glsuf]) eval result=\$gl_cv_type_${gltype}_suffix test "$result" != no && break done]) GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` eval result=\$gl_cv_type_${gltype}_suffix test "$result" = no && result= eval ${GLTYPE}_SUFFIX=\$result AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result]) done m4_foreach_w([gltype], [$1], [AC_SUBST(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])]) ]) dnl gl_STDINT_INCLUDES AC_DEFUN([gl_STDINT_INCLUDES], [[ #include #include #if HAVE_WCHAR_H # include #endif ]]) dnl gl_STDINT_TYPE_PROPERTIES dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t dnl of interest to stdint.in.h. AC_DEFUN([gl_STDINT_TYPE_PROPERTIES], [ AC_REQUIRE([gl_MULTIARCH]) if test $APPLE_UNIVERSAL_BUILD = 0; then gl_STDINT_BITSIZEOF([ptrdiff_t size_t], [gl_STDINT_INCLUDES]) fi gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t], [gl_STDINT_INCLUDES]) gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t], [gl_STDINT_INCLUDES]) gl_cv_type_ptrdiff_t_signed=yes gl_cv_type_size_t_signed=no if test $APPLE_UNIVERSAL_BUILD = 0; then gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t], [gl_STDINT_INCLUDES]) fi gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t], [gl_STDINT_INCLUDES]) dnl If wint_t is smaller than 'int', it cannot satisfy the ISO C 99 dnl requirement that wint_t is "unchanged by default argument promotions". dnl In this case gnulib's and override wint_t. dnl Set the variable BITSIZEOF_WINT_T accordingly. if test $GNULIBHEADERS_OVERRIDE_WINT_T = 1; then BITSIZEOF_WINT_T=32 fi ]) recode-3.7.15/m4/wint_t.m40000644000175000017500000000343314371444255010633 # wint_t.m4 serial 11 dnl Copyright (C) 2003, 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Test whether has the 'wint_t' type and whether gnulib's dnl or would, if present, override 'wint_t'. dnl Prerequisite: AC_PROG_CC AC_DEFUN([gt_TYPE_WINT_T], [ AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include wint_t foo = (wchar_t)'\0';]], [[]])], [gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])]) if test $gt_cv_c_wint_t = yes; then AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.]) dnl Determine whether gnulib's or would, if present, dnl override 'wint_t'. AC_CACHE_CHECK([whether wint_t is large enough], [gl_cv_type_wint_t_large_enough], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1]; ]])], [gl_cv_type_wint_t_large_enough=yes], [gl_cv_type_wint_t_large_enough=no])]) if test $gl_cv_type_wint_t_large_enough = no; then GNULIBHEADERS_OVERRIDE_WINT_T=1 else GNULIBHEADERS_OVERRIDE_WINT_T=0 fi else GNULIBHEADERS_OVERRIDE_WINT_T=0 fi AC_SUBST([GNULIBHEADERS_OVERRIDE_WINT_T]) ]) dnl Prerequisites of the 'wint_t' override. AC_DEFUN([gl_TYPE_WINT_T_PREREQ], [ AC_CHECK_HEADERS_ONCE([crtdefs.h]) if test $ac_cv_header_crtdefs_h = yes; then HAVE_CRTDEFS_H=1 else HAVE_CRTDEFS_H=0 fi AC_SUBST([HAVE_CRTDEFS_H]) ]) recode-3.7.15/m4/mode_t.m40000644000175000017500000000234214371444255010574 # mode_t.m4 serial 2 dnl Copyright (C) 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # For using mode_t, it's sufficient to use AC_TYPE_MODE_T and # include . # Define PROMOTED_MODE_T to the type that is the result of "default argument # promotion" (ISO C 6.5.2.2.(6)) of the type mode_t. AC_DEFUN([gl_PROMOTED_TYPE_MODE_T], [ AC_REQUIRE([AC_TYPE_MODE_T]) AC_CACHE_CHECK([for promoted mode_t type], [gl_cv_promoted_mode_t], [ dnl Assume mode_t promotes to 'int' if and only if it is smaller than 'int', dnl and to itself otherwise. This assumption is not guaranteed by the ISO C dnl standard, but we don't know of any real-world counterexamples. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[typedef int array[2 * (sizeof (mode_t) < sizeof (int)) - 1];]])], [gl_cv_promoted_mode_t='int'], [gl_cv_promoted_mode_t='mode_t']) ]) AC_DEFINE_UNQUOTED([PROMOTED_MODE_T], [$gl_cv_promoted_mode_t], [Define to the type that is the result of default argument promotions of type mode_t.]) ]) recode-3.7.15/m4/zzgnulib.m40000644000175000017500000000152214371444255011170 # zzgnulib.m4 serial 1 dnl Copyright (C) 2020-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This file must be named something that sorts after all other dnl package- or gnulib-provided .m4 files - at least for those packages dnl that redefine AC_PROG_CC. dnl Redefine AC_PROG_CC so that it ends with invocations of gl_COMPILER_CLANG dnl and gl_COMPILER_PREPARE_CHECK_DECL. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[ gl_COMPILER_CLANG gl_COMPILER_PREPARE_CHECK_DECL ]) # gl_ZZGNULIB # ----------- # Witness macro that this file has been included. Needed to force # Automake to include this file after all other gnulib .m4 files. AC_DEFUN([gl_ZZGNULIB]) recode-3.7.15/m4/msvc-nothrow.m40000644000175000017500000000053014371444255011770 # msvc-nothrow.m4 serial 1 dnl Copyright (C) 2011-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_MSVC_NOTHROW], [ AC_REQUIRE([gl_MSVC_INVAL]) ]) recode-3.7.15/m4/rawmemchr.m40000644000175000017500000000116314371444255011312 # rawmemchr.m4 serial 3 dnl Copyright (C) 2003, 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_RAWMEMCHR], [ dnl Persuade glibc to declare rawmemchr(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_STRING_H_DEFAULTS]) AC_CHECK_FUNCS([rawmemchr]) if test $ac_cv_func_rawmemchr = no; then HAVE_RAWMEMCHR=0 fi ]) # Prerequisites of lib/strchrnul.c. AC_DEFUN([gl_PREREQ_RAWMEMCHR], [:]) recode-3.7.15/m4/clock_time.m40000644000175000017500000000270414371444255011440 # clock_time.m4 serial 12 dnl Copyright (C) 2002-2006, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Check for clock_getres, clock_gettime and clock_settime, # and set CLOCK_TIME_LIB. # For a program named, say foo, you should add a line like the following # in the corresponding Makefile.am file: # foo_LDADD = $(LDADD) $(CLOCK_TIME_LIB) AC_DEFUN([gl_CLOCK_TIME], [ dnl Persuade glibc and Solaris to declare these functions. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. # Save and restore LIBS so e.g., -lrt, isn't added to it. Otherwise, *all* # programs in the package would end up linked with that potentially-shared # library, inducing unnecessary run-time overhead. CLOCK_TIME_LIB= AC_SUBST([CLOCK_TIME_LIB]) gl_saved_libs=$LIBS AC_SEARCH_LIBS([clock_gettime], [rt posix4], [test "$ac_cv_search_clock_gettime" = "none required" || CLOCK_TIME_LIB=$ac_cv_search_clock_gettime]) AC_CHECK_FUNCS([clock_getres clock_gettime clock_settime]) LIBS=$gl_saved_libs # For backward compatibility. LIB_CLOCK_GETTIME="$CLOCK_TIME_LIB" AC_SUBST([LIB_CLOCK_GETTIME]) ]) recode-3.7.15/m4/00gnulib.m40000644000175000017500000000701114371444255010743 # 00gnulib.m4 serial 8 dnl Copyright (C) 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This file must be named something that sorts before all other dnl gnulib-provided .m4 files. It is needed until the clang fix has dnl been included in Autoconf. # The following definitions arrange to use a compiler option # -Werror=implicit-function-declaration in AC_CHECK_DECL, when the # compiler is clang. Without it, clang implicitly declares "known" # library functions in C mode, but not in C++ mode, which would cause # Gnulib to omit a declaration and thus later produce an error in C++ # mode. As of clang 9.0, these "known" functions are identified through # LIBBUILTIN invocations in the LLVM source file # llvm/tools/clang/include/clang/Basic/Builtins.def. # It's not possible to AC_REQUIRE the extra tests from AC_CHECK_DECL, # because AC_CHECK_DECL, like other Autoconf built-ins, is not supposed # to AC_REQUIRE anything: some configure.ac files have their first # AC_CHECK_DECL executed conditionally. Therefore append the extra tests # to AC_PROG_CC. AC_DEFUN([gl_COMPILER_CLANG], [ dnl AC_REQUIRE([AC_PROG_CC]) AC_CACHE_CHECK([whether the compiler is clang], [gl_cv_compiler_clang], [dnl Use _AC_COMPILE_IFELSE instead of AC_EGREP_CPP, to avoid error dnl "circular dependency of AC_LANG_COMPILER(C)" if AC_PROG_CC has dnl not yet been invoked. _AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ #ifdef __clang__ barfbarf #endif ]],[[]]) ], [gl_cv_compiler_clang=no], [gl_cv_compiler_clang=yes]) ]) ]) AC_DEFUN([gl_COMPILER_PREPARE_CHECK_DECL], [ dnl AC_REQUIRE([AC_PROG_CC]) dnl AC_REQUIRE([gl_COMPILER_CLANG]) AC_CACHE_CHECK([for compiler option needed when checking for declarations], [gl_cv_compiler_check_decl_option], [if test $gl_cv_compiler_clang = yes; then dnl Test whether the compiler supports the option dnl '-Werror=implicit-function-declaration'. save_ac_compile="$ac_compile" ac_compile="$ac_compile -Werror=implicit-function-declaration" dnl Use _AC_COMPILE_IFELSE instead of AC_COMPILE_IFELSE, to avoid a dnl warning "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS". _AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])], [gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration'], [gl_cv_compiler_check_decl_option=none]) ac_compile="$save_ac_compile" else gl_cv_compiler_check_decl_option=none fi ]) if test "x$gl_cv_compiler_check_decl_option" != xnone; then ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" else ac_compile_for_check_decl="$ac_compile" fi ]) dnl Redefine _AC_CHECK_DECL_BODY so that it references ac_compile_for_check_decl dnl instead of ac_compile. If, for whatever reason, the override of AC_PROG_CC dnl in zzgnulib.m4 is inactive, use the original ac_compile. m4_define([_AC_CHECK_DECL_BODY], [ ac_save_ac_compile="$ac_compile" if test -n "$ac_compile_for_check_decl"; then ac_compile="$ac_compile_for_check_decl" fi] m4_defn([_AC_CHECK_DECL_BODY])[ ac_compile="$ac_save_ac_compile" ]) # gl_00GNULIB # ----------- # Witness macro that this file has been included. Needed to force # Automake to include this file prior to all other gnulib .m4 files. AC_DEFUN([gl_00GNULIB]) recode-3.7.15/m4/stddef_h.m40000644000175000017500000001005514371444255011105 # stddef_h.m4 serial 13 dnl Copyright (C) 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl A placeholder for , for platforms that have issues. AC_DEFUN_ONCE([gl_STDDEF_H], [ AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) AC_REQUIRE([gt_TYPE_WCHAR_T]) dnl Persuade OpenBSD to declare max_align_t. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) GL_GENERATE_STDDEF_H=false dnl Test whether the type max_align_t exists and whether its alignment dnl "is as great as is supported by the implementation in all contexts". AC_CACHE_CHECK([for good max_align_t], [gl_cv_type_max_align_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[/* On FreeBSD 12.0/x86, max_align_t defined by has the correct alignment with the default (wrong) definition of _Alignof, but a wrong alignment as soon as we activate an ISO C compliant _Alignof definition. */ #if ((defined __GNUC__ && 4 <= __GNUC__) || defined __clang__) && !defined __cplusplus #define _Alignof(type) __builtin_offsetof (struct { char __a; type __b; }, __b) #endif #include unsigned int s = sizeof (max_align_t); #if defined __GNUC__ || defined __clang__ || defined __IBM__ALIGNOF__ int check1[2 * (__alignof__ (double) <= __alignof__ (max_align_t)) - 1]; int check2[2 * (__alignof__ (long double) <= __alignof__ (max_align_t)) - 1]; #endif typedef struct { char a; max_align_t b; } max_helper; typedef struct { char a; long b; } long_helper; typedef struct { char a; double b; } double_helper; typedef struct { char a; long double b; } long_double_helper; int check3[2 * (offsetof (long_helper, b) <= offsetof (max_helper, b)) - 1]; int check4[2 * (offsetof (double_helper, b) <= offsetof (max_helper, b)) - 1]; int check5[2 * (offsetof (long_double_helper, b) <= offsetof (max_helper, b)) - 1]; ]])], [gl_cv_type_max_align_t=yes], [gl_cv_type_max_align_t=no]) ]) if test $gl_cv_type_max_align_t = no; then HAVE_MAX_ALIGN_T=0 GL_GENERATE_STDDEF_H=true fi if test $gt_cv_c_wchar_t = no; then HAVE_WCHAR_T=0 GL_GENERATE_STDDEF_H=true fi AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions], [gl_cv_decl_null_works], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include int test[2 * (sizeof NULL == sizeof (void *)) -1]; ]])], [gl_cv_decl_null_works=yes], [gl_cv_decl_null_works=no])]) if test $gl_cv_decl_null_works = no; then REPLACE_NULL=1 GL_GENERATE_STDDEF_H=true fi if $GL_GENERATE_STDDEF_H; then gl_NEXT_HEADERS([stddef.h]) fi ]) # gl_STDDEF_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_STDDEF_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_STDDEF_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_STDDEF_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDDEF_H_MODULE_INDICATOR_DEFAULTS], [ ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_STDDEF_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) ]) AC_DEFUN([gl_STDDEF_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. REPLACE_NULL=0; AC_SUBST([REPLACE_NULL]) HAVE_MAX_ALIGN_T=1; AC_SUBST([HAVE_MAX_ALIGN_T]) HAVE_WCHAR_T=1; AC_SUBST([HAVE_WCHAR_T]) ]) recode-3.7.15/m4/builtin-expect.m40000644000175000017500000000302314371444255012256 dnl Check for __builtin_expect. dnl Copyright 2016-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Paul Eggert. AC_DEFUN([gl___BUILTIN_EXPECT], [ AC_CACHE_CHECK([for __builtin_expect], [gl_cv___builtin_expect], [AC_LINK_IFELSE( [AC_LANG_SOURCE([[ int main (int argc, char **argv) { argc = __builtin_expect (argc, 100); return argv[argc != 100][0]; }]])], [gl_cv___builtin_expect=yes], [AC_LINK_IFELSE( [AC_LANG_SOURCE([[ #include int main (int argc, char **argv) { argc = __builtin_expect (argc, 100); return argv[argc != 100][0]; }]])], [gl_cv___builtin_expect="in "], [gl_cv___builtin_expect=no])])]) if test "$gl_cv___builtin_expect" = yes; then AC_DEFINE([HAVE___BUILTIN_EXPECT], [1]) elif test "$gl_cv___builtin_expect" = "in "; then AC_DEFINE([HAVE___BUILTIN_EXPECT], [2]) fi AH_VERBATIM([HAVE___BUILTIN_EXPECT], [/* Define to 1 if the compiler supports __builtin_expect, and to 2 if does. */ #undef HAVE___BUILTIN_EXPECT #ifndef HAVE___BUILTIN_EXPECT # define __builtin_expect(e, c) (e) #elif HAVE___BUILTIN_EXPECT == 2 # include #endif ]) ]) recode-3.7.15/m4/minmax.m40000644000175000017500000000245514371444255010623 # minmax.m4 serial 4 dnl Copyright (C) 2005, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_PREREQ([2.53]) AC_DEFUN([gl_MINMAX], [ AC_REQUIRE([gl_PREREQ_MINMAX]) ]) # Prerequisites of lib/minmax.h. AC_DEFUN([gl_PREREQ_MINMAX], [ gl_MINMAX_IN_HEADER([limits.h]) gl_MINMAX_IN_HEADER([sys/param.h]) ]) dnl gl_MINMAX_IN_HEADER(HEADER) dnl The parameter has to be a literal header name; it cannot be macro, dnl nor a shell variable. (Because autoheader collects only AC_DEFINE dnl invocations with a literal macro name.) AC_DEFUN([gl_MINMAX_IN_HEADER], [ m4_pushdef([header], AS_TR_SH([$1])) m4_pushdef([HEADER], AS_TR_CPP([$1])) AC_CACHE_CHECK([whether <$1> defines MIN and MAX], [gl_cv_minmax_in_]header, [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include <$1> int x = MIN (42, 17);]], [[]])], [gl_cv_minmax_in_]header[=yes], [gl_cv_minmax_in_]header[=no])]) if test $gl_cv_minmax_in_[]header = yes; then AC_DEFINE([HAVE_MINMAX_IN_]HEADER, 1, [Define to 1 if <$1> defines the MIN and MAX macros.]) fi m4_popdef([HEADER]) m4_popdef([header]) ]) recode-3.7.15/m4/mbstate_t.m40000644000175000017500000000221014371444255011301 # mbstate_t.m4 serial 14 dnl Copyright (C) 2000-2002, 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # From Paul Eggert. # BeOS 5 has but does not define mbstate_t, # so you can't declare an object of that type. # Check for this incompatibility with Standard C. # AC_TYPE_MBSTATE_T # ----------------- AC_DEFUN([AC_TYPE_MBSTATE_T], [ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) dnl for HP-UX 11.11 AC_CACHE_CHECK([for mbstate_t], [ac_cv_type_mbstate_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [AC_INCLUDES_DEFAULT[ #include ]], [[mbstate_t x; return sizeof x;]])], [ac_cv_type_mbstate_t=yes], [ac_cv_type_mbstate_t=no])]) if test $ac_cv_type_mbstate_t = yes; then AC_DEFINE([HAVE_MBSTATE_T], [1], [Define to 1 if declares mbstate_t.]) else AC_DEFINE([mbstate_t], [int], [Define to a type if does not define.]) fi ]) recode-3.7.15/m4/warn-on-use.m40000644000175000017500000000552314371444255011504 # warn-on-use.m4 serial 10 dnl Copyright (C) 2010-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # gl_WARN_ON_USE_PREPARE(INCLUDES, NAMES) # --------------------------------------- # If the module 'posixcheck' is in use: # # For each whitespace-separated element in the list of NAMES, define # HAVE_RAW_DECL_name if the function has a declaration among INCLUDES # even after being undefined as a macro. # # See warn-on-use.h for some hints on how to poison function names, as # well as ideas on poisoning global variables and macros. NAMES may # include global variables, but remember that only functions work with # _GL_WARN_ON_USE. Typically, INCLUDES only needs to list a single # header, but if the replacement header pulls in other headers because # some systems declare functions in the wrong header, then INCLUDES # should do likewise. # # It is generally safe to assume declarations for functions declared # in the intersection of C89 and C11 (such as printf) without # needing gl_WARN_ON_USE_PREPARE. AC_DEFUN([gl_WARN_ON_USE_PREPARE], [ m4_ifdef([gl_POSIXCHECK], [m4_foreach_w([gl_decl], [$2], [AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])), [Define to 1 if ]m4_defn([gl_decl])[ is declared even after undefining macros.])])dnl for gl_func in m4_flatten([$2]); do AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl dnl As a workaround to implicit built-in function declarations in dnl clang (e.g. strndup), reference ac_compile_for_check_decl instead dnl of ac_compile. If, for whatever reason, the override of AC_PROG_CC dnl in zzgnulib.m4 is inactive, use the original ac_compile. ac_save_ac_compile="$ac_compile" if test -n "$ac_compile_for_check_decl"; then ac_compile="$ac_compile_for_check_decl" fi AC_CACHE_CHECK([whether $gl_func is declared without a macro], [gl_Symbol], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1], [[#undef $gl_func (void) $gl_func;]])], [AS_VAR_SET([gl_Symbol], [yes])], [AS_VAR_SET([gl_Symbol], [no])])]) ac_compile="$ac_save_ac_compile" AS_VAR_IF([gl_Symbol], [yes], [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1]) dnl Shortcut for an AC_CHECK_DECL invocation that may come later: dnl If the raw declaration exists with the given includes, then dnl AC_CHECK_DECL with its many includes would see it as well. dnl So, set a cache variable to allow skipping any later dnl AC_CHECK_DECL invocation for $gl_func. eval "ac_cv_have_decl_$gl_func=yes" ]) AS_VAR_POPDEF([gl_Symbol])dnl done ]) ]) recode-3.7.15/m4/exponentf.m40000644000175000017500000000545614371444255011344 # exponentf.m4 serial 2 dnl Copyright (C) 2007-2008, 2010-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FLOAT_EXPONENT_LOCATION], [ AC_CACHE_CHECK([where to find the exponent in a 'float'], [gl_cv_cc_float_expbit0], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include #include #define NWORDS \ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { float value; unsigned int word[NWORDS]; } memory_float; static unsigned int ored_words[NWORDS]; static unsigned int anded_words[NWORDS]; static void add_to_ored_words (float x) { memory_float m; size_t i; /* Clear it first, in case sizeof (float) < sizeof (memory_float). */ memset (&m, 0, sizeof (memory_float)); m.value = x; for (i = 0; i < NWORDS; i++) { ored_words[i] |= m.word[i]; anded_words[i] &= m.word[i]; } } int main () { size_t j; FILE *fp = fopen ("conftest.out", "w"); if (fp == NULL) return 1; for (j = 0; j < NWORDS; j++) anded_words[j] = ~ (unsigned int) 0; add_to_ored_words (0.25f); add_to_ored_words (0.5f); add_to_ored_words (1.0f); add_to_ored_words (2.0f); add_to_ored_words (4.0f); /* Remove bits that are common (e.g. if representation of the first mantissa bit is explicit). */ for (j = 0; j < NWORDS; j++) ored_words[j] &= ~anded_words[j]; /* Now find the nonzero word. */ for (j = 0; j < NWORDS; j++) if (ored_words[j] != 0) break; if (j < NWORDS) { size_t i; for (i = j + 1; i < NWORDS; i++) if (ored_words[i] != 0) { fprintf (fp, "unknown"); return (fclose (fp) != 0); } for (i = 0; ; i++) if ((ored_words[j] >> i) & 1) { fprintf (fp, "word %d bit %d", (int) j, (int) i); return (fclose (fp) != 0); } } fprintf (fp, "unknown"); return (fclose (fp) != 0); } ]])], [gl_cv_cc_float_expbit0=`cat conftest.out`], [gl_cv_cc_float_expbit0="unknown"], [gl_cv_cc_float_expbit0="word 0 bit 23"]) rm -f conftest.out ]) case "$gl_cv_cc_float_expbit0" in word*bit*) word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'` bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'` AC_DEFINE_UNQUOTED([FLT_EXPBIT0_WORD], [$word], [Define as the word index where to find the exponent of 'float'.]) AC_DEFINE_UNQUOTED([FLT_EXPBIT0_BIT], [$bit], [Define as the bit index in the word where to find bit 0 of the exponent of 'float'.]) ;; esac ]) recode-3.7.15/m4/vasnprintf.m40000644000175000017500000002164714371444255011530 # vasnprintf.m4 serial 39 dnl Copyright (C) 2002-2004, 2006-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_VASNPRINTF], [ AC_CHECK_FUNCS_ONCE([vasnprintf]) if test $ac_cv_func_vasnprintf = no; then gl_REPLACE_VASNPRINTF fi ]) AC_DEFUN([gl_REPLACE_VASNPRINTF], [ AC_CHECK_FUNCS_ONCE([vasnprintf]) AC_LIBOBJ([vasnprintf]) AC_LIBOBJ([printf-args]) AC_LIBOBJ([printf-parse]) AC_LIBOBJ([asnprintf]) if test $ac_cv_func_vasnprintf = yes; then AC_DEFINE([REPLACE_VASNPRINTF], [1], [Define if vasnprintf exists but is overridden by gnulib.]) fi gl_PREREQ_PRINTF_ARGS gl_PREREQ_PRINTF_PARSE gl_PREREQ_VASNPRINTF gl_PREREQ_ASNPRINTF ]) # Prerequisites of lib/printf-args.h, lib/printf-args.c. AC_DEFUN([gl_PREREQ_PRINTF_ARGS], [ AC_REQUIRE([gt_TYPE_WCHAR_T]) AC_REQUIRE([gt_TYPE_WINT_T]) ]) # Prerequisites of lib/printf-parse.h, lib/printf-parse.c. AC_DEFUN([gl_PREREQ_PRINTF_PARSE], [ AC_REQUIRE([gl_FEATURES_H]) AC_REQUIRE([gt_TYPE_WCHAR_T]) AC_REQUIRE([gt_TYPE_WINT_T]) AC_REQUIRE([AC_TYPE_SIZE_T]) AC_CHECK_TYPE([ptrdiff_t], , [AC_DEFINE([ptrdiff_t], [long], [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) ]) AC_REQUIRE([gt_AC_TYPE_INTMAX_T]) ]) # Prerequisites of lib/vasnprintf.c. AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF], [ AC_REQUIRE([AC_FUNC_ALLOCA]) AC_REQUIRE([gt_TYPE_WCHAR_T]) AC_REQUIRE([gt_TYPE_WINT_T]) AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) dnl Use the _snprintf function only if it is declared (because on NetBSD it dnl is defined as a weak alias of snprintf; we prefer to use the latter). AC_CHECK_DECLS([_snprintf], , , [[#include ]]) dnl Knowing DBL_EXPBIT0_WORD and DBL_EXPBIT0_BIT enables an optimization dnl in the code for NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE. AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION]) dnl We can avoid a lot of code by assuming that snprintf's return value dnl conforms to ISO C99. So check that. AC_REQUIRE([gl_SNPRINTF_RETVAL_C99]) case "$gl_cv_func_snprintf_retval_c99" in *yes) AC_DEFINE([HAVE_SNPRINTF_RETVAL_C99], [1], [Define if the return value of the snprintf function is the number of of bytes (excluding the terminating NUL) that would have been produced if the buffer had been large enough.]) ;; esac dnl Additionally, the use of %n can be eliminated by assuming that snprintf dnl always produces NUL-terminated strings (no truncation). AC_REQUIRE([gl_SNPRINTF_TRUNCATION_C99]) case "$gl_cv_func_snprintf_truncation_c99" in *yes) AC_DEFINE([HAVE_SNPRINTF_TRUNCATION_C99], [1], [Define if the string produced by the snprintf function is always NUL terminated.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting 'long double' # arguments. AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE], [ AC_REQUIRE([gl_PRINTF_LONG_DOUBLE]) case "$gl_cv_func_printf_long_double" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1], [Define if the vasnprintf implementation needs special code for 'long double' arguments.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting infinite 'double' # arguments. AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE], [ AC_REQUIRE([gl_PRINTF_INFINITE]) case "$gl_cv_func_printf_infinite" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_INFINITE_DOUBLE], [1], [Define if the vasnprintf implementation needs special code for infinite 'double' arguments.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting infinite 'long double' # arguments. AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE], [ AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE]) dnl There is no need to set NEED_PRINTF_INFINITE_LONG_DOUBLE if dnl NEED_PRINTF_LONG_DOUBLE is already set. AC_REQUIRE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE]) case "$gl_cv_func_printf_long_double" in *yes) case "$gl_cv_func_printf_infinite_long_double" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_INFINITE_LONG_DOUBLE], [1], [Define if the vasnprintf implementation needs special code for infinite 'long double' arguments.]) ;; esac ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting the 'a' directive. AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_A], [ AC_REQUIRE([gl_PRINTF_DIRECTIVE_A]) case "$gl_cv_func_printf_directive_a" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_DIRECTIVE_A], [1], [Define if the vasnprintf implementation needs special code for the 'a' and 'A' directives.]) gl_CHECK_FUNCS_ANDROID([nl_langinfo], [[#include ]]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting the 'F' directive. AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_F], [ AC_REQUIRE([gl_PRINTF_DIRECTIVE_F]) case "$gl_cv_func_printf_directive_f" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_DIRECTIVE_F], [1], [Define if the vasnprintf implementation needs special code for the 'F' directive.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting the 'ls' directive. AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_LS], [ AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS]) case "$gl_cv_func_printf_directive_ls" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_DIRECTIVE_LS], [1], [Define if the vasnprintf implementation needs special code for the 'ls' directive.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting the ' flag. AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_GROUPING], [ AC_REQUIRE([gl_PRINTF_FLAG_GROUPING]) case "$gl_cv_func_printf_flag_grouping" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_FLAG_GROUPING], [1], [Define if the vasnprintf implementation needs special code for the ' flag.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting the '-' flag. AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST], [ AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST]) case "$gl_cv_func_printf_flag_leftadjust" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_FLAG_LEFTADJUST], [1], [Define if the vasnprintf implementation needs special code for the '-' flag.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting the 0 flag. AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_ZERO], [ AC_REQUIRE([gl_PRINTF_FLAG_ZERO]) case "$gl_cv_func_printf_flag_zero" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_FLAG_ZERO], [1], [Define if the vasnprintf implementation needs special code for the 0 flag.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for supporting large precisions. AC_DEFUN([gl_PREREQ_VASNPRINTF_PRECISION], [ AC_REQUIRE([gl_PRINTF_PRECISION]) case "$gl_cv_func_printf_precision" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_UNBOUNDED_PRECISION], [1], [Define if the vasnprintf implementation needs special code for supporting large precisions without arbitrary bounds.]) AC_DEFINE([NEED_PRINTF_DOUBLE], [1], [Define if the vasnprintf implementation needs special code for 'double' arguments.]) AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1], [Define if the vasnprintf implementation needs special code for 'long double' arguments.]) ;; esac ]) # Extra prerequisites of lib/vasnprintf.c for surviving out-of-memory # conditions. AC_DEFUN([gl_PREREQ_VASNPRINTF_ENOMEM], [ AC_REQUIRE([gl_PRINTF_ENOMEM]) case "$gl_cv_func_printf_enomem" in *yes) ;; *) AC_DEFINE([NEED_PRINTF_ENOMEM], [1], [Define if the vasnprintf implementation needs special code for surviving out-of-memory conditions.]) AC_DEFINE([NEED_PRINTF_DOUBLE], [1], [Define if the vasnprintf implementation needs special code for 'double' arguments.]) AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1], [Define if the vasnprintf implementation needs special code for 'long double' arguments.]) ;; esac ]) # Prerequisites of lib/vasnprintf.c including all extras for POSIX compliance. AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_EXTRAS], [ AC_REQUIRE([gl_PREREQ_VASNPRINTF]) gl_PREREQ_VASNPRINTF_LONG_DOUBLE gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE gl_PREREQ_VASNPRINTF_DIRECTIVE_A gl_PREREQ_VASNPRINTF_DIRECTIVE_F gl_PREREQ_VASNPRINTF_DIRECTIVE_LS gl_PREREQ_VASNPRINTF_FLAG_GROUPING gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST gl_PREREQ_VASNPRINTF_FLAG_ZERO gl_PREREQ_VASNPRINTF_PRECISION gl_PREREQ_VASNPRINTF_ENOMEM ]) # Prerequisites of lib/asnprintf.c. AC_DEFUN([gl_PREREQ_ASNPRINTF], [ ]) recode-3.7.15/m4/c-bool.m40000644000175000017500000000336014371444255010501 # Check for bool that conforms to C2023. dnl Copyright 2022-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_C_BOOL], [ AC_CACHE_CHECK([for bool, true, false], [gl_cv_c_bool], [AC_COMPILE_IFELSE( [AC_LANG_SOURCE([[ #if true == false #error "true == false" #endif extern bool b; bool b = true == false;]])], [gl_cv_c_bool=yes], [gl_cv_c_bool=no])]) if test "$gl_cv_c_bool" = yes; then AC_DEFINE([HAVE_C_BOOL], [1], [Define to 1 if bool, true and false work as per C2023.]) fi AC_CHECK_HEADERS_ONCE([stdbool.h]) dnl The "zz" puts this toward config.h's end, to avoid potential dnl collisions with other definitions. dnl If 'bool', 'true' and 'false' do not work, arrange for them to work. dnl In C, this means including if it is not already included. dnl However, if the preprocessor mistakenly treats 'true' as 0, dnl define it to a bool expression equal to 1; this is needed in dnl Sun C++ 5.11 (Oracle Solaris Studio 12.2, 2010) and older. AH_VERBATIM([zzbool], [#ifndef HAVE_C_BOOL # if !defined __cplusplus && !defined __bool_true_false_are_defined # if HAVE_STDBOOL_H # include # else # if defined __SUNPRO_C # error " is not usable with this configuration. To make it usable, add -D_STDC_C99= to $CC." # else # error " does not exist on this platform. Use gnulib module 'stdbool-c99' instead of gnulib module 'stdbool'." # endif # endif # endif # if !true # define true (!false) # endif #endif]) ]) recode-3.7.15/m4/fcntl-o.m40000644000175000017500000001123614371444255010671 # fcntl-o.m4 serial 7 dnl Copyright (C) 2006, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Paul Eggert. AC_PREREQ([2.60]) # Test whether the flags O_NOATIME and O_NOFOLLOW actually work. # Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise. # Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise. AC_DEFUN([gl_FCNTL_O_FLAGS], [ dnl Persuade glibc to define O_NOATIME and O_NOFOLLOW. AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CHECK_HEADERS_ONCE([unistd.h]) AC_CHECK_FUNCS_ONCE([symlink]) AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include #if HAVE_UNISTD_H # include #else /* on Windows with MSVC */ # include # include # defined sleep(n) _sleep ((n) * 1000) #endif #include ]GL_MDA_DEFINES[ #ifndef O_NOATIME #define O_NOATIME 0 #endif #ifndef O_NOFOLLOW #define O_NOFOLLOW 0 #endif static int const constants[] = { O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY }; ]], [[ int result = !constants; #if HAVE_SYMLINK { static char const sym[] = "conftest.sym"; if (symlink ("/dev/null", sym) != 0) result |= 2; else { int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0); if (fd >= 0) { close (fd); result |= 4; } } if (unlink (sym) != 0 || symlink (".", sym) != 0) result |= 2; else { int fd = open (sym, O_RDONLY | O_NOFOLLOW); if (fd >= 0) { close (fd); result |= 4; } } unlink (sym); } #endif { static char const file[] = "confdefs.h"; int fd = open (file, O_RDONLY | O_NOATIME); if (fd < 0) result |= 8; else { struct stat st0; if (fstat (fd, &st0) != 0) result |= 16; else { char c; sleep (1); if (read (fd, &c, 1) != 1) result |= 24; else { if (close (fd) != 0) result |= 32; else { struct stat st1; if (stat (file, &st1) != 0) result |= 40; else if (st0.st_atime != st1.st_atime) result |= 64; } } } } } return result;]])], [gl_cv_header_working_fcntl_h=yes], [case $? in #( 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( *) gl_cv_header_working_fcntl_h='no';; esac], [case "$host_os" in # Guess 'no' on native Windows. mingw*) gl_cv_header_working_fcntl_h='no' ;; *) gl_cv_header_working_fcntl_h=cross-compiling ;; esac ]) ]) case $gl_cv_header_working_fcntl_h in #( *O_NOATIME* | no | cross-compiling) ac_val=0;; #( *) ac_val=1;; esac AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val], [Define to 1 if O_NOATIME works.]) case $gl_cv_header_working_fcntl_h in #( *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( *) ac_val=1;; esac AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val], [Define to 1 if O_NOFOLLOW works.]) ]) recode-3.7.15/m4/nocrash.m40000644000175000017500000001055514371444255010767 # nocrash.m4 serial 5 dnl Copyright (C) 2005, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Based on libsigsegv, from Bruno Haible and Paolo Bonzini. AC_PREREQ([2.13]) dnl Expands to some code for use in .c programs that will cause the configure dnl test to exit instead of crashing. This is useful to avoid triggering dnl action from a background debugger and to avoid core dumps. dnl Usage: ... dnl ]GL_NOCRASH[ dnl ... dnl int main() { nocrash_init(); ... } AC_DEFUN([GL_NOCRASH],[[ #include #if defined __MACH__ && defined __APPLE__ /* Avoid a crash on Mac OS X. */ #include #include #include #include #include #include /* The exception port on which our thread listens. */ static mach_port_t our_exception_port; /* The main function of the thread listening for exceptions of type EXC_BAD_ACCESS. */ static void * mach_exception_thread (void *arg) { /* Buffer for a message to be received. */ struct { mach_msg_header_t head; mach_msg_body_t msgh_body; char data[1024]; } msg; mach_msg_return_t retval; /* Wait for a message on the exception port. */ retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg), our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); if (retval != MACH_MSG_SUCCESS) abort (); exit (1); } static void nocrash_init (void) { mach_port_t self = mach_task_self (); /* Allocate a port on which the thread shall listen for exceptions. */ if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port) == KERN_SUCCESS) { /* See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */ if (mach_port_insert_right (self, our_exception_port, our_exception_port, MACH_MSG_TYPE_MAKE_SEND) == KERN_SUCCESS) { /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting for us. */ exception_mask_t mask = EXC_MASK_BAD_ACCESS; /* Create the thread listening on the exception port. */ pthread_attr_t attr; pthread_t thread; if (pthread_attr_init (&attr) == 0 && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0 && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) { pthread_attr_destroy (&attr); /* Replace the exception port info for these exceptions with our own. Note that we replace the exception port for the entire task, not only for a particular thread. This has the effect that when our exception port gets the message, the thread specific exception port has already been asked, and we don't need to bother about it. See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */ task_set_exception_ports (self, mask, our_exception_port, EXCEPTION_DEFAULT, MACHINE_THREAD_STATE); } } } } #elif defined _WIN32 && ! defined __CYGWIN__ /* Avoid a crash on native Windows. */ #define WIN32_LEAN_AND_MEAN #include #include static LONG WINAPI exception_filter (EXCEPTION_POINTERS *ExceptionInfo) { switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_IN_PAGE_ERROR: case EXCEPTION_STACK_OVERFLOW: case EXCEPTION_GUARD_PAGE: case EXCEPTION_PRIV_INSTRUCTION: case EXCEPTION_ILLEGAL_INSTRUCTION: case EXCEPTION_DATATYPE_MISALIGNMENT: case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: case EXCEPTION_NONCONTINUABLE_EXCEPTION: exit (1); } return EXCEPTION_CONTINUE_SEARCH; } static void nocrash_init (void) { SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter); } #else /* Avoid a crash on POSIX systems. */ #include #include /* A POSIX signal handler. */ static void exception_handler (int sig) { _exit (1); } static void nocrash_init (void) { #ifdef SIGSEGV signal (SIGSEGV, exception_handler); #endif #ifdef SIGBUS signal (SIGBUS, exception_handler); #endif } #endif ]]) recode-3.7.15/m4/iconv.m40000644000175000017500000002271314371444255010447 # iconv.m4 serial 26 dnl Copyright (C) 2000-2002, 2007-2014, 2016-2023 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ([2.64]) dnl Note: AM_ICONV is documented in the GNU gettext manual dnl . dnl Don't make changes that are incompatible with that documentation! AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_func_iconv=yes]) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_lib_iconv=yes] [am_cv_func_iconv=yes]) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, dnl Solaris 10. am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif ]], [[int result = 0; /* Test against AIX 5.1...7.2 bug: Failures are not distinguishable from successful returns. This is even documented in */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ { /* Try standardized names. */ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); /* Try IRIX, OSF/1 names. */ iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); /* Try AIX names. */ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); /* Try HP-UX names. */ iconv_t cd4 = iconv_open ("utf8", "eucJP"); if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) result |= 16; if (cd1 != (iconv_t)(-1)) iconv_close (cd1); if (cd2 != (iconv_t)(-1)) iconv_close (cd2); if (cd3 != (iconv_t)(-1)) iconv_close (cd3); if (cd4 != (iconv_t)(-1)) iconv_close (cd4); } return result; ]])], [am_cv_func_iconv_works=yes], , [case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac]) test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" ]) case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then AC_DEFINE([HAVE_ICONV], [1], [Define if you have the iconv() function and it works.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST([LIBICONV]) AC_SUBST([LTLIBICONV]) ]) dnl Define AM_ICONV using AC_DEFUN_ONCE, in order to avoid warnings like dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". AC_DEFUN_ONCE([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([whether iconv is compatible with its POSIX signature], [gl_cv_iconv_nonconst], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #include #include extern #ifdef __cplusplus "C" #endif size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); ]], [[]])], [gl_cv_iconv_nonconst=yes], [gl_cv_iconv_nonconst=no]) ]) else dnl When compiling GNU libiconv on a system that does not have iconv yet, dnl pick the POSIX compliant declaration without 'const'. gl_cv_iconv_nonconst=yes fi if test $gl_cv_iconv_nonconst = yes; then iconv_arg1="" else iconv_arg1="const" fi AC_DEFINE_UNQUOTED([ICONV_CONST], [$iconv_arg1], [Define as const if the declaration of iconv() needs const.]) dnl Also substitute ICONV_CONST in the gnulib generated . m4_ifdef([gl_ICONV_H_DEFAULTS], [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) if test $gl_cv_iconv_nonconst != yes; then ICONV_CONST="const" fi ]) dnl A summary result, for those packages which want to print a summary at the dnl end of the configuration. if test "$am_func_iconv" = yes; then if test -n "$LIBICONV"; then am_cv_func_iconv_summary='yes, in libiconv' else am_cv_func_iconv_summary='yes, in libc' fi else if test "$am_cv_func_iconv" = yes; then am_cv_func_iconv_summary='not working, consider installing GNU libiconv' else am_cv_func_iconv_summary='no, consider installing GNU libiconv' fi fi ]) recode-3.7.15/m4/pathmax.m40000644000175000017500000000215514371444255010771 # pathmax.m4 serial 11 dnl Copyright (C) 2002-2003, 2005-2006, 2009-2023 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_PATHMAX], [ dnl Prerequisites of lib/pathmax.h. AC_CHECK_HEADERS_ONCE([sys/param.h]) ]) # Expands to a piece of C program that defines PATH_MAX in the same way as # "pathmax.h" will do. AC_DEFUN([gl_PATHMAX_SNIPPET], [[ /* Arrange to define PATH_MAX, like "pathmax.h" does. */ #if HAVE_UNISTD_H # include #endif #include #if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN # include #endif #if !defined PATH_MAX && defined MAXPATHLEN # define PATH_MAX MAXPATHLEN #endif #ifdef __hpux # undef PATH_MAX # define PATH_MAX 1024 #endif #if defined _WIN32 && ! defined __CYGWIN__ # undef PATH_MAX # define PATH_MAX 260 #endif ]]) # Prerequisites of gl_PATHMAX_SNIPPET. AC_DEFUN([gl_PATHMAX_SNIPPET_PREREQ], [ AC_CHECK_HEADERS_ONCE([unistd.h sys/param.h]) ]) recode-3.7.15/m4/limits-h.m40000644000175000017500000000233514371444255011055 dnl Check whether limits.h has needed features. dnl Copyright 2016-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert. AC_DEFUN_ONCE([gl_LIMITS_H], [ gl_CHECK_NEXT_HEADERS([limits.h]) AC_CACHE_CHECK([whether limits.h has WORD_BIT, BOOL_WIDTH etc.], [gl_cv_header_limits_width], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ #define __STDC_WANT_IEC_60559_BFP_EXT__ 1 #endif #include long long llm = LLONG_MAX; int wb = WORD_BIT; int ullw = ULLONG_WIDTH; int bw = BOOL_WIDTH; int bm = BOOL_MAX; ]])], [gl_cv_header_limits_width=yes], [gl_cv_header_limits_width=no])]) if test "$gl_cv_header_limits_width" = yes; then GL_GENERATE_LIMITS_H=false else GL_GENERATE_LIMITS_H=true fi ]) dnl Unconditionally enables the replacement of . AC_DEFUN([gl_REPLACE_LIMITS_H], [ AC_REQUIRE([gl_LIMITS_H]) GL_GENERATE_LIMITS_H=true ]) recode-3.7.15/m4/malloca.m40000644000175000017500000000103314371444255010731 # malloca.m4 serial 2 dnl Copyright (C) 2003-2004, 2006-2007, 2009-2023 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_MALLOCA], [ dnl Use the autoconf tests for alloca(), but not the AC_SUBSTed variables dnl @ALLOCA@ and @LTALLOCA@. dnl gl_FUNC_ALLOCA dnl Already brought in by the module dependencies. AC_REQUIRE([gl_EEMALLOC]) ]) recode-3.7.15/m4/assert_h.m40000644000175000017500000000520414371444255011135 # assert-h.m4 dnl Copyright (C) 2011-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert. AC_DEFUN([gl_ASSERT_H], [ AC_CACHE_CHECK([for static_assert], [gl_cv_static_assert], [gl_save_CFLAGS=$CFLAGS for gl_working in "yes, a keyword" "yes, an macro"; do AS_CASE([$gl_working], [*assert.h*], [CFLAGS="$gl_save_CFLAGS -DINCLUDE_ASSERT_H"]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#if defined __clang__ && __STDC_VERSION__ < 202311 #pragma clang diagnostic error "-Wc2x-extensions" #pragma clang diagnostic error "-Wc++1z-extensions" #endif #ifdef INCLUDE_ASSERT_H #include #endif static_assert (2 + 2 == 4, "arithmetic does not work"); static_assert (2 + 2 == 4); ]], [[ static_assert (sizeof (char) == 1, "sizeof does not work"); static_assert (sizeof (char) == 1); ]])], [gl_cv_static_assert=$gl_working], [gl_cv_static_assert=no]) CFLAGS=$gl_save_CFLAGS test "$gl_cv_static_assert" != no && break done]) GL_GENERATE_ASSERT_H=false AS_CASE([$gl_cv_static_assert], [yes*keyword*], [AC_DEFINE([HAVE_C_STATIC_ASSERT], [1], [Define to 1 if the static_assert keyword works.])], [no], [GL_GENERATE_ASSERT_H=true gl_NEXT_HEADERS([assert.h])]) dnl The "zz" puts this toward config.h's end, to avoid potential dnl collisions with other definitions. dnl #undef assert so that programs are not tempted to use it without dnl specifically including assert.h. dnl #undef __ASSERT_H__ so that on IRIX, when programs later include dnl , this include actually defines assert. dnl Break the #undef_s apart with a comment so that 'configure' does dnl not comment them out. AH_VERBATIM([zzstatic_assert], [#if (!defined HAVE_C_STATIC_ASSERT && !defined assert \ && (!defined __cplusplus \ || (__cpp_static_assert < 201411 \ && __GNUG__ < 6 && __clang_major__ < 6))) #include #undef/**/assert #ifdef __sgi #undef/**/__ASSERT_H__ #endif /* Solaris 11.4 defines static_assert as a macro with 2 arguments. We need it also to be invocable with a single argument. */ #if defined __sun && (__STDC_VERSION__ - 0 >= 201112L) && !defined __cplusplus #undef/**/static_assert #define static_assert _Static_assert #endif #endif]) ]) recode-3.7.15/m4/locale-fr.m40000644000175000017500000002447414371444255011203 # locale-fr.m4 serial 20 dnl Copyright (C) 2003, 2005-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Determine the name of a french locale with traditional encoding. AC_DEFUN([gt_LOCALE_FR], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AM_LANGINFO_CODESET]) AC_CACHE_CHECK([for a traditional french locale], [gt_cv_locale_fr], [ AC_LANG_CONFTEST([AC_LANG_SOURCE([[ #include #include #if HAVE_LANGINFO_CODESET # include #endif #include #include struct tm t; char buf[16]; int main () { /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl imitates locale dependent behaviour by looking at the environment variables, and all locales use the UTF-8 encoding. */ #if defined __BEOS__ || defined __HAIKU__ return 1; #else /* Check whether the given locale name is recognized by the system. */ # if defined _WIN32 && !defined __CYGWIN__ /* On native Windows, setlocale(category, "") looks at the system settings, not at the environment variables. Also, when an encoding suffix such as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE category of the locale to "C". */ if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) return 1; # else if (setlocale (LC_ALL, "") == NULL) return 1; # endif /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) is empty, and the behaviour of Tcl 8.4 in this locale is not useful. On OpenBSD 4.0, when an unsupported locale is specified, setlocale() succeeds but then nl_langinfo(CODESET) is "646". In this situation, some unit tests fail. On MirBSD 10, when an unsupported locale is specified, setlocale() succeeds but then nl_langinfo(CODESET) is "UTF-8". */ # if HAVE_LANGINFO_CODESET { const char *cs = nl_langinfo (CODESET); if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0 || strcmp (cs, "UTF-8") == 0) return 1; } # endif # ifdef __CYGWIN__ /* On Cygwin, avoid locale names without encoding suffix, because the locale_charset() function relies on the encoding suffix. Note that LC_ALL is set on the command line. */ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; # endif /* Check whether in the abbreviation of the second month, the second character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only one byte long. This excludes the UTF-8 encoding. */ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1; # if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */ /* Check whether the decimal separator is a comma. On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point are nl_langinfo(RADIXCHAR) are both ".". */ if (localeconv () ->decimal_point[0] != ',') return 1; # endif return 0; #endif } ]])]) if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then case "$host_os" in # Handle native Windows specially, because there setlocale() interprets # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256", # "fr" or "fra" as "French" or "French_France.1252", # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", # "ja" as "Japanese" or "Japanese_Japan.932", # and similar. mingw*) # Test for the native Windows locale name. if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr=French_France.1252 else # None found. gt_cv_locale_fr=none fi ;; *) # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the # configure script would override the LC_ALL setting. Likewise for # LC_CTYPE, which is also set at the beginning of the configure script. # Test for the usual locale name. if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr=fr_FR else # Test for the locale name with explicit encoding suffix. if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr=fr_FR.ISO-8859-1 else # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name. if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr=fr_FR.ISO8859-1 else # Test for the HP-UX locale name. if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr=fr_FR.iso88591 else # Test for the Solaris 7 locale name. if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr=fr else # None found. gt_cv_locale_fr=none fi fi fi fi fi ;; esac fi rm -fr conftest* ]) LOCALE_FR=$gt_cv_locale_fr AC_SUBST([LOCALE_FR]) ]) dnl Determine the name of a french locale with UTF-8 encoding. AC_DEFUN([gt_LOCALE_FR_UTF8], [ AC_REQUIRE([AM_LANGINFO_CODESET]) AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [ AC_LANG_CONFTEST([AC_LANG_SOURCE([[ #include #include #if HAVE_LANGINFO_CODESET # include #endif #include #include struct tm t; char buf[16]; int main () { /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl imitates locale dependent behaviour by looking at the environment variables, and all locales use the UTF-8 encoding. */ #if !(defined __BEOS__ || defined __HAIKU__) /* Check whether the given locale name is recognized by the system. */ # if defined _WIN32 && !defined __CYGWIN__ /* On native Windows, setlocale(category, "") looks at the system settings, not at the environment variables. Also, when an encoding suffix such as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE category of the locale to "C". */ if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) return 1; # else if (setlocale (LC_ALL, "") == NULL) return 1; # endif /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) is empty, and the behaviour of Tcl 8.4 in this locale is not useful. On OpenBSD 4.0, when an unsupported locale is specified, setlocale() succeeds but then nl_langinfo(CODESET) is "646". In this situation, some unit tests fail. */ # if HAVE_LANGINFO_CODESET { const char *cs = nl_langinfo (CODESET); if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0) return 1; } # endif # ifdef __CYGWIN__ /* On Cygwin, avoid locale names without encoding suffix, because the locale_charset() function relies on the encoding suffix. Note that LC_ALL is set on the command line. */ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; # endif /* Check whether in the abbreviation of the second month, the second character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is two bytes long, with UTF-8 encoding. */ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; if (strftime (buf, sizeof (buf), "%b", &t) < 4 || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v') return 1; #endif #if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */ /* Check whether the decimal separator is a comma. On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point are nl_langinfo(RADIXCHAR) are both ".". */ if (localeconv () ->decimal_point[0] != ',') return 1; #endif return 0; } ]])]) if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then case "$host_os" in # Handle native Windows specially, because there setlocale() interprets # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256", # "fr" or "fra" as "French" or "French_France.1252", # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", # "ja" as "Japanese" or "Japanese_Japan.932", # and similar. mingw*) # Test for the hypothetical native Windows locale name. if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr_utf8=French_France.65001 else # None found. gt_cv_locale_fr_utf8=none fi ;; *) # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the # configure script would override the LC_ALL setting. Likewise for # LC_CTYPE, which is also set at the beginning of the configure script. # Test for the usual locale name. if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr_utf8=fr_FR else # Test for the locale name with explicit encoding suffix. if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr_utf8=fr_FR.UTF-8 else # Test for the Solaris 7 locale name. if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr_utf8=fr.UTF-8 else # None found. gt_cv_locale_fr_utf8=none fi fi fi ;; esac fi rm -fr conftest* ]) LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8 AC_SUBST([LOCALE_FR_UTF8]) ]) recode-3.7.15/m4/eealloc.m40000644000175000017500000000166714371444255010742 # eealloc.m4 serial 3 dnl Copyright (C) 2003, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_EEALLOC], [ AC_REQUIRE([gl_EEMALLOC]) AC_REQUIRE([gl_EEREALLOC]) ]) AC_DEFUN([gl_EEMALLOC], [ _AC_FUNC_MALLOC_IF( [gl_cv_func_malloc_0_nonnull=1], [gl_cv_func_malloc_0_nonnull=0]) AC_DEFINE_UNQUOTED([MALLOC_0_IS_NONNULL], [$gl_cv_func_malloc_0_nonnull], [If malloc(0) is != NULL, define this to 1. Otherwise define this to 0.]) ]) AC_DEFUN([gl_EEREALLOC], [ _AC_FUNC_REALLOC_IF( [gl_cv_func_realloc_0_nonnull=1], [gl_cv_func_realloc_0_nonnull=0]) AC_DEFINE_UNQUOTED([REALLOC_0_IS_NONNULL], [$gl_cv_func_realloc_0_nonnull], [If realloc(NULL,0) is != NULL, define this to 1. Otherwise define this to 0.]) ]) recode-3.7.15/m4/error.m40000644000175000017500000000113014371444255010450 #serial 16 # Copyright (C) 1996-1998, 2001-2004, 2009-2023 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_ERROR], [ ]) # Prerequisites of lib/error.c. AC_DEFUN([gl_PREREQ_ERROR], [ dnl Use system extensions on Android, so that AC_FUNC_STRERROR_R dnl discovers the GNU API for strerror_r on Android API level 23 and later. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([AC_FUNC_STRERROR_R]) : ]) recode-3.7.15/m4/stat-time.m40000644000175000017500000000605714371444255011243 # Checks for stat-related time functions. # Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2023 Free Software # Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. dnl From Paul Eggert. # st_atim.tv_nsec - Linux, Solaris, Cygwin # st_atimespec.tv_nsec - FreeBSD, NetBSD, if ! defined _POSIX_SOURCE # st_atimensec - FreeBSD, NetBSD, if defined _POSIX_SOURCE # st_atim.st__tim.tv_nsec - UnixWare (at least 2.1.2 through 7.1) # st_birthtimespec - FreeBSD, NetBSD (hidden on OpenBSD 3.9, anyway) # st_birthtim - Cygwin 1.7.0+ AC_DEFUN([gl_STAT_TIME], [ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_HEADERS_ONCE([sys/time.h]) AC_CHECK_MEMBERS([struct stat.st_atim.tv_nsec], [AC_CACHE_CHECK([whether struct stat.st_atim is of type struct timespec], [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include #include #if HAVE_SYS_TIME_H # include #endif #include struct timespec ts; struct stat st; ]], [[ st.st_atim = ts; ]])], [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes], [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no])]) if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then AC_DEFINE([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC], [1], [Define to 1 if the type of the st_atim member of a struct stat is struct timespec.]) fi], [AC_CHECK_MEMBERS([struct stat.st_atimespec.tv_nsec], [], [AC_CHECK_MEMBERS([struct stat.st_atimensec], [], [AC_CHECK_MEMBERS([struct stat.st_atim.st__tim.tv_nsec], [], [], [#include #include ])], [#include #include ])], [#include #include ])], [#include #include ]) ]) # Check for st_birthtime, a feature from UFS2 (FreeBSD, NetBSD, OpenBSD, etc.) # and NTFS (Cygwin). # There was a time when this field was named st_createtime (21 June # 2002 to 16 July 2002) But that window is very small and applied only # to development code, so systems still using that configuration are # not supported. See revisions 1.10 and 1.11 of FreeBSD's # src/sys/ufs/ufs/dinode.h. # AC_DEFUN([gl_STAT_BIRTHTIME], [ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_HEADERS_ONCE([sys/time.h]) AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec], [], [AC_CHECK_MEMBERS([struct stat.st_birthtimensec], [], [AC_CHECK_MEMBERS([struct stat.st_birthtim.tv_nsec], [], [], [#include #include ])], [#include #include ])], [#include #include ]) ]) recode-3.7.15/m4/gnulib-common.m40000644000175000017500000013533514371444255012104 # gnulib-common.m4 serial 81 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_PREREQ([2.62]) # gl_COMMON # is expanded unconditionally through gnulib-tool magic. AC_DEFUN([gl_COMMON], [ dnl Use AC_REQUIRE here, so that the code is expanded once only. AC_REQUIRE([gl_00GNULIB]) AC_REQUIRE([gl_COMMON_BODY]) AC_REQUIRE([gl_ZZGNULIB]) ]) AC_DEFUN([gl_COMMON_BODY], [ AH_VERBATIM([_GL_GNUC_PREREQ], [/* True if the compiler says it groks GNU C version MAJOR.MINOR. */ #if defined __GNUC__ && defined __GNUC_MINOR__ # define _GL_GNUC_PREREQ(major, minor) \ ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__)) #else # define _GL_GNUC_PREREQ(major, minor) 0 #endif ]) AH_VERBATIM([_Noreturn], [/* The _Noreturn keyword of C11. */ #ifndef _Noreturn # if (defined __cplusplus \ && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ || (defined _MSC_VER && 1900 <= _MSC_VER)) \ && 0) /* [[noreturn]] is not practically usable, because with it the syntax extern _Noreturn void func (...); would not be valid; such a declaration would only be valid with 'extern' and '_Noreturn' swapped, or without the 'extern' keyword. However, some AIX system header files and several gnulib header files use precisely this syntax with 'extern'. */ # define _Noreturn [[noreturn]] # elif (defined __clang__ && __clang_major__ < 16 \ && defined _GL_WORK_AROUND_LLVM_BUG_59792) /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around that rare LLVM bug, though you may get many false-alarm warnings. */ # define _Noreturn # elif ((!defined __cplusplus || defined __clang__) \ && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ || (!defined __STRICT_ANSI__ \ && (_GL_GNUC_PREREQ (4, 7) \ || (defined __apple_build_version__ \ ? 6000000 <= __apple_build_version__ \ : 3 < __clang_major__ + (5 <= __clang_minor__)))))) /* _Noreturn works as-is. */ # elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C # define _Noreturn __attribute__ ((__noreturn__)) # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) # define _Noreturn __declspec (noreturn) # else # define _Noreturn # endif #endif ]) AH_VERBATIM([isoc99_inline], [/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. __APPLE__ && __MACH__ test for Mac OS X. __APPLE_CC__ tests for the Apple compiler and its version. __STDC_VERSION__ tests for the C99 mode. */ #if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ # define __GNUC_STDC_INLINE__ 1 #endif]) AH_VERBATIM([attribute], [/* Attributes. */ #if (defined __has_attribute \ && (!defined __clang_minor__ \ || (defined __apple_build_version__ \ ? 6000000 <= __apple_build_version__ \ : 5 <= __clang_major__))) # define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) #else # define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr # define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) # define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) # define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) # define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) # define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) # define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) # define _GL_ATTR_diagnose_if 0 # define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) # define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) # define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) # define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) # define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) # define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) # ifdef _ICC # define _GL_ATTR_may_alias 0 # else # define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) # endif # define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) # define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) # define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) # define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) # define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) # define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) # define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) # define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) # define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) # define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) #endif /* Disable GCC -Wpedantic if using __has_c_attribute and this is not C23+. */ #if (defined __has_c_attribute && _GL_GNUC_PREREQ (4, 6) \ && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710) # pragma GCC diagnostic ignored "-Wpedantic" #endif ]dnl There is no _GL_ATTRIBUTE_ALIGNED; use stdalign's alignas instead. [ /* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function is the size of the returned memory block. _GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied by the Nth argument of the function is the size of the returned memory block. */ /* Applies to: function, pointer to function, function types. */ #ifndef _GL_ATTRIBUTE_ALLOC_SIZE # if _GL_HAS_ATTRIBUTE (alloc_size) # define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) # else # define _GL_ATTRIBUTE_ALLOC_SIZE(args) # endif #endif /* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the function and report an error if it cannot do so. */ /* Applies to: function. */ #ifndef _GL_ATTRIBUTE_ALWAYS_INLINE # if _GL_HAS_ATTRIBUTE (always_inline) # define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) # else # define _GL_ATTRIBUTE_ALWAYS_INLINE # endif #endif /* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show in stack traces when debugging. The compiler should omit the function from stack traces. */ /* Applies to: function. */ #ifndef _GL_ATTRIBUTE_ARTIFICIAL # if _GL_HAS_ATTRIBUTE (artificial) # define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) # else # define _GL_ATTRIBUTE_ARTIFICIAL # endif #endif /* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ /* Applies to: functions. */ /* Avoid __attribute__ ((cold)) on MinGW; see thread starting at . Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ #ifndef _GL_ATTRIBUTE_COLD # if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ # ifndef __SUNPRO_C # define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) # else # define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) # endif # else # define _GL_ATTRIBUTE_COLD # endif #endif /* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate calls to the function with the same arguments. This attribute is safe for a function that neither depends on nor affects observable state, and always returns exactly once - e.g., does not loop forever, and does not call longjmp. (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_CONST # if _GL_HAS_ATTRIBUTE (const) # define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) # else # define _GL_ATTRIBUTE_CONST # endif #endif /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers that can be freed by passing them as the Ith argument to the function F. _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that can be freed via 'free'; it can be used only after declaring 'free'. */ /* Applies to: functions. Cannot be used on inline functions. */ #ifndef _GL_ATTRIBUTE_DEALLOC # if _GL_GNUC_PREREQ (11, 0) # define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) # else # define _GL_ATTRIBUTE_DEALLOC(f, i) # endif #endif /* If gnulib's or has already defined this macro, continue to use this earlier definition, since may not have been included yet. */ #ifndef _GL_ATTRIBUTE_DEALLOC_FREE # if defined __cplusplus && defined __GNUC__ && !defined __clang__ /* Work around GCC bug */ # define _GL_ATTRIBUTE_DEALLOC_FREE \ _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1) # else # define _GL_ATTRIBUTE_DEALLOC_FREE \ _GL_ATTRIBUTE_DEALLOC (free, 1) # endif #endif /* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. The compiler may warn if the entity is used. */ /* Applies to: - function, variable, - struct, union, struct/union member, - enumeration, enumeration item, - typedef, in C++ also: namespace, class, template specialization. */ #ifndef _GL_ATTRIBUTE_DEPRECATED # ifdef __has_c_attribute # if __has_c_attribute (__deprecated__) # define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] # endif # endif # if !defined _GL_ATTRIBUTE_DEPRECATED && _GL_HAS_ATTRIBUTE (deprecated) # define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) # endif # ifndef _GL_ATTRIBUTE_DEPRECATED # define _GL_ATTRIBUTE_DEPRECATED # endif #endif /* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and the function call is not optimized away. _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and the function call is not optimized away. */ /* Applies to: functions. */ #if !(defined _GL_ATTRIBUTE_ERROR && defined _GL_ATTRIBUTE_WARNING) # if _GL_HAS_ATTRIBUTE (error) # define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) # define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) # elif _GL_HAS_ATTRIBUTE (diagnose_if) # define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) # define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) # else # define _GL_ATTRIBUTE_ERROR(msg) # define _GL_ATTRIBUTE_WARNING(msg) # endif #endif /* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain visible to debuggers etc., even with '-fwhole-program'. */ /* Applies to: functions, variables. */ #ifndef _GL_ATTRIBUTE_EXTERNALLY_VISIBLE # if _GL_HAS_ATTRIBUTE (externally_visible) # define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) # else # define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE # endif #endif /* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if the control flow falls through to the immediately following 'case' or 'default' label. The compiler should not warn in this case. */ /* Applies to: Empty statement (;), inside a 'switch' statement. */ /* Always expands to something. */ #ifndef _GL_ATTRIBUTE_FALLTHROUGH # ifdef __has_c_attribute # if __has_c_attribute (__fallthrough__) # define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] # endif # endif # if !defined _GL_ATTRIBUTE_FALLTHROUGH && _GL_HAS_ATTRIBUTE (fallthrough) # define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) # endif # ifndef _GL_ATTRIBUTE_FALLTHROUGH # define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) # endif #endif /* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) declares that the STRING-INDEXth function argument is a format string of style ARCHETYPE, which is one of: printf, gnu_printf scanf, gnu_scanf, strftime, gnu_strftime, strfmon, or the same thing prefixed and suffixed with '__'. If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK are suitable for the format string. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_FORMAT # if _GL_HAS_ATTRIBUTE (format) # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) # else # define _GL_ATTRIBUTE_FORMAT(spec) # endif #endif /* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other compilation unit, it executes code from that unit only by return or by exception handling. This declaration lets the compiler optimize that unit more aggressively. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_LEAF # if _GL_HAS_ATTRIBUTE (leaf) # define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) # else # define _GL_ATTRIBUTE_LEAF # endif #endif /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly allocated memory. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_MALLOC # if _GL_HAS_ATTRIBUTE (malloc) # define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) # else # define _GL_ATTRIBUTE_MALLOC # endif #endif /* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the same storage as pointers to other types. Thus this declaration disables strict aliasing optimization. */ /* Applies to: types. */ /* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ #ifndef _GL_ATTRIBUTE_MAY_ALIAS # if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C # define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) # else # define _GL_ATTRIBUTE_MAY_ALIAS # endif #endif /* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if the entity is not used. The compiler should not warn if the entity is not used. */ /* Applies to: - function, variable, - struct, union, struct/union member, - enumeration, enumeration item, - typedef, in C++ also: class. */ /* In C++ and C23, this is spelled [[__maybe_unused__]]. GCC's syntax is __attribute__ ((__unused__)). clang supports both syntaxes. Except that with clang ≥ 6, < 10, in C++ mode, __has_c_attribute (__maybe_unused__) yields true but the use of [[__maybe_unused__]] nevertheless produces a warning. */ #ifndef _GL_ATTRIBUTE_MAYBE_UNUSED # if defined __clang__ && defined __cplusplus # if !defined __apple_build_version__ && __clang_major__ >= 10 # define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] # endif # elif defined __has_c_attribute # if __has_c_attribute (__maybe_unused__) # define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] # endif # endif # ifndef _GL_ATTRIBUTE_MAYBE_UNUSED # define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED # endif #endif /* Alternative spelling of this macro, for convenience and for compatibility with glibc/include/libc-symbols.h. */ #define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED /* Earlier spellings of this macro. */ #define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED /* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not discard the return value. The compiler may warn if the caller does not use the return value, unless the caller uses something like ignore_value. */ /* Applies to: function, enumeration, class. */ #ifndef _GL_ATTRIBUTE_NODISCARD # if defined __clang__ && defined __cplusplus /* With clang up to 15.0.6 (at least), in C++ mode, [[__nodiscard__]] produces a warning. The 1000 below means a yet unknown threshold. When clang++ version X starts supporting [[__nodiscard__]] without warning about it, you can replace the 1000 with X. */ # if __clang_major__ >= 1000 # define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] # endif # elif defined __has_c_attribute # if __has_c_attribute (__nodiscard__) # define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] # endif # endif # if !defined _GL_ATTRIBUTE_NODISCARD && _GL_HAS_ATTRIBUTE (warn_unused_result) # define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) # endif # ifndef _GL_ATTRIBUTE_NODISCARD # define _GL_ATTRIBUTE_NODISCARD # endif #endif /* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the function. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_NOINLINE # if _GL_HAS_ATTRIBUTE (noinline) # define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) # else # define _GL_ATTRIBUTE_NOINLINE # endif #endif /* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... must not be NULL. _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be null. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_NONNULL # if _GL_HAS_ATTRIBUTE (nonnull) # define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) # else # define _GL_ATTRIBUTE_NONNULL(args) # endif #endif /* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is not meant to be NUL-terminated. */ /* Applies to: struct/union members and variables that are arrays of element type '[[un]signed] char'. */ #ifndef _GL_ATTRIBUTE_NONSTRING # if _GL_HAS_ATTRIBUTE (nonstring) # define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) # else # define _GL_ATTRIBUTE_NONSTRING # endif #endif /* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ /* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_NOTHROW # if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus # define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) # else # define _GL_ATTRIBUTE_NOTHROW # endif #endif /* _GL_ATTRIBUTE_PACKED declares: For struct members: The member has the smallest possible alignment. For struct, union, class: All members have the smallest possible alignment, minimizing the memory required. */ /* Applies to: struct members, struct, union, in C++ also: class. */ #ifndef _GL_ATTRIBUTE_PACKED # if _GL_HAS_ATTRIBUTE (packed) # define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) # else # define _GL_ATTRIBUTE_PACKED # endif #endif /* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate calls to the function with the same arguments if observable state is not changed between calls. This attribute is safe for a function that does not affect observable state, and always returns exactly once. (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_PURE # if _GL_HAS_ATTRIBUTE (pure) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else # define _GL_ATTRIBUTE_PURE # endif #endif /* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is a non-NULL pointer. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_RETURNS_NONNULL # if _GL_HAS_ATTRIBUTE (returns_nonnull) # define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) # else # define _GL_ATTRIBUTE_RETURNS_NONNULL # endif #endif /* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a trailing NULL argument. _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_SENTINEL # if _GL_HAS_ATTRIBUTE (sentinel) # define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) # else # define _GL_ATTRIBUTE_SENTINEL(pos) # endif #endif /* A helper macro. Don't use it directly. */ #ifndef _GL_ATTRIBUTE_UNUSED # if _GL_HAS_ATTRIBUTE (unused) # define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) # else # define _GL_ATTRIBUTE_UNUSED # endif #endif ]dnl There is no _GL_ATTRIBUTE_VISIBILITY; see m4/visibility.m4 instead. [ /* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the immediately preceding label is not used. The compiler should not warn if the label is not used. */ /* Applies to: label (both in C and C++). */ /* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' syntax. But clang does. */ #ifndef _GL_UNUSED_LABEL # if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ # define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED # else # define _GL_UNUSED_LABEL # endif #endif ]) AH_VERBATIM([async_safe], [/* The _GL_ASYNC_SAFE marker should be attached to functions that are signal handlers (for signals other than SIGABRT, SIGPIPE) or can be invoked from such signal handlers. Such functions have some restrictions: * All functions that it calls should be marked _GL_ASYNC_SAFE as well, or should be listed as async-signal-safe in POSIX section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in particular, are NOT async-signal-safe. * All memory locations (variables and struct fields) that these functions access must be marked 'volatile'. This holds for both read and write accesses. Otherwise the compiler might optimize away stores to and reads from such locations that occur in the program, depending on its data flow analysis. For example, when the program contains a loop that is intended to inspect a variable set from within a signal handler while (!signal_occurred) ; the compiler is allowed to transform this into an endless loop if the variable 'signal_occurred' is not declared 'volatile'. Additionally, recall that: * A signal handler should not modify errno (except if it is a handler for a fatal signal and ends by raising the same signal again, thus provoking the termination of the process). If it invokes a function that may clobber errno, it needs to save and restore the value of errno. */ #define _GL_ASYNC_SAFE ]) AH_VERBATIM([micro_optimizations], [/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where n1 and n2 are expressions without side effects, that evaluate to real numbers (excluding NaN). It returns 1 if n1 > n2 0 if n1 == n2 -1 if n1 < n2 The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional jump with nearly all GCC versions up to GCC 10. This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many GCC versions up to GCC 9. The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 avoids conditional jumps in all GCC versions >= 3.4. */ #define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) ]) dnl Hint which direction to take regarding cross-compilation guesses: dnl When a user installs a program on a platform they are not intimately dnl familiar with, --enable-cross-guesses=conservative is the appropriate dnl choice. It implements the "If we don't know, assume the worst" principle. dnl However, when an operating system developer (on a platform which is not dnl yet known to gnulib) builds packages for their platform, they want to dnl expose, not hide, possible platform bugs; in this case, dnl --enable-cross-guesses=risky is the appropriate choice. dnl Sets the variables dnl gl_cross_guess_normal (to be used when 'yes' is good and 'no' is bad), dnl gl_cross_guess_inverted (to be used when 'no' is good and 'yes' is bad). AC_ARG_ENABLE([cross-guesses], [AS_HELP_STRING([--enable-cross-guesses={conservative|risky}], [specify policy for cross-compilation guesses])], [if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then AC_MSG_WARN([invalid argument supplied to --enable-cross-guesses]) enableval=conservative fi gl_cross_guesses="$enableval"], [gl_cross_guesses=conservative]) if test $gl_cross_guesses = risky; then gl_cross_guess_normal="guessing yes" gl_cross_guess_inverted="guessing no" else gl_cross_guess_normal="guessing no" gl_cross_guess_inverted="guessing yes" fi dnl Preparation for running test programs: dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not dnl to /dev/tty, so they can be redirected to log files. Such diagnostics dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N. LIBC_FATAL_STDERR_=1 export LIBC_FATAL_STDERR_ ]) # gl_MODULE_INDICATOR_INIT_VARIABLE([variablename]) # gl_MODULE_INDICATOR_INIT_VARIABLE([variablename], [initialvalue]) # initializes the shell variable that indicates the presence of the given module # as a C preprocessor expression. AC_DEFUN([gl_MODULE_INDICATOR_INIT_VARIABLE], [ GL_MODULE_INDICATOR_PREFIX[]_[$1]=m4_if([$2], , [0], [$2]) AC_SUBST(GL_MODULE_INDICATOR_PREFIX[]_[$1]) ]) # gl_MODULE_INDICATOR_CONDITION # expands to a C preprocessor expression that evaluates to 1 or 0, depending # whether a gnulib module that has been requested shall be considered present # or not. m4_define([gl_MODULE_INDICATOR_CONDITION], [1]) # gl_MODULE_INDICATOR_SET_VARIABLE([modulename]) # sets the shell variable that indicates the presence of the given module to # a C preprocessor expression that will evaluate to 1. AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE], [ gl_MODULE_INDICATOR_SET_VARIABLE_AUX( [GL_MODULE_INDICATOR_PREFIX[]_GNULIB_[]m4_translit([[$1]], [abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])], [gl_MODULE_INDICATOR_CONDITION]) ]) # gl_MODULE_INDICATOR_SET_VARIABLE_AUX([variable]) # modifies the shell variable to include the gl_MODULE_INDICATOR_CONDITION. # The shell variable's value is a C preprocessor expression that evaluates # to 0 or 1. AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX], [ m4_if(m4_defn([gl_MODULE_INDICATOR_CONDITION]), [1], [ dnl Simplify the expression VALUE || 1 to 1. $1=1 ], [gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([$1], [gl_MODULE_INDICATOR_CONDITION])]) ]) # gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([variable], [condition]) # modifies the shell variable to include the given condition. The shell # variable's value is a C preprocessor expression that evaluates to 0 or 1. AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR], [ dnl Simplify the expression 1 || CONDITION to 1. if test "$[]$1" != 1; then dnl Simplify the expression 0 || CONDITION to CONDITION. if test "$[]$1" = 0; then $1=$2 else $1="($[]$1 || $2)" fi fi ]) # gl_MODULE_INDICATOR([modulename]) # defines a C macro indicating the presence of the given module # in a location where it can be used. # | Value | Value | # | in lib/ | in tests/ | # --------------------------------------------+---------+-----------+ # Module present among main modules: | 1 | 1 | # --------------------------------------------+---------+-----------+ # Module present among tests-related modules: | 0 | 1 | # --------------------------------------------+---------+-----------+ # Module not present at all: | 0 | 0 | # --------------------------------------------+---------+-----------+ AC_DEFUN([gl_MODULE_INDICATOR], [ AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]], [abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [gl_MODULE_INDICATOR_CONDITION], [Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module $1 shall be considered present.]) ]) # gl_MODULE_INDICATOR_FOR_TESTS([modulename]) # defines a C macro indicating the presence of the given module # in lib or tests. This is useful to determine whether the module # should be tested. # | Value | Value | # | in lib/ | in tests/ | # --------------------------------------------+---------+-----------+ # Module present among main modules: | 1 | 1 | # --------------------------------------------+---------+-----------+ # Module present among tests-related modules: | 1 | 1 | # --------------------------------------------+---------+-----------+ # Module not present at all: | 0 | 0 | # --------------------------------------------+---------+-----------+ AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], [ AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]], [abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1], [Define to 1 when the gnulib module $1 should be tested.]) ]) # gl_ASSERT_NO_GNULIB_POSIXCHECK # asserts that there will never be a need to #define GNULIB_POSIXCHECK. # and thereby enables an optimization of configure and config.h. # Used by Emacs. AC_DEFUN([gl_ASSERT_NO_GNULIB_POSIXCHECK], [ dnl Override gl_WARN_ON_USE_PREPARE. dnl But hide this definition from 'aclocal'. AC_DEFUN([gl_W][ARN_ON_USE_PREPARE], []) ]) # gl_ASSERT_NO_GNULIB_TESTS # asserts that there will be no gnulib tests in the scope of the configure.ac # and thereby enables an optimization of config.h. # Used by Emacs. AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS], [ dnl Override gl_MODULE_INDICATOR_FOR_TESTS. AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], []) ]) # Test whether exists. # Set HAVE_FEATURES_H. AC_DEFUN([gl_FEATURES_H], [ AC_CHECK_HEADERS_ONCE([features.h]) if test $ac_cv_header_features_h = yes; then HAVE_FEATURES_H=1 else HAVE_FEATURES_H=0 fi AC_SUBST([HAVE_FEATURES_H]) ]) # gl_PROG_CC_C99 # Modifies the value of the shell variable CC in an attempt to make $CC # understand ISO C99 source code. AC_DEFUN([gl_PROG_CC_C99], [ dnl Just use AC_PROG_CC_C99. dnl When AC_PROG_CC_C99 and AC_PROG_CC_STDC are used together, the substituted dnl value of CC will contain the C99 enabling options twice. But this is only dnl a cosmetic problem. dnl With Autoconf >= 2.70, use AC_PROG_CC since it implies AC_PROG_CC_C99; dnl this avoids a "warning: The macro `AC_PROG_CC_C99' is obsolete." m4_version_prereq([2.70], [AC_REQUIRE([AC_PROG_CC])], [AC_REQUIRE([AC_PROG_CC_C99])]) ]) # gl_PROG_AR_RANLIB # Determines the values for AR, ARFLAGS, RANLIB that fit with the compiler. # The user can set the variables AR, ARFLAGS, RANLIB if he wants to override # the values. AC_DEFUN([gl_PROG_AR_RANLIB], [ dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler dnl as "cc", and GCC as "gcc". They have different object file formats and dnl library formats. In particular, the GNU binutils programs ar and ranlib dnl produce libraries that work only with gcc, not with cc. AC_REQUIRE([AC_PROG_CC]) dnl The '][' hides this use from 'aclocal'. AC_BEFORE([$0], [A][M_PROG_AR]) AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler], [ AC_EGREP_CPP([Amsterdam], [ #ifdef __ACK__ Amsterdam #endif ], [gl_cv_c_amsterdam_compiler=yes], [gl_cv_c_amsterdam_compiler=no]) ]) dnl Don't compete with AM_PROG_AR's decision about AR/ARFLAGS if we are not dnl building with __ACK__. if test $gl_cv_c_amsterdam_compiler = yes; then if test -z "$AR"; then AR='cc -c.a' fi if test -z "$ARFLAGS"; then ARFLAGS='-o' fi else dnl AM_PROG_AR was added in automake v1.11.2. AM_PROG_AR does not AC_SUBST dnl ARFLAGS variable (it is filed into Makefile.in directly by automake dnl script on-demand, if not specified by ./configure of course). dnl Don't AC_REQUIRE the AM_PROG_AR otherwise the code for __ACK__ above dnl will be ignored. Also, pay attention to call AM_PROG_AR in else block dnl because AM_PROG_AR is written so it could re-set AR variable even for dnl __ACK__. It may seem like its easier to avoid calling the macro here, dnl but we need to AC_SUBST both AR/ARFLAGS (thus those must have some good dnl default value and automake should usually know them). dnl dnl The '][' hides this use from 'aclocal'. m4_ifdef([A][M_PROG_AR], [A][M_PROG_AR], [:]) fi dnl In case the code above has not helped with setting AR/ARFLAGS, use dnl Automake-documented default values for AR and ARFLAGS, but prefer dnl ${host}-ar over ar (useful for cross-compiling). AC_CHECK_TOOL([AR], [ar], [ar]) if test -z "$ARFLAGS"; then ARFLAGS='cr' fi AC_SUBST([AR]) AC_SUBST([ARFLAGS]) if test -z "$RANLIB"; then if test $gl_cv_c_amsterdam_compiler = yes; then RANLIB=':' else dnl Use the ranlib program if it is available. AC_PROG_RANLIB fi fi AC_SUBST([RANLIB]) ]) # AC_C_RESTRICT # This definition is copied from post-2.70 Autoconf and overrides the # AC_C_RESTRICT macro from autoconf 2.60..2.70. m4_version_prereq([2.70.1], [], [ AC_DEFUN([AC_C_RESTRICT], [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict], [ac_cv_c_restrict=no # Put '__restrict__' first, to avoid problems with glibc and non-GCC; see: # https://lists.gnu.org/archive/html/bug-autoconf/2016-02/msg00006.html # Put 'restrict' last, because C++ lacks it. for ac_kw in __restrict__ __restrict _Restrict restrict; do AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[typedef int *int_ptr; int foo (int_ptr $ac_kw ip) { return ip[0]; } int bar (int [$ac_kw]); /* Catch GCC bug 14050. */ int bar (int ip[$ac_kw]) { return ip[0]; } ]], [[int s[1]; int *$ac_kw t = s; t[0] = 0; return foo (t) + bar (t); ]])], [ac_cv_c_restrict=$ac_kw]) test "$ac_cv_c_restrict" != no && break done ]) AH_VERBATIM([restrict], [/* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is supported only directly. */ #undef restrict /* Work around a bug in older versions of Sun C++, which did not #define __restrict__ or support _Restrict or __restrict__ even though the corresponding Sun C compiler ended up with "#define restrict _Restrict" or "#define restrict __restrict__" in the previous line. This workaround can be removed once we assume Oracle Developer Studio 12.5 (2016) or later. */ #if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__ # define _Restrict # define __restrict__ #endif]) case $ac_cv_c_restrict in restrict) ;; no) AC_DEFINE([restrict], []) ;; *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; esac ])# AC_C_RESTRICT ]) # gl_BIGENDIAN # is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd. # Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some # macros invoke AC_C_BIGENDIAN with arguments. AC_DEFUN([gl_BIGENDIAN], [ AC_C_BIGENDIAN ]) # A temporary file descriptor. # Must be less than 10, because dash 0.5.8 does not support redirections # with multi-digit file descriptors. m4_define([GL_TMP_FD], 9) # gl_SILENT(command) # executes command, but without the normal configure output. # This is useful when you want to invoke AC_CACHE_CHECK (or AC_CHECK_FUNC etc.) # inside another AC_CACHE_CHECK. AC_DEFUN([gl_SILENT], [ exec GL_TMP_FD>&AS_MESSAGE_FD AS_MESSAGE_FD>/dev/null $1 exec AS_MESSAGE_FD>&GL_TMP_FD GL_TMP_FD>&- ]) # gl_CACHE_VAL_SILENT(cache-id, command-to-set-it) # is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not # output a spurious "(cached)" mark in the midst of other configure output. # This macro should be used instead of AC_CACHE_VAL when it is not surrounded # by an AC_MSG_CHECKING/AC_MSG_RESULT pair. AC_DEFUN([gl_CACHE_VAL_SILENT], [ gl_SILENT([ AC_CACHE_VAL([$1], [$2]) ]) ]) # gl_CONDITIONAL(conditional, condition) # is like AM_CONDITIONAL(conditional, condition), except that it does not # produce an error # configure: error: conditional "..." was never defined. # Usually this means the macro was only invoked conditionally. # when only invoked conditionally. Instead, in that case, both the _TRUE # and the _FALSE case are disabled. AC_DEFUN([gl_CONDITIONAL], [ pushdef([AC_CONFIG_COMMANDS_PRE], [:])dnl AM_CONDITIONAL([$1], [$2]) popdef([AC_CONFIG_COMMANDS_PRE])dnl if test -z "${[$1]_TRUE}" && test -z "${[$1]_FALSE}"; then [$1]_TRUE='#' [$1]_FALSE='#' fi ]) # gl_CC_ALLOW_WARNINGS # sets and substitutes a variable GL_CFLAG_ALLOW_WARNINGS, to a $(CC) option # that reverts a preceding '-Werror' option, if available. # This is expected to be '-Wno-error' on gcc, clang (except clang/MSVC), xlclang # and empty otherwise. AC_DEFUN([gl_CC_ALLOW_WARNINGS], [ AC_REQUIRE([AC_PROG_CC]) AC_CACHE_CHECK([for C compiler option to allow warnings], [gl_cv_cc_wallow], [rm -f conftest* echo 'int dummy;' > conftest.c AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err]) >/dev/null AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err]) >/dev/null dnl Test the number of error output lines, because AIX xlc accepts the dnl option '-Wno-error', just to produce a warning dnl "Option -Wno-error was incorrectly specified. The option will be ignored." dnl afterwards. if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then gl_cv_cc_wallow='-Wno-error' else gl_cv_cc_wallow=none fi rm -f conftest* ]) case "$gl_cv_cc_wallow" in none) GL_CFLAG_ALLOW_WARNINGS='' ;; *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; esac AC_SUBST([GL_CFLAG_ALLOW_WARNINGS]) ]) # gl_CXX_ALLOW_WARNINGS # sets and substitutes a variable GL_CXXFLAG_ALLOW_WARNINGS, to a $(CC) option # that reverts a preceding '-Werror' option, if available. AC_DEFUN([gl_CXX_ALLOW_WARNINGS], [ dnl Requires AC_PROG_CXX or gl_PROG_ANSI_CXX. if test -n "$CXX" && test "$CXX" != no; then AC_CACHE_CHECK([for C++ compiler option to allow warnings], [gl_cv_cxx_wallow], [rm -f conftest* echo 'int dummy;' > conftest.cc AC_TRY_COMMAND([${CXX-c++} $CXXFLAGS $CPPFLAGS -c conftest.cc 2>conftest1.err]) >/dev/null AC_TRY_COMMAND([${CXX-c++} $CXXFLAGS $CPPFLAGS -Wno-error -c conftest.cc 2>conftest2.err]) >/dev/null dnl Test the number of error output lines, because AIX xlC accepts the dnl option '-Wno-error', just to produce a warning dnl "Option -Wno-error was incorrectly specified. The option will be ignored." dnl afterwards. if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then gl_cv_cxx_wallow='-Wno-error' else gl_cv_cxx_wallow=none fi rm -f conftest* ]) case "$gl_cv_cxx_wallow" in none) GL_CXXFLAG_ALLOW_WARNINGS='' ;; *) GL_CXXFLAG_ALLOW_WARNINGS="$gl_cv_cxx_wallow" ;; esac else GL_CXXFLAG_ALLOW_WARNINGS='' fi AC_SUBST([GL_CXXFLAG_ALLOW_WARNINGS]) ]) # gl_CC_GNULIB_WARNINGS # sets and substitutes a variable GL_CFLAG_GNULIB_WARNINGS, to a $(CC) option # set that enables or disables warnings as suitable for the Gnulib coding style. AC_DEFUN([gl_CC_GNULIB_WARNINGS], [ AC_REQUIRE([gl_CC_ALLOW_WARNINGS]) dnl Assume that the compiler supports -Wno-* options only if it also supports dnl -Wno-error. GL_CFLAG_GNULIB_WARNINGS='' if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then dnl Enable these warning options: dnl dnl GCC clang dnl -Wno-cast-qual >= 3 >= 3.9 dnl -Wno-conversion >= 3 >= 3.9 dnl -Wno-float-conversion >= 4.9 >= 3.9 dnl -Wno-float-equal >= 3 >= 3.9 dnl -Wimplicit-fallthrough >= 7 >= 3.9 dnl -Wno-pedantic >= 4.8 >= 3.9 dnl -Wno-sign-compare >= 3 >= 3.9 dnl -Wno-sign-conversion >= 4.3 >= 3.9 dnl -Wno-type-limits >= 4.3 >= 3.9 dnl -Wno-undef >= 3 >= 3.9 dnl -Wno-unsuffixed-float-constants >= 4.5 dnl -Wno-unused-function >= 3 >= 3.9 dnl -Wno-unused-parameter >= 3 >= 3.9 dnl cat > conftest.c <<\EOF #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) -Wno-cast-qual -Wno-conversion -Wno-float-equal -Wno-sign-compare -Wno-undef -Wno-unused-function -Wno-unused-parameter #endif #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) -Wno-float-conversion #endif #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) -Wimplicit-fallthrough #endif #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) -Wno-pedantic #endif #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) -Wno-sign-conversion -Wno-type-limits #endif #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 -Wno-unsuffixed-float-constants #endif EOF gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" if AC_TRY_EVAL([gl_command]); then gl_options=`grep -v '#' conftest.out` for word in $gl_options; do GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" done fi rm -f conftest.c conftest.out fi AC_SUBST([GL_CFLAG_GNULIB_WARNINGS]) ]) dnl gl_CONDITIONAL_HEADER([foo.h]) dnl takes a shell variable GL_GENERATE_FOO_H (with value true or false) as input dnl and produces dnl - an AC_SUBSTed variable FOO_H that is either a file name or empty, based dnl on whether GL_GENERATE_FOO_H is true or false, dnl - an Automake conditional GL_GENERATE_FOO_H that evaluates to the value of dnl the shell variable GL_GENERATE_FOO_H. AC_DEFUN([gl_CONDITIONAL_HEADER], [ m4_pushdef([gl_header_name], AS_TR_SH(m4_toupper($1))) m4_pushdef([gl_generate_var], [GL_GENERATE_]AS_TR_SH(m4_toupper($1))) m4_pushdef([gl_generate_cond], [GL_GENERATE_]AS_TR_SH(m4_toupper($1))) case "$gl_generate_var" in false) gl_header_name='' ;; true) dnl It is OK to use a .h file in lib/ from within tests/, but not vice dnl versa. if test -z "$gl_header_name"; then gl_header_name="${gl_source_base_prefix}$1" fi ;; *) echo "*** gl_generate_var is not set correctly" 1>&2; exit 1 ;; esac AC_SUBST(gl_header_name) gl_CONDITIONAL(gl_generate_cond, [$gl_generate_var]) m4_popdef([gl_generate_cond]) m4_popdef([gl_generate_var]) m4_popdef([gl_header_name]) ]) dnl gl_CHECK_FUNCS_ANDROID([func], [[#include ]]) dnl is like AC_CHECK_FUNCS([func]), taking into account a portability problem dnl on Android. dnl dnl When code is compiled on Android, it is in the context of a certain dnl "Android API level", which indicates the minimum version of Android on dnl which the app can be installed. In other words, you don't compile for a dnl specific version of Android. You compile for all versions of Android, dnl onwards from the given API level. dnl Thus, the question "does the OS have the function func" has three possible dnl answers: dnl - yes, in all versions starting from the given API level, dnl - no, in no version, dnl - not in the given API level, but in a later version of Android. dnl dnl In detail, this works as follows: dnl If func was added to Android API level, say, 28, then the libc.so has the dnl symbol func always, whereas the header file declares func dnl conditionally: dnl #if __ANDROID_API__ >= 28 dnl ... func (...) __INTRODUCED_IN(28); dnl #endif dnl Thus, when compiling with "clang -target armv7a-unknown-linux-android28", dnl the function func is declared and exists in libc. dnl Whereas when compiling with "clang -target armv7a-unknown-linux-android27", dnl the function func is not declared but exists in libc. dnl dnl This macro sets two variables: dnl - gl_cv_onwards_func_ to yes / no / "future OS version" dnl - ac_cv_func_ to yes / no / no dnl The first variable allows to distinguish all three cases. dnl The second variable is set, so that an invocation dnl gl_CHECK_FUNCS_ANDROID([func], [[#include ]]) dnl can be used as a drop-in replacement for dnl AC_CHECK_FUNCS([func]). AC_DEFUN([gl_CHECK_FUNCS_ANDROID], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_CACHE_CHECK([for [$1]], [[gl_cv_onwards_func_][$1]], [gl_SILENT([ case "$host_os" in linux*-android*) AC_CHECK_DECL([$1], , , [$2]) if test $[ac_cv_have_decl_][$1] = yes; then AC_CHECK_FUNC([[$1]]) if test $[ac_cv_func_][$1] = yes; then [gl_cv_onwards_func_][$1]=yes else dnl The function is declared but does not exist. This should not dnl happen normally. But anyway, we know that a future version dnl of Android will have the function. [gl_cv_onwards_func_][$1]='future OS version' fi else [gl_cv_onwards_func_][$1]='future OS version' fi ;; *) AC_CHECK_FUNC([$1]) [gl_cv_onwards_func_][$1]=$[ac_cv_func_][$1] ;; esac ]) ]) case "$[gl_cv_onwards_func_][$1]" in future*) [ac_cv_func_][$1]=no ;; *) [ac_cv_func_][$1]=$[gl_cv_onwards_func_][$1] ;; esac if test $[ac_cv_func_][$1] = yes; then AC_DEFINE([HAVE_]m4_translit([[$1]], [abcdefghijklmnopqrstuvwxyz], [ABCDEFGHIJKLMNOPQRSTUVWXYZ]), [1], [Define to 1 if you have the `$1' function.]) fi ]) dnl Expands to some code for use in .c programs that, on native Windows, defines dnl the Microsoft deprecated alias function names to the underscore-prefixed dnl actual function names. With this macro, these function names are available dnl without linking with '-loldnames' and without generating warnings. dnl Usage: Use it after all system header files are included. dnl #include <...> dnl #include <...> dnl ]GL_MDA_DEFINES[ dnl ... AC_DEFUN([GL_MDA_DEFINES],[ AC_REQUIRE([_GL_MDA_DEFINES]) [$gl_mda_defines] ]) AC_DEFUN([_GL_MDA_DEFINES], [gl_mda_defines=' #if defined _WIN32 && !defined __CYGWIN__ #define access _access #define chdir _chdir #define chmod _chmod #define close _close #define creat _creat #define dup _dup #define dup2 _dup2 #define ecvt _ecvt #define execl _execl #define execle _execle #define execlp _execlp #define execv _execv #define execve _execve #define execvp _execvp #define execvpe _execvpe #define fcloseall _fcloseall #define fcvt _fcvt #define fdopen _fdopen #define fileno _fileno #define gcvt _gcvt #define getcwd _getcwd #define getpid _getpid #define getw _getw #define isatty _isatty #define j0 _j0 #define j1 _j1 #define jn _jn #define lfind _lfind #define lsearch _lsearch #define lseek _lseek #define memccpy _memccpy #define mkdir _mkdir #define mktemp _mktemp #define open _open #define putenv _putenv #define putw _putw #define read _read #define rmdir _rmdir #define strdup _strdup #define swab _swab #define tempnam _tempnam #define tzset _tzset #define umask _umask #define unlink _unlink #define utime _utime #define wcsdup _wcsdup #define write _write #define y0 _y0 #define y1 _y1 #define yn _yn #endif ' ]) recode-3.7.15/m4/largefile.m40000644000175000017500000003565414371444255011273 # Enable large files on systems where this is not the default. # Enable support for files on Linux file systems with 64-bit inode numbers. # Copyright 1992-1996, 1998-2023 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # The following macro works around a problem in Autoconf's AC_FUNC_FSEEKO: # It does not set _LARGEFILE_SOURCE=1 on HP-UX/ia64 32-bit, although this # setting of _LARGEFILE_SOURCE is needed so that declares fseeko # and ftello in C++ mode as well. # Fixed in Autoconf 2.72, which has AC_SYS_YEAR2038. AC_DEFUN([gl_SET_LARGEFILE_SOURCE], m4_ifndef([AC_SYS_YEAR2038], [[ AC_REQUIRE([AC_CANONICAL_HOST]) AC_FUNC_FSEEKO case "$host_os" in hpux*) AC_DEFINE([_LARGEFILE_SOURCE], [1], [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).]) ;; esac ]]) ) # Work around a problem in autoconf <= 2.69: # AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5, # or configures them incorrectly in some cases. m4_version_prereq([2.70], [], [ # _AC_SYS_LARGEFILE_TEST_INCLUDES # ------------------------------- m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], [#include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]];[]dnl ]) ])# m4_version_prereq 2.70 # Support AC_SYS_YEAR2038, even if Autoconf 2.71 or earlier. # This code is taken from Autoconf master. m4_ifndef([AC_SYS_YEAR2038], [ # _AC_SYS_YEAR2038_TEST_CODE # -------------------------- # C code used to probe for time_t that can represent time points more # than 2**31 - 1 seconds after the epoch. With the usual Unix epoch, # these correspond to dates after 2038-01-18 22:14:07 +0000 (Gregorian), # hence the name. AC_DEFUN([_AC_SYS_YEAR2038_TEST_CODE], [[ #include /* Check that time_t can represent 2**32 - 1 correctly. */ #define LARGE_TIME_T \\ ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 && LARGE_TIME_T % 65537 == 0) ? 1 : -1]; ]]) # _AC_SYS_YEAR2038_OPTIONS # ------------------------ # List of known ways to enable support for large time_t. If you change # this list you probably also need to change the AS_CASE at the end of # _AC_SYS_YEAR2038_PROBE. m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize( ["none needed"] dnl 64-bit and newer 32-bit Unix ["-D_TIME_BITS=64"] dnl glibc 2.34 with some 32-bit ABIs ["-D__MINGW_USE_VC2005_COMPAT"] dnl 32-bit MinGW ["-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"] dnl 32-bit MinGW (misconfiguration) )) # _AC_SYS_YEAR2038_PROBE([IF-NOT-DETECTED]) # ----------------------------------------- # Subroutine of AC_SYS_YEAR2038. Probe for time_t that can represent # time points more than 2**31 - 1 seconds after the epoch (dates after # 2038-01-18, see above) and set the cache variable ac_cv_sys_year2038_opts # to one of the values in the _AC_SYS_YEAR2038_OPTIONS list, or to # "support not detected" if none of them worked. Then, set compilation # options and #defines as necessary to enable large time_t support. # # Note that we do not test whether mktime, localtime, etc. handle # large values of time_t correctly, as that would require use of # AC_TRY_RUN. Note also that some systems only support large time_t # together with large off_t. # # If support is not detected, the behavior depends on which of the # top-level AC_SYS_YEAR2038 macros was used (see below). # # If you change this macro you may also need to change # _AC_SYS_YEAR2038_OPTIONS. AC_DEFUN([_AC_SYS_YEAR2038_PROBE], [AC_CACHE_CHECK([for $CC option to enable timestamps after Jan 2038], [ac_cv_sys_year2038_opts], [ac_save_CPPFLAGS="$CPPFLAGS" ac_opt_found=no for ac_opt in _AC_SYS_YEAR2038_OPTIONS; do AS_IF([test x"$ac_opt" != x"none needed"], [CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_YEAR2038_TEST_CODE])], [ac_cv_sys_year2038_opts="$ac_opt" ac_opt_found=yes]) test $ac_opt_found = no || break done CPPFLAGS="$ac_save_CPPFLAGS" test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected"]) ac_have_year2038=yes AS_CASE([$ac_cv_sys_year2038_opts], ["none needed"], [], ["support not detected"], [ac_have_year2038=no AS_CASE([$enable_year2038], [yes], [# If we're not cross compiling and 'touch' works with a large # timestamp, then we can presume the system supports wider time_t # *somehow* and we just weren't able to detect it. One common # case that we deliberately *don't* probe for is a system that # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers # wide time_t. (It would be inappropriate for us to override an # intentional use of -m32.) Error out, demanding use of # --disable-year2038 if this is intentional. AS_IF([test $cross_compiling = no], [AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null], [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`], [*'Feb 7 2106'* | *'Feb 7 17:10'*], [AC_MSG_FAILURE(m4_text_wrap( [this system appears to support timestamps after January 2038, but no mechanism for enabling wide 'time_t' was detected. Did you mean to build a 64-bit binary? (e.g. 'CC="${CC} -m64"'.) To proceed with 32-bit time_t, configure with '--disable-year2038'.], [], [], [55]))])])])])], ["-D_TIME_BITS=64"], [AC_DEFINE([_TIME_BITS], [64], [Number of bits in time_t, on hosts where this is settable.])], ["-D__MINGW_USE_VC2005_COMPAT=1"], [AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1], [Define to 1 on platforms where this makes time_t a 64-bit type.])], ["-U_USE_32_BIT_TIME_T"*], [AC_MSG_FAILURE(m4_text_wrap( [the 'time_t' type is currently forced to be 32-bit. It will stop working after January 2038. Remove _USE_32BIT_TIME_T from the compiler flags.], [], [], [55]))], [AC_MSG_ERROR( [internal error: bad value for \$ac_cv_sys_year2038_opts])]) ]) # _AC_SYS_YEAR2038_ENABLE # ----------------------- # Subroutine of AC_SYS_YEAR2038 and _AC_SYS_YEAR2038_OPT_IN. # Depending on which of the YEAR2038 macros was used, add either an # --enable-year2038, or a --disable-year2038, or no option at all to # the configure script. Note that this is expanded very late and # therefore there cannot be any code in the AC_ARG_ENABLE. The # default value for enable_year2038 is emitted unconditionally # because the generated code always looks at this variable. m4_define([_AC_SYS_YEAR2038_ENABLE], [m4_divert_text([DEFAULTS], m4_provide_if([AC_SYS_YEAR2038], [enable_year2038=yes], [enable_year2038=no]))]dnl [AC_ARG_ENABLE([year2038], m4_provide_if([AC_SYS_YEAR2038], [AS_HELP_STRING([--disable-year2038], [do not support timestamps after 2038])], [AS_HELP_STRING([--enable-year2038], [support timestamps after 2038])]))]) # _AC_SYS_YEAR2038_OPT_IN # ----------------------- # If the --enable-year2038 option is given to configure, attempt to # detect and activate support for large time_t on 32-bit systems. # This macro is automatically invoked by AC_SYS_LARGEFILE when large # *file* support is detected. It does not AC_REQUIRE AC_SYS_LARGEFILE # to avoid a dependency loop, and is therefore unsafe to expose as a # documented macro. AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN], [m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE]) AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE]) ])]) # AC_SYS_YEAR2038 # --------------- # Attempt to detect and activate support for large time_t. # On systems where time_t is not always 64 bits, this probe can be # skipped by passing the --disable-year2038 option to configure. AC_DEFUN([AC_SYS_YEAR2038], [AC_REQUIRE([AC_SYS_LARGEFILE])]dnl [m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE]) AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE]) ])]) # _AC_SYS_LARGEFILE_TEST_CODE # --------------------------- # C code used to probe for large file support. m4_define([_AC_SYS_LARGEFILE_TEST_CODE], [@%:@include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ @%:@define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]];[]dnl ]) # _AC_SYS_LARGEFILE_OPTIONS # ------------------------- # List of known ways to enable support for large files. If you change # this list you probably also need to change the AS_CASE at the end of # _AC_SYS_LARGEFILE_PROBE. m4_define([_AC_SYS_LARGEFILE_OPTIONS], m4_normalize( ["none needed"] dnl Most current systems ["-D_FILE_OFFSET_BITS=64"] dnl X/Open LFS spec ["-D_LARGE_FILES=1"] dnl AIX (which versions?) ["-n32"] dnl Irix 6.2 w/ SGI compiler )) # _AC_SYS_LARGEFILE_PROBE # ----------------------- # Subroutine of AC_SYS_LARGEFILE. Probe for large file support and set # the cache variable ac_cv_sys_largefile_opts to one of the values in # the _AC_SYS_LARGEFILE_OPTIONS list, or to "support not detected" if # none of the options in that list worked. Then, set compilation # options and #defines as necessary to enable large file support. # # If large file support is not detected, the behavior depends on which of # the top-level AC_SYS_LARGEFILE macros was used (see below). # # If you change this macro you may also need to change # _AC_SYS_LARGEFILE_OPTIONS. AC_DEFUN([_AC_SYS_LARGEFILE_PROBE], [AC_CACHE_CHECK([for $CC option to enable large file support], [ac_cv_sys_largefile_opts], [ac_save_CC="$CC" ac_opt_found=no for ac_opt in _AC_SYS_LARGEFILE_OPTIONS; do AS_IF([test x"$ac_opt" != x"none needed"], [CC="$ac_save_CC $ac_opt"]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_CODE])], [ac_cv_sys_largefile_opts="$ac_opt" ac_opt_found=yes]) test $ac_opt_found = no || break done CC="$ac_save_CC" test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected"]) ac_have_largefile=yes AS_CASE([$ac_cv_sys_largefile_opts], ["none needed"], [], ["support not detected"], [ac_have_largefile=no], ["-D_FILE_OFFSET_BITS=64"], [AC_DEFINE([_FILE_OFFSET_BITS], [64], [Number of bits in a file offset, on hosts where this is settable.])], ["-D_LARGE_FILES=1"], [AC_DEFINE([_LARGE_FILES], [1], [Define to 1 on platforms where this makes off_t a 64-bit type.])], ["-n32"], [CC="$CC -n32"], [AC_MSG_ERROR( [internal error: bad value for \$ac_cv_sys_largefile_opts])]) _AC_SYS_YEAR2038_OPT_IN ]) # _AC_SYS_LARGEFILE_ENABLE # ------------------------ # Subroutine of AC_SYS_LARGEFILE. Note that this # is expanded very late and therefore there cannot be any code in the # AC_ARG_ENABLE. The default value for enable_largefile is emitted # unconditionally because the generated shell code always looks at # this variable. m4_define([_AC_SYS_LARGEFILE_ENABLE], [m4_divert_text([DEFAULTS], enable_largefile=yes)]dnl [AC_ARG_ENABLE([largefile], [AS_HELP_STRING([--disable-largefile], [omit support for large files])])]) # AC_SYS_LARGEFILE # ---------------- # By default, many hosts won't let programs access large files; # one must use special compiler options to get large-file access to work. # For more details about this brain damage please see: # http://www.unix.org/version2/whatsnew/lfs20mar.html # Additionally, on Linux file systems with 64-bit inodes a file that happens # to have a 64-bit inode number cannot be accessed by 32-bit applications on # Linux x86/x86_64. This can occur with file systems such as XFS and NFS. # This macro allows configuration to continue if the system doesn't support # large files. AC_DEFUN([AC_SYS_LARGEFILE], [m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl AS_IF([test "$enable_largefile" != no], [_AC_SYS_LARGEFILE_PROBE]) AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE]) ])]) ])# m4_ifndef AC_SYS_YEAR2038 # Enable large files on systems where this is implemented by Gnulib, not by the # system headers. # Set the variables WINDOWS_64_BIT_OFF_T, WINDOWS_64_BIT_ST_SIZE if Gnulib # overrides ensure that off_t or 'struct size.st_size' are 64-bit, respectively. AC_DEFUN([gl_LARGEFILE], [ AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in mingw*) dnl Native Windows. dnl mingw64 defines off_t to a 64-bit type already, if dnl _FILE_OFFSET_BITS=64, which is ensured by AC_SYS_LARGEFILE. AC_CACHE_CHECK([for 64-bit off_t], [gl_cv_type_off_t_64], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; ]], [[]])], [gl_cv_type_off_t_64=yes], [gl_cv_type_off_t_64=no]) ]) if test $gl_cv_type_off_t_64 = no; then WINDOWS_64_BIT_OFF_T=1 else WINDOWS_64_BIT_OFF_T=0 fi dnl Some mingw versions define, if _FILE_OFFSET_BITS=64, 'struct stat' dnl to 'struct _stat32i64' or 'struct _stat64' (depending on dnl _USE_32BIT_TIME_T), which has a 32-bit st_size member. AC_CACHE_CHECK([for 64-bit st_size], [gl_cv_member_st_size_64], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include struct stat buf; int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; ]], [[]])], [gl_cv_member_st_size_64=yes], [gl_cv_member_st_size_64=no]) ]) if test $gl_cv_member_st_size_64 = no; then WINDOWS_64_BIT_ST_SIZE=1 else WINDOWS_64_BIT_ST_SIZE=0 fi ;; *) dnl Nothing to do on gnulib's side. dnl A 64-bit off_t is dnl - already the default on Mac OS X, FreeBSD, NetBSD, OpenBSD, IRIX, dnl OSF/1, Cygwin, dnl - enabled by _FILE_OFFSET_BITS=64 (ensured by AC_SYS_LARGEFILE) on dnl glibc, HP-UX, Solaris, dnl - enabled by _LARGE_FILES=1 (ensured by AC_SYS_LARGEFILE) on AIX, dnl - impossible to achieve on Minix 3.1.8. WINDOWS_64_BIT_OFF_T=0 WINDOWS_64_BIT_ST_SIZE=0 ;; esac ]) recode-3.7.15/m4/wchar_h.m40000644000175000017500000002577714371444255010761 dnl A placeholder for ISO C99 , for platforms that have issues. dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Eric Blake. # wchar_h.m4 serial 56 AC_DEFUN_ONCE([gl_WCHAR_H], [ AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) AC_REQUIRE([gl_WCHAR_H_INLINE_OK]) dnl Prepare for creating substitute . dnl Check for (missing in Linux uClibc when built without wide dnl character support). dnl is always overridden, because of GNULIB_POSIXCHECK. gl_CHECK_NEXT_HEADERS([wchar.h]) if test $ac_cv_header_wchar_h = yes; then HAVE_WCHAR_H=1 else HAVE_WCHAR_H=0 fi AC_SUBST([HAVE_WCHAR_H]) AC_REQUIRE([gl_FEATURES_H]) AC_REQUIRE([gt_TYPE_WINT_T]) if test $gt_cv_c_wint_t = yes; then HAVE_WINT_T=1 else HAVE_WINT_T=0 fi AC_SUBST([HAVE_WINT_T]) AC_REQUIRE([gl_TYPE_WINT_T_PREREQ]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ #include ]], [btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb wcsrtombs wcsnrtombs wcwidth wmemchr wmemcmp wmemcpy wmemmove wmempcpy wmemset wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat wcscmp wcsncmp wcscasecmp wcsncasecmp wcscoll wcsxfrm wcsdup wcschr wcsrchr wcscspn wcsspn wcspbrk wcsstr wcstok wcswidth wcsftime ]) AC_REQUIRE([AC_C_RESTRICT]) AC_CHECK_DECLS([wcsdup], [], [], [[ #include ]]) if test $ac_cv_have_decl_wcsdup = no; then HAVE_DECL_WCSDUP=0 fi ]) dnl Check whether is usable at all. AC_DEFUN([gl_WCHAR_H_INLINE_OK], [ dnl Test whether suffers due to the transition from '__inline' to dnl 'gnu_inline'. See dnl and . In summary, dnl glibc version 2.5 or older, together with gcc version 4.3 or newer and dnl the option -std=c99 or -std=gnu99, leads to a broken . AC_REQUIRE([AC_CANONICAL_HOST]) AC_CACHE_CHECK([whether uses 'inline' correctly], [gl_cv_header_wchar_h_correct_inline], [gl_cv_header_wchar_h_correct_inline=yes case "$host_os" in *-gnu* | gnu*) AC_LANG_CONFTEST([ AC_LANG_SOURCE([[ #define wcstod renamed_wcstod #include extern int zero (void); int main () { return zero(); } ]])]) dnl Do not rename the object file from conftest.$ac_objext to dnl conftest1.$ac_objext, as this will cause the link to fail on dnl z/OS when using the XPLINK object format (due to duplicate dnl CSECT names). Instead, temporarily redefine $ac_compile so dnl that the object file has the latter name from the start. save_ac_compile="$ac_compile" ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest1/` if echo '#include "conftest.c"' >conftest1.c \ && AC_TRY_EVAL([ac_compile]); then AC_LANG_CONFTEST([ AC_LANG_SOURCE([[ #define wcstod renamed_wcstod #include int zero (void) { return 0; } ]])]) dnl See note above about renaming object files. ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest2/` if echo '#include "conftest.c"' >conftest2.c \ && AC_TRY_EVAL([ac_compile]); then if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&AS_MESSAGE_LOG_FD 2>&1; then : else gl_cv_header_wchar_h_correct_inline=no fi fi fi ac_compile="$save_ac_compile" rm -f conftest[12].c conftest[12].$ac_objext conftest$ac_exeext ;; esac ]) if test $gl_cv_header_wchar_h_correct_inline = no; then AC_MSG_ERROR([ cannot be used with this compiler ($CC $CFLAGS $CPPFLAGS). This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in C99 mode. You have four options: - Add the flag -fgnu89-inline to CC and reconfigure, or - Fix your include files, using parts of , or - Use a gcc version older than 4.3, or - Don't use the flags -std=c99 or -std=gnu99. Configuration aborted.]) fi ]) # gl_WCHAR_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_WCHAR_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_WCHAR_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_WCHAR_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_WCHAR_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_BTOWC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTOB]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSINIT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRTOWC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRLEN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSRTOWCS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNRTOWCS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCRTOMB]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSRTOMBS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNRTOMBS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCWIDTH]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCHR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCMP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCPY]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMMOVE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMPCPY]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMSET]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSLEN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNLEN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCPY]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCPCPY]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCPY]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCPNCPY]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCAT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCMP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCMP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCASECMP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCASECMP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCOLL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSXFRM]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSDUP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCHR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSRCHR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCSPN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSSPN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSPBRK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSSTR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSTOK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSWIDTH]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSFTIME]) dnl Support Microsoft deprecated alias function names by default. gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_WCSDUP], [1]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_WCHAR_H_MODULE_INDICATOR_DEFAULTS]) dnl Make sure the shell variable for GNULIB_FREE_POSIX is initialized. gl_STDLIB_H_REQUIRE_DEFAULTS AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) ]) AC_DEFUN([gl_WCHAR_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. HAVE_BTOWC=1; AC_SUBST([HAVE_BTOWC]) HAVE_MBSINIT=1; AC_SUBST([HAVE_MBSINIT]) HAVE_MBRTOWC=1; AC_SUBST([HAVE_MBRTOWC]) HAVE_MBRLEN=1; AC_SUBST([HAVE_MBRLEN]) HAVE_MBSRTOWCS=1; AC_SUBST([HAVE_MBSRTOWCS]) HAVE_MBSNRTOWCS=1; AC_SUBST([HAVE_MBSNRTOWCS]) HAVE_WCRTOMB=1; AC_SUBST([HAVE_WCRTOMB]) HAVE_WCSRTOMBS=1; AC_SUBST([HAVE_WCSRTOMBS]) HAVE_WCSNRTOMBS=1; AC_SUBST([HAVE_WCSNRTOMBS]) HAVE_WMEMCHR=1; AC_SUBST([HAVE_WMEMCHR]) HAVE_WMEMCMP=1; AC_SUBST([HAVE_WMEMCMP]) HAVE_WMEMCPY=1; AC_SUBST([HAVE_WMEMCPY]) HAVE_WMEMMOVE=1; AC_SUBST([HAVE_WMEMMOVE]) HAVE_WMEMPCPY=1; AC_SUBST([HAVE_WMEMPCPY]) HAVE_WMEMSET=1; AC_SUBST([HAVE_WMEMSET]) HAVE_WCSLEN=1; AC_SUBST([HAVE_WCSLEN]) HAVE_WCSNLEN=1; AC_SUBST([HAVE_WCSNLEN]) HAVE_WCSCPY=1; AC_SUBST([HAVE_WCSCPY]) HAVE_WCPCPY=1; AC_SUBST([HAVE_WCPCPY]) HAVE_WCSNCPY=1; AC_SUBST([HAVE_WCSNCPY]) HAVE_WCPNCPY=1; AC_SUBST([HAVE_WCPNCPY]) HAVE_WCSCAT=1; AC_SUBST([HAVE_WCSCAT]) HAVE_WCSNCAT=1; AC_SUBST([HAVE_WCSNCAT]) HAVE_WCSCMP=1; AC_SUBST([HAVE_WCSCMP]) HAVE_WCSNCMP=1; AC_SUBST([HAVE_WCSNCMP]) HAVE_WCSCASECMP=1; AC_SUBST([HAVE_WCSCASECMP]) HAVE_WCSNCASECMP=1; AC_SUBST([HAVE_WCSNCASECMP]) HAVE_WCSCOLL=1; AC_SUBST([HAVE_WCSCOLL]) HAVE_WCSXFRM=1; AC_SUBST([HAVE_WCSXFRM]) HAVE_WCSDUP=1; AC_SUBST([HAVE_WCSDUP]) HAVE_WCSCHR=1; AC_SUBST([HAVE_WCSCHR]) HAVE_WCSRCHR=1; AC_SUBST([HAVE_WCSRCHR]) HAVE_WCSCSPN=1; AC_SUBST([HAVE_WCSCSPN]) HAVE_WCSSPN=1; AC_SUBST([HAVE_WCSSPN]) HAVE_WCSPBRK=1; AC_SUBST([HAVE_WCSPBRK]) HAVE_WCSSTR=1; AC_SUBST([HAVE_WCSSTR]) HAVE_WCSTOK=1; AC_SUBST([HAVE_WCSTOK]) HAVE_WCSWIDTH=1; AC_SUBST([HAVE_WCSWIDTH]) HAVE_WCSFTIME=1; AC_SUBST([HAVE_WCSFTIME]) HAVE_DECL_WCTOB=1; AC_SUBST([HAVE_DECL_WCTOB]) HAVE_DECL_WCSDUP=1; AC_SUBST([HAVE_DECL_WCSDUP]) HAVE_DECL_WCWIDTH=1; AC_SUBST([HAVE_DECL_WCWIDTH]) REPLACE_MBSTATE_T=0; AC_SUBST([REPLACE_MBSTATE_T]) REPLACE_BTOWC=0; AC_SUBST([REPLACE_BTOWC]) REPLACE_WCTOB=0; AC_SUBST([REPLACE_WCTOB]) REPLACE_MBSINIT=0; AC_SUBST([REPLACE_MBSINIT]) REPLACE_MBRTOWC=0; AC_SUBST([REPLACE_MBRTOWC]) REPLACE_MBRLEN=0; AC_SUBST([REPLACE_MBRLEN]) REPLACE_MBSRTOWCS=0; AC_SUBST([REPLACE_MBSRTOWCS]) REPLACE_MBSNRTOWCS=0; AC_SUBST([REPLACE_MBSNRTOWCS]) REPLACE_WCRTOMB=0; AC_SUBST([REPLACE_WCRTOMB]) REPLACE_WCSRTOMBS=0; AC_SUBST([REPLACE_WCSRTOMBS]) REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS]) REPLACE_WCWIDTH=0; AC_SUBST([REPLACE_WCWIDTH]) REPLACE_WCSWIDTH=0; AC_SUBST([REPLACE_WCSWIDTH]) REPLACE_WCSFTIME=0; AC_SUBST([REPLACE_WCSFTIME]) REPLACE_WCSTOK=0; AC_SUBST([REPLACE_WCSTOK]) REPLACE_WMEMPCPY=0; AC_SUBST([REPLACE_WMEMPCPY]) ]) recode-3.7.15/m4/mbsinit.m40000644000175000017500000000240114371444255010766 # mbsinit.m4 serial 9 dnl Copyright (C) 2008, 2010-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_MBSINIT], [ AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_TYPE_MBSTATE_T]) gl_MBSTATE_T_BROKEN AC_CHECK_FUNCS_ONCE([mbsinit]) if test $ac_cv_func_mbsinit = no; then HAVE_MBSINIT=0 AC_CHECK_DECLS([mbsinit],,, [[ #include ]]) if test $ac_cv_have_decl_mbsinit = yes; then dnl On Minix 3.1.8, the system's declares mbsinit() although dnl it does not have the function. Avoid a collision with gnulib's dnl replacement. REPLACE_MBSINIT=1 fi else if test $REPLACE_MBSTATE_T = 1; then REPLACE_MBSINIT=1 else dnl On mingw, mbsinit() always returns 1, which is inappropriate for dnl states produced by mbrtowc() for an incomplete multibyte character dnl in multibyte locales. case "$host_os" in mingw*) REPLACE_MBSINIT=1 ;; esac fi fi ]) # Prerequisites of lib/mbsinit.c. AC_DEFUN([gl_PREREQ_MBSINIT], [ : ]) recode-3.7.15/m4/raise.m40000644000175000017500000000177114371444255010435 # raise.m4 serial 4 dnl Copyright (C) 2011-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_RAISE], [ AC_REQUIRE([gl_SIGNAL_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_CHECK_FUNCS([raise]) if test $ac_cv_func_raise = no; then HAVE_RAISE=0 else m4_ifdef([gl_MSVC_INVAL], [ AC_REQUIRE([gl_MSVC_INVAL]) if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then REPLACE_RAISE=1 fi ]) m4_ifdef([gl_SIGNALBLOCKING], [ gl_SIGNALBLOCKING if test $HAVE_POSIX_SIGNALBLOCKING = 0; then m4_ifdef([gl_SIGNAL_SIGPIPE], [ gl_SIGNAL_SIGPIPE if test $gl_cv_header_signal_h_SIGPIPE != yes; then REPLACE_RAISE=1 fi ], [:]) fi ]) fi ]) # Prerequisites of lib/raise.c. AC_DEFUN([gl_PREREQ_RAISE], [:]) recode-3.7.15/m4/sigaction.m40000644000175000017500000000232514371444255011306 # sigaction.m4 serial 7 dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Determine if sigaction interface is present. AC_DEFUN([gl_SIGACTION], [ AC_REQUIRE([gl_SIGNAL_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([sigaction]) if test $ac_cv_func_sigaction = yes; then AC_CHECK_MEMBERS([struct sigaction.sa_sigaction], , , [[#include ]]) if test $ac_cv_member_struct_sigaction_sa_sigaction = no; then HAVE_STRUCT_SIGACTION_SA_SIGACTION=0 fi else HAVE_SIGACTION=0 fi ]) # Prerequisites of the part of lib/signal.in.h and of lib/sigaction.c. AC_DEFUN([gl_PREREQ_SIGACTION], [ AC_REQUIRE([gl_SIGNAL_H_DEFAULTS]) AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([AC_TYPE_UID_T]) AC_REQUIRE([gl_PREREQ_SIG_HANDLER_H]) AC_CHECK_FUNCS_ONCE([sigaltstack siginterrupt]) AC_CHECK_TYPES([siginfo_t], [], [], [[ #include ]]) if test $ac_cv_type_siginfo_t = no; then HAVE_SIGINFO_T=0 fi ]) # Prerequisites of lib/sig-handler.h. AC_DEFUN([gl_PREREQ_SIG_HANDLER_H], [:]) recode-3.7.15/m4/frexpl.m40000644000175000017500000001573514371444255010637 # frexpl.m4 serial 22 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FREXPL], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) dnl Persuade glibc to declare frexpl(). AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) dnl Check whether it's declared. dnl Mac OS X 10.3 has frexpl() in libc but doesn't declare it in . AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include ]]) FREXPL_LIBM= if test $HAVE_DECL_FREXPL = 1; then gl_CHECK_FREXPL_NO_LIBM if test $gl_cv_func_frexpl_no_libm = no; then AC_CACHE_CHECK([whether frexpl() can be used with libm], [gl_cv_func_frexpl_in_libm], [ save_LIBS="$LIBS" LIBS="$LIBS -lm" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include long double x;]], [[int e; return frexpl (x, &e) > 0;]])], [gl_cv_func_frexpl_in_libm=yes], [gl_cv_func_frexpl_in_libm=no]) LIBS="$save_LIBS" ]) if test $gl_cv_func_frexpl_in_libm = yes; then FREXPL_LIBM=-lm fi fi if test $gl_cv_func_frexpl_no_libm = yes \ || test $gl_cv_func_frexpl_in_libm = yes; then save_LIBS="$LIBS" LIBS="$LIBS $FREXPL_LIBM" gl_FUNC_FREXPL_WORKS LIBS="$save_LIBS" case "$gl_cv_func_frexpl_works" in *yes) gl_func_frexpl=yes ;; *) gl_func_frexpl=no; REPLACE_FREXPL=1 ;; esac else gl_func_frexpl=no fi if test $gl_func_frexpl = yes; then AC_DEFINE([HAVE_FREXPL], [1], [Define if the frexpl() function is available.]) fi fi if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl = no; then dnl Find libraries needed to link lib/frexpl.c. if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then AC_REQUIRE([gl_FUNC_FREXP]) FREXPL_LIBM="$FREXP_LIBM" else FREXPL_LIBM= fi fi AC_SUBST([FREXPL_LIBM]) ]) AC_DEFUN([gl_FUNC_FREXPL_NO_LIBM], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) dnl Check whether it's declared. dnl Mac OS X 10.3 has frexpl() in libc but doesn't declare it in . AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include ]]) if test $HAVE_DECL_FREXPL = 1; then gl_CHECK_FREXPL_NO_LIBM if test $gl_cv_func_frexpl_no_libm = yes; then gl_FUNC_FREXPL_WORKS case "$gl_cv_func_frexpl_works" in *yes) gl_func_frexpl_no_libm=yes ;; *) gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;; esac else gl_func_frexpl_no_libm=no dnl Set REPLACE_FREXPL here because the system may have frexpl in libm. REPLACE_FREXPL=1 fi if test $gl_func_frexpl_no_libm = yes; then AC_DEFINE([HAVE_FREXPL_IN_LIBC], [1], [Define if the frexpl() function is available in libc.]) fi fi ]) dnl Test whether frexpl() can be used without linking with libm. dnl Set gl_cv_func_frexpl_no_libm to 'yes' or 'no' accordingly. AC_DEFUN([gl_CHECK_FREXPL_NO_LIBM], [ AC_CACHE_CHECK([whether frexpl() can be used without linking with libm], [gl_cv_func_frexpl_no_libm], [ AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include long double x;]], [[int e; return frexpl (x, &e) > 0;]])], [gl_cv_func_frexpl_no_libm=yes], [gl_cv_func_frexpl_no_libm=no]) ]) ]) dnl Test whether frexpl() works on finite numbers (this fails on dnl Mac OS X 10.4/PowerPC, on AIX 5.1, and on BeOS), on denormalized numbers dnl (this fails on Mac OS X 10.5/i386), and also on infinite numbers (this dnl fails e.g. on IRIX 6.5 and mingw). AC_DEFUN([gl_FUNC_FREXPL_WORKS], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether frexpl works], [gl_cv_func_frexpl_works], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include /* Override the values of , like done in float.in.h. */ #if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__) # undef LDBL_MIN_EXP # define LDBL_MIN_EXP (-16381) #endif #if defined __i386__ && (defined __FreeBSD__ || defined __DragonFly__) # undef LDBL_MIN_EXP # define LDBL_MIN_EXP (-16381) #endif #if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__ # undef LDBL_MIN_EXP # define LDBL_MIN_EXP DBL_MIN_EXP #endif #if defined __sgi && (LDBL_MANT_DIG >= 106) # if defined __GNUC__ # undef LDBL_MIN_EXP # define LDBL_MIN_EXP DBL_MIN_EXP # endif #endif extern #ifdef __cplusplus "C" #endif long double frexpl (long double, int *); long double zero = 0.0L; int main() { int result = 0; volatile long double x; /* Test on finite numbers that fails on AIX 5.1. */ x = 16.0L; { int exp = -9999; frexpl (x, &exp); if (exp != 5) result |= 1; } /* Test on finite numbers that fails on Mac OS X 10.4, because its frexpl function returns an invalid (incorrectly normalized) value: it returns y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 } but the correct result is 0.505L = { 0x3fe028f5, 0xc28f5c29, 0xbc547ae1, 0x47ae1480 } */ x = 1.01L; { int exp = -9999; long double y = frexpl (x, &exp); if (!(exp == 1 && y == 0.505L)) result |= 2; } /* Test on large finite numbers. This fails on BeOS at i = 16322, while LDBL_MAX_EXP = 16384. In the loop end test, we test x against Infinity, rather than comparing i with LDBL_MAX_EXP, because BeOS has a wrong LDBL_MAX_EXP. */ { int i; for (i = 1, x = 1.0L; x != x + x; i++, x *= 2.0L) { int exp = -9999; frexpl (x, &exp); if (exp != i) { result |= 4; break; } } } /* Test on denormalized numbers. */ { int i; for (i = 1, x = 1.0L; i >= LDBL_MIN_EXP; i--, x *= 0.5L) ; if (x > 0.0L) { int exp; long double y = frexpl (x, &exp); /* On machines with IEEE854 arithmetic: x = 1.68105e-4932, exp = -16382, y = 0.5. On Mac OS X 10.5: exp = -16384, y = 0.5. */ if (exp != LDBL_MIN_EXP - 1) result |= 8; } } /* Test on infinite numbers. */ /* The Microsoft MSVC 14 compiler chokes on the expression 1.0 / 0.0. */ x = 1.0L / zero; { int exp; long double y = frexpl (x, &exp); if (y != x) result |= 16; } return result; }]])], [gl_cv_func_frexpl_works=yes], [gl_cv_func_frexpl_works=no], [ changequote(,)dnl case "$host_os" in aix | aix[3-6]* | beos* | darwin* | irix* | mingw* | pw*) gl_cv_func_frexpl_works="guessing no";; *) gl_cv_func_frexpl_works="guessing yes";; esac changequote([,])dnl ]) ]) ]) recode-3.7.15/m4/ssize_t.m40000644000175000017500000000146314371444255011010 # ssize_t.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2001-2003, 2006, 2010-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Test whether ssize_t is defined. AC_DEFUN([gt_TYPE_SSIZE_T], [ AC_CACHE_CHECK([for ssize_t], [gt_cv_ssize_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[int x = sizeof (ssize_t *) + sizeof (ssize_t); return !x;]])], [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])]) if test $gt_cv_ssize_t = no; then AC_DEFINE([ssize_t], [int], [Define as a signed type of the same size as size_t.]) fi ]) recode-3.7.15/m4/error_h.m40000644000175000017500000000735514371444255010776 # error_h.m4 serial 2 dnl Copyright (C) 1996-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Provide a working "error.h". AC_DEFUN_ONCE([gl_ERROR_H], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles REPLACE_ERROR=0 gl_CHECK_FUNCS_ANDROID([error], [[#include ]]) if test $ac_cv_func_error = yes; then HAVE_ERROR=1 else HAVE_ERROR=0 case "$gl_cv_onwards_func_error" in future*) REPLACE_ERROR=1 ;; esac fi dnl We don't use AC_FUNC_ERROR_AT_LINE any more, because it is no longer dnl maintained in Autoconf and because it invokes AC_LIBOBJ. dnl We need to notice a missing declaration, like gl_CHECK_FUNCS_ANDROID does. AC_CHECK_DECL([error_at_line], , , [[#include ]]) if test $ac_cv_have_decl_error_at_line = yes; then AC_CACHE_CHECK([for error_at_line], [ac_cv_lib_error_at_line], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[error_at_line (0, 0, "", 0, "an error occurred");]])], [ac_cv_lib_error_at_line=yes], [ac_cv_lib_error_at_line=no])]) else ac_cv_lib_error_at_line=no fi if test $ac_cv_lib_error_at_line = yes; then HAVE_ERROR_AT_LINE=1 else HAVE_ERROR_AT_LINE=0 fi REPLACE_ERROR_AT_LINE=0 if test $ac_cv_func_error = yes && test $ac_cv_lib_error_at_line = yes; then dnl On Android 11, when error_print_progname is set, the output of the dnl error() function contains an extra space. AC_CACHE_CHECK([for working error function], [gl_cv_func_working_error], [if test $cross_compiling != yes; then AC_LINK_IFELSE( [AC_LANG_PROGRAM([[ #include static void print_no_progname (void) {} ]], [[ error_print_progname = print_no_progname; error (0, 0, "foo"); ]]) ], [rm -f conftest.out if test -s conftest$ac_exeext \ && ./conftest$ac_exeext 2> conftest.out; then if grep ' ' conftest.out >/dev/null; then gl_cv_func_working_error=no else gl_cv_func_working_error=yes fi else gl_cv_func_working_error=no fi rm -f conftest.out ], [gl_cv_func_working_error=no]) else AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ #include ]], [[ error (0, 0, "foo"); ]]) ], [case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_working_error="guessing yes" ;; # Guess no on Android. linux*-android*) gl_cv_func_working_error="guessing no" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_working_error="$gl_cross_guess_normal" ;; esac ], [gl_cv_func_working_error=no]) fi ]) case "$gl_cv_func_working_error" in *no) REPLACE_ERROR=1 REPLACE_ERROR_AT_LINE=1 ;; esac fi if test $HAVE_ERROR = 0 || test $REPLACE_ERROR = 1 \ || test $HAVE_ERROR_AT_LINE = 0 || test $REPLACE_ERROR_AT_LINE = 1; then dnl Provide a substitute file. GL_GENERATE_ERROR_H=true else GL_GENERATE_ERROR_H=false fi AC_SUBST([HAVE_ERROR]) AC_SUBST([HAVE_ERROR_AT_LINE]) AC_SUBST([REPLACE_ERROR]) AC_SUBST([REPLACE_ERROR_AT_LINE]) ]) recode-3.7.15/m4/signbit.m40000644000175000017500000003105714371444255010771 # signbit.m4 serial 20 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_SIGNBIT], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_CACHE_CHECK([for signbit macro], [gl_cv_func_signbit], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include /* If signbit is defined as a function, don't use it, since calling it for 'float' or 'long double' arguments would involve conversions. If signbit is not declared at all but exists as a library function, don't use it, since the prototype may not match. If signbit is not declared at all but exists as a compiler built-in, don't use it, since it's preferable to use __builtin_signbit* (no warnings, no conversions). */ #ifndef signbit # error "signbit should be a macro" #endif #include ]gl_SIGNBIT_TEST_PROGRAM ])], [gl_cv_func_signbit=yes], [gl_cv_func_signbit=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_signbit="guessing yes" ;; # Guess yes on musl systems. *-musl*) gl_cv_func_signbit="guessing yes" ;; # Guess yes on native Windows. mingw*) gl_cv_func_signbit="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_signbit="$gl_cross_guess_normal" ;; esac ]) ]) dnl GCC >= 4.0 and clang provide three built-ins for signbit. dnl They can be used without warnings, also in C++, regardless of . dnl But they may expand to calls to functions, which may or may not be in dnl libc. AC_CACHE_CHECK([for signbit compiler built-ins], [gl_cv_func_signbit_builtins], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #if (__GNUC__ >= 4) || (__clang_major__ >= 4) # define signbit(x) \ (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \ sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \ __builtin_signbitf (x)) #else # error "signbit should be three compiler built-ins" #endif #include ]gl_SIGNBIT_TEST_PROGRAM ])], [gl_cv_func_signbit_builtins=yes], [gl_cv_func_signbit_builtins=no], [case "$host_os" in # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_signbit_builtins="guessing yes" ;; # Guess yes on musl systems. *-musl*) gl_cv_func_signbit_builtins="guessing yes" ;; # Guess yes on mingw, no on MSVC. mingw*) if test -n "$GCC"; then gl_cv_func_signbit_builtins="guessing yes" else gl_cv_func_signbit_builtins="guessing no" fi ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_signbit_builtins="$gl_cross_guess_normal" ;; esac ]) ]) dnl Use the compiler built-ins whenever possible, because they are more dnl efficient than the system library functions (if they exist). case "$gl_cv_func_signbit_builtins" in *yes) REPLACE_SIGNBIT_USING_BUILTINS=1 ;; *) case "$gl_cv_func_signbit" in *yes) ;; *) dnl REPLACE_SIGNBIT=1 makes sure the signbit[fdl] functions get built. REPLACE_SIGNBIT=1 ;; esac ;; esac dnl On Solaris 10, with CC in C++ mode, signbit is not available although dnl is with cc in C mode. This cannot be worked around by defining dnl _XOPEN_SOURCE=600, because the latter does not work in C++ mode on dnl Solaris 11.0. Therefore use the replacement functions on Solaris. case "$host_os" in solaris*) REPLACE_SIGNBIT=1 ;; esac if test $REPLACE_SIGNBIT = 1; then gl_FLOAT_SIGN_LOCATION gl_DOUBLE_SIGN_LOCATION gl_LONG_DOUBLE_SIGN_LOCATION if test "$gl_cv_cc_float_signbit" = unknown; then dnl Test whether copysignf() is declared. AC_CHECK_DECLS([copysignf], , , [[#include ]]) if test "$ac_cv_have_decl_copysignf" = yes; then dnl Test whether copysignf() can be used without libm. AC_CACHE_CHECK([whether copysignf can be used without linking with libm], [gl_cv_func_copysignf_no_libm], [ AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include float x, y;]], [[return copysignf (x, y) < 0;]])], [gl_cv_func_copysignf_no_libm=yes], [gl_cv_func_copysignf_no_libm=no]) ]) if test $gl_cv_func_copysignf_no_libm = yes; then AC_DEFINE([HAVE_COPYSIGNF_IN_LIBC], [1], [Define if the copysignf function is declared in and available in libc.]) fi fi fi if test "$gl_cv_cc_double_signbit" = unknown; then dnl Test whether copysign() is declared. AC_CHECK_DECLS([copysign], , , [[#include ]]) if test "$ac_cv_have_decl_copysign" = yes; then dnl Test whether copysign() can be used without libm. AC_CACHE_CHECK([whether copysign can be used without linking with libm], [gl_cv_func_copysign_no_libm], [ AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include double x, y;]], [[return copysign (x, y) < 0;]])], [gl_cv_func_copysign_no_libm=yes], [gl_cv_func_copysign_no_libm=no]) ]) if test $gl_cv_func_copysign_no_libm = yes; then AC_DEFINE([HAVE_COPYSIGN_IN_LIBC], [1], [Define if the copysign function is declared in and available in libc.]) fi fi fi if test "$gl_cv_cc_long_double_signbit" = unknown; then dnl Test whether copysignl() is declared. AC_CHECK_DECLS([copysignl], , , [[#include ]]) if test "$ac_cv_have_decl_copysignl" = yes; then dnl Test whether copysignl() can be used without libm. AC_CACHE_CHECK([whether copysignl can be used without linking with libm], [gl_cv_func_copysignl_no_libm], [ AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include long double x, y;]], [[return copysignl (x, y) < 0;]])], [gl_cv_func_copysignl_no_libm=yes], [gl_cv_func_copysignl_no_libm=no]) ]) if test $gl_cv_func_copysignl_no_libm = yes; then AC_DEFINE([HAVE_COPYSIGNL_IN_LIBC], [1], [Define if the copysignl function is declared in and available in libc.]) fi fi fi fi ]) AC_DEFUN([gl_SIGNBIT_TEST_PROGRAM], [[ /* Global variables. Needed because GCC 4 constant-folds __builtin_signbitl (literal) but cannot constant-fold __builtin_signbitl (variable). */ float vf; double vd; long double vl; int main () { /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. So we use -p0f and -p0d instead. */ float p0f = 0.0f; float m0f = -p0f; double p0d = 0.0; double m0d = -p0d; /* On HP-UX 10.20, negating 0.0L does not yield -0.0L. So we use another constant expression instead. But that expression does not work on other platforms, such as when cross-compiling to PowerPC on Mac OS X 10.5. */ long double p0l = 0.0L; #if defined __hpux || defined __sgi long double m0l = -LDBL_MIN * LDBL_MIN; #else long double m0l = -p0l; #endif int result = 0; if (signbit (vf)) /* link check */ vf++; { float plus_inf = 1.0f / p0f; float minus_inf = -1.0f / p0f; if (!(!signbit (255.0f) && signbit (-255.0f) && !signbit (p0f) && (memcmp (&m0f, &p0f, sizeof (float)) == 0 || signbit (m0f)) && !signbit (plus_inf) && signbit (minus_inf))) result |= 1; } if (signbit (vd)) /* link check */ vd++; { double plus_inf = 1.0 / p0d; double minus_inf = -1.0 / p0d; if (!(!signbit (255.0) && signbit (-255.0) && !signbit (p0d) && (memcmp (&m0d, &p0d, sizeof (double)) == 0 || signbit (m0d)) && !signbit (plus_inf) && signbit (minus_inf))) result |= 2; } if (signbit (vl)) /* link check */ vl++; { long double plus_inf = 1.0L / p0l; long double minus_inf = -1.0L / p0l; if (signbit (255.0L)) result |= 4; if (!signbit (-255.0L)) result |= 4; if (signbit (p0l)) result |= 8; if (!(memcmp (&m0l, &p0l, sizeof (long double)) == 0 || signbit (m0l))) result |= 16; if (signbit (plus_inf)) result |= 32; if (!signbit (minus_inf)) result |= 64; } return result; } ]]) AC_DEFUN([gl_FLOAT_SIGN_LOCATION], [ gl_FLOATTYPE_SIGN_LOCATION([float], [gl_cv_cc_float_signbit], [f], [FLT]) ]) AC_DEFUN([gl_DOUBLE_SIGN_LOCATION], [ gl_FLOATTYPE_SIGN_LOCATION([double], [gl_cv_cc_double_signbit], [], [DBL]) ]) AC_DEFUN([gl_LONG_DOUBLE_SIGN_LOCATION], [ gl_FLOATTYPE_SIGN_LOCATION([long double], [gl_cv_cc_long_double_signbit], [L], [LDBL]) ]) AC_DEFUN([gl_FLOATTYPE_SIGN_LOCATION], [ AC_CACHE_CHECK([where to find the sign bit in a '$1'], [$2], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #define NWORDS \ ((sizeof ($1) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { $1 value; unsigned int word[NWORDS]; } memory_float; static memory_float plus = { 1.0$3 }; static memory_float minus = { -1.0$3 }; int main () { size_t j, k, i; unsigned int m; FILE *fp = fopen ("conftest.out", "w"); if (fp == NULL) return 1; /* Find the different bit. */ k = 0; m = 0; for (j = 0; j < NWORDS; j++) { unsigned int x = plus.word[j] ^ minus.word[j]; if ((x & (x - 1)) || (x && m)) { /* More than one bit difference. */ fprintf (fp, "unknown"); fclose (fp); return 2; } if (x) { k = j; m = x; } } if (m == 0) { /* No difference. */ fprintf (fp, "unknown"); fclose (fp); return 3; } /* Now m = plus.word[k] ^ ~minus.word[k]. */ if (plus.word[k] & ~minus.word[k]) { /* Oh? The sign bit is set in the positive and cleared in the negative numbers? */ fprintf (fp, "unknown"); fclose (fp); return 4; } for (i = 0; ; i++) if ((m >> i) & 1) break; fprintf (fp, "word %d bit %d", (int) k, (int) i); if (fclose (fp) != 0) return 5; return 0; } ]])], [$2=`cat conftest.out`], [$2="unknown"], [ dnl When cross-compiling, we don't know. It depends on the dnl ABI and compiler version. There are too many cases. $2="unknown" ]) rm -f conftest.out ]) case "$]$2[" in word*bit*) word=`echo "$]$2[" | sed -e 's/word //' -e 's/ bit.*//'` bit=`echo "$]$2[" | sed -e 's/word.*bit //'` AC_DEFINE_UNQUOTED([$4][_SIGNBIT_WORD], [$word], [Define as the word index where to find the sign of '$1'.]) AC_DEFINE_UNQUOTED([$4][_SIGNBIT_BIT], [$bit], [Define as the bit index in the word where to find the sign of '$1'.]) ;; esac ]) # Expands to code that defines a function signbitf(float). # It extracts the sign bit of a non-NaN value. AC_DEFUN([gl_FLOAT_SIGNBIT_CODE], [ gl_FLOATTYPE_SIGNBIT_CODE([float], [f], [f]) ]) # Expands to code that defines a function signbitd(double). # It extracts the sign bit of a non-NaN value. AC_DEFUN([gl_DOUBLE_SIGNBIT_CODE], [ gl_FLOATTYPE_SIGNBIT_CODE([double], [d], []) ]) # Expands to code that defines a function signbitl(long double). # It extracts the sign bit of a non-NaN value. AC_DEFUN([gl_LONG_DOUBLE_SIGNBIT_CODE], [ gl_FLOATTYPE_SIGNBIT_CODE([long double], [l], [L]) ]) AC_DEFUN([gl_FLOATTYPE_SIGNBIT_CODE], [[ static int signbit$2 ($1 value) { typedef union { $1 f; unsigned char b[sizeof ($1)]; } float_union; static float_union plus_one = { 1.0$3 }; /* unused bits are zero here */ static float_union minus_one = { -1.0$3 }; /* unused bits are zero here */ /* Compute the sign bit mask as the XOR of plus_one and minus_one. */ float_union u; unsigned int i; u.f = value; for (i = 0; i < sizeof ($1); i++) if (u.b[i] & (plus_one.b[i] ^ minus_one.b[i])) return 1; return 0; } ]]) recode-3.7.15/m4/alloca.m40000644000175000017500000000731214371444255010562 # alloca.m4 serial 21 dnl Copyright (C) 2002-2004, 2006-2007, 2009-2023 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_ALLOCA], [ AC_REQUIRE([AC_FUNC_ALLOCA]) if test $ac_cv_func_alloca_works = no; then gl_PREREQ_ALLOCA fi # Define an additional variable used in the Makefile substitution. if test $ac_cv_working_alloca_h = yes; then AC_CACHE_CHECK([for alloca as a compiler built-in], [gl_cv_rpl_alloca], [ AC_EGREP_CPP([Need own alloca], [ #if defined __GNUC__ || defined _AIX || defined _MSC_VER Need own alloca #endif ], [gl_cv_rpl_alloca=yes], [gl_cv_rpl_alloca=no]) ]) if test $gl_cv_rpl_alloca = yes; then dnl OK, alloca can be implemented through a compiler built-in. AC_DEFINE([HAVE_ALLOCA], [1], [Define to 1 if you have 'alloca' after including , a header that may be supplied by this distribution.]) GL_GENERATE_ALLOCA_H=true else dnl alloca exists as a library function, i.e. it is slow and probably dnl a memory leak. Don't define HAVE_ALLOCA in this case. GL_GENERATE_ALLOCA_H=false fi else GL_GENERATE_ALLOCA_H=true fi if test $ac_cv_working_alloca_h = yes; then HAVE_ALLOCA_H=1 else HAVE_ALLOCA_H=0 fi AC_SUBST([HAVE_ALLOCA_H]) ]) # Prerequisites of lib/alloca.c. # STACK_DIRECTION is already handled by AC_FUNC_ALLOCA. AC_DEFUN([gl_PREREQ_ALLOCA], [:]) m4_version_prereq([2.70], [], [ # This works around a bug in autoconf <= 2.68 and has simplifications # from 2.70. See: # https://lists.gnu.org/r/bug-gnulib/2011-06/msg00277.html # https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=6cd9f12520b0d6f76d3230d7565feba1ecf29497 # https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=15edf7fd8094fd14a89d9891dd72a9624762597a # _AC_LIBOBJ_ALLOCA # ----------------- # Set up the LIBOBJ replacement of 'alloca'. Well, not exactly # AC_LIBOBJ since we actually set the output variable 'ALLOCA'. # Nevertheless, for Automake, AC_LIBSOURCES it. m4_define([_AC_LIBOBJ_ALLOCA], [# The SVR3 libPW and SVR4 libucb both contain incompatible functions # that cause trouble. Some versions do not even contain alloca or # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. AC_LIBSOURCES(alloca.c) AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])dnl AC_DEFINE(C_ALLOCA, 1, [Define to 1 if using 'alloca.c'.]) AC_CACHE_CHECK([stack direction for C alloca], [ac_cv_c_stack_direction], [AC_RUN_IFELSE([AC_LANG_SOURCE( [AC_INCLUDES_DEFAULT int find_stack_direction (int *addr, int depth) { int dir, dummy = 0; if (! addr) addr = &dummy; *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; dir = depth ? find_stack_direction (addr, depth - 1) : 0; return dir + dummy; } int main (int argc, char **argv) { return find_stack_direction (0, argc + !argv + 20) < 0; }])], [ac_cv_c_stack_direction=1], [ac_cv_c_stack_direction=-1], [ac_cv_c_stack_direction=0])]) AH_VERBATIM([STACK_DIRECTION], [/* 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 runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION])dnl AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction) ])# _AC_LIBOBJ_ALLOCA ]) recode-3.7.15/m4/lib-prefix.m40000644000175000017500000002764514371444255011403 # lib-prefix.m4 serial 20 dnl Copyright (C) 2001-2005, 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH([lib-prefix], [[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates dnl - a function acl_is_expected_elfclass, that tests whether standard input dn; has a 32-bit or 64-bit ELF header, depending on the host CPU ABI, dnl - 3 variables acl_libdirstem, acl_libdirstem2, acl_libdirstem3, containing dnl the basename of the libdir to try in turn, either "lib" or "lib64" or dnl "lib/64" or "lib32" or "lib/sparcv9" or "lib/amd64" or similar. AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ dnl There is no formal standard regarding lib, lib32, and lib64. dnl On most glibc systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. However, on dnl Arch Linux based distributions, it's the opposite: 32-bit libraries go dnl under $prefix/lib32 and 64-bit libraries go under $prefix/lib. dnl We determine the compiler's default mode by looking at the compiler's dnl library search path. If at least one of its elements ends in /lib64 or dnl points to a directory whose absolute pathname ends in /lib64, we use that dnl for 64-bit ABIs. Similarly for 32-bit ABIs. Otherwise we use the default, dnl namely "lib". dnl On Solaris systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT]) AC_CACHE_CHECK([for ELF binary format], [gl_cv_elf], [AC_EGREP_CPP([Extensible Linking Format], [#if defined __ELF__ || (defined __linux__ && defined __EDG__) Extensible Linking Format #endif ], [gl_cv_elf=yes], [gl_cv_elf=no]) ]) if test $gl_cv_elf = yes; then # Extract the ELF class of a file (5th byte) in decimal. # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header if od -A x < /dev/null >/dev/null 2>/dev/null; then # Use POSIX od. func_elfclass () { od -A n -t d1 -j 4 -N 1 } else # Use BSD hexdump. func_elfclass () { dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' echo } fi # Use 'expr', not 'test', to compare the values of func_elfclass, because on # Solaris 11 OpenIndiana and Solaris 11 OmniOS, the result is 001 or 002, # not 1 or 2. changequote(,)dnl case $HOST_CPU_C_ABI_32BIT in yes) # 32-bit ABI. acl_is_expected_elfclass () { expr "`func_elfclass | sed -e 's/[ ]//g'`" = 1 > /dev/null } ;; no) # 64-bit ABI. acl_is_expected_elfclass () { expr "`func_elfclass | sed -e 's/[ ]//g'`" = 2 > /dev/null } ;; *) # Unknown. acl_is_expected_elfclass () { : } ;; esac changequote([,])dnl else acl_is_expected_elfclass () { : } fi dnl Allow the user to override the result by setting acl_cv_libdirstems. AC_CACHE_CHECK([for the common suffixes of directories in the library search path], [acl_cv_libdirstems], [dnl Try 'lib' first, because that's the default for libdir in GNU, see dnl . acl_libdirstem=lib acl_libdirstem2= acl_libdirstem3= case "$host_os" in solaris*) dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment dnl . dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the dnl symlink is missing, so we set acl_libdirstem2 too. if test $HOST_CPU_C_ABI_32BIT = no; then acl_libdirstem2=lib/64 case "$host_cpu" in sparc*) acl_libdirstem3=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; esac fi ;; *) dnl If $CC generates code for a 32-bit ABI, the libraries are dnl surely under $prefix/lib or $prefix/lib32, not $prefix/lib64. dnl Similarly, if $CC generates code for a 64-bit ABI, the libraries dnl are surely under $prefix/lib or $prefix/lib64, not $prefix/lib32. dnl Find the compiler's search path. However, non-system compilers dnl sometimes have odd library search paths. But we can't simply invoke dnl '/usr/bin/gcc -print-search-dirs' because that would not take into dnl account the -m32/-m31 or -m64 options from the $CC or $CFLAGS. searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test $HOST_CPU_C_ABI_32BIT != no; then # 32-bit or unknown ABI. if test -d /usr/lib32; then acl_libdirstem2=lib32 fi fi if test $HOST_CPU_C_ABI_32BIT != yes; then # 64-bit or unknown ABI. if test -d /usr/lib64; then acl_libdirstem3=lib64 fi fi if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib32 ) acl_libdirstem2=lib32 ;; */lib64 ) acl_libdirstem3=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" if test $HOST_CPU_C_ABI_32BIT = yes; then # 32-bit ABI. acl_libdirstem3= fi if test $HOST_CPU_C_ABI_32BIT = no; then # 64-bit ABI. acl_libdirstem2= fi fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" ]) dnl Decompose acl_cv_libdirstems into acl_libdirstem, acl_libdirstem2, and dnl acl_libdirstem3. changequote(,)dnl acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` changequote([,])dnl ]) recode-3.7.15/m4/stdint_h.m40000644000175000017500000000174314371444255011145 # stdint_h.m4 serial 9 dnl Copyright (C) 1997-2004, 2006, 2008-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert. # Define HAVE_STDINT_H_WITH_UINTMAX if exists, # doesn't clash with , and declares uintmax_t. AC_DEFUN([gl_AC_HEADER_STDINT_H], [ AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include #include ]], [[uintmax_t i = (uintmax_t) -1; return !i;]])], [gl_cv_header_stdint_h=yes], [gl_cv_header_stdint_h=no])]) if test $gl_cv_header_stdint_h = yes; then AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1], [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi ]) recode-3.7.15/m4/open.m40000644000175000017500000000276514371444255010277 # open.m4 serial 15 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_OPEN], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([gl_PREPROC_O_CLOEXEC]) case "$host_os" in mingw* | pw*) REPLACE_OPEN=1 ;; *) dnl open("foo/") should not create a file when the file name has a dnl trailing slash. FreeBSD only has the problem on symlinks. AC_CHECK_FUNCS_ONCE([lstat]) if test "$gl_cv_macro_O_CLOEXEC" != yes; then REPLACE_OPEN=1 fi gl_OPEN_TRAILING_SLASH_BUG case "$gl_cv_func_open_slash" in *no) REPLACE_OPEN=1 ;; esac ;; esac dnl Replace open() for supporting the gnulib-defined fchdir() function, dnl to keep fchdir's bookkeeping up-to-date. m4_ifdef([gl_FUNC_FCHDIR], [ if test $REPLACE_OPEN = 0; then gl_TEST_FCHDIR if test $HAVE_FCHDIR = 0; then REPLACE_OPEN=1 fi fi ]) dnl Replace open() for supporting the gnulib-defined O_NONBLOCK flag. m4_ifdef([gl_NONBLOCKING_IO], [ if test $REPLACE_OPEN = 0; then gl_NONBLOCKING_IO if test $gl_cv_have_open_O_NONBLOCK != yes; then REPLACE_OPEN=1 fi fi ]) ]) # Prerequisites of lib/open.c. AC_DEFUN([gl_PREREQ_OPEN], [ AC_REQUIRE([gl_PROMOTED_TYPE_MODE_T]) : ]) recode-3.7.15/m4/math_h.m40000644000175000017500000005066514371444255010600 # math_h.m4 serial 125 dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_MATH_H], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) gl_CHECK_NEXT_HEADERS([math.h]) AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[/* Solaris 10 has a broken definition of NAN. Other platforms fail to provide NAN, or provide it only in C99 mode; this test only needs to fail when NAN is provided but wrong. */ float f = 1.0f; #ifdef NAN f = NAN; #endif return f == 0;]])], [gl_cv_header_math_nan_works=yes], [gl_cv_header_math_nan_works=no])]) if test $gl_cv_header_math_nan_works = no; then REPLACE_NAN=1 fi AC_CACHE_CHECK([whether HUGE_VAL works], [gl_cv_header_math_huge_val_works], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[/* Solaris 10 has a broken definition of HUGE_VAL. */ double d = HUGE_VAL; return d == 0;]])], [gl_cv_header_math_huge_val_works=yes], [gl_cv_header_math_huge_val_works=no])]) if test $gl_cv_header_math_huge_val_works = no; then REPLACE_HUGE_VAL=1 fi dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[#include ]], [acosf acosl asinf asinl atanf atanl cbrt cbrtf cbrtl ceilf ceill copysign copysignf copysignl cosf cosl coshf expf expl exp2 exp2f exp2l expm1 expm1f expm1l fabsf fabsl floorf floorl fma fmaf fmal fmod fmodf fmodl frexpf frexpl hypotf hypotl ilogb ilogbf ilogbl ldexpf ldexpl log logf logl log10 log10f log10l log1p log1pf log1pl log2 log2f log2l logb logbf logbl modf modff modfl powf remainder remainderf remainderl rint rintf rintl round roundf roundl sinf sinl sinhf sqrtf sqrtl tanf tanl tanhf trunc truncf truncl]) ]) # gl_MATH_MODULE_INDICATOR([modulename]) # sets the shell variable that indicates the presence of the given module # to a C preprocessor expression that will evaluate to 1. # This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_MATH_MODULE_INDICATOR], [ dnl Ensure to expand the default settings once only. gl_MATH_H_REQUIRE_DEFAULTS gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) # Initializes the default values for AC_SUBSTed shell variables. # This macro must not be AC_REQUIREd. It must only be invoked, and only # outside of macros or in macros that are not AC_REQUIREd. AC_DEFUN([gl_MATH_H_REQUIRE_DEFAULTS], [ m4_defun(GL_MODULE_INDICATOR_PREFIX[_MATH_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACOSF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACOSL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ASINF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ASINL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATANF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATANL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATAN2F]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRTF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRTL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEIL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEILF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEILL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGNF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGNL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSHF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2F]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2L]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1F]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1L]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FABSF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FABSL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOOR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOORF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOORL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMA]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMAF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMAL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMOD]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMODF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMODL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXPF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXPL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOTF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOTL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGB]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGBF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGBL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISFINITE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISINF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNAN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNANF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNAND]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNANL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LDEXPF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LDEXPL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10F]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10L]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1P]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1PF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1PL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2F]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2L]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGB]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGBF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGBL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODFF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODFL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POWF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDER]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDERF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDERL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINTF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINTL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUND]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUNDF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUNDL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGNBIT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINHF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SQRTF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SQRTL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANHF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCL]) dnl Support Microsoft deprecated alias function names by default. gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_J0], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_J1], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_JN], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_Y0], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_Y1], [1]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_YN], [1]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_MATH_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_MATH_H_DEFAULTS]) ]) AC_DEFUN([gl_MATH_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. HAVE_ACOSF=1; AC_SUBST([HAVE_ACOSF]) HAVE_ACOSL=1; AC_SUBST([HAVE_ACOSL]) HAVE_ASINF=1; AC_SUBST([HAVE_ASINF]) HAVE_ASINL=1; AC_SUBST([HAVE_ASINL]) HAVE_ATANF=1; AC_SUBST([HAVE_ATANF]) HAVE_ATANL=1; AC_SUBST([HAVE_ATANL]) HAVE_ATAN2F=1; AC_SUBST([HAVE_ATAN2F]) HAVE_CBRT=1; AC_SUBST([HAVE_CBRT]) HAVE_CBRTF=1; AC_SUBST([HAVE_CBRTF]) HAVE_CBRTL=1; AC_SUBST([HAVE_CBRTL]) HAVE_COPYSIGN=1; AC_SUBST([HAVE_COPYSIGN]) HAVE_COPYSIGNL=1; AC_SUBST([HAVE_COPYSIGNL]) HAVE_COSF=1; AC_SUBST([HAVE_COSF]) HAVE_COSL=1; AC_SUBST([HAVE_COSL]) HAVE_COSHF=1; AC_SUBST([HAVE_COSHF]) HAVE_EXPF=1; AC_SUBST([HAVE_EXPF]) HAVE_EXPL=1; AC_SUBST([HAVE_EXPL]) HAVE_EXPM1=1; AC_SUBST([HAVE_EXPM1]) HAVE_EXPM1F=1; AC_SUBST([HAVE_EXPM1F]) HAVE_FABSF=1; AC_SUBST([HAVE_FABSF]) HAVE_FABSL=1; AC_SUBST([HAVE_FABSL]) HAVE_FMA=1; AC_SUBST([HAVE_FMA]) HAVE_FMAF=1; AC_SUBST([HAVE_FMAF]) HAVE_FMAL=1; AC_SUBST([HAVE_FMAL]) HAVE_FMODF=1; AC_SUBST([HAVE_FMODF]) HAVE_FMODL=1; AC_SUBST([HAVE_FMODL]) HAVE_FREXPF=1; AC_SUBST([HAVE_FREXPF]) HAVE_HYPOTF=1; AC_SUBST([HAVE_HYPOTF]) HAVE_HYPOTL=1; AC_SUBST([HAVE_HYPOTL]) HAVE_ILOGB=1; AC_SUBST([HAVE_ILOGB]) HAVE_ILOGBF=1; AC_SUBST([HAVE_ILOGBF]) HAVE_ILOGBL=1; AC_SUBST([HAVE_ILOGBL]) HAVE_ISNANF=1; AC_SUBST([HAVE_ISNANF]) HAVE_ISNAND=1; AC_SUBST([HAVE_ISNAND]) HAVE_ISNANL=1; AC_SUBST([HAVE_ISNANL]) HAVE_LDEXPF=1; AC_SUBST([HAVE_LDEXPF]) HAVE_LOGF=1; AC_SUBST([HAVE_LOGF]) HAVE_LOGL=1; AC_SUBST([HAVE_LOGL]) HAVE_LOG10F=1; AC_SUBST([HAVE_LOG10F]) HAVE_LOG10L=1; AC_SUBST([HAVE_LOG10L]) HAVE_LOG1P=1; AC_SUBST([HAVE_LOG1P]) HAVE_LOG1PF=1; AC_SUBST([HAVE_LOG1PF]) HAVE_LOG1PL=1; AC_SUBST([HAVE_LOG1PL]) HAVE_LOGBF=1; AC_SUBST([HAVE_LOGBF]) HAVE_LOGBL=1; AC_SUBST([HAVE_LOGBL]) HAVE_MODFF=1; AC_SUBST([HAVE_MODFF]) HAVE_MODFL=1; AC_SUBST([HAVE_MODFL]) HAVE_POWF=1; AC_SUBST([HAVE_POWF]) HAVE_REMAINDER=1; AC_SUBST([HAVE_REMAINDER]) HAVE_REMAINDERF=1; AC_SUBST([HAVE_REMAINDERF]) HAVE_RINT=1; AC_SUBST([HAVE_RINT]) HAVE_RINTL=1; AC_SUBST([HAVE_RINTL]) HAVE_SINF=1; AC_SUBST([HAVE_SINF]) HAVE_SINL=1; AC_SUBST([HAVE_SINL]) HAVE_SINHF=1; AC_SUBST([HAVE_SINHF]) HAVE_SQRTF=1; AC_SUBST([HAVE_SQRTF]) HAVE_SQRTL=1; AC_SUBST([HAVE_SQRTL]) HAVE_TANF=1; AC_SUBST([HAVE_TANF]) HAVE_TANL=1; AC_SUBST([HAVE_TANL]) HAVE_TANHF=1; AC_SUBST([HAVE_TANHF]) HAVE_DECL_ACOSL=1; AC_SUBST([HAVE_DECL_ACOSL]) HAVE_DECL_ASINL=1; AC_SUBST([HAVE_DECL_ASINL]) HAVE_DECL_ATANL=1; AC_SUBST([HAVE_DECL_ATANL]) HAVE_DECL_CBRTF=1; AC_SUBST([HAVE_DECL_CBRTF]) HAVE_DECL_CBRTL=1; AC_SUBST([HAVE_DECL_CBRTL]) HAVE_DECL_CEILF=1; AC_SUBST([HAVE_DECL_CEILF]) HAVE_DECL_CEILL=1; AC_SUBST([HAVE_DECL_CEILL]) HAVE_DECL_COPYSIGNF=1; AC_SUBST([HAVE_DECL_COPYSIGNF]) HAVE_DECL_COSL=1; AC_SUBST([HAVE_DECL_COSL]) HAVE_DECL_EXPL=1; AC_SUBST([HAVE_DECL_EXPL]) HAVE_DECL_EXP2=1; AC_SUBST([HAVE_DECL_EXP2]) HAVE_DECL_EXP2F=1; AC_SUBST([HAVE_DECL_EXP2F]) HAVE_DECL_EXP2L=1; AC_SUBST([HAVE_DECL_EXP2L]) HAVE_DECL_EXPM1L=1; AC_SUBST([HAVE_DECL_EXPM1L]) HAVE_DECL_FLOORF=1; AC_SUBST([HAVE_DECL_FLOORF]) HAVE_DECL_FLOORL=1; AC_SUBST([HAVE_DECL_FLOORL]) HAVE_DECL_FREXPL=1; AC_SUBST([HAVE_DECL_FREXPL]) HAVE_DECL_LDEXPL=1; AC_SUBST([HAVE_DECL_LDEXPL]) HAVE_DECL_LOGL=1; AC_SUBST([HAVE_DECL_LOGL]) HAVE_DECL_LOG10L=1; AC_SUBST([HAVE_DECL_LOG10L]) HAVE_DECL_LOG2=1; AC_SUBST([HAVE_DECL_LOG2]) HAVE_DECL_LOG2F=1; AC_SUBST([HAVE_DECL_LOG2F]) HAVE_DECL_LOG2L=1; AC_SUBST([HAVE_DECL_LOG2L]) HAVE_DECL_LOGB=1; AC_SUBST([HAVE_DECL_LOGB]) HAVE_DECL_REMAINDER=1; AC_SUBST([HAVE_DECL_REMAINDER]) HAVE_DECL_REMAINDERL=1; AC_SUBST([HAVE_DECL_REMAINDERL]) HAVE_DECL_RINTF=1; AC_SUBST([HAVE_DECL_RINTF]) HAVE_DECL_ROUND=1; AC_SUBST([HAVE_DECL_ROUND]) HAVE_DECL_ROUNDF=1; AC_SUBST([HAVE_DECL_ROUNDF]) HAVE_DECL_ROUNDL=1; AC_SUBST([HAVE_DECL_ROUNDL]) HAVE_DECL_SINL=1; AC_SUBST([HAVE_DECL_SINL]) HAVE_DECL_SQRTL=1; AC_SUBST([HAVE_DECL_SQRTL]) HAVE_DECL_TANL=1; AC_SUBST([HAVE_DECL_TANL]) HAVE_DECL_TRUNC=1; AC_SUBST([HAVE_DECL_TRUNC]) HAVE_DECL_TRUNCF=1; AC_SUBST([HAVE_DECL_TRUNCF]) HAVE_DECL_TRUNCL=1; AC_SUBST([HAVE_DECL_TRUNCL]) REPLACE_ACOSF=0; AC_SUBST([REPLACE_ACOSF]) REPLACE_ASINF=0; AC_SUBST([REPLACE_ASINF]) REPLACE_ATANF=0; AC_SUBST([REPLACE_ATANF]) REPLACE_ATAN2F=0; AC_SUBST([REPLACE_ATAN2F]) REPLACE_CBRTF=0; AC_SUBST([REPLACE_CBRTF]) REPLACE_CBRTL=0; AC_SUBST([REPLACE_CBRTL]) REPLACE_CEIL=0; AC_SUBST([REPLACE_CEIL]) REPLACE_CEILF=0; AC_SUBST([REPLACE_CEILF]) REPLACE_CEILL=0; AC_SUBST([REPLACE_CEILL]) REPLACE_COSF=0; AC_SUBST([REPLACE_COSF]) REPLACE_COSHF=0; AC_SUBST([REPLACE_COSHF]) REPLACE_EXPF=0; AC_SUBST([REPLACE_EXPF]) REPLACE_EXPL=0; AC_SUBST([REPLACE_EXPL]) REPLACE_EXPM1=0; AC_SUBST([REPLACE_EXPM1]) REPLACE_EXPM1F=0; AC_SUBST([REPLACE_EXPM1F]) REPLACE_EXPM1L=0; AC_SUBST([REPLACE_EXPM1L]) REPLACE_EXP2=0; AC_SUBST([REPLACE_EXP2]) REPLACE_EXP2L=0; AC_SUBST([REPLACE_EXP2L]) REPLACE_FABSL=0; AC_SUBST([REPLACE_FABSL]) REPLACE_FLOOR=0; AC_SUBST([REPLACE_FLOOR]) REPLACE_FLOORF=0; AC_SUBST([REPLACE_FLOORF]) REPLACE_FLOORL=0; AC_SUBST([REPLACE_FLOORL]) REPLACE_FMA=0; AC_SUBST([REPLACE_FMA]) REPLACE_FMAF=0; AC_SUBST([REPLACE_FMAF]) REPLACE_FMAL=0; AC_SUBST([REPLACE_FMAL]) REPLACE_FMOD=0; AC_SUBST([REPLACE_FMOD]) REPLACE_FMODF=0; AC_SUBST([REPLACE_FMODF]) REPLACE_FMODL=0; AC_SUBST([REPLACE_FMODL]) REPLACE_FREXPF=0; AC_SUBST([REPLACE_FREXPF]) REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP]) REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL]) REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL]) REPLACE_HYPOT=0; AC_SUBST([REPLACE_HYPOT]) REPLACE_HYPOTF=0; AC_SUBST([REPLACE_HYPOTF]) REPLACE_HYPOTL=0; AC_SUBST([REPLACE_HYPOTL]) REPLACE_ILOGB=0; AC_SUBST([REPLACE_ILOGB]) REPLACE_ILOGBF=0; AC_SUBST([REPLACE_ILOGBF]) REPLACE_ILOGBL=0; AC_SUBST([REPLACE_ILOGBL]) REPLACE_ISFINITE=0; AC_SUBST([REPLACE_ISFINITE]) REPLACE_ISINF=0; AC_SUBST([REPLACE_ISINF]) REPLACE_ISNAN=0; AC_SUBST([REPLACE_ISNAN]) REPLACE_LDEXPL=0; AC_SUBST([REPLACE_LDEXPL]) REPLACE_LOG=0; AC_SUBST([REPLACE_LOG]) REPLACE_LOGF=0; AC_SUBST([REPLACE_LOGF]) REPLACE_LOGL=0; AC_SUBST([REPLACE_LOGL]) REPLACE_LOG10=0; AC_SUBST([REPLACE_LOG10]) REPLACE_LOG10F=0; AC_SUBST([REPLACE_LOG10F]) REPLACE_LOG10L=0; AC_SUBST([REPLACE_LOG10L]) REPLACE_LOG1P=0; AC_SUBST([REPLACE_LOG1P]) REPLACE_LOG1PF=0; AC_SUBST([REPLACE_LOG1PF]) REPLACE_LOG1PL=0; AC_SUBST([REPLACE_LOG1PL]) REPLACE_LOG2=0; AC_SUBST([REPLACE_LOG2]) REPLACE_LOG2F=0; AC_SUBST([REPLACE_LOG2F]) REPLACE_LOG2L=0; AC_SUBST([REPLACE_LOG2L]) REPLACE_LOGB=0; AC_SUBST([REPLACE_LOGB]) REPLACE_LOGBF=0; AC_SUBST([REPLACE_LOGBF]) REPLACE_LOGBL=0; AC_SUBST([REPLACE_LOGBL]) REPLACE_MODF=0; AC_SUBST([REPLACE_MODF]) REPLACE_MODFF=0; AC_SUBST([REPLACE_MODFF]) REPLACE_MODFL=0; AC_SUBST([REPLACE_MODFL]) REPLACE_NAN=0; AC_SUBST([REPLACE_NAN]) REPLACE_REMAINDER=0; AC_SUBST([REPLACE_REMAINDER]) REPLACE_REMAINDERF=0; AC_SUBST([REPLACE_REMAINDERF]) REPLACE_REMAINDERL=0; AC_SUBST([REPLACE_REMAINDERL]) REPLACE_RINTL=0; AC_SUBST([REPLACE_RINTL]) REPLACE_ROUND=0; AC_SUBST([REPLACE_ROUND]) REPLACE_ROUNDF=0; AC_SUBST([REPLACE_ROUNDF]) REPLACE_ROUNDL=0; AC_SUBST([REPLACE_ROUNDL]) REPLACE_SIGNBIT=0; AC_SUBST([REPLACE_SIGNBIT]) REPLACE_SIGNBIT_USING_BUILTINS=0; AC_SUBST([REPLACE_SIGNBIT_USING_BUILTINS]) REPLACE_SINF=0; AC_SUBST([REPLACE_SINF]) REPLACE_SINHF=0; AC_SUBST([REPLACE_SINHF]) REPLACE_SQRTF=0; AC_SUBST([REPLACE_SQRTF]) REPLACE_SQRTL=0; AC_SUBST([REPLACE_SQRTL]) REPLACE_TANF=0; AC_SUBST([REPLACE_TANF]) REPLACE_TANHF=0; AC_SUBST([REPLACE_TANHF]) REPLACE_TRUNC=0; AC_SUBST([REPLACE_TRUNC]) REPLACE_TRUNCF=0; AC_SUBST([REPLACE_TRUNCF]) REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL]) ]) # gl_LONG_DOUBLE_VS_DOUBLE # determines whether 'long double' and 'double' have the same representation. # Sets variable HAVE_SAME_LONG_DOUBLE_AS_DOUBLE to 0 or 1, and defines # HAVE_SAME_LONG_DOUBLE_AS_DOUBLE accordingly. # The currently known platforms where this is the case are: # Linux/HPPA, Minix 3.1.8, AIX 5, AIX 6 and 7 with xlc, MSVC 9. AC_DEFUN([gl_LONG_DOUBLE_VS_DOUBLE], [ AC_CACHE_CHECK([whether long double and double are the same], [gl_cv_long_double_equals_double], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[typedef int check[sizeof (long double) == sizeof (double) && LDBL_MANT_DIG == DBL_MANT_DIG && LDBL_MAX_EXP == DBL_MAX_EXP && LDBL_MIN_EXP == DBL_MIN_EXP ? 1 : -1]; ]])], [gl_cv_long_double_equals_double=yes], [gl_cv_long_double_equals_double=no]) ]) if test $gl_cv_long_double_equals_double = yes; then AC_DEFINE([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE], [1], [Define to 1 if 'long double' and 'double' have the same representation.]) HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=1 else HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=0 fi AC_SUBST([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE]) ]) recode-3.7.15/m4/float_h.m40000644000175000017500000000543514371444255010747 # float_h.m4 serial 13 dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FLOAT_H], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) GL_GENERATE_FLOAT_H=false REPLACE_FLOAT_LDBL=0 case "$host_os" in aix* | beos* | openbsd* | mirbsd* | irix*) GL_GENERATE_FLOAT_H=true ;; freebsd* | dragonfly*) case "$host_cpu" in changequote(,)dnl i[34567]86 ) changequote([,])dnl GL_GENERATE_FLOAT_H=true ;; x86_64 ) # On x86_64 systems, the C compiler may still be generating # 32-bit code. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __LP64__ || defined __x86_64__ || defined __amd64__ int ok; #else error fail #endif ]])], [], [GL_GENERATE_FLOAT_H=true]) ;; esac ;; linux*) case "$host_cpu" in powerpc*) GL_GENERATE_FLOAT_H=true ;; esac ;; esac case "$host_os" in aix* | freebsd* | dragonfly* | linux*) if $GL_GENERATE_FLOAT_H; then REPLACE_FLOAT_LDBL=1 fi ;; esac dnl Test against glibc-2.7 Linux/SPARC64 bug. REPLACE_ITOLD=0 AC_CACHE_CHECK([whether conversion from 'int' to 'long double' works], [gl_cv_func_itold_works], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ int i = -1; volatile long double ld; int main () { ld += i * 1.0L; if (ld > 0) return 1; return 0; }]])], [gl_cv_func_itold_works=yes], [gl_cv_func_itold_works=no], [case "$host" in sparc*-*-linux*) AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __LP64__ || defined __arch64__ int ok; #else error fail #endif ]])], [gl_cv_func_itold_works="guessing no"], [gl_cv_func_itold_works="guessing yes"]) ;; # Guess yes on native Windows. mingw*) gl_cv_func_itold_works="guessing yes" ;; *) gl_cv_func_itold_works="guessing yes" ;; esac ]) ]) case "$gl_cv_func_itold_works" in *no) REPLACE_ITOLD=1 dnl We add the workaround to but also to , dnl to increase the chances that the fix function gets pulled in. GL_GENERATE_FLOAT_H=true ;; esac if $GL_GENERATE_FLOAT_H; then gl_NEXT_HEADERS([float.h]) fi AC_SUBST([REPLACE_ITOLD]) ]) recode-3.7.15/m4/dup2.m40000644000175000017500000000723614371444255010206 #serial 27 dnl Copyright (C) 2002, 2005, 2007, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_DUP2], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_CACHE_CHECK([whether dup2 works], [gl_cv_func_dup2_works], [AC_RUN_IFELSE([ AC_LANG_PROGRAM( [[#include #include #include #include #include ]GL_MDA_DEFINES[ #ifndef RLIM_SAVED_CUR # define RLIM_SAVED_CUR RLIM_INFINITY #endif #ifndef RLIM_SAVED_MAX # define RLIM_SAVED_MAX RLIM_INFINITY #endif ]], [[int result = 0; int bad_fd = INT_MAX; struct rlimit rlim; if (getrlimit (RLIMIT_NOFILE, &rlim) == 0 && 0 <= rlim.rlim_cur && rlim.rlim_cur <= INT_MAX && rlim.rlim_cur != RLIM_INFINITY && rlim.rlim_cur != RLIM_SAVED_MAX && rlim.rlim_cur != RLIM_SAVED_CUR) bad_fd = rlim.rlim_cur; #ifdef FD_CLOEXEC if (fcntl (1, F_SETFD, FD_CLOEXEC) == -1) result |= 1; #endif if (dup2 (1, 1) != 1) result |= 2; #ifdef FD_CLOEXEC if (fcntl (1, F_GETFD) != FD_CLOEXEC) result |= 4; #endif close (0); if (dup2 (0, 0) != -1) result |= 8; /* Many gnulib modules require POSIX conformance of EBADF. */ if (dup2 (2, bad_fd) == -1 && errno != EBADF) result |= 16; /* Flush out some cygwin core dumps. */ if (dup2 (2, -1) != -1 || errno != EBADF) result |= 32; dup2 (2, 255); dup2 (2, 256); /* On OS/2 kLIBC, dup2() does not work on a directory fd. */ { int fd = open (".", O_RDONLY); if (fd == -1) result |= 64; else if (dup2 (fd, fd + 1) == -1) result |= 128; close (fd); } return result;]]) ], [gl_cv_func_dup2_works=yes], [gl_cv_func_dup2_works=no], [case "$host_os" in mingw*) # on this platform, dup2 always returns 0 for success gl_cv_func_dup2_works="guessing no" ;; cygwin*) # on cygwin 1.5.x, dup2(1,1) returns 0 gl_cv_func_dup2_works="guessing no" ;; aix* | freebsd*) # on AIX 7.1 and FreeBSD 6.1, dup2 (1,toobig) gives EMFILE, # not EBADF. gl_cv_func_dup2_works="guessing no" ;; haiku*) # on Haiku alpha 2, dup2(1, 1) resets FD_CLOEXEC. gl_cv_func_dup2_works="guessing no" ;; *-android*) # implemented using dup3(), which fails if oldfd == newfd gl_cv_func_dup2_works="guessing no" ;; os2*) # on OS/2 kLIBC, dup2() does not work on a directory fd. gl_cv_func_dup2_works="guessing no" ;; *) gl_cv_func_dup2_works="guessing yes" ;; esac]) ]) case "$gl_cv_func_dup2_works" in *yes) ;; *) REPLACE_DUP2=1 AC_CHECK_FUNCS([setdtablesize]) ;; esac dnl Replace dup2() for supporting the gnulib-defined fchdir() function, dnl to keep fchdir's bookkeeping up-to-date. m4_ifdef([gl_FUNC_FCHDIR], [ gl_TEST_FCHDIR if test $HAVE_FCHDIR = 0; then REPLACE_DUP2=1 fi ]) ]) # Prerequisites of lib/dup2.c. AC_DEFUN([gl_PREREQ_DUP2], []) recode-3.7.15/m4/localcharset.m40000644000175000017500000000063314371444255011772 # localcharset.m4 serial 8 dnl Copyright (C) 2002, 2004, 2006, 2009-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_LOCALCHARSET], [ dnl Prerequisites of lib/localcharset.c. AC_REQUIRE([AM_LANGINFO_CODESET]) ]) recode-3.7.15/config.h.in0000644000175000017500000021346314766020642010574 /* config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD /* Define to the number of bits in type 'ptrdiff_t'. */ #undef BITSIZEOF_PTRDIFF_T /* Define to the number of bits in type 'sig_atomic_t'. */ #undef BITSIZEOF_SIG_ATOMIC_T /* Define to the number of bits in type 'size_t'. */ #undef BITSIZEOF_SIZE_T /* Define to the number of bits in type 'wchar_t'. */ #undef BITSIZEOF_WCHAR_T /* Define to the number of bits in type 'wint_t'. */ #undef BITSIZEOF_WINT_T /* Define if you wish *printf() functions that have a safe handling of non-IEEE-754 'long double' values. */ #undef CHECK_PRINTF_SAFE /* Define to 1 if using 'alloca.c'. */ #undef C_ALLOCA /* Define as the bit index in the word where to find bit 0 of the exponent of 'double'. */ #undef DBL_EXPBIT0_BIT /* Define as the word index where to find the exponent of 'double'. */ #undef DBL_EXPBIT0_WORD /* Define as the bit index in the word where to find the sign of 'double'. */ #undef DBL_SIGNBIT_BIT /* Define as the word index where to find the sign of 'double'. */ #undef DBL_SIGNBIT_WORD /* Define to 1 if // is a file system root distinct from /. */ #undef DOUBLE_SLASH_IS_DISTINCT_ROOT /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* Define this to 1 if F_DUPFD behavior does not match POSIX */ #undef FCNTL_DUPFD_BUGGY /* Define as the bit index in the word where to find bit 0 of the exponent of 'float'. */ #undef FLT_EXPBIT0_BIT /* Define as the word index where to find the exponent of 'float'. */ #undef FLT_EXPBIT0_WORD /* Define as the bit index in the word where to find the sign of 'float'. */ #undef FLT_SIGNBIT_BIT /* Define as the word index where to find the sign of 'float'. */ #undef FLT_SIGNBIT_WORD /* Define to 1 if mkdir mistakenly creates a directory given with a trailing dot component. */ #undef FUNC_MKDIR_DOT_BUG /* Define to 1 if realpath() can malloc memory, always gives an absolute path, and handles a trailing slash correctly. */ #undef FUNC_REALPATH_NEARLY_WORKS /* Define to 1 if realpath() can malloc memory, always gives an absolute path, and handles leading slashes and a trailing slash correctly. */ #undef FUNC_REALPATH_WORKS /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module canonicalize-lgpl shall be considered present. */ #undef GNULIB_CANONICALIZE_LGPL /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module dirname shall be considered present. */ #undef GNULIB_DIRNAME /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module fscanf shall be considered present. */ #undef GNULIB_FSCANF /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module mkstemps shall be considered present. */ #undef GNULIB_MKSTEMPS /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module msvc-nothrow shall be considered present. */ #undef GNULIB_MSVC_NOTHROW /* Define to 1 if printf and friends should be labeled with attribute "__gnu_printf__" instead of "__printf__" */ #undef GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module reallocarray shall be considered present. */ #undef GNULIB_REALLOCARRAY /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module scanf shall be considered present. */ #undef GNULIB_SCANF /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module strerror shall be considered present. */ #undef GNULIB_STRERROR /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module tempname shall be considered present. */ #undef GNULIB_TEMPNAME /* Define to 1 when the gnulib module calloc-gnu should be tested. */ #undef GNULIB_TEST_CALLOC_GNU /* Define to 1 when the gnulib module calloc-posix should be tested. */ #undef GNULIB_TEST_CALLOC_POSIX /* Define to 1 when the gnulib module canonicalize_file_name should be tested. */ #undef GNULIB_TEST_CANONICALIZE_FILE_NAME /* Define to 1 when the gnulib module cloexec should be tested. */ #undef GNULIB_TEST_CLOEXEC /* Define to 1 when the gnulib module close should be tested. */ #undef GNULIB_TEST_CLOSE /* Define to 1 when the gnulib module dup2 should be tested. */ #undef GNULIB_TEST_DUP2 /* Define to 1 when the gnulib module fcntl should be tested. */ #undef GNULIB_TEST_FCNTL /* Define to 1 when the gnulib module fgetc should be tested. */ #undef GNULIB_TEST_FGETC /* Define to 1 when the gnulib module fgets should be tested. */ #undef GNULIB_TEST_FGETS /* Define to 1 when the gnulib module fprintf should be tested. */ #undef GNULIB_TEST_FPRINTF /* Define to 1 when the gnulib module fputc should be tested. */ #undef GNULIB_TEST_FPUTC /* Define to 1 when the gnulib module fputs should be tested. */ #undef GNULIB_TEST_FPUTS /* Define to 1 when the gnulib module fread should be tested. */ #undef GNULIB_TEST_FREAD /* Define to 1 when the gnulib module free-posix should be tested. */ #undef GNULIB_TEST_FREE_POSIX /* Define to 1 when the gnulib module frexp should be tested. */ #undef GNULIB_TEST_FREXP /* Define to 1 when the gnulib module frexpl should be tested. */ #undef GNULIB_TEST_FREXPL /* Define to 1 when the gnulib module fscanf should be tested. */ #undef GNULIB_TEST_FSCANF /* Define to 1 when the gnulib module fstat should be tested. */ #undef GNULIB_TEST_FSTAT /* Define to 1 when the gnulib module fwrite should be tested. */ #undef GNULIB_TEST_FWRITE /* Define to 1 when the gnulib module getc should be tested. */ #undef GNULIB_TEST_GETC /* Define to 1 when the gnulib module getchar should be tested. */ #undef GNULIB_TEST_GETCHAR /* Define to 1 when the gnulib module getdtablesize should be tested. */ #undef GNULIB_TEST_GETDTABLESIZE /* Define to 1 when the gnulib module getopt-posix should be tested. */ #undef GNULIB_TEST_GETOPT_POSIX /* Define to 1 when the gnulib module getprogname should be tested. */ #undef GNULIB_TEST_GETPROGNAME /* Define to 1 when the gnulib module getrandom should be tested. */ #undef GNULIB_TEST_GETRANDOM /* Define to 1 when the gnulib module isatty should be tested. */ #undef GNULIB_TEST_ISATTY /* Define to 1 when the gnulib module lstat should be tested. */ #undef GNULIB_TEST_LSTAT /* Define to 1 when the gnulib module malloc-gnu should be tested. */ #undef GNULIB_TEST_MALLOC_GNU /* Define to 1 when the gnulib module malloc-posix should be tested. */ #undef GNULIB_TEST_MALLOC_POSIX /* Define to 1 when the gnulib module mbrtowc should be tested. */ #undef GNULIB_TEST_MBRTOWC /* Define to 1 when the gnulib module mbsinit should be tested. */ #undef GNULIB_TEST_MBSINIT /* Define to 1 when the gnulib module memchr should be tested. */ #undef GNULIB_TEST_MEMCHR /* Define to 1 when the gnulib module mempcpy should be tested. */ #undef GNULIB_TEST_MEMPCPY /* Define to 1 when the gnulib module mkdir should be tested. */ #undef GNULIB_TEST_MKDIR /* Define to 1 when the gnulib module mkstemps should be tested. */ #undef GNULIB_TEST_MKSTEMPS /* Define to 1 when the gnulib module open should be tested. */ #undef GNULIB_TEST_OPEN /* Define to 1 when the gnulib module pipe should be tested. */ #undef GNULIB_TEST_PIPE /* Define to 1 when the gnulib module printf should be tested. */ #undef GNULIB_TEST_PRINTF /* Define to 1 when the gnulib module putc should be tested. */ #undef GNULIB_TEST_PUTC /* Define to 1 when the gnulib module putchar should be tested. */ #undef GNULIB_TEST_PUTCHAR /* Define to 1 when the gnulib module puts should be tested. */ #undef GNULIB_TEST_PUTS /* Define to 1 when the gnulib module raise should be tested. */ #undef GNULIB_TEST_RAISE /* Define to 1 when the gnulib module rawmemchr should be tested. */ #undef GNULIB_TEST_RAWMEMCHR /* Define to 1 when the gnulib module readlink should be tested. */ #undef GNULIB_TEST_READLINK /* Define to 1 when the gnulib module reallocarray should be tested. */ #undef GNULIB_TEST_REALLOCARRAY /* Define to 1 when the gnulib module realloc-gnu should be tested. */ #undef GNULIB_TEST_REALLOC_GNU /* Define to 1 when the gnulib module realloc-posix should be tested. */ #undef GNULIB_TEST_REALLOC_POSIX /* Define to 1 when the gnulib module realpath should be tested. */ #undef GNULIB_TEST_REALPATH /* Define to 1 when the gnulib module scanf should be tested. */ #undef GNULIB_TEST_SCANF /* Define to 1 when the gnulib module setlocale_null should be tested. */ #undef GNULIB_TEST_SETLOCALE_NULL /* Define to 1 when the gnulib module sigaction should be tested. */ #undef GNULIB_TEST_SIGACTION /* Define to 1 when the gnulib module signbit should be tested. */ #undef GNULIB_TEST_SIGNBIT /* Define to 1 when the gnulib module sigprocmask should be tested. */ #undef GNULIB_TEST_SIGPROCMASK /* Define to 1 when the gnulib module stat should be tested. */ #undef GNULIB_TEST_STAT /* Define to 1 when the gnulib module strerror should be tested. */ #undef GNULIB_TEST_STRERROR /* Define to 1 when the gnulib module strndup should be tested. */ #undef GNULIB_TEST_STRNDUP /* Define to 1 when the gnulib module strnlen should be tested. */ #undef GNULIB_TEST_STRNLEN /* Define to 1 when the gnulib module utime should be tested. */ #undef GNULIB_TEST_UTIME /* Define to 1 when the gnulib module vasprintf should be tested. */ #undef GNULIB_TEST_VASPRINTF /* Define to 1 when the gnulib module vfprintf should be tested. */ #undef GNULIB_TEST_VFPRINTF /* Define to 1 when the gnulib module vfprintf-posix should be tested. */ #undef GNULIB_TEST_VFPRINTF_POSIX /* Define to 1 when the gnulib module vprintf should be tested. */ #undef GNULIB_TEST_VPRINTF /* Define to 1 when the gnulib module vprintf-posix should be tested. */ #undef GNULIB_TEST_VPRINTF_POSIX /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module vfprintf-posix shall be considered present. */ #undef GNULIB_VFPRINTF_POSIX /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module vprintf-posix shall be considered present. */ #undef GNULIB_VPRINTF_POSIX /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module xalloc shall be considered present. */ #undef GNULIB_XALLOC /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module xalloc-die shall be considered present. */ #undef GNULIB_XALLOC_DIE /* Define to 1 if you have 'alloca' after including , a header that may be supplied by this distribution. */ #undef HAVE_ALLOCA /* Define to 1 if works. */ #undef HAVE_ALLOCA_H /* Define to 1 if you have the header file. */ #undef HAVE_BCRYPT_H /* Define to 1 if you have the header file. */ #undef HAVE_BP_SYM_H /* Define to 1 if you have the `canonicalize_file_name' function. */ #undef HAVE_CANONICALIZE_FILE_NAME /* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYCURRENT /* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE /* Define to 1 if you have the `clock_getres' function. */ #undef HAVE_CLOCK_GETRES /* Define to 1 if you have the `clock_gettime' function. */ #undef HAVE_CLOCK_GETTIME /* Define to 1 if you have the `clock_settime' function. */ #undef HAVE_CLOCK_SETTIME /* Define if the copysignf function is declared in and available in libc. */ #undef HAVE_COPYSIGNF_IN_LIBC /* Define if the copysignl function is declared in and available in libc. */ #undef HAVE_COPYSIGNL_IN_LIBC /* Define if the copysign function is declared in and available in libc. */ #undef HAVE_COPYSIGN_IN_LIBC /* Define to 1 if you have the header file. */ #undef HAVE_CRTDEFS_H /* Define to 1 if the alignas and alignof keywords work. */ #undef HAVE_C_ALIGNASOF /* Define to 1 if bool, true and false work as per C2023. */ #undef HAVE_C_BOOL /* Define to 1 if the static_assert keyword works. */ #undef HAVE_C_STATIC_ASSERT /* Define to 1 if C supports variable-length arrays. */ #undef HAVE_C_VARARRAYS /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the declaration of `alarm', and to 0 if you don't. */ #undef HAVE_DECL_ALARM /* Define to 1 if you have the declaration of `copysign', and to 0 if you don't. */ #undef HAVE_DECL_COPYSIGN /* Define to 1 if you have the declaration of `copysignf', and to 0 if you don't. */ #undef HAVE_DECL_COPYSIGNF /* Define to 1 if you have the declaration of `copysignl', and to 0 if you don't. */ #undef HAVE_DECL_COPYSIGNL /* Define to 1 if you have the declaration of `ecvt', and to 0 if you don't. */ #undef HAVE_DECL_ECVT /* Define to 1 if you have the declaration of `execvpe', and to 0 if you don't. */ #undef HAVE_DECL_EXECVPE /* Define to 1 if you have the declaration of `fcloseall', and to 0 if you don't. */ #undef HAVE_DECL_FCLOSEALL /* Define to 1 if you have the declaration of `fcvt', and to 0 if you don't. */ #undef HAVE_DECL_FCVT /* Define to 1 if you have the declaration of `gcvt', and to 0 if you don't. */ #undef HAVE_DECL_GCVT /* Define to 1 if you have the declaration of `getdtablesize', and to 0 if you don't. */ #undef HAVE_DECL_GETDTABLESIZE /* Define to 1 if you have the declaration of `getw', and to 0 if you don't. */ #undef HAVE_DECL_GETW /* Define to 1 if you have the declaration of `mbrtowc', and to 0 if you don't. */ #undef HAVE_DECL_MBRTOWC /* Define to 1 if you have the declaration of `mbsinit', and to 0 if you don't. */ #undef HAVE_DECL_MBSINIT /* Define to 1 if you have the declaration of `program_invocation_name', and to 0 if you don't. */ #undef HAVE_DECL_PROGRAM_INVOCATION_NAME /* Define to 1 if you have the declaration of `program_invocation_short_name', and to 0 if you don't. */ #undef HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME /* Define to 1 if you have the declaration of `putw', and to 0 if you don't. */ #undef HAVE_DECL_PUTW /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #undef HAVE_DECL_STRERROR_R /* Define to 1 if you have the declaration of `strndup', and to 0 if you don't. */ #undef HAVE_DECL_STRNDUP /* Define to 1 if you have the declaration of `strnlen', and to 0 if you don't. */ #undef HAVE_DECL_STRNLEN /* Define to 1 if you have the declaration of `towlower', and to 0 if you don't. */ #undef HAVE_DECL_TOWLOWER /* Define to 1 if you have the declaration of `wcsdup', and to 0 if you don't. */ #undef HAVE_DECL_WCSDUP /* Define to 1 if you have the declaration of `_snprintf', and to 0 if you don't. */ #undef HAVE_DECL__SNPRINTF /* Define to 1 if you have the declaration of `__argv', and to 0 if you don't. */ #undef HAVE_DECL___ARGV /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the `error' function. */ #undef HAVE_ERROR /* Define to 1 if you have the `faccessat' function. */ #undef HAVE_FACCESSAT /* Define to 1 if you have the `fcntl' function. */ #undef HAVE_FCNTL /* Define to 1 if you have the header file. */ #undef HAVE_FEATURES_H /* Define if the 'free' function is guaranteed to preserve errno. */ #undef HAVE_FREE_POSIX /* Define if the frexpl function is available in libc. */ #undef HAVE_FREXPL_IN_LIBC /* Define if the frexp function is available in libc. */ #undef HAVE_FREXP_IN_LIBC /* Define to 1 if you have the `getcwd' function. */ #undef HAVE_GETCWD /* Define to 1 if you have the `getdtablesize' function. */ #undef HAVE_GETDTABLESIZE /* Define to 1 if you have the `getexecname' function. */ #undef HAVE_GETEXECNAME /* Define to 1 if you have the header file. */ #undef HAVE_GETOPT_H /* Define to 1 if you have the `getopt_long_only' function. */ #undef HAVE_GETOPT_LONG_ONLY /* Define to 1 if you have the `getprogname' function. */ #undef HAVE_GETPROGNAME /* Define to 1 if you have the `getrandom' function. */ #undef HAVE_GETRANDOM /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define if you have the iconv() function and it works. */ #undef HAVE_ICONV /* Define if you have the 'intmax_t' type in or . */ #undef HAVE_INTMAX_T /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if exists, doesn't clash with , and declares uintmax_t. */ #undef HAVE_INTTYPES_H_WITH_UINTMAX /* Define if the isnan(double) function is available in libc. */ #undef HAVE_ISNAND_IN_LIBC /* Define if the isnan(float) function is available in libc. */ #undef HAVE_ISNANF_IN_LIBC /* Define if the isnan(long double) function is available in libc. */ #undef HAVE_ISNANL_IN_LIBC /* Define to 1 if you have the `iswcntrl' function. */ #undef HAVE_ISWCNTRL /* Define if you have and nl_langinfo(CODESET). */ #undef HAVE_LANGINFO_CODESET /* Define if the ldexpl function is available in libc. */ #undef HAVE_LDEXPL_IN_LIBC /* Define if the ldexp function is available in libc. */ #undef HAVE_LDEXP_IN_LIBC /* Define to 1 if the bcrypt library is guaranteed to be present. */ #undef HAVE_LIB_BCRYPT /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if the system has the type 'long long int'. */ #undef HAVE_LONG_LONG_INT /* Define to 1 if you have the `lstat' function. */ #undef HAVE_LSTAT /* Define if malloc, realloc, and calloc set errno on allocation failure. */ #undef HAVE_MALLOC_POSIX /* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including config.h and . */ #undef HAVE_MAP_ANONYMOUS /* Define to 1 if you have the header file. */ #undef HAVE_MATH_H /* Define to 1 if you have the `mbrtowc' function. */ #undef HAVE_MBRTOWC /* Define to 1 if you have the `mbsinit' function. */ #undef HAVE_MBSINIT /* Define to 1 if declares mbstate_t. */ #undef HAVE_MBSTATE_T /* Define to 1 if you have the `mempcpy' function. */ #undef HAVE_MEMPCPY /* Define to 1 if you have the header file. */ #undef HAVE_MINIX_CONFIG_H /* Define to 1 if defines the MIN and MAX macros. */ #undef HAVE_MINMAX_IN_LIMITS_H /* Define to 1 if defines the MIN and MAX macros. */ #undef HAVE_MINMAX_IN_SYS_PARAM_H /* Define to 1 if you have the `mkstemps' function. */ #undef HAVE_MKSTEMPS /* Define to 1 if you have the `mprotect' function. */ #undef HAVE_MPROTECT /* Define to 1 on MSVC platforms that have the "invalid parameter handler" concept. */ #undef HAVE_MSVC_INVALID_PARAMETER_HANDLER /* Define to 1 if you have the `nl_langinfo' function. */ #undef HAVE_NL_LANGINFO /* Define to 1 if you have the `pipe' function. */ #undef HAVE_PIPE /* Define if you have the header and the POSIX threads API. */ #undef HAVE_PTHREAD_API /* Define to 1 if you have the `raise' function. */ #undef HAVE_RAISE /* Define to 1 if you have the `rawmemchr' function. */ #undef HAVE_RAWMEMCHR /* Define to 1 if you have the `readlink' function. */ #undef HAVE_READLINK /* Define to 1 if you have the `reallocarray' function. */ #undef HAVE_REALLOCARRAY /* Define to 1 if you have the `realpath' function. */ #undef HAVE_REALPATH /* Define to 1 if 'long double' and 'double' have the same representation. */ #undef HAVE_SAME_LONG_DOUBLE_AS_DOUBLE /* Define to 1 if you have the header file. */ #undef HAVE_SDKDDKVER_H /* Define to 1 if you have the `setdtablesize' function. */ #undef HAVE_SETDTABLESIZE /* Define to 1 if you have the `sigaction' function. */ #undef HAVE_SIGACTION /* Define to 1 if you have the `sigaltstack' function. */ #undef HAVE_SIGALTSTACK /* Define to 1 if the system has the type `siginfo_t'. */ #undef HAVE_SIGINFO_T /* Define to 1 if you have the `siginterrupt' function. */ #undef HAVE_SIGINTERRUPT /* Define to 1 if 'sig_atomic_t' is a signed integer type. */ #undef HAVE_SIGNED_SIG_ATOMIC_T /* Define to 1 if 'wchar_t' is a signed integer type. */ #undef HAVE_SIGNED_WCHAR_T /* Define to 1 if 'wint_t' is a signed integer type. */ #undef HAVE_SIGNED_WINT_T /* Define to 1 if the system has the type `sigset_t'. */ #undef HAVE_SIGSET_T /* Define to 1 if you have the `snprintf' function. */ #undef HAVE_SNPRINTF /* Define if the return value of the snprintf function is the number of of bytes (excluding the terminating NUL) that would have been produced if the buffer had been large enough. */ #undef HAVE_SNPRINTF_RETVAL_C99 /* Define if the string produced by the snprintf function is always NUL terminated. */ #undef HAVE_SNPRINTF_TRUNCATION_C99 /* Define to 1 if you have the header file. */ #undef HAVE_STDBOOL_H /* Define to 1 if you have the header file. */ #undef HAVE_STDCKDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define if exists, doesn't clash with , and declares uintmax_t. */ #undef HAVE_STDINT_H_WITH_UINTMAX /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define if you have `strerror_r'. */ #undef HAVE_STRERROR_R /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strndup' function. */ #undef HAVE_STRNDUP /* Define to 1 if you have the `strnlen' function. */ #undef HAVE_STRNLEN /* Define to 1 if `sa_sigaction' is a member of `struct sigaction'. */ #undef HAVE_STRUCT_SIGACTION_SA_SIGACTION /* Define to 1 if `st_atimensec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIMENSEC /* Define to 1 if `st_atimespec.tv_nsec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC /* Define to 1 if `st_atim.st__tim.tv_nsec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC /* Define to 1 if `st_atim.tv_nsec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC /* Define to 1 if `st_birthtimensec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC /* Define to 1 if `st_birthtim.tv_nsec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC /* Define to 1 if you have the `symlink' function. */ #undef HAVE_SYMLINK /* Define to 1 if you have the header file. */ #undef HAVE_SYS_BITYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_CDEFS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MMAN_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_RANDOM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the header file. */ #undef HAVE_THREADS_H /* Define to 1 if you have the `towlower' function. */ #undef HAVE_TOWLOWER /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if the system has the type 'unsigned long long int'. */ #undef HAVE_UNSIGNED_LONG_LONG_INT /* Define to 1 if you have the `utime' function. */ #undef HAVE_UTIME /* Define to 1 if you have the header file. */ #undef HAVE_UTIME_H /* Define if you have a global __progname variable */ #undef HAVE_VAR___PROGNAME /* Define to 1 if you have the `vasnprintf' function. */ #undef HAVE_VASNPRINTF /* Define to 1 if you have the `vasprintf' function. */ #undef HAVE_VASPRINTF /* Define to 1 or 0, depending whether the compiler supports simple visibility declarations. */ #undef HAVE_VISIBILITY /* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H /* Define if you have the 'wchar_t' type. */ #undef HAVE_WCHAR_T /* Define to 1 if you have the `wcrtomb' function. */ #undef HAVE_WCRTOMB /* Define to 1 if you have the `wcslen' function. */ #undef HAVE_WCSLEN /* Define to 1 if you have the `wcsnlen' function. */ #undef HAVE_WCSNLEN /* Define to 1 if you have the header file. */ #undef HAVE_WCTYPE_H /* Define to 1 if the compiler and linker support weak declarations of symbols. */ #undef HAVE_WEAK_SYMBOLS /* Define to 1 if you have the header file. */ #undef HAVE_WINSOCK2_H /* Define if you have the 'wint_t' type. */ #undef HAVE_WINT_T /* Define to 1 if O_NOATIME works. */ #undef HAVE_WORKING_O_NOATIME /* Define to 1 if O_NOFOLLOW works. */ #undef HAVE_WORKING_O_NOFOLLOW /* Define to 1 if you have the header file. */ #undef HAVE_XLOCALE_H /* Define to 1 if you have the `_set_invalid_parameter_handler' function. */ #undef HAVE__SET_INVALID_PARAMETER_HANDLER /* Define to 1 if the compiler supports __builtin_expect, and to 2 if does. */ #undef HAVE___BUILTIN_EXPECT #ifndef HAVE___BUILTIN_EXPECT # define __builtin_expect(e, c) (e) #elif HAVE___BUILTIN_EXPECT == 2 # include #endif /* Define to 1 if you have the `__fseterr' function. */ #undef HAVE___FSETERR /* Define to 1 if ctype.h defines __header_inline. */ #undef HAVE___HEADER_INLINE /* Please see the Gnulib manual for how to use these macros. Suppress extern inline with HP-UX cc, as it appears to be broken; see . Suppress extern inline with Sun C in standards-conformance mode, as it mishandles inline functions that call each other. E.g., for 'inline void f (void) { } inline void g (void) { f (); }', c99 incorrectly complains 'reference to static identifier "f" in extern inline function'. This bug was observed with Oracle Developer Studio 12.6 (Sun C 5.15 SunOS_sparc 2017/05/30). Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) on configurations that mistakenly use 'static inline' to implement functions or macros in standard C headers like . For example, if isdigit is mistakenly implemented via a static inline function, a program containing an extern inline function that calls isdigit may not work since the C standard prohibits extern inline functions from calling static functions (ISO C 99 section 6.7.4.(3). This bug is known to occur on: OS X 10.8 and earlier; see: https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html DragonFly; see http://muscles.dragonflybsd.org/bulk/clang-master-potential/20141111_102002/logs/ah-tty-0.3.12.log FreeBSD; see: https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and for clang but remains for g++; see . Assume DragonFly and FreeBSD will be similar. GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 inline semantics, unless -fgnu89-inline is used. It defines a macro __GNUC_STDC_INLINE__ to indicate this situation or a macro __GNUC_GNU_INLINE__ to indicate the opposite situation. GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline semantics but warns, unless -fgnu89-inline is used: warning: C99 inline functions are not supported; using GNU89 warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute It defines a macro __GNUC_GNU_INLINE__ to indicate this situation. */ #if (((defined __APPLE__ && defined __MACH__) \ || defined __DragonFly__ || defined __FreeBSD__) \ && (defined HAVE___HEADER_INLINE \ ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ && ! defined __clang__) \ : ((! defined _DONT_USE_CTYPE_INLINE_ \ && (defined __GNUC__ || defined __cplusplus)) \ || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ && defined __GNUC__ && ! defined __cplusplus)))) # define _GL_EXTERN_INLINE_STDHEADER_BUG #endif #if ((__GNUC__ \ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ : (199901L <= __STDC_VERSION__ \ && !defined __HP_cc \ && !defined __PGI \ && !(defined __SUNPRO_C && __STDC__))) \ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) # define _GL_INLINE inline # define _GL_EXTERN_INLINE extern inline # define _GL_EXTERN_INLINE_IN_USE #elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) # if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ # define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) # else # define _GL_INLINE extern inline # endif # define _GL_EXTERN_INLINE extern # define _GL_EXTERN_INLINE_IN_USE #else # define _GL_INLINE _GL_UNUSED static # define _GL_EXTERN_INLINE _GL_UNUSED static #endif /* In GCC 4.6 (inclusive) to 5.1 (exclusive), suppress bogus "no previous prototype for 'FOO'" and "no previous declaration for 'FOO'" diagnostics, when FOO is an inline function in the header; see and . */ #if __GNUC__ == 4 && 6 <= __GNUC_MINOR__ # if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ # define _GL_INLINE_HEADER_CONST_PRAGMA # else # define _GL_INLINE_HEADER_CONST_PRAGMA \ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") # endif # define _GL_INLINE_HEADER_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ _GL_INLINE_HEADER_CONST_PRAGMA # define _GL_INLINE_HEADER_END \ _Pragma ("GCC diagnostic pop") #else # define _GL_INLINE_HEADER_BEGIN # define _GL_INLINE_HEADER_END #endif /* Define to 1 if the compiler supports the keyword '__inline'. */ #undef HAVE___INLINE /* Define as const if the declaration of iconv() needs const. */ #undef ICONV_CONST /* Define as the bit index in the word where to find bit 0 of the exponent of 'long double'. */ #undef LDBL_EXPBIT0_BIT /* Define as the word index where to find the exponent of 'long double'. */ #undef LDBL_EXPBIT0_WORD /* Define as the bit index in the word where to find the sign of 'long double'. */ #undef LDBL_SIGNBIT_BIT /* Define as the word index where to find the sign of 'long double'. */ #undef LDBL_SIGNBIT_WORD /* Define to 1 if 'lstat' dereferences a symlink specified with a trailing slash. */ #undef LSTAT_FOLLOWS_SLASHED_SYMLINK /* Define to the extension used for runtime loadable modules, say, ".so". */ #undef LT_MODULE_EXT /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Define to the shared library suffix, say, ".dylib". */ #undef LT_SHARED_EXT /* Define to the shared archive member specification, say "(shr.o)". */ #undef LT_SHARED_LIB_MEMBER /* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */ #undef MALLOC_0_IS_NONNULL /* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */ #undef MAP_ANONYMOUS /* Define if the mbrtowc function does not return (size_t) -2 for empty input. */ #undef MBRTOWC_EMPTY_INPUT_BUG /* Define if the mbrtowc function may signal encoding errors in the C locale. */ #undef MBRTOWC_IN_C_LOCALE_MAYBE_EILSEQ /* Define if the mbrtowc function has the NULL pwc argument bug. */ #undef MBRTOWC_NULL_ARG1_BUG /* Define if the mbrtowc function has the NULL string argument bug. */ #undef MBRTOWC_NULL_ARG2_BUG /* Define if the mbrtowc function does not return 0 for a NUL character. */ #undef MBRTOWC_NUL_RETVAL_BUG /* Define if the mbrtowc function returns a wrong return value. */ #undef MBRTOWC_RETVAL_BUG /* Define if the mbrtowc function stores a wide character when reporting incomplete input. */ #undef MBRTOWC_STORES_INCOMPLETE_BUG /* Use GNU style printf and scanf. */ #ifndef __USE_MINGW_ANSI_STDIO # undef __USE_MINGW_ANSI_STDIO #endif /* Define if the vasnprintf implementation needs special code for the 'a' and 'A' directives. */ #undef NEED_PRINTF_DIRECTIVE_A /* Define if the vasnprintf implementation needs special code for the 'F' directive. */ #undef NEED_PRINTF_DIRECTIVE_F /* Define if the vasnprintf implementation needs special code for the 'ls' directive. */ #undef NEED_PRINTF_DIRECTIVE_LS /* Define if the vasnprintf implementation needs special code for 'double' arguments. */ #undef NEED_PRINTF_DOUBLE /* Define if the vasnprintf implementation needs special code for surviving out-of-memory conditions. */ #undef NEED_PRINTF_ENOMEM /* Define if the vasnprintf implementation needs special code for the ' flag. */ #undef NEED_PRINTF_FLAG_GROUPING /* Define if the vasnprintf implementation needs special code for the '-' flag. */ #undef NEED_PRINTF_FLAG_LEFTADJUST /* Define if the vasnprintf implementation needs special code for the 0 flag. */ #undef NEED_PRINTF_FLAG_ZERO /* Define if the vasnprintf implementation needs special code for infinite 'double' arguments. */ #undef NEED_PRINTF_INFINITE_DOUBLE /* Define if the vasnprintf implementation needs special code for infinite 'long double' arguments. */ #undef NEED_PRINTF_INFINITE_LONG_DOUBLE /* Define if the vasnprintf implementation needs special code for 'long double' arguments. */ #undef NEED_PRINTF_LONG_DOUBLE /* Define if the vasnprintf implementation needs special code for supporting large precisions without arbitrary bounds. */ #undef NEED_PRINTF_UNBOUNDED_PRECISION /* Define to 1 if open() fails to recognize a trailing slash. */ #undef OPEN_TRAILING_SLASH_BUG /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to the type that is the result of default argument promotions of type mode_t. */ #undef PROMOTED_MODE_T /* Define if the pthread_in_use() detection is hard. */ #undef PTHREAD_IN_USE_DETECTION_HARD /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'ptrdiff_t'. */ #undef PTRDIFF_T_SUFFIX /* Define to 1 if readlink fails to recognize a trailing slash. */ #undef READLINK_TRAILING_SLASH_BUG /* Define to 1 if readlink sets errno instead of truncating a too-long link. */ #undef READLINK_TRUNCATE_BUG /* Define to 1 if stat needs help when passed a file name with a trailing slash */ #undef REPLACE_FUNC_STAT_FILE /* Define to 1 if utime needs help when passed a file name with a trailing slash */ #undef REPLACE_FUNC_UTIME_FILE /* Define to 1 if strerror(0) does not return a message implying success. */ #undef REPLACE_STRERROR_0 /* Define if vasnprintf exists but is overridden by gnulib. */ #undef REPLACE_VASNPRINTF /* Define if vfprintf is overridden by a POSIX compliant gnulib implementation. */ #undef REPLACE_VFPRINTF_POSIX /* Define if vprintf is overridden by a POSIX compliant gnulib implementation. */ #undef REPLACE_VPRINTF_POSIX /* Define to 1 if setlocale (LC_ALL, NULL) is multithread-safe. */ #undef SETLOCALE_NULL_ALL_MTSAFE /* Define to 1 if setlocale (category, NULL) is multithread-safe. */ #undef SETLOCALE_NULL_ONE_MTSAFE /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'sig_atomic_t'. */ #undef SIG_ATOMIC_T_SUFFIX /* Define as the maximum value of type 'size_t', if the system doesn't define it. */ #ifndef SIZE_MAX # undef SIZE_MAX #endif /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'size_t'. */ #undef SIZE_T_SUFFIX /* 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 runtime. 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 to 1 if the `S_IS*' macros in do not work properly. */ #undef STAT_MACROS_BROKEN /* Define to 1 if all of the C90 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Define to 1 if strerror_r returns char *. */ #undef STRERROR_R_CHAR_P /* Define to 1 if the type of the st_atim member of a struct stat is struct timespec. */ #undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable general extensions on macOS. */ #ifndef _DARWIN_C_SOURCE # undef _DARWIN_C_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable X/Open compliant socket functions that do not require linking with -lxnet on HP-UX 11.11. */ #ifndef _HPUX_ALT_XOPEN_SOCKET_API # undef _HPUX_ALT_XOPEN_SOCKET_API #endif /* Identify the host operating system as Minix. This macro does not affect the system headers' behavior. A future release of Autoconf may stop defining this macro. */ #ifndef _MINIX # undef _MINIX #endif /* Enable general extensions on NetBSD. Enable NetBSD compatibility extensions on Minix. */ #ifndef _NETBSD_SOURCE # undef _NETBSD_SOURCE #endif /* Enable OpenBSD compatibility extensions on NetBSD. Oddly enough, this does nothing on OpenBSD. */ #ifndef _OPENBSD_SOURCE # undef _OPENBSD_SOURCE #endif /* Define to 1 if needed for POSIX-compatible behavior. */ #ifndef _POSIX_SOURCE # undef _POSIX_SOURCE #endif /* Define to 2 if needed for POSIX-compatible behavior. */ #ifndef _POSIX_1_SOURCE # undef _POSIX_1_SOURCE #endif /* Enable POSIX-compatible threading on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ #ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ # undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ #endif /* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ #ifndef __STDC_WANT_IEC_60559_BFP_EXT__ # undef __STDC_WANT_IEC_60559_BFP_EXT__ #endif /* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ # undef __STDC_WANT_IEC_60559_DFP_EXT__ #endif /* Enable extensions specified by C23 Annex F. */ #ifndef __STDC_WANT_IEC_60559_EXT__ # undef __STDC_WANT_IEC_60559_EXT__ #endif /* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ # undef __STDC_WANT_IEC_60559_FUNCS_EXT__ #endif /* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ # undef __STDC_WANT_IEC_60559_TYPES_EXT__ #endif /* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ #ifndef __STDC_WANT_LIB_EXT2__ # undef __STDC_WANT_LIB_EXT2__ #endif /* Enable extensions specified by ISO/IEC 24747:2009. */ #ifndef __STDC_WANT_MATH_SPEC_FUNCS__ # undef __STDC_WANT_MATH_SPEC_FUNCS__ #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable X/Open extensions. Define to 500 only if necessary to make mbstate_t available. */ #ifndef _XOPEN_SOURCE # undef _XOPEN_SOURCE #endif /* Version number of package */ #undef VERSION /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'wchar_t'. */ #undef WCHAR_T_SUFFIX /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'wint_t'. */ #undef WINT_T_SUFFIX /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN # undef WORDS_BIGENDIAN # endif #endif /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ #undef YYTEXT_POINTER /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* True if the compiler says it groks GNU C version MAJOR.MINOR. */ #if defined __GNUC__ && defined __GNUC_MINOR__ # define _GL_GNUC_PREREQ(major, minor) \ ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__)) #else # define _GL_GNUC_PREREQ(major, minor) 0 #endif /* Define to enable the declarations of ISO C 11 types and functions. */ #undef _ISOC11_SOURCE /* Define to 1 on platforms where this makes off_t a 64-bit type. */ #undef _LARGE_FILES /* Define to 1 on Solaris. */ #undef _LCONV_C99 /* The _Noreturn keyword of C11. */ #ifndef _Noreturn # if (defined __cplusplus \ && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ || (defined _MSC_VER && 1900 <= _MSC_VER)) \ && 0) /* [[noreturn]] is not practically usable, because with it the syntax extern _Noreturn void func (...); would not be valid; such a declaration would only be valid with 'extern' and '_Noreturn' swapped, or without the 'extern' keyword. However, some AIX system header files and several gnulib header files use precisely this syntax with 'extern'. */ # define _Noreturn [[noreturn]] # elif (defined __clang__ && __clang_major__ < 16 \ && defined _GL_WORK_AROUND_LLVM_BUG_59792) /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around that rare LLVM bug, though you may get many false-alarm warnings. */ # define _Noreturn # elif ((!defined __cplusplus || defined __clang__) \ && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ || (!defined __STRICT_ANSI__ \ && (_GL_GNUC_PREREQ (4, 7) \ || (defined __apple_build_version__ \ ? 6000000 <= __apple_build_version__ \ : 3 < __clang_major__ + (5 <= __clang_minor__)))))) /* _Noreturn works as-is. */ # elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C # define _Noreturn __attribute__ ((__noreturn__)) # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) # define _Noreturn __declspec (noreturn) # else # define _Noreturn # endif #endif /* Number of bits in time_t, on hosts where this is settable. */ #undef _TIME_BITS /* For standard stat data types on VMS. */ #undef _USE_STD_STAT /* Define to rpl_ if the getopt replacement functions and variables should be used. */ #undef __GETOPT_PREFIX /* Define to 1 on platforms where this makes time_t a 64-bit type. */ #undef __MINGW_USE_VC2005_COMPAT /* Define to 1 if the system predates C++11. */ #undef __STDC_CONSTANT_MACROS /* Define to 1 if the system predates C++11. */ #undef __STDC_LIMIT_MACROS /* Define to 1 if C does not support variable-length arrays, and if the compiler does not already define this. */ #undef __STDC_NO_VLA__ /* The _GL_ASYNC_SAFE marker should be attached to functions that are signal handlers (for signals other than SIGABRT, SIGPIPE) or can be invoked from such signal handlers. Such functions have some restrictions: * All functions that it calls should be marked _GL_ASYNC_SAFE as well, or should be listed as async-signal-safe in POSIX section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in particular, are NOT async-signal-safe. * All memory locations (variables and struct fields) that these functions access must be marked 'volatile'. This holds for both read and write accesses. Otherwise the compiler might optimize away stores to and reads from such locations that occur in the program, depending on its data flow analysis. For example, when the program contains a loop that is intended to inspect a variable set from within a signal handler while (!signal_occurred) ; the compiler is allowed to transform this into an endless loop if the variable 'signal_occurred' is not declared 'volatile'. Additionally, recall that: * A signal handler should not modify errno (except if it is a handler for a fatal signal and ends by raising the same signal again, thus provoking the termination of the process). If it invokes a function that may clobber errno, it needs to save and restore the value of errno. */ #define _GL_ASYNC_SAFE /* Attributes. */ #if (defined __has_attribute \ && (!defined __clang_minor__ \ || (defined __apple_build_version__ \ ? 6000000 <= __apple_build_version__ \ : 5 <= __clang_major__))) # define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) #else # define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr # define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) # define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) # define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) # define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) # define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) # define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) # define _GL_ATTR_diagnose_if 0 # define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) # define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) # define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) # define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) # define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) # define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) # ifdef _ICC # define _GL_ATTR_may_alias 0 # else # define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) # endif # define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) # define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) # define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) # define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) # define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) # define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) # define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) # define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) # define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) # define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) #endif /* Disable GCC -Wpedantic if using __has_c_attribute and this is not C23+. */ #if (defined __has_c_attribute && _GL_GNUC_PREREQ (4, 6) \ && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710) # pragma GCC diagnostic ignored "-Wpedantic" #endif /* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function is the size of the returned memory block. _GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied by the Nth argument of the function is the size of the returned memory block. */ /* Applies to: function, pointer to function, function types. */ #ifndef _GL_ATTRIBUTE_ALLOC_SIZE # if _GL_HAS_ATTRIBUTE (alloc_size) # define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) # else # define _GL_ATTRIBUTE_ALLOC_SIZE(args) # endif #endif /* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the function and report an error if it cannot do so. */ /* Applies to: function. */ #ifndef _GL_ATTRIBUTE_ALWAYS_INLINE # if _GL_HAS_ATTRIBUTE (always_inline) # define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) # else # define _GL_ATTRIBUTE_ALWAYS_INLINE # endif #endif /* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show in stack traces when debugging. The compiler should omit the function from stack traces. */ /* Applies to: function. */ #ifndef _GL_ATTRIBUTE_ARTIFICIAL # if _GL_HAS_ATTRIBUTE (artificial) # define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) # else # define _GL_ATTRIBUTE_ARTIFICIAL # endif #endif /* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ /* Applies to: functions. */ /* Avoid __attribute__ ((cold)) on MinGW; see thread starting at . Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ #ifndef _GL_ATTRIBUTE_COLD # if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ # ifndef __SUNPRO_C # define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) # else # define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) # endif # else # define _GL_ATTRIBUTE_COLD # endif #endif /* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate calls to the function with the same arguments. This attribute is safe for a function that neither depends on nor affects observable state, and always returns exactly once - e.g., does not loop forever, and does not call longjmp. (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_CONST # if _GL_HAS_ATTRIBUTE (const) # define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) # else # define _GL_ATTRIBUTE_CONST # endif #endif /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers that can be freed by passing them as the Ith argument to the function F. _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that can be freed via 'free'; it can be used only after declaring 'free'. */ /* Applies to: functions. Cannot be used on inline functions. */ #ifndef _GL_ATTRIBUTE_DEALLOC # if _GL_GNUC_PREREQ (11, 0) # define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) # else # define _GL_ATTRIBUTE_DEALLOC(f, i) # endif #endif /* If gnulib's or has already defined this macro, continue to use this earlier definition, since may not have been included yet. */ #ifndef _GL_ATTRIBUTE_DEALLOC_FREE # if defined __cplusplus && defined __GNUC__ && !defined __clang__ /* Work around GCC bug */ # define _GL_ATTRIBUTE_DEALLOC_FREE \ _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1) # else # define _GL_ATTRIBUTE_DEALLOC_FREE \ _GL_ATTRIBUTE_DEALLOC (free, 1) # endif #endif /* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. The compiler may warn if the entity is used. */ /* Applies to: - function, variable, - struct, union, struct/union member, - enumeration, enumeration item, - typedef, in C++ also: namespace, class, template specialization. */ #ifndef _GL_ATTRIBUTE_DEPRECATED # ifdef __has_c_attribute # if __has_c_attribute (__deprecated__) # define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] # endif # endif # if !defined _GL_ATTRIBUTE_DEPRECATED && _GL_HAS_ATTRIBUTE (deprecated) # define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) # endif # ifndef _GL_ATTRIBUTE_DEPRECATED # define _GL_ATTRIBUTE_DEPRECATED # endif #endif /* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and the function call is not optimized away. _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and the function call is not optimized away. */ /* Applies to: functions. */ #if !(defined _GL_ATTRIBUTE_ERROR && defined _GL_ATTRIBUTE_WARNING) # if _GL_HAS_ATTRIBUTE (error) # define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) # define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) # elif _GL_HAS_ATTRIBUTE (diagnose_if) # define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) # define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) # else # define _GL_ATTRIBUTE_ERROR(msg) # define _GL_ATTRIBUTE_WARNING(msg) # endif #endif /* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain visible to debuggers etc., even with '-fwhole-program'. */ /* Applies to: functions, variables. */ #ifndef _GL_ATTRIBUTE_EXTERNALLY_VISIBLE # if _GL_HAS_ATTRIBUTE (externally_visible) # define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) # else # define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE # endif #endif /* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if the control flow falls through to the immediately following 'case' or 'default' label. The compiler should not warn in this case. */ /* Applies to: Empty statement (;), inside a 'switch' statement. */ /* Always expands to something. */ #ifndef _GL_ATTRIBUTE_FALLTHROUGH # ifdef __has_c_attribute # if __has_c_attribute (__fallthrough__) # define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] # endif # endif # if !defined _GL_ATTRIBUTE_FALLTHROUGH && _GL_HAS_ATTRIBUTE (fallthrough) # define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) # endif # ifndef _GL_ATTRIBUTE_FALLTHROUGH # define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) # endif #endif /* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) declares that the STRING-INDEXth function argument is a format string of style ARCHETYPE, which is one of: printf, gnu_printf scanf, gnu_scanf, strftime, gnu_strftime, strfmon, or the same thing prefixed and suffixed with '__'. If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK are suitable for the format string. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_FORMAT # if _GL_HAS_ATTRIBUTE (format) # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) # else # define _GL_ATTRIBUTE_FORMAT(spec) # endif #endif /* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other compilation unit, it executes code from that unit only by return or by exception handling. This declaration lets the compiler optimize that unit more aggressively. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_LEAF # if _GL_HAS_ATTRIBUTE (leaf) # define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) # else # define _GL_ATTRIBUTE_LEAF # endif #endif /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly allocated memory. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_MALLOC # if _GL_HAS_ATTRIBUTE (malloc) # define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) # else # define _GL_ATTRIBUTE_MALLOC # endif #endif /* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the same storage as pointers to other types. Thus this declaration disables strict aliasing optimization. */ /* Applies to: types. */ /* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ #ifndef _GL_ATTRIBUTE_MAY_ALIAS # if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C # define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) # else # define _GL_ATTRIBUTE_MAY_ALIAS # endif #endif /* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if the entity is not used. The compiler should not warn if the entity is not used. */ /* Applies to: - function, variable, - struct, union, struct/union member, - enumeration, enumeration item, - typedef, in C++ also: class. */ /* In C++ and C23, this is spelled [[__maybe_unused__]]. GCC's syntax is __attribute__ ((__unused__)). clang supports both syntaxes. Except that with clang ≥ 6, < 10, in C++ mode, __has_c_attribute (__maybe_unused__) yields true but the use of [[__maybe_unused__]] nevertheless produces a warning. */ #ifndef _GL_ATTRIBUTE_MAYBE_UNUSED # if defined __clang__ && defined __cplusplus # if !defined __apple_build_version__ && __clang_major__ >= 10 # define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] # endif # elif defined __has_c_attribute # if __has_c_attribute (__maybe_unused__) # define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] # endif # endif # ifndef _GL_ATTRIBUTE_MAYBE_UNUSED # define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED # endif #endif /* Alternative spelling of this macro, for convenience and for compatibility with glibc/include/libc-symbols.h. */ #define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED /* Earlier spellings of this macro. */ #define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED /* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not discard the return value. The compiler may warn if the caller does not use the return value, unless the caller uses something like ignore_value. */ /* Applies to: function, enumeration, class. */ #ifndef _GL_ATTRIBUTE_NODISCARD # if defined __clang__ && defined __cplusplus /* With clang up to 15.0.6 (at least), in C++ mode, [[__nodiscard__]] produces a warning. The 1000 below means a yet unknown threshold. When clang++ version X starts supporting [[__nodiscard__]] without warning about it, you can replace the 1000 with X. */ # if __clang_major__ >= 1000 # define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] # endif # elif defined __has_c_attribute # if __has_c_attribute (__nodiscard__) # define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] # endif # endif # if !defined _GL_ATTRIBUTE_NODISCARD && _GL_HAS_ATTRIBUTE (warn_unused_result) # define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) # endif # ifndef _GL_ATTRIBUTE_NODISCARD # define _GL_ATTRIBUTE_NODISCARD # endif #endif /* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the function. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_NOINLINE # if _GL_HAS_ATTRIBUTE (noinline) # define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) # else # define _GL_ATTRIBUTE_NOINLINE # endif #endif /* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... must not be NULL. _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be null. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_NONNULL # if _GL_HAS_ATTRIBUTE (nonnull) # define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) # else # define _GL_ATTRIBUTE_NONNULL(args) # endif #endif /* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is not meant to be NUL-terminated. */ /* Applies to: struct/union members and variables that are arrays of element type '[[un]signed] char'. */ #ifndef _GL_ATTRIBUTE_NONSTRING # if _GL_HAS_ATTRIBUTE (nonstring) # define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) # else # define _GL_ATTRIBUTE_NONSTRING # endif #endif /* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ /* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_NOTHROW # if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus # define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) # else # define _GL_ATTRIBUTE_NOTHROW # endif #endif /* _GL_ATTRIBUTE_PACKED declares: For struct members: The member has the smallest possible alignment. For struct, union, class: All members have the smallest possible alignment, minimizing the memory required. */ /* Applies to: struct members, struct, union, in C++ also: class. */ #ifndef _GL_ATTRIBUTE_PACKED # if _GL_HAS_ATTRIBUTE (packed) # define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) # else # define _GL_ATTRIBUTE_PACKED # endif #endif /* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate calls to the function with the same arguments if observable state is not changed between calls. This attribute is safe for a function that does not affect observable state, and always returns exactly once. (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_PURE # if _GL_HAS_ATTRIBUTE (pure) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else # define _GL_ATTRIBUTE_PURE # endif #endif /* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is a non-NULL pointer. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_RETURNS_NONNULL # if _GL_HAS_ATTRIBUTE (returns_nonnull) # define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) # else # define _GL_ATTRIBUTE_RETURNS_NONNULL # endif #endif /* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a trailing NULL argument. _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_SENTINEL # if _GL_HAS_ATTRIBUTE (sentinel) # define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) # else # define _GL_ATTRIBUTE_SENTINEL(pos) # endif #endif /* A helper macro. Don't use it directly. */ #ifndef _GL_ATTRIBUTE_UNUSED # if _GL_HAS_ATTRIBUTE (unused) # define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) # else # define _GL_ATTRIBUTE_UNUSED # endif #endif /* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the immediately preceding label is not used. The compiler should not warn if the label is not used. */ /* Applies to: label (both in C and C++). */ /* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' syntax. But clang does. */ #ifndef _GL_UNUSED_LABEL # if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ # define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED # else # define _GL_UNUSED_LABEL # endif #endif /* Define to `int' if doesn't define. */ #undef gid_t /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to long or long long if and don't define. */ #undef intmax_t /* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. __APPLE__ && __MACH__ test for Mac OS X. __APPLE_CC__ tests for the Apple compiler and its version. __STDC_VERSION__ tests for the C99 mode. */ #if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ # define __GNUC_STDC_INLINE__ 1 #endif /* Define to a type if does not define. */ #undef mbstate_t /* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where n1 and n2 are expressions without side effects, that evaluate to real numbers (excluding NaN). It returns 1 if n1 > n2 0 if n1 == n2 -1 if n1 < n2 The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional jump with nearly all GCC versions up to GCC 10. This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many GCC versions up to GCC 9. The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 avoids conditional jumps in all GCC versions >= 3.4. */ #define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) /* Define to `int' if does not define. */ #undef mode_t /* Define to the type of st_nlink in struct stat, or a supertype. */ #undef nlink_t /* Define as a signed integer type capable of holding a process identifier. */ #undef pid_t /* Define as the type of the result of subtracting two pointers, if the system doesn't define it. */ #undef ptrdiff_t /* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is supported only directly. */ #undef restrict /* Work around a bug in older versions of Sun C++, which did not #define __restrict__ or support _Restrict or __restrict__ even though the corresponding Sun C compiler ended up with "#define restrict _Restrict" or "#define restrict __restrict__" in the previous line. This workaround can be removed once we assume Oracle Developer Studio 12.5 (2016) or later. */ #if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__ # define _Restrict # define __restrict__ #endif /* Define to `unsigned int' if does not define. */ #undef size_t /* Define as a signed type of the same size as size_t. */ #undef ssize_t /* Define to `int' if doesn't define. */ #undef uid_t #if !defined HAVE_C_ALIGNASOF && __cplusplus < 201103 && !defined alignof # if HAVE_STDALIGN_H # include # endif /* ISO C23 alignas and alignof for platforms that lack it. References: ISO C23 (latest free draft ) sections 6.5.3.4, 6.7.5, 7.15. C++11 (latest free draft ) section 18.10. */ /* alignof (TYPE), also known as _Alignof (TYPE), yields the alignment requirement of a structure member (i.e., slot or field) that is of type TYPE, as an integer constant expression. This differs from GCC's and clang's __alignof__ operator, which can yield a better-performing alignment for an object of that type. For example, on x86 with GCC and on Linux/x86 with clang, __alignof__ (double) and __alignof__ (long long) are 8, whereas alignof (double) and alignof (long long) are 4 unless the option '-malign-double' is used. The result cannot be used as a value for an 'enum' constant, if you want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc. */ /* GCC releases before GCC 4.9 had a bug in _Alignof. See GCC bug 52023 . clang versions < 8.0.0 have the same bug. */ # if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 \ || (defined __GNUC__ && __GNUC__ < 4 + (__GNUC_MINOR__ < 9) \ && !defined __clang__) \ || (defined __clang__ && __clang_major__ < 8)) # undef/**/_Alignof # ifdef __cplusplus # if (201103 <= __cplusplus || defined _MSC_VER) # define _Alignof(type) alignof (type) # else template struct __alignof_helper { char __a; __t __b; }; # define _Alignof(type) offsetof (__alignof_helper, __b) # define _GL_STDALIGN_NEEDS_STDDEF 1 # endif # else # if (defined __GNUC__ && 4 <= __GNUC__) || defined __clang__ # define _Alignof(type) __builtin_offsetof (struct { char __a; type __b; }, __b) # else # define _Alignof(type) offsetof (struct { char __a; type __b; }, __b) # define _GL_STDALIGN_NEEDS_STDDEF 1 # endif # endif # endif # if ! (defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER)) # undef/**/alignof # define alignof _Alignof # endif /* alignas (A), also known as _Alignas (A), aligns a variable or type to the alignment A, where A is an integer constant expression. For example: int alignas (8) foo; struct s { int a; int alignas (8) bar; }; aligns the address of FOO and the offset of BAR to be multiples of 8. A should be a power of two that is at least the type's alignment and at most the implementation's alignment limit. This limit is 2**28 on typical GNUish hosts, and 2**13 on MSVC. To be portable to MSVC through at least version 10.0, A should be an integer constant, as MSVC does not support expressions such as 1 << 3. To be portable to Sun C 5.11, do not align auto variables to anything stricter than their default alignment. The following C23 requirements are not supported here: - If A is zero, alignas has no effect. - alignas can be used multiple times; the strictest one wins. - alignas (TYPE) is equivalent to alignas (alignof (TYPE)). */ # if !HAVE_STDALIGN_H # if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 # if defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER) # define _Alignas(a) alignas (a) # elif (!defined __attribute__ \ && ((defined __APPLE__ && defined __MACH__ \ ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \ : __GNUC__ && !defined __ibmxl__) \ || (4 <= __clang_major__) \ || (__ia64 && (61200 <= __HP_cc || 61200 <= __HP_aCC)) \ || __ICC || 0x590 <= __SUNPRO_C || 0x0600 <= __xlC__)) # define _Alignas(a) __attribute__ ((__aligned__ (a))) # elif 1300 <= _MSC_VER # define _Alignas(a) __declspec (align (a)) # endif # endif # if ((defined _Alignas \ && !(defined __cplusplus \ && (201103 <= __cplusplus || defined _MSC_VER))) \ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) # define alignas _Alignas # endif # endif # if _GL_STDALIGN_NEEDS_STDDEF # include # endif #endif #ifndef HAVE_C_BOOL # if !defined __cplusplus && !defined __bool_true_false_are_defined # if HAVE_STDBOOL_H # include # else # if defined __SUNPRO_C # error " is not usable with this configuration. To make it usable, add -D_STDC_C99= to $CC." # else # error " does not exist on this platform. Use gnulib module 'stdbool-c99' instead of gnulib module 'stdbool'." # endif # endif # endif # if !true # define true (!false) # endif #endif #if (!defined HAVE_C_STATIC_ASSERT && !defined assert \ && (!defined __cplusplus \ || (__cpp_static_assert < 201411 \ && __GNUG__ < 6 && __clang_major__ < 6))) #include #undef/**/assert #ifdef __sgi #undef/**/__ASSERT_H__ #endif /* Solaris 11.4 defines static_assert as a macro with 2 arguments. We need it also to be invocable with a single argument. */ #if defined __sun && (__STDC_VERSION__ - 0 >= 201112L) && !defined __cplusplus #undef/**/static_assert #define static_assert _Static_assert #endif #endif recode-3.7.15/po/0000755000175000017500000000000014766021055007235 5recode-3.7.15/po/hu.gmo0000644000175000017500000001731214766021055010301 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€Ð‰¨ZÙ×ÝLµ ! 5BX<q4®Mã-1=_0Î$ì7&I p3‘Åßkõ"a„,¡ ÎØ?ö6L3`” ¯#¼>à$Dc0x%©AÏ ,œ9@Ö£/ Ó?ô4Nk‰¢¨» À:. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2012-04-26 23:19+0200 Last-Translator: Gabor Kelemen Language-Team: Hungarian Language: hu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. X-Generator: KBabel 1.11.4 Plural-Forms: nplurals=2; plural=(n != 1); Ha a hosszú kapcsolóhoz kötelezÅ‘ argumentumot megadni, akkor az a megfelelÅ‘ rövid kapcsolóra is vonatkozik. Hasonló a helyzet a választható argumentumokkal. A -l FORMÃTUM és KARKÉSZL nélkül felsorolja az elérhetÅ‘ karakterkészleteket és felületeket. A FORMÃTUM is a „decimalâ€, „octalâ€, „hexadecimal†vagy „full†egyike (vagy a „dohf†egyike). A KÉRÉS = ALKÉRÉS[,ALKÉRÉS]...; az ALKÉRÉS = KÓDOLÃS[..KÓDOLÃS]... A KÓDOLÃS = [KARAKTERKÉSZLET][/[FELSZÃN]]...; a KÉRÉS gyakran ELÅTTE..UTÃNA alakú, ahol az ELÅTTE és UTÃNA is karakterkészlet. A kihagyott KARAKTERKÉSZLET a megszokott karakterkészlettel egyenlÅ‘, a kihagyott [/FELÜLET]... a KARKÉSZLETBÅL következÅ‘ felületeket jelenti, az üres felületnévvel álló / letiltja a felület használatát. Nézze meg a kézikönyvet is. Használat: %s [KAPCSOLÓK]... [ [KARAKTERKÉSZLET] | KÉRÉS [FÃJL]... ] kész %s -> %s%sa következÅ‘ sorozathoz: %s.%s*Lehetetlen**egyszerű másolás*Nem egyértelmű kimenetNem egészíthetÅ‘ ki a tábla az ismert párok halmazábólNem fordítható meg a megadott egy-az-egyhez tábla„%s†nem sorolható fel, nem érhetÅ‘ el név ehhez a karakterkészlethez%s karakterkészlet már létezik és nem %s.A karakterkészlet ismeretlen vagy nem egyértelmű: „%sâ€A gyermekfolyamat várakozási állapota 0x%0.2xDec Oct Hex UCS2 Mne %s „..â€-t kell megadni a kérésben„%s†diagnosztikájának követése ehhez: „%sâ€A formátum nem egyértelmű: „%sâ€A formátum ismeretlen: „%sâ€Azonosság-újrakódolás, nem ér meg egy táblátBelsÅ‘ átkódolási hibaÉrvénytelen bemenetA NYELV valamilyen programnyelv, lehet „câ€, „perl†vagy „poâ€; a „c†az alap- értelmezett. A nyelv nem egyértelmű: „%sâ€A nyelv ismeretlen: „%sâ€Az átkódoló könyvtár téves használataHibátlanNincs nyomtatható táblázatNem lehetséges az átkódolás „%s†és „%s†között.Nem kanonikus bemenet%s átkódolása...Az átkódolás túl összetett egyetlen tábláhozA kérés hibás: „%sâ€Kérés: %s Hiányzik egy kötelezÅ‘ argumentumA „resurfacer†többször lett beállítva ehhez: „%sâ€A sorozat nem egyértelmű: „%sâ€A sorozat ismeretlen: „%sâ€Szűkítve erre: %s Elnézést, nem érhetÅ‘ el név ehhez: „%sâ€A lépés inicializálása sikertelenA lépés inicializálása sikertelen (feldolgozatlan kapcsolók)A jel ismeretlen: „%sâ€RendszerhibaEz szabad szoftver; lásd a forrást a terjesztési feltételekért. Nincs garancia, még az eladhatóságra vagy egy adott célra való megfelelésre sem. További információkért adja ki a következÅ‘t: „%s %sâ€. UCS2 Mne leírás Ha a DEFAULT_CHARSET nincs beállítva a környezetben, a KARKÉSZL a területi beállítástól függÅ‘ kódolást használja az LC_ALL, LC_CTYPE, LANG alapján. Ismeretlen felületnév „%sâ€Az „unsurfacer†többször lett beállítva ehhez: „%sâ€Lefordíthatatlan bemenetA virtuális memória beteltA virtuális memória betelt!A -k kapcsolóval a lehetséges ELÅTTE karakterkészletek felsorolásra kerülnek az adott UTÃNA karakterkészlethez, ahol mindkettÅ‘ táblázatos karakterkészlet, „ELÅ1:UTÃN1,ELÅ2:UTÃN2,...†formátumban, és az ELŠés UTÃN decimális számokként megadott kódok. bájtvisszafordíthatóucs2változórecode-3.7.15/po/pt.gmo0000644000175000017500000002250614766021055010311 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“霒†©§ªQ»ü5¸>î- 55@vŽ «>»1úP,3}9±-ë0Jh*€«Æ5å;LK˜ µ(Ö$ÿ $.,Gt0‹R¼ 3# W q } -š È !æ !*!!G!=i!§!Ç!¯å!&•"¼"›×")s#-#Ë#á#û#Ö$8í$&% +%7% <%+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: GNU recode 3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2019-09-26 07:29+0100 Last-Translator: Pedro Albuquerque Language-Team: Portuguese Language: pt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Geany / PoHelper 1.36 Cada FICHEIRO é recodificado sobre si mesmo, destruindo o original. Se não indicar FICHEIRO, actua como filtro e recodifica stdin para stdout. Argumentos obrigatórios para opções longas também são obrigatórios para a opção curta equivalente. Similar em argumentos opcionais. Modos de operação: -v, --verbose explica a sequência dos passos e reporta o progresso -q, --quiet, --silent inibe mensagens sobre recodificações irreversíveis -f, --force força recodificações mesmo quando não são reversíveis -t, --touch toca nos ficheiros recodificados após a substituição -i, -p, --sequence=ESTRATÉGIA ignorado para compatibilidade retroactiva A opção -l sem FORMATO ou CONJCAR lista conjuntos de caracteres e superfícies disponíveis. FORMATO é "decimal", "octal", "hexadecimal" ou "full" (ou um de "dohf"). PEDIDO é SUB-PEDIDO[,SUB-PEDIDO]...; SUB-PEDIDO é CODIFICAÇÂO[..CODIFICAÇÃO]... CODIFICAÇÃO é [CONJCAR][/[SUPERFÃCIE]]...; PEDIDO parece-se muitas vezes com ANTES..DEPOIS, com ANTES e DEPOIS sendo conjuntos de caracteres. Um CONJCAR omitido implica o conjunto habitual; uma [/SUPERFÃCIE]... omitida significa as superfícies implicadas para CONJCAR; uma / com superfície vazia significa que não há superfícies. Veja o manual. Reporte erros em https://github.com/rrthomas/recode Uso: %s [OPÇÃO]... [ [CONJCARACT] | PEDIDO [FICHEIRO]... ] feito %s para %s%sTabela de conversão gerada mecanicamente por %s %s%spara sequência %s.%s*Inatingível**mera cópia*Saída ambíguaImpossível completar a tabela do conjunto de pares conhecidosImpossível inverter a tabela um-para-um indicadaImpossível listar "%s", sem nomes disponíveis para este conjunto de caracteresO conjunto de caracteres %s já existe e não é %sO conjunto de caracteres "%s" é desconhecido ou ambíguoEstado de espera do processo-filho é 0x%0.2xAmbos os códigos %3d e %3u recodificam para %3dDec Oct Hex UCS2 Mne %s Esperado ".." no pedidoA seguir diagnósticos para "%s" para "%s"O formato "%s" é ambíguoO formato "%s" é desconhecidoRecodificação de identidade, não merece uma tabelaErro interno de recodificaçãoEntra inválidaLN é uma linguagem, pode ser "c", "perl" ou "po"; "c" é a predefinição. A linguagem "%s" é ambíguaA linguagem "%s" é desconhecidaMau uso da biblioteca de recodificaçãoNenhum carácter recodifica para %3uSem errosSem tabela para imprimirNão há forma de recodificar "%s" para "%s"Entrada não canónicaPar nº. %u: <%3d, %3d> conflitua com <%3d, %3d>O Recode converte ficheiros entre vários conjuntos e superfícies de caracteres. A recodificar %s...Recodificação muito complexa para uma mera tabelaO pedido "%s" é erróneoPedido: %s Argumento requerido em faltaResurfacer definido mais de uma vez para "%s"A sequência "%s" é ambíguaA sequência "%s" é desconhecidaEncolhido para: %s Desculpe, sem nomes disponíveis para "%s"Inicialização por passos falhouInicialização por passos falhou (opções não processadas)O símbolo "%s" é desconhecidoProblema de sistema detectadoEste é um programa gratuito; veja a fonte para condições de cópia. NÃO há QUALQUER garantia; nem mesmo para COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM PROPÓSITO PARTICULAR. Tente "%s %s" para mais informação. UCS2 Mne Descrição A menos que DEFAULT_CHARSET esteja definida no ambiente, CONJCAR reverte para a codificação regional dependente, determinada por LC_ALL, LC_CTYPE, LANG. Nome de superfície "%s" não reconhecidoUnsurfacer definido mais de uma vez para "%s"Entrada intraduzívelMemória virtual esgotadaMemória virtual esgotada!Com -k, possíveis conjuntos ANTES são listados para o dado CONJCAR DEPOIS, sendo ambos conjuntos tabulares, com PARES da forma "ANT1:DEP1,ANT2:DEP2,..." e ANTs e DEPs sendo códigos dados como números decimais. Escrito por François Pinard . bytereversívelucs2variávelrecode-3.7.15/po/uk.po0000644000175000017500000005252614766021055010146 # Ukrainian translation of recode # Copyright (C) 2019 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # # Yuri Chornoivan , 2019. msgid "" msgstr "" "Project-Id-Version: GNU recode 3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2019-05-21 16:26+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 19.04.0\n" #: src/main.c:112 msgid "No error" msgstr "Ðемає помилок" #: src/main.c:115 msgid "Non canonical input" msgstr "Ðеканонічні вхідні дані" #: src/main.c:118 msgid "Ambiguous output" msgstr "Ðеоднозначні вихідні дані" #: src/main.c:121 msgid "Untranslatable input" msgstr "Ðепридатні до транÑлÑції вхідні дані" #: src/main.c:124 msgid "Invalid input" msgstr "Ðекоректні вхідні дані" #: src/main.c:127 msgid "System detected problem" msgstr "СиÑтемою виÑвлено проблему" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Помилкове викориÑÑ‚Ð°Ð½Ð½Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð²Ð°Ð´Ð° перекодуваннÑ" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Ð¦Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° — вільне програмне забезпеченнÑ; Ви можете розповÑюджувати Ñ—Ñ—\n" "та/або вноÑити зміни відповідно до умов Загальної Публічної Ліцензії GNU у " "тому\n" "виглÑді, у Ñкому Ñ—Ñ— було оприлюднено Фундацією Вільного Програмного\n" "ЗабезпеченнÑ; або верÑÑ–Ñ— 2 Ліцензії, або (на Ваш розÑуд) будь-Ñкої більш\n" "пізньої верÑÑ–Ñ—.\n" "\n" "Ð¦Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° розповÑюджуєтьÑÑ Ñ–Ð· ÑподіваннÑм, що вона виÑвитьÑÑ ÐºÐ¾Ñ€Ð¸Ñною, " "але\n" "БЕЗ БУДЬ-ЯКОЇ ГÐРÐÐТІЇ, без навіть УЯВÐОЇ ГÐРÐÐТІЇ КОМЕРЦІЙÐОЇ ПРИДÐТÐОСТІ " "чи\n" "ВІДПОВІДÐОСТІ БУДЬ-ЯКОМУ ПЕВÐОМУ ЗÐСТОСУВÐÐÐЮ. ЗвернітьÑÑ Ð´Ð¾ Загальної\n" "громадÑької ліцензії GNU за подробицÑми.\n" "\n" "Ви мали отримати копію Загальної Публічної Ліцензії GNU разом з цією\n" "програмою. Якщо Ви не отримали копії ліцензії, напишіть за адреÑою Free " "Software\n" "Foundation, Inc., 59 Temple Place — Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Спробуйте ÑкориÑтатиÑÑ `%s %s', щоб дізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ.\n" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "Recode перетворює файли у різних наборах Ñимволів Ñ– прив'Ñзках.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "КориÑтуваннÑ: %s [ПÐРÐМЕТР]... [ [ÐÐБІР_СИМВОЛІВ] | ЗÐПИТ [ФÐЙЛ]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Якщо у довгій верÑÑ–Ñ— параметра вказано, що аргумент Ñ” обов'Ñзковим,\n" "він Ñ” обов'Ñзковим Ñ– Ð´Ð»Ñ Ñкороченої верÑÑ–Ñ— параметра. Те Ñаме ÑтоÑуєтьÑÑ\n" "необов'Ñзкових аргументів.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "СпиÑки:\n" " -l, --list[=ФОРМÐТ] вивеÑти ÑпиÑок одного або уÑÑ–Ñ… відомих наборів\n" " Ñимволів та їхніх альтернативних варіантів\n" " -k, --known=ПÐРИ обмежити набори Ñимволів за відомим ÑпиÑком " "ПÐР\n" " -h, --header[=[LN/]ÐÐЗВÐ] вивеÑти таблицю ÐÐЗВРдо stdout з " "викориÑтаннÑм\n" " мови LN, потім завершити роботу\n" " -T, --find-subsets повідомлÑти про уÑÑ– набори Ñимволів, Ñкі Ñ”\n" " підмножинами інших наборів Ñимволів\n" " -C, --copyright вивеÑти авторÑькі права та умови копіюваннÑ\n" " --help вивеÑти цю довідку Ñ– завершити роботу\n" " --version вивеÑти дані щодо верÑÑ–Ñ— Ñ– завершити роботу\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Режими роботи:\n" " -v, --verbose вивеÑти поÑÑÐ½ÐµÐ½Ð½Ñ Ð¿Ð¾ÑлідовноÑті кроків Ñ– " "повідомити про поÑтуп\n" " -q, --quiet, --silent не виводити Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ незворотного " "перекодуваннÑ\n" " -f, --force примуÑово виконати перекодуваннÑ, навіть Ñкщо воно " "Ñ” незворотним\n" " -t, --touch оновити чаÑову позначку перекодованих файлів піÑÐ»Ñ " "заміни\n" " -i, -p, --sequence=СТРÐТЕГІЯ буде проігноровано, призначено Ð´Ð»Ñ Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¾Ñ— " "ÑуміÑноÑті\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "КоригуваннÑ:\n" " -s, --strict викориÑтовувати Ñтрогі прив'Ñзки; відкидати " "Ñимволи,\n" " Ñкі не можна транÑлювати\n" " -d, --diacritics перетворити лише Ñимволи з діакритикою та " "подібними\n" " доповненнÑми Ð´Ð»Ñ HTML/LaTeX/BibTeX\n" " -S, --source[=LN] обмежити Ð¿ÐµÑ€ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ Ñ€Ñдків Ñ– коментарів мови " "LN\n" " -c, --colons викориÑтовувати двокрапки заміÑть подвійних лапок " "Ð´Ð»Ñ Ñ‚Ñ€ÐµÐ¼\n" " -g, --graphics замінити лінійки IBMPC пÑевдографікою ASCII\n" " -x, --ignore=ÐÐБІР ігнорувати ÐÐБІР Ñимволів під Ñ‡Ð°Ñ Ð²Ð¸Ð±Ð¾Ñ€Ñƒ шлÑху " "перекодуваннÑ\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Параметр -l без аргументів ФОРМÐТ та ÐÐБІР_СИМВОЛІВ виводить ÑпиÑок уÑÑ–Ñ…\n" "доÑтупних наборів Ñимволів та прив'Ñзок.\n" "ЗначеннÑм аргумент ФОРМÐТ може бути «decimal», «octal», «hexadecimal» або\n" "«full» (або одне із «dohf»).\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Якщо у Ñередовищі не визначено DEFAULT_CHARSET, типовим значеннÑм параметра\n" "ÐÐБІР_СИМВОЛІВ буде ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¾ÐºÐ°Ð»Ñ–, Ñке визначаєтьÑÑ LC_ALL, LC_CTYPE, " "LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Якщо вказано -k, буде виведено можливі початкові ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ\n" "заданого кінцевого ÐÐБОРУ_СИВОЛІВ, Ñкщо обидва Ñ” табличними, із\n" "ПÐРÐМИ у форматі «ДО1:ПІСЛЯ1,ДО2:ПІСЛЯ2,...», а ДО Ñ– ПІСЛЯ Ñ”\n" "кодами у форматі деÑÑткових чиÑел.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN — ÑкаÑÑŒ мова; можна вказати «c», «perl» або «po»; типовим варіантом Ñ” " "«c».\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "ЗÐПИТ Ñ” запиÑом ПІДЗÐПИТ[,ПІДЗÐПИТ]...; ПІДЗÐПИТ Ñ” запиÑом КОДУВÐÐÐЯ[.." "КОДУВÐÐÐЯ]...\n" "КОДУВÐÐÐЯ Ñ” запиÑом [ÐÐБІР_СИМВОЛІВ][/[ПРИВ'ЯЗКÐ]]...; ЗÐПИТ чаÑто виглÑдає " "Ñк\n" "ДО..ПІСЛЯ, де ДО Ñ– ПІСЛЯ Ñ” наборами Ñимволів. Якщо ÐÐБІР_СИМВОЛІВ не " "вказано,\n" "припуÑкаєтьÑÑ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ð¹ набір Ñимволів; Ñкщо не вказано [/ПРИВʼЯЗКÐ]..., буде\n" "викориÑтано типові ПРИВ'ЯЗКИ Ð´Ð»Ñ ÐÐБОРУ_СИМВОЛІВ; / з порожньою назвою " "прив'Ñзки\n" "означає, що прив'Ñзки взагалі не Ñлід викориÑтовувати. Див. підручник.\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Кожен з файлів ФÐЙЛ буде перекодовано Ñ– перезапиÑано із втратою\n" "початкових даних. Якщо не буде вказано ФÐЙЛ, програма\n" "працюватиме Ñк фільтр, перекодовуючи дані зі stdin до stdout.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "ПовідомлÑєте про вади на Ñторінці https://github.com/rrthomas/recode\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Символ «%s» Ñ” невідомим" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "ПоÑлідовніÑть «%s» Ñ” неоднозначною" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "ПоÑлідовніÑть «%s» Ñ” невідомою" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Мова «%s» Ñ” неоднозначною" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Мова «%s» Ñ” невідомою" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Формат «%s» Ñ” неоднозначним" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Формат «%s» Ñ” невідомим" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Ðвтор — ФранÑуа ПіньÑÑ€ (François Pinard) .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "© Free Software Foundation, Inc., 1990-2018\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Це програмне Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ñ” вільним, умови ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ»Ð°Ð´ÐµÐ½Ð¾ у його\n" "початкових кодах.\n" "Умовами Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ ÐЕ передбачено жодних гарантій, зокрема\n" "гарантій працездатноÑті або придатноÑті Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¾Ñ— мети.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Ðабір Ñимволів «%s» Ñ” невідомим або неоднозначним" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Пропущено обов'Ñзковий аргумент" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Запит «%s» Ñ” помилковим" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Перекодовуємо %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " виконано\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " помилка: %s на кроці `%s..%s'\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s на кроці `%s..%s'" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "Помилка %s: %s на кроці `%s..%s'" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Ðабір Ñимволів %s вже Ñ–Ñнує Ñ– має назву, Ñка відмінна від %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "Ðе вдалоÑÑ Ð¿Ð¾Ð±ÑƒÐ´ÑƒÐ²Ð°Ñ‚Ð¸ ÑпиÑок Ð´Ð»Ñ Â«%s», оÑкільки немає назв, Ñкі доÑтупні Ð´Ð»Ñ " "цього набору Ñимволів" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Ð”ÐµÑ Ð’Ñ–Ñ Ð¨Ñ–ÑÑ‚ UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Вибачте, немає доÑтупних назв Ð´Ð»Ñ Â«%s»" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Resurfacer вказано декілька разів Ð´Ð»Ñ Â«%s»" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Unsurfacer вказано декілька разів Ð´Ð»Ñ Â«%s»" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ñ— пам'Ñті" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Символи з кодами %3d Ñ– %3u обидва перекодовуютьÑÑ Ñƒ %3d" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Ðемає Ñимволу, Ñкий перекодуєтьÑÑ Ð´Ð¾ %3u" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Ðе вдалоÑÑ Ñ–Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ задану таблицю однозначної відповідноÑті" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Ðижче наведено діагноÑтику Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð· «%s» до «%s»" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Пара %u: <%3d, %3d> конфліктує з <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Ðе вдалоÑÑ Ñтворити таблицю на оÑнові набору відомих пар" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "ÐŸÐµÑ€ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ, не варте таблиці" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "ÐŸÐµÑ€ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ñ” надто Ñкладним Ð´Ð»Ñ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ñ— таблиці" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sТаблицю Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñтворено автоматично за допомогою %s %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sÐ´Ð»Ñ Ð¿Ð¾ÑлідовноÑті %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Ðемає таблиці Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ" #: src/request.c:35 msgid "reversible" msgstr "бієктивне" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s у %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "байт" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "змінна" #: src/request.c:109 msgid "*Unachievable*" msgstr "*ÐедоÑтупний*" #: src/request.c:111 msgid "*mere copy*" msgstr "*лише копіюваннÑ*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ñ— пам'Ñті!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Помилка під Ñ‡Ð°Ñ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— кроку" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "" "Помилка під Ñ‡Ð°Ñ Ñпроби ініціалізації кроку (непридатні до обробки параметри)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Запит: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "СтиÑнуто до: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Ðевідома назва прив'Ñзки «%s»" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Ðе Ñ–Ñнує ÑпоÑобу Ð¿ÐµÑ€ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð· «%s» до «%s»" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Мало бути `..' у запиті" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Стан Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½ÑŒÐ¾Ð³Ð¾ процеÑу — 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne ОпиÑ\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "" #~ "Ð¦Ñ ÑинтакÑична конÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ Ñ” заÑтарілою. Будь лаÑка, ÑкориÑтайтеÑÑ " #~ "заміÑть неї «%s»" recode-3.7.15/po/recode.pot0000644000175000017500000002321714766021054011146 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the GNU recode package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: GNU recode 3.7.15\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/main.c:112 msgid "No error" msgstr "" #: src/main.c:115 msgid "Non canonical input" msgstr "" #: src/main.c:118 msgid "Ambiguous output" msgstr "" #: src/main.c:121 msgid "Untranslatable input" msgstr "" #: src/main.c:124 msgid "Invalid input" msgstr "" #: src/main.c:127 msgid "System detected problem" msgstr "" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "" #: src/main.c:133 msgid "Internal recoding bug" msgstr "" #: src/main.c:175 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" #: src/main.c:216 msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" #: src/main.c:238 msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "" #: src/main.c:630 msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "" #: src/main.c:856 #, c-format msgid " done\n" msgstr "" #: src/main.c:894 #, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr "" #: src/main.c:896 src/main.c:906 src/main.c:928 msgid " in step `" msgstr "" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "" #: src/recode.c:748 msgid "No table to print" msgstr "" #: src/request.c:35 msgid "reversible" msgstr "" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "" #: src/request.c:109 msgid "*Unachievable*" msgstr "" #: src/request.c:111 msgid "*mere copy*" msgstr "" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "" #: src/request.c:252 msgid "Step initialisation failed" msgstr "" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" recode-3.7.15/po/sl.po0000644000175000017500000006333214766021055010142 # -*- mode: po; coding: iso-latin-2; -*- Slovenian msg. catalog for GNU recode. # Copyright (C) 1996 Free Software Foundation, Inc. # Primoz Peterlin , 1996. # # $Id: recode-3.6.sl.po,v 1.2 2001/06/08 10:41:42 peterlin Exp $ # msgid "" msgstr "" "Project-Id-Version: recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2001-06-08 12:41+02:00\n" "Last-Translator: Primoz Peterlin \n" "Language-Team: Slovenian \n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: src/main.c:112 msgid "No error" msgstr "Brez napak" #: src/main.c:115 msgid "Non canonical input" msgstr "NekanoniÄen vhod" #: src/main.c:118 msgid "Ambiguous output" msgstr "Dvoumen izhod" #: src/main.c:121 msgid "Untranslatable input" msgstr "Neprevedljiv vhod" #: src/main.c:124 msgid "Invalid input" msgstr "Neveljaven vhod" #: src/main.c:127 msgid "System detected problem" msgstr "Težave v sistemu" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Zloraba pretvorne knjižnice" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Notranja napaki pri pretvorbi" # POZOR!!! # Tole bi nujno moral dobiti v roke pravnik... #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Ta program je prosta programska oprema; lahko ga redistribuirate in/ali\n" "spreminjate po pogojih, doloÄenih v ,,GNU General Public License``, izdani\n" "pri Free Software Foundation; 2. izdaja (ali novejÅ¡a, Äe razpolagate z " "njo).\n" "\n" "Ta program se distribuira v upanju, da je uporaben, vendar BREZ " "KAKRÅ NEGAKOLI\n" "JAMSTVA; vkljuÄno z impliciranim jamstvom prodajnosti ali uporabnosti za\n" "izbrani namen. Za podrobnosti si oglejte ,,GNU General Public License``.\n" "\n" "Izvod ,,GNU General Public License`` bi moral biti priložen temu programu;\n" "Äe ni, piÅ¡ite Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" "Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Poskusite ,%s %s` za dodatne informacije.\n" #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "Prosti ,recode` pretvarja datoteke med razliÄnimi kodnimi nabori in " "preÄrkovanji.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Uporaba: %s [IZBIRA]... [ [NABOR] | ZAHTEVA [DATOTEKA]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "ÄŒe je pri dolgi obliki izbire argument naveden kot obvezen, velja\n" "obveza tudi za kratko obliko. Podobno tudi za neobvezne argumente.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Seznami:\n" " -l, --list[=OBLIKA] izpiÅ¡i enega ali vse kodirane nabore znakov\n" " -k, --known=PARI izpiÅ¡i nabore, ki ustrezajo podanim PAROM " "pretvorb\n" " -h, --header[=[JEZIK/]IME] izpiÅ¡i pretvorno tabelo z danim IMENOM v prog. " "JEZIKU\n" " -F, --freeze-tables izpiÅ¡i modul v C z vsemi pretvornimi tabelami\n" " -T, --find-subsets poroÄaj o vseh naborih, ki so podmnožica " "drugih\n" " -C, --copyright izpiÅ¡i dovoljenje za uporabo in razÅ¡irjanje\n" " --help ta navodila\n" " --version razliÄica programa\n" #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "NaÄini dela:\n" " -v, --verbose med potekom razlagaj korake in komentiraj " "napredek\n" " -q, --quiet, --silent brez opozoril o neobrnljivih pretvorbah\n" " -f, --force pretvorbo izvedi, Äetudi ni obrnljiva\n" " -t, --touch pretvorjena datoteka naj nosi datum pretvorbe,\n" " ne nastanka\n" " -i, --sequence=files uporabi vmesne datoteke za zaporedne prehode\n" " --sequence=memory med prehodi hrani besedilo v pomnilniku\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "NatanÄnejÅ¡e nastavljanje:\n" " -s, --strict uporabi strogo pretvorbo, celo na raÄun izgube " "znakov\n" " -d, --diacritics pretvori samo preglaÅ¡ene in podobne znake za HTML/" "LaTeX\n" " -S, --source[=JEZIK] omeji pretvorbe na nize in komentarje, kot v " "JEZIKU\n" " -c, --colons nadomesti dierezo z dvopiÄjem, ne z dvojnim " "narekovajem\n" " -g, --graphics semigrafiÄne znake s PC pribl. nadomestimo z znaki " "ASCII\n" " -x, --ignore=NABOR pri pretvorbi se izogni navedenemu vmesnemu NABORU\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Izbira -l brez podane OBLIKE ali NABORA izpiÅ¡e seznam vseh znanih kodnih " "naborov\n" "in preÄrkovalnih shem. OBLIKA je lahko ,decimal` (desetiÅ¡ka), ,octal` " "(osmiÅ¡ka),\n" ",hexadecimal` (Å¡estnajstiÅ¡ka) ali ,full` (polna), ali ena od Ärk ,dohf`.\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "ÄŒe ni doloÄena spremenljivka DEFAULT_CHARSET, se privzame NABOR,\n" "doloÄen s spremenljivkami LC_ALL, LC_CTYPE ali LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Pri izbiri -k se izpiÅ¡ejo vsi možni startni nabori za podani ciljni nabor.\n" "Startni in ciljni nabor sta kodirana nabora znakov. PARI naj imajo obliko\n" ",,START1:CILJ1,START2:CILJ2...``, kjer so STARTn in CILJn desetiÅ¡ke kode \n" "znakov v startnem in ciljnem kodnem naboru.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "JEZIK je lahko ,c`, ,perl` ali ,po`; privzeto je ,c`.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "ZAHTEVEK ima obliko PODZAHTEVEK[,PODZAHTEVEK]...; PODZAHTEVEK ima obliko\n" "KODIRANJE[,KODIRANJE]...; KODIRANJE ima obliko [NABOR][/[SHEMA]]. ZAHTEVEK\n" "ima pogosto obliko PREJ..POTEM, kjer sta PREJ in POTEM kodirana nabora " "znakov.\n" "IzpuÅ¡Äeni NABOR pomeni privzetega; izpuÅ¡Äena [/SHEMA] pomeni privzeto\n" "preÄrkovalno shemo za dani NABOR. PoÅ¡evnica / brez sheme pomeni brez " "preÄrkovalne\n" "sheme. Podrobnosti so v priroÄniku.\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "ÄŒe nista podana niti -i niti -p, se uporabi -p, kadar ni podana DATOTEKA, \n" "sicer pa -i. Pretvorba vsake DATOTEKE se zapiÅ¡e prek izvorne razliÄice. ÄŒe\n" "DATOTEKA ni podana, recode deluje kot filter med standardnim vhodom in " "izhodom.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Znak ,%s` je neznan" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Zaporedje ,%s` je dvoumno" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Zaporedje ,%s` je neznano" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Jezik ,%s` je dvoumen" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Jezik ,%s` je neznan" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Oblika ,%s` je dvoumna" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Oblika ,%s` je neznana" #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "Avtor Franc,ois Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "To je prost program; pogoji, pod katerimi ga lahko uporabljate, " "razmnožujete\n" "in razÅ¡irjate so navedeni v izvorni kodi. Za program ni NOBENEGA jamstva,\n" "niti jamstev USTREZNOSTI ZA PRODAJO ali PRIMERNOSTI ZA UPORABO.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Nabor znakov ,%s` je neznan ali dvoumen" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Zahtevani argument manjka" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Zahteva ,%s` je napaÄna" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Pretvarjamo %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " opravljeno\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " neuspeÅ¡no: %s v koraku ,%s..%s`\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s v koraku ,%s..%s`" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s neuspeÅ¡no: %s v koraku ,%s..%s`" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Nabor %s že obstaja in ni %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Izpis ,%s' ni mogoÄ, imen za ta nabor ni na voljo" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "des osm Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Imena za ,%s` niso na voljo" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "VeÄ kot ena preÄrkovalna shema uvedena za ,%s`" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "VeÄ kot ena preÄrkovalna shema preklicana za ,%s`" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Virtualni pomnilnik porabljen" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Kodi %3d in %3d se obe preslikata v %3d" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "Noben znak se ne preslika v %3d" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Dana tabela eden-v-enega ni obrnljiva" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Sledi diagnostika za pretvorbo iz ,%s' v ,%s'" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Par Å¡t. %d: <%3d, %3d> je v nesoglasju z <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Iz množice znanih parov ni mogoÄe dokonÄati tabele" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Pretvorba je trivialna, nevredna tabele" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Pretvorba je prezapletena za tabelo" #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sPretvorna tabela mehaniÄno generirana s prostim ,%s` %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sza zaporedje %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Tabele ni" #: src/request.c:35 msgid "reversible" msgstr "obrnljivo" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s v %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "bajt" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "UCS2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "spremenljivo" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Nedosegljivo*" #: src/request.c:111 msgid "*mere copy*" msgstr "*zgolj prepis*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Virtualni pomnilnik porabljen!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Inicializacija koraka neuspeÅ¡na" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Inicializacija koraka neuspeÅ¡na (nepredelane izbire)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Zahtevek: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "SkrÄeno v: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Neprepoznano ime preÄrkovalne sheme ,%s`" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Pretvorba iz ,%s` v ,%s` ni izvedljiva" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "V zahtevku priÄakujemo ,..`" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "ÄŒakalni status procesa potomca je 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Opis\n" "\n" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr " -p, --sequence=pipe uporabi cevovode za nizanje prehodov\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe isto kot -i (na tem sistemu)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "SporoÄila o napakah javite na .\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Neodobravana skladnja; prosimo, uporabljajte ,%s`" #~ msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" #~ msgstr "" #~ "NABOR nima privzete vrednosti; doloÄite spremenljivko okolja " #~ "DEFAULT_CHARSET.\n" #~ msgid "Ambiguous sequence `%s'" #~ msgstr "Dvoumno zaporedje ,%s`" #~ msgid "Unknown sequence `%s'" #~ msgstr "Neznano zaporedje ,%s`" #~ msgid "Ambiguous language `%s'" #~ msgstr "Dvoumen jezik ,%s`" #~ msgid "Unknown language `%s'" #~ msgstr "Neznan jezik ,%s`" #~ msgid "Ambiguous format `%s'" #~ msgstr "Dvoumen format ,%s`" #~ msgid "Unknown format `%s'" #~ msgstr "Neznan format ,%s`" #~ msgid "Erroneous request `%s'" #~ msgstr "NapaÄen zahtevek ,%s`" #~ msgid " Each input char transforms into an output string,\n" #~ msgstr " Vsak vhodni znak se preslika v niz znakov,\n" #~ msgid " Each input char transforms into an output string.\n" #~ msgstr " Vsak vhodni znak se preslika v niz znakov.\n" #~ msgid " Programming is needed to handle multichar input.\n" #~ msgstr " Nabori z veÄ kot 8 biti zahtevajo programiranje.\n" #~ msgid " The recoding might not be reversible.\n" #~ msgstr " Pretvorba morda ni obrnjiva.\n" #~ msgid " The recoding should be reversible.\n" #~ msgstr " Pretvorba bi morala biti obrnljiva.\n" #~ msgid " programming is needed to handle multichar input.\n" #~ msgstr " nabori z veÄ kot 8 biti zahtevajo programiranje.\n" #~ msgid " UNACHIEVABLE\n" #~ msgstr " NEIZVEDLJIVO\n" #~ msgid "%s: Recoding is not reversible" #~ msgstr "%s: Pretvorba ni obrnljiva" #~ msgid ", %d saved by merging" #~ msgstr ", %d znakov prihranjenih pri združevanju" #~ msgid "/* Conversion table from `%s' charset to `%s' charset.\n" #~ msgstr "/* Tabela za pretvorbo iz nabora ,%s' v nabor ,%s'.\n" #~ msgid "Cannot auto check on %s" #~ msgstr "Nabora %s ni mogoÄe avtomatiÄno preveriti" #~ msgid "Cannot auto check the ignored charset" #~ msgstr "IzpuÅ¡Äenega nabora ni mogoÄe avtomatiÄno preveriti" #~ msgid "Currently, -s is ignored when -g is selected" #~ msgstr "Za zdaj je izbira -s ignorirana, kadar je izbrano -g" #~ msgid "Hash stats: %d names using %d buckets out of %d\n" #~ msgstr "" #~ "Statistika za razprÅ¡itveno tabelo: %d imen porabilo %d od %d koÅ¡ev\n" #~ msgid "Internal error - strategy undecided" #~ msgstr "Interna napaka - neodloÄen o strategiji" #~ msgid "MAX_CHARSETS is too small" #~ msgstr "MAX_CHARSETS premajhno" #~ msgid "MAX_SEQUENCE is too small" #~ msgstr "MAX_SEQUENCE premajhno" #~ msgid "MAX_SINGLE_STEPS is too small" #~ msgstr "MAX_SINGLE_STEPS premajhno" #~ msgid "Mere copy for the trivial recoding\n" #~ msgstr "Zgolj kopija za trivialno pretvorbo\n" #~ msgid "ONE to SAME" #~ msgstr "EDEN v ISTEGA" #~ msgid "Recoding is not reversible" #~ msgstr "Pretvorba ni obrnljiva" #~ msgid "Simplified to: " #~ msgstr "Poenostavljeno: " #~ msgid "UNACHIEVABLE recoding!\n" #~ msgstr "NEIZVEDLJIVA pretvorba!\n" #~ msgid "You may not explicitly recode from RFC 1345" #~ msgstr "Eksplicitna pretvorba iz RFC 1345 ni izvedljiva" #~ msgid " -o, --sequence=popen same as -i (on this system)\n" #~ msgstr " -o, --sequence=popen isto kot -I (na tem sistemu)\n" #~ msgid "" #~ " -o, --sequence=popen use popen machinery for sequencing passes\n" #~ msgstr " -o, --sequence=popen uporabi mehanizem ,popen'\n" #~ msgid "" #~ " -q, --quiet, --silent inhibit messages about irreversible recodings\n" #~ " -s, --strict use strict mappings, even loose characters\n" #~ " -t, --touch touch the recoded files after replacement\n" #~ " -v, --verbose explain sequence of steps and report progress\n" #~ " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" #~ "\n" #~ "If none of -i, -o and -p are given, presume -p if no FILE, else -i.\n" #~ "Each FILE is recoded over itself, destroying the original. If no\n" #~ "FILE is specified, then act as a filter and recode stdin to stdout.\n" #~ msgstr "" #~ " -q, --quiet, --silent brez sporoÄil o neobrnljivih pretvorbah\n" #~ " -s, --strict striktna pretvorba, tudi na Å¡kodo izgubljenih " #~ "znakov\n" #~ " -t, --touch konÄna datoteka naj nosi datum pretvorbe, ne " #~ "nastanka\n" #~ " -v, --verbose z razlago poteka pretvorbe\n" #~ " -x, --ignore=NABOR izpusti NABOR pri izbiri poti pretvorbe\n" #~ "\n" #~ "ÄŒe ni podan -i, -o, ali -p, se privzame -p, kadar ni podana DATOTEKA, " #~ "sicer -i.\n" #~ "Vsaka DATOTEKA se pretvori Äez samo sebe in uniÄi izvirnik. ÄŒe DATOTEKA\n" #~ "ni podana, deluje kot filter in pretvarja podatke z vhoda na izhod.\n" #~ msgid "BEFORE and AFTER both default to `%s' when needed.\n" #~ msgstr "ÄŒe nabor PREJ ali POTEM ni podan, se nadomesti z ,%s'\n" # POZOR #~ msgid "" #~ "Mandatory or optional arguments to long options are mandatory or " #~ "optional\n" #~ "for short options too.\n" #~ "\n" #~ " -C, --copyright display Copyright and copying conditions\n" #~ " -a, --auto-check report about some or all recoding paths, then " #~ "exit\n" #~ " -l, --list[=FORMAT] list one or all known charsets\n" #~ " -k, --known=PAIRS restrict charsets according to known PAIRS list\n" #~ " --help display this help and exit\n" #~ " --version output version information and exit\n" #~ "\n" #~ "FORMAT is a word among decimal, octal, hexadecimal or full (which may be\n" #~ "abbreviated to one of `dohf'), it defaults to just the canonical name.\n" #~ "With -k, possible before charsets are listed for the given after " #~ "CHARSET,\n" #~ "both being RFC1345 charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" #~ "AFT2,...\n" #~ "and BEFs and AFTs being codes. All codes are given as decimal numbers.\n" #~ msgstr "" #~ "Argumenti, ki so obvezni za dolge oblike izbir so obvezni tudi za kratke " #~ "oblike,\n" #~ "in enako velja za neobvezne argumente.\n" #~ "\n" #~ " -C, --copyright obvestilo avtorskih pravicah\n" #~ " -a, --auto-check poroÄilo o možnih pretvorbah\n" #~ " -l, --list[=FORMAT] seznam znanih naborov, ali izpis nabora znakov\n" #~ " -k, --known=PARI omejitev naborov na seznam znanih PAROV\n" #~ " --help ta navodila\n" #~ " --version verzija programa\n" #~ "\n" #~ "FORMAT izpisa je eden od naslednjih: decimal, octal, hexadecimal ali full " #~ "(možna\n" #~ "je okrajÅ¡ava na prvo Ärko: dohf), privzeta izbira je samo kanoniÄno ime " #~ "nabora.\n" #~ "With -k, possible before charsets are listed for the given after " #~ "CHARSET,\n" #~ "both being RFC1345 charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" #~ "AFT2,...\n" #~ "and BEFs and AFTs being codes. All codes are given as decimal numbers.\n" #~ msgid "" #~ "Option -l with no FORMAT nor CHARSET list all charsets, also see the " #~ "Texinfo\n" #~ "documentation. My preferred charsets are (each user has preferences):\n" #~ "\n" #~ " ascii-bs ASCII (7-bit), using backspace to apply diacritics\n" #~ " ibmpc IBM-PC 8-bit characters, with proper newlines\n" #~ " latex LaTeX coding of foreign and diacriticized characters\n" #~ " latin1 ISO Latin-1 8-bit extension of ASCII\n" #~ " texte Easy French convention for transmitting email messages\n" #~ msgstr "" #~ "Izbira -l brez podanih FORMAT ali NABOR dá seznam vseh naborov, oglejte " #~ "si Å¡e\n" #~ "dokumentacijo v Texinfo. Moji priljubljeni nabori (vsak uporabnik ima " #~ "svoje):\n" #~ "\n" #~ " ascii-bs 7-bitni ASCII, z uporabo Backspace za tisk diakritiÄnih " #~ "znakov\n" #~ " ibmpc 8-bitni nabor IBM-PC, zakljuÄek vrstice CR LF\n" #~ " latex LaTeX-ov zapis diakritiÄnih znakov\n" #~ " latin1 ISO Latin-1 8-bitna razÅ¡iritev ASCII\n" #~ " texte enostavna francoska konvencija za prenos elektronske poÅ¡te\n" #~ msgid "" #~ "\n" #~ " -c, --colons use colons instead of double quotes for " #~ "diaeresis\n" #~ " -d, --diacritics limit conversion to diacritics or alike for " #~ "LaTeX\n" #~ " -f, --force force recodings even if they are not " #~ "reversible\n" #~ " (BEWARE: in this version, -f is always " #~ "selected)\n" #~ " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" #~ " -h, --header[=NAME] write C code with table NAME on stdout, then " #~ "exit\n" #~ " -i, --sequence=files use intermediate files for sequencing passes\n" #~ msgstr "" #~ "\n" #~ " -c, --colons dvopiÄje namesto narekovajev za preglas\n" #~ " -d, --diacritics limit conversion to diacritics or alike for " #~ "LaTeX\n" #~ " -f, --force force recodings even if they are not " #~ "reversible\n" #~ " (BEWARE: in this version, -f is always " #~ "selected)\n" #~ " -g, --graphics grafiÄne znake IBMPC aproksimiraj z ASCII\n" #~ " -h, --header[=NAME] write C code with table NAME on stdout, then " #~ "exit\n" #~ " -i, --sequence=files use intermediate files for sequencing passes\n" #~ msgid "" #~ "\n" #~ "Usage: %s [OPTION]... [BEFORE]:[AFTER] [FILE]...\n" #~ msgstr "" #~ "\n" #~ "Uporaba: %s [IZBIRA]... [PREJ]:[POTEM] [DATOTEKA]...\n" #~ msgid "many to many" #~ msgstr "veÄ v veÄ" #~ msgid "many to one" #~ msgstr "veÄ v enega" #~ msgid "one to many" #~ msgstr "eden v veÄ" #~ msgid "one to one" #~ msgstr "eden v enega" #~ msgid "steps: %d" #~ msgstr "korakov: %d" recode-3.7.15/po/eo.po0000644000175000017500000003776214766021054010136 # Esperantaj mesaÄoj por recode. # This file is distributed under the same license as the recode package. # Copyright (C) 2001, 2012, 2019 Free Software Foundation, Inc. # Edmund GRIMLEY EVANS , 2001, 2012. # Felipe Castro , 2019. # msgid "" msgstr "" "Project-Id-Version: recode 3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2019-07-15 14:49-0300\n" "Last-Translator: Felipe Castro \n" "Language-Team: Esperanto \n" "Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: src/main.c:112 msgid "No error" msgstr "Neniu eraro" #: src/main.c:115 msgid "Non canonical input" msgstr "Nekanoneca enigo" #: src/main.c:118 msgid "Ambiguous output" msgstr "Plursenca eligo" #: src/main.c:121 msgid "Untranslatable input" msgstr "Netradukebla enigo" #: src/main.c:124 msgid "Invalid input" msgstr "Nevalida enigo" #: src/main.c:127 msgid "System detected problem" msgstr "Sistemo trovis problemon" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Misuzo de la rekodado-biblioteko" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Interna eraro dum rekodado" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Ĉi tiu programo estas libera; vi povas pludoni kopiojn kaj modifi\n" "Äin sub la kondiĉoj de la Äœenerala Publika Rajtigilo de GNU,\n" "kiel tio estas eldonita de Free Software Foundation; aÅ­ versio 3\n" "de la Rajtigilo, aÅ­ (laÅ­ via elekto) iu sekva versio.\n" "\n" "Ĉi tiu programo estas disdonita kun la espero, ke Äi estos utila,\n" "sed SEN IA AJN GARANTIO; eĉ sen la implicita garantio de\n" "KOMERCA KVALITO aŬ ADEKVATECO POR DIFINITA CELO. Vidu la\n" "Äœeneralan Publikan Rajtigilon de GNU por pli da detaloj.\n" "\n" "Vi devus esti ricevinta kopion de la Äœenerala Publika Rajtigilo de\n" "GNU kun ĉi tiu programo; se ne, skribu al Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, Usono.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Provu '%s %s' por pli da informoj.\n" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "Recode konvertas dosierojn inter diversaj signaroj kaj surfacoj.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Uzado: %s [OPCIO]... [ [SIGNARO] | PETO [DOSIERO]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Se longa opcio montras argumenton kiel devigan, tiam Äi estas deviga\n" "ankaÅ­ por la ekvivalenta mallonga opcio. Simile por nedevigaj argumentoj.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listigoj:\n" " -l, --list[=FORMO] Listigi unu aÅ­ ĉiujn signarojn kaj kromnomojn\n" " -k, --known=PAROJ Limigi signarojn laÅ­ konataj PAROJ\n" " -h, --header[=[LN/]NOMO] Skribi tabelon NOMO al normala eligo per LN\n" " -T, --find-subsets Raporti signarojn, kiuj estas subaroj de aliaj\n" " -C, --copyright Montri kopirajton kaj kopikondiĉojn\n" " --help Montri ĉi tiun helpon kaj eliri\n" " --version Montri versiinformon kaj eliri\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Funkcimanieroj:\n" " -v, --verbose klarigi sinsekvon de paÅoj kaj raporti progreson\n" " -q, --quiet, --silent subpremi mesaÄojn pri neinversigeblaj rekodadoj\n" " -f, --force fari rekodadon, ankaÅ­ kiam ne inversigebla\n" " -t, --touch fari 'touch' al konvertitaj dosieroj\n" " -i, -p, --sequence=STRATEGIO ne plu funkcias, tenita pro retrokongruo\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Fajnaj agordoj:\n" " -s, --strict uzi striktajn mapojn; forlasi nekonverteblajn " "signojn\n" " -d, --diacritics konverti nur kromsignojn aÅ­ simile por HTML/LaTeX\n" " -S, --source[=LN] limigi rekodadon al signoĉenoj kaj komentoj por LN\n" " -c, --colons uzi ':' anstataÅ­ '\"' por diarezoj\n" " -g, --graphics prezenti IBMPC-liniilojn per askiaj bildoj\n" " -x, --ignore=SIGNARO ignori SIGNAROn dum elekto de rekodado-vojo\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "La opcio -l kun neniu FORMO aÅ­ SIGNARO listigas ĉiujn disponatajn\n" "signarojn kaj surfacojn. FORMO estas 'decimal', 'octal', 'hexadecimal'\n" "aÅ­ 'full' (aÅ­ unu el 'dohf').\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Se la media variablo DEFAULT_CHARSET ne estas agordita, SIGNARO implicite\n" "estas tiu de la lokaĵaro, determinita de LC_ALL, LC_CTYPE, LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Kun -k, eblaj antaÅ­aj signaroj por la donita posta SIGNARO estas " "listigitaj,\n" "kun PAROJ en la formo 'ANT1:POST1,ANT2,POST2,...', kie ANT-oj kaj POST-oj\n" "estas kodoj donitaj kiel dekumaj nombroj.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN estas programlingvo, ekzemple 'c', 'perl' aÅ­ 'po'; implicite estas 'c'.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "PETO estas SUBPETO[,SUBPETO]...; SUBPETO estas KODO[..KODO]...\n" "KODO estas [SIGNARO][/[SURFACO]]...; PETO ofte aspektas kiel ANTAŬ...POST,\n" "kie ANTAŬ kaj POST estas signaroj. Ellasita SIGNARO implicas la kutiman\n" "signaron; ellasita [/SURFACO]... signifas la implicitan surfacon por " "SIGNARO;\n" "/ kun malplena surfaco-nomo signifas neniajn surfacojn. Vidu la manlibron.\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Ĉiu DOSIERO estas rekodita surloke, anstataÅ­ante la originalon. Se neniu\n" "DOSIERO estas specifita, agi kiel filtrilo kaj rekodi de la normala enigo\n" "al la normala eligo.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "Raportu erarojn al https://github.com/rrthomas/recode\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Simbolo '%s' estas nekonata" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Sinsekvo '%s' estas plursenca" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Sinsekvo '%s' estas nekonata" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Lingvo '%s' estas plursenca" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Lingvo '%s' estas nekonata" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Formo '%s' estas plursenca" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Formo '%s' estas nekonata" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Verkita de François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Kopirajto (C) 1990-2018 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Ĉi tio estas libera programo; vidu la fonton por kopikondiĉoj. Estas\n" "NENIA GARANTIO; eĉ ne por KOMERCA KVALITO aÅ­ ADEKVATECO POR DIFINITA CELO.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Signaro '%s' estas nekonata aÅ­ plursenca" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Bezonata argumento mankas" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Peto '%s' estas erara" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Rekodas '%s' ..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " preta\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " malsukcesis: %s en paÅo '%s..%s'\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s en paÅo '%s..%s'" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s malsukcesis: %s en paÅo '%s..%s'" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "La signaro %s jam ekzistas kaj ne estas %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Ne povas montri '%s'; neniuj nomoj disponataj por ĉi tiu signaro" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Pardonu, sed neniaj nomoj disponataj por '%s'" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Resurfacigilo agordita pli ol unufoje por '%s'" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Malsurfacigilo por '%s' agordita pli ol unufoje" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Vituala memoro elĉerpiÄis" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "La kodoj %3d kaj %3u estas ambaÅ­ konvertataj al %3d" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Neniu signo estas konvertata al %3u" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Ne povas inversigi la donitan unusencan tabelon" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Jena diagnozo por konvertado de '%s' al '%s'" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Paro numero %u: <%3d, %3d> konfliktas kun <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Ne povas kompletigi tabelon el aro de konataj paroj" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "SenÅanÄa rekodado ne indas je tabelo" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Rekodado estas tro komplika por nura tabelo" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sKonvertotabelo kreita aÅ­tomate de %s %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%spor sinsekvo %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Mankas tabelo por eligado" #: src/request.c:35 msgid "reversible" msgstr "inversigebla" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s al %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "bitoko" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "variablo" #: src/request.c:109 msgid "*Unachievable*" msgstr "*neebla*" #: src/request.c:111 msgid "*mere copy*" msgstr "*nura kopio*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Virtuala memoro estas plena!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Komencado de paÅo malsukcesis" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Komencado de paÅo malsukcesis (netraktitaj opcioj)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Peto: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Åœrumpis Äis: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nekonata nomo de surfaco '%s'" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Mankas eblo por konverti de '%s' al '%s'" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Atendas '..' en peto" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Atendostatuso de ido-procezo estas 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Priskribo\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Malrekomendata sintakso; bonvolu uzi '%s'" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=pipe uzi tubojn (\"pipe\") por internaj paÅoj\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe same kiel -i (en ĉi tiu sistemo)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Raportu cimojn al .\n" recode-3.7.15/po/nb.gmo0000644000175000017500000002203214766021055010257 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“Ìœ‹i õv–³ ¹Á4{=° î ø14 H Vd3t%¨CÎ+(>"g&б Ï'ð4(NwŒNœë"@ [f+€¬0ÂEó 9-Gu”¦+Àì $ *5 ` :€ » Õ  ò +“!¿!Ú!h"+…"±"È"à"Éù"7Ã#û# $ $$+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: recode 3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2019-08-20 03:30+0200 Last-Translator: Johnny A. Solbu Language-Team: Norwegian Bokmaal Language: nb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Poedit 1.8.7.1 Hver FIL kodes om over seg selv og ødelegger originalen. Hvis ingen FIL er spesifisert, funger som et filter og omkode stdin til stdout. Dersom et langt flagg viser et argument som obligatorisk, sÃ¥ er det obligatorisk for tilsvarende korte alternativ ogsÃ¥. Tilsvarende for valgfrie argumenter. Driftsmodus: -v, --verbose forklar trinnsekvens og rapporter fremdrift -q, --quiet, --silent undertrykk meldinger om irreversible omkodinger -t, --touch berør omkodede filer etter erstatning -i, --sequence=filer bruk midlertidige filer for sekvenseringspasseringer --sequence=minne bruk minnebuffere for sekvenseringspasseringer Opsjonen -l uten FORMAT eller tegnsett lister opp tilgjengelige tegnsett og overflater. FORMAT er «desimal», «oktal», «heksadesimal» eller «full» (eller en av «dohf»). FORESPØRSEL er UNDERFORESPØRSEL [, UNDERFORESPØRSEL] ...; UNDERFORESPØRSEL er koding [.. KODING] ... KODING er [TEGNSETT] [/ [OVERFLATE]] ...; FORESPØRSEL ofte ser ut som før .. ETTER, med før og etter blir tegnsett. Et utelatt CHARSET innebærer den vanlige tegnsettet, en utelatt [/ OVERFLATE] ... betyr de underforstÃ¥tte overflater for TEGNSETT, et / med en tom overflatenavn betyr ingen overflater i det hele tatt. Se manualen. Rapporter feil: https://github.com/rrthomas/recode Bruk: %s [FLAGG] ... [[TEGNSETT] | FORESPØRSEL [FIL] ... ] utført %s til %s%sKonverteringstabell generert mekanisk ved %s %s%sfor sekvens %s.%s*UoppnÃ¥elig**bare kopier*Tvetydig utdataKan ikke fullføre tabellen fra sett med kjente parKan ikke snu oppgitt en-til-en tabellKan ikke liste «%s», ingen navn tilgjengelig for dette tegnsettetTegnsettet %s finnes allerede og er ikke %sTegnsett «%s» er ukjent eller tvetydigBarneprosessventestatus er 0x%0.2xKoder %3d og %3u begge omkoder til %3ddec oct hex UCS2 mne %s Forventer «..»i forespørselenFølgende diagnostikk for `%s' til `%s'Formatet «%s» er tvetydigFormatet «%s» er ukjentIdentitetsomkoding, ikke verdt en tabellIntern omkodingsfeilUgyldig inndataLN er et sprÃ¥k, det kan være «c»,«perl» eller «po»; «c» er standard SprÃ¥ket «%s» er flertydigSprÃ¥ket «%s» er ukjentMisbruk av omkodingsbibliotekIngen tegn omkodes til %3uIngen feilIngen tabell Ã¥ skrive utIngen mÃ¥te Ã¥ omkode fra «%s» til «%s»Ikke-kanonisk inndataPar nr. %u: <%3d, %3d> i konflikt med <%3d, %3d>Recode konverterer filer mellom forskjellige tegnsett og overflater. Omkoder %s...Omkoding er for komplisert for bare en tabellForespørsel «%s» er ugyldigForespørsel: %s PÃ¥krevd argument manglerResurfacer satt mer enn én gang for «%s»Sekvensen «%s» er tvetydigSekvensen «%s» er ukjentKrympet til: %s Beklager, ingen navn tilgjengelig for `%s'Trinninitialiseringen mislyktesTrinninitialiseringen mislyktes (ubehandlede alternativer)Symbolet «%s» er ukjentSystemet oppdaget et problemDette er fri programvare; se i kildekoden for kopieringsbetingelser. Det er INGEN garanti; ikke en gang for SALGBARHET eller SKIKKETHET FOR ET BESTEMT FORMÃ…L. Prøv «%s %s» Prøv for mer informasjon. UCS2 Mne beskrivelse Med mindre STANDARD_TEGNSETT ligger i miljø, TEGNSETT som standard til den lokale avhengighetskodingeb, bestemt ved LC_ALL, LC_CTYPE, LANG. Ukjent overflate navn «%s»Unsurfacer satt mer enn én gang for «%s»Uoversettelige inndataVirtuelt minne oppbruktVirtuelt minne oppbrukt!Med -k viser en liste over mulige pre-koding for gitt etter TEGNSETT, Begge er tabellformtegnsett, med par av type «FØR1:ETTER1,FØR2:ETTER2, ...» FØR og ETTER er koder som oppgis som desimaltall. Skrevet av François Pinard . bytereversibelucs2variabelrecode-3.7.15/po/Makefile.in.in0000644000175000017500000004155314371446047011643 # Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # # Origin: gettext-0.19 GETTEXT_MACRO_VERSION = 0.19 PACKAGE = @PACKAGE@ VERSION = @VERSION@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ SED = @SED@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ localedir = @localedir@ gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ # We use $(mkdir_p). # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, # @install_sh@ does not start with $(SHELL), so we add it. # In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake # versions, $(mkinstalldirs) and $(install_sh) are unused. mkinstalldirs = $(SHELL) @install_sh@ -d install_sh = $(SHELL) @install_sh@ MKDIR_P = @MKDIR_P@ mkdir_p = @mkdir_p@ GMSGFMT_ = @GMSGFMT@ GMSGFMT_no = @GMSGFMT@ GMSGFMT_yes = @GMSGFMT_015@ GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) MSGFMT_ = @MSGFMT@ MSGFMT_no = @MSGFMT@ MSGFMT_yes = @MSGFMT_015@ MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) XGETTEXT_ = @XGETTEXT@ XGETTEXT_no = @XGETTEXT@ XGETTEXT_yes = @XGETTEXT_015@ XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot POFILESDEPS_yes = $(POFILESDEPS_) POFILESDEPS_no = POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT)) DISTFILESDEPS_ = update-po DISTFILESDEPS_yes = $(DISTFILESDEPS_) DISTFILESDEPS_no = DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO)) # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: all-@USE_NLS@ all-yes: stamp-po all-no: # Ensure that the gettext macros and this Makefile.in.in are in sync. CHECK_MACRO_VERSION = \ test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ exit 1; \ } # $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because # we don't want to bother translators with empty POT files). We assume that # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. # In this case, stamp-po is a nop (i.e. a phony target). # stamp-po is a timestamp denoting the last time at which the CATALOGS have # been loosely updated. Its purpose is that when a developer or translator # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent # invocations of "make" will do nothing. This timestamp would not be necessary # if updating the $(CATALOGS) would always touch them; however, the rule for # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot @$(CHECK_MACRO_VERSION) test ! -f $(srcdir)/$(DOMAIN).pot || \ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @test ! -f $(srcdir)/$(DOMAIN).pot || { \ echo "touch stamp-po" && \ echo timestamp > stamp-poT && \ mv stamp-poT stamp-po; \ } # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. # The determination of whether the package xyz is a GNU one is based on the # heuristic whether some file in the top level directory mentions "GNU xyz". # If GNU 'find' is available, we avoid grepping through monster files. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed package_gnu="$(PACKAGE_GNU)"; \ test -n "$$package_gnu" || { \ if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \ LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \ -size -10000000c -exec grep 'GNU @PACKAGE@' \ /dev/null '{}' ';' 2>/dev/null; \ else \ LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ fi; \ } | grep -v 'libtool:' >/dev/null; then \ package_gnu=yes; \ else \ package_gnu=no; \ fi; \ }; \ if test "$$package_gnu" = "yes"; then \ package_prefix='GNU '; \ else \ package_prefix=''; \ fi; \ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ else \ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ fi; \ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ *) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --package-name="$${package_prefix}@PACKAGE@" \ --package-version='@VERSION@' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ esac test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(POFILESDEPS) @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) \ && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ esac; \ }; \ else \ $(MAKE) $${lang}.po-create; \ fi install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ for file in $(DISTFILES.common) Makevars.template; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all info dvi ps pdf html tags TAGS ctags CTAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS) @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: stamp-po $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ dists="$$dists $(DOMAIN).pot stamp-po"; \ fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ for i in 0 1 2 3 4 5 6 7 8 9; do \ if test -f $(srcdir)/ChangeLog.$$i; then \ dists="$$dists ChangeLog.$$i"; \ fi; \ done; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir) || exit 1; \ else \ cp -p $(srcdir)/$$file $(distdir) || exit 1; \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for creating PO files. .nop.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ esac; \ }; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: # Recreate Makefile by invoking config.status. Explicitly invoke the shell, # because execution permission bits may not work on the current file system. # Use @SHELL@, which is the shell determined by autoconf for the use by its # scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && @SHELL@ ./config.status $(subdir)/$@.in po-directories force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: recode-3.7.15/po/tr.po0000644000175000017500000004203214766021055010143 # Recode Turkish Translation # Copyright (C) 2002 Free Software Foundation, Inc. # İrfan Macit , 2002. # msgid "" msgstr "" "Project-Id-Version: recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2002-06-20 11:00EET\n" "Last-Translator: İrfan Macit \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: src/main.c:112 msgid "No error" msgstr "Hata yok" #: src/main.c:115 msgid "Non canonical input" msgstr "Ana biçem olmayan girdi" #: src/main.c:118 msgid "Ambiguous output" msgstr "Belirsiz çıktı" #: src/main.c:121 msgid "Untranslatable input" msgstr "Çevrilemeyen girdi" #: src/main.c:124 msgid "Invalid input" msgstr "Geçersiz girdi" #: src/main.c:127 msgid "System detected problem" msgstr "Sistem hata buldu" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Yeniden kodlama kitaplığı hatalı kullanılmış" #: src/main.c:133 msgid "Internal recoding bug" msgstr "İçsel yeniden kodlama hatası" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Bu bir serbest yazılımdır; Free Software Foundation tarafından yayınlanan\n" "GNU Genel Kamu Lisansı'nın 2. veya (sizin tercihinize baÄŸlı olarak) daha\n" "sonraki bir sürümü altında yeniden dağıtabilir ve/veya deÄŸiÅŸtirebilirsiniz\n" "\n" "Bu yazılım faydalı olacağı umularak dağıtılmaktadır, fakat\n" "HİÇ BİR GARANTİSİ YOKTUR; SATILABİLİRLİĞİ veya\n" "HERHANGİ BİR AMACA UYGUNLUÄžU için dahi zımni bir garanti\n" "içermez. Daha fazla bilgi için GNU Genel Kamu Lisansı'na bakın.\n" "\n" "Bu yazılımla birlikte GNU Genel Kamu Lisansı'nın bir kopyası gelmiÅŸ\n" "olmalıdır; eÄŸer yok ise, lütfen Free Software Foundation, Inc., 59 Temple\n" "Place - Suite 330, Boston, MA 02111-1307, USA/ABD adresine yazın.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Daha fazla bilgi için '%s %s'.\n" #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "Serbest `recode', dosyaları deÄŸiÅŸik karakter kümeleri ve yüzeylere " "dönüştürür.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Kullanım: %s [SEÇENEK]...[[KARKÜME] | İSTEK [DOSYA]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Uzun seçenekler için zorunlu olan argümanlar kısa seçenekler için de\n" "zorunludur. Aynı ÅŸey bütün argümanlar için geçerlidir.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Seçenekler:\n" " -l, --list[=BİÇEM] bilinen karakter kümeleri ve rumuzların birini " "ya da hepsini listeler\n" " -k, --known=ÇİFT karakter kümelerini bilinen ÇİFT listesine göre " "sınırlar.\n" " -h, --header[=[LN/]İSİM] standart çıktıya LN'i kullanarak tablonun " "İSMİ'ni yazar ve çıkar\n" " -F, --freeze-tables bütün tabloları içeren bir C modülü yazdırır\n" " -T, --find-subsets bir baÅŸka kümenin alt kümesi olan bütün " "karakter kümelerini raporlar\n" " -C, --copyright telif hakkı ve kopyalama koÅŸullarını gösterir\n" " --help bu yardımı gösterir ve çıkar\n" " --version sürüm bilgisini gösterir ve çıkar\n" #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Çalışma Kipleri:\n" " -v, --verbose adım sıralarını anlatır ve durum bilgisi gösterir\n" " -q, --quiet, --silent geri dönüşsüz yeniden kodlamalar hakkında bilgi " "vermez\n" " -f, --force geri dönüşsüz bile olsa yeniden kodlamaları yapar\n" " -t, --touch deÄŸiÅŸiklikten sonra yeniden kodlanmış dosyalara " "`touch' uygular\n" " -i, --sequence=files çevrimleri sıralamak için ara dosyalar kullanır\n" " --sequence=memory çevrimleri sıralamak için bellek yastıkları " "kullanır\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "İnce ayar:\n" " -s, --strict kesin olmayan harflerde bile kesin eÅŸlemeler " "kullanır\n" " -d, --diacritics HTML/LaTeX için yalnız aksan v.b.'yi yeniden " "kodlar\n" " -S, --source[=LN] yeniden kodlamayı dizgeler ve LN gibi açıklamalarla " "sınırlar\n" " -c, --colons ö,ü'nin iki noktası için çift tırnak yerine iki " "nokta üstüste kullanır\n" " -g, --graphics IBMPC cetvellerini ASCII grafikleriyle deÄŸiÅŸtirir\n" " -x, --ignore=KARKÜME yeniden kodlama seçilirken KARKÜME dikkate alınmaz\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "-l seçeneÄŸi, BİÇEM veya KARKÜME verilmezse mevcut karakter kümelerini " "listeler\n" "BİÇEM, `decimal' (onluk), `octal' (sekizlik), `hexadecimal' (onaltılık), \n" "`full' (tam) veya `dohf' seçeneklerinden birisi olabilir.\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "EÄŸer DEFAULT_CHARSET çevre deÄŸiÅŸkeni atanmamışsa, KARKÜME yerel\n" "ayarlarına baÄŸlı kodlama olarak atanır ve LC_ALL, LC_CTYPE, LANG çevre\n" "deÄŸiÅŸkenlerinden etkilenir.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "-k seçeneÄŸi ile, dönüşecek karakter kümeleri, dönüştürülecek karakter " "kümeleri\n" "ile birlikte ÇİFT'ler halinde listelenir: `ÖNC1:SON1,ÖNC2:SON2,...'\n" "ÖNC ve SON karakter kümesi isimleri, ondalık sayı halinde kodlardan oluÅŸur.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN bir bilgisayar dilidir, `c', `perl' veya `po' olabilir; öntanımlı: `c'\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "İSTEK: ALTİSTEK,[ALTİSTEK]...; ALTİSTEK ise KODLAMA[..KODLAMA]...\n" "KODLAMA: [KARKÜME][/YÜZEY]]...; İSTEK genelde ÖNCE..SONRA\n" "biçeminde olur, ÖNCE ve SONRA karakter kümeleridir. BelirtilmemiÅŸ bir\n" "karakter kümesi öntanımlı karakter kümesinin kullanılacağına iÅŸaret eder.\n" "BelirtilmemiÅŸ [/YÜZEY]..., o KARKÜME için öntanımlı yüzeyin kullanılacağına\n" "iÅŸaret eder. Yalnız / kullanılır ve yüzey belirtilmezse, hiç yüzey " "kullanılmaz.\n" "Lütfen el kitabını inceleyin.\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "EÄŸer -i ve -p'nin hiç birisi verilmemiÅŸ ve DOSYA yok ise, -p, aksi\n" "halde -i varsayılır. Her DOSYA kendi üstüne yeniden kodlanır ve orjinali\n" "yok edilir. EÄŸer DOSYA verilmemiÅŸse, bir filtre görevi yapar ve standart\n" "girdiyi, standart çıktıya yeniden kodlar.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "`%s' sembolü bilinmiyor" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "`%s' sırası belirsiz" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "`%s' sırası bilinmiyor" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "`%s' dili belirsiz" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "`%s' dili bilinmiyor" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "`%s' biçemi belirsiz" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "`%s' biçemi bilinmiyor" #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "Yazan: François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Telif Hakkı (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Bu bir serbest yazılımdır; kopyalama koÅŸulları için kaynak koduna bakınız.\n" "HİÇ BİR GARANTİSİ YOKTUR; SATILABİLİRLİĞİ veya\n" "HERHANGİ BİR AMACA UYGUNLUÄžU için dahi zımni bir garanti\n" "içermez.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "`%s' karakter kümesi bilinmiyor veya belirsiz" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Zorunlu argüman eksik" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "`%s' isteÄŸi hatalı" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "%s yeniden kodlanıyor..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " bitti\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr "baÅŸarısız: `%2$s..%3$s' adımında %1$s\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "`%2$s..%3$s' adımında %1$s" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%1$s baÅŸarısız: `%3$s..%4$s' adımında %2$s" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "%s karakter kümesi zaten mevcut ve %s deÄŸil" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "`%s' listelenemiyor, bu karakter kümesi için isim yok" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Ond Sek OnaltıUCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "`%s' için hiç isim mevcut deÄŸil" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "`%s' için yüzeyleyici birden fazla defa atanmış" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "`%s' için yüzey yokedici birden fazla defa atanmış" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Sanal bellek tükendi" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "%3d ve %3d kodlarının ikisi de %3d'ye yeniden kodluyor" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "%3d'ye yeniden kodlanan harf yok" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Verilen birebir eÅŸlemeli tablo tersine çevrilemez" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "`%s'den `%s'e durum bildirimleri inceleniyor" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "%d no'lu çift <%3d, %3d>, <%3d, %3d> ile çakışıyor" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Tablo bilinen çiftler kümesinden tamamlanamıyor" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Birebir yeniden kodlama, tabloya gerek yok" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Yeniden kodlama bir tablo için fazla karmaşık" #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "" "%sDönüşüm tablosu mekanik olarak Free `%s' %s tarafından oluÅŸturulmuÅŸtur" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%2$s.%3$s sırası için %1$s" #: src/recode.c:748 msgid "No table to print" msgstr "Yazdırılacak tablo yok" #: src/request.c:35 msgid "reversible" msgstr "geri dönüşümlü" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s'den %s'e" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "bayt" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "deÄŸiÅŸken" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Ulaşılamaz*" #: src/request.c:111 msgid "*mere copy*" msgstr "*yalnızca kopya*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Sanal bellek tükendi!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Adım baÅŸlangıcı baÅŸarısız" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Adım baÅŸlangıcı baÅŸarısız (iÅŸlenmemiÅŸ seçenekler)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "İstek: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "%s'e küçüldü\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Bilinmeyen yüzey adı `%s'" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "`%s'den `%s'e yeniden kodlamanın yolu yok" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "İstekte `..' bekleniyordu" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Ast iÅŸlem bekleme durumu: 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Açıklama\n" "\n" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=pipe çevrimleri sıralamak için veriyolu (pipe) " #~ "kullanır\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe (bu sistemde) -i ile aynı\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Yazılım hatalarını adresine,\n" #~ "Çeviri hatalarını adresine yollayın.\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Biçem eski, lütfen `%s'i tercih edin" recode-3.7.15/po/cs.gmo0000644000175000017500000002301014766021055010262 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“‡œ¾$«ãŠõ´ÅNc²»8Äý '53M$@¦)ç<)N x™#¸/Ü$ 12Nšbª" 0)Ku‘  6Áø5 IA ‹ 0Ÿ Ð ì ü 3!(M!!v!˜!5ª!à!7û!3"O"¸l"+%#Q#´f#%$<A$~$–$ ¶$ß×$3·%ë%ð%ø% ý%+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: recode 3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2019-05-21 21:28+02:00 Last-Translator: Petr Pisar Language-Team: Czech Language: cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. Každý SOUBOR se pÅ™evádí sám do sebe, takže zniÄí originál. Není-li zadán žádný SOUBOR, pak se recode chová jako filtr a pÅ™evádí standardní vstup na standardní výstup. Pokud dlouhý pÅ™epínaÄ oznaÄuje argument za povinný, pak je povinný i pro odpovídající krátký pÅ™epínaÄ. Obdobné pravidlo platí pro volitelné argumenty. Režimy bÄ›hu: -v, --verbose vysvÄ›tlí posloupnost kroků a vyznaÄí postup bÄ›hu -q, --quiet, --silent potlaÄí zprávy o nevratných pÅ™evodech -f, --force vynutí pÅ™evody, i když budou nevratné -t, --touch po nahrazení pÅ™evedených souborů zmÄ›ní i jejich Äasy -i, -p, --sequence=STRATEGIE ignoruje se, pro zpÄ›tnou kompatibilitu PÅ™epínaÄ -l bez FORMÃTU a bez SADY vypíše dostupné znakové sady a povrchy. FORMÃT je „decimal“ (desítkový), „octal“ (osmiÄkový), „hexadecimal“ (Å¡estnáctkový) nebo „full“ (plný) nebo jeden ze znaků „dohf“. POŽADAVEK je PODPOŽADAVEK[,PODPOŽADAVEK…]; PODPOŽADAVEK je KÓDOVÃNÃ[..KÓDOVÃNÃ…]. KÓDOVÃNà je [ZNAKOVÃ_SADA][/[POVRCH]…]; POŽADAVEK Äasto vypadá jako PŘED..POTOM, kde PŘED a POTOM jsou znakové sady. Vynechaná ZNAKOVÃ_SADA implikuje obvyklou znakovou sadu, vynechaný [/POVRCH…] znamená implicitní povrch dané ZNAKOVÉ_SADY, „/“ s prázdným názvem povrchu znaÄí žádný povrch. Vizte manuál. Chyby v programu hlaste anglicky na . Chyby v pÅ™ekladu hlaste Äesky na . Použití: %s [PŘEPÃNAÄŒE…] [ [ZNAKOVÃ_SADA] | POŽADAVEK [SOUBOR…] ] hotovo %s do %s%sPÅ™evodní tabulka mechanicky vytvoÅ™ena pomocí %s %s%spro posloupnost %s.%s*Nedosažitelný*Äistá kopieNejednoznaÄný výstupZ množiny známých párů nelze sestavit tabulkuZadanou tabulku 1:1 nelze invertovat„%s“ nelze vypsat, pro tuto sadu neexistují žádná jménaZnaková sada %s již existuje a není %sZnaková sada „%s“ není známa nebo není jednoznaÄnáProces potomka zakonÄen ve stavu 0x%0.2xOba kódy %3d a %3u vedou na %3dDes Osm Å est UCS2 Mne %s V požadavku oÄekáváno „..“Následuje diagnostika pro „%s“ do „%s“Formát „%s“ není jednoznaÄnýFormát „%s“ není známTabulka identity, ne příliÅ¡ užiteÄná tabulkaVnitÅ™ní chyba pÅ™evoduNeplatný vstupJZ pÅ™edstavuje jazyk, nabývá hodnot „c“, „perl“ nebo „po“, implicitní je „c“. Jazyk „%s“ není jednoznaÄnýJazyk „%s“ není známNesprávné použití pÅ™evodní knihovnyŽádný znak nevede na %3uŽádná chybaŽádná tabulka na vytiÅ¡tÄ›níNeexistuje způsob, jak pÅ™evést „%s“ na „%s“Nekanonický vstupPár Ä. %u: <%3d, %3d> je v rozporu s <%3d, %3d>Recode pÅ™evádí soubory mezi rozliÄnými znakovými sadami a povrchy. %s se pÅ™evádí…PÅ™evod je na pouhou tabulku příliÅ¡ složitýPožadavek „%s“ chybnýPožadavek: %s Požadovaný argument chybíZmÄ›na povrchu u %s“ nastavena více než jednouPosloupnost „%s“ není jednoznaÄnáPosloupnost „%s“ není známaZkráceno na: %s Je nám líto, ale pro „%s“ není žádný názevInicializace kroku selhalaInicializace kroku selhala (nezpracované pÅ™epínaÄe)Symbol „%s“ není známProblém nalezený systémemToto je svobodné programové vybavení, pro podmínky rozmnožování vizte zdrojové kódy. Není zde ŽÃDNà záruka, ani na OBCHODOVATELNOST, ani na VHODNOST PRO URÄŒITà ÚČEL. Podrobnosti získáte pomocí „%s %s“. UCS2 Mne Popis Není-li nastavena promÄ›nná prostÅ™edí DEFAULT_CHARSET, jako implicitní kódování SADY se použije kódování národního prostÅ™edí urÄené podle LC_ALL, LC_CTYPE, LANG. Nerozpoznaný název povrchu „%s“OdstranÄ›ní povrchu u „%s“ nastaveno více než jednouNepÅ™eložitelný vstupVirtuální paměť vyÄerpánaVirtuální paměť vyÄerpána!Pomocí -k lze urÄit možné sady pÅ™ed pro zadanou ZNAKOVOU_SADU po, obÄ› jsouce tabulkovými znakovými sadami, PÃRY jsouce tvaru „PŘED1:PO1,PŘED2:PO2,…“. PŘED a PO jsou kódy zadané jako desítkové Äíslo. Napsal François Pinard . bajtvratnýUCS2promÄ›nnárecode-3.7.15/po/sl.gmo0000644000175000017500000001616114766021055010304 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€‰‡ 󑨅=. ly–¥ ´5Â%ø2Q'o*—Âà-ý+B'YŸ6¯æü . 9&Cj|#޲ ËÙ0ó$>Xh „5¥ÛïÙ*Ûy)”3¾ò"AP U_ d:. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2001-06-08 12:41+02:00 Last-Translator: Primoz Peterlin Language-Team: Slovenian Language: sl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit X-Bugs: Report translation errors to the Language-Team address. ÄŒe je pri dolgi obliki izbire argument naveden kot obvezen, velja obveza tudi za kratko obliko. Podobno tudi za neobvezne argumente. Izbira -l brez podane OBLIKE ali NABORA izpiÅ¡e seznam vseh znanih kodnih naborov in preÄrkovalnih shem. OBLIKA je lahko ,decimal` (desetiÅ¡ka), ,octal` (osmiÅ¡ka), ,hexadecimal` (Å¡estnajstiÅ¡ka) ali ,full` (polna), ali ena od Ärk ,dohf`. ZAHTEVEK ima obliko PODZAHTEVEK[,PODZAHTEVEK]...; PODZAHTEVEK ima obliko KODIRANJE[,KODIRANJE]...; KODIRANJE ima obliko [NABOR][/[SHEMA]]. ZAHTEVEK ima pogosto obliko PREJ..POTEM, kjer sta PREJ in POTEM kodirana nabora znakov. IzpuÅ¡Äeni NABOR pomeni privzetega; izpuÅ¡Äena [/SHEMA] pomeni privzeto preÄrkovalno shemo za dani NABOR. PoÅ¡evnica / brez sheme pomeni brez preÄrkovalne sheme. Podrobnosti so v priroÄniku. Uporaba: %s [IZBIRA]... [ [NABOR] | ZAHTEVA [DATOTEKA]... ] opravljeno %s v %s%sza zaporedje %s.%s*Nedosegljivo**zgolj prepis*Dvoumen izhodIz množice znanih parov ni mogoÄe dokonÄati tabeleDana tabela eden-v-enega ni obrnljivaIzpis ,%s' ni mogoÄ, imen za ta nabor ni na voljoNabor %s že obstaja in ni %sNabor znakov ,%s` je neznan ali dvoumenÄŒakalni status procesa potomca je 0x%0.2xdes osm Hex UCS2 Mne %s V zahtevku priÄakujemo ,..`Sledi diagnostika za pretvorbo iz ,%s' v ,%s'Oblika ,%s` je dvoumnaOblika ,%s` je neznanaPretvorba je trivialna, nevredna tabeleNotranja napaki pri pretvorbiNeveljaven vhodJEZIK je lahko ,c`, ,perl` ali ,po`; privzeto je ,c`. Jezik ,%s` je dvoumenJezik ,%s` je neznanZloraba pretvorne knjižniceBrez napakTabele niPretvorba iz ,%s` v ,%s` ni izvedljivaNekanoniÄen vhodPretvarjamo %s...Pretvorba je prezapletena za tabeloZahteva ,%s` je napaÄnaZahtevek: %s Zahtevani argument manjkaVeÄ kot ena preÄrkovalna shema uvedena za ,%s`Zaporedje ,%s` je dvoumnoZaporedje ,%s` je neznanoSkrÄeno v: %s Imena za ,%s` niso na voljoInicializacija koraka neuspeÅ¡naInicializacija koraka neuspeÅ¡na (nepredelane izbire)Znak ,%s` je neznanTežave v sistemuTo je prost program; pogoji, pod katerimi ga lahko uporabljate, razmnožujete in razÅ¡irjate so navedeni v izvorni kodi. Za program ni NOBENEGA jamstva, niti jamstev USTREZNOSTI ZA PRODAJO ali PRIMERNOSTI ZA UPORABO. Poskusite ,%s %s` za dodatne informacije. UCS2 Mne Opis ÄŒe ni doloÄena spremenljivka DEFAULT_CHARSET, se privzame NABOR, doloÄen s spremenljivkami LC_ALL, LC_CTYPE ali LANG. Neprepoznano ime preÄrkovalne sheme ,%s`VeÄ kot ena preÄrkovalna shema preklicana za ,%s`Neprevedljiv vhodVirtualni pomnilnik porabljenVirtualni pomnilnik porabljen!Pri izbiri -k se izpiÅ¡ejo vsi možni startni nabori za podani ciljni nabor. Startni in ciljni nabor sta kodirana nabora znakov. PARI naj imajo obliko ,,START1:CILJ1,START2:CILJ2...``, kjer so STARTn in CILJn desetiÅ¡ke kode znakov v startnem in ciljnem kodnem naboru. bajtobrnljivoUCS2spremenljivorecode-3.7.15/po/el.po0000644000175000017500000005656614766021054010136 # Greek messages for GNU recode # Copyright (C) 1999, 2008 Free Software Foundation, Inc. # Simos Xenitellis , 1999, 2008. # msgid "" msgstr "" "Project-Id-Version: GNU recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2008-02-13 01:30+0000\n" "Last-Translator: Simos Xenitellis \n" "Language-Team: Greek \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" # src/main.c:157 #: src/main.c:112 msgid "No error" msgstr "Κανένα σφάλμα" # src/main.c:160 #: src/main.c:115 msgid "Non canonical input" msgstr "Μη κανονικοποιημένη είσοδος" # src/main.c:163 #: src/main.c:118 msgid "Ambiguous output" msgstr "Ασαφής έξοδος" # src/main.c:166 #: src/main.c:121 msgid "Untranslatable input" msgstr "Μη μεταφÏάσιμη είσοδος" # src/main.c:169 #: src/main.c:124 msgid "Invalid input" msgstr "Μη έγκυÏη είσοδος" # src/main.c:172 #: src/main.c:127 msgid "System detected problem" msgstr "Το σÏστημα διαπίστωσε Ï€Ïόβλημα" # src/main.c:175 #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Κακή χÏήση της βιβλιοθήκης recode" # src/main.c:178 #: src/main.c:133 msgid "Internal recoding bug" msgstr "ΕσωτεÏικό σφάλμα (recoding)" # src/main.c:454 #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Αυτό το Ï€ÏόγÏαμμα είναι ελεÏθεÏο λογισμικό· μποÏείτε να το αναδιανείμετε\n" "και/ή να το Ï„Ïοποποιήσετε σÏμφωνα με τους κανόνες της Γενικής Δημόσιας\n" "Άδειας GNU όπως εκδίδεται από το Free Software Foundation· είτε την\n" "έκδοση 2 είτε (κατά την Ï€Ïοτίμησή σας) οποιασδήποτε μεταγενέστεÏης έκδοσης.\n" "\n" "Αυτό το Ï€ÏόγÏαμμα διανέμεται με την ελπίδα ότι θα είναι χÏήσιμο,\n" "αλλά ΧΩΡΙΣ ΚΑΜΙΑ ΕΓΓΫΗΣΗ· χωÏίς οÏτε έμμεση εγγÏηση\n" "ΛΕΙΤΟΥΡΓΙΚΟΤΗΤΑΣ ή ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ ΕÎΑ ΣΥΓΚΕΚΡΙΜΕÎΟ ΣΚΟΠΟ.\n" "ΑναφεÏθείτε στο GNU General Public License για πεÏισσότεÏες λεπτομέÏειες.\n" "\n" "Θα Ï€Ïέπει να έχεται λάβει ένα αντίγÏαφο της Γενικής Δημόσιας Άδειας GNU\n" "μαζί με αυτό το Ï€ÏόγÏαμμα εάν όχι· γÏάψτε στο Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" # src/main.c:479 #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Δοκιμάστε `%s %s' για πεÏισσότεÏες πληÏοφοÏίες.\n" # src/main.c:483 #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "Το ελεÏθεÏο `recode' μετατÏέπει αÏχεία Î¼ÎµÏ„Î±Î¾Ï Ï€Î¿Î¹ÎºÎ¯Î»Ï‰Î½ συνόλων χαÏακτήÏων " "και επιφανειών.\n" # src/main.c:486 #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "ΧÏήση: %s [ΕΠΙΛΟΓΗ]... [ [ΣΥÎΟΛΟΧΑΡΑΚΤΉΡΩÎ] | ΑΙΤΗΣΗ [ΑΡΧΕΙΟ]...\n" # src/main.c:489 #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Αν μια μακÏά επιλογή αναφέÏει μια παÏάμετÏο σαν υποχÏεωτική, τότε είναι\n" "υποχÏεωτική και για την αντίστοιχη σÏντομη επιλογή επίσης. Το ίδιο\n" "και για τις Ï€ÏοαιÏετικές παÏαμέτÏους.\n" # src/main.c:494 #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Εμφανίσεις:\n" " -l, --list[=ΜΟΡΦΗ] εμφάνιση ένα ή όλα τα γνωστά σÏνολα χαÏακτήÏων\n" " -k, --known=ΖΕΥΓΗ πεÏιοÏισμός των συνόλων χαÏακτήÏων σÏμφωνα με\n" " τη λίστα από γνωστά ΖΕΥΓΗ. -h, --" "header[=[LN/]ΟÎΟΜΑ] εμφάνιση του πίνακα ΟÎΟΜΑ στην κανονική έξοδο\n" " με χÏήση του LN, μετά έξοδος\n" " -F, --freeze-tables εμφάνιση σε κώδικα C με όλους τους πίνακες\n" " -T, --find-subsets αναφοÏά όλων των συνόλων χαÏακτήÏων που είναι\n" " υποσÏνολα σε άλλα\n" " -C, --copyright εμφάνιση του Copyright και κανόνων αντιγÏαφής\n" " --help εμφάνιση αυτής της βοήθειας και έξοδος\n" " --version εμφάνιση πληÏοφοÏιών έκδοσης και έξοδος\n" # src/main.c:506 #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Καταστάσεις λειτουÏγίας:\n" " -v, --verbose αναφοÏά διαδοχής βημάτων και Ï€Ïοόδου\n" " -q, --quiet, --silent απόκÏυψη μηνυμάτων μη-αντιστÏεπτών μετατÏοπών\n" " -f, --force επιβολή μετατÏοπών ακόμα και αν είναι μη " "αντιστÏεπτές\n" " -t, --touch ενημέÏωση της ημεÏομηνίας των μετατÏεπομένων " "αÏχείων\n" " μετά την αντικατάσταση\n" " -i, --sequence=files χÏήση ενδιάμεσων αÏχείων στα διαδοχικά πεÏάσματα\n" " --sequence=memory χÏήση ενταμιευτών μνήμης στα διαδοχικά πεÏάσματα\n" # src/main.c:525 #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Ρυθμίσεις:\n" " -s, --strict χÏήση αυστηÏών συσχετίσεων, ακόμα και ελεÏθεÏων " "χαÏακτήÏων\n" " -d, --diacritics μετατÏοπή μόνο διακÏιτικών ή παÏόμοιων για HTML/" "LaTeX\n" " -S, --source[=LN] πεÏιοÏισμός μετατÏοπών σε αλφαÏιθμητικά και σχόλια\n" " κάτα το LN\n" " -c, --colons χÏήση κολώνων αντί διπλών εισαγωγικών για τη " "διαίÏεση\n" " -g, --graphics Ï€Ïοσέγγιση κανόνων IBMPC με ASCII γÏαφικά\n" " -x, --ignore=ΠΙÎΧΑΡ αγνόηση πίνακα χαÏακτήÏων (ΠΙÎΧΑΡ) στην επιλογή " "Î¼Î¿Î½Î¿Ï€Î±Ï„Î¹Î¿Ï Î¼ÎµÏ„Î±Ï„Ïοπών\n" # src/main.c:294 #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Η επιλογή -l χωÏίς ΜΟΡΦΗ, οÏτε ΠΙÎΧΑΡ, απαÏιθμεί τους διαθέσιμους πίνακες\n" "χαÏακτήÏων και επιφάνειες. ΜΟΡΦΗ είναι `decimal', `octal', `hexadecimal'\n" "ή `full' (ή ένα από τα `dohf').\n" # src/main.c:302 #: src/main.c:257 #, fuzzy msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Εκτός και αν έχει οÏιστεί η μεταβλητή πεÏιβάλλοντος DEFAULT_CHARSET,\n" "ο πίνακας χαÏακτήÏων (CHARSET) είναι ως Ï€Ïοεπιλογή το `%s'.\n" # src/main.c:540 #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Με -k, πιθανοί Ï€ÏοηγοÏμενοι πίνακες χαÏακτήÏων εμφανίζονται για το δοθέν\n" "επόμενο πίνακα χαÏακτήÏων (CHARSET), όντας και τα δÏο σε μοÏφή πεδίων,\n" "σε ΖΕΥΓΗ της μοÏφής `ΠΡΟΗΓ1:ΕΠΟΜΕÎ1,ΠΡΟΗΓ1:ΕΠΟΜΕÎ2,...'\n" "και τα ΠΡΟΗΓ και ΕΠΟΜΕÎ, όντας κωδικοί, δίνονται ως αÏιθμοί.\n" # src/main.c:318 #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN είναι μια γλώσσα, μποÏεί να είναι `c', `perl' ή `po'· Ï€Ïοεπιλογή είναι το " "`c'.\n" # src/main.c:321 #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "ΑΙΤΗΣΗ είναι ΥΠΟΑΙΤΗΣΗ[,ΥΠΟΑΙΤΗΣΗ]...· ΥΠΟΑΙΤΗΣΗ είναι ΚΩΔΙΚΟΠΟΙΗΣΗ[..." "ΚΩΔΙΚΟΠΟΙΗΣΗ]...\n" "ΚΩΔΙΚΟΠΟΙΗΣΗ είναι [ΠΙÎΧΑΡ][/[ΕΠΙΦΑÎΕΙΑ]]...· ΑΙΤΗΣΗ συνήθως μοιάζει με " "ΠΡΟΗΓΟΥΜΕÎΟ...ΕΠΟΜΕÎΟ,\n" "με ΠΡΟΗΓΟΥΜΕÎΟ και ΕΠΟΜΕÎΟ να είναι πίνακες χαÏακτήÏων. Ένας ΠΙÎΧΑΡ που\n" "έχει παÏαληφθεί, υποδηλώνει το συνήθες πίνακα χαÏακτήÏων· ένα [/" "ΕΠΙΦΑÎΕΙΑ]...\n" "που έχει παÏαληφθεί, σημαίνει τις υποδηλωμένες επιφάνειες του ΠΙÎΧΑΡ ένα /\n" "χωÏίς όνομα επιφάνειας σημαίνει χωÏίς καθόλου επιφάνειες. Κοιτάξτε το " "εγχειÏίδιο.\n" # src/main.c:556 #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Αν κανένα από τα -i και -p δε δίδονται, θεώÏησε -p αν δεν υπάÏχει ΑΡΧΕΙΟ, " "αλλιώς -i.\n" "Κάθε ΑΡΧΕΙΟ μετατÏέπεται πάνω στον εαυτό του, καταστÏέφοντας το Ï€Ïωτότυπο.\n" "Αν κανένα ΑΡΧΕΙΟ δεν έχει οÏιστεί, τότε φέÏσου σαν φίλτÏο και μετέτÏεψε\n" "την κανονική είσοδο στην κανονική έξοδο.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "" # src/main.c:854 #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "ΓÏαμμένο από τον Franc,ois Pinard .\n" # src/main.c:622 #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" # src/main.c:850 #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Αυτό είναι ελεÏθεÏο λογισμικό· δείτε το πηγαίο κώδικα για τους κανόνες " "αντιγÏαφής.\n" "ΔΕΠυπάÏχει εγγÏηση· οÏτε ακόμα για ΧΡΗΣΙΜΟΤΗΤΑ ή ΚΑΤΑΛΛΗΛΟΤΗΤΑ ΓΙΑ ΕÎΑ\n" "ΣΥΓΚΕΚΡΙΜΕÎΟ ΣΚΟΠΟ.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "" # src/main.c:1098 #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "ΜετατÏοπή του %s..." # src/main.c:1108 #: src/main.c:856 #, c-format msgid " done\n" msgstr " έγινε\n" # src/main.c:1142 #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " απέτυχε: %s σε %s..%s\n" # src/main.c:1172 #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s σε %s..%s" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" # src/main.c:1149 #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s απέτυχε: %s σε %s..%s" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" # src/names.c:259 #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Ο πίνακας χαÏακτήÏων %s υπάÏχει ήδη και δεν είναι το %s" # src/names.c:754 #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "Αδυναμία εμφάνισης του `%s', δεν υπάÏχουν ονόματα διαθέσιμα για αυτόν τον " "πίνακα χαÏακτήÏων" # src/names.c:974 src/names.c:1020 #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" # src/names.c:847 #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Συγνώμη, δεν υπάÏχουν διαθέσιμα ονόματα για το `%s'" # src/outer.c:95 #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "" "Ο επανατοποθετητής επιφάνειας έχει τεθεί πεÏισσότεÏο από μια φοÏά για το `%s'" # src/outer.c:102 #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "" "Ο αντιτοποθετητής επιφάνειας έχει τεθεί πεÏισσότεÏο από μια φοÏά για το `%s'" # src/recode.c:117 src/recode.c:129 #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Η ιδεατή μνήμη εξαντλήθηκε" # src/recode.c:157 #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Και οι δÏο κωδικοί %3d και %3d μετατÏέπονται σε %3d" # src/recode.c:171 #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "Κανένας χαÏακτήÏας δεν μετατÏέπεται σε %3d" # src/recode.c:172 #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Αδυναμία αντιστÏοφής δοθέντος 1-1 πίνακα" # src/recode.c:226 src/recode.c:238 #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "ΑκολουθοÏν διαγνωστικά για `%s' σε `%s'" # src/recode.c:231 src/recode.c:243 #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "ΑÏιθμ. ζεÏγους %d: <%3d, %3d> συγκÏοÏεται με <%3d, %3d>" # src/recode.c:274 #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Αδυναμία συμπλήÏωσης πίνακα από το σÏνολο γνωστών ζευγών" # src/recode.c:504 #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Μηδαμηνή μετατÏοπή, δεν χÏειάζεται πίνακα" # src/recode.c:512 #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Η μετατÏοπή είναι Ï€Î¿Î»Ï Ï€ÎµÏίπλοκη για ένα μόνο πίνακα" # src/recode.c:544 #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sΠίνακας μετατÏοπής δημιουÏγήθηκε μηχανικά από το ΕλεÏθεÏο `%s' %s" # src/recode.c:546 #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sγια διαδοχή %s.%s" # src/recode.c:736 #: src/recode.c:748 msgid "No table to print" msgstr "Κανένας πίνακας για εκτÏπωση" # src/request.c:35 #: src/request.c:35 msgid "reversible" msgstr "αντιστÏεπτό" # src/request.c:37 #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s σε %s" # src/request.c:38 src/request.c:40 #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "byte" # src/request.c:39 src/request.c:41 #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" # src/request.c:39 src/request.c:41 #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "μεταβλητή" # src/request.c:112 #: src/request.c:109 msgid "*Unachievable*" msgstr "*Μη κατοÏθωτό*" # src/request.c:114 #: src/request.c:111 msgid "*mere copy*" msgstr "*απλή αντιγÏαφή*" # src/request.c:244 #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Η ιδεατή μνήμη εξαντλήθηκε!" # src/request.c:263 #: src/request.c:252 msgid "Step initialisation failed" msgstr "Το βήμα αÏχικοποίησης απέτυχε" # src/request.c:270 #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Το βήμα αÏχικοποίησης απέτυχε (επιλογές που δεν έχουν επεξεÏγαστεί)" # src/request.c:566 #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Αίτηση: %s\n" # src/request.c:702 #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "ΣυÏÏίκνωση σε %s\n" # src/request.c:806 src/request.c:912 #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Μη αναγνωÏίσημο όνομα επιφάνειας `%s'" # src/request.c:884 #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Κανένας Ï„Ïόπος να μετατÏαπεί από `%s' σε `%s'" # src/request.c:992 #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Αναμένεται `..' στην αίτηση" # src/task.c:751 src/task.c:915 #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Η κατάσταση παÏαμονής της θυγατÏικής διεÏγασίας είναι 0x%0.2x" # src/debug.c:287 #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne ΠεÏιγÏαφή\n" "\n" # src/main.c:517 #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr " -p, --sequence=pipe χÏήση σωλήνωσης στα διαδοχικά πεÏάσματα\n" # src/main.c:521 #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe το ίδιο με -i (σε αυτό το σÏστημα)\n" # src/main.c:562 #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "ΑναφέÏατε σφάλματα στο .\n" # src/main.c:999 #, fuzzy, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Μη συνιστώμενη σÏνταξη, παÏακαλώ Ï€Ïοτιμίστε `%s'" # src/main.c:308 #~ msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" #~ msgstr "" #~ "O ΠΙÎΧΑΡ (πίνακας χαÏακτήÏων ή CHARSET) δεν έχει εξ' οÏÎ¹ÏƒÎ¼Î¿Ï Ï„Î¹Î¼Î®,\n" #~ "οÏίστε τη μεταβλητή πεÏιβάλλοντος DEFAULT_CHARSET.\n" # src/main.c:659 #~ msgid "Ambiguous sequence `%s'" #~ msgstr "Ασαφής συμβολοσειÏά `%s'" # src/main.c:663 #~ msgid "Unknown sequence `%s'" #~ msgstr "Άγνωστη συμβολοσειÏά `%s'" # src/main.c:693 src/main.c:747 #~ msgid "Ambiguous language `%s'" #~ msgstr "Ασαφής γλώσσα `%s'" # src/main.c:697 src/main.c:751 #~ msgid "Unknown language `%s'" #~ msgstr "Άγνωστη γλώσσα `%s'" # src/main.c:785 #~ msgid "Ambiguous format `%s'" #~ msgstr "Ασαφής μοÏφή `%s'" # src/main.c:789 #~ msgid "Unknown format `%s'" #~ msgstr "Άγνωστη μοÏφή `%s'" # src/main.c:1005 #~ msgid "Erroneous request `%s'" #~ msgstr "Εσφαλμένη αίτηση `%s'" recode-3.7.15/po/fr.po0000644000175000017500000004050014766021055010123 # Messages français pour Free recode. # Copyright © 2004 Free Software Foundation, Inc. # # This file is distributed under the same license as the recode package. # # Michel Robitaille , 2004. # Stéphane Aulery , 2015, 2019. # # Réencodage ISO-8859-1 => UTF-8 et typos, S. Aulery, 2015. # msgid "" msgstr "" "Project-Id-Version: recode 3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2019-05-21 20:13+0200\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: src/main.c:112 msgid "No error" msgstr "Pas d'erreur" #: src/main.c:115 msgid "Non canonical input" msgstr "Entrée en forme non canonique" #: src/main.c:118 msgid "Ambiguous output" msgstr "Sortie ambiguë" #: src/main.c:121 msgid "Untranslatable input" msgstr "Entrée non traduisible" #: src/main.c:124 msgid "Invalid input" msgstr "Entrée invalide" #: src/main.c:127 msgid "System detected problem" msgstr "Problème rapporté par le système" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Mauvais usage de la logithèque de recodage" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Problème interne durant le recodage" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Ce programme est un logiciel libre; vous pouvez le redistribuer ou le\n" "modifier selon les termes de la License Publique Générale de GNU, publiée\n" "par la Free Software Foundation (soit la version 3 ou soit, à votre\n" "discrétion, toute version ultérieure).\n" "\n" "Ce programme est distribué pour être utile, mais SANS AUCUNE GARANTIE;\n" "sans même la garantie implicite qu'il est DE QUALITE LOYALE ET MARCHANDE\n" "ou APPROPRIE POUR UN BUT PARTICULIER. Voir la Licence Publique Générale\n" "de GNU pour plus de détails.\n" "\n" "Vous devriez avoir reçu copie de la Licence Publique Générale de GNU\n" "avec ce programme; sinon, écrire à la Free Software Foundation, Inc.,\n" "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Pour plus d'information, essayez « %s %s ».\n" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "Recode transforme les jeux de caractères et les surfaces de fichiers\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | DEMANDE [FICHIER]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Un paramètre obligatoire pour une option de forme longue l'est aussi pour " "une\n" "option de forme courte. La même règle s'applique à un paramètre indiqué " "comme\n" "étant optionnel.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listes:\n" " -l, --list[=FORMAT] afficher un charset donné, ou fournir toute la " "liste\n" " -k, --known=PAIRES choisir les charsets selon quelques PAIRES " "connues\n" " -h, --header[=[LN/]NOM] tabuler NOM sur stdout, utilisant LN, puis " "terminer\n" " -T, --find-subsets lister tout charset qui est sous-ensemble d'un " "autre\n" " -C, --copyright afficher les conditions de copie, puis terminer\n" " --help fournir ce message d'aide, puis terminer\n" " --version identifier la programme, puis terminer\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Modes d'opération:\n" " -v, --verbose afficher les étapes prévues, suivre la " "progression\n" " -q, --quiet, --silent taire les messages sur les recodages " "irréversibles\n" " -f, --force effectuer même les recodages irréversibles\n" " -t, --touch toucher les fichiers après leur remplacement\n" " -i, -p, --sequence=STRATEGIE sans effet (pour compatibilité descendante)\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Ajustements fins:\n" " -s, --strict recoder strictement ; supprime les caractères non " "transposés\n" " -d, --diacritics se restreindre aux diacritiques pour HTML/LaTeX/" "BibTeX\n" " -S, --source[=LN] ne recoder que les chaînes et les commentaires LN\n" " -c, --colons utiliser « : » plutôt que « \\\" » pour les trémas\n" " -g, --graphics convertir au mieux possible les « rulers » IBMPC\n" " -x, --ignore=CHARSET ignorer CHARSET durant le choix des étapes\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "L'option « -l » sans FORMAT ni CHARSET donne les charsets et surfaces " "disponibles.\n" "FORMAT vaut « decimal », « octal », « hexadecimal » ou « full », ou encore " "un caractère\n" "dans « dohf ».\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "À moins que DEFAULT_CHARSET ne soit initialisé dans l'environnement,\n" "le CHARSET par défaut est locale selon l'encodage, déterminé par LC_ALL, " "LC_CTYPE, LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Avec -k, les charsets antécédents possibles sont listés pour le CHARSET\n" "conséquent, tous deux étant des charsets RFC1345, restreints par les PAIRES\n" "dites selon la syntaxe « AVANT1:APRÈS1,AVANT2:APRÈS2,... »; chaque code " "AVANT\n" "et APRÈS est exprimé en décimal.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN est un langage de programmation, valant « c » (implicite), « perl » ou « " "po ».\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "DEMANDE est SOUS-DEMANDE[,SOUS-DEMANDE]...; SOUS-DEMANDE est CODAGE[.." "CODAGE]...\n" "CODAGE est [CHARSET][/[SURFACE]]...; DEMANDE ressemble souvent à AVANT.." "APRÈs,\n" "AVANT et APRÈS étant des charsets. Un CHARSET omis sous-entend le charset\n" "habituel; une [/SURFACE]... omise sous-entend les surfaces habituelles pour\n" "CHARSET; un / sans surface indique l'absence de toute surface. Voir le " "manuel!\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Chaque FICHIER est recodé sur lui-même, détruisant l'original. Si aucun\n" "FICHIER n'est donné, alors agir comme un filtre et recoder stdin sur " "stdout.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "Rapportez vos bogues sur https://github.com/rrthomas/recode\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "¨Symbole « %s » est inconnu" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Séquence « %s » est ambiguë" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Séquence « %s » est inconnue" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Langage « %s » est ambigu" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Langage « %s » est inconnu" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Format « %s » est ambigu" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Format « %s » est inconnu" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Écrit par François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright © 1990-2018 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Ce programme est un logiciel libre; consulter les sources pour connaître\n" "les droits de copie. Il n'y AUCUNE GARANTIE; même pas celle qu'il est\n" "DE QUALITÉ LOYALE ET MARCHANDE ou APPROPRIÉ POUR UN BUT PARTICULIER.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Charset « %s » est inconnu ou ambigu" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Argument requis est manquant" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Requête « %s » est erronée" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Recodage de « %s »..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " complété\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " non-réussi: %s dans « %s..%s »\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s dans « %s..%s »" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s non-réussi: %s dans « %s..%s »" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Le charset %s existe déjà, et n'est pas %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Incapable de lister « %s »: les noms n'y sont pas disponibles" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "déc oct hex UCS2 mné %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Désolé, aucun nom disponible pour « %s »" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Plus d'un re-surfaceur pour « %s »" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Plus d'un dé-surfaceur pour « %s »" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Mémoire virtuelle épuisée" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Les codes %3d et %3u s'injectent tous deux dans %3d" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Aucun caractère ne peut produire %3u" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Incapable d'inverser une table un-à-un" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Les diagnostics suivants s'appliquent pour « %s » vers « %s »" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Paire no. %u : < %3d, %3d > en conflit avec < %3d, %3d >" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Incapable de fermer une table en partant des paires connues" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Le recodage est trivial, une table n'est pas requise" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Recodage plus complexe que ce qu'une table peut décrire" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sTable de conversion engendrée mécaniquement par Free %s %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%spour séquence « %s ».%s" #: src/recode.c:748 msgid "No table to print" msgstr "Aucune table à imprimer" #: src/request.c:35 msgid "reversible" msgstr "réversible" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s vers %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "octet" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "flottant" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Irréalisable*" #: src/request.c:111 msgid "*mere copy*" msgstr "*simple copie*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Mémoire virtuelle épuisée" #: src/request.c:252 msgid "Step initialisation failed" msgstr "L'étape n'a pas été correctement initialisée" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "L'étape n'a pas été correctement initialisée (options non-traitées)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Demande: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Réduit à: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nom de surface inconnu: %s" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Pas moyen de recoder %s vers %s" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Chaîne « .. » attendue dans la demande" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "L'état du processus fils en attente est 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mné Description\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Syntaxe désuète, veuillez préférer « %s »" recode-3.7.15/po/ca.gmo0000644000175000017500000001703114766021055010246 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€€‰¦ ¹±·kL#pv~ ™¦¶>Ë* R5/ˆ3¸-ì84X©-É/÷'R?’#²7Ö!1?qŒ;§ã <,"i%Œ²&Á#è<  I"j®2<o¯‰&9<`!º"Üûÿû  :. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2003-08-30 16:48+0200 Last-Translator: Jordi Mallach Language-Team: Catalan Language: ca MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. X-Generator: KBabel 0.9.6 Si una opció llarga mostra un argument com requerit, aleshores també és requerit per a l'opció curta equivalent, i de forma similar per als arguments opcionals. L'opció -l sense cap FORMAT o JOC DE CARÀCTERS llista els jocs de caràcters i facetes disponibles. FORMAT és «decimal», «octal», «hexadecimal» o «full» (o un de «dohf»). PETICIÓ és SUBPETICIÓ[,SUBPETICIÓ]...; SUBPETICIÓ és CODIFICACIÓ[..CODIFICACIÓ]... CODIFICACIÓ és [JOC DE CARÀCTERS[/[FACETA]]...; PETICIÓ sovint és ABANS..DESPRÉS, amb ABANS i DESPRÉS sent jocs de caràcters. Un JOC DE CARÀCTERS omés implica el joc de caràcters habitual; una [/FACETA] omesa vol dir la faceta implícita per al JOC DE CARÀCTERS; un / amb una faceta buida vol dir que no hi ha faceta. Vegeu el manual. Forma d'ús: %s [OPCIÓ]... [ [JOC DE CARÀCTERS] | PETICIÓ [FITXER]... ] fet %s a %s%sper la seqüència %s.%s*Impossible**simple còpia*L'eixida és ambiguaNo es pot completar la taula des del joc de parelles conegudesNo es pot invertir la taula un-a-un donadaNo es pot llistar «%s», no hi ha noms disponibles per a aquest joc de caràctersEl joc de caràcters %s ja existeix i no és %sEl joc de caràcters «%s» és desconegut o ambiguL'estat d'espera del procés fill és 0x%0.2xDec Oct Hex UCS2 Mne %s S'esperava «..» a la peticióS'estan seguint els diagnòstics per «%s» a «%s»El format «%s» és ambiguEl format «%s» és desconegutRecodificació identitat, no mereix una taulaS'ha produït un error intern de recodificacióL'entrada és invàlidaLN és un llenguatge, pot ser «c», «perl» o «po; «c» és el predeterminat. El llenguatge «%s» és ambiguEl llenguatge «%s» és desconegutL'ús de la biblioteca de recodificació és incorrecteNo hi ha cap errorNo hi ha cap taula a imprimirNo hi ha manera de recodificar de «%s» a «%s»L'entrada no és canònicaS'està recodificant %s...La recodificació és massa complexa per a una simple taulaLa petició «%s» és erròniaPetició: %s Manca un argument requeritS'ha establert «resurfacer» més d'una vegada per a «%s»La seqüència «%s» és ambíguaLa seqüència «%s» és desconegudaEncogit a: %s No hi ha noms disponibles per a «%s»L'inicialització del pas ha fallatL'inicialització del pas ha fallat (opcions no processades)El símbol «%s» és desconegutEl sistema ha detectat un problemaAçò és Programari Lliure; vegeu el codi font per les condicions de còpia. NO hi ha CAP garantia; ni tan sols de COMERCIABILITAT o ADEQUACIÓ PER UN PROPÃ’SIT DETERMINAT. Proveu «%s %s» per a obtindre més informació. UCS2 Mne Descripció A no ser que s'establisca DEFAULT_CHARSET a l'entorn, el valor predeterminat de CHARSET és la codificació de la qual depen el locale, determinat per LC_ALL, LC_CTYPE, LANG. El nom de faceta «%s» és desconegutS'ha establert «unsurfacer» més d'una vegada per a «%s»L'entrada no és convertibleLa memòria virtual s'ha exhauritLa memòria virtual s'ha exhaurit!Amb -k, es mostren els possibles jocs de caràcters «abans» per al JOC «després» donat, sent ambdós jocs de caràcters tabulars, amb PARELLES de la forma «ABAN1:DESP1,ABAN2:DESP2,...» i sent els ABAN i DESP codis donats com números decimals. bytereversibleucs2variablerecode-3.7.15/po/ga.gmo0000644000175000017500000001707214766021055010257 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€m‰Š÷‚E;F‚’› ¹ ÆÒIå6/Vf1½.ï;Z'y$¡Æá,ù#&JL_¬Ë-á&*Do†>žÝ ô I#!m¯6¿ö6H`Ïx7H€ã™}AšÜõí, -2:. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2005-09-13 18:45-0500 Last-Translator: Kevin Patrick Scannell Language-Team: Irish Language: ga MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. Is riachtanach le rogha ghearr aon argóint atá riachtanach leis an rogha fhada, agus ar an nós céanna leis na hargóintí roghnacha. Taispeánann rogha -l (gan FORMÃID gan TACAR) gach tacar carachtar agus gach craiceann atá ar fáil. Is FORMÃID ceann de `decimal', `octal', `hexadecimal' nó `full' (nó ceann de `dohf'). Is san fhoirm FOIARRATAS[,FOIARRATAS]... é IARRATAS, is san fhoirm IONCHÓDÚ[..IONCHÓDÚ]... é FOIARRATAS, agus is san fhoirm [TACARCARACHTAR][/CRAICEANN]]... é IONCHÓDÚ; is IARRATAS cosúil le TOSACH..DEIREADH go minic, le TOSACH agus DEIREADH ina dtacair charachtar. Má tá TACAR ligthe ar lár, úsáid an gnáth-thacar; Má tá [/CRAICEANN] ar lár, úsáid an craiceann intuigthe le TACAR; Mura bhfuil ach `/' ann gan chraiceann, ná húsáid craiceann ar chor ar bith. Féach ar an lámhleabhar. Úsáid: %s [ROGHA]... [ [TACAR] | IARRATAS [COMHAD]... ] críochnaithe %s go %s%sle haghaidh sheichimh %s.%s*Dodhéanta**lomchóip*Aschur débhríochNí féidir an tábla a chur i gcrích le tacar de phéirí atá ar eolasNí féidir an tábla tugtha aon-le-haon a inbhéartúNí féidir `%s' a liostú; níl aon ainm ar fáil le haghaidh an tacair carachtar seoTá tacar carachtar %s ann cheana, agus ní %s éTacar carachtar `%s' anaithnid nó débhríochIs 0x%0.2x é stádas feithimh le haghaidh an mhacphróisisDeach Ocht Heics UCS2 Mne %s Bhíothas ag súil le `..' san iarratasDiagnóisic le haghaidh `%s' go `%s'Formáid dhébhríoch `%s'Formáid anaithnid `%s'Ath-ionchódú ionannais; ní fiú tábla éFabht inmheánach ath-ionchódaitheIonchur neamhbhailíIs teanga í TN, ceann de `c', `perl' nó `po'; is `c' an réamhshocrú é. Tá an teanga `%s' débhríochTeanga anaithnid `%s'Mí-úsáid den leabharlann ath-ionchódaitheNí raibh aon earráidNíl tábla ann le priontáilNí féidir `%s' a ath-ionchódú mar `%s'Ionchur neamhchanónta%s á ath-ionchódú...Is róchasta é an t-ath-ionchódú mura bhfuil ach tábla annIarratas lochtach `%s'Iarratas: %s Argóint riachtanach ar iarraidhAthchraiceannadóir socraithe níos mó ná uair amháin le haghaidh `%s'Tá an seicheamh `%s' débhríochTá an seicheamh `%s' anaithnidCrapadh go: %s Tá brón orm, níl aon ainm ar fáil le haghaidh `%s'Theip ar thúsú na céimeTheip ar thúsú na céime (roghanna gan phróiseáil)Siombail anaithnid `%s'Bhraith an córas fadhbIs saorbhogearra an ríomhchlár seo; féach ar an bhunchód le haghaidh coinníollacha cóipeála. Níl baránta ar bith ann; go fiú níl baránta ann d'INDÃOLTACHT nó FEILIÚNACHT DO FHEIDHM AR LEITH. Bain triail as `%s %s' chun tuilleadh eolais a fháil. UCS2 Mne Cur Síos Mura bhfuil DEFAULT_CHARSET socraithe mar athróg thimpeallachta, úsáid an t-ionchódú ón logchaighdeán mar luach réamhshocraithe ar CHARSET; socraítear an t-ionchódú seo leis na hathróga LC_ALL, LC_CTYPE, agus LANG. Ainm anaithnid craicinn `%s'Feannadóir socraithe níos mó ná uair amháin le haghaidh `%s'Aschur neamh-inaistritheCuimhne fhíorúil íditheCuimhne fhíorúil ídithe!Le -k, taispeántar gach tacar tosaithe gur féidir a úsáid leis an TACAR deiridh, gach ina tacar táblach. Is san fhoirm `TOS1:DEIR1,TOS2:DEIR2,...' iad na PÉIRÃ, agus na cóid TOS1, DEIR1, srl. tugtha mar uimhreacha deachúlacha. beartinchúlaitheucs2athrógrecode-3.7.15/po/da.gmo0000644000175000017500000001607414766021055010255 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€u‰¥ÿË¥µq?' g q{ ‘ žª8¼(õ@)_(‰&²Ù÷#:T/jš°OÁ*? ^i#¥ ¶/Äô',@m‡ž,³à*ô5šO$ê*º(Öÿ2ÏN #.3:. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2001-09-12 11:05+02:00 Last-Translator: Niels Kristian Bech Jensen Language-Team: Danish Language: da MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit X-Bugs: Report translation errors to the Language-Team address. Hvis et langt tilvalg viser et argument som obligatorisk, sÃ¥ er det ogsÃ¥ obligatorisk for det tilsvarende korte tilvalg. PÃ¥ samme mÃ¥de for valgfri argumenter. Tilvalg -l uden FORMAT eller TEGNSÆT viser en liste over alle tegnsæt og indpakninger. FORMAT er et af ordene 'decimal', 'octal', 'hexadecimal' eller 'full' (eller et af bogstaverne d, o, h eller f). FORESPØRGSEL er UNDERFORESPØRGSEL[,UNDERFORESPØRGSEL]...; UNDERFORESPØRGSEL er INDPAKNING[..INDPAKNING]...; INDPAKNING er [TEGNSÆT][/[INDPAKNING]]... FORESPØRGSEL har ofte formen FØR..EFTER, hvor FØR og EFTER er tegnsæt. Hvis et TEGNSÆT udelades, anvendes det normale tegnsæt; hvis [/INDPAKNING]... udelades, anvendes den normale pakning af TEGNSÆT; / uden navnet pÃ¥ en indpakning betyder ingen indpakninger. Se manualen. Brug: %s [TILVALG]... [ [TEGNSÆT] | FORESPØRGSEL [FIL]... ] færdig %s til %s%sfor sekvensen %s.%s*UopnÃ¥elig**bare kopi*Flertydige uddataKan ikke fuldende tabellen ud fra mængden af kendte parKan ikke invertere denne en-til-en tabelKan ikke vise '%s', ingen navne tilgængelige for dette tegnsætTegnsæt %s findes allerede og er ikke %sTegnsæt '%s' er ukendt eller flertydigtUnderprocessens ventestatus er 0x%0.2xDec Okt Hex UCS2 Mne %s Forventer '..' i forespørgselFølgende fejl er for '%s' til '%s'Format '%s' er flertydigtFormat '%s' er ukendtTriviel omkodning, ikke værd at bruge en tabelIntern omkodningsfejlUgyldige inddataSPR er et programmeringssprog, f.eks. 'c', 'perl' eller 'po'; 'c' er standard. Sprog '%s' er flertydigtSprog '%s' er ukendtMisbrug af omkodningsbibliotekIngen fejlIngen tabel at udskriveUmuligt at omkode fra '%s' til '%s'Unormale inddataOmkoder %s...Omkodningen er for kompleks for en simpel tabelForespørgsel '%s' er fejlagtigForespørgsel: %s Krævet argument manglerGenindpakker indstillet flere gange for '%s'Sekvens '%s' er flertydigSekvens '%s' er ukendtFormindsket til: %s Beklager, ingen navne tilgængelige for '%s'Trinopstart fejledeTrinopstart fejlede (ubearbejdede tilvalg)Symbol '%s' er ukendtSystemet fandt et problemDette er fri software; se kopieringsbetingelserne i kildeteksten. Der gives INGEN garanti; end ikke for SALGBARHED eller ANVENDELIGHED TIL NOGET FORMÃ…L. Prøv '%s %s' for mere information. UCS2 Mnem Beskrivelse Med mindre DEFAULT_CHARSET er angivet i miljøet, er Standard TEGNSÆT det lokaleafhængige tegnsæt, bestemt ud fra LC_ALL, LC_CTYPE og LANG. Ukendt indpakningsnavn '%s'Udpakker indstillet flere gange for '%s'Uoversættelige inddataVirtuel hukommelse opbrugtVirtuel hukommelse opbrugt!Med -k vises en liste over mulige før-tegnsæt for det givne efter-TEGNSÆT, begge tabellariske tegnsæt, med PAR af typen 'FØR1:EFTER1,FØR2:EFTER2,...' hvor FØR'er og EFTER'e er givet som decimale tal. bytereversibelucs2variabelrecode-3.7.15/po/fr.gmo0000644000175000017500000002266114766021055010277 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“šœ›7¶Ó¡ŠÈ,Œõ=‚<À ý >Tq; 'Ü?,D&q0˜3Éý)AG‰¤4À$õX+„ +½%é 5U8tF­ô8 E d q $Ž ³ Ó ó ,!00!Ha!ª!#É!Ùí!.Ç"ö"£#¶#%Ñ#÷#$,$I$7Y%‘% —%£%¨%+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: recode 3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2019-05-21 20:13+0200 Last-Translator: Stéphane Aulery Language-Team: French Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit X-Bugs: Report translation errors to the Language-Team address. Plural-Forms: nplurals=2; plural=(n > 1); Chaque FICHIER est recodé sur lui-même, détruisant l'original. Si aucun FICHIER n'est donné, alors agir comme un filtre et recoder stdin sur stdout. Un paramètre obligatoire pour une option de forme longue l'est aussi pour une option de forme courte. La même règle s'applique à un paramètre indiqué comme étant optionnel. Modes d'opération: -v, --verbose afficher les étapes prévues, suivre la progression -q, --quiet, --silent taire les messages sur les recodages irréversibles -f, --force effectuer même les recodages irréversibles -t, --touch toucher les fichiers après leur remplacement -i, -p, --sequence=STRATEGIE sans effet (pour compatibilité descendante) L'option « -l » sans FORMAT ni CHARSET donne les charsets et surfaces disponibles. FORMAT vaut « decimal », « octal », « hexadecimal » ou « full », ou encore un caractère dans « dohf ». DEMANDE est SOUS-DEMANDE[,SOUS-DEMANDE]...; SOUS-DEMANDE est CODAGE[..CODAGE]... CODAGE est [CHARSET][/[SURFACE]]...; DEMANDE ressemble souvent à AVANT..APRÈs, AVANT et APRÈS étant des charsets. Un CHARSET omis sous-entend le charset habituel; une [/SURFACE]... omise sous-entend les surfaces habituelles pour CHARSET; un / sans surface indique l'absence de toute surface. Voir le manuel! Rapportez vos bogues sur https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | DEMANDE [FICHIER]... ] complété %s vers %s%sTable de conversion engendrée mécaniquement par Free %s %s%spour séquence « %s ».%s*Irréalisable**simple copie*Sortie ambiguëIncapable de fermer une table en partant des paires connuesIncapable d'inverser une table un-à-unIncapable de lister « %s »: les noms n'y sont pas disponiblesLe charset %s existe déjà, et n'est pas %sCharset « %s » est inconnu ou ambiguL'état du processus fils en attente est 0x%0.2xLes codes %3d et %3u s'injectent tous deux dans %3ddéc oct hex UCS2 mné %s Chaîne « .. » attendue dans la demandeLes diagnostics suivants s'appliquent pour « %s » vers « %s »Format « %s » est ambiguFormat « %s » est inconnuLe recodage est trivial, une table n'est pas requiseProblème interne durant le recodageEntrée invalideLN est un langage de programmation, valant « c » (implicite), « perl » ou « po ». Langage « %s » est ambiguLangage « %s » est inconnuMauvais usage de la logithèque de recodageAucun caractère ne peut produire %3uPas d'erreurAucune table à imprimerPas moyen de recoder %s vers %sEntrée en forme non canoniquePaire no. %u : < %3d, %3d > en conflit avec < %3d, %3d >Recode transforme les jeux de caractères et les surfaces de fichiers Recodage de « %s »...Recodage plus complexe que ce qu'une table peut décrireRequête « %s » est erronéeDemande: %s Argument requis est manquantPlus d'un re-surfaceur pour « %s »Séquence « %s » est ambiguëSéquence « %s » est inconnueRéduit à: %s Désolé, aucun nom disponible pour « %s »L'étape n'a pas été correctement initialiséeL'étape n'a pas été correctement initialisée (options non-traitées)¨Symbole « %s » est inconnuProblème rapporté par le systèmeCe programme est un logiciel libre; consulter les sources pour connaître les droits de copie. Il n'y AUCUNE GARANTIE; même pas celle qu'il est DE QUALITÉ LOYALE ET MARCHANDE ou APPROPRIÉ POUR UN BUT PARTICULIER. Pour plus d'information, essayez « %s %s ». UCS2 Mné Description À moins que DEFAULT_CHARSET ne soit initialisé dans l'environnement, le CHARSET par défaut est locale selon l'encodage, déterminé par LC_ALL, LC_CTYPE, LANG. Nom de surface inconnu: %sPlus d'un dé-surfaceur pour « %s »Entrée non traduisibleMémoire virtuelle épuiséeMémoire virtuelle épuiséeAvec -k, les charsets antécédents possibles sont listés pour le CHARSET conséquent, tous deux étant des charsets RFC1345, restreints par les PAIRES dites selon la syntaxe « AVANT1:APRÈS1,AVANT2:APRÈS2,... »; chaque code AVANT et APRÈS est exprimé en décimal. Écrit par François Pinard . octetréversibleucs2flottantrecode-3.7.15/po/remove-potcdate.sin0000644000175000017500000000066014371446047012774 # Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } recode-3.7.15/po/id.po0000644000175000017500000004043714766021055010121 # recode 3.6 (Indonesian) # Copyright (C) 2001 Free Software Foundation, Inc. # Tedi Heriyanto , 2002 # msgid "" msgstr "" "Project-Id-Version: recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2002-10-08 14:29GMT+0700\n" "Last-Translator: Tedi Heriyanto \n" "Language-Team: Indonesian \n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 0.9.5\n" #: src/main.c:112 msgid "No error" msgstr "Tidak ada kesalahan" #: src/main.c:115 msgid "Non canonical input" msgstr "Input non kanonikal" #: src/main.c:118 msgid "Ambiguous output" msgstr "Output ambigu" #: src/main.c:121 msgid "Untranslatable input" msgstr "Input tak dapat diterjemahkan" #: src/main.c:124 msgid "Invalid input" msgstr "Input tidak valid" #: src/main.c:127 msgid "System detected problem" msgstr "Sistem mendeteksi masalah" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Kesalahan penggunaan library recoding" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Bug recoding internal" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Coba `%s %s' untuk informasi lengkap.\n" #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "Free `recode' mengkonversi file antar berbagai set karakter dan permukaan.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Jika sebuah option long menunjukkan argumen sebagai mandatori, maka ia " "mandatori\n" "juga option short yang ekivalen. Demikian pula untuk argumen optional.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listings:\n" " -l, --list[=FORMAT] tampilkan satu atau semua charset dan alias " "yang dikenal\n" " -k, --known=PAIRS batasi charset sesuai daftar PAIRS yang " "dikenal\n" " -h, --header[=[LN/]NAME] tulis tabel NAME ke stdout menggunakan LN, " "kemudian keluar\n" " -F, --freeze-tables tulis sebuah modul C yang menyimpan semua " "tabel\n" " -T, --find-subsets laporkan semua charset yang menjadi subset yang " "lain\n" " -C, --copyright tampilkan kondisi Copyright dan copying\n" " --help tampilkan bantuan ini dan keluar\n" " --version tampilkan informasi versi dan keluar\n" #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Mode operasi:\n" " -v, --verbose jelaskan urutan langkah dan laporkan kemajuan\n" " -q, --quiet, --silent tiadakan pesan tentang recoding yang tidak dapat " "dikembalikan\n" " -f, --force paksa recoding bahkan bila tidak dapat " "dikembalikan\n" " -t, --touch touch file ter-recoded setelah penggantian\n" " -i, --sequence=files gunakan file perantara untuk urutan pelewatan\n" " --sequence=memory gunakan buffer memori untuk urutan pelewatan\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Fine tuning:\n" " -s, --strict gunakan mapping yang ketat, bahkan hilangkan " "karakter\n" " -d, --diacritics konversi hanya diacritics atau yang serupa untuk " "HTML/LaTeX\n" " -S, --source[=LN] batasi recoding untuk string dan komentar sama " "seperti LN\n" " -c, --colons gunakan titik koma alih-alih kuotasi ganda untuk " "diaeresis\n" " -g, --graphics dekati penggaris IBMPC dengan grafik ASCII\n" " -x, --ignore=CHARSET abatikan CHARSET saat memilih jalur recoding\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT adalah `decimal', `octal', `hexadecimal' atau `full' (atau satu " "`dohf').\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Kecuali DEFAULT_CHARSET diset dalam environment, CHARSET bakunya adalah " "lokal\n" "tergantung enkoding, yang ditentukan oleh LC_ALL, LC_CTYPE, LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Dengan -k, yang mungkin sebelum charset ditampilkan setelah CHARSET,\n" "keduanya charset tabular, dengan PAIRS dalam bentuk `BEF1:AFT1,BEF2:" "AFT2,...'\n" "dan BEF dan AFT adalah kode yang diberikan dalam bilangan desimal.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN adalah bahasa, mungkin berupa `c', `perl' atau `po'; `c' adalah bakunya.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Jika tidak diberikan -i dan -p, asumsikan -p jika tidak ada FILE, sebaliknya " "-i.\n" "Setiap FILE direcode dengan dirinya, menghancurkan aslinya. Jika tidak " "dispesifikasikan\n" "FILE, maka berfungsi sebagai filter dan recode stdin ke stdout.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Simbol `%s' tidak dikenal" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Urutan `%s' ambigu" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Urutan `%s' tidak dikenal" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Bahasa `%s' ambigu" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Bahasa `%s' tidak dikenal" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Format `%s' ambigu" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Format `%s' tidak dikenal" #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "Ditulis oleh Franc,ois Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Charset `%s' tidak dikenal atau ambigu" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Argumen yang dibutuhkan hilang" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Permintaan `%s' salah" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Merecoding %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " selesai\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " gagal: %s di langkah `%s..%s'\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s di langkah `%s..%s'" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s gagal: %s di langkah `%s..%s'" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Charset %s sudah ada dan bukan %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "Tidak dapat medaftarkan `%s', tidak ada nama yang tersedia untuk charset ini" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Maaf, tidak ada tersedia untuk `%s'" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Resurfacer set lebih dari satu untuk `%s'" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Unsurfacer set lebih dari satu untuk `%s'" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Memori virtual habis" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Kode %3d dan %3d kedua direcode ke %3d" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "Tidak ada karakter recode ke %3d" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Tidak dapat membalik saat diberikan tabel satu-ke-satu" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Berikut ini diagnostik untuk `%s' ke `%s'" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Pasangan no %d: <%3d,%3d> konflik dengan <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Tidak dapat menyelesaikan tabel dari sejumlah pasangan dikenal" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Recoding identitas, tidak perlu tabel" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Recoding terlalu kompleks untuk tabel" #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sTabel konversi dihasilkan secara mekanis dengan Free `%s' %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%suntuk urutan %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Tidak ada tabel untuk dicetak" #: src/request.c:35 msgid "reversible" msgstr "dapat dikembalikan" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s ke %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "byte" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "variabel" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Tidak dapat dicapai*" #: src/request.c:111 msgid "*mere copy*" msgstr "*mere copy*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Memori virtual habis!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Gagal langkah inisialisasi" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Gagal langkah inisialisasi (option tidak diproses)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Permintaan: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Diperkecil jadi: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nama surface tidak dikenal `%s'" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Tidak ada cara merecode dari `%s' ke `%s'" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Mengharapkan `..' dalam permintaan" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Status tunggu proses anak adalah 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Description\n" "\n" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=pipe gunakan mesin pipa untuk urutan pelewatan\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe sama seperti -i (pada sistem ini)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Report bugs to .\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Sintaks tidak digunakan lagi, silakan pilih `%s'" recode-3.7.15/po/es.gmo0000644000175000017500000002266514766021055010303 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“œÁªàË‹¬W°8µFî5=:E€ š¦¼GÎ,RC.–4Å/ú1*\ z,›Èã*-HTZ¯É.ç%< Q$r—7²Gê2 :E € ž ­ 8Ê ! !A!/Q!"!:¤!ß!!ÿ!«!"'Í"õ"³##Å#8é#"$9$Q$ñl$8^%—% œ%§%¬%+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: GNU recode 3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2022-02-04 11:22-0600 Last-Translator: Alejandro Cendejas Tena Language-Team: Spanish Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit X-Bugs: Report translation errors to the Language-Team address. Cada FICHERO se convierte sobre sí mismo, destruyendo el original. Si no se especifica ningún FICHERO, entonces funciona como filtro y convierte la entrada estándar en la salida estándar. Si una opción larga muestra un argumento como obligatorio, entonces es obligatorio también para la opción corta equivalente. Lo mismo para los argumentos opcionales. Modos de operación: -v, --verbose explica la sucesión de pasos e informa del desarrollo -q, --quiet, --silent no muestra mensajes sobre conversiones irreversibles -f, --force realiza la conversión incluso si no es reversible -t, --touch toca los ficheros convertidos después del reemplazo -i, -p, --sequence=ESTRATEGIA se ignora para compatibilidad con versiones anteriores La opción -l sin FORMATO ni JUEGO muestra los juegos de caracteres y facetas. disponibles. FORMATO es `decimal', `octal', `hexadecimal' o `full' (o uno de entre `dohf'). PETICIÓN es SUBPETICIÓN[,SUBPETICIÓN]...; SUBPETICIÓN es CODIFICACIÓN[..CODIFICACIÓN]... CODIFICACIÓN es [JUEGO][/[FACETA]]...; PETICIÓN suele ser ANTES..DESPUÉS, donde ANTES y DESPUÉS son juegos de caracteres. Un JUEGO omitido implica el juego de caracteres usual; una [/FACETA]... omitida significa la faceta implícita para el JUEGO; una / con una faceta vacía significa que no hay ninguna faceta. Véase el manual. Comunicar errores a https://github.com/rrthomas/recode Modo de empleo: %s [OPCIÓN]... [ [JUEGO] | PETICIÓN [FICHERO]... ] hecho %s a %s%sTabla de conversión generada automáticamente por %s %s%spara la sucesión %s.%s*Imposible**copia pura y simple*Resultado ambiguoNo se puede completar la tabla a partir del conjunto de pares conocidosNo se puede invertir la tabla uno-a-uno dadaNo se puede mostrar `%s', no hay nombres disponibles para este juego de caracteresEl juego de caracteres %s ya existe y no es %sEl juego de caracteres `%s' es desconocido o ambiguoEl estado de espera del proceso hijo es 0x%0.2xLos códigos %3d y %3u se convierten ambos en %3dDec Oct Hex UCS2 Nem %s Se esperaba `..' en la peticiónProcedimiento para convertir de `%s' a `%s':El formato `%s' es ambiguoEl formato `%s' es desconocidoConversión identidad, no merece una tablaBug interno de conversiónEntrada inválidaLN es algún lenguaje, puede ser `c', `perl' o `po', el valor predeterminado es `c' El idioma `%s' es ambiguoEl idioma `%s' es desconocidoUso inadecuado de la biblioteca de conversiónNingún carácter se convierte en %3uNo hay ningún errorNo hay ninguna tabla que mostrarNo se puede convertir de `%s' a `%s'La entrada no es canónicaEl par nº %u: <%3d, %3d> es conflictivo con <%3d, %3d>Recode convierte ficheros entre varios juegos de caracteres y facetas. Convirtiendo %s...La conversión es demasiado compleja para una simple tablaLa petición `%s' es erróneaPetición: %s Falta el argumento requeridoSe ha establecido `resurfacer' más de una vez para `%s'La sucesión `%s' es ambiguaLa sucesión `%s' es desconocidaEncogido a: %s Lo siento, no hay nombres disponibles para `%s'Falló la etapa de inicializaciónFalló la etapa de inicialización (opciones sin procesar)El símbolo `%s' es desconocidoProblema detectado por el sistemaEsto es software libre; vea el código fuente para las condiciones de copia. No hay NINGUNA garantía; ni siquiera de COMERCIABILIDAD o IDONEIDAD PARA UN FIN DETERMINADO. Pruebe `%s %s' para más información. UCS2 Nem Descripción A menos que se establezca DEFAULT_CHARSET en el entorno, el valor predeterminado de JUEGO es la codificación de la que depende el locale, determinada por LC_ALL, LC_CTYPE, LANG. Nombre de faceta no reconocido `%s'Se ha establecido `unsurfacer' más de una vez para `%s'Entrada no convertibleMemoria virtual agotada¡Memoria virtual agotada!Con -k, se muestran los posibles juegos `antes' para el JUEGO `después' dado, siendo ambos juegos de caracteres tabulares, con PARES de la forma `ANT1:DES1,ANT2:DES2,...' y siendo los ANTs y los DESs códigos dados como números decimales. Escrito por François Pinard . bytereversibleucs2variablerecode-3.7.15/po/sk.gmo0000644000175000017500000001677214766021055010313 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€º‰‘D´Ö’‹=\en…™°=È8O?)8¹*ò%;*a#Œ°DÍ!4cD!¨Ê/å  #:D—T±&73P'„ ¬Í9à37k‡¿Ÿ._ެ£%P:v±!É"ëÏÞãë ð:. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2008-04-18 10:24+0100 Last-Translator: Ivan Masár Language-Team: Slovak Language: sk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2); Ak je pri dlhej voľbe zobrazený argument ako povinný, je povinný aj pri zodpovedajúcej krátkej voľbe. Obdobne pre voliteľné argumenty. Voľba -l bez FORMÃTu a ZNAKSAD zobrazí dostupné znakové sady a povrchy. FORMÃT je „decimal“, „octal“, „hexadecimal“ alebo „full“ (alebo jedno z „dohf“). POŽIADAVKA je PODPOŽIADAVKA[,PODPOŽIADAVKA]...; PODPOŽIADAVKA je KÓDOVANIE[..KÓDOVANIE]... KÓDOVANIE je [ZNAKSAD][/[POVRCH]]...; POŽIADAVKA Äasto vyzerá nasledovne: PRED..PO, kde PRED a PO sú znakové sady. Vynechaná ZNAKSAD znamená zvyÄajnú znakovú sadu; vynechaný [/POVRCH]... znamená zvyÄajné povrchy ZNAKSAD;/ prázdny názov povrchu znamená žiadny povrch. Pozri príruÄku. Použitie: %s [VOĽBA]... [ [ZNAKSAD] | CIEĽ [SÚBOR]... ] hotovo %s na %s%sza postupnosÅ¥ %s.%s*Nedosiahnuteľné**prosté kopírovanie*NejednoznaÄný výstupNie je možné dokonÄiÅ¥ tabuľku z množiny známych párovNie je možné invertovaÅ¥ danú tabuľku jedna k jednejNemožno vypísaÅ¥ „%s“, táto znaková sada nemá dostupné žiadne názvyZnaková sada %s už existuje a nie je %sZnaková sada „%s“ je neznáma alebo nejednoznaÄnáStav Äakania detského procesu je 0x%0.2xDec Okt Hex UCS2 Mne %s V požiadavke sa oÄakávalo „..“Nasleduje diagnostika „%s“ na „%s“Formát „%s“ je nejednoznaÄnýFormát „%s“ je neznámyIdentická zmena kódovania, na to sa neoplatí používaÅ¥ tabuľkuVnútorná chyba zmeny kódovaniaNeplatný vstupJA je nejaký jazyk. Môže to byÅ¥ „c“, „perl“ alebo „po“; Å¡tandardne je to „c“. Jazyk „%s“ je nejednoznaÄnýJazyk „%s“ je neznámyChybné použitie knižnice na zmenu kódovaniaŽiadna chybaNiet žiadnej tabuľky na výpisNeexistuje spôsob zmeny kódovania z „%s“ na „%s“Chýba kanonický vstupMení sa kódovanie %s...Zmena kódovanie je príliÅ¡ zložitá než aby sa dala jednoducho použiÅ¥ tabuľkaPožiadavka „%s“ je chybnáPožiadavka: %s Chýba povinný argumentZmena povrchu nastavená viac než raz pre „%s“PostupnosÅ¥ „%s“ je nejednoznaÄnáPostupnosÅ¥ „%s“ je neznámaZmrÅ¡tené na: %s PrepáÄte, pre „%s“ nie sú dostupné žiadne názvyInicializácia kroku zlyhalaInicializácia kroku zlyhala (nespracované voľby)Symbol „%s“ je neznámySystém zistil problémTento program je slobodný softvér; podmienky šírenia nájdete v zdrojovom kóde. Neexistuje ŽIADNA ZÃRUKA; neposkytujú sa ani záruky PREDAJNOSTI alebo VHODNOSTI NA KONKRÉTNY ÚČEL. Skúste viac informácií pomocou „%s %s“ UCS2 Mne Popis Ak nie je v prostredí nastavená premenná DEFAULT_CHARSET, ZNAKSAD bude Å¡tandardne kódovanie závislé na lokálnom nastavení, ktoré urÄujú LC_ALL, LC_CTYPE, LANG. Nerozpoznaný názov povrchu „%s“Odstránenie povrchu nastavené viac než raz pre „%s“Nepreložiteľný vstupVirtuálna pamäť je vyÄerpanáVirtuálna pamäť je vyÄerpaná!Voľba -k zobrazí pre danú ZNAKSAD možné znakové sady PRED kde obe sú, tabuľkové znakové sady s PÃRMIO v tvare „PRED1:PO1,PRED2:PO2,...“ a PRED a PO sú kódy uvedené ako desiatkové Äísla. bajtvratnáucs2premennárecode-3.7.15/po/quot.sed0000644000175000017500000000023114371446047010642 s/"\([^"]*\)"/“\1â€/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“â€/""/g recode-3.7.15/po/it.gmo0000644000175000017500000001635514766021055010307 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€€‰› »¦b:ä'0HZkFz/ÁBñ%4(Z1ƒµÓ ï+;J† Q±!!*C n|,˜ÅÛ6ó*F!U5w­Éé+ø!$:F ©½*g’¬%J4p¥ºÔÝïÍ ÒÞ ã:. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: GNU recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2001-07-01 09:41+02:00 Last-Translator: Lorenzo Cappelletti Language-Team: Italian Language: it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit X-Bugs: Report translation errors to the Language-Team address. Se un'opzione lunga richiede necessariamente un argomento, allora essa è richiesta anche per l'opzione breve. Analogamente per gli argomenti opzionali. L'opzione -l senza FORMATO né CHARSET elenca i charset e le surface disponibili. FORMATO può essere `decimale'(d), `ottale'(o), `esadecimale'(h) o `pieno'(f) (oppure uno tra `dohf'). RICHIESTA è SUBRICHIESTA[,SUBRICHIESTA]...; SUBRICHIESTA è CODIFICA[..CODIFICA]...; CODIFICA è [CHARSET][/[SURFACE]...; RICHIESTA spesso è simile a PRIMA..DOPO, essendo PRIMA e DOPO dei charset. Un CHARSET omesso implica il charset usuale; una [/SURFACE]... omessa implica le superfici del CHARSET; un / con un nome di surface vuoto significa nessuna surface. Vedere il manuale. Uso: %s [OPZIONI]... [ [CHARSET] | RICHIESTA [FILE]... ] fatto %s in %s%sper la sequenza %s.%s*Inraggiungibile**per sola copia*Output ambiguoImpossibile completare la tabella dall'insieme delle coppie conosciuteImpossibile invertire la tabella uno-a-uno dataNon posso listare `%s', nessun nome disponibile per questo charsetIl charset %s esiste già e non è %sIl charset `%s' è sconosciuto o ambiguoLo stato di attesa del processo figlio è 0x%0.2xDec Ott Esa UCS2 Mne %s Atteso `..' nella richiestaSegue diagnostica da `%s' a `%s'Il formato `%s' è ambiguoIl formato `%s' è sconosciutoSto ricodificando nell'identità, tabella non significativaBug di ricodifica internoInput non validoLN è qualche lingua, può essere `c', `perl' o `po'; quella predefinita è `c'. Il linguaggio `%s' è ambiguoIl linguaggio `%s' è sconosciutoUso scorretto della libreria di ricodificaNessun erroreNessuna tabella da stampareNessuno modo per ricodificare da `%s' a `%s'Nessun input canonicoSto ricodificando %s...La ricodifica è troppo complessa per una sola tabellaLa richiesta `%s' è errataRichiesta: %s Manca un argomento indispensabileIl resurfacer è impostato piú di una volta per `%s'La sequenza `%s' è ambiguaLa sequenza `%s' è sconosciutaRidotto a: %s Spiacente, nessun nome disponibile per `%s'Passo di inizializzazione fallitoPasso di inizializzazione fallito (opzioni non processate)Il simbolo `%s' è sconosciutoRilevato problema di sistemaQuesto è software libero; vedere il sorgente per le condizioni sulla riproduzione. NON c'è garanzia; neppure di COMMERCIABILITÀ o IDONEITÀ AD UN PARTICOLARE SCOPO. Usare `%s %s' per ulteriori informazioni. UCS2 Mne Descrizione A meno che DEFAULT_CHARSET non sia specificato nell'ambiente, il CHARSET viene predefinito secondo la codifica locale, determinata da LC_ALL, LC_TYPE, LANG. Nome di surface non riconosciuta `%s'L'unsurfacer è impostato piú di una volta per `%s'Input non traslabileMemoria virtuale esauritaMemoria virtuale esaurita!Con -k, possibile prima, charset vengono listati per quelli dati dopo CHARSET, entrambi essendo charset tabulari, con COPPIE nella foram `BEF1:AFT1,BEF2:AFT2,...', dove BEF e AFT sono codici forniti come numeri decimali. bytereversibileucs2variabilerecode-3.7.15/po/he.po0000644000175000017500000004737014766021055010124 # Hebrew messages for Free recode -*- coding: hebrew-iso-8bit -*- # Copyright (C) 2001 Free Software Foundation, Inc. # Eli Zaretskii , 2001. # msgid "" msgstr "" "Project-Id-Version: Free recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2001-05-27 17:06+0300\n" "Last-Translator: Eli Zaretskii \n" "Language-Team: Hebrew \n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: src/main.c:112 msgid "No error" msgstr "תו×יגש ןי×" #: src/main.c:115 msgid "Non canonical input" msgstr "ינקת ×•× ×™× ×˜×œ×§" #: src/main.c:118 msgid "Ambiguous output" msgstr "יעמשמ-דח ×•× ×™× ×˜×œ×¤" #: src/main.c:121 msgid "Untranslatable input" msgstr "הרמתהל ןתינ ×•× ×™× ×˜×œ×§" #: src/main.c:124 msgid "Invalid input" msgstr "×ירכומ ×× ×™×ש ×ידוק ללוכ טלק" #: src/main.c:127 msgid "System detected problem" msgstr "תכרעמ תלקת" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "דודיק תורמתה תיירפסב יוגש שומיש" #: src/main.c:133 msgid "Internal recoding bug" msgstr "דודיק תרמתה ךילהתב תימינפ הלקת" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" " ףופכב התונשל ו×/ו הציפהל ךתוכז ;תישפח הנכת ×”× ×™×” וז תינכת\n" " ×™\"×¢ רו×ל ×צויה ,GNU General Public License ןוישרה ×™×נתל\n" " ××ו ,ןוישרה לש 2 ×סרגב ×× ;Free Software Foundation\n" " .רתוי תרחו×מ ×סרג לכב (ךל הרומשה היצפו××›)\n" "\n" " ,תלעות ×יבת ×יהש הווקת ךותמ תצפומ וז תינכת\n" " עמתשמב-×ª×•×™×¨×—× ×ל ×•×œ×™×¤× ;×ª×•×™×¨×—× ×‘×ª×› לכ ×לל ×לו×\n" " ,×יטרפל .תמיוסמ תילכת וזי×ל המ×תה ×•× ×ª×•×¨×™×—×¡ לש\n" " .GNU General Public License-ב ןייע ×× ×\n" "\n" ";GNU General Public License לש קתועב הוולמ תויהל ×”×¨×•×ž× ×•×– תינכת\n" " Free Software Foundation, Inc.-ל בותכ ×× × ,×•×ª×•× ×ª×œ×‘×™×§ ×ל ××\n" " .59 Temple Place - Suite 330, Boston, MA 02111-1307, USA\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr ".`%s %s' דלקה ,וז הנכותב שומיש לע ףסונ עדימ תלבקל\n" #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" " .תונוש תופיטעו ×יוות תוצובק ןיב ×יצבק הרימתמ Free `recode' תינכות\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "%s [×ינייפ×מ]... [ [המישמ | ×יוות תצובק [ץבוק]... ] :שומישה ןפו×\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" " רובע ××’ יחרכה ×וה ×–× ,יחרכהכ טנמוגר××” ×ª× ×”×רמ הכור××” ותרוצב ןייפ×מ ××\n" " .×ייחרכה ×× ×™×ש ××™×˜× ×ž×•×’×¨× ×¨×•×‘×¢ ××’ ךכו .ןייפ×מ ×•×ª×•× ×œ×© תרצוקמה הרוצה\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" " :תומישר\n" " ×ייפולח תומשו ×יוותה תוצובק לכ ×•× ×ª×—× ×”×¦×•×‘×§ גצה -l, --list[=טמרופ]\n" "×יעודי תוגוז תמישרל תומי×תמה ×יוות תוצובק קר גצה -k, --known=תוגוז\n" " LN תונכת תפשל המי×תמה NAME ×שב הלבט ×ושר -h, --header[=[LN/]NAME]\n" " תו×לבטה לכ ×ª× ×œ×™×›×ž×” C תפשב רוקמ ץבוק ×ושר -F, --freeze-tables\n" "×ª×•×¨×—× ×ª×•×¦×•×‘×§ לש תוצובק-תת ןניהש ×יוות תוצובק גצה -T, --find-subsets\n" " הקתעה ×™×נתו ×ירצוי תויוכז גצה -C, --copyright\n" " ×”×– הרזע ךסמ גצה --help\n" " תינכתה תסריג ×ª× ×’×¦×” --version\n" #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" " :הלועפ ינפו×\n" " תומדקתה חוודו תולועפה תרדס ×ª× ×¨×‘×¡×” -v, --verbose\n" " תוכיפה-יתלב תורמתה לע תועדוה סיפדת ×œ× -q, --quiet, --silent\n" " הכיפה ×”× ×™× ×× ××’ הרמתה עצב -f, --force\n" " ×בותכיש ×™×¨×—× ×יצבק לש ןמזה תמיתח ןכדע -t, --touch\n" "תורמתה תרדס לש ×ייניב תו×צות תריג×ל ×יצבקב שמתשה -i, --sequence=files\n" " ןורכזב תורמתה תרדס לש ×ייניבה תו×צות ×¨×•×’× --sequence=memory\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" " ןידע ןונוויכ\n" " ×יוות ×“×•×‘×™× ×¨×™×—×ž×‘ ×•×œ×™×¤× ,רימחמ יופימב שמתשה -s, --strict\n" " LaTeX-ו HTML רובע ×יטירק×יד ××¢ ×יוות קר רמתה -d, --diacritics\n" " LN תונכת תפש תחנהב תורעהו תוזורחמל הרמתה לבגה -S, --source[=LN]\n" " סיסר×יד ןומיסל ×יישרג ×וקמב ×ייתודוקנב שמתשה -c, --colons\n" " ASCII יוות המכ ×™\"×¢ IBM לש ×ייפרג ×יוות ברק -g, --graphics\n" " הרמתה ביתנ תריחב תעב CHARSET ×יוות תצובקמ ×לעתה -x, --ignore=CHARSET\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" ".תופיטעהו ×יוותה תוצובק לכ ×ª× ×’×™×¦×ž ×יוות תצובק ×•× ×˜×ž×¨×•×¤ ןויצ ×לל -l ןייפ×מ\n" " ×ª×—× ×ª×•× ×•×) `full' ×•× `hexadecimal' ,`octal' ,`decimal' תויהל לוכי טמרופ\n" " .(`dohf' הצובקה ךותמ\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" " ×יוות תצובק לש לדחמה תרירב ,רדגומ ×•× ×™× DEFAULT_CHARSET הביבס הנתשמ ××\n" ".LANG, LC_CTYPE, LC_ALL ×ינתשמ יכרע ךותמ עמתשמכ תויל×קול תונוכת ×™\"×¢ תעבקנ\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" " תוגוז ×ª× ×ª×ž×ות דעיה תצובקל ןתרמתה ×¨×©× ×יוותה תוצובק לכ הנגצות ,-k תוחכונב\n" ".×יינורשע ×ידוק ××” AFT-ו BEF-ו ,`BEF1:AFT1,BEF2:AFT2,...'-×› ×ינותנה ×יוותה\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" " .`c' ××™×” לדחמה תרירב ;`po' ×•× ,`perl' ,`c' :תונכת תפש ןייצמ LN\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" ":ותרוצ SUBREQUEST לכו SUBREQUEST[,SUBREQUEST]...:ותרוצ (REQUEST) המישמ ןויצ\n" " .[CHARSET][/[SURFACE]]... :ותרוצ (דודיק) ENCODING .ENCODING[..ENCODING]...\n" " תטמשה .×יוות תוצובק ןניה AFTER-ו BEFORE ;BEFORE..AFTER-×› הנותנ המישמ ×›\"דב\n" " השוריפ [/SURFACE] הפיטע תטמשה ;הליגר ×יוות תצובק השוריפ CHARSET ×יות תצובק\n" " לכ רדעיה ושוריפ הפיטע ×ש ×לל / ןויצ .הנותנ ×יוות תצובק רובע תלבוקמה הפיטעה\n" " .שמתשמל ךירדמב ןייע ,טוריפ רתיל .הפיטע\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" ".-i יפל ×ª×¨×—× ,FILE ×˜× ×ž×•×’×¨× ×¨×“×¢×™×”×‘ -p יפל לעפ ,-p ×ל ×£×ו -i ×ל ×ינותנ ×ל ××\n" " ×£× ×ינייצמ ×Ÿ×™× ×× .תמלענ תירוקמה ותלוכתו ,הרמתה ךות בתכושמ FILE ץבוק לכ\n" " .ינקת טלפ ץורעל הרמתה תו×צות בותכו ינקת טלק ץורע ×רק :רטליפכ לעפ ,FILE\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "תרכומ ×יוות תצובק ×”× ×™× `%s'" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "--sequence ןייפ×מל ×˜× ×ž×•×’×¨× ×œ×© יעמשמ-דח רוציק ×•× ×™× `%s'" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "--sequence ןייפ×מל רכומ ×˜× ×ž×•×’×¨× ×•× ×™× `%s'" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "תונכת תפש לש יעמשמ-דח רוציק ×•× ×™× `%s'" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "תרכומ תונכת תפש ×”× ×™× `%s'" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "טמרופ לש יעמשמ-דח רוציק ×•× ×™× `%s'" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "רכומ טמרופ ×•× ×™× `%s'" #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr ".Franc,ois Pinard ×™\"×¢ הבתכנ וז תינכת\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Free Software Foundation-ל תורומש תויוכזה לכ (C) 1990,92,93,94,96,97,99\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "×•×œ×™×¤× ;×ª×•×™×¨×—× ×œ×› ×Ÿ×™× .רוקמ יצבקב ןייע ,הקתעה ×™×נת לע עדימל ;תישפח הנכת יהוז\n" " .תמיוסמ תילכת וזי×ל המ×תה ×•× ×ª×•×¨×™×—×¡ לש עמתשמב-×ª×•×™×¨×—× ×ל\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "תרכומ ×יוות תצובק לש יעמשמ-דח רוציק ×•× ×™× `%s'" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "ונייצל חרכהש ×˜× ×ž×•×’×¨× ×¨×¡×—" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "יוגש וניה `%s' המישמ ןויצ" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "`%s' תרמתה" # FIXME: this is lame! The method of printing "Frobbing...done" # does not lend itself to good translations into languages where # such sentences have a different structure, and should be rethought. #: src/main.c:856 #, c-format msgid " done\n" msgstr " החלצהב המייתסה\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr "%s :לשכנ `%s..%s' הרמתה בלש\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s :`%s..%s' הרמתה בלשב" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s ץבוק רובע %s בקע לשכנ `%s..%s' הרמתה בלש" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "×יוות תצובק לש (alias) יפולח יוניככ %s לש תמדוק הרדגה רטוס %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "×יינקת תומש ×Ÿ×™× ×•×– הצובקמ ×יוותל ןכש ,`%s' ×ª× ×’×™×¦×”×œ ןתינ ×ל" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "×יינקת תומש ×Ÿ×™× `%s' הצובקמ ×יוותל ,×ירעטצמ" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "`%s' רובע ×ª×—× ×עפמ רתוי העבקנ הפיטע תרמתה" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "`%s' רובע ×ª×—× ×עפמ רתוי העבקנ הפיטע תדרוה" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "×œ×–× ×™×œ×וטריו ןורכז" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "%3d-מ ןהו %3d תרמתהמ ןה לבקתמ %3d דוק לעב ות" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "%3d-ל רמתומ ×•× ×™× ×•×ª ×וש" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "הכיפהל תנתינ ×”× ×™× ×”×¨×“×’×•×”×© הרמתה תלבט" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "`%s'-מ `%s'-ל הרמתה רובע ×”× ×™×” ×”×בה הלקתה תעדוה" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "%d ורפסמש <%3d, %3d> גוזה ×ª× ×¨×˜×•×¡ <%3d, %3d> גוזה" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "×יעודיה תוגוזה תצובק ךותמ הלבט ×ילשהל ×ª×•×¨×©×¤× ×Ÿ×™×" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "הלבטל הקדצה ×Ÿ×™× ,(תוהז) הדיחי תרמתה" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "הלבטכ הגיצהל ×”×™×”×™ רשפ×ש ידכמ תבכרומ הרמתה" # FIXME: this goes into a comment; is it really worth translating? #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sFree `%s' תינכות לש %s ×סריג ×™\"×¢ הבשוחש הרמתה תלבט" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%s .%s תורמתה תרדס רובע%s" #: src/recode.c:748 msgid "No table to print" msgstr "הספדהל הלבט ןי×" #: src/request.c:35 msgid "reversible" msgstr "ךיפה" # FIXME: these assume left-to-right direction. What else can I do? #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s -> %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "byte" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "variable" #: src/request.c:109 msgid "*Unachievable*" msgstr "הגשהל ןתינ-יתלב*" #: src/request.c:111 msgid "*mere copy*" msgstr "*הטושפ הקתעה*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "!×œ×–× ×™×œ×וטריו ןורכז" #: src/request.c:252 msgid "Step initialisation failed" msgstr "לשכנ בלשה לוחת×" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "(ודבוע ×ל ×ינייפ×מ המכ) לשכנ בלשה לוחת×" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "%s :המישמ\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "%s -:ל המצמטצה\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "רכומ הפיטע ×ש ×•× ×™× `%s'" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "`%s'-מ `%s'-ל הרמתה ×ª×•×¨×©×¤× ×Ÿ×™×" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "`..' לולכל ×”×™×” ×¨×•×ž× ×”×ž×™×©×ž×” ןויצ" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "0x%0.2x ×וה תב-תינכת ×ויס דוק" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 ינומנמ רו×ית\n" "\n" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr " תורמתה תרדס עוציבל (pipe) קיפ×ב שמתשה -p, --sequence=pipe\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " (וז תכרעמב) -i ומכ -p, --sequence=pipe\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ " . תבותכל (bugs) הלקת יחוויד חולשל " #~ "×× \n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "`%s' ףדעה ×× × ×בהל ,ןשוימ ריבחתב תשמתשה" recode-3.7.15/po/id.gmo0000644000175000017500000001605114766021055010260 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€¥‰™/œÉ|f9ã '0E [ g>u6´Lë!8&Z(ª"È)ë(%Bh~LÝð% 0D)bŒ %±×íý)FYs#ˆ¬2Çú—.&Æí™)¹ãÖ, :. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2002-10-08 14:29GMT+0700 Last-Translator: Tedi Heriyanto Language-Team: Indonesian Language: id MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. X-Generator: KBabel 0.9.5 Jika sebuah option long menunjukkan argumen sebagai mandatori, maka ia mandatori juga option short yang ekivalen. Demikian pula untuk argumen optional. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT adalah `decimal', `octal', `hexadecimal' atau `full' (atau satu `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] selesai %s ke %s%suntuk urutan %s.%s*Tidak dapat dicapai**mere copy*Output ambiguTidak dapat menyelesaikan tabel dari sejumlah pasangan dikenalTidak dapat membalik saat diberikan tabel satu-ke-satuTidak dapat medaftarkan `%s', tidak ada nama yang tersedia untuk charset iniCharset %s sudah ada dan bukan %sCharset `%s' tidak dikenal atau ambiguStatus tunggu proses anak adalah 0x%0.2xDec Oct Hex UCS2 Mne %s Mengharapkan `..' dalam permintaanBerikut ini diagnostik untuk `%s' ke `%s'Format `%s' ambiguFormat `%s' tidak dikenalRecoding identitas, tidak perlu tabelBug recoding internalInput tidak validLN adalah bahasa, mungkin berupa `c', `perl' atau `po'; `c' adalah bakunya. Bahasa `%s' ambiguBahasa `%s' tidak dikenalKesalahan penggunaan library recodingTidak ada kesalahanTidak ada tabel untuk dicetakTidak ada cara merecode dari `%s' ke `%s'Input non kanonikalMerecoding %s...Recoding terlalu kompleks untuk tabelPermintaan `%s' salahPermintaan: %s Argumen yang dibutuhkan hilangResurfacer set lebih dari satu untuk `%s'Urutan `%s' ambiguUrutan `%s' tidak dikenalDiperkecil jadi: %s Maaf, tidak ada tersedia untuk `%s'Gagal langkah inisialisasiGagal langkah inisialisasi (option tidak diproses)Simbol `%s' tidak dikenalSistem mendeteksi masalahThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Coba `%s %s' untuk informasi lengkap. UCS2 Mne Description Kecuali DEFAULT_CHARSET diset dalam environment, CHARSET bakunya adalah lokal tergantung enkoding, yang ditentukan oleh LC_ALL, LC_CTYPE, LANG. Nama surface tidak dikenal `%s'Unsurfacer set lebih dari satu untuk `%s'Input tak dapat diterjemahkanMemori virtual habisMemori virtual habis!Dengan -k, yang mungkin sebelum charset ditampilkan setelah CHARSET, keduanya charset tabular, dengan PAIRS dalam bentuk `BEF1:AFT1,BEF2:AFT2,...' dan BEF dan AFT adalah kode yang diberikan dalam bilangan desimal. bytedapat dikembalikanucs2variabelrecode-3.7.15/po/sv.gmo0000644000175000017500000002227214766021055010316 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“Èœœeœ‡Ÿ·'²ß8’IË /(X myŒ5œ/ÒI+L1x'ª0Ò!,=j„5›ÑçP÷Hb+y¥ ÃÍ&è4"EW /«Û ö )" L f ~ 7 È 1ä !-!¨G!+ð!"¹7"ñ"+#0#F#[#òq#7d$œ$ ¡$¬$±$+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: recode 3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2020-05-15 07:02+0800 Last-Translator: Sebastian Rasmussen Language-Team: Swedish Language: sv MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Poedit 2.3 Varje FIL omkodas över sig själv och förstör originalet. Om ingen FIL anges sÃ¥ fungerar det som ett filter som omkodar standard in till standard ut. Om en lÃ¥ng flagga har ett obligatoriskt argument sÃ¥ är argumentet även obligatoriskt för motsvarade korta flagga. Motsvarande för valfria argument. Exekveringsalternativ: -v, --verbose förklara delsteg och rapportera framsteg -q, --quiet, --silent undertryck meddelanden om irreversibla omkodningar -f, --force gör omkodning även när den är irreversibel -t, --touch gör "touch" pÃ¥ filer som omkodas över sig själva -i, -p, --sequence=STRATEGI hoppas över för bakÃ¥tkompatibilitet Flagga -l utan FORMAT och TECKENUPPSÄTTNING visar alla tillgängliga teckenuppsättningar och ytor. FORMAT är "decimal", "octal", "hexadecimal" eller "full" (eller en av "dohf"). BEGÄRAN är DELBEGÄRAN[,DELBEGÄRAN]..., DELBEGÄRAN är KODNING[..KODNING]... KODNING är [TECKENUPPSÄTTNING][/[YTA]].... BEGÄRAN ser ofta ut som START..SLUT, där START och SLUT är teckenuppsättningar. En utelämnad TECKENUPPSÄTTNING innebär den normala teckenuppsättningen, en utelämnad [/YTA]... innebär den normala ytan för TECKENUPPSÄTTNING. Ett / utan ytnamn innebär ingen yta alls. Se manualen för detaljer. Rapportera fel till https://github.com/rrthomas/recode Användning: %s [FLAGGA]... [ [TECKENUPPSÄTTNING] | BEGÄRAN [FIL]...] klart %s till %s%sKonverteringstabell automatgenererad av %s %s%sför sekvens %s.%s*Omöjligt**endast kopiering*Tvetydig utdataKan inte göra en tabell frÃ¥n mängden av kända parKan inte invertera en given ett-till-ett tabellKan inte visa "%s", inga namn tillgängliga för denna teckenuppsättningTeckenuppsättning %s finns och är inte %sTeckenuppsättning "%s" är okänd eller tvetydigBarnprocessens väntestatus är 0x%0.2xTeckenkoderna %3d och %3u omkodas bÃ¥da till %3dDec Okt Hex UCS2 Mne %s Förväntar ".." i begäranFöljande diagnostik är för "%s" till "%s"Format "%s" är tvetydigtFormat "%s" är okäntIngen omkodning behövs, den är inte värd en tabellInternt omkodningsfelFelaktig indataLN är ett sprÃ¥k, det kan vara "c", "perl" eller "po"; "c" är standardvärde. SprÃ¥k "%s" är tvetydigtSprÃ¥k "%s" är okäntFelaktig användning av omkodningsbibliotekInget tecken omkodas till %3uInget felIngen tabell att skriva utOmöjligt koda om frÃ¥n "%s" till "%s"Indata ej kanoniskPar nr. %u: <%3d, %3d> är i konflikt med <%3d, %3d>Recode konverterar filer mellan olika teckenuppsättningar och ytor. Omkodar %s...Omkodning är för komplex för en enkel tabellBegäran "%s" är felaktigBegäran: %s Obligatoriskt argument saknasYtkodning satt mer än en gÃ¥ng för "%s"Sekvens "%s" är tvetydigSekvens "%s" är okändKrympte till: %s Ledsen, men det finns inga namn tillgängliga för "%s"Steginitiering misslyckadesSteginitiering misslyckades (obearbetade flaggor)Symbol "%s" är okändSystemproblem upptäcktesDetta är fri programvara; se källkoden för kopieringsvillkor. Det finns INGEN garanti; inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR NÃ…GOT SPECIELLT ÄNDAMÃ…L. Försök med "%s %s" för mer information. UCS2 Mne Beskrivning Om miljövariabeln DEFAULT_CHARSET inte är satt blir standardvärdet för TECKENUPPSÄTTNING den lokalspecifika kodningen, som bestäms av miljövariablerna LC_ALL, LC_CTYPE och LANG. Okänt ytnamn "%s"Ytavkodning satt mer än en gÃ¥ng för "%s"Oöversättbar indataVirtuellt minne slutVirtuellt minne slut!Med -k, möjliga startuppsättningar visas för den givna slutuppsättningen, där bÃ¥da teckenuppsättningar är pÃ¥ tabellform. PAR har formatet "START1:SLUT1,START2:SLUT2,..." och START... och SLUT... är koder som anges med decimala tal. Skrivet av François Pinard . bytereversibelusc2variabelrecode-3.7.15/po/eo.gmo0000644000175000017500000002160214766021055010265 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“‹œ«(’Ôug¬ÝnŠ7ù81jr*{¦» ÄÑ3á/AE*‡)²*Ü4<Z,oœ·&ÑøL"o‹ ¦#Ç ë÷(:4KA€Â+Óÿ .9h†£-¶ä3 7 S ”l #!%!Œ>!Ë!/é!","H"Âe"7(#`# g#t#y#+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: recode 3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2019-07-15 14:49-0300 Last-Translator: Felipe Castro Language-Team: Esperanto Language: eo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit X-Bugs: Report translation errors to the Language-Team address. Ĉiu DOSIERO estas rekodita surloke, anstataÅ­ante la originalon. Se neniu DOSIERO estas specifita, agi kiel filtrilo kaj rekodi de la normala enigo al la normala eligo. Se longa opcio montras argumenton kiel devigan, tiam Äi estas deviga ankaÅ­ por la ekvivalenta mallonga opcio. Simile por nedevigaj argumentoj. Funkcimanieroj: -v, --verbose klarigi sinsekvon de paÅoj kaj raporti progreson -q, --quiet, --silent subpremi mesaÄojn pri neinversigeblaj rekodadoj -f, --force fari rekodadon, ankaÅ­ kiam ne inversigebla -t, --touch fari 'touch' al konvertitaj dosieroj -i, -p, --sequence=STRATEGIO ne plu funkcias, tenita pro retrokongruo La opcio -l kun neniu FORMO aÅ­ SIGNARO listigas ĉiujn disponatajn signarojn kaj surfacojn. FORMO estas 'decimal', 'octal', 'hexadecimal' aÅ­ 'full' (aÅ­ unu el 'dohf'). PETO estas SUBPETO[,SUBPETO]...; SUBPETO estas KODO[..KODO]... KODO estas [SIGNARO][/[SURFACO]]...; PETO ofte aspektas kiel ANTAŬ...POST, kie ANTAŬ kaj POST estas signaroj. Ellasita SIGNARO implicas la kutiman signaron; ellasita [/SURFACO]... signifas la implicitan surfacon por SIGNARO; / kun malplena surfaco-nomo signifas neniajn surfacojn. Vidu la manlibron. Raportu erarojn al https://github.com/rrthomas/recode Uzado: %s [OPCIO]... [ [SIGNARO] | PETO [DOSIERO]... ] preta %s al %s%sKonvertotabelo kreita aÅ­tomate de %s %s%spor sinsekvo %s.%s*neebla**nura kopio*Plursenca eligoNe povas kompletigi tabelon el aro de konataj parojNe povas inversigi la donitan unusencan tabelonNe povas montri '%s'; neniuj nomoj disponataj por ĉi tiu signaroLa signaro %s jam ekzistas kaj ne estas %sSignaro '%s' estas nekonata aÅ­ plursencaAtendostatuso de ido-procezo estas 0x%0.2xLa kodoj %3d kaj %3u estas ambaÅ­ konvertataj al %3dDec Oct Hex UCS2 Mne %s Atendas '..' en petoJena diagnozo por konvertado de '%s' al '%s'Formo '%s' estas plursencaFormo '%s' estas nekonataSenÅanÄa rekodado ne indas je tabeloInterna eraro dum rekodadoNevalida enigoLN estas programlingvo, ekzemple 'c', 'perl' aÅ­ 'po'; implicite estas 'c'. Lingvo '%s' estas plursencaLingvo '%s' estas nekonataMisuzo de la rekodado-bibliotekoNeniu signo estas konvertata al %3uNeniu eraroMankas tabelo por eligadoMankas eblo por konverti de '%s' al '%s'Nekanoneca enigoParo numero %u: <%3d, %3d> konfliktas kun <%3d, %3d>Recode konvertas dosierojn inter diversaj signaroj kaj surfacoj. Rekodas '%s' ...Rekodado estas tro komplika por nura tabeloPeto '%s' estas eraraPeto: %s Bezonata argumento mankasResurfacigilo agordita pli ol unufoje por '%s'Sinsekvo '%s' estas plursencaSinsekvo '%s' estas nekonataÅœrumpis Äis: %s Pardonu, sed neniaj nomoj disponataj por '%s'Komencado de paÅo malsukcesisKomencado de paÅo malsukcesis (netraktitaj opcioj)Simbolo '%s' estas nekonataSistemo trovis problemonĈi tio estas libera programo; vidu la fonton por kopikondiĉoj. Estas NENIA GARANTIO; eĉ ne por KOMERCA KVALITO aÅ­ ADEKVATECO POR DIFINITA CELO. Provu '%s %s' por pli da informoj. UCS2 Mne Priskribo Se la media variablo DEFAULT_CHARSET ne estas agordita, SIGNARO implicite estas tiu de la lokaĵaro, determinita de LC_ALL, LC_CTYPE, LANG. Nekonata nomo de surfaco '%s'Malsurfacigilo por '%s' agordita pli ol unufojeNetradukebla enigoVituala memoro elĉerpiÄisVirtuala memoro estas plena!Kun -k, eblaj antaÅ­aj signaroj por la donita posta SIGNARO estas listigitaj, kun PAROJ en la formo 'ANT1:POST1,ANT2,POST2,...', kie ANT-oj kaj POST-oj estas kodoj donitaj kiel dekumaj nombroj. Verkita de François Pinard . bitokoinversigeblaucs2variablorecode-3.7.15/po/be.gmo0000644000175000017500000002267514766021055010263 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€…‰ôþüVWj-s¡¶4ÒUo]uÍGCF‹JÒ.%LCr+¶#â^<e.¢yÑ!K!m]í);-4i"žXÁ#>8Nq‡?ù79q.Ž6½^ôS.sA¢Uä &:!Úa!B<"s"6ó"8*#9c#é#‡%%£%¨%:. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2003-04-06 23:16+0300 Last-Translator: Ales Nyakhaychyk Language-Team: Belarusian Language: be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. X-Generator: KBabel 0.9.6 Калі парамÑтар абавÑзковы Ð´Ð»Ñ Ð´Ð¾ÑžÐ³Ð°Ðµ опцыі, то ён абавÑзковы й Ð´Ð»Ñ ÐºÐ°Ñ€Ð¾Ñ‚ÐºÐ°Ðµ опцыі такÑама. ÐналÑгічна Ð´Ð»Ñ Ð½ÐµÐ°Ð±Ð°Ð²Ñзковых парамÑтраў. ÐžÐ¿Ñ†Ñ‹Ñ -l без ФÐРМÐТУ ні ЗÐÐКÐЗБОРУ паказвае вÑÐ´Ð¾Ð¼Ñ‹Ñ Ñ‚Ð°Ð±Ð»Ñ–Ñ†Ñ‹ знакаў Ñ– ÑпоÑабы кадаваньнÑ. ФÐРМÐТ -- `decimal', `octal', `hexadecimal' ці `full' (ці адзін з `dohf'). ЗÐПЫТ: ПÐДЗÐПЫТ[,ПÐДЗÐПЫТ]...; ПÐДЗÐПЫТ: КÐДЗІРОЎКÐ[..КÐДЗІРОЎКÐ]...; КÐДЗІРОЎКÐ: [ЗÐÐКÐЗБОР][/[СПОСÐБ КÐДÐÐ’ÐÐЬÐЯ]]...; ЗÐПЫТ чаÑта выглÑдае Ñк ПЕРÐД..ПÐСЬЛЯ, дзе ПЕРÐД Ñ– ПÐСЬЛЯ -- знаказборы. ЗамеÑÑ‚ прапушчанага ЗÐÐКÐЗБОРУ ужываецца даўнÑты знаказбор ÑÑ‹ÑÑ‚Ñмы; замеÑÑ‚ прапушчанага СПОСÐБУ ўжываецца ÑпоÑаб, Ñтандартны Ð´Ð»Ñ Ð—ÐÐКÐЗБОРÐ; адзін / без зададзенага СПОСÐБУ азначае адÑутнаÑьць СПОСÐБÐÐŽ увогуле. ГлÑдзі кіраўніцтва. Ужывай: %s [ОПЦЫІ]... [ [ЗÐÐКÐЗБОР] | ЗÐПЫТ [ФÐЙЛ]... ] зроблена %s у %s%sÐ´Ð»Ñ Ð¿Ð°ÑьлÑдоўнаÑьці %s.%s*ÐедаÑÑжна**проÑÑ‚Ð°Ñ ÐºÐ¾Ð¿Ñ–Ñ*ДвухÑÑнÑоўнаÑьць на выхадзеÐе магу ўтварыць табліцу з мноÑтва вÑдомых парЗваротнае пераўтварÑньне па дадзенай табліцы `адзін-у-адзін'Ðемагчыма адлюÑтраваць `%s', бо нÑма імёнаў Ð´Ð»Ñ Ð³Ñтага знаказбораЗнаказбор %s ужо Ñ–Ñнуе Ñ– не зьÑўлÑецца %sЗнаказбор `%s' невÑдомы ці двухÑÑнÑÐ¾ÑžÐ½Ñ‹Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ñ‡Ð°ÐºÐ°Ð½ÑŒÐ½Ñ Ð´Ð°Ñ‡Ñ‡Ñ‹Ð½Ð°Ð³Ð° працÑÑу -- 0x%0.2xÐ”Ð·ÐµÑ Ð’Ð°Ñ Ð¨Ð°Ñн UCS2 МнÑма %s У запыце чакалаÑÑ `..'ДыÑгноÑтыка пераўтварÑÐ½ÑŒÐ½Ñ Ð· `%s' у `%s'ДвухÑÑнÑоўны фармат: `%s'ÐевÑдомы фармат: `%s'ПроÑтае перакадаваньне, Ñкому не патрÑÐ±Ð½Ð°Ñ Ñ‚Ð°Ð±Ð»Ñ–Ñ†Ð°ÐÑƒÑ‚Ñ€Ð°Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° перакадаваньнÑÐÑправільнае на ўваходзеМОВРзадае мову праграмаваньнÑ, прыкладам `c', `perl' ці `po'; даўнÑта `c'. ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¼Ð¾Ð²Ð°: `%s'ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¼Ð¾Ð²Ð°: `%s'ÐÑправільнае ўжываньне бібліÑÑ‚Ñкі перакадаваньнÑБез памылакÐÑма табліцы Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒÐемагчыма перакадаваць з `%s' у `%s'ÐекананічнаÑьць на ўваходзеПеракадаваньне %s...Перакадаваньне заÑкладанае Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñтай табліцыПамылковы запыт: `%s'Запыт: %s Прапушчаны патрÑбны парамÑтарПрацÑдура Ð·Ð°ÐºÐ°Ð´Ð°Ð²Ð°Ð½ÑŒÐ½Ñ ÑžÐ¶Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð° чаÑьцей, Ñк адзін раз Ð´Ð»Ñ `%s'ДвухÑÑнÑÐ¾ÑžÐ½Ð°Ñ Ð¿Ð°ÑьлÑдоўнаÑьць: `%s'ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°ÑьлÑдоўнаÑьць: `%s'Скарочаны да: %s Ðажаль нÑма імёнаў Ð´Ð»Ñ `%s'ÐÑÑžÐ´Ð°Ð»Ð°Ñ Ñ–Ð½Ñ–Ñ†Ñ‹ÑÐ»Ñ–Ð·Ð°Ñ†Ñ‹Ñ ÐºÑ€Ð¾ÐºÑƒÐÑÑžÐ´Ð°Ð»Ð°Ñ Ñ–Ð½Ñ–Ñ†Ñ‹ÑÐ»Ñ–Ð·Ð°Ñ†Ñ‹Ñ ÐºÑ€Ð¾ÐºÑƒ (Ð½ÐµÐ°Ð¿Ñ€Ð°Ñ†Ð°Ð²Ð°Ð½Ñ‹Ñ Ð¾Ð¿Ñ†Ñ‹Ñ–)ÐевÑдомы знак: `%s'СыÑÑ‚Ñма выÑвіла праблемуГÑта Ñвабоднае праграмовае забеÑьпÑчÑньне; глÑдзі ўмовы капіÑÐ²Ð°Ð½ÑŒÐ½Ñ Ñž зыходным кодзе. ÐÑма ÐІЯКÐЕ гарантыі, нават гарантыі КÐШТОЎÐÐСЬЦІ ці ПРЫДÐТÐÐСЬЦІ ДЛЯ КÐÐКРЭТÐÐЕ МЭТЫ. ПаÑпрабуй `%s %s', каб атрымаць болей інфармацыі. UCS2 МнÑма ÐпіÑаньне Калі не атачÑньне Ð½Ñ Ð¼Ð°Ðµ уÑталёўкі DEFAULT_CHARSET, то ЗÐÐКÐЗБОР адпавÑдае кадзіроўцы лÑкалі, ÑÐºÐ°Ñ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°ÐµÑ†Ñ†Ð° з LC_ALL, LC_CTYPE, LANG. ÐевÑдомае Ñ–Ð¼Ñ ÑпоÑабу ÐºÐ°Ð´Ð°Ð²Ð°Ð½ÑŒÐ½Ñ `%s'ПрацÑдура раÑÐºÐ°Ð´Ð°Ð²Ð°Ð½ÑŒÐ½Ñ ÑžÐ¶Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð° чаÑьцей, Ñк адзін раз Ð´Ð»Ñ `%s'Ðеперакладальнае на ўваходзеСкончылаÑÑ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð°Ð¼ÑцьСкончылаÑÑ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð°Ð¼Ñць!ÐžÐ¿Ñ†Ñ‹Ñ -k адлюÑтроўвае Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ñ‹Ñ `зыходныÑ' знаказборы Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ð°Ð³Ð° `выніковага' ЗÐÐКÐЗБОРУ, з ПÐРÐМІ Ð¿ÐµÑ€Ð°ÐºÐ°Ð´Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ñž фармаце ДÐ1:ПÐ1, ДÐ2:ПÐ2,..., дзе ДРі ПРзьÑўлÑюцца кодамі, зададзенымі дзеÑÑтковымі лікамі. І зыходныÑ, Ñ– Ð²Ñ‹Ð½Ñ–ÐºÐ¾Ð²Ñ‹Ñ Ð·Ð½Ð°ÐºÐ°Ð·Ð±Ð¾Ñ€Ñ‹ муÑÑць быць таблічнымі. байтзваротнаÑucs2пераменнаÑrecode-3.7.15/po/ga.po0000644000175000017500000004225714766021055010116 # Irish translations for recode. # Copyright (C) 2005 Free Software Foundation, Inc. # Kevin Patrick Scannell , 2005. # msgid "" msgstr "" "Project-Id-Version: recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2005-09-13 18:45-0500\n" "Last-Translator: Kevin Patrick Scannell \n" "Language-Team: Irish \n" "Language: ga\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: src/main.c:112 msgid "No error" msgstr "Ní raibh aon earráid" #: src/main.c:115 msgid "Non canonical input" msgstr "Ionchur neamhchanónta" #: src/main.c:118 msgid "Ambiguous output" msgstr "Aschur débhríoch" #: src/main.c:121 msgid "Untranslatable input" msgstr "Aschur neamh-inaistrithe" #: src/main.c:124 msgid "Invalid input" msgstr "Ionchur neamhbhailí" #: src/main.c:127 msgid "System detected problem" msgstr "Bhraith an córas fadhb" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Mí-úsáid den leabharlann ath-ionchódaithe" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Fabht inmheánach ath-ionchódaithe" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Is saorbhogearra an ríomhchlár seo; is féidir leat é a scaipeadh agus/nó\n" "a athrú de réir na gcoinníollacha den GNU General Public License mar atá\n" "foilsithe ag an Free Software Foundation; faoi leagan 2 den cheadúnas,\n" "nó (más mian leat) aon leagan níos déanaí.\n" "\n" "Scaiptear an ríomhchlár seo le súil go mbeidh sé áisiúil,\n" "ach GAN AON BARÃNTA; go fiú gan an barántas intuigthe de\n" "INDÃOLTACHT nó FEILIÚNACHT DO FHEIDHM AR LEITH. Féach ar an\n" "GNU General Public License chun níos mó sonraí a fháil.\n" "\n" "Ba chomhair go mbeifeá tar éis cóip den GNU General Public License a fháil " "in\n" "éineacht leis an ríomhchlár seo; mura bhfuair, scríobh chuig an Free " "Software\n" "Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Bain triail as `%s %s' chun tuilleadh eolais a fháil.\n" #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "Tiontaíonn saorbhogearra `recode' comhaid idir tacair charachtar agus " "craicne éagsúla.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Úsáid: %s [ROGHA]... [ [TACAR] | IARRATAS [COMHAD]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Is riachtanach le rogha ghearr aon argóint atá riachtanach\n" "leis an rogha fhada, agus ar an nós céanna leis na hargóintí roghnacha.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Liostú:\n" " -l, --list[=FORMÃID] taispeáin tacair charachtar agus ailiasanna ar " "eolas\n" " -k, --known=PÉIRà úsáid tacair charachtar ón liosta PÉIRà amháin\n" " -h, --header[=[TN/]AINM] scríobh tábla AINM ar stdout le TN, agus scoir\n" " -F, --freeze-tables scríobh modúl C le gach tábla ann\n" " -T, --find-subsets taispeáin gach tacar carachtar atá i gceann " "eile\n" " -C, --copyright taispeáin Cóipcheart agus coinníollacha " "cóipeála\n" " --help taispeáin an chabhair seo agus scoir\n" " --version taispeáin eolas faoin leagan agus scoir\n" #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Móid oibríochta:\n" " -v, --verbose taispeáin na céimeanna agus dul chun cinn\n" " -q, --quiet, --silent ná taispeáin teachtaireachtaí maidir le\n" " ath-ionchóduithe dochúlaithe\n" " -f, --force fórsáil ath-ionchódú fiú más dochúlaithe é\n" " -t, --touch teagmháil na comhaid ath-ionchódaithe tar éis\n" " iad a athshuíomh\n" " -i, --sequence=comhaid úsáid comhaid idirmheánacha le linn " "seicheamhaithe\n" " --sequence=cuimhne úsáid maoláin chuimhne le linn seicheamhaithe\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Mionchoigeartú:\n" " -s, --strict úsáid dianmhapáil, fiú le carachtair neamhchruinn\n" " -d, --diacritics tiontaigh diaicriticí amháin le haghaidh HTML/" "LaTeX\n" " -S, --source[=TN] ath-ionchódaigh teaghráin agus nótaí amháin, mar le " "TN\n" " -c, --colons úsáid idirstadanna in ionad \" le haghaidh " "déiréise\n" " -g, --graphics neasaigh rialóirí IBMPC le grafaic ASCII\n" " -x, --ignore=TACAR ná húsáid TACAR agus conair ath-ionchódaithe á " "roghnú\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Taispeánann rogha -l (gan FORMÃID gan TACAR) gach tacar carachtar agus\n" "gach craiceann atá ar fáil. Is FORMÃID ceann de `decimal', `octal',\n" "`hexadecimal' nó `full' (nó ceann de `dohf').\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Mura bhfuil DEFAULT_CHARSET socraithe mar athróg thimpeallachta, úsáid an\n" "t-ionchódú ón logchaighdeán mar luach réamhshocraithe ar CHARSET;\n" "socraítear an t-ionchódú seo leis na hathróga LC_ALL, LC_CTYPE, agus LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Le -k, taispeántar gach tacar tosaithe gur féidir a úsáid leis\n" "an TACAR deiridh, gach ina tacar táblach. Is san fhoirm\n" "`TOS1:DEIR1,TOS2:DEIR2,...' iad na PÉIRÃ, agus na cóid TOS1, DEIR1,\n" "srl. tugtha mar uimhreacha deachúlacha.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "Is teanga í TN, ceann de `c', `perl' nó `po'; is `c' an réamhshocrú é.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "Is san fhoirm FOIARRATAS[,FOIARRATAS]... é IARRATAS, is san fhoirm\n" "IONCHÓDÚ[..IONCHÓDÚ]... é FOIARRATAS, agus is san fhoirm\n" "[TACARCARACHTAR][/CRAICEANN]]... é IONCHÓDÚ; is IARRATAS cosúil le\n" "TOSACH..DEIREADH go minic, le TOSACH agus DEIREADH ina dtacair\n" "charachtar. Má tá TACAR ligthe ar lár, úsáid an gnáth-thacar;\n" "Má tá [/CRAICEANN] ar lár, úsáid an craiceann intuigthe le TACAR;\n" "Mura bhfuil ach `/' ann gan chraiceann, ná húsáid craiceann ar chor ar " "bith.\n" "Féach ar an lámhleabhar.\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Mura bhfuil -i ná -p ann, glac le -p mura bhfuil COMHAD ann, agus\n" "le -i i ngach cás eile. Ath-ionchódaítear gach COMHAD anuas air féin,\n" "agus beidh na bunchóipeanna scriosta. Mura bhfuil COMHAD sonraithe,\n" "oibríonn recode mar scagaire, agus ath-ionchódaítear stdin go stdout.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Siombail anaithnid `%s'" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Tá an seicheamh `%s' débhríoch" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Tá an seicheamh `%s' anaithnid" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Tá an teanga `%s' débhríoch" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Teanga anaithnid `%s'" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Formáid dhébhríoch `%s'" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Formáid anaithnid `%s'" #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "Le François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright © 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Is saorbhogearra an ríomhchlár seo; féach ar an bhunchód le haghaidh\n" "coinníollacha cóipeála. Níl baránta ar bith ann; go fiú níl baránta ann\n" "d'INDÃOLTACHT nó FEILIÚNACHT DO FHEIDHM AR LEITH.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Tacar carachtar `%s' anaithnid nó débhríoch" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Argóint riachtanach ar iarraidh" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Iarratas lochtach `%s'" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "%s á ath-ionchódú..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " críochnaithe\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " teipthe: %s i gcéim `%s..%s'\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s i gcéim `%s..%s'" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "theip ar %s: %s i gcéim `%s..%s'" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Tá tacar carachtar %s ann cheana, agus ní %s é" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "Ní féidir `%s' a liostú; níl aon ainm ar fáil le haghaidh an tacair " "carachtar seo" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Deach Ocht Heics UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Tá brón orm, níl aon ainm ar fáil le haghaidh `%s'" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Athchraiceannadóir socraithe níos mó ná uair amháin le haghaidh `%s'" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Feannadóir socraithe níos mó ná uair amháin le haghaidh `%s'" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Cuimhne fhíorúil ídithe" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Ath-ionchódaíonn na cóid %3d agus %3d go dtí %3d" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "Níl aon charachtar a ath-ionchódaítear go dtí %3d" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Ní féidir an tábla tugtha aon-le-haon a inbhéartú" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Diagnóisic le haghaidh `%s' go `%s'" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Péire uimh. %d: tagann <%3d, %3d> agus <%3d, %3d> salach ar a chéile" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Ní féidir an tábla a chur i gcrích le tacar de phéirí atá ar eolas" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Ath-ionchódú ionannais; ní fiú tábla é" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Is róchasta é an t-ath-ionchódú mura bhfuil ach tábla ann" #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sTábla tiontaithe ginte go huathoibríoch ag saorbhogearrá `%s' %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sle haghaidh sheichimh %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Níl tábla ann le priontáil" #: src/request.c:35 msgid "reversible" msgstr "inchúlaithe" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s go %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "beart" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "athróg" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Dodhéanta*" #: src/request.c:111 msgid "*mere copy*" msgstr "*lomchóip*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Cuimhne fhíorúil ídithe!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Theip ar thúsú na céime" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Theip ar thúsú na céime (roghanna gan phróiseáil)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Iarratas: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Crapadh go: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Ainm anaithnid craicinn `%s'" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Ní féidir `%s' a ath-ionchódú mar `%s'" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Bhíothas ag súil le `..' san iarratas" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Is 0x%0.2x é stádas feithimh le haghaidh an mhacphróisis" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Cur Síos\n" "\n" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr " -p, --sequence=píopa úsáid píopa le linn seicheamhaithe\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=píopa ar comhbhrí le -i (ar an gcóras seo)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Seol tuairiscí fabhtanna chuig .\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Comhréir i léig, úsáid `%s' ina hionad" recode-3.7.15/po/ro.po0000644000175000017500000004525214766021055010145 # Mesajele în limba română pentru pachetul recode. # Copyright (C) 2003 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # # Eugen Hoanca , 2003. # Remus-Gabriel Chelu , 2022. # # Cronologia traducerii fiÈ™ierului „recodeâ€: # Traducerea iniÈ›ială, făcută de EH, pentru versiunea recode 3.6. # Actualizare a mesajelor, de la fiÈ™ierul „recode-3.7.1.potâ€. # Actualizare a codării caracteror, la codarea de caractere UTF-8. # Actualizare a diacriticelor de la „cu sedilă†la „cu virgulăâ€. # Actualizare a algoritmului formelor de plural (de la „două†la „treiâ€). # NU È™i a mesajelor traduse (acestea au rămas neschimbate). # Eliminare a mesajelor ce-au dispărut în ultima versiune. # Actualizări realizate de Remus-Gabriel Chelu , 15.01.2022. # Actualizare a traducerii pentru versiunea 3.7.1, făcută de R-GC. # msgid "" msgstr "" "Project-Id-Version: recode-3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2022-04-10 20:00+0200\n" "Last-Translator: Remus-Gabriel Chelu \n" "Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2);\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: Poedit 3.0.1\n" #: src/main.c:112 msgid "No error" msgstr "Nicio eroare" #: src/main.c:115 msgid "Non canonical input" msgstr "Intrare necanonică" #: src/main.c:118 msgid "Ambiguous output" msgstr "IeÈ™ire ambiguă" #: src/main.c:121 msgid "Untranslatable input" msgstr "Intrare intraductibilă" #: src/main.c:124 msgid "Invalid input" msgstr "Intrare nevalidă" #: src/main.c:127 msgid "System detected problem" msgstr "Sistemul a detectat o problemă" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Folosire necorespunzătoare a bibliotecii de recodificare" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Eroare internă de recodificare" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Acest program este software liber; puteÈ›i să-l redistribuiÈ›i ÅŸi/sau\n" "modificaÈ›i sub termenii LicenÈ›ei Publice Generale GNU publicată de\n" "Free Software Foundation; fie versiunea 3, fie (la alegerea dumneavoastră)\n" "orice versiune ulterioară.\n" "\n" "Acest program este distribuit în speranÈ›a că va fi de folos,\n" "dar FÄ‚RÄ‚ NICI O GARANÈšIE; fără nici măcar garanÈ›ia implicită de\n" "COMERCIALIZARE sau POTRIVIRII PENTRU UN ANUMIT SCOP. ConsultaÈ›i\n" "LicenÈ›a Publică Generală GNU pentru mai multe detalii.\n" "\n" "Ar fi trebuit să primiÈ›i o copie a LicenÈ›ei Publice Generale GNU\n" "împreună cu acest program; dacă nu, scrieÈ›i la Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "ÃŽncercaÈ›i «%s %s» pentru mai multe informaÈ›ii.\n" # R-GC, scrie: # traducere a mesajului, inspirată de # traducerile făcute de echipele: # spaniolă, portugheză È™i germană. # *** # NOTÄ‚: de contact autorul, pentru # clarificarea sensului, termenului: # «surface(s)» #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "«recode» converteÈ™te fiÈ™ierele între diferite seturi de caractere È™i " "formate.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Utilizare: %s [OPÈšIUNE]... [ [SET_CARACTERE] | CERERE [FIȘIER]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Dacă o opÈ›iune lungă afiÈ™ează un parametru obligatoriu, atunci este\n" "obligatoriu È™i pentru opÈ›iunea scurtă echivalentă. AcelaÈ™i lucru se\n" "aplică în cazul parametrilor opÈ›ionali.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listări:\n" " -l, --list[=FORMAT] listează unul sau toate seturile de caractere " "È™i aliasurile cunoscute\n" " -k, --known=PERECHI restricÈ›ionează seturile de caractere potrivit " "listei de PERECHI cunoscute\n" " -h, --header[=[NL/]NUME] scrie tabelul NUME la ieÈ™irea standard folosind " "NL („câ€, „perl†sau „poâ€),\n" " apoi termină\n" " -T, --find-subsets raportează toate seturile de caractere care " "sunt subseturi ale altora\n" " -C, --copyright afiÈ™ează termenii de drepturi de autor È™i de " "copiere\n" " --help afiÈ™ează acest ajutor È™i termină\n" " --version afiÈ™ează informaÈ›ii versiune È™i termină\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Moduri de operare:\n" " -v, --verbose explică secvenÈ›a de paÈ™i È™i raportează " "desfășurarea\n" " -q, --quiet, --silent suprimă mesajele despre recodificări ireversibile\n" " -f, --force forÅ£ează recodificările chiar È™i când nu sunt " "reversibile\n" " -t, --touch ajustează marcajul de timp al fiÈ™ierelor " "recodificate, după recodificare\n" " -i, -p, --sequence=STRATEGIA ignorată pentru compatibilitate inversă\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Ajustare fină::\n" " -s, --strict foloseÈ™te cartografierea strictă, caracterele " "intraductibile\n" " sunt eliminate\n" " -d, --diacritics converteÈ™te doar diacritice sau similar pentru HTML/" "LaTeX/BibTeX\n" " -S, --source[=NL] limitează recodificarea la comentarii È™i È™iruri de " "caractere\n" " doar pentru limbajul NL („câ€, „perl†sau „poâ€)\n" " -c, --colons foloseÈ™te două puncte în loc de ghilimele duble " "pentru diereză\n" " -g, --graphics aproximează linii IBMPC utilizând grafică ASCII\n" " -x, --ignore=SET_CARACTERE ignoră SET_CARACTERE în alegerea căilor de " "recodificare\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "OpÈ›iunea -l fără FORMAT sau SET_CARACTERE listează seturile de caractere È™i\n" "formatele disponibile. FORMAT este „decimalâ€, „octalâ€,\n" "„hexadecimal†sau „full†(sau unul din „d, o, h, fâ€).\n" # R-GC, scrie: # după revizuirea fiÈ™ierului, DȘ, spune: # „msgid "" # "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale\n" # msgstr "" # "Dacă nu este definită variabila de mediu DEFAULT_CHARSET, SET_CARACTERE utilizează\n" # → aici CHARSET nu cred că trebuie tradus # *** # Cînd am tradus acest mesaj, am avut # aceeaÈ™i îndoială, aÈ™a că m-am pus să # revizez traducerile tuturor echipelor, a # acestui mesaj; am constatat că într-o # proporÈ›ie mai mare de 80%, acestea, au # tradus CHARSET în limba lor, aÈ™a că am # făcut la fel. # === # Pentru orice eventualiate, îl las marcat ca: # ***** ***** # ACEST MESAJ TREBUIE SÄ‚ FIE VERIFICAT, # pentru aspectul, mai sus menÈ›ionat! #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Dacă nu este definită variabila de mediu DEFAULT_CHARSET, SET_CARACTERE " "utilizează\n" "implicit codificarea dependentă de limbă, determinată de LC_ALL, LC_CTYPE, " "LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "OpÈ›iunea -k listează seturile de caractere INIÈšIAL posibile pentru setul de " "caractere \n" "DUPÄ‚ dat, ca un tabel de PERECHI de forma „INIÈšIAL1:DUPÄ‚1,INIÈšIAL2:" "DUPÄ‚2,...â€\n" "unde INIÈšIAL È™i DUPÄ‚ sunt coduri ce sunt date ca numere zecimale.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "NL este un limbaj de programare, poate fi „câ€, „perl†sau „poâ€; „c†este cel " "implicit.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "CERERE este SUBCERERE[,SUBCERERE]...; SUBCERERE este CODIFICAREA[.." "CODIFICAREA]...\n" "CODIFICAREA este [SET_CARACTERE][/[FORMAT]]...; CERERE se prezintă ca " "INIÈšIAL..DUPÄ‚,\n" "unde INIÈšIAL È™i DUPÄ‚ sunt seturi de caractere. Un SET_CARACTERE omis " "sugerează setul de\n" "caractere obiÈ™nuit; un [/FORMAT] omis reprezintă formatul sugerat pentru " "SET_CARACTERE; un /\n" "cu nume gol de format înseamnă fără formate. ConsultaÈ›i manualul.\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Fiecare FIȘIER este recodificat peste el însuÈ™i, distrugând originalul.\n" "Dacă nu este specificat FIȘIER, atunci se comportă ca un filtru È™i\n" "recodifică intrarea standard la ieÈ™irea standard.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "RaportaÈ›i erorile la https://github.com/rrthomas/recode\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Simbolul „%s†nu este cunoscut" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "SecvenÈ›a „%s†este ambiguă" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "SecvenÈ›a „%s†nu este cunoscută" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Limbajul „%s†este ambiguu" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Limbajul „%s†nu este cunoscut" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Formatul „%s†este ambiguu" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Formatul „%s†nu este cunoscut" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Scris de François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright © 1990-2018 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Acesta este software liber; consultaÈ›i sursa pentru condiÈ›iile de copiere. " "NU există NICI\n" "o garanÈ›ie; nici măcar pentru COMERCIALIZARE sau POTRIVIRII PENTRU UN ANUMIT " "SCOP.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Setul de caractere „%s†nu este cunoscut sau este ambiguu" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "LipseÈ™te parametrul solicitat" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Cererea „%s†este greÈ™ită" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Se recodifică %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " finalizată\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " eÈ™uată: %s în pasul „%s..%sâ€\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s în pasul „%s..%sâ€" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s a eÈ™uat: %s în pasul „%s..%sâ€" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Setul de caractere %s există deja È™i nu este %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "Nu se poate lista „%sâ€, nici un nume disponibil pentru acest set de caractere" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Zec Oct Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Scuze, nici un nume disponibil pentru „%sâ€" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Schimbătorul de formate definit mai mult decât o dată pentru „%sâ€" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Schimbătorul de formate definit mai mult decât o dată pentru „%sâ€" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Memoria virtuală epuizată" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Codurile %3d È™i %3u se recodifică ambele la %3d" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Nici un caracter recodificat în %3u" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Nu se poate inversa tabela unu la unu dată" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Se urmăresc diagnosticele pentru „%s†în „%sâ€" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Perechea numărul %u: <%3d, %3d> în conflict cu <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Nu s-a putut completa tabelul din setul de perechi cunoscute" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Recodificare de identitate, nu necesită un tabel" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Recodificarea este prea complexă pentru un tabel simplu" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sTabel de conversie generat mecanic de %s %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%s pentru secvenÈ›a %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Nici un tabel de afiÈ™at" #: src/request.c:35 msgid "reversible" msgstr "reversibil" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s în %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "octet" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "variabil(ă)" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Neîndeplinibil*" #: src/request.c:111 msgid "*mere copy*" msgstr "*copiere-simplă*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Memoria virtuală epuizată!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Pas de iniÈ›ializare eÅŸuat" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Pas de iniÈ›ializare eÈ™uat (opÈ›iuni neprocesate)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Cerere: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "MicÈ™orat la: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nume de format necunoscut: „%sâ€" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Nu există nicio modalitate de a recodifica din „%s†în „%sâ€" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Se aÈ™teaptă „..†în cerere" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Starea de aÈ™teptare a procesului copil este 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Descriere\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Sintaxă este învechită, utilizaÈ›i „%sâ€" recode-3.7.15/po/pt_BR.po0000644000175000017500000004242114766021055010526 # Brazilian Portuguese translation for recode. # Copyright (C) 2019 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # Alexandre Folle de Menezes , 2002. # based on the translation to Portuguese (pt) by # Vitor Duarte , maio de 1996. # also based on the translation to Galician (gl) by # Jacobo Tarrío Barreiro , 2000. # Rafael Fontenelle , 2019. msgid "" msgstr "" "Project-Id-Version: recode 3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2019-05-21 06:41-0200\n" "Last-Translator: Rafael Fontenelle \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Virtaal 1.0.0-beta1\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: src/main.c:112 msgid "No error" msgstr "Sem erro" #: src/main.c:115 msgid "Non canonical input" msgstr "Entrada não-canônica" #: src/main.c:118 msgid "Ambiguous output" msgstr "Saída ambígua" #: src/main.c:121 msgid "Untranslatable input" msgstr "Entrada intraduzível" #: src/main.c:124 msgid "Invalid input" msgstr "Entrada inválida" #: src/main.c:127 msgid "System detected problem" msgstr "O sistema detectou um problema" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Uso incorreto da biblioteca de recodificação" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Erro interno de recodificação" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Este programa é software livre; a sua redistribuição e/ou modificação\n" "nos termos da Licença Geral Pública GNU como publicada pela\n" "Free Software Foundation, é permitida; de acordo com a versão 3 ou\n" "(opcionalmente) qualquer outra versão posterior.\n" "\n" "Este programa é distribuído na esperança de que possa ser útil, mas\n" "SEM QUALQUER GARANTIA; sem mesmo a garantia implícita de COMERCIABILIDADE " "ou\n" "ADEQUAÇÃO À QUALQUER FINALIDADE PARTICULAR. Veja a Licença Geral Pública " "GNU\n" "para mais detalhes.\n" "\n" "Deve ter sido recebida uma cópia da Licença Geral Pública GNU\n" "junto com este programa; senão, escreva para a Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Tente `%s %s' para obter mais informações.\n" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "Recode converte arquivos entre vários conjuntos de caracteres e " "superfícies.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Uso: %s [OPÇÃO]... [ [CHARSET] | REQUISIÇÃO [ARQUIVO]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Argumentos obrigatórios para opções longas também o são para opções curtas.\n" "O mesmo vale para argumentos opcionais\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listagens:\n" " -l, --list[=FORMATO] lista um ou todos os conjuntos de caracteres e\n" " apelidos conhecidos\n" " -k, --known=PARES restringe os conjuntos de caracteres com a " "lista\n" " de PARES conhecidos\n" " -h, --header[=[LN/]NOME] escreve a tabela NOME na saída padrão usando " "LN,\n" " depois sai\n" " -T, --find-subsets reporta todos os conjuntos de caracteres que " "são\n" " subconjuntos de outros\n" " -C, --copyright exibe Copyright e condições de cópia\n" " --help exibe esta ajuda e sai\n" " --version mostra informações de versão e sai\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Modos de operação:\n" " -v, --verbose Explica a sequência de passos e relata o " "progresso\n" " -q, --quiet, --silent inibe mensagens sobre recodificações " "irreversíveis\n" " -f, --force força recodificações mesmo quando irreversíveis\n" " -t, --touch atualiza horário dos arquivos processados\n" " -i, -p, --sequence=ESTRATÉGIA ignorada por compatibilidade reversa\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Ajuste fino:\n" " -s, --strict usa mapeamentos estritos, descartando caracteres\n" " intraduzíveis\n" " -d, --diacritics converte apenas os diacríticos ou semelhantes\n" " para HTML/LaTeX/BibTex\n" " -S, --source[=LN] limita a recodificação às strings e comentários,\n" " como para o LN\n" " -c, --colons usa dois pontos em vez de aspas para o trema\n" " -g, --graphics aproxima os gráficos do IBMPC com gráficos ASCII\n" " -x, --ignore=CHARSET ignora CHARSET na escolha da rota de recodificação\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "A opção -l sem FORMATO ou CHARSET lista conjuntos de caracteres " "disponíveis.\n" "FORMATO é `decimal', `octal', `hexadecimal' ou `full' (ou uma letra de " "`dohf').\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "A menos que DEFAULT_CHARSET esteja setado no ambiente, o CHARSET padrão é o\n" "local, determinado por LC_ALL, LC_CTYPE, LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Com -k, são listados os conjuntos de caracteres de entrada possíveis para o\n" "CHARSET charset fornecido, com PARES no formato `INI1:FIN1,INI2:BEF2,...'\n" "sendo INIs e FINs os respectivos códigos em notação decimal.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "LN é alguma linguagem, pode ser `c', `perl' ou `po'; `c' é o padrão.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "REQUEST é SUBREQUEST[,SUBREQUEST]...; SUBREQUEST é ENCODING[..ENCODING]...\n" "ENCODING é [CHARSET][/[SURFACE]]...; REQUEST geralmente é BEFORE..AFTER,\n" "sendo BEFORE e AFTER conjuntos de caracteres. Se CHARSET for omitido, é\n" "assumido o conjunto de caracteres usual; se [/SURFACE]... for omitida, são\n" "assumidas as superfícies implicadas para o CHARSET; uma / com um nome vazio " "de\n" "superfície significa nenhuma superfície. Veja a documentação.\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Cada ARQUIVO é recodificado para ele mesmo, destruindo o original. Se não " "for\n" "indicado ARQUIVO, atua como um filtro convertendo do stdin para stdout.\n" # Adicionado o endereço da equipe de tradução, assim como feito seguindo # instruções no gnulib -- Rafael #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "Relate erros para https://github.com/rrthomas/recode\n" "Relate erros de tradução para http://translationproject.org/team/pt_BR.html\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "O símbolo `%s' é desconhecido" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "A sequência `%s' é ambígua" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "A sequência `%s' é desconhecida" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "A linguagem `%s' é ambígua" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "A linguagem `%s' é desconhecida" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "O formato `%s' é ambíguo" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "O formato `%s' é desconhecido" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Escrito por François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990-2018 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Este programa é software livre; veja o código fonte para condições de " "cópia.\n" "NÃO Hà GARANTIA; nem mesmo de COMERCIABILIDADE ou ADEQUAÇÃO A QUALQUER\n" "FIM PARTICULAR.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "O conjunto de caracteres `%s' é desconhecido ou ambíguo" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Falta argumento obrigatório" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Requisição `%s' está errada" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Recodificando %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " feito\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " falhou: %s no passo `%s..%s'\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s no passo %s..%s" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s falhou: %s no passo `%s..%s'" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "O conjunto de caracteres %s já existe e não é %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "Impossível listar `%s', não existem nomes disponíveis para este charset" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Desculpe, não existem nomes disponíveis para `%s'" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Resurfacer setado mais de uma vez para `%s'" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Unsurfacer setado mais de uma vez para `%s'" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Memória virtual esgotada" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Ambos os códigos %3d e %3u são recodificados para %3d" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Nenhum caractere é recodificado para %3u" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Impossível inverter a tabela um-para-um fornecida" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Os seguintes diagnósticos aplica-se de `%s' para `%s'" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Par nº %u: <%3d, %3d> em conflito com <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Impossível completar a tabela a partir do conjunto de pares conhecidos" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "A recodificação identidade não precisa de uma tabela" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Recodificação muito complexa para uma mera tabela" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sTabela de conversão gerada automaticamente por %s %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%spara a sequência %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Nenhuma tabela para imprimir" #: src/request.c:35 msgid "reversible" msgstr "reversível" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s para %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "byte" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "variável" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Impossível*" #: src/request.c:111 msgid "*mere copy*" msgstr "*simples cópia*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Memória virtual esgotada!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "A inicialização dos passos falhou" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "A inicialização dos passos falhou (opções não foram processadas)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Requisição: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Encolhido para: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nome de superfície `%s' não reconhecido" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Impossível recodificar de `%s' para `%s'" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Esperado `..' na requisição" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "O estado de espera do processo filho é 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Descrição\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Sintaxe obsoleta, por favor use `%s'" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=pipe usa redirecionamentos para seqüenciar os " #~ "passos\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe o mesmo que -i (neste sistema)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Informe os erros para .\n" recode-3.7.15/po/pl.po0000644000175000017500000004142314766021055010134 # Polish translations for the GNU recode messages # Copyright (C) 1996 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # PaweÅ‚ Krawczyk , 1996, 1997, 1998, 1999. # Jakub Bogusz , 2002-2019. # msgid "" msgstr "" "Project-Id-Version: recode 3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2019-05-23 20:15+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: src/main.c:112 msgid "No error" msgstr "Brak błędu" #: src/main.c:115 msgid "Non canonical input" msgstr "Dane wejÅ›ciowe nie sÄ… kanoniczne" #: src/main.c:118 msgid "Ambiguous output" msgstr "Dane wyjÅ›ciowe sÄ… dwuznaczne" #: src/main.c:121 msgid "Untranslatable input" msgstr "Dane wejÅ›ciowe nie mogÄ… być przetÅ‚umaczone" #: src/main.c:124 msgid "Invalid input" msgstr "Błędne dane wejÅ›ciowe" #: src/main.c:127 msgid "System detected problem" msgstr "System wykryÅ‚ problem" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Błędne użycie biblioteki przekodowujÄ…cej" #: src/main.c:133 msgid "Internal recoding bug" msgstr "WystÄ…piÅ‚ wewnÄ™trzny błąd przekodowania" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Ten program jest wolnodostÄ™pny; można rozprowadzać go i/lub modyfikować\n" "zachowujÄ…c warunki Powszechnej Licencji Publicznej GNU (General Public\n" "Licence), opublikowanej przez Free Software Foundation, w wersji 3 lub\n" "wyższej.\n" "\n" "Program ten jest rozprowadzany w nadziei, że bÄ™dzie przydatny,\n" "ale BEZ Å»ADNEJ GWARANCJI, nawet bez domyÅ›lnej gwarancji PRZYDATNOÅšCI\n" "DO KONKRETNEGO ZASTOSOWANIA lub SPRZEDAÅ»Y. Szczegóły można znaleźć\n" "w Powszechnej Licencji Publicznej GNU.\n" "\n" "Kopia Powszechnej Licencji Publicznej GNU powinna być dołączona do\n" "tego programu. JeÅ›li nie, można napisać do Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Polecenie `%s %s' wyÅ›wietli wiÄ™cej informacji.\n" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "Recode konwertuje pliki pomiÄ™dzy różnymi zestawami znaków i sposobami " "kodowania.\n" # REQUEST tÅ‚umaczÄ™ wszÄ™dzie konsekwentnie jako POLECENIE, a nie 'żądanie' --pk #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "SkÅ‚adnia: %s [OPCJA]... [ [ZESTAW_ZNAKÓW] | POLECENIE [PLIK]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "JeÅ›li argumenty sÄ… obowiÄ…zkowe dla dÅ‚ugich wersji opcji, to sÄ… one również\n" "obowiÄ…zkowe dla krótkich wersji. Analogicznie dla argumentów opcjonalnych.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listy:\n" " -l, --list[=FORMAT] wyÅ›wietlenie jednego lub wszystkich znanych\n" " zestawów znaków i aliasów\n" " -k, --known=PARY ograniczenie listy zestawów do znanych PAR\n" " -h, --header[=[LN/]NAZWA] wyÅ›wietlenie tablicy NAZWA na standardowym " "wyjÅ›ciu\n" " z użyciem LN i zakoÅ„czenie\n" " -T, --find-subsets wyÅ›wietlenie wszystkich zestawów znaków\n" " bÄ™dÄ…cych podzbiorami innych\n" " -C, --copyright wyÅ›wietlenie informacji o prawach autorskich\n" " oraz warunkach kopiowania\n" " --help wyÅ›wietlenie tego tekstu pomocy i zakoÅ„czenie\n" " --version wyÅ›wietlenie informacji o wersji i zakoÅ„czenie\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Tryby pracy:\n" "\n" " -v, --verbose wyjaÅ›nianie kolejnych kroków i postÄ™pów prac\n" " -q, --quiet, --silent bez komunikatów o nieodwracalnych zapisach\n" " -f, --force wymuszenie przekodowania, nawet jeÅ›li jest ono\n" " nieodwracalne\n" " -t, --touch uaktualnienie czasu zastÄ™powanych plików\n" " -i, -p, --sequence=STRATEGIA ignorowane dla zgodnoÅ›ci wstecznej\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Modyfikacja parametrów pracy:\n" "\n" " -s, --strict użycie Å›cisÅ‚ego mapowania; pominiÄ™cie znaków\n" " niemożliwych do przetÅ‚umaczenia\n" " -d, --diacritics konwersja tylko znaków diakrytycznych itp. dla\n" " HTML-a/LaTeXa/BibTeXa\n" " -c, --colons użycie dwukropków zamiast podwójnych cudzysÅ‚owów\n" " do oznaczenia przegÅ‚osu (umlaut)\n" " -g, --graphics przybliżanie ramek IBMPC znakami ASCII\n" " -x, --ignore=ZESTAW ignorowanie ZESTAWU znaków podczas okreÅ›lania " "drogi\n" " przekodowania\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Bez FORMATu lub ZESTAWu, opcja -l wyÅ›wietla dostÄ™pne zestawy i sposoby\n" "kodowania znaków. FORMAT to `decimal', `octal', `hexadecimal' lub `full',\n" "(lub jedna z liter `dohf').\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "JeÅ›li zmienna Å›rodowiskowa DEFAULT_CHARSET nie jest ustawiona, domyÅ›lnym\n" "zestawem znaków jest kodowanie zależne od lokalizacji, okreÅ›lonej przez\n" "zmienne LC_ALL, LC_CTYPE i LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "JeÅ›li podano opcjÄ™ -k, program wyÅ›wietla zestawy znaków z których można\n" "dokonać konwersji do podanego ZESTAWu docelowego. Oba sÄ… stabelaryzowanymi\n" "zestawami znaków z PARAmi postaci `SKÄ„D1:DOKÄ„D1,SKÄ„D2:DOKÄ„D2...', gdzie\n" "SKÄ„D i DOKÄ„D sÄ… kodami podanymi jako liczby dziesiÄ™tne.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN jest jÄ™zykiem programowania, do wyboru `c', `perl' lub `po'.\n" "DomyÅ›lnÄ… wartoÅ›ciÄ… jest `c'.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "POLecenie to PODPOL[,PODPOL]...; PODPOLecenie to ENKOD[..ENKOD]...\n" "ENKOD to [ZESTAW][/[KODOWANIE]]...; POLecenie czÄ™sto ma postać SKÄ„D..DOKÄ„D,\n" "gdzie SKÄ„D i DOKÄ„D sÄ… zestawami znaków. W miejsce pominiÄ™tego zestawu\n" "przyjmowany jest zestaw domyÅ›lny; W miejsce pominiÄ™tego [/KODOWANIA]\n" "przyjmowany jest domyÅ›lny sposób kodowania dla danego ZESTawu; sam znak\n" "/ bez podanego KODOWANIA oznacza brak jakiegokolwiek kodowania. Szczegóły\n" "w dokumentacji.\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Każdy PLIK jest nadpisywany nowÄ… wersjÄ…, a oryginaÅ‚ niszczony. JeÅ›li\n" "nie podano PLIKU, program dziaÅ‚a jako filtr i przekodowuje ze\n" "standardowego wejÅ›cia na standardowe wyjÅ›cie.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "Błędy prosimy zgÅ‚aszać pod adresem https://github.com/rrthomas/recode\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Symbol `%s' jest nieznany" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Sekwencja `%s' jest niejednoznaczna" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Sekwencja `%s' jest nieznana" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "JÄ™zyk `%s' jest niejednoznaczny" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "JÄ™zyk `%s' jest nieznany" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Format `%s' jest niejednoznaczny" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Format `%s' jest nieznany" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Autorem jest François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990-2018 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Oprogramowanie darmowe; warunki jego kopiowania znajdujÄ… siÄ™ w kodzie\n" "źródÅ‚owym. Nie podlega Å»ADNEJ gwarancji, nawet gwarancji PRZYDATNOÅšCI\n" "DO KONKRETNEGO ZASTOSOWANIA lub SPRZEDAÅ»Y.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Zestaw znaków `%s' jest nieznany lub niejednoznaczny" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Brak wymaganego parametru" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Polecenie `%s' jest błędne" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Przekodowywanie %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " skoÅ„czone\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " nie powiodÅ‚o siÄ™: %s w `%s..%s'\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s w `%s..%s'" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s nie powiodÅ‚o siÄ™: %s w `%s..%s'" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Zestaw %s już istnieje i nie jest %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Nie mogÄ™ wylistować `%s', brak nazw dla tego zestawu znaków" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Okt Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Brak nazw dla `%s'" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Procedura rekodujÄ…ca zostaÅ‚a ustawiona wiÄ™cej niż raz dla `%s'" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Procedura dekodujÄ…ca zostaÅ‚a ustawiona wiÄ™cej niż raz dla `%s'" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Pamięć wirtualna wyczerpana" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Kody %3d i %3u oba tÅ‚umaczÄ… siÄ™ na %3d" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Å»aden znak nie koduje siÄ™ na %3u" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Nie mogÄ™ odwrócić danej tablicy " #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Diagnostyka dla `%s' do `%s'" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Para nr %u: <%3d, %3d> konflikt z <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Nie mogÄ™ utworzyć tablicy z zestawu znanych par" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Przekodowanie jest proste, tablica nie jest potrzebna" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Przekodowanie jest zbyt skomplikowane na zwykłą tablicÄ™" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sTablica przekodowaÅ„ wygenerowana automatycznie przez %s %s." #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sdla sekwencji %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Brak tablicy do wypisania" #: src/request.c:35 msgid "reversible" msgstr "odwracalna" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s na %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "bajt" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "zmienne" #: src/request.c:109 msgid "*Unachievable*" msgstr "*NieosiÄ…galne*" #: src/request.c:111 msgid "*mere copy*" msgstr "*zwykÅ‚a kopia*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Pamięć wirtualna wyczerpana!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Inicjalizacja kroku nie powiodÅ‚a siÄ™" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Inicjalizacja kroku nie powiodÅ‚a siÄ™ (nieprzetworzone opcje)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Polecenie: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Zmniejszony do: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nierozpoznana nazwa standardu kodowania `%s'" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Przekodowanie `%s' na `%s' jest niemożliwe" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Oczekiwano `..' w poleceniu" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Stan oczekiwania procesu potomnego wynosi 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Description\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Odradza siÄ™ stosowanie tej skÅ‚adni, proszÄ™ używać `%s'" recode-3.7.15/po/ru.gmo0000644000175000017500000003100714766021055010310 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“øœC•3ÙÌ Ú>íP,m}ëúm 3q ¥ ¾ %Ø aþ g`!|È!VE"Yœ"Zö">Q##+®#HÚ#.#$*R$j}$<è$%%·?%*÷%&"&cI&@­&î&)'P,'%}'G£'—ë' ƒ([¤(&)'):9)Dt)F¹)B*C*FX*0Ÿ*XÐ**)+6T+e‹+Zñ,L- l-Ez.DÀ.'/6-/7d/Áœ/r^1Ñ1Ú1í1ò1+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: recode 3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2019-05-21 18:54+0300 Last-Translator: Yuri Kozlov Language-Team: Russian Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Generator: Lokalize 2.0 Каждый ФÐЙЛ перекодируетÑÑ Ð² файл Ñ Ñ‚ÐµÐ¼ же именем, ÑƒÐ½Ð¸Ñ‡Ñ‚Ð¾Ð¶Ð°Ñ Ð¸Ñходный. ЕÑли ФÐЙЛ не задан, то программа работает как фильтр, Ð¿ÐµÑ€ÐµÐºÐ¾Ð´Ð¸Ñ€ÑƒÑ Ñтандартный вход на Ñтандартный выход. ЕÑли длинный вариант ключа требует Ð½Ð°Ð»Ð¸Ñ‡Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°, то Ñтот аргумент обÑзателен также Ð´Ð»Ñ ÑоответÑтвующего короткого ключа. Ðналогично Ð´Ð»Ñ Ð½ÐµÐ¾Ð±Ñзательных ключей. Режимы работы: -v, --verbose объÑÑнить поÑледовательноÑть шагов и выдавать отчет о Ñтепени Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ -q, --quiet, --silent не выводить ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ необратимых перекодировках -f, --force продолжать перекодировку неÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° необратимоÑть -t, --touch обновить Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° поÑле Ð·Ð°Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ -i, -p, --sequence=СТРÐТЕГИЯ игнорируетÑÑ Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ ÑовмеÑтимоÑти Ключ -l без ФОРМÐТа и ÐÐБОРÐ-СИМВОЛОВ выводит ÑпиÑок возможных наборов и предÑтавлений. ФОРМÐТ может быть `decimal', `octal', `hexadecimal' или `full' (или одно из `dohf'). ЗÐПРОС ÑоÑтоит из ПОДЗÐПРОС[,ПОДЗÐПРОС]... ПОДЗÐПРОС ÑоÑтоит из КОДИРОВКÐ[..КОДИРОВКÐ]... КОДИРОВКРеÑть [ÐÐБОР-СИМВОЛОВ][/[ПРЕДСТÐВЛЕÐИЕ]]... ЗÐПРОС чаÑто выглÑдит как ДО..ПОСЛЕ, где ДО и ПОСЛЕ Ñуть наборы Ñимволов. ЕÑли ÐÐБОР-СИМВОЛОВ опущен, иÑпользуетÑÑ Ð½Ð°Ð±Ð¾Ñ€ по умолчанию; еÑли опуÑкаетÑÑ [/ПРЕДСТÐВЛЕÐИЕ]..., иÑпользуетÑÑ Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð°ÐµÐ¼Ð¾Ðµ предÑтавление Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÐÐБОРÐ-СИМВОЛОВ; / без имени предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚ его отÑутÑтвие. Смотрите руководÑтво. Сообщайте об ошибках на https://github.com/rrthomas/recode ИÑпользование: %s [КЛЮЧ]... [ [ÐÐБОР-СИМВОЛОВ] | ЗÐПРОС [ФÐЙЛ]... ] готово %s в %s%sТаблица перекодировки Ñоздана автоматичеÑки Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ %s %s%sÐ´Ð»Ñ Ð¿Ð¾ÑледовательноÑти %s.%s*ÐедоÑтупный**проÑто копиÑ*Ðеоднозначный выводÐе удаетÑÑ Ð·Ð°ÐºÐ¾Ð½Ñ‡Ð¸Ñ‚ÑŒ таблицу из набора извеÑтных парÐевозможно обратить данную взаимно-однозначную таблицуÐевозможно вывеÑти «%s», Ð´Ð»Ñ Ñтой набора Ñимволов нет доÑтупных именÐабор Ñимволов %s уже ÑущеÑтвует и не ÑвлÑетÑÑ %sÐеизвеÑтный или неоднозначный набор Ñимволов `%s'СоÑтоÑние Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð´Ð¾Ñ‡ÐµÑ€Ð½ÐµÐ³Ð¾ процеÑÑа равно 0x%0.2xОба кода %3d и %3u перекодируютÑÑ Ð² %3dDec Oct Hex UCS2 Mne %s Ð’ запроÑе ожидаетÑÑ Â«..»Далее Ñледует диагноÑтика Ð´Ð»Ñ Â«%s» в «%s»Ðеоднозначный формат «%s»ÐеизвеÑтный формат «%s»ТождеÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ°, нет необходимоÑти в таблицеВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° перекодировкиÐеверный вводЯЗЫК предÑтавлÑет Ñзык программированиÑ; Ñто может быть `c', `perl' или `po'. По умолчанию иÑпользуетÑÑ `c'. Ðеоднозначный Ñзык «%s»ÐеизвеÑтный Ñзык «%s»Ðеправильное иÑпользование библиотеки перекодировкиÐет Ñимвола, перекодирующегоÑÑ Ð² %3uОшибки нетÐет таблицы Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸Ðет возможноÑти перекодировать из «%s» в «%s»ÐеканоничеÑкий вводПара номер %u: <%3d, %3d> конфликтует Ñ <%3d, %3d>ПО «recode» преобразует файлы между различными наборами Ñимволов и предÑтавлениÑми. Перекодировка %s...Перекодировка Ñлишком Ñложна Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñтой таблицыОшибочный Ð·Ð°Ð¿Ñ€Ð¾Ñ Â«%s»ЗапроÑ: %s Пропущен обÑзательный аргументResurfacer задан Ð´Ð»Ñ Â«%s» более одного разаÐÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð°Ñ Ð¿Ð¾ÑледовательноÑть «%s»ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¿Ð¾ÑледовательноÑть «%s»Сжать до: %s Извините, Ð´Ð»Ñ Â«%s» нет доÑтупного имениОшибка шага инициализацииОшибка шага инициализации (необработанный ключ)ÐеизвеÑтный Ñимвол «%s»СиÑтемно Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð­Ñ‚Ð¾ Ñвободное программное обеÑпечение; уÑÐ»Ð¾Ð²Ð¸Ñ Ñ€Ð°ÑпроÑÑ‚Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð½Ð°Ñ…Ð¾Ð´ÑÑ‚ÑÑ Ð² иÑходном текÑте. Ðе предоÑтавлÑетÑÑ ÐИКÐКИХ гарантий, даже гарантии ПОЛЕЗÐОСТИ или ПРИГОДÐОСТИ ДЛЯ КОÐКРЕТÐОЙ ЦЕЛИ. Попробуйте «%s %s» Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ подробной информации. UCS2 Mne ОпиÑание ЕÑли в Ñреде отÑутÑтвует Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ DEFAULT_CHARSET, ÐÐБОР-СИМВОЛОВ уÑтанавливаетÑÑ Ð² ÑоответÑтвии Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÑŽ, что определÑетÑÑ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¼Ð¸ LC_ALL, LC_CTYPE, LANG. ÐераÑпознанное Ð¸Ð¼Ñ Ð¿Ñ€ÐµÐ´ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Â«%s»Unsurfacer задан Ð´Ð»Ñ Â«%s» более одного разаÐетранÑлируемый Ð²Ð²Ð¾Ð´Ð’Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð°Ð¼Ñть иÑÑ‡ÐµÑ€Ð¿Ð°Ð½Ð°Ð’Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð°Ð¼Ñть иÑчерпана!С ключом -k выводÑÑ‚ÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹Ðµ варианты иÑходного ÐÐБОРÐ-СИМВОЛОВ Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ конечного, еÑли оба они ÑвлÑÑŽÑ‚ÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸. ПÐРЫ должны иметь форму «ДО1:ПОСЛЕ1,ДО2:ПОСЛЕ2,...» причем ДОn и ПОСЛЕn ÑвлÑÑŽÑ‚ÑÑ ÐºÐ¾Ð´Ð°Ð¼Ð¸, заданными в виде деÑÑтичных чиÑел. Программа напиÑана ФранÑуа Пинардом (François Pinard) . байтобратимыйucs2переменнаÑrecode-3.7.15/po/cs.po0000644000175000017500000004177414766021054010136 # Czech translation of recode. # This file is distributed under the same license as the recode package. # Copyright (C) 2009 Free Software Foundation, Inc. # Petr Pisar , 2009, 2019. # # surface → povrch # msgid "" msgstr "" "Project-Id-Version: recode 3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2019-05-21 21:28+02:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: src/main.c:112 msgid "No error" msgstr "Žádná chyba" #: src/main.c:115 msgid "Non canonical input" msgstr "Nekanonický vstup" #: src/main.c:118 msgid "Ambiguous output" msgstr "NejednoznaÄný výstup" #: src/main.c:121 msgid "Untranslatable input" msgstr "NepÅ™eložitelný vstup" #: src/main.c:124 msgid "Invalid input" msgstr "Neplatný vstup" #: src/main.c:127 msgid "System detected problem" msgstr "Problém nalezený systémem" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Nesprávné použití pÅ™evodní knihovny" #: src/main.c:133 msgid "Internal recoding bug" msgstr "VnitÅ™ní chyba pÅ™evodu" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Tento program je svobodné programové vybavení. Můžete jej šířit a/nebo\n" "upravovat podle podmínek Obecné veÅ™ejné licence GNU (GPL), která byla\n" "vydána Free Software Foundation, a to buÄ podle verze 3, nebo (podle vaÅ¡eho\n" "uvážení) jakékoliv pozdÄ›jší verze.\n" "\n" "Tento program je šířen v nadÄ›ji, že bude užiteÄný, avÅ¡ak BEZ JAKÉKOLIV\n" "ZÃRUKY, a to dokonce bez odvozené záruky OBCHODOVATELNOSTI nebo VHODNOSTI\n" "PRO DANà ÚČEL. Podrobnosti naleznete v Obecné veÅ™ejné licenci GNU (GPL).\n" "\n" "Spolu s tímto program byste mÄ›li obdržet kopii Obecné veÅ™ejné licence GNU\n" "(GPL). Není-li tomu tak, napiÅ¡te na adresu Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Podrobnosti získáte pomocí „%s %s“.\n" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "Recode pÅ™evádí soubory mezi rozliÄnými znakovými sadami a povrchy.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Použití: %s [PŘEPÃNAÄŒE…] [ [ZNAKOVÃ_SADA] | POŽADAVEK [SOUBOR…] ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Pokud dlouhý pÅ™epínaÄ oznaÄuje argument za povinný, pak je povinný i pro\n" "odpovídající krátký pÅ™epínaÄ. Obdobné pravidlo platí pro volitelné " "argumenty.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Výpisy:\n" " -l, --list[=FORMÃT] vypíše jednu nebo vÅ¡echny známé znakové sady\n" " a aliasy\n" " -k, --known=PÃRY omezí znakové sady na seznam známých PÃRÅ®\n" " -h, --header[=[JZ/]NÃZEV] vypíše tabulku NÃZEV pomocí JZ, pak skonÄí\n" " -T, --find-subsets nahlásí vÅ¡echny znakové sady, které jsou\n" " podmnožinou jiných sad\n" " -C, --copyright zobrazí Copyright a podmínky užití\n" " --help zobrazí tuto nápovÄ›du a skonÄí\n" " --version vypíše informace o verzi a skonÄí\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Režimy bÄ›hu:\n" " -v, --verbose vysvÄ›tlí posloupnost kroků a vyznaÄí postup bÄ›hu\n" " -q, --quiet, --silent potlaÄí zprávy o nevratných pÅ™evodech\n" " -f, --force vynutí pÅ™evody, i když budou nevratné\n" " -t, --touch po nahrazení pÅ™evedených souborů zmÄ›ní i jejich " "Äasy\n" " -i, -p, --sequence=STRATEGIE ignoruje se, pro zpÄ›tnou kompatibilitu\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Drobná nastavení\n" " -s, --strict použije přísné mapování, nepÅ™eložitelné znaky " "zahodí\n" " -d, --diacritics pÅ™evádí jen diakritiku a podobné znaky u HTML,\n" " LaTeXu a BibTeXu\n" " -S, --source[=JZ] omezí pÅ™evod na Å™etÄ›zce a komentáře jazyka JZ\n" " -c, --colons pro apostrofy použije dvojteÄky namísto dvojitých\n" " uvozovek\n" " -g, --graphics aproximuje Äáry IBMPC pomocí ASCII grafiky\n" " -x, --ignore=SADA ignoruje znakovou SADU pÅ™i výbÄ›ru cesty pÅ™evodu\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "PÅ™epínaÄ -l bez FORMÃTU a bez SADY vypíše dostupné znakové sady a povrchy.\n" "FORMÃT je „decimal“ (desítkový), „octal“ (osmiÄkový), „hexadecimal“\n" "(Å¡estnáctkový) nebo „full“ (plný) nebo jeden ze znaků „dohf“.\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Není-li nastavena promÄ›nná prostÅ™edí DEFAULT_CHARSET, jako implicitní\n" "kódování SADY se použije kódování národního prostÅ™edí urÄené podle LC_ALL,\n" "LC_CTYPE, LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Pomocí -k lze urÄit možné sady pÅ™ed pro zadanou ZNAKOVOU_SADU po, obÄ› " "jsouce\n" "tabulkovými znakovými sadami, PÃRY jsouce tvaru „PŘED1:PO1,PŘED2:PO2,…“.\n" "PŘED a PO jsou kódy zadané jako desítkové Äíslo.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "JZ pÅ™edstavuje jazyk, nabývá hodnot „c“, „perl“ nebo „po“, implicitní je " "„c“.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "POŽADAVEK je PODPOŽADAVEK[,PODPOŽADAVEK…]; PODPOŽADAVEK je\n" "KÓDOVÃNÃ[..KÓDOVÃNÃ…]. KÓDOVÃNà je [ZNAKOVÃ_SADA][/[POVRCH]…]; POŽADAVEK " "Äasto\n" "vypadá jako PŘED..POTOM, kde PŘED a POTOM jsou znakové sady. Vynechaná\n" "ZNAKOVÃ_SADA implikuje obvyklou znakovou sadu, vynechaný [/POVRCH…] znamená\n" "implicitní povrch dané ZNAKOVÉ_SADY, „/“ s prázdným názvem povrchu znaÄí " "žádný\n" "povrch. Vizte manuál.\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Každý SOUBOR se pÅ™evádí sám do sebe, takže zniÄí originál. Není-li zadán\n" "žádný SOUBOR, pak se recode chová jako filtr a pÅ™evádí standardní vstup\n" "na standardní výstup.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "Chyby v programu hlaste anglicky na .\n" "Chyby v pÅ™ekladu hlaste Äesky na .\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Symbol „%s“ není znám" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Posloupnost „%s“ není jednoznaÄná" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Posloupnost „%s“ není známa" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Jazyk „%s“ není jednoznaÄný" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Jazyk „%s“ není znám" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Formát „%s“ není jednoznaÄný" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Formát „%s“ není znám" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Napsal François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright © 1990–2018 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Toto je svobodné programové vybavení, pro podmínky rozmnožování vizte " "zdrojové\n" "kódy. Není zde ŽÃDNà záruka, ani na OBCHODOVATELNOST, ani na VHODNOST PRO\n" "URÄŒITà ÚČEL.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Znaková sada „%s“ není známa nebo není jednoznaÄná" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Požadovaný argument chybí" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Požadavek „%s“ chybný" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "%s se pÅ™evádí…" #: src/main.c:856 #, c-format msgid " done\n" msgstr " hotovo\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " chyba: %s v kroku „%s..%s“\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s v kroku „%s..%s“" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s selhalo: %s v kroku „%s..%s“" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Znaková sada %s již existuje a není %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "„%s“ nelze vypsat, pro tuto sadu neexistují žádná jména" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Des Osm Å est UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Je nám líto, ale pro „%s“ není žádný název" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "ZmÄ›na povrchu u %s“ nastavena více než jednou" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "OdstranÄ›ní povrchu u „%s“ nastaveno více než jednou" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Virtuální paměť vyÄerpána" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Oba kódy %3d a %3u vedou na %3d" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Žádný znak nevede na %3u" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Zadanou tabulku 1:1 nelze invertovat" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Následuje diagnostika pro „%s“ do „%s“" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Pár Ä. %u: <%3d, %3d> je v rozporu s <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Z množiny známých párů nelze sestavit tabulku" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Tabulka identity, ne příliÅ¡ užiteÄná tabulka" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "PÅ™evod je na pouhou tabulku příliÅ¡ složitý" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sPÅ™evodní tabulka mechanicky vytvoÅ™ena pomocí %s %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%spro posloupnost %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Žádná tabulka na vytiÅ¡tÄ›ní" #: src/request.c:35 msgid "reversible" msgstr "vratný" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s do %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "bajt" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "UCS2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "promÄ›nná" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Nedosažitelný*" #: src/request.c:111 msgid "*mere copy*" msgstr "Äistá kopie" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Virtuální paměť vyÄerpána!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Inicializace kroku selhala" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Inicializace kroku selhala (nezpracované pÅ™epínaÄe)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Požadavek: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Zkráceno na: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nerozpoznaný název povrchu „%s“" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Neexistuje způsob, jak pÅ™evést „%s“ na „%s“" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "V požadavku oÄekáváno „..“" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Proces potomka zakonÄen ve stavu 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Popis\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Syntaxe je zastaralá, prosím, používejte „%s“" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr " -p, --sequence=pipe data mezi průchody propojí pomocí rour\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe stejné jako -i (na tomto systému)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Chyby programu hlaste anglicky na , chyby\n" #~ "v pÅ™ekladu Äesky na \n" recode-3.7.15/po/pt_BR.gmo0000644000175000017500000002264114766021055010674 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“蜙…{Ž›¢*ÂÍ„@V ^7i¡ »ÉÚGê22Je3°9ä/7N†¤6Âù73k‹Hæ .$)S}†)£Í1äO f 3z ® Í ß +ü (!!F!h!3|!#°!EÔ!":"­Y"-#5#}P#)Î#+ø#$$:$T$Øo$8H%% †%’% —%+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: recode 3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2019-05-21 06:41-0200 Last-Translator: Rafael Fontenelle Language-Team: Brazilian Portuguese Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit Plural-Forms: nplurals=2; plural=(n > 1); X-Generator: Virtaal 1.0.0-beta1 X-Bugs: Report translation errors to the Language-Team address. Cada ARQUIVO é recodificado para ele mesmo, destruindo o original. Se não for indicado ARQUIVO, atua como um filtro convertendo do stdin para stdout. Argumentos obrigatórios para opções longas também o são para opções curtas. O mesmo vale para argumentos opcionais Modos de operação: -v, --verbose Explica a sequência de passos e relata o progresso -q, --quiet, --silent inibe mensagens sobre recodificações irreversíveis -f, --force força recodificações mesmo quando irreversíveis -t, --touch atualiza horário dos arquivos processados -i, -p, --sequence=ESTRATÉGIA ignorada por compatibilidade reversa A opção -l sem FORMATO ou CHARSET lista conjuntos de caracteres disponíveis. FORMATO é `decimal', `octal', `hexadecimal' ou `full' (ou uma letra de `dohf'). REQUEST é SUBREQUEST[,SUBREQUEST]...; SUBREQUEST é ENCODING[..ENCODING]... ENCODING é [CHARSET][/[SURFACE]]...; REQUEST geralmente é BEFORE..AFTER, sendo BEFORE e AFTER conjuntos de caracteres. Se CHARSET for omitido, é assumido o conjunto de caracteres usual; se [/SURFACE]... for omitida, são assumidas as superfícies implicadas para o CHARSET; uma / com um nome vazio de superfície significa nenhuma superfície. Veja a documentação. Relate erros para https://github.com/rrthomas/recode Relate erros de tradução para http://translationproject.org/team/pt_BR.html Uso: %s [OPÇÃO]... [ [CHARSET] | REQUISIÇÃO [ARQUIVO]... ] feito %s para %s%sTabela de conversão gerada automaticamente por %s %s%spara a sequência %s.%s*Impossível**simples cópia*Saída ambíguaImpossível completar a tabela a partir do conjunto de pares conhecidosImpossível inverter a tabela um-para-um fornecidaImpossível listar `%s', não existem nomes disponíveis para este charsetO conjunto de caracteres %s já existe e não é %sO conjunto de caracteres `%s' é desconhecido ou ambíguoO estado de espera do processo filho é 0x%0.2xAmbos os códigos %3d e %3u são recodificados para %3dDec Oct Hex UCS2 Mne %s Esperado `..' na requisiçãoOs seguintes diagnósticos aplica-se de `%s' para `%s'O formato `%s' é ambíguoO formato `%s' é desconhecidoA recodificação identidade não precisa de uma tabelaErro interno de recodificaçãoEntrada inválidaLN é alguma linguagem, pode ser `c', `perl' ou `po'; `c' é o padrão. A linguagem `%s' é ambíguaA linguagem `%s' é desconhecidaUso incorreto da biblioteca de recodificaçãoNenhum caractere é recodificado para %3uSem erroNenhuma tabela para imprimirImpossível recodificar de `%s' para `%s'Entrada não-canônicaPar nº %u: <%3d, %3d> em conflito com <%3d, %3d>Recode converte arquivos entre vários conjuntos de caracteres e superfícies. Recodificando %s...Recodificação muito complexa para uma mera tabelaRequisição `%s' está erradaRequisição: %s Falta argumento obrigatórioResurfacer setado mais de uma vez para `%s'A sequência `%s' é ambíguaA sequência `%s' é desconhecidaEncolhido para: %s Desculpe, não existem nomes disponíveis para `%s'A inicialização dos passos falhouA inicialização dos passos falhou (opções não foram processadas)O símbolo `%s' é desconhecidoO sistema detectou um problemaEste programa é software livre; veja o código fonte para condições de cópia. NÃO Hà GARANTIA; nem mesmo de COMERCIABILIDADE ou ADEQUAÇÃO A QUALQUER FIM PARTICULAR. Tente `%s %s' para obter mais informações. UCS2 Mne Descrição A menos que DEFAULT_CHARSET esteja setado no ambiente, o CHARSET padrão é o local, determinado por LC_ALL, LC_CTYPE, LANG. Nome de superfície `%s' não reconhecidoUnsurfacer setado mais de uma vez para `%s'Entrada intraduzívelMemória virtual esgotadaMemória virtual esgotada!Com -k, são listados os conjuntos de caracteres de entrada possíveis para o CHARSET charset fornecido, com PARES no formato `INI1:FIN1,INI2:BEF2,...' sendo INIs e FINs os respectivos códigos em notação decimal. Escrito por François Pinard . bytereversívelucs2variávelrecode-3.7.15/po/sv.po0000644000175000017500000004167114766021055010156 # Swedish messages for recode # Copyright © 1996, 1998, 2001, 2019 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # Jan Djärv , 1996, 1998, 2001. # Sebastian Rasmussen , 2019. # Revision: 1.16 # msgid "" msgstr "" "Project-Id-Version: recode 3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2020-05-15 07:02+0800\n" "Last-Translator: Sebastian Rasmussen \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.3\n" #: src/main.c:112 msgid "No error" msgstr "Inget fel" #: src/main.c:115 msgid "Non canonical input" msgstr "Indata ej kanonisk" #: src/main.c:118 msgid "Ambiguous output" msgstr "Tvetydig utdata" #: src/main.c:121 msgid "Untranslatable input" msgstr "Oöversättbar indata" #: src/main.c:124 msgid "Invalid input" msgstr "Felaktig indata" #: src/main.c:127 msgid "System detected problem" msgstr "Systemproblem upptäcktes" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Felaktig användning av omkodningsbibliotek" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Internt omkodningsfel" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Följande text är en informell översättning som enbart tillhandahÃ¥lls i\n" "informativt syfte. För alla juridiska tolkningar gäller den engelska\n" "originaltexten.\n" "\n" "Detta program är fri programvara. Du kan distribuera den och/eller " "modifiera\n" "den under villkoren i GNU General Public License, publicerad av\n" "Free Software Foundation, antingen version 3, eller (om du sÃ¥ vill)\n" "nÃ¥gon senare version.\n" "\n" "Detta program distribueras i hopp om att det ska vara användbart,\n" "men UTAN NÃ…GON SOM HELST GARANTI, även utan den underförstÃ¥dda garantin\n" "om SÄLJBARHET eller LÄMPLIGHET FÖR NÃ…GOT SPECIELLT ÄNDAMÃ…L. Se GNU General\n" "Public License för ytterligare information.\n" "\n" "Du bör ha fÃ¥tt en kopia av GNU General Public License\n" "tillsammans med detta program. Om inte, skriv till Free Software " "Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Försök med \"%s %s\" för mer information.\n" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "Recode konverterar filer mellan olika teckenuppsättningar och ytor.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Användning: %s [FLAGGA]... [ [TECKENUPPSÄTTNING] | BEGÄRAN [FIL]...]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Om en lÃ¥ng flagga har ett obligatoriskt argument sÃ¥ är argumentet även\n" "obligatoriskt för motsvarade korta flagga. Motsvarande för valfria " "argument.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listningar:\n" " -l, --list[=FORMAT] visa en eller alla kända teckenuppsättningar\n" " -k, --known=PAR begränsa teckenuppsättningar till de i PAR-" "listan\n" " -h, --header[=[LN/]NAMN] skriv tabell NAMN för LN till standard ut\n" " och avsluta.\n" " -T, --find-subsets skriv ut teckenuppsättningar som är delmängder\n" " av andra\n" " -C, --copyright visa copyrightinformation och " "kopieringsvillkor\n" " --help visa denna hjälptext och avsluta\n" " --version visa versionsinformation och avsluta\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Exekveringsalternativ:\n" " -v, --verbose förklara delsteg och rapportera framsteg\n" " -q, --quiet, --silent undertryck meddelanden om irreversibla " "omkodningar\n" " -f, --force gör omkodning även när den är irreversibel\n" " -t, --touch gör \"touch\" pÃ¥ filer som omkodas över sig " "själva\n" " -i, -p, --sequence=STRATEGI hoppas över för bakÃ¥tkompatibilitet\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Finjustering:\n" " -s, --strict använd strikt omkodning, kassera oöversättbara " "tecken\n" " -d, --diacritics omkoda endast diakritiska tecken eller motsvarande\n" " till HTML/LaTeX/BibTeX\n" " -S, --source[=LN] begränsa omkodning till strängar och kommentarer\n" " som för LN\n" " -c, --colons använd kolon istället för \" för trematecken\n" " -g, --graphics approximera linjer i IBMPC med ASCII-grafik\n" " -x, --ignore=TECKENUPPSÄTTNING\n" " ignorera TECKENUPPSÄTTNING när omkodningsväg väljs\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Flagga -l utan FORMAT och TECKENUPPSÄTTNING visar alla tillgängliga\n" "teckenuppsättningar och ytor. FORMAT är \"decimal\", \"octal\", " "\"hexadecimal\"\n" "eller \"full\" (eller en av \"dohf\").\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Om miljövariabeln DEFAULT_CHARSET inte är satt blir standardvärdet för\n" "TECKENUPPSÄTTNING den lokalspecifika kodningen, som bestäms av\n" "miljövariablerna LC_ALL, LC_CTYPE och LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Med -k, möjliga startuppsättningar visas för den givna slutuppsättningen,\n" "där bÃ¥da teckenuppsättningar är pÃ¥ tabellform. PAR har formatet\n" "\"START1:SLUT1,START2:SLUT2,...\" och START... och SLUT... är koder\n" "som anges med decimala tal.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN är ett sprÃ¥k, det kan vara \"c\", \"perl\" eller \"po\"; \"c\" är " "standardvärde.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "BEGÄRAN är DELBEGÄRAN[,DELBEGÄRAN]..., DELBEGÄRAN är KODNING[..KODNING]...\n" "KODNING är [TECKENUPPSÄTTNING][/[YTA]].... BEGÄRAN ser ofta ut som START.." "SLUT,\n" "där START och SLUT är teckenuppsättningar. En utelämnad TECKENUPPSÄTTNING\n" "innebär den normala teckenuppsättningen,\n" "en utelämnad [/YTA]... innebär den normala ytan för TECKENUPPSÄTTNING.\n" "Ett / utan ytnamn innebär ingen yta alls. Se manualen för detaljer.\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Varje FIL omkodas över sig själv och förstör originalet. Om ingen\n" "FIL anges sÃ¥ fungerar det som ett filter som omkodar standard in\n" "till standard ut.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "Rapportera fel till https://github.com/rrthomas/recode\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Symbol \"%s\" är okänd" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Sekvens \"%s\" är tvetydig" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Sekvens \"%s\" är okänd" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "SprÃ¥k \"%s\" är tvetydigt" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "SprÃ¥k \"%s\" är okänt" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Format \"%s\" är tvetydigt" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Format \"%s\" är okänt" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Skrivet av François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright © 1990-2018 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Detta är fri programvara; se källkoden för kopieringsvillkor. Det finns\n" "INGEN garanti; inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR NÃ…GOT SPECIELLT\n" "ÄNDAMÃ…L.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Teckenuppsättning \"%s\" är okänd eller tvetydig" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Obligatoriskt argument saknas" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Begäran \"%s\" är felaktig" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Omkodar %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " klart\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " misslyckades: %s i steg \"%s..%s\"\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s i steg \"%s..%s\"" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s misslyckades: %s i steg \"%s..%s\"" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Teckenuppsättning %s finns och är inte %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "Kan inte visa \"%s\", inga namn tillgängliga för denna teckenuppsättning" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Okt Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Ledsen, men det finns inga namn tillgängliga för \"%s\"" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Ytkodning satt mer än en gÃ¥ng för \"%s\"" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Ytavkodning satt mer än en gÃ¥ng för \"%s\"" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Virtuellt minne slut" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Teckenkoderna %3d och %3u omkodas bÃ¥da till %3d" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Inget tecken omkodas till %3u" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Kan inte invertera en given ett-till-ett tabell" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Följande diagnostik är för \"%s\" till \"%s\"" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Par nr. %u: <%3d, %3d> är i konflikt med <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Kan inte göra en tabell frÃ¥n mängden av kända par" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Ingen omkodning behövs, den är inte värd en tabell" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Omkodning är för komplex för en enkel tabell" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sKonverteringstabell automatgenererad av %s %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sför sekvens %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Ingen tabell att skriva ut" #: src/request.c:35 msgid "reversible" msgstr "reversibel" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s till %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "byte" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "usc2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "variabel" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Omöjligt*" #: src/request.c:111 msgid "*mere copy*" msgstr "*endast kopiering*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Virtuellt minne slut!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Steginitiering misslyckades" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Steginitiering misslyckades (obearbetade flaggor)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Begäran: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Krympte till: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Okänt ytnamn \"%s\"" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Omöjligt koda om frÃ¥n \"%s\" till \"%s\"" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Förväntar \"..\" i begäran" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Barnprocessens väntestatus är 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Beskrivning\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "FörÃ¥ldrad syntax, använd hellre \"%s\"" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr " -p, --sequence=pipe använd rör mellan delsteg\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe samma sak som -i (pÃ¥ detta system)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Rapportera fel till .\n" #~ "Rapportera fel pÃ¥ översättningen till .\n" recode-3.7.15/po/stamp-po0000644000175000017500000000001214766021055010631 timestamp recode-3.7.15/po/insert-header.sin0000644000175000017500000000124014371446047012423 # Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } recode-3.7.15/po/fi.gmo0000644000175000017500000002263314766021055010265 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“ÖœsŽuÂÑǪ™ADD†ËÔ@å& :EVAq;³Eï+5;a$;Âþ<;%xž3»ïW%r˜!µ*× A)k@AÀ < X y † @¢ )ã !.! F!g!:!¼!Û!Ÿû!%›"Á"¼×" ”#Gµ#ý#$-$þE$9D%~% ƒ%%’%+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: recode 3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2019-05-21 18:27+0300 Last-Translator: Jorma Karvonen Language-Team: Finnish Language: fi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Poedit 2.2.2 Jos pitkä valitsin näyttää argumentin pakollisena, niin se on pakollinen myös lyhyillä valitsimilla. Sama koskee valitsinargumentteja. Toimintatilat: -v, --verbose selitä vaiheiden sekvenssi ja kerro edistymisestä -q, --quiet, --silent estä sanomat peruuttamattomista uudelleenkoodauksista -f, --force pakota uudelleenkoodaukset vaikka ne eivät ole peruttavissa -t, --touch tee touch-toiminta uudelleenkoodatuille tiedostoille sijoituksen jälkeen -i, -p, --sequence=STRATEGIA käytä väliaikaistiedostoja peräkkäisiin vaiheisiin Valitsin -l ilman MUOTO- tai MERKISTÖ-asetusta luettelee käytettävissä oleva merkistöt ja pinnat. MUOTO on ’decimal’, ’octal’, ’hexadecimal’ tai ’full’ (tai yksi kirjaimista â€dohfâ€). PYYNTÖ on ALIPYYNTÖ[,ALIPYYNTÖ]...; ALIPYYNTÖ on KOODAUS[..KOODAUS]... KOODAUS on [MERKISTÖ][/[PINTA]]...; PYYNTÖ näyttää usein kuin ALKU..LOPPU, joissa ALKU ja LOPPU ovat merkistöjä. Poisjätetty MERKISTÖ merkitsee tavallista merkistöä; poisjätetty [/PINTA]... tarkoittaa epäsuoraa pintaa MERKISTÖlle; â€/â€-merkki tyhjän pintanimen kanssa tarkoittaa, että pintaa ei ole ollenkaan. Katso käsikirjaa. Ilmoita vioista osoitteeseen https://github.com/rrthomas/recode Käyttö: %s [VALITSIN]... [ [MERKISTÖ] | PYYNTÖ [TIEDOSTO]... ] valmis %s kohteeseen %s%sMuunnostaulun on tuottanut automaattisesti ohjelma â€%s†%s%ssekvensille %s.%s*Mahdoton**vain kopiointi*Ei yksiselitteinen tulosteTaulukon täydentäminen tunnettujen parien joukosta epäonnistuiEi voida kääntää nurinpäin tiettyä yksi-yhteen-tauluaLuettelointi â€%s†epäonnistui, tälle merkistölle ei ole nimeäMerkistö %s on jo olemassa ja se ei ole %sMerkistö â€%s†on tuntematon tai ei ole yksiselitteinenLapsiprosessin odotustila on 0x%0.2xKoodit %3d ja %3u koodataan kumpikin uudelleen koodiksi %3dDes Okt Heksa UCS2 Mne %s Odotetaan â€..†pyynnössäSeuraava diagnostiikka kohteelta â€%s†kohteelle â€%sâ€Muoto â€%s†ei ole yksiselitteinenMuoto â€%s†on tuntematonIdenttinen uudelleenkoodaus, ei ole taulun arvoinenSisäinen koodausvirheVirheellinen syöteLN on joku kieli, se saattaa olla ’c’, ’perl’ tai ’po’; ’c’ on oletus. Kieli â€%s†ei ole yksiselitteinenKieli â€%s†on tuntematonKoodauskirjaston väärinkäyttöEi merkkiuudelleenkoodausta kohteeseen %3uEi virhettäEi taulua kirjoitettavanaEi tapaa koodata uudelleen kohteesta â€%s†kohteeseen â€%sâ€Ei-kanoninen syötePari nro %u: <%3d, %3d> on ristiriidassa parin <%3d, %3d> kanssaRecode muuntaa tiedostot eri merkistöjen ja pintojen välillä. Uudelleenkoodataan %s...Uudelleenkoodaus on liian mutkikas yksinkertaiselle taulullePyyntö â€%s†on virheellinenPyyntö: %s Vaadittu argumentti puuttuuPintakoodaus on asetettu useammin kuin kerran kohteelle â€%sâ€Sekvenssi â€%s†ei ole yksiselitteinenSekvenssi â€%s†on tuntematonKutistui kohteeseen %s Kohteelle â€%s†ei ole nimeäVaihealustus epäonnistuiVaihealustus epäonnistui (työstämättömiä valitsimia)Symboli â€%s†on tuntematonJärjestelmän havaitsema pulmaTämä on vapaa ohjelmisto; katso lähdekoodista kopiointiehdot. Ohjelmalle EI ole takuuta; ei edes KAUPALLISUUDELLE tai SOPIVUUDELLE TIETTYYN TARKOITUKSEEN. Lisätietoja komennolla â€%s %sâ€. UCS2 Mne Kuvaus Jollei DEFAULT_CHARSET-muuttujaa ole asetettu ympäristössä, MERKISTÖ-oletuksena on paikallisasetuksesta riippuvainen koodaus, joka määritellään muuttujissa LC_ALL, LC_CTYPE, LANG. Tunnistamaton pintanimi â€%sâ€Pinnanpoistokoodaus on asetettu useammin kuin kerran kohteelle â€%sâ€Kääntökelvoton syöteVirtuaalimuisti loppuiVirtuaalimuisti loppui!Valitsimella -k, mahdolliset aloitusmerkistöt luetellaan tietyille lopetusmerkistöille, joissa molemmat ovat taulukkomuodossa â€ALKU1:LOPPU1,ALKU2:LOPPU2,...â€-muotoisina pareina ja ALKU- ja LOPPU- parametrit ovat desimaalilukuina annettuja koodeja. Kirjoittaja: François Pinard . tavupalautuvaucs2muuttujarecode-3.7.15/po/fi.po0000644000175000017500000004202614766021055010117 # Finnish messsages for recode. # Copyright © 2010, 2019 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # Jorma Karvonen , 2012, 2019. # msgid "" msgstr "" "Project-Id-Version: recode 3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2019-05-21 18:27+0300\n" "Last-Translator: Jorma Karvonen \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.2.2\n" #: src/main.c:112 msgid "No error" msgstr "Ei virhettä" #: src/main.c:115 msgid "Non canonical input" msgstr "Ei-kanoninen syöte" #: src/main.c:118 msgid "Ambiguous output" msgstr "Ei yksiselitteinen tuloste" #: src/main.c:121 msgid "Untranslatable input" msgstr "Kääntökelvoton syöte" #: src/main.c:124 msgid "Invalid input" msgstr "Virheellinen syöte" #: src/main.c:127 msgid "System detected problem" msgstr "Järjestelmän havaitsema pulma" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Koodauskirjaston väärinkäyttö" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Sisäinen koodausvirhe" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Tämä ohjelma on vapaa; voit jakaa sitä edelleen ja/tai muokata\n" "sitä Free Software Foundationin julkaiseman GNU General Public License\n" "-lisenssin alaisena; joko versiona 3, tai (valintasi mukaan)\n" "minä tahansa myöhäisempänä versiona.\n" "\n" "Tätä ohjelmaa jaetaan toivossa, että se on hyödyllinen,\n" "mutta ILMAN MITÄÄN TAKUUTA; ilman pientäkään vihjausta takuusta\n" "KAUPALLISUUTEEN tai SOVELTUVUUDESTA JOHONKIN TARKOITUKSEEN. Lisätietoja\n" "GNU General Public License-lisenssistä.\n" "\n" "Sinun pitäisi saada kopion GNU General Public License-lisenssistä\n" "tämän ohjelman mukana; jos näin ei ole, kirjoita osoittteeseen Free " "Software\n" "Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Lisätietoja komennolla â€%s %sâ€.\n" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "Recode muuntaa tiedostot eri merkistöjen ja pintojen välillä.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Käyttö: %s [VALITSIN]... [ [MERKISTÖ] | PYYNTÖ [TIEDOSTO]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Jos pitkä valitsin näyttää argumentin pakollisena, niin se on pakollinen\n" "myös lyhyillä valitsimilla. Sama koskee valitsinargumentteja.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Luettelot:\n" " -l, --list[=MUOTO] luettele yksi tai kaikki tunnetut merkistöt ja " "aliakset\n" " -k, --known=PARIT rajoita merkistöt tunnetun PARIT-luettelon " "mukaan\n" " -h, --header[=[LN/]NIMI] kirjoita taulukon NIMI vakiotulosteeseen " "käyttäen LN-kieltä, poistu sitten\n" " -T, --find-subsets raportoi kaikki merkistöt, jotka ovat muiden " "alijoukkoja\n" " -C, --copyright näytä Copyright-tiedot ja kopiointiehdot\n" " --help näytä tämä opaste ja poistu\n" " --version tulosta versiontiedot ja poistu\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Toimintatilat:\n" " -v, --verbose selitä vaiheiden sekvenssi ja kerro edistymisestä\n" " -q, --quiet, --silent estä sanomat peruuttamattomista " "uudelleenkoodauksista\n" " -f, --force pakota uudelleenkoodaukset vaikka ne eivät ole " "peruttavissa\n" " -t, --touch tee touch-toiminta uudelleenkoodatuille " "tiedostoille sijoituksen jälkeen\n" " -i, -p, --sequence=STRATEGIA käytä väliaikaistiedostoja peräkkäisiin " "vaiheisiin\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Hienosäätö:\n" " -s, --strict käytä strict-uudelleenkoodausta, salli merkkien\n" " katoaminen\n" " -d, --diacritics muunna vain tarkemerkit ja vastaavat\n" " HTML/LaTeX/BibTeX-ohjelmia varten\n" " -S, --source[=LN] rajoita uudelleenkoodaukset merkkijonoihin ja\n" " kommentteihin kuten LN-kielelle\n" " -c, --colons käytä kaksoispisteitä kaksoissuljemerkin sijasta\n" " tarkemerkkeihin\n" " -g, --graphics likimääräistä linjat IBMPC:ssä ASCII-grafiikalla\n" " -x, --ignore=MERKISTÖ älä välitä MERKISTÖstä valittaessa\n" " uudelleenkoodauspolkua\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Valitsin -l ilman MUOTO- tai MERKISTÖ-asetusta luettelee käytettävissä " "oleva\n" "merkistöt ja pinnat.\n" "MUOTO on ’decimal’, ’octal’, ’hexadecimal’ tai ’full’ (tai yksi kirjaimista\n" "â€dohfâ€).\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Jollei DEFAULT_CHARSET-muuttujaa ole asetettu ympäristössä, MERKISTÖ-" "oletuksena\n" "on paikallisasetuksesta riippuvainen koodaus, joka määritellään muuttujissa\n" "LC_ALL, LC_CTYPE, LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Valitsimella -k, mahdolliset aloitusmerkistöt luetellaan tietyille\n" "lopetusmerkistöille, joissa molemmat ovat taulukkomuodossa\n" "â€ALKU1:LOPPU1,ALKU2:LOPPU2,...â€-muotoisina pareina ja ALKU- ja LOPPU-\n" "parametrit ovat desimaalilukuina annettuja koodeja.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN on joku kieli, se saattaa olla ’c’, ’perl’ tai ’po’; ’c’ on oletus.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "PYYNTÖ on ALIPYYNTÖ[,ALIPYYNTÖ]...; ALIPYYNTÖ on KOODAUS[..KOODAUS]...\n" "KOODAUS on [MERKISTÖ][/[PINTA]]...; PYYNTÖ näyttää usein kuin ALKU..LOPPU,\n" "joissa ALKU ja LOPPU ovat merkistöjä. Poisjätetty MERKISTÖ merkitsee\n" "tavallista merkistöä; poisjätetty [/PINTA]... tarkoittaa epäsuoraa pintaa\n" "MERKISTÖlle; â€/â€-merkki tyhjän pintanimen kanssa tarkoittaa, että pintaa\n" "ei ole ollenkaan. Katso käsikirjaa.\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "Ilmoita vioista osoitteeseen https://github.com/rrthomas/recode\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Symboli â€%s†on tuntematon" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Sekvenssi â€%s†ei ole yksiselitteinen" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Sekvenssi â€%s†on tuntematon" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Kieli â€%s†ei ole yksiselitteinen" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Kieli â€%s†on tuntematon" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Muoto â€%s†ei ole yksiselitteinen" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Muoto â€%s†on tuntematon" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Kirjoittaja: François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright © 1990-2018 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Tämä on vapaa ohjelmisto; katso lähdekoodista kopiointiehdot. Ohjelmalle " "EI\n" "ole takuuta; ei edes KAUPALLISUUDELLE tai SOPIVUUDELLE TIETTYYN " "TARKOITUKSEEN.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Merkistö â€%s†on tuntematon tai ei ole yksiselitteinen" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Vaadittu argumentti puuttuu" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Pyyntö â€%s†on virheellinen" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Uudelleenkoodataan %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " valmis\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " epäonnistui: %s vaiheessa â€%s..%sâ€\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s vaiheessa â€%s..%sâ€" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s epäonnistui: %s vaiheessa â€%s..%sâ€" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Merkistö %s on jo olemassa ja se ei ole %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Luettelointi â€%s†epäonnistui, tälle merkistölle ei ole nimeä" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Des Okt Heksa UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Kohteelle â€%s†ei ole nimeä" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Pintakoodaus on asetettu useammin kuin kerran kohteelle â€%sâ€" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Pinnanpoistokoodaus on asetettu useammin kuin kerran kohteelle â€%sâ€" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Virtuaalimuisti loppui" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Koodit %3d ja %3u koodataan kumpikin uudelleen koodiksi %3d" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Ei merkkiuudelleenkoodausta kohteeseen %3u" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Ei voida kääntää nurinpäin tiettyä yksi-yhteen-taulua" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Seuraava diagnostiikka kohteelta â€%s†kohteelle â€%sâ€" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Pari nro %u: <%3d, %3d> on ristiriidassa parin <%3d, %3d> kanssa" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Taulukon täydentäminen tunnettujen parien joukosta epäonnistui" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Identtinen uudelleenkoodaus, ei ole taulun arvoinen" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Uudelleenkoodaus on liian mutkikas yksinkertaiselle taululle" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sMuunnostaulun on tuottanut automaattisesti ohjelma â€%s†%s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%ssekvensille %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Ei taulua kirjoitettavana" #: src/request.c:35 msgid "reversible" msgstr "palautuva" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s kohteeseen %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "tavu" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "muuttuja" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Mahdoton*" #: src/request.c:111 msgid "*mere copy*" msgstr "*vain kopiointi*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Virtuaalimuisti loppui!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Vaihealustus epäonnistui" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Vaihealustus epäonnistui (työstämättömiä valitsimia)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Pyyntö: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Kutistui kohteeseen %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Tunnistamaton pintanimi â€%sâ€" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Ei tapaa koodata uudelleen kohteesta â€%s†kohteeseen â€%sâ€" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Odotetaan â€..†pyynnössä" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Lapsiprosessin odotustila on 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Kuvaus\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Syntaksi on vanhentunut, parempana pidetään syntaksia â€%sâ€" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=pipe käytä putkimekanismia peräkkäisiin ajoihin\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe sama kuin -i (tässä järjestelmässä)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Ilmoita virheistä (englanniksi) osoitteeseen .\n" #~ "Ilmoita käännösvirheistä osoitteeseen .\n" recode-3.7.15/po/Makevars0000644000175000017500000000466714574045722010672 # Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ \ --flag=_:1:pass-c-format \ --flag=N_:1:pass-c-format \ $${end_of_xgettext_options+} # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Free Software Foundation, Inc. # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = rrt@sc3d.org # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = # This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' # context. Possible values are "yes" and "no". Set this to yes if the # package uses functions taking also a message context, like pgettext(), or # if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. USE_MSGCTXT = no # These options get passed to msgmerge. # Useful options are in particular: # --previous to keep previous msgids of translated messages, # --quiet to reduce the verbosity. MSGMERGE_OPTIONS = recode-3.7.15/po/ru.po0000644000175000017500000005510414766021055010150 # Ð›Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ recode. # This file is distributed under the same license as the recode package. # Copyright (C) 1999 Free Software Foundation, Inc. # # Dmitry S. Sivachenko , 2000. # Yuri Kozlov , 2019. msgid "" msgstr "" "Project-Id-Version: recode 3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2019-05-21 18:54+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 2.0\n" # src/main.c:157 #: src/main.c:112 msgid "No error" msgstr "Ошибки нет" # src/main.c:160 #: src/main.c:115 msgid "Non canonical input" msgstr "ÐеканоничеÑкий ввод" # src/main.c:163 #: src/main.c:118 msgid "Ambiguous output" msgstr "Ðеоднозначный вывод" # src/main.c:166 #: src/main.c:121 msgid "Untranslatable input" msgstr "ÐетранÑлируемый ввод" # src/main.c:169 #: src/main.c:124 msgid "Invalid input" msgstr "Ðеверный ввод" # src/main.c:172 #: src/main.c:127 msgid "System detected problem" msgstr "СиÑтемно Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" # src/main.c:175 #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Ðеправильное иÑпользование библиотеки перекодировки" # src/main.c:178 #: src/main.c:133 msgid "Internal recoding bug" msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° перекодировки" # src/main.c:454 #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Это ÑÐ²Ð¾Ð±Ð¾Ð´Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°; вы можете раÑпроÑтранÑть и/или изменÑть ее при\n" "Ñоблюдении уÑловий УниверÑальной ОбщеÑтвенной Лицензии GNU, опубликованной\n" "Фондом Свободного Программного ОбеÑпечениÑ, верÑии 3 или любой более " "поздней\n" "(по вашему уÑмотрению).\n" "\n" "Эта программа раÑпроÑтранÑетÑÑ Ð² надежде, что она будет полезной, но БЕЗ\n" "КÐКИХ-ЛИБО ГÐРÐÐТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ " "ЦЕÐÐОСТИ\n" "или ПРИГОДÐОСТИ ДЛЯ КОÐКРЕТÐОЙ ЦЕЛИ. Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подробной " "информации,\n" "Ñмотрите УниверÑальную ОбщеÑтвенную Лицензию GNU.\n" "\n" "Ð’Ñ‹ должны были получить копию УниверÑальной ОбщеÑтвенной Лицензии GNU вмеÑте " "Ñ\n" "Ñтой программой, еÑли нет, напишите Free Software Foundation, Inc., 59 " "Temple\n" "Place - Suite 330, Boston, MA 02111-1307, USA.\n" # src/main.c:479 #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Попробуйте «%s %s» Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ подробной информации.\n" # src/main.c:483 #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "ПО «recode» преобразует файлы между различными наборами Ñимволов\n" "и предÑтавлениÑми.\n" # src/main.c:486 #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "ИÑпользование: %s [КЛЮЧ]... [ [ÐÐБОР-СИМВОЛОВ] | ЗÐПРОС [ФÐЙЛ]... ]\n" # src/main.c:489 #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "ЕÑли длинный вариант ключа требует Ð½Ð°Ð»Ð¸Ñ‡Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°, то Ñтот аргумент\n" "обÑзателен также Ð´Ð»Ñ ÑоответÑтвующего короткого ключа. Ðналогично длÑ\n" "необÑзательных ключей.\n" # src/main.c:494 #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Вывод:\n" " -l, --list[=ФОРМÐТ] вывеÑти один или вÑе извеÑтные наборы Ñимволов\n" " и Ñинонимы\n" " -k, --known=ПÐРЫ ограничить наборы Ñимволов в ÑоответÑтвии Ñ\n" " извеÑтными ПÐРÐМИ\n" " -h, --header[=[ЯЗЫК/]ИМЯ] запиÑать таблицу ИМЯ в Ñтандартный вывод,\n" " иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¯Ð—Ð«Ðš, затем выйти\n" " -T, --find-subsets вывеÑти вÑе наборы Ñимволов, ÑвлÑющиеÑÑ\n" " подмножеÑтвами оÑтальных\n" " -C, --copyright вывеÑти информацию об авторÑких правах и\n" " уÑловиÑÑ… раÑпроÑтранениÑ\n" " --help вывеÑти Ñту Ñправку и выйти\n" " --version вывеÑти информацию о верÑии и выйти\n" # src/main.c:506 #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Режимы работы:\n" " -v, --verbose объÑÑнить поÑледовательноÑть шагов и выдавать\n" " отчет о Ñтепени завершениÑ\n" " -q, --quiet, --silent не выводить ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ необратимых " "перекодировках\n" " -f, --force продолжать перекодировку неÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° " "необратимоÑть\n" " -t, --touch обновить Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° поÑле замещениÑ\n" " -i, -p, --sequence=СТРÐТЕГИЯ\n" " игнорируетÑÑ Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ ÑовмеÑтимоÑти\n" # src/main.c:525 #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Ð¢Ð¾Ð½ÐºÐ°Ñ Ð½Ð°Ñтройка:\n" " -s, --strict иÑпользовать точные отображениÑ,\n" " отбраÑывать нетранÑлируемые Ñимволы\n" " -d, --diacritics переводить только диакритичеÑкие знаки\n" " Ð´Ð»Ñ HTML/LaTeX/BibTeX\n" " -S, --source[=ЯЗЫК] ограничить перекодировку Ð´Ð»Ñ Ð¯Ð—Ð«ÐšÐ\n" " Ñтроками и комментариÑми\n" " -c, --colons иÑпользовать Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ñ Ð²Ð¼ÐµÑто двойных кавычек\n" " при обозначении тремы\n" " -g, --graphics заменÑть линии IBMPC пÑевдографикой ASCII\n" " -x, --ignore=ÐÐБ-СИМВ игнорировать ÐÐБ-СИМВ при выборе\n" " ÑпоÑоба перекодировки\n" # src/main.c:535 #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Ключ -l без ФОРМÐТа и ÐÐБОРÐ-СИМВОЛОВ выводит ÑпиÑок возможных наборов и\n" "предÑтавлений. ФОРМÐТ может быть `decimal', `octal', `hexadecimal' или\n" "`full' (или одно из `dohf').\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "ЕÑли в Ñреде отÑутÑтвует Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ DEFAULT_CHARSET, ÐÐБОР-СИМВОЛОВ\n" "уÑтанавливаетÑÑ Ð² ÑоответÑтвии Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÑŽ, что определÑетÑÑ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¼Ð¸ " "LC_ALL,\n" "LC_CTYPE, LANG.\n" # src/main.c:540 #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "С ключом -k выводÑÑ‚ÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹Ðµ варианты иÑходного ÐÐБОРÐ-СИМВОЛОВ длÑ\n" "заданного конечного, еÑли оба они ÑвлÑÑŽÑ‚ÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸. ПÐРЫ должны иметь " "форму\n" "«ДО1:ПОСЛЕ1,ДО2:ПОСЛЕ2,...»\n" "причем ДОn и ПОСЛЕn ÑвлÑÑŽÑ‚ÑÑ ÐºÐ¾Ð´Ð°Ð¼Ð¸, заданными в виде деÑÑтичных чиÑел.\n" # src/main.c:545 #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "ЯЗЫК предÑтавлÑет Ñзык программированиÑ; Ñто может быть `c', `perl' или " "`po'.\n" "По умолчанию иÑпользуетÑÑ `c'.\n" # src/main.c:548 #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "ЗÐПРОС ÑоÑтоит из ПОДЗÐПРОС[,ПОДЗÐПРОС]...\n" "ПОДЗÐПРОС ÑоÑтоит из КОДИРОВКÐ[..КОДИРОВКÐ]...\n" "КОДИРОВКРеÑть [ÐÐБОР-СИМВОЛОВ][/[ПРЕДСТÐВЛЕÐИЕ]]...\n" "ЗÐПРОС чаÑто выглÑдит как ДО..ПОСЛЕ, где ДО и ПОСЛЕ Ñуть наборы Ñимволов.\n" "ЕÑли ÐÐБОР-СИМВОЛОВ опущен, иÑпользуетÑÑ Ð½Ð°Ð±Ð¾Ñ€ по умолчанию;\n" "еÑли опуÑкаетÑÑ [/ПРЕДСТÐВЛЕÐИЕ]..., иÑпользуетÑÑ Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð°ÐµÐ¼Ð¾Ðµ " "предÑтавление\n" "Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÐÐБОРÐ-СИМВОЛОВ; / без имени предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚ его " "отÑутÑтвие.\n" "Смотрите руководÑтво.\n" # src/main.c:556 #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Каждый ФÐЙЛ перекодируетÑÑ Ð² файл Ñ Ñ‚ÐµÐ¼ же именем, ÑƒÐ½Ð¸Ñ‡Ñ‚Ð¾Ð¶Ð°Ñ Ð¸Ñходный. " "ЕÑли\n" "ФÐЙЛ не задан, то программа работает как фильтр, Ð¿ÐµÑ€ÐµÐºÐ¾Ð´Ð¸Ñ€ÑƒÑ Ñтандартный " "вход\n" "на Ñтандартный выход.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "Сообщайте об ошибках на https://github.com/rrthomas/recode\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "ÐеизвеÑтный Ñимвол «%s»" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "ÐÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð°Ñ Ð¿Ð¾ÑледовательноÑть «%s»" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¿Ð¾ÑледовательноÑть «%s»" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Ðеоднозначный Ñзык «%s»" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "ÐеизвеÑтный Ñзык «%s»" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Ðеоднозначный формат «%s»" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "ÐеизвеÑтный формат «%s»" # src/main.c:854 #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "" "Программа напиÑана ФранÑуа Пинардом (François Pinard) .\n" # src/main.c:846 #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990-2018 Free Software Foundation, Inc.\n" # src/main.c:850 #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Это Ñвободное программное обеÑпечение; уÑÐ»Ð¾Ð²Ð¸Ñ Ñ€Ð°ÑпроÑÑ‚Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð½Ð°Ñ…Ð¾Ð´ÑÑ‚ÑÑ Ð²\n" "иÑходном текÑте. Ðе предоÑтавлÑетÑÑ ÐИКÐКИХ гарантий, даже гарантии " "ПОЛЕЗÐОСТИ\n" "или ПРИГОДÐОСТИ ДЛЯ КОÐКРЕТÐОЙ ЦЕЛИ.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "ÐеизвеÑтный или неоднозначный набор Ñимволов `%s'" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Пропущен обÑзательный аргумент" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Ошибочный Ð·Ð°Ð¿Ñ€Ð¾Ñ Â«%s»" # src/main.c:1098 #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Перекодировка %s..." # src/main.c:1108 #: src/main.c:856 #, c-format msgid " done\n" msgstr " готово\n" # src/main.c:1142 #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " ошибка: %s в «%s..%s»\n" # src/main.c:1172 #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s в «%s..%s»" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" # src/main.c:1149 #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s закончилоÑÑŒ неудачей: %s в «%s..%s»" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" # src/names.c:259 #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Ðабор Ñимволов %s уже ÑущеÑтвует и не ÑвлÑетÑÑ %s" # src/names.c:754 #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Ðевозможно вывеÑти «%s», Ð´Ð»Ñ Ñтой набора Ñимволов нет доÑтупных имен" # src/names.c:854 #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" # src/names.c:847 #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Извините, Ð´Ð»Ñ Â«%s» нет доÑтупного имени" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Resurfacer задан Ð´Ð»Ñ Â«%s» более одного раза" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Unsurfacer задан Ð´Ð»Ñ Â«%s» более одного раза" # src/recode.c:117 src/recode.c:129 #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Ð’Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð°Ð¼Ñть иÑчерпана" # src/recode.c:157 #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Оба кода %3d и %3u перекодируютÑÑ Ð² %3d" # src/recode.c:171 #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Ðет Ñимвола, перекодирующегоÑÑ Ð² %3u" # src/recode.c:172 #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Ðевозможно обратить данную взаимно-однозначную таблицу" # src/recode.c:226 src/recode.c:238 #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Далее Ñледует диагноÑтика Ð´Ð»Ñ Â«%s» в «%s»" # src/recode.c:231 src/recode.c:243 #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Пара номер %u: <%3d, %3d> конфликтует Ñ <%3d, %3d>" # src/recode.c:274 #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Ðе удаетÑÑ Ð·Ð°ÐºÐ¾Ð½Ñ‡Ð¸Ñ‚ÑŒ таблицу из набора извеÑтных пар" # src/recode.c:504 #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "ТождеÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ°, нет необходимоÑти в таблице" # src/recode.c:512 #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Перекодировка Ñлишком Ñложна Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñтой таблицы" # src/recode.c:544 #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sТаблица перекодировки Ñоздана автоматичеÑки Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ %s %s" # src/recode.c:546 #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sÐ´Ð»Ñ Ð¿Ð¾ÑледовательноÑти %s.%s" # src/recode.c:736 #: src/recode.c:748 msgid "No table to print" msgstr "Ðет таблицы Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸" #: src/request.c:35 msgid "reversible" msgstr "обратимый" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s в %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "байт" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "переменнаÑ" #: src/request.c:109 msgid "*Unachievable*" msgstr "*ÐедоÑтупный*" #: src/request.c:111 msgid "*mere copy*" msgstr "*проÑто копиÑ*" # src/recode.c:117 src/recode.c:129 #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Ð’Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð°Ð¼Ñть иÑчерпана!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Ошибка шага инициализации" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Ошибка шага инициализации (необработанный ключ)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "ЗапроÑ: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Сжать до: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "ÐераÑпознанное Ð¸Ð¼Ñ Ð¿Ñ€ÐµÐ´ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Â«%s»" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Ðет возможноÑти перекодировать из «%s» в «%s»" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Ð’ запроÑе ожидаетÑÑ Â«..»" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "СоÑтоÑние Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð´Ð¾Ñ‡ÐµÑ€Ð½ÐµÐ³Ð¾ процеÑÑа равно 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne ОпиÑание\n" "\n" # src/main.c:999 #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Ðерекомендованный ÑинтакÑиÑ, иÑпользуйте, пожалуйÑта, `%s'" # src/main.c:517 #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=pipe иÑпользовать механизм каналов длÑ\n" #~ " поÑледовательных проходов\n" # src/main.c:521 #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe то же, что -i (на Ñтой ÑиÑтеме)\n" # src/main.c:562 #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "О замеченных ошибках Ñообщайте по адреÑу .\n" recode-3.7.15/po/be.po0000644000175000017500000005125214766021054010107 # SOME DESCRIPTIVE TITLE # Copyright (C) 2003 Free Software Foundation, Inc. # Hleb Valoska , 2003. # msgid "" msgstr "" "Project-Id-Version: recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2003-04-06 23:16+0300\n" "Last-Translator: Ales Nyakhaychyk \n" "Language-Team: Belarusian \n" "Language: be\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 0.9.6\n" #: src/main.c:112 msgid "No error" msgstr "Без памылак" #: src/main.c:115 msgid "Non canonical input" msgstr "ÐекананічнаÑьць на ўваходзе" #: src/main.c:118 msgid "Ambiguous output" msgstr "ДвухÑÑнÑоўнаÑьць на выхадзе" #: src/main.c:121 msgid "Untranslatable input" msgstr "Ðеперакладальнае на ўваходзе" #: src/main.c:124 msgid "Invalid input" msgstr "ÐÑправільнае на ўваходзе" #: src/main.c:127 msgid "System detected problem" msgstr "СыÑÑ‚Ñма выÑвіла праблему" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "ÐÑправільнае ўжываньне бібліÑÑ‚Ñкі перакадаваньнÑ" #: src/main.c:133 msgid "Internal recoding bug" msgstr "ÐÑƒÑ‚Ñ€Ð°Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° перакадаваньнÑ" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "ГÑÑ‚Ð°Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ð° зьÑўлÑецца Ñвабодным праграмным забеÑьпÑчÑньнем, Ñе\n" "можна раÑпаўÑюджваць Ñ–/ці зьмÑнÑць паводле ўмоваў Ðгульнай Публічнай\n" "ЛіцÑнзіі (GPL) GNU, надрукаванай Free Software Foundation; другой ці\n" "(на твой поглÑд) пазьнейшай вÑÑ€ÑÑ–Ñ–.\n" "\n" "ГÑÑ‚Ð°Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ð° разпаўÑюджваецца з надзеÑй, што Ñна будзе карыÑнай,\n" "але БЕЗЬ ÐІЯКÐЕ ГÐРÐÐТЫІ; нават без гарантыі КÐШТОЎÐÐСЬЦІ ці\n" "ПРЫДÐТÐÐСЬЦІ ДЛЯ КÐÐКРЭТÐÐЕ МЭТЫ. ГлÑдзі падрабÑзнаÑьці Ñž GNU GPL.\n" "\n" "Ты муÑіш атрымаць копію Ðгульнай Публічнай ЛіцÑнзіі (GPL) GNU разам\n" "з гÑтай праграмай, калі не, напішы на Ð°Ð´Ñ€Ð°Ñ Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "ПаÑпрабуй `%s %s', каб атрымаць болей інфармацыі.\n" #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "Ð¡Ð²Ð°Ð±Ð¾Ð´Ð½Ð°Ñ `recode' зьмÑнÑе знаказбор ці ÑпоÑаб ÐºÐ°Ð´Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ñ„Ð°Ð¹Ð»Ð°.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Ужывай: %s [ОПЦЫІ]... [ [ЗÐÐКÐЗБОР] | ЗÐПЫТ [ФÐЙЛ]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Калі парамÑтар абавÑзковы Ð´Ð»Ñ Ð´Ð¾ÑžÐ³Ð°Ðµ опцыі, то ён абавÑзковы й длÑ\n" "кароткае опцыі такÑама. ÐналÑгічна Ð´Ð»Ñ Ð½ÐµÐ°Ð±Ð°Ð²Ñзковых парамÑтраў.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "ÐдлюÑтраваньне:\n" " -l, --list[=ФÐРМÐТ] паказаць адзін ці ÑžÑе вÑÐ´Ð¾Ð¼Ñ‹Ñ Ð·Ð½Ð°ÐºÐ°Ð·Ð±Ð¾Ñ€Ñ‹\n" " -k, --known=ПÐРЫ абмежаваць знаказборы адпаведна ÑьпіÑу ПÐР\n" " -h, --header[=[МОВÐ/]ІМЯ] запіÑаць табліцу ІМЯ у stdout на МОВЕ й " "выйÑьці\n" " -F, --freeze-tables запіÑаць модуль С, Ñкі ўтрымлівае ÑžÑе " "знаказборы\n" " -T, --find-subsets паведаміць, ÑÐºÑ–Ñ Ð·Ð½Ð°ÐºÐ°Ð·Ð±Ð¾Ñ€Ñ‹ зьÑўлÑюцца " "падмноÑтвам \n" " іншых\n" " -C, --copyright надрукаваць зьвеÑткі аб аўтарÑкіх правох Ñ– " "ўмовах\n" " капіÑваньнÑ\n" " --help надрукаваць гÑты Ñкран даведкі й выйÑьці\n" " --version надрукаваць зьвеÑткі аб вÑÑ€ÑÑ–Ñ– праграмы й " "выйÑьці\n" #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "РÑжымы працы:\n" " -v, --verbose інфармаваць пра паÑьлÑдоўнаÑьць крокаў Ñ– \n" " зьдзейÑьненую працу\n" " -q, --quiet, --silent не паведамлÑць пра Ð½ÐµÐ·Ð²Ð°Ñ€Ð¾Ñ‚Ð½Ñ‹Ñ Ð¿ÐµÑ€Ð°ÐºÐ°Ð´Ð°Ð²Ð°Ð½ÑŒÐ½Ñ–\n" " -f, --force зьдзÑйÑьнÑць перакадаваньне нават у выпадку\n" " Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ð½ÑŒÐ½Ñ Ð½ÐµÐ·Ð²Ð°Ñ€Ð¾Ñ‚Ð½Ð°Ð³Ð° выніку\n" " -t, --touch абнавіць Ñ‡Ð°Ñ Ð¿ÐµÑ€Ð°ÐºÐ°Ð´Ð°Ð²Ð°Ð½Ñ‹Ñ… файлаў паÑÑŒÐ»Ñ Ñ–Ñ…\n" " замены\n" " -i, --sequence=files ужываць чаÑÐ¾Ð²Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹ Ð´Ð»Ñ Ð¿Ñ€Ð°Ñ†Ñ‹\n" " --sequence=memory ужываць буфÑры памÑці Ð´Ð»Ñ Ð¿Ñ€Ð°Ñ†Ñ‹\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "ЗьмÑненьне парамÑтраў працы:\n" " -s, --strict ÑÑ‚Ñ€Ð¾Ð³Ð°Ñ Ð°Ð´Ð¿Ð°Ð²ÐµÐ´Ð½Ð°Ñьць, нават Ñа Ñтратай знакаў\n" " -d, --diacritics канвÑртаваць толькі дыÑÐºÑ€Ñ‹Ñ‚Ñ‹Ñ‡Ð½Ñ‹Ñ Ð·Ð½Ð°ÐºÑ–, кшталту\n" " ўжываных у HTML ці LaTeX\n" " -S, --source[=МОВÐ] перакадоўваць толькі радкі й камÑнтары МОВЫ\n" " -c, --colons ужываць двухкроп'е замеÑÑ‚ двухкоÑÑŒÑÑ Ñž " "дыÑкрытычных\n" " знаках\n" " -g, --graphics Ñправаць замÑніць рамкі IBMPC знакамі ASCII\n" " -x, --ignore=ЗÐÐКÐЗБОР ігнараваць ЗÐÐКÐЗБОР, абіраючы шлÑÑ… кадаваньнÑ\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "ÐžÐ¿Ñ†Ñ‹Ñ -l без ФÐРМÐТУ ні ЗÐÐКÐЗБОРУ паказвае вÑÐ´Ð¾Ð¼Ñ‹Ñ Ñ‚Ð°Ð±Ð»Ñ–Ñ†Ñ‹ знакаў Ñ– " "ÑпоÑабы\n" "кадаваньнÑ.\n" "ФÐРМÐТ -- `decimal', `octal', `hexadecimal' ці `full' (ці адзін з `dohf').\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Калі не атачÑньне Ð½Ñ Ð¼Ð°Ðµ уÑталёўкі DEFAULT_CHARSET, то ЗÐÐКÐЗБОР адпавÑдае\n" "кадзіроўцы лÑкалі, ÑÐºÐ°Ñ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°ÐµÑ†Ñ†Ð° з LC_ALL, LC_CTYPE, LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "ÐžÐ¿Ñ†Ñ‹Ñ -k адлюÑтроўвае Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ñ‹Ñ `зыходныÑ' знаказборы Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ð°Ð³Ð°\n" "`выніковага' ЗÐÐКÐЗБОРУ, з ПÐРÐМІ Ð¿ÐµÑ€Ð°ÐºÐ°Ð´Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ñž фармаце ДÐ1:ПÐ1,\n" "ДÐ2:ПÐ2,..., дзе ДРі ПРзьÑўлÑюцца кодамі, зададзенымі дзеÑÑтковымі " "лікамі.\n" "І зыходныÑ, Ñ– Ð²Ñ‹Ð½Ñ–ÐºÐ¾Ð²Ñ‹Ñ Ð·Ð½Ð°ÐºÐ°Ð·Ð±Ð¾Ñ€Ñ‹ муÑÑць быць таблічнымі.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "МОВРзадае мову праграмаваньнÑ, прыкладам `c', `perl' ці `po'; даўнÑта `c'.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "ЗÐПЫТ: ПÐДЗÐПЫТ[,ПÐДЗÐПЫТ]...; ПÐДЗÐПЫТ: КÐДЗІРОЎКÐ[..КÐДЗІРОЎКÐ]...;\n" "КÐДЗІРОЎКÐ: [ЗÐÐКÐЗБОР][/[СПОСÐБ КÐДÐÐ’ÐÐЬÐЯ]]...; ЗÐПЫТ чаÑта выглÑдае\n" "Ñк ПЕРÐД..ПÐСЬЛЯ, дзе ПЕРÐД Ñ– ПÐСЬЛЯ -- знаказборы. ЗамеÑÑ‚ прапушчанага\n" "ЗÐÐКÐЗБОРУ ужываецца даўнÑты знаказбор ÑÑ‹ÑÑ‚Ñмы; замеÑÑ‚ прапушчанага\n" "СПОСÐБУ ўжываецца ÑпоÑаб, Ñтандартны Ð´Ð»Ñ Ð—ÐÐКÐЗБОРÐ; адзін / без " "зададзенага\n" "СПОСÐБУ азначае адÑутнаÑьць СПОСÐБÐÐŽ увогуле. ГлÑдзі кіраўніцтва.\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Калі Ð½Ñ ÑžÐ¶Ñ‹Ñ‚Ñ‹Ñ Ð°Ð½Ñ– -i, ані -p, мÑркуецца -p, калі Ð½Ñ Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹ ФÐЙЛ, ці -i у \n" "адваротным выпадку.\n" "Кожны ФÐЙЛ перакадоўваецца паверх Ñамога ÑÑбе, зьнішчаючы арыгінал. Калі " "ФÐЙЛ\n" "Ð½Ñ Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹, то праграма працуе фільтрам Ñ– перакадоўвае з stdin на stdout.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "ÐевÑдомы знак: `%s'" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "ДвухÑÑнÑÐ¾ÑžÐ½Ð°Ñ Ð¿Ð°ÑьлÑдоўнаÑьць: `%s'" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°ÑьлÑдоўнаÑьць: `%s'" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¼Ð¾Ð²Ð°: `%s'" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¼Ð¾Ð²Ð°: `%s'" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "ДвухÑÑнÑоўны фармат: `%s'" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "ÐевÑдомы фармат: `%s'" #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "ÐапіÑаў: Franc,ois Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "ГÑта Ñвабоднае праграмовае забеÑьпÑчÑньне; глÑдзі ўмовы капіÑÐ²Ð°Ð½ÑŒÐ½Ñ Ñž\n" "зыходным кодзе. ÐÑма ÐІЯКÐЕ гарантыі, нават гарантыі КÐШТОЎÐÐСЬЦІ ці\n" "ПРЫДÐТÐÐСЬЦІ ДЛЯ КÐÐКРЭТÐÐЕ МЭТЫ.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Знаказбор `%s' невÑдомы ці двухÑÑнÑоўны" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Прапушчаны патрÑбны парамÑтар" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Памылковы запыт: `%s'" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Перакадаваньне %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " зроблена\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " нÑўдалае: %s у кроку `%s..%s'\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s у кроку `%s..%s'" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "ÐÑўдалае %s: %s у кроку `%s..%s'" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Знаказбор %s ужо Ñ–Ñнуе Ñ– не зьÑўлÑецца %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Ðемагчыма адлюÑтраваць `%s', бо нÑма імёнаў Ð´Ð»Ñ Ð³Ñтага знаказбора" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Ð”Ð·ÐµÑ Ð’Ð°Ñ Ð¨Ð°Ñн UCS2 МнÑма %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Ðажаль нÑма імёнаў Ð´Ð»Ñ `%s'" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "ПрацÑдура Ð·Ð°ÐºÐ°Ð´Ð°Ð²Ð°Ð½ÑŒÐ½Ñ ÑžÐ¶Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð° чаÑьцей, Ñк адзін раз Ð´Ð»Ñ `%s'" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "ПрацÑдура раÑÐºÐ°Ð´Ð°Ð²Ð°Ð½ÑŒÐ½Ñ ÑžÐ¶Ñ‹Ð²Ð°ÐµÑ†Ñ†Ð° чаÑьцей, Ñк адзін раз Ð´Ð»Ñ `%s'" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "СкончылаÑÑ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð°Ð¼Ñць" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Коды %3d Ñ– %3d абодва кадуюцца Ñž %3d" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "Ðіводзін знак не кадуецца Ñž %3d" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Зваротнае пераўтварÑньне па дадзенай табліцы `адзін-у-адзін'" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "ДыÑгноÑтыка пераўтварÑÐ½ÑŒÐ½Ñ Ð· `%s' у `%s'" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Пара нумар %d: <%3d, %3d> канфліктуе з <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Ðе магу ўтварыць табліцу з мноÑтва вÑдомых пар" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "ПроÑтае перакадаваньне, Ñкому не патрÑÐ±Ð½Ð°Ñ Ñ‚Ð°Ð±Ð»Ñ–Ñ†Ð°" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Перакадаваньне заÑкладанае Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñтай табліцы" #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "" "%sТабліца перакадаваньнÑ, аўтаматычна ÑÑ‚Ð²Ð¾Ñ€Ð°Ð½Ð°Ñ Ð· дапамогай GNU `%s' %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sÐ´Ð»Ñ Ð¿Ð°ÑьлÑдоўнаÑьці %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "ÐÑма табліцы Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ" #: src/request.c:35 msgid "reversible" msgstr "зваротнаÑ" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s у %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "байт" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "пераменнаÑ" #: src/request.c:109 msgid "*Unachievable*" msgstr "*ÐедаÑÑжна*" #: src/request.c:111 msgid "*mere copy*" msgstr "*проÑÑ‚Ð°Ñ ÐºÐ¾Ð¿Ñ–Ñ*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "СкончылаÑÑ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð°Ð¼Ñць!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "ÐÑÑžÐ´Ð°Ð»Ð°Ñ Ñ–Ð½Ñ–Ñ†Ñ‹ÑÐ»Ñ–Ð·Ð°Ñ†Ñ‹Ñ ÐºÑ€Ð¾ÐºÑƒ" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "ÐÑÑžÐ´Ð°Ð»Ð°Ñ Ñ–Ð½Ñ–Ñ†Ñ‹ÑÐ»Ñ–Ð·Ð°Ñ†Ñ‹Ñ ÐºÑ€Ð¾ÐºÑƒ (Ð½ÐµÐ°Ð¿Ñ€Ð°Ñ†Ð°Ð²Ð°Ð½Ñ‹Ñ Ð¾Ð¿Ñ†Ñ‹Ñ–)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Запыт: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Скарочаны да: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "ÐевÑдомае Ñ–Ð¼Ñ ÑпоÑабу ÐºÐ°Ð´Ð°Ð²Ð°Ð½ÑŒÐ½Ñ `%s'" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Ðемагчыма перакадаваць з `%s' у `%s'" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "У запыце чакалаÑÑ `..'" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ñ‡Ð°ÐºÐ°Ð½ÑŒÐ½Ñ Ð´Ð°Ñ‡Ñ‡Ñ‹Ð½Ð°Ð³Ð° працÑÑу -- 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 МнÑма ÐпіÑаньне\n" "\n" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr " -p, --sequence=pipe ужываць каналы пры апрацоўцы\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe аналÑгічнае -i (на гÑтай ÑÑ‹ÑÑ‚Ñме)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "ПаведамлÑй пра памылкі на Ð°Ð´Ñ€Ð°Ñ .\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "СынтакÑÑ‹Ñ Ð½Ðµ найлепшы, ужывай, калі лаÑка, `%s'" recode-3.7.15/po/gl.po0000644000175000017500000004400314766021055010120 # Galician translation of GNU recode # This file is distributed under the same license as the recode package. # Copyright (C) 2000 Free Software Foundation, Inc. # Copyright (C) 2012 Leandro Regueiro. # # Jacobo Tarrío Barreiro , 2000, 2001. # Leandro Regueiro , 2012. # # Proxecto Trasno - Adaptación do software libre á lingua galega: Se desexas # colaborar connosco, podes atopar máis información en http://www.trasno.net # msgid "" msgstr "" "Project-Id-Version: recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2012-11-10 20:10+0100\n" "Last-Translator: Leandro Regueiro \n" "Language-Team: Galician \n" "Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/main.c:112 msgid "No error" msgstr "Sen erros" #: src/main.c:115 msgid "Non canonical input" msgstr "Sen saída normalizada" #: src/main.c:118 msgid "Ambiguous output" msgstr "Saída ambigua" #: src/main.c:121 msgid "Untranslatable input" msgstr "Entrada non traducíbel" #: src/main.c:124 msgid "Invalid input" msgstr "Entrada incorrecta" #: src/main.c:127 msgid "System detected problem" msgstr "O sistema detectou un problema" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Uso incorrecto da biblioteca de recodificación" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Fallo interno na recodificación" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Este programa é software libre; pode redistribuílo e/ou modificalo\n" "baixo os termos da Licenza Pública Xeral de GNU tal como foi publicada\n" "pola Free Software Foundation; xa a versión 2, ou (se o prefire)\n" "calquera versión posterior.\n" "\n" "Este programa distribúese coa esperanza de que sexa útil, pero\n" "SEN NINGUNHA GARANTÃA; nin sequera a garantía implícita de COMERCIABILIDADE\n" "ou APTITUDE PARA UN FIN EN PARTICULAR. Vexa a Licenza Pública Xeral de\n" "GNU para obter máis detalles.\n" "\n" "Debería ter recibido unha copia da Licenza Pública Xeral de GNU con\n" "este programa; se non é o caso, escriba á Free Software Foundation, Inc.,\n" "59 Temple Place - Suite 330, Boston, MA 02111-1307, EE.UU.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Escriba «%s %s» para obter máis información.\n" #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "O «recode» libre converte ficheiros entre varios xogos de caracteres e " "superficies.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Uso: %s [OPCIÓN]... [ [XOGO-DE-CARACTERES] | PETICIÓN [FICHEIRO]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Se unha opción longa mostra un parámetro como obrigatorio, entón tamén é\n" "obrigatorio para a opción curta equivalente. Do mesmo xeito para parámetros\n" "opcionais.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listas:\n" " -l, --list[=FORMATO] listar un ou todos os xogos de caracteres e " "alias\n" " coñecidos\n" " -k, --known=PARES restrinxir os xogos de acordo coa lista de " "PARES\n" " coñecidos\n" " -h, --header[=[LN/]NOME] escribir a táboa NOME na saída estándar usando\n" " LN, e logo saír\n" " -F, --freeze-tables escribir un módulo en C que conteña todas as " "táboas\n" " -T, --find-subsets informar dos xogos que son subconxuntos doutros\n" " -C, --copyright mostrar o copyright e as condicións de copia\n" " --help mostrar esta axuda e saír\n" " --version mostrar información sobre a versión e saír\n" #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Modos de operación:\n" " -v, --verbose explicar a secuencia de pasos e informar dos\n" " progresos\n" " -q, --quite, --silent inhibir as mensaxes sobre recodificacións\n" " irreversíbeis\n" " -f, --force forzar as recodificacións incluso cando non son\n" " reversíbeis\n" " -t, --touch tocar os ficheiros recodificados despois de\n" " substituílos\n" " -i, --sequence=files usar ficheiros intermedios para pasos " "secuenciais\n" " --sequence=memory usar búfers na memoria para pasos secuenciais\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Axustes finos:\n" " -s, --strict usar mapeados estrictos, incluso perder caracteres\n" " -d, --diacritics converter só diacríticos ou similares para HTML/LaTeX\n" " -S, --source[=LN] limitar a recodificación a cadeas e comentarios para " "LN\n" " -c, --colon usar dous puntos no canto de comiñas dobres para " "diérese\n" " -g, --graphics aproximar as liñas de IBMPC con gráficos ASCII\n" " -x, --ignore=XOGO ignorar o XOGO ao escoller unha ruta de " "recodificación\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "A opción -l sen FORMATO ou XOGO lista os xogos e superficies dispoñíbeis.\n" "O FORMATO é `decimal', `octal', `hexadecimal' ou `full' (completo), ou unha\n" "letra entre `dofh'.\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "A menos que se defina a variábel de ambiente DEFAULT_CHARSET, XOGO é o do " "`locale'.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Con -k, os posíbeis xogos iniciais lístanse para o XOGO final indicado,\n" "sendo os dous xogos tabulares, con PARES da forma `INI1:FIN1,INI2:FIN2,...'\n" "e os códigos INI e FIN dándose coma números decimais.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "LN é unha linguaxe, pode ser `c', `perl' ou `po'; `c' por defecto.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "PETICIÓN é SUBPETICIÓN[,SUBPETICIÓN]...; SUBPETICIÓN é\n" "CODIFICACIÓN[..CODIFICACIÓN]...; CODIFICACIÓN é [XOGO][/[SUPERFICIE]]...;\n" "PETICIÓN adoita parecer INICIAL..FINAL, sendo INICIAL e FINAL uns xogos de\n" "caracteres. Se non se indica un XOGO tómase o xogo normal; se non se " "indica\n" "unha [/SUPERFICIE]... tómanse as superficies implicadas en XOGO; cunha /\n" "cun nome de superficie baleiro non se toma ningunha superficie. Lea o " "manual.\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Se non se indica -i nin -p, suponse -p se non se indica un FICHEIRO, senón -" "i.\n" "Cada FICHEIRO recodifícase sobre si mesmo, destruíndose o orixinal. Se non\n" "se indica un FICHEIRO, traballa coma un filtro e recodifica stdin a stdout.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "O símbolo «%s» é descoñecido" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "A secuencia «%s» é ambigua" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "A secuencia «%s» é descoñecida" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "A linguaxe «%s» é ambigua" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "A linguaxe «%s» é descoñecida" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "O formato «%s» é ambiguo" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "O formato «%s» é descoñecido" #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "Escrito por François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Isto é software libre; vexa o código fonte polas condicións de copia. NON " "hai\n" "garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA UN FIN " "DETERMINADO.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Xogo de caracteres «%s» descoñecido ou ambiguo" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Falta o argumento requirido" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "A petición «%s» é errónea" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Recodificando %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " feito\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " fallou: %s no paso «%s..%s»\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s no paso «%s..%s»" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s fallou: %s no paso «%s..%s»" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "O xogo de caracteres %s xa existe e non é %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Non foi posíbel listar «%s», non hai nomes dispoñíbeis para este xogo" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Síntoo, non hai nomes dispoñíbeis para «%s»" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Aplicáronse superficies máis dunha vez para «%s»" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Quitáronse superficies máis dunha vez para «%s»" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Memoria virtual esgotada" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Ãmbolos dous códigos %3d e %3d recodifícanse a %3d" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "Non hai caracteres que se recodifiquen a %3d" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Non é posíbel inverter a táboa un-a-un dada" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Seguen os diagnósticos para «%s» a «%s»" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "O par núm. %d: <%3d, %3d> entra en conflicto con <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Non foi posíbel completar a táboa dado o conxunto de pares coñecidos" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Recodificación identidade, non merece a mágoa facer unha táboa" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "A recodificación é demasiado complicada para unha simple táboa" #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sTáboa de conversión xerada mecánicamente polo «%s» Libre %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%spara a secuencia %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Non hai ningunha táboa que mostrar" #: src/request.c:35 msgid "reversible" msgstr "reversíbel" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s a %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "byte" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "v ariábel" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Inalcanzábel*" #: src/request.c:111 msgid "*mere copy*" msgstr "*simple copia*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Memoria virtual esgotada!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Produciuse un erro ao inicializar o paso" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Produciuse un erro ao inicializar o paso (opcións sen procesar)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Petición: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Encollido a: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nome de superficie «%s» non recoñecido" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Non hai xeito de recodificar de «%s» a «%s»" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Esperábase «..» na petición" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "O estado de espera do proceso fillo é 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Descrición\n" "\n" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=canalización usar canalizacións para pasos " #~ "secuenciais\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=canalización o mesmo que -i (neste sistema)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Envíe informes de fallo a .\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Sintaxe a extinguir, prefírese «%s»" #~ msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" #~ msgstr "" #~ "XOGO non ten valor por defecto, defina a variable de ambiente " #~ "DEFAULT_CHARSET.\n" #~ msgid "Ambiguous sequence `%s'" #~ msgstr "Secuencia `%s' ambigua" #~ msgid "Unknown sequence `%s'" #~ msgstr "Secuencia `%s' descoñecida" #~ msgid "Ambiguous language `%s'" #~ msgstr "Linguaxe `%s' ambigua" #~ msgid "Unknown language `%s'" #~ msgstr "Linguaxe `%s' descoñecida" #~ msgid "Ambiguous format `%s'" #~ msgstr "Formato `%s' ambigua" #~ msgid "Unknown format `%s'" #~ msgstr "Formato `%s' descoñecido" #~ msgid "Erroneous request `%s'" #~ msgstr "Petición `%s' errónea" recode-3.7.15/po/en@quot.header0000644000175000017500000000226314371446047011751 # All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # recode-3.7.15/po/POTFILES.in0000644000175000017500000000015113226751246010731 src/main.c src/names.c src/outer.c src/recode.c src/request.c src/strip-data.c src/task.c src/testdump.c recode-3.7.15/po/sr.po0000644000175000017500000005075714766021055010157 # Serbian translation of recode # Copyright © 2020 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # МироÑлав Ðиколић , 2012–2020. msgid "" msgstr "" "Project-Id-Version: recode-3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2020-04-02 17:01+0200\n" "Last-Translator: МироÑлав Ðиколић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Virtaal 0.7.1\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: src/main.c:112 msgid "No error" msgstr "Ðема грешака" #: src/main.c:115 msgid "Non canonical input" msgstr "Ðеправилан улаз" #: src/main.c:118 msgid "Ambiguous output" msgstr "ÐејаÑан излаз" #: src/main.c:121 msgid "Untranslatable input" msgstr "Ðепреводив улаз" #: src/main.c:124 msgid "Invalid input" msgstr "ÐеиÑправан улаз" #: src/main.c:127 msgid "System detected problem" msgstr "СиÑтем је открио проблем" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Ðеправилна употреба библиотеке рекодирања" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Унутрашња грешка рекодирања" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Овај програм је Ñлободан Ñофтвер; можете га проÑлеђивати\n" "и/или мењати под уÑловима ГÐУ Опште јавне лиценце коју је\n" "објавила Задужбина Ñлободног Ñофтвера; верзије 3 лиценце\n" "или (по вашем избору) било које новије верзије.\n" "\n" "Овај програм Ñе раÑподељује у нади да ће бити кориÑтан,\n" "али БЕЗ ИКÐКВЕ ГÐРÐÐЦИЈЕ; чак и без примењене гаранције\n" "ТРЖИШÐЕ ВРЕДÐОСТИ или ПРИЛÐГОЂЕÐОСТИ ОДРЕЂЕÐОЈ ÐÐМЕÐИ.\n" "Погледајте ГÐУ Општу јавну лиценцу за више детаља.\n" "\n" "Треба да Ñте примили примерак ГÐУ Опште јавне лиценце\n" "уз овај програм; ако ниÑте, пишите Задужбини Ñлободног\n" "Ñофтвера на адреÑу: „Free Software Foundation, Inc.,\n" "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA“.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Пробајте „%s %s“ за више информација.\n" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "„recode“ претвара датотеке између различитих знаковних Ñкупова и површина.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Употреба: %s [ОПЦИЈÐ]... [ [СКУПЗÐÐКОВÐ] | ЗÐХТЕВ [ДÐТОТЕКÐ]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Ðко је у дугој опцији неки аргумент обавезан, онда је обавезан\n" "и за одговарајућу кратку опцију. Слично и за аргументе опције.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "ИзлиÑтавања:\n" " -l, --list[=ФОРМÐТ] иÑпиÑује један или Ñве познате Ñкупове знакова " "и алијаÑе\n" " -k, --known=ПÐРОВИ ограничава Ñкупове знакова према познатом " "ÑпиÑку ПÐРОВÐ\n" " -h, --header[=[ПЈ/]ÐÐЗИВ] иÑпиÑује ÐÐЗИВ табеле на Ñтандардни излаз " "кориÑтећи ПЈ, и затим излази\n" " -T, --find-subsets пријављује Ñве Ñкупове знакова који Ñу " "подÑкупови других\n" " -C, --copyright приказује ауторÑка права и уÑлове умножавања\n" " --help приказује помоћ и излази\n" " --version приказује податке о издању и излази\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Режими деловања:\n" " -v, --verbose објашњава низ корака и извештава о напретку\n" " -q, --quiet, --silent не приказује поруке о неповратним рекодирањима\n" " -f, --force приморава рекодирања чак и кад Ñу неповратна\n" " -t, --touch додирује рекодиране датотеке након замене\n" " -i, -p, --sequence=СТРÐТЕГИЈРзанемарено зарад ÑаглаÑноÑти\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Фина подешавања:\n" " -s, --strict кориÑти прецизно мапирање, одбацује непреводиве " "знакове\n" " -d, --diacritics претвара Ñамо дијакритике или Ñличне за ХТМЛ/" "ЛаТеКÑ\n" " -S, --source[=ПЈ] ограничава рекодирање на ниÑке и примедбе за " "ПЈ\n" " -c, --colons кориÑти двотачку умеÑто дуплих наводника за " "диарезиÑ\n" " -g, --graphics приближава ИБМПЦ рулере ÐСКРИ графиком\n" " -x, --ignore=СКУПЗÐÐКОВРзанемарује СКУПЗÐÐКОВРприликом бирања путање " "рекодирања\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Опција -l без ФОРМÐТРи без СКУПÐЗÐÐКОВРизлиÑтава раÑположиве Ñкупове " "знакова и површине.\n" "ФОРМÐТ може бити „decimal“, „octal“, „hexadecimal“ или „full“ (или један од " "„dohf“).\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Уколико није поÑтављена променљива окружења „DEFAULT_CHARSET“, СКУПЗÐÐКОВР" "биће коришћен\n" "оÑновни у Ñкладу Ñа локалним подешавањима кодирања, одређених Ñа „LC_ALL“, " "„LC_CTYPE“, „ЈЕЗИК“.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Са -k, излиÑтавају Ñе могући „пре“ Ñкупови знакова за задати „поÑле“ " "СКУПЗÐÐКОВÐ,\n" "где Ñу оба табеларни Ñкупови знакова, Ñа ПÐРОВИ-ма у облику „ПРЕ1:ПОС1,ПРЕ2:" "ПОС2,...“\n" "и ПРЕ-ови и ПОС-ови, Ñ Ð¾Ð±Ð·Ð¸Ñ€Ð¾Ð¼ да Ñу кодови, Ñу дати у децималном облику.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "ПЈ је неки програмÑки језик, може бити „c“, „perl“ или „po“; подразумевани " "је „c“.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "ЗÐХТЕВ је ПОДЗÐХТЕВ[,ПОДЗÐХТЕВ]...; ПОДЗÐХТЕВ је КОДИРÐЊЕ[..КОДИРÐЊЕ]...\n" "КОДИРÐЊЕ је [СКУПЗÐÐКОВÐ][/[ПОВРШИÐÐ]]...; ЗÐХТЕВ чеÑто има облик ПРЕ.." "ПОСЛЕ,\n" "где Ñу ПРЕ и ПОСЛЕ Ñкупови знакова. ИзоÑтављен СКУПЗÐÐКОВРподразумева " "уоби-\n" "чајени Ñкуп знакова; изоÑтављена [/ПОВРШИÐÐ]... значи подразумевана површина " "за СКУПЗÐÐКОВÐ;\n" "/ Ñа празним називом површине значи да је уопште и нема. Погледајте " "упутÑтво.\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Свака ДÐТОТЕКРÑе прекодира преко Ñебе Ñаме, уништавајући оригинал. Ðко " "ниједна\n" "ДÐТОТЕКРније наведена, онда Ñе понаша као филтер и рекодира Ñтанд. улаз на " "Ñтанд. излаз.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "Грешке пријавите на „https://github.com/rrthomas/recode“\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Симбол „%s“ је непознат" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Секвенца „%s“ је нејаÑна" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Секвенца „%s“ је непозната" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Језик „%s“ је нејаÑан" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Језик „%s“ је непознат" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Формат „%s“ је нејаÑан" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Формат „%s“ је непознат" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Програм је напиÑао ФранÑуа Пинар .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "ÐуторÑка права © 1990–2018 Задужбина Ñлободног Ñофтвера, Доо.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Ово је Ñлободан Ñофтвер; погледајте извор за уÑлове умножавања. Ðе поÑтоји\n" "ÐИКÐКВРгаранција; чак ни за ТРЖИШÐУ ВРЕДÐОСТ или за ИСПУЊÐÐ’ÐЊЕ ОДРЕЂЕÐЕ " "ПОТРЕБЕ.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Скуп знакова „%s“ је непознат или нејаÑан" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "ÐедоÑтаје захтевани аргумент" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Захтев „%s“ је погрешан" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Рекодирам %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " урађено\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " ниÑам уÑпео: %s при кораку „%s..%s“\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s при кораку „%s..%s“" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s није уÑпео: %s при кораку „%s..%s“" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Скуп знакова „%s“ већ поÑтоји и није „%s“" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Ðе могу да наведем „%s“, нема доÑтупних назива за овај Ñкуп знакова" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Дец Окт Ð¥ÐµÐºÑ Ð£Ð¡Ð¦2 Мне %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Извините, нема доÑтупних назива за „%s“" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Понављач површине је подешен више од једном за „%s“" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Уклањач површине је подешен више од једном за „%s“" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Ðема више виртуелне меморије" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Кодови „%3d“ и „%3u“ Ñе рекодирају у „%3d“" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Ðиједан знак Ñе не рекодира у „%3u“" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Ðе могу да преокрнем задату један-на-један табелу" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Пратим анализу Ñтања за „%s“ до „%s“" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Пар број %u: <%3d, %3d> је у Ñукобу Ñа <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Ðе могу да попуним табелу из Ñкупа познатих парова" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Рекодирање идентитета, табела је непотребна" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Рекодирање је Ñувише Ñложено за коришћење једне табеле" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sТабелу претварања је механички Ñтворио „%s“ %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sза Ñеквенцу %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Ðема табеле за штампање" #: src/request.c:35 msgid "reversible" msgstr "повратно" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s у %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "бајт" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "уÑц2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "променљиво" #: src/request.c:109 msgid "*Unachievable*" msgstr "*ÐедоÑтижно*" #: src/request.c:111 msgid "*mere copy*" msgstr "*проÑÑ‚ умножак*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Ðема више виртуелне меморије!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Корак покретања није уÑпео" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Корак покретања није уÑпео (необрађене опције)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Захтев: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Прошири на: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Ðепрепознатљив назив површине „%s“" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Ðије могуће рекодирање из „%s“ у „%s“" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Очекујем „..“ у захтеву" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Стање чекања проиÑтеклог процеÑа је 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "УСЦ2 Мне ОпиÑ\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "СинтакÑа је заÑтарела, кориÑтите првенÑтвено „%s“" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=Ñпојка кориÑти механизам Ñпојке за Ñквенционирање " #~ "корака\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=Ñпојка иÑто као -i (на овом ÑиÑтему)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Грешке пријавите на .\n" recode-3.7.15/po/nb.po0000644000175000017500000004014714766021055010122 # Norwegian Bokmal translations for the recode package. # Copyright (C) 2012 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # # Johnny A. Solbu , 2012-2019. # msgid "" msgstr "" "Project-Id-Version: recode 3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2019-08-20 03:30+0200\n" "Last-Translator: Johnny A. Solbu \n" "Language-Team: Norwegian Bokmaal \n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.7.1\n" #: src/main.c:112 msgid "No error" msgstr "Ingen feil" #: src/main.c:115 msgid "Non canonical input" msgstr "Ikke-kanonisk inndata" #: src/main.c:118 msgid "Ambiguous output" msgstr "Tvetydig utdata" #: src/main.c:121 msgid "Untranslatable input" msgstr "Uoversettelige inndata" #: src/main.c:124 msgid "Invalid input" msgstr "Ugyldig inndata" #: src/main.c:127 msgid "System detected problem" msgstr "Systemet oppdaget et problem" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Misbruk av omkodingsbibliotek" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Intern omkodingsfeil" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Dette programmet er fri programvare; du kan redistribuere det og/eller " "endre\n" "det under vilkÃ¥rene i GNU General Public License som publisert av\n" "Free Software Foundation, enten versjon 3, eller (ved ditt)\n" "en nyere versjon.\n" "\n" "Dette programmet er distribuert i hÃ¥p om at det vil være nyttig,\n" "men UTEN NOEN GARANTI, ikke engang implisitt garanti\n" "SALGBARHET eller FOR ET SPESIELT FORMÃ…L. Se\n" "GNU General Public License for flere detaljer.\n" "\n" "Du skal ha mottatt en kopi av GNU General Public License\n" "sammen med dette programmet, hvis ikke, skriv til Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, 02111-1307 MA, USA\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Prøv «%s %s» Prøv for mer informasjon.\n" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "Recode konverterer filer mellom forskjellige tegnsett og overflater.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Bruk: %s [FLAGG] ... [[TEGNSETT] | FORESPØRSEL [FIL] ... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Dersom et langt flagg viser et argument som obligatorisk, sÃ¥ er det\n" "obligatorisk for tilsvarende korte alternativ ogsÃ¥. Tilsvarende for\n" "valgfrie argumenter.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Oppføringer:\n" " -l, --list[=FORMAT] lister en eller alle kjente tegnsett og " "aliaser\n" " -k, --known=PAR begrense tegnsett ifølge kjente PAR-lister\n" " -h, --header[=[LN/]NAVN] skriv tabellen NAVN pÃ¥ stdout med LN, og " "avslutt\n" " -T, --find-subsets finn alle tegnsett som er undergrupper av " "andre\n" " -C, --copyright vis opphavsrett- og kopieringsbetingelser\n" " --help vis denne hjelpen og avslutt\n" " --version vis programversjon og avslutt\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Driftsmodus:\n" " -v, --verbose forklar trinnsekvens og rapporter fremdrift\n" " -q, --quiet, --silent undertrykk meldinger om irreversible omkodinger\n" " -t, --touch berør omkodede filer etter erstatning\n" " -i, --sequence=filer bruk midlertidige filer for " "sekvenseringspasseringer\n" " --sequence=minne bruk minnebuffere for sekvenseringspasseringer\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Fine tuning:\n" " -s, --strict bruke strenge koblinger, selv løse tegn\n" " -d, --diacritics konverter kun diakritiske eller like i HTML/LaTeX\n" " -S, --source[=LN] begrens omkoding til strenger og kommentarer som " "for LN\n" " -c, --colons bruk kolon i stedet for doble sitater for trema\n" " -g, --graphics omtrentlige IBMPC ledere av ASCII-grafikk\n" " -x, --ignore=CHARSET ignorer TEGNSETT nÃ¥r du velger en omkodingssti\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Opsjonen -l uten FORMAT eller tegnsett lister opp tilgjengelige tegnsett og " "overflater.\n" "FORMAT er «desimal», «oktal», «heksadesimal» eller «full» (eller en av " "«dohf»).\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Med mindre STANDARD_TEGNSETT ligger i miljø, TEGNSETT som standard til den " "lokale\n" "avhengighetskodingeb, bestemt ved LC_ALL, LC_CTYPE, LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Med -k viser en liste over mulige pre-koding for gitt etter TEGNSETT,\n" "Begge er tabellformtegnsett, med par av type «FØR1:ETTER1,FØR2:ETTER2, ...»\n" "FØR og ETTER er koder som oppgis som desimaltall.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "LN er et sprÃ¥k, det kan være «c»,«perl» eller «po»; «c» er standard\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "FORESPØRSEL er UNDERFORESPØRSEL [, UNDERFORESPØRSEL] ...; UNDERFORESPØRSEL " "er koding [.. KODING] ...\n" "KODING er [TEGNSETT] [/ [OVERFLATE]] ...; FORESPØRSEL ofte ser ut som før .. " "ETTER,\n" "med før og etter blir tegnsett. Et utelatt CHARSET innebærer den vanlige\n" "tegnsettet, en utelatt [/ OVERFLATE] ... betyr de underforstÃ¥tte overflater " "for TEGNSETT, et /\n" "med en tom overflatenavn betyr ingen overflater i det hele tatt. Se " "manualen.\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Hver FIL kodes om over seg selv og ødelegger originalen. Hvis ingen\n" "FIL er spesifisert, funger som et filter og omkode stdin til stdout.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "Rapporter feil: https://github.com/rrthomas/recode\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Symbolet «%s» er ukjent" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Sekvensen «%s» er tvetydig" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Sekvensen «%s» er ukjent" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "SprÃ¥ket «%s» er flertydig" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "SprÃ¥ket «%s» er ukjent" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Formatet «%s» er tvetydig" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Formatet «%s» er ukjent" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Skrevet av François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Opphavsrett (C) 1990-2018 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Dette er fri programvare; se i kildekoden for kopieringsbetingelser.\n" "Det er INGEN garanti; ikke en gang for SALGBARHET eller SKIKKETHET\n" "FOR ET BESTEMT FORMÃ…L.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Tegnsett «%s» er ukjent eller tvetydig" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "PÃ¥krevd argument mangler" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Forespørsel «%s» er ugyldig" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Omkoder %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " utført\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " misslyktes: %s i steg «%s..%s»\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s i steg «%s..%s»" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s misslyktes: %s i steg «%s..%s»" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Tegnsettet %s finnes allerede og er ikke %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Kan ikke liste «%s», ingen navn tilgjengelig for dette tegnsettet" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "dec oct hex UCS2 mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Beklager, ingen navn tilgjengelig for `%s'" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Resurfacer satt mer enn én gang for «%s»" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Unsurfacer satt mer enn én gang for «%s»" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Virtuelt minne oppbrukt" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Koder %3d og %3u begge omkoder til %3d" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Ingen tegn omkodes til %3u" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Kan ikke snu oppgitt en-til-en tabell" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Følgende diagnostikk for `%s' til `%s'" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Par nr. %u: <%3d, %3d> i konflikt med <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Kan ikke fullføre tabellen fra sett med kjente par" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Identitetsomkoding, ikke verdt en tabell" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Omkoding er for komplisert for bare en tabell" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sKonverteringstabell generert mekanisk ved %s %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sfor sekvens %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Ingen tabell Ã¥ skrive ut" #: src/request.c:35 msgid "reversible" msgstr "reversibel" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s til %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr " byte" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "variabel" #: src/request.c:109 msgid "*Unachievable*" msgstr "*UoppnÃ¥elig*" #: src/request.c:111 msgid "*mere copy*" msgstr "*bare kopier*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Virtuelt minne oppbrukt!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Trinninitialiseringen mislyktes" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Trinninitialiseringen mislyktes (ubehandlede alternativer)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Forespørsel: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Krympet til: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Ukjent overflate navn «%s»" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Ingen mÃ¥te Ã¥ omkode fra «%s» til «%s»" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Forventer «..»i forespørselen" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Barneprosessventestatus er 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne beskrivelse\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Syntaksen er foreldet, vennligst foretrekk «%s»" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=rør bruk rør-maskiner for sekvenseringspasseringer\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=rør samme som -i (pÃ¥ dette systemet)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Rapporter feil til .\n" recode-3.7.15/po/hu.po0000644000175000017500000004364514766021055010145 # Hungarian translation of recode # Copyright (C) 2002, 2012 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # # Andras Timar , 2002. # Gabor Kelemen , 2012. msgid "" msgstr "" "Project-Id-Version: recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2012-04-26 23:19+0200\n" "Last-Translator: Gabor Kelemen \n" "Language-Team: Hungarian \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/main.c:112 msgid "No error" msgstr "Hibátlan" #: src/main.c:115 msgid "Non canonical input" msgstr "Nem kanonikus bemenet" #: src/main.c:118 msgid "Ambiguous output" msgstr "Nem egyértelmű kimenet" #: src/main.c:121 msgid "Untranslatable input" msgstr "Lefordíthatatlan bemenet" #: src/main.c:124 msgid "Invalid input" msgstr "Érvénytelen bemenet" #: src/main.c:127 msgid "System detected problem" msgstr "Rendszerhiba" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Az átkódoló könyvtár téves használata" #: src/main.c:133 msgid "Internal recoding bug" msgstr "BelsÅ‘ átkódolási hiba" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Ez egy szabad szoftver, terjesztheti és/vagy módosíthatja a Free Software\n" "Foundation által kiadott GNU General Public License második (vagy bármely\n" "késÅ‘bbi) változatában foglaltak alapján.\n" "\n" "Ezt a programot abban a reményben terjesztjük, hogy hasznos lesz, de nem\n" "vállalunk SEMMIFÉLE GARANCIÃT, még olyan értelemben sem, hogy a program\n" "alkalmas-e a KÖZREADÃSRA vagy EGY BIZONYOS FELADAT ELVÉGZÉSÉRE. További\n" "részletekért tanulmányozza a GNU GPL licencet.\n" "\n" "Ehhez a programhoz a GNU General Public License egy példánya is jár,\n" "ha nem kapta meg, írjon a Free Software Foundation Inc.-nek. Levélcímük:\n" "51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "További információkért adja ki a következÅ‘t: „%s %sâ€.\n" #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "A „recode†karakterkészletek és felületek közötti konverziót tesz lehetÅ‘vé.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Használat: %s [KAPCSOLÓK]... [ [KARAKTERKÉSZLET] | KÉRÉS [FÃJL]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Ha a hosszú kapcsolóhoz kötelezÅ‘ argumentumot megadni, akkor az a megfelelÅ‘\n" "rövid kapcsolóra is vonatkozik. Hasonló a helyzet a választható\n" "argumentumokkal.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listák:\n" " -l, --list[=FORMÃTUM] az összes ismert karakterkészlet kiírása\n" " -k, --known=PÃROK karakterkészletek korlátozása az ismert " "PÃROKRA\n" " -h, --header[=[LN/]NÉV] a NÉV tábla kiírása az LN használatával, és " "kilépés\n" " -F, --freeze-tables C modul kiírása az összes táblával\n" " -T, --find-subsets kiírja azokat a karakterkészleteket, amelyeket\n" " mások magukba foglalnak\n" " -C, --copyright a copyright és a másolási feltételek kiírása\n" " --help ezen súgó kiírása, és kilépés\n" " --version a verzióinformációk kiírása, és kilépés\n" #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Működési módok:\n" " -v, --verbose a lépések és az elÅ‘rehaladás kiírása\n" " -q, --quiet, --silent nem ír ki üzeneteket visszafordíthatatlan\n" " átkódolás esetén\n" " -f, --force átkódolás kényszerítése visszafordíthatatlan\n" " esetben is\n" " -t, --touch az átkódolt fájlok dátumának módosítása\n" " -i, --sequence=files közbülsÅ‘ fájlok használata az egymást követÅ‘\n" " lépésekhez\n" " --sequence=memory memóriában elhelyezkedÅ‘ pufferek használata az\n" " egymást követÅ‘ lépésekhez\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Finomhangolás:\n" " -s, --strict szigorú leképezés használata, akár karaktervesztés\n" " árán is\n" " -d, --diacritics csak a nemzeti karakterek átkódolása HTML/LaTeX\n" " formátumhoz\n" " -S, --source[=NYELV] csak a NYELV által meghatározott karakterláncokat\n" " és megjegyzéseket kódolja át\n" " -c, --colons „:†használata a „\"†helyett a kétpontos ékezet\n" " jelölésére az Easy French (egyfajta repülÅ‘ " "ékezet)\n" " kódolásban\n" " -g, --graphics az IBMPC vonalrajzoló karakterek helyettesítése\n" " ASCII grafikával\n" " -x, --ignore=KARKÉSZL a KARKÉSZL mellÅ‘zése átkódolási útvonal " "választásánál\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "A -l FORMÃTUM és KARKÉSZL nélkül felsorolja az elérhetÅ‘ karakterkészleteket\n" "és felületeket. A FORMÃTUM is a „decimalâ€, „octalâ€, „hexadecimal†vagy " "„fullâ€\n" "egyike (vagy a „dohf†egyike).\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Ha a DEFAULT_CHARSET nincs beállítva a környezetben, a KARKÉSZL a területi\n" "beállítástól függÅ‘ kódolást használja az LC_ALL, LC_CTYPE, LANG alapján.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "A -k kapcsolóval a lehetséges ELÅTTE karakterkészletek felsorolásra " "kerülnek\n" "az adott UTÃNA karakterkészlethez, ahol mindkettÅ‘ táblázatos " "karakterkészlet,\n" "„ELÅ1:UTÃN1,ELÅ2:UTÃN2,...†formátumban, és az ELŠés UTÃN decimális " "számokként\n" "megadott kódok.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "A NYELV valamilyen programnyelv, lehet „câ€, „perl†vagy „poâ€; a „c†az " "alap-\n" "értelmezett.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "A KÉRÉS = ALKÉRÉS[,ALKÉRÉS]...; az ALKÉRÉS = KÓDOLÃS[..KÓDOLÃS]...\n" "A KÓDOLÃS = [KARAKTERKÉSZLET][/[FELSZÃN]]...; a KÉRÉS gyakran ELÅTTE..UTÃNA\n" "alakú, ahol az ELÅTTE és UTÃNA is karakterkészlet. A kihagyott " "KARAKTERKÉSZLET\n" "a megszokott karakterkészlettel egyenlÅ‘, a kihagyott [/FELÜLET]... a\n" "KARKÉSZLETBÅL következÅ‘ felületeket jelenti, az üres felületnévvel álló\n" "/ letiltja a felület használatát. Nézze meg a kézikönyvet is.\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Ha a -i és -p egyike sincs megadva, akkor a FÃJL hiányában a -p, egyébként a " "-i\n" "használata a feltételezett. Minden FÃJL önmagába kerül átkódolásra, az " "eredeti\n" "megsemmisül. Ha nincs megadva FÃJL, akkor szűrÅ‘ként működik, és a " "szabványos\n" "bemenetet kódolja át a szabványos kimenetre.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "A jel ismeretlen: „%sâ€" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "A sorozat nem egyértelmű: „%sâ€" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "A sorozat ismeretlen: „%sâ€" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "A nyelv nem egyértelmű: „%sâ€" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "A nyelv ismeretlen: „%sâ€" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "A formátum nem egyértelmű: „%sâ€" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "A formátum ismeretlen: „%sâ€" #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "Ãrta Francois Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Ez szabad szoftver; lásd a forrást a terjesztési feltételekért. Nincs\n" "garancia, még az eladhatóságra vagy egy adott célra való megfelelésre sem.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "A karakterkészlet ismeretlen vagy nem egyértelmű: „%sâ€" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Hiányzik egy kötelezÅ‘ argumentum" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "A kérés hibás: „%sâ€" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "%s átkódolása..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " kész\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " sikertelen: %s a(z) „%s..%s†lépésben\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s a(z) „%s..%s†lépésben" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s sikertelen: %s a(z) „%s..%s†lépésben" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "%s karakterkészlet már létezik és nem %s." #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "„%s†nem sorolható fel, nem érhetÅ‘ el név ehhez a karakterkészlethez" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Elnézést, nem érhetÅ‘ el név ehhez: „%sâ€" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "A „resurfacer†többször lett beállítva ehhez: „%sâ€" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Az „unsurfacer†többször lett beállítva ehhez: „%sâ€" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "A virtuális memória betelt" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "A(z) %3d és %3d kódok egyaránt %3d kódra változnak" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "Nincs átkódolható karakter ezzé: %3d" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Nem fordítható meg a megadott egy-az-egyhez tábla" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "„%s†diagnosztikájának követése ehhez: „%sâ€" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "A(z) %d. pár: <%3d, %3d> ütközik ezzel: <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Nem egészíthetÅ‘ ki a tábla az ismert párok halmazából" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Azonosság-újrakódolás, nem ér meg egy táblát" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Az átkódolás túl összetett egyetlen táblához" #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sMechanikusan előállított konverziós tábla a Free „%s†%s által" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sa következÅ‘ sorozathoz: %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Nincs nyomtatható táblázat" #: src/request.c:35 msgid "reversible" msgstr "visszafordítható" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s -> %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "bájt" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "változó" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Lehetetlen*" #: src/request.c:111 msgid "*mere copy*" msgstr "*egyszerű másolás*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "A virtuális memória betelt!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "A lépés inicializálása sikertelen" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "A lépés inicializálása sikertelen (feldolgozatlan kapcsolók)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Kérés: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Szűkítve erre: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Ismeretlen felületnév „%sâ€" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Nem lehetséges az átkódolás „%s†és „%s†között." #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "„..â€-t kell megadni a kérésben" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "A gyermekfolyamat várakozási állapota 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne leírás\n" "\n" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=pipe adatcsatornák használata az egymást követÅ‘ " #~ "lépésekhez\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe ugyanaz, mint a -i (ezen a rendszeren)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "A hibákat a címen jelentheti.\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "A szintaxis elavult, használja inkább ezt: „%sâ€" recode-3.7.15/po/it.po0000644000175000017500000004320014766021055010130 # PO FILE FOR GNU'S RECODE. # Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. # Lorenzo Cappelletti , 1999, 2000, 2001. # # table -> tabella # character set -> insieme di caratteri # charset -> charset # surface -> ? # to recode -> ricodificare # msgid "" msgstr "" "Project-Id-Version: GNU recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2001-07-01 09:41+02:00\n" "Last-Translator: Lorenzo Cappelletti \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: src/main.c:112 msgid "No error" msgstr "Nessun errore" #: src/main.c:115 msgid "Non canonical input" msgstr "Nessun input canonico" #: src/main.c:118 msgid "Ambiguous output" msgstr "Output ambiguo" #: src/main.c:121 msgid "Untranslatable input" msgstr "Input non traslabile" #: src/main.c:124 msgid "Invalid input" msgstr "Input non valido" #: src/main.c:127 msgid "System detected problem" msgstr "Rilevato problema di sistema" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Uso scorretto della libreria di ricodifica" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Bug di ricodifica interno" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "Si dovrebbe aver ricevuto una copia della GNU General Public License\n" "assieme a questo programma; in caso contrario, scrivere a Free Software\n" "Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Usare `%s %s' per ulteriori informazioni.\n" # I dislike "Libero `recode'" as tranlation # What does surface mean in this context? #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "`recode' gratuito converte file fra vari insiemi di caratteri e surface.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Uso: %s [OPZIONI]... [ [CHARSET] | RICHIESTA [FILE]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Se un'opzione lunga richiede necessariamente un argomento, allora essa\n" "è richiesta anche per l'opzione breve. Analogamente per gli argomenti\n" "opzionali.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Elenchi:\n" " -l, --list[=FORMATO] lista uno o tutti i charset e alias conosciuti\n" " -k, --known=COPPIE restringe i charset secondo le COPPIE " "conosciute\n" " -h, --header[=[LN/]NOME] scrive la tabella NOME sullo stdout usando LN,\n" " quindi esce\n" " -F, --freeze-tables riporta un modulo C contenente tutte le " "tabelle\n" " -T, --find-subsets riporta tutti i charset sottoinsiemi di altri\n" " charset\n" " -C, --copyright mostra le condizioni di Copyright e " "riproduzione\n" " --help mostra questo aiuto ed esce\n" " --version informazioni sulla versione ed uscita\n" #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Modi operativi:\n" " -v, --verbose spiega le sequenze dei passi e riporta i " "progressi\n" " -q, --quiet, --silent inibisce i messaggi di ricodifiche inreversibili\n" " -f, --force forza le ricodifiche anche quando non reversibili\n" " -t, --touch touch dei file ricodificati dopo la sostituzione\n" " -i, --sequence=files usa file intermedi per i passi sequenziali\n" " --sequence=memory usa buffer di memoria per i passi sequenziali\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Regolazioni fini:\n" " -s, --strict usa mappature strettamente conformi, anche con " "caratteri slegati\n" " -d, --diacritics converte solo segni diacritici o simili per HTML/" "LaTeX\n" " -S, --source[=LN] limita la ricodifica a stringhe e commenti come per " "LN\n" " -c, --colons usa i due punti al posto delle virgolette per le " "dieresi\n" " -g, --graphics approssima le regole IBMPC con grafica ASCII\n" " -x, --ignore=CHARSET ignora CHARSET quando sceglie un percorso di " "ricodifica\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "L'opzione -l senza FORMATO né CHARSET elenca i charset e le surface\n" "disponibili. FORMATO può essere `decimale'(d), `ottale'(o),\n" "`esadecimale'(h) o `pieno'(f) (oppure uno tra `dohf').\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "A meno che DEFAULT_CHARSET non sia specificato nell'ambiente, il CHARSET " "viene predefinito secondo la codifica locale, determinata da LC_ALL, " "LC_TYPE, LANG.\n" # I am not able to understand the logical structure of this sentence. #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Con -k, possibile prima, charset vengono listati per quelli dati dopo " "CHARSET,\n" "entrambi essendo charset tabulari, con COPPIE nella foram `BEF1:AFT1,BEF2:" "AFT2,...',\n" "dove BEF e AFT sono codici forniti come numeri decimali.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN è qualche lingua, può essere `c', `perl' o `po'; quella predefinita è " "`c'.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "RICHIESTA è SUBRICHIESTA[,SUBRICHIESTA]...; SUBRICHIESTA è\n" "CODIFICA[..CODIFICA]...; CODIFICA è [CHARSET][/[SURFACE]...;\n" "RICHIESTA spesso è simile a PRIMA..DOPO, essendo PRIMA e DOPO dei charset.\n" "Un CHARSET omesso implica il charset usuale; una [/SURFACE]... omessa\n" "implica le superfici del CHARSET; un / con un nome di surface vuoto\n" "significa nessuna surface. Vedere il manuale.\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Se non è dato -i né -p, si presume -p se FILE non è presente, altrimenti -" "i.\n" "Ogni FILE è ricodificato su se stesso, ditruggendo l'originale. Se non " "viene\n" "specificato nessun FILE, allora si comporta come un filtro ricodificando lo\n" "stdin sullo stdout.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Il simbolo `%s' è sconosciuto" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "La sequenza `%s' è ambigua" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "La sequenza `%s' è sconosciuta" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Il linguaggio `%s' è ambiguo" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Il linguaggio `%s' è sconosciuto" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Il formato `%s' è ambiguo" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Il formato `%s' è sconosciuto" #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "Scritto da Franc,ois Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Questo è software libero; vedere il sorgente per le condizioni sulla\n" "riproduzione. NON c'è garanzia; neppure di COMMERCIABILITÀ o IDONEITÀ\n" "AD UN PARTICOLARE SCOPO.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Il charset `%s' è sconosciuto o ambiguo" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Manca un argomento indispensabile" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "La richiesta `%s' è errata" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Sto ricodificando %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " fatto\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " fallito: %s al passo `%s..%s'\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s al passo `%s..%s'" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s fallito: %s al passo `%s..%s'" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Il charset %s esiste già e non è %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Non posso listare `%s', nessun nome disponibile per questo charset" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Ott Esa UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Spiacente, nessun nome disponibile per `%s'" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Il resurfacer è impostato piú di una volta per `%s'" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "L'unsurfacer è impostato piú di una volta per `%s'" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Memoria virtuale esaurita" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Entrambi i codici %3d e %3d si ricodificano in %3d" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "Nessun carattere si ricodifica in %3d" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Impossibile invertire la tabella uno-a-uno data" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Segue diagnostica da `%s' a `%s'" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "La coppia numero %d: <%3d, %3d> è in conflitto con <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Impossibile completare la tabella dall'insieme delle coppie conosciute" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Sto ricodificando nell'identità, tabella non significativa" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "La ricodifica è troppo complessa per una sola tabella" #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sTabella di conversione generata automaticamente dalla Free `%s' %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sper la sequenza %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Nessuna tabella da stampare" #: src/request.c:35 msgid "reversible" msgstr "reversibile" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s in %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "byte" # Chech out the meaning of the acronym #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "variabile" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Inraggiungibile*" #: src/request.c:111 msgid "*mere copy*" msgstr "*per sola copia*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Memoria virtuale esaurita!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Passo di inizializzazione fallito" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Passo di inizializzazione fallito (opzioni non processate)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Richiesta: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Ridotto a: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nome di surface non riconosciuta `%s'" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Nessuno modo per ricodificare da `%s' a `%s'" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Atteso `..' nella richiesta" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Lo stato di attesa del processo figlio è 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "UCS2 Mne Descrizione\n" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=pipe usa il sistema dei pipe per i passi " #~ "sequenziali\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe come -i (su questo sistema)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Segnalare i bug a .\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "La sintassi è sconsigliata, si preferisca `%s'" #~ msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" #~ msgstr "" #~ "Nessun CHARSET predefinito, definire DEFAULT_CHARSET nell'ambiente.\n" #~ msgid "Ambiguous sequence `%s'" #~ msgstr "Sequenza ambigua `%s'" #~ msgid "Unknown sequence `%s'" #~ msgstr "Sequenza sconosciuta `%s'" #~ msgid "Ambiguous language `%s'" #~ msgstr "Lingua ambigua `%s'" #~ msgid "Unknown language `%s'" #~ msgstr "Lingua sconosciuta `%s'" #~ msgid "Ambiguous format `%s'" #~ msgstr "Formato ambiguo `%s'" #~ msgid "Unknown format `%s'" #~ msgstr "Formato sconosciuto `%s'" #~ msgid "Erroneous request `%s'" #~ msgstr "Richiesta errata `%s'" recode-3.7.15/po/zh_CN.po0000644000175000017500000004062014766021055010520 # Simplified Chinese translation for recode. # Copyright (C) 2005 Free Software Foundation, Inc. # Meng Jie , 2005. # msgid "" msgstr "" "Project-Id-Version: recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2005-12-03 21:43+0800\n" "Last-Translator: Meng Jie \n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Poedit-Basepath: z:\\recode-3.6\n" #: src/main.c:112 msgid "No error" msgstr "没有错误" #: src/main.c:115 msgid "Non canonical input" msgstr "䏿­£è§„的输入" #: src/main.c:118 msgid "Ambiguous output" msgstr "有歧义的输出" #: src/main.c:121 msgid "Untranslatable input" msgstr "无法翻译的输入" #: src/main.c:124 msgid "Invalid input" msgstr "无效的输入" #: src/main.c:127 msgid "System detected problem" msgstr "系统问题" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "坹釿–°ç¼–ç åº“çš„ä½¿ç”¨ä¸æ­£ç¡®" #: src/main.c:133 msgid "Internal recoding bug" msgstr "å†…éƒ¨é‡æ–°ç¼–ç ç¼ºé™·" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "æ­¤ç¨‹åºæ˜¯è‡ªç”±è½¯ä»¶ï¼›æ‚¨å¯ä»¥åœ¨è‡ªç”±è½¯ä»¶åŸºé‡‘会å‘布的 GNU 通用公共许\n" "å¯è¯çš„æ¡æ¬¾ä¸‹é‡æ–°åˆ†å‘å’Œ(或)修改它;您å¯ä»¥é€‰æ‹©ä½¿ç”¨ GPL 第二版,\n" "或(æŒ‰ç…§æ‚¨çš„æ„æ„¿)任何更新的版本。\n" "\n" "该程åºåˆ†å‘的目的是为了其他人å¯ä»¥ä½¿ç”¨å®ƒï¼Œä½†æ˜¯æ²¡æœ‰ä»»ä½•æ‹…ä¿ï¼›ä¹Ÿæ²¡\n" "有对其适销性和æŸä¸€ç‰¹å®šç›®çš„下的适用性的担ä¿ã€‚请查阅 GNU 通用公\n" "共许å¯è¯æ¥èŽ·å¾—æ›´å¤šçš„ä¿¡æ¯ã€‚\n" "\n" "你应该已ç»è·Ÿæœ¬ç¨‹åºä¸€èµ·æ”¶åˆ°ä¸€ä»½ GNU 通用公共许å¯è¯ï¼›å¦‚果没有,\n" "请写信至:Free Software Foundation, Inc., \n" "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "请å°è¯•执行‘%s %s’以得到更多信æ¯ã€‚\n" #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "自由的‘recode’将文件在ä¸åŒçš„字符集和外在编ç é—´è½¬æ¢ã€‚\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "用法:%s [选项]... [ [字符集] | 请求 [文件]...]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "é•¿é€‰é¡¹å¿…é¡»å¸¦çš„å‚æ•°åœ¨ä½¿ç”¨ä¸Žä¹‹ç­‰ä»·çš„短选项时也是必须的。å¯é€‰å‚数亦是如此。\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "列表:\n" " -l,--list[=æ ¼å¼] 列出æŸä¸ªæˆ–所有已知的字符集和别å\n" " -k,--known=映射 仅列出匹é…已知“映射â€åˆ—表的字符集\n" " -h,--header[=[语言/]表å] åœ¨æ ‡å‡†è¾“å‡ºä¸Šè¾“å‡ºç¬¦åˆæŸè¯­è¨€è¯­æ³•的转æ¢è¡¨ï¼Œç„¶åŽé€€" "出\n" " -F,--freeze-tables 输出一个包括所有转æ¢è¡¨çš„ C 模å—\n" " -T,--find-subsets 报告所有是其他字符集å­é›†çš„字符集\n" " -C,--copyright 显示版æƒä¿¡æ¯å’Œå¤åˆ¶æ¡ä»¶\n" " --help 显示本帮助信æ¯åŽé€€å‡º\n" " --version 输出版本信æ¯åŽé€€å‡º\n" #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "æ“作模å¼ï¼š\n" " -v,--verbose æŠ¥å‘Šè½¬æ¢æ­¥éª¤åºåˆ—和过程\n" " -q,--quiet,--silent ä¸æŠ¥å‘Šä¸å¯é€†çš„釿–°ç¼–ç \n" " -f,--force 强制进行ä¸å¯é€†çš„釿–°ç¼–ç \n" " -t,--touch 在替æ¢ä¹‹åŽ touch 釿–°ç¼–ç çš„æ–‡ä»¶\n" " -i,--sequence=files 为系列转æ¢ä½¿ç”¨ä¸­é—´æ–‡ä»¶\n" " --sequence=memory 为系列转æ¢ä½¿ç”¨å†…存缓冲区\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "细节调整:\n" " -s,--strict å³ä½¿ä¸ºå¯æ”¾æ¾çš„字符也使用严格映射\n" " -d,--diacritics åªä¸º HTML/LaTeX 转æ¢å˜éŸ³è®°å·ç­‰\n" " -S,--source[=语言] 将釿–°ç¼–ç çš„范围é™åˆ¶åœ¨æŸç¼–程语言的字符串和注释中\n" " -c,--colons 使用冒å·è€Œä¸æ˜¯åŒå¼•å·æ¥è¡¨ç¤ºåˆ†éŸ³ç¬¦\n" " -g,--graphics 用 ASCII ç¬¦å·æ¨¡æ‹Ÿ IBMPC 标尺\n" " -x,--ignore=字符集 åœ¨é€‰æ‹©é‡æ–°ç¼–ç é€”径时忽略æŸå­—符集\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "选项 -l åŽå¦‚果没有指定“格å¼â€æˆ–“字符集â€ï¼Œåˆ™åˆ—出所有å¯ç”¨çš„字符集和外在编ç ã€‚\n" "“格å¼â€å¯ä»¥ä¸ºâ€˜decimal’ã€â€˜octal’ã€â€˜hexadecimal’或‘full’(或者‘dohf’\n" "中的任一个字æ¯)。\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "如果没有设置 DEFAULT_CHARSET 环境å˜é‡ï¼Œå­—符集默认为区域选项的编ç ï¼Œç”± " "LC_ALLã€\n" "LC_CTYPEã€LANG 决定。\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "使用 -k 时,目标字符集å¯èƒ½å¯¹åº”的所有的æºå­—符集都将列出,两者å‡ä¸ºè¡¨æ ¼åŒ–的字" "符\n" "集,“映射â€å…·æœ‰â€˜æº1:目标1,æº2:目标2,...’的形å¼ï¼Œå…¶ä¸­â€œæºxâ€å’Œâ€œç›®æ ‡xâ€å‡\n" "须以å进制数的形å¼ç»™å‡ºã€‚\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "â€œè¯­è¨€â€æ˜¯æŸç§ç¼–ç è¯­è¨€ï¼Œå¯ä»¥ä¸ºâ€˜c’ã€â€˜perl’或‘po’,‘c’为默认值。\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "â€œè¯·æ±‚â€æ ¼å¼ä¸ºâ€œå­è¯·æ±‚[,å­è¯·æ±‚]...â€ï¼›â€œå­è¯·æ±‚â€æ ¼å¼ä¸ºâ€œç¼–ç [..ç¼–ç ]...â€\n" "“编ç â€æ ¼å¼ä¸ºâ€œ[字符集][/[外在编ç ]]...â€ï¼›â€œè¯·æ±‚â€ä¸€èˆ¬æœ‰â€œæº..目的â€çš„å½¢å¼ï¼Œ\n" "“æºâ€å’Œâ€œç›®çš„â€å‡ä¸ºå­—符集å。如果çœç•¥â€œå­—符集â€ï¼Œåˆ™è¡¨ç¤ºé€šå¸¸çš„字符集;如果çœç•¥\n" "“[/外在编ç ]...â€åˆ™è¡¨ç¤ºâ€œå­—符集â€é»˜è®¤çš„外在编ç ï¼›åªç»™å‡ºâ€œ/â€è€Œåœ¨å…¶åŽä¸ç»™å‡ºä»»\n" "何外在编ç åˆ™è¡¨ç¤ºæ²¡æœ‰ä»»ä½•外在编ç ã€‚详情请å‚è§æ‰‹å†Œã€‚\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "如果没有给出 -i 或 -p,当命令行中有文件时使用 -p,å¦åˆ™ä½¿ç”¨ -i。\n" "为æ¯ä¸ªæ–‡ä»¶å°±åœ°é‡æ–°ç¼–ç ï¼Œä¸¢å¼ƒå…¶åŽŸå§‹å†…å®¹ã€‚å¦‚æžœæ²¡æœ‰åœ¨å‘½ä»¤è¡Œä¸­æŒ‡å®šæ–‡ä»¶ï¼Œ\n" "åˆ™å°†æ ‡å‡†è¾“å…¥çš„å†…å®¹é‡æ–°ç¼–ç ä¸ºæ ‡å‡†è¾“出。\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "符å·â€˜%s’未知" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "åºåˆ—‘%s’æ„义䏿˜Žç¡®" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "åºåˆ—‘%s’未知" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "语言‘%s’æ„义䏿˜Žç¡®" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "语言‘%s’未知" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "æ ¼å¼â€˜%s’æ„义䏿˜Žç¡®" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "æ ¼å¼â€˜%s’未知" #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "ç”± Francois Pinard 编写。\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "ç‰ˆæƒæ‰€æœ‰ (C) 1990,92,93,94,96,97,99 自由软件基金会。\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "æœ¬ç¨‹åºæ˜¯è‡ªç”±è½¯ä»¶ï¼›è¯·å‚看æºä»£ç çš„版æƒå£°æ˜Žã€‚æœ¬è½¯ä»¶ä¸æä¾›ä»»ä½•æ‹…ä¿ï¼›\n" "包括没有适销性和æŸä¸€ä¸“用目的下的适用性担ä¿ã€‚\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "字符集‘%s’未知或有歧义" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "缺少需è¦çš„傿•°" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "请求‘%s’有错误" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "釿–°ç¼–ç  %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " 完æˆ\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " 失败:%s 在步骤‘%s..%s’中\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s 在步骤‘%s..%s’中" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s 失败:%s 在步骤‘%s..%s’中" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "字符集 %s å·²å­˜åœ¨ä¸”å¹¶éž %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "无法列出‘%s’,此字符集没有å¯ç”¨çš„字符å" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "å å…« åå…­ UCS2 助记 %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "对ä¸èµ·ï¼Œâ€˜%s’没有å¯ç”¨çš„字符å" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "为‘%s’施加了多于一个的外在编ç " #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "为‘%s’去除了多于一个的外在编ç " #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "虚拟内存耗尽" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "ä»£ç  %3d å’Œ %3d éƒ½å°†è¢«é‡æ–°ç¼–ç ä¸º %3d" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "没有字符集å¯é‡æ–°ç¼–ç åˆ° %3d" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "无法求出给定的一一对应转æ¢è¡¨çš„逆" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "‘%s’到‘%s’的诊断信æ¯" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "第 %d å·æ˜ å°„:<%3d,%3d> 与 <%3d,%3d> 冲çª" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "无法从已知映射集中形æˆå®Œæ•´çš„转æ¢è¡¨" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "æ’ç­‰å˜æ¢ï¼Œä¸éœ€è¦è½¬æ¢è¡¨" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "釿–°ç¼–ç å¤ªè¿‡å¤æ‚,无法以一张转æ¢è¡¨è¡¨ç¤º" #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sConversion table generated mechanically by Free `%s' %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%s为转æ¢ç³»åˆ— %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "没有å¯ä»¥æ‰“å°çš„转æ¢è¡¨" #: src/request.c:35 msgid "reversible" msgstr "å¯é€†çš„" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s 到 %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "字节" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "å˜é‡" #: src/request.c:109 msgid "*Unachievable*" msgstr "*无法到达*" #: src/request.c:111 msgid "*mere copy*" msgstr "*ä»…å¤åˆ¶*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "虚拟内存耗尽ï¼" #: src/request.c:252 msgid "Step initialisation failed" msgstr "步骤åˆå§‹åŒ–失败" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "步骤åˆå§‹åŒ–失败(未处ç†çš„选项)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "请求:%s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "缩å‡åˆ°ï¼š%s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "无法识别的外在编ç â€˜%s’" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "没有从‘%sâ€™é‡æ–°ç¼–ç è‡³â€˜%s’的途径" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "è¯·æ±‚ä¸­è¦æœ‰â€˜..’" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "å­è¿›ç¨‹ç­‰å¾…状æ€ä¸º 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 助记 æè¿°\n" "\n" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr " -p,--sequence=pipe 为系列转æ¢ä½¿ç”¨ç®¡é“机制\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p,--sequence=pipe 在此系统下与 -i 等效\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "è¯·å‘ æŠ¥å‘Šç¨‹åºç¼ºé™·ã€‚\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "语法已过时,请改用‘%s’" recode-3.7.15/po/tr.gmo0000644000175000017500000001650114766021055010311 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€€‰Š ß•òu>h§ ¯»Ùèú2 3?7s-«.Ù"+H,c¦*¾é Mgz3ÃÌ*å)0Ct ‰•3¬à÷"" E;f¢»ÔÍ ¢Ã±Ý6«âö ô#1 6:. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2002-06-20 11:00EET Last-Translator: İrfan Macit Language-Team: Turkish Language: tr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. Uzun seçenekler için zorunlu olan argümanlar kısa seçenekler için de zorunludur. Aynı ÅŸey bütün argümanlar için geçerlidir. -l seçeneÄŸi, BİÇEM veya KARKÜME verilmezse mevcut karakter kümelerini listeler BİÇEM, `decimal' (onluk), `octal' (sekizlik), `hexadecimal' (onaltılık), `full' (tam) veya `dohf' seçeneklerinden birisi olabilir. İSTEK: ALTİSTEK,[ALTİSTEK]...; ALTİSTEK ise KODLAMA[..KODLAMA]... KODLAMA: [KARKÜME][/YÜZEY]]...; İSTEK genelde ÖNCE..SONRA biçeminde olur, ÖNCE ve SONRA karakter kümeleridir. BelirtilmemiÅŸ bir karakter kümesi öntanımlı karakter kümesinin kullanılacağına iÅŸaret eder. BelirtilmemiÅŸ [/YÜZEY]..., o KARKÜME için öntanımlı yüzeyin kullanılacağına iÅŸaret eder. Yalnız / kullanılır ve yüzey belirtilmezse, hiç yüzey kullanılmaz. Lütfen el kitabını inceleyin. Kullanım: %s [SEÇENEK]...[[KARKÜME] | İSTEK [DOSYA]... ] bitti %s'den %s'e%2$s.%3$s sırası için %1$s*Ulaşılamaz**yalnızca kopya*Belirsiz çıktıTablo bilinen çiftler kümesinden tamamlanamıyorVerilen birebir eÅŸlemeli tablo tersine çevrilemez`%s' listelenemiyor, bu karakter kümesi için isim yok%s karakter kümesi zaten mevcut ve %s deÄŸil`%s' karakter kümesi bilinmiyor veya belirsizAst iÅŸlem bekleme durumu: 0x%0.2xOnd Sek OnaltıUCS2 Mne %s İstekte `..' bekleniyordu`%s'den `%s'e durum bildirimleri inceleniyor`%s' biçemi belirsiz`%s' biçemi bilinmiyorBirebir yeniden kodlama, tabloya gerek yokİçsel yeniden kodlama hatasıGeçersiz girdiLN bir bilgisayar dilidir, `c', `perl' veya `po' olabilir; öntanımlı: `c' `%s' dili belirsiz`%s' dili bilinmiyorYeniden kodlama kitaplığı hatalı kullanılmışHata yokYazdırılacak tablo yok`%s'den `%s'e yeniden kodlamanın yolu yokAna biçem olmayan girdi%s yeniden kodlanıyor...Yeniden kodlama bir tablo için fazla karmaşık`%s' isteÄŸi hatalıİstek: %s Zorunlu argüman eksik`%s' için yüzeyleyici birden fazla defa atanmış`%s' sırası belirsiz`%s' sırası bilinmiyor%s'e küçüldü `%s' için hiç isim mevcut deÄŸilAdım baÅŸlangıcı baÅŸarısızAdım baÅŸlangıcı baÅŸarısız (iÅŸlenmemiÅŸ seçenekler)`%s' sembolü bilinmiyorSistem hata bulduBu bir serbest yazılımdır; kopyalama koÅŸulları için kaynak koduna bakınız. HİÇ BİR GARANTİSİ YOKTUR; SATILABİLİRLİĞİ veya HERHANGİ BİR AMACA UYGUNLUÄžU için dahi zımni bir garanti içermez. Daha fazla bilgi için '%s %s'. UCS2 Mne Açıklama EÄŸer DEFAULT_CHARSET çevre deÄŸiÅŸkeni atanmamışsa, KARKÜME yerel ayarlarına baÄŸlı kodlama olarak atanır ve LC_ALL, LC_CTYPE, LANG çevre deÄŸiÅŸkenlerinden etkilenir. Bilinmeyen yüzey adı `%s'`%s' için yüzey yokedici birden fazla defa atanmışÇevrilemeyen girdiSanal bellek tükendiSanal bellek tükendi!-k seçeneÄŸi ile, dönüşecek karakter kümeleri, dönüştürülecek karakter kümeleri ile birlikte ÇİFT'ler halinde listelenir: `ÖNC1:SON1,ÖNC2:SON2,...' ÖNC ve SON karakter kümesi isimleri, ondalık sayı halinde kodlardan oluÅŸur. baytgeri dönüşümlüucs2deÄŸiÅŸkenrecode-3.7.15/po/vi.gmo0000644000175000017500000001762014766021055010305 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€‹‰ŸµÉ^ä C P]wŸ>¿9þH81<³3ð'$'L<t±ÆDà %!FfhÏé8@Q2q-¤Ò;í#)M!c=…ÃÖî(&.CU™·¹Ö9ÊÄä#©6Í&+Hýech} ‚:. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2005-02-20 18:44+0950 Last-Translator: Clytie Siddall Language-Team: Vietnamese Language: vi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. Nếu tùy chá»n dài phải có đối số thì tùy chá»n ngắn thích hợp cÅ©ng vậy. Äối vá»›i đối số tùy chá»n thì cách giống nhau. Khi tùy chá»n -l không có DẠNG hay BỘ Kà Tá»° thi ghi danh sách tất cả bá»™ ký tá»± và mặt sẵn sàng. DẠNG là `decimal' (thập phân), `octal' (bát phân), `hexadecimal' (thập lục phân) hay `full' (toàn) (hay má»™t cá»§a chữ đầu `dohf'). LỜI_YÊU_CẦU là PHỤ_LỜI_YÊU_CẦU[,PHỤ_LỜI_YÊU_CẦU]...; PHỤ_LỜI_YÊU_CẦU là BIÊN_Mà [..BIÊN_MÃ]... BIÊN_Mà là [BỘ_KÃ_Tá»°][/[MẶT]]...; LỜI_YÊU_CẦU thưá»ng hình như TRƯỚC..SAU, mà cả hai TRƯỚC và SAU là bô ký tá»±. Khi không nhập BỘ_KÃ_Tá»° nên sá»­ dụng bá»™ ký tá»± thưá»ng; khi không nhập [/MẶT]... nên sá»­ dụng những mặt ngụ ý cho BỘ_KÃ_Tá»°; ký tá»± / có tên mặt trống có nghÄ©a là không có mặt nào. Hãy xem sổ hướng dẫn. Cách sá»­ dụng: %s [TÙY_CHỌN]... [ [BỘ_KÃ_Tá»°] | LỜI_YÊU_CẦU [TẬP_TIN]... ] xong rồi %s thành %s%sđối vá»›i dãy %s.%s*Không xong đươc**chỉ bản sao*Dữ liệu xuất là mÆ¡ hồKhông thể xong tạo bảng từ bá»™ cặp được biếtKhông đảo được bảng má»™t-đối-má»™t đã choKhông ghi `%s' được vì không có tên nào cho bá»™ ký tá»± nàyBá»™ ký tá»± %s tồn tại rồi, không là %sBá»™ ký tá»± `%s' là chưa được biệt hoặc mÆ¡ hồTrạng thái Ä‘á»i cá»§a xá»­ lý con là 0x%0.2xHệ2 Hệ8 Hệ16 UCS2 Nhá»› %s Äang ngá» `..' trong lá»i yêu cầuÄang theo phương pháp chẩn Ä‘oán cho `%s' đến `%s'Dạng `%s' mÆ¡ hồChưa biết dạng `%s' Việc mã hóa lại chỉ giống hệt, không cần bảng toànLá»—i mã hóa lại ná»™i bá»™Dữ liệu gõ không hợp lệLN hay NGÔN_NGá»® là má»™t ngôn ngữ, có thể `c', `perl' hay `po'; còn `c' là mặc định. Ngôn ngữ `%s' mÆ¡ hồChưa biết ngôn ngữ `%s'Không sá»­ dụng thư viện mã hóa lại cho đúngKhông có lá»—iKhông có bảng nào để inKhông có cách mã hóa lại tư `%s' sang `%s'Dữ liệụ gõ không đúng tiêu chuẩnÄang mã hóa lại %s...Việc mã hóa lại quá phức tạp đối vá»›i bảngLá»i yêu cầu `%s' không đúngLá»i yêu cầu: %s Thiếu đốí số bắt buá»™cÄã lập việc tạo mặt lại hÆ¡n má»™t lần cho `%s'Dãy `%s' mÆ¡ hồChưa biết dãy `%s' Äã co lại cho: %s Tiếc là không có tên nào cho `%s'Không khởi động bước đượcKhông khởi động bước được (chưa xá»­ lý tùy chá»n)Chưa biết ký hiệu `%s' Hệ thống má»›i gặp lá»—iÄây là phần má»m tá»± do; hãy xem mã nguồn để thấy Ä‘iá»u kiện sao chép. Không bảo đảm gì cả, dù khả năng bán hay khả năng làm việc dứt khoát. Thá»­ lệnh `%s %s' để tìm thấy thông tin thêm. UCS2 Nhá»› Mô tả Nếu chưa lập BỘ_KÃ_Tá»°_MẶC_ÄỊNH trong môi trưá»ng thì LC_ALL, LC_CTYPE, LANG quyết định biên mã phụ thuá»™c vào miá»n địa phương, là BỘ_KÃ_Tá»° mặc định Chưa chấp nhận tên mặt `%s'Äã lập việc bá» mặt hÆ¡n má»™t lần cho `%s'Dữ liệu gõ không dịch đượcHết bá»™ nhá»› ảo rồìHết bá»™ nhá»› ảo rồi.Có thể sá»­ dụng tùy chá»n -k trước khi ghi danh sách bá»™ ký tá»± sau BỘ_KÃ_Tá»°, cả hai bá»™ ký tá»± ấy có dạng bảng, có má»i đôi dạng `BEF1:AFT1,BEF2:AFT2,...' và cả hai BEF và AFT là mã dạng số thập phân. bytecó thể hoàn tácucs2biến đổirecode-3.7.15/po/de.gmo0000644000175000017500000002340214766021055010252 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“ᜨ~·' ßÐí³¾:r?­í ö/1 DQbPvBÇS 1^0*Á5ì"#@;d ½8Ù.fA¨Æ-ã" 4 @ 7Y ‘ 8¨ Ká -!9G!! Ÿ!¬!3Ê!þ!"9"=M"%‹"@±"ò"(#ý7#'5$]$y$#%3;%o%‹%¤%é¾%<¨&å& ê&ô&ù&+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: recode 3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2019-05-24 13:35+0200 Last-Translator: Mario Blättermann Language-Team: German Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Lokalize 19.04.1 Jede DATEI wird bei mit der umkodierten Datei überschrieben. Wenn keine DATEI angegen ist, wird die Standardeingabe umkodiert und auf der Standardausgabe ausgegeben. Wenn eine Option ein Argument zwingend braucht, gilt das unabhängig davon, ob die Kurz- oder Langschreibweise der Option benutzt wird. Entsprechendes gilt für optionale Argumente. Funktionsmodi: -v, --verbose Reihenfolge der Umkodierungsschritte und Fortschritt anzeigen -q, --quiet, --silent Keine Meldungen über nicht umkehrbare Umkodierungen -f, --force Umkodierung vornehmen, auch wenn sie nicht umkehrbar ist -t, --touch Nach der Umkodierung ein »touch« auf die umkodierte Datei ausführen -i, -p, --sequence=STRATEGIE nur zwecks Abwärtskompatibilität, wird ignoriert Die Option -l ohne FORMAT und ZEICHENSATZ listet alle Zeichensätze und -formate auf. FORMAT ist »decimal«, »octal«, »hexadecimal« oder »full« (können durch den Anfangsbuchstaben abgekürzt werden) ANFRAGE ist UNTERANFRAGE[,UNTERANFRAGE]…; UNTERANFRAGE ist KODIERUNG[..KODIERUNG]… KODIERUNG ist [ZEICHENSATZ][/[SURFACE]]…; ANFRAGE ist meistens VORHER..NACHHER, wobei VORHER und NACHHER Zeichensätze sind. Ohne ZEICHENSATZ wird der übliche Zeichensatz benutzt; ohne [/SURFACE]… wird das für ZEICHENSATZ übliche Format angenommen; ein / ohne Angabe eines Formats heißt, dass kein Format angenommen wird. Siehe Anleitung. Melden Sie Fehler auf https://github.com/rrthomas/recode Aufruf: %s [OPTION]… [ [ZEICHENSATZ] | ANFRAGE [DATEI]… ] fertig %s nach %s%sKonvertierung automatisch generiert von %s %s%sfür Folge %s.%s*unmöglich**einfache Kopie*Mehrdeutige AusgabeDie Tabelle aus der Menge der bekannten Paare kann nicht vervollständigt werdenDie gegebene »Eins-zu-Eins«-Tabelle kann nicht invertiert werden»%s« kann nicht angezeigt werden, keine Namen für diesen Zeichensatz verfügbarZeichensatz %s existiert bereits und ist nicht %sZeichensatz »%s« ist unbekannt oder zweideutigWartezustand des Kindprozesses ist 0x%0.2xDie Codes %3d und %3u werden beide zu %3d konvertiertDec Oct Hex UCS2 Mne %s In der Anfrage wird »..« erwartetFolgende Diagnose für Konvertierung von »%s« nach »%s«Format »%s« ist zweideutigFormat »%s« ist unbekanntUmkodierung ohne Änderung, zu trivial für eine TabelleInterner UmkodierungsfehlerUngültige EingabeLN ist eine Programmiersprache, z.B. »c«, »perl« oder »po«, wobei »c« die Voreinstellung ist. Sprache »%s« ist zweideutigSprache »%s« ist unbekanntFalsche Benutzung der Umkodierungs-BibliothekKein Zeichen wird zu %3u umkodiertKein FehlerKeine Tabelle auszugebenKeine Möglichkeit, von »%s« nach »%s« umzukodierenKeine gültige EingabePaar Nr. %u: <%3d, %3d> steht in Konflikt mit <%3d, %3d>Recode konvertiert Dateien zwischen diversen Zeichensätzen und -formaten. »%s« wird umkodiert …Umkodierung ist für eine einfache Tabelle zu kompliziertAnfrage »%s« ist fehlerhaftAnfrage: %s Erforderliches Argument fehlt»Resurfacer« für »%s« mehr als einmal gesetzt.Abfolge »%s« ist zweideutigAbfolge »%s« ist unbekanntGeschrumpft zu: %s Tut mir leid, aber es sind für »%s« keine Namen verfügbarSchrittinitialisierung fehlgeschlagenSchrittinitialisierung fehlgeschlagen (nicht beachtete Optionen)Symbol »%s« ist unbekanntDas System ist auf ein Problem gestoßenDieses Programm ist freie Software; die genauen Nutzungsbedingungen sind der Datei »COPYING« in den Quellen zu entnehmen. Es wird keinerlei Gewährleistung übernommen; auch nicht für gewerbliche Nutzbarkeit oder Tauglichkeit zu einem anderen Zweck. »%s %s« zeigt weitere Informationen. UCS2 Mne Beschreibung Wenn die Umgebungsvariable DEFAULT_CHARSET nicht gesetzt ist, gilt für ZEICHENSATZ die Locale-abhängiges Kodierung, festgelegt von LC_ALL, LC_CTYPE, LANG. Unbekannter »surface«-Name »%s«»Unsurfacer« für »%s« mehr als einmal gesetzt.Nicht übersetzbare EingabeVirtueller Speicher vollVirtueller Speicher voll!Mit »-k« werden mögliche »Vorher«-Zeichensätze für den »Nachher«-ZEICHENSATZ ausgegeben, mit PAAREn der Form »VOR1:NACH1,VOR2:NACH2,…«, wobei die VORs und NACHs Codes sind. Alle Codes werden als Dezimalzahlen angegeben. Geschrieben von François Pinard . byteumkehrbarucs2variabelrecode-3.7.15/po/LINGUAS0000644000175000017500000000014614574045572010212 be ca cs da de el eo es fi fr ga gl he hr hu id it nb nl pl pt pt_BR ro ru sk sl sr sv tr uk vi zh_CN recode-3.7.15/po/da.po0000644000175000017500000004057014766021054010106 # Danish message catalog for GNU recode. # Copyright (C) 1997 Free Software Foundation, Inc. # Niels Kristian Bech Jensen , 1997-2000. # Keld Simonsen , 2001. # # Reviewed: 2000-09-09: byrial@image.dk # msgid "" msgstr "" "Project-Id-Version: recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2001-09-12 11:05+02:00\n" "Last-Translator: Niels Kristian Bech Jensen \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: src/main.c:112 msgid "No error" msgstr "Ingen fejl" #: src/main.c:115 msgid "Non canonical input" msgstr "Unormale inddata" #: src/main.c:118 msgid "Ambiguous output" msgstr "Flertydige uddata" #: src/main.c:121 msgid "Untranslatable input" msgstr "Uoversættelige inddata" #: src/main.c:124 msgid "Invalid input" msgstr "Ugyldige inddata" #: src/main.c:127 msgid "System detected problem" msgstr "Systemet fandt et problem" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Misbrug af omkodningsbibliotek" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Intern omkodningsfejl" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Dette program er fri software; du mÃ¥ redistribuere det og/eller modificere\n" "det under betingelserne givet i GNU General Public License som publiceret " "af\n" "Free Software Foundation; enten version 2, eller (efter dit valg) en senere\n" "version.\n" "\n" "Dette program distribueres i hÃ¥bet om, at det vil være nyttigt, men UDEN\n" "NOGEN GARANTI; end ikke en underforstÃ¥et garanti for SALGBARHED eller\n" "ANVENDELIGHED TIL ET GIVET FORMÃ…L. Se GNU General Public License for\n" "flere detaljer.\n" "\n" "Du skulle have modtaget en kopi af GNU General Public License sammen med\n" "dette program; hvis ikke, sÃ¥ skriv til Free Software Foundation, Inc.,\n" "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Prøv '%s %s' for mere information.\n" #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "Fri 'recode' konverterer filer mellem forskellige tegnsæt og indpakninger.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Brug: %s [TILVALG]... [ [TEGNSÆT] | FORESPØRGSEL [FIL]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Hvis et langt tilvalg viser et argument som obligatorisk, sÃ¥ er det ogsÃ¥\n" "obligatorisk for det tilsvarende korte tilvalg. PÃ¥ samme mÃ¥de for valgfri\n" "argumenter.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Lister:\n" " -l, --list[=FORMAT] vis liste over et eller alle kendte tegnsæt\n" " -k, --known=PAR begræns tegnsæt til liste af kendte PAR\n" " -h, --header[=[SPR/]NAVN] skriv tabel NAVN til std-ud i SPR og afslut\n" " -F, --freeze-tables udskriv et C-modul indeholdende alle tabeller\n" " -T, --find-subsets find alle tegnsæt, der er delmængder af andre\n" " -C, --copyright vis copyright- og kopieringsbetingelser\n" " --help vis denne hjælp og afslut\n" " --version vis versionsnummer og afslut\n" #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "VirkemÃ¥der:\n" " -v, --verbose vis rækkefølgen af gennemløb, og rapportér " "fremskridt\n" " -q, --quiet, --silent udelad meddelelser om irreversible omkodninger\n" " -f, --force gennemtving omkodninger, selv hvis de ikke er\n" " reversible\n" " -t, --touch giv den omkodede fil system-urets tid\n" " -i, --sequence=files brug midlertidige filer mellem gennemløbene\n" " --sequence=memory brug hukommelsesbuffere mellem gennemløbene\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Finjustering:\n" " -s, --strict brug kun nøjagtige tegnsæt selvom der mistes tegn\n" " -d, --diacritics omkod kun diakritiske/specielle tegn i HTML/LaTeX\n" " -S, --source[=SPR] begræns omkodning til strenge og kommentarer som\n" " for SPR\n" " -c, --colons brug koloner i stedet for anførselstegn som trema " "(¨)\n" " -g, --graphics tilnærm IBMPC linie- og kassetegn med ASCII-grafik\n" " -x, --ignore=TEGNSÆT ignorér TEGNSÆT nÃ¥r en omkodningsrute vælges\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Tilvalg -l uden FORMAT eller TEGNSÆT viser en liste over alle tegnsæt og\n" "indpakninger. FORMAT er et af ordene 'decimal', 'octal', 'hexadecimal' " "eller\n" "'full' (eller et af bogstaverne d, o, h eller f).\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Med mindre DEFAULT_CHARSET er angivet i miljøet, er\n" "Standard TEGNSÆT det lokaleafhængige tegnsæt, bestemt ud fra LC_ALL, " "LC_CTYPE og LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Med -k vises en liste over mulige før-tegnsæt for det givne efter-TEGNSÆT,\n" "begge tabellariske tegnsæt, med PAR af typen 'FØR1:EFTER1,FØR2:EFTER2,...'\n" "hvor FØR'er og EFTER'e er givet som decimale tal.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "SPR er et programmeringssprog, f.eks. 'c', 'perl' eller 'po'; 'c' er " "standard.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "FORESPØRGSEL er UNDERFORESPØRGSEL[,UNDERFORESPØRGSEL]...; UNDERFORESPØRGSEL " "er\n" "INDPAKNING[..INDPAKNING]...; INDPAKNING er [TEGNSÆT][/[INDPAKNING]]...\n" "FORESPØRGSEL har ofte formen FØR..EFTER, hvor FØR og EFTER er tegnsæt.\n" "Hvis et TEGNSÆT udelades, anvendes det normale tegnsæt; hvis [/" "INDPAKNING]...\n" "udelades, anvendes den normale pakning af TEGNSÆT; / uden navnet pÃ¥ en\n" "indpakning betyder ingen indpakninger. Se manualen.\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Hvis hverken -i eller -p er valgt, bruges -p hvis ingen FIL, ellers -i.\n" "Hver FIL bliver omkodet oven i sig selv og overskriver originalen. Hvis " "ingen\n" "FIL er valgt, er programmet et filter, der omkoder fra std-ind til std-ud.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Symbol '%s' er ukendt" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Sekvens '%s' er flertydig" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Sekvens '%s' er ukendt" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Sprog '%s' er flertydigt" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Sprog '%s' er ukendt" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Format '%s' er flertydigt" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Format '%s' er ukendt" #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "Skrevet af François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Ophavsret (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Dette er fri software; se kopieringsbetingelserne i kildeteksten. Der gives\n" "INGEN garanti; end ikke for SALGBARHED eller ANVENDELIGHED TIL NOGET " "FORMÃ…L.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Tegnsæt '%s' er ukendt eller flertydigt" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Krævet argument mangler" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Forespørgsel '%s' er fejlagtig" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Omkoder %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " færdig\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " fejlede: %s i trin '%s..%s'\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s i trin '%s..%s'" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s fejlede: %s i trin '%s..%s'" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Tegnsæt %s findes allerede og er ikke %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Kan ikke vise '%s', ingen navne tilgængelige for dette tegnsæt" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Okt Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Beklager, ingen navne tilgængelige for '%s'" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Genindpakker indstillet flere gange for '%s'" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Udpakker indstillet flere gange for '%s'" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Virtuel hukommelse opbrugt" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Tegnkoderne %3d og %3d omkodes begge til %3d" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "Ingen tegn omkodes til %3d" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Kan ikke invertere denne en-til-en tabel" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Følgende fejl er for '%s' til '%s'" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Par nr. %d: <%3d, %3d> er i konflikt med <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Kan ikke fuldende tabellen ud fra mængden af kendte par" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Triviel omkodning, ikke værd at bruge en tabel" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Omkodningen er for kompleks for en simpel tabel" #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sOmkodningstabellen er genereret automatisk af Fri '%s' %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sfor sekvensen %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Ingen tabel at udskrive" #: src/request.c:35 msgid "reversible" msgstr "reversibel" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s til %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "byte" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "variabel" #: src/request.c:109 msgid "*Unachievable*" msgstr "*UopnÃ¥elig*" #: src/request.c:111 msgid "*mere copy*" msgstr "*bare kopi*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Virtuel hukommelse opbrugt!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Trinopstart fejlede" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Trinopstart fejlede (ubearbejdede tilvalg)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Forespørgsel: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Formindsket til: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Ukendt indpakningsnavn '%s'" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Umuligt at omkode fra '%s' til '%s'" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Forventer '..' i forespørgsel" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Underprocessens ventestatus er 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mnem Beskrivelse\n" "\n" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=pipe brug pibe-mekanismen mellem gennemløbene\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe samme som -i (pÃ¥ dette system)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Rapportér fejl til .\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Forældet syntaks, brug hellere '%s'" recode-3.7.15/po/el.gmo0000644000175000017500000002071314766021055010264 Þ•2¬C<HI–Ú|q9î(/8M \h-y$§5Ì'$*Om&‡$®Ó éH÷@ [ d "v ™ ­ (¼ å &ò  "( K 0f — —¯ "G j … &¤ Ë à ù Ô è í ø ý € F‡Îvéj` Ë Øã9iSI½¥`­l{/™AÉM *Y „€¥8&_5yK¯4û0`P±‹ÃOZm7È|9}C·Sû!OBq‰´*>1i2›ÈΗ!œ!³!¸! ($ ) 2#1%0." *&+,!/ ' - If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Identity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Misuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest: %s Resurfacer set more than once for `%s'Shrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)System detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: GNU recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2008-02-13 01:30+0000 Last-Translator: Simos Xenitellis Language-Team: Greek Language: el MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit X-Bugs: Report translation errors to the Language-Team address. Αν μια μακÏά επιλογή αναφέÏει μια παÏάμετÏο σαν υποχÏεωτική, τότε είναι υποχÏεωτική και για την αντίστοιχη σÏντομη επιλογή επίσης. Το ίδιο και για τις Ï€ÏοαιÏετικές παÏαμέτÏους. Η επιλογή -l χωÏίς ΜΟΡΦΗ, οÏτε ΠΙÎΧΑΡ, απαÏιθμεί τους διαθέσιμους πίνακες χαÏακτήÏων και επιφάνειες. ΜΟΡΦΗ είναι `decimal', `octal', `hexadecimal' ή `full' (ή ένα από τα `dohf'). ΑΙΤΗΣΗ είναι ΥΠΟΑΙΤΗΣΗ[,ΥΠΟΑΙΤΗΣΗ]...· ΥΠΟΑΙΤΗΣΗ είναι ΚΩΔΙΚΟΠΟΙΗΣΗ[...ΚΩΔΙΚΟΠΟΙΗΣΗ]... ΚΩΔΙΚΟΠΟΙΗΣΗ είναι [ΠΙÎΧΑΡ][/[ΕΠΙΦΑÎΕΙΑ]]...· ΑΙΤΗΣΗ συνήθως μοιάζει με ΠΡΟΗΓΟΥΜΕÎΟ...ΕΠΟΜΕÎΟ, με ΠΡΟΗΓΟΥΜΕÎΟ και ΕΠΟΜΕÎΟ να είναι πίνακες χαÏακτήÏων. Ένας ΠΙÎΧΑΡ που έχει παÏαληφθεί, υποδηλώνει το συνήθες πίνακα χαÏακτήÏων· ένα [/ΕΠΙΦΑÎΕΙΑ]... που έχει παÏαληφθεί, σημαίνει τις υποδηλωμένες επιφάνειες του ΠΙÎΧΑΡ ένα / χωÏίς όνομα επιφάνειας σημαίνει χωÏίς καθόλου επιφάνειες. Κοιτάξτε το εγχειÏίδιο. ΧÏήση: %s [ΕΠΙΛΟΓΗ]... [ [ΣΥÎΟΛΟΧΑΡΑΚΤΉΡΩÎ] | ΑΙΤΗΣΗ [ΑΡΧΕΙΟ]... έγινε %s σε %s%sγια διαδοχή %s.%s*Μη κατοÏθωτό**απλή αντιγÏαφή*Ασαφής έξοδοςΑδυναμία συμπλήÏωσης πίνακα από το σÏνολο γνωστών ζευγώνΑδυναμία αντιστÏοφής δοθέντος 1-1 πίνακαΑδυναμία εμφάνισης του `%s', δεν υπάÏχουν ονόματα διαθέσιμα για αυτόν τον πίνακα χαÏακτήÏωνΟ πίνακας χαÏακτήÏων %s υπάÏχει ήδη και δεν είναι το %sΗ κατάσταση παÏαμονής της θυγατÏικής διεÏγασίας είναι 0x%0.2xDec Oct Hex UCS2 Mne %s Αναμένεται `..' στην αίτησηΑκολουθοÏν διαγνωστικά για `%s' σε `%s'Μηδαμηνή μετατÏοπή, δεν χÏειάζεται πίνακαΕσωτεÏικό σφάλμα (recoding)Μη έγκυÏη είσοδοςLN είναι μια γλώσσα, μποÏεί να είναι `c', `perl' ή `po'· Ï€Ïοεπιλογή είναι το `c'. Κακή χÏήση της βιβλιοθήκης recodeΚανένα σφάλμαΚανένας πίνακας για εκτÏπωσηΚανένας Ï„Ïόπος να μετατÏαπεί από `%s' σε `%s'Μη κανονικοποιημένη είσοδοςΜετατÏοπή του %s...Η μετατÏοπή είναι Ï€Î¿Î»Ï Ï€ÎµÏίπλοκη για ένα μόνο πίνακαΑίτηση: %s Ο επανατοποθετητής επιφάνειας έχει τεθεί πεÏισσότεÏο από μια φοÏά για το `%s'ΣυÏÏίκνωση σε %s Συγνώμη, δεν υπάÏχουν διαθέσιμα ονόματα για το `%s'Το βήμα αÏχικοποίησης απέτυχεΤο βήμα αÏχικοποίησης απέτυχε (επιλογές που δεν έχουν επεξεÏγαστεί)Το σÏστημα διαπίστωσε Ï€ÏόβλημαΑυτό είναι ελεÏθεÏο λογισμικό· δείτε το πηγαίο κώδικα για τους κανόνες αντιγÏαφής. ΔΕΠυπάÏχει εγγÏηση· οÏτε ακόμα για ΧΡΗΣΙΜΟΤΗΤΑ ή ΚΑΤΑΛΛΗΛΟΤΗΤΑ ΓΙΑ ΕÎΑ ΣΥΓΚΕΚΡΙΜΕÎΟ ΣΚΟΠΟ. Δοκιμάστε `%s %s' για πεÏισσότεÏες πληÏοφοÏίες. UCS2 Mne ΠεÏιγÏαφή Μη αναγνωÏίσημο όνομα επιφάνειας `%s'Ο αντιτοποθετητής επιφάνειας έχει τεθεί πεÏισσότεÏο από μια φοÏά για το `%s'Μη μεταφÏάσιμη είσοδοςΗ ιδεατή μνήμη εξαντλήθηκεΗ ιδεατή μνήμη εξαντλήθηκε!Με -k, πιθανοί Ï€ÏοηγοÏμενοι πίνακες χαÏακτήÏων εμφανίζονται για το δοθέν επόμενο πίνακα χαÏακτήÏων (CHARSET), όντας και τα δÏο σε μοÏφή πεδίων, σε ΖΕΥΓΗ της μοÏφής `ΠΡΟΗΓ1:ΕΠΟΜΕÎ1,ΠΡΟΗΓ1:ΕΠΟΜΕÎ2,...' και τα ΠΡΟΗΓ και ΕΠΟΜΕÎ, όντας κωδικοί, δίνονται ως αÏιθμοί. byteαντιστÏεπτόucs2μεταβλητήrecode-3.7.15/po/vi.po0000644000175000017500000004406714766021055010146 # Vietnamese translation for recode-3.6. # Copyright (C) 2005 Free Software Foundation, Inc. # Clytie Siddall , 2005. # msgid "" msgstr "" "Project-Id-Version: recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2005-02-20 18:44+0950\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: src/main.c:112 msgid "No error" msgstr "Không có lá»—i" #: src/main.c:115 msgid "Non canonical input" msgstr "Dữ liệụ gõ không đúng tiêu chuẩn" #: src/main.c:118 msgid "Ambiguous output" msgstr "Dữ liệu xuất là mÆ¡ hồ" #: src/main.c:121 msgid "Untranslatable input" msgstr "Dữ liệu gõ không dịch được" #: src/main.c:124 msgid "Invalid input" msgstr "Dữ liệu gõ không hợp lệ" #: src/main.c:127 msgid "System detected problem" msgstr "Hệ thống má»›i gặp lá»—i" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Không sá»­ dụng thư viện mã hóa lại cho đúng" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Lá»—i mã hóa lại ná»™i bá»™" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Chương trình này là phần má»m tá»± do; bạn có thể phân phối và/hay sá»­a đổí\n" "nó vá»›i Ä‘iá»u kiện cua Quyá»n Công Chung Gnu (GPL) như được xuất do\n" "Free Software Foundation; hoặc phiên bản 2, hoặc (tùy chá»n)\n" "bất cứ phiên bản sau nào.\n" "\n" "Chúng tôi phân phối chương trình này vì mong nó có ích, nhưng\n" "không bảo đảm gì cả, không bảo đảm má»™t cách ngụ ý\n" "khả năng bán hay khả năng làm việc dứt khoát. Hãy xem\n" "Quyá»n Công Chung Gnu để tim thấy chi tiết thêm.\n" "\n" "Bạn nên được nhận má»™t bản Quyá»n Công Chung Gnu vá»›i\n" "chương trình này; nếu không thì hãy viết thư cho Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA (Mỹ).\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Thá»­ lệnh `%s %s' để tìm thấy thông tin thêm.\n" #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "Chương trình `recode' (mã hóa lại) tá»± do thì chuyển đổi tập tin giữa nhiá»u " "bá»™ ký tá»± và mặt khác nhau.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Cách sá»­ dụng: %s [TÙY_CHỌN]... [ [BỘ_KÃ_Tá»°] | LỜI_YÊU_CẦU [TẬP_TIN]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Nếu tùy chá»n dài phải có đối số thì tùy chá»n ngắn thích hợp cÅ©ng vậy.\n" "Äối vá»›i đối số tùy chá»n thì cách giống nhau.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Danh sách:\n" " -l, --list[=DẠNG] _ghi danh sach_ má»™t hay tất cả bá»™ ký tá»± và biệt " "hiệu được biết\n" " -k, --known=CẶP hạn chế bá»™ ký tá»± theo danh sách CẶP _được biết_\n" " -h, --header[=[NGÔN_NGá»®/]TÊN] ghi TÊN bảng ra thiết bị xuất chuẩn bằng " "sá»­ dụng ngôn ngữ ấy rồi thoát (_đầu Ä‘á»_)\n" " -F, --freeze-tables ghi ra mô-Ä‘un C chứa tất cả _bảng_ (_làm đông " "đặc_)\n" " -T, --find-subsets thông báo tât cả bá»™ ký tá»± là _nhóm phụ_ cá»§a bá»™ " "khác (_tìm_)\n" " -C, --copyright hiển thị các Ä‘iá»u kiện _bản quyá»n_ và sao chép\n" " --help hiển thị _trợ giúp_ này rồi thoát\n" " --version xuất thông tin _phiên bản_ rồi thoát\n" #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Chế độ thi hành:\n" " -v, --verbose giải thích dãy bước và thông báo tiến trình (_chi " "tiết_)\n" " -q, --quiet, --silent thu hồi các thông Ä‘iệp vá» việc mã hóa lại không " "hoàn tác (_im_)\n" " -f, --force _buá»™c_ tất cả việc mã hóa lại ngay cả khi không " "thể hoàn tác\n" " -t, --touch _sá»_ má»i tập tin được mã hóa lại sau khi thay thế\n" " -i, --sequence=files sá»­ dụng _tâp tin_ trung cấp cho việc _sắp xếp_ \n" " --sequence=memory sá»­ dụng bá»™ đệm _nhá»›_ cho việc _sắp xếp_\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Äiá»u hưởng tinh:\n" " -s, --strict sá»­ dụng ánh xạ _chặt chẽ_, ngay cả ký tá»± phóng\n" " -d, --diacritics chuyển đổi chỉ _dấu phụ_ hay Ä‘iá»u như nhau đối vá»›i " "HTML/LaTeX\n" " -S, --source[=NGÔN_NGá»®] hạn chế việc ma hóa lại nên chỉ xá»­ lý chuá»—i và " "chú thích như ngôn ngữ ấy (_nguồn_)\n" " -c, --colons sá»­ dụng _dấu hai chấm_ thay thế dấu nháy kép cho " "dấu tách đôi\n" " -g, --graphics ước các thước Ä‘o IBMPC bằng _đồ há»a_ ASCII\n" " -x, --ignore=BÔ_KÃ_Tá»° _bá» qua_ bá»™ ký tá»± ấy khi chá»n đưá»ng dẫn mã hóa " "lại\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Khi tùy chá»n -l không có DẠNG hay BỘ Kà Tá»° thi ghi danh sách tất cả bá»™ ký tá»± " "và mặt sẵn sàng.\n" "DẠNG là `decimal' (thập phân), `octal' (bát phân), `hexadecimal' (thập lục " "phân) hay `full' (toàn) (hay má»™t cá»§a chữ đầu `dohf').\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Nếu chưa lập BỘ_KÃ_Tá»°_MẶC_ÄỊNH trong môi trưá»ng thì LC_ALL, LC_CTYPE, LANG\n" "quyết định biên mã phụ thuá»™c vào miá»n địa phương, là BỘ_KÃ_Tá»° mặc định\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Có thể sá»­ dụng tùy chá»n -k trước khi ghi danh sách bá»™ ký tá»± sau BỘ_KÃ_Tá»°,\n" "cả hai bá»™ ký tá»± ấy có dạng bảng, có má»i đôi dạng `BEF1:AFT1,BEF2:AFT2,...'\n" "và cả hai BEF và AFT là mã dạng số thập phân.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN hay NGÔN_NGá»® là má»™t ngôn ngữ, có thể `c', `perl' hay `po'; còn `c' là mặc " "định.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "LỜI_YÊU_CẦU là PHỤ_LỜI_YÊU_CẦU[,PHỤ_LỜI_YÊU_CẦU]...;\n" "PHỤ_LỜI_YÊU_CẦU là BIÊN_Mà [..BIÊN_MÃ]... BIÊN_Mà là [BỘ_KÃ_Tá»°][/[MẶT]]...;\n" "LỜI_YÊU_CẦU thưá»ng hình như TRƯỚC..SAU, mà cả hai TRƯỚC và SAU là bô ký tá»±.\n" "Khi không nhập BỘ_KÃ_Tá»° nên sá»­ dụng bá»™ ký tá»± thưá»ng; khi không nhập [/" "MẶT]...\n" "nên sá»­ dụng những mặt ngụ ý cho BỘ_KÃ_Tá»°; ký tá»± / có tên mặt trống có nghÄ©a " "là\n" "không có mặt nào. Hãy xem sổ hướng dẫn.\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Nếu chưa nhận -i và -p thì giả sá»­ -p nếu không có TẬP_TIN, nếu có thì -i.\n" "Sẽ mã hóa lại má»—i TẬP_TIN trên mình nên xóa bá» Ä‘iá»u trước. Nếu chưa ghi rõ " "TẬP_TIN\n" "thì thay quyá»n trình lá»c và mã hóa lại dữ liệu gõ chuẩn ra thiết bị xuất " "chuẩn.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Chưa biết ký hiệu `%s' " #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Dãy `%s' mÆ¡ hồ" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Chưa biết dãy `%s' " #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Ngôn ngữ `%s' mÆ¡ hồ" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Chưa biết ngôn ngữ `%s'" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Dạng `%s' mÆ¡ hồ" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Chưa biết dạng `%s' " #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "Tác giả: François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Bản quyá»n (C) năm 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, " "Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Äây là phần má»m tá»± do; hãy xem mã nguồn để thấy Ä‘iá»u kiện sao chép.\n" "Không bảo đảm gì cả, dù khả năng bán hay khả năng làm việc dứt khoát.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Bá»™ ký tá»± `%s' là chưa được biệt hoặc mÆ¡ hồ" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Thiếu đốí số bắt buá»™c" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Lá»i yêu cầu `%s' không đúng" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Äang mã hóa lại %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " xong rồi\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " không xong được: %s trong bước `%s..%s'\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s trong bước `%s..%s'" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s không xong được: %s trong bước `%s..%s'" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Bá»™ ký tá»± %s tồn tại rồi, không là %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Không ghi `%s' được vì không có tên nào cho bá»™ ký tá»± này" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Hệ2 Hệ8 Hệ16 UCS2 Nhá»› %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Tiếc là không có tên nào cho `%s'" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Äã lập việc tạo mặt lại hÆ¡n má»™t lần cho `%s'" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Äã lập việc bá» mặt hÆ¡n má»™t lần cho `%s'" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Hết bá»™ nhá»› ảo rồì" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Có mã hóa lại cả hai mã %3d và %3d thành %3d" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "Không mã hóa lại ký tá»± nào thành %3d" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Không đảo được bảng má»™t-đối-má»™t đã cho" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Äang theo phương pháp chẩn Ä‘oán cho `%s' đến `%s'" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Số cặp %d: <%3d, %3d> xung đột vá»›i <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Không thể xong tạo bảng từ bá»™ cặp được biết" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Việc mã hóa lại chỉ giống hệt, không cần bảng toàn" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Việc mã hóa lại quá phức tạp đối vá»›i bảng" #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sBảng chuyển đổi được tạo ra tá»± động do Free (Tá»± do) `%s' %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sđối vá»›i dãy %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Không có bảng nào để in" #: src/request.c:35 msgid "reversible" msgstr "có thể hoàn tác" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s thành %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "byte" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "biến đổi" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Không xong đươc*" #: src/request.c:111 msgid "*mere copy*" msgstr "*chỉ bản sao*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Hết bá»™ nhá»› ảo rồi." #: src/request.c:252 msgid "Step initialisation failed" msgstr "Không khởi động bước được" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Không khởi động bước được (chưa xá»­ lý tùy chá»n)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Lá»i yêu cầu: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Äã co lại cho: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Chưa chấp nhận tên mặt `%s'" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Không có cách mã hóa lại tư `%s' sang `%s'" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Äang ngá» `..' trong lá»i yêu cầu" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Trạng thái Ä‘á»i cá»§a xá»­ lý con là 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Nhá»› Mô tả\n" "\n" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=pipe sá»­ dụng thiết bị _ống_ cho việc _sắp xếp_\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe bằng cá» -i (trên hệ Ä‘iá»u hành này)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Hãy thông báo lá»—i cho .\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Phản đối cú pháp ấy, hãy sá»­ dụng `%s' thay thế" recode-3.7.15/po/es.po0000644000175000017500000007104514766021054010132 # Mensajes en español para Recode. # Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # Santiago Vila Doncel , 1999, 2001, 2002. # Alejandro Cendejas Tena , 2022. # msgid "" msgstr "" "Project-Id-Version: GNU recode 3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2022-02-04 11:22-0600\n" "Last-Translator: Alejandro Cendejas Tena \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: src/main.c:112 msgid "No error" msgstr "No hay ningún error" #: src/main.c:115 msgid "Non canonical input" msgstr "La entrada no es canónica" #: src/main.c:118 msgid "Ambiguous output" msgstr "Resultado ambiguo" #: src/main.c:121 msgid "Untranslatable input" msgstr "Entrada no convertible" #: src/main.c:124 msgid "Invalid input" msgstr "Entrada inválida" # FIXME: "System-detected problem" or # "The system has detected a problem"? #: src/main.c:127 msgid "System detected problem" msgstr "Problema detectado por el sistema" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Uso inadecuado de la biblioteca de conversión" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Bug interno de conversión" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Este programa es software libre; puede ser redistribuido y/o\n" "modificado bajo los términos de la Licencia Pública General de\n" "GNU tal y como se publica por la Free Software Foundation; bien\n" "en su versión 3, o (a su elección) cualquier versión posterior.\n" "\n" "Este programa se distribuye con la esperanza de que sea útil,\n" "pero SIN NINGUNA GARANTÃA; ni siquiera la garantía implícita de\n" "COMERCIABILIDAD o IDONEIDAD PARA UN FIN DETERMINADO. Véase la\n" "Licencia Pública General de GNU para más detalles.\n" "\n" "Usted debería haber recibido una copia de la Licencia Pública\n" "General de GNU junto con este programa; en caso contrario, escriba\n" "a la Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" "Boston, MA 02111-1307, EE.UU.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Pruebe `%s %s' para más información.\n" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "Recode convierte ficheros entre varios juegos de caracteres y facetas.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Modo de empleo: %s [OPCIÓN]... [ [JUEGO] | PETICIÓN [FICHERO]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Si una opción larga muestra un argumento como obligatorio, entonces es\n" "obligatorio también para la opción corta equivalente. Lo mismo para los\n" "argumentos opcionales.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listados:\n" " -l, --list[=FORMATO] muestra uno o todos los juegos y alias " "conocidos\n" " -k, --known=PARES restringe los juegos de acuerdo con la lista " "de\n" " PARES conocidos\n" " -h, --header[=[LN/]NOMBRE escribe la tabla NOMBRE en la salida estándar\n" " usando LN, y finaliza\n" " -T, --find-subsets informa acerca de todos los juegos de " "caracteres\n" " que son subconjuntos de otros\n" " -C, --copyright muestra el Copyright y las condiciones de " "copia\n" " --help muestra esta ayuda y finaliza\n" " --version muestra la versión y finaliza\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Modos de operación:\n" " -v, --verbose explica la sucesión de pasos e informa del " "desarrollo\n" " -q, --quiet, --silent no muestra mensajes sobre conversiones " "irreversibles\n" " -f, --force realiza la conversión incluso si no es reversible\n" " -t, --touch toca los ficheros convertidos después del " "reemplazo\n" " -i, -p, --sequence=ESTRATEGIA se ignora para compatibilidad con " "versiones\n" " anteriores\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Ajuste `fino':\n" " -s, --strict utiliza correspondencias estrictas; descarta " "caracteres\n" " no convertibles\n" " -d, --diacritics convierte solo acentos y demás para HTML/LaTeX/" "BibTeX\n" " -S, --source[=LN] limita la conversión a cadenas y comentarios según " "LN\n" " -c, --colons utiliza dos puntos en vez de comillas para " "diéresis\n" " -g, --graphics aproxima gráficos IBMPC mediante gráficos ASCII\n" " -x, --ignore=JUEGO descarta JUEGO al escoger un camino de conversión\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "La opción -l sin FORMATO ni JUEGO muestra los juegos de caracteres y " "facetas.\n" "disponibles. FORMATO es `decimal', `octal', `hexadecimal' o `full' (o uno " "de\n" "entre `dohf').\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "A menos que se establezca DEFAULT_CHARSET en el entorno, el valor\n" "predeterminado de JUEGO es la codificación de la que depende el locale,\n" "determinada por LC_ALL, LC_CTYPE, LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Con -k, se muestran los posibles juegos `antes' para el JUEGO `después' " "dado,\n" "siendo ambos juegos de caracteres tabulares, con PARES de la forma\n" "`ANT1:DES1,ANT2:DES2,...' y siendo los ANTs y los DESs códigos dados\n" "como números decimales.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN es algún lenguaje, puede ser `c', `perl' o `po', el valor predeterminado\n" "es `c'\n" # FIXME: [SURFACE]... means the usual surfaces or the usual surface? #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "PETICIÓN es SUBPETICIÓN[,SUBPETICIÓN]...;\n" "SUBPETICIÓN es CODIFICACIÓN[..CODIFICACIÓN]...\n" "CODIFICACIÓN es [JUEGO][/[FACETA]]...; PETICIÓN suele ser ANTES..DESPUÉS,\n" "donde ANTES y DESPUÉS son juegos de caracteres. Un JUEGO omitido implica " "el\n" "juego de caracteres usual; una [/FACETA]... omitida significa la faceta\n" "implícita para el JUEGO; una / con una faceta vacía significa que no hay\n" "ninguna faceta. Véase el manual.\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Cada FICHERO se convierte sobre sí mismo, destruyendo el original.\n" "Si no se especifica ningún FICHERO, entonces funciona como filtro\n" "y convierte la entrada estándar en la salida estándar.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "Comunicar errores a https://github.com/rrthomas/recode\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "El símbolo `%s' es desconocido" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "La sucesión `%s' es ambigua" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "La sucesión `%s' es desconocida" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "El idioma `%s' es ambiguo" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "El idioma `%s' es desconocido" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "El formato `%s' es ambiguo" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "El formato `%s' es desconocido" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Escrito por François Pinard .\n" # FIXME: Añadir 1998 (?). #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990-2018 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Esto es software libre; vea el código fuente para las condiciones de copia.\n" "No hay NINGUNA garantía; ni siquiera de COMERCIABILIDAD o IDONEIDAD PARA UN\n" "FIN DETERMINADO.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "El juego de caracteres `%s' es desconocido o ambiguo" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Falta el argumento requerido" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "La petición `%s' es errónea" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Convirtiendo %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " hecho\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " falló: %s en el paso %s..%s\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s en el paso %s..%s" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s falló: %s en el paso %s..%s" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "El juego de caracteres %s ya existe y no es %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "No se puede mostrar `%s', no hay nombres disponibles para este\n" "juego de caracteres" # "Nem" de "Nemónico", supongo. # (AC): No lo cambio pues no es incorrecto, pero consideren que # la RAE considera "mnemónico (ca)" como forma principal, # a la cual asigna una definición así: # Tb. nemónico. # 1. adj. Perteneciente o relativo a la memoria. # 2. f. mnemotecnia. # Mientras que en la definición de "nemónico (ca)" pone # solamente: «V. mnemónico.» #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Nem %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Lo siento, no hay nombres disponibles para `%s'" # FIXME: ¿La palabra "Resurface" había desaparecido o no? #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Se ha establecido `resurfacer' más de una vez para `%s'" # FIXME: Lo mismo. ¿? #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Se ha establecido `unsurfacer' más de una vez para `%s'" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Memoria virtual agotada" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Los códigos %3d y %3u se convierten ambos en %3d" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Ningún carácter se convierte en %3u" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "No se puede invertir la tabla uno-a-uno dada" # "Siguen diagnósticos" suena horrible. #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Procedimiento para convertir de `%s' a `%s':" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "El par nº %u: <%3d, %3d> es conflictivo con <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "" "No se puede completar la tabla a partir del conjunto de pares conocidos" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Conversión identidad, no merece una tabla" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "La conversión es demasiado compleja para una simple tabla" # ## ¿Se supone que éste mensaje era continuación de otro? # ## (el de "Tabla de conversión ..." ver más adelante) # ## (creo que ese mensaje anterior ya no existe (?)) # #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sTabla de conversión generada automáticamente por %s %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%spara la sucesión %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "No hay ninguna tabla que mostrar" #: src/request.c:35 msgid "reversible" msgstr "reversible" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s a %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "byte" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "variable" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Imposible*" #: src/request.c:111 msgid "*mere copy*" msgstr "*copia pura y simple*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "¡Memoria virtual agotada!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Falló la etapa de inicialización" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Falló la etapa de inicialización (opciones sin procesar)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Petición: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Encogido a: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nombre de faceta no reconocido `%s'" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "No se puede convertir de `%s' a `%s'" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Se esperaba `..' en la petición" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "El estado de espera del proceso hijo es 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Nem Descripción\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "La sintaxis es antigua, por favor utilice `%s'" # Sí: "pipe" es tubería: Se refiere a "|" # # En estos casos, se puede poner el término en español seguido del término # inglés entre paréntesis. Por ejemplo "tubería (`pipe')" para que lo entiendan # las personas que casi todo lo que leen está en inglés. # # Pero en este caso concreto, no hace falta porque la palabra pipe forma # parte del nombre de la opción (a la izquierda se ve). sv # #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr " -p, --sequence=pipe utiliza tuberías para las pasadas\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe lo mismo que -i (en este sistema)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Comunicar bichos a .\n" # Este es difícil. Se admiten sugerencias. # Especialmente de alguien que conozca bien el programa. # Creo que "stats" en este caso es abreviatura de "statistics" # Pero, ¿Qué es un bucket? (¿balde, cubito, cangilón?) # Más importante: ¿Qué significa en este contexto? # # Afortunadamente, el mensaje parece ser del tipo "debug", porque # en el código fuente de la versión 3.4.1, en charset.c, el mensaje # aparece dentro de un #if HASH_STATS y en el Makefile.in se puede ver # que ese símbolo normalmente no está definido: # # # These CFLAGS values are not auto-configured: # # -DDIFF_HASH For using GNU diff's hash algorithm instead. # # -DHASH_STATS For printing a one-liner hash statistics. # # Así que si no está completamente traducido, no importa demasiado. # Puede que a ningún usuario normal le salga este mensaje jamás. # #~ msgid "Hash stats: %d names using %d buckets out of %d\n" #~ msgstr "Estadística: %d nombres utilizan %d `buckets' de un total de %d\n" # J!: Actualmente suena infame. ¿Qué tal "en esta versión"? # # No sé. Enrique, ¿qué opinas? sv # # 'Por el momento' me suena igual de bien em+ # # Vaya, pues al final me quedo con la sugerencia de Juan Carlos. # No veo mucha diferencia, pero un poco mejor sí queda. # #~ msgid "Currently, -s is ignored when -g is selected" #~ msgstr "En esta versión, -s no tiene efecto si se selecciona -g" #~ msgid "one to one" #~ msgstr "de uno a uno" #~ msgid "one to many" #~ msgstr "de uno a varios" #~ msgid "many to one" #~ msgstr "de varios a uno" #~ msgid "many to many" #~ msgstr "de varios a varios" #~ msgid " failed (reversibility problem?)\n" #~ msgstr " falló (¿problema de reversibilidad?)\n" #~ msgid "%s: Task failed (reversibility problem?)" #~ msgstr "%s: La tarea falló (¿problema de reversibilidad?)" #~ msgid "Task failed (reversibility problem?)" #~ msgstr "La tarea falló (¿problema de reversibilidad?)" #~ msgid "MAX_CHARSETS is too small" #~ msgstr "MAX_CHARSETS es demasiado pequeño" # FIXME. # Aquí hay un pequeño problema, y es que "juego" es masculino y # "codificación" es femenino. # Otra posibilidad sería comerse el "encoding" #~ msgid "Ambiguous charset or encoding `%s'" #~ msgstr "Juego de caracteres o codificación ambigua `%s'" # FIXME. # Aquí ocurre lo mismo. #~ msgid "Unknown charset or encoding `%s'" #~ msgstr "Juego de caracteres o codificación ambigua `%s'" #~ msgid "Simplified to: %s\n" #~ msgstr "Simplificado por: %s\n" #~ msgid "Unbalanced quotes in request" #~ msgstr "Comillas desemparejadas" #~ msgid "Illegal backslash" #~ msgstr "Barra invertida no permitida" #~ msgid "Internal error - strategy undecided" #~ msgstr "Error interno - estrategia no decidida" #~ msgid "ONE to SAME" #~ msgstr "de UNO al MISMO" #~ msgid "steps: %d" #~ msgstr "pasos: %d" # (J! = Juan Carlos Borrás). # J!: ¿optimizado en vez de ahorrado? # J!: ¿merging como combinaciones? # J!: merge es unión en bases de datos o incluso podría ser fusión. # # Tal vez sí, o tal vez no. Como yo lo veo, hay una serie de transformaciones # o caminos a->b->c->d Si combinas varios de estos puedes obtener un camino # más corto a -> c -> d ó a -> b -> d ó a -> d # y te ahorras pasos. # #~ msgid ", %d saved by merging" #~ msgstr ", %d ahorrados mediante combinaciones" # "ignore" es un falso amigo. # #~ msgid "Cannot auto check the ignored charset" #~ msgstr "No se puede comprobar el juego descartado" #~ msgid "Cannot auto check on %s" #~ msgstr "No se puede comprobar sobre %s" # Téngase en cuenta (al contar la longitud) que en la antepenúltima # línea de esta entrada cada \" cuenta como *un* carácter. #~ msgid "" #~ "Mandatory or optional arguments to long options are mandatory or " #~ "optional\n" #~ "for short options too.\n" #~ "\n" #~ " -C, --copyright display Copyright and copying conditions\n" #~ " -a, --auto-check report about some or all recoding paths, then " #~ "exit\n" #~ " -l, --list[=FORMAT] list one or all known charsets\n" #~ " -k, --known=PAIRS restrict charsets according to known PAIRS list\n" #~ " --help display this help and exit\n" #~ " --version output version information and exit\n" #~ "\n" #~ "FORMAT is a word among decimal, octal, hexadecimal or full (which may be\n" #~ "abbreviated to one of `dohf'), it defaults to just the canonical name.\n" #~ "With -k, possible before charsets are listed for the given after " #~ "CHARSET,\n" #~ "both being RFC1345 charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" #~ "AFT2,...\n" #~ "and BEFs and AFTs being codes. All codes are given as decimal numbers.\n" #~ msgstr "" #~ "Los argumentos obligatorios u opcionales para las opciones largas también " #~ "son\n" #~ "obligatorios u opcionales para las opciones cortas.\n" #~ "\n" #~ " -C, --copyright muestra el Copyright y la condiciones de copia\n" #~ " -a, --auto-check informa sobre algunos o todos los caminos de\n" #~ " conversión, y finaliza\n" #~ " -l, --list[=FORMATO] muestra uno o todos los juegos conocidos\n" #~ " -k, --known=PARES limita los juegos conforme a la lista de PARES\n" #~ " conocidos\n" #~ " --help muestra esta ayuda y finaliza\n" #~ " --version informa de la versión y finaliza\n" #~ "\n" #~ "FORMATO es la palabra decimal, octal, hexadecimal o full (que se pueden\n" #~ "abreviar por una de las letras `dohf'), por omisión el nombre canónico.\n" #~ "Con -k, se muestran los posibles juegos \"antes\" para el JUEGO " #~ "\"después\" dado,\n" #~ "siendo ambos juegos RFC1345, con PARES de la forma `ANT1:DES1,ANT2:" #~ "DES2,...\n" #~ "donde los ANTs y los DESs son códigos. Todos los códigos se dan en " #~ "decimal\n" # Problema ¿Cómo debo traducir "mis juegos favoritos son..."? # ¿Debo poner "Los juegos favoritos de François Pinard"? # ¿O debo poner "mis juegos favoritos" y poner realmente MIS juegos favoritos? # Por ejemplo, 850 y no ibmpc... # Si al final los de F. Pinard y los míos coinciden, un buen compromiso sería # "Mis juegos favoritos (y los de Pinard :-) son..." # #~ msgid "" #~ "Option -l with no FORMAT nor CHARSET list all charsets, also see the " #~ "Texinfo\n" #~ "documentation. My preferred charsets are (each user has preferences):\n" #~ "\n" #~ " ascii-bs ASCII (7-bit), using backspace to apply diacritics\n" #~ " ibmpc IBM-PC 8-bit characters, with proper newlines\n" #~ " latex LaTeX coding of foreign and diacriticized characters\n" #~ " latin1 ISO Latin-1 8-bit extension of ASCII\n" #~ " texte Easy French convention for transmitting email messages\n" #~ msgstr "" #~ "La opción -l sin FORMATO ni JUEGO muestra todos los juegos, véase también " #~ "la\n" #~ "documentación de Texinfo. Mis juegos favoritos son (cada uno tendrá los " #~ "suyos):\n" #~ "\n" #~ " ascii-bs ASCII (7-bit), utilizando backspace para acentos y demás\n" #~ " ibmpc IBM-PC (8-bit), con retornos de carro adecuados\n" #~ " latex LaTeX para los caracteres no ingleses, acentos y demás\n" #~ " latin1 ISO Latin-1 extensión del ASCII de 8 bits\n" #~ " texte Convenio francés para mensajes por correo electrónico\n" #~ msgid "" #~ "\n" #~ "Usage: %s [OPTION]... [BEFORE]:[AFTER] [FILE]...\n" #~ msgstr "" #~ "\n" #~ "Modo de empleo: %s [OPCIÓN]... [ANTES]:[DESPUÉS] [FICHERO]...\n" # Acerca de la palabra "pasada": # # J!: ¿qué te parece "iteración"? es más técnico # El original francés dice "pour ordonnancer les passes" # En principio puse "pasos", pero "pasadas" lleva el matiz de "sucesivas" # ¿De verdad te parece que hay que ser tan técnico? sv # # Uff pasadas no me gusta, lo siento. Iteración tampoco # porque no sabemos si se trata de un bucle con mismo código dentro # ¿ qué tal para las sucesivas pasadas ? em+ # # Me vais a marear. Esto tendré que pensarlo despacito. sv # De momento no veo qué de malo tiene "pasada". # Si acaso, que modernamente tenga otros significados ("¡es una pasada!" :-). # #~ msgid "" #~ " -o, --sequence=popen use popen machinery for sequencing passes\n" #~ msgstr " -o, --sequence=popen utiliza popen para las pasadas\n" #~ msgid " -o, --sequence=popen same as -i (on this system)\n" #~ msgstr " -o, --sequence=popen lo mismo que -i (en este sistema)\n" #~ msgid "BEFORE and AFTER both default to `%s' when needed.\n" #~ msgstr "Por omisión, tanto ANTES como DESPUÉS son `%s' si es necesario.\n" #~ msgid "%s: Recoding is not reversible" #~ msgstr "%s: La conversión es irreversible" #~ msgid "Recoding is not reversible" #~ msgstr "La conversión es irreversible" # Otras posibilidades: # "cada carácter de entrada" SV (antes) # "cada carácter leído" EM # Puestos a comerse el "output", nos comemos también el "input". # Entenderse, se entiende igual. # # Teniendo en cuenta que es un programa de conversión, y teniendo # en cuenta que estamos usando el verbo transformarse, está claro # que "lo que se transforma" es la entrada y "en lo que se tranforma" # es la salida. # #~ msgid " Each input char transforms into an output string,\n" #~ msgstr " Cada carácter se transforma en una cadena,\n" #~ msgid " Each input char transforms into an output string.\n" #~ msgstr " Cada carácter se transforma en una cadena.\n" # Esperemos que sea ese el sentido de la frase. # No hay código fuente donde poder comprobarlo. # #~ msgid " Programming is needed to handle multichar input.\n" #~ msgstr " Los caracteres multibyte todavía no están implementados.\n" #~ msgid " The recoding might not be reversible.\n" #~ msgstr " La conversión podría ser irreversible.\n" #~ msgid " The recoding should be reversible.\n" #~ msgstr " La conversión debería ser reversible.\n" # lo mismo de antes # #~ msgid " programming is needed to handle multichar input.\n" #~ msgstr " los caracteres multibyte todavía no están implementados.\n" #~ msgid "/* Conversion table from `%s' charset to `%s' charset.\n" #~ msgstr "/* Tabla de conversión del juego `%s' al juego `%s'.\n" #~ msgid "MAX_SEQUENCE is too small" #~ msgstr "MAX_SEQUENCE es demasiado pequeño" #~ msgid "MAX_SINGLE_STEPS is too small" #~ msgstr "MAX_SINGLE_STEPS es demasiado pequeño" #~ msgid "Mere copy for the trivial recoding\n" #~ msgstr "Copia pura y simple para la conversión trivial\n" #~ msgid "You may not explicitly recode from RFC 1345" #~ msgstr "No se puede convertir explícitamente a partir de RFC 1345" recode-3.7.15/po/he.gmo0000644000175000017500000002141114766021055010254 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€j‰ô>ö’5oÈ8VE_¥ÃÛYûCUf™dNe.´ã5K78ƒ!¼>Þ82Vg‰?ñ*1:\—«.È÷L *m˜-¨GÖV?uµKÍF6.}¬ÿÀRÀ# é7 &!!GH!%!"¶!#Ù!ïý!í"ò"û"#:. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: Free recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2001-05-27 17:06+0300 Last-Translator: Eli Zaretskii Language-Team: Hebrew Language: he MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit X-Bugs: Report translation errors to the Language-Team address. רובע ××’ יחרכה ×וה ×–× ,יחרכהכ טנמוגר××” ×ª× ×”×רמ הכור××” ותרוצב ןייפ×מ ×× .×ייחרכה ×× ×™×ש ××™×˜× ×ž×•×’×¨× ×¨×•×‘×¢ ××’ ךכו .ןייפ×מ ×•×ª×•× ×œ×© תרצוקמה הרוצה .תופיטעהו ×יוותה תוצובק לכ ×ª× ×’×™×¦×ž ×יוות תצובק ×•× ×˜×ž×¨×•×¤ ןויצ ×לל -l ןייפ×מ ×ª×—× ×ª×•× ×•×) `full' ×•× `hexadecimal' ,`octal' ,`decimal' תויהל לוכי טמרופ .(`dohf' הצובקה ךותמ :ותרוצ SUBREQUEST לכו SUBREQUEST[,SUBREQUEST]...:ותרוצ (REQUEST) המישמ ןויצ .[CHARSET][/[SURFACE]]... :ותרוצ (דודיק) ENCODING .ENCODING[..ENCODING]... תטמשה .×יוות תוצובק ןניה AFTER-ו BEFORE ;BEFORE..AFTER-×› הנותנ המישמ ×›"דב השוריפ [/SURFACE] הפיטע תטמשה ;הליגר ×יוות תצובק השוריפ CHARSET ×יות תצובק לכ רדעיה ושוריפ הפיטע ×ש ×לל / ןויצ .הנותנ ×יוות תצובק רובע תלבוקמה הפיטעה .שמתשמל ךירדמב ןייע ,טוריפ רתיל .הפיטע %s [×ינייפ×מ]... [ [המישמ | ×יוות תצובק [ץבוק]... ] :שומישה ×Ÿ×¤×•× ×”×—×œ×¦×”×‘ המייתסה %s -> %s%s .%s תורמתה תרדס רובע%sהגשהל ןתינ-יתלב**הטושפ הקתעה*יעמשמ-דח ×•× ×™× ×˜×œ×¤×יעודיה תוגוזה תצובק ךותמ הלבט ×ילשהל ×ª×•×¨×©×¤× ×Ÿ×™×הכיפהל תנתינ ×”× ×™× ×”×¨×“×’×•×”×© הרמתה תלבט×יינקת תומש ×Ÿ×™× ×•×– הצובקמ ×יוותל ןכש ,`%s' ×ª× ×’×™×¦×”×œ ןתינ ×ל×יוות תצובק לש (alias) יפולח יוניככ %s לש תמדוק הרדגה רטוס %sתרכומ ×יוות תצובק לש יעמשמ-דח רוציק ×•× ×™× `%s'0x%0.2x ×וה תב-תינכת ×ויס דוקDec Oct Hex UCS2 Mne %s `..' לולכל ×”×™×” ×¨×•×ž× ×”×ž×™×©×ž×” ןויצ`%s'-מ `%s'-ל הרמתה רובע ×”× ×™×” ×”×בה הלקתה תעדוהטמרופ לש יעמשמ-דח רוציק ×•× ×™× `%s'רכומ טמרופ ×•× ×™× `%s'הלבטל הקדצה ×Ÿ×™× ,(תוהז) הדיחי תרמתהדודיק תרמתה ךילהתב תימינפ הלקת×ירכומ ×× ×™×ש ×ידוק ללוכ טלק .`c' ××™×” לדחמה תרירב ;`po' ×•× ,`perl' ,`c' :תונכת תפש ןייצמ LN תונכת תפש לש יעמשמ-דח רוציק ×•× ×™× `%s'תרכומ תונכת תפש ×”× ×™× `%s'דודיק תורמתה תיירפסב יוגש שומישתו×יגש ןי×הספדהל הלבט ןי×`%s'-מ `%s'-ל הרמתה ×ª×•×¨×©×¤× ×Ÿ×™×ינקת ×•× ×™× ×˜×œ×§`%s' תרמתההלבטכ הגיצהל ×”×™×”×™ רשפ×ש ידכמ תבכרומ הרמתהיוגש וניה `%s' המישמ ןויצ%s :המישמ ונייצל חרכהש ×˜× ×ž×•×’×¨× ×¨×¡×—`%s' רובע ×ª×—× ×עפמ רתוי העבקנ הפיטע תרמתה--sequence ןייפ×מל ×˜× ×ž×•×’×¨× ×œ×© יעמשמ-דח רוציק ×•× ×™× `%s'--sequence ןייפ×מל רכומ ×˜× ×ž×•×’×¨× ×•× ×™× `%s'%s -:ל המצמטצה ×יינקת תומש ×Ÿ×™× `%s' הצובקמ ×יוותל ,×ירעטצמלשכנ בלשה לוחת×(ודבוע ×ל ×ינייפ×מ המכ) לשכנ בלשה לוחת×תרכומ ×יוות תצובק ×”× ×™× `%s'תכרעמ ×ª×œ×§×ª×•×œ×™×¤× ;×ª×•×™×¨×—× ×œ×› ×Ÿ×™× .רוקמ יצבקב ןייע ,הקתעה ×™×נת לע עדימל ;תישפח הנכת יהוז .תמיוסמ תילכת וזי×ל המ×תה ×•× ×ª×•×¨×™×—×¡ לש עמתשמב-×ª×•×™×¨×—× ×ל .`%s %s' דלקה ,וז הנכותב שומיש לע ףסונ עדימ תלבקל UCS2 ינומנמ רו×ית ×יוות תצובק לש לדחמה תרירב ,רדגומ ×•× ×™× DEFAULT_CHARSET הביבס הנתשמ ×× .LANG, LC_CTYPE, LC_ALL ×ינתשמ יכרע ךותמ עמתשמכ תויל×קול תונוכת ×™"×¢ תעבקנ רכומ הפיטע ×ש ×•× ×™× `%s'`%s' רובע ×ª×—× ×עפמ רתוי העבקנ הפיטע תדרוההרמתהל ןתינ ×•× ×™× ×˜×œ×§×œ×–× ×™×œ×וטריו ןורכז!×œ×–× ×™×œ×וטריו ןורכז תוגוז ×ª× ×ª×ž×ות דעיה תצובקל ןתרמתה ×¨×©× ×יוותה תוצובק לכ הנגצות ,-k תוחכונב .×יינורשע ×ידוק ××” AFT-ו BEF-ו ,`BEF1:AFT1,BEF2:AFT2,...'-×› ×ינותנה ×יוותה byteךיפהucs2variablerecode-3.7.15/po/nl.po0000644000175000017500000004144214766021055010133 # Dutch translations for recode. # Copyright (C) 2019 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # # “Sobald du darauf bestehst dass das Meer gefälligst ruhig bleiben soll, # erhebt sich der Taifun.†# # Erick Branderhorst , 1996. # Taco Witte , 2004, 2005. # Benno Schulenberg , 2006, 2007, 2019. msgid "" msgstr "" "Project-Id-Version: recode 3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2019-09-30 14:09+0200\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: src/main.c:112 msgid "No error" msgstr "Geen fout" #: src/main.c:115 msgid "Non canonical input" msgstr "Niet-canonieke invoer" #: src/main.c:118 msgid "Ambiguous output" msgstr "Niet-eenduidige uitvoer" #: src/main.c:121 msgid "Untranslatable input" msgstr "Onvertaalbare invoer" #: src/main.c:124 msgid "Invalid input" msgstr "Ongeldige invoer" #: src/main.c:127 msgid "System detected problem" msgstr "Systeem heeft fout gevonden" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Verkeerd gebruik van hercoderings-bibliotheek" #: src/main.c:133 msgid "Internal recoding bug" msgstr "**Interne fout** bij hercoderen" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Dit programma is vrije software; u mag het verder verspreiden en/of\n" "wijzigen onder de voorwaarden van de GNU General Public License zoals\n" "gepubliceerd door de Free Software Foundation, naar keuze ofwel onder\n" "versie 3 ofwel onder een nieuwere versie van die licentie.\n" "\n" "Dit programma wordt uitgegeven in de hoop dat het nuttig is,\n" "maar ZONDER ENIGE GARANTIE; zonder zelfs de impliciete garantie\n" "van VERKOOPBAARHEID of GESCHIKTHEID VOOR EEN BEPAALD DOEL.\n" "Zie de GNU General Public License voor meer details.\n" "\n" "Bij dit programma hoort u een kopie van de GNU General Public License\n" "ontvangen te hebben; zo niet, schrijf dan naar Free Software Foundation,\n" "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Typ '%s %s' voor meer informatie.\n" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "'recode' converteert bestanden van en naar allerlei tekensets en " "oppervlakken.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Gebruik: %s [OPTIE]... [ [TEKENSET] | VERZOEK [BESTAND]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Een argument dat verplicht of optioneel is voor een lange optie, is dat\n" "ook voor de overeenkomstige korte optie.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Opsommingen:\n" " -l, --list[=PRESENTATIE] alle bekende tekensets en aliassen opsommen,\n" " of een tekenset in tabelvorm presenteren\n" " -k, --known=PAREN opsomming beperken volgens deze bekende PAREN\n" " -h, --header[=[TL/]NAAM] tabel NAAM naar standaarduitvoer schrijven\n" " (in taal TL) en stoppen\n" " -T, --find-subsets alle tekensets opsommen die deelverzameling " "van\n" " anderen zijn\n" " -C, --copyright auteursrecht en kopieervoorwaarden tonen\n" " --help deze hulptekst tonen en stoppen\n" " --version versie-informatie tonen en stoppen\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Werkingsmodus:\n" " -v, --verbose tussenstappen uitleggen en voortgang tonen\n" " -q, --quiet, --silent niets zeggen over onomkeerbare hercoderingen\n" " -f, --force hercodering afdwingen, ook als deze onomkeerbaar " "is\n" " -t, --touch tijdsstempel van gehercodeerde bestanden " "aanpassen\n" " -i, -p, --sequence=STRATEGIE genegeerd voor achterwaartse compatibilteit\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Fijnafstelling:\n" " -s, --strict strikt converteren; niet-hercodeerbare tekens " "verwerpen\n" " -d, --diacritics alleen diakritische tekens en dergelijke " "converteren\n" " voor HTML/LaTeX/BibTeX\n" " -S, --source[=TL] hercoderen beperken tot commentaar en " "tekenreeksen\n" " als in taal TL ('c', 'perl', of 'po')\n" " -c, --colons voor een trema een dubbele punt in plaats van een\n" " dubbel aanhalingsteken gebruiken\n" " -g, --graphics IBMPC-lijntjes benaderen met ASCII-tekens\n" " -x, --ignore=TEKENSET TEKENSET negeren bij keuze van hercodeertraject\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Optie -l zonder PRESENTATIE of TEKENSET somt de beschikbare tekensets en\n" "oppervlakken op. PRESENTATIE is 'decimal', 'octal', 'hexadecimal' of\n" "'full' (volledig), die afgekort mogen worden tot 'd', 'o', 'h' en 'f'.\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Tenzij omgevingsvariabele DEFAULT_CHARSET is ingesteld, gebruikt TEKENSET\n" "standaard de taalafhankelijke codering, bepaald door LC_ALL, LC_CTYPE, " "LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Met optie -k worden voor de gegeven NA-tekenset de mogelijke VOOR-tekensets\n" "opgesomd, als tabel van PAREN in de vorm 'VOOR1:NA1,VOOR2:NA2,...', waarbij\n" "de VOORs en NAs als decimale getallen gegeven worden.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "TL is een taal, en kan 'c', 'perl' of 'po' zijn; 'c' is standaard.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "VERZOEK is DEELVERZOEK[,DEELVERZOEK]...; DEELVERZOEK is CODERING[.." "CODERING]...\n" "CODERING is [TEKENSET][/[OPPERVLAK]]...; VERZOEK ziet er vaak uit als VOOR.." "NA,\n" "waarbij VOOR en NA tekensets zijn. Een weggelaten TEKENSET impliceert de\n" "gebruikelijke tekenset; een weggelaten [/OPPERVLAK]... betekent de " "impliciete\n" "oppervlakken voor TEKENSET; een / met een lege oppervlaknaam betekent " "helemaal\n" "geen oppervlak. Zie ook de handleiding.\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Elk BESTAND wordt over zichzelf gehercodeerd, het origineel overschrijvend.\n" "Als er geen BESTAND gegeven is, functioneert 'recode' als een filter en\n" "wordt van standaardinvoer naar standaarduitvoer gehercodeerd.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "Rapporteer gebreken in het programma via https://github.com/rrthomas/" "recode.\n" "Meld fouten in de vertaling aan .\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Symbool '%s' is onbekend" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Reeks '%s' is niet eenduidig" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Reeks '%s' is onbekend" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Taal '%s' is niet eenduidig" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Taal '%s' is onbekend" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Presentatie '%s' is niet eenduidig" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Presentatie '%s' is onbekend" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Geschreven door François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990-2018 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Dit is vrije software; zie de programmatekst voor de kopieervoorwaarden.\n" "Er is GEEN garantie; zelfs niet voor VERKOOPBAARHEID of GESCHIKTHEID\n" "VOOR EEN BEPAALD DOEL.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Tekenset '%s' is onbekend of niet eenduidig" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Een vereist argument ontbreekt" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Verzoek '%s' is onjuist" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Hercoderen van %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " voltooid\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " mislukt: %s in stap '%s..%s'\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s in stap '%s..%s'" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s mislukt: %s in stap '%s..%s'" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Tekenset '%s' bestaat al en is niet %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Kan '%s' niet opsommen; geen namen beschikbaar voor deze tekenset" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Sorry, geen namen beschikbaar voor '%s'" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Her-oppervlakker is meer dan eens gezet voor '%s'" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Ont-oppervlakker is meer dan eens gezet voor '%s'" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Onvoldoende geheugen beschikbaar" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Codes %3d en %3u hercoderen beide naar %3d" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Geen teken hercodeert naar %3u" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Kan de gegeven één-op-één tabel niet omkeren" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Foutmeldingen voor '%s' naar '%s'" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Paarnummer %u: <%3d, %3d> conflicteert met <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Kan tabel niet afmaken met de verzameling bekende paren" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Identiteitshercodering; is geen tabel waard" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Hercoderen is te complex voor slechts een tabel" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sConversietabel gegenereerd door '%s' %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%svoor reeks %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Geen tabel om weer te geven" #: src/request.c:35 msgid "reversible" msgstr "omkeerbaar" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s naar %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "byte" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "variabel" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Kan niet*" #: src/request.c:111 msgid "*mere copy*" msgstr "*simpele kopie*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Onvoldoende geheugen beschibaar!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Stap-initialisatie is mislukt" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Stap-initialisatie is mislukt (onverwerkte opties)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Verzoek: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Gekrompen tot: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Onbekende oppervlaknaam '%s'" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Er is geen manier om te hercoderen van '%s' naar '%s'" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "'..' werd verwacht in verzoek" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Wachtstatus van dochterproces is 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Omschrijving\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Deze syntax is verouderd; gebruik liever '%s'" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr " -p, --sequence=pipe 'pipes' gebruiken voor tussenstappen\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe hetzelfde als -i (op dit systeem)\n" recode-3.7.15/po/ro.gmo0000644000175000017500000002343014766021055010303 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“œȯ¿xÀ8Óù°Í:~G¹  -Gas…<–+ÓQÿ1Q=ƒ4Á1ö(!G7i¡"À1ã5gG¯"Î9ñ$+ P ] Ev ¼ ;Ð T !a!8v!¯! Ï!Û!Hú! C"%d"Š".œ"Ë"2ç""#=#³]#4$F$ª_$# %H.%w%%«%öÈ%5¿&õ& û&' '+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: recode-3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2022-04-10 20:00+0200 Last-Translator: Remus-Gabriel Chelu Language-Team: Romanian Language: ro MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2); X-Bugs: Report translation errors to the Language-Team address. X-Generator: Poedit 3.0.1 Fiecare FIȘIER este recodificat peste el însuÈ™i, distrugând originalul. Dacă nu este specificat FIȘIER, atunci se comportă ca un filtru È™i recodifică intrarea standard la ieÈ™irea standard. Dacă o opÈ›iune lungă afiÈ™ează un parametru obligatoriu, atunci este obligatoriu È™i pentru opÈ›iunea scurtă echivalentă. AcelaÈ™i lucru se aplică în cazul parametrilor opÈ›ionali. Moduri de operare: -v, --verbose explică secvenÈ›a de paÈ™i È™i raportează desfășurarea -q, --quiet, --silent suprimă mesajele despre recodificări ireversibile -f, --force forÅ£ează recodificările chiar È™i când nu sunt reversibile -t, --touch ajustează marcajul de timp al fiÈ™ierelor recodificate, după recodificare -i, -p, --sequence=STRATEGIA ignorată pentru compatibilitate inversă OpÈ›iunea -l fără FORMAT sau SET_CARACTERE listează seturile de caractere È™i formatele disponibile. FORMAT este „decimalâ€, „octalâ€, „hexadecimal†sau „full†(sau unul din „d, o, h, fâ€). CERERE este SUBCERERE[,SUBCERERE]...; SUBCERERE este CODIFICAREA[..CODIFICAREA]... CODIFICAREA este [SET_CARACTERE][/[FORMAT]]...; CERERE se prezintă ca INIÈšIAL..DUPÄ‚, unde INIÈšIAL È™i DUPÄ‚ sunt seturi de caractere. Un SET_CARACTERE omis sugerează setul de caractere obiÈ™nuit; un [/FORMAT] omis reprezintă formatul sugerat pentru SET_CARACTERE; un / cu nume gol de format înseamnă fără formate. ConsultaÈ›i manualul. RaportaÈ›i erorile la https://github.com/rrthomas/recode Utilizare: %s [OPÈšIUNE]... [ [SET_CARACTERE] | CERERE [FIȘIER]... ] finalizată %s în %s%sTabel de conversie generat mecanic de %s %s%s pentru secvenÈ›a %s.%s*Neîndeplinibil**copiere-simplă*IeÈ™ire ambiguăNu s-a putut completa tabelul din setul de perechi cunoscuteNu se poate inversa tabela unu la unu datăNu se poate lista „%sâ€, nici un nume disponibil pentru acest set de caractereSetul de caractere %s există deja È™i nu este %sSetul de caractere „%s†nu este cunoscut sau este ambiguuStarea de aÈ™teptare a procesului copil este 0x%0.2xCodurile %3d È™i %3u se recodifică ambele la %3dZec Oct Hex UCS2 Mne %s Se aÈ™teaptă „..†în cerereSe urmăresc diagnosticele pentru „%s†în „%sâ€Formatul „%s†este ambiguuFormatul „%s†nu este cunoscutRecodificare de identitate, nu necesită un tabelEroare internă de recodificareIntrare nevalidăNL este un limbaj de programare, poate fi „câ€, „perl†sau „poâ€; „c†este cel implicit. Limbajul „%s†este ambiguuLimbajul „%s†nu este cunoscutFolosire necorespunzătoare a bibliotecii de recodificareNici un caracter recodificat în %3uNicio eroareNici un tabel de afiÈ™atNu există nicio modalitate de a recodifica din „%s†în „%sâ€Intrare necanonicăPerechea numărul %u: <%3d, %3d> în conflict cu <%3d, %3d>«recode» converteÈ™te fiÈ™ierele între diferite seturi de caractere È™i formate. Se recodifică %s...Recodificarea este prea complexă pentru un tabel simpluCererea „%s†este greÈ™ităCerere: %s LipseÈ™te parametrul solicitatSchimbătorul de formate definit mai mult decât o dată pentru „%sâ€SecvenÈ›a „%s†este ambiguăSecvenÈ›a „%s†nu este cunoscutăMicÈ™orat la: %s Scuze, nici un nume disponibil pentru „%sâ€Pas de iniÈ›ializare eÅŸuatPas de iniÈ›ializare eÈ™uat (opÈ›iuni neprocesate)Simbolul „%s†nu este cunoscutSistemul a detectat o problemăAcesta este software liber; consultaÈ›i sursa pentru condiÈ›iile de copiere. NU există NICI o garanÈ›ie; nici măcar pentru COMERCIALIZARE sau POTRIVIRII PENTRU UN ANUMIT SCOP. ÃŽncercaÈ›i «%s %s» pentru mai multe informaÈ›ii. UCS2 Mne Descriere Dacă nu este definită variabila de mediu DEFAULT_CHARSET, SET_CARACTERE utilizează implicit codificarea dependentă de limbă, determinată de LC_ALL, LC_CTYPE, LANG. Nume de format necunoscut: „%sâ€Schimbătorul de formate definit mai mult decât o dată pentru „%sâ€Intrare intraductibilăMemoria virtuală epuizatăMemoria virtuală epuizată!OpÈ›iunea -k listează seturile de caractere INIÈšIAL posibile pentru setul de caractere DUPÄ‚ dat, ca un tabel de PERECHI de forma „INIÈšIAL1:DUPÄ‚1,INIÈšIAL2:DUPÄ‚2,...†unde INIÈšIAL È™i DUPÄ‚ sunt coduri ce sunt date ca numere zecimale. Scris de François Pinard . octetreversibilucs2variabil(ă)recode-3.7.15/po/gl.gmo0000644000175000017500000001655114766021055010273 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€ª‰¨4¯Ý¿IM—Ÿ§ÀÐßGî.6Je-°1Þ.?],}ª ÆAç )JD]¢!¿/á #/?o†AšÜû 4&["yœ0­(Þ@!Hj¡‰1+]Vx)Ï3ù-E^ÏxH MY ^:. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2012-11-10 20:10+0100 Last-Translator: Leandro Regueiro Language-Team: Galician Language: gl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit X-Bugs: Report translation errors to the Language-Team address. Plural-Forms: nplurals=2; plural=(n != 1); Se unha opción longa mostra un parámetro como obrigatorio, entón tamén é obrigatorio para a opción curta equivalente. Do mesmo xeito para parámetros opcionais. A opción -l sen FORMATO ou XOGO lista os xogos e superficies dispoñíbeis. O FORMATO é `decimal', `octal', `hexadecimal' ou `full' (completo), ou unha letra entre `dofh'. PETICIÓN é SUBPETICIÓN[,SUBPETICIÓN]...; SUBPETICIÓN é CODIFICACIÓN[..CODIFICACIÓN]...; CODIFICACIÓN é [XOGO][/[SUPERFICIE]]...; PETICIÓN adoita parecer INICIAL..FINAL, sendo INICIAL e FINAL uns xogos de caracteres. Se non se indica un XOGO tómase o xogo normal; se non se indica unha [/SUPERFICIE]... tómanse as superficies implicadas en XOGO; cunha / cun nome de superficie baleiro non se toma ningunha superficie. Lea o manual. Uso: %s [OPCIÓN]... [ [XOGO-DE-CARACTERES] | PETICIÓN [FICHEIRO]... ] feito %s a %s%spara a secuencia %s.%s*Inalcanzábel**simple copia*Saída ambiguaNon foi posíbel completar a táboa dado o conxunto de pares coñecidosNon é posíbel inverter a táboa un-a-un dadaNon foi posíbel listar «%s», non hai nomes dispoñíbeis para este xogoO xogo de caracteres %s xa existe e non é %sXogo de caracteres «%s» descoñecido ou ambiguoO estado de espera do proceso fillo é 0x%0.2xDec Oct Hex UCS2 Mne %s Esperábase «..» na peticiónSeguen os diagnósticos para «%s» a «%s»O formato «%s» é ambiguoO formato «%s» é descoñecidoRecodificación identidade, non merece a mágoa facer unha táboaFallo interno na recodificaciónEntrada incorrectaLN é unha linguaxe, pode ser `c', `perl' ou `po'; `c' por defecto. A linguaxe «%s» é ambiguaA linguaxe «%s» é descoñecidaUso incorrecto da biblioteca de recodificaciónSen errosNon hai ningunha táboa que mostrarNon hai xeito de recodificar de «%s» a «%s»Sen saída normalizadaRecodificando %s...A recodificación é demasiado complicada para unha simple táboaA petición «%s» é erróneaPetición: %s Falta o argumento requiridoAplicáronse superficies máis dunha vez para «%s»A secuencia «%s» é ambiguaA secuencia «%s» é descoñecidaEncollido a: %s Síntoo, non hai nomes dispoñíbeis para «%s»Produciuse un erro ao inicializar o pasoProduciuse un erro ao inicializar o paso (opcións sen procesar)O símbolo «%s» é descoñecidoO sistema detectou un problemaIsto é software libre; vexa o código fonte polas condicións de copia. NON hai garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA UN FIN DETERMINADO. Escriba «%s %s» para obter máis información. UCS2 Mne Descrición A menos que se defina a variábel de ambiente DEFAULT_CHARSET, XOGO é o do `locale'. Nome de superficie «%s» non recoñecidoQuitáronse superficies máis dunha vez para «%s»Entrada non traducíbelMemoria virtual esgotadaMemoria virtual esgotada!Con -k, os posíbeis xogos iniciais lístanse para o XOGO final indicado, sendo os dous xogos tabulares, con PARES da forma `INI1:FIN1,INI2:FIN2,...' e os códigos INI e FIN dándose coma números decimais. bytereversíbelucs2v ariábelrecode-3.7.15/po/hr.po0000644000175000017500000004237514766021055010141 # GNU recode .PO message translation file # Copyright (C) 2002 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # Mirsad Todorovac , 2002. # Tomislav Krznar , 2012. # msgid "" msgstr "" "Project-Id-Version: recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2012-07-03 00:23+0200\n" "Last-Translator: Tomislav Krznar \n" "Language-Team: Croatian \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" #: src/main.c:112 msgid "No error" msgstr "Nema greÅ¡ke" #: src/main.c:115 msgid "Non canonical input" msgstr "Unos nije kanonski" #: src/main.c:118 msgid "Ambiguous output" msgstr "ViÅ¡eznaÄan izlaz" #: src/main.c:121 msgid "Untranslatable input" msgstr "Neprevodiv unos" #: src/main.c:124 msgid "Invalid input" msgstr "Neispravan unos" #: src/main.c:127 msgid "System detected problem" msgstr "Sustav je otkrio problem" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Neispravno koriÅ¡tenje biblioteke za promjenu kodiranja" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Interna greÅ¡ka promjene kodiranja" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Ovaj program je slobodan; možete ga distribuirati i/ili\n" "mijenjati pod uvjetima GNU Opće javne licence kako ju je\n" "objavio Free Software Foundation; ili inaÄice 2 Licence,\n" "ili (po vaÅ¡em izboru) bilo koje novije inaÄice.\n" "\n" "Ovaj program se distribuira u nadi da će biti koristan, ali\n" "BEZ IKAKVOG JAMSTVA; Äak i bez podrazumijevanog jamstva\n" "TRGOVINSKE PRIKLADNOSTI ili ODGOVARANJA ODREÄENOJ SVRSI. Za\n" "detalje proÄitajte GNU Opću javnu licencu.\n" "\n" "Trebali ste dobiti primjerak GNU Opće javne licence uz ovaj\n" "program; ako niste, piÅ¡ite na adresu: Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "PokusÌŒajte „%s %s†za visÌŒe informacija.\n" #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "Slobodni „recode†pretvara datoteke izmeÄ‘u raznih skupova znakova i ploha.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Uporaba: %s [OPCIJA]... [ [SKUPZNAKOVA] | ZAHTJEV [DATOTEKA]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Ako dugaÄka opcija prikazuje argument kao obavezan, onda je obavezan i\n" "za odgovarajuću kratku opciju. Isto vrijedi i za opcionalne argumente.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Ispisi:\n" " -l, --list[=OBLIK] ispiÅ¡i jedan ili sve poznate skupove znakova i\n" " aliase\n" " -k, --known=PAROVI ograniÄi skupove znakova prema poznatom popisu\n" " „PAROVIâ€\n" " -h, --header[=[JEZIK/]IME] ispiÅ¡i tablicu IME na standardni izlaz " "koristeći\n" " JEZIK, zatim izaÄ‘i\n" " -F, --freeze-tables ispiÅ¡i C modul koji sadrži sve tablice\n" " -T, --find-subsets napravi izvjeÅ¡taj o svim skupovima znakova " "koji\n" " su podskup drugih\n" " -C, --copyright prikaži Copyright i uvjete kopiranja\n" " --help prikaži ovu pomoć i izaÄ‘i\n" " --version ispiÅ¡i informacije o inaÄici i izaÄ‘i\n" #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "NaÄini rada:\n" " -v, --verbose objasni nizove koraka i izvjeÅ¡tavaj o napretku\n" " -q, --quiet, --silent zabrani poruke o nepovratnim promjenama kodiranja\n" " -f, --force prisilno promijeni kodiranja, Äak i kad su\n" " nepovratna\n" " -t, --touch izvrÅ¡i „touch†na datotekama s promijenjenim\n" " kodiranjem nakon zamjene\n" " -i, --sequence=files koristi privremene datoteke za korake " "sekvenciranja\n" " --sequence=memory koristi memorijske meÄ‘uspremnike za korake\n" " sekvenciranja\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Fino podeÅ¡avanje:\n" " -s, --strict koristi stroga mapiranja, Äak uz gubljenje znakova\n" " -d, --diacritics pretvori samo dijakritike i sliÄno za HTML/LaTeX\n" " -S, --source[=JEZIK] ograniÄi promjene kodiranja na znakovne nizove i\n" " komentare u datoteci izvornog koda za JEZIK\n" " -c, --colons koristi dvotoÄke umjesto dvostrukih navodnika za " "„̈̈̈¨̈â€\n" " -g, --graphics aproksimiraj IBMPC ravnala ASCII grafikom\n" " -x, --ignore=SKUPZNAKOVA zanemari SKUPZNAKOVA pri izboru puta promjene\n" " kodiranja\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Ako uz opciju -l nije naveden OBLIK ili SKUPZNAKOVA, ispisat će sve dostupne " "skupove znakova i plohe.\n" "OBLIK može biti „decimalâ€, „octalâ€, „hexadecimal†ili „full†(ili jedan od " "„dohfâ€).\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Osim ako je DEFAULT_CHARSET postavljen u okolini, SKUPZNAKOVA je uobiÄajeno " "kodiranje ovisno o lokalu, odreÄ‘eno varijablama LC_ALL, LC_CTYPE i LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Uz -k, moguće prije ispisivanja skupova znakova za zadani nakon " "SKUPZNAKOVA,\n" "gdje su oba tabliÄni skupovi znakova, gdje su PAROVI u obliku\n" "„PRI1:NAK1,PRI2:NAK2,...†i gdje su PRI i NAK kodovi zadani kao dekadski " "brojevi.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "JEZIK je neki jezik, može biti npr. „câ€, „perl†ili „poâ€; „c†je zadani.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "ZAHTJEV je PODZAHTJEV[,PODZAHTJEV]...; PODZAHTJEV je KODIRANJE[.." "KODIRANJE]...\n" "KODIRANJE je [SKUPZNAKOVA][/[PLOHA]]...; ZAHTJEV obiÄno izgleda kao PRIJE.." "NAKON,\n" "gdje su PRIJE i NAKON skupovi znakova. Izostavljeni SKUPZNAKOVA " "podrazumijeva\n" "uobiÄajeni skup znakova; izostavljena [/PLOHA]... oznaÄava podrazumijevanu " "plohu\n" "za SKUPZNAKOVA; / uz praznu plohu oznaÄava da nema ploha. Pogledajte " "priruÄnik.\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Ako nisu navedene -i i -p, pretpostavi -p ako nije navedena DATOTEKA, inaÄe -" "i.\n" "Svaka DATOTEKA se ponovo kodira preko nje same, uniÅ¡tavajući izvornu. Ako " "nije\n" "navedena DATOTEKA, ponaÅ¡aj se kao filtar i promijeni kodiranje sa " "standardnog\n" "ulaza na standardni izlaz.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Simbol „%s†je nepoznat" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Niz „%s†je viÅ¡eznaÄan" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Niz „%s†je nepoznat" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Jezik „%s†je visÌŒeznacÌŒan" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Jezik „%s†je nepoznat" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Oblik „%s†je visÌŒeznacÌŒan" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Oblik „%s†je nepoznat" #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "Napisao Franc,ois Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Ovo je slobodan softver; pogledajte kod za upute o kopiranju. NEMA\n" "jamstava; cÌŒak ni za TRGOVINSKU PRIKLADNOST ili ODGOVARANJE ODREÄENOJ SVRSI.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Skup znakova „%s†je nepoznat ili viÅ¡eznaÄan" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Nedostaje nužan argument" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Zahtjev „%s†ima greÅ¡ke" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Mijenjam kodiranje %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " gotovo\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " neuspjeh: %s u koraku „%s..%sâ€\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s u koraku „%s..%sâ€" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s nije uspio: %s u koraku „%s..%sâ€" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Skup znakova %s već postoji i nije %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Ne mogu ispisati „%sâ€, nema dostupnih imena ovog skupa znakova" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Žao mi je, nema dostupnih imena za „%sâ€" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "MjenjaÄ plohe postavljen viÅ¡e od jednom za „%sâ€" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Uklanjatelj plohe postavljen viÅ¡e od jednom za „%sâ€" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Virtualna memorija iscrpljena" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Kodovi %3d i %3d mijenjaju kodiranje u %3d" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "Nijedan znak ne mijenja kodiranje u %3d" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Ne mogu obrnuti zadanu jedan-na-jedan tablicu" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Slijedim dijagnostiku za „%s†u „%sâ€" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Par br. %d: <%3d, %3d> je u konfliktu s <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Ne mogu dovrÅ¡iti tablicu iz skupa poznatih parova" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Identitetna promjena kodiranja, tablica nije potrebna" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Promjena kodiranja je prekomplicirana za obiÄnu tablicu" #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sTablicu pretvaranja je mehaniÄki napravio slobodni „%s†%s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sza niz %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Nema tablice za ispis" #: src/request.c:35 msgid "reversible" msgstr "moguć povratak" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s u %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "bajt" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "varijabla" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Neizvedivo*" #: src/request.c:111 msgid "*mere copy*" msgstr "*obiÄno kopiranje*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Virtualna memorija iscrpljena!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Inicijalizacija koraka nije uspjela" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Inicijalizacija koraka nije uspjela (neobraÄ‘ene opcije)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Zahtjev: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Smanjeno na: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Neprepoznato ime plohe „%sâ€" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Nema naÄina za promjenu kodiranja iz „%s†u „%sâ€" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "OÄekujem „..†u zahtjevu" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Stanje Äekanja procesa djeteta je 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Opis\n" "\n" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=pipe koristi cjevovodni (pipe) podsustav za\n" #~ " korake sekvenciranja\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe isto kao -i (na ovom sustavu)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Prijavite greÅ¡ke na .\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Sintaksa je zastarjela, molim koristite „%sâ€" recode-3.7.15/po/boldquot.sed0000644000175000017500000000033114371446047011504 s/"\([^"]*\)"/“\1â€/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“â€/""/g s/“/“/g s/â€/â€/g s/‘/‘/g s/’/’/g recode-3.7.15/po/sk.po0000644000175000017500000004201114766021055010130 # Slovak translation of recode # Copyright (C) 2001 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # Ivan Masár , 2008. # msgid "" msgstr "" "Project-Id-Version: recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2008-04-18 10:24+0100\n" "Last-Translator: Ivan Masár \n" "Language-Team: Slovak \n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" #: src/main.c:112 msgid "No error" msgstr "Žiadna chyba" #: src/main.c:115 msgid "Non canonical input" msgstr "Chýba kanonický vstup" #: src/main.c:118 msgid "Ambiguous output" msgstr "NejednoznaÄný výstup" #: src/main.c:121 msgid "Untranslatable input" msgstr "Nepreložiteľný vstup" #: src/main.c:124 msgid "Invalid input" msgstr "Neplatný vstup" #: src/main.c:127 msgid "System detected problem" msgstr "Systém zistil problém" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Chybné použitie knižnice na zmenu kódovania" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Vnútorná chyba zmeny kódovania" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Tento program je slobodný softvér; môžete ho šíriÅ¥ a modifikovaÅ¥\n" "podľa podmienok GNU General Public License, ktorú publikovala\n" "Free Software Foundation; buÄ verzie 2 alebo (podľa vášho\n" "rozhodnutia) ktorejkoľvek neskorÅ¡ej verzie.\n" "\n" "Tento program je rozÅ¡irovaný v nádeji, že bude užitoÄný, avÅ¡ak BEZ " "AKEJKOĽVEK\n" "ZÃRUKY; neposkytujú sa ani odvodené záruky PREDAJNOSTI alebo VHODNOSTI NA\n" "KONKRÉTNY ÚČEL. ÄŽalÅ¡ie podrobnosti nájdete v GNU General Public License.\n" "\n" "Kópia GNU General Public License mala byÅ¥ dodaná spolu s týmto\n" "programom; pokiaľ sa tak nestalo, napíšte do Free Software Foundation, " "Inc.,\n" "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Skúste viac informácií pomocou „%s %s“\n" #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "„recode“ prevádza súbory medzi rôznymi znakovými sadami a povrchmi.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Použitie: %s [VOĽBA]... [ [ZNAKSAD] | CIEĽ [SÚBOR]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Ak je pri dlhej voľbe zobrazený argument ako povinný, je povinný aj\n" "pri zodpovedajúcej krátkej voľbe. Obdobne pre voliteľné argumenty.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Výpisy:\n" " -l, --list[=FORMÃT] vypísaÅ¥ jednu alebo vÅ¡etky známe znakové sady a " "aliasy\n" " -k, --known=PÃRY obmedziÅ¥ znakové sady podľa známeho zoznamu " "PÃRov\n" " -h, --header[=[JA/]MENO] zapísaÅ¥ na Å¡tand. výstup tabuľku MENO pomocou " "JA, potom skonÄiÅ¥\n" " -F, --freeze-tables zapísaÅ¥ C modul obsahujúci vÅ¡etky tabuľky\n" " -T, --find-subsets oznamovaÅ¥ vÅ¡etky znakové sady ako podmnožiny " "iných\n" " -C, --copyright zobraziÅ¥ autorské práva a podmienky šírenia\n" " --help zobraziÅ¥ tohto pomocníka a skonÄiÅ¥\n" " --version zobraziÅ¥ informácie o verzii a skonÄiÅ¥\n" #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Režimy prevádzky:\n" " -v, --verbose vysvetliÅ¥ postupnosÅ¥ krokov a oznamovaÅ¥ priebeh\n" " -q, --quiet, --silent potlaÄiÅ¥ správy o nevratnej zmene kódovania\n" " -f, --force vynútiÅ¥ zmenu kódovania aj ak je nevratná\n" " -t, --touch po zmene aktualizovaÅ¥ dátum súboru\n" " -i, --sequence=files pri následných prechodoch použiÅ¥ doÄasné súbory\n" " --sequence=memory pri následných prechodoch použiÅ¥ odkladanie v " "pamäti\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "DolaÄovanie:\n" " -s, --strict použiÅ¥ prísne mapovanie, povoliÅ¥ stratu znakov\n" " -d, --diacritics previesÅ¥ iba diakritiku alebo pod. pre HTML/LaTeX\n" " -S, --source[=JA] obmedziÅ¥ zmenu kódovania na reÅ¥azce a komentáre " "podľa JA\n" " -c, --colons použiÅ¥ na mieste úvodzoviek apostrofy namiesto " "dvojitých apostrofov\n" " -g, --graphics aproximovaÅ¥ IBMPC okraje pomocou ASCII grafiky\n" " -x, --ignore=ZNAKSAD ignorovaÅ¥ ZNAKSAD pri výbere cesty zmeny kódovania\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Voľba -l bez FORMÃTu a ZNAKSAD zobrazí dostupné znakové sady a povrchy.\n" "FORMÃT je „decimal“, „octal“, „hexadecimal“ alebo „full“ (alebo jedno z " "„dohf“).\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Ak nie je v prostredí nastavená premenná DEFAULT_CHARSET, ZNAKSAD bude\n" "Å¡tandardne kódovanie závislé na lokálnom nastavení, ktoré urÄujú LC_ALL, " "LC_CTYPE, LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Voľba -k zobrazí pre danú ZNAKSAD možné znakové sady PRED kde obe sú,\n" "tabuľkové znakové sady s PÃRMIO v tvare „PRED1:PO1,PRED2:PO2,...“\n" "a PRED a PO sú kódy uvedené ako desiatkové Äísla.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "JA je nejaký jazyk. Môže to byÅ¥ „c“, „perl“ alebo „po“; Å¡tandardne je to " "„c“.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "POŽIADAVKA je PODPOŽIADAVKA[,PODPOŽIADAVKA]...; PODPOŽIADAVKA je KÓDOVANIE[.." "KÓDOVANIE]...\n" "KÓDOVANIE je [ZNAKSAD][/[POVRCH]]...; POŽIADAVKA Äasto vyzerá nasledovne: " "PRED..PO,\n" "kde PRED a PO sú znakové sady. Vynechaná ZNAKSAD znamená zvyÄajnú\n" "znakovú sadu; vynechaný [/POVRCH]... znamená zvyÄajné povrchy ZNAKSAD;/\n" "prázdny názov povrchu znamená žiadny povrch. Pozri príruÄku.\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Ak nie je zadaná žiadna z volieb -i a -p, predpokladá sa -p ak nie je\n" "SÚBOR, inak -i. Kódovanie každého SÚBORu sa mení na mieste, Äím sa\n" "prepíše originál. Ak nie je zadaný SÚBOR, funguje ako filter a mení\n" "kódovanie Å¡tandardného vstupu na Å¡tandardný výstup.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Symbol „%s“ je neznámy" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "PostupnosÅ¥ „%s“ je nejednoznaÄná" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "PostupnosÅ¥ „%s“ je neznáma" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Jazyk „%s“ je nejednoznaÄný" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Jazyk „%s“ je neznámy" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Formát „%s“ je nejednoznaÄný" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Formát „%s“ je neznámy" #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "Napísal Franc,ois Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Tento program je slobodný softvér; podmienky šírenia nájdete v zdrojovom\n" "kóde. Neexistuje ŽIADNA ZÃRUKA; neposkytujú sa ani záruky PREDAJNOSTI\n" "alebo VHODNOSTI NA KONKRÉTNY ÚČEL.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Znaková sada „%s“ je neznáma alebo nejednoznaÄná" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Chýba povinný argument" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Požiadavka „%s“ je chybná" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "Mení sa kódovanie %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " hotovo\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " zlyhalo: %s v kroku „%s..%s“\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s v kroku „%s..%s“" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s zlyhalo: %s v kroku „%s..%s“" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Znaková sada %s už existuje a nie je %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Nemožno vypísaÅ¥ „%s“, táto znaková sada nemá dostupné žiadne názvy" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Okt Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "PrepáÄte, pre „%s“ nie sú dostupné žiadne názvy" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Zmena povrchu nastavená viac než raz pre „%s“" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Odstránenie povrchu nastavené viac než raz pre „%s“" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Virtuálna pamäť je vyÄerpaná" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Kódy %3d a %3d sa oba menia na kód %3d" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "Žiadny znak sa nemení na kód %3d" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Nie je možné invertovaÅ¥ danú tabuľku jedna k jednej" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Nasleduje diagnostika „%s“ na „%s“" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "ÄŒ. páru %d: <%3d, %3d> je v konflikte s <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Nie je možné dokonÄiÅ¥ tabuľku z množiny známych párov" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Identická zmena kódovania, na to sa neoplatí používaÅ¥ tabuľku" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "" "Zmena kódovanie je príliÅ¡ zložitá než aby sa dala jednoducho použiÅ¥ tabuľka" #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sKonverznú tabuľku vytvoril automaticky program „%s“ %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sza postupnosÅ¥ %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Niet žiadnej tabuľky na výpis" #: src/request.c:35 msgid "reversible" msgstr "vratná" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s na %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "bajt" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "premenná" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Nedosiahnuteľné*" #: src/request.c:111 msgid "*mere copy*" msgstr "*prosté kopírovanie*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Virtuálna pamäť je vyÄerpaná!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Inicializácia kroku zlyhala" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Inicializácia kroku zlyhala (nespracované voľby)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Požiadavka: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "ZmrÅ¡tené na: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nerozpoznaný názov povrchu „%s“" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Neexistuje spôsob zmeny kódovania z „%s“ na „%s“" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "V požiadavke sa oÄakávalo „..“" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Stav Äakania detského procesu je 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Popis\n" "\n" #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=pipe pri následných prechodoch použiÅ¥ mechanizmus " #~ "rúr\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe ekvivalent -i (na tomto systéme)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Chyby oznamujte na adresu .\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "NeodporúÄa sa používaÅ¥ túto syntax, dajte prosím prednosÅ¥ „%s“" recode-3.7.15/po/sr.gmo0000644000175000017500000002766114766021055010321 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“œ6µæìCÓ+ÈCO j\ÇØVá8Vm‰\£Z z[ KÖ L"!Jo!Jº!."+4"B`")£"+Í"Qù"4K#€#”ž#'3$)[$O…$?Õ$%+-%DY%ž%C¼%ˆ&‰&e¢&+'4'6F'^}'-Ü'1 (<(HU(1ž(UÐ(+&)-R) €)C¡*å*C+AG,\‰,æ,5-6:-¯q-X!/z/ƒ/”/œ/+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: recode-3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2020-04-02 17:01+0200 Last-Translator: МироÑлав Ðиколић Language-Team: Serbian <(nothing)> Language: sr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Generator: Virtaal 0.7.1 X-Bugs: Report translation errors to the Language-Team address. Свака ДÐТОТЕКРÑе прекодира преко Ñебе Ñаме, уништавајући оригинал. Ðко ниједна ДÐТОТЕКРније наведена, онда Ñе понаша као филтер и рекодира Ñтанд. улаз на Ñтанд. излаз. Ðко је у дугој опцији неки аргумент обавезан, онда је обавезан и за одговарајућу кратку опцију. Слично и за аргументе опције. Режими деловања: -v, --verbose објашњава низ корака и извештава о напретку -q, --quiet, --silent не приказује поруке о неповратним рекодирањима -f, --force приморава рекодирања чак и кад Ñу неповратна -t, --touch додирује рекодиране датотеке након замене -i, -p, --sequence=СТРÐТЕГИЈРзанемарено зарад ÑаглаÑноÑти Опција -l без ФОРМÐТРи без СКУПÐЗÐÐКОВРизлиÑтава раÑположиве Ñкупове знакова и површине. ФОРМÐТ може бити „decimal“, „octal“, „hexadecimal“ или „full“ (или један од „dohf“). ЗÐХТЕВ је ПОДЗÐХТЕВ[,ПОДЗÐХТЕВ]...; ПОДЗÐХТЕВ је КОДИРÐЊЕ[..КОДИРÐЊЕ]... КОДИРÐЊЕ је [СКУПЗÐÐКОВÐ][/[ПОВРШИÐÐ]]...; ЗÐХТЕВ чеÑто има облик ПРЕ..ПОСЛЕ, где Ñу ПРЕ и ПОСЛЕ Ñкупови знакова. ИзоÑтављен СКУПЗÐÐКОВРподразумева уоби- чајени Ñкуп знакова; изоÑтављена [/ПОВРШИÐÐ]... значи подразумевана површина за СКУПЗÐÐКОВÐ; / Ñа празним називом површине значи да је уопште и нема. Погледајте упутÑтво. Грешке пријавите на „https://github.com/rrthomas/recode“ Употреба: %s [ОПЦИЈÐ]... [ [СКУПЗÐÐКОВÐ] | ЗÐХТЕВ [ДÐТОТЕКÐ]... ] урађено %s у %s%sТабелу претварања је механички Ñтворио „%s“ %s%sза Ñеквенцу %s.%s*ÐедоÑтижно**проÑÑ‚ умножак*ÐејаÑан излазÐе могу да попуним табелу из Ñкупа познатих пароваÐе могу да преокрнем задату један-на-један табелуÐе могу да наведем „%s“, нема доÑтупних назива за овај Ñкуп знаковаСкуп знакова „%s“ већ поÑтоји и није „%s“Скуп знакова „%s“ је непознат или нејаÑанСтање чекања проиÑтеклог процеÑа је 0x%0.2xКодови „%3d“ и „%3u“ Ñе рекодирају у „%3d“Дец Окт Ð¥ÐµÐºÑ Ð£Ð¡Ð¦2 Мне %s Очекујем „..“ у захтевуПратим анализу Ñтања за „%s“ до „%s“Формат „%s“ је нејаÑанФормат „%s“ је непознатРекодирање идентитета, табела је непотребнаУнутрашња грешка рекодирањаÐеиÑправан улазПЈ је неки програмÑки језик, може бити „c“, „perl“ или „po“; подразумевани је „c“. Језик „%s“ је нејаÑанЈезик „%s“ је непознатÐеправилна употреба библиотеке рекодирањаÐиједан знак Ñе не рекодира у „%3u“Ðема грешакаÐема табеле за штампањеÐије могуће рекодирање из „%s“ у „%s“Ðеправилан улазПар број %u: <%3d, %3d> је у Ñукобу Ñа <%3d, %3d>„recode“ претвара датотеке између различитих знаковних Ñкупова и површина. Рекодирам %s...Рекодирање је Ñувише Ñложено за коришћење једне табелеЗахтев „%s“ је погрешанЗахтев: %s ÐедоÑтаје захтевани аргументПонављач површине је подешен више од једном за „%s“Секвенца „%s“ је нејаÑнаСеквенца „%s“ је непознатаПрошири на: %s Извините, нема доÑтупних назива за „%s“Корак покретања није уÑпеоКорак покретања није уÑпео (необрађене опције)Симбол „%s“ је непознатСиÑтем је открио проблемОво је Ñлободан Ñофтвер; погледајте извор за уÑлове умножавања. Ðе поÑтоји ÐИКÐКВРгаранција; чак ни за ТРЖИШÐУ ВРЕДÐОСТ или за ИСПУЊÐÐ’ÐЊЕ ОДРЕЂЕÐЕ ПОТРЕБЕ. Пробајте „%s %s“ за више информација. УСЦ2 Мне ÐžÐ¿Ð¸Ñ Ð£ÐºÐ¾Ð»Ð¸ÐºÐ¾ није поÑтављена променљива окружења „DEFAULT_CHARSET“, СКУПЗÐÐКОВРбиће коришћен оÑновни у Ñкладу Ñа локалним подешавањима кодирања, одређених Ñа „LC_ALL“, „LC_CTYPE“, „ЈЕЗИК“. Ðепрепознатљив назив површине „%s“Уклањач површине је подешен више од једном за „%s“Ðепреводив улазÐема више виртуелне меморијеÐема више виртуелне меморије!Са -k, излиÑтавају Ñе могући „пре“ Ñкупови знакова за задати „поÑле“ СКУПЗÐÐКОВÐ, где Ñу оба табеларни Ñкупови знакова, Ñа ПÐРОВИ-ма у облику „ПРЕ1:ПОС1,ПРЕ2:ПОС2,...“ и ПРЕ-ови и ПОС-ови, Ñ Ð¾Ð±Ð·Ð¸Ñ€Ð¾Ð¼ да Ñу кодови, Ñу дати у децималном облику. Програм је напиÑао ФранÑуа Пинар . бајтповратноуÑц2променљивоrecode-3.7.15/po/uk.gmo0000644000175000017500000003137514766021055010311 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“œ?¶3öÞ*m Bwcºq  £ o¬ )!F!_!0!h°!x"²’"hE#Z®#M $\W$'´$&Ü$h%1l%)ž%IÈ%6&*I&t&-ö&%$'bJ'G­'õ'+(O;(,‹(:¸(oó( c)b„))ç)*;!*C]*?¡*7á*+D4+By+¼+)J,2t,‘§,]9.—.ý¯.4­/Câ/D&0=k0>©0Œè0Yu2Ï2Ø2ë2 ð2+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: GNU recode 3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2019-05-21 16:26+0300 Last-Translator: Yuri Chornoivan Language-Team: Ukrainian Language: uk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Generator: Lokalize 19.04.0 Кожен з файлів ФÐЙЛ буде перекодовано Ñ– перезапиÑано із втратою початкових даних. Якщо не буде вказано ФÐЙЛ, програма працюватиме Ñк фільтр, перекодовуючи дані зі stdin до stdout. Якщо у довгій верÑÑ–Ñ— параметра вказано, що аргумент Ñ” обов'Ñзковим, він Ñ” обов'Ñзковим Ñ– Ð´Ð»Ñ Ñкороченої верÑÑ–Ñ— параметра. Те Ñаме ÑтоÑуєтьÑÑ Ð½ÐµÐ¾Ð±Ð¾Ð²'Ñзкових аргументів. Режими роботи: -v, --verbose вивеÑти поÑÑÐ½ÐµÐ½Ð½Ñ Ð¿Ð¾ÑлідовноÑті кроків Ñ– повідомити про поÑтуп -q, --quiet, --silent не виводити Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ незворотного Ð¿ÐµÑ€ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ -f, --force примуÑово виконати перекодуваннÑ, навіть Ñкщо воно Ñ” незворотним -t, --touch оновити чаÑову позначку перекодованих файлів піÑÐ»Ñ Ð·Ð°Ð¼Ñ–Ð½Ð¸ -i, -p, --sequence=СТРÐТЕГІЯ буде проігноровано, призначено Ð´Ð»Ñ Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¾Ñ— ÑуміÑноÑті Параметр -l без аргументів ФОРМÐТ та ÐÐБІР_СИМВОЛІВ виводить ÑпиÑок уÑÑ–Ñ… доÑтупних наборів Ñимволів та прив'Ñзок. ЗначеннÑм аргумент ФОРМÐТ може бути «decimal», «octal», «hexadecimal» або «full» (або одне із «dohf»). ЗÐПИТ Ñ” запиÑом ПІДЗÐПИТ[,ПІДЗÐПИТ]...; ПІДЗÐПИТ Ñ” запиÑом КОДУВÐÐÐЯ[..КОДУВÐÐÐЯ]... КОДУВÐÐÐЯ Ñ” запиÑом [ÐÐБІР_СИМВОЛІВ][/[ПРИВ'ЯЗКÐ]]...; ЗÐПИТ чаÑто виглÑдає Ñк ДО..ПІСЛЯ, де ДО Ñ– ПІСЛЯ Ñ” наборами Ñимволів. Якщо ÐÐБІР_СИМВОЛІВ не вказано, припуÑкаєтьÑÑ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ð¹ набір Ñимволів; Ñкщо не вказано [/ПРИВʼЯЗКÐ]..., буде викориÑтано типові ПРИВ'ЯЗКИ Ð´Ð»Ñ ÐÐБОРУ_СИМВОЛІВ; / з порожньою назвою прив'Ñзки означає, що прив'Ñзки взагалі не Ñлід викориÑтовувати. Див. підручник. ПовідомлÑєте про вади на Ñторінці https://github.com/rrthomas/recode КориÑтуваннÑ: %s [ПÐРÐМЕТР]... [ [ÐÐБІР_СИМВОЛІВ] | ЗÐПИТ [ФÐЙЛ]... ] виконано %s у %s%sТаблицю Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñтворено автоматично за допомогою %s %s%sÐ´Ð»Ñ Ð¿Ð¾ÑлідовноÑті %s.%s*ÐедоÑтупний**лише копіюваннÑ*Ðеоднозначні вихідні даніÐе вдалоÑÑ Ñтворити таблицю на оÑнові набору відомих парÐе вдалоÑÑ Ñ–Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ задану таблицю однозначної відповідноÑтіÐе вдалоÑÑ Ð¿Ð¾Ð±ÑƒÐ´ÑƒÐ²Ð°Ñ‚Ð¸ ÑпиÑок Ð´Ð»Ñ Â«%s», оÑкільки немає назв, Ñкі доÑтупні Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ набору ÑимволівÐабір Ñимволів %s вже Ñ–Ñнує Ñ– має назву, Ñка відмінна від %sÐабір Ñимволів «%s» Ñ” невідомим або неоднозначнимСтан Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½ÑŒÐ¾Ð³Ð¾ процеÑу — 0x%0.2xСимволи з кодами %3d Ñ– %3u обидва перекодовуютьÑÑ Ñƒ %3dÐ”ÐµÑ Ð’Ñ–Ñ Ð¨Ñ–ÑÑ‚ UCS2 Mne %s Мало бути `..' у запитіÐижче наведено діагноÑтику Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð· «%s» до «%s»Формат «%s» Ñ” неоднозначнимФормат «%s» Ñ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¼ÐŸÐµÑ€ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ, не варте Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ–Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð²Ð°Ð´Ð° перекодуваннÑÐекоректні вхідні даніLN — ÑкаÑÑŒ мова; можна вказати «c», «perl» або «po»; типовим варіантом Ñ” «c». Мова «%s» Ñ” неоднозначноюМова «%s» Ñ” невідомоюПомилкове викориÑÑ‚Ð°Ð½Ð½Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½ÑÐемає Ñимволу, Ñкий перекодуєтьÑÑ Ð´Ð¾ %3uÐемає помилокÐемає таблиці Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒÐе Ñ–Ñнує ÑпоÑобу Ð¿ÐµÑ€ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð· «%s» до «%s»Ðеканонічні вхідні даніПара %u: <%3d, %3d> конфліктує з <%3d, %3d>Recode перетворює файли у різних наборах Ñимволів Ñ– прив'Ñзках. Перекодовуємо %s...ÐŸÐµÑ€ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ñ” надто Ñкладним Ð´Ð»Ñ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ñ— таблиціЗапит «%s» Ñ” помилковимЗапит: %s Пропущено обов'Ñзковий аргументResurfacer вказано декілька разів Ð´Ð»Ñ Â«%s»ПоÑлідовніÑть «%s» Ñ” неоднозначноюПоÑлідовніÑть «%s» Ñ” невідомоюСтиÑнуто до: %s Вибачте, немає доÑтупних назв Ð´Ð»Ñ Â«%s»Помилка під Ñ‡Ð°Ñ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— крокуПомилка під Ñ‡Ð°Ñ Ñпроби ініціалізації кроку (непридатні до обробки параметри)Символ «%s» Ñ” невідомимСиÑтемою виÑвлено проблемуЦе програмне Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ñ” вільним, умови ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ»Ð°Ð´ÐµÐ½Ð¾ у його початкових кодах. Умовами Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ ÐЕ передбачено жодних гарантій, зокрема гарантій працездатноÑті або придатноÑті Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¾Ñ— мети. Спробуйте ÑкориÑтатиÑÑ `%s %s', щоб дізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ. UCS2 Mne ÐžÐ¿Ð¸Ñ Ð¯ÐºÑ‰Ð¾ у Ñередовищі не визначено DEFAULT_CHARSET, типовим значеннÑм параметра ÐÐБІР_СИМВОЛІВ буде ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¾ÐºÐ°Ð»Ñ–, Ñке визначаєтьÑÑ LC_ALL, LC_CTYPE, LANG. Ðевідома назва прив'Ñзки «%s»Unsurfacer вказано декілька разів Ð´Ð»Ñ Â«%s»Ðепридатні до транÑлÑції вхідні Ð´Ð°Ð½Ñ–ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ñ— пам'ÑÑ‚Ñ–ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ñ— пам'Ñті!Якщо вказано -k, буде виведено можливі початкові ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð¾Ð³Ð¾ кінцевого ÐÐБОРУ_СИВОЛІВ, Ñкщо обидва Ñ” табличними, із ПÐРÐМИ у форматі «ДО1:ПІСЛЯ1,ДО2:ПІСЛЯ2,...», а ДО Ñ– ПІСЛЯ Ñ” кодами у форматі деÑÑткових чиÑел. Ðвтор — ФранÑуа ПіньÑÑ€ (François Pinard) . байтбієктивнеucs2зміннаrecode-3.7.15/po/de.po0000644000175000017500000004224514766021054010113 # German translation of recode. # Copyright (C) 1995, 1996, 2006 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # Ulrich Drepper , 1995. # Karl Eichwalder , 1996, 2006. # Mario Blättermann , 2019. # msgid "" msgstr "" "Project-Id-Version: recode 3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2019-05-24 13:35+0200\n" "Last-Translator: Mario Blättermann \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 19.04.1\n" #: src/main.c:112 msgid "No error" msgstr "Kein Fehler" #: src/main.c:115 msgid "Non canonical input" msgstr "Keine gültige Eingabe" #: src/main.c:118 msgid "Ambiguous output" msgstr "Mehrdeutige Ausgabe" #: src/main.c:121 msgid "Untranslatable input" msgstr "Nicht übersetzbare Eingabe" #: src/main.c:124 msgid "Invalid input" msgstr "Ungültige Eingabe" #: src/main.c:127 msgid "System detected problem" msgstr "Das System ist auf ein Problem gestoßen" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Falsche Benutzung der Umkodierungs-Bibliothek" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Interner Umkodierungsfehler" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Dieses Programm ist freie Software; Sie können es nach den Bedingungen\n" "der von der Free Software Foundation als »GNU General Public License«\n" "veröffentlichten Lizenz weitergeben und/oder verändern; dabei gilt\n" "die Version 3 oder (frei nach Ihrer Wahl) jede spätere Version.\n" "\n" "Dieses Programm wird in der Hoffnung verteilt, dass es nützlich ist,\n" "jedoch OHNE JEGLICHE GARANTIE; sogar ohne die implizite Garantie der\n" "MARKTFÄHIGKEIT oder der ERFÜLLUNG EINES BESTIMMTEN ZWECKES. In der\n" "»GNU General Public License« können weitere Einzelheiten nachgelesen\n" "werden.\n" "\n" "Sie sollten mit diesem Programm eine Kopie der \"GNU General Public " "License\"\n" "erhalten haben; wenn nicht, schreiben Sie an die Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "»%s %s« zeigt weitere Informationen.\n" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "Recode konvertiert Dateien zwischen diversen Zeichensätzen und\n" "-formaten.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Aufruf: %s [OPTION]… [ [ZEICHENSATZ] | ANFRAGE [DATEI]… ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Wenn eine Option ein Argument zwingend braucht, gilt das unabhängig\n" "davon, ob die Kurz- oder Langschreibweise der Option benutzt wird.\n" "Entsprechendes gilt für optionale Argumente.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Auflistungen:\n" " -l, --list[=FORMAT] Einen oder alle bekannten Zeichensätze und " "Aliase\n" " auflisten\n" " -k, --known=PAARE Zeichensätze auf Liste bekannter PAARE " "beschränken\n" " -h, --header[=[LN/]NAME] LN-Code für Tabelle NAME in die " "Standardausgabe\n" " schreiben und beenden\n" " -T, --find-subsets Alle Zeichensätze ausgeben, die Untermengen " "von\n" " anderen Zeichensätzen sind\n" " -C, --copyright Copyright und Kopierbedingungen anzeigen\n" " --help Diese Hilfe anzeigen\n" " --version Versionsnummer ausgeben und beenden\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Funktionsmodi:\n" " -v, --verbose Reihenfolge der Umkodierungsschritte und " "Fortschritt\n" " anzeigen\n" " -q, --quiet, --silent Keine Meldungen über nicht umkehrbare " "Umkodierungen\n" " -f, --force Umkodierung vornehmen, auch wenn sie nicht " "umkehrbar ist\n" " -t, --touch Nach der Umkodierung ein »touch« auf die " "umkodierte\n" " Datei ausführen\n" " -i, -p, --sequence=STRATEGIE\n" " nur zwecks Abwärtskompatibilität, wird ignoriert\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Feineinstellungen:\n" " -s, --strict Strikte Abbildung benutzen; nicht übersetzbare\n" " Zeichen verwerfen\n" " -d, --diacritics Nur Akzente/Umlaute umkodieren\n" " (z.B. für HTML/LaTeX/BibTeX)\n" " -S, --source[=LN] Bei LN nur Zeichenketten und Kommentare umkodieren\n" " -c, --colons »:« statt »\"« für Umlaute verwenden\n" " (z.B. »fu:r« statt »fu\"r«)\n" " -g, --graphics »Linienzeichen« des IBMPC-Zeichensatzes durch " "ähnliche\n" " ASCII-Zeichen darstellen\n" " -x, --ignore=ZEICHENSATZ\n" " ZEICHENSATZ bei der Wahl der Kodierungsschritte\n" " ignorieren\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Die Option -l ohne FORMAT und ZEICHENSATZ listet alle Zeichensätze und -" "formate\n" "auf. FORMAT ist »decimal«, »octal«, »hexadecimal« oder »full« (können durch " "den\n" "Anfangsbuchstaben abgekürzt werden)\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Wenn die Umgebungsvariable DEFAULT_CHARSET nicht gesetzt ist, gilt für\n" "ZEICHENSATZ die Locale-abhängiges Kodierung, festgelegt von LC_ALL,\n" "LC_CTYPE, LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Mit »-k« werden mögliche »Vorher«-Zeichensätze für den »Nachher«-" "ZEICHENSATZ\n" "ausgegeben, mit PAAREn der Form »VOR1:NACH1,VOR2:NACH2,…«, wobei die VORs " "und\n" "NACHs Codes sind. Alle Codes werden als Dezimalzahlen angegeben.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN ist eine Programmiersprache, z.B. »c«, »perl« oder »po«, wobei »c« die\n" "Voreinstellung ist.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "ANFRAGE ist UNTERANFRAGE[,UNTERANFRAGE]…; UNTERANFRAGE ist KODIERUNG[.." "KODIERUNG]…\n" "KODIERUNG ist [ZEICHENSATZ][/[SURFACE]]…; ANFRAGE ist meistens VORHER.." "NACHHER,\n" "wobei VORHER und NACHHER Zeichensätze sind. Ohne ZEICHENSATZ wird der " "übliche\n" "Zeichensatz benutzt; ohne [/SURFACE]… wird das für ZEICHENSATZ übliche " "Format\n" "angenommen; ein / ohne Angabe eines Formats heißt, dass kein Format " "angenommen\n" "wird. Siehe Anleitung.\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Jede DATEI wird bei mit der umkodierten Datei überschrieben. Wenn keine\n" "DATEI angegen ist, wird die Standardeingabe umkodiert und auf der\n" "Standardausgabe ausgegeben.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "Melden Sie Fehler auf https://github.com/rrthomas/recode\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "Symbol »%s« ist unbekannt" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "Abfolge »%s« ist zweideutig" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "Abfolge »%s« ist unbekannt" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "Sprache »%s« ist zweideutig" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "Sprache »%s« ist unbekannt" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "Format »%s« ist zweideutig" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "Format »%s« ist unbekannt" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Geschrieben von François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990-2018 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Dieses Programm ist freie Software; die genauen Nutzungsbedingungen\n" "sind der Datei »COPYING« in den Quellen zu entnehmen.\n" "Es wird keinerlei Gewährleistung übernommen; auch nicht für gewerbliche\n" "Nutzbarkeit oder Tauglichkeit zu einem anderen Zweck.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "Zeichensatz »%s« ist unbekannt oder zweideutig" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Erforderliches Argument fehlt" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "Anfrage »%s« ist fehlerhaft" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "»%s« wird umkodiert …" #: src/main.c:856 #, c-format msgid " done\n" msgstr " fertig\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " fehlgeschlagen: %s bei Schritt »%s..%s«\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s bei Schritt »%s..%s«" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s fehlgeschlagen: %s bei Schritt »%s..%s«" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Zeichensatz %s existiert bereits und ist nicht %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "»%s« kann nicht angezeigt werden, keine Namen für diesen Zeichensatz\n" " verfügbar" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Tut mir leid, aber es sind für »%s« keine Namen verfügbar" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "»Resurfacer« für »%s« mehr als einmal gesetzt." #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "»Unsurfacer« für »%s« mehr als einmal gesetzt." #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Virtueller Speicher voll" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Die Codes %3d und %3u werden beide zu %3d konvertiert" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Kein Zeichen wird zu %3u umkodiert" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Die gegebene »Eins-zu-Eins«-Tabelle kann nicht invertiert werden" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Folgende Diagnose für Konvertierung von »%s« nach »%s«" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Paar Nr. %u: <%3d, %3d> steht in Konflikt mit <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "" "Die Tabelle aus der Menge der bekannten Paare kann nicht vervollständigt " "werden" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Umkodierung ohne Änderung, zu trivial für eine Tabelle" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Umkodierung ist für eine einfache Tabelle zu kompliziert" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sKonvertierung automatisch generiert von %s %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sfür Folge %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Keine Tabelle auszugeben" #: src/request.c:35 msgid "reversible" msgstr "umkehrbar" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s nach %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "byte" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "variabel" #: src/request.c:109 msgid "*Unachievable*" msgstr "*unmöglich*" #: src/request.c:111 msgid "*mere copy*" msgstr "*einfache Kopie*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Virtueller Speicher voll!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Schrittinitialisierung fehlgeschlagen" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Schrittinitialisierung fehlgeschlagen (nicht beachtete Optionen)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Anfrage: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Geschrumpft zu: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Unbekannter »surface«-Name »%s«" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Keine Möglichkeit, von »%s« nach »%s« umzukodieren" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "In der Anfrage wird »..« erwartet" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Wartezustand des Kindprozesses ist 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Beschreibung\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Veraltete Syntax, bitte »%s« bevorzugen" recode-3.7.15/po/en@boldquot.header0000644000175000017500000000247114371446047012613 # All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # recode-3.7.15/po/zh_CN.gmo0000644000175000017500000001640014766021055010663 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€¥‰n/òž ‘=žÜ åï "350i;š"Ö#ù #>b"z»!Ðò f‚ $µ Úç18K9^˜ °½/Ó!6,Fs)‰³ ȤÕ3z®„É#N/r¢¸Ëáã êôù:. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2005-12-03 21:43+0800 Last-Translator: Meng Jie Language-Team: Chinese (simplified) Language: zh_CN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. X-Poedit-Basepath: z:\recode-3.6 é•¿é€‰é¡¹å¿…é¡»å¸¦çš„å‚æ•°åœ¨ä½¿ç”¨ä¸Žä¹‹ç­‰ä»·çš„短选项时也是必须的。å¯é€‰å‚数亦是如此。 选项 -l åŽå¦‚果没有指定“格å¼â€æˆ–“字符集â€ï¼Œåˆ™åˆ—出所有å¯ç”¨çš„字符集和外在编ç ã€‚ “格å¼â€å¯ä»¥ä¸ºâ€˜decimal’ã€â€˜octal’ã€â€˜hexadecimal’或‘full’(或者‘dohf’ 中的任一个字æ¯)。 â€œè¯·æ±‚â€æ ¼å¼ä¸ºâ€œå­è¯·æ±‚[,å­è¯·æ±‚]...â€ï¼›â€œå­è¯·æ±‚â€æ ¼å¼ä¸ºâ€œç¼–ç [..ç¼–ç ]...†“编ç â€æ ¼å¼ä¸ºâ€œ[字符集][/[外在编ç ]]...â€ï¼›â€œè¯·æ±‚â€ä¸€èˆ¬æœ‰â€œæº..目的â€çš„å½¢å¼ï¼Œ “æºâ€å’Œâ€œç›®çš„â€å‡ä¸ºå­—符集å。如果çœç•¥â€œå­—符集â€ï¼Œåˆ™è¡¨ç¤ºé€šå¸¸çš„字符集;如果çœç•¥ “[/外在编ç ]...â€åˆ™è¡¨ç¤ºâ€œå­—符集â€é»˜è®¤çš„外在编ç ï¼›åªç»™å‡ºâ€œ/â€è€Œåœ¨å…¶åŽä¸ç»™å‡ºä»» 何外在编ç åˆ™è¡¨ç¤ºæ²¡æœ‰ä»»ä½•外在编ç ã€‚详情请å‚è§æ‰‹å†Œã€‚ 用法:%s [选项]... [ [字符集] | 请求 [文件]...] å®Œæˆ %s 到 %s%s为转æ¢ç³»åˆ— %s.%s*无法到达**ä»…å¤åˆ¶*有歧义的输出无法从已知映射集中形æˆå®Œæ•´çš„转æ¢è¡¨æ— æ³•求出给定的一一对应转æ¢è¡¨çš„逆无法列出‘%s’,此字符集没有å¯ç”¨çš„字符å字符集 %s å·²å­˜åœ¨ä¸”å¹¶éž %s字符集‘%s’未知或有歧义å­è¿›ç¨‹ç­‰å¾…状æ€ä¸º 0x%0.2xå å…« åå…­ UCS2 助记 %s è¯·æ±‚ä¸­è¦æœ‰â€˜..’‘%s’到‘%sâ€™çš„è¯Šæ–­ä¿¡æ¯æ ¼å¼â€˜%s’æ„义䏿˜Žç¡®æ ¼å¼â€˜%s’未知æ’ç­‰å˜æ¢ï¼Œä¸éœ€è¦è½¬æ¢è¡¨å†…éƒ¨é‡æ–°ç¼–ç ç¼ºé™·æ— æ•ˆçš„è¾“å…¥â€œè¯­è¨€â€æ˜¯æŸç§ç¼–ç è¯­è¨€ï¼Œå¯ä»¥ä¸ºâ€˜c’ã€â€˜perl’或‘po’,‘c’为默认值。 语言‘%s’æ„义䏿˜Žç¡®è¯­è¨€â€˜%sâ€™æœªçŸ¥å¯¹é‡æ–°ç¼–ç åº“çš„ä½¿ç”¨ä¸æ­£ç¡®æ²¡æœ‰é”™è¯¯æ²¡æœ‰å¯ä»¥æ‰“å°çš„转æ¢è¡¨æ²¡æœ‰ä»Žâ€˜%sâ€™é‡æ–°ç¼–ç è‡³â€˜%sâ€™çš„é€”å¾„ä¸æ­£è§„çš„è¾“å…¥é‡æ–°ç¼–ç  %s...釿–°ç¼–ç å¤ªè¿‡å¤æ‚,无法以一张转æ¢è¡¨è¡¨ç¤ºè¯·æ±‚‘%s’有错误请求:%s 缺少需è¦çš„傿•°ä¸ºâ€˜%s’施加了多于一个的外在编ç åºåˆ—‘%s’æ„义䏿˜Žç¡®åºåˆ—‘%s’未知缩å‡åˆ°ï¼š%s 对ä¸èµ·ï¼Œâ€˜%s’没有å¯ç”¨çš„å­—ç¬¦åæ­¥éª¤åˆå§‹åŒ–失败步骤åˆå§‹åŒ–失败(未处ç†çš„选项)符å·â€˜%sâ€™æœªçŸ¥ç³»ç»Ÿé—®é¢˜æœ¬ç¨‹åºæ˜¯è‡ªç”±è½¯ä»¶ï¼›è¯·å‚看æºä»£ç çš„版æƒå£°æ˜Žã€‚æœ¬è½¯ä»¶ä¸æä¾›ä»»ä½•æ‹…ä¿ï¼› 包括没有适销性和æŸä¸€ä¸“用目的下的适用性担ä¿ã€‚ 请å°è¯•执行‘%s %s’以得到更多信æ¯ã€‚ UCS2 助记 æè¿° 如果没有设置 DEFAULT_CHARSET 环境å˜é‡ï¼Œå­—符集默认为区域选项的编ç ï¼Œç”± LC_ALL〠LC_CTYPEã€LANG 决定。 无法识别的外在编ç â€˜%s’为‘%sâ€™åŽ»é™¤äº†å¤šäºŽä¸€ä¸ªçš„å¤–åœ¨ç¼–ç æ— æ³•翻译的输入虚拟内存耗尽虚拟内存耗尽ï¼ä½¿ç”¨ -k 时,目标字符集å¯èƒ½å¯¹åº”的所有的æºå­—符集都将列出,两者å‡ä¸ºè¡¨æ ¼åŒ–的字符 集,“映射â€å…·æœ‰â€˜æº1:目标1,æº2:目标2,...’的形å¼ï¼Œå…¶ä¸­â€œæºxâ€å’Œâ€œç›®æ ‡xâ€å‡ 须以å进制数的形å¼ç»™å‡ºã€‚ 字节å¯é€†çš„ucs2å˜é‡recode-3.7.15/po/pl.gmo0000644000175000017500000002302414766021055010275 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“‹œº(¡ã›…±!ÌÓK Eì 2?>H‡­½1Ü#>2%q5—1Í)ÿ)Gc €¡5»+ñb6 ™º,Ô" $1+K"w,šUÇ :3 n ‹ š B´ #÷ !8!L!&_!>†!Å!ß!¿ö!1¶"è"¸#,¼#Bé#.,$[$y$$˜$9½%÷% ü%& &+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: recode 3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2019-05-23 20:15+0200 Last-Translator: Jakub Bogusz Language-Team: Polish Language: pl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit X-Bugs: Report translation errors to the Language-Team address. Każdy PLIK jest nadpisywany nowÄ… wersjÄ…, a oryginaÅ‚ niszczony. JeÅ›li nie podano PLIKU, program dziaÅ‚a jako filtr i przekodowuje ze standardowego wejÅ›cia na standardowe wyjÅ›cie. JeÅ›li argumenty sÄ… obowiÄ…zkowe dla dÅ‚ugich wersji opcji, to sÄ… one również obowiÄ…zkowe dla krótkich wersji. Analogicznie dla argumentów opcjonalnych. Tryby pracy: -v, --verbose wyjaÅ›nianie kolejnych kroków i postÄ™pów prac -q, --quiet, --silent bez komunikatów o nieodwracalnych zapisach -f, --force wymuszenie przekodowania, nawet jeÅ›li jest ono nieodwracalne -t, --touch uaktualnienie czasu zastÄ™powanych plików -i, -p, --sequence=STRATEGIA ignorowane dla zgodnoÅ›ci wstecznej Bez FORMATu lub ZESTAWu, opcja -l wyÅ›wietla dostÄ™pne zestawy i sposoby kodowania znaków. FORMAT to `decimal', `octal', `hexadecimal' lub `full', (lub jedna z liter `dohf'). POLecenie to PODPOL[,PODPOL]...; PODPOLecenie to ENKOD[..ENKOD]... ENKOD to [ZESTAW][/[KODOWANIE]]...; POLecenie czÄ™sto ma postać SKÄ„D..DOKÄ„D, gdzie SKÄ„D i DOKÄ„D sÄ… zestawami znaków. W miejsce pominiÄ™tego zestawu przyjmowany jest zestaw domyÅ›lny; W miejsce pominiÄ™tego [/KODOWANIA] przyjmowany jest domyÅ›lny sposób kodowania dla danego ZESTawu; sam znak / bez podanego KODOWANIA oznacza brak jakiegokolwiek kodowania. Szczegóły w dokumentacji. Błędy prosimy zgÅ‚aszać pod adresem https://github.com/rrthomas/recode SkÅ‚adnia: %s [OPCJA]... [ [ZESTAW_ZNAKÓW] | POLECENIE [PLIK]... ] skoÅ„czone %s na %s%sTablica przekodowaÅ„ wygenerowana automatycznie przez %s %s.%sdla sekwencji %s.%s*NieosiÄ…galne**zwykÅ‚a kopia*Dane wyjÅ›ciowe sÄ… dwuznaczneNie mogÄ™ utworzyć tablicy z zestawu znanych parNie mogÄ™ odwrócić danej tablicy Nie mogÄ™ wylistować `%s', brak nazw dla tego zestawu znakówZestaw %s już istnieje i nie jest %sZestaw znaków `%s' jest nieznany lub niejednoznacznyStan oczekiwania procesu potomnego wynosi 0x%0.2xKody %3d i %3u oba tÅ‚umaczÄ… siÄ™ na %3dDec Okt Hex UCS2 Mne %s Oczekiwano `..' w poleceniuDiagnostyka dla `%s' do `%s'Format `%s' jest niejednoznacznyFormat `%s' jest nieznanyPrzekodowanie jest proste, tablica nie jest potrzebnaWystÄ…piÅ‚ wewnÄ™trzny błąd przekodowaniaBłędne dane wejÅ›cioweLN jest jÄ™zykiem programowania, do wyboru `c', `perl' lub `po'. DomyÅ›lnÄ… wartoÅ›ciÄ… jest `c'. JÄ™zyk `%s' jest niejednoznacznyJÄ™zyk `%s' jest nieznanyBłędne użycie biblioteki przekodowujÄ…cejÅ»aden znak nie koduje siÄ™ na %3uBrak błęduBrak tablicy do wypisaniaPrzekodowanie `%s' na `%s' jest niemożliweDane wejÅ›ciowe nie sÄ… kanonicznePara nr %u: <%3d, %3d> konflikt z <%3d, %3d>Recode konwertuje pliki pomiÄ™dzy różnymi zestawami znaków i sposobami kodowania. Przekodowywanie %s...Przekodowanie jest zbyt skomplikowane na zwykłą tablicÄ™Polecenie `%s' jest błędnePolecenie: %s Brak wymaganego parametruProcedura rekodujÄ…ca zostaÅ‚a ustawiona wiÄ™cej niż raz dla `%s'Sekwencja `%s' jest niejednoznacznaSekwencja `%s' jest nieznanaZmniejszony do: %s Brak nazw dla `%s'Inicjalizacja kroku nie powiodÅ‚a siÄ™Inicjalizacja kroku nie powiodÅ‚a siÄ™ (nieprzetworzone opcje)Symbol `%s' jest nieznanySystem wykryÅ‚ problemOprogramowanie darmowe; warunki jego kopiowania znajdujÄ… siÄ™ w kodzie źródÅ‚owym. Nie podlega Å»ADNEJ gwarancji, nawet gwarancji PRZYDATNOÅšCI DO KONKRETNEGO ZASTOSOWANIA lub SPRZEDAÅ»Y. Polecenie `%s %s' wyÅ›wietli wiÄ™cej informacji. UCS2 Mne Description JeÅ›li zmienna Å›rodowiskowa DEFAULT_CHARSET nie jest ustawiona, domyÅ›lnym zestawem znaków jest kodowanie zależne od lokalizacji, okreÅ›lonej przez zmienne LC_ALL, LC_CTYPE i LANG. Nierozpoznana nazwa standardu kodowania `%s'Procedura dekodujÄ…ca zostaÅ‚a ustawiona wiÄ™cej niż raz dla `%s'Dane wejÅ›ciowe nie mogÄ… być przetÅ‚umaczonePamięć wirtualna wyczerpanaPamięć wirtualna wyczerpana!JeÅ›li podano opcjÄ™ -k, program wyÅ›wietla zestawy znaków z których można dokonać konwersji do podanego ZESTAWu docelowego. Oba sÄ… stabelaryzowanymi zestawami znaków z PARAmi postaci `SKÄ„D1:DOKÄ„D1,SKÄ„D2:DOKÄ„D2...', gdzie SKÄ„D i DOKÄ„D sÄ… kodami podanymi jako liczby dziesiÄ™tne. Autorem jest François Pinard . bajtodwracalnaucs2zmiennerecode-3.7.15/po/Rules-quot0000644000175000017500000000414214371446047011165 # This file, Rules-quot, can be copied and used freely without restrictions. # Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-create: $(MAKE) en@quot.po-update en@boldquot.po-create: $(MAKE) en@boldquot.po-update en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null \ | $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | \ { case `$(MSGFILTER) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-8] | 0.1[0-8].*) \ $(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \ ;; \ *) \ $(MSGFILTER) `echo $$lang | sed -e 's/.*@//'` \ ;; \ esac } 2>/dev/null > $$tmpdir/$$lang.new.po \ ; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header recode-3.7.15/po/pt.po0000644000175000017500000004034514766021055010146 # Protuguese (Portugal) Translation for the recode Package. # Copyright (C) 2019 Free Software Foundation, Inc. # This file is distributed under the same license as the recode package. # Pedro Albuquerque , 2019. # msgid "" msgstr "" "Project-Id-Version: GNU recode 3.7.1\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2019-09-26 07:29+0100\n" "Last-Translator: Pedro Albuquerque \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Geany / PoHelper 1.36\n" #: src/main.c:112 msgid "No error" msgstr "Sem erros" #: src/main.c:115 msgid "Non canonical input" msgstr "Entrada não canónica" #: src/main.c:118 msgid "Ambiguous output" msgstr "Saída ambígua" #: src/main.c:121 msgid "Untranslatable input" msgstr "Entrada intraduzível" #: src/main.c:124 msgid "Invalid input" msgstr "Entra inválida" #: src/main.c:127 msgid "System detected problem" msgstr "Problema de sistema detectado" #: src/main.c:130 msgid "Misuse of recoding library" msgstr "Mau uso da biblioteca de recodificação" #: src/main.c:133 msgid "Internal recoding bug" msgstr "Erro interno de recodificação" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Este é um programa grátis: pode redistribuí-lo e/ou modificá-lo.\n" "sob os termos da GNU General Public License tal como publicada pela\n" "Free Software Foundation; seja a versão 3 da License, ou\n" "(à sua escolha) qualquer versão posterior.\n" "\n" "Este programa é distribuído na esperança de ser útil, mas\n" "sem QUALQUER GARANTIA; nem mesmo a garantia implícita de\n" "COMERCIALIZAÇÃO ou CONFORMIDADE PARA UM DETERMINADO FIM.\n" "Veja a GNU General Public License para mais detalhes.\n" "\n" "Deverá ter recebido uma cópia da GNU General Public License\n" "juntamente com este programa. Se não recebeu, escreva para.\n" "Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Tente \"%s %s\" para mais informação.\n" #: src/main.c:203 msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "O Recode converte ficheiros entre vários conjuntos e superfícies de " "caracteres.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Uso: %s [OPÇÃO]... [ [CONJCARACT] | PEDIDO [FICHEIRO]... ]\n" #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Argumentos obrigatórios para opções longas também são obrigatórios para a\n" "opção curta equivalente. Similar em argumentos opcionais.\n" #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listagens:\n" " -l, --list[=FORMATO] listaum ou todos os aliás e conjuntos de " "caracteres disponíveis\n" " -k, --known=PARES restringe conjuntos de caracteres de acordo com " "a lista de PARES conhecida\n" " -h, --header[=[LN/]NOME] escreve o NOME da tabela em stdout usando LN e " "sai\n" " -T, --find-subsets reporta todos os conjuntos de caracteres sendo " "sub-conjuntos de outros\n" " -C, --copyright mostra o Copyright e as condições de cópia\n" " --help mostra esta ajuda e sai\n" " --version mostra informação da versão e sai\n" #: src/main.c:228 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Modos de operação:\n" " -v, --verbose explica a sequência dos passos e reporta o " "progresso\n" " -q, --quiet, --silent inibe mensagens sobre recodificações " "irreversíveis\n" " -f, --force força recodificações mesmo quando não são " "reversíveis\n" " -t, --touch toca nos ficheiros recodificados após a " "substituição\n" " -i, -p, --sequence=ESTRATÉGIA ignorado para compatibilidade retroactiva\n" #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Afinação:\n" " -s, --strict usa mapeamentos estritos; descarta caracteres não " "traduzíveis\n" " -d, --diacritics converte só diacríticos ou similares para HTML/" "LaTeX/BibTeX\n" " -S, --source[=LN] limita a recodificação a cadeias e comentários, " "como para LN\n" " -c, --colons usa dois pontos em vez de aspas duplas para " "diérese\n" " -g, --graphics approxima réguas IBMPC por gráficos ASCII\n" " -x, --ignore=CONJCAR ignora CONJCAR ao escolher um caminho de " "recodificação\n" #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "A opção -l sem FORMATO ou CONJCAR lista conjuntos de caracteres e " "superfícies disponíveis.\n" "FORMATO é \"decimal\", \"octal\", \"hexadecimal\" ou \"full\" (ou um de " "\"dohf\").\n" #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "A menos que DEFAULT_CHARSET esteja definida no ambiente, CONJCAR reverte " "para a codificação\n" "regional dependente, determinada por LC_ALL, LC_CTYPE, LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Com -k, possíveis conjuntos ANTES são listados para o dado CONJCAR DEPOIS,\n" "sendo ambos conjuntos tabulares, com PARES da forma \"ANT1:DEP1,ANT2:DEP2,..." "\"\n" "e ANTs e DEPs sendo códigos dados como números decimais.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN é uma linguagem, pode ser \"c\", \"perl\" ou \"po\"; \"c\" é a " "predefinição.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "PEDIDO é SUB-PEDIDO[,SUB-PEDIDO]...; SUB-PEDIDO é CODIFICAÇÂO[.." "CODIFICAÇÃO]...\n" "CODIFICAÇÃO é [CONJCAR][/[SUPERFÃCIE]]...; PEDIDO parece-se muitas vezes " "com\n" "ANTES..DEPOIS, com ANTES e DEPOIS sendo conjuntos de caracteres. Um CONJCAR " "omitido\n" "implica o conjunto habitual; uma [/SUPERFÃCIE]... omitida significa as " "superfícies\n" "implicadas para CONJCAR; uma / com superfície vazia significa que não há " "superfícies. \n" "Veja o manual.\n" #: src/main.c:278 msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Cada FICHEIRO é recodificado sobre si mesmo, destruindo o original. Se\n" "não indicar FICHEIRO, actua como filtro e recodifica stdin para stdout.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" "\n" "Reporte erros em https://github.com/rrthomas/recode\n" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "O símbolo \"%s\" é desconhecido" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "A sequência \"%s\" é ambígua" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "A sequência \"%s\" é desconhecida" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "A linguagem \"%s\" é ambígua" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "A linguagem \"%s\" é desconhecida" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "O formato \"%s\" é ambíguo" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "O formato \"%s\" é desconhecido" #: src/main.c:627 msgid "Written by François Pinard .\n" msgstr "Escrito por François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990-2018 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Este é um programa gratuito; veja a fonte para condições de cópia. NÃO há " "QUALQUER\n" "garantia; nem mesmo para COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM PROPÓSITO " "PARTICULAR.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "O conjunto de caracteres \"%s\" é desconhecido ou ambíguo" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Argumento requerido em falta" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "O pedido \"%s\" é erróneo" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "A recodificar %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " feito\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " falha: %s no passo \"%s..%s\"\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s no passo \"%s..%s\"" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s falha: %s no passo \"%s..%s\"" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "O conjunto de caracteres %s já existe e não é %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "Impossível listar \"%s\", sem nomes disponíveis para este conjunto de " "caracteres" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Desculpe, sem nomes disponíveis para \"%s\"" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Resurfacer definido mais de uma vez para \"%s\"" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Unsurfacer definido mais de uma vez para \"%s\"" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "Memória virtual esgotada" #: src/recode.c:109 #, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Ambos os códigos %3d e %3u recodificam para %3d" #: src/recode.c:123 #, c-format msgid "No character recodes to %3u" msgstr "Nenhum carácter recodifica para %3u" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "Impossível inverter a tabela um-para-um indicada" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "A seguir diagnósticos para \"%s\" para \"%s\"" #: src/recode.c:185 src/recode.c:197 #, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Par nº. %u: <%3d, %3d> conflitua com <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "Impossível completar a tabela do conjunto de pares conhecidos" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Recodificação de identidade, não merece uma tabela" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "Recodificação muito complexa para uma mera tabela" #: src/recode.c:524 #, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sTabela de conversão gerada mecanicamente por %s %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%spara sequência %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "Sem tabela para imprimir" #: src/request.c:35 msgid "reversible" msgstr "reversível" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s para %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "byte" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "variável" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Inatingível*" #: src/request.c:111 msgid "*mere copy*" msgstr "*mera cópia*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "Memória virtual esgotada!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "Inicialização por passos falhou" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "Inicialização por passos falhou (opções não processadas)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Pedido: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Encolhido para: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nome de superfície \"%s\" não reconhecido" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Não há forma de recodificar \"%s\" para \"%s\"" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "Esperado \"..\" no pedido" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Estado de espera do processo-filho é 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Descrição\n" "\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Sintaxe obsoleta, por favor utilize \"%s\"" recode-3.7.15/po/hr.gmo0000644000175000017500000001657014766021055010303 Þ•=Sì89–Ê|a9Þ(= LX-i$—5¼'ò$ $? d ‚ &œ à Ü $ó  . H< …   ¹ Ô Ý "ï  & (5 ^ x … &¢ É ä ý " / 0J { ’ —ª "B e ‡€ &'Nc|Ô–k p{€ò‰’|јáCz¾ÇÏ Þëÿ2-EBs&¶2Ý*;Y,w ¤Å5à"9ZI ¤Å7à %9;uˆ8¡Ú ÷5TqŠ,›#È8ì%A“Z/î—2Ê8ê#3QãpTYi n:. &6593"+7-#/ 21)8$4(*% 0=,' !;< If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputRecoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.6 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2012-07-03 00:23+0200 Last-Translator: Tomislav Krznar Language-Team: Croatian Language: hr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2) Ako dugaÄka opcija prikazuje argument kao obavezan, onda je obavezan i za odgovarajuću kratku opciju. Isto vrijedi i za opcionalne argumente. Ako uz opciju -l nije naveden OBLIK ili SKUPZNAKOVA, ispisat će sve dostupne skupove znakova i plohe. OBLIK može biti „decimalâ€, „octalâ€, „hexadecimal†ili „full†(ili jedan od „dohfâ€). ZAHTJEV je PODZAHTJEV[,PODZAHTJEV]...; PODZAHTJEV je KODIRANJE[..KODIRANJE]... KODIRANJE je [SKUPZNAKOVA][/[PLOHA]]...; ZAHTJEV obiÄno izgleda kao PRIJE..NAKON, gdje su PRIJE i NAKON skupovi znakova. Izostavljeni SKUPZNAKOVA podrazumijeva uobiÄajeni skup znakova; izostavljena [/PLOHA]... oznaÄava podrazumijevanu plohu za SKUPZNAKOVA; / uz praznu plohu oznaÄava da nema ploha. Pogledajte priruÄnik. Uporaba: %s [OPCIJA]... [ [SKUPZNAKOVA] | ZAHTJEV [DATOTEKA]... ] gotovo %s u %s%sza niz %s.%s*Neizvedivo**obiÄno kopiranje*ViÅ¡eznaÄan izlazNe mogu dovrÅ¡iti tablicu iz skupa poznatih parovaNe mogu obrnuti zadanu jedan-na-jedan tablicuNe mogu ispisati „%sâ€, nema dostupnih imena ovog skupa znakovaSkup znakova %s već postoji i nije %sSkup znakova „%s†je nepoznat ili viÅ¡eznaÄanStanje Äekanja procesa djeteta je 0x%0.2xDec Oct Hex UCS2 Mne %s OÄekujem „..†u zahtjevuSlijedim dijagnostiku za „%s†u „%sâ€Oblik „%s†je visÌŒeznacÌŒanOblik „%s†je nepoznatIdentitetna promjena kodiranja, tablica nije potrebnaInterna greÅ¡ka promjene kodiranjaNeispravan unosJEZIK je neki jezik, može biti npr. „câ€, „perl†ili „poâ€; „c†je zadani. Jezik „%s†je visÌŒeznacÌŒanJezik „%s†je nepoznatNeispravno koriÅ¡tenje biblioteke za promjenu kodiranjaNema greÅ¡keNema tablice za ispisNema naÄina za promjenu kodiranja iz „%s†u „%sâ€Unos nije kanonskiMijenjam kodiranje %s...Promjena kodiranja je prekomplicirana za obiÄnu tablicuZahtjev „%s†ima greÅ¡keZahtjev: %s Nedostaje nužan argumentMjenjaÄ plohe postavljen viÅ¡e od jednom za „%sâ€Niz „%s†je viÅ¡eznaÄanNiz „%s†je nepoznatSmanjeno na: %s Žao mi je, nema dostupnih imena za „%sâ€Inicijalizacija koraka nije uspjelaInicijalizacija koraka nije uspjela (neobraÄ‘ene opcije)Simbol „%s†je nepoznatSustav je otkrio problemOvo je slobodan softver; pogledajte kod za upute o kopiranju. NEMA jamstava; cÌŒak ni za TRGOVINSKU PRIKLADNOST ili ODGOVARANJE ODREÄENOJ SVRSI. PokusÌŒajte „%s %s†za visÌŒe informacija. UCS2 Mne Opis Osim ako je DEFAULT_CHARSET postavljen u okolini, SKUPZNAKOVA je uobiÄajeno kodiranje ovisno o lokalu, odreÄ‘eno varijablama LC_ALL, LC_CTYPE i LANG. Neprepoznato ime plohe „%sâ€Uklanjatelj plohe postavljen viÅ¡e od jednom za „%sâ€Neprevodiv unosVirtualna memorija iscrpljenaVirtualna memorija iscrpljena!Uz -k, moguće prije ispisivanja skupova znakova za zadani nakon SKUPZNAKOVA, gdje su oba tabliÄni skupovi znakova, gdje su PAROVI u obliku „PRI1:NAK1,PRI2:NAK2,...†i gdje su PRI i NAK kodovi zadani kao dekadski brojevi. bajtmoguć povratakucs2varijablarecode-3.7.15/po/nl.gmo0000644000175000017500000002236014766021055010275 Þ•FLa|‡‰l–‡| 3› 9Ï   2 L a p | - $» 5à ' $> $c $ˆ ­ Ë &å  % $< a w H… Î é 9B"Tw1‹C½(9 S`&}¤¿Ø"ç 0%Vm—…"@‡[ã&)>WÔq7F~ ƒŽ“§œÓDrƒ‹×±ç‹™?% e p){¥ ¸ÃÓ7ë0#AT&–+½(é*=[!y"›¾+Û'C8|˜-®Ü û5!W5mO£ó/ 8 P ] 1| ® Ë â 'õ !2;!n!‡!¥£!"I"l"—ˆ" #1=#o# „# ¥#ÎÆ#<•$Ò$ ×$â$ç$+(' 43=<59B2"#:!$8E-F@)D %7 > 0C1?;,.6 /A*& Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, -p, --sequence=STRATEGY ignored for backwards compatibility Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs at https://github.com/rrthomas/recode Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] done %s to %s%sConversion table generated mechanically by %s %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sCharset `%s' is unknown or ambiguousChild process wait status is 0x%0.2xCodes %3d and %3u both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Format `%s' is ambiguousFormat `%s' is unknownIdentity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Language `%s' is ambiguousLanguage `%s' is unknownMisuse of recoding libraryNo character recodes to %3uNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %u: <%3d, %3d> conflicts with <%3d, %3d>Recode converts files between various character sets and surfaces. Recoding %s...Recoding is too complex for a mere tableRequest `%s' is erroneousRequest: %s Required argument is missingResurfacer set more than once for `%s'Sequence `%s' is ambiguousSequence `%s' is unknownShrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)Symbol `%s' is unknownSystem detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Try `%s %s' for more information. UCS2 Mne Description Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. Written by François Pinard . bytereversibleucs2variableProject-Id-Version: recode 3.7.1 Report-Msgid-Bugs-To: rrt@sc3d.org PO-Revision-Date: 2019-09-30 14:09+0200 Last-Translator: Benno Schulenberg Language-Team: Dutch Language: nl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bugs: Report translation errors to the Language-Team address. Plural-Forms: nplurals=2; plural=n != 1; Elk BESTAND wordt over zichzelf gehercodeerd, het origineel overschrijvend. Als er geen BESTAND gegeven is, functioneert 'recode' als een filter en wordt van standaardinvoer naar standaarduitvoer gehercodeerd. Een argument dat verplicht of optioneel is voor een lange optie, is dat ook voor de overeenkomstige korte optie. Werkingsmodus: -v, --verbose tussenstappen uitleggen en voortgang tonen -q, --quiet, --silent niets zeggen over onomkeerbare hercoderingen -f, --force hercodering afdwingen, ook als deze onomkeerbaar is -t, --touch tijdsstempel van gehercodeerde bestanden aanpassen -i, -p, --sequence=STRATEGIE genegeerd voor achterwaartse compatibilteit Optie -l zonder PRESENTATIE of TEKENSET somt de beschikbare tekensets en oppervlakken op. PRESENTATIE is 'decimal', 'octal', 'hexadecimal' of 'full' (volledig), die afgekort mogen worden tot 'd', 'o', 'h' en 'f'. VERZOEK is DEELVERZOEK[,DEELVERZOEK]...; DEELVERZOEK is CODERING[..CODERING]... CODERING is [TEKENSET][/[OPPERVLAK]]...; VERZOEK ziet er vaak uit als VOOR..NA, waarbij VOOR en NA tekensets zijn. Een weggelaten TEKENSET impliceert de gebruikelijke tekenset; een weggelaten [/OPPERVLAK]... betekent de impliciete oppervlakken voor TEKENSET; een / met een lege oppervlaknaam betekent helemaal geen oppervlak. Zie ook de handleiding. Rapporteer gebreken in het programma via https://github.com/rrthomas/recode. Meld fouten in de vertaling aan . Gebruik: %s [OPTIE]... [ [TEKENSET] | VERZOEK [BESTAND]... ] voltooid %s naar %s%sConversietabel gegenereerd door '%s' %s%svoor reeks %s.%s*Kan niet**simpele kopie*Niet-eenduidige uitvoerKan tabel niet afmaken met de verzameling bekende parenKan de gegeven één-op-één tabel niet omkerenKan '%s' niet opsommen; geen namen beschikbaar voor deze tekensetTekenset '%s' bestaat al en is niet %sTekenset '%s' is onbekend of niet eenduidigWachtstatus van dochterproces is 0x%0.2xCodes %3d en %3u hercoderen beide naar %3dDec Oct Hex UCS2 Mne %s '..' werd verwacht in verzoekFoutmeldingen voor '%s' naar '%s'Presentatie '%s' is niet eenduidigPresentatie '%s' is onbekendIdentiteitshercodering; is geen tabel waard**Interne fout** bij hercoderenOngeldige invoerTL is een taal, en kan 'c', 'perl' of 'po' zijn; 'c' is standaard. Taal '%s' is niet eenduidigTaal '%s' is onbekendVerkeerd gebruik van hercoderings-bibliotheekGeen teken hercodeert naar %3uGeen foutGeen tabel om weer te gevenEr is geen manier om te hercoderen van '%s' naar '%s'Niet-canonieke invoerPaarnummer %u: <%3d, %3d> conflicteert met <%3d, %3d>'recode' converteert bestanden van en naar allerlei tekensets en oppervlakken. Hercoderen van %s...Hercoderen is te complex voor slechts een tabelVerzoek '%s' is onjuistVerzoek: %s Een vereist argument ontbreektHer-oppervlakker is meer dan eens gezet voor '%s'Reeks '%s' is niet eenduidigReeks '%s' is onbekendGekrompen tot: %s Sorry, geen namen beschikbaar voor '%s'Stap-initialisatie is misluktStap-initialisatie is mislukt (onverwerkte opties)Symbool '%s' is onbekendSysteem heeft fout gevondenDit is vrije software; zie de programmatekst voor de kopieervoorwaarden. Er is GEEN garantie; zelfs niet voor VERKOOPBAARHEID of GESCHIKTHEID VOOR EEN BEPAALD DOEL. Typ '%s %s' voor meer informatie. UCS2 Mne Omschrijving Tenzij omgevingsvariabele DEFAULT_CHARSET is ingesteld, gebruikt TEKENSET standaard de taalafhankelijke codering, bepaald door LC_ALL, LC_CTYPE, LANG. Onbekende oppervlaknaam '%s'Ont-oppervlakker is meer dan eens gezet voor '%s'Onvertaalbare invoerOnvoldoende geheugen beschikbaarOnvoldoende geheugen beschibaar!Met optie -k worden voor de gegeven NA-tekenset de mogelijke VOOR-tekensets opgesomd, als tabel van PAREN in de vorm 'VOOR1:NA1,VOOR2:NA2,...', waarbij de VOORs en NAs als decimale getallen gegeven worden. Geschreven door François Pinard . byteomkeerbaarucs2variabelrecode-3.7.15/po/ca.po0000644000175000017500000004777114766021054010117 # Catalan translation of GNU recode. # Copyright © 2002, 2003 Free Software Foundation, Inc. # Jordi Mallach , 2002, 2003. # msgid "" msgstr "" "Project-Id-Version: recode 3.6\n" "Report-Msgid-Bugs-To: rrt@sc3d.org\n" "POT-Creation-Date: 2025-03-17 13:22+0000\n" "PO-Revision-Date: 2003-08-30 16:48+0200\n" "Last-Translator: Jordi Mallach \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 0.9.6\n" #: src/main.c:112 msgid "No error" msgstr "No hi ha cap error" #: src/main.c:115 msgid "Non canonical input" msgstr "L'entrada no és canònica" #: src/main.c:118 msgid "Ambiguous output" msgstr "L'eixida és ambigua" #: src/main.c:121 msgid "Untranslatable input" msgstr "L'entrada no és convertible" #: src/main.c:124 msgid "Invalid input" msgstr "L'entrada és invàlida" #: src/main.c:127 msgid "System detected problem" msgstr "El sistema ha detectat un problema" # El verb "to misuse" vol dir "desaprofitar" o també "fer mal ús". Crec # que en aquest cas la traducció més correcta seria: "Mal ús de la # biblioteca de recodificació" o, si es prefereix, "Ús incorrecte de # la biblioteca de recodificació". mvs # Bé, les teues frases són en "indi", que diem Ivan i jo... # es a dir, no són frases completes. No veig massa diferència entre # «Ús incorrecte de la biblioteca de recodificació» i la forma que he # fet servir jo... jm #: src/main.c:130 msgid "Misuse of recoding library" msgstr "L'ús de la biblioteca de recodificació és incorrecte" #: src/main.c:133 msgid "Internal recoding bug" msgstr "S'ha produït un error intern de recodificació" #: src/main.c:175 #, fuzzy msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 3, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, see .\n" msgstr "" "Açò és programari lliure; podeu redistribuir-lo i/o modificar-lo\n" "sota els termes de la Llicència Pública General GNU tal i com ha estat\n" "publicada per la Free Software Foundation; bé sota la versió 2 de la\n" "Llicència o bé (si ho preferiu) sota qualsevol versió posterior.\n" "\n" "Aquest programa es distribueix amb l'expectativa de que serà útil,\n" "però SENSE CAP GARANTIA; ni tan sols la garantia implícita de\n" "COMERCIABILITAT o ADEQUACIÓ PER UN PROPÃ’SIT PARTICULAR. Vegeu la\n" "Llicència Pública General GNU per obtenir-ne més detalls.\n" "\n" "Hauríeu d'haver rebut una còpia de la Llicència Pública General GNU\n" "juntament amb aquest programa; en cas contrari, escriviu a la Free\n" "Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,\n" "MA 02111, USA.\n" #: src/main.c:199 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Proveu «%s %s» per a obtindre més informació.\n" # On posa "entre varios", açò no és un castellanisme?. # Em sembla que seria més correcte posar "diversos" en voltes de "varios". mvs # I tant... jm #: src/main.c:203 #, fuzzy msgid "Recode converts files between various character sets and surfaces.\n" msgstr "" "El «recode» lliure converteix fitxers entre diversos jocs de caràcters i " "superfícies.\n" #: src/main.c:207 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Forma d'ús: %s [OPCIÓ]... [ [JOC DE CARÀCTERS] | PETICIÓ [FITXER]... ]\n" # Aquest programa s'executa en terminal o en un # servidor x?. Si és per a una terminal potser caldria respectar # un salt de línia fins la columna núm. 70. S'edita el missatge # a un editor de textos que aplique salt de línia automàticament, # i el copiem al programa traductor (si feu servir kbabel, no # oblideu d'afegir "\n" al final de cada línia). mvs # Sí, és en mode text, i corregit. El kbabel us fa ficar el salt # de línia a ma? Què mal... :) jm #: src/main.c:210 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Si una opció llarga mostra un argument com requerit, aleshores també és\n" "requerit per a l'opció curta equivalent, i de forma similar per als\n" "arguments opcionals.\n" # Que tal si traduim "copyright", per "drets reservats"?. # També on posa "copying conditions", ¿això no vol dir # "condicions de l'autor" en voltes de "condicions de còpia"? mvs # «copyright» != «drets reservats», això seria «all rights reserved» # o similar. Crec que «copying conditions» és l'evident: «condicions # de còpia». El tema de traduir o no «copyright» s'ha discutit alguna # vegada si no recorde mal, i sempre s'ha preferit no traduir-ho. jm #: src/main.c:216 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Llistats:\n" " -l, --list[=FORMAT] llista un o tots els jocs de caràcters i àlies\n" " coneguts\n" " -k, --known=PARELLES limita els jocs de caràcters d'acord amb la\n" " llista de PARELLES conegudes\n" " -h, --header=[={LN/}NOM} mostra la taula NOM a l'eixida estàndard\n" " utilitzant LN, i surt a continuació\n" " -F, --freeze-tables mostra un mòdul de C contenint totes les " "taules\n" " -T, --find-subsets informa de tots els jocs de caràcters que són\n" " subconjunts d'altres\n" " -C, --copyright mostra el Copyright i les condicions de còpia\n" " --help mostra aquesta ajuda i ix\n" " --version mostra la informació sobre la versió i ix\n" # Una "passa" no és un "pas". "Passa" es un sinònim de # epidèmia. Per tant, hauria de posar-se "passos" i no "passes". # Concretant: # "step" és "pas" ("passos") o "iteració" # "pass" és "passi" ("passis"), sinònim de permís # ("cinema session pass" = "passi de sessió de cinema"). mvs # Uff. Aquesta errada l'arrossegue en altres traduccions, aleshores. # Caldrà fer una bonica sessió de greps. jm #: src/main.c:228 #, fuzzy msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, -p, --sequence=STRATEGY ignored for backwards compatibility\n" msgstr "" "\n" "Modes d'operació:\n" " -v, --verbose explica la seqüència de passos i informa del " "progrés\n" " -q, --quiet, --silent inhabilita els missatges sobre recodificacions\n" " irreversibles\n" " -f, --force força les recodificacions inclús si són " "irreversibles\n" " -t, --touch toca els fitxers recodificats després del " "reemplaç\n" " -i, --sequence=files utilitza fitxers intermedis per als passos\n" " --sequence=memory utilitza búfers de memòria per als passos\n" # A l'opció "-g" has obviat la paraula "rules", que # voldria dir "normes". Així, "IBMPC rulers" voldria dir # "normes IBMPC", encara que no estic del tot segur. mvs # No, he traduït «rules» per «gràfics». Es refereix als caràcters # amb els que es dibuixen les caixetes i tal. jm #: src/main.c:238 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings; discard untranslatable " "characters\n" " -d, --diacritics convert only diacritics and special characters for\n" " HTML/LaTeX/BibTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" " -I, --prefer-iconv use iconv if possible\n" msgstr "" "\n" "Ajustament afinat:\n" " -s, --strict utilitza coincidències estrictes, encara que es\n" " perden caràcters\n" " -d, --diacritics converteix només els accents o pareguts per a\n" " HTML/LaTeX\n" " -S, --source[=LN] limita la recodificació a cadenes i comentaris\n" " segons LN\n" " -c, --colons utilitza dos punts en comptes de cometes dobles\n" " per a la dièresis\n" " -g, --graphics aproxima els gràfics IBMPC amb gràfics ASCII\n" " -x, --ignore=JOC descarta JOC al escollir un camí de recodificació\n" # "L'opció "-l" sense cap FORMAT ni JOC DE CARACTERS llista..." mvs # Fet. jm #: src/main.c:251 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "L'opció -l sense cap FORMAT o JOC DE CARÀCTERS llista els jocs de caràcters\n" "i facetes disponibles. FORMAT és «decimal», «octal», «hexadecimal» o «full»\n" "(o un de «dohf»).\n" # "... de la que depén...", això és un castellanisme. # El correcte és dir: "... de la qual depèn...", o # "... de què depèn...", (ull!: amb laccent tancat). mvs # Oops. Volia haver ficat «de la qual». jm #: src/main.c:257 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "A no ser que s'establisca DEFAULT_CHARSET a l'entorn, el valor\n" "predeterminat de CHARSET és la codificació de la qual depen el locale,\n" "determinat per LC_ALL, LC_CTYPE, LANG.\n" #: src/main.c:262 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:" "AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Amb -k, es mostren els possibles jocs de caràcters «abans» per al JOC\n" "«després» donat, sent ambdós jocs de caràcters tabulars, amb PARELLES de la\n" "forma «ABAN1:DESP1,ABAN2:DESP2,...» i sent els ABAN i DESP codis donats com\n" "números decimals.\n" #: src/main.c:267 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN és un llenguatge, pot ser «c», «perl» o «po; «c» és el predeterminat.\n" #: src/main.c:270 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[.." "ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE.." "AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; " "a /\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "PETICIÓ és SUBPETICIÓ[,SUBPETICIÓ]...;\n" "SUBPETICIÓ és CODIFICACIÓ[..CODIFICACIÓ]...\n" "CODIFICACIÓ és [JOC DE CARÀCTERS[/[FACETA]]...;\n" "PETICIÓ sovint és ABANS..DESPRÉS,\n" "amb ABANS i DESPRÉS sent jocs de caràcters. Un JOC DE CARÀCTERS omés\n" "implica el joc de caràcters habitual; una [/FACETA] omesa vol dir la faceta\n" "implícita per al JOC DE CARÀCTERS; un / amb una faceta buida vol dir que no\n" "hi ha faceta. Vegeu el manual.\n" #: src/main.c:278 #, fuzzy msgid "" "\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Si no es dona cap de -i i -p, es suposa -p si no hi ha cap FITXER, si no, -" "i.\n" "Cada FITXER es recodifica damunt d'ell mateix, destruïnt l'original. Si no\n" "s'especifica cap FITXER, aleshores actua com un filtre i recodifica\n" "l'entrada estàndard a l'eixida estàndard.\n" #: src/main.c:283 msgid "" "\n" "Report bugs at https://github.com/rrthomas/recode\n" msgstr "" #: src/main.c:358 #, c-format msgid "Symbol `%s' is unknown" msgstr "El símbol «%s» és desconegut" #: src/main.c:428 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "La seqüència «%s» és ambígua" #: src/main.c:433 #, c-format msgid "Sequence `%s' is unknown" msgstr "La seqüència «%s» és desconeguda" #: src/main.c:461 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "El llenguatge «%s» és ambigu" #: src/main.c:466 src/main.c:527 #, c-format msgid "Language `%s' is unknown" msgstr "El llenguatge «%s» és desconegut" #: src/main.c:562 #, c-format msgid "Format `%s' is ambiguous" msgstr "El format «%s» és ambigu" #: src/main.c:567 #, c-format msgid "Format `%s' is unknown" msgstr "El format «%s» és desconegut" #: src/main.c:627 #, fuzzy msgid "Written by François Pinard .\n" msgstr "Escrit per François Pinard .\n" #: src/main.c:630 #, fuzzy msgid "" "\n" "Copyright (C) 1990-2023 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright © 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:634 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Açò és Programari Lliure; vegeu el codi font per les condicions de\n" "còpia. NO hi ha CAP garantia; ni tan sols de COMERCIABILITAT o ADEQUACIÓ\n" "PER UN PROPÃ’SIT DETERMINAT.\n" #: src/main.c:688 src/main.c:702 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "El joc de caràcters «%s» és desconegut o ambigu" #: src/main.c:733 #, c-format msgid "Required argument is missing" msgstr "Manca un argument requerit" #: src/main.c:742 #, c-format msgid "Request `%s' is erroneous" msgstr "La petició «%s» és errònia" #: src/main.c:846 #, c-format msgid "Recoding %s..." msgstr "S'està recodificant %s..." #: src/main.c:856 #, c-format msgid " done\n" msgstr " fet\n" #: src/main.c:894 #, fuzzy, c-format msgid " failed: %s%s%s%s%s%s\n" msgstr " ha fallat: %s al pas «%s..%s»\n" #: src/main.c:896 src/main.c:906 src/main.c:928 #, fuzzy msgid " in step `" msgstr "%s al pas «%s..%s»" #: src/main.c:898 src/main.c:908 src/main.c:930 msgid ".." msgstr "" #: src/main.c:900 src/main.c:910 src/main.c:932 msgid "'" msgstr "" #: src/main.c:904 #, fuzzy, c-format msgid "%s failed: %s%s%s%s%s%s" msgstr "%s ha fallat: %s al pas «%s..%s»" #: src/main.c:926 #, c-format msgid "%s%s%s%s%s%s" msgstr "" #: src/names.c:353 #, c-format msgid "Charset %s already exists and is not %s" msgstr "El joc de caràcters %s ja existeix i no és %s" #: src/names.c:848 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "No es pot llistar «%s», no hi ha noms disponibles per a aquest\n" "joc de caràcters" #: src/names.c:1000 src/names.c:1046 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" #: src/names.c:1065 #, c-format msgid "Sorry, no names available for `%s'" msgstr "No hi ha noms disponibles per a «%s»" #: src/outer.c:115 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "S'ha establert «resurfacer» més d'una vegada per a «%s»" #: src/outer.c:122 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "S'ha establert «unsurfacer» més d'una vegada per a «%s»" #: src/outer.c:470 src/recode.c:69 src/recode.c:81 msgid "Virtual memory exhausted" msgstr "La memòria virtual s'ha exhaurit" #: src/recode.c:109 #, fuzzy, c-format msgid "Codes %3d and %3u both recode to %3d" msgstr "Els codis %3d i %3d es recodifiquen ambdós a %3d" #: src/recode.c:123 #, fuzzy, c-format msgid "No character recodes to %3u" msgstr "Cap caràcter es recodifica a %3d" #: src/recode.c:124 msgid "Cannot invert given one-to-one table" msgstr "No es pot invertir la taula un-a-un donada" #: src/recode.c:180 src/recode.c:192 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "S'estan seguint els diagnòstics per «%s» a «%s»" #: src/recode.c:185 src/recode.c:197 #, fuzzy, c-format msgid "Pair no. %u: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "La parella no. %d: <%3d, %3d> és conflictiu amb <%3d, %3d>" #: src/recode.c:228 msgid "Cannot complete table from set of known pairs" msgstr "No es pot completar la taula des del joc de parelles conegudes" #: src/recode.c:485 msgid "Identity recoding, not worth a table" msgstr "Recodificació identitat, no mereix una taula" #: src/recode.c:492 msgid "Recoding is too complex for a mere table" msgstr "La recodificació és massa complexa per a una simple taula" #: src/recode.c:524 #, fuzzy, c-format msgid "%sConversion table generated mechanically by %s %s" msgstr "%sTaula de conversió generada mecànicament per Free «%s» %s" #: src/recode.c:526 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sper la seqüència %s.%s" #: src/recode.c:748 msgid "No table to print" msgstr "No hi ha cap taula a imprimir" #: src/request.c:35 msgid "reversible" msgstr "reversible" #: src/request.c:37 #, c-format msgid "%s to %s" msgstr "%s a %s" #: src/request.c:38 src/request.c:40 msgid "byte" msgstr "byte" #: src/request.c:39 src/request.c:41 msgid "ucs2" msgstr "ucs2" #: src/request.c:39 src/request.c:41 msgid "variable" msgstr "variable" #: src/request.c:109 msgid "*Unachievable*" msgstr "*Impossible*" #: src/request.c:111 msgid "*mere copy*" msgstr "*simple còpia*" #: src/request.c:228 msgid "Virtual memory exhausted!" msgstr "La memòria virtual s'ha exhaurit!" #: src/request.c:252 msgid "Step initialisation failed" msgstr "L'inicialització del pas ha fallat" #: src/request.c:259 msgid "Step initialisation failed (unprocessed options)" msgstr "L'inicialització del pas ha fallat (opcions no processades)" #: src/request.c:573 #, c-format msgid "Request: %s\n" msgstr "Petició: %s\n" #: src/request.c:740 #, c-format msgid "Shrunk to: %s\n" msgstr "Encogit a: %s\n" #: src/request.c:847 src/request.c:983 #, c-format msgid "Unrecognised surface name `%s'" msgstr "El nom de faceta «%s» és desconegut" #: src/request.c:954 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "No hi ha manera de recodificar de «%s» a «%s»" #: src/request.c:1046 msgid "Expecting `..' in request" msgstr "S'esperava «..» a la petició" #: src/task.c:467 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "L'estat d'espera del procés fill és 0x%0.2x" #: src/testdump.c:305 msgid "" "UCS2 Mne Description\n" "\n" msgstr "UCS2 Mne Descripció\n" # Vegeu la mateixa observació que vaig fer al missatge núm 15. mvs #~ msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" #~ msgstr "" #~ " -p, --sequence=pipe utilitza conductes per als passos de\n" #~ " seqüències\n" #~ msgid " -p, --sequence=pipe same as -i (on this system)\n" #~ msgstr " -p, --sequence=pipe el mateix que -i (en aquest sistema)\n" #~ msgid "" #~ "\n" #~ "Report bugs to .\n" #~ msgstr "" #~ "\n" #~ "Informeu dels errors a .\n" #, c-format #~ msgid "Syntax is deprecated, please prefer `%s'" #~ msgstr "Aquesta sintaxi és desaconsellada, si us plau, utilitzeu «%s»" recode-3.7.15/TODO0000644000175000017500000000372513324403130007221 ==================== TODO file for Recode ==================== Tell rrt@sc3d.org if you feel like volunteering for any of these ideas, listed more or less in decreasing order of priority. Before next official release ============================ + Revise everything about explodes. + Update NEWS for latest libiconv and latest Keld tables. + Remove TeX edition warnings, rephrase whatever required. + Complete inter-node and menu references, as necessary. Keld ==== + recode + New tables from Keld + Revise diagnostics + Standards aspects + Wait for PostScript + charset in 14652 + transliteration in 14652 + API in 15435 + recoding/iconv APIs (->Handa) + Miscellaneous + African tables + Unicode/W3C short-comings + Lithuanian Particular notes ================ + feuille Tamil + New RFC 1345 tables, still some diagnostics Charsets ======== + Clean up applemac vs macintosh and ibmpc vs ibm437. + Implement RFC1345 more fully. + Generalize older charsets (latex, texte, etc.) to RFC 1345 mnemonics. + Support VT320 support and related character sets. (Alain Simon) + Support @code{[nt]roff} diacritics. + Support Universite de Montreal *accent* convention. Surfaces ======== + Implement some invbits over 8, 7 or 6 bits, maybe more. + CR-LF, in ibmpc.c (implied by IBMPC?) + CR, in applemac.c (implied by Apple-Mac?) + Message headers [RFC 1342] + Mnemonic and Mnemo (maybe?) [RFC 1345] + Integrate -c and -g into charsets. + Find something for ``recode -g ibmpc:ibmpc`` to do what it suggests + Option -M (implying -i) to process MIME headers Mechanics ========= + Intercept signals to cleanup the temporary files in any event. + Revise --force thoroughly. + Rewrite .l converters for lat1{asci,ltex,txte}, for --force. + Optimize/merge all one-to-many cases. + Write a better ``make check``, not as partial and forgiving. + Have -l know which output charset to use (Martin Maechler, 93-12-07). + Take note that ->RFC1345 recodings are non reversible. recode-3.7.15/INSTALL0000644000175000017500000004012314371444255007573 Installation Instructions ************************* Copyright © 1994–1996, 1999–2002, 2004–2017, 2020–2023 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command ‘./configure && make && make install’ should configure, build, and install this package. The following more-detailed instructions are generic; see the ‘README’ file for instructions specific to this package. Some packages provide this ‘INSTALL’ file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The ‘configure’ shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a ‘Makefile’ in each directory of the package. It may also create one or more ‘.h’ files containing system-dependent definitions. Finally, it creates a shell script ‘config.status’ that you can run in the future to recreate the current configuration, and a file ‘config.log’ containing compiler output (useful mainly for debugging ‘configure’). It can also use an optional file (typically called ‘config.cache’ and enabled with ‘--cache-file=config.cache’ or simply ‘-C’) that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how ‘configure’ could check whether to do them, and mail diffs or instructions to the address given in the ‘README’ so they can be considered for the next release. If you are using the cache, and at some point ‘config.cache’ contains results you don’t want to keep, you may remove or edit it. The file ‘configure.ac’ (or ‘configure.in’) is used to create ‘configure’ by a program called ‘autoconf’. You need ‘configure.ac’ if you want to change it or regenerate ‘configure’ using a newer version of ‘autoconf’. The simplest way to compile this package is: 1. ‘cd’ to the directory containing the package’s source code and type ‘./configure’ to configure the package for your system. Running ‘configure’ might take a while. While running, it prints some messages telling which features it is checking for. 2. Type ‘make’ to compile the package. 3. Optionally, type ‘make check’ to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type ‘make install’ to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the ‘make install’ phase executed with root privileges. 5. Optionally, type ‘make installcheck’ to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior ‘make install’ required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing ‘make clean’. To also remove the files that ‘configure’ created (so you can compile the package for a different kind of computer), type ‘make distclean’. There is also a ‘make maintainer-clean’ target, but that is intended mainly for the package’s developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type ‘make uninstall’ to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide ‘make distcheck’, which can by used by developers to test that all other targets like ‘make install’ and ‘make uninstall’ work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the ‘configure’ script does not know about. Run ‘./configure --help’ for details on some of the pertinent environment variables. You can give ‘configure’ initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU ‘make’. ‘cd’ to the directory where you want the object files and executables to go and run the ‘configure’ script. ‘configure’ automatically checks for the source code in the directory that ‘configure’ is in and in ‘..’. This is known as a “VPATH†build. With a non-GNU ‘make’, it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use ‘make distclean’ before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types—known as “fat†or “universal†binaries—by specifying multiple ‘-arch’ options to the compiler but only a single ‘-arch’ option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the ‘lipo’ tool if you have problems. Installation Names ================== By default, ‘make install’ installs the package’s commands under ‘/usr/local/bin’, include files under ‘/usr/local/include’, etc. You can specify an installation prefix other than ‘/usr/local’ by giving ‘configure’ the option ‘--prefix=PREFIX’, where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option ‘--exec-prefix=PREFIX’ to ‘configure’, the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like ‘--bindir=DIR’ to specify different values for particular kinds of files. Run ‘configure --help’ for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of ‘${prefix}’, so that specifying just ‘--prefix’ will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to ‘configure’; however, many packages provide one or both of the following shortcuts of passing variable assignments to the ‘make install’ command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, ‘make install prefix=/alternate/directory’ will choose an alternate location for all directory configuration variables that were expressed in terms of ‘${prefix}’. Any directories that were specified during ‘configure’, but not in terms of ‘${prefix}’, must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the ‘DESTDIR’ variable. For example, ‘make install DESTDIR=/alternate/directory’ will prepend ‘/alternate/directory’ before all installation names. The approach of ‘DESTDIR’ overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of ‘${prefix}’ at ‘configure’ time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving ‘configure’ the option ‘--program-prefix=PREFIX’ or ‘--program-suffix=SUFFIX’. Some packages pay attention to ‘--enable-FEATURE’ options to ‘configure’, where FEATURE indicates an optional part of the package. They may also pay attention to ‘--with-PACKAGE’ options, where PACKAGE is something like ‘gnu-as’ or ‘x’ (for the X Window System). The ‘README’ should mention any ‘--enable-’ and ‘--with-’ options that the package recognizes. For packages that use the X Window System, ‘configure’ can usually find the X include and library files automatically, but if it doesn’t, you can use the ‘configure’ options ‘--x-includes=DIR’ and ‘--x-libraries=DIR’ to specify their locations. Some packages offer the ability to configure how verbose the execution of ‘make’ will be. For these packages, running ‘./configure --enable-silent-rules’ sets the default to minimal output, which can be overridden with ‘make V=1’; while running ‘./configure --disable-silent-rules’ sets the default to verbose, which can be overridden with ‘make V=0’. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn’t work, install pre-built binaries of GCC for HP-UX. HP-UX ‘make’ updates targets which have the same timestamps as their prerequisites, which makes it generally unusable when shipped generated files such as ‘configure’ are involved. Use GNU ‘make’ instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its ‘’ header file. The option ‘-nodtk’ can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn’t work, try ./configure CC="cc -nodtk" On Solaris, don’t put ‘/usr/ucb’ early in your ‘PATH’. This directory contains several dysfunctional programs; working variants of these programs are available in ‘/usr/bin’. So, if you need ‘/usr/ucb’ in your ‘PATH’, put it _after_ ‘/usr/bin’. On Haiku, software installed for all users goes in ‘/boot/common’, not ‘/usr/local’. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features ‘configure’ cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, ‘configure’ can figure that out, but if it prints a message saying it cannot guess the machine type, give it the ‘--build=TYPE’ option. TYPE can either be a short name for the system type, such as ‘sun4’, or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file ‘config.sub’ for the possible values of each field. If ‘config.sub’ isn’t included in this package, then this package doesn’t need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option ‘--target=TYPE’ to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the “host†platform (i.e., that on which the generated programs will eventually be run) with ‘--host=TYPE’. Sharing Defaults ================ If you want to set default values for ‘configure’ scripts to share, you can create a site shell script called ‘config.site’ that gives default values for variables like ‘CC’, ‘cache_file’, and ‘prefix’. ‘configure’ looks for ‘PREFIX/share/config.site’ if it exists, then ‘PREFIX/etc/config.site’ if it exists. Or, you can set the ‘CONFIG_SITE’ environment variable to the location of the site script. A warning: not all ‘configure’ scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to ‘configure’. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the ‘configure’ command line, using ‘VAR=value’. For example: ./configure CC=/usr/local2/bin/gcc causes the specified ‘gcc’ to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for ‘CONFIG_SHELL’ due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash ‘configure’ Invocation ====================== ‘configure’ recognizes the following options to control how it operates. ‘--help’ ‘-h’ Print a summary of all of the options to ‘configure’, and exit. ‘--help=short’ ‘--help=recursive’ Print a summary of the options unique to this package’s ‘configure’, and exit. The ‘short’ variant lists options used only in the top level, while the ‘recursive’ variant lists options also present in any nested packages. ‘--version’ ‘-V’ Print the version of Autoconf used to generate the ‘configure’ script, and exit. ‘--cache-file=FILE’ Enable the cache: use and save the results of the tests in FILE, traditionally ‘config.cache’. FILE defaults to ‘/dev/null’ to disable caching. ‘--config-cache’ ‘-C’ Alias for ‘--cache-file=config.cache’. ‘--quiet’ ‘--silent’ ‘-q’ Do not print messages saying which checks are being made. To suppress all normal output, redirect it to ‘/dev/null’ (any error messages will still be shown). ‘--srcdir=DIR’ Look for the package’s source code in directory DIR. Usually ‘configure’ can determine that directory automatically. ‘--prefix=DIR’ Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. ‘--no-create’ ‘-n’ Run the configure checks, but stop before creating any output files. ‘configure’ also accepts some other, not widely useful, options. Run ‘configure --help’ for more details. recode-3.7.15/README0000644000175000017500000000736614172742375007441 #+TITLE: README for Recode #+OPTIONS: H:2 toc:2 * Introduction ** What is Recode? The Recode library converts files between character sets and usages. It recognises or produces over 200 different character sets (or about 300 if combined with an *iconv* library) and transliterates files between almost any pair. When exact transliteration are not possible, it gets rid of offending characters or falls back on approximations. The *recode* program is a handy front-end to the library. Glance through this =README= file before starting configuration. Make sure you read files =ABOUT-NLS= and =INSTALL= if you are not familiar with them already. The Recode program and library have been written by François Pinard, yet it significantly reuses tabular works from Keld Simonsen. It is an evolving package, and specifications might change in future releases. On various Unix systems, Recode is usually compiled from sources, see the [[Installation]] section below. On Linux, it often comes bundled. Recode had been ported to other popular systems. See both [[http:/contrib.html][contrib/README]] and the [[Non-Unix ports]] section below, to find some more information about these. ** Reports and collaboration Please file bug reports as [[https://github.com/rrthomas/Recode/issues][GitHub Issues]]. If you cannot use GitHub, do write directly to [[mailto:rrt@sc3d.org]] A bug report is an adequate description of the problem: your input, what you expected, what you got, and why this is wrong. Patches are welcome, but they only describe a solution, from which the problem might be uneasy to infer. If needed, submit actual data files with your report. Your feedback will help us to make a better and more portable package. Consider documentation errors as bugs, and report them as such. If you develop anything pertaining to Recode or have suggestions, please share them on GitHub. The [[https://github.com/rrthomas/Recode][Git repository]] for Recode gives access, through the magic of Git and GitHub, to all distribution releases, be they actual or past, pretest or official, as well as individual files. * Installation ** In a hurry? See =INSTALL=. (For installing from git, see =HACKING.org=.) More fine-grained instructions follow. ** Prerequisites Simple installation of Recode requires the usual tools and facilities as those needed for most GNU packages. If not already bundled with your system, you also need to install [[https://www.python.org][Python]], version 3.5 or later. It is also convenient to have some *iconv* library already present on your system, this much extends Recode capabilities, especially in the area of Asiatic character sets. GNU *libc*, as found on Linux systems and a few others, already has such an *iconv* library. Otherwise, you might consider installing the [[https://www.gnu.org/software/libiconv/][portable libiconv]], written by Bruno Haible. ** Getting a release Source files and various distributions (either latest, prestest, or archive) are available through [[https://github.com/rrthomas/Recode/][GitHub]]. ** Configure options Once you have an unpacked distribution, see files: |-------------+------------------------------------------------| | File name | Description | |-------------+------------------------------------------------| | =ABOUT-NLS= | how to customise this program to your language | | =COPYING= | copying conditions for the program | | =COPYING.LIB= | copying conditions for the library | | =INSTALL= | compilation and installation instructions | | =NEWS= | major changes in the current release | | =THANKS= | partial list of contributors | |-------------+------------------------------------------------| recode-3.7.15/AUTHORS0000644000175000017500000000116414757301504007611 Authors of Recode The following contributions warranted legal paper exchanges with the Free Software Foundation. Also see files ChangeLog and THANKS. François Pinard Assigns the program. Odyssee Recherches Appliquees Disclaims work by François Pinard Ulrich Drepper Assigns all past and future changes. drepper@gnu.ai.mit.edu Bruno Haible Assigns past and future changes. haible@clisp.cons.org Linus Walleij Assigns past and future changes (rtf.c). triad@df.lth.se Otfried Cheong Assigns past and future changes (utfmule.c, mkutf2mule.pl). otfried@cs.uu.nl Reuben Thomas Assigns past and future changes. rrt@sc3d.org recode-3.7.15/ABOUT-NLS0000644000175000017500000026713313226751342010001 1 Notes on the Free Translation Project *************************************** Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work on translations can contact the appropriate team. 1.1 INSTALL Matters =================== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. Installers may use special options at configuration time for changing the default behaviour. The command: ./configure --disable-nls will _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl' library and will decide to use it. If not, you may have to to use the `--with-libintl-prefix' option to tell `configure' where to look for it. Internationalized packages usually have many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. 1.2 Using This Package ====================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. If you happen to have the `LC_ALL' or some other `LC_xxx' environment variables set, you should unset them before setting `LANG', otherwise the setting of `LANG' will not have the desired effect. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your language by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from `no' to `nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under `nb' and some older ones under `no', it's recommended for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and older translations are used. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. 1.3 Translating Teams ===================== For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://translationproject.org/', in the "Teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `coordinator@translationproject.org' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than programming skills, here. 1.4 Available Packages ====================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of June 2010. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am an ar as ast az be be@latin bg bn_IN bs ca +--------------------------------------------------+ a2ps | [] [] | aegis | | ant-phone | | anubis | | aspell | [] [] | bash | | bfd | | bibshelf | [] | binutils | | bison | | bison-runtime | [] | bluez-pin | [] [] | bombono-dvd | | buzztard | | cflow | | clisp | | coreutils | [] [] | cpio | | cppi | | cpplib | [] | cryptsetup | | dfarc | | dialog | [] [] | dico | | diffutils | [] | dink | | doodle | | e2fsprogs | [] | enscript | [] | exif | | fetchmail | [] | findutils | [] | flex | [] | freedink | | gas | | gawk | [] [] | gcal | [] | gcc | | gettext-examples | [] [] [] [] | gettext-runtime | [] [] | gettext-tools | [] [] | gip | [] | gjay | | gliv | [] | glunarclock | [] [] | gnubiff | | gnucash | [] | gnuedu | | gnulib | | gnunet | | gnunet-gtk | | gnutls | | gold | | gpe-aerial | | gpe-beam | | gpe-bluetooth | | gpe-calendar | | gpe-clock | [] | gpe-conf | | gpe-contacts | | gpe-edit | | gpe-filemanager | | gpe-go | | gpe-login | | gpe-ownerinfo | [] | gpe-package | | gpe-sketchbook | | gpe-su | [] | gpe-taskmanager | [] | gpe-timesheet | [] | gpe-today | [] | gpe-todo | | gphoto2 | | gprof | [] | gpsdrive | | gramadoir | | grep | | grub | [] [] | gsasl | | gss | | gst-plugins-bad | [] | gst-plugins-base | [] | gst-plugins-good | [] | gst-plugins-ugly | [] | gstreamer | [] [] [] | gtick | | gtkam | [] | gtkorphan | [] | gtkspell | [] [] [] | gutenprint | | hello | [] | help2man | | hylafax | | idutils | | indent | [] [] | iso_15924 | | iso_3166 | [] [] [] [] [] [] [] | iso_3166_2 | | iso_4217 | | iso_639 | [] [] [] [] | iso_639_3 | | jwhois | | kbd | | keytouch | [] | keytouch-editor | | keytouch-keyboa... | [] | klavaro | [] | latrine | | ld | [] | leafpad | [] [] | libc | [] [] | libexif | () | libextractor | | libgnutls | | libgpewidget | | libgpg-error | | libgphoto2 | | libgphoto2_port | | libgsasl | | libiconv | [] | libidn | | lifelines | | liferea | [] [] | lilypond | | linkdr | [] | lordsawar | | lprng | | lynx | [] | m4 | | mailfromd | | mailutils | | make | | man-db | | man-db-manpages | | minicom | | mkisofs | | myserver | | nano | [] [] | opcodes | | parted | | pies | | popt | | psmisc | | pspp | [] | pwdutils | | radius | [] | recode | [] [] | rosegarden | | rpm | | rush | | sarg | | screem | | scrollkeeper | [] [] [] | sed | [] [] | sharutils | [] [] | shishi | | skencil | | solfege | | solfege-manual | | soundtracker | | sp | | sysstat | | tar | [] | texinfo | | tin | | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] | vice | | vmm | | vorbis-tools | | wastesedge | | wdiff | | wget | [] [] | wyslij-po | | xchat | [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] | +--------------------------------------------------+ af am an ar as ast az be be@latin bg bn_IN bs ca 6 0 1 2 3 19 1 10 3 28 3 1 38 crh cs da de el en en_GB en_ZA eo es et eu fa +-------------------------------------------------+ a2ps | [] [] [] [] [] [] [] | aegis | [] [] [] | ant-phone | [] () | anubis | [] [] | aspell | [] [] [] [] [] | bash | [] [] [] | bfd | [] | bibshelf | [] [] [] | binutils | [] | bison | [] [] | bison-runtime | [] [] [] [] | bluez-pin | [] [] [] [] [] [] | bombono-dvd | [] | buzztard | [] [] [] | cflow | [] [] | clisp | [] [] [] [] | coreutils | [] [] [] [] | cpio | | cppi | | cpplib | [] [] [] | cryptsetup | [] | dfarc | [] [] [] | dialog | [] [] [] [] [] | dico | | diffutils | [] [] [] [] [] [] | dink | [] [] [] | doodle | [] | e2fsprogs | [] [] [] | enscript | [] [] [] | exif | () [] [] | fetchmail | [] [] () [] [] [] | findutils | [] [] [] | flex | [] [] | freedink | [] [] [] | gas | [] | gawk | [] [] [] | gcal | [] | gcc | [] [] | gettext-examples | [] [] [] [] | gettext-runtime | [] [] [] [] | gettext-tools | [] [] [] | gip | [] [] [] [] | gjay | [] | gliv | [] [] [] | glunarclock | [] [] | gnubiff | () | gnucash | [] () () () () | gnuedu | [] [] | gnulib | [] [] | gnunet | | gnunet-gtk | [] | gnutls | [] [] | gold | [] | gpe-aerial | [] [] [] [] | gpe-beam | [] [] [] [] | gpe-bluetooth | [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] | gpe-conf | [] [] [] | gpe-contacts | [] [] [] | gpe-edit | [] [] | gpe-filemanager | [] [] [] | gpe-go | [] [] [] [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] [] | gpe-package | [] [] [] | gpe-sketchbook | [] [] [] [] | gpe-su | [] [] [] [] | gpe-taskmanager | [] [] [] [] | gpe-timesheet | [] [] [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] [] | gphoto2 | [] [] () [] [] [] | gprof | [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] | grub | [] [] | gsasl | [] | gss | | gst-plugins-bad | [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] () [] | gtkam | [] [] () [] [] | gtkorphan | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] | gutenprint | [] [] [] | hello | [] [] [] [] | help2man | [] | hylafax | [] [] | idutils | [] [] | indent | [] [] [] [] [] [] [] | iso_15924 | [] () [] [] | iso_3166 | [] [] [] [] () [] [] [] () | iso_3166_2 | () | iso_4217 | [] [] [] () [] [] | iso_639 | [] [] [] [] () [] [] | iso_639_3 | [] | jwhois | [] | kbd | [] [] [] [] [] | keytouch | [] [] | keytouch-editor | [] [] | keytouch-keyboa... | [] | klavaro | [] [] [] [] | latrine | [] () | ld | [] [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] | libexif | [] [] () | libextractor | | libgnutls | [] | libgpewidget | [] [] | libgpg-error | [] [] | libgphoto2 | [] () | libgphoto2_port | [] () [] | libgsasl | | libiconv | [] [] [] [] [] | libidn | [] [] [] | lifelines | [] () | liferea | [] [] [] [] [] | lilypond | [] [] [] | linkdr | [] [] [] | lordsawar | [] | lprng | | lynx | [] [] [] [] | m4 | [] [] [] [] | mailfromd | | mailutils | [] | make | [] [] [] | man-db | | man-db-manpages | | minicom | [] [] [] [] | mkisofs | | myserver | | nano | [] [] [] | opcodes | [] [] | parted | [] [] | pies | | popt | [] [] [] [] [] | psmisc | [] [] [] | pspp | [] | pwdutils | [] | radius | [] | recode | [] [] [] [] [] [] | rosegarden | () () () | rpm | [] [] [] | rush | | sarg | | screem | | scrollkeeper | [] [] [] [] [] | sed | [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | | skencil | [] () [] | solfege | [] [] [] | solfege-manual | [] [] | soundtracker | [] [] [] | sp | [] | sysstat | [] [] [] | tar | [] [] [] [] | texinfo | [] [] [] | tin | [] [] | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] [] [] [] | vice | () () | vmm | [] | vorbis-tools | [] [] | wastesedge | [] | wdiff | [] [] | wget | [] [] [] | wyslij-po | | xchat | [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] [] | +-------------------------------------------------+ crh cs da de el en en_GB en_ZA eo es et eu fa 5 64 105 117 18 1 8 0 28 89 18 19 0 fi fr ga gl gu he hi hr hu hy id is it ja ka kn +----------------------------------------------------+ a2ps | [] [] [] [] | aegis | [] [] | ant-phone | [] [] | anubis | [] [] [] [] | aspell | [] [] [] [] | bash | [] [] [] [] | bfd | [] [] [] | bibshelf | [] [] [] [] [] | binutils | [] [] [] | bison | [] [] [] [] | bison-runtime | [] [] [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] [] | bombono-dvd | [] | buzztard | [] | cflow | [] [] [] | clisp | [] | coreutils | [] [] [] [] [] | cpio | [] [] [] [] | cppi | [] [] | cpplib | [] [] [] | cryptsetup | [] [] [] | dfarc | [] [] [] | dialog | [] [] [] [] [] [] [] | dico | | diffutils | [] [] [] [] [] [] [] [] [] | dink | [] | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] [] | flex | [] [] [] | freedink | [] [] [] | gas | [] [] | gawk | [] [] [] [] () [] | gcal | [] | gcc | [] | gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] | gip | [] [] [] [] [] [] | gjay | [] | gliv | [] () | glunarclock | [] [] [] [] | gnubiff | () [] () | gnucash | () () () () () [] | gnuedu | [] [] | gnulib | [] [] [] [] [] [] | gnunet | | gnunet-gtk | [] | gnutls | [] [] | gold | [] [] | gpe-aerial | [] [] [] | gpe-beam | [] [] [] [] | gpe-bluetooth | [] [] [] [] | gpe-calendar | [] [] | gpe-clock | [] [] [] [] [] | gpe-conf | [] [] [] [] | gpe-contacts | [] [] [] [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] [] [] | gpe-go | [] [] [] [] [] | gpe-login | [] [] [] | gpe-ownerinfo | [] [] [] [] [] | gpe-package | [] [] [] | gpe-sketchbook | [] [] [] [] | gpe-su | [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] | gpe-today | [] [] [] [] [] [] [] | gpe-todo | [] [] [] | gphoto2 | [] [] [] [] [] [] | gprof | [] [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] [] | grep | [] [] | grub | [] [] [] [] | gsasl | [] [] [] [] [] | gss | [] [] [] [] [] | gst-plugins-bad | [] [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] | gtkorphan | [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] | gutenprint | [] [] [] [] | hello | [] [] [] | help2man | [] [] | hylafax | [] | idutils | [] [] [] [] [] [] | indent | [] [] [] [] [] [] [] [] | iso_15924 | [] () [] [] | iso_3166 | [] () [] [] [] [] [] [] [] [] [] [] | iso_3166_2 | () [] [] [] | iso_4217 | [] () [] [] [] [] | iso_639 | [] () [] [] [] [] [] [] [] | iso_639_3 | () [] [] | jwhois | [] [] [] [] [] | kbd | [] [] | keytouch | [] [] [] [] [] [] | keytouch-editor | [] [] [] [] [] | keytouch-keyboa... | [] [] [] [] [] | klavaro | [] [] | latrine | [] [] [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] () | libc | [] [] [] [] [] | libexif | [] | libextractor | | libgnutls | [] [] | libgpewidget | [] [] [] [] | libgpg-error | [] [] | libgphoto2 | [] [] [] | libgphoto2_port | [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] [] | libidn | [] [] [] [] | lifelines | () | liferea | [] [] [] [] | lilypond | [] [] | linkdr | [] [] [] [] [] | lordsawar | | lprng | [] | lynx | [] [] [] [] [] | m4 | [] [] [] [] [] [] | mailfromd | | mailutils | [] [] | make | [] [] [] [] [] [] [] [] [] | man-db | [] [] | man-db-manpages | [] | minicom | [] [] [] [] [] | mkisofs | [] [] [] [] | myserver | | nano | [] [] [] [] [] [] | opcodes | [] [] [] [] | parted | [] [] [] [] | pies | | popt | [] [] [] [] [] [] [] [] [] | psmisc | [] [] [] | pspp | | pwdutils | [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] [] | rosegarden | () () () () () | rpm | [] [] | rush | | sarg | [] | screem | [] [] | scrollkeeper | [] [] [] [] | sed | [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] [] [] [] | shishi | [] | skencil | [] | solfege | [] [] [] [] | solfege-manual | [] [] | soundtracker | [] [] | sp | [] () | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] [] [] | texinfo | [] [] [] [] | tin | [] | unicode-han-tra... | | unicode-transla... | [] [] | util-linux-ng | [] [] [] [] [] [] | vice | () () () | vmm | [] | vorbis-tools | [] | wastesedge | () () | wdiff | [] | wget | [] [] [] [] [] [] [] [] | wyslij-po | [] [] [] | xchat | [] [] [] [] [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] | +----------------------------------------------------+ fi fr ga gl gu he hi hr hu hy id is it ja ka kn 105 121 53 20 4 8 3 5 53 2 120 5 84 67 0 4 ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne +-----------------------------------------------+ a2ps | [] | aegis | | ant-phone | | anubis | [] [] | aspell | [] | bash | | bfd | | bibshelf | [] [] | binutils | | bison | [] | bison-runtime | [] [] [] [] [] | bluez-pin | [] [] [] [] [] | bombono-dvd | | buzztard | | cflow | | clisp | | coreutils | [] | cpio | | cppi | | cpplib | | cryptsetup | | dfarc | [] | dialog | [] [] [] [] [] | dico | | diffutils | [] [] | dink | | doodle | | e2fsprogs | | enscript | | exif | [] | fetchmail | | findutils | | flex | | freedink | [] | gas | | gawk | | gcal | | gcc | | gettext-examples | [] [] [] [] | gettext-runtime | [] | gettext-tools | [] | gip | [] [] | gjay | | gliv | | glunarclock | [] | gnubiff | | gnucash | () () () () | gnuedu | | gnulib | | gnunet | | gnunet-gtk | | gnutls | [] | gold | | gpe-aerial | [] | gpe-beam | [] | gpe-bluetooth | [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] [] | gpe-conf | [] [] | gpe-contacts | [] [] | gpe-edit | [] | gpe-filemanager | [] [] | gpe-go | [] [] [] | gpe-login | [] | gpe-ownerinfo | [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] | gpe-su | [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] | gpe-timesheet | [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] | gphoto2 | | gprof | [] | gpsdrive | | gramadoir | | grep | | grub | | gsasl | | gss | | gst-plugins-bad | [] [] [] [] | gst-plugins-base | [] [] | gst-plugins-good | [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | | gtick | | gtkam | [] | gtkorphan | [] [] | gtkspell | [] [] [] [] [] [] [] | gutenprint | | hello | [] [] [] | help2man | | hylafax | | idutils | | indent | | iso_15924 | [] [] | iso_3166 | [] [] () [] [] [] [] [] | iso_3166_2 | | iso_4217 | [] [] | iso_639 | [] [] | iso_639_3 | [] | jwhois | [] | kbd | | keytouch | [] | keytouch-editor | [] | keytouch-keyboa... | [] | klavaro | [] | latrine | [] | ld | | leafpad | [] [] [] | libc | [] | libexif | | libextractor | | libgnutls | [] | libgpewidget | [] [] | libgpg-error | | libgphoto2 | | libgphoto2_port | | libgsasl | | libiconv | | libidn | | lifelines | | liferea | | lilypond | | linkdr | | lordsawar | | lprng | | lynx | | m4 | | mailfromd | | mailutils | | make | [] | man-db | | man-db-manpages | | minicom | [] | mkisofs | | myserver | | nano | [] [] | opcodes | | parted | | pies | | popt | [] [] [] | psmisc | | pspp | | pwdutils | | radius | | recode | | rosegarden | | rpm | | rush | | sarg | | screem | | scrollkeeper | [] [] | sed | | sharutils | | shishi | | skencil | | solfege | [] | solfege-manual | | soundtracker | | sp | | sysstat | [] | tar | [] | texinfo | [] | tin | | unicode-han-tra... | | unicode-transla... | | util-linux-ng | | vice | | vmm | | vorbis-tools | | wastesedge | | wdiff | | wget | [] | wyslij-po | | xchat | [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +-----------------------------------------------+ ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne 20 5 10 1 13 48 4 2 2 4 24 10 20 3 1 nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr +---------------------------------------------------+ a2ps | [] [] [] [] [] [] [] [] | aegis | [] [] [] | ant-phone | [] [] | anubis | [] [] [] | aspell | [] [] [] [] [] | bash | [] [] | bfd | [] | bibshelf | [] [] | binutils | [] [] | bison | [] [] [] | bison-runtime | [] [] [] [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] [] | bombono-dvd | [] () | buzztard | [] [] | cflow | [] | clisp | [] [] | coreutils | [] [] [] [] [] [] | cpio | [] [] [] | cppi | [] | cpplib | [] | cryptsetup | [] | dfarc | [] | dialog | [] [] [] [] | dico | [] | diffutils | [] [] [] [] [] [] | dink | () | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] [] | exif | [] [] [] () [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] [] | freedink | [] [] | gas | | gawk | [] [] [] [] | gcal | | gcc | [] | gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] | gip | [] [] [] [] [] | gjay | | gliv | [] [] [] [] [] [] | glunarclock | [] [] [] [] [] | gnubiff | [] () | gnucash | [] () () () | gnuedu | [] | gnulib | [] [] [] [] | gnunet | | gnunet-gtk | | gnutls | [] [] | gold | | gpe-aerial | [] [] [] [] [] [] [] | gpe-beam | [] [] [] [] [] [] [] | gpe-bluetooth | [] [] | gpe-calendar | [] [] [] [] | gpe-clock | [] [] [] [] [] [] [] [] | gpe-conf | [] [] [] [] [] [] [] | gpe-contacts | [] [] [] [] [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] [] | gpe-go | [] [] [] [] [] [] [] [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] [] [] [] [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] [] [] [] [] [] | gpe-su | [] [] [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] [] [] [] | gpe-today | [] [] [] [] [] [] [] [] | gpe-todo | [] [] [] [] [] | gphoto2 | [] [] [] [] [] [] [] [] | gprof | [] [] [] | gpsdrive | [] [] | gramadoir | [] [] | grep | [] [] [] [] | grub | [] [] [] | gsasl | [] [] [] [] | gss | [] [] [] | gst-plugins-bad | [] [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] | gtkam | [] [] [] [] [] [] | gtkorphan | [] | gtkspell | [] [] [] [] [] [] [] [] [] [] | gutenprint | [] [] | hello | [] [] [] [] | help2man | [] [] | hylafax | [] | idutils | [] [] [] [] [] | indent | [] [] [] [] [] [] [] | iso_15924 | [] [] [] [] | iso_3166 | [] [] [] [] [] () [] [] [] [] [] [] [] [] | iso_3166_2 | [] [] [] | iso_4217 | [] [] [] [] [] [] [] [] | iso_639 | [] [] [] [] [] [] [] [] [] | iso_639_3 | [] [] | jwhois | [] [] [] [] | kbd | [] [] [] | keytouch | [] [] [] | keytouch-editor | [] [] [] | keytouch-keyboa... | [] [] [] | klavaro | [] [] | latrine | [] [] | ld | | leafpad | [] [] [] [] [] [] [] [] [] | libc | [] [] [] [] | libexif | [] [] () [] | libextractor | | libgnutls | [] [] | libgpewidget | [] [] [] | libgpg-error | [] [] | libgphoto2 | [] [] | libgphoto2_port | [] [] [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] | libidn | [] [] | lifelines | [] [] | liferea | [] [] [] [] [] () () [] | lilypond | [] | linkdr | [] [] [] | lordsawar | | lprng | [] | lynx | [] [] [] | m4 | [] [] [] [] [] | mailfromd | [] | mailutils | [] | make | [] [] [] [] | man-db | [] [] [] | man-db-manpages | [] [] [] | minicom | [] [] [] [] | mkisofs | [] [] [] | myserver | | nano | [] [] [] [] | opcodes | [] [] | parted | [] [] [] [] | pies | [] | popt | [] [] [] [] | psmisc | [] [] [] | pspp | [] [] | pwdutils | [] | radius | [] [] [] | recode | [] [] [] [] [] [] [] [] | rosegarden | () () | rpm | [] [] [] | rush | [] [] | sarg | | screem | | scrollkeeper | [] [] [] [] [] [] [] [] | sed | [] [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] | skencil | [] [] | solfege | [] [] [] [] | solfege-manual | [] [] [] | soundtracker | [] | sp | | sysstat | [] [] [] [] | tar | [] [] [] [] | texinfo | [] [] [] [] | tin | [] | unicode-han-tra... | | unicode-transla... | | util-linux-ng | [] [] [] [] [] | vice | [] | vmm | [] | vorbis-tools | [] [] | wastesedge | [] | wdiff | [] [] | wget | [] [] [] [] [] [] [] | wyslij-po | [] [] [] | xchat | [] [] [] [] [] [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +---------------------------------------------------+ nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr 135 10 4 7 105 1 29 62 47 91 3 54 46 9 37 sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW +---------------------------------------------------+ a2ps | [] [] [] [] [] | 27 aegis | [] | 9 ant-phone | [] [] [] [] | 9 anubis | [] [] [] [] | 15 aspell | [] [] [] | 20 bash | [] [] [] | 12 bfd | [] | 6 bibshelf | [] [] [] | 16 binutils | [] [] | 8 bison | [] [] | 12 bison-runtime | [] [] [] [] [] [] | 29 bluez-pin | [] [] [] [] [] [] [] [] | 37 bombono-dvd | [] | 4 buzztard | [] | 7 cflow | [] [] [] | 9 clisp | | 10 coreutils | [] [] [] [] | 22 cpio | [] [] [] [] [] [] | 13 cppi | [] [] | 5 cpplib | [] [] [] [] [] [] | 14 cryptsetup | [] [] | 7 dfarc | [] | 9 dialog | [] [] [] [] [] [] [] | 30 dico | [] | 2 diffutils | [] [] [] [] [] [] | 30 dink | | 4 doodle | [] [] | 7 e2fsprogs | [] [] [] | 11 enscript | [] [] [] [] | 17 exif | [] [] [] | 16 fetchmail | [] [] [] | 17 findutils | [] [] [] [] [] | 20 flex | [] [] [] [] | 15 freedink | [] | 10 gas | [] | 4 gawk | [] [] [] [] | 18 gcal | [] [] | 5 gcc | [] [] [] | 7 gettext-examples | [] [] [] [] [] [] [] | 34 gettext-runtime | [] [] [] [] [] [] [] | 29 gettext-tools | [] [] [] [] [] [] | 22 gip | [] [] [] [] | 22 gjay | [] | 3 gliv | [] [] [] | 14 glunarclock | [] [] [] [] [] | 19 gnubiff | [] [] | 4 gnucash | () [] () [] () | 10 gnuedu | [] [] | 7 gnulib | [] [] [] [] | 16 gnunet | [] | 1 gnunet-gtk | [] [] [] | 5 gnutls | [] [] [] | 10 gold | [] | 4 gpe-aerial | [] [] [] | 18 gpe-beam | [] [] [] | 19 gpe-bluetooth | [] [] [] | 13 gpe-calendar | [] [] [] [] | 12 gpe-clock | [] [] [] [] [] | 28 gpe-conf | [] [] [] [] | 20 gpe-contacts | [] [] [] | 17 gpe-edit | [] [] [] | 12 gpe-filemanager | [] [] [] [] | 16 gpe-go | [] [] [] [] [] | 25 gpe-login | [] [] [] | 11 gpe-ownerinfo | [] [] [] [] [] | 25 gpe-package | [] [] [] | 13 gpe-sketchbook | [] [] [] | 20 gpe-su | [] [] [] [] [] | 30 gpe-taskmanager | [] [] [] [] [] | 29 gpe-timesheet | [] [] [] [] [] | 25 gpe-today | [] [] [] [] [] [] | 30 gpe-todo | [] [] [] [] | 17 gphoto2 | [] [] [] [] [] | 24 gprof | [] [] [] | 15 gpsdrive | [] [] [] | 11 gramadoir | [] [] [] | 11 grep | [] [] [] | 10 grub | [] [] [] | 14 gsasl | [] [] [] [] | 14 gss | [] [] [] | 11 gst-plugins-bad | [] [] [] [] | 26 gst-plugins-base | [] [] [] [] [] | 24 gst-plugins-good | [] [] [] [] | 24 gst-plugins-ugly | [] [] [] [] [] | 29 gstreamer | [] [] [] [] | 22 gtick | [] [] [] | 13 gtkam | [] [] [] | 20 gtkorphan | [] [] [] | 14 gtkspell | [] [] [] [] [] [] [] [] [] | 45 gutenprint | [] | 10 hello | [] [] [] [] [] [] | 21 help2man | [] [] | 7 hylafax | [] | 5 idutils | [] [] [] [] | 17 indent | [] [] [] [] [] [] | 30 iso_15924 | () [] () [] [] | 16 iso_3166 | [] [] () [] [] () [] [] [] () | 53 iso_3166_2 | () [] () [] | 9 iso_4217 | [] () [] [] () [] [] | 26 iso_639 | [] [] [] () [] () [] [] [] [] | 38 iso_639_3 | [] () | 8 jwhois | [] [] [] [] [] | 16 kbd | [] [] [] [] [] | 15 keytouch | [] [] [] | 16 keytouch-editor | [] [] [] | 14 keytouch-keyboa... | [] [] [] | 14 klavaro | [] | 11 latrine | [] [] [] | 10 ld | [] [] [] [] | 11 leafpad | [] [] [] [] [] [] | 33 libc | [] [] [] [] [] | 21 libexif | [] () | 7 libextractor | [] | 1 libgnutls | [] [] [] | 9 libgpewidget | [] [] [] | 14 libgpg-error | [] [] [] | 9 libgphoto2 | [] [] | 8 libgphoto2_port | [] [] [] [] | 14 libgsasl | [] [] [] | 13 libiconv | [] [] [] [] | 21 libidn | () [] [] | 11 lifelines | [] | 4 liferea | [] [] [] | 21 lilypond | [] | 7 linkdr | [] [] [] [] [] | 17 lordsawar | | 1 lprng | [] | 3 lynx | [] [] [] [] | 17 m4 | [] [] [] [] | 19 mailfromd | [] [] | 3 mailutils | [] | 5 make | [] [] [] [] | 21 man-db | [] [] [] | 8 man-db-manpages | | 4 minicom | [] [] | 16 mkisofs | [] [] | 9 myserver | | 0 nano | [] [] [] [] | 21 opcodes | [] [] [] | 11 parted | [] [] [] [] [] | 15 pies | [] [] | 3 popt | [] [] [] [] [] [] | 27 psmisc | [] [] | 11 pspp | | 4 pwdutils | [] [] | 6 radius | [] [] | 9 recode | [] [] [] [] | 28 rosegarden | () | 0 rpm | [] [] [] | 11 rush | [] [] | 4 sarg | | 1 screem | [] | 3 scrollkeeper | [] [] [] [] [] | 27 sed | [] [] [] [] [] | 30 sharutils | [] [] [] [] [] | 22 shishi | [] | 3 skencil | [] [] | 7 solfege | [] [] [] [] | 16 solfege-manual | [] | 8 soundtracker | [] [] [] | 9 sp | [] | 3 sysstat | [] [] | 15 tar | [] [] [] [] [] [] | 23 texinfo | [] [] [] [] [] | 17 tin | | 4 unicode-han-tra... | | 0 unicode-transla... | | 2 util-linux-ng | [] [] [] [] | 20 vice | () () | 1 vmm | [] | 4 vorbis-tools | [] | 6 wastesedge | | 2 wdiff | [] [] | 7 wget | [] [] [] [] [] | 26 wyslij-po | [] [] | 8 xchat | [] [] [] [] [] [] | 36 xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | 63 xkeyboard-config | [] [] [] | 22 +---------------------------------------------------+ 85 teams sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW 178 domains 119 1 3 3 0 10 65 51 155 17 98 7 41 2618 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If June 2010 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://translationproject.org/extra/matrix.html'. 1.5 Using `gettext' in new packages =================================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle the use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `coordinator@translationproject.org' to make the `.pot' files available to the translation teams. recode-3.7.15/ChangeLog0000644000175000017500000000002013226751246010303 See git history.